GVBA#64318 -- Verlengen mandaten en vrijstellingen voor 2021

svn path=/Customer/trunk/; revision=48651
This commit is contained in:
Arthur Egberink
2020-10-29 18:15:48 +00:00
parent 3f09654643
commit 09b5a075d1

View File

@@ -112,7 +112,7 @@ CREATE OR REPLACE PACKAGE gvba AS
PROCEDURE set_mandaat_vrijstelling;
PROCEDURE verleng_mandaat_vrijstelling (p_deel_key NUMBER, p_user_key NUMBER);
PROCEDURE verleng_mandaat_vrijstelling (p_deel_key NUMBER, p_user_key NUMBER, p_jaren NUMBER);
END gvba;
/
@@ -856,6 +856,22 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
FROM mld_melding_object mo
WHERE mo.mld_melding_key = m.mld_melding_key);
-- kenmerk 283 is gevuld als de melding afgehandeld is.
CURSOR c_del IS
SELECT m.*,
kenteken
FROM mld_melding m,
(SELECT mld_melding_key, mld_kenmerkmelding_waarde kenteken
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = 282) k
WHERE m.mld_melding_key = k.mld_melding_key(+)
AND m.mld_stdmelding_key = 801 -- Intrekken vrijstelling
AND m.mld_melding_status = 4 -- Geaccepteeerd
AND NOT EXISTS
(SELECT mld_kenmerkmelding_key
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = 283);
v_berijder_arr VARCHAR2 (1000);
v_kenteken_arr VARCHAR2 (1000);
@@ -866,6 +882,11 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
v_deel_key NUMBER;
v_vrijstelling_nr NUMBER;
v_einddatum DATE;
v_einddatum_max DATE;
v_oud_verval_str VARCHAR2(20);
v_new_verval_str VARCHAR2(20);
v_deel_vervaldatum DATE;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
@@ -903,11 +924,18 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
WHERE prs_bedrijf_key = rec.bedrijf_key;
v_hint := 'Instellen einddatum: ' || rec.einddatum;
IF rec.einddatum IS NULL
v_einddatum := TO_DATE (rec.einddatum, 'dd-mm-yyyy');
IF TO_CHAR(SYSDATE, 'MM') IN (12,13)
THEN
v_einddatum := TO_DATE (TO_CHAR (SYSDATE, 'yy') || '1231', 'yymmdd');
v_einddatum_max := TO_DATE (TO_CHAR (SYSDATE, 'yy')+1 || '1231', 'yymmdd');
ELSE
v_einddatum := TO_DATE (rec.einddatum, 'dd-mm-yyyy');
v_einddatum_max := TO_DATE (TO_CHAR (SYSDATE, 'yy') || '1231', 'yymmdd');
END IF;
IF v_einddatum IS NULL OR v_einddatum > v_einddatum_max
THEN
v_einddatum := v_einddatum_max;
END IF;
WHILE v_berijder_arr IS NOT NULL AND v_loop < 20
@@ -933,9 +961,7 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
rec.prs_perslid_key_voor,
'P',
1,
'MAN-'
|| TO_CHAR (SYSDATE, 'yy')
|| ' '
'MAN '
|| v_bedrijf_naam
|| '-'
|| v_berijder,
@@ -1012,23 +1038,26 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
v_loop := 1;
v_hint := 'Instellen einddatum: ' || rec.einddatum;
IF rec.einddatum IS NULL
v_hint := 'Instellen einddatum: ' || rec.einddatum;
v_einddatum := TO_DATE (rec.einddatum, 'dd-mm-yyyy');
v_einddatum_max := add_months(SYSDATE, 5*12);
IF v_einddatum IS NULL OR v_einddatum > v_einddatum_max
THEN
v_einddatum := TO_DATE (TO_CHAR (SYSDATE, 'yy') || '1231', 'yymmdd');
ELSE
v_einddatum := TO_DATE (rec.einddatum, 'dd-mm-yyyy');
v_einddatum := v_einddatum_max;
END IF;
WHILE v_kenteken_arr IS NOT NULL AND v_loop < 20
LOOP
BEGIN
SELECT FAC.safe_to_number (
MAX (SUBSTR (ins_deel_omschrijving, 9)))
MAX (SUBSTR (ins_deel_omschrijving, 6)))
INTO v_vrijstelling_nr
FROM ins_deel
WHERE ins_srtdeel_key = 161
AND ins_deel_omschrijving LIKE
'VRIJ-' || TO_CHAR (SYSDATE, 'yy') || '%';
'VRIJ %';
IF v_vrijstelling_nr IS NULL
THEN
@@ -1055,9 +1084,7 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
rec.prs_perslid_key_voor,
'P',
1,
'VRIJ-'
|| TO_CHAR (SYSDATE, 'yy')
|| ' '
'VRIJ '
|| TO_CHAR (v_vrijstelling_nr, 'fm0000'),
641,
NULL,
@@ -1101,6 +1128,11 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
INSERT INTO mld_melding_object (mld_melding_key,
ins_deel_key)
VALUES (rec.mld_melding_key, v_deel_key);
-- vul het kenmerk 283 met de huidige datum om aan te geven dat deze
-- melding is afgehandeld.
MLD.upsertmeldingkenmerk (283, rec.mld_melding_key, TO_CHAR(SYSDATE, 'DD-MM-YYYY'));
EXCEPTION
WHEN OTHERS
THEN
@@ -1120,20 +1152,95 @@ CREATE OR REPLACE PACKAGE BODY gvba AS
END LOOP;
END LOOP;
-- intrekken vrijstellingen
FOR rec IN c_del
LOOP
v_kenteken_arr := REPLACE (rec.kenteken, CHR (13), '#');
v_kenteken_arr := REPLACE (v_kenteken_arr, CHR (10), '#');
v_kenteken_arr := REPLACE (v_kenteken_arr, '##', '#');
v_loop := 1;
WHILE v_kenteken_arr IS NOT NULL AND v_loop < 20
LOOP
BEGIN
get_element (v_kenteken_arr, v_kenteken);
DBMS_OUTPUT.put_line (v_kenteken);
v_loop := v_loop + 1;
SELECT MAX(d.ins_deel_key)
INTO v_deel_key
FROM ins_deel d, ins_kenmerkdeel kd
WHERE d.ins_deel_key = kd.ins_deel_key
AND kd.ins_kenmerk_key = 23 -- kenteken
AND TRIM(UPPER(REPLACE(v_kenteken,'-'))) = TRIM(UPPER(REPLACE(kd.ins_kenmerkdeel_waarde,'-')))
AND kd.ins_kenmerkdeel_verwijder IS NULL
AND d.ins_deel_verwijder IS NULL
AND ins_deel_vervaldatum > SYSDATE;
SELECT ins_deel_vervaldatum
INTO v_deel_vervaldatum
FROM ins_deel
WHERE ins_deel_key = v_deel_key;
UPDATE ins_deel
SET ins_deel_vervaldatum = SYSDATE
WHERE ins_deel_key = v_deel_key;
v_oud_verval_str := SUBSTR(TO_CHAR(v_deel_vervaldatum, 'Day'),1,2) || TO_CHAR(v_deel_vervaldatum, ' dd-mm-yyyy');
v_new_verval_str := SUBSTR(TO_CHAR(SYSDATE, 'Day'),1,2) || TO_CHAR(SYSDATE, ' dd-mm-yyyy');
fac.trackaction('INSUPD', v_deel_key, rec.prs_perslid_key, NULL, 'Object gewijzigd' || CHR(10)
|| 'Vervaldatum: ' || v_oud_verval_str || ' --> ' || v_new_verval_str);
INSERT INTO mld_melding_object (mld_melding_key,
ins_deel_key)
VALUES (rec.mld_melding_key, v_deel_key);
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- LOG geen vrijstelling gevonden met dit kenteken.
fac.writelog ('Export vrijstellingen',
'E',
'Geen vrijstelling gevonden met dit kenteken: ' || v_kenteken,
'');
END;
END LOOP;
END LOOP;
COMMIT;
END;
PROCEDURE verleng_mandaat_vrijstelling (p_deel_key NUMBER, p_user_key NUMBER)
PROCEDURE verleng_mandaat_vrijstelling (p_deel_key NUMBER, p_user_key NUMBER, p_jaren NUMBER)
AS
v_oud_verval INS_DEEL.INS_DEEL_VERVALDATUM%TYPE;
v_contact INS_DEEL.INS_ALG_RUIMTE_KEY%TYPE;
v_jaren NUMBER;
v_new_verval DATE;
v_new_verval_str VARCHAR2(20);
v_oud_verval_str VARCHAR2(20);
BEGIN
UPDATE ins_deel
SET ins_deel_omschrijving = REPLACE (ins_deel_omschrijving,
'-' || to_char(SYSDATE, 'YY') || ' ',
'-' || to_char(SYSDATE+365, 'YY') || ' '),
ins_deel_vervaldatum = TO_DATE('3112' || TO_CHAR(SYSDATE+365, 'YY'), 'DDMMYY')
SELECT ins_deel_vervaldatum, ins_alg_ruimte_key
INTO v_oud_verval, v_contact
FROM ins_deel
WHERE ins_deel_key = p_deel_key;
fac.trackaction ('INSUPD', p_deel_key, p_user_key, SYSDATE, '#Mandaat/Vrijstelling is verlengd');
v_new_verval := TO_DATE('3112' || TO_CHAR(SYSDATE, 'YY') + p_jaren, 'DDMMYY');
v_new_verval_str := SUBSTR(TO_CHAR(v_new_verval, 'Day'),1,2) || TO_CHAR(v_new_verval, ' dd-mm-yyyy');
v_oud_verval_str := SUBSTR(TO_CHAR(v_oud_verval, 'Day'),1,2) || TO_CHAR(v_oud_verval, ' dd-mm-yyyy');
-- extra check. Alleen de contactpersoon mag verlengen. Verder is het onzinnig om verlopen
-- mandaten en vrijstellingen te verlengen.
IF v_contact = p_user_key AND v_oud_verval > SYSDATE
THEN
UPDATE ins_deel
SET ins_deel_vervaldatum = v_new_verval
WHERE ins_deel_key = p_deel_key;
fac.trackaction('INSUPD', p_deel_key, p_user_key, NULL, 'Object gewijzigd' || CHR(10)
|| 'Vervaldatum: ' || v_oud_verval_str || ' --> ' || v_new_verval_str);
fac.trackaction ('CUST01', p_deel_key, p_user_key, NULL, '#Mandaat/Vrijstelling is verlengd');
END IF;
END;
--
END gvba;
@@ -3279,13 +3386,21 @@ SELECT d.ins_deel_key,
afw_contact,
m.mld_melding_key,
s.mld_statuses_omschrijving,
DECODE(SUBSTR(ins_deel_omschrijving, INSTR(ins_deel_omschrijving, '-')+1, INSTR(ins_deel_omschrijving, ' ') - INSTR(ins_deel_omschrijving, '-') - 1), TO_CHAR(SYSDATE, 'YY'), 'Verlengen', 'Verlengd') Verlengstatus
FROM ins_v_deel_gegevens d, mld_melding_object mo, mld_melding m, mld_statuses s
WHERE ins_discipline_key = 641 AND ins_deel_vervaldatum > SYSDATE
DECODE (TO_CHAR(ins_deel_vervaldatum, 'YYYYMMDD'), TO_CHAR(SYSDATE, 'YYYY') || '1231', 'Verlengen', 'Onbekend') verlengstatus,
TO_CHAR(SYSDATE, 'MM') verlengmaand,
dv.fac_tracking_datum verlengd_op
FROM ins_v_deel_gegevens d, mld_melding_object mo, mld_melding m, mld_statuses s,
( SELECT fac_tracking_refkey, fac_tracking_datum
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST01' -- man/vrij is verlengd
AND TRUNC(t.fac_tracking_datum, 'YY') = TRUNC(SYSDATE, 'YY')) dv
WHERE ins_discipline_key = 641
AND ins_deel_vervaldatum > SYSDATE
AND d.ins_deel_key = mo.ins_deel_key(+)
AND mo.mld_melding_key = m.mld_melding_key(+)
AND m.mld_melding_status = s.mld_statuses_key(+)
AND SUBSTR(ins_deel_omschrijving, INSTR(ins_deel_omschrijving, '-')+1, INSTR(ins_deel_omschrijving, ' ') - INSTR(ins_deel_omschrijving, '-') - 1) = TO_CHAR(SYSDATE, 'YY');
AND d.ins_deel_key = dv.fac_tracking_refkey(+);
------ payload end ------