SGGR#78224 Nieuwe versie vs. splitsen
svn path=/Database/trunk/; revision=61733
This commit is contained in:
@@ -235,15 +235,16 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
||||
|
||||
PROCEDURE splitscontract (p_key IN NUMBER, p_datum IN DATE, p_user IN NUMBER, p_amount NUMBER)
|
||||
IS
|
||||
begin1 DATE;
|
||||
eind1 DATE;
|
||||
versie1 cnt_contract.cnt_contract_versie%TYPE;
|
||||
newkey NUMBER;
|
||||
nummer1 cnt_contract.cnt_contract_nummer_intern%TYPE;
|
||||
amount1 cnt_contract.cnt_contract_kosten%TYPE;
|
||||
srtcontract_type cnt_disc_params.cnt_srtcontract_type%TYPE;
|
||||
new_status cnt_contract.cnt_contract_status%TYPE;
|
||||
tracking VARCHAR2 (4000);
|
||||
begin1 DATE;
|
||||
eind1 DATE;
|
||||
versie1 cnt_contract.cnt_contract_versie%TYPE;
|
||||
newkey NUMBER;
|
||||
nummer1 cnt_contract.cnt_contract_nummer_intern%TYPE;
|
||||
amount1 cnt_contract.cnt_contract_kosten%TYPE;
|
||||
srtcontract_type cnt_disc_params.cnt_srtcontract_type%TYPE;
|
||||
new_status cnt_contract.cnt_contract_status%TYPE;
|
||||
tracking VARCHAR2 (4000);
|
||||
splitsen BOOLEAN := TRUE;
|
||||
BEGIN
|
||||
-- Splits het contract met p_key in twee delen: het oude dat eindigt op p_datum - 1,
|
||||
-- en een nieuwe kopie die begint op die p_datum
|
||||
@@ -266,15 +267,28 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
||||
FROM cnt_contract c,
|
||||
cnt_disc_params cdp
|
||||
WHERE c.ins_discipline_key = cdp.cnt_ins_discipline_key
|
||||
AND c.cnt_contract_key = p_key
|
||||
AND c.cnt_contract_looptijd_van < p_datum
|
||||
AND c.cnt_contract_looptijd_tot > p_datum;
|
||||
AND c.cnt_contract_key = p_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF (begin1 < p_datum AND eind1 > p_datum)
|
||||
THEN
|
||||
-- Splitsen van contract.
|
||||
begin1 := p_datum;
|
||||
eind1 := eind1;
|
||||
ELSIF (eind1 < p_datum)
|
||||
THEN
|
||||
-- Verlengen van contract
|
||||
begin1 := eind1 + 1;
|
||||
eind1 := p_datum;
|
||||
splitsen := FALSE;
|
||||
ELSE
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
IF (fac.getsetting('cnt_contract_approval') = 1 AND srtcontract_type != 6)
|
||||
THEN
|
||||
new_status := 2; -- altijd op nieuw
|
||||
@@ -293,7 +307,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
||||
)
|
||||
SELECT cnt_contract_nummer,
|
||||
cnt_contract_omschrijving,
|
||||
cnt_contract_looptijd_tot,
|
||||
eind1,
|
||||
amount1 - COALESCE(p_amount, 0),
|
||||
cnt_contract_uurloon,
|
||||
cnt_prs_bedrijf_key,
|
||||
@@ -310,7 +324,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
||||
prs_perslid_key_beh,
|
||||
prs_afdeling_key_eig,
|
||||
new_status,
|
||||
p_datum,
|
||||
begin1,
|
||||
prs_kostenplaats_key,
|
||||
cnt_contract_termijnkosten,
|
||||
prs_kostensoort_key,
|
||||
@@ -332,11 +346,19 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
|
||||
AND cnt_contract_versie = TO_CHAR (versie1 + 1)
|
||||
AND cnt_contract_verwijder IS NULL;
|
||||
--- Een versieloos oud contract krijgt expliciet versie 0
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_looptijd_tot = p_datum - 1,
|
||||
cnt_contract_versie = versie1,
|
||||
cnt_contract_kosten = COALESCE(p_amount, cnt_contract_kosten)
|
||||
WHERE cnt_contract_key = p_key;
|
||||
--- Looptijd_tot en kosten moteen alleen bij splitsen worden aangepast.
|
||||
IF splitsen
|
||||
THEN
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_looptijd_tot = p_datum - 1,
|
||||
cnt_contract_versie = versie1,
|
||||
cnt_contract_kosten = COALESCE(p_amount, cnt_contract_kosten)
|
||||
WHERE cnt_contract_key = p_key;
|
||||
ELSE
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_versie = versie1
|
||||
WHERE cnt_contract_key = p_key;
|
||||
END IF;
|
||||
|
||||
tracking := lcl.l('lcl_cnt_is_cntupd') || CHR(10) || lcl.l('lcl_cnt_enddate') || ': ' || TO_CHAR(eind1, 'dd-mm-yyyy') || lcl.l('lcl_trackto') || TO_CHAR((p_datum - 1), 'dd-mm-yyyy');
|
||||
IF (p_amount IS NOT NULL AND p_amount <> amount1)
|
||||
|
||||
Reference in New Issue
Block a user