1454 lines
54 KiB
SQL
1454 lines
54 KiB
SQL
--
|
||
-- $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
|