LPNL#67364 -- Inrichting contractbeheer.

svn path=/Customer/trunk/; revision=59355
This commit is contained in:
Arthur Egberink
2023-02-28 15:23:20 +00:00
parent b735bc259f
commit 11e3a1b525

View File

@@ -33,6 +33,8 @@ AS
PROCEDURE anonimize;
PROCEDURE update_bezoeker (p_bezkey IN NUMBER);
PROCEDURE verleng_contract;
END;
/
@@ -188,6 +190,128 @@ AS
END IF;
END;
PROCEDURE verleng_contract
AS
CURSOR c IS
SELECT cnt_contract_key, cnt_kenmerkcontract_key
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 21;
CURSOR cb (c_contract_key IN NUMBER)
IS
SELECT *
FROM fac_bijlagen
WHERE fac_bijlagen_module = 'CNT'
AND fac_bijlagen_refkey = c_contract_key
AND fac_bijlagen_verwijder IS NULL;
v_cnt_contract_key_new NUMBER (10);
BEGIN
FOR rec IN c
LOOP
v_cnt_contract_key_new := cnt_s_cnt_contract_key.nextval;
INSERT INTO cnt_contract (cnt_contract_key,
cnt_contract_nummer_intern,
ins_discipline_key,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_nummer,
cnt_contract_mantel_key,
cnt_contract_document,
prs_afdeling_key_eig,
prs_perslid_key_eig,
prs_perslid_key_beh,
cnt_contract_opmerking,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_prs_bedrijf_key,
prs_dienst_key,
prs_contactpersoon_key,
cnt_contract_kosten,
cnt_contract_uurloon,
cnt_contract_korting,
prs_kostenplaats_key,
prs_kostensoort_key)
SELECT v_cnt_contract_key_new,
cnt_contract_nummer_intern,
ins_discipline_key,
COALESCE (cnt_contract_versie, '0') + 1,
cnt_contract_omschrijving,
cnt_contract_nummer,
cnt_contract_mantel_key,
cnt_contract_document,
prs_afdeling_key_eig,
prs_perslid_key_eig,
prs_perslid_key_beh,
cnt_contract_opmerking,
ADD_MONTHS (cnt_contract_looptijd_van, 12),
ADD_MONTHS (cnt_contract_looptijd_tot, 12),
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_prs_bedrijf_key,
prs_dienst_key,
prs_contactpersoon_key,
cnt_contract_kosten,
cnt_contract_uurloon,
cnt_contract_korting,
prs_kostenplaats_key,
prs_kostensoort_key
FROM cnt_contract
WHERE cnt_contract_key = rec.cnt_contract_key;
cnt.setcontractstatus (v_cnt_contract_key_new, 0, NULL);
-- reset de verleng vlag. Anders zouden we het contract morgen weer gaan verlengen.
UPDATE cnt_kenmerkcontract
SET cnt_kenmerkcontract_verwijder = SYSDATE
WHERE cnt_kenmerkcontract_key = rec.cnt_kenmerkcontract_key;
INSERT INTO cnt_kenmerkcontract (cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_waarde)
SELECT v_cnt_contract_key_new, cnt_kenmerk_key, cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract kc
WHERE cnt_contract_key = rec.cnt_contract_key AND cnt_kenmerkcontract_verwijder IS NULL;
FOR recb IN cb (rec.cnt_contract_key)
LOOP
flx.copyflexbijlage ('CNT',
v_cnt_contract_key_new,
recb.fac_bijlagen_kenmerk_key,
recb.fac_bijlagen_key);
END LOOP;
INSERT INTO cnt_contract_plaats (cnt_contract_key,
cnt_alg_plaats_code,
cnt_alg_plaats_key,
cnt_contract_plaats_gewicht)
SELECT v_cnt_contract_key_new,
cnt_alg_plaats_code,
cnt_alg_plaats_key,
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_key = rec.cnt_contract_key AND cnt_contract_plaats_verwijder IS NULL;
INSERT INTO cnt_factuurschema (cnt_contract_key,
cnt_factuurschema_boekmaand,
cnt_factuurschema_bedrag,
cnt_factuurschema_opmerking)
SELECT v_cnt_contract_key_new,
TO_CHAR (ADD_MONTHS (fac.safe_to_date (cnt_factuurschema_boekmaand, 'yyyy-mm'), 12), 'yyyy-mm'),
cnt_factuurschema_bedrag,
cnt_factuurschema_opmerking
FROM cnt_factuurschema
WHERE cnt_contract_key = rec.cnt_contract_key;
END LOOP;
END;
END;
/
@@ -650,6 +774,7 @@ SELECT *
CREATE OR REPLACE VIEW lpnl_v_rap_fin_verplichting
AS
-- opdrachten zonder contract
SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
@@ -687,7 +812,7 @@ AS
AND o.mld_melding_key = m.mld_melding_key
AND COALESCE(mld_opdr_kosten, 0) <> 0
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND COALESCE(o.prs_kostensoort_key, std.prs_kostensoort_key) = ks.prs_kostensoort_key(+)
AND COALESCE(f.prs_kostensoort_key, o.prs_kostensoort_key, std.prs_kostensoort_key) = ks.prs_kostensoort_key(+)
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
@@ -711,7 +836,7 @@ AS
NULL,
cfs.cnt_factuurschema_bedrag * (COALESCE(cp.cnt_contract_plaats_gewicht, cnt_contract_kosten) / DECODE(cnt_contract_kosten, NULL, 1, 0, 1, cnt_contract_kosten)),
sf.fin_factuur_statuses_omschr,
f.fin_factuur_totaal,
f.fin_factuur_totaal * (COALESCE(cp.cnt_contract_plaats_gewicht, cnt_contract_kosten) / DECODE(cnt_contract_kosten, NULL, 1, 0, 1, cnt_contract_kosten)),
f.fin_factuur_datum,
f.fin_factuur_nr,
TO_DATE (cnt_factuurschema_boekmaand, 'yyyy-mm'),
@@ -735,14 +860,14 @@ AS
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key
AND c.prs_kostensoort_key = COALESCE(ks.prs_kostensoort_key, d.prs_kostensoort_key)
AND COALESCE(f.prs_kostensoort_key, c.prs_kostensoort_key,d.prs_kostensoort_key) = ks.prs_kostensoort_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND f.fin_factuur_statuses_key = sf.fin_factuur_statuses_key(+)
AND c.cnt_contract_key = cfs.cnt_contract_key
AND TO_DATE (cnt_factuurschema_boekmaand, 'yyyy-mm') BETWEEN TRUNC (SYSDATE, 'y') - 365
AND TRUNC (SYSDATE, 'y') + (2*364)
AND cfs.cnt_factuurschema_boekmaand = f.fin_factuur_boekmaand(+)
AND COALESCE (FLX.getflex('FIN', 21, COALESCE(f.fin_factuur_key, -1)), '0') = '0'
AND COALESCE (FLX.getflex('FIN', 21, COALESCE(f.fin_factuur_key, -1)), '0') = '0' -- factuur niet verdelen over contract
UNION ALL -- Facturen op contracten die aan een locatie worden toegekend.
SELECT 'C' || c.cnt_contract_key,
alg_locatie_omschrijving,
@@ -758,7 +883,7 @@ AS
NULL,
cfs.cnt_factuurschema_bedrag * (COALESCE(cp.cnt_contract_plaats_gewicht, cnt_contract_kosten) / DECODE(cnt_contract_kosten, NULL, 1, 0, 1, cnt_contract_kosten)),
sf.fin_factuur_statuses_omschr,
f.fin_factuur_totaal,
fr.fin_factuurregel_totaal,
f.fin_factuur_datum,
f.fin_factuur_nr,
TO_DATE (cnt_factuurschema_boekmaand, 'yyyy-mm'),
@@ -785,14 +910,14 @@ AS
AND fr.fin_factuurregel_referentie = l.alg_locatie_code
AND l.alg_locatie_key = g.alg_locatie_key
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key
AND c.prs_kostensoort_key = COALESCE(ks.prs_kostensoort_key, d.prs_kostensoort_key)
AND COALESCE(f.prs_kostensoort_key, c.prs_kostensoort_key,d.prs_kostensoort_key) = ks.prs_kostensoort_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND f.fin_factuur_statuses_key = sf.fin_factuur_statuses_key(+)
AND c.cnt_contract_key = cfs.cnt_contract_key
AND TO_DATE (cnt_factuurschema_boekmaand, 'yyyy-mm') BETWEEN TRUNC (SYSDATE, 'y') - 365
AND TRUNC (SYSDATE, 'y') + (2*364)
AND cfs.cnt_factuurschema_boekmaand = f.fin_factuur_boekmaand(+)
AND COALESCE (FLX.getflex('FIN', 21, COALESCE(f.fin_factuur_key,-1)), '0') = '1'
AND COALESCE (FLX.getflex('FIN', 21, COALESCE(f.fin_factuur_key,-1)), '0') = '1' -- factuur niet verdelen over contract =1 dus niet verdelen
UNION ALL -- Voorzieningen cnt_discipline_key = 461
SELECT 'C' || c.cnt_contract_key,
NULL alg_locatie_omschrijving,
@@ -910,6 +1035,7 @@ CREATE OR REPLACE PROCEDURE lpnl_daily
AS
BEGIN
LPNL.anonimize;
LPNL.verleng_contract;
END;
/