From 6bc76282d114927167c091883001dc91f54c8cef Mon Sep 17 00:00:00 2001 From: aserrador Date: Sat, 9 May 2026 15:52:56 -0500 Subject: [PATCH] chore: Add external_id to representation --- tienda_ilusion/don_confiao/models.py | 58 +++++++++++++++++----------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/tienda_ilusion/don_confiao/models.py b/tienda_ilusion/don_confiao/models.py index b41398f..39085fd 100644 --- a/tienda_ilusion/don_confiao/models.py +++ b/tienda_ilusion/don_confiao/models.py @@ -7,26 +7,30 @@ from datetime import datetime class PaymentMethods(models.TextChoices): - CASH = 'CASH', _('Efectivo') - CONFIAR = 'CONFIAR', _('Confiar') - BANCOLOMBIA = 'BANCOLOMBIA', _('Bancolombia') - CREDIT = 'CREDIT', _('Crédito') + CASH = "CASH", _("Efectivo") + CONFIAR = "CONFIAR", _("Confiar") + BANCOLOMBIA = "BANCOLOMBIA", _("Bancolombia") + CREDIT = "CREDIT", _("Crédito") class Customer(models.Model): - name = models.CharField(max_length=100, default=None, null=False, blank=False) + name = models.CharField( + max_length=100, default=None, null=False, blank=False + ) address = models.CharField(max_length=100, null=True, blank=True) email = models.CharField(max_length=100, null=True, blank=True) phone = models.CharField(max_length=100, null=True, blank=True) external_id = models.CharField(max_length=100, null=True, blank=True) - address_external_id = models.CharField(max_length=100, null=True, blank=True) + address_external_id = models.CharField( + max_length=100, null=True, blank=True + ) def __str__(self): return self.name class MeasuringUnits(models.TextChoices): - UNIT = 'UNIT', _('Unit') + UNIT = "UNIT", _("Unit") class ProductCategory(models.Model): @@ -42,9 +46,11 @@ class Product(models.Model): measuring_unit = models.CharField( max_length=20, choices=MeasuringUnits.choices, - default=MeasuringUnits.UNIT + default=MeasuringUnits.UNIT, + ) + unit_external_id = models.CharField( + max_length=100, null=True, blank=True ) - unit_external_id = models.CharField(max_length=100, null=True, blank=True) categories = models.ManyToManyField(ProductCategory) external_id = models.CharField(max_length=100, null=True, blank=True) @@ -61,7 +67,8 @@ class Product(models.Model): "name": product.name, "price_list": product.price, "uom": product.measuring_unit, - "categories": [c.name for c in product.categories.all()] + "external_id": product.external_id, + "categories": [c.name for c in product.categories.all()], } products_list.append(rproduct) return products_list @@ -74,7 +81,9 @@ class ReconciliationJar(models.Model): reconcilier = models.CharField(max_length=255, null=False, blank=False) cash_taken = models.DecimalField(max_digits=9, decimal_places=2) cash_discrepancy = models.DecimalField(max_digits=9, decimal_places=2) - total_cash_purchases = models.DecimalField(max_digits=9, decimal_places=2) + total_cash_purchases = models.DecimalField( + max_digits=9, decimal_places=2 + ) def clean(self): self._validate_taken_ammount() @@ -102,13 +111,13 @@ class Sale(models.Model): choices=PaymentMethods.choices, default=PaymentMethods.CASH, blank=False, - null=False + null=False, ) reconciliation = models.ForeignKey( ReconciliationJar, on_delete=models.RESTRICT, - related_name='Sales', - null=True + related_name="Sales", + null=True, ) external_id = models.CharField(max_length=100, null=True, blank=True) @@ -121,7 +130,9 @@ class Sale(models.Model): def clean(self): if self.payment_method not in PaymentMethods.values: - raise ValidationError({'payment_method': "Invalid payment method"}) + raise ValidationError( + {"payment_method": "Invalid payment method"} + ) @classmethod def sale_header_csv(cls): @@ -133,8 +144,12 @@ class Sale(models.Model): class SaleLine(models.Model): sale = models.ForeignKey(Sale, on_delete=models.CASCADE) - product = models.ForeignKey(Product, null=False, blank=False, on_delete=models.CASCADE) - quantity = models.DecimalField(max_digits=10, decimal_places=2, null=True) + product = models.ForeignKey( + Product, null=False, blank=False, on_delete=models.CASCADE + ) + quantity = models.DecimalField( + max_digits=10, decimal_places=2, null=True + ) unit_price = models.DecimalField(max_digits=9, decimal_places=2) description = models.CharField(max_length=255, null=True, blank=True) @@ -142,7 +157,7 @@ class SaleLine(models.Model): return f"{self.sale} - {self.product}" -class ReconciliationJarSummary(): +class ReconciliationJarSummary: def __init__(self, payments): self._validate_payments(payments) self._payments = payments @@ -164,7 +179,7 @@ class Payment(models.Model): type_payment = models.CharField( max_length=30, choices=PaymentMethods.choices, - default=PaymentMethods.CASH + default=PaymentMethods.CASH, ) amount = models.DecimalField(max_digits=9, decimal_places=2) reconciliation_jar = models.ForeignKey( @@ -172,7 +187,7 @@ class Payment(models.Model): null=True, default=None, blank=True, - on_delete=models.RESTRICT + on_delete=models.RESTRICT, ) description = models.CharField(max_length=255, null=True, blank=True) @@ -180,8 +195,7 @@ class Payment(models.Model): def get_reconciliation_jar_summary(cls): return ReconciliationJarSummary( cls.objects.filter( - type_payment=PaymentMethods.CASH, - reconciliation_jar=None + type_payment=PaymentMethods.CASH, reconciliation_jar=None ) )