-- Migración 003: Añadir campos de precio para reservas Natur -- Se usa un snapshot JSON para congelar el cálculo acordado en el momento de guardar. -- El cálculo dinámico vive en packages/shared/src/utils/pricing.ts -- Estas columnas son nullable — solo se populan para origin = 'Naturcalabacera' ALTER TABLE public.reservations ADD COLUMN igic_rate NUMERIC(5,4) DEFAULT 0.07, ADD COLUMN pricing_snapshot JSONB; -- Estructura del JSONB pricing_snapshot: -- { -- "basePrice": 1800, -- Canon base * noches -- "extraPersonsFee": 120, -- Personas extra * tarifa * noches -- "subtotal": 1920, -- basePrice + extraPersonsFee -- "igicAmount": 134.4, -- subtotal * igicRate -- "total": 2054.4, -- subtotal + igicAmount -- "calculatedAt": "2026-04-10T12:00:00Z" -- } COMMENT ON COLUMN public.reservations.pricing_snapshot IS 'Snapshot congelado del cálculo de precio al guardar. Solo para origin=Naturcalabacera.'; COMMENT ON COLUMN public.reservations.igic_rate IS 'Tasa IGIC aplicada. Default 0.07 (7%). Configurable por reserva.';