diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue index 6aa0f05..8173eec 100644 --- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue @@ -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', diff --git a/tienda_ilusion/don_confiao/serializers.py b/tienda_ilusion/don_confiao/serializers.py index df664c7..61fc9c9 100644 --- a/tienda_ilusion/don_confiao/serializers.py +++ b/tienda_ilusion/don_confiao/serializers.py @@ -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']