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() and sale_linea_form.is_valid(): sale = sale_form.save() lines = sale_linea_form.save(commit=False) for line in lines: line.sale = sale line.save() return HttpResponseRedirect("compras") 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('