SGGR#74581 Indexwerk 2023
svn path=/Customer/trunk/; revision=57576
This commit is contained in:
634
SGGR/sggr.sql
634
SGGR/sggr.sql
@@ -512,367 +512,321 @@ AS
|
||||
AND p.prs_perslid_key = k.prs_perslid_key;
|
||||
|
||||
-- SGGR#23236 - Inzetten FACILITOR voor administratieve processen SGF!
|
||||
|
||||
CREATE OR REPLACE PROCEDURE sggr_select_INDEXWERK (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
BEGIN
|
||||
NULL;
|
||||
NULL;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE VIEW sggr_v_export_INDEXWERK
|
||||
(
|
||||
RESULT,
|
||||
result_order
|
||||
)
|
||||
CREATE OR REPLACE VIEW sggr_v_export_INDEXWERK (RESULT, result_order)
|
||||
AS
|
||||
SELECT '', 0
|
||||
FROM DUAL
|
||||
WHERE 1 = 0;
|
||||
|
||||
SELECT '', 0
|
||||
FROM DUAL
|
||||
WHERE 1 = 0;
|
||||
|
||||
CREATE OR REPLACE PROCEDURE sggr_export_indexwerk (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_filedir IN VARCHAR2,
|
||||
p_filename IN VARCHAR2)
|
||||
AS
|
||||
CURSOR ccnt (p_splitsindexdatum DATE)
|
||||
IS
|
||||
SELECT '['
|
||||
|| TO_CHAR (x.cnt_contract_nummer_intern)
|
||||
|| '|'
|
||||
|| x.cnt_contract_omschrijving
|
||||
|| '] ' aanduiding,
|
||||
x.ins_discipline_key,
|
||||
x.cnt_contract_key,
|
||||
x.cnt_contract_nummer_intern,
|
||||
x.cnt_contract_versie,
|
||||
x.cnt_contract_looptijd_tot einddatum,
|
||||
li.index_datum laatste_indexdatum,
|
||||
x.cnt_contract_kosten,
|
||||
x.cnt_contract_termijnkosten,
|
||||
x.cnt_prs_bedrijf_key,
|
||||
DECODE (x.cnt_prs_bedrijf_key,
|
||||
1062, 2,
|
||||
1901, 2,
|
||||
1061, 2,
|
||||
2901, 2,
|
||||
1073, 2,
|
||||
2) indexpct -- Voor 2021: 2%, voor AAFM (1062), YASKS(1901)/(1061)/VEBE(2901), UWVA (1073)
|
||||
FROM (SELECT c.*
|
||||
FROM cnt_v_aanwezigcontract c
|
||||
WHERE c.ins_discipline_key IN (481, 482, 501, 661) -- SaaS/Onderhoud/Care/Specials
|
||||
AND c.cnt_contract_status = 0 -- NIET Gesloten!
|
||||
AND NOT EXISTS -- Beschouw alleen laatste versie van contracten
|
||||
(SELECT 1
|
||||
FROM cnt_v_aanwezigcontract
|
||||
WHERE cnt_contract_nummer_intern =
|
||||
c.cnt_contract_nummer_intern
|
||||
AND TO_NUMBER (cnt_contract_versie) >
|
||||
TO_NUMBER (
|
||||
COALESCE (
|
||||
c.cnt_contract_versie,
|
||||
'0')))) x
|
||||
LEFT JOIN
|
||||
(SELECT cnt_contract_key,
|
||||
fac.safe_to_date (cnt_kenmerkcontract_waarde,
|
||||
'dd-mm-yyyy') index_datum
|
||||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||||
WHERE cnt_kenmerkcontract_verwijder IS NULL
|
||||
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||||
AND k.cnt_srtkenmerk_key = 301) li -- Laatste index-datum
|
||||
ON x.cnt_contract_key = li.cnt_contract_key
|
||||
WHERE x.cnt_contract_looptijd_tot > p_splitsindexdatum
|
||||
AND COALESCE (li.index_datum, SYSDATE) < p_splitsindexdatum
|
||||
ORDER BY TO_NUMBER (x.cnt_contract_nummer_intern);
|
||||
CURSOR ccnt (
|
||||
p_splitsindexdatum DATE)
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (x.cnt_contract_nummer_intern) || '|' || x.cnt_contract_omschrijving || '] '
|
||||
aanduiding,
|
||||
x.ins_discipline_key,
|
||||
x.cnt_contract_key,
|
||||
x.cnt_contract_nummer_intern,
|
||||
x.cnt_contract_versie,
|
||||
x.cnt_contract_looptijd_tot einddatum,
|
||||
li.index_datum laatste_indexdatum,
|
||||
x.cnt_contract_kosten,
|
||||
x.cnt_contract_termijnkosten,
|
||||
x.cnt_prs_bedrijf_key,
|
||||
DECODE (x.cnt_prs_bedrijf_key,
|
||||
1062, 2.8, -- AAFM voor 2022: 2.8%
|
||||
1061, 2, -- Yask B.V. voor 2022: 2%
|
||||
1901, 2, -- Yask Facility Management B.V. voor 2022: 2%
|
||||
2901, 2, -- Vebego International B.V. voor 2022: 2%
|
||||
1073, 2.8, -- UWV voor 2022: 2.8%
|
||||
4.5) -- REST: 4.5%
|
||||
indexpct
|
||||
FROM (SELECT c.*
|
||||
FROM cnt_v_aanwezigcontract c
|
||||
WHERE c.ins_discipline_key IN (481, 482, 501, 661) -- SaaS/Onderhoud/Care/Specials
|
||||
AND c.cnt_contract_status = 0 -- NIET Gesloten!
|
||||
AND NOT EXISTS -- Beschouw alleen laatste versie van contracten
|
||||
(SELECT 1
|
||||
FROM cnt_v_aanwezigcontract
|
||||
WHERE cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
|
||||
AND TO_NUMBER (cnt_contract_versie) > TO_NUMBER(COALESCE (c.cnt_contract_versie, '0')))) x
|
||||
LEFT JOIN
|
||||
(SELECT kc.cnt_contract_key,
|
||||
fac.safe_to_date (kc.cnt_kenmerkcontract_waarde, 'dd-mm-yyyy') index_datum
|
||||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||||
WHERE kc.cnt_kenmerkcontract_verwijder IS NULL
|
||||
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||||
AND k.cnt_srtkenmerk_key = 301) li -- Laatste index-datum
|
||||
ON x.cnt_contract_key = li.cnt_contract_key
|
||||
WHERE x.cnt_contract_looptijd_tot > p_splitsindexdatum
|
||||
AND COALESCE (li.index_datum, SYSDATE) < p_splitsindexdatum
|
||||
ORDER BY TO_NUMBER (x.cnt_contract_nummer_intern);
|
||||
|
||||
c_splitsindexdatum DATE := TO_DATE ('01012023', 'ddmmyyyy'); -- Per 01-01-2023!
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_new_contract_key NUMBER;
|
||||
termijnkorting cnt_kenmerkcontract.cnt_kenmerkcontract_waarde%TYPE;
|
||||
oldtermijnkosten cnt_contract.cnt_contract_termijnkosten%TYPE;
|
||||
newtermijnkosten cnt_contract.cnt_contract_termijnkosten%TYPE;
|
||||
|
||||
PROCEDURE upsert_cntkenmerk (p_contract_key IN NUMBER,
|
||||
p_srtkenmerk_key IN NUMBER,
|
||||
p_waarde IN VARCHAR2)
|
||||
AS
|
||||
v_kenmerk_key NUMBER;
|
||||
v_srtkenmerk_kenmerktype VARCHAR2 (10);
|
||||
v_srtkenmerk_lengte NUMBER;
|
||||
v_waarde VARCHAR2 (255);
|
||||
v_kenmerkcontract_key NUMBER;
|
||||
BEGIN
|
||||
-- Bepaal kenmerk van meegegeven contract en soort; deze moet bestaan!
|
||||
SELECT cnt_kenmerk_key,
|
||||
cnt_srtkenmerk_kenmerktype,
|
||||
COALESCE (cnt_srtkenmerk_lengte, 255)
|
||||
INTO v_kenmerk_key, v_srtkenmerk_kenmerktype, v_srtkenmerk_lengte
|
||||
FROM cnt_contract c, cnt_kenmerk k, cnt_srtkenmerk sk
|
||||
WHERE c.cnt_contract_key = p_contract_key
|
||||
AND c.ins_discipline_key = k.cnt_srtcontract_key
|
||||
AND k.cnt_kenmerk_verwijder IS NULL
|
||||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||||
AND sk.cnt_srtkenmerk_key = p_srtkenmerk_key;
|
||||
|
||||
c_splitsindexdatum DATE := TO_DATE ('01012022', 'ddmmyyyy');
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_new_contract_key NUMBER;
|
||||
termijnkorting cnt_kenmerkcontract.cnt_kenmerkcontract_waarde%TYPE;
|
||||
oldtermijnkosten cnt_contract.cnt_contract_termijnkosten%TYPE;
|
||||
newtermijnkosten cnt_contract.cnt_contract_termijnkosten%TYPE;
|
||||
v_waarde := SUBSTR (p_waarde, 1, v_srtkenmerk_lengte);
|
||||
|
||||
PROCEDURE upsert_cntkenmerk (p_contract_key IN NUMBER,
|
||||
p_srtkenmerk_key IN NUMBER,
|
||||
p_waarde IN VARCHAR2)
|
||||
AS
|
||||
v_kenmerk_key NUMBER;
|
||||
v_srtkenmerk_kenmerktype VARCHAR2 (10);
|
||||
v_srtkenmerk_lengte NUMBER;
|
||||
v_waarde VARCHAR2 (255);
|
||||
v_kenmerkcontract_key NUMBER;
|
||||
BEGIN
|
||||
-- Bepaal kenmerk van meegegeven contract en soort; deze moet bestaan!
|
||||
SELECT cnt_kenmerk_key,
|
||||
cnt_srtkenmerk_kenmerktype,
|
||||
COALESCE (cnt_srtkenmerk_lengte, 255)
|
||||
INTO v_kenmerk_key, v_srtkenmerk_kenmerktype, v_srtkenmerk_lengte
|
||||
FROM cnt_contract c, cnt_kenmerk k, cnt_srtkenmerk sk
|
||||
WHERE c.cnt_contract_key = p_contract_key
|
||||
AND c.ins_discipline_key = k.cnt_srtcontract_key
|
||||
AND k.cnt_kenmerk_verwijder IS NULL
|
||||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||||
AND sk.cnt_srtkenmerk_key = p_srtkenmerk_key;
|
||||
|
||||
v_waarde := SUBSTR (p_waarde, 1, v_srtkenmerk_lengte);
|
||||
|
||||
BEGIN
|
||||
-- Bepaal bestaan/aanwezigheid huidige kenmerkwaarde?
|
||||
SELECT cnt_kenmerkcontract_key
|
||||
INTO v_kenmerkcontract_key
|
||||
FROM cnt_kenmerkcontract kc
|
||||
WHERE kc.cnt_contract_key = p_contract_key
|
||||
AND kc.cnt_kenmerk_key = v_kenmerk_key
|
||||
AND kc.cnt_kenmerkcontract_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
BEGIN
|
||||
-- Bepaal bestaan/aanwezigheid huidige kenmerkwaarde?
|
||||
SELECT cnt_kenmerkcontract_key
|
||||
INTO v_kenmerkcontract_key
|
||||
FROM cnt_kenmerkcontract kc
|
||||
WHERE kc.cnt_kenmerkcontract_verwijder IS NULL
|
||||
AND kc.cnt_contract_key = p_contract_key
|
||||
AND kc.cnt_kenmerk_key = v_kenmerk_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
IF p_waarde IS NULL
|
||||
THEN
|
||||
IF p_waarde IS NULL
|
||||
THEN
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
|
||||
cnt_kenmerk_key,
|
||||
cnt_kenmerkcontract_waarde)
|
||||
VALUES (p_contract_key, v_kenmerk_key, v_waarde);
|
||||
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF p_waarde IS NULL
|
||||
THEN
|
||||
--DELETE FROM cnt_kenmerkcontract
|
||||
-- WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
|
||||
UPDATE cnt_kenmerkcontract
|
||||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||||
WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
|
||||
ELSE
|
||||
UPDATE cnt_kenmerkcontract
|
||||
SET cnt_kenmerkcontract_waarde = v_waarde,
|
||||
cnt_kenmerkcontract_wijzig = SYSDATE
|
||||
WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
|
||||
END IF;
|
||||
END;
|
||||
BEGIN
|
||||
-- Splitsen en indexeren FACILITOR-contracten.
|
||||
FOR rc IN ccnt (c_splitsindexdatum)
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errorhint := 'Fout bij splitsen contract.';
|
||||
-- Splitsen kun je wel achterwege laten als het contract pas na de splitsdatum begint
|
||||
-- of voor de splitsdatum eindigt. Dat komt voor en geeft dan nu de waarschuwing
|
||||
-- "Fout bij bepalen nieuwe versie" in de volgende stap. dat is niet erg dus.
|
||||
cnt.splitscontract (rc.cnt_contract_key,
|
||||
c_splitsindexdatum,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Na splitsen wordt de nieuwe versie ge<67>ndexeerd.
|
||||
v_errorhint := 'Fout bij bepalen nieuwe versie.';
|
||||
|
||||
BEGIN
|
||||
SELECT cnt_contract_key
|
||||
INTO v_new_contract_key
|
||||
FROM cnt_v_aanwezigcontract
|
||||
WHERE cnt_contract_nummer_intern =
|
||||
rc.cnt_contract_nummer_intern
|
||||
AND TO_NUMBER (cnt_contract_versie) >
|
||||
TO_NUMBER (COALESCE (rc.cnt_contract_versie, '0'));
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- Er is blijkbaar niet gesplitst (waarschijnlijk dat contract begint pas op of na splitsdatum)
|
||||
-- omdat prijspeil volgens laatste index toch oud is, moet die dan toch geindexdeerd worden
|
||||
IF rc.einddatum > c_splitsindexdatum
|
||||
THEN
|
||||
v_new_contract_key := rc.cnt_contract_key;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
v_errorhint := 'Fout bij toevoegen laatste indexdatum.';
|
||||
upsert_cntkenmerk (v_new_contract_key,
|
||||
301, -- Laatste index-datum
|
||||
TO_CHAR (c_splitsindexdatum, 'ddmmyyyy'));
|
||||
COMMIT;
|
||||
|
||||
v_errorhint := 'Fout bij toevoegen laatste indexpercentage.';
|
||||
upsert_cntkenmerk (v_new_contract_key, 302, -- Laatste index-percentage
|
||||
rc.indexpct);
|
||||
COMMIT;
|
||||
|
||||
FOR rkc
|
||||
IN ( SELECT kc.cnt_kenmerkcontract_key,
|
||||
kc.cnt_kenmerkcontract_waarde cur_waarde,
|
||||
ROUND (
|
||||
fac.safe_to_number (
|
||||
kc.cnt_kenmerkcontract_waarde)
|
||||
* ((100 + rc.indexpct) / 100),
|
||||
2) new_waarde
|
||||
FROM cnt_kenmerkcontract kc,
|
||||
cnt_kenmerk k,
|
||||
cnt_srtkenmerk sk
|
||||
WHERE 1 = 1
|
||||
AND kc.cnt_contract_key = v_new_contract_key
|
||||
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
||||
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||||
AND k.cnt_kenmerk_verwijder IS NULL
|
||||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||||
AND sk.cnt_srtkenmerk_kenmerktype = 'N'
|
||||
AND ( sk.cnt_srtkenmerk_key = 241 -- Hosting
|
||||
OR ( sk.cnt_srtkenmerk_key = 221 -- Tarief Consultant
|
||||
AND rc.cnt_contract_nummer_intern NOT IN
|
||||
(16)) -- ...behalve voor UWVA=> handmatig
|
||||
OR ( sk.cnt_srtkenmerk_key = 222 -- Tarief Specialist
|
||||
AND rc.cnt_contract_nummer_intern NOT IN
|
||||
(16)) -- ...behalve voor UWVA=> handmatig
|
||||
OR sk.cnt_srtkenmerk_upper LIKE '%PRIJS%')
|
||||
ORDER BY k.cnt_kenmerk_volgnummer)
|
||||
LOOP
|
||||
v_errorhint := 'Fout bij bijwerken prijsveld.';
|
||||
|
||||
UPDATE cnt_kenmerkcontract
|
||||
SET cnt_kenmerkcontract_waarde =
|
||||
TO_CHAR (rkc.new_waarde, '999999D99')
|
||||
WHERE cnt_kenmerkcontract_key = rkc.cnt_kenmerkcontract_key;
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
|
||||
|
||||
-- Aanpassen van de totalen. Let op dat een evt kortingsbedrag (cnt_srtkenmerk_key=85)
|
||||
-- niet meegeindexeerd wordt, dus kun je niet zomaar het totaal indexeren
|
||||
v_errorhint := 'Fout bij bijwerken termijnbedrag.';
|
||||
|
||||
SELECT cnt_contract_termijnkosten
|
||||
INTO oldtermijnkosten
|
||||
FROM cnt_contract
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('oldtermijn ' || oldtermijnkosten);
|
||||
|
||||
BEGIN
|
||||
SELECT COALESCE (
|
||||
fac.safe_to_number (kc.cnt_kenmerkcontract_waarde),
|
||||
0)
|
||||
INTO termijnkorting
|
||||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||||
AND k.cnt_srtkenmerk_key = 85 -- het kortingsbedrag (is negatief bij korting) per termijn
|
||||
AND kc.cnt_contract_key = v_new_contract_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
termijnkorting := 0;
|
||||
END;
|
||||
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_termijnkosten =
|
||||
ROUND (
|
||||
( rc.cnt_contract_termijnkosten
|
||||
- fac.safe_to_number (termijnkorting))
|
||||
* ((100 + rc.indexpct) / 100)
|
||||
+ fac.safe_to_number (termijnkorting),
|
||||
2)
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
SELECT cnt_contract_termijnkosten
|
||||
INTO newtermijnkosten
|
||||
FROM cnt_contract
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE (
|
||||
'newtermijn ' || TO_CHAR (newtermijnkosten));
|
||||
|
||||
--c.ins_discipline_key IN (481, 482, 501) -- SaaS/Onderhoud/Care = termijn per maand/jaar/maand
|
||||
v_errorhint := 'Fout bij bijwerken jaarbedrag.';
|
||||
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_kosten =
|
||||
DECODE (ins_discipline_key,
|
||||
481, 12,
|
||||
501, 12,
|
||||
661, 12,
|
||||
482, 1)
|
||||
* cnt_contract_termijnkosten,
|
||||
cnt_contract_termijntermijn =
|
||||
DECODE (ins_discipline_key,
|
||||
481, 3,
|
||||
501, 3,
|
||||
661, 3,
|
||||
482, 10) -- mnd/mnd/jr
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
-- SGGR#60314: Totalen igv. FACILITOR SaaS (ins_discipline_key=481)
|
||||
-- ook doorvoeren in berekende kenmerkvelden van soort:
|
||||
-- 481=Totaal contractbedrag/mnd
|
||||
-- 482=Totaal contractbedrag/jaar
|
||||
v_errorhint := 'Fout bij bijwerken berekende velden.';
|
||||
-- alleen bij 481??
|
||||
IF rc.ins_discipline_key = 481 -- FACILITOR SaaS
|
||||
THEN
|
||||
upsert_cntkenmerk (v_new_contract_key, 481, -- Totaal contractbedrag/mnd
|
||||
newtermijnkosten);
|
||||
upsert_cntkenmerk (v_new_contract_key,
|
||||
482, -- Totaal contractbedrag/jaar
|
||||
12 * newtermijnkosten);
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
v_errorhint := 'Fout bij bijwerken index-tracking (CNTUPD).';
|
||||
INSERT INTO cnt_kenmerkcontract (cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_waarde)
|
||||
VALUES (p_contract_key, v_kenmerk_key, v_waarde);
|
||||
|
||||
fac.trackaction (
|
||||
'CNTUPD',
|
||||
v_new_contract_key,
|
||||
NULL,
|
||||
NULL,
|
||||
'Contract ge<67>ndexeerd met '
|
||||
|| TO_CHAR (rc.indexpct, '0.00')
|
||||
|| '%; termijnbedrag gewijzigd van <20>'
|
||||
|| TO_CHAR (oldtermijnkosten)
|
||||
|| ' naar <20>'
|
||||
|| TO_CHAR (newtermijnkosten));
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF p_waarde IS NULL
|
||||
THEN
|
||||
--DELETE FROM cnt_kenmerkcontract
|
||||
-- WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
|
||||
UPDATE cnt_kenmerkcontract
|
||||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||||
WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
|
||||
ELSE
|
||||
UPDATE cnt_kenmerkcontract
|
||||
SET cnt_kenmerkcontract_waarde = v_waarde,
|
||||
cnt_kenmerkcontract_wijzig = SYSDATE
|
||||
WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
|
||||
END IF;
|
||||
END;
|
||||
BEGIN
|
||||
-- Splitsen en indexeren FACILITOR-contracten.
|
||||
FOR rc IN ccnt (c_splitsindexdatum)
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errorhint := 'Fout bij splitsen contract.';
|
||||
-- Splitsen kun je wel achterwege laten als het contract pas na de splitsdatum begint
|
||||
-- of voor de splitsdatum eindigt. Dat komt voor en geeft dan nu de waarschuwing
|
||||
-- "Fout bij bepalen nieuwe versie" in de volgende stap. dat is niet erg dus.
|
||||
cnt.splitscontract (rc.cnt_contract_key,
|
||||
c_splitsindexdatum,
|
||||
NULL,
|
||||
NULL);
|
||||
COMMIT;
|
||||
|
||||
-- Na splitsen wordt de nieuwe versie ge<67>ndexeerd.
|
||||
v_errorhint := 'Fout bij bepalen nieuwe versie.';
|
||||
|
||||
BEGIN
|
||||
SELECT cnt_contract_key
|
||||
INTO v_new_contract_key
|
||||
FROM cnt_v_aanwezigcontract
|
||||
WHERE cnt_contract_nummer_intern = rc.cnt_contract_nummer_intern
|
||||
AND TO_NUMBER (cnt_contract_versie) > TO_NUMBER (COALESCE (rc.cnt_contract_versie, '0'));
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
' Error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.writelog (p_applname,
|
||||
'W',
|
||||
rc.aanduiding || v_errormsg,
|
||||
v_errorhint);
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
-- Er is blijkbaar niet gesplitst (waarschijnlijk dat contract begint pas op of na splitsdatum)
|
||||
-- omdat prijspeil volgens laatste index toch oud is, moet die dan toch geindexdeerd worden
|
||||
IF rc.einddatum > c_splitsindexdatum
|
||||
THEN
|
||||
v_new_contract_key := rc.cnt_contract_key;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
v_errorhint := 'Fout bij toevoegen laatste indexdatum.';
|
||||
upsert_cntkenmerk (v_new_contract_key,
|
||||
301, -- Laatste index-datum
|
||||
TO_CHAR (c_splitsindexdatum, 'ddmmyyyy'));
|
||||
COMMIT;
|
||||
|
||||
v_errorhint := 'Fout bij toevoegen laatste indexpercentage.';
|
||||
upsert_cntkenmerk (v_new_contract_key,
|
||||
302, -- Laatste index-percentage
|
||||
rc.indexpct);
|
||||
COMMIT;
|
||||
|
||||
FOR rkc
|
||||
IN ( SELECT kc.cnt_kenmerkcontract_key,
|
||||
kc.cnt_kenmerkcontract_waarde cur_waarde,
|
||||
ROUND (fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) * ( (100 + rc.indexpct) / 100), 2)
|
||||
new_waarde
|
||||
FROM cnt_kenmerkcontract kc,
|
||||
cnt_kenmerk k,
|
||||
cnt_srtkenmerk sk
|
||||
WHERE 1 = 1
|
||||
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
||||
AND kc.cnt_contract_key = v_new_contract_key
|
||||
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||||
AND k.cnt_kenmerk_verwijder IS NULL
|
||||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||||
AND sk.cnt_srtkenmerk_kenmerktype = 'N'
|
||||
AND (sk.cnt_srtkenmerk_key = 241 -- Hosting
|
||||
OR (sk.cnt_srtkenmerk_key = 221 -- Tarief Consultant
|
||||
AND rc.cnt_contract_nummer_intern NOT IN (16)) -- ...behalve voor UWVA => handmatig
|
||||
OR (sk.cnt_srtkenmerk_key = 222 -- Tarief Specialist
|
||||
AND rc.cnt_contract_nummer_intern NOT IN (16)) -- ...behalve voor UWVA => handmatig
|
||||
OR sk.cnt_srtkenmerk_upper LIKE '%PRIJS%')
|
||||
ORDER BY k.cnt_kenmerk_volgnummer)
|
||||
LOOP
|
||||
v_errorhint := 'Fout bij bijwerken prijsveld.';
|
||||
|
||||
UPDATE cnt_kenmerkcontract
|
||||
SET cnt_kenmerkcontract_waarde = TO_CHAR (rkc.new_waarde, '999999D99')
|
||||
WHERE cnt_kenmerkcontract_key = rkc.cnt_kenmerkcontract_key;
|
||||
END LOOP;
|
||||
COMMIT;
|
||||
|
||||
-- Aanpassen van de totalen. Let op dat een evt kortingsbedrag (cnt_srtkenmerk_key=85)
|
||||
-- niet meegeindexeerd wordt, dus kun je niet zomaar het totaal indexeren
|
||||
v_errorhint := 'Fout bij bijwerken termijnbedrag.';
|
||||
|
||||
SELECT cnt_contract_termijnkosten
|
||||
INTO oldtermijnkosten
|
||||
FROM cnt_contract
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('oldtermijn ' || oldtermijnkosten);
|
||||
|
||||
BEGIN
|
||||
SELECT COALESCE (fac.safe_to_number (kc.cnt_kenmerkcontract_waarde), 0)
|
||||
INTO termijnkorting
|
||||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||||
AND k.cnt_srtkenmerk_key = 85 -- het kortingsbedrag (is negatief bij korting) per termijn
|
||||
AND kc.cnt_contract_key = v_new_contract_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
termijnkorting := 0;
|
||||
END;
|
||||
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_termijnkosten = ROUND ((rc.cnt_contract_termijnkosten - fac.safe_to_number (termijnkorting)) * ( (100 + rc.indexpct) / 100) + fac.safe_to_number (termijnkorting), 2)
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
SELECT cnt_contract_termijnkosten
|
||||
INTO newtermijnkosten
|
||||
FROM cnt_contract
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE ('newtermijn ' || TO_CHAR (newtermijnkosten));
|
||||
|
||||
--c.ins_discipline_key IN (481, 482, 501) -- SaaS/Onderhoud/Care = termijn per maand/jaar/maand
|
||||
v_errorhint := 'Fout bij bijwerken jaarbedrag.';
|
||||
|
||||
UPDATE cnt_contract
|
||||
SET cnt_contract_kosten =
|
||||
DECODE (ins_discipline_key,
|
||||
481, 12,
|
||||
501, 12,
|
||||
661, 12,
|
||||
482, 1)
|
||||
* cnt_contract_termijnkosten,
|
||||
cnt_contract_termijntermijn =
|
||||
DECODE (ins_discipline_key,
|
||||
481, 3,
|
||||
501, 3,
|
||||
661, 3,
|
||||
482, 10) -- mnd/mnd/jr
|
||||
WHERE cnt_contract_key = v_new_contract_key;
|
||||
|
||||
-- SGGR#60314: Totalen igv. FACILITOR SaaS (ins_discipline_key=481)
|
||||
-- ook doorvoeren in berekende kenmerkvelden van soort:
|
||||
-- 481=Totaal contractbedrag/mnd
|
||||
-- 482=Totaal contractbedrag/jaar
|
||||
v_errorhint := 'Fout bij bijwerken berekende velden.';
|
||||
|
||||
-- alleen bij 481??
|
||||
IF rc.ins_discipline_key = 481 -- FACILITOR SaaS
|
||||
THEN
|
||||
upsert_cntkenmerk (v_new_contract_key,
|
||||
481, -- Totaal contractbedrag/mnd
|
||||
newtermijnkosten);
|
||||
upsert_cntkenmerk (v_new_contract_key,
|
||||
482, -- Totaal contractbedrag/jaar
|
||||
12 * newtermijnkosten);
|
||||
END IF;
|
||||
|
||||
v_errorhint := 'Fout bij bijwerken index-tracking (CNTUPD).';
|
||||
|
||||
fac.trackaction (
|
||||
'CNTUPD',
|
||||
v_new_contract_key,
|
||||
NULL,
|
||||
NULL,
|
||||
'Contract ge<67>ndexeerd met '
|
||||
|| TO_CHAR (rc.indexpct, '0.00')
|
||||
|| '%; termijnbedrag gewijzigd van <20>'
|
||||
|| TO_CHAR (oldtermijnkosten)
|
||||
|| ' naar <20>'
|
||||
|| TO_CHAR (newtermijnkosten));
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := ' Error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', rc.aanduiding || v_errormsg, v_errorhint);
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
'Error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname,
|
||||
'E',
|
||||
'Proces INDEXWERK afgebroken!',
|
||||
v_errormsg);
|
||||
COMMIT;
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', 'Proces INDEXWERK afgebroken!', v_errormsg);
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -1196,7 +1150,7 @@ AS
|
||||
WHERE ( m.mld_stdmelding_key IN (43,
|
||||
281,
|
||||
261,
|
||||
1161,
|
||||
1161,
|
||||
421,
|
||||
346) -- 43=inkoopverplichtingen, 281=aftrekbare kosten leaseauto's, 261=declaraties, 1161=declaratie nieuw, 421=overurensheet, 346=Aanvraag hotelkamer
|
||||
OR sm.mld_ins_discipline_key IN (721, 821)) --- 731=vakgroep relatiegeschenken, 821=vakgroep aanvragen met acceptatie
|
||||
@@ -2080,7 +2034,7 @@ BEGIN
|
||||
DELETE sggr_autorit_registratie;
|
||||
|
||||
RETURN; -- GDFS#73348 Autorittenregistratie wordt niet meer gebruikt, geldt ook voor SGGR
|
||||
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
@@ -3855,7 +3809,7 @@ AS
|
||||
WHERE UPPER (fac_notificatie_job_view) =
|
||||
'SGGR_V_NOTI_PROJECTADM');
|
||||
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user