feat: lots of stuff

This commit is contained in:
2024-03-24 20:04:02 +01:00
parent 22cea344a5
commit 7725247a3f
11 changed files with 360 additions and 75 deletions
+69
View File
@@ -80,6 +80,33 @@ class Tax(models.Model):
verbose_name_plural = _("Impuestos")
class Customer(models.Model):
vat_id = models.CharField(
max_length=32,
blank=False,
unique=True,
verbose_name=_("Documento de identidad"),
)
first_name = models.CharField(max_length=64, blank=False, verbose_name=_("Nombre"))
last_name = models.CharField(
max_length=64, blank=False, verbose_name=_("Apellidos")
)
email = models.EmailField(blank=False, verbose_name=_("E-mail"))
address = models.CharField(max_length=255, blank=False, verbose_name=_("Dirección"))
city = models.CharField(max_length=64, blank=False, verbose_name=_("Ciudad"))
state = models.CharField(max_length=64, blank=False, verbose_name=_("Región"))
country = models.CharField(max_length=64, blank=False, verbose_name=_("País"))
zip = models.CharField(max_length=32, blank=False, verbose_name=_("Código postal"))
def __str__(self):
return f"{self.vat_id} - {self.first_name} {self.last_name}"
class Meta:
verbose_name = _("Cliente")
verbose_name_plural = _("Clientes")
class OrderLine(models.Model):
product = models.ForeignKey(
"shop.Product",
@@ -154,6 +181,48 @@ class Order(models.Model):
default=Decimal("0"), max_digits=13, decimal_places=2, verbose_name=_("Total")
)
# Customer reference
customer = models.ForeignKey(
"shop.Customer", on_delete=models.PROTECT, verbose_name=_("Cliente")
)
# Billing information
billing_address = models.CharField(
max_length=255, blank=False, verbose_name=_("Dirección de facturación")
)
billing_city = models.CharField(
max_length=64, blank=False, verbose_name=_("Ciudad de facturación")
)
billing_state = models.CharField(
max_length=64, blank=False, verbose_name=_("Región de facturación")
)
billing_country = models.CharField(
max_length=64, blank=False, verbose_name=_("País de facturación")
)
billing_zip = models.CharField(
max_length=32, blank=False, verbose_name=_("Código postal de facturación")
)
# Shipping information
shipping_address = models.CharField(
max_length=255, blank=False, verbose_name=_("Dirección")
)
shipping_city = models.CharField(
max_length=64, blank=False, verbose_name=_("Ciudad")
)
shipping_state = models.CharField(
max_length=64, blank=False, verbose_name=_("Región")
)
shipping_country = models.CharField(
max_length=64, blank=False, verbose_name=_("País")
)
shipping_zip = models.CharField(
max_length=32, blank=False, verbose_name=_("Código postal")
)
contact_phone = models.CharField(
max_length=32, blank=True, verbose_name=_("Teléfono de contacto")
)
def calculate_total_from_lines(self):
self.base_total = self.lines.aggregate(base_total=models.Sum("base_total")).get(
"base_total"