-- ============================================================ -- Migration: 20260410_lab_domicilio_pagos_parciales -- Soporta múltiples métodos de pago por domicilio. -- ============================================================ CREATE TABLE IF NOT EXISTS `lab_domicilio_pagos` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `domicilio_id` INT(11) NOT NULL COMMENT 'FK lab_domicilios.id', `modo` ENUM('efectivo','transferencia','otro') NOT NULL DEFAULT 'efectivo' COMMENT 'Método de pago', `monto` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT 'Monto recibido por este método', `notas` VARCHAR(255) DEFAULT NULL COMMENT 'Referencia / observación del pago', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_domicilio` (`domicilio_id`), CONSTRAINT `fk_ldp_domicilio` FOREIGN KEY (`domicilio_id`) REFERENCES `lab_domicilios` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Pagos parciales por método de pago para cada domicilio'; -- Migrar registros existentes que ya tienen pago_modo + pago_monto registrados INSERT INTO `lab_domicilio_pagos` (`domicilio_id`, `modo`, `monto`, `notas`, `created_at`) SELECT id, pago_modo, pago_monto, pago_notas, COALESCE(pago_fecha, created_at) FROM `lab_domicilios` WHERE pago_estado = 'pagado' AND pago_modo IS NOT NULL AND pago_monto > 0 AND NOT EXISTS ( SELECT 1 FROM `lab_domicilio_pagos` ldp WHERE ldp.domicilio_id = `lab_domicilios`.id );