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 f913a8d..1c05b39 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 > Productos -
+
- + > -n + date: '', client: null, notes: '', - lines: [{product:'', price: 0, quantity: 0}], + saleline_set: [{product:'', unit_price: 0, quantity: 0}], }, rules: { required: value => !!value || 'Requerido.', @@ -120,15 +123,17 @@ n { title: 'Compras', route:'/compras'}, ], clients: [], + products: [], }; }, created() { this.fetchClients(); + this.fetchProducts(); }, 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); }, }, @@ -137,25 +142,36 @@ n 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); + }); + }, + fetchProducts() { + fetch('/don_confiao/api/products/') + .then(response => response.json()) + .then(data => { + console.log(data); + 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', @@ -165,6 +181,7 @@ n if (response.ok) { const data = await response.json(); console.log('Compra enviada:', data); + this.$router.push("SummaryPurchase"); } else { console.error('Error al enviar la compra:', response.statusText); } @@ -174,7 +191,7 @@ n } }, navigate(route) { - this.$route.push(route); + this.$router.push(route); }, }, }; diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/SummaryPurchase.vue b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/SummaryPurchase.vue new file mode 100644 index 0000000..0677899 --- /dev/null +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/SummaryPurchase.vue @@ -0,0 +1,18 @@ + + + diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/pages/sumaryPurchase.vue b/tienda_ilusion/don_confiao/frontend/don-confiao/src/pages/sumaryPurchase.vue new file mode 100644 index 0000000..6a46ff1 --- /dev/null +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/pages/sumaryPurchase.vue @@ -0,0 +1,7 @@ + + + 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']