feat: add CatalogSale model with abstract base classes for Sale/SaleLine
- Introduced SaleAbstractModel and SaleLineAbstractModel as abstract bases - Added CatalogSale and CatalogSaleLine models inheriting from them - Created migration 0045 for new models - Added CatalogSaleView, CatalogSaleSerializer with nested line creation - Registered new models in admin - Added catalog_sales router endpoint to URLs - Removed placeholder api/ package (now redundant)
This commit is contained in:
@@ -2,7 +2,13 @@ from rest_framework import serializers
|
||||
|
||||
from .models.sales import Sale, SaleLine
|
||||
from .models.customers import Customer
|
||||
from .models.sales import Sale, SaleLine, Payment
|
||||
from .models.sales import (
|
||||
Sale,
|
||||
SaleLine,
|
||||
CatalogSale,
|
||||
CatalogSaleLine,
|
||||
Payment,
|
||||
)
|
||||
from .models.products import Product, ProductCategory
|
||||
from .models.payments import ReconciliationJar
|
||||
|
||||
@@ -29,6 +35,44 @@ class SaleSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
|
||||
|
||||
class CatalogSaleLineSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = CatalogSaleLine
|
||||
fields = [
|
||||
"id",
|
||||
"catalog_sale",
|
||||
"product",
|
||||
"unit_price",
|
||||
"quantity",
|
||||
]
|
||||
|
||||
|
||||
class CatalogSaleSerializer(serializers.ModelSerializer):
|
||||
catalogsaleline_set = CatalogSaleLineSerializer(
|
||||
many=True, required=False
|
||||
)
|
||||
total = serializers.ReadOnlyField(source="get_total")
|
||||
|
||||
class Meta:
|
||||
model = CatalogSale
|
||||
fields = [
|
||||
"id",
|
||||
"customer",
|
||||
"date",
|
||||
"catalogsaleline_set",
|
||||
"total",
|
||||
]
|
||||
|
||||
def create(self, validated_data):
|
||||
lines_data = validated_data.pop("catalogsaleline_set", [])
|
||||
catalog_sale = CatalogSale.objects.create(**validated_data)
|
||||
for line_data in lines_data:
|
||||
CatalogSaleLine.objects.create(
|
||||
catalog_sale=catalog_sale, **line_data
|
||||
)
|
||||
return catalog_sale
|
||||
|
||||
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
|
||||
Reference in New Issue
Block a user