From 64f07a2ce2db66cb6c8bc9e47f8daa9080b7d2aa Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 15 Nov 2025 17:50:06 -0500 Subject: [PATCH] #27 fix: reconciliation jar. --- tienda_ilusion/don_confiao/api_views.py | 3 +- .../tests/test_jar_reconciliation.py | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/tienda_ilusion/don_confiao/api_views.py b/tienda_ilusion/don_confiao/api_views.py index 1d61397..f033e1c 100644 --- a/tienda_ilusion/don_confiao/api_views.py +++ b/tienda_ilusion/don_confiao/api_views.py @@ -99,7 +99,8 @@ class ReconciliateJarView(APIView): def _is_valid_total(self, purchases, total): calculated_total = sum(p.get_total() for p in purchases) - return calculated_total == Decimal(total) + return Decimal(calculated_total).quantize(Decimal('.0001')) == ( + Decimal(total).quantize(Decimal('.0001'))) def _get_other_purchases(self, other_totals): if not other_totals: diff --git a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py index 9efb15d..c7a97f2 100644 --- a/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py +++ b/tienda_ilusion/don_confiao/tests/test_jar_reconciliation.py @@ -235,6 +235,47 @@ class TestJarReconcliation(TestCase): [sale['payment_method'] for sale in content['Sales']] ) + def test_create_reconciliation_with_decimal_on_sale_lines(self): + customer = Customer() + customer.name = 'Consumidor final' + customer.save() + + product = Product() + product.name = "Mantequilla natural gramos" + product.price = "57.50" + product.save() + + purchase = Sale() + purchase.customer = customer + purchase.date = "2024-07-30" + purchase.payment_method = 'CASH' + purchase.clean() + purchase.save() + + line = SaleLine() + line.sale = purchase + line.product = product + line.quantity = "0.24" + line.unit_price = "57.50" + line.save() + + url = '/don_confiao/reconciliate_jar' + total_purchases = 13.80 + data = { + 'date_time': '2024-12-02T21:07', + 'reconcilier': 'carlos', + 'total_cash_purchases': total_purchases, + 'cash_taken': total_purchases, + 'cash_discrepancy': 0, + 'cash_purchases': [purchase.id], + } + response = self.client.post( + url, data=json.dumps(data).encode('utf-8'), + content_type='application/json' + ) + self.assertEqual(response.status_code, 200) + + def _create_simple_reconciliation(self): reconciliation = ReconciliationJar() reconciliation.date_time = "2024-07-30"