CREATE TABLE IF NOT EXISTS catalogo_tipo_documentos (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    codigo_sunat VARCHAR(5) NOT NULL,
    descripcion VARCHAR(120) NOT NULL,
    comentario VARCHAR(255) NULL,
    orden INT UNSIGNED NOT NULL DEFAULT 0,
    estado TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    UNIQUE KEY uq_catalogo_tipo_documento_codigo (codigo_sunat)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO catalogo_tipo_documentos (id, codigo_sunat, descripcion, comentario, orden, estado, created_at) VALUES
(1, '6', 'RUC', 'Registro Unico de Contribuyentes', 1, 1, NOW()),
(2, '1', 'DNI', 'Documento Nacional de Identidad', 2, 1, NOW()),
(3, '4', 'CARNET EXTRANJERIA', 'Carnet de Extranjeria', 3, 1, NOW()),
(4, '7', 'PASAPORTE', 'Pasaporte', 4, 1, NOW()),
(5, '0', 'SIN DOCUMENTO', 'Consumidor final u otros', 5, 1, NOW()),
(6, 'A', 'CEDULA DIPLOMATICA', 'Cedula Diplomatica de Identidad', 6, 1, NOW());

ALTER TABLE terceros
    ADD COLUMN tipo_documento_id BIGINT UNSIGNED NULL AFTER tipo,
    MODIFY numero_documento VARCHAR(20) NULL;

UPDATE terceros t
LEFT JOIN catalogo_tipo_documentos ctd ON ctd.codigo_sunat = t.tipo_documento
SET t.tipo_documento_id = ctd.id
WHERE t.deleted_at IS NULL;

UPDATE terceros
SET tipo_documento_id = 1
WHERE tipo_documento_id IS NULL
  AND deleted_at IS NULL
  AND tipo_documento IS NOT NULL
  AND tipo_documento <> '';

ALTER TABLE terceros
    ADD KEY idx_terceros_tipo_documento_id (tipo_documento_id),
    ADD CONSTRAINT fk_terceros_tipo_documento FOREIGN KEY (tipo_documento_id) REFERENCES catalogo_tipo_documentos(id);
