+
-
+ >
-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 @@
+
+
+
+
+
+ Resumen de la compra
+
+
+ Pon aqui la información de la compra
+
+
+
+
+
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']