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 import csv import io def index(request): return render(request, 'don_confiao/index.html') def buy(request): if request.method == "POST": sale_form = PurchaseForm(request.POST) sale_linea_form = LineaFormSet(request.POST) if sale_form.is_valid(): sale_form.save() if sale_linea_form.is_valid(): sale_linea_form.save() return HttpResponseRedirect("productos") else: sale_form = PurchaseForm() sale_linea_form = LineaFormSet() return render( request, 'don_confiao/purchase.html', { 'sale_form': sale_form, 'linea_formset': sale_linea_form } ) def purchases(request): purchases = Sale.objects.all() context = { "purchases": purchases, } return render(request, 'don_confiao/purchases.html', context) def products(request): rproducts = [] products = Product.objects.all() for product in products: rproduct = { "name": product.name, "price_list": product.price, "uom": product.measuring_unit, "categories": [c.name for c in product.categories.all()] } rproducts.append(rproduct) return JsonResponse(rproducts, safe=False) def import_products(request): if request.method == "POST": form = ImportProductsForm(request.POST, request.FILES) if form.is_valid(): handle_import_products_file(request.FILES["csv_file"]) return HttpResponseRedirect("productos") else: form = ImportProductsForm() return render( request, "don_confiao/import_products.html", {'form': form} ) 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} ) def reconciliations(request): return HttpResponse('