Files
whatsapp/migrations/20260410_lab_domicilio_pagos_parciales.sql
2026-04-10 23:04:28 -05:00

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
);