Merge pull request 'Añadida vista resumen de compra' (#16) from summary_view_purchase into main
Reviewed-on: OneTeam/don_confiao#16
This commit is contained in:
		@@ -45,6 +45,11 @@ class Sale(models.Model):
 | 
				
			|||||||
        return f"{self.date} {self.customer}"
 | 
					        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):
 | 
					class SaleLine(models.Model):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
 | 
					    sale = models.ForeignKey(Sale, on_delete=models.CASCADE)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					<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>
 | 
				
			||||||
@@ -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'))
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
@@ -12,4 +12,5 @@ urlpatterns = [
 | 
				
			|||||||
    path("importar_productos", views.import_products, name="import_products"),
 | 
					    path("importar_productos", views.import_products, name="import_products"),
 | 
				
			||||||
    path("cuadrar_tarro", views.reconciliate_jar, name="reconciliate_jar"),
 | 
					    path("cuadrar_tarro", views.reconciliate_jar, name="reconciliate_jar"),
 | 
				
			||||||
    path("cuadres", views.reconciliate_jar, name="reconciliations"),
 | 
					    path("cuadres", views.reconciliate_jar, name="reconciliations"),
 | 
				
			||||||
 | 
					    path("resumen_compra/<int:id>", views.purchase_summary, name="purchase_summary"),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102,6 +102,15 @@ def reconciliate_jar(request):
 | 
				
			|||||||
def reconciliations(request):
 | 
					def reconciliations(request):
 | 
				
			||||||
    return HttpResponse('<h1>Reconciliaciones</h1>')
 | 
					    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="&"):
 | 
					def _categories_from_csv_string(categories_string, separator="&"):
 | 
				
			||||||
    categories = categories_string.split(separator)
 | 
					    categories = categories_string.split(separator)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user