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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user