-
Nuevo Presupuesto
+ Nuevo Presupuesto
+
@@ -596,8 +597,9 @@
actions = `
`;
}
- // Botones fijos (PDF y Borrar)
+ // Botones fijos (Editar, PDF y Borrar)
let utilityButtons = `
+
`;
@@ -727,6 +729,8 @@
}
function openBudgetModal() {
+ document.getElementById('editBudgetId').value = "";
+ document.getElementById('budgetModalTitle').innerText = "Nuevo Presupuesto";
document.getElementById('bPhone').value = ""; document.getElementById('bName').value = ""; document.getElementById('bAddress').value = "";
document.getElementById('budgetLines').innerHTML = "";
addBudgetLine();
@@ -734,6 +738,51 @@
document.getElementById('budgetModal').classList.remove('hidden');
}
+ function editBudget(id) {
+ const budget = myBudgets.find(b => b.id === id);
+ if (!budget) return;
+
+ document.getElementById('editBudgetId').value = id;
+ document.getElementById('budgetModalTitle').innerText = "Editar Presupuesto #" + id;
+
+ document.getElementById('bPhone').value = budget.client_phone || "";
+ document.getElementById('bName').value = budget.client_name || "";
+ document.getElementById('bAddress').value = budget.client_address || "";
+
+ document.getElementById('budgetLines').innerHTML = "";
+
+ if (budget.items && budget.items.length > 0) {
+ budget.items.forEach((item, index) => {
+ const lineId = Date.now() + index; // ID único para la línea
+ const artOptions = myArticles.map(a => `
`).join("");
+
+ const html = `
+
+
+
+
+
+ `;
+ document.getElementById('budgetLines').insertAdjacentHTML('beforeend', html);
+ });
+ } else {
+ addBudgetLine();
+ }
+
+ calcBudget();
+ document.getElementById('budgetModal').classList.remove('hidden');
+ lucide.createIcons();
+ }
+
async function searchClientByPhone() {
const phone = document.getElementById('bPhone').value;
if(!phone || phone.length < 9) return;
@@ -815,10 +864,17 @@
const payload = { client_phone: phone, client_name: name, client_address: document.getElementById('bAddress').value, items, subtotal: sub, tax, total: tot };
- await fetch(`${API_URL}/budgets`, { method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, body: JSON.stringify(payload) });
+ const editId = document.getElementById('editBudgetId').value;
+
+ if (editId) {
+ await fetch(`${API_URL}/budgets/${editId}`, { method: 'PUT', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, body: JSON.stringify(payload) });
+ showToast("Presupuesto actualizado");
+ } else {
+ await fetch(`${API_URL}/budgets`, { method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, body: JSON.stringify(payload) });
+ showToast("Presupuesto guardado");
+ }
document.getElementById('budgetModal').classList.add('hidden');
- showToast("Presupuesto guardado");
loadBudgets();
}