-- Eliminación previa para evitar errores en la creación
DROP TABLE IF EXISTS `mod_customers_options`;
DROP TABLE IF EXISTS `mod_customers_persons_data`;
DROP TABLE IF EXISTS `mod_customers_persons`;
DROP TABLE IF EXISTS `mod_customers_enterprises_data`;
DROP TABLE IF EXISTS `mod_customers_enterprises`;

--
-- Tabla de empresas de clientes
--
CREATE TABLE `mod_customers_enterprises` (
  `mod_cen_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID único de la empresa cliente',
  `mod_cen_cpe_id` INT DEFAULT NULL COMMENT 'ID de persona asociada (cliente)',
  `mod_cen_ced_id` INT DEFAULT NULL COMMENT 'ID de datos adicionales',
  `mod_cen_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Nombre de la empresa',
  `mod_cen_username` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Usuario asociado',
  `mod_cen_code` VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Código de la empresa',
  `mod_cen_description` VARCHAR(455) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Descripción',
  `mod_cen_img` INT DEFAULT NULL COMMENT 'ID de imagen asociada',
  `mod_cen_register_date` DATETIME DEFAULT NULL COMMENT 'Fecha de registro',
  `mod_cen_user_id` INT DEFAULT NULL COMMENT 'Usuario que registró',
  `mod_cen_ent_id` INT DEFAULT NULL COMMENT 'Entidad asociada',
  `mod_cen_state` INT NOT NULL DEFAULT '0' COMMENT 'Estado lógico (0: inactivo, 1: activo)',
  PRIMARY KEY (`mod_cen_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Empresas clientes';

--
-- Datos adicionales de empresas de clientes
--
CREATE TABLE `mod_customers_enterprises_data` (
  `mod_cen_data_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID único de datos de empresa',
  `mod_cen_data_cen_id` INT NOT NULL COMMENT 'ID de empresa cliente',
  `mod_cen_data_business_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Razón social',
  `mod_cen_data_nit` VARCHAR(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'NIT',
  `mod_cen_data_priority` INT DEFAULT NULL COMMENT 'Prioridad',
  `mod_cen_data_type_contract` INT DEFAULT NULL COMMENT 'Tipo de contrato',
  `mod_cen_data_json` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Datos adicionales en JSON',
  PRIMARY KEY (`mod_cen_data_id`, `mod_cen_data_cen_id`),
  KEY `idx_cen_data_cen_id` (`mod_cen_data_cen_id`),
  CONSTRAINT `fk_cen_data_cen_id` FOREIGN KEY (`mod_cen_data_cen_id`) REFERENCES `mod_customers_enterprises` (`mod_cen_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Datos adicionales de empresas clientes';

--
-- Personas clientes
--
CREATE TABLE `mod_customers_persons` (
  `mod_cpe_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID único de persona cliente',
  `mod_cpe_acu_id` INT DEFAULT NULL COMMENT 'ID de persona que registra',
  `mod_cpe_plan_id` INT DEFAULT NULL COMMENT 'ID de plan asociado',
  `mod_cpe_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Nombre',
  `mod_cpe_lastname` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Apellido',
  `mod_cpe_email` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Correo',
  `mod_cpe_code` VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Código',
  `mod_cpe_phone` VARCHAR(20) DEFAULT NULL COMMENT 'Teléfono',
  `mod_cpe_ci` VARCHAR(20) DEFAULT NULL COMMENT 'CI',
  `mod_cpe_ci_complemento` VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Complemento CI',
  `mod_cpe_adder` VARCHAR(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Usuario que agregó',
  `mod_cpe_register_date` DATETIME NOT NULL COMMENT 'Fecha de registro',
  `mod_cpe_user_id` INT DEFAULT NULL COMMENT 'Usuario que registró',
  `mod_cpe_ent_id` INT DEFAULT NULL COMMENT 'Entidad asociada',
  `mod_cpe_state` INT NOT NULL DEFAULT '0' COMMENT 'Estado lógico (0: inactivo, 1: activo)',
  PRIMARY KEY (`mod_cpe_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Personas clientes';

--
-- Datos adicionales de personas clientes
--
CREATE TABLE `mod_customers_persons_data` (
  `mod_cpdt_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID único de datos persona',
  `mod_cpdt_cep_id` INT NOT NULL COMMENT 'ID de persona cliente',
  `mod_cpdt_cep_nit` BIGINT NOT NULL COMMENT 'NIT de persona',
  `mod_cpdt_cep_business_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Razón social',
  `mod_cpdt_cep_type_contribuyente` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Tipo contribuyente',
  `mod_cpdt_cep_type_oficio` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Tipo oficio',
  `mod_cpdt_cep_priority` INT DEFAULT NULL COMMENT 'Prioridad',
  `mod_cpdt_cep_type_contract` INT DEFAULT NULL COMMENT 'Tipo de contrato',
  `mod_cpdt_cep_json` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Datos adicionales en JSON',
  `mod_cpdt_cep_user` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Usuario',
  `mod_cpdt_cep_pw` VARCHAR(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Contraseña',
  PRIMARY KEY (`mod_cpdt_id`, `mod_cpdt_cep_id`, `mod_cpdt_cep_nit`),
  KEY `idx_cpdt_cep_id` (`mod_cpdt_cep_id`),
  CONSTRAINT `fk_cpdt_cep_id` FOREIGN KEY (`mod_cpdt_cep_id`) REFERENCES `mod_customers_persons` (`mod_cpe_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Datos adicionales de personas clientes';

--
-- Opciones de clientes
--
CREATE TABLE `mod_customers_options` (
  `mod_cop_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID único de opción',
  `mod_cop_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'Nombre de la opción',
  `mod_cop_value` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 'Valor de la opción',
  `mod_cop_autoload` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'yes' COMMENT 'Autoload',
  `mod_cop_date_created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha de creación',
  `mod_cop_date_updated` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Última actualización',
  PRIMARY KEY (`mod_cop_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Opciones de clientes';

