#84 refactor(SalesForReconciliation): move to apiview.

This commit is contained in:
Mono Mono 2024-12-31 13:26:47 -05:00
parent 5dff7565f4
commit 8b7c2efcb3
4 changed files with 32 additions and 20 deletions

View File

@ -4,7 +4,7 @@ from rest_framework.status import HTTP_400_BAD_REQUEST
from rest_framework.views import APIView from rest_framework.views import APIView
from .models import Sale, SaleLine, Customer, Product, ReconciliationJar, PaymentMethods from .models import Sale, SaleLine, Customer, Product, ReconciliationJar, PaymentMethods
from .serializers import SaleSerializer, ProductSerializer, CustomerSerializer, ReconciliationJarSerializer, PaymentMethodSerializer from .serializers import SaleSerializer, ProductSerializer, CustomerSerializer, ReconciliationJarSerializer, PaymentMethodSerializer, SaleForRenconciliationSerializer
from decimal import Decimal from decimal import Decimal
import json import json
@ -106,3 +106,17 @@ class PaymentMethodView(APIView):
def get(self, request): def get(self, request):
serializer = PaymentMethodSerializer(PaymentMethods.choices, many=True) serializer = PaymentMethodSerializer(PaymentMethods.choices, many=True)
return Response(serializer.data) return Response(serializer.data)
class SalesForReconciliationView(APIView):
def get(self, request):
sales = Sale.objects.filter(reconciliation=None)
grouped_sales = {}
for sale in sales:
if sale.payment_method not in grouped_sales.keys():
grouped_sales[sale.payment_method] = []
serializer = SaleForRenconciliationSerializer(sale)
grouped_sales[sale.payment_method].append(serializer.data)
return Response(grouped_sales)

View File

@ -48,3 +48,19 @@ class PaymentMethodSerializer(serializers.Serializer):
'text': instance[1], 'text': instance[1],
'value': instance[0], 'value': instance[0],
} }
class SaleForRenconciliationSerializer(serializers.Serializer):
id = serializers.IntegerField()
date = serializers.DateTimeField()
payment_method = serializers.CharField()
customer = serializers.SerializerMethodField()
total = serializers.SerializerMethodField()
def get_customer(self, sale):
return {
'id': sale.customer.id,
'name': sale.customer.name,
}
def get_total(self, sale):
return sale.get_total()

View File

@ -26,7 +26,7 @@ urlpatterns = [
path("resumen_compra/<int:id>", views.purchase_summary, name="purchase_summary"), path("resumen_compra/<int:id>", views.purchase_summary, name="purchase_summary"),
path("resumen_compra_json/<int:id>", views.purchase_json_summary, name="purchase_json_summary"), path("resumen_compra_json/<int:id>", views.purchase_json_summary, name="purchase_json_summary"),
path("payment_methods/all/select_format", api_views.PaymentMethodView.as_view(), name="payment_methods_to_select"), path("payment_methods/all/select_format", api_views.PaymentMethodView.as_view(), name="payment_methods_to_select"),
path('purchases/for_reconciliation', views.sales_for_reconciliation, name='sales_for_reconciliation'), path('purchases/for_reconciliation', api_views.SalesForReconciliationView.as_view(), name='sales_for_reconciliation'),
path('reconciliate_jar', api_views.ReconciliateJarView.as_view()), path('reconciliate_jar', api_views.ReconciliateJarView.as_view()),
path('api/', include(router.urls)), path('api/', include(router.urls)),
] ]

View File

@ -152,24 +152,6 @@ def purchase_json_summary(request, id):
return JsonResponse(to_response, safe=False) return JsonResponse(to_response, safe=False)
def sales_for_reconciliation(request):
sales = Sale.objects.filter(reconciliation=None)
grouped_sales = {}
for sale in sales:
if sale.payment_method not in grouped_sales.keys():
grouped_sales[sale.payment_method] = []
grouped_sales[sale.payment_method].append({
'id': sale.id,
'date': sale.date,
'payment_method': sale.payment_method,
'customer': {
'id': sale.customer.id,
'name': sale.customer.name,
},
'total': sale.get_total(),
})
return JsonResponse(grouped_sales, safe=False)
def _mask_phone(phone): def _mask_phone(phone):
digits = str(phone)[-3:] if phone else " " * 3 digits = str(phone)[-3:] if phone else " " * 3
return "X" * 7 + digits return "X" * 7 + digits