BLCC#64393 Herziening facturatie/allocatiemodel

svn path=/Customer/trunk/; revision=49185
This commit is contained in:
Maarten van der Heide
2020-12-14 16:48:47 +00:00
parent fdf34e1b36
commit 8b6cd6d61a

View File

@@ -1118,6 +1118,7 @@ AS
o.mld_opdr_kosten price,
TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd')
deliverydate, -- BLCC#59254: ORDVER (ipv. ORDAFM)
--COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms) -- TODO: Pas per 30-12-2020!!!
COALESCE (ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms)
costtype, -- CostTypeExternalId
DECODE (aog.alg_gebouw_code,
@@ -1144,6 +1145,7 @@ AS
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
prs_kostensoort kso,
prs_kostensoort ksm,
prs_kostensoort ksv,
prs_kostenplaats kp,
@@ -1168,6 +1170,7 @@ AS
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
@@ -4733,6 +4736,8 @@ AS
ROUND (COALESCE (o.mld_opdr_kosten, 0), 2) mndnet, -- Netto bedrag
ROUND (DECODE (btwvl.prs_kenmerklink_waarde, '1', 0, 0.21) * COALESCE (o.mld_opdr_kosten, 0), 2) mndbtw, -- BTW bedrag
0 crf, -- CV=0 en CRF=1
--COALESCE (kso.prs_kostensoort_refcode, ksm.prs_kostensoort_refcode, ksv.prs_kostensoort_refcode) grtboekrek, -- TODO: Pas per 30-12-2020!!!
--COALESCE (kso.prs_kostensoort_altcode, ksm.prs_kostensoort_altcode, ksv.prs_kostensoort_altcode) grtboekrek_oms, -- TODO: Pas per 30-12-2020!!!
COALESCE (ksm.prs_kostensoort_refcode, ksv.prs_kostensoort_refcode) grtboekrek,
COALESCE (ksm.prs_kostensoort_altcode, ksv.prs_kostensoort_altcode) grtboekrek_oms,
TO_NUMBER (NULL) mld_melding_key -- Correctiemelding-key
@@ -4763,6 +4768,7 @@ AS
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg,
prs_kostensoort kso,
prs_kostensoort ksm,
prs_kostensoort ksv
WHERE o.mld_typeopdr_key = 101 -- WO
@@ -4802,6 +4808,7 @@ AS
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND SUBSTR (kp.prs_kostenplaats_upper, 1, 5) = '50900'
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
UNION ALL -- Correctiemeldingen
@@ -17737,6 +17744,7 @@ IS
v_contractnr VARCHAR2 (255); -- C30+'.'+C10
v_gebouwcode VARCHAR2 (255); -- C12
v_gebouwkosten VARCHAR2 (255);
v_ruimtenr VARCHAR2 (255); -- C10
CURSOR c1
IS
@@ -17763,6 +17771,7 @@ BEGIN
fac.imp_getfield (v_newline, c_delim, v_contractnr);
fac.imp_getfield (v_newline, c_delim, v_gebouwcode);
fac.imp_getfield (v_newline, c_delim, v_gebouwkosten);
fac.imp_getfield (v_newline, c_delim, v_ruimtenr);
v_aanduiding := '[' || v_contractnr || '|' || v_gebouwcode || '] ';
@@ -17774,6 +17783,7 @@ BEGIN
IF UPPER (v_contractnr) = 'CONTRACTNR'
AND UPPER (v_gebouwcode) = 'GEBOUWCODE'
AND UPPER (v_gebouwkosten) = 'GEBOUWKOSTEN'
--AND UPPER (v_gebouwkosten) = 'RUIMTENR' -- Optioneel
THEN
header_is_valid := 1;
END IF;
@@ -17808,14 +17818,24 @@ BEGIN
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Gebouwkosten worden genegeerd!');
END IF;
--
v_errormsg := 'Ruimtenummer te lang';
v_ruimtenr := TRIM (v_ruimtenr);
IF LENGTH (v_ruimtenr) > 10
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO blcc_imp_cnt_gebscope (contractnr, gebouwcode, gebouwkosten)
VALUES (v_contractnr, v_gebouwcode, fac.safe_to_number (v_gebouwkosten));
INSERT INTO blcc_imp_cnt_gebscope (contractnr, gebouwcode, gebouwkosten, ruimtenr)
VALUES (v_contractnr, v_gebouwcode, fac.safe_to_number (v_gebouwkosten), v_ruimtenr);
COMMIT;
v_count_import := v_count_import + 1;
@@ -17863,7 +17883,7 @@ AS
v_count_upd NUMBER (10);
v_contract_kosten NUMBER (10);
-- Verwijderen scope!
-- Verwijderen gebouw-scope!
CURSOR c1
IS
SELECT c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
@@ -17888,15 +17908,17 @@ AS
AND EXISTS
(SELECT 1
FROM blcc_imp_cnt_gebscope
WHERE UPPER (contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)))
WHERE ruimtenr IS NULL
AND UPPER (contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)))
AND NOT EXISTS
(SELECT 1
FROM blcc_imp_cnt_gebscope
WHERE UPPER (contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie))
WHERE ruimtenr IS NULL
AND UPPER (contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie))
AND UPPER (gebouwcode) = g.alg_gebouw_upper)
ORDER BY 1, 2;
-- Bijwerken scope!
-- Bijwerken gebouw-scope!
CURSOR c2
IS
SELECT i.contractnr, i.gebouwcode, i.gebouwkosten,
@@ -17906,7 +17928,8 @@ AS
cnt_v_aanwezigcontract c,
alg_v_aanweziggebouw g,
(SELECT * FROM cnt_contract_plaats WHERE cnt_alg_plaats_code = 'G') cp
WHERE UPPER (i.contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie))
WHERE i.ruimtenr IS NULL
AND UPPER (i.contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie))
AND c.ins_discipline_key = 2221 -- Planned Maintenance
--AND c.cnt_contract_status = 0 -- Definitief
AND UPPER (i.gebouwcode) = g.alg_gebouw_upper(+)
@@ -17920,11 +17943,66 @@ AS
SELECT c.cnt_contract_key, i.contractnr, SUM (i.gebouwkosten) gebouwtotaal
FROM blcc_imp_cnt_gebscope i,
cnt_v_aanwezigcontract c
WHERE UPPER (i.contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie))
WHERE i.ruimtenr IS NULL
AND UPPER (i.contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie))
AND c.ins_discipline_key = 2221 -- Planned Maintenance
--AND c.cnt_contract_status = 0 -- Definitief
GROUP BY c.cnt_contract_key, i.contractnr
ORDER BY 1;
-- Verwijderen ruimte-scope!
CURSOR c4
IS
SELECT c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
contractnr,
r.alg_ruimte_nr,
cp.cnt_contract_plaats_key
FROM cnt_contract_plaats cp,
cnt_v_aanwezigcontract c,
alg_ruimte r
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key = 2501 -- Soft Services Cleaning
--AND c.cnt_contract_status = 0 -- Definitief
AND NOT EXISTS -- Beschouw alleen laatste versie van contracten?
(SELECT 1
FROM cnt_v_aanwezigcontract
WHERE ins_discipline_key = 2501 -- Planned Maintenance
AND cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
AND cnt_contract_versie > COALESCE (c.cnt_contract_versie, '0'))
AND cp.cnt_alg_plaats_key = r.alg_ruimte_key
AND cp.cnt_alg_plaats_code = 'R'
AND EXISTS
(SELECT 1
FROM blcc_imp_cnt_gebscope
WHERE ruimtenr IS NOT NULL
AND UPPER (contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '.0', '.' || c.cnt_contract_versie)))
AND NOT EXISTS
(SELECT 1
FROM blcc_imp_cnt_gebscope
WHERE ruimtenr IS NOT NULL
AND UPPER (contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '.0', '.' || c.cnt_contract_versie))
AND UPPER (ruimtenr) = r.alg_ruimte_upper_nr)
ORDER BY 1, 2;
-- Bijwerken ruimte-scope!
CURSOR c5
IS
SELECT i.contractnr, i.ruimtenr,
c.cnt_contract_key, r.alg_ruimte_key,
cp.cnt_contract_plaats_key, cp.cnt_contract_plaats_gewicht
FROM blcc_imp_cnt_gebscope i,
cnt_v_aanwezigcontract c,
alg_v_aanwezigruimte r,
(SELECT * FROM cnt_contract_plaats WHERE cnt_alg_plaats_code = 'R') cp
WHERE i.ruimtenr IS NOT NULL
AND UPPER (i.contractnr) = UPPER (c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '.0', '.' || c.cnt_contract_versie))
AND c.ins_discipline_key = 2501 -- Soft Services Cleaning
--AND c.cnt_contract_status = 0 -- Definitief
AND UPPER (i.ruimtenr) = r.alg_ruimte_upper_nr(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND r.alg_ruimte_key = cp.cnt_alg_plaats_key(+)
ORDER BY 1, 2;
BEGIN
v_errormsg := 'Fout bepalen importeur';
@@ -17933,6 +18011,13 @@ BEGIN
FROM fac_import
WHERE fac_import_key = p_import_key;
SELECT COUNT (*)
INTO v_count
FROM blcc_imp_cnt_gebscope
WHERE ruimtenr IS NOT NULL;
IF v_count = 0
THEN
v_count_del := 0;
FOR rec IN c1
@@ -17943,7 +18028,7 @@ BEGIN
UPDATE cnt_contract_plaats
SET cnt_contract_plaats_verwijder = SYSDATE
WHERE cnt_contract_plaats_key = rec.cnt_contract_plaats_key;
WHERE cnt_alg_plaats_code = 'G' AND cnt_contract_plaats_key = rec.cnt_contract_plaats_key;
v_count_del := v_count_del + 1;
COMMIT;
@@ -17953,12 +18038,12 @@ BEGIN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'DEL-loop');
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'DEL-loop (G)');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'CNT-scope/#verwijderd: ' || TO_CHAR (v_count_del), '');
fac.imp_writelog (p_import_key, 'S', 'CNT-scope/#verwijderd (G): ' || TO_CHAR (v_count_del), '');
v_count_upd := 0;
@@ -18033,6 +18118,69 @@ BEGIN
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'CNT-totaal/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
ELSE
v_count_del := 0;
FOR rec IN c4
LOOP
BEGIN
v_aanduiding := '[' || rec.contractnr || '|' || rec.alg_ruimte_nr || '] ';
v_errormsg := 'Fout verwijderen contract-ruimte';
UPDATE cnt_contract_plaats
SET cnt_contract_plaats_verwijder = SYSDATE
WHERE cnt_alg_plaats_code = 'R' AND cnt_contract_plaats_key = rec.cnt_contract_plaats_key;
v_count_del := v_count_del + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'DEL-loop (R)');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'CNT-scope/#verwijderd (R): ' || TO_CHAR (v_count_del), '');
v_count_upd := 0;
FOR rec IN c5
LOOP
BEGIN
v_aanduiding := '[' || rec.contractnr || '|' || rec.ruimtenr || '] ';
IF rec.alg_ruimte_key IS NOT NULL
THEN
IF rec.cnt_contract_plaats_key IS NULL
THEN
v_errormsg := 'Fout toevoegen contract-ruimte';
INSERT INTO cnt_contract_plaats (cnt_contract_key, cnt_alg_plaats_key, cnt_alg_plaats_code, cnt_contract_plaats_gewicht)
VALUES (rec.cnt_contract_key, rec.alg_ruimte_key, 'R', NULL);
v_count_upd := v_count_upd + 1;
END IF;
ELSE
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Fout bepalen contract-ruimte', 'Ruimte bestaat niet');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'UPD-ruimte');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'CNT-ruimte/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
END IF;
v_errormsg := 'Fout bepalen aantallen';
@@ -18162,6 +18310,59 @@ AS
GROUP BY t.fac_tracking_refkey) lc
ON x.alg_ruimte_key = lc.fac_tracking_refkey;
-- BLCC#64393: Rapport tbv. Hago!
CREATE OR REPLACE VIEW blcc_v_rap_schoonmaak
(
alg_ruimte_key,
locatiecode,
gebouwcode,
gebouwnaam,
verdiepingcode,
ruimtenummer,
--verhuurbaar,
ruimtefunctie,
ruimteomschrijving,
nvo,
vloertype,
contractnr
)
AS
SELECT DISTINCT
r.alg_ruimte_key,
l.alg_locatie_code,
g.alg_gebouw_code,
g.alg_gebouw_naam,
v.alg_verdieping_code,
r.alg_ruimte_nr,
--DECODE (sr.prs_verhuurbaar, NULL, 'Nee', 'Ja') verhuurbaar,
sr.alg_srtruimte_omschrijving,
r.alg_ruimte_omschrijving,
fac.safe_to_number (nvo.alg_onrgoedkenmerk_waarde) nvo,
vloertype.alg_onrgoedkenmerk_waarde vloertype,
c.cnt_contract_nummer_intern || '.' || COALESCE (c.cnt_contract_versie, '0') contractnr
FROM cnt_v_aanwezigcontract c,
cnt_contract_plaats cp,
alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_srtruimte sr,
(SELECT * FROM alg_v_aanwezigonrgoedkenmerk WHERE alg_kenmerk_key = 1460 AND alg_onrgoed_niveau = 'R') nvo,
(SELECT * FROM alg_v_aanwezigonrgoedkenmerk WHERE alg_kenmerk_key = 1301 AND alg_onrgoed_niveau = 'R') vloertype
WHERE c.ins_discipline_key = 2501 -- Soft Services Cleaning
AND c.cnt_contract_status = 0 -- Definitief
AND TRUNC (ADD_MONTHS (SYSDATE, 1), 'mm') - 1 BETWEEN TRUNC (c.cnt_contract_looptijd_van) AND TRUNC (c.cnt_contract_looptijd_tot + 1)
AND c.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'R'
AND cp.cnt_alg_plaats_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = nvo.alg_onrgoed_key(+)
AND r.alg_ruimte_key = vloertype.alg_onrgoed_key(+);
-- BLCC#62052: Huurder per ruimte op basis van Lease Agreements.
-- UPDATE alg_srtruimte SET prs_verhuurbaar = 1
CREATE OR REPLACE VIEW blcc_v_thema_ruimte_huurder
@@ -18505,7 +18706,6 @@ SELECT a.prs_afdeling_key,
FROM prs_bedrijf b, prs_afdeling a
WHERE b.prs_bedrijf_key = 22 AND a.prs_bedrijf_key = b.prs_bedrijf_key;
CREATE OR REPLACE VIEW BLCC_V_HUURDERS_PRS
(
PRS_PERSLID_KEY,
@@ -18582,6 +18782,31 @@ AS
n.fac_srtnotificatie_key,
m.mld_melding_key;
CREATE OR REPLACE VIEW BLCC_V_MELDINGEN
(
mld_melding_key,
mld_melding_omschrijving
)
AS
SELECT m.mld_melding_key,
DECODE (
m.mld_melding_onderwerp,
NULL, vgt.ins_srtdiscipline_prefix || m.mld_melding_key,
vgt.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| ' ('
|| m.mld_melding_onderwerp
|| ')') omschr
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline vg,
ins_srtdiscipline vgt
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key
AND vgt.ins_srtdiscipline_prefix = 'BCC'
ORDER BY m.mld_melding_key DESC
------ payload end ------
SET DEFINE OFF