SGGR#74581 Indexwerk 2023

svn path=/Customer/trunk/; revision=57576
This commit is contained in:
Maarten van der Heide
2022-10-10 16:14:06 +00:00
parent 0ab790d1e0
commit 528bec5606

View File

@@ -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