From 1519b3c8bbd44bf64f95844005b566ab5197a897 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 2 Nov 2024 12:51:26 -0500 Subject: [PATCH] django(View): add purchase summary json endpoint. --- .../tests/test_summary_view_purchase.py | 7 +++++ tienda_ilusion/don_confiao/urls.py | 1 + tienda_ilusion/don_confiao/views.py | 31 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py index cc51ef8..d89b590 100644 --- a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py +++ b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py @@ -32,3 +32,10 @@ class TestSummaryViewPurchase(TestCase): self.assertEqual(response.status_code, 200) self.assertEqual(response.context["purchase"].customer, self.purchase.customer) self.assertIn('Alejo Mono', response.content.decode('utf-8')) + + def test_json_summary(self): + response = self.client.get(f"/don_confiao/resumen_compra_json/{self.purchase.id}") + self.assertEqual(response.status_code, 200) + self.assertIn('Alejo Mono', response.content.decode('utf-8')) + self.assertIn('cafe', response.content.decode('utf-8')) + self.assertIn('72500', response.content.decode('utf-8')) diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py index d323431..ad3e169 100644 --- a/tienda_ilusion/don_confiao/urls.py +++ b/tienda_ilusion/don_confiao/urls.py @@ -25,5 +25,6 @@ urlpatterns = [ path("cuadrar_tarro", views.reconciliate_jar, name="reconciliate_jar"), path("cuadres", views.reconciliate_jar, name="reconciliations"), path("resumen_compra/", views.purchase_summary, name="purchase_summary"), + path("resumen_compra_json/", views.purchase_json_summary, name="purchase_json_summary"), path('api/', include(router.urls)), ] diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py index 2141a97..132f978 100644 --- a/tienda_ilusion/don_confiao/views.py +++ b/tienda_ilusion/don_confiao/views.py @@ -117,6 +117,7 @@ def reconciliate_jar(request): def reconciliations(request): return HttpResponse('

Reconciliaciones

') + def purchase_summary(request, id): purchase = Sale.objects.get(pk=id) return render( @@ -128,6 +129,36 @@ def purchase_summary(request, id): ) +def purchase_json_summary(request, id): + purchase = Sale.objects.get(pk=id) + lines = [] + for line in purchase.saleline_set.all(): + lines.append({ + 'product': { + 'id': line.product.id, + 'name': line.product.name, + 'quantity': line.quantity, + 'unit_price': line.unit_price, + 'description': line.description, + } + }) + to_response = { + 'id': purchase.id, + 'customer': { + 'id': purchase.customer.id, + 'name': purchase.customer.name, + # 'phone': _mask_phone(purchase.customer.phone) + }, + 'set_lines': lines, + } + return JsonResponse(to_response, safe=False) + + +def _mask_phone(phone): + digits = str(phone)[-3:] if phone else " " * 3 + return "X" * 7 + digits + + def _categories_from_csv_string(categories_string, separator="&"): categories = categories_string.split(separator) clean_categories = [c.strip() for c in categories]