BAMG#85636 Uitbreiding BAMG#83299 met diverse verlengingstermijnen
Wijziging van tabel cnt_verlengschema: Geen einddatum meer opslaan maar wel een volgnummer en primary key svn path=/Database/trunk/; revision=68658
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
CREATE OR REPLACE PACKAGE cnt AS
|
CREATE OR REPLACE PACKAGE cnt AS
|
||||||
PROCEDURE setcontractstatus (pcontractkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER);
|
PROCEDURE setcontractstatus (pcontractkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER);
|
||||||
|
FUNCTION getVerlengschemaEinddatum(startdatum IN DATE, cnt_key IN NUMBER, volgnr IN NUMBER) RETURN DATE;
|
||||||
FUNCTION cnt_getTermijndatum (pdate IN DATE, ptermijn_key IN NUMBER, prichting IN NUMBER) RETURN DATE;
|
FUNCTION cnt_getTermijndatum (pdate IN DATE, ptermijn_key IN NUMBER, prichting IN NUMBER) RETURN DATE;
|
||||||
FUNCTION termijnjaarfactor (ptermijn_key IN NUMBER) RETURN NUMBER;
|
FUNCTION termijnjaarfactor (ptermijn_key IN NUMBER) RETURN NUMBER;
|
||||||
FUNCTION cnt_getOpzegdatum (pcnt_contract_key IN NUMBER) RETURN DATE;
|
FUNCTION cnt_getOpzegdatum (pcnt_contract_key IN NUMBER) RETURN DATE;
|
||||||
@@ -100,6 +101,27 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
|||||||
END IF;
|
END IF;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
-- Bepaal de einddatum na x iteraties van het verlengschema vanaf een startdatum.
|
||||||
|
FUNCTION getVerlengschemaEinddatum(startdatum IN DATE, cnt_key IN NUMBER, volgnr IN NUMBER) RETURN DATE
|
||||||
|
IS
|
||||||
|
CURSOR c_verleng
|
||||||
|
IS
|
||||||
|
SELECT cnt_verlengschema_volgnr
|
||||||
|
, cnt_verlengschema_verlengtermijn
|
||||||
|
FROM cnt_verlengschema
|
||||||
|
WHERE cnt_verlengschema_volgnr <= volgnr
|
||||||
|
AND cnt_contract_key = cnt_key;
|
||||||
|
|
||||||
|
einddatum DATE := startdatum;
|
||||||
|
BEGIN
|
||||||
|
FOR c IN c_verleng
|
||||||
|
LOOP
|
||||||
|
einddatum := cnt.cnt_getTermijndatum(einddatum, c.cnt_verlengschema_verlengtermijn, 1);
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
RETURN einddatum;
|
||||||
|
END;
|
||||||
|
|
||||||
-- Deze functie bepaalt de datum door het termijn (ptermijn_key) van de datum (pdate) in mindering te brengen.
|
-- Deze functie bepaalt de datum door het termijn (ptermijn_key) van de datum (pdate) in mindering te brengen.
|
||||||
-- Indien de 29, 30 of 31 datum niet in de betreffende maand voorkomt wordt de eerste van de volgende maand genomen.
|
-- Indien de 29, 30 of 31 datum niet in de betreffende maand voorkomt wordt de eerste van de volgende maand genomen.
|
||||||
-- prichting geeft aan of ten opzichte van pdate achteruit (-1) of vooruit (1, of anders) moet worden gerekend.
|
-- prichting geeft aan of ten opzichte van pdate achteruit (-1) of vooruit (1, of anders) moet worden gerekend.
|
||||||
@@ -271,9 +293,9 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
|||||||
AND cn.cnt_contract_verwijder IS NULL
|
AND cn.cnt_contract_verwijder IS NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
tracking VARCHAR2(4000);
|
tracking VARCHAR2(4000);
|
||||||
next_termijn cnt_termijn.cnt_termijn_key%TYPE;
|
verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE;
|
||||||
next_einddatum cnt_contract.cnt_contract_looptijd_tot%TYPE;
|
next_termijn cnt_termijn.cnt_termijn_key%TYPE;
|
||||||
BEGIN
|
BEGIN
|
||||||
FOR cnt_verloopt IN c_verleng
|
FOR cnt_verloopt IN c_verleng
|
||||||
LOOP
|
LOOP
|
||||||
@@ -287,24 +309,22 @@ 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?
|
||||||
-- Dan volgende verlengtermijn uit verlengschema naar het veld verlengtermijn verplaatsen.
|
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT a.cnt_verlengschema_verlengtermijn
|
SELECT MIN(cnt_verlengschema_key)
|
||||||
, a.cnt_verlengschema_einddatum
|
INTO verlengschema_key
|
||||||
INTO next_termijn
|
FROM cnt_verlengschema
|
||||||
, next_einddatum
|
|
||||||
FROM cnt_verlengschema a
|
|
||||||
WHERE a.cnt_verlengschema_einddatum =
|
|
||||||
(SELECT MIN(b.cnt_verlengschema_einddatum)
|
|
||||||
FROM cnt_verlengschema b
|
|
||||||
WHERE b.cnt_contract_key = cnt_verloopt.cnt_contract_key
|
|
||||||
AND b.cnt_verlengschema_einddatum > cnt_verloopt.dtnieuw
|
|
||||||
)
|
|
||||||
AND a.cnt_contract_key = cnt_verloopt.cnt_contract_key;
|
|
||||||
|
|
||||||
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;
|
||||||
|
-- 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 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;
|
||||||
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.
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ CREATE SEQUENCE cnt_s_cnt_kenmerkcontract_key MINVALUE 1;
|
|||||||
|
|
||||||
CREATE SEQUENCE cnt_s_cnt_contract_note_key MINVALUE 1;
|
CREATE SEQUENCE cnt_s_cnt_contract_note_key MINVALUE 1;
|
||||||
CREATE SEQUENCE cnt_s_cnt_factuurschema_key MINVALUE 1;
|
CREATE SEQUENCE cnt_s_cnt_factuurschema_key MINVALUE 1;
|
||||||
|
CREATE SEQUENCE cnt_s_cnt_verlengschema_key MINVALUE 1;
|
||||||
|
|
||||||
REGISTERONCE('$Id$')
|
REGISTERONCE('$Id$')
|
||||||
|
|
||||||
|
|||||||
@@ -456,11 +456,14 @@ CREATE_TABLE(cnt_factuurschema , 0)
|
|||||||
|
|
||||||
CREATE_TABLE(cnt_verlengschema, 0)
|
CREATE_TABLE(cnt_verlengschema, 0)
|
||||||
(
|
(
|
||||||
|
cnt_verlengschema_key
|
||||||
|
NUMBER(10)
|
||||||
|
PRIMARY KEY,
|
||||||
cnt_contract_key
|
cnt_contract_key
|
||||||
NUMBER(10)
|
NUMBER(10)
|
||||||
CONSTRAINT cnt_r_cnt_contract_key2 REFERENCES cnt_contract(cnt_contract_key),
|
CONSTRAINT cnt_r_cnt_contract_key2 REFERENCES cnt_contract(cnt_contract_key),
|
||||||
cnt_verlengschema_einddatum
|
cnt_verlengschema_volgnr
|
||||||
DATE,
|
NUMBER(2),
|
||||||
cnt_verlengschema_verlengtermijn
|
cnt_verlengschema_verlengtermijn
|
||||||
NUMBER(10)
|
NUMBER(10)
|
||||||
CONSTRAINT cnt_r_cnt_termijn_key6 REFERENCES cnt_termijn(cnt_termijn_key)
|
CONSTRAINT cnt_r_cnt_termijn_key6 REFERENCES cnt_termijn(cnt_termijn_key)
|
||||||
|
|||||||
@@ -357,6 +357,14 @@ BEGIN
|
|||||||
END;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
|
CREATE OR REPLACE TRIGGER cnt_t_cnt_verlengschema_B_I
|
||||||
|
BEFORE INSERT ON cnt_verlengschema
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE_PRIMARY_KEY(cnt_verlengschema_key,cnt_s_cnt_verlengschema_key);
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
REGISTERRUN('$Id$')
|
REGISTERRUN('$Id$')
|
||||||
|
|
||||||
#endif // CNT
|
#endif // CNT
|
||||||
|
|||||||
@@ -31,18 +31,22 @@ ALTER TABLE fac_imp_cnt
|
|||||||
, ruimtecode VARCHAR2 (20)
|
, ruimtecode VARCHAR2 (20)
|
||||||
);
|
);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
|
/////////////////////////////////////////////////////////////////////////////////////////// BAMG#85636
|
||||||
CREATE TABLE cnt_verlengschema
|
CREATE TABLE cnt_verlengschema
|
||||||
(
|
(
|
||||||
|
cnt_verlengschema_key
|
||||||
|
NUMBER(10)
|
||||||
|
PRIMARY KEY,
|
||||||
cnt_contract_key
|
cnt_contract_key
|
||||||
NUMBER(10)
|
NUMBER(10)
|
||||||
CONSTRAINT cnt_r_cnt_contract_key2 REFERENCES cnt_contract(cnt_contract_key),
|
CONSTRAINT cnt_r_cnt_contract_key2 REFERENCES cnt_contract(cnt_contract_key),
|
||||||
cnt_verlengschema_einddatum
|
cnt_verlengschema_volgnr
|
||||||
DATE,
|
NUMBER(2),
|
||||||
cnt_verlengschema_verlengtermijn
|
cnt_verlengschema_verlengtermijn
|
||||||
NUMBER(10)
|
NUMBER(10)
|
||||||
CONSTRAINT cnt_r_cnt_termijn_key6 REFERENCES cnt_termijn(cnt_termijn_key)
|
CONSTRAINT cnt_r_cnt_termijn_key6 REFERENCES cnt_termijn(cnt_termijn_key)
|
||||||
);
|
);
|
||||||
|
CREATE SEQUENCE cnt_s_cnt_verlengschema_key MINVALUE 1;
|
||||||
CREATE INDEX cnt_i_cnt_verlengschema ON cnt_verlengschema(cnt_contract_key);
|
CREATE INDEX cnt_i_cnt_verlengschema ON cnt_verlengschema(cnt_contract_key);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
|
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
|
||||||
|
|||||||
Reference in New Issue
Block a user