24 lines
1.1 KiB
SQL
24 lines
1.1 KiB
SQL
-- 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.';
|