Merge pull request 'purchase_view_a_formularios_de_django' (#8) from purchase_view_a_formularios_de_django into main
Reviewed-on: OneTeam/don_confiao#8
This commit is contained in:
commit
7b0bee8313
@ -1,4 +1,39 @@
|
||||
from django import forms
|
||||
from django.forms.widgets import DateInput
|
||||
|
||||
from .models import Sale, SaleLine
|
||||
|
||||
|
||||
class ImportProductsForm(forms.Form):
|
||||
csv_file = forms.FileField()
|
||||
|
||||
class PurchaseForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Sale
|
||||
fields = [
|
||||
"customer",
|
||||
"date",
|
||||
"phone",
|
||||
"description",
|
||||
]
|
||||
widgets = {
|
||||
'date': DateInput(attrs={'type': 'date'})
|
||||
}
|
||||
|
||||
class PurchaseLineForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = SaleLine
|
||||
fields = [
|
||||
"product",
|
||||
"quantity",
|
||||
"unit_price",
|
||||
"description",
|
||||
]
|
||||
|
||||
|
||||
LineaFormSet = forms.models.inlineformset_factory(
|
||||
Sale,
|
||||
SaleLine,
|
||||
extra=2,
|
||||
fields='__all__'
|
||||
)
|
||||
|
@ -8,6 +8,9 @@ class Sale(models.Model):
|
||||
phone = models.CharField(max_length=13, null=True, blank=True)
|
||||
description = models.CharField(max_length=255, null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.date} {self.customer}"
|
||||
|
||||
|
||||
class SaleLine(models.Model):
|
||||
|
||||
@ -17,6 +20,9 @@ class SaleLine(models.Model):
|
||||
unit_price = models.DecimalField(max_digits=9, decimal_places=2)
|
||||
description = models.CharField(max_length=255, null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.sale} - {self.product}"
|
||||
|
||||
class MeasuringUnits(models.TextChoices):
|
||||
UNIT = 'UNIT', _('Unit')
|
||||
|
||||
|
@ -1,43 +1,12 @@
|
||||
<!doctype html>
|
||||
<form action="{% url 'buy'%}" method="POST">
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
<fieldset>
|
||||
<legend>Purchase</legend>
|
||||
<label for="customer">Customer</label>:
|
||||
<input type="search" name="customer" id="customer"/>
|
||||
|
||||
<label for="date">Date</label>:
|
||||
<input type="date" name="date" id="date"/>
|
||||
|
||||
<label for="description">Description</label>:
|
||||
<input type="text" name="description" id="description"/>
|
||||
|
||||
<fieldset>
|
||||
<legend>Purchase Line</legend>
|
||||
<label for="product">Product</label>:
|
||||
<input type="search" name="product" id="product"/>
|
||||
|
||||
<label for="unit_price">Unit Price</label>:
|
||||
<input type="number" name="unit_price" min="0" id="unit_price"/>
|
||||
|
||||
<label for="quantity">Quantity</label>:
|
||||
<input type="number" name="quantity" min="0" id="quantity"/>
|
||||
|
||||
<label for="subtotal">Subtotal</label>:
|
||||
<input type="number" name="subtotal" min="0" id="line_amount"/>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="total_amount">Total</label>:
|
||||
<input type="number" name="total_amount" min="0" id="total_amount"/>
|
||||
|
||||
<label for="Paid">Paid:</label>
|
||||
<select id="paid" name="paid">
|
||||
<option value="yes">Yes</option>
|
||||
<option value="no">No</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
<div class="button-container">
|
||||
<button name="form" type="submit">Enviar</button>
|
||||
</div>
|
||||
{{ sale_form}}
|
||||
{{ linea_formset.management_form }}
|
||||
{% for form in linea_formset %}
|
||||
<table style="border: solid 1px blue; margin: 10px">
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
{% endfor %}
|
||||
<br/><button name="form" type="submit" >Comprar</button>
|
||||
</form>
|
||||
|
@ -3,7 +3,7 @@ from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
||||
from django.template import loader
|
||||
|
||||
from .models import Sale, Product, ProductCategory
|
||||
from .forms import ImportProductsForm
|
||||
from .forms import ImportProductsForm, PurchaseForm, LineaFormSet
|
||||
|
||||
import csv
|
||||
import io
|
||||
@ -11,16 +11,26 @@ import io
|
||||
def index(request):
|
||||
return render(request, 'don_confiao/index.html')
|
||||
|
||||
|
||||
def buy(request):
|
||||
context = {}
|
||||
if request.POST:
|
||||
raise Exception(request.POST)
|
||||
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:
|
||||
raise Exception(request.POST)
|
||||
sale_form = PurchaseForm()
|
||||
sale_linea_form = LineaFormSet()
|
||||
return render(
|
||||
request, 'don_confiao/purchase.html', context)
|
||||
|
||||
request,
|
||||
'don_confiao/purchase.html',
|
||||
{
|
||||
'sale_form': sale_form,
|
||||
'linea_formset': sale_linea_form
|
||||
}
|
||||
)
|
||||
|
||||
def purchases(request):
|
||||
purchases = Sale.objects.all()
|
||||
|
Loading…
Reference in New Issue
Block a user