/* global React, ReactDOM */ const { useState, useEffect } = React; const { Icon, useReveal, Navbar, Footer, useSiteTweaks, SiteTweaks, PrivacyBox, Galeria } = window; const MADECA_EMAIL = "madeca@masoft.es"; // navbar principal (72) + subcabecera (~52) const NAV_OFFSET = 126; const SECTIONS = [ { id: "que-es", label: "Qué es" }, { id: "obligacion", label: "La obligación" }, { id: "funcionamiento", label: "Cómo funciona" }, { id: "gestion", label: "Gestión" }, { id: "pantallas", label: "Pantallas" }, { id: "integraciones", label: "Integraciones" }, { id: "garantias", label: "Garantías" }, { id: "preguntas", label: "Preguntas" }, { id: "mini", label: "Versión gratuita", destacado: true }, { id: "contacto", label: "Contacto" } ]; const scrollToId = (id) => { const el = document.getElementById(id); if (!el) return; const y = el.getBoundingClientRect().top + window.pageYOffset - NAV_OFFSET; window.scrollTo({ top: Math.max(0, y), behavior: "smooth" }); }; /* ---------- Contenido ---------- */ // Referencias normativas comprobadas en los textos consolidados del BOE el // 09/10/2026: Orden FOM/2861/2012 (arts. 2.1, 4, 6, 7 y 9), Ley 16/1987 LOTT // (arts. 141.17 y 143.1.d), Ley 9/2025 (DT 8.ª) y Resolución de 5 de junio // de 2026 (BOE-A-2026-12784). No añadir cifras ni plazos sin fuente oficial. const REQUISITOS = [ { icon: "file-text", h: "Electrónico de origen", p: "Un albarán en papel escaneado no sirve como DeCA: el documento debe nacer en formato electrónico." }, { icon: "search", h: "Visible en carretera", p: "La inspección debe poder consultarlo con un código QR o un enlace, sin usuario ni contraseña." }, { icon: "lock", h: "Conservado un año", p: "Cargador y transportista deben conservarlo al menos un año, a disposición de la Inspección de Transporte." } ]; const PIPELINE = [ { k: "1", label: "Llega el albarán", sub: "ERP · NUBE · NAS · FOTO", desc: "MADeCa lo recoge de donde ya lo tiene: su ERP, una carpeta compartida, la nube o una foto del papel." }, { k: "2", label: "Lee los datos", sub: "EXTRACCIÓN · OCR", desc: "Cargador, transportista, destinatario, origen, destino, mercancía, fecha y matrícula, también de escaneos." }, { k: "3", label: "Usted confirma", sub: "BANDEJA DE REVISIÓN", desc: "Lo que falta, en rojo y a un clic de su campo; el documento original, al lado, señala dónde se leyó cada dato. Nada se emite sin revisión." }, { k: "4", label: "DeCA con su QR", sub: "PDF · QR · ENLACE", desc: "Copia para el conductor, enlace privado para la otra parte y consulta inmediata para la inspección." } ]; const SHOTS = [ { src: "assets/madeca/v04/inicio.webp", t: "Inicio", d: "Lo pendiente, lo que está en ruta y lo que necesita atención: certificados por caducar, borradores sin revisar y fuentes con error." }, { src: "assets/madeca/v04/revision.webp", t: "Revisión de un albarán", d: "MADeCa no da por bueno ningún dato del que no esté completamente seguro. Si un dato no aparece o no puede comprobarse —como un NIF cuyo dígito de control no cuadra—, en lugar de suponerlo lo señala y pide su comprobación: un clic lleva al campo, que queda en rojo hasta confirmarlo con el albarán original a la vista." }, { src: "assets/madeca/v04/bandeja.webp", t: "Bandeja de revisión", d: "Filtros, orden por columnas y varios documentos a la vez: emitir los completos con confirmación o descartar." }, { src: "assets/madeca/v04/expediciones.webp", t: "Expediciones", d: "Búsqueda por referencia, matrícula, cliente o NIF, periodos de fechas, estados con su número y exportación a Excel." }, { src: "assets/madeca/v04/historial.webp", t: "Historial", d: "Estadísticas por día, semana, mes, trimestre, año o fechas a elegir, con la evolución del periodo." }, { src: "assets/madeca/v04/historial_desglose.webp", t: "Desglose del historial", d: "Por destinatario, cargador, vehículo, provincia, mercancía y más. Pulse una fila y todo el historial se filtra por ella." }, { src: "assets/madeca/v04/expedicion.webp", t: "Ficha de la expedición", d: "Modificaciones en ruta y actividad: quién emitió, modificó o entregó cada DeCA y cuándo." }, { src: "assets/madeca/v04/nueva.webp", t: "Nueva expedición", d: "Formulario por secciones del art. 6, con comprobación al escribir y sugerencias de clientes de DeCA anteriores." }, { src: "assets/madeca/deca.webp", t: "El DeCA en PDF", d: "Documento completo con los datos del art. 6 de la Orden FOM/2861/2012 y su código QR de verificación." }, { src: "assets/madeca/v04/fuentes.webp", t: "Fuentes de datos", d: "Conexión con SharePoint, Google Drive, Dropbox, NAS y los principales ERP." } ]; const GESTION = [ { icon: "check", h: "Revisión guiada", p: "Los datos obligatorios que faltan, enlazados a su campo; cada NIF, matrícula y fecha se comprueba mientras se escribe, con las mismas reglas que al emitir." }, { icon: "search", h: "Dónde se leyó cada dato", p: "En la revisión, el documento original recuadra el dato del campo en el que está. Se comprueba de un vistazo." }, { icon: "list", h: "Varios a la vez", p: "Seleccione varios albaranes de la bandeja y emita los completos —con su confirmación— o descarte los que no sirven." }, { icon: "grid", h: "Inicio y avisos", p: "Resumen del día y avisos de certificados por caducar, documentos sin revisar y fuentes con error, también por correo a los administradores." }, { icon: "file-text", h: "Historial y estadísticas", p: "Todo lo gestionado por periodo, con desglose por destinatario, vehículo, provincia o mercancía. Cada cifra filtra al pulsarla." }, { icon: "download", h: "Exportación a Excel", p: "Las expediciones y el historial, con sus filtros y totales, en un libro de Excel listo para trabajar." } ]; const INTEGRACIONES = [ ["ERP", "Microsoft Dynamics 365 Business Central, Odoo, SAP Business One* y Holded*."], ["Documentos en la nube", "SharePoint, OneDrive, Google Drive y Dropbox."], ["Red de la empresa", "NAS por SFTP o el conector local, que lee los documentos dentro de su red y solo envía los datos."], ["ERP sin API", "Carpeta compartida (a3ERP, Sigrid y otros): el ERP deja el PDF o los datos y MADeCa los recoge."], ["A medida", "API para que su programa envíe los albaranes directamente."] ]; const GARANTIAS = [ { icon: "check", h: "Revisión humana", p: "Su equipo confirma cada DeCA antes de emitirlo; la responsabilidad de los datos queda donde la pone la norma." }, { icon: "grid", h: "Cada empresa, sus datos", p: "Accesos separados por empresa y por rol: administración, operación y consulta." }, { icon: "lock", h: "Claves protegidas", p: "Las credenciales de su ERP y de su nube se guardan cifradas y no se vuelven a mostrar." }, { icon: "refresh", h: "Cambios en ruta", p: "Si cambia la matrícula o el destino, la modificación se añade al mismo documento: mismo QR, misma URL." }, { icon: "file-text", h: "Constancia de cada emisión", p: "Cada DeCA queda registrado con su fecha y hora de emisión, la prueba que exime al cargador si el documento no va a bordo." }, { icon: "cpu", h: "En la nube o en su servidor", p: "Servicio gestionado por Masoft o instalación propia junto a su ERP y su NAS." } ]; const PREGUNTAS = [ ["¿Tengo que cambiar de ERP?", "No. MADeCa lee de su ERP, de una carpeta o de sus documentos."], ["¿Y si no tengo ERP?", "Puede subir sus albaranes o rellenar el formulario del panel."], ["¿Vale escanear el albarán en papel?", "Como DeCA, no. Pero MADeCa lee el escaneo y genera un documento válido."], ["¿Necesito certificado digital?", "Solo si el DeCA tiene finalidad contractual. En ese caso MADeCa firma con el certificado de su empresa."], ["¿Quién está obligado?", "El cargador contractual (también agencias, transitarios y operadores logísticos) y el transportista efectivo."], ["¿Qué transportes quedan fuera?", "Las mudanzas, la paquetería de pocos bultos, el traslado de vehículos averiados y los transportes que no necesitan autorización."] ]; /* ---------- Subcabecera propia ---------- */ const MDSubnav = ({ active }) => (
); /* ---------- Formulario de contacto independiente ---------- */ const MadecaContact = () => { const [form, setForm] = useState({ name: "", email: "", company: "", phone: "", message: "", accept: false }); const [state, setState] = useState("idle"); const [showTerms, setShowTerms] = useState(false); const submit = async (e) => { e.preventDefault(); if (!form.name || !form.email || !form.message || !form.accept) return; setState("sending"); try { const res = await fetch("api/madeca_contact.php", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(form) }); const data = await res.json(); setState(data.ok ? "done" : "error"); } catch { setState("error"); } }; return (
Contacto MADeCa

Pruébelo con sus propios albaranes.

Canal exclusivo de MADeCa. Le preparamos una demostración con documentos reales de su empresa y una propuesta según su volumen de envíos.

Cuéntenos si es cargador, transportista u operador logístico, qué ERP usa y cuántos envíos hace al mes. Sin compromiso.

  • {MADECA_EMAIL}Consulta directa sobre MADeCa
  • Demostración con sus documentosLe enseñamos el DeCA generado a partir de sus albaranes
  • Propuesta a medidaSegún su volumen de envíos y la modalidad que prefiera
{state === "done" ? (

Solicitud enviada

Le responderemos a la mayor brevedad con la información de MADeCa.

) : (
setForm({ ...form, name: e.target.value })} required/>
setForm({ ...form, email: e.target.value })} required/>
setForm({ ...form, company: e.target.value })}/>
setForm({ ...form, phone: e.target.value })}/>