Files
Customer/PCHX/pchx.sql
Sander Schepers cb75af65f6 PCHX#80577 Facturen niet verwerkt
svn path=/Customer/trunk/; revision=62341
2023-10-25 21:03:01 +00:00

5377 lines
210 KiB
SQL
Raw Blame History

-- Script containing customer generic configuration sql statements for all PCH accounts
-- $Revision$
-- $Id$
--
DEFINE thisfile = 'PCHX.SQL'
DEFINE dbuser = 'PCHX'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE PCHX
AS
PROCEDURE add_xml_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2);
PROCEDURE add_xml_element (
p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2);
FUNCTION get_user
RETURN VARCHAR2;
FUNCTION get_administratienr
RETURN VARCHAR2;
FUNCTION get_kenmerk (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2;
END;
/
CREATE OR REPLACE PACKAGE BODY pchx
AS
PROCEDURE add_xml_row (p_bestand IN VARCHAR2, p_regel IN VARCHAR2)
AS
v_index NUMBER;
replace_bestand VARCHAR2 (30);
replace_regel VARCHAR2 (2000);
BEGIN
-- Indien export 'SCANSYS', dan staat in p_bestand zowel administratie+boekstknr als 'SCANSYS', gescheiden door ##
-- administratie+boekstknr zijn hierbij nodig om per factuur aparte xml-bestanden te exporteren.
-- Ook voor export 'VERPL' is dit gehanteerd, dat is de eerste export van de facturen (verplichtingen),
-- voordat de geaccordeerde facturen worden geexporteerd (scansys)
IF INSTR (p_bestand, '##') > 0
THEN
replace_bestand := SUBSTR (p_bestand, INSTR (p_bestand, '##') + 2);
ELSE
replace_bestand := p_bestand;
END IF;
IF INSTR (p_bestand, '##') > 0
THEN
replace_regel :=
SUBSTR (p_bestand, 1, INSTR (p_bestand, '##') - 1)
|| '##'
|| p_regel;
ELSE
replace_regel := p_regel;
END IF;
SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = replace_bestand;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (replace_bestand, v_index, replace_regel);
END;
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
pchx.add_xml_row (
p_bestand,
'<'
|| p_tag
|| '>'
|| xml.char_to_html (p_value)
|| '</'
|| p_tag
|| '>');
END;
FUNCTION get_user
RETURN VARCHAR2
AS
v_user VARCHAR2 (20);
BEGIN
v_user := UPPER (SUBSTR (USER, 1, 4));
RETURN v_user;
END;
FUNCTION get_administratienr
RETURN VARCHAR2
AS
v_user VARCHAR2 (20);
v_adm VARCHAR2 (20);
BEGIN
v_user := get_user;
IF v_user = 'PCHA'
THEN
v_adm := '650';
END IF;
IF v_user = 'PCHD'
THEN
v_adm := '650';
END IF;
IF v_user = 'PCHH'
THEN
v_adm := '100';
END IF;
IF v_user = 'PCHP'
THEN
v_adm := '250';
END IF;
IF v_user = 'PCHS'
THEN
v_adm := '300';
END IF;
IF v_user = 'PCHW'
THEN
v_adm := '650';
END IF;
IF v_user = 'PGHE'
THEN
v_adm := '650';
END IF;
RETURN v_adm;
END;
-- interne functie om de waarde van het kenmerk te bepalen.
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
p_kenmerkdomein_key NUMBER,
p_kenmerk_waarde VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2 (4000);
BEGIN
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S'
THEN
v_result :=
fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde);
ELSIF p_kenmerk_type = 'D'
THEN
v_result :=
TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'),
'yyyy-mm-dd');
ELSE
v_result := p_kenmerk_waarde;
END IF;
RETURN v_result;
END;
FUNCTION get_kenmerk (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2
AS
v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
BEGIN
CASE p_module
WHEN 'MLD'
THEN
SELECT mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
km.mld_kenmerkmelding_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = p_link_key
AND km.mld_kenmerk_key = p_kenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
WHEN 'CNT'
THEN
SELECT cnt_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kc.cnt_kenmerkcontract_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM cnt_kenmerkcontract kc, cnt_kenmerk k, cnt_srtkenmerk sk
WHERE kc.cnt_contract_key = p_link_key
AND kc.cnt_kenmerk_key = p_kenmerk_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
WHEN 'ALG'
THEN
SELECT alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
aogk.alg_onrgoedkenmerk_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_onrgoed_key = p_link_key
AND aogk.alg_kenmerk_key = p_kenmerk_key
AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
WHEN 'INS'
THEN
SELECT k.ins_kenmerk_niveau
INTO v_kenmerk_niveau
FROM ins_kenmerk k
WHERE ins_kenmerk_key = p_kenmerk_key;
IF v_kenmerk_niveau = 'C'
THEN
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikds.ins_kmdeelsrtcontr_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM ins_kmdeelsrtcontr ikds,
ins_kenmerk k,
ins_srtkenmerk sk
WHERE ikds.ins_kmdeelsrtcontr_key = p_link_key
AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL
AND ikds.ins_kenmerk_key = p_kenmerk_key
AND ikds.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
ELSE
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikd.ins_kenmerkdeel_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk
WHERE ikd.ins_deel_key = p_link_key
AND ikd.ins_kenmerkdeel_verwijder IS NULL
AND ikd.ins_kenmerk_key = p_kenmerk_key
AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
END IF;
END CASE;
RETURN get_kenmerkwaarde (v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde);
END;
END;
/
--=============================================================================
-- IMPORTFUNCTIES
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE pchx_import_perslid (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(255);
BEGIN
v_seq_of_columns := '0;0;0;0;0;0;1;2;3;5;4;0;0;0;14;7;8;9;15;12;11;13;0;6;10;0;16;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0';
prs.import_perslid(p_import_key, v_seq_of_columns, 'AFDELINGSCODE;PERSOONACHTERNAAM;TUSSENVOEGSEL;VOORLETTERS;VOORNAAM;TITEL_AANHEF;TELEFOONNUMMER;MOBIEL;EMAIL;APIKEY;FUNCTIE;PERSONEELSNUMMER;LOGINNAAM;GESLACHT;DIENSTVERBAND%');
END pchx_import_perslid;
/
CREATE OR REPLACE PROCEDURE pchx_update_perslid (
p_import_key IN NUMBER
) IS
BEGIN
-- generic update
prs.update_perslid (p_import_key, 'APIKEY', NULL);
UPDATE prs_perslid p
SET prs_perslid_oslogin2 = (SELECT prs_kenmerk1
FROM fac_imp_perslid i
WHERE i.prs_perslid_key = p.prs_perslid_key)
WHERE EXISTS (SELECT i.prs_perslid_key
FROM fac_imp_perslid i
WHERE i.prs_perslid_key = p.prs_perslid_key);
END pchx_update_perslid;
/
CREATE OR REPLACE VIEW pchx_v_noti_cntreminder
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey
)
AS
SELECT 'CNTMAI',
'',
c.prs_perslid_key_eig,
'Rapp<EFBFBD>l: '
|| fac_version_cust
|| ' Contract '
|| c.cnt_contract_nummer_intern
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b, fac_version
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status = 0
AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
AND cnt.cnt_getopzegdatum (c.cnt_contract_key);
--PCHD#33769 default reminder ook voor goedkeuringsverzoeken
CREATE OR REPLACE VIEW PCHX_V_NOTI_FINREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'FININF',
'',
prs.getkpverantwoordelijke (
fin.getfactuurkostenplaats (f.fin_factuur_key),
fac.getSetting ('prs_approvemethod'),
-1
)
budgethouder,
'Fiatteringsverzoek voor ' || COUNT (f.fin_factuur_key)
|| DECODE (COUNT (f.fin_factuur_key),
1, ' factuur.',
' facturen.'),
MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige; FSN#19425
NULL,
NULL,
NULL
FROM fin_factuur f
WHERE prs.getkpverantwoordelijke (
fin.getfactuurkostenplaats (f.fin_factuur_key),
fac.getSetting ('prs_approvemethod'),
-1
) <> -1 -- die kan ik geen bericht sturen
AND f.fin_factuur_statuses_key = 2
AND f.fin_factuur_verwijder IS NULL
GROUP BY prs.getkpverantwoordelijke (
fin.getfactuurkostenplaats (f.fin_factuur_key),
fac.getSetting ('prs_approvemethod'),
-1
)
UNION ALL
SELECT 'FININF',
'',
p.prs_perslid_key,
'Goedkeuringsverzoek voor ' || COUNT (f.fin_factuur_key)
|| DECODE (COUNT (f.fin_factuur_key),
1, ' factuur.',
' facturen.'),
MIN (f.fin_factuur_key),
NULL,
NULL,
NULL
FROM fin_factuur f, prs_perslid p
WHERE prs_perslid_key_goedkeur IS NOT NULL
AND fin_factuur_statuses_key = 5
AND fin_factuur_verwijder IS NULL
AND p.prs_perslid_key = f.prs_perslid_key_goedkeur
GROUP BY prs_perslid_key;
CREATE OR REPLACE VIEW pchx_v_factuur_gegevens
(
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key_org,
prs_bedrijf_key_afw,
prs_bedrijf_key,
fin_factuurregel_omschrijving,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuurregel_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
boekstuknummer,
project_nummer,
project_naam,
prs_kostensoort_oms,
prs_kostensoort_refcode,
vk_prs_kostensoort_refcode,
prs_kostensoort_key,
prs_kostenplaats_key,
prs_kostenplaats_org,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
fin_factuur_statuses_org_key,
lev_kpn,
reknr,
kstdrcode,
administratie,
afwboekdatum,
afw_kostenplaats
)
AS
SELECT f.fin_factuur_key,
DECODE (
c.cnt_contract_key,
NULL,
DECODE (
bo.bes_bestelopdr_key,
NULL,
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_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 =
sd.ins_srtdiscipline_key),
bo.bes_bestelopdr_id),
'C' || TO_CHAR (cnt_contract_nummer_intern))
opdracht_id,
DECODE (TO_CHAR (f.fin_factuur_datum, 'yyyy'),
'2010', TO_DATE ('20110102', 'YYYYMMDD'),
'2011', TO_DATE ('20120102', 'YYYYMMDD'),
f.fin_factuur_datum),
f.fin_factuur_nr,
b_f.prs_bedrijf_key prs_bedrijf_key_afw,
COALESCE (b_c.prs_bedrijf_key,
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
prs_bedrijf_key_org,
COALESCE (
b_f.prs_bedrijf_key,
COALESCE (b_c.prs_bedrijf_key,
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key)))
prs_bedrijf_key,
fin_factuurregel_omschrijving,
fr.fin_factuurregel_totaal,
COALESCE (
fr_btw.afw_btw_bedrag,
ROUND (
fr.fin_factuurregel_totaal
* DECODE (btw.fin_btwtabelwaarde_verlegd,
1, 0,
btw.fin_btwtabelwaarde_perc / 100),
2))
fin_factuurregel_btw,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_key,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_key,
f.fin_factuur_debiteur_nr,
f.fin_factuur_opmerking,
f.fin_factuur_boekmaand,
COALESCE (
o.mld_opdr_datumbegin,
COALESCE (c.cnt_contract_looptijd_tot, bo.bes_bestelopdr_datum)),
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk
WHERE fk.fin_factuur_key = f.fin_factuur_key
AND fk.fin_kenmerk_key = 3)
boekstuknummer,
(SELECT fac_usrdata_code
FROM fin_kenmerkfactregel kfr, fac_usrdata ud
WHERE fin_kenmerk_key = 61
AND kfr.fin_factuurregel_key = fr.fin_factuurregel_key
AND fac.safe_to_number (fin_kenmerkfactregel_waarde) =
ud.fac_usrdata_key)
projectnummer,
(SELECT fac_usrdata_omschr
FROM fin_kenmerkfactregel kfr, fac_usrdata ud
WHERE fin_kenmerk_key = 61
AND kfr.fin_factuurregel_key = fr.fin_factuurregel_key
AND fac.safe_to_number (fin_kenmerkfactregel_waarde) =
ud.fac_usrdata_key)
projectnaam,
COALESCE (kr.prs_kostensoort_oms, k.prs_kostensoort_oms),
k.prs_kostensoort_refcode,
'Onbekend' vk_prs_kostensoort_refcode,
COALESCE (kr.prs_kostensoort_key, k.prs_kostensoort_key),
COALESCE (
(SELECT prs_kostenplaats_key
FROM prs_kostenplaats kpr, fin_kenmerkfactregel kfr
WHERE kfr.fin_kenmerk_key = 26
AND kfr.fin_factuurregel_key = fr.fin_factuurregel_key
AND fac.safe_to_number (fin_kenmerkfactregel_waarde) =
kpr.prs_kostenplaats_key),
o.prs_kostenplaats_key,
c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key))
prs_kostenplaats_key,
COALESCE (
o.prs_kostenplaats_key,
c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key))
prs_kostenplaats_org,
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
-- met status ingevoerd, afgewezen of incompleet
SELECT DECODE (COUNT ( * ), 0, f.fin_factuur_statuses_key, 2)
FROM fin_factuur f_t,
cnt_contract c_t,
bes_bestelopdr b_t,
mld_opdr o_t
WHERE f_t.fin_factuur_verwijder IS NULL
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
AND COALESCE (
o_t.mld_uitvoerende_keys,
COALESCE (b_t.prs_bedrijf_key,
c_t.cnt_prs_bedrijf_key)) =
COALESCE (
o.mld_uitvoerende_keys,
COALESCE (bo.prs_bedrijf_key,
c.cnt_prs_bedrijf_key))
AND f.fin_factuur_nr = f_t.fin_factuur_nr
AND f_t.fin_factuur_statuses_key IN (1, 2, 3, 5) -- Afgewezen,Ingevoerd,Incompleet,TerGoedkeuring
AND f.fin_factuur_statuses_key = 6)
fin_factuur_statuses_key,
f.fin_factuur_statuses_key fin_factuur_statuses_org_key,
lk.prs_kostenplaats_nr lev_kpn,
rn.reknr,
kd.kstdrcode,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk
WHERE fk.fin_factuur_key = f.fin_factuur_key
AND fk.fin_kenmerk_key = 2) administratie,
(SELECT fac.safe_to_date (fin_kenmerkfactregel_waarde,
'DD-MM-YYYY')
afwboekdatum
FROM fin_kenmerkfactregel fkf, fin_kenmerk fk
WHERE fk.fin_kenmerk_key = fkf.fin_kenmerk_key
AND fkf.fin_kenmerkfactregel_verwijder IS NULL
AND fk.fin_kenmerk_verwijder IS NULL
AND UPPER (fk.fin_kenmerk_omschrijving) = 'AFW. BOEKDATUM'
AND fkf.fin_factuurregel_key = fr.fin_factuurregel_key)
afwboekdatum,
fr_afwk.afw_kostenplaats
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
(SELECT b.*, fin_factuur_key
FROM fin_kenmerkfactuur km, prs_bedrijf b
WHERE fin_kenmerk_key = 41
AND fac.safe_to_number (km.fin_kenmerkfactuur_waarde) =
b.prs_bedrijf_key) b_f, -- Afwijkend bedrijf
(SELECT kfr.fin_factuurregel_key,
fac.safe_to_number (fin_kenmerkfactregel_waarde)
afw_btw_bedrag
FROM fin_kenmerkfactregel kfr
WHERE fin_kenmerk_key = 4) fr_btw, -- Afwijkend btwbedrag
(SELECT frk.fin_factuurregel_key,
prs_kostenplaats_nr afw_kostenplaats
FROM fin_kenmerk k,
prs_kostenplaats kp,
fin_kenmerkfactregel frk
WHERE kp.prs_kostenplaats_key = fac.safe_to_number(frk.fin_kenmerkfactregel_waarde)
AND k.fin_kenmerk_key = frk.fin_kenmerk_key
AND frk.fin_kenmerkfactregel_verwijder IS NULL
AND k.fin_kenmerk_verwijder IS NULL
AND kp.prs_kostenplaats_verwijder IS NULL
AND k.fin_kenmerk_upper = 'AFW. KOSTENPLAATS') fr_afwk, -- Afwijkend kostenplaats
prs_kostensoort k,
prs_kostensoort kr,
prs_kostensoortgrp kg,
prs_kostenplaats lk,
pchx_v_kenm_kstdrcode kd,
pchx_v_kenm_reknr rn
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND f.fin_factuur_key = b_f.fin_factuur_key(+)
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND fr.prs_kostensoort_key = kr.prs_kostensoort_key(+)
AND fr.fin_factuurregel_key = kd.fin_factuurregel_key(+)
AND fr.fin_factuurregel_key = rn.fin_factuurregel_key(+)
AND fr.fin_factuurregel_key = fr_btw.fin_factuurregel_key(+)
AND fr.fin_factuurregel_key = fr_afwk.fin_factuurregel_key(+)
AND f.fin_factuur_verwijder IS NULL;
CREATE OR REPLACE VIEW pchx_v_rap_factuurgegevens
(
html_factuur_key,
fclt_f_boekstuknummer,
factuurdatum,
referentie,
factuurnummer,
bedrag,
fclt_f_bedrijf
)
AS
SELECT '<a class="details" onclick=''FcltMgr.openDetail("appl/fin/fin_factuur.asp?urole=bo&'
|| 'fin_key='
|| fin_factuur_key
|| '")''>'
|| fin_factuur_key
|| '</a>'
fin_factuur_key,
boekstuknummer,
fin_factuur_datum,
opdracht_id,
fin_factuur_nr,
SUM (fin_factuurregel_totaal) totaal,
b.prs_bedrijf_naam
FROM pchx_v_factuur_gegevens fg, prs_bedrijf b
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key(+)
GROUP BY fin_factuur_key,
boekstuknummer,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_naam;
CREATE OR REPLACE VIEW pchx_v_rap_factuurgegevens_fin
(
fin_factuur_key,
nr,
factuurdatum,
uitvoerende,
leveranciernr,
factuurnr,
excl_btw,
incl_btw,
status,
afwbedrijf,
grootboekrekening,
kostendrager,
factuurregel_omschrijving,
afw_boekdatum
)
AS
SELECT fin_factuur_key,
TO_CHAR (fin_factuur_key),
fin_factuur_datum,
borg.prs_bedrijf_naam,
borg.prs_leverancier_nr,
fin_factuur_nr,
SUM (fin_factuurregel_totaal),
SUM (fin_factuurregel_totaal + fin_factuurregel_btw),
DECODE (fin_factuur_statuses_org_key,
1, 'Afgewezen',
2, 'Ingevoerd',
5, 'Ter goedkeuring',
6, 'Akkoord')
Status,
bafw.prs_bedrijf_naam,
reknr,
kstdrcode,
fin_factuurregel_omschrijving,
afwboekdatum
FROM pchx_v_factuur_gegevens f,
prs_bedrijf borg,
prs_bedrijf bafw
WHERE borg.prs_bedrijf_key = f.prs_bedrijf_key_org
AND bafw.prs_bedrijf_key = f.prs_bedrijf_key_afw(+)
AND f.fin_factuur_statuses_org_key IN (1, 2, 5, 6)
GROUP BY fin_factuur_key,
fin_factuur_datum,
borg.prs_bedrijf_naam,
borg.prs_leverancier_nr,
fin_factuur_nr,
fin_factuur_statuses_org_key,
bafw.prs_bedrijf_naam,
reknr,
kstdrcode,
fin_factuurregel_omschrijving,
afwboekdatum;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW pchx_v_aanwezigfactuur
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
)
AS
SELECT FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
CREATE OR REPLACE VIEW pchx_v_kenm_reknr
(
fin_factuurregel_key,
reknr
)
AS
SELECT fr1.fin_factuurregel_key,
COALESCE (
(SELECT fac_usrdata_code
FROM fin_kenmerkfactregel kfr1, fac_usrdata ud
WHERE fin_kenmerk_key = 24
AND kfr1.fin_factuurregel_key = fr1.fin_factuurregel_key
AND fac.safe_to_number (fin_kenmerkfactregel_waarde) =
ud.fac_usrdata_key),
(SELECT fac_usrdata_code
FROM fin_kenmerkfactuur kf1, fac_usrdata ud
WHERE fin_kenmerk_key = 21
AND kf1.fin_factuur_key = fr1.fin_factuur_key
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
ud.fac_usrdata_key))
FROM fin_factuurregel fr1;
CREATE OR REPLACE VIEW pchx_v_kenm_kstdrcode
(
fin_factuurregel_key,
kstdrcode
)
AS
SELECT fr1.fin_factuurregel_key,
COALESCE (
(SELECT fac_usrdata_code
FROM fin_kenmerkfactregel kfr1, fac_usrdata ud
WHERE fin_kenmerk_key = 25
AND kfr1.fin_factuurregel_key = fr1.fin_factuurregel_key
AND fac.safe_to_number (fin_kenmerkfactregel_waarde) =
ud.fac_usrdata_key),
(SELECT fac_usrdata_code
FROM fin_kenmerkfactuur kf1, fac_usrdata ud
WHERE fin_kenmerk_key = 22
AND kf1.fin_factuur_key = fr1.fin_factuur_key
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
ud.fac_usrdata_key))
FROM fin_factuurregel fr1;
CREATE OR REPLACE VIEW pchx_v_bron_export_exact_xml
(
bkstnr,
fact_oms25,
regel_oms25,
regel_oms,
datum,
afw_datum,
crdnr,
projectnr,
projectnaam,
bedrag_txt,
bedrag,
bedrag_incl,
betaalref,
itemcode,
reknr,
kstdrcode,
kstplcode,
btw_code,
lev_kpn,
administratie,
fin_factuur_key,
track_verpl,
fin_factuurregel_nr,
afw_kostenplaats,
fin_factuur_statuses_key
)
AS
SELECT (SELECT fin_kenmerkfactuur_waarde kf
FROM fin_kenmerkfactuur kf
WHERE kf.fin_factuur_key = fg.fin_factuur_key
AND kf.fin_kenmerk_key = 3) -- boekstuknummer
bkstnr,
REPLACE (fin_factuur_opmerking, ',', '') fact_oms25,
opdracht_id
|| ' - '
|| REPLACE (fin_factuurregel_omschrijving, ',', '')
regel_oms25,
fin_factuurregel_omschrijving,
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
(SELECT TO_CHAR (
fac.safe_to_date (fin_kenmerkfactregel_waarde,
'dd-mm-yyyy'),
'yyyy-mm-dd')
FROM fin_kenmerkfactregel kfr
WHERE kfr.fin_factuurregel_key = fg.fin_factuurregel_key
AND kfr.fin_kenmerk_key = 23) -- afw boekdatum
afw_datum,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
project_nummer,
project_naam,
REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag_txt,
fin_factuurregel_totaal bedrag,
fin_factuurregel_totaal + fin_factuurregel_btw bedrag_incl,
fin_factuur_nr || '/' || fin_factuur_debiteur_nr betaalref,
prs_kostensoort_oms itemcode,
reknr,
kstdrcode,
(SELECT prs_kostenplaats_nr
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key)
kstplcode,
fin_btwtabelwaarde_code btw_code,
lev_kpn,
administratie,
fin_factuur_key,
(SELECT MAX(fac_tracking_datum)
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_tracking_refkey = fin_factuur_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST10')
track_verpl,
fin_factuurregel_nr,
afw_kostenplaats,
fin_factuur_statuses_key
FROM pchx_v_factuur_gegevens fg;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact verwerk
-- Deze exportfunctie wordt ook gebruikt voor de koppeling naar Scansys
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW pchx_v_exp_verwerk_exact_adm (
result,
result_order,
administratie
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_refcode
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'),
f.fin_factuur_key,
f.administratie
FROM pchx_exp_factuur f,
pchx_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6;
CREATE OR REPLACE VIEW pchx_v_export_verwerk_exact (
result,
result_order
)
AS
SELECT result, result_order
FROM pchx_v_exp_verwerk_exact_adm
WHERE administratie = pchx.get_administratienr;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
-- Deze procedure pchx_export_verwerk_exact_adm wordt ook gebruikt voor de koppeling naar Scansys
CREATE OR REPLACE PROCEDURE pchx_export_verwerk_exact_adm (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_administratie IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT f.fin_factuur_key
FROM pchx_exp_factuur f
, pchx_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6
AND f.administratie = p_administratie;
CURSOR c_opdr
IS
SELECT distinct fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
FROM pchx_exp_factuur f
, pchx_v_factuur_gegevens fg
, mld_opdr o
, mld_melding m
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND fg.fin_factuur_statuses_key = 6
AND f.administratie = p_administratie;
CURSOR c_bes
IS
SELECT bo.*
FROM pchx_exp_factuur f
, pchx_v_factuur_gegevens fg
, bes_bestelopdr bo
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND fg.fin_factuur_statuses_key = 6
AND f.administratie = p_administratie;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_logdate DATE;
BEGIN
v_errormsg := 'Geen akties';
-- Facilitor user
v_aanvrager := 4;
v_logdate := SYSDATE;
FOR rec1 IN c_bes
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
AND bes_bestelopdr_status = 3;
END IF;
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
OR rec1.bes_bestelopdr_status = 3 THEN
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
bes_bestelopdr_item_ontvangen = SYSDATE
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
UPDATE bes_bestelling_item bi
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
WHERE EXISTS (SELECT bes_bestelopdr_key
FROM bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
SELECT distinct bes_bestelling_key
INTO v_bestelling_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
END IF;
END;
END LOOP;
FOR rec1 IN c_opdr
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
END IF;
UPDATE mld_opdr o
SET mld_opdr_kosten =
(SELECT SUM (fin_factuurregel_totaal)
FROM pchx_v_aanwezigfactuur f
, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND f.fin_factuur_statuses_key >= 6)
WHERE o.mld_opdr_key = rec1.mld_opdr_key
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
-- update meldingstatus
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
-- zet de status naar verwerkt (user is facilitor)
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
END;
END LOOP;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
END;
END LOOP;
DELETE pchx_exp_factuur
WHERE administratie = p_administratie;
END;
/
--Deze procedure pchx_export_verwerk_exact wordt ook gebruikt voor de koppeling naar Scansys
CREATE OR REPLACE PROCEDURE pchx_export_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
BEGIN
pchx_export_verwerk_exact_adm (p_applname, p_applrun, p_filedir, p_filename, pchx.get_administratienr);
END;
/
CREATE OR REPLACE PROCEDURE pchx_import_factuur (p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_barcode VARCHAR2 (12);
BEGIN
v_fielddelimitor := ';';
DELETE pchx_imp_factuur
WHERE fac_import_key <> p_import_key;
FOR rec IN c_cursor
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
fac.imp_getfield (v_newline, v_fielddelimitor, v_barcode);
IF LENGTH (v_barcode) = 12
THEN
INSERT INTO pchx_imp_factuur (fac_import_key, barcode)
VALUES (p_import_key, v_barcode);
ELSE
-- na een geldige barcode volgt altijd nog een linefeed op de volgende regel.
IF ASCII(SUBSTR(v_barcode, 1, 1)) <> 10
THEN
fac.imp_writelog (
p_import_key,
'E',
'Factuurimport: Geen geldige barcode aangetroffen: '
|| v_barcode,
'');
END IF;
END IF;
END;
END LOOP;
-- verwijder de entries uit de imp_file omdat er meerdere bestanden in <20><>n run ingelezen kunnen worden.
DELETE fac_imp_file WHERE fac_import_key = p_import_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
CREATE OR REPLACE PROCEDURE pchx_update_factuur (p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM pchx_imp_factuur
WHERE fac_import_key = p_import_key;
v_factuur_key NUMBER (10);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
FOR rec IN c_cursor
LOOP
BEGIN
INSERT INTO fin_factuur (fin_factuur_statuses_key,
fin_factuur_datum,
fin_factuur_totaal_btw,
fin_factuur_nr)
VALUES (3,
SYSDATE,
0,
'XXX') -- Melding 57823, graag XXX ipv spatie, dat valt beter op bij het aanvullen van de factuur
RETURNING fin_factuur_key
INTO v_factuur_key;
-- link naar gescand document
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (v_factuur_key,
1,
'http://vbwnlmsl220/inkoopfacturen/'
|| rec.barcode
|| '.pdf');
-- administratie
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (v_factuur_key, 2, SUBSTR (rec.barcode, 2, 3));
-- boekstuknummer
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (v_factuur_key, 3, SUBSTR (rec.barcode, 5, 8));
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
CREATE OR REPLACE VIEW pchx_v_rap_usrdata
(
fac_usrtab_key,
fac_usrtab_omschrijving,
fac_usrdata_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_prijs,
fac_usrdata_volgnr,
fac_usrdata_parentkey,
fac_usrdata_vervaldatum
)
AS
SELECT ut.fac_usrtab_key,
ut.fac_usrtab_omschrijving,
ud.fac_usrdata_key,
ud.fac_usrdata_code,
ud.fac_usrdata_omschr,
fac_usrdata_prijs,
fac_usrdata_volgnr,
fac_usrdata_parentkey,
fac_usrdata_vervaldatum
FROM fac_usrtab ut, fac_usrdata ud
WHERE ut.fac_usrtab_key = ud.fac_usrtab_key;
CREATE OR REPLACE PROCEDURE pchx_import_usrdata (p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_error BOOLEAN;
v_header_found BOOLEAN;
v_oracle_err_num NUMBER;
v_oracle_err_mes VARCHAR2 (200);
v_usrtab_key_txt VARCHAR2 (100);
v_usrtab_key fac_usrtab.fac_usrtab_key%TYPE;
v_usrtab_naam fac_usrtab.fac_usrtab_naam%TYPE;
v_usrdata_key_txt VARCHAR2 (100);
v_usrdata_key fac_usrdata.fac_usrdata_key%TYPE;
v_usrdata_code fac_usrdata.fac_usrdata_code%TYPE;
v_usrdata_omschr fac_usrdata.fac_usrdata_omschr%TYPE;
v_usrdata_volgnr_txt VARCHAR2 (100);
v_usrdata_volgnr fac_usrdata.fac_usrdata_volgnr%TYPE;
v_usrdata_prijs_txt VARCHAR2 (100);
v_usrdata_prijs fac_usrdata.fac_usrdata_prijs%TYPE;
v_usrdata_parentkey_txt VARCHAR2 (100);
v_usrdata_parentkey fac_usrdata.fac_usrdata_parentkey%TYPE;
v_usrdata_vervaldatum_txt VARCHAR2 (100);
v_usrdata_vervaldatum fac_usrdata.fac_usrdata_vervaldatum%TYPE;
BEGIN
v_fielddelimitor := ';';
v_header_found := FALSE;
DELETE pchx_imp_usrdata;
FOR rec IN c_cursor
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrtab_key_txt);
-- fac.imp_getfield (v_newline, v_fielddelimitor, v_usrtab_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_key_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_omschr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_prijs_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_volgnr_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_parentkey_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_usrdata_vervaldatum_txt);
-- Skip until a valid header is found
IF UPPER (v_usrtab_key_txt) = 'FAC USRTAB KEY'
AND UPPER (v_usrdata_key_txt) = 'FAC USRDATA KEY'
AND UPPER (v_usrdata_volgnr_txt) = 'FAC USRDATA VOLGNR'
AND UPPER (v_usrdata_parentkey_txt) = 'FAC USRDATA PARENTKEY'
AND UPPER (v_usrdata_vervaldatum_txt) = 'FAC USRDATA VERVALDATUM'
THEN
-- Sla de kopregel over.
v_header_found := TRUE;
ELSIF v_header_found
THEN
v_usrtab_key := fac.safe_to_number (v_usrtab_key_txt);
v_usrdata_key := fac.safe_to_number (v_usrdata_key_txt);
v_usrdata_volgnr := fac.safe_to_number (v_usrdata_volgnr_txt);
v_usrdata_prijs := fac.safe_to_number (REPLACE (v_usrdata_prijs_txt, ',', '.'));
v_usrdata_parentkey := fac.safe_to_number (v_usrdata_parentkey_txt);
v_usrdata_vervaldatum := fac.safe_to_date (v_usrdata_vervaldatum_txt, 'dd-mm-yyyy');
INSERT INTO pchx_imp_usrdata (fac_usrtab_key,
fac_usrtab_naam,
fac_usrdata_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_volgnr,
fac_usrdata_prijs,
fac_usrdata_parentkey,
fac_usrdata_vervaldatum)
VALUES (v_usrtab_key,
v_usrtab_naam,
v_usrdata_key,
v_usrdata_code,
v_usrdata_omschr,
v_usrdata_volgnr,
v_usrdata_prijs,
v_usrdata_parentkey,
v_usrdata_vervaldatum);
END IF;
END;
END LOOP;
IF NOT v_header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig eigentabel importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_oracle_err_num := SQLCODE;
v_oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || v_oracle_err_num || '/' || v_oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
CREATE OR REPLACE PROCEDURE pchx_update_usrdata (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT * FROM pchx_imp_usrdata;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
FOR rec IN c
LOOP
BEGIN
IF rec.fac_usrdata_key IS NULL
THEN
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_volgnr,
fac_usrdata_prijs,
fac_usrdata_parentkey,
fac_usrdata_vervaldatum)
VALUES (rec.fac_usrtab_key,
LPAD (rec.fac_usrdata_code, 6, '0'),
rec.fac_usrdata_omschr,
rec.fac_usrdata_volgnr,
rec.fac_usrdata_prijs,
rec.fac_usrdata_parentkey,
rec.fac_usrdata_vervaldatum);
ELSE
UPDATE fac_usrdata
SET fac_usrtab_key = rec.fac_usrtab_key,
fac_usrdata_code = LPAD (rec.fac_usrdata_code, 6, '0'),
fac_usrdata_omschr = rec.fac_usrdata_omschr,
fac_usrdata_volgnr = rec.fac_usrdata_volgnr,
fac_usrdata_prijs = rec.fac_usrdata_prijs,
fac_usrdata_parentkey = rec.fac_usrdata_parentkey,
fac_usrdata_vervaldatum = rec.fac_usrdata_vervaldatum
WHERE fac_usrdata_key = rec.fac_usrdata_key;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
-- view voor het exporteren van een catalogus. Deze kan later via de import ingelezen worden.
CREATE OR REPLACE VIEW pchx_v_imp_bes_artikel_sync
(
FCLT_F_CatalogusNaam,
Leverancier,
CatDatum,
Artikelnr,
Groep,
Omschrijving,
Prijs,
Eenheid,
Picture,
Orderaantal,
Tax,
DueDate,
Inkoopprijs,
Minimum,
Staffeltabel,
Wijzigdagen,
Annuleerdagen
)
AS
SELECT td.ins_discipline_omschrijving,
b.prs_bedrijf_naam,
TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'),
sd.bes_srtdeel_nr,
sg.bes_srtgroep_omschrijving,
sd.bes_srtdeel_omschrijving,
TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)),
sd.bes_srtdeel_eenheid,
sd.bes_srtdeel_image,
TO_CHAR (sd.bes_srtdeel_veelvoud),
TO_CHAR (sd.bes_srtdeel_btw),
TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)),
NULL,
bs.bes_staffeltabel_naam,
sd.bes_srtdeel_wijzigdagen,
sd.bes_srtdeel_annuleerdagen
FROM ins_tab_discipline td,
bes_srtgroep sg,
bes_srtdeel sd,
prs_bedrijf b,
bes_staffeltabel bs
WHERE td.ins_discipline_module = 'BES'
AND td.ins_discipline_verwijder IS NULL
AND td.ins_discipline_key = sg.ins_discipline_key
AND sg.bes_srtgroep_verwijder IS NULL
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND sd.bes_srtdeel_verwijder IS NULL
AND sd.prs_bedrijf_key = b.prs_bedrijf_key
AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;
-- view voor bedrijfsuggest bij facturen die niet gekoppeld zijn aan een contract
-- of opdracht.
CREATE OR REPLACE VIEW pchx_v_fin_bedrijf
(
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_naam_nr,
prs_bedrijf_verwijder
)
AS
SELECT prs_bedrijf_key,
prs_bedrijf_naam,
CASE
WHEN prs_leverancier_nr IS NULL THEN prs_bedrijf_naam
ELSE prs_bedrijf_naam || ' (' || prs_leverancier_nr || ')'
END,
prs_bedrijf_verwijder
FROM prs_bedrijf b
WHERE prs_bedrijf_intern IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export VERPLICHTINGEN EN SCANSYS
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE pchx_select_scansys_adm (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_administratie IN VARCHAR2)
AS
CURSOR c
IS
SELECT f.bkstnr,
f.datum,
f.fact_oms25,
f.administratie,
f.crdnr,
f.fin_factuurregel_nr,
f.afw_datum,
f.reknr,
f.projectnaam,
f.regel_oms,
f.afw_kostenplaats,
f.kstdrcode,
f.itemcode,
f.bedrag_txt,
f.btw_code,
f.betaalref,
f.bedrag,
f.bedrag_incl,
f.projectnr
FROM pchx_v_bron_export_exact_xml f, pchx_exp_factuur e
WHERE f.administratie = p_administratie AND f.fin_factuur_key = e.fin_factuur_key
ORDER BY f.bkstnr;
v_order_count NUMBER;
v_amount_sum NUMBER (10, 2);
v_amount_sum_incl NUMBER (10, 2);
v_count NUMBER;
--v_sub_count NUMBER; --Met PCHX#63945 wordt regelnummer vanuit de xml-import aangeleverd en moet ook conform worden doorgegeven.
v_bestand VARCHAR2 (30);
v_dagboeknr VARCHAR2 (2);
v_bkstnr_cur VARCHAR2 (30);
v_bkstnr_prev VARCHAR2 (30);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 0;
v_count := 0;
v_bestand := SUBSTR (p_applname, 1, 12);
-- Eerst opruiming
-- PCHX#67175 In verband met notificatie toch geen opruiming
--DELETE FROM imp_log
-- WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
-- deze keys gebruikt kunnen worden.
-- Verwijder alleen de records van de geselecteerde administratie
DELETE pchx_exp_factuur e
WHERE administratie = p_administratie;
INSERT INTO pchx_exp_factuur (fin_factuur_key, administratie)
(SELECT DISTINCT fin_factuur_key, p_administratie
FROM pchx_v_bron_export_exact_xml
WHERE fin_factuur_statuses_key = 6
AND administratie = p_administratie
AND track_verpl IS NOT NULL);
v_bkstnr_prev := 'empty';
FOR rec IN c
LOOP
BEGIN
--PCHX#65429: Dagboeknr verschuift vanaf 2021 naar postitie 2 & 3 van het boekstuknummer (ipv positie 3 & 4).
--Oude nog openstaande facturen (van 2020) moeten nog wel met positie 3&4, dat gaat via onderstaande case.
--Na verloop van tijd mag dit weer opgeschoond worden en mag dit altijd: v_dagboeknr := SUBSTR (rec.bkstnr, 2, 2);
v_bkstnr_cur := rec.bkstnr;
CASE
WHEN SUBSTR (rec.bkstnr, 0, 2) = '20'
THEN
v_dagboeknr := SUBSTR (rec.bkstnr, 3, 2);
ELSE
v_dagboeknr := SUBSTR (rec.bkstnr, 2, 2);
END CASE;
v_bestand :=
TO_CHAR( rec.administratie
|| rec.bkstnr
|| '##'
|| SUBSTR (p_applname, 1, 12));
v_count := 1; -- dummy
IF v_count <> 0
THEN
--Header xml
IF v_bkstnr_cur <> v_bkstnr_prev
THEN
-- Footer xml
IF v_bkstnr_prev <> 'empty'
THEN
pchx.add_xml_row (v_bestand, '</GLEntry>');
pchx.add_xml_row (v_bestand, '</GLEntries>');
pchx.add_xml_row (v_bestand, '</eExact>');
END IF;
pchx.add_xml_row (
v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
pchx.add_xml_row (v_bestand, '<eExact>');
pchx.add_xml_row (v_bestand, '<GLEntries>');
pchx.add_xml_row (
v_bestand,
'<GLEntry status="E" entry="'
|| xml.char_to_html (rec.bkstnr)
|| '">');
pchx.add_xml_element (v_bestand, 'Description', rec.fact_oms25);
pchx.add_xml_element (v_bestand, 'Date', rec.datum);
pchx.add_xml_element (v_bestand,
'DocumentDate',
TO_CHAR (SYSDATE, 'YYYY-MM-DD'));
pchx.add_xml_row (
v_bestand,
'<Journal type="I" code="' || v_dagboeknr || '"/>');
--v_sub_count := 1;
pchx.add_xml_row (
v_bestand,
'<Creditor number="' || xml.char_to_html (rec.crdnr) || '"/>');
END IF;
-- 1 of meerdere factuurregels
pchx.add_xml_row (
v_bestand,
'<FinEntryLine number="'
|| rec.fin_factuurregel_nr
|| '" subtype="T" type="N">');
pchx.add_xml_element (
v_bestand,
'Date',
COALESCE (rec.afw_datum, rec.datum));
pchx.add_xml_row (
v_bestand,
'<GLAccount code="'
|| xml.char_to_html (rec.reknr)
|| '"/>');
--IF pchx.get_user = 'PCHD'
--THEN
pchx.add_xml_row (
v_bestand,
'<Project code="'
|| rec.projectnr
|| '" type="I" status="A">');
pchx.add_xml_element (v_bestand,
'Description',
rec.projectnaam);
pchx.add_xml_row (v_bestand, '</Project>');
--END IF;
pchx.add_xml_element (v_bestand,
'Description',
rec.regel_oms);
--Met PCHX#63945 wordt afwijkende kostenplaats gehaald vanuit de import en daarmee van de factuurregels.
-- Voorheen kreeg PCHH altijd 0100, bij PCHA en PCHW werd dit gehaald uit projectcode en bij de overige omgeving werd kostenplaats van bestelling/contract/opdracht overgenomen.
--Met PCHX#63945 moet dit dus, voor controledoeleinden in Exact, nu van de (door Exact aangeleverde) factuurregels. CASE
IF rec.afw_kostenplaats IS NOT NULL
THEN
pchx.add_xml_row (
v_bestand,
'<Costcenter code="'
|| xml.char_to_html (rec.afw_kostenplaats)
|| '"/>');
END IF;
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Costunit code="'
|| xml.char_to_html (rec.kstdrcode)
|| '"/>');
END IF;
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Item code="'
|| xml.char_to_html (rec.itemcode)
|| '"/>');
END IF;
pchx.add_xml_row (v_bestand, '<Amount>');
pchx.add_xml_element (v_bestand, 'Debit', rec.bedrag_txt);
pchx.add_xml_row (
v_bestand,
'<VAT code="'
|| xml.char_to_html (rec.btw_code)
|| '"/>');
pchx.add_xml_row (v_bestand, '</Amount>');
pchx.add_xml_row (v_bestand, '<Payment>');
pchx.add_xml_element (v_bestand,
'Reference',
rec.betaalref);
pchx.add_xml_element (v_bestand,
'InvoiceNumber',
rec.bkstnr);
pchx.add_xml_row (v_bestand, '</Payment>');
pchx.add_xml_row (v_bestand, '<FinReferences>');
pchx.add_xml_element (v_bestand, 'YourRef', rec.betaalref);
pchx.add_xml_element (v_bestand,
'DocumentDate',
TO_CHAR (SYSDATE, 'YYYY-MM-DD'));
pchx.add_xml_row (v_bestand, '</FinReferences>');
pchx.add_xml_row (v_bestand, '</FinEntryLine>');
--v_sub_count := v_sub_count + 1;
v_amount_sum := v_amount_sum + rec.bedrag;
v_amount_sum_incl := v_amount_sum_incl + rec.bedrag_incl;
END IF;
END;
v_bkstnr_prev := v_bkstnr_cur;
v_order_count := v_order_count + 1;
END LOOP;
-- Footer xml
IF v_bkstnr_prev <> 'empty'
THEN
pchx.add_xml_row (v_bestand, '</GLEntry>');
pchx.add_xml_row (v_bestand, '</GLEntries>');
pchx.add_xml_row (v_bestand, '</eExact>');
END IF;
fac.writelog (
p_applname,
'S',
'Exact export uitgevoerd. Aantal regels: '
|| v_order_count
|| ' Totaal bedrag: '
|| v_amount_sum
|| ' Totaal bedrag (incl): '
|| v_amount_sum_incl,
'');
END;
/
CREATE OR REPLACE PROCEDURE pchx_select_scansys (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
pchx_select_scansys_adm (p_applname, p_applrun, pchx.get_administratienr);
END;
/
CREATE OR REPLACE VIEW pchx_v_export_verpl
(
result,
result_order,
boekstuknummer
)
AS
SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2),
fac_rapport_volgnr,
SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1)
FROM fac_rapport
WHERE fac_rapport_node = 'VERPL';
CREATE OR REPLACE VIEW pchx_v_export_scansys
(
result,
result_order,
boekstuknummer
)
AS
SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2),
fac_rapport_volgnr,
SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1)
FROM fac_rapport
WHERE fac_rapport_node = 'SCANSYS';
CREATE OR REPLACE PROCEDURE pchx_select_verpl_adm (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_administratie IN VARCHAR2)
AS
CURSOR c
IS
SELECT f.bkstnr,
f.datum,
f.fact_oms25,
f.administratie,
f.crdnr,
f.fin_factuurregel_nr,
f.afw_datum,
f.reknr,
f.projectnaam,
f.regel_oms,
f.afw_kostenplaats,
f.kstdrcode,
f.itemcode,
f.bedrag_txt,
f.btw_code,
f.betaalref,
f.bedrag,
f.bedrag_incl,
f.projectnr,
f.regel_oms25,
e.fin_factuur_key
FROM pchx_v_bron_export_exact_xml f, pchx_exp_factuur e
WHERE f.administratie = p_administratie AND f.fin_factuur_key = e.fin_factuur_key
ORDER BY f.bkstnr;
v_order_count NUMBER;
v_amount_sum NUMBER (10, 2);
v_amount_sum_incl NUMBER (10, 2);
v_count NUMBER;
--v_sub_count NUMBER; --Met PCHX#63945 wordt regelnummer vanuit de xml-import aangeleverd en moet ook conform worden doorgegeven.
v_bestand VARCHAR2 (30);
v_dagboeknr VARCHAR2 (2);
v_applname VARCHAR2 (2);
v_bkstnr_cur VARCHAR2 (30);
v_bkstnr_prev VARCHAR2 (30);
BEGIN
--Eerst maar de resultaten van vorige export opruimen
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 0;
v_count := 0;
v_bestand := SUBSTR (p_applname, 1, 12);
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
v_bkstnr_prev := 'empty';
FOR rec IN c
LOOP
BEGIN
-- bepalen dagboeknr & boekstuknr
-- We zetten hier administratie, boekstuknummer en ## voor,
-- dit is nodig omdat de we bij het vullen van FAC_RAPPORT een toevoeging moeten hebben om
-- de unieke bestandsnamen te kunnen bepalen.
-- In add_xml_row en add_xml_element filteren we dit weer, zodat dit niet in de node komt.
--PCHX#65429: Dagboeknr verschuift vanaf 2021 naar postitie 2 & 3 van het boekstuknummer (ipv positie 3 & 4).
--Oude nog openstaande facturen (van 2020) moeten nog wel met positie 3&4, dat gaat via onderstaande case.
--Na verloop van tijd mag dit weer opgeschoond worden en mag dit altijd: v_dagboeknr := SUBSTR (rec.bkstnr, 2, 2);
v_bkstnr_cur := rec.bkstnr;
CASE
WHEN SUBSTR (rec.bkstnr, 0, 2) = '20'
THEN
v_dagboeknr := SUBSTR (rec.bkstnr, 3, 2);
ELSE
v_dagboeknr := SUBSTR (rec.bkstnr, 2, 2);
END CASE;
v_bestand :=
TO_CHAR( rec.administratie
|| rec.bkstnr
|| '##'
|| SUBSTR (p_applname, 1, 12));
v_count := 1; -- dummy
IF v_count <> 0
THEN
--Header xml
IF v_bkstnr_cur <> v_bkstnr_prev
THEN
-- Footer xml
IF v_bkstnr_prev <> 'empty'
THEN
pchx.add_xml_row (v_bestand, '</GLEntry>');
pchx.add_xml_row (v_bestand, '</GLEntries>');
pchx.add_xml_row (v_bestand, '</eExact>');
END IF;
pchx.add_xml_row (
v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
pchx.add_xml_row (v_bestand, '<eExact>');
pchx.add_xml_row (v_bestand, '<GLEntries>');
pchx.add_xml_row (
v_bestand,
'<GLEntry status="E" entry="'
|| xml.char_to_html (rec.bkstnr)
|| '">');
pchx.add_xml_element (v_bestand, 'Description', rec.fact_oms25);
pchx.add_xml_element (v_bestand, 'Date', rec.datum);
pchx.add_xml_element (v_bestand,
'DocumentDate',
TO_CHAR (SYSDATE, 'YYYY-MM-DD'));
pchx.add_xml_row (
v_bestand,
'<Journal type="I" code="' || v_dagboeknr || '"/>');
--v_sub_count := 1;
pchx.add_xml_row (
v_bestand,
'<Creditor number="' || xml.char_to_html (rec.crdnr) || '"/>');
END IF;
-- 1 of meerdere factuurregels
pchx.add_xml_row (
v_bestand,
'<FinEntryLine number="'
|| rec.fin_factuurregel_nr
|| '" subtype="T" type="N">');
pchx.add_xml_element (
v_bestand,
'Date',
COALESCE (rec.afw_datum, rec.datum));
pchx.add_xml_row (
v_bestand,
'<GLAccount code="'
|| xml.char_to_html (rec.reknr)
|| '"/>');
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Project code="'
|| rec.projectnr
|| '" type="I" status="A">');
pchx.add_xml_element (v_bestand,
'Description',
rec.projectnaam);
pchx.add_xml_row (v_bestand, '</Project>');
END IF;
pchx.add_xml_element (v_bestand,
'Description',
rec.regel_oms25);
--Met PCHX#63945 wordt afwijkende kostenplaats gehaald vanuit de import en daarmee van de factuurregels.
-- Voorheen kreeg PCHH altijd 0100, bij PCHA en PCHW werd dit gehaald uit projectcode en bij de overige omgeving werd kostenplaats van bestelling/contract/opdracht overgenomen.
--Met PCHX#63945 moet dit dus, voor controledoeleinden in Exact, nu van de (door Exact aangeleverde) factuurregels. CASE
IF rec.afw_kostenplaats IS NOT NULL
THEN
pchx.add_xml_row (
v_bestand,
'<Costcenter code="'
|| xml.char_to_html (rec.afw_kostenplaats)
|| '"/>');
END IF;
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Item code="'
|| xml.char_to_html (rec.itemcode)
|| '"/>');
END IF;
pchx.add_xml_row (v_bestand, '<Amount>');
pchx.add_xml_element (v_bestand, 'Debit', rec.bedrag_txt);
pchx.add_xml_row (
v_bestand,
'<VAT code="'
|| xml.char_to_html (rec.btw_code)
|| '"/>');
pchx.add_xml_row (v_bestand, '</Amount>');
pchx.add_xml_row (v_bestand, '<Payment>');
pchx.add_xml_element (v_bestand,
'Reference',
rec.betaalref);
pchx.add_xml_element (v_bestand,
'InvoiceNumber',
rec.bkstnr);
pchx.add_xml_row (v_bestand, '</Payment>');
pchx.add_xml_row (v_bestand, '<FinReferences>');
pchx.add_xml_element (v_bestand, 'YourRef', rec.betaalref);
pchx.add_xml_element (v_bestand,
'DocumentDate',
TO_CHAR (SYSDATE, 'YYYY-MM-DD'));
pchx.add_xml_row (v_bestand, '</FinReferences>');
pchx.add_xml_row (v_bestand, '</FinEntryLine>');
--v_sub_count := v_sub_count + 1;
v_amount_sum := v_amount_sum + rec.bedrag;
v_amount_sum_incl := v_amount_sum_incl + rec.bedrag_incl;
IF v_bkstnr_cur <> v_bkstnr_prev
THEN
INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms)
SELECT rec.fin_factuur_key, fac_srtnotificatie_key, 'Verplichting verzonden naar Scansys'
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST10';
END IF;
END IF;
END;
v_bkstnr_prev := v_bkstnr_cur;
v_order_count := v_order_count + 1;
END LOOP;
-- Footer xml
IF v_bkstnr_prev <> 'empty'
THEN
pchx.add_xml_row (v_bestand, '</GLEntry>');
pchx.add_xml_row (v_bestand, '</GLEntries>');
pchx.add_xml_row (v_bestand, '</eExact>');
END IF;
fac.writelog (
p_applname,
'S',
'Scansys verplichtingen export uitgevoerd. Aantal regels: '
|| v_order_count
|| ' Totaal bedrag: '
|| v_amount_sum
|| ' Totaal bedrag (incl): '
|| v_amount_sum_incl,
'');
END;
/
CREATE OR REPLACE PROCEDURE pchx_select_verpl (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
pchx_select_verpl_adm (p_applname, p_applrun, pchx.get_administratienr);
END;
/
CREATE OR REPLACE PROCEDURE pchx_export_verpl (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Verwerk actie direct starten na de export
NULL;
END;
/
--------------------------------------------------------------------------------------
-- views tbv realtime monitor
--------------------------------------------------------------------------------------
CREATE OR REPLACE VIEW pchx_v_graph_meldingpd_fm
(
fclt_xas_,
fclt_yas_,
volgorde
)
AS
SELECT TO_CHAR (mld_melding_datum, 'dd'),
COUNT (mld_melding_key),
TRUNC (mld_melding_datum) - TRUNC (SYSDATE)
FROM mld_melding m
WHERE mld_melding_datum > SYSDATE - 15
AND mld_melding_datum > TO_DATE ('20131001', 'yyyymmdd')
AND mld_melding_datum < SYSDATE
GROUP BY TO_CHAR (mld_melding_datum, 'dd'),
TRUNC (mld_melding_datum) - TRUNC (SYSDATE);
CREATE OR REPLACE VIEW pchx_v_graph_meldingpm_fm
(
fclt_xas_,
fclt_yas_,
volgorde
)
AS
SELECT DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
COUNT (mld_melding_key),
TO_CHAR (mld_melding_datum, 'yyyymm')
FROM mld_melding m
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
TO_DATE (
TO_CHAR (SYSDATE, 'yyyymm') || '01',
'yyyymmdd'),
-11)
AND SYSDATE
AND mld_melding_datum > TO_DATE ('20131001', 'yyyymmdd')
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm');
CREATE OR REPLACE VIEW pchx_v_graph_openst_behand
(
fclt_xas_,
fclt_yas_,
fclt_yas2_,
sortering
)
AS
SELECT behandelaar,
COUNT (mld_key) - SUM (uitvoeringoptijd) telaat,
SUM (uitvoeringoptijd) op_tijd,
1 - COUNT (mld_key)
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE SIGN (mld_melding_einddatum - SYSDATE)
WHEN -1 THEN 0
ELSE 1
END
uitvoeringoptijd,
DECODE (
mld_melding_flag,
1,
'FSB',
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
m.mld_melding_behandelaar_key))
behandelaar
FROM mld_melding m
WHERE mld_melding_status IN (2, 3, 4, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
)
WHERE behandelaar IS NOT NULL
GROUP BY behandelaar;
CREATE OR REPLACE VIEW pchx_v_graph_openst_uitv
(
fclt_xas_,
fclt_yas_,
fclt_yas2_,
fclt_url,
sortering
)
AS
SELECT behandelaar,
COUNT (opdr_key) - SUM (uitvoeringoptijd) telaat,
SUM (uitvoeringoptijd) op_tijd,
'appl/mld/opdr_search.asp?urole=bo'
|| '&'
|| 'autosearch=1'
|| '&'
|| 'handler_key='
|| behandelaar_key,
1 - COUNT (opdr_key)
FROM (SELECT DISTINCT
o.mld_opdr_key opdr_key,
CASE SIGN (mld_opdr_einddatum - SYSDATE)
WHEN -1 THEN 0
ELSE 1
END
uitvoeringoptijd,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE mld_uitvoerende_keys = pf.prs_perslid_key
UNION ALL
SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE mld_uitvoerende_keys = b.prs_bedrijf_key)
behandelaar,
o.mld_uitvoerende_keys behandelaar_key
FROM mld_opdr o
WHERE o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- 3 Ter fiattering, 4 Gefiatteerd, 5 Toegekend, 8 Geaccepteerd, 10 Ter goedkeuring
)
WHERE behandelaar IS NOT NULL
GROUP BY behandelaar, behandelaar_key;
CREATE OR REPLACE VIEW pchx_v_graph_ppi_acc (fclt_xas_, fclt_yas_)
AS
SELECT SUM (acceptoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE SIGN(fac.datumtijdplusuitvoertijd (
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
std.mld_stdmelding_t_accepttijd.tijdsduur,
std.mld_stdmelding_t_accepttijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
acceptoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND mld_melding_status IN (2, 3) -- 2-ingevoerd, 3-ingezien
);
CREATE OR REPLACE VIEW pchx_v_graph_ppi_uitv (fclt_xas_, fclt_yas_)
AS
SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
);
CREATE OR REPLACE VIEW pchx_v_graph_vakgroep_open
(
fclt_xas_,
fclt_yas_,
fclt_yas2_,
sortering,
fclt_url,
fclt_3d_discipline_key
)
AS
SELECT ins_srtdiscipline_prefix || ' '
|| lcl.x ('ins_discipline_omschrijving',
d.ins_discipline_key,
d.ins_discipline_omschrijving),
COUNT (m.mld_melding_key) - SUM (uitvoeringoptijd) telaat,
SUM (uitvoeringoptijd) op_tijd,
-1 * COUNT (m.mld_melding_key) totaal,
'appl/mld/mld_search.asp?urole=fo'
|| '&'
|| 'autosearch=1'
|| '&'
|| 'disc_key_str='
|| d.ins_discipline_key,
d.ins_discipline_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
(SELECT mld_melding_key,
CASE SIGN (mld_melding_einddatum - SYSDATE)
WHEN -1 THEN 0
ELSE 1
END
uitvoeringoptijd
FROM mld_melding m2) uitv
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_melding_key = uitv.mld_melding_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
GROUP BY d.ins_discipline_key,
d.ins_discipline_omschrijving,
ins_srtdiscipline_prefix
ORDER BY COUNT (d.ins_discipline_omschrijving) DESC;
CREATE OR REPLACE VIEW pchx_v_graph_fact_count
(
fclt_xas_,
fclt_yas_,
sortering
)
AS
SELECT prs_perslid_naam_full, COUNT ( * ), 1 - COUNT ( * )
FROM ( SELECT boekstuknummer,
prs_perslid_naam_full,
SUM (fin_factuurregel_totaal) totaal
FROM pchx_v_factuur_gegevens fg,
prs_kostenplaats k,
prs_v_perslid_fullnames pf
WHERE fin_factuur_statuses_key = 2
AND fg.prs_kostenplaats_org = k.prs_kostenplaats_key
AND k.prs_perslid_key = pf.prs_perslid_key
GROUP BY prs_perslid_naam_full, boekstuknummer)
GROUP BY prs_perslid_naam_full;
CREATE OR REPLACE VIEW pchx_v_graph_fact_amount
(
fclt_xas_,
fclt_yas_,
sortering
)
AS
SELECT prs_perslid_naam_full, SUM(totaal), 1 - SUM(totaal)
FROM ( SELECT boekstuknummer,
prs_perslid_naam_full,
SUM (fin_factuurregel_totaal) totaal
FROM pchx_v_factuur_gegevens fg,
prs_kostenplaats k,
prs_v_perslid_fullnames pf
WHERE fin_factuur_statuses_key = 2
AND fg.prs_kostenplaats_org = k.prs_kostenplaats_key
AND k.prs_perslid_key = pf.prs_perslid_key
GROUP BY prs_perslid_naam_full, boekstuknummer)
GROUP BY prs_perslid_naam_full;
CREATE OR REPLACE VIEW PCHX_V_RAP_TECH_ADRES
(
FCLT_F_BEDRIJF,
L,
U,
C,
H,
FCLT_F_KANAAL,
FCLT_F_Opdrachttype,
Adres,
Stylesheet,
Bijlage
)
AS
SELECT prs_bedrijf_naam,
DECODE (prs_bedrijf_leverancier, 1, 'x', NULL) L,
DECODE (prs_bedrijf_uitvoerende, 1, 'x', NULL) U,
DECODE (prs_bedrijf_contract, 1, 'x', NULL) C,
DECODE (prs_bedrijf_huurder, 1, 'x', NULL) H,
DECODE (ba.prs_bedrijfadres_type,
'B', 'Bestellingen',
'C', 'Contracten',
'O', 'Opdrachten',
NULL)
Kanaal,
DECODE (
prs_bedrijfadres_type,
'O',
DECODE (ot.mld_typeopdr_key,
NULL, 'Geen/Overige opdrachten',
ot.mld_typeopdr_omschrijving),
NULL,
'',
'N.v.t.'
)
opdrachttype,
prs_bedrijfadres_url,
prs_bedrijfadres_xsl,
prs_bedrijfadres_attachfile Bijlage
FROM prs_bedrijf b, prs_bedrijfadres ba, mld_typeopdr ot
WHERE prs_bedrijf_verwijder IS NULL
AND b.prs_bedrijf_key = ba.prs_bedrijf_key(+)
AND ba.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND b.prs_bedrijf_intern IS NULL;
CREATE OR REPLACE VIEW PCHX_V_RAP_BEDRIJFDIENSTLOC
(
FCLT_F_BEDRIJF,
L,
U,
C,
H,
FCLT_F_DIENST,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW
)
AS
SELECT prs_bedrijf_naam,
DECODE (prs_bedrijf_leverancier, 1, 'x', NULL) L,
DECODE (prs_bedrijf_uitvoerende, 1, 'x', NULL) U,
DECODE (prs_bedrijf_contract, 1, 'x', NULL) C,
DECODE (prs_bedrijf_huurder, 1, 'x', NULL) H,
d.prs_dienst_omschrijving dienst,
l.alg_locatie_omschrijving Locatie,
'Alle' Gebouw
FROM prs_bedrijf b,
prs_bedrijfdienstlocatie bdl,
prs_dienst d,
alg_locatie l
WHERE prs_bedrijf_verwijder IS NULL
AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND d.prs_dienst_key(+) = bdl.prs_dienst_key
AND b.prs_bedrijf_intern IS NULL
AND l.alg_locatie_key = bdl.alg_locatie_key
UNION ALL
SELECT prs_bedrijf_naam,
DECODE (prs_bedrijf_leverancier, 1, 'x', NULL) L,
DECODE (prs_bedrijf_uitvoerende, 1, 'x', NULL) U,
DECODE (prs_bedrijf_contract, 1, 'x', NULL) C,
DECODE (prs_bedrijf_huurder, 1, 'x', NULL) H,
d.prs_dienst_omschrijving dienst,
l.alg_locatie_omschrijving Locatie,
g.alg_gebouw_omschrijving Gebouw
FROM prs_bedrijf b,
prs_bedrijfdienstlocatie bdl,
prs_dienst d,
alg_locatie l,
alg_gebouw g
WHERE prs_bedrijf_verwijder IS NULL
AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND d.prs_dienst_key(+) = bdl.prs_dienst_key
AND b.prs_bedrijf_intern IS NULL
AND g.alg_locatie_key = l.alg_locatie_key
AND g.alg_gebouw_key = bdl.alg_gebouw_key
UNION ALL
SELECT prs_bedrijf_naam,
DECODE (prs_bedrijf_leverancier, 1, 'x', NULL) L,
DECODE (prs_bedrijf_uitvoerende, 1, 'x', NULL) U,
DECODE (prs_bedrijf_contract, 1, 'x', NULL) C,
DECODE (prs_bedrijf_huurder, 1, 'x', NULL) H,
d.prs_dienst_omschrijving dienst,
'Alle' Locatie,
'Alle' Gebouw
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl, prs_dienst d
WHERE prs_bedrijf_verwijder IS NULL
AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND d.prs_dienst_key(+) = bdl.prs_dienst_key
AND b.prs_bedrijf_intern IS NULL
AND bdl.alg_gebouw_key IS NULL
AND bdl.alg_locatie_key IS NULL;
CREATE OR REPLACE VIEW pchx_v_rap_mld_qrc
(
fclt_3d_locatie_key,
fclt_3d_discipline_key,
fclt_f_discipline,
fclt_f_soortmelding,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimte_key,
ruimtefunctie,
fclt_f_objectdiscipline,
fclt_f_objectgroep,
objectsoort_key,
fclt_f_objectsoort,
objectsoort_code,
ins_deel_key,
ins_deel_omschrijving,
ins_deel_upper,
hide_f_bookmark_id,
variabele
)
AS
SELECT l.alg_locatie_key,
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
msd.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
d.ins_alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM (SELECT DECODE (
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
),
0,
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10
),
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10,
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
)
- 10
)
)
stdm_key,
fac_bookmark_id
FROM fac_bookmark
WHERE UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
-- AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') > 0 (nog) niet nodig voor PCH
)
b, -- stdm_key-bookmarks
(SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
si.ins_srtinstallatie_key ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'S'
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'G'
AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'D'
AND si.ins_srtinstallatie_key = sg.ins_discipline_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE 1=1 -- fac.safe_to_number (b.stdm_key) = msd.mld_stdmelding_key
AND msd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+);
-- QR codes om melding op bepaalde ruimte aan te maken.
CREATE OR REPLACE VIEW pchx_v_rap_mld_qrc1
(
alg_ruimte_key,
alg_ruimte_aanduiding,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
fac_bookmark_naam,
fac_bookmark_id
)
AS
SELECT alg_ruimte_key,
rg.alg_ruimte_aanduiding,
rg.alg_ruimte_nr,
rg.alg_ruimte_omschrijving,
rg.alg_srtruimte_omschrijving,
b.fac_bookmark_naam,
b.fac_bookmark_id
FROM alg_v_ruimte_gegevens rg, fac_bookmark b
WHERE b.fac_bookmark_naam LIKE 'QR%';
-- PCHD#34422
CREATE OR REPLACE VIEW PCHX_V_RAP_DOORLOOP_FACT
(
FACTUUR_KEY,
FCLT_F_FACTUUR_NR,
FCLT_F_STATUS,
FCLT_F_ACTIE,
DATUM,
FCLT_F_DATUM
)
AS
SELECT fin_factuur_key factuur_key,
fin_factuur_nr factuur_nr,
COALESCE (fin_factuur_statuses_omschr, 'Ter goedkeuring') status,
'Geregistreerd' Actie,
fin_factuur_datum Datum,
'Import' Door
FROM fin_factuur f, fin_factuur_statuses stat
WHERE fin_factuur_key NOT IN
(SELECT fac_tracking_refkey
FROM fac_tracking ft, fac_srtnotificatie srt
WHERE srt.fac_srtnotificatie_key =
ft.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'FINNEW')
AND fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = stat.fin_factuur_statuses_key(+)
UNION ALL
SELECT fin_factuur_key,
fin_factuur_nr,
COALESCE (fin_factuur_statuses_omschr, 'Ter goedkeuring'),
'Geregistreerd',
fac_tracking_datum,
prs_perslid_naam_friendly
FROM fin_factuur f,
fac_tracking ft,
fac_srtnotificatie srt,
prs_v_perslid_fullnames p,
fin_factuur_statuses stat
WHERE fac_tracking_refkey = f.fin_factuur_key
AND srt.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'FINNEW'
AND fin_factuur_verwijder IS NULL
AND p.prs_perslid_key(+) = ft.prs_perslid_key
AND f.fin_factuur_statuses_key = stat.fin_factuur_statuses_key(+)
UNION ALL
SELECT fin_factuur_key,
fin_factuur_nr,
COALESCE (fin_factuur_statuses_omschr, 'Ter goedkeuring'),
'Goedgekeurd',
fac_tracking_datum,
prs_perslid_naam_friendly
FROM fin_factuur f,
fac_tracking ft,
fac_srtnotificatie srt,
prs_v_perslid_fullnames p,
fin_factuur_statuses stat
WHERE fac_tracking_refkey = f.fin_factuur_key
AND srt.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'FINFOK'
AND fin_factuur_verwijder IS NULL
AND p.prs_perslid_key(+) = ft.prs_perslid_key
AND f.fin_factuur_statuses_key = stat.fin_factuur_statuses_key(+)
UNION ALL
SELECT fin_factuur_key,
fin_factuur_nr,
COALESCE (fin_factuur_statuses_omschr, 'Ter goedkeuring'),
'Gefiatteerd',
fac_tracking_datum,
prs_perslid_naam_friendly
FROM fin_factuur f,
fac_tracking ft,
fac_srtnotificatie srt,
prs_v_perslid_fullnames p,
fin_factuur_statuses stat
WHERE fac_tracking_refkey = f.fin_factuur_key
AND srt.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'FINGOE'
AND fin_factuur_verwijder IS NULL
AND p.prs_perslid_key(+) = ft.prs_perslid_key
AND f.fin_factuur_statuses_key = stat.fin_factuur_statuses_key(+);
-- PCHE#36676
CREATE OR REPLACE VIEW pchx_v_rap_export_schedule
(
hide_f_orderby,
exportnaam,
startdatum,
uitvoerdatum
)
AS
SELECT 1000000 - imp_schedule_key,
imp_schedule_name,
imp_schedule_aanmaak,
imp_schedule_done
FROM imp_schedule;
--- PCHD#37981
CREATE OR REPLACE VIEW pchx_v_rap_searchresult
(
fclt_f_datum,
fclt_f_persoon,
fclt_f_zoekterm,
resultaat,
fclt_f_keuze_type,
keuze_url,
keuze_omschrijving
)
AS
SELECT fac_gui_counter_date datum,
prs_perslid_naam_full persoon,
fgc.fac_gui_counter_info zoekterm,
COALESCE (result.result, 'Geen') resultaat,
COALESCE (choice.TYPE, 'Geen') keuze_type,
choice.url keuze_url,
choice.oms keuze_omschrijving
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
(SELECT fac_gui_counter_refkey,
fac_gui_counter_info url,
'Reserveerbaar artikel' TYPE,
res_artikel_omschrijving oms
FROM fac_gui_counter fgc, res_artikel ra
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%res_artikel%'
AND ra.res_artikel_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info,
'key=')
+ 4)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Reserveerbaar object',
res_deel_omschrijving
FROM fac_gui_counter fgc, res_deel rd
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%res_deel%'
AND rd.res_deel_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info,
'key=')
+ 4)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Melding',
std.mld_stdmelding_omschrijving oms
FROM fac_gui_counter fgc, mld_stdmelding std
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%stdm%'
AND std.mld_stdmelding_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Kennisbank',
fac_faq_question oms
FROM fac_gui_counter fgc, fac_faq faq
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%faq%'
AND fac_faq_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Reserveerbare ruimte',
res_ruimte_nr oms
FROM fac_gui_counter fgc, res_ruimte
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%res_ruimte%'
AND res_ruimte_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Bestelling',
ins_discipline_omschrijving
FROM fac_gui_counter fgc, bes_discipline
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%bes%'
AND ins_discipline_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info,
'dis_key=')
+ 8)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Telefoonboek',
prs_perslid_naam_full
FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%phone%'
AND pf.prs_perslid_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))) choice,
(SELECT fac_gui_counter_refkey,
REPLACE (REPLACE (fac_gui_counter_info, '{', ''), '}', '')
result
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchresult') result
WHERE fac_gui_counter_group = 'search'
AND fgc.fac_gui_counter_info IS NOT NULL
AND fgc.prs_perslid_key = pf.prs_perslid_key
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key;
CREATE OR REPLACE VIEW pchx_v_autorisatierol
(
fac_groep_omschrijving,
fac_functie_omschrijving,
ins_srtdiscipline_omschrijving,
ins_discipline_omschrijving,
prs_rechten,
alg_rechten
)
AS
SELECT fac_groep_omschrijving,
COALESCE(fac_locale_xsl_tekst, fac_functie_omschrijving),
ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
DECODE (
fac_functie_min_level,
0,
DECODE (fac_gebruiker_prs_level_write,
9, DECODE (fac_gebruiker_prs_level_read, 9, '-', 'Read'),
'Write'),
1,
DECODE (fac_gebruiker_prs_level_write,
9, DECODE (fac_gebruiker_prs_level_read, 9, '-', 'Read'),
'Write'),
3,
DECODE (fac_gebruiker_prs_level_write,
9, DECODE (fac_gebruiker_prs_level_read, 9, '-', 'Read'),
'Write'),
7,
DECODE (fac_gebruiker_prs_level_write,
9, DECODE (fac_gebruiker_prs_level_read, 9, '-', 'Read'),
'Write'),
11,
'-',
13,
DECODE (fac_gebruiker_prs_level_read, 9, '-', 'Read'),
15,
DECODE (fac_gebruiker_prs_level_write,
9, DECODE (fac_gebruiker_prs_level_read, 9, '-', 'Read'),
'Write'))
prs_rechten,
DECODE (
fac_functie_min_level,
0,
DECODE (fac_gebruiker_alg_level_write,
9, DECODE (fac_gebruiker_alg_level_read, 9, '-', 'Read'),
'Write'),
1,
DECODE (fac_gebruiker_alg_level_write,
9, DECODE (fac_gebruiker_alg_level_read, 9, '-', 'Read'),
'Write'),
3,
DECODE (fac_gebruiker_alg_level_write,
9, DECODE (fac_gebruiker_alg_level_read, 9, '-', 'Read'),
'Write'),
7,
'-',
11,
DECODE (fac_gebruiker_alg_level_write,
9, DECODE (fac_gebruiker_alg_level_read, 9, '-', 'Read'),
'Write'),
13,
DECODE (fac_gebruiker_alg_level_read, 9, '-', 'Read'),
15,
DECODE (fac_gebruiker_alg_level_write,
9, DECODE (fac_gebruiker_alg_level_read, 9, '-', 'Read'),
'Write'))
alg_rechten
FROM fac_groeprechten gr,
fac_groep g,
ins_tab_discipline d,
fac_functie f,
ins_srtdiscipline sd,
(SELECT fac_locale_xsl_label, fac_locale_xsl_tekst
FROM fac_locale_xsl
WHERE fac_locale_xsl_lang = 'NL') l
WHERE gr.fac_groep_key = g.fac_groep_key
AND gr.ins_discipline_key = d.ins_discipline_key(+)
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND gr.fac_functie_key = f.fac_functie_key
AND f.fac_functie_omschrijving = fac_locale_xsl_label(+);
/* Formatted on 1-6-2017 8:40:22 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW pchx_v_autorisatie
(
prs_perslid_naam_full,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_naam,
fac_groep_omschrijving
)
AS
SELECT prs_perslid_naam_full,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_naam,
fac_groep_omschrijving
FROM fac_gebruikersgroep gg,
fac_groep g,
prs_perslid p,
prs_v_perslid_fullnames pf,
prs_v_afdeling a,
prs_bedrijf b
WHERE gg.fac_groep_key = g.fac_groep_key
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key;
-- Organisastie brede view voor het tonen van het aantal meldingen per dag met een tijdspanne van een week
CREATE OR REPLACE VIEW pchx_aant_per_dag
(
mld_melding_datum
)
AS
SELECT mld_melding_datum
FROM mld_melding
WHERE TO_CHAR (mld_melding_datum, 'D') NOT IN (1, 7)
AND TRUNC (mld_melding_datum) NOT IN
(SELECT TRUNC (mld_vrije_dagen_datum) FROM mld_vrije_dagen)
AND mld_melding_datum > SYSDATE - 7
AND NOT mld_melding_datum > SYSDATE;
-- Organisastie brede view voor het tonen van het aantal meldingen per maand met een tijdspanne van een jaar
CREATE OR REPLACE VIEW pchx_v_aant_mld_per_maand
(
mld_melding_datum
)
AS
SELECT TRUNC(mld_melding_datum)
FROM mld_melding
WHERE TO_CHAR (mld_melding_datum, 'D') NOT IN (1, 7)
AND TRUNC (mld_melding_datum) NOT IN
(SELECT TRUNC (mld_vrije_dagen_datum) FROM mld_vrije_dagen)
AND mld_melding_datum > ADD_MONTHS (SYSDATE, -11)
AND NOT mld_melding_datum > SYSDATE;
-- Organisastie brede view voor het tonen van het aantal meldingen per locatie
CREATE OR REPLACE VIEW pchx_open_meldingen_locatie
AS
SELECT mld_melding_key,
mld_alg_locatie_key,
alg_locatie_key,
mld_melding_status,
alg_locatie_omschrijving
FROM mld_melding, alg_locatie
WHERE mld_alg_locatie_key = alg_locatie_key
AND mld_melding_status IS NOT NULL
AND mld_melding_status <> 5;
-- Organisastie brede view voor het tonen van het aantal opgelost binnen SLA
CREATE OR REPLACE VIEW pchx_v_graph_optijd_sla
(
fclt_xas_,
fclt_yas_
)
AS
SELECT SUM (acceptoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key
mld_key,
CASE SIGN (
fac.datumtijdplusuitvoertijd (
fac.gettrackingdate ('MLDNEW',
m.mld_melding_key),
std.mld_stdmelding_t_accepttijd.tijdsduur,
std.mld_stdmelding_t_accepttijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ',
m.mld_melding_key),
COALESCE (
fac.gettrackingdate ('MLDACP',
m.mld_melding_key),
SYSDATE)))
WHEN -1
THEN
0
ELSE
1
END
acceptoptijd
FROM mld_melding m,
mld_discipline md,
mld_stdmelding std,
ins_srtdiscipline sd
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_srtdiscipline_key = sd.INS_SRTDISCIPLINE_KEY
AND sd.INS_SRTDISCIPLINE_KEY = 102 --Aangegeven dat het alleen om storingen gaat
--AND m.mld_melding_datum >= SYSDATE -7 --Bepaling tijdspanne
--TO_DATE ('01-01-1990','DD-MM-YYYY') --Alternatieve bepaling tijdspanne
AND mld_melding_status NOT IN (1, 5, 6)
AND mld_melding_datum > SYSDATE - 7
AND NOT mld_melding_datum > SYSDATE);
--Klant specifieke view voor het tonen van alle nieuwe meldingen gesorteerd op THT
/*
CREATE OR REPLACE VIEW pchx_v_lijst_nieuwe_mld
AS
SELECT meldingnummer,
productgroep,
melding_ruimte,
onderwerp,
melding_status,
ROUND (
mld_t_uitvoertijd (
m.min_t_sla.tijdsduur + m.max_t_respijt.tijdsduur,
m.min_t_sla.eenheid).tijdsduur,
2)
tht
FROM mld_v_udr_melding mu, pchx_v_startmelding_geg m
WHERE MELDING_STATUS IN ('Nieuw', 'Te accepteren')
AND mu.melding_key = m_start
ORDER BY tht;
*/
CREATE OR REPLACE VIEW pchx_v_kostenplaatsen
AS
SELECT prs_kostenplaats_key,
prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving
prs_kostenplaats_omschrijving,
COALESCE (prs_kostenplaats_verwijder, prs_kostenplaats_eind)
prs_kostenplaats_eind
FROM prs_kostenplaats;
--PCHD#54161 - Rapportage verwijderde facturen
CREATE OR REPLACE VIEW pchx_v_fintrack
(FACTUUR_KEY,
TRACKING_KEY,
TRACKING_DATUM,
TRACKING_OMS,
NAAM,
NOTI_CODE,
STATUS_OUD,
STATUS_NIEUW)
AS
SELECT
f.factuur_key,
t.fac_tracking_key,
t.fac_tracking_datum,
t.fac_tracking_oms,
p.prs_perslid_naam_friendly,
sn.fac_srtnotificatie_code,
CASE
WHEN t.fac_tracking_oms LIKE '%Status:%'
THEN
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Status:') + 8,
INSTR (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Status:') + 9,
100),
' --> '))
ELSE
''
END
AS status_oud,
CASE
WHEN t.fac_tracking_oms LIKE '%Status:%'
THEN
SUBSTR (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Status:') + 10,
999),
INSTR (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Status:') + 10,
999),
' --> ')
+ 5,
INSTR (
SUBSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Status:') + 14
+ INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Status:')
+ 10,
999),
' --> ')),
0),
CHR (10)))
ELSE
''
END
AS status_nieuw
FROM fac_tracking t,
fac_srtnotificatie sn,
fin_v_udr_factuur f,
prs_v_perslid_fullnames_all p
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND SUBSTR (sn.fac_srtnotificatie_code, 1, 3) = 'FIN'
AND t.fac_tracking_refkey = f.factuur_key
AND p.prs_perslid_key = t.prs_perslid_key;
--PCHD#54161 - Rapportage verwijderde facturen
CREATE OR REPLACE VIEW pchx_v_rap_finfno
(FACTUUR_KEY,
FACTUUR_DATUM,
UITVOERENDE,
LEVERANCIER_NR,
FACTUURNR_EXTERN,
FACTUUR_VOOR,
OPDRACHTNR,
OPDRACHT_KEY,
CONTRACT_KEY,
BESTELLING_KEY,
KOSTENPLAATS,
KOSTENPLAATS_EXTERN,
DISCIPLINE_OMSCHRIJVING,
CATALOGUS,
KOSTENSOORT,
KOSTENSOORT_OPMERKING,
KOSTENSOORT_REFCODE,
KOSTENSOORT_ALTCODE,
KOSTENSOORT_BTW,
STDMELDING_OMSCHRIJVING,
BEDRAG_INCL_BTW,
BEDRAG_EXCL_BTW,
HUIDIGE_STATUS_MELDING,
STATUS_MELDING_AFWIJZING,
OPMERKING,
BUDGETHOUDER,
DATUM_WIJZIGING,
NAAM_WIJZIGING,
GROOTBOEKREKENING,
AF_BEDRIJF)
AS
SELECT f.factuur_key,
f.factuur_datum,
f.uitvoerende,
f.leverancier_nr,
f.factuurnr_extern,
f.factuur_voor,
f.opdrachtnr,
f.opdracht_key,
f.contract_key,
f.bestelling_key,
f.kostenplaats,
f.kostenplaats_extern,
f.discipline_omschrijving,
f.catalogus,
f.kostensoort,
f.kostensoort_opmerking,
f.kostensoort_refcode,
f.kostensoort_altcode,
f.kostensoort_btw,
f.stdmelding_omschrijving,
f.bedrag_incl_btw,
f.bedrag_excl_btw,
f.status,
(SELECT t2.status_nieuw
FROM pchx_v_fintrack t2
WHERE t2.tracking_key =
(SELECT MAX(t2.tracking_key)
FROM pchx_v_fintrack t2
WHERE t2.status_nieuw IS NOT NULL
AND t2.tracking_key < t1.fac_tracking_key)) AS status_melding_afwijzing,
f.opmerking,
f.budgethouder,
t1.fac_tracking_datum,
p.prs_perslid_naam_friendly,
(SELECT ud.fac_usrdata_omschr
FROM fin_kenmerkfactuur kf, fin_kenmerk k, fac_kenmerkdomein fkd, fac_usrdata ud
WHERE k.fin_kenmerk_key = 21 -- Key voor aanvullend gegeven Grootboekrekening
AND f.factuur_key = kf.fin_factuur_key
AND k.fin_kenmerk_key = kf.fin_kenmerk_key
AND fkd.fac_kenmerkdomein_key = k.fac_kenmerkdomein_key
AND ud.fac_usrtab_key = fkd.fac_usrtab_key
AND kf.fin_kenmerkfactuur_waarde = ud.fac_usrdata_key),
(SELECT b.prs_bedrijf_naam
FROM fin_kenmerkfactuur kf, fin_kenmerk k, fac_kenmerkdomein fkd, pchx_v_fin_bedrijf b
WHERE k.fin_kenmerk_key = 41 -- Key voor aanvullend gegeven Afw. bedrijf
AND f.factuur_key = kf.fin_factuur_key
AND k.fin_kenmerk_key = kf.fin_kenmerk_key
AND fkd.fac_kenmerkdomein_key = k.fac_kenmerkdomein_key
AND kf.fin_kenmerkfactuur_waarde = b.prs_bedrijf_key)
FROM fin_v_udr_factuur f,
fac_tracking t1,
fac_srtnotificatie sn,
prs_v_perslid_fullnames_all p
WHERE t1.fac_tracking_refkey = f.factuur_key
AND sn.fac_srtnotificatie_key = t1.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINFNO'
AND p.prs_perslid_key = t1.prs_perslid_key;
-- Koppeling om crediteurgegevens vanuit PCHD te verspreiden over de andere PCH omgevingen.
CREATE OR REPLACE PROCEDURE pchx_import_bedrijf_gegevens (
p_import_key NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_bedrijf_key VARCHAR2 (1000);
v_bedrijf_naam VARCHAR2 (1000);
v_bedrijf_post_adres VARCHAR2 (1000);
v_bedrijf_post_postcode VARCHAR2 (1000);
v_bedrijf_post_plaats VARCHAR2 (1000);
v_bedrijf_post_land VARCHAR2 (1000);
v_bedrijf_bezoek_adres VARCHAR2 (1000);
v_bedrijf_bezoek_postcode VARCHAR2 (1000);
v_bedrijf_bezoek_plaats VARCHAR2 (1000);
v_bedrijf_bezoek_land VARCHAR2 (1000);
v_bedrijf_telefoon VARCHAR2 (1000);
v_bedrijf_fax VARCHAR2 (1000);
v_bedrijf_telefoon2 VARCHAR2 (1000);
v_bedrijf_contact_persoon VARCHAR2 (1000);
v_bedrijf_contact_telefoon VARCHAR2 (1000);
v_bedrijf_contact_fax VARCHAR2 (1000);
v_bedrijf_opmerking VARCHAR2 (1000);
v_bedrijf_opmerking2 VARCHAR2 (1000);
v_bedrijf_uurloon VARCHAR2 (1000);
v_leverancier_nr VARCHAR2 (1000);
v_overeenkomst_nr VARCHAR2 (1000);
v_overeenkomst_datum VARCHAR2 (1000);
v_bedrijf_email VARCHAR2 (1000);
v_bedrijf_order_confirm VARCHAR2 (1000);
v_bedrijf_image_loc VARCHAR2 (1000);
v_bedrijf_details_loc VARCHAR2 (1000);
v_bedrijf_xmldetails_loc VARCHAR2 (1000);
v_bedrijf_xmlcatalogus_loc VARCHAR2 (1000);
v_bedrijf_bes_limiet VARCHAR2 (1000);
v_bedrijf_bes_kosten VARCHAR2 (1000);
v_bedrijf_aanmaak VARCHAR2 (1000);
v_bedrijf_verwijder VARCHAR2 (1000);
v_bedrijf_leverancier VARCHAR2 (1000);
v_bedrijf_uitvoerende VARCHAR2 (1000);
v_bedrijf_contract VARCHAR2 (1000);
v_bedrijf_intern VARCHAR2 (1000);
v_bedrijf_huurder VARCHAR2 (1000);
v_bedrijf_bezoeker VARCHAR2 (1000);
v_bedrijf_ingids VARCHAR2 (1000);
v_bedrijf_bes_factor VARCHAR2 (1000);
v_relatietype_omschrijving VARCHAR2 (1000);
v_bedrijfadres_key VARCHAR2 (1000);
v_bedrijfadres_type VARCHAR2 (1000);
v_typeopdr_omschrijving VARCHAR2 (1000);
v_bedrijfadres_url VARCHAR2 (1000);
v_bedrijfadres_ordermode VARCHAR2 (1000);
v_bedrijfadres_certificate VARCHAR2 (1000);
v_bedrijfadres_xsl VARCHAR2 (1000);
v_bedrijfadres_ext VARCHAR2 (1000);
v_bedrijfadres_username VARCHAR2 (1000);
v_bedrijfadres_password VARCHAR2 (1000);
v_bedrijfadres_attachfile VARCHAR2 (1000);
v_bedrijfadres_flexfiles VARCHAR2 (1000);
v_bedrijfadres_encoding VARCHAR2 (1000);
v_bedrijfadres_authmethod VARCHAR2 (1000);
v_bedrijfadres_soapversion VARCHAR2 (1000);
v_bedrijfadres_soapaction VARCHAR2 (1000);
v_bedrijfadres_lockuser_naam VARCHAR2 (1000);
v_bedrijfadres_locksecret VARCHAR2 (1000);
v_bedrijfadres_lockexpire VARCHAR2 (1000);
v_typeopdr_key NUMBER (10);
v_relatietype_key NUMBER (10);
v_bedrijfadres_lockuser_key NUMBER (10);
v_newline VARCHAR2 (4000); -- Import line
v_field VARCHAR2 (1000); -- Import field
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_ongeldig NUMBER (1);
v_header_is_valid NUMBER (1) := 0;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_fielddelimitor := ';';
DELETE pchx_imp_bedrijf_gegevens;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_ongeldig := 0;
IF v_header_is_valid = 1
THEN
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_key);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_naam);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_post_adres);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_post_postcode);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_post_plaats);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_post_land);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bezoek_adres);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bezoek_postcode);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bezoek_plaats);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bezoek_land);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_telefoon);
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_fax);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_telefoon2);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_contact_persoon);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_contact_telefoon);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_contact_fax);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_opmerking);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_opmerking2);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_uurloon);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_leverancier_nr);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_overeenkomst_nr);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_overeenkomst_datum);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_email);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_order_confirm);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_image_loc);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_details_loc);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_xmldetails_loc);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_xmlcatalogus_loc);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bes_limiet);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bes_kosten);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_aanmaak);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_verwijder);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_leverancier);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_uitvoerende);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_contract);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_intern);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_huurder);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bezoeker);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_ingids);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijf_bes_factor);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_relatietype_omschrijving);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_key);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_type);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_typeopdr_omschrijving);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_url);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_ordermode);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_certificate);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_xsl);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_ext);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_username);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_password);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_attachfile);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_flexfiles);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_encoding);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_authmethod);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_soapversion);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_soapaction);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_lockuser_naam);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_locksecret);
fac.imp_getfield (v_newline,
v_fielddelimitor,
v_bedrijfadres_lockexpire);
SELECT MAX (prs_relatietype_key)
INTO v_relatietype_key
FROM prs_relatietype rt
WHERE UPPER (rt.prs_relatietype_omschrijving) =
UPPER (v_relatietype_omschrijving);
IF v_relatietype_omschrijving IS NOT NULL AND v_relatietype_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Relateietype niet gevonden: ' || v_relatietype_omschrijving, '');
v_ongeldig := 1;
END IF;
SELECT MAX (mld_typeopdr_key)
INTO v_typeopdr_key
FROM mld_typeopdr ot
WHERE UPPER (ot.mld_typeopdr_omschrijving) =
UPPER (v_typeopdr_omschrijving);
IF v_typeopdr_omschrijving IS NOT NULL AND v_typeopdr_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Opdrachttype niet gevonden: ' || v_typeopdr_omschrijving, '');
v_ongeldig := 1;
END IF;
SELECT MAX (prs_perslid_key)
INTO v_bedrijfadres_lockuser_key
FROM prs_perslid p
WHERE UPPER (p.prs_perslid_naam) =
UPPER (v_bedrijfadres_lockuser_naam);
IF v_bedrijfadres_lockuser_naam IS NOT NULL AND v_bedrijfadres_lockuser_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Lockuser niet gevonden: ' || v_bedrijfadres_lockuser_naam, '');
v_ongeldig := 1;
END IF;
IF v_ongeldig = 0
THEN
INSERT INTO pchx_imp_bedrijf_gegevens (
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_opmerking2,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_email,
prs_bedrijf_order_confirm,
prs_bedrijf_image_loc,
prs_bedrijf_details_loc,
prs_bedrijf_xmldetails_loc,
prs_bedrijf_xmlcatalogus_loc,
prs_bedrijf_bes_limiet,
prs_bedrijf_bes_kosten,
prs_bedrijf_aanmaak,
prs_bedrijf_verwijder,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_intern,
prs_bedrijf_huurder,
prs_bedrijf_bezoeker,
prs_bedrijf_ingids,
prs_bedrijf_bes_factor,
prs_relatietype_key,
prs_bedrijfadres_key,
prs_bedrijfadres_type,
mld_typeopdr_key,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_bedrijfadres_ext,
prs_bedrijfadres_username,
prs_bedrijfadres_password,
prs_bedrijfadres_attachfile,
prs_bedrijfadres_flexfiles,
prs_bedrijfadres_encoding,
prs_bedrijfadres_authmethod,
prs_bedrijfadres_soapversion,
prs_bedrijfadres_soapaction,
prs_bedrijfadres_lockuser_key,
prs_bedrijfadres_locksecret,
prs_bedrijfadres_lockexpire)
VALUES (
v_bedrijf_key,
v_bedrijf_naam,
v_bedrijf_post_adres,
v_bedrijf_post_postcode,
v_bedrijf_post_plaats,
v_bedrijf_post_land,
v_bedrijf_bezoek_adres,
v_bedrijf_bezoek_postcode,
v_bedrijf_bezoek_plaats,
v_bedrijf_bezoek_land,
v_bedrijf_telefoon,
v_bedrijf_fax,
v_bedrijf_telefoon2,
v_bedrijf_contact_persoon,
v_bedrijf_contact_telefoon,
v_bedrijf_contact_fax,
SUBSTR(v_bedrijf_opmerking,0,320),
SUBSTR(v_bedrijf_opmerking2,0,320),
FAC.safe_to_number(REPLACE(v_bedrijf_uurloon, ',', '.')),
v_leverancier_nr,
v_overeenkomst_nr,
FAC.safe_to_date (
v_overeenkomst_datum,
'yyyy-mm-dd hh24:mi:ss'),
v_bedrijf_email,
v_bedrijf_order_confirm,
v_bedrijf_image_loc,
v_bedrijf_details_loc,
v_bedrijf_xmldetails_loc,
v_bedrijf_xmlcatalogus_loc,
FAC.safe_to_number(REPLACE(v_bedrijf_bes_limiet, ',', '.')),
FAC.safe_to_number(REPLACE(v_bedrijf_bes_kosten, ',', '.')),
FAC.safe_to_date (
v_bedrijf_aanmaak,
'yyyy-mm-dd hh24:mi:ss'),
FAC.safe_to_date (
v_bedrijf_verwijder,
'yyyy-mm-dd hh24:mi:ss'),
v_bedrijf_leverancier,
v_bedrijf_uitvoerende,
v_bedrijf_contract,
v_bedrijf_intern,
v_bedrijf_huurder,
v_bedrijf_bezoeker,
v_bedrijf_ingids,
FAC.safe_to_number(REPLACE(v_bedrijf_bes_factor, ',', '.')),
v_relatietype_key,
v_bedrijfadres_key,
v_bedrijfadres_type,
v_typeopdr_key,
v_bedrijfadres_url,
v_bedrijfadres_ordermode,
v_bedrijfadres_certificate,
v_bedrijfadres_xsl,
v_bedrijfadres_ext,
v_bedrijfadres_username,
v_bedrijfadres_password,
v_bedrijfadres_attachfile,
v_bedrijfadres_flexfiles,
v_bedrijfadres_encoding,
v_bedrijfadres_authmethod,
v_bedrijfadres_soapversion,
v_bedrijfadres_soapaction,
v_bedrijfadres_lockuser_key,
v_bedrijfadres_locksecret,
v_bedrijfadres_lockexpire);
END IF;
ELSE
IF LOWER (v_newline) LIKE
'prs_bedrijf_key;prs_bedrijf_naam;prs_bedrijf_post_adres;prs_bedrijf_post_postcode;prs_bedrijf_post_plaats;prs_bedrijf_post_land;prs_bedrijf_bezoek_adres;prs_bedrijf_bezoek_postcode;prs_bedrijf_bezoek_plaats;prs_bedrijf_bezoek_land;prs_bedrijf_telefoon;prs_bedrijf_fax;prs_bedrijf_telefoon2;prs_bedrijf_contact_persoon;prs_bedrijf_contact_telefoon;prs_bedrijf_contact_fax;prs_bedrijf_opmerking;prs_bedrijf_opmerking2;prs_bedrijf_uurloon;prs_leverancier_nr;prs_overeenkomst_nr;prs_overeenkomst_datum;prs_bedrijf_email;prs_bedrijf_order_confirm;prs_bedrijf_image_loc;prs_bedrijf_details_loc;prs_bedrijf_xmldetails_loc;prs_bedrijf_xmlcatalogus_loc;prs_bedrijf_bes_limiet;prs_bedrijf_bes_kosten;prs_bedrijf_aanmaak;prs_bedrijf_verwijder;prs_bedrijf_leverancier;prs_bedrijf_uitvoerende;prs_bedrijf_contract;prs_bedrijf_intern;prs_bedrijf_huurder;prs_bedrijf_bezoeker;prs_bedrijf_ingids;prs_bedrijf_bes_factor;prs_relatietype_omschrijving;prs_bedrijfadres_key;prs_bedrijfadres_type;mld_typeopdr_omschrijving;prs_bedrijfadres_url;prs_bedrijfadres_ordermode;prs_bedrijfadres_certificate;prs_bedrijfadres_xsl;prs_bedrijfadres_ext;prs_bedrijfadres_username;prs_bedrijfadres_password;prs_bedrijfadres_attachfile;prs_bedrijfadres_flexfiles;prs_bedrijfadres_encoding;prs_bedrijfadres_authmethod;prs_bedrijfadres_soapversion;prs_bedrijfadres_soapaction;bedrijfadres_lockuser_naam;prs_bedrijfadres_locksecret;prs_bedrijfadres_lockexpire%'
THEN
v_header_is_valid := 1;
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
CREATE OR REPLACE PROCEDURE pchx_update_bedrijf_gegevens (
p_import_key NUMBER)
AS
CURSOR c IS
SELECT DISTINCT prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_opmerking2,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_email,
prs_bedrijf_order_confirm,
prs_bedrijf_image_loc,
prs_bedrijf_details_loc,
prs_bedrijf_xmldetails_loc,
prs_bedrijf_xmlcatalogus_loc,
prs_bedrijf_bes_limiet,
prs_bedrijf_bes_kosten,
prs_bedrijf_aanmaak,
prs_bedrijf_verwijder,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_intern,
prs_bedrijf_huurder,
prs_bedrijf_bezoeker,
prs_bedrijf_ingids,
prs_bedrijf_bes_factor,
prs_relatietype_key
FROM pchx_imp_bedrijf_gegevens;
CURSOR c_addr (c_bedrijf_key NUMBER)
IS
SELECT DISTINCT prs_bedrijfadres_type,
mld_typeopdr_key,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_bedrijfadres_ext,
prs_bedrijfadres_username,
prs_bedrijfadres_password,
prs_bedrijfadres_attachfile,
prs_bedrijfadres_flexfiles,
prs_bedrijfadres_encoding,
prs_bedrijfadres_authmethod,
prs_bedrijfadres_soapversion,
prs_bedrijfadres_soapaction,
prs_bedrijfadres_lockuser_key,
prs_bedrijfadres_locksecret,
prs_bedrijfadres_lockexpire
FROM pchx_imp_bedrijf_gegevens
WHERE prs_bedrijf_key = c_bedrijf_key
AND prs_bedrijfadres_type IS NOT NULL;
v_leverancier_nr prs_bedrijf.prs_leverancier_nr%TYPE;
v_bedrijf_key prs_bedrijf.prs_bedrijf_key%TYPE;
v_bedrijf_key_pchd prs_bedrijf.prs_bedrijf_key%TYPE;
v_bedrijfadres_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
FOR rec IN c
LOOP
BEGIN
v_bedrijf_key_pchd := rec.prs_bedrijf_key;
v_errorhint := 'Zoek bedrijf';
SELECT MAX(prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijf
WHERE prs_leverancier_nr = rec.prs_leverancier_nr;
IF v_bedrijf_key IS NULL
THEN
v_errorhint := 'Voeg bedrijf toe';
INSERT INTO prs_bedrijf (prs_bedrijf_naam)
VALUES (rec.prs_bedrijf_naam)
RETURNING prs_bedrijf_key
INTO v_bedrijf_key;
END IF;
v_errorhint := 'Update bedrijf';
UPDATE prs_bedrijf b
SET prs_bedrijf_naam = rec.prs_bedrijf_naam,
prs_bedrijf_post_adres = rec.prs_bedrijf_post_adres,
prs_bedrijf_post_postcode = rec.prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats = rec.prs_bedrijf_post_plaats,
prs_bedrijf_post_land = rec.prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres = rec.prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode = rec.prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats = rec.prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land = rec.prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon = rec.prs_bedrijf_telefoon,
prs_bedrijf_fax = rec.prs_bedrijf_fax,
prs_bedrijf_telefoon2 = rec.prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon = rec.prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon = rec.prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax = rec.prs_bedrijf_contact_fax,
prs_bedrijf_opmerking = rec.prs_bedrijf_opmerking,
prs_bedrijf_opmerking2 = rec.prs_bedrijf_opmerking2,
prs_bedrijf_uurloon = rec.prs_bedrijf_uurloon,
prs_leverancier_nr = rec.prs_leverancier_nr,
prs_overeenkomst_nr = rec.prs_overeenkomst_nr,
prs_overeenkomst_datum = rec.prs_overeenkomst_datum,
prs_bedrijf_email = rec.prs_bedrijf_email,
prs_bedrijf_order_confirm = rec.prs_bedrijf_order_confirm,
prs_bedrijf_image_loc = rec.prs_bedrijf_image_loc,
prs_bedrijf_details_loc = rec.prs_bedrijf_details_loc,
prs_bedrijf_xmldetails_loc = rec.prs_bedrijf_xmldetails_loc,
prs_bedrijf_xmlcatalogus_loc = rec.prs_bedrijf_xmlcatalogus_loc,
prs_bedrijf_bes_limiet = rec.prs_bedrijf_bes_limiet,
prs_bedrijf_bes_kosten = rec.prs_bedrijf_bes_kosten,
prs_bedrijf_aanmaak = rec.prs_bedrijf_aanmaak,
prs_bedrijf_verwijder = rec.prs_bedrijf_verwijder,
prs_bedrijf_leverancier = rec.prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende = rec.prs_bedrijf_uitvoerende,
prs_bedrijf_contract = rec.prs_bedrijf_contract,
prs_bedrijf_intern = rec.prs_bedrijf_intern,
prs_bedrijf_huurder = rec.prs_bedrijf_huurder,
prs_bedrijf_bezoeker = rec.prs_bedrijf_bezoeker,
prs_bedrijf_ingids = rec.prs_bedrijf_ingids,
prs_bedrijf_bes_factor = rec.prs_bedrijf_bes_factor,
prs_relatietype_key = rec.prs_relatietype_key
WHERE b.prs_bedrijf_key = v_bedrijf_key;
FOR rec1 IN c_addr (v_bedrijf_key_pchd)
LOOP
BEGIN
v_errorhint := 'Zoek bedrijfaddres';
SELECT prs_bedrijfadres_key
INTO v_bedrijfadres_key
FROM prs_bedrijfadres
WHERE prs_bedrijf_key = v_bedrijf_key
AND COALESCE (mld_typeopdr_key, -1) = COALESCE (rec1.mld_typeopdr_key, -1)
AND prs_bedrijfadres_type = rec1.prs_bedrijfadres_type;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Voeg bedrijfaddres toe';
INSERT INTO prs_bedrijfadres (prs_bedrijf_key,
mld_typeopdr_key,
prs_bedrijfadres_type)
VALUES (v_bedrijf_key,
rec1.mld_typeopdr_key,
rec1.prs_bedrijfadres_type)
RETURNING prs_bedrijfadres_key
INTO v_bedrijfadres_key;
END;
v_errorhint := 'Pas bedrijfaddres aan';
UPDATE prs_bedrijfadres
SET prs_bedrijfadres_url = rec1.prs_bedrijfadres_url,
prs_bedrijfadres_ordermode = rec1.prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate = rec1.prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl = DECODE (UPPER (REPLACE(rec1.prs_bedrijfadres_xsl, '\', '/')), -- '
'XSL/PCHD.XSL', 'xsl/' || SUBSTR (USER, 1, 4) || '.xsl',
rec1.prs_bedrijfadres_xsl),
prs_bedrijfadres_ext = rec1.prs_bedrijfadres_ext,
prs_bedrijfadres_username = rec1.prs_bedrijfadres_username,
prs_bedrijfadres_password = rec1.prs_bedrijfadres_password,
prs_bedrijfadres_attachfile = 'Alg. inkoopvoorwaarden PCH IFMS.pdf',
prs_bedrijfadres_flexfiles = rec1.prs_bedrijfadres_flexfiles,
prs_bedrijfadres_encoding = rec1.prs_bedrijfadres_encoding,
prs_bedrijfadres_authmethod = rec1.prs_bedrijfadres_authmethod,
prs_bedrijfadres_soapversion = rec1.prs_bedrijfadres_soapversion,
prs_bedrijfadres_soapaction = rec1.prs_bedrijfadres_soapaction,
prs_bedrijfadres_lockuser_key = rec1.prs_bedrijfadres_lockuser_key,
prs_bedrijfadres_locksecret = rec1.prs_bedrijfadres_locksecret,
prs_bedrijfadres_lockexpire = rec1.prs_bedrijfadres_lockexpire
WHERE prs_bedrijfadres_key = v_bedrijfadres_key;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
rec.prs_bedrijf_naam || ' - ' || SUBSTR (v_errormsg, 1, 1000),
v_errorhint);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
-- Koppeling om contactpersonen vanuit PCHD te verspreiden over de andere PCH omgevingen.
CREATE OR REPLACE PROCEDURE pchx_import_contactpersoon (
p_import_key NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_contactpersoon_key VARCHAR2 (1000);
v_contactpersoon_naam VARCHAR2 (1000);
v_contactpersoon_tussenv VARCHAR2 (1000);
v_contactpersoon_voorletters VARCHAR2 (1000);
v_contactpersoon_voornaam VARCHAR2 (1000);
v_contactpersoon_aanhef VARCHAR2 (1000);
v_contactpersoon_titel VARCHAR2 (1000);
v_contactpersoon_telefoon_1 VARCHAR2 (1000);
v_contactpersoon_telefoon_2 VARCHAR2 (1000);
v_contactpersoon_fax VARCHAR2 (1000);
v_contactpersoon_email VARCHAR2 (1000);
v_contactpersoon_functie VARCHAR2 (1000);
v_contactpersoon_opmerking VARCHAR2 (1000);
v_bedrijf_key VARCHAR2 (1000);
v_bedrijf_naam VARCHAR2 (1000);
v_newline VARCHAR2 (4000); -- Import line
v_field VARCHAR2 (1000); -- Import field
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_ongeldig NUMBER (1);
v_header_is_valid NUMBER (1) := 0;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_fielddelimitor := ';';
DELETE pchx_imp_contactpersoon;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_ongeldig := 0;
IF v_header_is_valid = 1
THEN
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_key);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_tussenv);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_voorletters);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_voornaam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_aanhef);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_titel);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_telefoon_1);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_telefoon_2);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_fax);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_email);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_functie);
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon_opmerking);
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_key);
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_naam);
SELECT MAX (b.prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijf b, pchx_imp_bedrijf_gegevens i
WHERE v_bedrijf_key = i.prs_bedrijf_key
AND i.prs_leverancier_nr = b.prs_leverancier_nr
AND b.prs_bedrijf_verwijder IS NULL;
IF v_bedrijf_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Bedrijf niet gevonden: ' || v_bedrijf_naam, '');
v_ongeldig := 1;
END IF;
IF v_ongeldig = 0
THEN
INSERT INTO pchx_imp_contactpersoon (
prs_contactpersoon_key,
prs_contactpersoon_naam,
prs_contactpersoon_tussenv,
prs_contactpersoon_voorletters,
prs_contactpersoon_voornaam,
prs_contactpersoon_aanhef,
prs_contactpersoon_titel,
prs_contactpersoon_telefoon_1,
prs_contactpersoon_telefoon_2,
prs_contactpersoon_fax,
prs_contactpersoon_email,
prs_contactpersoon_functie,
prs_contactpersoon_opmerking,
prs_bedrijf_key,
prs_bedrijf_naam)
VALUES (
v_contactpersoon_key,
v_contactpersoon_naam,
v_contactpersoon_tussenv,
v_contactpersoon_voorletters,
v_contactpersoon_voornaam,
v_contactpersoon_aanhef,
v_contactpersoon_titel,
v_contactpersoon_telefoon_1,
v_contactpersoon_telefoon_2,
v_contactpersoon_fax,
v_contactpersoon_email,
v_contactpersoon_functie,
v_contactpersoon_opmerking,
v_bedrijf_key,
v_bedrijf_naam);
END IF;
ELSE
IF LOWER (v_newline) LIKE 'prs_contactpersoon_key;prs_contactpersoon_naam;prs_contactpersoon_tussenv;prs_contactpersoon_voorletters;prs_contactpersoon_voornaam;prs_contactpersoon_aanhef;prs_contactpersoon_titel;prs_contactpersoon_telefoon_1;prs_contactpersoon_telefoon_2;prs_contactpersoon_fax;prs_contactpersoon_email;prs_contactpersoon_functie;prs_contactpersoon_opmerking;prs_bedrijf_key;prs_bedrijf_naam%'
THEN
v_header_is_valid := 1;
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
END;
/
CREATE OR REPLACE PROCEDURE pchx_update_contactpersoon (
p_import_key NUMBER)
AS
CURSOR c IS
SELECT DISTINCT prs_bedrijf_key
FROM pchx_imp_contactpersoon;
CURSOR c_det (c_bedrijf_key NUMBER)
IS
SELECT *
FROM pchx_imp_contactpersoon
WHERE prs_bedrijf_key = c_bedrijf_key;
v_contactpersoon_key prs_contactpersoon.prs_contactpersoon_key%TYPE;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
FOR rec1 IN c
LOOP
BEGIN
FOR rec IN c_det(rec1.prs_bedrijf_key)
LOOP
BEGIN
BEGIN
v_errorhint := 'Zoek contactpersoon';
SELECT prs_contactpersoon_key
INTO v_contactpersoon_key
FROM prs_contactpersoon
WHERE prs_bedrijf_key = rec1.prs_bedrijf_key
AND prs_contactpersoon_naam = rec.prs_contactpersoon_naam
AND COALESCE(prs_contactpersoon_voornaam, 'Onbekend') = COALESCE(rec.prs_contactpersoon_voornaam, 'Onbekend')
AND prs_contactpersoon_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Voeg contactpersoon toe';
INSERT INTO prs_contactpersoon (prs_contactpersoon_naam, prs_contactpersoon_voornaam, prs_bedrijf_key)
VALUES (rec.prs_contactpersoon_naam, rec.prs_contactpersoon_voornaam, rec.prs_bedrijf_key)
RETURNING prs_contactpersoon_key
INTO v_contactpersoon_key;
END;
v_errorhint := 'Pas contactpersoon aan';
UPDATE prs_contactpersoon
SET prs_contactpersoon_tussenv = rec.prs_contactpersoon_tussenv,
prs_contactpersoon_voorletters = rec.prs_contactpersoon_voorletters,
prs_contactpersoon_aanhef = rec.prs_contactpersoon_aanhef,
prs_contactpersoon_titel = rec.prs_contactpersoon_titel,
prs_contactpersoon_telefoon_1 = rec.prs_contactpersoon_telefoon_1,
prs_contactpersoon_telefoon_2 = rec.prs_contactpersoon_telefoon_2,
prs_contactpersoon_fax = rec.prs_contactpersoon_fax,
prs_contactpersoon_email = rec.prs_contactpersoon_email,
prs_contactpersoon_functie = rec.prs_contactpersoon_functie,
prs_contactpersoon_opmerking = rec.prs_contactpersoon_opmerking
WHERE prs_contactpersoon_key = v_contactpersoon_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
rec.prs_bedrijf_naam || ' - ' || rec.prs_contactpersoon_naam || ', ' || rec.prs_contactpersoon_voornaam || ' - ' ||
SUBSTR (v_errormsg, 1, 1000),
v_errorhint);
END;
END LOOP;
v_errorhint := 'Verwijder contactpersonen';
UPDATE prs_contactpersoon cp
SET cp.prs_contactpersoon_verwijder = SYSDATE
WHERE cp.prs_bedrijf_key = rec1.prs_bedrijf_key
AND NOT EXISTS (SELECT prs_contactpersoon_key
FROM pchx_imp_contactpersoon cp2
WHERE cp2.prs_bedrijf_key = cp.prs_bedrijf_key
AND cp2.prs_contactpersoon_naam = cp.prs_contactpersoon_naam
AND COALESCE(cp2.prs_contactpersoon_voornaam, 'Onbekend') = COALESCE(cp.prs_contactpersoon_voornaam, 'Onbekend'));
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
v_errorhint);
END;
/
--PCHX#62602 Rapportage periodieke taken (ook nog niet gestart)
CREATE OR REPLACE VIEW pchx_v_rap_deelinspect
(
deel_key,
discipline,
soort,
groep,
soortcode,
omschrijving,
plaatseigenaar,
plaatseigenaartype,
plaatsaanduiding,
eigenaar,
eigenaar_key,
opmerking,
regio,
district,
locatie_code,
locatie_omschrijving,
locatie_plaats,
gebouwcode,
gebouw,
terreinsectorcode,
terreinsector,
verdiepingcode,
ruimtenr,
werkplekvolgnr,
werkplek,
uitleenbaar,
uitgeleend,
res_opmerking,
beheerder,
vervaldatum,
actief,
aantal,
state,
statedate,
fclt_3d_discipline_key,
fclt_3d_afdeling_key,
fclt_3d_locatie_key,
ins_deelsrtcontrole_key,
ins_srtcontrole_key,
srtcontrole_omschrijving,
ins_deelsrtcontrole_datum,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_datum_org,
ins_deelsrtcontrole_plandatum,
deelsrtcontrole_status
)
AS
SELECT deel_key,
discipline,
soort,
groep,
soortcode,
omschrijving,
plaatseigenaar,
plaatseigenaartype,
plaatsaanduiding,
eigenaar,
eigenaar_key,
opmerking,
regio,
district,
locatie_code,
locatie_omschrijving,
locatie_plaats,
gebouwcode,
gebouw,
terreinsectorcode,
terreinsector,
verdiepingcode,
ruimtenr,
werkplekvolgnr,
werkplek,
uitleenbaar,
uitgeleend,
res_opmerking,
beheerder,
vervaldatum,
actief,
aantal,
state,
statedate,
fclt_3d_discipline_key,
fclt_3d_afdeling_key,
fclt_3d_locatie_key,
ins_deelsrtcontrole_key,
ins_srtcontrole_key,
srtcontrole_omschrijving,
ins_deelsrtcontrole_datum,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_datum_org,
ins_deelsrtcontrole_plandatum,
deelsrtcontrole_status
FROM ins_v_udr_deelinspect
UNION ALL
SELECT ud.deel_key,
ud.discipline,
ud.soort,
ud.groep,
ud.soortcode,
ud.omschrijving,
ud.plaatseigenaar,
ud.plaatseigenaartype,
ud.plaatsaanduiding,
ud.eigenaar,
ud.eigenaar_key,
ud.opmerking,
ud.regio,
ud.district,
ud.locatie_code,
ud.locatie_omschrijving,
ud.locatie_plaats,
ud.gebouwcode,
ud.gebouw,
ud.terreinsectorcode,
ud.terreinsector,
ud.verdiepingcode,
ud.ruimtenr,
ud.werkplekvolgnr,
ud.werkplek,
ud.uitleenbaar,
ud.uitgeleend,
ud.res_opmerking,
ud.beheerder,
ud.vervaldatum,
ud.actief,
ud.aantal,
ud.state,
ud.statedate,
ud.fclt_3d_discipline_key,
ud.fclt_3d_afdeling_key,
ud.fclt_3d_locatie_key,
NULL,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_omschrijving,
NULL,
'Nog niet gepland',
NULL,
NULL,
NULL,
fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key),
NULL
FROM ins_v_udr_deel ud,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline disc,
ins_srtcontrole sc
WHERE d.ins_deel_key = ud.deel_key
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND disc.ins_discipline_key = sg.ins_discipline_key
AND ( (sd.ins_srtdeel_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'S')
OR (sg.ins_srtgroep_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'G')
OR (disc.ins_discipline_key = sc.ins_srtinstallatie_key
AND ins_srtcontrole_niveau = 'D'));
--PCHX#63363 Notificaties obv periodieke taken naar objectbeheerders
CREATE OR REPLACE VIEW pchx_v_rap_ctrbeh
(
plaats,
gebouw,
verdieping,
ruimte,
discipline,
objectgroep,
objectsoort,
deel_key,
objectomschrijving,
plandatum,
extra_key,
taakomschrijving,
status,
beheerder_key,
beheerder_email
)
AS
SELECT di.locatie_plaats,
di.gebouw,
di.verdiepingcode,
di.ruimtenr,
di.discipline,
di.groep,
di.soort,
di.deel_key,
di.omschrijving,
TRUNC (di.ins_deelsrtcontrole_plandatum),
dsc.ins_deelsrtcontrole_key,
di.srtcontrole_omschrijving,
di.deelsrtcontrole_status,
p.prs_perslid_key,
p.prs_perslid_email
FROM pchx_v_rap_deelinspect di,
ins_deel d,
prs_perslid p,
ins_deelsrtcontrole dsc,
ins_tab_discipline disc,
fac_usrtab ut,
fac_usrdata ud
WHERE di.ins_deelsrtcontrole_datum IS NULL
AND (di.vervaldatum > SYSDATE OR di.vervaldatum IS NULL)
AND d.prs_perslid_key_beh = p.prs_perslid_key(+)
AND d.ins_deel_key = di.deel_key
AND dsc.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key
AND d.ins_discipline_key = disc.ins_discipline_key
AND UPPER (ut.fac_usrtab_naam) = 'NOTI_CUST11'
AND ut.fac_usrtab_verwijder IS NULL
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = d.ins_discipline_key
ORDER BY di.ins_deelsrtcontrole_datum,
TRUNC (di.ins_deelsrtcontrole_plandatum),
di.controlemode_omschrijving,
p.prs_perslid_email;
--PCHX#63363 Notificaties obv periodieke taken naar objectbeheerders
CREATE OR REPLACE VIEW pchx_v_noti_ctrbeh_wk
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT
'CUST11' AS code,
NULL,
beheerder_key,
'Herinnering: '
|| discipline
|| ' - '
|| objectgroep
|| ' - '
|| taakomschrijving
|| ', dient uiterlijk '
|| TO_CHAR (plandatum, 'DD-MM-YYYY')
|| ' te worden afgehandeld',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE UPPER (fac_usrrap_code) = 'PCHX_V_RAP_CTRBEH')
rapportnr,
extra_key
FROM pchx_v_rap_ctrbeh
WHERE TRUNC (plandatum) = TRUNC (SYSDATE) + 7;
--PCHX#63363 Notificaties obv periodieke taken naar objectbeheerders
CREATE OR REPLACE VIEW pchx_v_noti_ctrbeh_mnd
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT
'CUST11' AS code,
NULL,
beheerder_key,
discipline
|| ' - '
|| objectgroep
|| ' - '
|| taakomschrijving
|| ', dient uiterlijk '
|| TO_CHAR (plandatum, 'DD-MM-YYYY')
|| ' te worden afgehandeld',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE UPPER (fac_usrrap_view_name) = 'PCHX_V_RAP_CTRBEH')
rapportnr,
extra_key
FROM pchx_v_rap_ctrbeh
WHERE TRUNC (plandatum) = TRUNC (SYSDATE) + 31;
CREATE OR REPLACE PROCEDURE pchx_import_fin_scansys_xml (
p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR (100);
BEGIN
--In de XSL: Factuurnummer(1);Factuurdatum(2);Ordernummer(3);Omschrijving(4);Aantal(5);Nettobedrag(6);BTWcode(7);BTWBedrag(8);Document(9);Debiteurnummer(10);
-- Opmerking(11);-BtwVerlegd(12);Betalingsconditie(13);Boekperiode(14);Boekstuknummer(15);Kostensoort(16);Kostendrager(17);Grootboekrekening(18);AfwijkendBedrijf(19);Projectcode(20);
-- Administratie(21);Afw.Grootboekrekening(22);Regelnummer(23);Kostenplaats(24);Debiteur(25);AFwijkende boekdatum(26);
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3 ;4 ;5 ;6 ;7 ;8 ;9 ;0 ;1 ;2 ;3 ;4; 5 '
v_seq_of_columns := '0;1;2;3;0;0;4;5;6;;7;9;10;11;12;15;16;17;18;19;14;21;20;22;23;24;7;25;26;8';
-- Variabelelijst
-- v_leveranciernr: 1
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
-- v_factuurdatum: 3
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_locatie: 5
-- v_afleverdatum: 6
-- v_omschrijving: 7
-- v_aantal: 8
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet"), dit staat in kenmerk14
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
-- v_docid: 12
-- v_debiteur_nr: 13
-- v_opmerking: 14
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
-- v_kenmerk1: 16 (Boekstuknummer)
-- v_kenmerk2: 17 (Kostensoort)
-- v_kenmerk3: 18 (Kostendrager)
-- v_kenmerk4: 19 (Grootboekrekening)
-- v_kenmerk5: 20 (Afwijkend bedrijf)
-- v_boekmaand: 21
-- v_kenmerk6: 22 (Adminstratie)
-- v_kenmerk7: 23 (Projectcode)
-- v_kenmerk8: 24 (Afwijkende grootboekrekening)
-- v_kenmerk9: 25 (Regelnummer)
-- v_kenmerk10: 26 (Kostenplaats)
-- v_kenmerk11: 27 (BTW code)
-- v_kenmerk12: 28 Debiteur
-- v_kenmerk13: 29 Afwijkende boekdatum
-- v_kenmerk14: 30 BTW bedrag (gelijk aan 10).
DELETE FROM fac_imp_factuur
WHERE fac_import_key <> p_import_key;
fac_import_factuur_body (p_import_key, v_seq_of_columns);
UPDATE fac_imp_factuur
SET factuurregelaantal = aantal;
UPDATE fac_imp_factuur
SET ordernr = factuurnr
WHERE ordernr IS NULL;
-- verwijder de entries uit de imp_file omdat er meerdere bestanden in <20><>n run ingelezen kunnen worden.
DELETE fac_imp_file
WHERE fac_import_key = p_import_key;
END;
/
CREATE OR REPLACE PROCEDURE pchx_post_upd_fin_scansys_xml (
p_import_key IN NUMBER)
AS
CURSOR km_facturen IS
SELECT factuurnr,
fin_factuur_key,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key,
(SELECT DISTINCT (MAX (p.prs_perslid_key))
FROM prs_perslid p, fac_v_rap_groeprechten r
WHERE r.fclt_f_login = p.prs_perslid_oslogin
AND r.fclt_f_funcode = 'WEB_FINGOE') AS goedkeurder
FROM ( SELECT factuurnr,
MAX (fin_factuur_key) AS fin_factuur_key,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key
FROM fac_imp_factuur
GROUP BY factuurnr,
omschrijving,
-- opmerking,
kenmerk1,
kenmerk4,
kenmerk6,
kenmerk12,
debiteurnr,
fac_import_key);
CURSOR km_factuurregels IS
SELECT *
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key;
CURSOR btw IS
SELECT f.fac_import_key,
f.fac_imp_file_index,
f.fin_factuur_key,
f.fin_factuurregel_key,
f.btw,
f.kenmerk11,
f.btw_bedrag
FROM fac_imp_factuur f
WHERE f.fac_import_key = p_import_key;
CURSOR btw_verlegd IS
SELECT f.fac_import_key,
f.fac_imp_file_index,
f.fin_factuur_key,
f.fin_factuurregel_key,
f.btw,
f.kenmerk11,
f.btw_bedrag
FROM fac_imp_factuur f
WHERE f.fac_import_key = p_import_key
AND (f.kenmerk11 = 'I21' OR f.kenmerk11 = 'I9');
v_factuur_key NUMBER (10);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_afwbedrijf VARCHAR2 (200);
v_grootboekrekening VARCHAR2 (200);
v_kostendrager VARCHAR2 (200);
v_kostenplaats NUMBER;
v_referentie_key NUMBER;
v_opmerking VARCHAR2 (3000);
v_omschrijving VARCHAR2 (3000);
v_afw_boekdatum VARCHAR2 (200);
v_btwverlegd_key VARCHAR2 (200);
BEGIN
-- Er kunnen meerdere BTW codes zijn met zelfde BTW percentage ivm btw verlegd, hier zetten we deze goed.
v_errorhint := 'BTW code verlegd goedzetten';
FOR rec IN btw_verlegd
LOOP
BEGIN
SELECT fin_btwtabelwaarde_key
INTO v_btwverlegd_key
FROM fin_btwtabelwaarde
WHERE fin_btwtabelwaarde_code = rec.kenmerk11
AND fin_btwtabelwaarde_verwijder IS NULL;
UPDATE fin_factuurregel
SET fin_btwtabelwaarde_key = v_btwverlegd_key -- BTW key bijbehorende BTW code (I21 / I9)
WHERE fin_factuurregel_key = rec.fin_factuurregel_key
AND (rec.kenmerk11 = 'I21' OR rec.kenmerk11 = 'I9');
END;
END LOOP;
-- De kenmerken bij de facturen en factuurregels worden hieronder nog gevuld.
v_errorhint := 'Kenmerken facturen vullen';
FOR rec IN km_facturen
LOOP
v_opmerking := SUBSTR (rec.omschrijving, 1, 250);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
v_errorhint := 'Opmerking bij factuur vullen';
UPDATE fin_factuur
SET fin_factuur_opmerking = v_opmerking
WHERE fin_factuur_key = rec.fin_factuur_key;
BEGIN
v_errorhint := 'Debiteur in factuur vullen';
--Debiteur bij de factuur overnemen van de tag <Debiteur>
UPDATE fin_factuur
SET fin_factuur_debiteur_nr = rec.kenmerk12
WHERE fin_factuur_key = rec.fin_factuur_key;
v_errorhint := 'Goedkeurder in factuur vullen';
--Een goedkeurder vullen bij de factuur
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = rec.goedkeurder
WHERE fin_factuur_key = rec.fin_factuur_key
AND rec.fin_factuur_key IS NOT NULL;
-- administratie
IF rec.kenmerk6 IS NULL
THEN
v_errorhint := 'Geen administratie';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen administratie gevuld bij dit boekstuknummer '
|| rec.kenmerk1);
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'ADMINISTRATIE'),
rec.kenmerk6);
END IF;
-- boekstuknummer
IF rec.kenmerk1 IS NULL
THEN
v_errorhint := 'Geen boekstuknummer';
fac.imp_writelog (p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen boekstuknummer gevuld');
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'BOEKSTUKNUMMER'),
rec.kenmerk1);
END IF;
-- Afwijkend bedrijf
IF rec.debiteurnr IS NULL
THEN
v_errorhint := 'Geen afw. bedrijf';
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. BEDRIJF'),
(SELECT MAX (prs_bedrijf_key)
FROM prs_v_aanwezigbedrijf
WHERE fac.safe_to_number (
prs_leverancier_nr) =
rec.debiteurnr));
END IF;
--Grootboekrekening
IF rec.kenmerk4 IS NULL
THEN
v_errorhint := 'Geen grootboekrekening';
ELSE
v_errorhint := 'Fout bij inlezen grootboekrekening';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde)
VALUES (
rec.fin_factuur_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'GROOTBOEKREKENING'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'GROOTBOEKREKENIN'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk4));
END IF;
v_errorhint := 'Bepalen referentie';
SELECT COALESCE (mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key)
INTO v_referentie_key
FROM fin_factuur
WHERE fin_factuur_key = rec.fin_factuur_key
AND rec.fac_import_key = p_import_key;
IF v_referentie_key IS NULL
THEN
v_errorhint := 'Geen referentie';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen referentie gevonden bij dit boekstuknummer '
|| rec.kenmerk1);
END IF;
END;
END LOOP;
FOR rec IN km_factuurregels
LOOP
BEGIN
v_errorhint := 'Update factuurregels';
v_kostenplaats := NULL;
v_omschrijving := SUBSTR (rec.opmerking, 1, 250);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_omschrijving := REPLACE (v_omschrijving, '@@', CHR (13));
v_afw_boekdatum :=
TO_CHAR (
fac.safe_to_date (SUBSTR (rec.kenmerk13, 0, 10),
'yyyy-mm-dd'),
'dd-mm-yyyy');
v_errorhint := 'Update factuurregels, kostenplaats';
SELECT MAX (prs_kostenplaats_key)
INTO v_kostenplaats
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER (rec.kenmerk10)
AND prs_kostenplaats_verwijder IS NULL;
v_errorhint := 'Update factuurregels, omschrijving';
UPDATE fin_factuurregel
SET fin_factuurregel_omschrijving = v_omschrijving
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
--Afwijkende grootboekrekening (factuurregel)
v_errorhint := 'Geen afw. grootboekrekening factuurregel';
--Het BTW bedrag moet 1 op 1 worden overgenomen vanuit Scansys, om geen afrondingsverschillen te krijgen
v_errorhint := 'BTW bedrag overnemen';
UPDATE fin_factuurregel
SET fin_factuurregel_btw =
fac.safe_to_number (REPLACE (rec.kenmerk14, ',', '.'))
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
IF rec.kenmerk8 IS NULL
THEN
v_errorhint := 'Geen afw. grootboekrekening factuurregel';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg || v_errorhint,
'Er is geen afwijkende grootboekrekening gevuld bij een factuurregel bij dit boekstuknummer '
|| rec.kenmerk1);
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. GROOTBOEKREKENING'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'GROOTBOEKREKENIN'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk8));
END IF;
--Projectcode (factuurregel)
v_errorhint := 'Geen projectcode factuurregel';
IF rec.kenmerk7 IS NULL
THEN
v_errorhint := 'Geen projectcode factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'PROJECTCODE'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'PROJECTCODE'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk7));
END IF;
v_errorhint := 'Geen afw. kostendrager factuurregel';
--Afw. Kostendrager (factuurregel)
IF rec.kenmerk3 IS NULL
THEN
v_errorhint := 'Geen afw. kostendrager factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. KOSTENDRAGER'),
(SELECT MAX (ud.fac_usrdata_key)
FROM fac_usrdata ud, fac_usrtab ut
WHERE UPPER (ut.fac_usrtab_naam) =
'KOSTENDRAGER'
AND ut.fac_usrtab_key =
ud.fac_usrtab_key
AND ud.fac_usrdata_code =
rec.kenmerk3));
END IF;
v_errorhint := 'Geen afw. kostenplaats factuurregel';
--Afw. kostenplaats (factuurregel)
IF v_kostenplaats IS NULL
THEN
v_errorhint := 'Geen afw. kostenplaats factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. KOSTENPLAATS'),
v_kostenplaats);
END IF;
v_errorhint := 'Geen kostensoort factuurregel';
--Kostensoort (factuurregel)
IF rec.kenmerk2 IS NULL
THEN
v_errorhint := 'Geen kostensoort factuurregel';
ELSE
UPDATE fin_factuurregel
SET prs_kostensoort_key =
(SELECT MAX (ks.prs_kostensoort_key)
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_upper =
UPPER (rec.kenmerk2))
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
END IF;
v_errorhint := 'Geen regelnummer factuurregel';
--Regelnummer (factuurregel)
IF rec.kenmerk9 IS NULL
THEN
v_errorhint := 'Geen regelnummer factuurregel';
ELSE
UPDATE fin_factuurregel
SET fin_factuurregel_nr = rec.kenmerk9
WHERE fin_factuurregel_key = rec.fin_factuurregel_key;
END IF;
v_errorhint := 'Geen afw. boekdatum factuurregel';
--Afw. boekdatum (factuurregel)
IF rec.kenmerk13 IS NULL
THEN
v_errorhint := 'Geen afw. boekdatum factuurregel';
ELSE
INSERT INTO fin_kenmerkfactregel (
fin_factuurregel_key,
fin_kenmerk_key,
fin_kenmerkfactregel_waarde)
VALUES (
rec.fin_factuurregel_key,
(SELECT MAX (fin_kenmerk_key)
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND fin_kenmerk_upper =
'AFW. BOEKDATUM'),
v_afw_boekdatum);
END IF;
END;
END LOOP;
COMMIT;
--Het BTW bedrag moet 1 op 1 worden overgenomen vanuit Scansys, om geen afrondingsverschillen te krijgen
FOR rec IN km_facturen
LOOP
v_errorhint := 'BTW bedrag factuur herrekenen';
BEGIN
UPDATE fin_factuur
SET fin_factuur_totaal_btw =
(SELECT SUM (fin_factuurregel_btw)
FROM fin_factuurregel
WHERE fin_factuur_key = rec.fin_factuur_key)
WHERE fin_factuur_key = rec.fin_factuur_key;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
v_errorhint);
END;
/
CREATE OR REPLACE PROCEDURE pchx_update_fin_scansys_xml (
p_import_key IN NUMBER)
AS
BEGIN
-- Standaard FCLT verwerk import facturen
fac_update_factuur (p_import_key);
-- CUST: post processing van:
-- 1) Kenmerken vullen bij factuur.
-- 2) Btw code goed zetten.
pchx_post_upd_fin_scansys_xml (p_import_key);
END;
/
--PCHS#64217 Rapportage meldingen met incidentnummer
CREATE OR REPLACE VIEW pchx_v_mld_incidentnr
AS
SELECT melding_key,
meldingnummer,
melding_start_key,
externnummer,
melding_regio,
melding_district,
melding_locatiecode,
melding_locatie,
melding_locatieplaats,
fclt_3d_locatie_key,
melding_gebouwcode,
melding_gebouw,
melding_verdieping,
melding_ruimtenr,
melding_ruimte,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
melder_key,
afdeling,
afdeling_omschrijving,
fclt_3d_afdeling_key,
bedrijf_key,
invoerder,
meldbron,
soortmelding,
fclt_3d_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
fclt_3d_discipline2_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
melding_status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
melding_datum,
melding_einddatum,
melding_einddatum_std,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
doorlooptijd_werkdgn,
doorlooptijd_werkuren,
onderwerp,
vomschrijving,
melding_opmerking,
prioriteit,
prioriteittxt,
rating,
rating_opmerking,
bolletje,
actiecode,
accept_sla_dagen,
accept_sla_uren,
uitvoering_sla_dagen,
uitvoering_sla_uren,
afspraak_sla_dagen,
afspraak_sla_uren,
accept_sla_optijd,
uitvoering_sla_optijd,
afspraak_sla_optijd,
selfservice,
(SELECT DISTINCT (kmm.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding kmm, mld_kenmerk km
WHERE km.mld_kenmerk_omschrijving = 'Incidentnummer'
AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
AND kmm.mld_melding_key = melding_key
AND km.mld_kenmerk_verwijder IS NULL
AND kmm.mld_kenmerkmelding_verwijder IS NULL)
AS incidentnummer
FROM mld_v_udr_melding;
/
CREATE OR REPLACE VIEW pchx_v_implog_scansysxml
(
import,
import_key,
datum,
status,
omschrijving,
hint
)
AS
SELECT ia.fac_import_app_code,
LOG.fac_import_key,
LOG.imp_log_datum,
LOG.imp_log_status,
LOG.imp_log_omschrijving,
LOG.imp_log_hint
FROM imp_log LOG, fac_import i, fac_import_app ia
WHERE LOG.fac_import_key = i.fac_import_key
AND i.fac_import_app_key = ia.fac_import_app_key
AND LOG.imp_log_status = 'E'
AND UPPER (ia.fac_import_app_code) = 'FIN_SCANSYS_XML'
AND LOG.imp_log_hint NOT LIKE
'%Er is geen grootboekrekening gevuld bij dit boekstuknummer%' --ivm PCHX#68542
ORDER BY imp_log_key DESC;
/
CREATE OR REPLACE VIEW PCHX_V_NOTI_IMPLOGSCANSYS
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XSENDER,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
'CUST12',
NULL,
NULL,
pchx.get_user || ': ' || imp.omschrijving || ' ' || imp.hint,
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE UPPER (fac_usrrap_code) =
'PCHX_V_IMPLOG_SCANSYSXML') rapportnr,
NULL,
NULL,
'fa@pch-dienstengroep.nl',
NULL
FROM PCHX_V_IMPLOG_SCANSYSXML imp
WHERE imp.datum BETWEEN (SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'PCHX_V_NOTI_IMPLOGSCANSYS')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE UPPER (fac_notificatie_job_view) =
'PCHX_V_NOTI_IMPLOGSCANSYS');
/
CREATE OR REPLACE VIEW PCHX_V_BRON_PRS_ANO
(
PERSLID_KEY,
NAAM,
TUSSENVOEGSEL,
VOORLETTERS,
VOORNAAM,
LOGIN,
EMAIL,
VERWIJDERDATUM,
NIEUWE_NAAM
)
AS
SELECT p.prs_perslid_key,
p.prs_perslid_naam,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_voorletters,
p.prs_perslid_voornaam,
p.prs_perslid_oslogin,
p.prs_perslid_email,
p.prs_perslid_verwijder,
lcl.l ('lcl_prs_old_employee')
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NOT NULL
AND NOT EXISTS
(SELECT ft.fac_tracking_key
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'PRSANO'))
ORDER BY p.prs_perslid_verwijder;
/
CREATE OR REPLACE VIEW PCHX_V_NOTI_CAPA
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'CUST13',
NULL,
COALESCE (m.actieve_behandelaar_key, m.behandelaar_key),
'Rapp<EFBFBD>l: '
|| fac_version_cust
|| ': '
|| m.melding_key
|| ' '
|| sm.mld_stdmelding_omschrijving
|| ' - '
|| m.onderwerp
|| ' moet uiterlijk per '
|| TO_CHAR (m.melding_einddatum, 'DD-MM-YYYY')
|| ' gereed zijn' AS text,
mm.mld_melding_key,
NULL,
NULL,
NULL
FROM mld_v_udr_melding m,
mld_melding mm,
mld_stdmelding sm,
fac_version
WHERE mm.mld_melding_key = m.melding_key
AND mm.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key IN
(SELECT ud.fac_usrdata_volgnr
FROM fac_usrdata ud, fac_usrtab ut
WHERE ut.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (ut.fac_usrtab_naam) = 'CUST13')
AND COALESCE (m.actieve_behandelaar_key, m.behandelaar_key) IS NOT NULL
AND ( TRUNC (m.melding_einddatum) =
ADD_MONTHS (TRUNC (SYSDATE), 2) -- 2 maanden vanaf nu
OR TRUNC (m.melding_einddatum) =
ADD_MONTHS (TRUNC (SYSDATE), 1) -- 1 maand vanaf nu
OR TRUNC (m.melding_einddatum) = TRUNC (SYSDATE) + 7) -- 1 week vanaf nu
AND mm.mld_melding_status IN (0,
2,
3,
4,
7);
-- Overzicht dat inzichtelijk maakt wie tot welke limiet mag fiatteren.
CREATE OR REPLACE VIEW pchx_v_fiatterings_overzicht
AS
SELECT k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
kpp.prs_perslid_naam_full,
pr.fac_profiel_omschrijving,
pr.fac_profiel_limiet,
d.ins_discipline_omschrijving,
pw.fac_profielwaarde_limiet,
kpg.prs_kostenplaatsgrp_oms,
kpg1.prs_perslid_naam_full kpg1_fiat,
COALESCE (prs_kostenplaatsgrp_fin_limit1, FAC.safe_to_number (FAC.getSetting ('mld_opdr_kpg_fin_limit1')))
limiet1,
kpg2.prs_perslid_naam_full kpg2_fiat,
COALESCE (prs_kostenplaatsgrp_fin_limit2, FAC.safe_to_number (FAC.getSetting ('mld_opdr_kpg_fin_limit2')))
limiet2,
kpg3.prs_perslid_naam_full kpg3_fiat
FROM prs_kostenplaats k,
prs_kostenplaatsgrp kpg,
prs_v_perslid_fullnames kpg1,
prs_v_perslid_fullnames kpg2,
prs_v_perslid_fullnames kpg3,
prs_v_perslid_fullnames kpp,
prs_perslid p,
fac_profiel pr,
fac_profielwaarde pw,
ins_tab_discipline d
WHERE k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND k.prs_perslid_key = p.prs_perslid_key(+)
AND k.prs_perslid_key = kpp.prs_perslid_key(+)
AND kpg.prs_perslid_key = kpg1.prs_perslid_key(+)
AND kpg.prs_kostenplaatsgrp_fiat2_key = kpg2.prs_perslid_key(+)
AND kpg.prs_kostenplaatsgrp_fiat3_key = kpg3.prs_perslid_key(+)
AND p.fac_profiel_key = pr.fac_profiel_key(+)
AND pr.fac_profiel_key = pw.fac_profiel_key(+)
AND pw.ins_discipline_key = d.ins_discipline_key(+)
AND k.prs_kostenplaats_verwijder IS NULL
AND COALESCE (k.prs_kostenplaats_eind, SYSDATE + 1) > SYSDATE;
CREATE OR REPLACE VIEW pchx_v_mld_mldref
(
MELDING_KEY,
MELDING_NUMMER
)
AS
SELECT m.mld_melding_key,
srt.INS_SRTDISCIPLINE_PREFIX
|| m.mld_melding_key
|| ' - '
|| sm.MLD_STDMELDING_OMSCHRIJVING
FROM mld_melding m, ins_srtdiscipline srt, mld_stdmelding sm, mld_discipline d
WHERE m.MLD_STDMELDING_KEY = sm.MLD_STDMELDING_KEY AND
sm.MLD_INS_DISCIPLINE_KEY = d.INS_DISCIPLINE_KEY
AND d.INS_SRTDISCIPLINE_KEY = srt.INS_SRTDISCIPLINE_KEY;
CREATE OR REPLACE VIEW pchx_v_cntr_cntrref
(
CONTRACT_KEY,
CONTRACT_NUMMER,
VERWIJDER_DATUM
)
AS
SELECT cnt.cnt_contract_key,
cnt.cnt_contract_nummer_intern || case when cnt.cnt_contract_versie IS NULL OR cnt.cnt_contract_versie = ''THEN '' ELSE '.'||cnt.cnt_contract_versie END || ' - ' || cdisc.INS_DISCIPLINE_OMSCHRIJVING ,
cnt.CNT_CONTRACT_VERWIJDER
FROM cnt_contract cnt, cnt_discipline cdisc
WHERE cnt.INS_DISCIPLINE_KEY = cdisc.INS_DISCIPLINE_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