feat: added product batches and provider models
This commit is contained in:
+57
-1
@@ -60,7 +60,7 @@ class ProductPrice(models.Model):
|
||||
return f"{self.price} - {self.tax.code}"
|
||||
|
||||
@property
|
||||
def price_with_tax(self):
|
||||
def price_with_tax(self) -> Decimal:
|
||||
tax_value = self.price * Decimal(self.tax.value / 100)
|
||||
return round(self.price + tax_value, 2)
|
||||
|
||||
@@ -69,6 +69,30 @@ class ProductPrice(models.Model):
|
||||
verbose_name_plural = _("Precio de producto")
|
||||
|
||||
|
||||
class ProductBatch(models.Model):
|
||||
code = models.CharField(
|
||||
max_length=32, unique=True, db_index=True, verbose_name=_("Código")
|
||||
)
|
||||
product = models.ForeignKey(
|
||||
"shop.Product", on_delete=models.PROTECT, verbose_name=_("Producto")
|
||||
)
|
||||
quantity = models.DecimalField(
|
||||
max_digits=13,
|
||||
decimal_places=4,
|
||||
default=Decimal("1"),
|
||||
verbose_name=_("Cantidad"),
|
||||
)
|
||||
creation_date = models.DateTimeField(
|
||||
auto_now_add=True, verbose_name=_("Fecha de creación")
|
||||
)
|
||||
expiration_date = models.DateField(
|
||||
blank=True, null=True, verbose_name=_("Fecha de caducidad / consumo preferente")
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.code} - {self.product.name} - {self.quantity}"
|
||||
|
||||
|
||||
class Tax(models.Model):
|
||||
code = models.CharField(
|
||||
max_length=8, blank=False, unique=True, verbose_name=_("Código de impuesto")
|
||||
@@ -112,6 +136,38 @@ class Customer(models.Model):
|
||||
verbose_name_plural = _("Clientes")
|
||||
|
||||
|
||||
class Provider(models.Model):
|
||||
vat_id = models.CharField(
|
||||
max_length=32,
|
||||
blank=False,
|
||||
unique=True,
|
||||
verbose_name=_("Documento de identidad"),
|
||||
)
|
||||
name = models.CharField(max_length=64, blank=False, verbose_name=_("Nombre"))
|
||||
|
||||
email = models.EmailField(blank=False, verbose_name=_("E-mail de contacto"))
|
||||
phone = models.CharField(
|
||||
max_length=16,
|
||||
blank=True,
|
||||
null=True,
|
||||
default="",
|
||||
verbose_name=_("Teléfono de contacto"),
|
||||
)
|
||||
|
||||
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.name}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Proveedor")
|
||||
verbose_name_plural = _("Proveedores")
|
||||
|
||||
|
||||
class OrderLine(models.Model):
|
||||
order = models.ForeignKey(
|
||||
"shop.Order",
|
||||
|
||||
Reference in New Issue
Block a user