#69 refactor(ReconciliationJar): remove old view.
This commit is contained in:
		| @@ -70,24 +70,6 @@ class ReconciliationJar(models.Model): | ||||
|     cash_taken = models.DecimalField(max_digits=9, decimal_places=2) | ||||
|     cash_discrepancy = models.DecimalField(max_digits=9, decimal_places=2) | ||||
|  | ||||
|     def clean(self): | ||||
|         if not self.is_valid: | ||||
|             payments = Payment.get_reconciliation_jar_summary().payments | ||||
|         else: | ||||
|             payments = self.payment_set.all() | ||||
|  | ||||
|         payments_amount = Decimal(sum([p.amount for p in payments])) | ||||
|         reconciliation_ammount = Decimal(sum([ | ||||
|             self.cash_taken, | ||||
|             self.cash_discrepancy, | ||||
|         ])) | ||||
|  | ||||
|         equal_ammounts = reconciliation_ammount.compare(payments_amount) == Decimal('0') | ||||
|         if not equal_ammounts: | ||||
|             raise ValidationError( | ||||
|                 {"cash_taken": _("The taken ammount has discrepancy.")} | ||||
|             ) | ||||
|  | ||||
|     def add_payments(self, payments): | ||||
|         for payment in payments: | ||||
|             self.payment_set.add(payment) | ||||
|   | ||||
| @@ -10,7 +10,6 @@ | ||||
|             <li><a href='/don_confiao/lista_productos'>Productos</a></li> | ||||
|             <li><a href='/don_confiao/importar_productos'>Importar Productos</a></li> | ||||
|             <li><a href='/don_confiao/importar_terceros'>Importar Terceros</a></li> | ||||
|             <li><a href='/don_confiao/cuadrar_tarro'>Cuadrar tarro</a></li> | ||||
|         </ul> | ||||
|     </nav> | ||||
|     <p id="page_title" class="text-center decoration-solid  font-mono font-bold text-lg page_title">Don Confiao - Tienda la Ilusión</p> | ||||
|   | ||||
| @@ -1,34 +0,0 @@ | ||||
| {% extends 'don_confiao/base.html' %} | ||||
| {% block content %} | ||||
|  | ||||
| {% if summary.total %} | ||||
| <div class="reconciliate_jar summary" style="border: solid 1px brown; margin: 10px"> | ||||
|     <h2>Pagos No reconciliados</h2> | ||||
|     <table style="border: solid 1px blue; margin: 10px"> | ||||
|         <thead> | ||||
|             <tr><th>Fecha</th><th>Monto</th></tr> | ||||
|         </thead> | ||||
|         <tbody> | ||||
|             {% for payment in summary.payments %} | ||||
|             <tr><td>{{ payment.date_time }}</td><td>{{ payment.amount }}</td></tr> | ||||
|             {% endfor %} | ||||
|         </tbody> | ||||
|         <tfoot> | ||||
|             <tr><th>Total</th><td>{{ summary.total }}</td></tr> | ||||
|         </tfoot> | ||||
|     </table> | ||||
| </div> | ||||
| <form method="POST"> | ||||
|     <table style="border: solid 1px blue; margin: 10px"> | ||||
|         {% csrf_token %} | ||||
|         {{ form.as_table }} | ||||
|     </table> | ||||
|     <br/><button name="form" type="submit" >Recoger dinero</button> | ||||
| </form> | ||||
| {% else %} | ||||
| <div class="reconciliate_jar information noform"> | ||||
|     <h2>No hay pagos registrados.</h2> | ||||
| </div> | ||||
| {% endif %} | ||||
|  | ||||
| {% endblock %} | ||||
| @@ -1,88 +0,0 @@ | ||||
| from django.test import TestCase | ||||
| from django.core.exceptions import ValidationError | ||||
| from ..models import Payment, ReconciliationJar | ||||
|  | ||||
|  | ||||
| class TestBilling(TestCase): | ||||
|  | ||||
|     def test_reconciliation_jar_summary(self): | ||||
|         cash_payment1, cash_payment2 = self._create_two_cash_payments() | ||||
|         jar_summary = Payment.get_reconciliation_jar_summary() | ||||
|         self.assertEqual(164000, jar_summary.total) | ||||
|         self.assertSetEqual( | ||||
|             {cash_payment1, cash_payment2}, | ||||
|             set(jar_summary.payments) | ||||
|         ) | ||||
|  | ||||
|     def test_reconciliation_jar_summary_use_only_cash(self): | ||||
|         cash_payment1, cash_payment2 = self._create_two_cash_payments() | ||||
|  | ||||
|         confiar_payment = Payment() | ||||
|         confiar_payment.date_time = '2024-07-07 16:00:00' | ||||
|         confiar_payment.type_payment = 'CONFIAR' | ||||
|         confiar_payment.amount = 85000 | ||||
|         confiar_payment.save() | ||||
|  | ||||
|         bancolombia_payment = Payment() | ||||
|         bancolombia_payment.date_time = '2024-07-07 12:30:00' | ||||
|         bancolombia_payment.type_payment = 'BANCOLOMBIA' | ||||
|         bancolombia_payment.amount = 12000 | ||||
|         bancolombia_payment.save() | ||||
|  | ||||
|         jar_summary = Payment.get_reconciliation_jar_summary() | ||||
|         self.assertEqual(164000, jar_summary.total) | ||||
|         self.assertSetEqual( | ||||
|             {cash_payment1, cash_payment2}, | ||||
|             set(jar_summary.payments) | ||||
|         ) | ||||
|  | ||||
|     def test_fail_validate_reconciliation_jar_with_discrepancy_values(self): | ||||
|         cash_payment1, cash_payment2 = self._create_two_cash_payments() | ||||
|  | ||||
|         jar_summary = Payment.get_reconciliation_jar_summary() | ||||
|  | ||||
|         reconciliation_jar = ReconciliationJar() | ||||
|         reconciliation_jar.date_time = '2024-07-13 13:02:00' | ||||
|         reconciliation_jar.description = "test reconcialiation jar" | ||||
|         reconciliation_jar.reconcilier = 'Jorge' | ||||
|         reconciliation_jar.cash_float = 0 | ||||
|         reconciliation_jar.cash_taken = 0 | ||||
|         reconciliation_jar.cash_discrepancy = 0 | ||||
|         reconciliation_jar.save() | ||||
|  | ||||
|         reconciliation_jar.add_payments(jar_summary.payments) | ||||
|         with self.assertRaises(ValidationError): | ||||
|             reconciliation_jar.clean() | ||||
|  | ||||
|     def test_validate_reconciliation_jar_with_cash_float(self): | ||||
|         cash_payment1, cash_payment2 = self._create_two_cash_payments() | ||||
|         jar_summary = Payment.get_reconciliation_jar_summary() | ||||
|  | ||||
|         reconciliation_jar = ReconciliationJar() | ||||
|         reconciliation_jar.date_time = '2024-07-13 13:02:00' | ||||
|         reconciliation_jar.description = "test reconcialiation jar" | ||||
|         reconciliation_jar.reconcilier = 'Jorge' | ||||
|         reconciliation_jar.cash_taken = jar_summary.total | ||||
|         reconciliation_jar.cash_discrepancy = 0 | ||||
|         reconciliation_jar.save() | ||||
|  | ||||
|         reconciliation_jar.add_payments(jar_summary.payments) | ||||
|         reconciliation_jar.clean() | ||||
|         reconciliation_jar.save() | ||||
|         self.assertTrue(reconciliation_jar.is_valid) | ||||
|  | ||||
|     def _create_two_cash_payments(self): | ||||
|         cash_payment1 = Payment() | ||||
|         cash_payment1.date_time = '2024-07-07 12:00:00' | ||||
|         cash_payment1.type_payment = 'CASH' | ||||
|         cash_payment1.amount = 132000 | ||||
|         cash_payment1.description = 'Saldo en compra' | ||||
|         cash_payment1.save() | ||||
|  | ||||
|         cash_payment2 = Payment() | ||||
|         cash_payment2.date_time = '2024-07-07 13:05:00' | ||||
|         cash_payment2.type_payment = 'CASH' | ||||
|         cash_payment2.amount = 32000 | ||||
|         cash_payment2.save() | ||||
|  | ||||
|         return [cash_payment1, cash_payment2] | ||||
| @@ -1,44 +0,0 @@ | ||||
| from django.test import Client, TestCase | ||||
| from django.contrib.auth.models import AnonymousUser, User | ||||
|  | ||||
| from ..models import Payment | ||||
|  | ||||
|  | ||||
| class TestReconciliationJarClient(TestCase): | ||||
|     def setUp(self): | ||||
|         self.client = Client() | ||||
|  | ||||
|     def test_get_summary_info_on_view(self): | ||||
|         self._generate_two_cash_payments() | ||||
|         response = self.client.get("/don_confiao/cuadrar_tarro") | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertEqual(response.context["summary"].total, 160000) | ||||
|         self.assertIn('160000', response.content.decode('utf-8')) | ||||
|  | ||||
|     def test_create_reconciliation_jar(self): | ||||
|         self._generate_two_cash_payments() | ||||
|         response = self.client.post( | ||||
|             "/don_confiao/cuadrar_tarro", | ||||
|             { | ||||
|                 "date_time": "2024-07-20T00:00", | ||||
|                 "description": "Cuadre de prueba", | ||||
|                 "reconcilier": "Jorge", | ||||
|                 "cash_taken": "100000", | ||||
|                 "cash_discrepancy": "60000", | ||||
|             } | ||||
|         ) | ||||
|         self.assertRedirects(response, '/don_confiao/cuadres') | ||||
|  | ||||
|     def _generate_two_cash_payments(self): | ||||
|         cash_payment1 = Payment() | ||||
|         cash_payment1.date_time = '2024-07-07 12:00:00' | ||||
|         cash_payment1.type_payment = 'CASH' | ||||
|         cash_payment1.amount = 130000 | ||||
|         cash_payment1.description = 'Saldo en compra' | ||||
|         cash_payment1.save() | ||||
|  | ||||
|         cash_payment2 = Payment() | ||||
|         cash_payment2.date_time = '2024-07-07 13:05:00' | ||||
|         cash_payment2.type_payment = 'CASH' | ||||
|         cash_payment2.amount = 30000 | ||||
|         cash_payment2.save() | ||||
| @@ -24,7 +24,6 @@ urlpatterns = [ | ||||
|          views.exportar_ventas_para_tryton, | ||||
|          name="exportar_ventas_para_tryton"), | ||||
|     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"), | ||||
|     path("resumen_compra_json/<int:id>", views.purchase_json_summary, name="purchase_json_summary"), | ||||
|     path("payment_methods/all/select_format", views.payment_methods_to_select, name="payment_methods_to_select"), | ||||
|   | ||||
| @@ -10,7 +10,6 @@ from .forms import ( | ||||
|     ImportCustomersForm, | ||||
|     PurchaseForm, | ||||
|     SaleLineFormSet, | ||||
|     ReconciliationJarForm, | ||||
|     PurchaseSummaryForm) | ||||
|  | ||||
| import csv | ||||
| @@ -110,22 +109,7 @@ def import_customers(request): | ||||
|     ) | ||||
|  | ||||
| def reconciliate_jar(request): | ||||
|     summary = Payment.get_reconciliation_jar_summary() | ||||
|     if request.method == 'POST': | ||||
|         form = ReconciliationJarForm(request.POST) | ||||
|         if form.is_valid(): | ||||
|             reconciliation = form.save() | ||||
|             reconciliation.add_payments(summary.payments) | ||||
|             reconciliation.clean() | ||||
|             reconciliation.save() | ||||
|             return HttpResponseRedirect('cuadres') | ||||
|     else: | ||||
|         form = ReconciliationJarForm() | ||||
|     return render( | ||||
|         request, | ||||
|         "don_confiao/reconciliate_jar.html", | ||||
|         {'summary': summary, 'form': form} | ||||
|     ) | ||||
|     pass | ||||
|  | ||||
|  | ||||
| def reconciliations(request): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user