Merge pull request 'feat/46-order-summary-public' (#47) from feat/46-order-summary-public into main

Reviewed-on: #47
This commit is contained in:
2026-08-08 14:25:25 -05:00
9 changed files with 415 additions and 10 deletions

View File

@@ -1,4 +1,5 @@
from rest_framework import serializers
from django.urls import reverse
from ..models.sales import (
Sale,
@@ -11,6 +12,17 @@ from .products import ListProductSerializer
from .customers import ListCustomerSerializer
class PublicSummaryLinkMixin:
def get_link(self, obj):
path = reverse(
"don_confiao:public_purchase_summary", args=[obj.code]
)
request = self.context.get("request")
if request:
return request.build_absolute_uri(path)
return path
class SaleLineSerializer(serializers.ModelSerializer):
class Meta:
model = SaleLine
@@ -87,13 +99,14 @@ class SummarySaleLineSerializer(serializers.ModelSerializer):
fields = ["product", "quantity", "unit_price", "description"]
class SaleSummarySerializer(serializers.ModelSerializer):
class SaleSummarySerializer(PublicSummaryLinkMixin, serializers.ModelSerializer):
customer = ListCustomerSerializer()
lines = SummarySaleLineSerializer(many=True, source="saleline_set")
link = serializers.SerializerMethodField()
class Meta:
model = Sale
fields = ["id", "date", "customer", "payment_method", "lines"]
fields = ["id", "code", "date", "customer", "payment_method", "lines", "link"]
class CatalogSummarySaleLineSerializer(serializers.ModelSerializer):
@@ -104,15 +117,18 @@ class CatalogSummarySaleLineSerializer(serializers.ModelSerializer):
fields = ["product", "quantity", "unit_price", "description"]
class CatalogSaleSummarySerializer(serializers.ModelSerializer):
class CatalogSaleSummarySerializer(
PublicSummaryLinkMixin, serializers.ModelSerializer
):
customer = ListCustomerSerializer()
lines = CatalogSummarySaleLineSerializer(
many=True, source="catalogsaleline_set"
)
link = serializers.SerializerMethodField()
class Meta:
model = CatalogSale
fields = ["id", "date", "customer", "lines"]
fields = ["id", "code", "date", "customer", "lines", "link"]
class SaleForRenconciliationSerializer(serializers.Serializer):