KFNS#38373 -- Kostenmatrix in FACILITOR
svn path=/Customer/trunk/; revision=32151
This commit is contained in:
431
KFNS/kfns.sql
431
KFNS/kfns.sql
@@ -1458,7 +1458,436 @@ AS
|
||||
AND l.alg_district_key = d.alg_district_key(+)
|
||||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+);
|
||||
|
||||
/* Formatted on 9-3-2016 14:18:22 (QP5 v5.136.908.31019) */
|
||||
-- Vaste kosten hebben een kostensoort gekoppeld aan de stdmelding
|
||||
-- en hebben GEEN link naar een contract in de opdracht.
|
||||
-- Variabele kosten hebben optioneel een kostensoort gekoppeld aan
|
||||
-- de stdmelding maar hebben altijd een link naar een contract van het
|
||||
-- type variabele kosten.
|
||||
CREATE OR REPLACE VIEW kfns_v_rap_kosten_monitor_i
|
||||
AS
|
||||
SELECT alg_gebouw_code,
|
||||
'VAST-' || prs_kostensoort_oms prs_kostensoort_oms,
|
||||
prs_kostensoortgrp_key,
|
||||
prs_kostensoort_altcode volgorde,
|
||||
(SELECT SUM (mld_opdr_kosten)
|
||||
FROM mld_opdr o, mld_melding m, mld_stdmelding std
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND o.cnt_contract_key IS NULL
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.prs_kostensoort_key = k.prs_kostensoort_key
|
||||
AND m.mld_alg_onroerendgoed_keys = g.alg_gebouw_key
|
||||
AND mld_opdr_datumbegin BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -12)
|
||||
AND TRUNC (SYSDATE, 'Q') - 1)
|
||||
bedrag
|
||||
FROM alg_gebouw g, prs_kostensoort k
|
||||
WHERE alg_gebouw_verwijder IS NULL
|
||||
UNION ALL
|
||||
SELECT alg_gebouw_code,
|
||||
'VAR-' || prs_kostensoortgrp_oms,
|
||||
prs_kostensoortgrp_key,
|
||||
LPAD (prs_kostensoortgrp_altcode - 2, 3, '0') volgorde,
|
||||
(SELECT SUM (mld_opdr_kosten)
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
cnt_contract c,
|
||||
prs_kostensoort ks,
|
||||
mld_typeopdr ot
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||||
AND ot.mld_typeopdr_kosten = 1
|
||||
AND o.cnt_contract_key = c.cnt_contract_key
|
||||
AND c.prs_kostensoort_key = ks.prs_kostensoort_key
|
||||
AND c.ins_discipline_key = 143 -- variabel
|
||||
AND ks.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key
|
||||
AND m.mld_alg_onroerendgoed_keys = g.alg_gebouw_key
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key <> 1 -- project
|
||||
AND mld_opdr_datumbegin BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -12)
|
||||
AND TRUNC (SYSDATE, 'Q') - 1)
|
||||
bedrag
|
||||
FROM alg_gebouw g, prs_kostensoortgrp kg
|
||||
WHERE alg_gebouw_verwijder IS NULL
|
||||
UNION ALL
|
||||
SELECT alg_gebouw_code,
|
||||
'PRJ-' || prs_kostensoortgrp_oms,
|
||||
prs_kostensoortgrp_key,
|
||||
LPAD (prs_kostensoortgrp_altcode - 1, 3, '0') volgorde,
|
||||
(SELECT SUM (mld_opdr_kosten)
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
cnt_contract c,
|
||||
prs_kostensoort ks,
|
||||
mld_typeopdr ot
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||||
AND ot.mld_typeopdr_kosten = 1
|
||||
AND o.cnt_contract_key = c.cnt_contract_key
|
||||
AND c.prs_kostensoort_key = ks.prs_kostensoort_key
|
||||
AND c.ins_discipline_key = 143 -- variabel
|
||||
AND ks.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key
|
||||
AND m.mld_alg_onroerendgoed_keys = g.alg_gebouw_key
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = 1 -- project
|
||||
AND mld_opdr_datumbegin BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -12)
|
||||
AND TRUNC (SYSDATE, 'Q') - 1)
|
||||
bedrag
|
||||
FROM alg_gebouw g, prs_kostensoortgrp kg
|
||||
WHERE alg_gebouw_verwijder IS NULL;
|
||||
|
||||
CREATE OR REPLACE VIEW kfns_v_rap_kosten_monitor
|
||||
AS
|
||||
SELECT alg_gebouw_code,
|
||||
prs_kostensoort_oms,
|
||||
prs_kostensoortgrp_oms,
|
||||
volgorde,
|
||||
bedrag
|
||||
FROM kfns_v_rap_kosten_monitor_i i, prs_kostensoortgrp kg
|
||||
WHERE i.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key
|
||||
UNION ALL
|
||||
SELECT alg_gebouw_code,
|
||||
'SUB-' || kg.prs_kostensoortgrp_oms,
|
||||
kg.prs_kostensoortgrp_oms,
|
||||
kg.prs_kostensoortgrp_altcode volgorde,
|
||||
SUM (bedrag)
|
||||
FROM kfns_v_rap_kosten_monitor_i i, prs_kostensoortgrp kg
|
||||
WHERE i.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key AND alg_gebouw_code <> 'A_HEADER'
|
||||
GROUP BY kg.prs_kostensoortgrp_oms, alg_gebouw_code, prs_kostensoortgrp_altcode
|
||||
UNION ALL
|
||||
SELECT alg_gebouw_code,
|
||||
'TOTAAL',
|
||||
' Totaal',
|
||||
'999' volgorde,
|
||||
SUM (bedrag)
|
||||
FROM kfns_v_rap_kosten_monitor_i
|
||||
WHERE alg_gebouw_code <> 'A_HEADER'
|
||||
GROUP BY alg_gebouw_code
|
||||
UNION ALL
|
||||
SELECT g.alg_gebouw_code,
|
||||
'M2 in beheer',
|
||||
' M2',
|
||||
'002',
|
||||
opp
|
||||
FROM ( SELECT alg_gebouw_key,
|
||||
alg_gebouw_upper alg_gebouw_code,
|
||||
SUM (alg_ruimte_bruto_vloeropp) opp
|
||||
FROM alg_v_ruimte_gegevens rg, alg_onrgoedkenmerk aogk
|
||||
WHERE aogk.alg_kenmerk_key = 1040
|
||||
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) = 1
|
||||
AND rg.alg_ruimte_key = aogk.alg_onrgoed_key
|
||||
GROUP BY alg_gebouw_upper, alg_gebouw_key) rg,
|
||||
alg_gebouw g
|
||||
WHERE g.alg_gebouw_key = rg.alg_gebouw_key(+) AND g.alg_gebouw_verwijder IS NULL
|
||||
UNION ALL
|
||||
SELECT alg_gebouw_code,
|
||||
'M2 Totaal',
|
||||
' M2',
|
||||
'001',
|
||||
SUM (alg_ruimte_bruto_vloeropp)
|
||||
FROM alg_v_ruimte_gegevens rg, alg_gebouw g
|
||||
WHERE g.alg_gebouw_key = rg.alg_gebouw_key(+) AND g.alg_gebouw_verwijder IS NULL
|
||||
GROUP BY alg_gebouw_code;
|
||||
|
||||
-- import tbv kostenmonitor
|
||||
CREATE OR REPLACE PROCEDURE kfns_import_vaste_kosten (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||||
v_newline VARCHAR2 (1000); -- Input line
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
v_errorhint VARCHAR2(1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
header_is_valid NUMBER;
|
||||
v_count NUMBER;
|
||||
v_ongeldig NUMBER (1);
|
||||
v_mode NUMBER (1);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_all_null BOOLEAN;
|
||||
v_count_error NUMBER (10);
|
||||
v_count_tot NUMBER (10);
|
||||
v_count_import NUMBER (10);
|
||||
c_mld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
|
||||
:= mld_t_uitvoertijd (2, 'D');
|
||||
-- De importvelden:
|
||||
v_periode VARCHAR2 (255);
|
||||
v_gebouw_code VARCHAR2 (255);
|
||||
v_gebouw_omschrijving VARCHAR(255);
|
||||
v_kostensoort_oms VARCHAR2 (255);
|
||||
v_bedrijf_naam VARCHAR2 (255);
|
||||
v_opdr_kosten VARCHAR2 (255);
|
||||
v_contract_nr VARCHAR2 (255);
|
||||
|
||||
v_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
|
||||
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
|
||||
v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE;
|
||||
v_bedrijf_key prs_bedrijf.prs_bedrijf_key%TYPE;
|
||||
v_mld_opdr_bedrijfopdr_volgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE;
|
||||
v_melding_key mld_melding.mld_melding_key%TYPE;
|
||||
v_opdr_key mld_opdr.mld_opdr_key%TYPE;
|
||||
v_contract_key cnt_contract.cnt_contract_key%TYPE;
|
||||
v_startdate DATE;
|
||||
v_periodestart DATE;
|
||||
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
-- Bepaal het begin van het vorige Kwartaal
|
||||
v_startdate := add_months (TRUNC (SYSDATE, 'Q'), -3);
|
||||
|
||||
v_count_error := 0;
|
||||
header_is_valid := 0;
|
||||
v_count_tot := 0;
|
||||
v_count_import := 0;
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout FETCH te importeren rij';
|
||||
|
||||
v_newline := rec.fac_imp_file_line;
|
||||
v_errormsg := 'Fout opvragen te importeren rij';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
|
||||
-- Lees alle veldwaarden
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_periode);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_gebouw_omschrijving);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_gebouw_code);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_oms);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_contract_nr);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijf_naam);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_opdr_kosten);
|
||||
|
||||
v_aanduiding := v_gebouw_code || '|' || v_kostensoort_oms;
|
||||
v_opdr_kosten := REPLACE(v_opdr_kosten, ',', '.');
|
||||
dbms_output.put_line('aanduiding: ' || v_aanduiding);
|
||||
IF v_periode IS NOT NULL AND (fac.safe_to_number(v_opdr_kosten) <> 0 OR header_is_valid = 0)
|
||||
THEN
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
IF UPPER (v_periode) = 'PERIODE'
|
||||
AND UPPER (v_kostensoort_oms) = 'KOSTENSOORT'
|
||||
AND UPPER (v_opdr_kosten) = 'BEDRAG'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
dbms_output.put_line('header is valid: ' || v_aanduiding);
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_periodestart :=
|
||||
fac.safe_to_date (
|
||||
SUBSTR (v_periode, 1, 4) || LPAD ( ( (SUBSTR(v_periode,6,1) - 1) * 3) + 1, 2, '0') || '01',
|
||||
'yyyymmdd');
|
||||
|
||||
IF v_periodestart = v_startdate
|
||||
THEN
|
||||
v_errorhint := 'Vind stdmelding';
|
||||
|
||||
SELECT mld_stdmelding_key
|
||||
INTO v_stdmelding_key
|
||||
FROM mld_stdmelding std, prs_kostensoort ks
|
||||
WHERE std.prs_kostensoort_key = ks.prs_kostensoort_key
|
||||
AND ks.prs_kostensoort_oms = v_kostensoort_oms;
|
||||
|
||||
v_errorhint := 'Vind gebouw';
|
||||
|
||||
SELECT alg_gebouw_key, alg_locatie_key
|
||||
INTO v_gebouw_key, v_locatie_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_gebouw_verwijder IS NULL AND alg_gebouw_code = v_gebouw_code;
|
||||
|
||||
v_errorhint := 'Vind uitvoerende';
|
||||
|
||||
SELECT prs_bedrijf_key
|
||||
INTO v_bedrijf_key
|
||||
FROM prs_bedrijf
|
||||
WHERE prs_bedrijf_verwijder IS NULL
|
||||
AND prs_bedrijf_uitvoerende = 1
|
||||
AND prs_bedrijf_naam = v_bedrijf_naam;
|
||||
|
||||
v_errorhint := 'Kijk of melding bestaat';
|
||||
|
||||
BEGIN
|
||||
SELECT mld_melding_key
|
||||
INTO v_melding_key
|
||||
FROM mld_melding
|
||||
WHERE mld_stdmelding_key = v_stdmelding_key
|
||||
AND mld_alg_onroerendgoed_keys = v_gebouw_key
|
||||
AND v_startdate BETWEEN mld_melding_datum AND mld_melding_einddatum;
|
||||
dbms_output.put_line('melding bestaat: ' || v_aanduiding);
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO mld_melding (mld_melding_omschrijving,
|
||||
mld_melding_onderwerp,
|
||||
mld_kosten_klant,
|
||||
prs_perslid_key,
|
||||
prs_kostenplaats_key,
|
||||
mld_stdmelding_key,
|
||||
mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys,
|
||||
mld_melding_einddatum,
|
||||
mld_melding_datum,
|
||||
mld_melding_t_uitvoertijd,
|
||||
mld_meldbron_key,
|
||||
mld_melding_module,
|
||||
mld_melding_spoed)
|
||||
VALUES ('Vaste kosten:' || v_periode,
|
||||
'Vaste kosten:' || v_periode,
|
||||
1,
|
||||
4, -- FACILITOR
|
||||
52, -- KIEN
|
||||
v_stdmelding_key,
|
||||
v_locatie_key,
|
||||
v_gebouw_key,
|
||||
ADD_MONTHS (TRUNC (v_startdate, 'Y'), 12) - 1,
|
||||
TRUNC (v_startdate, 'Y'),
|
||||
c_mld_uitvoertijd,
|
||||
5,
|
||||
'MLD',
|
||||
3)
|
||||
RETURNING mld_melding_key
|
||||
INTO v_melding_key;
|
||||
dbms_output.put_line('melding is toegevoegd: ' || v_aanduiding);
|
||||
|
||||
mld.setmeldingstatus (v_melding_key, 2, NULL);
|
||||
mld.setmeldingstatus (v_melding_key, 4, NULL);
|
||||
END;
|
||||
|
||||
IF v_contract_nr IS NOT NULL
|
||||
THEN
|
||||
v_errorhint := 'Zoek het contract';
|
||||
|
||||
SELECT cnt_contract_key
|
||||
INTO v_contract_key
|
||||
FROM cnt_contract c
|
||||
WHERE cnt_contract_verwijder IS NULL
|
||||
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
|
||||
AND c.ins_discipline_key = 143 -- variabel
|
||||
AND 'C' || cnt_contract_nummer_intern || '.' || cnt_contract_versie = v_contract_nr;
|
||||
END IF;
|
||||
|
||||
v_errorhint := 'Kijk of opdracht bestaat';
|
||||
|
||||
BEGIN
|
||||
dbms_output.put_line('bestaat de opdracht: ' || v_aanduiding);
|
||||
SELECT mld_opdr_key
|
||||
INTO v_opdr_key
|
||||
FROM mld_opdr o
|
||||
WHERE o.mld_melding_key = v_melding_key
|
||||
AND v_startdate BETWEEN mld_opdr_datumbegin AND mld_opdr_einddatum
|
||||
AND ( v_contract_key IS NULL
|
||||
OR o.cnt_contract_key = v_contract_key);
|
||||
|
||||
dbms_output.put_line('opdracht bestaat: ' || v_aanduiding);
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_kosten = ROUND (v_opdr_kosten, 2),
|
||||
mld_opdr_materiaal = ROUND (v_opdr_kosten, 2)
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
dbms_output.put_line('bepaal opdr volgnr: ' || v_aanduiding);
|
||||
v_mld_opdr_bedrijfopdr_volgnr :=
|
||||
mld.bepaalopdrmeldingvolgnr (v_melding_key);
|
||||
|
||||
dbms_output.put_line('toevoegen opdracht: ' || v_aanduiding);
|
||||
INSERT INTO mld_opdr (mld_melding_key,
|
||||
prs_kostenplaats_key,
|
||||
mld_statusopdr_key,
|
||||
mld_typeopdr_key,
|
||||
prs_perslid_key,
|
||||
mld_uitvoerende_keys,
|
||||
mld_opdr_datumbegin,
|
||||
mld_opdr_einddatum,
|
||||
mld_opdr_module,
|
||||
mld_opdr_omschrijving,
|
||||
mld_opdr_materiaal,
|
||||
mld_opdr_kosten,
|
||||
mld_opdr_bedrijfopdr_volgnr,
|
||||
cnt_contract_key)
|
||||
VALUES( v_melding_key,
|
||||
52, -- KIEN
|
||||
5, -- uitgegeven
|
||||
481, -- administratieve opdracht
|
||||
4, -- facilitor
|
||||
v_bedrijf_key,
|
||||
v_periodestart,
|
||||
ADD_MONTHS (v_periodestart, 3) - 1,
|
||||
'MLD',
|
||||
'Vaste kosten:' || v_periode,
|
||||
ROUND (v_opdr_kosten, 2),
|
||||
ROUND (v_opdr_kosten, 2),
|
||||
v_mld_opdr_bedrijfopdr_volgnr,
|
||||
v_contract_key);
|
||||
END;
|
||||
ELSE
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'Ongeldige periode opgegeven ' || v_periode || '-' || v_periodestart || ' - STRING:' ||SUBSTR (v_periode, 1, 4) || LPAD ( ( (SUBSTR(v_periode,6,1) - 1) * 3) + 1, 2, '0') || '01',
|
||||
'');
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_errormsg,
|
||||
v_aanduiding || ' | ' || v_errorhint);
|
||||
END;
|
||||
END loop;
|
||||
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || 'Ongeldig importbestand',
|
||||
'Geen geldige headerregel aanwezig');
|
||||
ELSE
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'S',
|
||||
'Import vast kosten: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||||
'');
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_errormsg,
|
||||
v_aanduiding || ' | ' || v_errorhint);
|
||||
END kfns_import_vaste_kosten;
|
||||
/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE kfns_update_vaste_kosten (p_import_key IN NUMBER)
|
||||
AS
|
||||
BEGIN
|
||||
NULL;
|
||||
END kfns_update_vaste_kosten;
|
||||
/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE kfns_select_fact (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
|
||||
Reference in New Issue
Block a user