-- 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.';
