feat: Add customer information to CatalogSale

This commit is contained in:
2026-06-05 09:11:52 -05:00
parent ff67720cea
commit 77761ea8cc
3 changed files with 58 additions and 5 deletions

View File

@@ -0,0 +1,33 @@
# Generated by Django 5.0.6 on 2026-06-05 14:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('don_confiao', '0047_catalogsale_external_id'),
]
operations = [
migrations.AddField(
model_name='catalogsale',
name='customer_address',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AddField(
model_name='catalogsale',
name='customer_name',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AddField(
model_name='catalogsale',
name='customer_phone',
field=models.CharField(blank=True, max_length=13, null=True),
),
migrations.AddField(
model_name='catalogsale',
name='pickup_method',
field=models.CharField(blank=True, max_length=30, null=True),
),
]

View File

@@ -20,7 +20,9 @@ class SaleLineAbstractModel(models.Model):
product = models.ForeignKey(
Product, null=False, blank=False, on_delete=models.CASCADE
)
quantity = models.DecimalField(max_digits=10, decimal_places=2, null=True)
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)
@@ -53,7 +55,9 @@ class Sale(SaleAbstractModel):
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):
@@ -71,6 +75,12 @@ class SaleLine(SaleLineAbstractModel):
class CatalogSale(SaleAbstractModel):
external_id = models.CharField(max_length=100, null=True, blank=True)
customer_name = models.CharField(max_length=255, null=True, blank=True)
customer_phone = models.CharField(max_length=13, null=True, blank=True)
customer_address = models.CharField(
max_length=255, null=True, blank=True
)
pickup_method = models.CharField(max_length=30, null=True, blank=True)
def __str__(self):
return f"{self.date} {self.customer}"

View File

@@ -47,7 +47,9 @@ class CatalogSaleLineSerializer(serializers.ModelSerializer):
class CatalogSaleSerializer(serializers.ModelSerializer):
catalogsaleline_set = CatalogSaleLineSerializer(many=True, required=False)
catalogsaleline_set = CatalogSaleLineSerializer(
many=True, required=False
)
total = serializers.ReadOnlyField(source="get_total")
class Meta:
@@ -59,6 +61,10 @@ class CatalogSaleSerializer(serializers.ModelSerializer):
"catalogsaleline_set",
"total",
"external_id",
"customer_name",
"customer_phone",
"customer_address",
"pickup_method",
]
def create(self, validated_data):
@@ -66,7 +72,9 @@ class CatalogSaleSerializer(serializers.ModelSerializer):
catalog_sale = CatalogSale.objects.create(**validated_data)
for line_data in lines_data:
CatalogSaleLine.objects.create(catalog_sale=catalog_sale, **line_data)
CatalogSaleLine.objects.create(
catalog_sale=catalog_sale, **line_data
)
return catalog_sale
@@ -98,7 +106,9 @@ class CatalogSummarySaleLineSerializer(serializers.ModelSerializer):
class CatalogSaleSummarySerializer(serializers.ModelSerializer):
customer = ListCustomerSerializer()
lines = CatalogSummarySaleLineSerializer(many=True, source="catalogsaleline_set")
lines = CatalogSummarySaleLineSerializer(
many=True, source="catalogsaleline_set"
)
class Meta:
model = CatalogSale