- Refactor `preparePayment` function to handle multiple order types including Rinnovo. - Introduce new `RinnovoSolver` function to calculate renewal packs based on duration. - Add `createRinnovo` service to manage the creation of renewal orders. - Update `whIntentSucceededHandler` to handle payment confirmations for Rinnovo and other order types. - Introduce default conditions for packs in `prezziario.service.ts`. - Add new utility functions for managing renewal durations and permanenza. - Update database interactions to ensure proper handling of orders and renewals. - Enhance error handling and logging throughout the payment and renewal processes.
261 lines
No EOL
5.6 KiB
SQL
261 lines
No EOL
5.6 KiB
SQL
ALTER TABLE IF EXISTS public.ordini
|
|
ALTER COLUMN servizio_id
|
|
DROP NOT NULL;
|
|
|
|
ALTER TABLE IF EXISTS public.ordini
|
|
ADD COLUMN IF NOT EXISTS rinnovo_id UUID;
|
|
|
|
CREATE TABLE IF NOT EXISTS public.rinnovi (
|
|
id UUID NOT NULL DEFAULT gen_random_uuid (),
|
|
"userId" UUID NOT NULL,
|
|
codice TEXT NOT NULL,
|
|
decorrenza TIMESTAMP WITHOUT TIME ZONE NOT NULL,
|
|
scadenza timestamp without time zone NOT NULL,
|
|
gestionale_id TEXT
|
|
);
|
|
|
|
DO $$ BEGIN IF NOT EXISTS (
|
|
SELECT 1 FROM pg_constraint
|
|
WHERE conname = 'rinnovo_user_fkey'
|
|
) THEN
|
|
ALTER TABLE public.rinnovi
|
|
ADD CONSTRAINT rinnovo_user_fkey
|
|
FOREIGN KEY ("userId") REFERENCES public.users (id)
|
|
ON UPDATE CASCADE ON DELETE CASCADE;
|
|
END IF;
|
|
END $$;
|
|
-- Primary Key
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_constraint
|
|
WHERE conname = 'rinnovi_pkey'
|
|
AND conrelid = 'public.rinnovi'::regclass
|
|
) THEN
|
|
ALTER TABLE public.rinnovi
|
|
ADD CONSTRAINT rinnovi_pkey PRIMARY KEY (id);
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'ordine_rinnovo_fkey') THEN
|
|
ALTER TABLE public.ordini
|
|
ADD CONSTRAINT ordine_rinnovo_fkey FOREIGN KEY (rinnovo_id) REFERENCES public.rinnovi (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE NOT VALID;
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'only_one_service') THEN
|
|
ALTER TABLE public.ordini
|
|
ADD CONSTRAINT only_one_service CHECK (
|
|
(
|
|
servizio_id IS NOT NULL
|
|
AND rinnovo_id IS NULL
|
|
)
|
|
OR (
|
|
servizio_id IS NULL
|
|
AND rinnovo_id IS NOT NULL
|
|
)
|
|
) NOT VALID;
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
ADD COLUMN IF NOT EXISTS order_type "OrderTypeEnum";
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
ADD COLUMN IF NOT EXISTS service_type "TipologiaPosizioneEnum";
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_type = 'Transitorio'
|
|
WHERE
|
|
idprezziario = 'ACCONTO_BD'
|
|
OR idprezziario LIKE 'SALDOBD%'
|
|
OR idprezziario = 'CONS_TRANS'
|
|
OR idprezziario = 'CONS_30GG';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_type = 'Stabile'
|
|
WHERE
|
|
idprezziario = 'ACCONTO_CA'
|
|
OR idprezziario LIKE 'SALDOCA%'
|
|
OR idprezziario = 'CONS_COMM'
|
|
OR idprezziario = 'CONS_4+4'
|
|
OR idprezziario = 'CONS_3+2';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
order_type = 'Acconto'
|
|
WHERE
|
|
idprezziario LIKE 'ACCONTO%';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
order_type = 'Saldo'
|
|
WHERE
|
|
idprezziario LIKE 'SALDO%';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
order_type = 'Consulenza'
|
|
WHERE
|
|
idprezziario LIKE 'CONS%';
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
DROP COLUMN IF EXISTS "isAcconto";
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
DROP COLUMN IF EXISTS "isSaldo";
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
DROP COLUMN IF EXISTS "isConsulenza";
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
DROP COLUMN IF EXISTS "isStabile";
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
DROP COLUMN IF EXISTS "isTransitorio";
|
|
|
|
ALTER TABLE IF EXISTS public.prezziario
|
|
ADD COLUMN IF NOT EXISTS service_variant integer;
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 4
|
|
WHERE
|
|
idprezziario = 'SALDOBD_12MESI';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 0
|
|
WHERE
|
|
idprezziario = 'SALDOBD_1MESE';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 1
|
|
WHERE
|
|
idprezziario = 'SALDOBD_3MESI';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 2
|
|
WHERE
|
|
idprezziario = 'SALDOBD_6MESI';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 3
|
|
WHERE
|
|
idprezziario = 'SALDOBD_9MESI';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 0
|
|
WHERE
|
|
idprezziario = 'SALDOCA500';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 1
|
|
WHERE
|
|
idprezziario = 'SALDOCA500+';
|
|
|
|
UPDATE public.prezziario
|
|
SET
|
|
service_variant = 2
|
|
WHERE
|
|
idprezziario = 'SALDOCA700+';
|
|
|
|
INSERT INTO
|
|
public.prezziario (
|
|
idprezziario,
|
|
prezzo_cent,
|
|
testo_condizioni,
|
|
"isActive",
|
|
nome_it,
|
|
nome_en,
|
|
desc_it,
|
|
desc_en,
|
|
sconto,
|
|
order_type,
|
|
service_type,
|
|
service_variant
|
|
)
|
|
VALUES (
|
|
'CERCO_BD365',
|
|
46000,
|
|
'CONDIZIONI_CERCHI',
|
|
TRUE,
|
|
'Rinnovo permanenza 12 mesi',
|
|
'Renewal 12 months',
|
|
'Rinnovo permanenza 12 mesi',
|
|
'Renewal 12 months',
|
|
0,
|
|
'Rinnovo',
|
|
'Transitorio',
|
|
4
|
|
),
|
|
(
|
|
'CERCO_BD30',
|
|
8000,
|
|
'CONDIZIONI_CERCHI',
|
|
TRUE,
|
|
'Rinnovo permanenza 1 mese',
|
|
'Renewal 1 month',
|
|
'Rinnovo permanenza 1 mese',
|
|
'Renewal 1 month',
|
|
0,
|
|
'Rinnovo',
|
|
'Transitorio',
|
|
0
|
|
),
|
|
(
|
|
'CERCO_BD90',
|
|
25000,
|
|
'CONDIZIONI_CERCHI',
|
|
TRUE,
|
|
'Rinnovo permanenza 3 mesi',
|
|
'Renewal 3 months',
|
|
'Rinnovo permanenza 3 mesi',
|
|
'Renewal 3 months',
|
|
0,
|
|
'Rinnovo',
|
|
'Transitorio',
|
|
1
|
|
),
|
|
(
|
|
'CERCO_BD180',
|
|
36000,
|
|
'CONDIZIONI_CERCHI',
|
|
TRUE,
|
|
'Rinnovo permanenza 6 mesi',
|
|
'Renewal 6 months',
|
|
'Rinnovo permanenza 6 mesi',
|
|
'Renewal 6 months',
|
|
0,
|
|
'Rinnovo',
|
|
'Transitorio',
|
|
2
|
|
),
|
|
(
|
|
'CERCO_BD270',
|
|
41000,
|
|
'CONDIZIONI_CERCHI',
|
|
TRUE,
|
|
'Rinnovo permanenza 9 mesi',
|
|
'Renewal 9 months',
|
|
'Rinnovo permanenza 9 mesi',
|
|
'Renewal 9 months',
|
|
0,
|
|
'Rinnovo',
|
|
'Transitorio',
|
|
3
|
|
)
|
|
ON CONFLICT (idprezziario) DO NOTHING; |