feat(Purchase): warn user when try eliminate the last line

This commit is contained in:
Mono Mono 2024-11-11 21:42:13 -05:00
parent f1b8cbdce1
commit a5ac06704b

View File

@ -105,6 +105,9 @@
<v-btn @click="removeLine(index)" color="red">Eliminar</v-btn> <v-btn @click="removeLine(index)" color="red">Eliminar</v-btn>
</v-col> </v-col>
</v-row> </v-row>
<v-alert type="warning" :duration="2000" closable v-model="show_alert_lines">
No se puede eliminar la única línea.
</v-alert>
</v-container> </v-container>
<v-btn @click="addLine" color="blue">Agregar</v-btn> <v-btn @click="addLine" color="blue">Agregar</v-btn>
</v-container> </v-container>
@ -150,6 +153,7 @@
data() { data() {
return { return {
valid: false, valid: false,
show_alert_lines: false,
client_search: '', client_search: '',
product_search: '', product_search: '',
payment_methods: null, payment_methods: null,
@ -266,12 +270,13 @@
this.purchase.saleline_set.push({ product: '', unit_price: 0, quantity:0, measuring_unit: ''}); this.purchase.saleline_set.push({ product: '', unit_price: 0, quantity:0, measuring_unit: ''});
}, },
removeLine(index) { removeLine(index) {
// Solo elimina si hay más de una línea
if (this.purchase.saleline_set.length > 1) { if (this.purchase.saleline_set.length > 1) {
this.purchase.saleline_set.splice(index, 1); this.purchase.saleline_set.splice(index, 1);
} else { } else {
// Opcional: puedes mostrar un mensaje o alerta si lo deseas this.show_alert_lines = true;
console.log("No se puede eliminar la única línea."); setTimeout(() => {
this.show_alert_lines = false;
}, 2000);
} }
}, },
calculateSubtotal(line) { calculateSubtotal(line) {
@ -280,16 +285,6 @@
async submit() { async submit() {
this.$refs.purchase.validate(); this.$refs.purchase.validate();
if (this.valid) { if (this.valid) {
const hasInvalidQuantity = this.purchase.saleline_set.some(line => line.quantity <= 0);
if (hasInvalidQuantity) {
this.errorMessage = 'La cantidad de cada línea de compra debe ser mayor que cero.';
console.log(this.errorMessage);
return; // Detener el submit si hay cantidades inválidas
}
this.errorMessage = ''; // Limpiar el mensaje de error
try { try {
const response = await fetch('/don_confiao/api/sales/', { const response = await fetch('/don_confiao/api/sales/', {
method: 'POST', method: 'POST',