35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
-- ============================================================
|
|
-- 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
|
|
);
|