Files
Customer/YASK/yask.sql
Arthur Egberink 7862add4ec YASK#65786 -- Aanpassing rapportage
svn path=/Customer/trunk/; revision=50499
2021-03-25 10:47:36 +00:00

1454 lines
54 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'YASK.SQL'
DEFINE dbuser = 'YASK'
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 YASK
AS
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER;
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER;
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
RETURN VARCHAR2;
PROCEDURE set_verkoopprijs (p_opdr_key IN NUMBER);
END;
/
CREATE OR REPLACE PACKAGE BODY YASK
AS
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER
AS
v_geen_opslag NUMBER;
BEGIN
SELECT FAC.safe_to_number(ko.mld_kenmerkopdr_waarde)
INTO v_geen_opslag
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 21 -- Geen opslag
AND ko.mld_opdr_key = p_opdr_key;
RETURN v_geen_opslag;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER
AS
v_geen_opslag NUMBER;
v_opslag NUMBER;
v_opdr_mat NUMBER;
v_locatie_key ALG_LOCATIE.ALG_LOCATIE_KEY%TYPE;
v_srtdiscipline_key INS_SRTDISCIPLINE.INS_SRTDISCIPLINE_KEY%TYPE;
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
v_kostensoort_key PRS_KOSTENSOORT.PRS_KOSTENSOORT_KEY%TYPE;
v_melding_datum MLD_MELDING.MLD_MELDING_DATUM%TYPE;
BEGIN
v_geen_opslag := YASK.geen_opslag(p_opdr_key);
IF v_geen_opslag = 1 THEN
RETURN NULL;
END IF;
-- In het geval er materiaal regels aan de opdracht zitten rekenen we geen opslag.
-- De materiaal regels bevatten namelijk een prijs incl opslag.
SELECT count(*)
INTO v_opdr_mat
FROM mld_opdr_materiaal om
WHERE om.mld_opdr_key = p_opdr_key;
IF v_opdr_mat > 0
THEN
RETURN NULL;
END IF;
SELECT m.mld_alg_locatie_key,
sd.ins_srtdiscipline_key,
d.ins_discipline_key,
std.prs_kostensoort_key,
mld_melding_datum
INTO v_locatie_key, v_srtdiscipline_key, v_discipline_key, v_kostensoort_key, v_melding_datum
FROM mld_melding m,
mld_opdr o,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
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 o.mld_melding_key = m.mld_melding_key
AND o.mld_opdr_key = p_opdr_key;
-- Controleer of de NEN code is ingevuld in de opslag tabel. Dan
-- geldt deze altijd.
SELECT MAX(opslag)
INTO v_opslag
FROM yask_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND prs_kostensoort_key = v_kostensoort_key
AND ( (ingangsdatum IS NULL AND einddatum IS NULL)
OR (ingangsdatum IS NOT NULL AND einddatum IS NULL AND v_melding_datum >= ingangsdatum)
OR (ingangsdatum IS NULL AND einddatum IS NOT NULL AND v_melding_datum < einddatum+1)
OR (ingangsdatum IS NOT NULL AND einddatum IS NOT NULL AND v_melding_datum BETWEEN ingangsdatum AND einddatum+1)
)
AND imp_opslag_verwijder IS NULL;
IF v_opslag IS NOT NULL
THEN
RETURN v_opslag;
END IF;
-- Controleer of de vakgroep icm vakgroeptype is ingevuld in de opslag tabel.
SELECT MAX(opslag)
INTO v_opslag
FROM yask_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND ins_discipline_key = v_discipline_key
AND ( (ingangsdatum IS NULL AND einddatum IS NULL)
OR (ingangsdatum IS NOT NULL AND einddatum IS NULL AND v_melding_datum >= ingangsdatum)
OR (ingangsdatum IS NULL AND einddatum IS NOT NULL AND v_melding_datum < einddatum +1)
OR (ingangsdatum IS NOT NULL AND einddatum IS NOT NULL AND v_melding_datum BETWEEN ingangsdatum AND einddatum+1)
)
AND imp_opslag_verwijder IS NULL;
IF v_opslag IS NOT NULL
THEN
RETURN v_opslag;
END IF;
-- Controleer of de vakgroeptype is ingevuld in de opslag tabel.
SELECT MAX(opslag)
INTO v_opslag
FROM yask_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND ins_srtdiscipline_key = v_srtdiscipline_key
AND ins_discipline_key IS NULL
AND ( (ingangsdatum IS NULL AND einddatum IS NULL)
OR (ingangsdatum IS NOT NULL AND einddatum IS NULL AND v_melding_datum >= ingangsdatum)
OR (ingangsdatum IS NULL AND einddatum IS NOT NULL AND v_melding_datum < einddatum +1)
OR (ingangsdatum IS NOT NULL AND einddatum IS NOT NULL AND v_melding_datum BETWEEN ingangsdatum AND einddatum+1)
)
AND imp_opslag_verwijder IS NULL;
IF v_opslag IS NOT NULL
THEN
RETURN v_opslag;
END IF;
-- Dan houden we nog <20><>n optie over en dat is een lege regel.
SELECT MAX(opslag)
INTO v_opslag
FROM yask_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND ins_srtdiscipline_key IS NULL
AND ins_discipline_key IS NULL
AND prs_kostensoort_key IS NULL
AND ( (ingangsdatum IS NULL AND einddatum IS NULL)
OR (ingangsdatum IS NOT NULL AND einddatum IS NULL AND v_melding_datum >= ingangsdatum)
OR (ingangsdatum IS NULL AND einddatum IS NOT NULL AND v_melding_datum < einddatum +1)
OR (ingangsdatum IS NOT NULL AND einddatum IS NOT NULL AND v_melding_datum BETWEEN ingangsdatum AND einddatum+1)
)
AND imp_opslag_verwijder IS NULL;
IF v_opslag IS NOT NULL
THEN
RETURN v_opslag;
END IF;
RETURN NULL;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
RETURN VARCHAR2
AS
v_geen_opslag NUMBER;
v_srtopslag ALG_KENMERK.ALG_KENMERK_OMSCHRIJVING%TYPE;
v_locatie_key ALG_LOCATIE.ALG_LOCATIE_KEY%TYPE;
v_srtdiscipline_key INS_SRTDISCIPLINE.INS_SRTDISCIPLINE_KEY%TYPE;
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
v_kostensoort_key PRS_KOSTENSOORT.PRS_KOSTENSOORT_KEY%TYPE;
BEGIN
v_geen_opslag := YASK.geen_opslag(p_opdr_key);
IF v_geen_opslag = 1 THEN
RETURN NULL;
END IF;
SELECT alg_kenmerk_omschrijving
INTO v_srtopslag
FROM alg_onrgoedkenmerk aogk,
alg_kenmerk ak,
mld_melding m,
mld_opdr o,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
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 aogk.alg_kenmerk_key = ak.alg_kenmerk_key
AND aogk.alg_kenmerk_key =
DECODE (sd.ins_srtdiscipline_omschrijving, 'Projecten', 1002,
DECODE (d.ins_discipline_omschrijving, 'Schoonmaak', 1003, 1000))
AND aogk.alg_onrgoed_key = m.mld_alg_locatie_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_opdr_key = p_opdr_key;
RETURN v_srtopslag;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
-- Vul het kenmerk verkoopprijs (key 201) bij de opdracht
PROCEDURE set_verkoopprijs (p_opdr_key IN NUMBER)
AS
v_opdr_kosten NUMBER;
v_verkoopprijs NUMBER;
v_opslag NUMBER;
BEGIN
SELECT mld_opdr_kosten
INTO v_opdr_kosten
FROM mld_opdr o
WHERE mld_opdr_key = p_opdr_key;
v_opslag := YASK.bepaal_opslag(p_opdr_key);
IF v_opslag = 0
THEN
v_verkoopprijs := NULL;
ELSE
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
END IF;
MLD.upsertopdrachtkenmerk (201, p_opdr_key, v_verkoopprijs);
END;
END;
/
-- Rapport voor het doorbelasten van de kosten. Hier wordt ook een opslagperscentage in meegenomen.
-- Als het een project betreft is de vakgroep omschrijving Projecten
-- Als het om schoonmaak gaat heet de vakgroep Schoonmaak
-- En anders is het materiaal of subcontrating. Maar deze hebben hetzelfde tarief.
-- De tarieven staan bij de locatie vermeld in flexvelden.
CREATE OR REPLACE VIEW yask_v_kosten_doorbelasting
AS
SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
m.mld_melding_key,
l.alg_locatie_omschrijving meldinglocatie,
pf.prs_perslid_naam_full melder,
sd.ins_srtdiscipline_omschrijving soortmelding,
d.ins_discipline_omschrijving productgroep,
std.mld_stdmelding_omschrijving subproductgroep,
ksm.prs_kostensoort_oms melding_nen_omschrijving,
ksm.prs_kostensoort_refcode melding_nen_code,
CASE
WHEN m.mld_melding_status = 5 AND m.mld_melding_afgerond = 1
THEN
'Afgerond'
ELSE
ms.mld_statuses_omschrijving
END
meldingstatus,
fs.fac_usrdata_omschr facturatiestatus,
m.mld_melding_datum meldingdatum,
MLD.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving vomschrijving,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer,
ot.mld_typeopdr_omschrijving opdrachttype,
so.mld_statusopdr_omschrijving opdrachtstatus,
o.mld_opdr_omschrijving opdrachtomschrijving,
kso.prs_kostensoort_oms opdracht_nen_omschrijving,
b.prs_bedrijf_naam opdrachtuitvoerende,
o.mld_opdr_kosten opdrachtkosten,
YASK.bepaal_srtopslag(o.mld_opdr_key) soortopslag,
YASK.bepaal_opslag(o.mld_opdr_key) opslag,
o.mld_opdr_kosten * ((100 + COALESCE(YASK.bepaal_opslag(o.mld_opdr_key),0)) /100) kostenplusopslag,
YASK.geen_opslag(o.mld_opdr_key) geenopslag,
TO_CHAR(ADD_MONTHS(SYSDATE,
COALESCE((SELECT FAC.safe_to_number(alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk WHERE alg_kenmerk_key = 1060
AND alg_onrgoed_key = l.alg_district_key),0)),'yyyymm') boekmaand,
aog.alg_gebouw_naam meldinggebouw,
(SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 161) klant_inkoopordernr,
(SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 61) klant_kostenplaats,
(SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 181) klant_werkorder,
o.mld_opdr_key,
l.alg_district_key
FROM prs_v_perslid_fullnames_all pf,
prs_kostensoort ksm,
mld_statuses ms,
mld_opdr o,
mld_typeopdr ot,
mld_statusopdr so,
prs_bedrijf b,
alg_locatie l,
prs_kostensoort kso,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens aog,
(SELECT mld_melding_key, fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 1 -- Facturatiestatus
AND FAC.safe_to_number (mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key) fs
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 std.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_melding_key = fs.mld_melding_key(+)
AND m.mld_melding_key = o.mld_melding_key
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+);
CREATE OR REPLACE VIEW yask_v_kosten_doorb_frozen
AS
SELECT fin_verkoopfactuur_omschr meldingnummer,
fin_verkoopfactuur_n4 mld_melding_key,
l.alg_locatie_omschrijving meldinglocatie,
pf.prs_perslid_naam_full melder,
fin_verkoopfactuur_c3 soortmelding,
fin_verkoopfactuur_c4 productgroep,
fin_verkoopfactuur_c5 subproductgroep,
fin_verkoopfactuur_c1 melding_nen_omschrijving,
fin_verkoopfactuur_c2 melding_nen_code,
ms.mld_statuses_omschrijving meldingstatus,
'Gefactureerd' facturatiestatus,
m.mld_melding_datum meldingdatum,
MLD.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving vomschrijving,
fin_verkoopfactuur_id opdrachtnummer,
ot.mld_typeopdr_omschrijving opdrachttype,
so.mld_statusopdr_omschrijving opdrachtstatus,
o.mld_opdr_omschrijving opdrachtomschrijving,
prs_kostensoort_oms opdracht_nen_omschrijving,
b.prs_bedrijf_naam opdrachtuitvoerende,
fin_verkoopfactuur_bedrag opdrachtkosten,
fin_verkoopfactuur_c6 soortopslag,
fin_verkoopfactuur_n2 opslag,
fin_verkoopfactuur_n3 kostenplusopslag,
fin_verkoopfactuur_n1 geenopslag,
fin_verkoopfactuur_maand boekmaand,
fin_verkoopfactuur_c7 klant_inkoopordernr,
fin_verkoopfactuur_c8 klant_kostenplaats,
prs_kostensoortgrp_oms klant_werkorder,
mld_opdr_key
FROM fin_verkoopfactuur vf,
prs_v_perslid_fullnames pf,
mld_statuses ms,
mld_opdr o,
mld_typeopdr ot,
mld_statusopdr so,
prs_bedrijf b,
alg_locatie l,
mld_melding m
WHERE m.mld_melding_status = ms.mld_statuses_key
AND m.mld_melding_key = vf.fin_verkoopfactuur_n4
AND o.mld_opdr_key = vf.fin_verkoopfactuur_refkey
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+);
CREATE OR REPLACE VIEW yask_v_kosten_export_power_bi
AS
SELECT d.meldingnummer,
d.mld_melding_key,
d.meldinglocatie,
u.melding_gebouw,
u.melding_gebouwcode,
d.melder,
d.soortmelding,
d.productgroep,
d.subproductgroep,
d.melding_nen_omschrijving,
d.melding_nen_code,
d.meldingstatus,
d.facturatiestatus,
d.meldingdatum,
d.afgemeld,
d.onderwerp,
d.vomschrijving,
d.opdrachtnummer,
d.opdrachttype,
d.opdrachtstatus,
d.opdrachtomschrijving,
d.opdracht_nen_omschrijving,
d.opdrachtuitvoerende,
d.opdrachtkosten,
d.soortopslag,
d.opslag,
d.kostenplusopslag,
d.geenopslag,
d.boekmaand,
d.klant_inkoopordernr,
d.klant_kostenplaats,
d.klant_werkorder,
d.mld_opdr_key,
u.sla_accpturen,
u.plan_uitvoertijd_sla,
u.accept_sla_dagen,
u.accept_sla_uren,
u.afspraak_sla_dagen,
u.accept_sla_optijd,
u.uitvoering_sla_optijd,
u.afspraak_sla_optijd,
u.melding_afgemeld datum_afgemeld,
u.melding_accepted datum_acceptatie,
u.melding_datum datum_aanmaak
FROM yask_v_kosten_doorbelasting d, mld_v_udr_melding u
WHERE meldingstatus <> 'Historie'
AND d.mld_melding_key = u.melding_key
UNION ALL
SELECT f.meldingnummer,
f.mld_melding_key,
f.meldinglocatie,
u.melding_gebouw,
u.melding_gebouwcode,
f.melder,
f.soortmelding,
f.productgroep,
f.subproductgroep,
f.melding_nen_omschrijving,
f.melding_nen_code,
f.meldingstatus,
f.facturatiestatus,
f.meldingdatum,
f.afgemeld,
f.onderwerp,
f.vomschrijving,
f.opdrachtnummer,
f.opdrachttype,
f.opdrachtstatus,
f.opdrachtomschrijving,
f.opdracht_nen_omschrijving,
f.opdrachtuitvoerende,
f.opdrachtkosten,
f.soortopslag,
f.opslag,
f.kostenplusopslag,
f.geenopslag,
f.boekmaand,
f.klant_inkoopordernr,
f.klant_kostenplaats,
f.klant_werkorder,
f.mld_opdr_key,
u.sla_accpturen,
u.plan_uitvoertijd_sla,
u.accept_sla_dagen,
u.accept_sla_uren,
u.afspraak_sla_dagen,
u.accept_sla_optijd,
u.uitvoering_sla_optijd,
u.afspraak_sla_optijd,
u.melding_afgemeld datum_afgemeld,
u.melding_accepted datum_acceptatie,
u.melding_datum datum_aanmaak
FROM yask_v_kosten_doorb_frozen f, mld_v_udr_melding u
WHERE f.mld_melding_key = u.melding_key;
CREATE OR REPLACE VIEW yask_v_export_pro_forma (
result,
result_order,
alg_district_key
)
AS
SELECT 'meldingnummer;' ||
'meldinglocatie;' ||
'melder;' ||
'soortmelding;' ||
'productgroep;' ||
'subproductgroep;' ||
'melding_nen_omschrijving;' ||
'melding_nen_code;' ||
'meldingstatus;' ||
'facturatiestatus;' ||
'meldingdatum;' ||
'afgemeld;' ||
'onderwerp;' ||
'vomschrijving;' ||
'opdrachtnummer;' ||
'opdrachttype;' ||
'opdrachtstatus;' ||
'opdrachtomschrijving;' ||
'opdracht_nen_omschrijving;' ||
'opdrachtuitvoerende;' ||
'opdrachtkosten;' ||
'soortopslag;' ||
'opslag;' ||
'kostenplusopslag;' ||
'geenopslag;' ||
'boekmaand;' ||
'meldinggebouw;' ||
'klant_inkoopordernr;' ||
'klant_kostenplaats;' ||
'klant_werkorder;', -1, alg_district_key
FROM alg_district
UNION ALL
SELECT meldingnummer || ';' ||
meldinglocatie || ';' ||
melder || ';' ||
soortmelding || ';' ||
productgroep || ';' ||
subproductgroep || ';' ||
melding_nen_omschrijving || ';' ||
melding_nen_code || ';' ||
meldingstatus || ';' ||
facturatiestatus || ';' ||
meldingdatum || ';' ||
afgemeld || ';' ||
onderwerp || ';' ||
'"' || vomschrijving || '"' || ';' ||
opdrachtnummer || ';' ||
opdrachttype || ';' ||
opdrachtstatus || ';' ||
'"' || opdrachtomschrijving || '"' || ';' ||
opdracht_nen_omschrijving || ';' ||
opdrachtuitvoerende || ';' ||
REPLACE(opdrachtkosten, '.', ',') || ';' ||
soortopslag || ';' ||
opslag || ';' ||
REPLACE(kostenplusopslag, '.', ',') || ';' ||
geenopslag || ';' ||
boekmaand || ';' ||
meldinggebouw || ';' ||
klant_inkoopordernr || ';' ||
klant_kostenplaats || ';' ||
klant_werkorder,
mld_melding_key,
alg_district_key
FROM yask_v_kosten_doorbelasting
WHERE facturatiestatus = 'Gereed voor facturatie';
-- Procedure om pro-forma factuur klaar te zetten.
CREATE OR REPLACE PROCEDURE yask_select_pro_forma (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_district_key IN NUMBER
)
AS
CURSOR c
IS
SELECT mld_melding_key
FROM yask_v_kosten_doorbelasting
WHERE meldingstatus = 'Afgerond'
--AND COALESCE(facturatiestatus, 'Onbekend') <> 'Gefactureerd'
AND meldingstatus <> 'Historie'
AND alg_district_key = p_district_key
GROUP BY mld_melding_key;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_boekmaand VARCHAR2 (10);
BEGIN
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1060 -- boekmaand offset
AND alg_onrgoed_key = d.alg_district_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_district d
WHERE alg_district_key = p_district_key;
ALG.upsertkenmerk (1080, p_district_key ,v_boekmaand); -- Readonly boekmaand veld.
FOR rec IN c
LOOP
BEGIN
-- zet de melding op status 'Gereed voor facturatie'
MLD.upsertmeldingkenmerk (1, rec.mld_melding_key, 1); -- Facturatiestatus naar Gereed voor facturatie
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'Fout bij aanmaken pro forma factuur' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.mld_melding_key || v_errormsg, '');
COMMIT;
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_district_key IN NUMBER
)
AS
CURSOR c
IS
SELECT mld_melding_key
FROM yask_v_kosten_doorbelasting
WHERE meldingstatus = 'Afgerond'
AND facturatiestatus = 'Gereed voor facturatie'
AND alg_district_key = p_district_key
GROUP BY mld_melding_key;
CURSOR c_opdr (c_melding_key NUMBER)
IS
SELECT *
FROM yask_v_kosten_doorbelasting
WHERE mld_melding_key = c_melding_key;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_boekmaand VARCHAR2 (10);
BEGIN
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
SELECT alg_onrgoedkenmerk_waarde
INTO v_boekmaand
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = 1080 -- Readonly boekmaand veld.
AND aogk.alg_onrgoed_key = p_district_key;
FOR rec IN c
LOOP
BEGIN
-- We gaan eerst alle onderliggende opdrachten op verwerkt zetten.
FOR rec1 IN c_opdr(rec.mld_melding_key)
LOOP
BEGIN
-- bevries de factuurgegevens in de verkooptabel.
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_aanmaak,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostensoort_oms,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_maand,
fin_verkoopfactuur_n1,
fin_verkoopfactuur_n2,
fin_verkoopfactuur_n3,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_n5,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_c2,
fin_verkoopfactuur_c3,
fin_verkoopfactuur_c4,
fin_verkoopfactuur_c5,
fin_verkoopfactuur_c6,
fin_verkoopfactuur_c7,
fin_verkoopfactuur_c8,
prs_kostensoortgrp_oms)
VALUES (SYSDATE,
rec1.opdrachtnummer,
SYSDATE,
rec1.meldingnummer,
'opdracht',
rec1.mld_opdr_key,
rec1.opdracht_nen_omschrijving,
rec1.opdrachtkosten,
v_boekmaand,
rec1.geenopslag,
rec1.opslag,
rec1.kostenplusopslag,
rec1.mld_melding_key,
rec1.alg_district_key,
rec1.melding_nen_omschrijving,
rec1.melding_nen_code,
rec1.soortmelding,
rec1.productgroep,
rec1.subproductgroep,
rec1.soortopslag,
rec1.klant_inkoopordernr,
rec1.klant_kostenplaats,
rec1.klant_werkorder
);
MLD.setopdrachtstatus (rec1.mld_opdr_key, 7, NULL); -- Verwerkt
END;
END LOOP;
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL, NULL); -- Historie
END;
END LOOP;
END;
/
-- Grolsch
CREATE OR REPLACE VIEW yask_v_export_pro_forma_101
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 101;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_101 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 101);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_101 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 101);
END;
/
-- Power-Packer
CREATE OR REPLACE VIEW yask_v_export_pro_forma_102
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 102;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_102 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 102);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_102 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 102);
END;
/
-- Raben
CREATE OR REPLACE VIEW yask_v_export_pro_forma_103
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 103;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_103 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 103);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_103 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 103);
END;
/
-- Carglass
CREATE OR REPLACE VIEW yask_v_export_pro_forma_104
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 104;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_104 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 104);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_104 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 104);
END;
/
-- RFC
CREATE OR REPLACE VIEW yask_v_export_pro_forma_105
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 105;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_105 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 105);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_105 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 105);
END;
/
-- Unisys
CREATE OR REPLACE VIEW yask_v_export_pro_forma_106
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 106;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_106 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 106);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_106 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 106);
END;
/
-- TIP
CREATE OR REPLACE VIEW yask_v_export_pro_forma_107
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 107;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_107 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 107);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_107 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 107);
END;
/
-- De werkwijze van de import is als volgt:
-- De importabel bevat alle records die nog geldig zijn
-- Een nieuwe import voegt regels toe als de combinatie van velden niet gevonden kan worden.
-- De enige uitzondering is een regel waarvan nu de einddatum gezet is en die in de tabel
-- nog zonder einddatum staat.
-- Regels verwijderen uit de import tabel kan door alle velden gelijk te hebben en de opslag
-- op null (leeg) te zetten.
CREATE OR REPLACE PROCEDURE yask_import_opslag (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);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_imp_opslag_key NUMBER (10);
v_begin_txt VARCHAR2 (100);
v_eind_txt VARCHAR2 (100);
v_locatie_code VARCHAR2 (100);
v_srtdiscipline_omschrijving VARCHAR2 (100);
v_discipline_omschrijving VARCHAR2 (100);
v_kostensoort_refcode VARCHAR2 (100);
v_opslag_txt VARCHAR2 (100);
v_locatie_key NUMBER (10);
v_srtdiscipline_key NUMBER (10);
v_discipline_key NUMBER (10);
v_kostensoort_key NUMBER (10);
v_opslag NUMBER (8, 4);
v_begin DATE;
v_eind DATE;
v_null_date DATE;
header_found BOOLEAN;
BEGIN
-- Eerst opruiming
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtdiscipline_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_discipline_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostensoort_refcode);
fac.imp_getfield (v_newline, v_fielddelimitor, v_opslag_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_begin_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_eind_txt);
-- Skip until a valid header is found
IF UPPER (v_locatie_code) = 'LOCATIE'
AND UPPER (v_srtdiscipline_omschrijving) = 'VAKGROEPTYPE'
AND UPPER (v_discipline_omschrijving) = 'VAKGROEP'
AND UPPER (v_kostensoort_refcode) = 'NEN CODE'
AND UPPER (v_opslag_txt) = 'OPSLAG'
AND UPPER (v_begin_txt) = 'INGANGSDATUM'
AND UPPER (v_eind_txt) = 'VERVALDATUM'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found)
THEN
-- voeg nieuwe records toe
-- en wijzig bestaande records
v_aanduiding :=
v_locatie_code
|| ' | '
|| v_srtdiscipline_omschrijving
|| ' | '
|| v_discipline_omschrijving
|| ' | '
|| v_kostensoort_refcode
|| ' | '
|| v_opslag
|| ' | '
|| v_begin_txt
|| ' | '
|| v_eind_txt;
v_errorhint := 'Controleer locatie';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL
AND UPPER (alg_locatie_code) =
UPPER (TRIM (v_locatie_code));
BEGIN
v_errorhint := 'Controleer vakgroeptype';
SELECT ins_srtdiscipline_key
INTO v_srtdiscipline_key
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_verwijder IS NULL
AND UPPER (ins_srtdiscipline_omschrijving) =
UPPER (TRIM (v_srtdiscipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_srtdiscipline_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer vakgroep';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_srtdiscipline_key = v_srtdiscipline_key
AND UPPER (ins_discipline_omschrijving) =
UPPER (TRIM (v_discipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_discipline_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer nen code';
SELECT prs_kostensoort_key
INTO v_kostensoort_key
FROM prs_kostensoort
WHERE UPPER (prs_kostensoort_refcode) =
UPPER (TRIM (v_kostensoort_refcode));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kostensoort_key := NULL;
END;
v_errorhint := 'Controleer opslag';
v_opslag_txt := REPLACE (v_opslag_txt, ',', '.');
v_opslag := TO_NUMBER (v_opslag_txt);
v_errorhint := 'Controleer ingangsdatum';
v_begin := TO_DATE (v_begin_txt, 'dd-mm-yyyy');
v_errorhint := 'Controleer vervaldatum';
v_eind := TO_DATE (v_eind_txt, 'dd-mm-yyyy');
v_null_date := TO_DATE ('1900-01-01', 'yyyy-mm-dd');
-- ken ik de combinatie van locatie, vakgroeptype, vakgroep, nen code, ingangsdatum en vervaldatum al?
BEGIN
v_errorhint := 'Zoek record op zelfde einddatum';
SELECT imp_opslag_key
INTO v_imp_opslag_key
FROM yask_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND COALESCE (ins_srtdiscipline_key, -1) =
COALESCE (v_srtdiscipline_key, -1)
AND COALESCE (ins_discipline_key, -1) =
COALESCE (v_discipline_key, -1)
AND COALESCE (prs_kostensoort_key, -1) =
COALESCE (v_kostensoort_key, -1)
AND COALESCE (ingangsdatum, v_null_date) =
COALESCE (v_begin, v_null_date)
AND COALESCE (einddatum, v_null_date) =
COALESCE (v_eind, v_null_date)
AND imp_opslag_verwijder IS NOT NULL;
-- Ik heb een exacte match gevonden. Als de nieuwe opslag null is dan verwijderen we het record
-- In de andere gevallen passen we de opslag aan.
IF v_opslag IS NULL
THEN
UPDATE yask_imp_opslag
SET imp_opslag_verwijder = SYSDATE
WHERE imp_opslag_key = v_imp_opslag_key;
ELSE
UPDATE yask_imp_opslag
SET opslag = v_opslag
WHERE imp_opslag_key = v_imp_opslag_key;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
-- Nu gaan we kijken of er een record is die volledig matcht maar
-- geen einddatum heeft. Hierbij gaan we dan de einddatum zetten.
v_errorhint :=
'Zoek record op volledige match zonder einddatum';
SELECT imp_opslag_key
INTO v_imp_opslag_key
FROM yask_imp_opslag
WHERE alg_locatie_key = v_locatie_key
AND COALESCE (ins_srtdiscipline_key, -1) =
COALESCE (v_srtdiscipline_key, -1)
AND COALESCE (ins_discipline_key, -1) =
COALESCE (v_discipline_key, -1)
AND COALESCE (prs_kostensoort_key, -1) =
COALESCE (v_kostensoort_key, -1)
AND COALESCE (opslag, -1) =
COALESCE (v_opslag, -1)
AND COALESCE (ingangsdatum, v_null_date) =
COALESCE (v_begin, v_null_date)
AND einddatum IS NULL
AND v_eind IS NOT NULL
AND imp_opslag_verwijder IS NOT NULL;
UPDATE yask_imp_opslag
SET einddatum = v_eind
WHERE imp_opslag_key = v_imp_opslag_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
-- Nu gaan we een nieuw record toevoegen
v_errorhint :=
'Zoek de hoogste key in de importtabel';
SELECT COALESCE (MAX (imp_opslag_key), 0)
INTO v_imp_opslag_key
FROM yask_imp_opslag;
v_errorhint :=
'Voeg een regel toe aan de opslag tabel';
INSERT INTO yask_imp_opslag (
imp_opslag_key,
alg_locatie_key,
ins_srtdiscipline_key,
ins_discipline_key,
prs_kostensoort_key,
opslag,
ingangsdatum,
einddatum,
imp_opslag_aanmaak)
VALUES (v_imp_opslag_key + 1,
v_locatie_key,
v_srtdiscipline_key,
v_discipline_key,
v_kostensoort_key,
v_opslag,
v_begin,
v_eind,
SYSDATE);
END;
END;
END;
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig ruimtesoort importbestand.');
END IF;
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 || ' - ' || v_aanduiding);
END;
/
CREATE OR REPLACE VIEW yask_v_imp_opslag
AS
SELECT o.imp_opslag_key,
l.alg_locatie_code,
sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
prs_kostensoort_refcode,
o.opslag,
o.ingangsdatum,
o.einddatum,
o.imp_opslag_aanmaak,
o.imp_opslag_verwijder
FROM yask_imp_opslag o,
alg_locatie l,
ins_srtdiscipline sd,
mld_discipline d,
prs_kostensoort k
WHERE o.alg_locatie_key = l.alg_locatie_key(+)
AND o.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND o.ins_discipline_key = d.ins_discipline_key(+)
AND o.prs_kostensoort_key = k.prs_kostensoort_key(+);
-------------------------------------------------------------------------------
-- Importfunctie om contactpersonen bij bedrijven toe te voegen aan FACILITOR
--
-- Hopelijk wordt deze met 2021.1 opgenomen in de standaard
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE yask_import_contactpersoon (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (400);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_count NUMBER;
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in FAC_PACF.SRC bij de fac_import_perslid_upd_body proc
prs.import_perslid (p_import_key,
'0;0;0;0;0;0;1;2;3;5;' ||
'4;0;0;0;0;7;8;9;0;11;' ||
'10;12;13;6;0;0;14;15;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
'Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password;Bedrijf;Autorisatieprofiel%'
);
-- Klantspecifieke aanpassingen
v_errorhint := 'Controle op Bedrijf';
FOR rec IN (SELECT distinct prs_kenmerk1 FROM fac_imp_perslid)
LOOP
IF rec.prs_kenmerk1 IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER(prs_bedrijf_naam) = upper(rec.prs_kenmerk1);
IF v_count <> 1
THEN
fac.imp_writelog (p_import_key, 'E', 'Bedrijf: ' || rec.prs_kenmerk1 || ' komt ' || v_count || ' keer voor in de lijst met bedrijven.', v_errorhint);
END IF;
END IF;
END LOOP;
v_errorhint := 'Controle op Autorisatieprofiel';
FOR rec IN (SELECT prs_kenmerk2 FROM fac_imp_perslid)
LOOP
IF rec.prs_kenmerk2 IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM fac_groep
WHERE upper(fac_groep_omschrijving) = upper(rec.prs_kenmerk2);
IF v_count <> 1
THEN
fac.imp_writelog (p_import_key, 'E', 'Autorisatieprofiel: ' || rec.prs_kenmerk2 || ' komt ' || v_count || ' keer voor in de lijst met autorisatieprofielen.', v_errorhint);
END IF;
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END yask_import_contactpersoon;
/
CREATE OR REPLACE PROCEDURE yask_update_contactpersoon (
p_import_key IN NUMBER)
IS
CURSOR c
IS
SELECT * FROM fac_imp_perslid;
v_count NUMBER;
v_perslid_key NUMBER;
v_bedrijf_key NUMBER;
v_groep_key NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (400);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
BEGIN
-- generic update
prs.update_perslid (p_import_key, 'NR', 'A');
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Zoek aangemaakt persoon.';
SELECT MAX (prs_perslid_key)
INTO v_perslid_key
FROM prs_perslid p
WHERE rec.prs_perslid_naam = p.prs_perslid_naam
AND COALESCE (rec.prs_perslid_voornaam, 'Voornaam') =
COALESCE (p.prs_perslid_voornaam, 'Voornaam')
AND COALESCE (rec.prs_perslid_tussenvoegsel, 'Tussenvoegsel') =
COALESCE (p.prs_perslid_tussenvoegsel, 'Tussenvoegsel')
AND COALESCE (rec.prs_perslid_voorletters, 'Voorletters') =
COALESCE (p.prs_perslid_voorletters, 'Voorletters')
AND p.prs_perslid_aanmaak > SYSDATE - 1
AND p.prs_perslid_verwijder IS NULL;
IF v_perslid_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Persoon: '
|| rec.prs_perslid_naam
|| '-'
|| rec.prs_perslid_voornaam
|| '-'
|| rec.prs_perslid_voorletters
|| ' kan niet gevonden worden.',
v_errorhint);
ELSE
v_errorhint := 'Zoek bedrijf.';
SELECT MAX (prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER (prs_bedrijf_naam) = UPPER (rec.prs_kenmerk1);
IF v_bedrijf_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Bedrijf: ' || rec.prs_kenmerk1 || ' kan niet gevonden worden.',
v_errorhint);
ELSE
INSERT INTO prs_contactpersoon (prs_contactpersoon_naam,
prs_contactpersoon_tussenv,
prs_contactpersoon_voorletters,
prs_contactpersoon_voornaam,
prs_contactpersoon_titel,
prs_contactpersoon_telefoon_1,
prs_contactpersoon_telefoon_2,
prs_contactpersoon_email,
prs_perslid_key,
prs_bedrijf_key)
VALUES (SUBSTR(rec.prs_perslid_naam, 1, 30),
rec.prs_perslid_tussenvoegsel,
rec.prs_perslid_voorletters,
rec.prs_perslid_voornaam,
rec.prs_perslid_titel,
rec.prs_perslid_telefoonnr,
rec.prs_perslid_mobiel,
rec.prs_perslid_email,
v_perslid_key,
v_bedrijf_key);
v_errorhint := 'Zoek autorisatiegroep.';
SELECT MAX (fac_groep_key)
INTO v_groep_key
FROM fac_groep
WHERE UPPER (rec.prs_kenmerk2) = UPPER (fac_groep_omschrijving);
IF v_groep_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Autorisatiegroep: '
|| rec.prs_kenmerk2
|| ' kan niet gevonden worden.',
v_errorhint);
ELSE
INSERT INTO fac_gebruikersgroep (prs_perslid_key,
fac_groep_key)
VALUES (v_perslid_key, v_groep_key);
END IF;
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END yask_update_contactpersoon;
/
------ 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