LPNL#67364 -- Inrichting contractbeheer.
svn path=/Customer/trunk/; revision=59355
This commit is contained in:
140
LPNL/LPNL.sql
140
LPNL/LPNL.sql
@@ -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;
|
||||
/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user