Files
Customer/BLCC/blcc.sql
Maarten van der Heide 87732fbceb BLCC#38849 TF-export terug naar nacht na 1e werkdag
svn path=/Customer/trunk/; revision=32285
2017-01-09 16:46:51 +00:00

2270 lines
95 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for BLCC.
DEFINE thisfile = 'BLCC.SQL'
DEFINE dbuser = '^BLCC'
DEFINE custid = 'BLCC'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE VIEW blcc_v_rap_import_log
(
fclt_f_applicatie,
datum,
fclt_f_status,
omschrijving,
hint
)
AS
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log il1, fac_import fi1, fac_import_app fia1
WHERE il1.fac_import_key = fi1.fac_import_key(+)
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
AND NOT EXISTS
(SELECT 1
FROM imp_log il2, fac_import fi2
WHERE il2.fac_import_key = fi2.fac_import_key
AND fi2.fac_import_app_key = fi1.fac_import_app_key
AND il2.fac_import_key > il1.fac_import_key);
/* Formatted on 5-1-2016 18:32:28 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW blcc_v_rap_cat_frozenplus
(
fclt_x_verwerkt,
fclt_f_debiteur,
fclt_f_organisatie,
locatie,
ruimte,
datum,
tijd,
resnr,
omschrijving,
artikelnr,
artikelomschrijving,
aantal,
stuksprijs,
kosten,
fclt_f_besteller,
costcenter,
hide_f_kostenplaats
)
AS
SELECT TO_CHAR (x.res_rsv_artikel_verwerkt, 'dd-mm-yyyy'), -- Verwerkt
COALESCE (x.prs_kenmerklink_waarde, '???') deb_nr,
(SELECT prs_afdeling_omschrijving
FROM prs_afdeling
WHERE prs_afdeling_key = x.prs_afdeling_key)
deb_oms,
DECODE (
x.alg_ruimte_key,
NULL,
'Onbekend',
rg.alg_gebouw_upper
|| '-'
|| rg.alg_verdieping_code
|| '-'
|| rg.alg_ruimte_nr)
afleveradres,
COALESCE (rr.res_ruimte_omschrijving, rg.alg_ruimte_omschrijving)
ruimte,
TO_CHAR (x.res_rsv_artikel_levering, 'dd-mm-yyyy') datum,
TO_CHAR (x.res_rsv_artikel_levering, 'hh24:mi') tijd,
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr resnr,
x.res_rsv_ruimte_omschrijving omschrijving,
x.res_artikel_nr,
x.res_artikel_omschrijving,
x.res_rsv_artikel_aantal,
ROUND ( (x.res_rsv_artikel_prijs / x.res_rsv_artikel_aantal), 5)
stuksprijs,
x.res_rsv_artikel_aantal
* ROUND ( (x.res_rsv_artikel_prijs / x.res_rsv_artikel_aantal), 5)
regeltotaal,
x.prs_perslid_naam_full,
(SELECT MAX (kw.res_kenmerkreservering_waarde)
FROM res_kenmerkwaarde kw, res_kenmerk rk
WHERE kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key
AND kw.res_kenmerkwaarde_verwijder IS NULL
AND kw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 1)
costcenter,
x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving
FROM (SELECT rra.res_rsv_artikel_verwerkt,
COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key)
res_ruimte_key,
COALESCE (rar1.alg_ruimte_key,
rar2.alg_ruimte_key,
rrr.alg_ruimte_key)
alg_ruimte_key,
rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
ra.res_artikel_nr,
ra.res_artikel_omschrijving,
rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal,
COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) prs_afdeling_key,
kl.prs_kenmerklink_waarde,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key = 6
AND rra.res_rsv_artikel_levering > TO_DATE ('20151001', 'yyyymmdd')
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND p.prs_perslid_key = pf.prs_perslid_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x
LEFT JOIN res_ruimte rr
ON x.res_ruimte_key = rr.res_ruimte_key
LEFT JOIN alg_v_ruimte_gegevens_all rg
ON x.alg_ruimte_key = rg.alg_ruimte_key
UNION ALL
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy-mm') || '*', -- Lopend
COALESCE (x.prs_kenmerklink_waarde, '???') deb_nr,
(SELECT prs_afdeling_omschrijving
FROM prs_afdeling
WHERE prs_afdeling_key = x.prs_afdeling_key)
deb_oms,
DECODE (
x.alg_ruimte_key,
NULL,
'Onbekend',
rg.alg_gebouw_upper
|| '-'
|| rg.alg_verdieping_code
|| '-'
|| rg.alg_ruimte_nr)
afleveradres,
COALESCE (rr.res_ruimte_nr, rg.alg_ruimte_omschrijving) ruimte,
TO_CHAR (x.res_rsv_artikel_levering, 'dd-mm-yyyy') datum,
TO_CHAR (x.res_rsv_artikel_levering, 'hh24:mi') tijd,
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr resnr,
x.res_rsv_ruimte_omschrijving omschrijving,
x.res_artikel_nr,
x.res_artikel_omschrijving,
x.res_rsv_artikel_aantal,
ROUND ( (x.res_rsv_artikel_prijs / x.res_rsv_artikel_aantal), 5)
stuksprijs,
x.res_rsv_artikel_aantal
* ROUND ( (x.res_rsv_artikel_prijs / x.res_rsv_artikel_aantal), 5)
regeltotaal,
x.prs_perslid_naam_full,
(SELECT MAX (kw.res_kenmerkreservering_waarde)
FROM res_kenmerkwaarde kw, res_kenmerk rk
WHERE kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key
AND kw.res_kenmerkwaarde_verwijder IS NULL
AND kw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 1)
costcenter,
x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving
FROM (SELECT rra.res_rsv_artikel_verwerkt,
COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key)
res_ruimte_key,
COALESCE (rar1.alg_ruimte_key,
rar2.alg_ruimte_key,
rrr.alg_ruimte_key)
alg_ruimte_key,
rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
ra.res_artikel_nr,
ra.res_artikel_omschrijving,
rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal,
COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) prs_afdeling_key,
kl.prs_kenmerklink_waarde,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key != 6
AND rra.res_rsv_artikel_levering < SYSDATE
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND p.prs_perslid_key = pf.prs_perslid_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x
LEFT JOIN res_ruimte rr
ON x.res_ruimte_key = rr.res_ruimte_key
LEFT JOIN alg_v_ruimte_gegevens_all rg
ON x.alg_ruimte_key = rg.alg_ruimte_key;
CREATE OR REPLACE VIEW blcc_v_rap_cat_frozen
(
fclt_f_exportjob,
fclt_f_bedrijf,
afleveradres,
fclt_f_afleverdatum,
tijdstip,
bestelnummer,
fclt_f_artikelnummer,
artikelomschrijving,
interne_artikelprijs,
aantal,
fclt_f_besteller,
costcenter,
afdeling,
fclt_3d_afdeling_key
)
AS
SELECT TO_CHAR (x.res_rsv_artikel_verwerkt, 'dd-mm-yyyy') verwerkt,
--'Sodexo BV',
DECODE (
FLOOR (x.ins_discipline_volgnr / 1000),
1, 'Sodexo BV', -- Geleen t/m 27-08-2016
2, 'Hutten', -- Geleen per 28-08-2016
3, 'Verde', -- Heerlen
'???')
bedrijf,
DECODE (
x.alg_ruimte_key,
NULL, 'Onbekend',
rg.alg_locatie_code
|| '-'
|| rg.alg_gebouw_upper
|| '-'
|| rg.alg_verdieping_code
|| '-'
|| rg.alg_ruimte_nr
|| ' ('
|| rg.alg_ruimte_omschrijving
|| ')')
afleveradres,
TO_CHAR (x.res_rsv_artikel_levering, 'dd-mm-yyyy') datum,
TO_CHAR (x.res_rsv_artikel_levering, 'hh24:mi') tijd,
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr bestelnr,
x.res_artikel_nr,
x.res_artikel_omschrijving,
ROUND ( (x.res_rsv_artikel_prijs / x.res_rsv_artikel_aantal), 5)
interneprijs,
x.res_rsv_artikel_aantal,
x.prs_perslid_naam_full,
(SELECT MAX (kw.res_kenmerkreservering_waarde)
FROM res_kenmerkwaarde kw, res_kenmerk rk
WHERE kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key
AND kw.res_kenmerkwaarde_verwijder IS NULL
AND kw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 1)
costcenter,
x.prs_kostenplaats_nr || '-' || x.prs_kostenplaats_omschrijving afd,
DECODE (
FLOOR (x.ins_discipline_volgnr / 1000),
1, 225, -- Geleen t/m 27-08-2016/Sodexo
2, 961, -- Geleen per 28-08-2016/Hutten
3, 621, -- Heerlen/Verde
-1)
afdeling_key
FROM (SELECT rra.res_rsv_artikel_verwerkt,
COALESCE (rar1.alg_ruimte_key,
rar2.alg_ruimte_key,
rrr.alg_ruimte_key)
alg_ruimte_key,
rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
td.ins_discipline_volgnr, -- Bepaalt de leverancier!
ra.res_artikel_nr,
ra.res_artikel_omschrijving,
rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
res_discipline td,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key = 6
AND rra.res_rsv_artikel_levering > TO_DATE ('20151001', 'yyyymmdd')
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = td.ins_discipline_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x
LEFT JOIN
alg_v_ruimte_gegevens_all rg
ON x.alg_ruimte_key = rg.alg_ruimte_key;
CREATE OR REPLACE PROCEDURE blcc_add_xml_row (p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand, v_index, p_regel);
END;
/
CREATE OR REPLACE PROCEDURE blcc_add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
blcc_add_xml_row (
p_bestand,
'<'
|| p_tag
|| '>'
|| xml.char_to_html (p_value)
|| '</'
|| p_tag
|| '>');
END;
/
CREATE OR REPLACE VIEW blcc_v_export_proquro (result, result_order)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'PROQURO';
/* Formatted on 11-9-2015 11:12:48 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE blcc_select_proquro (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Markeren te exporteren opdracht-verplichtingen (via ordernr)!
CURSOR c1
IS
SELECT '['
|| TO_CHAR (o.mld_melding_key)
|| '|'
|| TO_CHAR (o.mld_opdr_key)
|| '] '
aanduiding,
o.mld_opdr_key
FROM mld_opdr o
WHERE o.mld_opdr_ordernr IS NULL -- Geen ordernr, dus bijwerken!
AND o.mld_statusopdr_key = 9 -- Afgerond
--AND o.mld_opdr_kosten > 0 -- Allemaal, ook als kosten=0
AND o.mld_typeopdr_key != 103 -- Geen RFQs
ORDER BY 1;
-- Markeren te exporteren catering-verplichtingen (via RESAFM/RESVER)!
-- LET OP: Maandelijks in de nacht na de 2e werkdag van de maand.
-- BLCC#38809: SCC uitsluiten (alleen regels als volgnr 1000 t/m 2999)!
CURSOR c2
IS
SELECT '['
|| TO_CHAR (rra.res_rsv_ruimte_key)
|| '|'
|| TO_CHAR (rra.res_rsv_artikel_key)
|| '] '
aanduiding,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_key,
rra.res_status_bo_key,
rra.res_artikel_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, res_discipline td
WHERE rra.res_status_bo_key != 6 -- Niet Verwerkt, dus verwerken!
AND rra.res_rsv_artikel_dirtlevel = 0
AND rra.res_rsv_artikel_levering < TRUNC (SYSDATE, 'mm') -- Voor 1e
AND rra.res_rsv_artikel_levering > TO_DATE ('20151001', 'yyyymmdd')
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = td.ins_discipline_key
AND td.ins_discipline_volgnr >= 1000 -- Gedefinieerde catalogi
AND td.ins_discipline_volgnr <= 2999 -- 1Sodexo/2Hutten/3Verde
ORDER BY 1;
-- Wegschrijven te exporteren verplichting-regels (= factuur naar ProQuro).
-- BLCC#38809: SCC uitsluiten (alleen regels als volgnr 1000 t/m 2999)!
CURSOR c3
IS -- Regel per Afgeronde mld_opdr zojuist gemarkeerd!
SELECT sd.ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
externalid,
p.prs_perslid_nr, -- AdministrationExternalId
kp.prs_kostenplaats_nr costcentre, -- CostcentreExternalId
b.prs_leverancier_nr,
'FACILITOR Ref.nr. '
|| sd.ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|| ' ('
|| td.ins_discipline_omschrijving
|| '-'
|| sm.mld_stdmelding_omschrijving
|| ')'
omschrijving,
o.mld_opdr_kosten price,
TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), 'yyyy-mm-dd')
deliverydate,
COALESCE (ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms)
costtype, -- CostTypeExternalId
DECODE (aog.alg_gebouw_code,
NULL, 'C-0000-000-00',
'122-001N', 'C-0122-001-01',
'122-00TW', 'C-0122-000-00',
'122-03B', 'C-0122-003-01',
'122-32A', 'C-0122-032-01',
'122-93A', 'C-0122-093-01',
'122-93B', 'C-0122-093-02', -- ???
'122-93C', 'C-0122-093-03',
'122-93D', 'C-0122-093-04',
'122-93E', 'C-0122-093-05', -- ???
'122-94A', 'C-0122-094-01',
'122-94B', 'C-0122-094-02',
'124-037Itter', 'C-0122-037-00',
'C-0' || aog.alg_gebouw_code || '-00')
costproject -- CostProjectExternalId
FROM mld_opdr o,
--fac_tracking t,
mld_melding m,
alg_v_allonrgoed_gegevens aog,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
prs_kostensoort ksm,
prs_kostensoort ksv,
prs_kostenplaats kp,
prs_bedrijf b,
prs_perslid p
WHERE SUBSTR (o.mld_opdr_ordernr, 1, 10) = TO_CHAR (SYSDATE, 'yyyy-mm-dd')
--AND o.mld_statusopdr_key = 9 -- Afgerond
--AND o.mld_opdr_key = t.fac_tracking_refkey
--AND t.fac_srtnotificatie_key = 70 -- ORDAFR
--AND t.fac_tracking_datum < TRUNC (SYSDATE, 'mm') -- Voor 1e
AND o.mld_opdr_kosten > 0
AND o.mld_typeopdr_key != 103 -- Geen RFQs
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
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 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
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND p.prs_perslid_key(+) = 101
UNION ALL -- Somregel alle Verwerkte res_rsv_artikel zojuist gemarkeerd!
SELECT 'BPV' || TO_CHAR(FLOOR (td.ins_discipline_volgnr / 1000)) || '/' || TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyymm'),
p.prs_perslid_nr, -- AdministrationExternalId
'50800' costcentre, -- CostcentreExternalId
b.prs_leverancier_nr,
'Cateringkosten ' || TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
omschrijving,
SUM (rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal)
price,
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm-dd')
deliverydate, -- Laatste dag voorgaande maand
'4181' costtype, -- CostTypeExternalId
NULL costproject
FROM res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_discipline td,
prs_bedrijf b,
prs_perslid p
WHERE TRUNC (rra.res_rsv_artikel_verwerkt) = TRUNC (SYSDATE)
--AND rra.res_status_bo_key = 6
--AND rra.res_rsv_artikel_levering < TRUNC (SYSDATE, 'mm') -- Voor 1e
--AND rra.res_rsv_artikel_levering > TO_DATE ('20151001', 'yyyymmdd')
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = td.ins_discipline_key
AND b.prs_bedrijf_key =
DECODE (FLOOR (td.ins_discipline_volgnr / 1000),
1, 153, -- Geleen t/m 27-08-2016/Sodexo
2, 4581, -- Geleen per 28-08-2016/Hutten
3, -1, -- Heerlen/Verde
-1)
AND p.prs_perslid_key(+) = 101 -- Pseudo-user
GROUP BY 'BPV' || TO_CHAR(FLOOR (td.ins_discipline_volgnr / 1000)) || '/' || TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyymm'),
p.prs_perslid_nr,
'50800',
b.prs_leverancier_nr,
'Cateringkosten ' || TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'),
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm-dd'),
'4181',
'C-0000-000-00' -- Algemene C-code!
ORDER BY 1;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER;
v_prijs NUMBER (9, 2);
v_bestand VARCHAR2 (12);
v_order_count NUMBER;
v_amount_sum NUMBER (10, 2);
BEGIN
v_bestand := SUBSTR (p_applname, 1, 12);
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout bijwerken mld_opdr';
UPDATE mld_opdr
SET mld_opdr_ordernr = TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss')
WHERE mld_opdr_key = rec.mld_opdr_key;
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.writelog (p_applname,
'W',
rec.aanduiding || v_errormsg,
'Opdracht-verplichtingen');
COMMIT;
END;
END LOOP;
COMMIT;
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: ProQuro-export draait dagelijks na middernacht (begin van dag) en
-- voor de catering-verplichtingen is afgesproken dat deze maandelijks in de
-- nacht na 1e werkdag (was 2e) van de maand worden verwerkt.
-- IF nacht na 1e werkdag van de maand (<28>n geen weekend <20>n geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
FOR rec IN c2
LOOP
BEGIN
IF rec.res_status_bo_key = 2
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_inkoopprijs =
(SELECT res_artikel_inkoopprijs
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key),
res_rsv_artikel_btw =
(SELECT res_artikel_btw
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM',
rec.res_rsv_ruimte_key,
NULL,
NULL,
'Catering afgemeld');
END IF;
v_errormsg := 'Fout verwerken res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER',
rec.res_rsv_ruimte_key,
NULL,
NULL,
'Catering verwerkt');
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.writelog (p_applname,
'W',
rec.aanduiding || v_errormsg,
'Catering-verplichtingen');
COMMIT;
END;
END LOOP;
END IF;
v_order_count := 0;
v_amount_sum := 0;
FOR rec IN c3
LOOP
BEGIN
v_order_count := v_order_count + 1;
v_amount_sum := v_amount_sum + rec.price;
END;
END LOOP;
IF v_order_count > 0
THEN
--blcc_add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>'); -- ???
blcc_add_xml_row (v_bestand, '<Orders>');
FOR rec IN c3
LOOP
BEGIN
--blcc_add_xml_row (v_bestand, '<AddOrder>');
blcc_add_xml_row (v_bestand, '<Order>');
--blcc_add_xml_element (v_bestand, 'securityKey', 'xxx');
--blcc_add_xml_row (v_bestand, '<parms>');
blcc_add_xml_element (v_bestand, 'ExternalId', rec.externalid);
blcc_add_xml_element (v_bestand, 'AdministrationExternalId', rec.prs_perslid_nr); -- Personeelsnummer van API-user
blcc_add_xml_element (v_bestand, 'OrderTypeId', '9'); -- Hard op '9'
blcc_add_xml_element (v_bestand, 'ProcessExternalId', '7'); -- Hard op '7'
blcc_add_xml_element (v_bestand, 'CostcentreExternalId', rec.costcentre); -- Kostenplaats van opdracht
blcc_add_xml_element (v_bestand, 'ProductgroupExternalId', '1'); -- Hard op '1'
blcc_add_xml_element (v_bestand, 'SupplierExternalId', rec.prs_leverancier_nr);
blcc_add_xml_element (v_bestand, 'ProForma', 'False'); -- Hard op 'False'
blcc_add_xml_row (v_bestand, '<OrderLines>');
blcc_add_xml_row (v_bestand, '<OrderLine>');
blcc_add_xml_element (v_bestand, 'LineId', '1'); -- Hard op '1'
--blcc_add_xml_element (v_bestand, 'ArticleSupplierExternalId', '');
blcc_add_xml_element (v_bestand, 'ProductName', rec.omschrijving);
blcc_add_xml_element (v_bestand, 'Quantity', '1'); -- Hard op '1'
blcc_add_xml_element (v_bestand, 'Price', TO_CHAR (rec.price));
blcc_add_xml_element (v_bestand, 'CurrencyExternalId', 'EUR'); -- Hard op 'EUR'
blcc_add_xml_element (v_bestand, 'OrderUnitExternalId', 'Stuks'); -- Hard op 'Stuks'
blcc_add_xml_element (v_bestand, 'VatExternalId', 'IH'); -- Hard op 'IH'
blcc_add_xml_element (v_bestand, 'DeliveryDate', rec.deliverydate); -- ORDAFM of laatste dag van maand voor RES
blcc_add_xml_element (v_bestand, 'CostTypeExternalId', rec.costtype); -- Kostensoort uit soortmelding
blcc_add_xml_element (v_bestand, 'CostProjectExternalId', rec.costproject); -- Transformatie van MLD-Gebouwcode
blcc_add_xml_row (v_bestand, '</OrderLine>');
blcc_add_xml_row (v_bestand, '</OrderLines>');
--blcc_add_xml_row (v_bestand, '</parms>');
--blcc_add_xml_row (v_bestand, '</AddOrder>');
blcc_add_xml_row (v_bestand, '</Order>');
END;
END LOOP;
blcc_add_xml_row (v_bestand, '</Orders>');
END IF;
fac.writelog (
p_applname,
'S',
'ProQuro export/#regels: '
|| TO_CHAR (v_order_count),
TO_CHAR (v_amount_sum));
END;
/
--BLCC#38809: SSC uitsluiten:
-- - Voor opdrachten gaat dat goed, want Doorbelasten-vinkje alleen
-- gebruikt binnen BCC (niet helemaal toekomstvast)!
-- - Voor reserveringen alleen regels als volgnr 1000 t/m 2999!
/* Formatted on 11-9-2015 9:16:18 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW blcc_v_rap_tf_actual
(
fclt_x_maand,
fclt_x_debiteur,
factuurtype,
debiteur,
nummer,
factuurdatum,
vervaldatum,
kop,
voet,
valuta,
aantal,
artikel,
subartikel,
omschrijving,
artikelprijs_excl,
artikelprijs_incl,
btw,
grootboek,
vrij_tekstveld_1,
vrij_tekstveld_2,
vrij_tekstveld_3
)
AS
SELECT TO_CHAR (t.fac_tracking_datum, 'yyyy-mm'),
(SELECT prs_afdeling_omschrijving
|| ' ['
|| kl.prs_kenmerklink_waarde
|| ']'
FROM prs_afdeling
WHERE prs_afdeling_key = kl.prs_link_key)
debiteur_oms,
'FACTUUR',
kl.prs_kenmerklink_waarde, -- Debiteur
NULL,
'Lopend',
NULL,
NULL,
NULL,
'EUR',
1,
0, -- Eenmalig artikel
NULL,
sd.ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|| ' ['
|| td.ins_discipline_omschrijving
|| '/'
|| sm.mld_stdmelding_omschrijving
|| ']'
|| DECODE (km.mld_kenmerkmelding_waarde, NULL, '', ' (=' || km.mld_kenmerkmelding_waarde || ')'),
o.mld_opdr_kosten,
NULL,
'VH',
COALESCE (ksm.prs_kostensoort_refcode, ksv.prs_kostensoort_refcode),
NULL,
NULL,
NULL
FROM mld_opdr o,
fac_tracking t,
mld_v_aanwezigkenmerkopdr ko,
mld_kenmerk k,
mld_melding m,
(SELECT *
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 241) km, -- Refnr. aanvrager
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
alg_v_allonrgoed_gegevens og,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
prs_kostensoort ksm,
prs_kostensoort ksv,
prs_kostenplaats kp,
prs_bedrijf b
WHERE o.mld_statusopdr_key = 9 -- Afgerond
--AND o.mld_opdr_ordernr IS NULL Sommige wel, sommige niet!
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 70 -- ORDAFR
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key = 61 -- Doorbelasten-vinkje
AND k.mld_srtkenmerk_key = 241 -- Doorbelasten-Ja/Nee
AND ko.mld_kenmerkopdr_waarde = '281' -- Ja
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_key = km.mld_melding_key(+)
AND m.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
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 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
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
UNION ALL -- Catering gegroepeerd per debiteur/kostensoort!
SELECT TO_CHAR (reslev, 'yyyy-mm'),
debiteur_oms,
'FACTUUR',
debiteur,
NULL,
'Lopend',
NULL,
NULL,
NULL,
'EUR',
1,
0, -- Eenmalig artikel
NULL,
'Cateringkosten ' || TO_CHAR (reslev, 'yyyy-mm'),
SUM (verw_prijs),
NULL,
'VH',
prs_kostensoort_refcode,
NULL,
NULL,
NULL
FROM (SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
res_id,
kl.prs_kenmerklink_waarde debiteur,
(SELECT prs_afdeling_omschrijving
|| ' ['
|| kl.prs_kenmerklink_waarde
|| ']'
FROM prs_afdeling
WHERE prs_afdeling_key = kl.prs_link_key)
debiteur_oms,
ks.prs_kostensoort_refcode,
res_rsv_artikel_key res_item_key,
LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
--rra.res_rsv_artikel_aantal aantal,
--ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_levering reslev,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.alg_ruimte_key IS NULL -- Combi catering
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
--AND rra.res_status_bo_key = 5 Sommige wel, sommige niet!
--AND (rra.res_rsv_artikel_verwerkt IS NULL
-- OR rra.res_rsv_artikel_verwerkt > SYSDATE - 5) -- Op 5e Verwerkt en pas op 10e naar Twinfield!
AND rra.res_rsv_artikel_verwerkt IS NULL
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
AND rd.ins_discipline_volgnr >= 1000 -- Gedefinieerde catalogi
AND rd.ins_discipline_volgnr <= 2999 -- 1Sodexo/2Hutten/3VerdeNIET
--AND ks.prs_kostensoort_doorbelasten(+) = 1
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND rra.res_rsv_artikel_levering < SYSDATE
UNION ALL
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
resid,
kl.prs_kenmerklink_waarde debiteur,
(SELECT prs_afdeling_omschrijving
|| ' ['
|| kl.prs_kenmerklink_waarde
|| ']'
FROM prs_afdeling
WHERE prs_afdeling_key = kl.prs_link_key)
debiteur_oms,
ks.prs_kostensoort_refcode,
res_rsv_artikel_key res_item_key,
LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
--rra.res_rsv_artikel_aantal aantal,
--ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_levering reslev,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.res_ruimte_opstel_key IS NULL -- Losse catering
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
--AND rra.res_status_bo_key = 5 Sommige wel, sommige niet!
--AND (rra.res_rsv_artikel_verwerkt IS NULL
-- OR rra.res_rsv_artikel_verwerkt > SYSDATE - 5) -- Op 5e Verwerkt en pas op 10e naar Twinfield!
AND rra.res_rsv_artikel_verwerkt IS NULL
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
AND rd.ins_discipline_volgnr >= 1000 -- Gedefinieerde catalogi
AND rd.ins_discipline_volgnr <= 2999 -- 1Sodexo/2Hutten/3VerdeNIET
--AND ks.prs_kostensoort_doorbelasten(+) = 1
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND rra.res_rsv_artikel_levering < SYSDATE)
GROUP BY TO_CHAR (reslev, 'yyyy-mm'),
debiteur_oms,
debiteur,
prs_kostensoort_refcode;
/* Formatted on 17-9-2015 10:40:20 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW blcc_v_rap_tf_frozen
(
fclt_x_maand,
fclt_x_debiteur,
factuurtype,
debiteur,
nummer,
factuurdatum,
vervaldatum,
kop,
voet,
valuta,
aantal,
artikel,
subartikel,
omschrijving,
artikelprijs_excl,
artikelprijs_incl,
btw,
grootboek,
vrij_tekstveld_1,
vrij_tekstveld_2,
vrij_tekstveld_3
)
AS
SELECT TO_CHAR (t.fac_tracking_datum, 'yyyy-mm'),
(SELECT prs_afdeling_omschrijving || ' [' || kl.prs_kenmerklink_waarde || ']'
FROM prs_afdeling
WHERE prs_afdeling_key = kl.prs_link_key)
debiteur_oms,
'FACTUUR',
kl.prs_kenmerklink_waarde,
NULL,
TO_CHAR (t.fac_tracking_datum, 'dd-mm-yyyy'),
NULL,
NULL,
NULL,
'EUR',
1,
0, -- Eenmalig artikel
NULL,
sd.ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|| ' ['
|| td.ins_discipline_omschrijving
|| '/'
|| sm.mld_stdmelding_omschrijving
|| ']'
|| DECODE (km.mld_kenmerkmelding_waarde, NULL, '', ' (=' || km.mld_kenmerkmelding_waarde || ')'),
o.mld_opdr_kosten,
NULL,
'VH',
COALESCE (ksm.prs_kostensoort_refcode, ksv.prs_kostensoort_refcode),
NULL,
NULL,
NULL
FROM mld_opdr o,
fac_tracking t,
mld_v_aanwezigkenmerkopdr ko,
mld_kenmerk k,
mld_melding m,
(SELECT *
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 241) km, -- Refnr. aanvrager
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
alg_v_allonrgoed_gegevens og,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
prs_kostensoort ksm,
prs_kostensoort ksv,
prs_kostenplaats kp,
prs_bedrijf b
WHERE o.mld_opdr_ordernr IS NOT NULL -- Zou zo moeten zijn!
AND o.mld_statusopdr_key = 7 -- Zou zo moeten zijn!
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 70 -- ORDAFR
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
--AND k.mld_srtkenmerk_key = 61 -- Doorbelasten-vinkje
AND k.mld_srtkenmerk_key = 241 -- Doorbelasten-Ja/Nee
AND ko.mld_kenmerkopdr_waarde = '281' -- Ja
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_key = km.mld_melding_key(+)
AND m.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
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 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
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
UNION ALL -- Catering gegroepeerd per debiteur/kostensoort!
SELECT TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm'),
debiteur_oms,
'FACTUUR',
debiteur,
NULL,
TO_CHAR (TRUNC (resver, 'mm') - 1, 'dd-mm-yyyy'),
NULL,
NULL,
NULL,
'EUR',
1,
0, -- Eenmalig artikel
NULL,
'Cateringkosten ' || TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm'),
SUM (verw_prijs),
NULL,
'VH',
prs_kostensoort_refcode,
NULL,
NULL,
NULL
FROM (SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
res_id,
kl.prs_kenmerklink_waarde debiteur,
(SELECT prs_afdeling_omschrijving || ' [' || kl.prs_kenmerklink_waarde || ']'
FROM prs_afdeling
WHERE prs_afdeling_key = kl.prs_link_key)
debiteur_oms,
ks.prs_kostensoort_refcode,
--TRUNC (rra.res_rsv_artikel_levering) lev_datum,
--ra.res_discipline_key res_ins_discipline_key,
res_rsv_artikel_key res_item_key,
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')'
res_voorziening,
--rra.res_rsv_artikel_aantal aantal,
--ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_verwerkt resver,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.alg_ruimte_key IS NULL -- Combi catering
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_status_bo_key = 6 -- AV
--AND rra.res_rsv_artikel_verwerkt < SYSDATE - 5 -- Op 5e Verwerkt en pas op 10e naar Twinfield!
AND rra.res_rsv_artikel_verwerkt IS NOT NULL
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
--AND ks.prs_kostensoort_doorbelasten(+) = 1
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
UNION ALL
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
resid,
kl.prs_kenmerklink_waarde debiteur,
(SELECT prs_afdeling_omschrijving || ' [' || kl.prs_kenmerklink_waarde || ']'
FROM prs_afdeling
WHERE prs_afdeling_key = kl.prs_link_key)
debiteur_oms,
ks.prs_kostensoort_refcode,
--TRUNC (rra.res_rsv_artikel_levering) lev_datum,
--ra.res_discipline_key res_ins_discipline_key,
res_rsv_artikel_key res_item_key,
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')'
res_voorziening,
--rra.res_rsv_artikel_aantal aantal,
--ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_verwerkt resver,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_kenmerklink kl,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_discipline rd,
prs_kostensoort ks
WHERE rrr.res_ruimte_opstel_key IS NULL -- Losse catering
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+)
AND kl.prs_kenmerklink_niveau(+) = 'A'
AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_status_bo_key = 6 -- AV
--AND rra.res_rsv_artikel_verwerkt < SYSDATE - 5 -- Op 5e Verwerkt en pas op 10e naar Twinfield!
AND rra.res_rsv_artikel_verwerkt IS NOT NULL
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
--AND ks.prs_kostensoort_doorbelasten(+) = 1
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+))
GROUP BY TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm'),
debiteur_oms,
debiteur,
TO_CHAR (TRUNC (resver, 'mm') - 1, 'dd-mm-yyyy'),
prs_kostensoort_refcode;
/* Formatted on 30-9-2015 10:15:45 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW blcc_v_export_twinfield
(
result,
result_order
)
AS -- View bevat alleen inhoud op de dag na de 2e werkdag van de maand!
SELECT 'factuurtype'
|| ';debiteur'
|| ';nummer'
|| ';factuurdatum'
|| ';vervaldatum'
|| ';kop'
|| ';voet'
|| ';valuta'
|| ';aantal'
|| ';artikel'
|| ';subartikel'
|| ';omschrijving'
|| ';artikelprijs_excl'
|| ';artikelprijs_incl'
|| ';btw'
|| ';grootboek'
|| ';vrij_tekstveld_1'
|| ';vrij_tekstveld_2'
|| ';vrij_tekstveld_3',
0
FROM DUAL
WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
UNION ALL
SELECT factuurtype
|| ';'
|| debiteur
|| ';'
|| nummer
|| ';'
|| factuurdatum
|| ';'
|| vervaldatum
|| ';'
|| kop
|| ';'
|| voet
|| ';'
|| valuta
|| ';'
|| aantal
|| ';'
|| artikel
|| ';'
|| subartikel
|| ';'
|| omschrijving
|| ';'
|| artikelprijs_excl
|| ';'
|| artikelprijs_incl
|| ';'
|| btw
|| ';'
|| grootboek
|| ';'
|| vrij_tekstveld_1
|| ';'
|| vrij_tekstveld_2
|| ';'
|| vrij_tekstveld_3,
ROWNUM
FROM ( SELECT factuurtype,
debiteur,
nummer,
factuurdatum,
vervaldatum,
kop,
voet,
valuta,
aantal,
artikel,
subartikel,
omschrijving,
artikelprijs_excl,
artikelprijs_incl,
btw,
grootboek,
vrij_tekstveld_1,
vrij_tekstveld_2,
vrij_tekstveld_3
FROM blcc_v_rap_tf_frozen
WHERE fclt_x_maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
ORDER BY debiteur,
fclt_x_maand || '-' || SUBSTR (factuurdatum, 1, 2),
grootboek)
WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1));
/* Formatted on 30-9-2015 10:20:30 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE blcc_select_twinfield (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Verwerken te exporteren opdracht-verkoop (<28>n de rest)!
CURSOR c1
IS
SELECT '[' || TO_CHAR (o.mld_melding_key) || '|' || TO_CHAR (o.mld_opdr_key) || '] '
aanduiding,
o.mld_opdr_key,
o.mld_opdr_kosten,
--k.mld_kenmerk_key,
DECODE (ko.mld_kenmerkopdr_waarde, '281', 1, 0) doorbelasten
FROM mld_opdr o,
fac_tracking t,
mld_v_aanwezigkenmerkopdr ko,
--mld_kenmerk k
(SELECT * FROM mld_kenmerk WHERE mld_srtkenmerk_key = 241) k -- Doorbelasten-Ja/Nee
WHERE o.mld_opdr_ordernr IS NOT NULL -- Reeds doorgezet naar ProQuro (of 0)
AND o.mld_statusopdr_key = 9 -- Afgerond
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 70 -- ORDAFR
AND t.fac_tracking_datum < TRUNC (SYSDATE, 'mm')
--AND o.mld_opdr_kosten > 0 -- Allemaal, ook als kosten=0
AND o.mld_opdr_key = ko.mld_opdr_key(+)
AND ko.mld_kenmerk_key = k.mld_kenmerk_key(+);
CURSOR c2
IS
SELECT '[' || debiteur || '] '
aanduiding,
artikelprijs_excl
FROM blcc_v_rap_tf_frozen
WHERE fclt_x_maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
AND omschrijving LIKE 'Cateringkosten%';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER;
v_order_count NUMBER;
v_amount_sum NUMBER (10, 2);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: Twinfield-export draait dagelijks na middernacht (begin van dag)
-- en de verkoop wordt maandelijks alleen in de nacht na 1e werkdag (was 2e)
-- van de maand doorgezet.
-- IF nacht na 1e werkdag van de maand (<28>n geen weekend <20>n geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout verwerken mld_opdr';
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, NULL);
v_errormsg := 'Fout meetellen mld_opdr';
--IF rec.mld_kenmerk_key IS NOT NULL
IF rec.doorbelasten = 1
THEN
v_order_count := v_order_count + 1;
v_amount_sum := v_amount_sum + rec.mld_opdr_kosten;
END IF;
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.writelog (p_applname,
'W',
rec.aanduiding || v_errormsg,
'Opdracht-verkoop');
COMMIT;
END;
END LOOP;
COMMIT;
FOR rec IN c2
LOOP
BEGIN
v_errormsg := 'Fout meetellen res_rsv_artikel';
v_order_count := v_order_count + 1;
v_amount_sum := v_amount_sum + rec.artikelprijs_excl;
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.writelog (p_applname,
'W',
rec.aanduiding || v_errormsg,
'Catering-verkoop');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname,
'S',
'Twinfield export/#regels: ' || TO_CHAR (v_order_count),
TO_CHAR (v_amount_sum));
END IF;
END;
/
/* Formatted on 29-6-2016 18:42:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE blcc_import_perslid (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint := 'Generieke import ' || TO_CHAR (p_import_key);
-- Afdelingscode-kolom hard op 'XxX' indien leeg (want verplicht)!
UPDATE fac_imp_file
SET fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 2))
|| 'XxX'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1
AND SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 2)
+ 1, INSTR (fac_imp_file_line, ';', 1, 3)
- INSTR (fac_imp_file_line, ';', 1, 2)
- 1) IS NULL;
COMMIT;
-- Functie-kolom negeren en hard op 'Medewerker' (want verplicht)!
UPDATE fac_imp_file i
SET fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 10))
|| 'Medewerker'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 11))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
COMMIT;
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;3;4;5;6;'
|| '0;0;0;0;10;7;8;9;0;0;'
|| '11;1;2;0;0;0;12;13;14;15;'
|| '16;17;18;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'Loginnaam;Wachtwoord;Afdelingscode;Achternaam;Tussenvoegsel;Voornaam;Telefoon;Mobiel;Email;Geslacht;Functie;Taal;SSC FOBO;SSC Digireceptiemedewerker;SSC Huurderadministrator%');
-- Klantspecifieke aanpassingen.
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ') ';
fac.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint,
'Inleesproces personen afgebroken!');
END blcc_import_perslid;
/
/* Formatted on 30-6-2016 12:30:30 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE blcc_update_perslid (p_import_key IN NUMBER)
AS
-- Verwijderen personen niet in import voor afdelingen wel in import!
CURSOR c_del
IS
SELECT p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_perslid_oslogin2 IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE UPPER (i.prs_afdeling_naam) = a.prs_afdeling_upper)
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE UPPER (i.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin))
ORDER BY 1;
-- Bijwerken werkplek van personen naar '_' (als nog geen werkplek)!
CURSOR c_wp
IS
SELECT p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key)
ORDER BY 1;
-- Bijwerken language van personen naar 'EN' (volgens importbestand)!
CURSOR c_lang
IS
SELECT p.prs_perslid_key, DECODE (i.prs_kenmerk1, 'EN', 'EN', 'NL') lang
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
ORDER BY 1;
-- Bijwerken autorisatiegroepen van personen (volgens importbestand)!
CURSOR c_rol (
p_ssc_fobo_key IN NUMBER,
p_ssc_dmedew_key IN NUMBER,
p_ssc_hadmin_key IN NUMBER)
IS
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk2), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_fobo_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk3), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_dmedew_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL
SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk4), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_hadmin_key fac_groep_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL -- Afnemen _Default
SELECT p.prs_perslid_key, 0 aanuit, 1 fac_groep_key -- _Default
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
UNION ALL -- Toewijzen SSC FE (LABS-key=241 en PROD-key=321)
SELECT p.prs_perslid_key, 1 aanuit, 321 fac_groep_key -- SSC FE
FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam)
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
ORDER BY 1, 3;
c_ruimte_key NUMBER := 2204; -- Fictieve ruimte op SSCH-locatie (LABS-key=2243 en PROD-key=2204)
c_ssc_fobo_key NUMBER := 341; -- SSC FOBO (LABS-key=241 en PROD-key=341)
c_ssc_dmedew_key NUMBER := 361; -- SSC Digireceptiemedewerker
c_ssc_hadmin_key NUMBER := 362; -- SSC Huurderadministrator
v_bedrijf_key NUMBER (10) := -1;
v_afdeling_naam VARCHAR2 (15) := '';
BEGIN
-- Als import door Huurderadministrator, dan Afdelingscode-kolom negeren en hard op Afdeling-1 van Huurderadministrator!
SELECT ab.prs_bedrijf_key, a.prs_afdeling_naam
INTO v_bedrijf_key, v_afdeling_naam
FROM fac_import i, prs_v_aanwezigperslid p, prs_afdeling a, prs_v_afdeling_boom ab
WHERE i.fac_import_key = p_import_key
AND i.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_key = ab.prs_afdeling_key;
IF v_bedrijf_key IN (1981, 2442) -- LABS-key+PROD-key van Huurders SSC-bedrijf; TODO: LABS-key nog een keer verwijderen!
THEN -- Import door Huurderadministrator!
UPDATE fac_imp_perslid
SET prs_afdeling_naam = v_afdeling_naam;
ELSE -- Import door andere administrator!
UPDATE fac_imp_perslid
SET prs_afdeling_naam = NULL
WHERE prs_afdeling_naam = 'XxX';
END IF;
COMMIT;
-- Generieke update.
prs.update_perslid (p_import_key, 'LOGIN', NULL);
-- Verwijderen personen niet in import voor afdelingen wel in import!
FOR rec IN c_del
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
COMMIT;
-- Toekennen fictieve werkplek op SSCH-locatie (voor wie daar nog niet een
-- werkplek heeft)!
-- Bijwerken werkplek van personen naar '_' (als nog geen werkplek)!
FOR rec IN c_wp
LOOP
prs.movetoruimte (rec.prs_perslid_key, c_ruimte_key, NULL);
END LOOP;
COMMIT;
-- Bijwerken language van personen naar 'EN' (volgens importbestand)!
FOR rec IN c_lang
LOOP
UPDATE prs_perslid
SET prs_perslid_lang = rec.lang
WHERE prs_perslid_key = rec.prs_perslid_key;
END LOOP;
COMMIT;
-- Bijwerken autorisatiegroepen van personen (volgens importbestand)!
FOR rec IN c_rol (c_ssc_fobo_key, c_ssc_dmedew_key, c_ssc_hadmin_key)
LOOP
IF rec.aanuit = 1
THEN
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT rec.fac_groep_key, rec.prs_perslid_key
FROM DUAL
WHERE NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = rec.fac_groep_key
AND prs_perslid_key = rec.prs_perslid_key);
ELSE
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key = rec.fac_groep_key
AND prs_perslid_key = rec.prs_perslid_key;
END IF;
END LOOP;
END blcc_update_perslid;
/
-- BLCC#38235: Import vanuit Strukton
/* Formatted on 22-5-2015 11:52:44 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE blcc_import_opdrstat_strukton (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_mld_opdr_key_tekst VARCHAR2 (100);
v_mld_opdr_key NUMBER (10);
v_mld_opdr_opmerking VARCHAR2 (4000);
v_extern_nummer VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_status NUMBER (10);
v_datumtijd_tekst VARCHAR2 (100);
v_datumtijd DATE;
v_status_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (4000);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM blcc_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
v_opmerking := SUBSTR (v_opmerking, 1, 1000);
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
v_aanduiding :=
'['
|| v_mld_opdr_key_tekst
|| '|'
|| v_extern_nummer
|| '|'
|| v_status_code
|| '|'
|| v_datumtijd_tekst
|| '|'
|| v_status_tekst
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF header_is_valid = 0
THEN
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout bepalen opdracht';
v_mld_opdr_key := TRIM (v_mld_opdr_key);
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
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 sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr =
v_mld_opdr_key_tekst;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bepalen status';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- For future use
--WHEN v_status_code = '40' -- uitgeprijst
--THEN
-- v_status := 6; -- afgemeld
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien
END CASE;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout converteren datumtijd';
IF INSTR (v_datumtijd_tekst, '.') > 0
THEN
v_datumtijd :=
fac.safe_to_date (
REPLACE (
SUBSTR (v_datumtijd_tekst,
1,
INSTR (v_datumtijd_tekst, '.') - 1),
'T',
' '),
'yyyy-mm-dd hh24:mi:ss');
ELSE
v_datumtijd :=
fac.safe_to_date (v_datumtijd_tekst,
'yyyy-mm-dd hh24:mi:ss');
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout aanvullen opmerking';
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
-- gemeld is.
IF v_opmerking IS NOT NULL
AND INSTR (v_mld_opdr_opmerking, v_opmerking) = 0
THEN
v_opmerking :=
'['
|| v_datumtijd_tekst
|| '] - '
|| v_status_tekst
|| CHR (13)
|| CHR (10)
|| v_opmerking;
ELSE
v_opmerking :=
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven statusbericht';
INSERT INTO blcc_imp_opdrstat_strukton (mld_opdr_key,
extern_nummer,
status,
datumtijd,
opmerking)
VALUES (v_mld_opdr_key,
v_extern_nummer,
v_status,
v_datumtijd,
v_opmerking);
v_count_imp := v_count_imp + 1;
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, 'E', v_aanduiding || v_errormsg, '');
END;
ELSE
IF v_status_code <> '40' AND v_status_code <> '45'
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
END IF;
END IF;
END IF;
END;
END LOOP;
IF header_is_valid = 0
THEN
fac.imp_writelog (p_import_key, 'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key, 'S',
'Inleesproces/#ingelezen statusberichten: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key, 'S',
'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp),
'');
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, 'E', v_aanduiding || v_errormsg,
'Inleesproces statusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE blcc_update_opdrstat_strukton (p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen statusberichten.
CURSOR c1
IS
SELECT mld_opdr_key, extern_nummer, datumtijd, status, opmerking
FROM blcc_imp_opdrstat_strukton
ORDER BY 1, 3;
c_user_key NUMBER (10) := 5; -- _STRUKTON-user
c_refnr_srtkkey NUMBER (10) := 261; -- Refnr. Leverancier
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count NUMBER (10) := 0;
v_mld_key NUMBER (10) := 0;
v_opdr_key NUMBER (10) := 0;
v_opdr_status NUMBER (10) := 0;
v_mld_typeopdr_key NUMBER (10);
v_mld_kenmerk_key NUMBER (10);
v_mld_kenmerkopdr_key NUMBER (10);
BEGIN
-- Loop over alle ingelezen Strukton-statusberichten.
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.mld_opdr_key
|| '|'
|| SUBSTR (rec.opmerking, 1, 100)
|| '] ';
v_count_tot := v_count_tot + 1;
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
IF rec.mld_opdr_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerk.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
SELECT MAX (ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
IF v_mld_kenmerkopdr_key IS NULL
THEN
-- Kenmerk toevoegen
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- Kenmerk bijwerken
v_errormsg := 'Fout bijwerken Refnr-kenmerkopdracht.';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = rec.extern_nummer
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
v_errormsg := 'Fout bijwerken Opmerking (opdracht).';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (
mld_opdr_opmerking,
NULL,
rec.opmerking,
rec.opmerking
|| CHR (13)
|| CHR (10)
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
v_errormsg := 'Fout bijwerken Status.';
IF v_opdr_status <> rec.status
THEN
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer opdracht als de opdracht uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton, eerst accepteren
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 1 AND v_opdr_status IN (5, 8)
THEN
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
v_errormsg := 'Fout bijwerken Opmerking (melding).';
UPDATE mld_melding m
SET mld_melding_opmerking =
DECODE (
mld_melding_opmerking,
NULL,
rec.opmerking,
rec.opmerking || CHR (13) || CHR (10)
|| SUBSTR (mld_melding_opmerking,
1,
(4000 - v_count)))
WHERE mld_melding_key = v_mld_key
AND mld_melding_status IN (4, 7)
AND NOT EXISTS
( -- Afhandeling in melding niet aanpassen voor projecten
SELECT sm.mld_stdmelding_key
FROM mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix = 'QQQ');
v_errormsg := 'Fout sluiten melding.';
SELECT COUNT ( * )
INTO v_count
FROM (SELECT m.mld_melding_key,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
aanw_opdr,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9))
open_opdr
FROM mld_melding m
WHERE m.mld_melding_key = v_mld_key
AND m.mld_melding_status IN (4, 7))
niet_opgelost
WHERE aanw_opdr > 0 AND open_opdr = 0;
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
END IF;
END IF;
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, 'E', v_aanduiding || v_errormsg,
'Statusbericht-loop');
END;
END LOOP;
COMMIT;
END;
/
/* Formatted on 7-6-2016 13:24:42 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW blcc_v_autorisatiegroepen
(
fac_groep_key,
fac_groep_oms
)
AS
SELECT fac_groep_key, fac_groep_omschrijving
FROM fac_groep
WHERE fac_groep_omschrijving LIKE 'SSC%';
-- BLCC#38512
/* Formatted on 3-1-2017 12:06:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW blcc_v_rap_mldtrk
(
melding,
aanmaakdatumtijd,
aanmaakdatum,
aanmaaktijdstip,
meldingstatus,
plan_einddatum,
sla_einddatum,
wijzigingsdatumtijd,
wijzigingsdatum,
wijzigingstijdstip,
wijzigingdoor,
wijzigingcode
)
AS
SELECT sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) melding,
m.mld_melding_datum aanmaakdatumtijd,
TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') aanmaakdatum,
TO_CHAR (m.mld_melding_datum, 'hh24:mi:ss') aanmaaktijdstip,
ms.mld_statuses_omschrijving meldingstatus,
TO_CHAR (m.mld_melding_einddatum, 'dd-mm-yyyy hh24:mi:ss') plan_einddatum,
TO_CHAR (m.mld_melding_einddatum_std, 'dd-mm-yyyy hh24:mi:ss') sla_einddatum,
t.fac_tracking_datum wijzigingsdatumtijd,
TO_CHAR (t.fac_tracking_datum, 'dd-mm-yyyy') wijzigingsdatum,
TO_CHAR (t.fac_tracking_datum, 'hh24:mi:ss') wijzigingstijdstip,
pf.prs_perslid_naam_full tracking_door,
sn.fac_srtnotificatie_code tracking_code
FROM mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
fac_tracking t,
fac_srtnotificatie sn,
prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_status = ms.mld_statuses_key
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 sd.ins_srtdiscipline_key = 1 -- BCC
AND m.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND sn.fac_srtnotificatie_key IN (43, 37, 44, 38, 39, 46, 47, 48, 49) -- MLDNEW, MLDACP, MLDREJ, MLDAFM, MLDAFR, MLDVER, MLDDOO, MLDFWD, MLDBWD
AND t.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW blcc_v_rap_ordtrk
(
opdracht,
aanmaakdatumtijd,
aanmaakdatum,
aanmaaktijdstip,
opdrachtstatus,
plan_einddatum,
wijzigingsdatumtijd,
wijzigingsdatum,
wijzigingstijdstip,
wijzigingdoor,
wijzigingcode
)
AS
SELECT sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) opdracht,
o.mld_opdr_datumbegin aanmaakdatumtijd,
TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy') aanmaakdatum,
TO_CHAR (o.mld_opdr_datumbegin, 'hh24:mi:ss') aanmaaktijdstip,
os.mld_statusopdr_omschrijving opdrachtstatus,
TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy hh24:mi:ss') plan_einddatum, -- Of mld_opdr_plandatum?
t.fac_tracking_datum wijzigingsdatumtijd,
TO_CHAR (t.fac_tracking_datum, 'dd-mm-yyyy') wijzigingsdatum,
TO_CHAR (t.fac_tracking_datum, 'hh24:mi:ss') wijzigingstijdstip,
pf.prs_perslid_naam_full tracking_door,
sn.fac_srtnotificatie_code tracking_code
FROM mld_opdr o,
mld_statusopdr os,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
fac_tracking t,
fac_srtnotificatie sn,
prs_v_perslid_fullnames_all pf
WHERE o.mld_statusopdr_key = os.mld_statusopdr_key
AND o.mld_melding_key = m.mld_melding_key
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 sd.ins_srtdiscipline_key = 1 -- BCC
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
--AND sn.fac_srtnotificatie_key IN (59 ,65, 64, 69, 58, 70, 66) -- ORDNEW, ORDACP, ORDREJ, ORDCAN, ORDAFM, ORDAFR, ORDVER
AND sn.fac_srtnotificatie_key NOT IN (60, 73, 40, 56, 57, 68, 135) -- ORDUPD, ORD2GO, MLDAP1, ORDMLI, ORDMLE, ORDSNX, ORDMAI
AND t.prs_perslid_key = pf.prs_perslid_key;
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile