Modelar cuadre de caja #10 #12

Merged
mono merged 17 commits from modelar_cuadre_de_caja_#10 into main 2024-07-27 13:42:05 -05:00
5 changed files with 37 additions and 8 deletions
Showing only changes of commit a3c8189d8c - Show all commits

View File

@ -82,7 +82,7 @@ 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):
def manual_clean(self):
payments_amount = sum([p.amount for p in self.payment_set.all()])
reconciliation_ammount = sum([
self.cash_taken,

View File

@ -53,7 +53,7 @@ class TestBilling(TestCase):
for payment in jar_summary.payments:
reconciliation_jar.payment_set.add(payment)
with self.assertRaises(ValidationError):
reconciliation_jar.clean()
reconciliation_jar.manual_clean()
def test_validate_reconciliation_jar_with_cash_float(self):
cash_payment1, cash_payment2 = self._create_two_cash_payments()
@ -72,6 +72,7 @@ class TestBilling(TestCase):
reconciliation_jar.payment_set.add(payment)
reconciliation_jar.clean()
reconciliation_jar.save()
reconciliation_jar.manual_clean()
self.assertTrue(reconciliation_jar.is_valid)
def _create_two_cash_payments(self):

View File

@ -14,10 +14,23 @@ class TestReconciliationJarClient(TestCase):
self._generate_two_cash_payments()
response = self.client.get("/don_confiao/cuadrar_tarro")
self.assertEqual(response.status_code, 200)
# raise Exception(response.content.decode('utf-8'))
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'
@ -25,7 +38,6 @@ class TestReconciliationJarClient(TestCase):
cash_payment1.amount = 130000
cash_payment1.description = 'Saldo en compra'
cash_payment1.save()
# raise Exception (cash_payment1.id)
cash_payment2 = Payment()
cash_payment2.date_time = '2024-07-07 13:05:00'

View File

@ -10,4 +10,5 @@ urlpatterns = [
path("productos", views.products, name="products"),
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"),
]

View File

@ -1,6 +1,7 @@
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from django.template import loader
from django.core.exceptions import ValidationError
from .models import Sale, Product, ProductCategory, Payment
from .forms import ImportProductsForm, PurchaseForm, LineaFormSet, ReconciliationJarForm
@ -71,17 +72,31 @@ def import_products(request):
def reconciliate_jar(request):
if request.method == 'POST':
return HttpResponseRedirect("cuadres")
form = ReconciliationJarForm()
summary = Payment.get_reconciliation_jar_summary()
if request.method == 'POST':
form = ReconciliationJarForm(request.POST)
reconciliation = form.save()
try:
if form.is_valid():
reconciliation.payment_set.set(summary.payments)
reconciliation.manual_clean()
form.save()
return HttpResponseRedirect('cuadres')
except Exception as e:
reconciliation.payment_set.set({})
reconciliation.delete()
raise e
else:
form = ReconciliationJarForm()
return render(
request,
"don_confiao/reconciliate_jar.html",
{'summary': summary, 'form': form}
)
def reconciliations(request):
return HttpResponse('<h1>Reconciliaciones</h1>')
def _categories_from_csv_string(categories_string, separator="&"):
categories = categories_string.split(separator)