Empresa
-
Servicios Técnicos Profesionales
+
Email: - | Tel: -
CONTRATO DE SUSCRIPCIÓN
- Cliente
+ Cliente
+ DNI: -
+ Tel: -
@@ -240,6 +266,25 @@
canvas.addEventListener('touchstart', startDrawing); canvas.addEventListener('touchmove', draw); canvas.addEventListener('touchend', () => drawing = false);
function clearSignature() { ctx.clearRect(0, 0, canvas.width, canvas.height); }
+ function toggleDniField() {
+ const isChecked = document.getElementById('terms-checkbox').checked;
+ const dniContainer = document.getElementById('dni-container');
+ if(isChecked) dniContainer.classList.remove('hidden');
+ else dniContainer.classList.add('hidden');
+ }
+
+ function showContractModal(e) {
+ e.preventDefault();
+ document.getElementById('modal-contract-text').innerText = globalConfig.contract_text || "Condiciones no disponibles.";
+ document.getElementById('contract-modal').classList.remove('hidden');
+ }
+ function closeContractModal() { document.getElementById('contract-modal').classList.add('hidden'); }
+ function acceptFromModal() {
+ closeContractModal();
+ document.getElementById('terms-checkbox').checked = true;
+ toggleDniField();
+ }
+
function goBackToPortal() {
window.location.href = `index.html?token=${token}`;
}
@@ -268,8 +313,10 @@
clientData = data.client;
document.getElementById('pdf-company-name').innerText = data.company.name;
+ document.getElementById('pdf-company-details').innerText = `Email: ${globalConfig.email || '-'} | Tel: ${globalConfig.phone || '-'}`;
document.getElementById('pdf-stamp-company').innerText = data.company.name.toUpperCase();
document.getElementById('pdf-client-name').innerText = `Asegurado: ${clientData.name}`;
+ document.getElementById('pdf-client-phone').innerText = `Tel: ${clientData.phone || '-'}`;
document.getElementById('pdf-dynamic-text').innerText = globalConfig.contract_text || "El mantenimiento y asistencia quedan cubiertos por las condiciones de la empresa proveedora.";
renderPlans();
@@ -337,6 +384,15 @@
async function processContract() {
if (!selectedPlanId) return alert("Por favor, selecciona un plan.");
+
+ if (!document.getElementById('terms-checkbox').checked) {
+ return alert("⚠️ Debes leer y aceptar las Condiciones del Contrato marcando la casilla.");
+ }
+
+ const dniVal = document.getElementById('client-dni').value.trim().toUpperCase();
+ if (!dniVal || dniVal.length < 5) {
+ return alert("⚠️ Por favor, introduce un DNI/NIE válido para formalizar el contrato.");
+ }
const blank = document.createElement('canvas');
blank.width = canvas.width; blank.height = canvas.height;
@@ -351,6 +407,7 @@
document.getElementById('pdf-signature-img').src = canvas.toDataURL("image/png");
document.getElementById('pdf-plan-name').innerText = `${planSeleccionado.name} (${planSeleccionado.price}€ / ${planSeleccionado.type})`;
document.getElementById('pdf-timestamp').innerText = "Documento firmado digitalmente el " + new Date().toLocaleDateString('es-ES') + " a las " + new Date().toLocaleTimeString('es-ES');
+ document.getElementById('pdf-client-dni').innerText = `DNI: ${dniVal}`; // Inyectar DNI
const element = document.getElementById('pdf-contract-template');
element.classList.remove('hidden');
@@ -366,7 +423,12 @@
try {
const pdfBase64 = await html2pdf().set(opt).from(element).output('datauristring');
- const payload = { plan_id: selectedPlanId, signature: canvas.toDataURL("image/png"), pdf_document: pdfBase64 };
+ const payload = {
+ plan_id: selectedPlanId,
+ signature: canvas.toDataURL("image/png"),
+ pdf_document: pdfBase64,
+ dni: dniVal
+ };
const res = await fetch(`${API_URL}/public/portal/${token}/protection/subscribe`, {
method: 'POST',