-- Patch v40 - Compatibilidad de mensajes receptor con recepción de egresos.
-- Agrega columnas operativas si la tabla existe, sin romper instalaciones antiguas.

SET @table_name := 'mensajes_receptor';
SET @sql := IF(
  EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = @table_name),
  CONCAT('ALTER TABLE `', @table_name, '` ',
    'ADD COLUMN IF NOT EXISTS `negocio_id_origen` bigint(20) UNSIGNED DEFAULT NULL AFTER `id`, ',
    'ADD COLUMN IF NOT EXISTS `ambiente` varchar(15) DEFAULT NULL AFTER `total_factura`, ',
    'ADD COLUMN IF NOT EXISTS `origen` varchar(20) DEFAULT NULL AFTER `ambiente`, ',
    'ADD COLUMN IF NOT EXISTS `validado_previo` tinyint(1) NOT NULL DEFAULT 0 AFTER `origen`, ',
    'ADD COLUMN IF NOT EXISTS `observacion_validacion` text DEFAULT NULL AFTER `validado_previo`, ',
    'ADD COLUMN IF NOT EXISTS `usuario_creador_id` int(11) DEFAULT NULL AFTER `observacion_validacion`, ',
    'ADD COLUMN IF NOT EXISTS `usuario_envio_id` int(11) DEFAULT NULL AFTER `usuario_creador_id`, ',
    'ADD COLUMN IF NOT EXISTS `webhook_url` varchar(500) DEFAULT NULL AFTER `usuario_envio_id`, ',
    'ADD COLUMN IF NOT EXISTS `webhook_token` varchar(96) DEFAULT NULL AFTER `webhook_url`, ',
    'ADD COLUMN IF NOT EXISTS `webhook_en` datetime DEFAULT NULL AFTER `webhook_token`, ',
    'ADD COLUMN IF NOT EXISTS `ultimo_webhook_payload_json` longtext DEFAULT NULL AFTER `webhook_en`, ',
    'ADD COLUMN IF NOT EXISTS `created_at` datetime DEFAULT current_timestamp(), ',
    'ADD COLUMN IF NOT EXISTS `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()'),
  'SELECT ''mensajes_receptor no existe, omitido'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @table_name := 'fe_mensajes_receptor';
SET @sql := IF(
  EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = @table_name),
  CONCAT('ALTER TABLE `', @table_name, '` ',
    'ADD COLUMN IF NOT EXISTS `negocio_id_origen` bigint(20) UNSIGNED DEFAULT NULL AFTER `id`, ',
    'ADD COLUMN IF NOT EXISTS `ambiente` varchar(15) DEFAULT NULL AFTER `total_factura`, ',
    'ADD COLUMN IF NOT EXISTS `origen` varchar(20) DEFAULT NULL AFTER `ambiente`, ',
    'ADD COLUMN IF NOT EXISTS `validado_previo` tinyint(1) NOT NULL DEFAULT 0 AFTER `origen`, ',
    'ADD COLUMN IF NOT EXISTS `observacion_validacion` text DEFAULT NULL AFTER `validado_previo`, ',
    'ADD COLUMN IF NOT EXISTS `usuario_creador_id` int(11) DEFAULT NULL AFTER `observacion_validacion`, ',
    'ADD COLUMN IF NOT EXISTS `usuario_envio_id` int(11) DEFAULT NULL AFTER `usuario_creador_id`, ',
    'ADD COLUMN IF NOT EXISTS `webhook_url` varchar(500) DEFAULT NULL AFTER `usuario_envio_id`, ',
    'ADD COLUMN IF NOT EXISTS `webhook_token` varchar(96) DEFAULT NULL AFTER `webhook_url`, ',
    'ADD COLUMN IF NOT EXISTS `webhook_en` datetime DEFAULT NULL AFTER `webhook_token`, ',
    'ADD COLUMN IF NOT EXISTS `ultimo_webhook_payload_json` longtext DEFAULT NULL AFTER `webhook_en`, ',
    'ADD COLUMN IF NOT EXISTS `created_at` datetime DEFAULT current_timestamp(), ',
    'ADD COLUMN IF NOT EXISTS `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()'),
  'SELECT ''fe_mensajes_receptor no existe, omitido'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
