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