From 108d983d74f950aa3842766e3e7397f12fcc6397 Mon Sep 17 00:00:00 2001
From: cosmos <cosmos@onecluster.org>
Date: Sat, 3 Aug 2024 12:37:21 -0500
Subject: [PATCH 1/3] Add Summary View Purchase

---
 .../don_confiao/purchase_summary.html         |  1 +
 .../tests/test_summary_view_purchase.py       | 31 +++++++++++++++++++
 tienda_ilusion/don_confiao/urls.py            |  1 +
 tienda_ilusion/don_confiao/views.py           |  9 ++++++
 4 files changed, 42 insertions(+)
 create mode 100644 tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
 create mode 100644 tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py

diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html b/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
new file mode 100644
index 0000000..2bfabd7
--- /dev/null
+++ b/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
@@ -0,0 +1 @@
+{{ purchase.customer }}
\ No newline at end of file
diff --git a/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py
new file mode 100644
index 0000000..4287c5c
--- /dev/null
+++ b/tienda_ilusion/don_confiao/tests/test_summary_view_purchase.py
@@ -0,0 +1,31 @@
+from django.test import TestCase, Client
+from ..models import Sale, Product, SaleLine
+
+class TestSummaryViewPurchase(TestCase):
+    def setUp(self):
+        self.client = Client()
+        purchase = Sale()
+        purchase.customer = "Alejo Mono"
+        purchase.date = "2024-07-30"
+        purchase.clean()
+        purchase.save()
+        
+        product = Product()
+        product.name = "cafe"
+        product.price = "72500"
+        product.save()
+        
+        line = SaleLine()
+        line.sale = purchase
+        line.product = product
+        line.quantity = "2"
+        line.unit_price = "72500"
+        line.save()
+        self.purchase = purchase
+        
+    def test_summary_has_customer(self):
+        response = self.client.get("/don_confiao/resumen_compra/" + str(self.purchase.id))
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.context["purchase"].customer, self.purchase.customer)
+        self.assertIn('Alejo Mono', response.content.decode('utf-8'))
+        
diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py
index 7879ccb..7de794e 100644
--- a/tienda_ilusion/don_confiao/urls.py
+++ b/tienda_ilusion/don_confiao/urls.py
@@ -12,4 +12,5 @@ urlpatterns = [
     path("importar_productos", views.import_products, name="import_products"),
     path("cuadrar_tarro", views.reconciliate_jar, name="reconciliate_jar"),
     path("cuadres", views.reconciliate_jar, name="reconciliations"),
+    path("resumen_compra/<int:id>", views.purchase_summary, name="purchase_summary"),
 ]
diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py
index eabd664..563a6a6 100644
--- a/tienda_ilusion/don_confiao/views.py
+++ b/tienda_ilusion/don_confiao/views.py
@@ -102,6 +102,15 @@ def reconciliate_jar(request):
 def reconciliations(request):
     return HttpResponse('<h1>Reconciliaciones</h1>')
 
+def purchase_summary(request, id):
+    purchase = Sale.objects.get(pk=id)
+    return render(
+        request,
+        "don_confiao/purchase_summary.html",
+        {
+            "purchase" : purchase
+        }
+    )
 
 def _categories_from_csv_string(categories_string, separator="&"):
     categories = categories_string.split(separator)

From 91bb2bce93723e0c213bb254a80c17eede125b2a Mon Sep 17 00:00:00 2001
From: cosmos <cosmos@onecluster.org>
Date: Sat, 10 Aug 2024 10:55:03 -0500
Subject: [PATCH 2/3] Add basic information

---
 .../don_confiao/templates/don_confiao/purchase_summary.html   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html b/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
index 2bfabd7..f48d3f9 100644
--- a/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
+++ b/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
@@ -1 +1,3 @@
-{{ purchase.customer }}
\ No newline at end of file
+<p><b>Date:</b> {{ purchase.date }}</p>
+<p><b>ID:</b> {{ purchase.id }}</p>
+<p><b>Customer:</b> {{ purchase.customer }}</p>
\ No newline at end of file

From 6decc963f641b4dda9e8ff75a5a1b809c3dcc30d Mon Sep 17 00:00:00 2001
From: cosmos <cosmos@onecluster.org>
Date: Sat, 10 Aug 2024 13:01:04 -0500
Subject: [PATCH 3/3] Fix(views): Add sub total to purchase summary

---
 tienda_ilusion/don_confiao/models.py                   |  5 +++++
 .../templates/don_confiao/purchase_summary.html        | 10 +++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/tienda_ilusion/don_confiao/models.py b/tienda_ilusion/don_confiao/models.py
index ec3782c..68d184a 100644
--- a/tienda_ilusion/don_confiao/models.py
+++ b/tienda_ilusion/don_confiao/models.py
@@ -41,6 +41,11 @@ class Sale(models.Model):
         return f"{self.date} {self.customer}"
 
 
+    def get_total(self):
+        lines = self.saleline_set.all()
+        return sum([l.quantity * l.unit_price for l in lines])
+
+
 class SaleLine(models.Model):
 
     sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html b/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
index f48d3f9..5b5c3de 100644
--- a/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
+++ b/tienda_ilusion/don_confiao/templates/don_confiao/purchase_summary.html
@@ -1,3 +1,7 @@
-<p><b>Date:</b> {{ purchase.date }}</p>
-<p><b>ID:</b> {{ purchase.id }}</p>
-<p><b>Customer:</b> {{ purchase.customer }}</p>
\ No newline at end of file
+<h1>Resumen de compra</h1>
+<dl>
+<dt>Date</dt> <dd>{{ purchase.date }}</dd>
+<dt>ID</dt> <dd>{{ purchase.id }}</dd>
+<dt>Customer</dt> <dd>{{ purchase.customer }}</dd>
+<dt>Total</dt> <dd>{{ purchase.get_total }}</dd>
+</dl>
\ No newline at end of file