view(Purchase): generate purchase from vuetify.
This commit is contained in:
parent
f2befda953
commit
0c065beb30
@ -22,13 +22,13 @@
|
||||
required
|
||||
></v-text-field>
|
||||
<v-select
|
||||
v-model="purchase.client"
|
||||
v-model="purchase.customer"
|
||||
:items="clients"
|
||||
item-title="name"
|
||||
item-value="id"
|
||||
label="Cliente"
|
||||
:rules="[rules.required]"
|
||||
required
|
||||
item-text="name"
|
||||
item-value="id"
|
||||
></v-select>
|
||||
<v-textarea
|
||||
v-model="purchase.notes"
|
||||
@ -39,12 +39,14 @@
|
||||
<v-toolbar>
|
||||
<v-toolbar-title secondary>Productos</v-toolbar-title>
|
||||
</v-toolbar>
|
||||
<div v-for="(line, index) in purchase.lines" :key="line.id">
|
||||
<div v-for="(line, index) in purchase.saleline_set" :key="line.id">
|
||||
<v-row>
|
||||
<v-col>
|
||||
<v-select
|
||||
v-model="line.product"
|
||||
:items="products"
|
||||
item-title="name"
|
||||
item-value="id"
|
||||
label="Producto"
|
||||
:rules="[rules.required]"
|
||||
required
|
||||
@ -52,7 +54,7 @@
|
||||
</v-col>
|
||||
<v-col>
|
||||
<v-text-field
|
||||
v-model.number="line.price"
|
||||
v-model.number="line.unit_price"
|
||||
label="Precio"
|
||||
type="number"
|
||||
:rules="[rules.required]"
|
||||
@ -111,7 +113,7 @@
|
||||
date: '',
|
||||
client: null,
|
||||
notes: '',
|
||||
lines: [{product:'', price: 0, quantity: 0}],
|
||||
saleline_set: [{product:'', unit_price: 0, quantity: 0}],
|
||||
},
|
||||
rules: {
|
||||
required: value => !!value || 'Requerido.',
|
||||
@ -130,8 +132,8 @@
|
||||
},
|
||||
computed: {
|
||||
calculateTotal() {
|
||||
return this.purchase.lines.reduce((total, line) => {
|
||||
return total + this.calculateSubtotal(line);
|
||||
return this.purchase.saleline_set.reduce((total, saleline) => {
|
||||
return total + this.calculateSubtotal(saleline);
|
||||
}, 0);
|
||||
},
|
||||
},
|
||||
@ -140,7 +142,7 @@
|
||||
fetch('/don_confiao/api/customers/')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
this.clients = data.map(client => client.name);
|
||||
this.clients = data;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
@ -151,25 +153,25 @@
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
console.log(data);
|
||||
this.products = data.map(product => product.name);
|
||||
this.products = data;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
addLine() {
|
||||
this.purchase.lines.push({ product: '', price: 0, quantity:0 });
|
||||
this.purchase.saleline_set.push({ product: '', unit_price: 0, quantity:0 });
|
||||
},
|
||||
removeLine(index) {
|
||||
this.purchase.lines.splice(index, 1);
|
||||
this.purchase.saleline_set.splice(index, 1);
|
||||
},
|
||||
calculateSubtotal(line) {
|
||||
return line.price * line.quantity;
|
||||
return line.unit_price * line.quantity;
|
||||
},
|
||||
async submit() {
|
||||
if (this.$refs.form.validate()) {
|
||||
try {
|
||||
const response = await fetch('http://localhost:8000/don_confiao/', {
|
||||
const response = await fetch('/don_confiao/api/sales/', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
|
@ -18,9 +18,9 @@ class SaleSerializer(serializers.ModelSerializer):
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = ['name', 'price', 'measuring_unit', 'categories']
|
||||
fields = ['id', 'name', 'price', 'measuring_unit', 'categories']
|
||||
|
||||
class CustomerSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Customer
|
||||
fields = ['name', 'address']
|
||||
fields = ['id', 'name', 'address']
|
||||
|
Loading…
Reference in New Issue
Block a user