BAMG#85636 Uitbreiding BAMG#83299 met diverse verlengingstermijnen

Na laatste termijn in verlengschema verlengtermijn in contract leeg maken.

svn path=/Database/trunk/; revision=68673
This commit is contained in:
Erik Groener
2025-04-07 12:43:07 +00:00
parent 592816e581
commit 793947ffff

View File

@@ -269,6 +269,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
, c.cnt_contract_nummer_intern , c.cnt_contract_nummer_intern
, c.cnt_contract_omschrijving , c.cnt_contract_omschrijving
, c.cnt_contract_looptijd_tot , c.cnt_contract_looptijd_tot
, c.cnt_contract_verleng_termijn
, o.cnt_termijn_omschrijving opzegtermijn , o.cnt_termijn_omschrijving opzegtermijn
, cnt.cnt_getTermijndatum (c.cnt_contract_looptijd_tot, c.cnt_contract_opzegtermijn, -1) dtopzeggen , cnt.cnt_getTermijndatum (c.cnt_contract_looptijd_tot, c.cnt_contract_opzegtermijn, -1) dtopzeggen
, v.cnt_termijn_omschrijving verlengtermijn , v.cnt_termijn_omschrijving verlengtermijn
@@ -294,8 +295,10 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
); );
tracking VARCHAR2(4000); tracking VARCHAR2(4000);
verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE; this_verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE;
next_verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE;
next_termijn cnt_termijn.cnt_termijn_key%TYPE; next_termijn cnt_termijn.cnt_termijn_key%TYPE;
infinite_prolongate NUMBER(1) := 0;
BEGIN BEGIN
FOR cnt_verloopt IN c_verleng FOR cnt_verloopt IN c_verleng
LOOP LOOP
@@ -310,21 +313,39 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
fac.trackaction ('CNTUPD', cnt_verloopt.cnt_contract_key, NULL, NULL, tracking); fac.trackaction ('CNTUPD', cnt_verloopt.cnt_contract_key, NULL, NULL, tracking);
-- Heeft dit automatisch verlengbaar contract een verlengschema? -- Heeft dit automatisch verlengbaar contract een verlengschema?
BEGIN BEGIN
SELECT MIN(cnt_verlengschema_key) SELECT this_schema_key
INTO verlengschema_key , next_schema_key
INTO this_verlengschema_key
, next_verlengschema_key
FROM ( SELECT cnt_verlengschema_key AS this_schema_key
, LEAD(cnt_verlengschema_key) OVER(ORDER BY cnt_verlengschema_volgnr) AS next_schema_key
FROM cnt_verlengschema FROM cnt_verlengschema
WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key; WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key
-- Dan eerstvolgende verlengtermijn uit verlengschema naar het veld verlengtermijn in contract kopieren...
UPDATE cnt_contract
SET cnt_contract_verleng_termijn = (SELECT cnt_verlengschema_verlengtermijn
FROM cnt_verlengschema
WHERE cnt_verlengschema_key = verlengschema_key
) )
WHERE rownum = 1;
-- Dan eerstvolgende verlengtermijn uit verlengschema naar het veld verlengtermijn in contract kopieren...
IF next_verlengschema_key IS NOT NULL
THEN
SELECT cnt_verlengschema_verlengtermijn
INTO next_termijn
FROM cnt_verlengschema
WHERE cnt_verlengschema_key = next_verlengschema_key;
ELSE
IF infinite_prolongate = 1
THEN
next_termijn := cnt_verloopt.cnt_contract_verleng_termijn;
ELSE
next_termijn := NULL;
END IF;
END IF;
UPDATE cnt_contract
SET cnt_contract_verleng_termijn = next_termijn
WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key; WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key;
-- ...en deze verlengtermijn uit het verlengschema verwijderen. -- ...en deze verlengtermijn uit het verlengschema verwijderen.
DELETE DELETE
FROM cnt_verlengschema FROM cnt_verlengschema
WHERE cnt_verlengschema_key = verlengschema_key; WHERE cnt_verlengschema_key = this_verlengschema_key;
EXCEPTION EXCEPTION
WHEN NO_DATA_FOUND THEN NULL; WHEN NO_DATA_FOUND THEN NULL;
-- Laat laatste verlengtermijn staan als er geen volgende in het schema gevonden kan worden. -- Laat laatste verlengtermijn staan als er geen volgende in het schema gevonden kan worden.