From 793947ffff6727a16cbc2f701cc9a85e465a21a2 Mon Sep 17 00:00:00 2001 From: Erik Groener Date: Mon, 7 Apr 2025 12:43:07 +0000 Subject: [PATCH] BAMG#85636 Uitbreiding BAMG#83299 met diverse verlengingstermijnen Na laatste termijn in verlengschema verlengtermijn in contract leeg maken. svn path=/Database/trunk/; revision=68673 --- CNT/CNT_PAC.SRC | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/CNT/CNT_PAC.SRC b/CNT/CNT_PAC.SRC index f210186c..b34bf167 100644 --- a/CNT/CNT_PAC.SRC +++ b/CNT/CNT_PAC.SRC @@ -269,6 +269,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS , c.cnt_contract_nummer_intern , c.cnt_contract_omschrijving , c.cnt_contract_looptijd_tot + , c.cnt_contract_verleng_termijn , o.cnt_termijn_omschrijving opzegtermijn , cnt.cnt_getTermijndatum (c.cnt_contract_looptijd_tot, c.cnt_contract_opzegtermijn, -1) dtopzeggen , v.cnt_termijn_omschrijving verlengtermijn @@ -293,9 +294,11 @@ CREATE OR REPLACE PACKAGE BODY cnt AS AND cn.cnt_contract_verwijder IS NULL ); - tracking VARCHAR2(4000); - verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE; - next_termijn cnt_termijn.cnt_termijn_key%TYPE; + tracking VARCHAR2(4000); + 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; + infinite_prolongate NUMBER(1) := 0; BEGIN FOR cnt_verloopt IN c_verleng LOOP @@ -310,21 +313,39 @@ CREATE OR REPLACE PACKAGE BODY cnt AS fac.trackaction ('CNTUPD', cnt_verloopt.cnt_contract_key, NULL, NULL, tracking); -- Heeft dit automatisch verlengbaar contract een verlengschema? BEGIN - SELECT MIN(cnt_verlengschema_key) - INTO verlengschema_key - FROM cnt_verlengschema - WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key; + SELECT this_schema_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 + WHERE cnt_contract_key = cnt_verloopt.cnt_contract_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 = (SELECT cnt_verlengschema_verlengtermijn - FROM cnt_verlengschema - WHERE cnt_verlengschema_key = verlengschema_key - ) + SET cnt_contract_verleng_termijn = next_termijn WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key; + -- ...en deze verlengtermijn uit het verlengschema verwijderen. DELETE FROM cnt_verlengschema - WHERE cnt_verlengschema_key = verlengschema_key; + WHERE cnt_verlengschema_key = this_verlengschema_key; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; -- Laat laatste verlengtermijn staan als er geen volgende in het schema gevonden kan worden.