diff --git a/index2.html b/index2.html index 6f3621e..40b56be 100644 --- a/index2.html +++ b/index2.html @@ -446,12 +446,15 @@ } // --- LÓGICA DE PDF AÑADIDA --- + let allServicesGlobalBackup = []; // <--- Variable para no perder los datos del cliente + async function generatePDF(id) { const budget = currentQuotes.find(b => b.id === id); if(!budget) return showToast("❌ Error: Presupuesto no encontrado"); showToast("⏳ Generando PDF, espera unos segundos..."); + // 1. CARGAMOS DATOS FISCALES DE LA EMPRESA (IBAN, OBS, CIF) let empNombre = globalCompanyData?.name || "Empresa Reparadora"; let empLogo = globalCompanyData?.logo || null; let empDni = globalCompanyData?.billing_settings?.dni ? `CIF/NIF: ${globalCompanyData.billing_settings.dni}` : ""; @@ -485,9 +488,27 @@ if(fDate && fDate.includes('T')) fDate = fDate.split('T')[0].split('-').reverse().join('/'); document.getElementById('pdf-date').innerText = fDate; - document.getElementById('pdf-client-name').innerText = budget.client_name || document.getElementById('clientName').innerText || "Cliente"; - document.getElementById('pdf-client-phone').innerText = budget.client_phone || "-"; - document.getElementById('pdf-client-address').innerText = budget.client_address || "-"; + // 2. 🛑 FIX CRÍTICO: RESCATAMOS DATOS DEL CLIENTE SI EL PRESUPUESTO ESTÁ VACÍO + let fallbackClient = allServicesGlobalBackup[0]?.raw_data || {}; + + let finalName = budget.client_name; + if(!finalName || finalName.trim() === "") finalName = fallbackClient["Nombre Cliente"] || fallbackClient["CLIENTE"] || document.getElementById('clientName').innerText; + + let finalPhone = budget.client_phone; + if(!finalPhone || finalPhone.trim() === "") finalPhone = fallbackClient["Teléfono"] || fallbackClient["TELEFONO"] || "-"; + + let finalAddress = budget.client_address; + if(!finalAddress || finalAddress.trim() === "") { + let fallbackAddr = fallbackClient["Dirección"] || fallbackClient["DOMICILIO"] || ""; + let fallbackCp = fallbackClient["Código Postal"] || fallbackClient["C.P."] || ""; + let fallbackPob = fallbackClient["Población"] || fallbackClient["POBLACION-PROVINCIA"] || ""; + finalAddress = `${fallbackAddr}, ${fallbackCp} ${fallbackPob}`.trim(); + if (finalAddress === ",") finalAddress = "Dirección no especificada"; + } + + document.getElementById('pdf-client-name').innerText = finalName; + document.getElementById('pdf-client-phone').innerText = finalPhone; + document.getElementById('pdf-client-address').innerText = finalAddress; const itemsArr = budget.items || []; let itemsHtml = ''; @@ -646,6 +667,7 @@ function renderPortal(client, company, allServices) { globalCompanyData = company; // 🛑 NUEVO: Guardamos la empresa + allServicesGlobalBackup = allServices; // 🛑 NUEVO: Guardamos una copia de los avisos para el PDF if (company.name) document.title = `Portal - ${company.name}`; if (company.logo) {