feat: lots of stuff
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user