CREATE TABLE IF NOT EXISTS facturacion_integracion_endpoints (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    codigo VARCHAR(50) NOT NULL,
    descripcion VARCHAR(180) NOT NULL,
    tipo VARCHAR(40) NOT NULL,
    proveedor VARCHAR(20) NOT NULL DEFAULT 'CUSTOM',
    ambiente VARCHAR(20) NOT NULL DEFAULT 'PRODUCCION',
    metodo VARCHAR(10) NOT NULL DEFAULT 'POST',
    url VARCHAR(600) NULL,
    headers_json JSON NULL,
    estado TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    UNIQUE KEY uq_facturacion_integracion_codigo (codigo),
    KEY idx_facturacion_integracion_tipo (tipo),
    KEY idx_facturacion_integracion_proveedor (proveedor),
    KEY idx_facturacion_integracion_ambiente (ambiente)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO facturacion_integracion_endpoints
    (codigo, descripcion, tipo, proveedor, ambiente, metodo, url, estado, created_at)
VALUES
    ('SUNAT_FACTURA', 'Envio de comprobantes a SUNAT', 'EMISION', 'SUNAT', 'PRODUCCION', 'POST', NULL, 1, NOW()),
    ('SUNAT_CONSULTA', 'Consulta de CDR / estado', 'CONSULTA', 'SUNAT', 'PRODUCCION', 'POST', NULL, 1, NOW()),
    ('SUNAT_GUIA', 'Envio de guia de remision', 'GUIA', 'SUNAT', 'PRODUCCION', 'POST', NULL, 1, NOW()),
    ('SUNAT_SUMARIO_BOLETA', 'Resumen diario de boletas', 'RESUMEN_BOLETAS', 'SUNAT', 'PRODUCCION', 'POST', NULL, 1, NOW()),
    ('SUNAT_BAJA', 'Comunicacion de baja', 'RESUMEN_BAJA', 'SUNAT', 'PRODUCCION', 'POST', NULL, 1, NOW()),
    ('OSE_FACTURA', 'Envio de comprobantes a OSE', 'EMISION', 'OSE', 'PRODUCCION', 'POST', NULL, 1, NOW()),
    ('CUSTOM_FACTURA', 'Endpoint personalizado de emision', 'EMISION', 'CUSTOM', 'PRODUCCION', 'POST', NULL, 1, NOW());

CREATE TABLE IF NOT EXISTS empresa_certificados_digitales (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    empresa_id BIGINT UNSIGNED NOT NULL,
    alias VARCHAR(120) NOT NULL,
    archivo_pfx VARCHAR(600) NOT NULL,
    password_pfx VARCHAR(255) NOT NULL,
    fecha_vencimiento DATE NULL,
    es_activo TINYINT(1) NOT NULL DEFAULT 1,
    estado TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    KEY idx_cert_empresa (empresa_id),
    KEY idx_cert_activo (empresa_id, es_activo, estado),
    CONSTRAINT fk_cert_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
