SET @sql_add_empresa_cuenta_detracciones := (
    SELECT IF(
        EXISTS (
            SELECT 1
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_SCHEMA = DATABASE()
              AND TABLE_NAME = 'empresas'
              AND COLUMN_NAME = 'cuenta_detracciones'
        ),
        'SELECT 1',
        'ALTER TABLE empresas ADD COLUMN cuenta_detracciones VARCHAR(60) NULL AFTER nombre_comercial'
    )
);
PREPARE stmt_add_empresa_cuenta_detracciones FROM @sql_add_empresa_cuenta_detracciones;
EXECUTE stmt_add_empresa_cuenta_detracciones;
DEALLOCATE PREPARE stmt_add_empresa_cuenta_detracciones;

SET @sql_add_empresa_cuenta_bancaria := (
    SELECT IF(
        EXISTS (
            SELECT 1
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_SCHEMA = DATABASE()
              AND TABLE_NAME = 'empresas'
              AND COLUMN_NAME = 'cuenta_bancaria'
        ),
        'SELECT 1',
        'ALTER TABLE empresas ADD COLUMN cuenta_bancaria VARCHAR(60) NULL AFTER cuenta_detracciones'
    )
);
PREPARE stmt_add_empresa_cuenta_bancaria FROM @sql_add_empresa_cuenta_bancaria;
EXECUTE stmt_add_empresa_cuenta_bancaria;
DEALLOCATE PREPARE stmt_add_empresa_cuenta_bancaria;

CREATE TABLE IF NOT EXISTS empresa_cuentas_bancarias (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    empresa_id BIGINT UNSIGNED NOT NULL,
    banco VARCHAR(120) NOT NULL,
    moneda CHAR(3) NOT NULL DEFAULT 'PEN',
    numero_cuenta VARCHAR(60) NOT NULL,
    cci VARCHAR(60) NULL,
    alias VARCHAR(120) NULL,
    es_detracciones TINYINT(1) 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_empresa_cuenta_banco (empresa_id, numero_cuenta),
    KEY idx_empresa_cuenta_empresa (empresa_id),
    KEY idx_empresa_cuenta_detracciones (empresa_id, es_detracciones),
    CONSTRAINT fk_empresa_cuenta_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
