{"id":472,"date":"2026-02-17T17:39:18","date_gmt":"2026-02-17T23:39:18","guid":{"rendered":"https:\/\/www.sospuravida.com\/?page_id=472"},"modified":"2026-02-17T17:39:19","modified_gmt":"2026-02-17T23:39:19","slug":"contratos","status":"publish","type":"page","link":"https:\/\/www.sospuravida.com\/?page_id=472","title":{"rendered":"CONTRATOS"},"content":{"rendered":"        <style>\r\n            .saas-form { font-family: system-ui, sans-serif; max-width: 800px; margin: auto; background: #fff; padding: 25px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); border: 1px solid #e2e8f0; }\r\n            .saas-form h3 { border-bottom: 2px solid #f1f5f9; padding-bottom: 10px; color: #1e293b; margin-top: 25px; }\r\n            .saas-kv { margin-bottom: 15px; }\r\n            .saas-kv label { display: block; font-weight: bold; font-size: 13px; color: #475569; margin-bottom: 5px; text-transform: uppercase;}\r\n            .saas-input { width: 100%; padding: 12px; border: 2px solid #cbd5e1; border-radius: 6px; font-size: 15px; box-sizing: border-box;}\r\n            .saas-total-box { background: #f0fdf4; border: 2px solid #34d399; padding: 20px; text-align: center; border-radius: 8px; margin: 20px 0; }\r\n            .saas-total-box h2 { margin: 0; color: #047857; font-size: 32px; font-weight: 900; }\r\n            .bancos-box { background: #f8fafc; padding: 15px; border-radius: 8px; border-left: 4px solid #3b82f6; font-size: 14px; margin-bottom: 20px; line-height: 1.6;}\r\n            .cam-box { background: #f1f5f9; padding: 15px; border-radius: 8px; border: 1px dashed #cbd5e1; margin-bottom: 15px; text-align:center;}\r\n            .cam-video { width: 100%; max-width: 300px; border-radius: 8px; display:none; margin:10px auto;}\r\n            .btn-action { background: #3b82f6; color: white; border: none; padding: 10px 15px; border-radius: 5px; cursor: pointer; font-weight: bold; }\r\n            .btn-action:hover { background: #2563eb; }\r\n            \r\n            .btn-submit { \r\n                background: #10b981; color: white; border: none; padding: 16px 20px; border-radius: 8px; font-size: 18px; font-weight: bold; width: 100%; cursor: pointer; margin-top: 20px; text-transform: uppercase; line-height: normal; display: flex; align-items: center; justify-content: center; min-height: 60px; text-align: center; white-space: normal; box-sizing: border-box;\r\n            }\r\n            .btn-submit:hover { background: #059669; }\r\n\r\n            .preview-img { max-width: 100%; max-height: 200px; border-radius: 8px; border: 2px solid #10b981; display: none; margin: 10px auto; }\r\n            #firmaPad { border: 2px dashed #94a3b8; background: #f8fafc; width: 100%; height: 200px; cursor: crosshair; border-radius: 8px; }\r\n        <\/style>\r\n\r\n        <div class=\"saas-form no-print\">\r\n            <div style=\"text-align:center; margin-bottom:20px;\">\r\n                <h2 style=\"margin:0; color:#0f172a;\">Contrataci\u00f3n de Sistemas Soft-SOS<\/h2>\r\n                <p style=\"color:#64748b;\">Complete el formulario y adjunte su comprobante de pago.<\/p>\r\n            <\/div>\r\n\r\n            <form method=\"post\" id=\"formSaaS\">\r\n                \r\n                <h3>\ud83d\udc64 1. Datos del Cliente<\/h3>\r\n                <div class=\"saas-kv\"><label>Nombre Completo \/ Raz\u00f3n Social<\/label><input type=\"text\" name=\"cliente_nombre\" class=\"saas-input\" required><\/div>\r\n                <div class=\"saas-kv\"><label>C\u00e9dula F\u00edsica o Jur\u00eddica<\/label><input type=\"text\" name=\"cliente_cedula\" class=\"saas-input\" required><\/div>\r\n\r\n                <h3>\ud83d\udcbb 2. Selecci\u00f3n de Sistema (Soft-SOS)<\/h3>\r\n                <div class=\"saas-kv\">\r\n                    <label>Sistemas a Contratar<\/label>\r\n                    <select name=\"saas_servicio\" id=\"saas_servicio\" class=\"saas-input\" required onchange=\"calcTotal()\">\r\n                        <option value=\"Sistema Casa de Empe\u00f1os\" data-precio=\"28000\">Sistema Casa de Empe\u00f1os (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema para Restaurantes\" data-precio=\"28000\">Sistema para Restaurantes (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Facturaci\u00f3n General\" data-precio=\"28000\">Sistema de Facturaci\u00f3n General (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Hoteler\u00eda\" data-precio=\"28000\">Sistema de Hoteler\u00eda (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Panader\u00edas\" data-precio=\"28000\">Sistema de Panader\u00edas (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Tiendas de Souvenir\" data-precio=\"28000\">Sistema de Tiendas de Souvenir (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Tour Operadores\" data-precio=\"28000\">Sistema de Tour Operadores (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema para Academias de Gimnasia\" data-precio=\"28000\">Sistema para Academias de Gimnasia (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema para Gimnasio\" data-precio=\"28000\">Sistema para Gimnasio (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Campus Universitarios\" data-precio=\"28000\">Sistema de Campus Universitarios (\u20a128,000)<\/option>\r\n                        <option value=\"Sistema de Academias Educativas\" data-precio=\"28000\">Sistema de Academias Educativas (\u20a128,000)<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n                <div class=\"saas-kv\">\r\n                    <label>Usuarios Adicionales (\u20a12,500 c\/u)<\/label>\r\n                    <input type=\"number\" name=\"saas_usuarios\" id=\"saas_usuarios\" class=\"saas-input\" value=\"0\" min=\"0\" onkeyup=\"calcTotal()\" onchange=\"calcTotal()\">\r\n                <\/div>\r\n\r\n                <div class=\"saas-total-box\">\r\n                    <p style=\"margin:0; font-weight:bold; color:#065f46; text-transform:uppercase;\">TOTAL A PAGAR (MENSUALIDAD)<\/p>\r\n                    <h2 id=\"saas_total_ui\">\u20a128,000<\/h2>\r\n                    <input type=\"hidden\" name=\"saas_total\" id=\"saas_total\" value=\"28000\">\r\n                <\/div>\r\n\r\n                <h3>\ud83d\udcb3 3. Pago y Comprobante<\/h3>\r\n                <div class=\"bancos-box\">\r\n                    <strong>\ud83d\udcf1 SINPE M\u00d3VIL (1):<\/strong> 6325-3509 a nombre de Luis Alejandro Porras Vel\u00e1zquez<br>\r\n                    <strong>\ud83d\udcf1 SINPE M\u00d3VIL (2):<\/strong> 6353-6580 a nombre de Luis Alejandro Porras Vel\u00e1zquez<br><br>\r\n                    <strong>\ud83c\udfe6 BANCO POPULAR:<\/strong> IBAN CR34016111015158622733 a nombre de Luis Alejandro Porras Vel\u00e1zquez<br>\r\n                    <strong>\ud83c\udfe6 WINK:<\/strong> IBAN CR22081400011018664489 a nombre de Luis Alejandro Porras Vel\u00e1zquez\r\n                <\/div>\r\n\r\n                <div class=\"cam-box\">\r\n                    <label>\ud83d\udcf8 FOTO DEL COMPROBANTE DE PAGO (OBLIGATORIO)<\/label><br>\r\n                    <button type=\"button\" class=\"btn-action\" onclick=\"startCam('comp', 'environment')\">Activar C\u00e1mara<\/button>\r\n                    <span> o <input type=\"file\" id=\"file_comp\" accept=\"image\/*\" style=\"font-size:12px;\"><\/span>\r\n                    <video id=\"vid_comp\" class=\"cam-video\" autoplay playsinline><\/video>\r\n                    <button type=\"button\" id=\"btn_cap_comp\" class=\"btn-action\" style=\"display:none; margin:10px auto; background:#dc2626;\" onclick=\"takePic('comp')\">Tomar Foto<\/button>\r\n                    <img id=\"img_comp\" class=\"preview-img\">\r\n                    <input type=\"hidden\" name=\"foto_comprobante_base64\" id=\"b64_comp\" required>\r\n                <\/div>\r\n\r\n                <h3>\ud83d\udcf8 4. Verificaci\u00f3n de Identidad (Biometr\u00eda)<\/h3>\r\n                \r\n                <div class=\"cam-box\">\r\n                    <label>\ud83d\udcf8 FOTO DE C\u00c9DULA<\/label><br>\r\n                    <button type=\"button\" class=\"btn-action\" onclick=\"startCam('id', 'environment')\">Activar C\u00e1mara<\/button>\r\n                    <span> o <input type=\"file\" id=\"file_id\" accept=\"image\/*\" style=\"font-size:12px;\"><\/span>\r\n                    <video id=\"vid_id\" class=\"cam-video\" autoplay playsinline><\/video>\r\n                    <button type=\"button\" id=\"btn_cap_id\" class=\"btn-action\" style=\"display:none; margin:10px auto; background:#dc2626;\" onclick=\"takePic('id')\">Tomar Foto<\/button>\r\n                    <img id=\"img_id\" class=\"preview-img\">\r\n                    <input type=\"hidden\" name=\"foto_identificacion_base64\" id=\"b64_id\">\r\n                <\/div>\r\n\r\n                <div class=\"cam-box\">\r\n                    <label>\ud83e\udd33 SELFIE (ROSTRO DEL CLIENTE)<\/label><br>\r\n                    <button type=\"button\" class=\"btn-action\" onclick=\"startCam('perfil', 'user')\">Activar C\u00e1mara Frontal<\/button>\r\n                    <span> o <input type=\"file\" id=\"file_perfil\" accept=\"image\/*\" style=\"font-size:12px;\"><\/span>\r\n                    <video id=\"vid_perfil\" class=\"cam-video\" autoplay playsinline><\/video>\r\n                    <button type=\"button\" id=\"btn_cap_perfil\" class=\"btn-action\" style=\"display:none; margin:10px auto; background:#dc2626;\" onclick=\"takePic('perfil')\">Tomar Foto<\/button>\r\n                    <img id=\"img_perfil\" class=\"preview-img\">\r\n                    <input type=\"hidden\" name=\"foto_perfil_base64\" id=\"b64_perfil\">\r\n                <\/div>\r\n\r\n                <h3>\u270d\ufe0f 5. Contrato Legal y Firma<\/h3>\r\n                <div style=\"background:#f8fafc; padding:15px; font-size:12px; height:150px; overflow-y:scroll; border:1px solid #cbd5e1; margin-bottom:15px; border-radius:6px;\">\r\n                    <h3 style=\"text-align: justify\">CL\u00c1USULA PRIMERA: OBJETO DEL CONTRATO<\/h3>\r\n<p style=\"text-align: justify\">El presente contrato tiene por objeto otorgar a EL CLIENTE una licencia de uso no exclusiva, intransferible y revocable del sistema de software en la nube (SaaS) desarrollado por SOFT-SOS, elegido en este documento. El servicio se brinda estrictamente bajo la modalidad de alquiler mensual.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA SEGUNDA: TARIFAS Y CONDICIONES DE PAGO<\/h3>\r\n<p style=\"text-align: justify\">1. <strong>Mensualidad:<\/strong> El costo base del sistema es de \u20a128,000 (veintiocho mil colones) mensuales. Por cada usuario adicional requerido por EL CLIENTE, se sumar\u00e1 un cargo de \u20a12,500 (dos mil quinientos colones) a la cuota mensual.<\/p>\r\n<p style=\"text-align: justify\">2. <strong>Ciclo de Facturaci\u00f3n:<\/strong> El pago es anticipado. El ciclo de facturaci\u00f3n inicia el d\u00eda de la firma de este contrato y se renovar\u00e1 exactamente el mismo d\u00eda de los meses subsiguientes (Ejemplo: Si se firma el d\u00eda 17, los pagos vencer\u00e1n los d\u00edas 17 de cada mes).<\/p>\r\n<p style=\"text-align: justify\">3. <strong>Recordatorios:<\/strong> El sistema enviar\u00e1 notificaciones autom\u00e1ticas preventivas 3 d\u00edas, 2 d\u00edas y 1 d\u00eda antes de la fecha de vencimiento.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA TERCERA: MOROSIDAD, SUSPENSI\u00d3N Y RECONEXI\u00d3N<\/h3>\r\n<p style=\"text-align: justify\">1. <strong>Suspensi\u00f3n Autom\u00e1tica:<\/strong> En caso de no registrarse el pago en la fecha de corte establecida, el sistema ejecutar\u00e1 una suspensi\u00f3n autom\u00e1tica de los servicios pasada la medianoche (24 horas despu\u00e9s del vencimiento).<\/p>\r\n<p style=\"text-align: justify\">2. <strong>Costo de Reconexi\u00f3n:<\/strong> Si el servicio es suspendido por falta de pago, EL CLIENTE deber\u00e1 cancelar la mensualidad adeudada m\u00e1s una multa por concepto de reconexi\u00f3n y reactivaci\u00f3n de base de datos de <strong>\u20a15,500 (cinco mil quinientos colones)<\/strong>. El pago debe realizarse a las mismas cuentas autorizadas.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA CUARTA: SOPORTE T\u00c9CNICO Y ACTUALIZACIONES<\/h3>\r\n<p style=\"text-align: justify\">1. <strong>Horario de Soporte:<\/strong> EL PROVEEDOR brindar\u00e1 asistencia t\u00e9cnica operativa de lunes a viernes, en horario de 8:00 a.m. a 6:00 p.m.<\/p>\r\n<p style=\"text-align: justify\">2. <strong>Actualizaciones Globales:<\/strong> El sistema recibir\u00e1 mejoras continuas y actualizaciones tecnol\u00f3gicas de forma peri\u00f3dica, las cuales no tendr\u00e1n ning\u00fan costo adicional para EL CLIENTE.<\/p>\r\n<p style=\"text-align: justify\">3. <strong>Desarrollos a Medida:<\/strong> Si EL CLIENTE solicita una modificaci\u00f3n, m\u00f3dulo o mejora exclusiva y dise\u00f1ada espec\u00edficamente para su comercio, esta tendr\u00e1 un valor est\u00e1ndar de $100 USD (cien d\u00f3lares americanos) y un tiempo de entrega estimado de 8 d\u00edas h\u00e1biles, previa evaluaci\u00f3n de viabilidad.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA QUINTA: SEGURIDAD INFORM\u00c1TICA Y SESIONES<\/h3>\r\n<p style=\"text-align: justify\">Bajo estrictas normativas de ciberseguridad, el sistema cuenta con un algoritmo inteligente de \\\"Sesi\u00f3n \u00danica\\\". Queda estrictamente prohibido y t\u00e9cnicamente restringido que un mismo usuario comparta sus credenciales para operar en m\u00faltiples dispositivos simult\u00e1neamente. Si un usuario inicia sesi\u00f3n en un dispositivo nuevo, el sistema desconectar\u00e1 autom\u00e1ticamente cualquier sesi\u00f3n previa abierta.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA SEXTA: RESPALDO, PRIVACIDAD Y MANEJO DE DATOS<\/h3>\r\n<p style=\"text-align: justify\">1. <strong>Respaldos:<\/strong> EL PROVEEDOR garantiza la generaci\u00f3n de copias de seguridad (Backups) autom\u00e1ticas en la nube todas las noches para salvaguardar la integridad de la informaci\u00f3n.<\/p>\r\n<p style=\"text-align: justify\">2. <strong>Privacidad y Encriptaci\u00f3n:<\/strong> Toda la informaci\u00f3n contenida en las bases de datos de EL CLIENTE est\u00e1 encriptada. Los datos son de uso exclusivo y absoluto de EL CLIENTE. EL PROVEEDOR no comercializa, no audita, ni manipula dicha informaci\u00f3n.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA S\u00c9PTIMA: RESPONSABILIDAD LEGAL EXCLUSIVA DEL CLIENTE<\/h3>\r\n<p style=\"text-align: justify\">EL CLIENTE asume la responsabilidad total y absoluta sobre la veracidad, legalidad y naturaleza de los datos ingresados al sistema (inventarios, clientes, transacciones, art\u00edculos, etc.). Al estar la informaci\u00f3n encriptada, EL PROVEEDOR no tiene acceso a visualizar ni validar las operaciones comerciales internas, por lo que <strong>EL CLIENTE libera expresa y totalmente a SOFT-SOS y a sus desarrolladores<\/strong> de cualquier responsabilidad legal, civil, penal o tributaria derivada del mal uso del software o de las pr\u00e1cticas comerciales de EL CLIENTE.<\/p>\r\n\r\n<h3 style=\"text-align: justify\">CL\u00c1USULA OCTAVA: VIGENCIA Y CANCELACI\u00d3N<\/h3>\r\n<p style=\"text-align: justify\">El contrato tiene una vigencia mensual renovable autom\u00e1ticamente con el pago. EL CLIENTE puede solicitar la cancelaci\u00f3n definitiva del servicio en cualquier momento notificando al soporte t\u00e9cnico, en cuyo caso perder\u00e1 el acceso a la plataforma sin derecho a reembolso por fracciones de mes no utilizadas.<\/p>\r\n<p style=\"text-align: justify\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\" wp-image-475 aligncenter\" src=\"https:\/\/www.sospuravida.com\/wp-content\/uploads\/2026\/02\/SOS-PYMES-FONDO-BLANCO-300x118.png\" alt=\"\" width=\"173\" height=\"68\" srcset=\"https:\/\/www.sospuravida.com\/wp-content\/uploads\/2026\/02\/SOS-PYMES-FONDO-BLANCO-300x118.png 300w, https:\/\/www.sospuravida.com\/wp-content\/uploads\/2026\/02\/SOS-PYMES-FONDO-BLANCO-500x196.png 500w, https:\/\/www.sospuravida.com\/wp-content\/uploads\/2026\/02\/SOS-PYMES-FONDO-BLANCO.png 721w\" sizes=\"auto, (max-width: 173px) 100vw, 173px\" \/><\/p>                <\/div>\r\n\r\n                <div style=\"text-align:center;\">\r\n                    <label style=\"color:#ef4444; font-weight:bold;\">FIRME DENTRO DEL RECUADRO<\/label>\r\n                    <canvas id=\"firmaPad\" width=\"600\" height=\"200\"><\/canvas>\r\n                    <button type=\"button\" id=\"clearFirma\" class=\"btn-action\" style=\"background:#64748b; margin-top:10px;\">Borrar Firma<\/button>\r\n                    <input type=\"hidden\" name=\"firma_png_base64\" id=\"firmaData\">\r\n                <\/div>\r\n\r\n                <button type=\"submit\" name=\"saas_firmar\" value=\"1\" class=\"btn-submit\">Aceptar, Firmar y Enviar Pago<\/button>\r\n            <\/form>\r\n        <\/div>\r\n\r\n        <script>\r\n        function calcTotal() {\r\n            const sel = document.getElementById('saas_servicio');\r\n            const precioBase = parseFloat(sel.options[sel.selectedIndex].getAttribute('data-precio')) || 0;\r\n            const extraUsers = parseInt(document.getElementById('saas_usuarios').value) || 0;\r\n            const total = precioBase + (extraUsers * 2500); \r\n            \r\n            document.getElementById('saas_total_ui').innerText = '\u20a1' + total.toLocaleString('es-CR');\r\n            document.getElementById('saas_total').value = total;\r\n        }\r\n\r\n        let streams = {};\r\n        function startCam(id, mode) {\r\n            navigator.mediaDevices.getUserMedia({ video: { facingMode: mode } })\r\n            .then(stream => {\r\n                streams[id] = stream;\r\n                document.getElementById('vid_'+id).srcObject = stream;\r\n                document.getElementById('vid_'+id).style.display = 'block';\r\n                document.getElementById('btn_cap_'+id).style.display = 'block';\r\n            }).catch(e => alert('Error de c\u00e1mara. Use el bot\u00f3n de subir archivo.'));\r\n        }\r\n        function takePic(id) {\r\n            const vid = document.getElementById('vid_'+id);\r\n            const canvas = document.createElement('canvas');\r\n            canvas.width = vid.videoWidth; canvas.height = vid.videoHeight;\r\n            canvas.getContext('2d').drawImage(vid, 0, 0);\r\n            const b64 = canvas.toDataURL('image\/jpeg', 0.6);\r\n            \r\n            document.getElementById('img_'+id).src = b64;\r\n            document.getElementById('img_'+id).style.display = 'block';\r\n            document.getElementById('b64_'+id).value = b64;\r\n            \r\n            vid.style.display = 'none'; document.getElementById('btn_cap_'+id).style.display = 'none';\r\n            if(streams[id]) streams[id].getTracks().forEach(t => t.stop());\r\n        }\r\n\r\n        ['comp','id','perfil'].forEach(id => {\r\n            const el = document.getElementById('file_'+id);\r\n            if(el){\r\n                el.addEventListener('change', function(e){\r\n                    const f = e.target.files[0]; if(!f) return;\r\n                    const r = new FileReader();\r\n                    r.onload = ev => {\r\n                        const img = new Image();\r\n                        img.onload = () => {\r\n                            const canvas = document.createElement('canvas');\r\n                            const maxW = 1000; let w = img.width; let h = img.height;\r\n                            if(w > maxW) { h = h*(maxW\/w); w = maxW; }\r\n                            canvas.width = w; canvas.height = h;\r\n                            canvas.getContext('2d').drawImage(img, 0, 0, w, h);\r\n                            const b64 = canvas.toDataURL('image\/jpeg', 0.6);\r\n                            document.getElementById('img_'+id).src = b64;\r\n                            document.getElementById('img_'+id).style.display = 'block';\r\n                            document.getElementById('b64_'+id).value = b64;\r\n                        }; img.src = ev.target.result;\r\n                    }; r.readAsDataURL(f);\r\n                });\r\n            }\r\n        });\r\n\r\n        (function(){\r\n            var canvas = document.getElementById('firmaPad');\r\n            if(!canvas) return;\r\n            var ctx = canvas.getContext('2d');\r\n            var drawing = false, lastX=0, lastY=0;\r\n\r\n            function pos(e){\r\n                var rect = canvas.getBoundingClientRect();\r\n                var x, y;\r\n                if(e.touches && e.touches[0]){\r\n                    x = e.touches[0].clientX - rect.left;\r\n                    y = e.touches[0].clientY - rect.top;\r\n                } else {\r\n                    x = e.clientX - rect.left;\r\n                    y = e.clientY - rect.top;\r\n                }\r\n                x *= (canvas.width \/ rect.width);\r\n                y *= (canvas.height \/ rect.height);\r\n                return {x:x,y:y};\r\n            }\r\n\r\n            function start(e){ drawing = true; var p = pos(e); lastX=p.x; lastY=p.y; e.preventDefault(); }\r\n            function move(e){\r\n                if(!drawing) return;\r\n                var p = pos(e);\r\n                ctx.lineWidth = 2; ctx.lineCap = 'round';\r\n                ctx.beginPath(); ctx.moveTo(lastX,lastY); ctx.lineTo(p.x,p.y); ctx.stroke();\r\n                lastX=p.x; lastY=p.y; e.preventDefault();\r\n            }\r\n            function end(e){ drawing = false; e.preventDefault(); }\r\n\r\n            canvas.addEventListener('mousedown', start); canvas.addEventListener('mousemove', move);\r\n            canvas.addEventListener('mouseup', end); canvas.addEventListener('mouseleave', end);\r\n            canvas.addEventListener('touchstart', start, {passive:false}); canvas.addEventListener('touchmove', move, {passive:false}); canvas.addEventListener('touchend', end, {passive:false});\r\n\r\n            const clearBtn = document.getElementById('clearFirma');\r\n            if(clearBtn){\r\n                clearBtn.addEventListener('click', function(e){\r\n                    ctx.clearRect(0,0,canvas.width, canvas.height); e.preventDefault();\r\n                });\r\n            }\r\n\r\n            const formSaaS = document.getElementById('formSaaS');\r\n            if(formSaaS){\r\n                formSaaS.addEventListener('submit', function(e){\r\n                    const b64comp = document.getElementById('b64_comp').value;\r\n                    if(!b64comp) { alert('DEBE ADJUNTAR LA FOTO DEL COMPROBANTE DE PAGO'); e.preventDefault(); return; }\r\n                    \r\n                    try { document.getElementById('firmaData').value = canvas.toDataURL('image\/png'); } catch(e){}\r\n                });\r\n            }\r\n        })();\r\n        <\/script>\r\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-472","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=\/wp\/v2\/pages\/472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=472"}],"version-history":[{"count":1,"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=\/wp\/v2\/pages\/472\/revisions"}],"predecessor-version":[{"id":474,"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=\/wp\/v2\/pages\/472\/revisions\/474"}],"wp:attachment":[{"href":"https:\/\/www.sospuravida.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}