refactor_endpoints_to_api_views #84 #85
| @@ -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) | ||||||
|   | |||||||
| @@ -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() | ||||||
|   | |||||||
| @@ -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)), | ||||||
| ] | ] | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user