5456 lines
232 KiB
SQL
5456 lines
232 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for all Vebego customers
|
||
|
||
DEFINE thisfile = 'VBXX.SQL'
|
||
DEFINE dbuser = 'VBXX'
|
||
|
||
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 VBXX
|
||
AS
|
||
|
||
FUNCTION get_user RETURN VARCHAR2;
|
||
|
||
PROCEDURE set_opslag_perc (p_opdr_key IN NUMBER);
|
||
|
||
FUNCTION get_opslag_perc (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
|
||
RETURN VARCHAR2;
|
||
|
||
FUNCTION bepaal_fin_district (p_fin_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION bepaal_opdr_district (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION bepaal_fin_gebouw (p_fin_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
PROCEDURE set_verkoopprijs (p_opdr_key IN NUMBER);
|
||
|
||
PROCEDURE update_verkoopprijs;
|
||
|
||
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER);
|
||
|
||
PROCEDURE set_mandaatbedrag (p_opdr_key IN NUMBER);
|
||
|
||
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 matchfactuur (pfactuur_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY VBXX
|
||
AS
|
||
|
||
FUNCTION get_user RETURN VARCHAR2
|
||
AS
|
||
BEGIN
|
||
RETURN SUBSTR (USER, 1, 4);
|
||
END;
|
||
|
||
PROCEDURE set_opslag_perc (p_opdr_key IN 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_bedrijf_key MLD_OPDR.MLD_UITVOERENDE_KEYS%TYPE;
|
||
v_melding_datum MLD_MELDING.MLD_MELDING_DATUM%TYPE;
|
||
v_opslag_kenmerk_key MLD_KENMERK.MLD_KENMERK_KEY%TYPE;
|
||
v_kenmerkopdr_key MLD_KENMERKOPDR.MLD_KENMERKOPDR_KEY%TYPE;
|
||
|
||
BEGIN
|
||
|
||
-- Bepaal de key van het kenmerk opslagpercentage
|
||
SELECT mld_kenmerk_key
|
||
INTO v_opslag_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_opdr o
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'OPSLAGPERC'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
IF v_opslag_kenmerk_key IS NULL
|
||
THEN
|
||
-- Dit opdrachttype kent geen opslagpercentage.
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Als het verkooppercentage al is ingevuld gaan we dit niet meer aanpassen.
|
||
SELECT MAX(mld_kenmerkopdr_key)
|
||
INTO v_kenmerkopdr_key
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE ko.mld_kenmerk_key = v_opslag_kenmerk_key
|
||
AND ko.mld_opdr_key = p_opdr_key;
|
||
|
||
IF v_kenmerkopdr_key IS NOT NULL
|
||
THEN
|
||
-- percentage is al eerder bepaald. Dan kan het ook door de behandelaar aangepast zijn.
|
||
-- Dan gaan we het niet meer aanpassen.
|
||
RETURN;
|
||
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.
|
||
-- Als de kostensoort bij de opdracht ingevuld is dan is dit de waarde die we gebruiken.
|
||
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;
|
||
END IF;
|
||
|
||
SELECT m.mld_alg_locatie_key,
|
||
sd.ins_srtdiscipline_key,
|
||
d.ins_discipline_key,
|
||
COALESCE(o.prs_kostensoort_key, std.prs_kostensoort_key),
|
||
mld_melding_datum,
|
||
mld_uitvoerende_keys
|
||
INTO v_locatie_key, v_srtdiscipline_key, v_discipline_key, v_kostensoort_key, v_melding_datum, v_bedrijf_key
|
||
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 het leveranciersnummer is ingevuld in de opslag tabel. Dan
|
||
-- geldt deze als eerste.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM vbxx_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND prs_bedrijf_key = v_bedrijf_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
|
||
MLD.upsertopdrachtkenmerk (v_opslag_kenmerk_key, p_opdr_key, v_opslag);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Controleer of de NEN code is ingevuld in de opslag tabel. Dan
|
||
-- geldt deze altijd.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM vbxx_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND prs_bedrijf_key IS NULL
|
||
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
|
||
MLD.upsertopdrachtkenmerk (v_opslag_kenmerk_key, p_opdr_key, v_opslag);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Controleer of de vakgroep icm vakgroeptype is ingevuld in de opslag tabel.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM vbxx_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND prs_bedrijf_key IS NULL
|
||
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
|
||
MLD.upsertopdrachtkenmerk (v_opslag_kenmerk_key, p_opdr_key, v_opslag);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Controleer of de vakgroeptype is ingevuld in de opslag tabel.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM vbxx_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND prs_bedrijf_key IS NULL
|
||
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
|
||
MLD.upsertopdrachtkenmerk (v_opslag_kenmerk_key, p_opdr_key, v_opslag);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Dan houden we nog <20><>n optie over en dat is een lege regel.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM vbxx_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND prs_bedrijf_key IS NULL
|
||
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
|
||
MLD.upsertopdrachtkenmerk (v_opslag_kenmerk_key, p_opdr_key, v_opslag);
|
||
RETURN;
|
||
END IF;
|
||
|
||
RETURN;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN;
|
||
END;
|
||
|
||
|
||
FUNCTION get_opslag_perc (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
|
||
v_opslag_kenmerk_key NUMBER;
|
||
v_opslag NUMBER(5,2);
|
||
|
||
BEGIN
|
||
SELECT mld_kenmerk_key
|
||
INTO v_opslag_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_opdr o
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'OPSLAGPERC'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
v_opslag := COALESCE(flx.getflex ('OPD', v_opslag_kenmerk_key, p_opdr_key),0);
|
||
RETURN v_opslag;
|
||
END;
|
||
|
||
-- Gaan we deze nog gebruiken?
|
||
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
|
||
|
||
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;
|
||
|
||
-- deze functie bepaald aan de hand van de factuur_key het district en daarmee de administratie
|
||
-- waaronder deze factuur geboekt gaat worden.
|
||
FUNCTION bepaal_fin_district (p_fin_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
v_district_key NUMBER;
|
||
BEGIN
|
||
SELECT alg_district_key
|
||
INTO v_district_key
|
||
FROM fin_factuur f, mld_opdr o, mld_melding m, alg_locatie l
|
||
WHERE f.fin_factuur_key = p_fin_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key;
|
||
RETURN v_district_key;
|
||
END;
|
||
|
||
-- deze functie bepaald aan de hand van de opdracht het district
|
||
FUNCTION bepaal_opdr_district (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
v_district_key NUMBER;
|
||
BEGIN
|
||
SELECT alg_district_key
|
||
INTO v_district_key
|
||
FROM mld_opdr o, mld_melding m, alg_locatie l
|
||
WHERE o.mld_opdr_key = p_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key;
|
||
RETURN v_district_key;
|
||
END;
|
||
|
||
-- deze functie bepaald aan de hand van de factuur_key het gebouw.
|
||
FUNCTION bepaal_fin_gebouw (p_fin_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
v_gebouw_key NUMBER;
|
||
BEGIN
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM fin_factuur f, mld_opdr o, mld_melding m, alg_v_onroerendgoed aog
|
||
WHERE f.fin_factuur_key = p_fin_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys;
|
||
RETURN v_gebouw_key;
|
||
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;
|
||
v_typeopdr_key NUMBER;
|
||
v_opslag_kenmerk_key NUMBER;
|
||
v_verkoop_kenmerk_key NUMBER;
|
||
|
||
BEGIN
|
||
|
||
-- Bepaal de key van het kenmerk opslagpercentage
|
||
SELECT mld_kenmerk_key
|
||
INTO v_opslag_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_opdr o
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'OPSLAGPERC'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
-- Bepaal de key van het kenmerk verkoopprijs
|
||
SELECT mld_kenmerk_key
|
||
INTO v_verkoop_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_opdr o
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'VERKOOPPRIJS'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
SELECT mld_opdr_kosten, mld_typeopdr_key
|
||
INTO v_opdr_kosten, v_typeopdr_key
|
||
FROM mld_opdr o
|
||
WHERE mld_opdr_key = p_opdr_key;
|
||
|
||
v_opslag := COALESCE(flx.getflex ('OPD', v_opslag_kenmerk_key, p_opdr_key),0);
|
||
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
|
||
MLD.upsertopdrachtkenmerk (v_verkoop_kenmerk_key, p_opdr_key, v_verkoopprijs);
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- waarschijnlijk een opdrachttype zonder verkoopprijs en/of opslagpercentage
|
||
RETURN;
|
||
END;
|
||
|
||
-- Als een opdracht de ter (her)fiattering ligt wordt afgewezen, zal de verkoopprijs al aangepast zijn. Deze
|
||
-- procedure controleert 's-nachts of er afkeuringen geweest zijn en past dan de verkoopprijs aan.
|
||
PROCEDURE update_verkoopprijs
|
||
AS
|
||
CURSOR c IS
|
||
SELECT *
|
||
FROM fac_tracking
|
||
WHERE fac_srtnotificatie_key = 99 -- ORDGNO opdracht goedkeuring is afgekeurd.
|
||
AND fac_tracking_datum > SYSDATE - 1;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
vbxx.set_verkoopprijs (rec.fac_tracking_refkey);
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
|
||
FUNCTION get_first_aut_user (p_locatie_key IN NUMBER, p_functie_code IN VARCHAR2)
|
||
RETURN number
|
||
AS
|
||
v_perslid_key NUMBER(10);
|
||
BEGIN
|
||
SELECT DISTINCT MAX(g.prs_perslid_key)
|
||
INTO v_perslid_key
|
||
FROM fac_v_webgebruiker g,
|
||
fac_functie f,
|
||
prs_perslid p,
|
||
prs_v_afdeling d
|
||
WHERE EXISTS ( SELECT 1
|
||
FROM fac_v_webgebruiker g1, fac_functie f1
|
||
WHERE g1.prs_perslid_key = p.prs_perslid_key
|
||
AND g1.fac_functie_key = f1.fac_functie_key
|
||
AND f1.fac_functie_code = 'WEB_FINGOE')
|
||
AND g.fac_functie_key = f.fac_functie_key
|
||
AND g.prs_perslid_key = p.prs_perslid_key
|
||
AND ( g.fac_gebruiker_alg_level_write = -1
|
||
OR ( g.fac_gebruiker_alg_level_write < 9
|
||
AND p_locatie_key IN (SELECT alg_locatie_key
|
||
FROM fac_v_my_locations
|
||
WHERE prs_perslid_key = p.prs_perslid_key
|
||
AND niveau = fac_gebruiker_alg_level_write)))
|
||
AND fac_functie_code = p_functie_code;
|
||
RETURN v_perslid_key;
|
||
END;
|
||
|
||
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_perslid_key_goedkeur fin_factuur.prs_perslid_key_goedkeur%TYPE;
|
||
v_factuur_statuses_key fin_factuur.fin_factuur_statuses_key%TYPE;
|
||
v_factuur_totaal fin_factuur.fin_factuur_totaal%TYPE;
|
||
v_perslid_naam_goedkeur VARCHAR2 (100);
|
||
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
|
||
v_funccodegk_kenmerk_key fin_kenmerk.fin_kenmerk_key%TYPE;
|
||
v_funccodegk VARCHAR2(10);
|
||
v_new_funccodegk VARCHAR2(10);
|
||
v_ggk_bedrag NUMBER(12,2);
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
BEGIN
|
||
-- Als er een match was op de factuur hoeven we niets te doen. We laten alleen facturen goedkeuren als er een mismatch
|
||
-- in het verplichtingsbedrag is en het factuurbedrag.
|
||
IF vbxx.matchfactuur(p_factuur_key) <> -1 AND 1=0 -- Voorlopig besloten dat alle facturen gecontroleerd moeten worden.
|
||
THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
v_errorhint := 'Bepaal factuurbedrag en goedkeurder.';
|
||
-- De goedkeurder gebruiken we later om te kijken of deze de factuur al heeft goedgekeurd
|
||
SELECT fin_factuur_statuses_key, fin_factuur_totaal, prs_perslid_key_goedkeur
|
||
INTO v_factuur_statuses_key, v_factuur_totaal, v_perslid_key_goedkeur
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
|
||
-- Als de factuurstatus ingevoerd is hoeven we nog niets te doen. De factuur moet eerst gefiatteerd worden door iemand
|
||
-- met FINBOF rechten.
|
||
IF v_factuur_statuses_key = 2 -- ingevoerd
|
||
THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Controleer of deze functionaris de factuur ook daadwerkelijk heeft goedgekeurd
|
||
v_errorhint := 'Bepaal of de factuur al goedgekeurd is.';
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'FINGOE'
|
||
AND t.prs_perslid_key = v_perslid_key_goedkeur
|
||
AND t.fac_tracking_refkey = p_factuur_key;
|
||
|
||
-- Nu bepalen we de locatie van de factuur. Adh daarvan kunnen we bepalen wie hier rechten op heeft.
|
||
v_errorhint := 'Bepaal locatie.';
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM ( SELECT fc.fin_factuur_key, MIN (cs.cnt_alg_plaats_key) alg_gebouw_key
|
||
FROM fin_factuur fc, cnt_contract_plaats cs
|
||
WHERE fc.cnt_contract_key = cs.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'G'
|
||
AND cnt_contract_plaats_verwijder IS NULL
|
||
GROUP BY fc.fin_factuur_key
|
||
UNION ALL
|
||
SELECT fo.fin_factuur_key, og.alg_gebouw_key
|
||
FROM fin_factuur fo,
|
||
mld_opdr o1,
|
||
mld_melding m1,
|
||
alg_v_allonroerendgoed og
|
||
WHERE fo.mld_opdr_key = o1.mld_opdr_key
|
||
AND o1.mld_melding_key = m1.mld_melding_key
|
||
AND m1.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
|
||
UNION ALL
|
||
SELECT fb.fin_factuur_key, MIN (g1.alg_gebouw_key) alg_gebouw_key
|
||
FROM fin_factuur fb,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
alg_gebouw g1
|
||
WHERE fb.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
|
||
AND b.mld_adres_key_lev = g1.mld_adres_key
|
||
GROUP BY fb.fin_factuur_key) fg,
|
||
alg_gebouw g
|
||
WHERE fg.alg_gebouw_key = g.alg_gebouw_key AND fg.fin_factuur_key = p_factuur_key;
|
||
|
||
v_errorhint := 'Bepaal kenmerk_key van FUNCCODEGK.';
|
||
SELECT fin_kenmerk_key
|
||
INTO v_funccodegk_kenmerk_key
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_code = 'FUNCCODEGK';
|
||
|
||
v_funccodegk := FLX.getflex ('FIN', v_funccodegk_kenmerk_key, p_factuur_key);
|
||
dbms_output.put_line ('v_funccodegk:' || v_funccodegk);
|
||
|
||
CASE WHEN v_funccodegk IS NULL THEN v_ggk_bedrag := 15000; v_new_funccodegk := 'WEB_USER61';
|
||
WHEN v_funccodegk = 'WEB_USER61' THEN v_ggk_bedrag := 50000; v_new_funccodegk := 'WEB_USER62';
|
||
WHEN v_funccodegk = 'WEB_USER62' THEN v_ggk_bedrag := 100000; v_new_funccodegk := 'WEB_USER63';
|
||
WHEN v_funccodegk = 'WEB_USER63' THEN v_ggk_bedrag := 300000; v_new_funccodegk := 'WEB_USER64';
|
||
WHEN v_funccodegk = 'WEB_USER64' THEN v_ggk_bedrag := 10000000; v_new_funccodegk := NULL;
|
||
END CASE;
|
||
|
||
dbms_output.put_line ('v_ggk_bedrag: ' || v_ggk_bedrag);
|
||
dbms_output.put_line ('v_new_funccodegk: ' || v_new_funccodegk);
|
||
|
||
IF v_count > 0 OR v_funccodegk IS NULL
|
||
THEN
|
||
|
||
IF v_factuur_totaal > v_ggk_bedrag
|
||
THEN
|
||
-- Nu de volgende in de reeks uitnodigen
|
||
v_perslid_key_goedkeur := vbxx.get_first_aut_user(v_locatie_key, v_new_funccodegk);
|
||
dbms_output.put_line ('v_perslid_key_goedkeur: ' || v_perslid_key_goedkeur);
|
||
|
||
v_errorhint := 'Set status en goedkeurder';
|
||
IF v_perslid_key_goedkeur IS NOT NULL
|
||
THEN
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = 5
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
UPDATE fin_factuur
|
||
SET prs_perslid_key_goedkeur = v_perslid_key_goedkeur
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
-- We vermelden in het kenmerk wat het niveau is van de huidige goedkeuring
|
||
FLX.setflex ('FIN', v_funccodegk_kenmerk_key, p_factuur_key, v_new_funccodegk);
|
||
|
||
-- We sturen een notificatie naar de persoon die de factuur moet goedkeuren.
|
||
fac.putnotificationsrtprio(NULL, v_perslid_key_goedkeur, 'FIN2GO', p_factuur_key,
|
||
'Uw goedkeuring is vereist voor factuur '|| p_factuur_key,
|
||
NULL, NULL, NULL, NULL, 2, NULL);
|
||
END IF;
|
||
END IF; -- fin_factuur_totaal > v_ggk_bedrag
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog ('VBXX.fin_set_approver', 'E', v_errormsg || ' (' || p_factuur_key || ')' , v_errorhint);
|
||
END;
|
||
|
||
PROCEDURE set_mandaatbedrag (p_opdr_key IN NUMBER)
|
||
AS
|
||
|
||
v_mandaatbedrag NUMBER;
|
||
v_opdr_kosten NUMBER(10,2);
|
||
|
||
BEGIN
|
||
SELECT prs_kenmerklink_waarde, o.mld_opdr_kosten
|
||
INTO v_mandaatbedrag, v_opdr_kosten
|
||
FROM prs_kenmerklink kl, prs_kenmerk k, prs_bedrijf b, mld_opdr o
|
||
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'MANDAATBEDRAG'
|
||
AND o.mld_typeopdr_key = 22 -- Mandaatopdracht
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
IF v_opdr_kosten IS NULL
|
||
THEN
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_kosten = v_mandaatbedrag
|
||
WHERE mld_opdr_key = p_opdr_key;
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- hej, dan is er geen mandaatbedrag gedefinieerd bij het bedrijf en hoeven we dus ook niets te doen.
|
||
RETURN;
|
||
END;
|
||
|
||
|
||
PROCEDURE add_xml_row (
|
||
p_bestand IN VARCHAR2,
|
||
p_regel IN VARCHAR2)
|
||
AS
|
||
v_index NUMBER;
|
||
BEGIN
|
||
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
|
||
INTO v_index
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = p_bestand;
|
||
|
||
INSERT INTO fac_rapport (
|
||
fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (p_bestand,
|
||
v_index,
|
||
p_regel);
|
||
END;
|
||
|
||
PROCEDURE add_xml_element (
|
||
p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
VBXX.add_xml_row(p_bestand,
|
||
'<' || p_tag || '>'
|
||
|| xml.char_to_html(p_value)
|
||
|| '</' || p_tag || '>');
|
||
END;
|
||
|
||
-- Gegeven de 2 referentiekeys, lever het type 'B', 'O' of 'C' op
|
||
-- Interne functie in de package vooralsnog
|
||
FUNCTION getreferentietype (po_key IN NUMBER, pc_key IN NUMBER, pb_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
IS
|
||
rtype VARCHAR2 (1) := '?';
|
||
BEGIN
|
||
IF po_key IS NOT NULL
|
||
THEN
|
||
rtype := 'O';
|
||
DBMS_OUTPUT.put_line ('opdrachtkey: ' || po_key);
|
||
ELSIF pc_key IS NOT NULL
|
||
THEN
|
||
rtype := 'C';
|
||
DBMS_OUTPUT.put_line ('contractkey: ' || pc_key);
|
||
ELSIF pb_key IS NOT NULL
|
||
THEN
|
||
rtype := 'B';
|
||
DBMS_OUTPUT.put_line ('besteloprachtkey: ' || pb_key);
|
||
END IF;
|
||
|
||
RETURN rtype;
|
||
END;
|
||
|
||
-- Geef 2 of 3 terug voor tweeweg of drieweg factuurmatchingsmode
|
||
FUNCTION getfactmatchmode (pdisckey IN NUMBER, pftype IN VARCHAR2)
|
||
RETURN NUMBER
|
||
IS
|
||
mmode VARCHAR2 (1) := '?';
|
||
BEGIN
|
||
CASE
|
||
WHEN pftype = 'B'
|
||
THEN
|
||
SELECT p.bes_disc_params_factmatchmode
|
||
INTO mmode
|
||
FROM bes_disc_params p
|
||
WHERE p.bes_ins_discipline_key = pdisckey;
|
||
WHEN pftype = 'C'
|
||
THEN
|
||
mmode := 2;
|
||
WHEN pftype = 'O'
|
||
THEN
|
||
SELECT p.mld_disc_params_factmatchmode
|
||
INTO mmode
|
||
FROM mld_disc_params p
|
||
WHERE p.mld_ins_discipline_key = pdisckey;
|
||
ELSE
|
||
mmode := 2;
|
||
END CASE;
|
||
|
||
IF mmode IS NULL
|
||
THEN
|
||
mmode := 2; -- default
|
||
END IF;
|
||
|
||
DBMS_OUTPUT.put_line ('>matchm(eth)ode: ' || mmode);
|
||
RETURN mmode;
|
||
END;
|
||
|
||
FUNCTION matchfactuur (pfactuur_key IN NUMBER)
|
||
RETURN NUMBER
|
||
IS
|
||
-- Overgenomen uit de fin package. We moeten voor Vebego alleen afwijkende facturen aanbieden ter goedkeuring
|
||
-- controleert deze nieuwe factuur, en levert een oordeel op:
|
||
-- -1 factuur niet (automatisch) goed
|
||
-- 0 niks van te zeggen of reeds goed-/afgekeurd/verwerkt
|
||
-- 1 factuur okay
|
||
ftype VARCHAR2 (1);
|
||
c_key fin_factuur.cnt_contract_key%TYPE;
|
||
b_key fin_factuur.bes_bestelopdr_key%TYPE;
|
||
o_key fin_factuur.mld_opdr_key%TYPE;
|
||
factuurstatus fin_factuur.fin_factuur_statuses_key%TYPE;
|
||
factuurdatum fin_factuur.fin_factuur_datum%TYPE;
|
||
factuurboekmaand fin_factuur.fin_factuur_boekmaand%TYPE;
|
||
discipline ins_tab_discipline.ins_discipline_key%TYPE;
|
||
factmatchmode mld_disc_params.mld_disc_params_factmatchmode%TYPE;
|
||
korting bes_bestelopdr.bes_bestelopdr_korting%TYPE;
|
||
levkosten bes_bestelopdr.bes_bestelopdr_levkosten%TYPE;
|
||
contracttermijnkosten cnt_contract.cnt_contract_termijnkosten%TYPE;
|
||
factuurschemabedrag cnt_factuurschema.cnt_factuurschema_bedrag%TYPE;
|
||
contractkosten cnt_contract.cnt_contract_kosten%TYPE;
|
||
opdrachtkosten mld_opdr.mld_opdr_kosten%TYPE;
|
||
typeopdr_factuur mld_typeopdr.mld_typeopdr_factuur%TYPE;
|
||
factuurbedrag NUMBER (12, 2);
|
||
bestelbedrag NUMBER (12, 2); -- van de opdracht waar deze factuur over gaat
|
||
totaalgefactureerd NUMBER (12, 2); -- met deze factuur erbij eerder gefactureerd van dezelfde B(R)OC
|
||
totaaltermijngefactureerd NUMBER (12, 2); -- met deze factuur erbij eerder gefactureerd van dezelfde C igv factuurschema-gebruik
|
||
totaaltermijngefactureerdbtw NUMBER (12, 2); -- met deze factuur erbij eerder gefactureerd van dezelfde C igv factuurschema-gebruik
|
||
totaalgefactureerdbtw NUMBER (12, 2);
|
||
aantalgefactureerd NUMBER := 0;
|
||
opdrstatus mld_opdr.mld_statusopdr_key%TYPE;
|
||
retval NUMBER := 0;
|
||
inclbtw NUMBER := 0;
|
||
-- Bepaal te tolerantie van de vakgroep
|
||
-- waarschijnlijk in procenten of zo?
|
||
-- of geven we de factuurwaarde mee en leveren we true/false op?
|
||
BEGIN
|
||
--------------------------------------------
|
||
------------ START MAIN ROUTINE ------------
|
||
--------------------------------------------
|
||
---
|
||
--- Over wat voor soort factuur hebben we het?
|
||
---
|
||
IF pfactuur_key IS NULL
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('STOP, factuurkey: NULL');
|
||
RETURN 0;
|
||
END IF;
|
||
|
||
DBMS_OUTPUT.put_line ('\nfactuurkey: ' || pfactuur_key);
|
||
|
||
SELECT mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
fin_factuur_totaal,
|
||
fin_factuur_statuses_key,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand
|
||
INTO o_key,
|
||
c_key,
|
||
b_key,
|
||
factuurbedrag,
|
||
factuurstatus,
|
||
factuurdatum,
|
||
factuurboekmaand
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_key = pfactuur_key;
|
||
|
||
ftype := vbxx.getreferentietype (o_key, c_key, b_key);
|
||
DBMS_OUTPUT.put_line ('>opdrachttype: ' || ftype);
|
||
|
||
--
|
||
-- Ga maar eens matchen
|
||
--
|
||
CASE
|
||
--
|
||
-- BESTELLING
|
||
--
|
||
WHEN ftype = 'B'
|
||
THEN
|
||
-- Factuur ok als binnen de toleranties van de bestelcatalogus
|
||
-- en het totaal met de eerder bestellingfacturen ook,
|
||
-- waarbij afhankelijk van 2-weg/3-weg wordt geteld.
|
||
-- Dat moeten we dus eerst bepalen
|
||
SELECT MAX (isg.ins_discipline_key)
|
||
INTO discipline
|
||
FROM bes_bestelopdr_item boi,
|
||
bes_bestelling_item bbi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg
|
||
WHERE isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND bbi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_key = b_key;
|
||
|
||
factmatchmode := vbxx.getfactmatchmode (discipline, 'B');
|
||
|
||
-- Zijn de bestelbedragen incl. of excl. BTW.
|
||
SELECT MAX( (SELECT ks.prs_kostensoort_btw
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
COALESCE (bsg.prs_kostensoort_key, bd.prs_kostensoort_key)))
|
||
INTO inclbtw
|
||
FROM bes_discipline bd, bes_srtgroep bsg
|
||
WHERE bd.ins_discipline_key = bsg.ins_discipline_key
|
||
AND bd.ins_discipline_key = discipline;
|
||
|
||
-- Bereken dan nu de voor de matching relevante bedragen
|
||
-- Voor bestellingen nemen we de INKOOPPRIJS (het is immers een factuur die wij ontvangen)
|
||
-- Maar als die niet gevuld is (ook bv bij punchout), dan de enige andere prijs die we weten
|
||
-- de verkoopprijs
|
||
CASE
|
||
WHEN factmatchmode = 2
|
||
THEN
|
||
SELECT SUM(boi.bes_bestelopdr_item_aantal
|
||
* COALESCE (boi.bes_bestelopdr_item_inkprijs,
|
||
boi.bes_bestelopdr_item_prijs)),
|
||
MAX (COALESCE (bo.bes_bestelopdr_korting, 0)),
|
||
MAX (COALESCE (bo.bes_bestelopdr_levkosten, 0))
|
||
INTO bestelbedrag, korting, levkosten
|
||
FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelopdr bo
|
||
WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_status NOT IN (1, 3, 8) -- als die maar niet afgewezen/geannuleerd is
|
||
AND boi.bes_bestelopdr_key = b_key;
|
||
WHEN factmatchmode = 3
|
||
THEN
|
||
SELECT SUM(boi.bes_bestelopdr_item_aantal
|
||
* COALESCE (boi.bes_bestelopdr_item_inkprijs,
|
||
boi.bes_bestelopdr_item_prijs)),
|
||
MAX (COALESCE (bo.bes_bestelopdr_korting, 0)),
|
||
MAX (COALESCE (bo.bes_bestelopdr_levkosten, 0))
|
||
INTO bestelbedrag, korting, levkosten
|
||
FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelopdr bo
|
||
WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_status IN (6, 7) -- alleen de geleverde regels meetellen
|
||
AND boi.bes_bestelopdr_key = b_key;
|
||
END CASE;
|
||
|
||
bestelbedrag := bestelbedrag - korting + levkosten; -- Bedragen zijn excl. BTW?
|
||
|
||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw)
|
||
INTO totaalgefactureerd, totaalgefactureerdbtw
|
||
FROM fin_factuur
|
||
WHERE bes_bestelopdr_key = b_key
|
||
AND fin_factuur_statuses_key <> 1
|
||
AND fin_factuur_verwijder IS NULL
|
||
AND (fin_factuur_datum <= factuurdatum OR fin_factuur_statuses_key IN (6, 7)); -- Akkoord(6) en Verwerkt(7)
|
||
|
||
IF inclbtw = 1 -- Artikelen zijn al inclusief, dan ook maar factuur inclusief matchen
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('Inclusief BTW');
|
||
totaalgefactureerd := totaalgefactureerd + totaalgefactureerdbtw;
|
||
END IF;
|
||
|
||
IF fin.tolerantiematch (discipline,
|
||
ftype,
|
||
totaalgefactureerd,
|
||
bestelbedrag) = 1
|
||
THEN
|
||
retval := 1;
|
||
ELSE
|
||
retval := -1;
|
||
END IF;
|
||
--
|
||
-- CONTRACT
|
||
--
|
||
WHEN ftype = 'C'
|
||
THEN
|
||
-- om te beginnen zit deze factuur per definitie in deze termijn (welke dan ook)
|
||
totaaltermijngefactureerd := factuurbedrag;
|
||
|
||
-- Zijn deze contractbedragen incl. of excl. BTW.
|
||
SELECT MAX( (SELECT ks.prs_kostensoort_btw
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
COALESCE (c.prs_kostensoort_key, cd.prs_kostensoort_key)))
|
||
INTO inclbtw
|
||
FROM cnt_discipline cd, cnt_contract c
|
||
WHERE cd.ins_discipline_key = c.ins_discipline_key AND c.cnt_contract_key = c_key;
|
||
|
||
-- Controle op termijn bedrag en totaal, je kunt discussieren of _verwijder moet worden gecontroleerd.
|
||
BEGIN
|
||
SELECT c.cnt_contract_termijnkosten, c.cnt_contract_kosten, c.ins_discipline_key
|
||
INTO contracttermijnkosten, contractkosten, discipline
|
||
FROM cnt_contract c
|
||
WHERE cnt_contract_status = 0 -- actief
|
||
AND cnt_contract_key = c_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('Bijbehorend contract(status?) is ongeldig: ' || c_key);
|
||
RETURN -1;
|
||
END;
|
||
|
||
-- Er kan ook gebruik gemaakt worden van een factuurschema, dan moet het termijnbedrag anders bepaald worden
|
||
BEGIN
|
||
SELECT s.cnt_factuurschema_bedrag
|
||
INTO factuurschemabedrag
|
||
FROM cnt_factuurschema s
|
||
WHERE s.cnt_factuurschema_boekmaand = factuurboekmaand
|
||
AND s.cnt_contract_key = c_key;
|
||
-- Ok, er is dus een factuurschema-bedrag voor deze periode: dan controleren:
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
DBMS_OUTPUT.put_line( 'Geen factuurschema van toepassing voor contract '
|
||
|| c_key
|
||
|| ' in periode '
|
||
|| factuurboekmaand);
|
||
-- factuurschemabedrag is nu null
|
||
END;
|
||
|
||
-- waren er niet al facturen voor dezelfde periode en komt het totaal er met deze dan niet overheen?
|
||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw)
|
||
INTO totaaltermijngefactureerd, totaaltermijngefactureerdbtw
|
||
FROM fin_factuur
|
||
WHERE cnt_contract_key = c_key
|
||
AND fin_factuur_statuses_key <> 1
|
||
AND fin_factuur_verwijder IS NULL
|
||
AND fin_factuur_datum <= factuurdatum
|
||
AND fin_factuur_boekmaand = factuurboekmaand;
|
||
|
||
-- totaaltermijngefactureerd(btw) is dus voor deze periode inclusief deze nieuwe, dus
|
||
-- dus mogelijk hoger dan deze ene factuur
|
||
|
||
-- We doen er toch niks mee: factmatchmode := fin.getfactmatchmode (discipline, 'C');
|
||
|
||
-- hoeveel is er *met deze factuur erbij* totaal voor dit contract gefactureerd
|
||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw)
|
||
INTO totaalgefactureerd, totaalgefactureerdbtw
|
||
FROM fin_factuur
|
||
WHERE cnt_contract_key = c_key
|
||
AND fin_factuur_statuses_key <> 1
|
||
AND fin_factuur_verwijder IS NULL
|
||
AND fin_factuur_datum <= factuurdatum;
|
||
|
||
DBMS_OUTPUT.put_line ('Totaal gefactureerd: ' || totaalgefactureerd);
|
||
DBMS_OUTPUT.put_line ('Totaal gefactureerd periode: ' || totaaltermijngefactureerd);
|
||
|
||
IF inclbtw = 1 -- Contractbedragen zijn al inclusief, dan ook factuur inclusief matchen
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('Inclusief BTW');
|
||
totaalgefactureerd := totaalgefactureerd + totaalgefactureerdbtw; -- inclusief BTW
|
||
totaaltermijngefactureerd := totaaltermijngefactureerd + totaaltermijngefactureerdbtw; -- deze periode(maand) incl. BTW
|
||
DBMS_OUTPUT.put_line ('Totaal gefactureerd: ' || totaalgefactureerd);
|
||
DBMS_OUTPUT.put_line ('Totaal gefactureerd periode: ' || totaaltermijngefactureerd);
|
||
END IF;
|
||
|
||
IF contractkosten IS NULL
|
||
THEN
|
||
retval := 0;
|
||
ELSIF totaalgefactureerd <=
|
||
contractkosten + fac.safe_to_number (fac.getsetting ('cnt_factuur_totaalmarge'))
|
||
AND fin.tolerantiematch (discipline,
|
||
ftype,
|
||
totaaltermijngefactureerd,
|
||
COALESCE (factuurschemabedrag, contracttermijnkosten)) = 1
|
||
THEN
|
||
retval := 1;
|
||
ELSE
|
||
retval := -1;
|
||
END IF;
|
||
--
|
||
-- OPDRACHT
|
||
--
|
||
WHEN ftype = 'O'
|
||
THEN
|
||
-- controleer op basis van mld_typeopdr_factuur
|
||
BEGIN
|
||
SELECT o.mld_opdr_kosten,
|
||
o.mld_opdr_discipline_key,
|
||
top.mld_typeopdr_factuur,
|
||
o.mld_statusopdr_key
|
||
INTO opdrachtkosten,
|
||
discipline,
|
||
typeopdr_factuur,
|
||
opdrstatus
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr top
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_typeopdr_key = top.mld_typeopdr_key
|
||
--AND top.mld_typeopdr_uren NOT IN (3, 4, 5) -- bij interne uren geen facturen
|
||
AND top.mld_typeopdr_factuur <> 0 -- dan willen we ook geen factuur
|
||
AND top.mld_typeopdr_kosten = 1 -- daar mag een factuur bij
|
||
AND mld_statusopdr_key NOT IN (1, 2, 3, 10) -- dat zijn (nog) ongeldige opdrachten
|
||
AND mld_opdr_key = o_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
DBMS_OUTPUT.put_line (
|
||
'Bijbehorende opdracht(status/kosten/type) is ongeldig: ' || o_key);
|
||
RETURN -1;
|
||
END;
|
||
|
||
DBMS_OUTPUT.put_line ('opdrachtkosten: ' || opdrachtkosten);
|
||
DBMS_OUTPUT.put_line ('typeopdr_factuur: ' || typeopdr_factuur);
|
||
DBMS_OUTPUT.put_line ('opdrstatus: ' || opdrstatus);
|
||
|
||
SELECT MAX( (SELECT ks.prs_kostensoort_btw
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
COALESCE (o.prs_kostensoort_key,
|
||
stdm.prs_kostensoort_key,
|
||
md.prs_kostensoort_key)))
|
||
INTO inclbtw
|
||
FROM mld_discipline md,
|
||
mld_opdr o,
|
||
mld_stdmelding stdm,
|
||
mld_melding m
|
||
WHERE md.ins_discipline_key = o.mld_opdr_discipline_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = stdm.mld_stdmelding_key
|
||
AND mld_opdr_key = o_key;
|
||
|
||
factmatchmode := vbxx.getfactmatchmode (discipline, 'O');
|
||
|
||
-- Een opdracht is maar 1 ding, dus die status bepaalt al veel bij 3-weg
|
||
-- De opdracht moet nl. so wie so afgemeld zijn.
|
||
IF factmatchmode = 3 AND opdrstatus NOT IN (6, 7, 9)
|
||
THEN
|
||
RETURN -1;
|
||
END IF;
|
||
|
||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw), COUNT(*)
|
||
INTO totaalgefactureerd, totaalgefactureerdbtw, aantalgefactureerd
|
||
FROM fin_factuur
|
||
WHERE mld_opdr_key = o_key
|
||
AND fin_factuur_statuses_key <> 1
|
||
AND fin_factuur_verwijder IS NULL
|
||
AND fin_factuur_datum <= factuurdatum;
|
||
|
||
-- Hier kunnen we iets met de deels nieuwe opties
|
||
-- '0;Geen facturen;1;E<>n factuur (vaste prijs);2;E<>n factuur (nacalculatie);3;Meerdere facturen;4;Contracttermijnen',
|
||
-- 0 hebben we direct al afgevangen
|
||
-- 1 en 2 verdragen geen eerdere factuur
|
||
IF typeopdr_factuur IN (1,2) AND aantalgefactureerd>1
|
||
THEN
|
||
-- er is al een eerdere factuur, dan is de rest fout
|
||
retval := -1;
|
||
ELSE
|
||
-- dan is dit 3 of de eerste van 1 of 2
|
||
IF inclbtw = 1 -- Opdrachtbedragen zijn dus inclusief, dan ook factuur inclusief matchen
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('Inclusief BTW');
|
||
totaalgefactureerd := totaalgefactureerd + totaalgefactureerdbtw;
|
||
END IF;
|
||
IF typeopdr_factuur = 2
|
||
THEN
|
||
retval := 1;
|
||
ELSE
|
||
IF fin.tolerantiematch (discipline,
|
||
ftype,
|
||
totaalgefactureerd,
|
||
opdrachtkosten) = 1
|
||
THEN
|
||
retval := 1;
|
||
ELSE
|
||
retval := -1;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
retval := 0;
|
||
END CASE;
|
||
|
||
RETURN retval;
|
||
END;
|
||
|
||
END;
|
||
/
|
||
|
||
--
|
||
-- View om het factuurschema zichtbaar te maken in de contracten xml. We voegen een standaard rapport toe aan
|
||
-- de contracten. Vervolgens kunnen we dan in de xsl het factuurschema eruit halen. In afwachting van de echte oplossing:
|
||
-- CARG#85884 Factuurschema ontbreekt in contract-XML, graag toevoegen
|
||
--
|
||
CREATE OR REPLACE VIEW vbxx_v_factuurschema
|
||
AS
|
||
SELECT cnt_contract_key,
|
||
cnt_factuurschema_boekmaand,
|
||
cnt_factuurschema_bedrag,
|
||
cnt_factuurschema_opmerking
|
||
FROM cnt_factuurschema;
|
||
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_rap_technadres
|
||
AS
|
||
SELECT b.prs_bedrijf_key bedrijf_key,
|
||
b.prs_bedrijf_naam bedrijf_naam,
|
||
p.prs_bedrijfadres_url url
|
||
FROM prs_bedrijfadres p,
|
||
prs_bedrijf b
|
||
WHERE UPPER(p.prs_bedrijfadres_url) LIKE 'HTTP%'
|
||
AND b.prs_bedrijf_key = p.prs_bedrijf_key
|
||
AND b.prs_bedrijf_verwijder IS NULL;
|
||
|
||
-- View om notificaties naar bedrijven te sturen die opdrachten hebben die al 5 dagen geleden afgemeld hadden moeten zijn.
|
||
-- Ze krijgen dan een mail met een link naar het knoppenscherm. CUST04 wordt hier nu gebruikt voor KFHT. Als het bij een andere
|
||
-- omgeving aangepast moet worden zal er een DECODE op de user gedaan moeten worden.
|
||
-- Notificaties mogen niet bij alle flags verzonden worden.
|
||
-- lcl_mld_flag1 - Wacht op reactie melder
|
||
-- lcl_mld_flag2 - Wacht op offerte
|
||
-- lcl_mld_flag3 - Wacht op onderdelen
|
||
-- lcl_mld_flag4 - Wacht op reactie FM/CM
|
||
-- lcl_mld_flag5 - Wacht op reactie CSM
|
||
-- lcl_mld_flag6 - Wacht op klant akkoord
|
||
-- De notificatie wordt alleen verzonden als er geen flag staat of flag 2 of 3
|
||
CREATE OR REPLACE VIEW vbxx_v_noti_mld_opdr_reminder
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
XKEY,
|
||
XEMAIL,
|
||
XMOBILE
|
||
)
|
||
AS
|
||
SELECT 'CUST04',
|
||
NULL,
|
||
NULL,
|
||
'Facilitor opdrachtnr. '
|
||
|| sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
|| ' - HERINNERING',
|
||
o.mld_opdr_key,
|
||
NULL,
|
||
prs_bedrijf_email,
|
||
NULL
|
||
FROM ins_srtdiscipline sd,
|
||
mld_discipline d,
|
||
mld_stdmelding std,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
prs_bedrijf b,
|
||
prs_kenmerklink kl,
|
||
prs_kenmerk k
|
||
WHERE prs_kenmerk_code = 'AFMELDSCHERM'
|
||
AND 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
|
||
AND k.prs_kenmerk_key = kl.prs_kenmerk_key
|
||
AND kl.prs_link_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = o.mld_uitvoerende_keys
|
||
AND b.prs_bedrijf_email IS NOT NULL
|
||
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend, Geaccepteerd.
|
||
AND COALESCE(m.mld_melding_flag, 0) IN (0,2,3)
|
||
AND TRUNC (o.mld_opdr_einddatum) <= TRUNC (SYSDATE) - 5;
|
||
|
||
|
||
-- Power BI views. De beschrijving van de views staat in z:\Project\Implementaties\Customers\YAxx\Doc\YAXX#74390 Datalake\
|
||
-- Wijzigingen ook daarin aanpassen.
|
||
CREATE OR REPLACE VIEW vbxx_v_bimelding
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
m.mld_melding_externnr,
|
||
mld_meldbron_omschrijving,
|
||
m.mld_melding_start_key,
|
||
m.mld_alg_locatie_key alg_locatie_key,
|
||
og.alg_gebouw_key,
|
||
og.alg_verdieping_key,
|
||
og.alg_ruimte_key,
|
||
k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving,
|
||
m.prs_perslid_key,
|
||
m.mld_melding_behandelaar_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
d.ins_discipline_omschrijving,
|
||
sd.ins_srtdiscipline_prefix,
|
||
sd.ins_srtdiscipline_omschrijving,
|
||
(SELECT mld_statuses_omschrijving
|
||
FROM mld_statuses sta
|
||
WHERE sta.mld_statuses_key = m.mld_melding_status)
|
||
mld_melding_status,
|
||
m.mld_melding_datum,
|
||
m.mld_melding_einddatum,
|
||
m.mld_melding_acceptdatum_std,
|
||
m.mld_melding_einddatum_std,
|
||
m.mld_melding_t_uitvoertijd.tijdsduur mld_melding_uitvoertijd_duur,
|
||
m.mld_melding_t_uitvoertijd.eenheid mld_melding_uitvoertijd_eenh,
|
||
m.mld_melding_t_accepttijd.tijdsduur mld_melding_accepttijd_duur,
|
||
m.mld_melding_t_accepttijd.eenheid mld_melding_accepttijd_eenh,
|
||
m.t_doorlooptijd.tijdsduur mld_melding_doorlooptijd_duur,
|
||
m.t_doorlooptijd.eenheid mld_melding_doorlooptijd_eenh,
|
||
DECODE(mld_melding_spoed, 1, 'Kritiek', 2, 'Hoog', 3, 'Normaal', 4, 'Laag', 'Onbekend') mld_melding_prioritieit,
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 4) mld_melding_geaccepteerd,
|
||
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 1))
|
||
mld_melding_afgemeld,
|
||
m.mld_melding_onderwerp,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
m.mld_melding_parentkey,
|
||
m.mld_melding_satisfaction,
|
||
m.mld_melding_satisfaction_op,
|
||
(SELECT MAX(fac_tracking_datum)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_tracking_refkey = m.mld_melding_key
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'melding') last_changed
|
||
FROM ( SELECT m1.*,
|
||
CASE
|
||
WHEN m1.mld_melding_einddatum >
|
||
COALESCE (fac.gettrackingdate ('MLDAFM', m1.mld_melding_key),
|
||
fac.gettrackingdate ('MLDREJ', m1.mld_melding_key),
|
||
SYSDATE)
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END
|
||
plan_uitvoertijd_sla,
|
||
CASE
|
||
WHEN m1.mld_melding_indult = 1 OR std1.mld_stdmelding_slabewaken = 0 THEN 1
|
||
ELSE 0
|
||
END
|
||
sla_nvt,
|
||
DECODE (m1.mld_melding_t_uitvoertijd.eenheid,
|
||
'D', m1.mld_melding_t_uitvoertijd.tijdsduur,
|
||
NULL)
|
||
sla_werkdgn,
|
||
DECODE (m1.mld_melding_t_uitvoertijd.eenheid,
|
||
'U', m1.mld_melding_t_uitvoertijd.tijdsduur,
|
||
NULL)
|
||
sla_werkuren,
|
||
DECODE (m1.mld_melding_t_respijt.eenheid,
|
||
'D', m1.mld_melding_t_respijt.tijdsduur,
|
||
NULL)
|
||
sla_respijtdgn,
|
||
DECODE (m1.mld_melding_t_respijt.eenheid,
|
||
'U', m1.mld_melding_t_respijt.tijdsduur,
|
||
NULL)
|
||
sla_respijturen,
|
||
CASE WHEN m1.mld_melding_spoed = 3 THEN std1.mld_stdmelding_t_accepttijd
|
||
WHEN m1.mld_melding_spoed = 1 then std1.mld_stdmelding_t_accept_pr1
|
||
WHEN m1.mld_melding_spoed = 1 then std1.mld_stdmelding_t_accept_pr2
|
||
WHEN m1.mld_melding_spoed = 1 then std1.mld_stdmelding_t_accept_pr4
|
||
END sla_accpt,
|
||
--m.mld_melding_datum datum,
|
||
CASE WHEN std1.mld_stdmelding_planbaar = 2
|
||
THEN TO_DATE(NULL)
|
||
ELSE m1.mld_melding_einddatum
|
||
END einddatum,
|
||
--mld_melding_einddatum_std einddatum_std,
|
||
--mld_melding_acceptdatum_std acceptdatum,
|
||
COALESCE (mld.getmeldingstatusdate (m1.mld_melding_key, 5),
|
||
mld.getmeldingstatusdate (m1.mld_melding_key, 1))
|
||
afgemeld,
|
||
COALESCE (mld.getmeldingstatusdate (m1.mld_melding_key, 4),
|
||
mld.getmeldingstatusdate (m1.mld_melding_key, 1))
|
||
accepted,
|
||
mld.getactualuitvoer (m1.mld_melding_key) t_doorlooptijd
|
||
FROM mld_melding m1,
|
||
mld_stdmelding std1
|
||
WHERE m1.mld_stdmelding_key = std1.mld_stdmelding_key) m,
|
||
alg_v_allonrgoed_gegevens og,
|
||
mld_meldbron mb,
|
||
mld_stdmelding std,
|
||
mld_discipline d,
|
||
ins_srtdiscipline sd,
|
||
prs_kostenplaats k
|
||
WHERE m.mld_meldbron_key = mb.mld_meldbron_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
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND m.fac_activiteit_key IS NULL;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_bimeldingkenmerk
|
||
AS
|
||
SELECT mld_melding_key,
|
||
COALESCE(k.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving) mld_kenmerk_omschrijving,
|
||
DECODE (sk.mld_srtkenmerk_kenmerktype, 'R', FLX.getdomeinwaarde(sk.fac_kenmerkdomein_key, flx.getflex ('MLD', k.mld_kenmerk_key, km.mld_melding_key), 1),
|
||
'S', FLX.getdomeinwaarde(sk.fac_kenmerkdomein_key, flx.getflex ('MLD', k.mld_kenmerk_key, km.mld_melding_key), 1),
|
||
flx.getflex ('MLD', k.mld_kenmerk_key, km.mld_melding_key)) mld_kenmerk_waarde
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_kenmerkmelding km
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND km.mld_kenmerk_key = k.mld_kenmerk_key;
|
||
|
||
|
||
--
|
||
-- Overzicht om de rechten van de groepen te kunnen tonen.
|
||
--
|
||
CREATE OR REPLACE VIEW vbxx_rechtenvangroepen
|
||
AS
|
||
SELECT g.fac_groep_omschrijving,
|
||
f.fac_functie_module,
|
||
f.fac_functie_code,
|
||
lcl.l (f.fac_functie_omschrijving) fac_functie_omschrijving,
|
||
DECODE(DECODE(gr.ins_discipline_key, NULL, 0, 1), 0, 0, COUNT (*)) aantal,
|
||
CASE
|
||
WHEN gr.fac_gebruiker_alg_level_read = -1 THEN 'Alle'
|
||
WHEN gr.fac_gebruiker_alg_level_read = 0 THEN 'Regio'
|
||
WHEN gr.fac_gebruiker_alg_level_read = 1 THEN 'District'
|
||
WHEN gr.fac_gebruiker_alg_level_read = 2 THEN 'Locatie'
|
||
WHEN gr.fac_gebruiker_alg_level_read = 3 THEN 'Gebouw'
|
||
WHEN gr.fac_gebruiker_alg_level_read = 4 THEN 'Verdieping'
|
||
WHEN gr.fac_gebruiker_alg_level_read = 5 THEN 'Ruimte'
|
||
ELSE 'Geen'
|
||
END Alglevelread,
|
||
CASE
|
||
WHEN gr.fac_gebruiker_alg_level_write = -1 THEN 'Alle'
|
||
WHEN gr.fac_gebruiker_alg_level_write = 0 THEN 'Regio'
|
||
WHEN gr.fac_gebruiker_alg_level_write = 1 THEN 'District'
|
||
WHEN gr.fac_gebruiker_alg_level_write = 2 THEN 'Locatie'
|
||
WHEN gr.fac_gebruiker_alg_level_write = 3 THEN 'Gebouw'
|
||
WHEN gr.fac_gebruiker_alg_level_write = 4 THEN 'Verdieping'
|
||
WHEN gr.fac_gebruiker_alg_level_write = 5 THEN 'Ruimte'
|
||
ELSE 'Geen'
|
||
END Alglevelwrite,
|
||
CASE
|
||
WHEN gr.fac_gebruiker_prs_level_read = -1 THEN 'Alle'
|
||
WHEN gr.fac_gebruiker_prs_level_read = 0 THEN 'Business Unit'
|
||
WHEN gr.fac_gebruiker_prs_level_read = 1 THEN 'Afdeling 1'
|
||
WHEN gr.fac_gebruiker_prs_level_read = 2 THEN 'Afdeling 2'
|
||
WHEN gr.fac_gebruiker_prs_level_read = 3 THEN 'Afdeling 3'
|
||
WHEN gr.fac_gebruiker_prs_level_read = 4 THEN 'Afdeling 4'
|
||
WHEN gr.fac_gebruiker_prs_level_read = 5 THEN 'Afdeling 5'
|
||
ELSE 'Geen'
|
||
END Prslevelread,
|
||
CASE
|
||
WHEN gr.fac_gebruiker_prs_level_write = -1 THEN 'Alle'
|
||
WHEN gr.fac_gebruiker_prs_level_write = 0 THEN 'Business Unit'
|
||
WHEN gr.fac_gebruiker_prs_level_write = 1 THEN 'Afdeling 1'
|
||
WHEN gr.fac_gebruiker_prs_level_write = 2 THEN 'Afdeling 2'
|
||
WHEN gr.fac_gebruiker_prs_level_write = 3 THEN 'Afdeling 3'
|
||
WHEN gr.fac_gebruiker_prs_level_write = 4 THEN 'Afdeling 4'
|
||
WHEN gr.fac_gebruiker_prs_level_write = 5 THEN 'Afdeling 5'
|
||
ELSE 'Geen'
|
||
END Prslevelwrit
|
||
FROM fac_functie f,
|
||
fac_groeprechten gr,
|
||
fac_groep g,
|
||
ins_tab_discipline d
|
||
WHERE f.fac_functie_key = gr.fac_functie_key
|
||
AND gr.fac_groep_key = g.fac_groep_key
|
||
AND gr.ins_discipline_key = d.ins_discipline_key(+)
|
||
GROUP BY g.fac_groep_omschrijving,
|
||
f.fac_functie_module,
|
||
f.fac_functie_code,
|
||
f.fac_functie_omschrijving,
|
||
gr.fac_gebruiker_alg_level_read,
|
||
gr.fac_gebruiker_alg_level_write,
|
||
gr.fac_gebruiker_prs_level_read,
|
||
gr.fac_gebruiker_prs_level_write,
|
||
DECODE(gr.ins_discipline_key, NULL, 0, 1);
|
||
|
||
CREATE OR REPLACE VIEW vbxx_rechtenvangroepen_transp
|
||
AS
|
||
SELECT g.fac_groep_omschrijving groep,
|
||
f.fac_functie_code code,
|
||
sd.ins_srtdiscipline_omschrijving vakgroeptype,
|
||
d.ins_discipline_omschrijving vakgroep,
|
||
gr.fac_gebruiker_prs_level_read org_lezen,
|
||
gr.fac_gebruiker_prs_level_write org_schrijven,
|
||
gr.fac_gebruiker_alg_level_read plaats_lezen,
|
||
gr.fac_gebruiker_alg_level_write plaats_schrijven
|
||
FROM fac_functie f,
|
||
fac_groeprechten gr,
|
||
fac_groep g,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE f.fac_functie_key = gr.fac_functie_key
|
||
AND 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(+);
|
||
|
||
--
|
||
--
|
||
-- import procedures en rapport voor invoer van de uplift/opslag tabel
|
||
|
||
-- 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 ze niet meer op te nemen in de sheet. De
|
||
-- tabel wordt altijd eerst geleegd door alles op verwijderd te zetten. Hiermee kun je altijd nog een
|
||
-- oude versie terugvinden.
|
||
|
||
CREATE OR REPLACE PROCEDURE vbxx_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_leverancier_nr VARCHAR2 (100);
|
||
v_locatie_key NUMBER (10);
|
||
v_srtdiscipline_key NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
v_kostensoort_key NUMBER (10);
|
||
v_bedrijf_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_leverancier_nr);
|
||
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
|
||
-- De headers in de Excel export zijn ander dan in de csv export daarom controleren we op beiden.
|
||
IF (UPPER (v_locatie_code) = 'LOCATIE' OR UPPER (v_locatie_code) = 'ALG_LOCATIE_CODE')
|
||
AND (UPPER (v_srtdiscipline_omschrijving) = 'VAKGROEPTYPE' OR UPPER (v_srtdiscipline_omschrijving) = 'INS_SRTDISCIPLINE_OMSCHRIJVING')
|
||
AND (UPPER (v_discipline_omschrijving) = 'VAKGROEP' OR UPPER (v_discipline_omschrijving) = 'INS_DISCIPLINE_OMSCHRIJVING')
|
||
AND (UPPER (v_kostensoort_refcode) = 'NEN CODE' OR UPPER (v_kostensoort_refcode) = 'PRS_KOSTENSOORT_REFCODE')
|
||
AND (UPPER (v_leverancier_nr) = 'LEVERANCIERNUMMER' OR UPPER (v_leverancier_nr) = 'PRS_LEVERANCIER_NR')
|
||
AND UPPER (v_opslag_txt) = 'OPSLAG'
|
||
AND UPPER (v_begin_txt) = 'INGANGSDATUM'
|
||
AND (UPPER (v_eind_txt) = 'VERVALDATUM' OR UPPER (v_eind_txt) = 'EINDDATUM')
|
||
THEN
|
||
-- Sla de kopregel over.
|
||
header_found := TRUE;
|
||
UPDATE vbxx_imp_opslag
|
||
SET imp_opslag_verwijder = SYSDATE
|
||
WHERE imp_opslag_verwijder IS NULL;
|
||
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_leverancier_nr
|
||
|| ' | '
|
||
|| v_opslag_txt
|
||
|| ' | '
|
||
|| 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;
|
||
|
||
BEGIN
|
||
v_errorhint := 'Controleer leverancier';
|
||
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND UPPER (prs_leverancier_nr) =
|
||
UPPER (TRIM (v_leverancier_nr));
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_bedrijf_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');
|
||
|
||
INSERT INTO vbxx_imp_opslag (
|
||
imp_opslag_key,
|
||
alg_locatie_key,
|
||
ins_srtdiscipline_key,
|
||
ins_discipline_key,
|
||
prs_kostensoort_key,
|
||
prs_bedrijf_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_bedrijf_key,
|
||
v_opslag,
|
||
v_begin,
|
||
v_eind,
|
||
SYSDATE);
|
||
ELSE
|
||
IF rec1.fac_imp_file_index = 1 THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Geen geldige header aangetroffen',
|
||
v_locatie_code
|
||
|| ' | '
|
||
|| v_srtdiscipline_omschrijving
|
||
|| ' | '
|
||
|| v_discipline_omschrijving
|
||
|| ' | '
|
||
|| v_kostensoort_refcode
|
||
|| ' | '
|
||
|| v_opslag_txt
|
||
|| ' | '
|
||
|| v_begin_txt
|
||
|| ' | '
|
||
|| v_eind_txt);
|
||
END IF;
|
||
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 opslag 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;
|
||
/
|
||
|
||
-- De update functie doet eigenlijk niets maar anders komt er een foutmelding bij de update.
|
||
CREATE OR REPLACE PROCEDURE vbxx_update_opslag (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_imp_opslag
|
||
AS
|
||
SELECT o.imp_opslag_key,
|
||
l.alg_locatie_code,
|
||
sd.ins_srtdiscipline_omschrijving,
|
||
d.ins_discipline_omschrijving,
|
||
prs_kostensoort_refcode,
|
||
prs_leverancier_nr,
|
||
o.opslag,
|
||
o.ingangsdatum,
|
||
o.einddatum,
|
||
o.imp_opslag_aanmaak,
|
||
o.imp_opslag_verwijder
|
||
FROM vbxx_imp_opslag o,
|
||
alg_locatie l,
|
||
ins_srtdiscipline sd,
|
||
mld_discipline d,
|
||
prs_kostensoort k,
|
||
prs_bedrijf b
|
||
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(+)
|
||
AND o.prs_bedrijf_key = b.prs_bedrijf_key(+);
|
||
|
||
|
||
--
|
||
-- REVERSEDBILLING rapportages en procedures
|
||
--
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_rap_actual_cost_tot
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
broc_flag,
|
||
fclt_f_leverancier,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
aantal,
|
||
kosten
|
||
)
|
||
AS
|
||
-- Variabele kosten uit ACTUAL opdrachten op variabele contracten
|
||
SELECT pcp.prs_afdeling_key,
|
||
TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand ORDAFR, volgende maand factureren (achteraf)
|
||
'O' broc_flag,
|
||
b.prs_bedrijf_naam,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
COUNT (*) aantal,
|
||
SUM (o.mld_opdr_kosten) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
cnt_contract mc,
|
||
prs_bedrijf b,
|
||
prs_contactpersoon cp,
|
||
prs_perslid pcp
|
||
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND UPPER(ot.mld_typeopdr_omschrijving) = 'REVERSEDBILLINGOPDRACHT'
|
||
AND o.mld_statusopdr_key = 9
|
||
-- Moeten we niet alle openstaande opdrachten opnemen?
|
||
-- CHECK AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) > TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt)
|
||
AND NOT EXISTS -- Heeft nog niet de timestamp dat deze al meegenomen is in de RB notificatie
|
||
( SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TS_REVERSEDBILLING')
|
||
AND EXISTS -- Niet gemarkeerd als dispuut!
|
||
(SELECT 1
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
|
||
AND o.cnt_contract_key = c.cnt_contract_key
|
||
--AND c.ins_discipline_key = 523 -- Variabele contracten
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
GROUP BY pcp.prs_afdeling_key,
|
||
TO_CHAR (SYSDATE, 'yyyy-mm'),
|
||
'O',
|
||
b.prs_bedrijf_naam,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer;
|
||
|
||
-- Actual regels en basis voor oa. te exporteren/bevriezen regels op de 10e van
|
||
-- de maand; voor de output geldt:
|
||
-- Dat deze de actual vaste contractkosten toont (over afgelopen maand).
|
||
-- Dat deze de actual variabele bestelopdrachtkosten toont (voor 1e ORDAFR).
|
||
-- Dat deze de actual variabele reserveringskosten toont (over afgelopen maand), behalve verbruiksartikelen met een volgnummer > 900!
|
||
-- Dat deze de actual variabele opdrachtkosten toont (voor 1e ORDAFR).
|
||
-- Dat deze tot de 10e van de huidige maand alleen nog door Vebego wijzigbaar is.
|
||
CREATE OR REPLACE VIEW vbxx_v_actual_fact -- Tbv. FACT_EXPORT!
|
||
(
|
||
prs_afdeling_key,
|
||
maand,
|
||
prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
cp_perslid_key,
|
||
cp_aanhef,
|
||
cp_naam,
|
||
cp_email,
|
||
cnt_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
cm_aanhef,
|
||
cm_naam,
|
||
bes_bestelopdr_key,
|
||
res_rsv_ruimte_key,
|
||
mld_opdr_key,
|
||
bro_id,
|
||
aantal,
|
||
kosten
|
||
)
|
||
AS
|
||
-- Variabele kosten uit ACTUAL opdrachten op variabele contracten
|
||
SELECT pcp.prs_afdeling_key,
|
||
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf)
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email cp_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
NULL bes_bestelopdr_key,
|
||
NULL res_rsv_ruimte_key,
|
||
o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
|
||
1 aantal,
|
||
o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
--fac_tracking t,
|
||
cnt_contract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
prs_contactpersoon cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm
|
||
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND UPPER(ot.mld_typeopdr_omschrijving) = 'REVERSEDBILLINGOPDRACHT'
|
||
AND o.mld_statusopdr_key = 9
|
||
AND NOT EXISTS
|
||
( SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TS_REVERSEDBILLING')
|
||
--AND o.mld_opdr_key = t.fac_tracking_refkey
|
||
--AND t.fac_srtnotificatie_key = 76 -- ORDAFR
|
||
--AND t.fac_tracking_datum > TO_DATE ('20190101', 'yyyymmdd')
|
||
--AND t.fac_tracking_datum < TRUNC (SYSDATE, 'mm')
|
||
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt)
|
||
AND EXISTS -- Niet gemarkeerd als dispuut!
|
||
(SELECT 1
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
|
||
AND o.cnt_contract_key = c.cnt_contract_key
|
||
-- AND c.ins_discipline_key = 523 -- Variabele contracten
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
|
||
--AND o.mld_opdr_key = nr.mld_opdr_key(+)
|
||
UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten-DISPUUT
|
||
SELECT pcp.prs_afdeling_key,
|
||
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf)
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email cp_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern || '/DISPUUT' cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
NULL bes_bestelopdr_key,
|
||
NULL res_rsv_ruimte_key,
|
||
o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
|
||
1 aantal,
|
||
o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
prs_contactpersoon cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm
|
||
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND UPPER(ot.mld_typeopdr_omschrijving) = 'REVERSEDBILLINGOPDRACHT'
|
||
AND o.mld_statusopdr_key = 9 -- ORDAFR
|
||
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt)
|
||
AND NOT EXISTS
|
||
( SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TS_REVERSEDBILLING')
|
||
AND NOT EXISTS -- Gemarkeerd als dispuut!
|
||
(SELECT 1
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
|
||
AND o.cnt_contract_key = c.cnt_contract_key
|
||
-- AND c.ins_discipline_key = 523 -- Variabele contracten
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key;
|
||
|
||
-- Te exporteren/bevriezen totalen over voorgaande maand (vast en variabel).
|
||
CREATE OR REPLACE VIEW vbxx_v_rap_actual_fact_tot
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
broc_flag,
|
||
--hide_f_bedrijf_key,
|
||
fclt_f_leverancier,
|
||
--hide_f_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
aantal,
|
||
kosten
|
||
)
|
||
AS
|
||
SELECT prs_afdeling_key,
|
||
maand,
|
||
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag,
|
||
--prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
--cnt_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
SUM (aantal),
|
||
SUM (kosten)
|
||
FROM vbxx_v_actual_fact
|
||
GROUP BY prs_afdeling_key,
|
||
maand,
|
||
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'),
|
||
--prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
--cnt_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr;
|
||
|
||
-- Te exporteren/bevriezen variabele opdrachtkosten over voorgaande maand (details).
|
||
CREATE OR REPLACE VIEW vbxx_v_rap_actual_fact_mld
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
prio,
|
||
mld_melding_key,
|
||
mld_opdr_key,
|
||
opdr_id,
|
||
plaats, -- Gebouw
|
||
ruimte,
|
||
mld_stdmelding_oms,
|
||
opdrachttype,
|
||
omschrijving,
|
||
begindatum,
|
||
einddatum,
|
||
meldingstatus,
|
||
opdrachtstatus,
|
||
afhandeling,
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district
|
||
)
|
||
AS
|
||
SELECT v.prs_afdeling_key,
|
||
v.maand,
|
||
TO_CHAR (m.mld_melding_spoed),
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id,
|
||
DECODE (
|
||
og.alg_type,
|
||
'R', og.alg_gebouw_code,
|
||
'V', og.alg_gebouw_code,
|
||
'G', og.alg_gebouw_code,
|
||
'T', og.alg_terreinsector_code,
|
||
l.alg_locatie_code)
|
||
plaatsaanduiding,
|
||
DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte,
|
||
sm.mld_stdmelding_omschrijving,
|
||
ot.mld_typeopdr_omschrijving,
|
||
o.mld_opdr_omschrijving,
|
||
o.mld_opdr_datumbegin begindatum,
|
||
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
|
||
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum,
|
||
ms.mld_statuses_omschrijving,
|
||
os.mld_statusopdr_omschrijving,
|
||
o.mld_opdr_opmerking,
|
||
v.prs_bedrijf_naam,
|
||
v.kosten,
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving
|
||
FROM vbxx_v_actual_fact v,
|
||
mld_opdr o,
|
||
mld_statusopdr os,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_statuses ms,
|
||
mld_stdmelding sm,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_v_onroerendgoed_gegevens og
|
||
WHERE v.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_statusopdr_key = os.mld_statusopdr_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+);
|
||
|
||
-- Frozen regels en basis voor oa. de notificatie op de 11e van de maand; voor
|
||
-- de output geldt:
|
||
-- Dat deze de frozen vaste contractkosten toont.
|
||
-- Dat deze de frozen variabele opdrachtkosten toont.
|
||
-- Dat deze de frozen variabele reserveringskosten toont.
|
||
-- Dat de laatst bevroren maand per bedrijf op de 11e wordt genotificeerd (via
|
||
-- extra_key-principe) met daarin de bedragen gegroepeerd per inkoopordernr.
|
||
CREATE OR REPLACE VIEW vbxx_v_frozen_fact
|
||
(
|
||
prs_afdeling_key,
|
||
maand,
|
||
--prs_bedrijf_key,
|
||
extra_key, -- Moet zo heten!
|
||
prs_bedrijf_naam,
|
||
cp_perslid_key,
|
||
cp_aanhef,
|
||
cp_naam,
|
||
cp_email,
|
||
cnt_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
cm_aanhef,
|
||
cm_naam,
|
||
bes_bestelopdr_key,
|
||
res_rsv_ruimte_key,
|
||
mld_opdr_key,
|
||
bro_id,
|
||
factuur_naar_sg,
|
||
aantal,
|
||
kosten,
|
||
bps
|
||
)
|
||
AS
|
||
/*
|
||
SELECT pcp.prs_afdeling_key, -- Vaste contractkosten over de FROZEN termijnen
|
||
SUBSTR (ud.fac_usrdata_code, 1, 7) maand, -- yyyy-mm
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
NULL bes_bestelopdr_key,
|
||
NULL res_rsv_ruimte_key,
|
||
NULL mld_opdr_key,
|
||
NULL bro_id,
|
||
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg,
|
||
0 aantal,
|
||
ud.fac_usrdata_prijs kosten,
|
||
'X' bps -- X=Don't care!
|
||
FROM fac_usrdata ud,
|
||
cnt_contract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm,
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1040) kl -- Factuur rechtstreeks naar SG!
|
||
WHERE ud.fac_usrtab_key = 161 -- VasteKostenMnd
|
||
AND SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1) = TO_CHAR (c.cnt_contract_key)
|
||
--AND SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1) = TO_CHAR (b.prs_bedrijf_key)
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
|
||
AND b.prs_bedrijf_key = kl.prs_link_key(+)
|
||
UNION ALL -- Variabele kosten uit FROZEN bestelopdrachten op variabele contracten (via bes_bestelling_ordernr!)
|
||
SELECT pcp.prs_afdeling_key,
|
||
TO_CHAR (TRUNC (fac.gettrackingdate ('BES2VE', bo.bes_bestelopdr_key), 'mm') - 1, 'yyyy-mm') maand,
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam bedrijf,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht,
|
||
0, 'Mevr. ',
|
||
1, 'Dhr. ',
|
||
'')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (
|
||
pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email cp_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht,
|
||
0, 'Mevr. ',
|
||
1, 'Dhr. ',
|
||
'')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (
|
||
pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
bo.bes_bestelopdr_key,
|
||
NULL res_rsv_ruimte_key,
|
||
NULL mld_opdr_key,
|
||
bo.bes_bestelopdr_id bro_id,
|
||
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg,
|
||
1 aantal,
|
||
SUM ((boi.bes_bestelopdr_item_aantal * COALESCE (boi.bes_bestelopdr_item_inkprijs, boi.bes_bestelopdr_item_prijs)) +
|
||
COALESCE (bo.bes_bestelopdr_korting, 0) +
|
||
COALESCE (bo.bes_bestelopdr_levkosten, 0))
|
||
kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
DECODE (c.cnt_contract_nummer_intern, 30, 'O', 'X') bps -- 30=Maatwerk-contract met Eurest Catering
|
||
FROM bes_bestelling b,
|
||
bes_bestelling_item bbi,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelopdr bo,
|
||
cnt_v_aanwezigcontract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm,
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1040) kl -- Factuur rechtstreeks naar SG!
|
||
WHERE b.bes_bestelling_ordernr IS NOT NULL -- Gefactureerd!
|
||
AND b.bes_bestelling_key = bbi.bes_bestelling_key
|
||
AND bbi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_status = 7 -- Verwerkt (TODO: Soms >1 bestelopdrachten en niet allemaal Verwerkt???)
|
||
--AND bo.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND SUBSTR (b.bes_bestelling_ordernr, INSTR (b.bes_bestelling_ordernr, '/') + 1) = TO_CHAR (c.cnt_contract_key)
|
||
--AND c.ins_discipline_key = 523 -- Variabele contracten (kan niet anders)
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
|
||
AND b.prs_bedrijf_key = kl.prs_link_key(+)
|
||
GROUP BY pcp.prs_afdeling_key,
|
||
TO_CHAR (TRUNC (fac.gettrackingdate ('BES2VE', bo.bes_bestelopdr_key), 'mm') - 1, 'yyyy-mm'),
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht,
|
||
0, 'Mevr. ',
|
||
1, 'Dhr. ',
|
||
''),
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (
|
||
pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam,
|
||
pcp.prs_perslid_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht,
|
||
0, 'Mevr. ',
|
||
1, 'Dhr. ',
|
||
''),
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (
|
||
pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam,
|
||
bo.bes_bestelopdr_key,
|
||
NULL,
|
||
NULL,
|
||
bo.bes_bestelopdr_id,
|
||
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'),
|
||
1,
|
||
DECODE (c.cnt_contract_nummer_intern, 30, 'O', 'X')
|
||
UNION ALL -- Variabele kosten uit FROZEN reserveringen op variabele contracten (via fin_verkoopfactuur_id!)
|
||
SELECT x.prs_afdeling_key,
|
||
SUBSTR (x.fin_verkoopfactuur_maand, 1, 4) || '-' || SUBSTR (x.fin_verkoopfactuur_maand, 5, 2) maand,
|
||
x.prs_bedrijf_key,
|
||
x.prs_bedrijf_naam bedrijf,
|
||
x.prs_perslid_key,
|
||
x.cp_aanhef,
|
||
x.cp_naam,
|
||
x.cp_email,
|
||
x.cnt_contract_key,
|
||
x.cnt_contract_nummer_intern,
|
||
x.cnt_contract_omschrijving,
|
||
x.cnt_contract_nummer,
|
||
x.cm_aanhef,
|
||
x.cm_naam,
|
||
NULL bes_bestelopdr_key,
|
||
x.res_rsv_ruimte_key,
|
||
NULL mld_opdr_key,
|
||
x.fin_verkoopfactuur_omschr bro_id,
|
||
DECODE (x.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg,
|
||
1 aantal,
|
||
SUM (COALESCE (x.verw_prijs, x.prijs, 0)) kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
DECODE (x.cnt_contract_nummer_intern, 30, 'O', 'X') bps -- 30=Maatwerk-contract met Eurest Catering
|
||
FROM (SELECT pcp.prs_afdeling_key,
|
||
vf.fin_verkoopfactuur_maand,
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht,
|
||
0, 'Mevr. ',
|
||
1, 'Dhr. ',
|
||
'')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (
|
||
pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email cp_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht,
|
||
0, 'Mevr. ',
|
||
1, 'Dhr. ',
|
||
'')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (
|
||
pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
rra.res_rsv_ruimte_key,
|
||
vf.fin_verkoopfactuur_omschr,
|
||
rra.res_rsv_artikel_prijs verw_prijs,
|
||
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs,
|
||
--DECODE (COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw), NULL, 'VH', 21, 'VH', 'VL')
|
||
-- btw,
|
||
kl.prs_kenmerklink_waarde
|
||
FROM fin_verkoopfactuur vf,
|
||
res_v_aanwezigrsv_artikel rra,
|
||
res_artikel ra,
|
||
cnt_v_aanwezigcontract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm,
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1040) kl -- Factuur rechtstreeks naar SG!
|
||
WHERE vf.fin_verkoopfactuur_refkey = rra.res_rsv_artikel_key
|
||
--AND rra.res_status_bo_key = 6 -- Verwerkt (kan niet anders)
|
||
--AND rra.res_rsv_artikel_verwerkt IS NOT NULL -- Verwerkt (kan niet anders)
|
||
--AND rra.res_rsv_artikel_levering > TO_DATE ('20190101', 'yyyymmdd') -- Kan niet anders
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND fac.safe_to_number (vf.fin_verkoopfactuur_id) = c.cnt_contract_key
|
||
--AND c.ins_discipline_key = 523 -- Variabele contracten (kan niet anders)
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
|
||
AND b.prs_bedrijf_key = kl.prs_link_key(+)) x
|
||
GROUP BY x.prs_afdeling_key,
|
||
SUBSTR (x.fin_verkoopfactuur_maand, 1, 4) || '-' || SUBSTR (x.fin_verkoopfactuur_maand, 5, 2),
|
||
x.prs_bedrijf_key,
|
||
x.prs_bedrijf_naam,
|
||
x.prs_perslid_key,
|
||
x.cp_aanhef,
|
||
x.cp_naam,
|
||
x.cp_email,
|
||
x.cnt_contract_key,
|
||
x.cnt_contract_nummer_intern,
|
||
x.cnt_contract_omschrijving,
|
||
x.cnt_contract_nummer,
|
||
x.cm_aanhef,
|
||
x.cm_naam,
|
||
NULL,
|
||
x.res_rsv_ruimte_key,
|
||
NULL,
|
||
x.fin_verkoopfactuur_omschr,
|
||
DECODE (x.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'),
|
||
1,
|
||
DECODE (x.cnt_contract_nummer_intern, 30, 'O', 'X')
|
||
UNION ALL -- Variabele kosten uit FROZEN opdrachten op variabele contracten
|
||
*/
|
||
SELECT pcp.prs_afdeling_key,
|
||
o.mld_opdr_ordernr maand,
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL,
|
||
NULL,
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
COALESCE (nr.mld_kenmerkopdr_waarde, c.cnt_contract_nummer) cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
NULL bes_bestelopdr_key,
|
||
NULL res_rsv_ruimte_key,
|
||
o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
|
||
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'),
|
||
1 aantal,
|
||
o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
DECODE (c.cnt_contract_nummer_intern, 30, DECODE (m.mld_alg_onroerendgoed_keys, 8023, 'B', 'O'), 'X') bps -- 30=Maatwerk-contract met Eurest Catering/8023=Restaurant BPS (TERM-T1-3-R3236)
|
||
FROM mld_opdr o,
|
||
cnt_contract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm,
|
||
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 961) nr, -- Inkoopnummer
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1040) kl, -- Factuur rechtstreeks naar SG!
|
||
mld_melding m
|
||
WHERE o.mld_opdr_ordernr IS NOT NULL -- Gefactureerd!
|
||
AND o.cnt_contract_key = c.cnt_contract_key
|
||
AND EXISTS -- timestamp voor reversed billing is gezet.
|
||
( SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TS_REVERSEDBILLING')
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
|
||
AND o.mld_opdr_key = nr.mld_opdr_key(+)
|
||
AND b.prs_bedrijf_key = kl.prs_link_key(+)
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
/*
|
||
UNION ALL -- Variabele kosten uit FROZEN opdrachten voor Wiltec (niet gekoppeld aan variabel contract)!
|
||
SELECT pcp.prs_afdeling_key,
|
||
o.mld_opdr_ordernr maand,
|
||
b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
pcp.prs_perslid_key,
|
||
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cp_aanhef,
|
||
DECODE (
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
|
||
NULL,
|
||
NULL,
|
||
COALESCE (pcp.prs_perslid_voorletters,
|
||
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcp.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcp.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcp.prs_perslid_naam
|
||
cp_naam,
|
||
pcp.prs_perslid_email,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_omschrijving,
|
||
c.cnt_contract_nummer,
|
||
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
|
||
cm_aanhef,
|
||
DECODE (
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
|
||
NULL, NULL,
|
||
COALESCE (pcm.prs_perslid_voorletters,
|
||
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|
||
|| ' ')
|
||
|| DECODE (pcm.prs_perslid_tussenvoegsel,
|
||
NULL, NULL,
|
||
pcm.prs_perslid_tussenvoegsel || ' ')
|
||
|| pcm.prs_perslid_naam
|
||
cm_naam,
|
||
NULL bes_bestelopdr_key,
|
||
NULL res_rsv_ruimte_key,
|
||
o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
|
||
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'),
|
||
1 aantal,
|
||
o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
DECODE (c.cnt_contract_nummer_intern, 30, DECODE (m.mld_alg_onroerendgoed_keys, 8023, 'B', 'O'), 'X') bps -- 30=Maatwerk-contract met Eurest Catering/8023=Restaurant BPS (TERM-T1-3-R3236)
|
||
FROM mld_opdr o,
|
||
cnt_contract c,
|
||
prs_bedrijf b,
|
||
cnt_contract mc,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp,
|
||
prs_perslid pcp,
|
||
prs_perslid pcm,
|
||
--(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde
|
||
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
|
||
-- WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
-- AND k.mld_srtkenmerk_key = 961) nr, -- Inkoopnummer
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1040) kl, -- Factuur rechtstreeks naar SG!
|
||
mld_melding m
|
||
WHERE o.mld_opdr_ordernr IS NOT NULL -- Gefactureerd!
|
||
--AND o.mld_statusopdr_key = 7 -- Verwerkt (kan niet anders)
|
||
AND o.cnt_contract_key IS NULL -- Niet gekoppeld aan een contract!
|
||
AND o.mld_uitvoerende_keys = c.cnt_prs_bedrijf_key
|
||
AND c.ins_discipline_key = 523 -- Variabele contracten
|
||
AND TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy-mm') <= o.mld_opdr_ordernr
|
||
AND TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy-mm') >= o.mld_opdr_ordernr
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = 31041 -- Wiltec
|
||
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
|
||
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
|
||
--AND o.mld_opdr_key = nr.mld_opdr_key(+)
|
||
AND b.prs_bedrijf_key = kl.prs_link_key(+)
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND NOT EXISTS -- Betreffende maand lopend contract!
|
||
(SELECT 1
|
||
FROM cnt_v_aanwezigcontract
|
||
WHERE ins_discipline_key = 523 -- Variabele contracten
|
||
--AND cnt_contract_status = 0 -- NIET Gesloten
|
||
AND TO_CHAR (cnt_contract_looptijd_van, 'yyyy-mm') <= o.mld_opdr_ordernr
|
||
AND TO_CHAR (cnt_contract_looptijd_tot, 'yyyy-mm') >= o.mld_opdr_ordernr
|
||
AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key
|
||
AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern)
|
||
*/;
|
||
|
||
-- Geexporteerde/bevroren totalen over voorgaande maanden (vast en variabel).
|
||
CREATE OR REPLACE VIEW vbxx_v_rap_frozen_fact_tot
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
broc_flag,
|
||
--hide_f_bedrijf_key,
|
||
fclt_f_leverancier,
|
||
--hide_f_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
aantal,
|
||
kosten,
|
||
bps
|
||
)
|
||
AS -- Vaste contractkosten over de FROZEN termijnen
|
||
SELECT prs_afdeling_key,
|
||
maand,
|
||
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag,
|
||
--prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
--cnt_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
SUM (aantal),
|
||
SUM (kosten),
|
||
bps
|
||
FROM vbxx_v_frozen_fact
|
||
GROUP BY prs_afdeling_key,
|
||
maand,
|
||
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'),
|
||
--prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
--cnt_contract_key,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
bps;
|
||
/*
|
||
-- KFSG#65747: Rapportage tbv. leverancier-contactpersonen!
|
||
CREATE OR REPLACE VIEW kfsg_v_rap_frozen_tot_lev
|
||
(
|
||
fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersoon!
|
||
maand,
|
||
broc_flag,
|
||
fclt_f_leverancier,
|
||
contractnr,
|
||
beschrijving,
|
||
inkoopordernr,
|
||
aantal,
|
||
kosten,
|
||
bps
|
||
)
|
||
AS -- Vaste contractkosten over de FROZEN termijnen
|
||
SELECT cp.prs_perslid_key,
|
||
v.maand,
|
||
DECODE (v.bes_bestelopdr_key, NULL, DECODE (v.res_rsv_ruimte_key, NULL, DECODE (v.mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag,
|
||
v.prs_bedrijf_naam,
|
||
v.contractnr,
|
||
v.beschrijving,
|
||
v.inkoopordernr,
|
||
SUM (v.aantal),
|
||
SUM (COALESCE (v.kosten, 0)),
|
||
v.bps
|
||
FROM kfsg_v_frozen_fact v,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp
|
||
WHERE v.extra_key = cp.prs_bedrijf_key
|
||
AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor!
|
||
GROUP BY cp.prs_perslid_key,
|
||
v.maand,
|
||
DECODE (v.bes_bestelopdr_key, NULL, DECODE (v.res_rsv_ruimte_key, NULL, DECODE (v.mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'),
|
||
v.prs_bedrijf_naam,
|
||
v.contractnr,
|
||
v.beschrijving,
|
||
v.inkoopordernr,
|
||
v.bps;
|
||
|
||
-- Geexporteerde/bevroren variabele bestelopdrachtkosten over voorgaande maanden (details).
|
||
CREATE OR REPLACE VIEW kfsg_v_rap_frozen_fact_bes
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
bes_bestelling_key,
|
||
bes_bestelopdr_key,
|
||
bes_id,
|
||
plaats,
|
||
ruimte,
|
||
catalogus,
|
||
besteldatum,
|
||
leverdatum,
|
||
bestellingstatus, -- Not used
|
||
bestelopdrachtstatus,
|
||
afhandeling, -- Not used
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district,
|
||
bps
|
||
)
|
||
AS
|
||
SELECT v.prs_afdeling_key,
|
||
v.maand,
|
||
x.bes_bestelling_key,
|
||
v.bes_bestelopdr_key,
|
||
v.bro_id bes_id,
|
||
COALESCE (l.alg_locatie_code, ma.mld_adres_naam) plaatsaanduiding,
|
||
x.bes_bestelling_plaats ruimte,
|
||
x.ins_discipline_omschrijving,
|
||
bo.bes_bestelopdr_datum,
|
||
bo.bes_bestelopdr_leverdatum, -- Of uit FAC_TRACKING-tabel?
|
||
bs.bes_bestellingstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken?
|
||
bos.bes_bestelopdrstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken?
|
||
COALESCE (bo.bes_bestelopdr_opmerking, bo.bes_bestelopdr_delivery_opmerk) afhandeling,
|
||
v.prs_bedrijf_naam,
|
||
v.kosten,
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving,
|
||
v.bps
|
||
FROM kfsg_v_frozen_fact v,
|
||
bes_bestelopdr bo,
|
||
(SELECT DISTINCT boi.bes_bestelopdr_key, b.bes_bestelling_key, b.mld_adres_key_lev, b.bes_bestelling_plaats, b.bes_bestelling_datum, b.bes_bestelling_status, td.ins_discipline_omschrijving
|
||
FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling b, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline td
|
||
WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
|
||
AND bbi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND bbi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key) x,
|
||
bes_bestellingstatuses bs,
|
||
bes_bestelopdrstatuses bos,
|
||
mld_adres ma,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE v.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key
|
||
AND x.bes_bestelling_status = bs.bes_bestellingstatuses_key(+)
|
||
AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+)
|
||
AND x.mld_adres_key_lev = ma.mld_adres_key(+)
|
||
AND ma.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+);
|
||
|
||
-- KFSG#65747: Rapportage tbv. leverancier-contactpersonen!
|
||
CREATE OR REPLACE VIEW kfsg_v_rap_frozen_bes_lev
|
||
(
|
||
fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersonen!
|
||
maand,
|
||
bes_bestelling_key,
|
||
bes_bestelopdr_key,
|
||
bes_id,
|
||
plaats,
|
||
ruimte,
|
||
catalogus,
|
||
besteldatum,
|
||
leverdatum,
|
||
bestellingstatus, -- Not used
|
||
bestelopdrachtstatus,
|
||
afhandeling, -- Not used
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district,
|
||
bps
|
||
)
|
||
AS
|
||
SELECT cp.prs_perslid_key,
|
||
v.maand,
|
||
x.bes_bestelling_key,
|
||
v.bes_bestelopdr_key,
|
||
v.bro_id bes_id,
|
||
COALESCE (l.alg_locatie_code, ma.mld_adres_naam) plaatsaanduiding,
|
||
x.bes_bestelling_plaats ruimte,
|
||
x.ins_discipline_omschrijving,
|
||
bo.bes_bestelopdr_datum,
|
||
bo.bes_bestelopdr_leverdatum, -- Of uit FAC_TRACKING-tabel?
|
||
bs.bes_bestellingstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken?
|
||
bos.bes_bestelopdrstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken?
|
||
COALESCE (bo.bes_bestelopdr_opmerking, bo.bes_bestelopdr_delivery_opmerk) afhandeling,
|
||
v.prs_bedrijf_naam,
|
||
COALESCE (v.kosten, 0),
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving,
|
||
v.bps
|
||
FROM kfsg_v_frozen_fact v,
|
||
bes_bestelopdr bo,
|
||
(SELECT DISTINCT boi.bes_bestelopdr_key, b.bes_bestelling_key, b.mld_adres_key_lev, b.bes_bestelling_plaats, b.bes_bestelling_datum, b.bes_bestelling_status, td.ins_discipline_omschrijving
|
||
FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling b, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline td
|
||
WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
|
||
AND bbi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND bbi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key) x,
|
||
bes_bestellingstatuses bs,
|
||
bes_bestelopdrstatuses bos,
|
||
mld_adres ma,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp
|
||
WHERE v.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key
|
||
AND x.bes_bestelling_status = bs.bes_bestellingstatuses_key(+)
|
||
AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+)
|
||
AND x.mld_adres_key_lev = ma.mld_adres_key(+)
|
||
AND ma.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND v.extra_key = cp.prs_bedrijf_key
|
||
AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor!
|
||
;
|
||
|
||
-- Geexporteerde/bevroren variabele reserveringskosten over voorgaande maanden (details).
|
||
CREATE OR REPLACE VIEW kfsg_v_rap_frozen_fact_res
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key,
|
||
res_id,
|
||
plaats, -- Gebouw
|
||
ruimte,
|
||
activiteit,
|
||
omschrijving,
|
||
van_datum, -- Not used
|
||
van_tijd,
|
||
tot_tijd,
|
||
status,
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district,
|
||
bps
|
||
)
|
||
AS
|
||
SELECT v.prs_afdeling_key,
|
||
v.maand,
|
||
rrr.res_reservering_key,
|
||
v.res_rsv_ruimte_key,
|
||
v.bro_id res_id,
|
||
DECODE (
|
||
og.alg_type,
|
||
'R', og.alg_gebouw_code,
|
||
'V', og.alg_gebouw_code,
|
||
'G', og.alg_gebouw_code,
|
||
'T', og.alg_terreinsector_code,
|
||
l.alg_locatie_code)
|
||
plaatsaanduiding,
|
||
COALESCE ((SELECT res_ruimte_nr FROM res_ruimte WHERE res_ruimte_key = rro.res_ruimte_key), og.alg_plaatsaanduiding) ruimte,
|
||
ra.res_activiteit_omschrijving,
|
||
rrr.res_rsv_ruimte_omschrijving,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_tot,
|
||
rs.res_status_bo_omschrijving,
|
||
v.prs_bedrijf_naam,
|
||
v.kosten,
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving,
|
||
v.bps
|
||
FROM kfsg_v_frozen_fact v,
|
||
res_rsv_ruimte rrr,
|
||
res_activiteit ra,
|
||
res_status_bo rs,
|
||
res_ruimte_opstelling rro,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar1,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NOT NULL
|
||
GROUP BY res_ruimte_key) rar2,
|
||
alg_v_onroerendgoed_gegevens og,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
AND rrr.res_activiteit_key = ra.res_activiteit_key
|
||
AND rrr.res_status_bo_key = rs.res_status_bo_key(+) -- Status van onderliggende artikelen/delen betrekken?
|
||
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
||
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
|
||
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
|
||
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = og.alg_ruimte_key
|
||
AND og.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+);
|
||
|
||
-- KFSG#65747: Rapportage tbv. leverancier-contactpersonen!
|
||
CREATE OR REPLACE VIEW kfsg_v_rap_frozen_res_lev
|
||
(
|
||
fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersonen!
|
||
maand,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key,
|
||
res_id,
|
||
plaats, -- Gebouw
|
||
ruimte,
|
||
activiteit,
|
||
omschrijving,
|
||
van_datum, -- Not used
|
||
van_tijd,
|
||
tot_tijd,
|
||
status,
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district,
|
||
bps
|
||
)
|
||
AS
|
||
SELECT cp.prs_perslid_key,
|
||
v.maand,
|
||
rrr.res_reservering_key,
|
||
v.res_rsv_ruimte_key,
|
||
v.bro_id res_id,
|
||
DECODE (
|
||
og.alg_type,
|
||
'R', og.alg_gebouw_code,
|
||
'V', og.alg_gebouw_code,
|
||
'G', og.alg_gebouw_code,
|
||
'T', og.alg_terreinsector_code,
|
||
l.alg_locatie_code)
|
||
plaatsaanduiding,
|
||
COALESCE ((SELECT res_ruimte_nr FROM res_ruimte WHERE res_ruimte_key = rro.res_ruimte_key), og.alg_plaatsaanduiding) ruimte,
|
||
ra.res_activiteit_omschrijving,
|
||
rrr.res_rsv_ruimte_omschrijving,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_tot,
|
||
rs.res_status_bo_omschrijving,
|
||
v.prs_bedrijf_naam,
|
||
COALESCE (v.kosten, 0),
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving,
|
||
v.bps
|
||
FROM kfsg_v_frozen_fact v,
|
||
res_rsv_ruimte rrr,
|
||
res_activiteit ra,
|
||
res_status_bo rs,
|
||
res_ruimte_opstelling rro,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar1,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NOT NULL
|
||
GROUP BY res_ruimte_key) rar2,
|
||
alg_v_onroerendgoed_gegevens og,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp
|
||
WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
AND rrr.res_activiteit_key = ra.res_activiteit_key
|
||
AND rrr.res_status_bo_key = rs.res_status_bo_key(+) -- Status van onderliggende artikelen/delen betrekken?
|
||
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
||
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
|
||
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
|
||
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = og.alg_ruimte_key
|
||
AND og.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND v.extra_key = cp.prs_bedrijf_key
|
||
AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor!
|
||
;
|
||
*/
|
||
-- Geexporteerde/bevroren variabele opdrachtkosten over voorgaande maanden (details).
|
||
CREATE OR REPLACE VIEW vbxx_v_rap_frozen_fact_mld
|
||
(
|
||
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
|
||
maand,
|
||
prio,
|
||
mld_melding_key,
|
||
mld_opdr_key,
|
||
opdr_id,
|
||
plaats, -- Gebouw
|
||
ruimte,
|
||
mld_stdmelding_oms,
|
||
opdrachttype,
|
||
omschrijving,
|
||
begindatum,
|
||
einddatum,
|
||
meldingstatus,
|
||
opdrachtstatus,
|
||
afhandeling,
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district,
|
||
bps
|
||
)
|
||
AS
|
||
SELECT v.prs_afdeling_key,
|
||
v.maand,
|
||
TO_CHAR (m.mld_melding_spoed),
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id,
|
||
DECODE (
|
||
og.alg_type,
|
||
'R', og.alg_gebouw_code,
|
||
'V', og.alg_gebouw_code,
|
||
'G', og.alg_gebouw_code,
|
||
'T', og.alg_terreinsector_code,
|
||
l.alg_locatie_code)
|
||
plaatsaanduiding,
|
||
DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte,
|
||
sm.mld_stdmelding_omschrijving,
|
||
ot.mld_typeopdr_omschrijving,
|
||
o.mld_opdr_omschrijving,
|
||
o.mld_opdr_datumbegin begindatum,
|
||
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
|
||
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum,
|
||
ms.mld_statuses_omschrijving,
|
||
os.mld_statusopdr_omschrijving,
|
||
o.mld_opdr_opmerking,
|
||
v.prs_bedrijf_naam,
|
||
o.mld_opdr_kosten,
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving,
|
||
v.bps
|
||
FROM vbxx_v_frozen_fact v,
|
||
mld_opdr o,
|
||
mld_statusopdr os,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_statuses ms,
|
||
mld_stdmelding sm,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_v_onroerendgoed_gegevens og
|
||
WHERE v.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_statusopdr_key = os.mld_statusopdr_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+);
|
||
|
||
/*
|
||
|
||
-- KFSG#65747: Rapportage tbv. leverancier-contactpersonen!
|
||
CREATE OR REPLACE VIEW kfsg_v_rap_frozen_mld_lev
|
||
(
|
||
fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersonen!
|
||
maand,
|
||
prio,
|
||
mld_melding_key,
|
||
mld_opdr_key,
|
||
opdr_id,
|
||
plaats, -- Gebouw
|
||
ruimte,
|
||
mld_stdmelding_oms,
|
||
opdrachttype,
|
||
omschrijving,
|
||
begindatum,
|
||
einddatum,
|
||
meldingstatus,
|
||
opdrachtstatus,
|
||
afhandeling,
|
||
fclt_f_leverancier,
|
||
kosten,
|
||
fclt_f_contractnr,
|
||
fclt_f_inkoopordernr,
|
||
fclt_x_district,
|
||
bps
|
||
)
|
||
AS
|
||
SELECT cp.prs_perslid_key,
|
||
v.maand,
|
||
TO_CHAR (m.mld_melding_spoed),
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id,
|
||
DECODE (
|
||
og.alg_type,
|
||
'R', og.alg_gebouw_code,
|
||
'V', og.alg_gebouw_code,
|
||
'G', og.alg_gebouw_code,
|
||
'T', og.alg_terreinsector_code,
|
||
l.alg_locatie_code)
|
||
plaatsaanduiding,
|
||
DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte,
|
||
sm.mld_stdmelding_omschrijving,
|
||
ot.mld_typeopdr_omschrijving,
|
||
o.mld_opdr_omschrijving,
|
||
o.mld_opdr_datumbegin begindatum,
|
||
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
|
||
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum,
|
||
ms.mld_statuses_omschrijving,
|
||
os.mld_statusopdr_omschrijving,
|
||
o.mld_opdr_opmerking,
|
||
v.prs_bedrijf_naam,
|
||
COALESCE (o.mld_opdr_kosten, 0),
|
||
v.contractnr,
|
||
v.inkoopordernr,
|
||
d.alg_district_omschrijving,
|
||
v.bps
|
||
FROM kfsg_v_frozen_fact v,
|
||
mld_opdr o,
|
||
mld_statusopdr os,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_statuses ms,
|
||
mld_stdmelding sm,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_v_onroerendgoed_gegevens og,
|
||
(SELECT *
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL) cp
|
||
WHERE v.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_statusopdr_key = os.mld_statusopdr_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND v.extra_key = cp.prs_bedrijf_key
|
||
AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor!
|
||
;
|
||
*/
|
||
CREATE OR REPLACE PROCEDURE vbxx_select_fact (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
/*
|
||
-- Bevries vaste contractkosten in eigen tabel.
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT '[' || TO_CHAR (v.cnt_contract_key) || '] ' aanduiding,
|
||
v.maand, v.cnt_contract_key, v.prs_bedrijf_key, v.inkoopordernr, v.kosten
|
||
FROM kfsg_v_actual_fact v
|
||
WHERE v.bes_bestelopdr_key IS NULL AND v.res_rsv_ruimte_key IS NULL AND v.mld_opdr_key IS NULL
|
||
ORDER BY 3;
|
||
|
||
-- Zet "variabele" BES-bestelopdrachten die voor de 1e zijn geleverd op AV.
|
||
-- Alleen op variabele contracten.
|
||
CURSOR c2
|
||
IS
|
||
SELECT DISTINCT '[' || TO_CHAR (v.bes_bestelopdr_key) || '|' || v.bro_id || '] ' aanduiding,
|
||
v.maand, v.bes_bestelopdr_key, bbi.bes_bestelling_key, v.cnt_contract_key
|
||
FROM kfsg_v_actual_fact v, bes_bestelopdr_item boi, bes_bestelling_item bbi
|
||
WHERE v.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
|
||
ORDER BY 3;
|
||
|
||
-- Zet "variabele" RES-cateringregels die voor de 1e hebben plaatsgevonden op AV
|
||
-- en meld - zover niet al gebeurd - de deelreservering af (in juiste volgorde).
|
||
-- Alleen op variabele contracten.
|
||
CURSOR c3
|
||
IS
|
||
SELECT DISTINCT '[' || TO_CHAR (v.res_rsv_ruimte_key) || '|' || v.bro_id || '] ' aanduiding,
|
||
v.maand, v.res_rsv_ruimte_key,
|
||
rra.res_status_bo_key,
|
||
rra.res_rsv_artikel_key, rra.res_artikel_key,
|
||
v.cnt_contract_key, v.bro_id, v.prs_bedrijf_key, v.prs_bedrijf_naam
|
||
FROM kfsg_v_actual_fact v, res_v_aanwezigrsv_artikel rra, res_artikel ra
|
||
WHERE v.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rra.res_rsv_artikel_verwerkt IS NULL
|
||
AND rra.res_rsv_artikel_dirtlevel = 0 -- TODO:Niet dirty?
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND COALESCE (ra.res_artikel_volgnummer, 0) <= 900 -- KFSG#74625: Voor facturatie uitsluiten artikelen met een volgnummer >900!
|
||
UNION ALL
|
||
SELECT DISTINCT '[' || TO_CHAR (v.res_rsv_ruimte_key) || '|' || v.bro_id || '] ' aanduiding,
|
||
v.maand, v.res_rsv_ruimte_key,
|
||
rrr.res_status_bo_key,
|
||
NULL res_rsv_artikel_key, NULL res_artikel_key,
|
||
v.cnt_contract_key, v.bro_id, v.prs_bedrijf_key, v.prs_bedrijf_naam
|
||
FROM kfsg_v_actual_fact v, res_v_aanwezigrsv_ruimte rrr
|
||
WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
ORDER BY 1, 5, 3;
|
||
*/
|
||
-- Zet "variabele" MLD-opdrachten die voor de 1e zijn afgerond op AV.
|
||
-- Alleen op variabele contracten <20>n geen dispuut.
|
||
CURSOR c4
|
||
IS
|
||
SELECT DISTINCT '[' || TO_CHAR (v.mld_opdr_key) || '|' || v.bro_id || '] ' aanduiding,
|
||
v.maand, v.mld_opdr_key, v.cnt_contract_key, v.kosten
|
||
FROM vbxx_v_actual_fact v
|
||
WHERE v.mld_opdr_key IS NOT NULL
|
||
AND v.contractnr NOT LIKE '%/DISPUUT'
|
||
ORDER BY 3;
|
||
/*
|
||
-- Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV.
|
||
-- Afgerond/kosten meerekenen op vaste contracten en geen dispuut
|
||
-- Afgemeld/kosten niet meerekenen, geen offerteaanvraag en geen dispuut
|
||
-- Afgerond/kosten niet meerekenen en geen dispuut (= geaccepteerde offerteaanvragen)
|
||
CURSOR c5
|
||
IS
|
||
SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding,
|
||
o.mld_opdr_key
|
||
FROM mld_opdr o, mld_typeopdr ot, cnt_contract c
|
||
WHERE o.mld_statusopdr_key = 9 -- KV
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja
|
||
AND o.cnt_contract_key = c.cnt_contract_key
|
||
AND c.ins_discipline_key = 522 -- Vaste contracten
|
||
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
|
||
(SELECT 1
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 141 -- Dispuut
|
||
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
|
||
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')
|
||
UNION ALL
|
||
SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding,
|
||
o.mld_opdr_key
|
||
FROM mld_opdr o, mld_typeopdr ot
|
||
WHERE o.mld_statusopdr_key = 6 -- TV
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee
|
||
AND ot.mld_typeopdr_key != 220 -- Offerteaanvraag
|
||
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
|
||
(SELECT 1
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 141 -- Dispuut
|
||
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
|
||
AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')
|
||
UNION ALL
|
||
SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding,
|
||
o.mld_opdr_key
|
||
FROM mld_opdr o, mld_typeopdr ot
|
||
WHERE o.mld_statusopdr_key = 9 -- KV (ooit met kosten en Offerteaanvragen)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee
|
||
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
|
||
(SELECT 1
|
||
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 141 -- Dispuut
|
||
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
|
||
AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')
|
||
OR fac.gettrackingdate ('ORDOOK', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm'))
|
||
ORDER BY 2;
|
||
*/
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_verkoopfactuurkop_key NUMBER (10);
|
||
v_prijs NUMBER (9, 2);
|
||
v_ts_kenmerk_key NUMBER (10);
|
||
v_factuurschema_key NUMBER (10);
|
||
BEGIN
|
||
-- Op 10e dag van de maand (via scheduled task):
|
||
-- 1. Bevries vaste contractkosten in eigen tabel (incl. malus?).
|
||
-- 2. Zet "variabele" bestelopdrachten die voor de 1e zijn geleverd op AV.
|
||
-- 3. Zet "variabele" catering-reserveringen die voor de 1e hebben plaatsgevonden op AV.
|
||
-- 4. Zet "variabele" opdrachten die voor de 1e zijn afgerond op AV.
|
||
-- 5. Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV.
|
||
-- x. Doe niets met afgewezen/geannuleerde opdrachten?
|
||
|
||
v_count := 0;
|
||
/*
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout toevoegen vaste contractkosten';
|
||
|
||
INSERT INTO fac_usrdata (fac_usrtab_key,
|
||
fac_usrdata_code,
|
||
fac_usrdata_omschr,
|
||
fac_usrdata_aanmaak,
|
||
fac_usrdata_vervaldatum,
|
||
fac_usrdata_prijs)
|
||
VALUES (161, -- VasteKostenMnd
|
||
rec.maand || '/' || TO_CHAR (rec.cnt_contract_key),
|
||
TO_CHAR (rec.prs_bedrijf_key) || '/' || rec.inkoopordernr, -- TODO: Of weg?
|
||
SYSDATE,
|
||
NULL,
|
||
rec.kosten);
|
||
|
||
v_count := v_count + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-CAV');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname, 'S', '#Vaste contractkosten bevroren: ' || TO_CHAR (v_count), '');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
|
||
FOR rec IN c2
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout bijwerken ordernummer (BES).';
|
||
|
||
UPDATE bes_bestelling
|
||
SET bes_bestelling_ordernr = rec.maand || '/' || TO_CHAR (rec.cnt_contract_key)
|
||
WHERE bes_bestelling_key = rec.bes_bestelling_key;
|
||
|
||
v_errormsg := 'Fout bijwerken status (BES).';
|
||
|
||
BES.setbestelopdrstatus (rec.bes_bestelopdr_key, 7, 3);
|
||
BES.setbestellingstatus (rec.bes_bestelling_key, 7, 3); -- TODO: Soms >1 bestelopdrachten???
|
||
|
||
v_count := v_count + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-BAV');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname, 'S', '#Variabele bestelopdrachten bevroren: ' || TO_CHAR (v_count), '');
|
||
COMMIT;
|
||
|
||
-- Maak elke factuurrun voor elke reverse te billen res_rsv_xxx-regel een
|
||
-- fin_verkoopfactuur-regel aan onder dezelfde fin_verkoopfactuurkop (<28><>n
|
||
-- kop per maand)!
|
||
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
|
||
VALUES ('RES-billing' || TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'))
|
||
RETURNING fin_verkoopfactuurkop_key
|
||
INTO v_verkoopfactuurkop_key;
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
|
||
FOR rec IN c3
|
||
LOOP
|
||
BEGIN
|
||
IF rec.res_rsv_artikel_key IS NOT NULL
|
||
THEN -- Catering-regel
|
||
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
|
||
|
||
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
|
||
INTO v_prijs
|
||
FROM DUAL;
|
||
|
||
IF rec.res_status_bo_key = 2
|
||
THEN
|
||
v_errormsg := 'Fout afmelden res_rsv_artikel';
|
||
|
||
UPDATE res_rsv_artikel
|
||
SET res_status_bo_key = 5,
|
||
res_rsv_artikel_prijs = v_prijs,
|
||
res_rsv_artikel_inkoopprijs =
|
||
(SELECT res_artikel_inkoopprijs
|
||
FROM res_artikel
|
||
WHERE res_artikel_key = rec.res_artikel_key),
|
||
res_rsv_artikel_btw =
|
||
(SELECT res_artikel_btw
|
||
FROM res_artikel
|
||
WHERE res_artikel_key = rec.res_artikel_key)
|
||
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
|
||
|
||
v_errormsg := 'Fout tracken afmelding catering';
|
||
|
||
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering afgemeld');
|
||
END IF;
|
||
|
||
IF rec.res_status_bo_key != 6
|
||
THEN
|
||
v_errormsg := 'Fout verwerken res_rsv_artikel';
|
||
|
||
UPDATE res_rsv_artikel
|
||
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
|
||
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
|
||
|
||
v_errormsg := 'Fout tracken verwerking catering';
|
||
|
||
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering verwerkt');
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout toevoegen verkoopfactuur';
|
||
|
||
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
|
||
fin_verkoopfactuur_id,
|
||
fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_omschr,
|
||
fin_verkoopfactuur_xmlnode,
|
||
fin_verkoopfactuur_refkey,
|
||
prs_bedrijf_key,
|
||
prs_debiteur_naam,
|
||
fin_verkoopfactuur_bedrag,
|
||
fin_verkoopfactuur_maand)
|
||
VALUES (v_verkoopfactuurkop_key,
|
||
TO_CHAR (rec.cnt_contract_key), -- Contract
|
||
SYSDATE,
|
||
rec.bro_id,
|
||
'', -- Er bestaat geen xml-node voor res_rsv_artikel!
|
||
rec.res_rsv_artikel_key,
|
||
rec.prs_bedrijf_key, -- Leverancier-key (crediteur)
|
||
rec.prs_bedrijf_naam, -- Leverancier-naam (crediteur)
|
||
v_prijs, -- Netto bedrag, want alle bedragen excl. BTW, toch?
|
||
SUBSTR (rec.maand, 1, 4) || SUBSTR (rec.maand, 6, 2));
|
||
|
||
v_count := v_count + 1;
|
||
COMMIT;
|
||
ELSE -- Ruimte-regel
|
||
IF rec.res_status_bo_key = 2
|
||
THEN
|
||
v_errormsg := 'Fout bepalen res_rsv_ruimte_prijs';
|
||
|
||
SELECT res.getruimteprijs (rec.res_rsv_ruimte_key)
|
||
INTO v_prijs
|
||
FROM DUAL;
|
||
|
||
v_errormsg := 'Fout afmelden res_rsv_ruimte';
|
||
|
||
UPDATE res_rsv_ruimte
|
||
SET res_status_bo_key = 5,
|
||
res_rsv_ruimte_prijs = v_prijs
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
v_errormsg := 'Fout tracken afmelding ruimte';
|
||
|
||
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
|
||
END IF;
|
||
|
||
-- Contract kan niet via RES-ordernr historisch worden opgeslagen,
|
||
-- want onder <20><>n res_rsv_ruimte kunnen de artikelen per catalogus
|
||
-- worden gefactureerd aan een verschillende leverancier!
|
||
--v_errormsg := 'Fout bijwerken ordernummer (RES).';
|
||
|
||
--UPDATE res_rsv_ruimte
|
||
-- SET res_rsv_ruimte_ordernr = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') || '/' || TO_CHAR (rec.cnt_contract_key)
|
||
-- WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-RAV');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname, 'S', '#Variabele cateringregels bevroren: ' || TO_CHAR (v_count), '');
|
||
COMMIT;
|
||
*/
|
||
v_count := 0;
|
||
|
||
-- Bepaal de key van het kenmerk om de timestamp op te slaan
|
||
SELECT mld_kenmerk_key
|
||
INTO v_ts_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_typeopdr ot
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TS_REVERSEDBILLING'
|
||
AND k.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND UPPER(ot.mld_typeopdr_omschrijving) = 'REVERSEDBILLINGOPDRACHT';
|
||
|
||
FOR rec IN c4
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout bijwerken ordernummer (MLD).';
|
||
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_ordernr = rec.maand
|
||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||
|
||
v_errormsg := 'Fout bijwerken status (MLD).';
|
||
|
||
FLX.setflex('OPD', v_ts_kenmerk_key, rec.mld_opdr_key, TO_CHAR(SYSDATE, 'dd-mm-yyyy hh:mi:ss'));
|
||
|
||
-- Om tot een goede factuurmatch te komen wordt het bedrag van de opdracht toegevoegd aan het factuurschema
|
||
-- van het variabele contract.
|
||
BEGIN
|
||
SELECT cnt_factuurschema_key
|
||
INTO v_factuurschema_key
|
||
FROM cnt_factuurschema f
|
||
WHERE f.cnt_contract_key = rec.cnt_contract_key
|
||
AND f.cnt_factuurschema_boekmaand = rec.maand;
|
||
|
||
UPDATE cnt_factuurschema
|
||
SET cnt_factuurschema_bedrag = cnt_factuurschema_bedrag + rec.kosten
|
||
WHERE cnt_factuurschema_key = v_factuurschema_key;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
INSERT INTO cnt_factuurschema (cnt_contract_key, cnt_factuurschema_boekmaand, cnt_factuurschema_bedrag)
|
||
VALUES (rec.cnt_contract_key, rec.maand, rec.kosten);
|
||
END;
|
||
|
||
v_count := v_count + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-OAV1');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname, 'S', '#Variabele opdrachten bevroren: ' || TO_CHAR (v_count), '');
|
||
COMMIT;
|
||
|
||
/*
|
||
v_count := 0;
|
||
|
||
FOR rec IN c5
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout bijwerken status (inclusief opdrachten).';
|
||
|
||
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 3);
|
||
|
||
v_count := v_count + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-OAV2');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname, 'S', '#Inclusief opdrachten bevroren: ' || TO_CHAR (v_count), '');
|
||
COMMIT;
|
||
*/
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', v_errormsg, 'Proces FACT_EXPORT afgebroken!');
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
/*
|
||
CREATE OR REPLACE VIEW vbxx_v_noti_te_factureren
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey,
|
||
xemail,
|
||
xmobile
|
||
)
|
||
AS
|
||
WITH cp
|
||
AS (SELECT cp1.prs_bedrijf_key, cp1.prs_contactpersoon_email, p1.prs_perslid_email
|
||
FROM prs_v_aanwezigkenmerklink kl1, prs_contactpersoon cp1, prs_v_aanwezigperslid p1
|
||
WHERE kl1.prs_kenmerk_key = 1020 -- Contactpersoon factuurnotificatie!
|
||
AND kl1.prs_link_key = cp1.prs_contactpersoon_key
|
||
AND cp1.prs_contactpersoon_verwijder IS NULL
|
||
AND cp1.prs_perslid_key = p1.prs_perslid_key(+))
|
||
SELECT DISTINCT sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
--63681, -- Maartje Vreijling
|
||
--cp.prs_perslid_key, -- Leverancier-contactpersonen (met noti-vinkje)
|
||
NULL,
|
||
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##LEV##', v.prs_bedrijf_naam), '##MND##', v.maand),
|
||
r.fac_usrrap_key,
|
||
v.extra_key,
|
||
COALESCE (cp.prs_contactpersoon_email, cp.prs_perslid_email),
|
||
NULL
|
||
FROM kfsg_v_frozen_fact v,
|
||
cp cp,
|
||
fac_usrrap r,
|
||
fac_srtnotificatie sn
|
||
WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand!
|
||
AND v.maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
|
||
AND v.extra_key = cp.prs_bedrijf_key
|
||
AND UPPER (r.fac_usrrap_view_name) = 'KFSG_V_FROZEN_FACT'
|
||
AND sn.fac_srtnotificatie_code = 'CUST01'
|
||
UNION ALL
|
||
SELECT DISTINCT sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
--gg.prs_perslid_key, -- Schiphol-contactpersonen
|
||
NULL,
|
||
REPLACE (sn.fac_srtnotificatie_oms, '##MND##', v.maand),
|
||
r.fac_usrrap_key,
|
||
NULL, -- Geen extra_key, dus de hele rapportage!
|
||
p.prs_perslid_email,
|
||
NULL
|
||
FROM kfsg_v_frozen_fact v,
|
||
fac_gebruikersgroep gg,
|
||
prs_v_aanwezigperslid p,
|
||
fac_usrrap r,
|
||
fac_srtnotificatie sn
|
||
WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand!
|
||
AND v.maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
|
||
AND gg.fac_groep_key = 281 -- Schiphol Finance/Control
|
||
AND gg.prs_perslid_key = p.prs_perslid_key
|
||
AND UPPER (r.fac_usrrap_view_name) = 'KFSG_V_FROZEN_FACT'
|
||
AND sn.fac_srtnotificatie_code = 'CUST02';
|
||
*/
|
||
|
||
--
|
||
-- INKOOPFACTUREN RICHTING EXACT
|
||
--
|
||
CREATE OR REPLACE VIEW vbxx_v_factuur_gegevens
|
||
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)
|
||
|| DECODE (cnt_contract_versie, NULL, NULL, '.' || cnt_contract_versie))
|
||
opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_nr,
|
||
COALESCE (b_c.prs_bedrijf_key, COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
|
||
prs_bedrijf_key,
|
||
DECODE (
|
||
(SELECT prs_kenmerklink_waarde
|
||
FROM prs_kenmerklink kl, prs_kenmerk k
|
||
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'ONDERDEELVEBEGO'
|
||
AND kl.prs_link_key =
|
||
COALESCE (b_c.prs_bedrijf_key, COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))),
|
||
'1', 63,
|
||
62)
|
||
dagboek,
|
||
fr.fin_factuurregel_totaal,
|
||
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,
|
||
prs_kostensoort_oms,
|
||
k.prs_kostensoort_refcode,
|
||
k.prs_kostensoort_opmerking,
|
||
k.prs_kostensoort_key,
|
||
g.alg_gebouw_code,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk gk
|
||
WHERE alg_onrgoed_key = g.alg_gebouw_key
|
||
AND aogk.alg_kenmerk_key = gk.alg_kenmerk_key
|
||
AND gk.alg_kenmerk_code = 'EXACT_CODE')
|
||
exact_code_gebouw,
|
||
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
|
||
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND aogk.alg_onrgoed_key = COALESCE(ml.alg_district_key, cl.alg_district_key)
|
||
AND k.alg_kenmerk_code = 'AFWDAGBOEKNR')
|
||
afw_dagboek,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
|
||
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND aogk.alg_onrgoed_key = COALESCE(ml.alg_district_key, cl.alg_district_key)
|
||
AND k.alg_kenmerk_code = 'AFWKSTDRCODE')
|
||
afw_kstdrcode,
|
||
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,
|
||
COALESCE (
|
||
c_t.cnt_prs_bedrijf_key,
|
||
(SELECT a.prs_bedrijf_key
|
||
FROM prs_v_afdeling a, prs_perslid p
|
||
WHERE o_t.mld_uitvoerende_keys = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key)))) =
|
||
COALESCE (
|
||
o.mld_uitvoerende_keys,
|
||
COALESCE (
|
||
bo.prs_bedrijf_key,
|
||
COALESCE (
|
||
c.cnt_prs_bedrijf_key,
|
||
(SELECT a.prs_bedrijf_key
|
||
FROM prs_v_afdeling a, prs_perslid p
|
||
WHERE o.mld_uitvoerende_keys = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_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, Ter goedkeuring
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
fin_factuur_statuses_key,
|
||
lk.prs_kostenplaats_nr
|
||
lev_kpn,
|
||
COALESCE(ml.alg_district_key, cl.alg_district_key) alg_district_key,
|
||
DECODE (
|
||
f.cnt_contract_key,
|
||
NULL, DECODE (
|
||
f.bes_bestelopdr_key,
|
||
NULL, (SELECT fac_usrdata_code
|
||
FROM fac_usrdata ud,
|
||
mld_kenmerkopdr ko,
|
||
mld_kenmerk k,
|
||
mld_srtkenmerk sk
|
||
WHERE o.mld_opdr_key = ko.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TYPEFACTUUR'
|
||
AND FAC.safe_to_number (ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key),
|
||
'B'),
|
||
'A')
|
||
typefactuur
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
alg_locatie ml,
|
||
alg_locatie cl,
|
||
alg_gebouw g,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
( SELECT fc.fin_factuur_key, MIN (cs.cnt_alg_plaats_key) alg_gebouw_key
|
||
FROM fin_factuur fc, cnt_contract_plaats cs
|
||
WHERE fc.cnt_contract_key = cs.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'G'
|
||
AND cnt_contract_plaats_verwijder IS NULL
|
||
GROUP BY fc.fin_factuur_key
|
||
UNION ALL
|
||
SELECT fo.fin_factuur_key, og.alg_gebouw_key
|
||
FROM fin_factuur fo,
|
||
mld_opdr o1,
|
||
mld_melding m1,
|
||
alg_v_allonroerendgoed og
|
||
WHERE fo.mld_opdr_key = o1.mld_opdr_key
|
||
AND o1.mld_melding_key = m1.mld_melding_key
|
||
AND m1.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
|
||
UNION ALL
|
||
SELECT fb.fin_factuur_key, MIN (g1.alg_gebouw_key) alg_gebouw_key
|
||
FROM fin_factuur fb,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
alg_gebouw g1
|
||
WHERE fb.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
|
||
AND b.mld_adres_key_lev = g1.mld_adres_key
|
||
GROUP BY fb.fin_factuur_key) fg,
|
||
(SELECT mld_uitvoerende_key, DECODE (u.TYPE, 'B', mld_uitvoerende_key, a.prs_bedrijf_key) prs_bedrijf_key
|
||
FROM mld_v_uitvoerende u, prs_v_afdeling a, prs_perslid p
|
||
WHERE u.mld_uitvoerende_key = prs_perslid_key(+) AND p.prs_afdeling_key = a.prs_afdeling_key(+)) b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
prs_kostensoort k,
|
||
prs_kostensoortgrp kg,
|
||
prs_kostenplaats lk
|
||
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_melding_key = m.mld_melding_key(+)
|
||
AND m.mld_alg_locatie_key = ml.alg_locatie_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.mld_uitvoerende_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_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 f.fin_factuur_key = fg.fin_factuur_key(+)
|
||
AND fg.alg_gebouw_key = g.alg_gebouw_key(+)
|
||
AND g.alg_locatie_key = cl.alg_locatie_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL;
|
||
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_export_exact_xml (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT';
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_bron_export_exact_xml
|
||
(
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
factuur_nr, -- crediteur factuurnummer
|
||
datum, -- factuurdatum
|
||
crdnr, -- crediteurnummer
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
oms_regel, -- omschrijving in de detailregels
|
||
reknr, -- grootboekrekeningnr
|
||
kstplcode, -- kostenplaats kenmerk bij gebouw
|
||
kstdrcode, -- kostendrager afh van grootboek
|
||
btw_code,
|
||
dagboek,
|
||
oms_kop, -- omschrijving in de kopregel
|
||
fin_factuur_debiteur_nr, -- crediteur debiteurnummer
|
||
alg_district_key,
|
||
fin_factuur_boekmaand
|
||
)
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd')
|
||
datum,
|
||
prs_leverancier_nr crdnr,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.')
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
SUBSTR (UPPER (b.prs_bedrijf_naam), 1, 3)
|
||
|| ','
|
||
|| SUBSTR(fin_factuur_boekmaand, 6,2)
|
||
|| ','
|
||
|| opdracht_id
|
||
oms_regel,
|
||
prs_kostensoort_refcode reknr,
|
||
exact_code_gebouw kstplcode,
|
||
COALESCE(afw_kstdrcode,
|
||
CASE WHEN typefactuur = 'A' THEN '00'
|
||
WHEN typefactuur = 'B' THEN '10'
|
||
WHEN typefactuur = 'C' THEN '20'
|
||
WHEN typefactuur = 'D' THEN '30'
|
||
END ) kstdrcode,
|
||
fin_btwtabelwaarde_code
|
||
btw_code,
|
||
COALESCE(fg.afw_dagboek, fg.dagboek) dagboek,
|
||
SUBSTR(UPPER(b.prs_bedrijf_naam),1,3) || ',' ||
|
||
SUBSTR(fin_factuur_boekmaand,6,2) oms_kop,
|
||
fin_factuur_debiteur_nr,
|
||
alg_district_key,
|
||
fin_factuur_boekmaand
|
||
FROM ( SELECT g.fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
SUM (fin_factuurregel_totaal)
|
||
bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
|
||
bedrag_incl,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_opmerking,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
exact_code_gebouw,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek,
|
||
g.afw_dagboek,
|
||
g.afw_kstdrcode,
|
||
e.alg_district_key,
|
||
g.typefactuur
|
||
FROM vbxx_v_factuur_gegevens g,
|
||
vbxx_exp_factuur e
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND g.fin_factuur_key = e.fin_factuur_key
|
||
AND g.dagboek = e.dagboek
|
||
GROUP BY g.fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_opmerking,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
exact_code_gebouw,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek,
|
||
g.afw_dagboek,
|
||
g.afw_kstdrcode,
|
||
e.alg_district_key,
|
||
g.typefactuur) fg,
|
||
prs_bedrijf b
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_leverancier_nr IS NOT NULL;
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE vbxx_select_exact_xml (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_dagboek IN VARCHAR2,
|
||
p_district_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c(c_dagboek VARCHAR2)
|
||
IS
|
||
SELECT crdnr, factuur_nr, MAX(datum) datum, MAX(oms_kop) oms_kop
|
||
FROM vbxx_v_bron_export_exact_xml
|
||
WHERE c_dagboek = dagboek
|
||
AND (alg_district_key = p_district_key OR p_district_key = -1)
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM vbxx_v_bron_export_exact_xml
|
||
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
|
||
AND factuur_nr = c_factuur_nr;
|
||
|
||
v_order_count NUMBER;
|
||
v_amount_sum NUMBER(10,2);
|
||
v_amount_sum_incl NUMBER(10,2);
|
||
v_count NUMBER;
|
||
v_sub_count NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_boekstuknummer NUMBER;
|
||
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
|
||
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
|
||
--v_boekmaand DATE;
|
||
v_bijlagen_key NUMBER;
|
||
v_bijlagen_filename FAC_BIJLAGEN.FAC_BIJLAGEN_FILENAME%TYPE;
|
||
v_guid VARCHAR2(50);
|
||
v_bkstknr_kenmerk_key FIN_KENMERK.FIN_KENMERK_KEY%TYPE;
|
||
v_bijlage_kenmerk_key FIN_KENMERK.FIN_KENMERK_KEY%TYPE;
|
||
|
||
BEGIN
|
||
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
v_count := 0;
|
||
v_bestand := 'EXACT';
|
||
v_crdnr := 'Q';
|
||
v_factuur_nr := 'Q';
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
-- Bepaling boekmaand
|
||
--IF TO_NUMBER(TO_CHAR(SYSDATE, 'DD')) < 11
|
||
--THEN
|
||
-- v_boekmaand := TRUNC(ADD_MONTHS(SYSDATE,-1));
|
||
--ELSE
|
||
-- v_boekmaand := TRUNC(SYSDATE);
|
||
--END IF;
|
||
|
||
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
|
||
DELETE fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 1
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde, 3,2) = p_dagboek
|
||
AND fin_factuur_key IN (SELECT fin_factuur_key
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key <> 7)
|
||
AND VBXX.bepaal_fin_district(kf.fin_factuur_key) = p_district_key;
|
||
|
||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||
-- deze keys gebruikt kunnen worden.
|
||
DELETE vbxx_exp_factuur
|
||
WHERE dagboek = p_dagboek
|
||
AND alg_district_key = p_district_key;
|
||
|
||
INSERT INTO vbxx_exp_factuur (fin_factuur_key, dagboek, alg_district_key)
|
||
( SELECT DISTINCT fg.fin_factuur_key, fg.dagboek, p_district_key
|
||
FROM vbxx_v_factuur_gegevens fg,
|
||
prs_bedrijf b
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_leverancier_nr IS NOT NULL
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND fg.fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
|
||
AND fg.fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
|
||
AND (fg.alg_district_key = p_district_key OR p_district_key = -1) -- Multi-client heeft een district key. Bij single client is deze -1
|
||
AND dagboek = p_dagboek
|
||
);
|
||
|
||
-- wat is de key van het kenmerk boekstuknummer?
|
||
SELECT fin_kenmerk_key
|
||
INTO v_bkstknr_kenmerk_key
|
||
FROM fin_kenmerk k
|
||
WHERE k.fin_kenmerk_code = 'BOEKSTUKNUMMER';
|
||
|
||
-- wat is de key van het kenmerk bijlage?
|
||
SELECT fin_kenmerk_key
|
||
INTO v_bijlage_kenmerk_key
|
||
FROM fin_kenmerk k
|
||
WHERE k.fin_kenmerk_code = 'FACTUURBESTAND';
|
||
|
||
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar
|
||
-- ## AAIT#36589
|
||
SELECT MAX(fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = v_bkstknr_kenmerk_key
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY')
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,3,2) = p_dagboek
|
||
AND VBXX.bepaal_fin_district(kf.fin_factuur_key) = p_district_key;
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || p_dagboek || '0000');
|
||
END IF;
|
||
|
||
-- header
|
||
vbxx.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
vbxx.add_xml_row (v_bestand, '<eExact>');
|
||
vbxx.add_xml_row (v_bestand, '<GLEntries>');
|
||
|
||
FOR rec IN c(p_dagboek)
|
||
LOOP
|
||
BEGIN
|
||
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
|
||
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
|
||
THEN
|
||
v_boekstuknummer := v_boekstuknummer + 1;
|
||
v_crdnr := rec.crdnr;
|
||
v_factuur_nr := rec.factuur_nr;
|
||
END IF;
|
||
|
||
vbxx.add_xml_row (v_bestand, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
|
||
vbxx.add_xml_element (v_bestand, 'Description', rec.oms_kop);
|
||
vbxx.add_xml_element (v_bestand, 'Date', rec.datum);
|
||
vbxx.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD'));
|
||
vbxx.add_xml_row (v_bestand, '<Journal type="I" code="' || p_dagboek || '"/>');
|
||
v_sub_count := 1;
|
||
FOR rec1 IN c_sub (v_crdnr, v_factuur_nr)
|
||
LOOP
|
||
BEGIN
|
||
-- Eerst maar even een kenmerk voor het boekstuknummer aanmaken
|
||
FLX.setflex('FIN', v_bkstknr_kenmerk_key, rec1.fin_factuur_key, v_boekstuknummer);
|
||
|
||
-- De boekmaand wordt mee gegeven in de koppeling naar Exact. Maar voor de onderlegger
|
||
-- moet de boekmaand ook goed in Facilitor staan.
|
||
--UPDATE fin_factuur
|
||
-- SET fin_factuur_boekmaand = TO_CHAR(v_boekmaand, 'YYYYMM')
|
||
-- WHERE fin_factuur_key = rec1.fin_factuur_key;
|
||
|
||
vbxx.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
|
||
vbxx.add_xml_element (v_bestand, 'Date', rec1.datum);
|
||
-- Het is niet gelukt om de boekmaand mee te sturen
|
||
-- vbxx.add_xml_element (v_bestand, 'FinYear', TO_CHAR(v_boekmaand, 'YYYY') );
|
||
-- vbxx.add_xml_element (v_bestand, 'FinPeriod', TO_CHAR(v_boekmaand, 'MM') );
|
||
vbxx.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
|
||
vbxx.add_xml_element (v_bestand, 'Description', rec1.oms_regel);
|
||
vbxx.add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
|
||
vbxx.add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
|
||
vbxx.add_xml_row (v_bestand, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
vbxx.add_xml_row (v_bestand, '<Item code=""/>');
|
||
vbxx.add_xml_row (v_bestand, '<Amount>');
|
||
vbxx.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
|
||
vbxx.add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
|
||
vbxx.add_xml_row (v_bestand, '</Amount>');
|
||
vbxx.add_xml_row (v_bestand, '<Payment>');
|
||
vbxx.add_xml_element (v_bestand, 'Reference', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr );
|
||
vbxx.add_xml_element (v_bestand, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
|
||
vbxx.add_xml_row (v_bestand, '</Payment>');
|
||
vbxx.add_xml_row (v_bestand, '<FinReferences>');
|
||
vbxx.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr);
|
||
vbxx.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD'));
|
||
vbxx.add_xml_row (v_bestand, '</FinReferences>');
|
||
|
||
-- Voeg de bijlage toe
|
||
SELECT MAX(fac_bijlagen_key)
|
||
INTO v_bijlagen_key
|
||
FROM fac_v_bijlagen
|
||
WHERE fac_bijlagen_module = 'FIN'
|
||
AND fac_bijlagen_refkey = rec1.fin_factuur_key
|
||
AND fac_bijlagen_kenmerk_key = v_bijlage_kenmerk_key;
|
||
|
||
IF v_bijlagen_key IS NOT NULL
|
||
THEN
|
||
SELECT fac_bijlagen_filename
|
||
INTO v_bijlagen_filename
|
||
FROM fac_v_bijlagen
|
||
WHERE fac_bijlagen_key = v_bijlagen_key;
|
||
|
||
v_guid := sys_guid();
|
||
vbxx.add_xml_row (v_bestand, '<DocumentAttachment ID="{' || substr(v_guid,1,8) || '-' || substr(v_guid,8,4) || '-' || substr(v_guid,12,4) || '-' || substr(v_guid,16,4) || '-' || substr(v_guid,20,12) || '}" publish="0">');
|
||
vbxx.add_xml_row (v_bestand, '<DocumentType number="7"/>');
|
||
vbxx.add_xml_element (v_bestand, 'Subject', xml.char_to_html(v_boekstuknummer));
|
||
vbxx.add_xml_element (v_bestand, 'OurRef', xml.char_to_html(v_boekstuknummer));
|
||
vbxx.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr);
|
||
vbxx.add_xml_row (v_bestand, '<Account code="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
vbxx.add_xml_element (v_bestand, 'FCLTattachment', v_bijlagen_key);
|
||
vbxx.add_xml_row (v_bestand, '</DocumentAttachment>');
|
||
END IF;
|
||
|
||
vbxx.add_xml_row (v_bestand, '</FinEntryLine>');
|
||
v_sub_count := v_sub_count + 1;
|
||
v_amount_sum := v_amount_sum + rec1.bedrag;
|
||
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
|
||
END;
|
||
END LOOP;
|
||
IF v_sub_count = 1
|
||
THEN
|
||
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
|
||
END IF;
|
||
vbxx.add_xml_row (v_bestand, '</GLEntry>');
|
||
v_order_count := v_order_count + 1;
|
||
END;
|
||
END LOOP;
|
||
|
||
vbxx.add_xml_row (v_bestand, '</GLEntries>');
|
||
vbxx.add_xml_row (v_bestand, '</eExact>');
|
||
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 VIEW vbxx_v_export_verwerk_exact (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT 'Lijst met bevroren facturen:' fac_rapport_regel, 0 fac_rapport_volgnr
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'VW_EXACT';
|
||
|
||
CREATE OR REPLACE PROCEDURE vbxx_select_verwerk_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_dagboek IN VARCHAR2,
|
||
p_district_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c_fact
|
||
IS
|
||
SELECT DISTINCT f.fin_factuur_key
|
||
FROM vbxx_exp_factuur f,
|
||
vbxx_v_factuur_gegevens fg
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND f.dagboek = p_dagboek
|
||
AND (f.alg_district_key = p_district_key OR p_district_key = -1);
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanvrager NUMBER;
|
||
v_bestelling_key NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_logdate DATE;
|
||
v_volgnr NUMBER;
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
v_aanvrager := 3; -- Facilitor
|
||
v_logdate := SYSDATE;
|
||
|
||
v_bestand := 'VW_EXACT';
|
||
v_volgnr := 1;
|
||
-- Eerst opruiming
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
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);
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (v_bestand,
|
||
v_volgnr,
|
||
rec1.fin_factuur_key);
|
||
|
||
v_volgnr := v_volgnr + 1;
|
||
END;
|
||
END LOOP;
|
||
-- verwijder de enties uit de tijdelijke tabel.
|
||
DELETE vbxx_exp_factuur
|
||
WHERE dagboek = p_dagboek
|
||
AND (alg_district_key = p_district_key OR p_district_key = -1);
|
||
END;
|
||
/
|
||
|
||
--
|
||
-- Verkoopfacturen
|
||
--
|
||
CREATE OR REPLACE VIEW vbxx_v_kosten_doorbelasting
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key
|
||
meldingnummer,
|
||
m.mld_melding_key,
|
||
l.alg_locatie_omschrijving
|
||
meldinglocatie,
|
||
di.alg_district_omschrijving
|
||
district,
|
||
pf.prs_perslid_naam_full
|
||
melder,
|
||
sd.ins_srtdiscipline_omschrijving
|
||
vakgroeptype,
|
||
d.ins_discipline_omschrijving
|
||
vakgroep,
|
||
std.mld_stdmelding_omschrijving
|
||
standaardmelding,
|
||
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,
|
||
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,
|
||
ot.mld_typeopdr_key
|
||
opdrachttype_key,
|
||
tf.fac_usrdata_omschr
|
||
type_factuur,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving
|
||
opdrachtstatus,
|
||
o.mld_opdr_omschrijving
|
||
opdrachtomschrijving,
|
||
COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms)
|
||
opdracht_nen_omschrijving,
|
||
b.prs_bedrijf_naam
|
||
opdrachtuitvoerende,
|
||
o.mld_opdr_kosten
|
||
opdrachtkosten,
|
||
ok.bedrag
|
||
factuurbedrag,
|
||
VBXX.get_opslag_perc (o.mld_opdr_key)
|
||
opslag,
|
||
DECODE (nb.mld_kenmerkopdr_waarde, 1, 0, COALESCE(ok.bedrag, o.mld_opdr_kosten) * ((100 + VBXX.get_opslag_perc (o.mld_opdr_key)) / 100))
|
||
kostenplusopslag,
|
||
TO_CHAR (ADD_MONTHS (SYSDATE,
|
||
COALESCE ((SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
|
||
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
|
||
AND alg_onrgoed_key = l.alg_district_key),
|
||
0)),
|
||
'yyyymm')
|
||
boekmaand,
|
||
aog.alg_gebouw_naam
|
||
meldinggebouw,
|
||
DECODE (
|
||
(SELECT mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'FINAKKOORD'),
|
||
1, 'Ja',
|
||
'Nee')
|
||
pro_forma_goedgekeurd,
|
||
DECODE (nb.mld_kenmerkopdr_waarde, 1, 'Ja', 'Nee')
|
||
nietdoorbelasten,
|
||
o.mld_opdr_key,
|
||
l.alg_district_key,
|
||
kso.prs_kostensoort_oms
|
||
afw_opdracht_nen_omschrijving,
|
||
kso.prs_kostensoort_refcode
|
||
afw_opdracht_nen_code,
|
||
kin.mld_kenmerkopdr_waarde klantinkoopnr
|
||
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,
|
||
alg_district di,
|
||
prs_kostensoort kso,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd,
|
||
alg_v_allonrgoed_gegevens aog,
|
||
(SELECT fac_usrdata_code, fac_usrdata_omschr, mld_opdr_key
|
||
FROM mld_kenmerkopdr ko,
|
||
mld_kenmerk k,
|
||
mld_srtkenmerk sk,
|
||
fac_usrdata ud
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TYPEFACTUUR'
|
||
AND FAC.safe_to_number (ko.mld_kenmerkopdr_waarde) = fac_usrdata_key) tf,
|
||
( SELECT f.mld_opdr_key, SUM (fin_factuur_totaal) bedrag
|
||
FROM fin_factuur f
|
||
WHERE f.fin_factuur_statuses_key = 7
|
||
GROUP BY f.mld_opdr_key
|
||
UNION ALL
|
||
SELECT ko.mld_opdr_key, null bedrag
|
||
FROM mld_kenmerkopdr ko,
|
||
mld_kenmerk k,
|
||
mld_srtkenmerk sk,
|
||
mld_opdr o
|
||
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TS_REVERSEDBILLING') ok,
|
||
(SELECT mld_opdr_key, mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'NIETDOORBELASTEN') nb,
|
||
(SELECT mld_opdr_key, mld_kenmerkopdr_waarde
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'KLANTINKOOPNR') kin
|
||
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 = o.mld_melding_key
|
||
AND m.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_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(+)
|
||
AND o.mld_opdr_key = tf.mld_opdr_key
|
||
AND tf.fac_usrdata_code <> 'A'
|
||
AND o.mld_opdr_key = ok.mld_opdr_key
|
||
AND o.mld_opdr_key = nb.mld_opdr_key(+)
|
||
AND o.mld_opdr_key = kin.mld_opdr_key(+);
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_kosten_doorb_frozen
|
||
AS
|
||
SELECT fin_verkoopfactuur_omschr meldingnummer,
|
||
fin_verkoopfactuur_n4 mld_melding_key,
|
||
l.alg_locatie_omschrijving meldinglocatie,
|
||
di.alg_district_omschrijving district,
|
||
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,
|
||
COALESCE(vf.prs_kostensoort_oms, fin_verkoopfactuur_c1) 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,
|
||
mld_opdr_key,
|
||
kso.prs_kostensoort_oms afw_opdracht_nen_omschrijving,
|
||
kso.prs_kostensoort_refcode afw_opdracht_nen_code
|
||
FROM fin_verkoopfactuur vf,
|
||
prs_v_perslid_fullnames_all pf,
|
||
mld_statuses ms,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
mld_statusopdr so,
|
||
prs_bedrijf b,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
mld_melding m,
|
||
prs_kostensoort kso
|
||
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 l.alg_district_key = di.alg_district_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(+)
|
||
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
|
||
|
||
--
|
||
-- PRO_FORMA facturen
|
||
--
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_export_pro_forma (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT 'meldingnummer;' ||
|
||
'meldinglocatie;' ||
|
||
'melder;' ||
|
||
'vakgroeptype;' ||
|
||
'vaktgroep;' ||
|
||
'standaardmelding;' ||
|
||
'melding_nen_omschrijving;' ||
|
||
'melding_nen_code;' ||
|
||
'meldingstatus;' ||
|
||
'meldingdatum;' ||
|
||
'afgemeld;' ||
|
||
'onderwerp;' ||
|
||
'vomschrijving;' ||
|
||
'opdrachtnummer;' ||
|
||
'opdrachttype;' ||
|
||
'opdrachtstatus;' ||
|
||
'opdrachtomschrijving;' ||
|
||
'opdracht_nen_omschrijving;' ||
|
||
'opdrachtuitvoerende;' ||
|
||
'opdrachtkosten;' ||
|
||
'opslag;' ||
|
||
'kostenplusopslag;' ||
|
||
'boekmaand;' ||
|
||
'pro_forma_goedgekeurd;' ||
|
||
'niet_doorbelasten;' ||
|
||
'meldinggebouw;', -1, alg_district_key
|
||
FROM alg_district
|
||
UNION ALL
|
||
SELECT meldingnummer || ';' ||
|
||
meldinglocatie || ';' ||
|
||
melder || ';' ||
|
||
vakgroeptype || ';' ||
|
||
vakgroep || ';' ||
|
||
standaardmelding || ';' ||
|
||
melding_nen_omschrijving || ';' ||
|
||
melding_nen_code || ';' ||
|
||
meldingstatus || ';' ||
|
||
TO_CHAR(meldingdatum, 'DD-MM-YYYY') || ';' ||
|
||
TO_CHAR(afgemeld, 'DD-MM-YYYY') || ';' ||
|
||
'"' || REPLACE(onderwerp, '"') || '"' || ';' ||
|
||
'"' || TO_CHAR(SUBSTR(REPLACE(vomschrijving, '"'),1,300)) || '"' || ';' ||
|
||
opdrachtnummer || ';' ||
|
||
opdrachttype || ';' ||
|
||
opdrachtstatus || ';' ||
|
||
'"' || SUBSTR(REPLACE(opdrachtomschrijving, '"'),1,300) || '"' || ';' ||
|
||
opdracht_nen_omschrijving || ';' ||
|
||
opdrachtuitvoerende || ';' ||
|
||
REPLACE(opdrachtkosten, '.', ',') || ';' ||
|
||
opslag || ';' ||
|
||
REPLACE(kostenplusopslag, '.', ',') || ';' ||
|
||
boekmaand || ';' ||
|
||
pro_forma_goedgekeurd || ';' ||
|
||
nietdoorbelasten || ';' ||
|
||
meldinggebouw,
|
||
mld_melding_key,
|
||
alg_district_key
|
||
FROM vbxx_v_kosten_doorbelasting
|
||
WHERE mld_statusopdr_key = 9;
|
||
|
||
-- Procedure om pro-forma factuur klaar te zetten.
|
||
CREATE OR REPLACE PROCEDURE vbxx_select_pro_forma (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_district_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT mld_opdr_key, opdrachttype_key
|
||
FROM vbxx_v_kosten_doorbelasting
|
||
WHERE mld_statusopdr_key = 9
|
||
AND (alg_district_key = p_district_key OR p_district_key = -1);
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_boekmaand VARCHAR2 (10);
|
||
v_gvf_kenmerk_key NUMBER (10);
|
||
v_datum_pro_forma_kenmerk_key NUMBER(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, alg_kenmerk k
|
||
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key -- boekmaand offset
|
||
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
|
||
AND alg_onrgoed_key = d.alg_district_key),
|
||
0)),
|
||
'yyyymm')
|
||
INTO v_boekmaand
|
||
FROM alg_district d
|
||
WHERE alg_district_key = p_district_key;
|
||
|
||
SELECT alg_kenmerk_key
|
||
INTO v_datum_pro_forma_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_code = 'DATUMPROFORMA';
|
||
|
||
ALG.upsertkenmerk (v_datum_pro_forma_kenmerk_key, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly datum pro forma
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
SELECT mld_kenmerk_key
|
||
INTO v_gvf_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'FINAKKOORD'
|
||
AND k.mld_typeopdr_key = rec.opdrachttype_key;
|
||
|
||
-- zet de opdracht op 'Gereed voor facturatie'
|
||
FLX.setflex('OPD', rec.mld_opdr_key, v_gvf_kenmerk_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_opdr_key || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE vbxx_select_pro_forma_verwerk (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_district_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM vbxx_v_kosten_doorbelasting
|
||
WHERE mld_statusopdr_key = 9 -- Afgerond
|
||
AND pro_forma_goedgekeurd = 'Ja'
|
||
AND (alg_district_key = p_district_key OR p_district_key = -1);
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_boekmaand VARCHAR2 (10);
|
||
v_boekmaand_kenmerk_key NUMBER(10);
|
||
v_exp_proforma_kenmerk_key NUMBER(10);
|
||
|
||
BEGIN
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
-- YASK#68837 We halen de boekmaand niet meer uit het kenmerk bij het district maar we gaan deze
|
||
-- opnieuw berekenen.
|
||
SELECT TO_CHAR (
|
||
ADD_MONTHS (
|
||
SYSDATE,
|
||
COALESCE (
|
||
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
|
||
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
|
||
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET' -- 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;
|
||
|
||
FOR rec IN c
|
||
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_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)
|
||
VALUES (SYSDATE,
|
||
rec.opdrachtnummer,
|
||
SYSDATE,
|
||
rec.meldingnummer,
|
||
'opdracht',
|
||
rec.mld_opdr_key,
|
||
rec.opdracht_nen_omschrijving,
|
||
rec.opdrachtkosten,
|
||
v_boekmaand,
|
||
rec.opslag,
|
||
rec.kostenplusopslag,
|
||
rec.mld_melding_key,
|
||
rec.alg_district_key,
|
||
rec.melding_nen_omschrijving,
|
||
rec.melding_nen_code,
|
||
rec.vakgroeptype,
|
||
rec.vakgroep,
|
||
rec.standaardmelding,
|
||
rec.nietdoorbelasten
|
||
);
|
||
|
||
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, NULL); -- Verwerkt
|
||
|
||
-- We slaan bij de opdracht de boekmaand op waarop deze opdracht op de klantfactuur is geplaatst.
|
||
SELECT mld_kenmerk_key
|
||
INTO v_boekmaand_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_typeopdr_key = rec.opdrachttype_key
|
||
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'BOEKMAAND';
|
||
|
||
FLX.setflex('OPD', v_boekmaand_kenmerk_key, rec.mld_opdr_key, v_boekmaand);
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT alg_kenmerk_key
|
||
INTO v_exp_proforma_kenmerk_key
|
||
FROM alg_kenmerk k
|
||
WHERE k.alg_kenmerk_code = 'EXPROFORMA';
|
||
ALG.upsertkenmerk (v_exp_proforma_kenmerk_key, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly export datum pro forma
|
||
SELECT alg_kenmerk_key
|
||
INTO v_boekmaand_kenmerk_key
|
||
FROM alg_kenmerk k
|
||
WHERE k.alg_kenmerk_code = 'BOEKMAAND';
|
||
ALG.upsertkenmerk (v_boekmaand_kenmerk_key, p_district_key ,v_boekmaand); -- Readonly boekmaand laatste export veld.
|
||
END;
|
||
/
|
||
|
||
|
||
--
|
||
-- MAREON
|
||
--
|
||
|
||
CREATE OR REPLACE PROCEDURE vbxx_import_fin_factuur_marx (p_import_key IN NUMBER)
|
||
AS
|
||
v_seq_of_columns VARCHAR(255);
|
||
BEGIN
|
||
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28';
|
||
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE vbxx_update_fin_factuur_marx (p_import_key IN NUMBER)
|
||
AS
|
||
|
||
-- Voor Correctie ORDERNR om standaard update-procedure goed te laten lopen.
|
||
--- 0. Bug - Als uit Mareo/Scanning geen order-referentie meekomt en er zijn meerdere factuurregels, dan wordt er vanuit fac_update_factuur niet 1 maar meerdere factuurnr's aangemaakt. Oplossing: Ordernr vullen.
|
||
--- 0.1 Verzamelfactuur-indicatie (2022-maart actief): Vanuit Mareon wordt deze met een "(*)" achter de referentie meegegeven, bijvoorbeeld C5602.5(*).
|
||
--- 0.2 Orderreferentie-opschoning: Vanuit scanning komt de orderreferentie soms mee inclusief 'extra tekst'. Bijv CO284IN<49>T of CO534.7HEERLEN. Voor goede verwerking gaan we de tekst achteraan de orderreferentie weghalen.
|
||
--- Uitgezet: We willen ook bestellingen matchen
|
||
--- 3. Als ordernr is C (= contract) echter zonder versienummer - Dan wordt in standaard update altijd automatisch het hoogste versienummer gepakt.
|
||
--- Ivm overlap 'jaarovergangen' is dat niet altijd juist en moet de vanuit Mareon geimporteerde factuur nog status 'te controleren' meekrijgen voordat deze automatisch de financiele-interface in gaat.
|
||
--- 4. Ordernr beginnende met "BE" of "B" wordt niet als Bestelling herkend. Daarom gaan we deze prefix in de import-tabel weghalen.
|
||
---
|
||
--- Foutcodes: In het kenmerk FOUTCODE wordt een bitwise foutcode bijgehouden. Hieronder staat de uitleg per bitje
|
||
--- bit 0: bijlage kon niet opgeslagen worden.
|
||
--- bit 1: ontbrekende orderreferentie
|
||
--- bit 2: fout in bedrijfsherkenning
|
||
--- bit 3: overige fout uit import
|
||
--- bit 4: dubbele factuur
|
||
--- bit 5: verzamelfactuur
|
||
CURSOR ccor_0
|
||
IS
|
||
SELECT ordernr
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key
|
||
AND ordernr IS NULL
|
||
GROUP BY ordernr ;
|
||
|
||
CURSOR ccor_0_1
|
||
IS
|
||
SELECT factuurnr, ordernr
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key
|
||
AND INSTR(ordernr,'(*)') > 1
|
||
GROUP BY factuurnr, ordernr ;
|
||
|
||
CURSOR ccor_0_2
|
||
IS
|
||
SELECT factuurnr, ordernr
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key
|
||
AND REGEXP_INSTR(REVERSE(ordernr), '\d') > 1
|
||
GROUP BY factuurnr, ordernr ;
|
||
|
||
CURSOR ccor_3
|
||
IS
|
||
SELECT factuurnr, ordernr, SUBSTR(ordernr,2) cnt_contract_nummer_intern
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key
|
||
AND SUBSTR(UPPER(ordernr),1,1) = 'C'
|
||
AND INSTR(ordernr,'.')=0
|
||
GROUP BY factuurnr, ordernr ;
|
||
|
||
CURSOR ccor_4
|
||
IS
|
||
SELECT factuurnr, ordernr
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key
|
||
AND ( SUBSTR (ordernr, 1, 1) = 'B'
|
||
AND fac.safe_to_number (SUBSTR (ordernr, 2, 1)) IS NOT NULL)
|
||
OR (SUBSTR (ordernr, 1, 2) = 'BE')
|
||
GROUP BY factuurnr, ordernr ;
|
||
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.kenmerk8, i.kenmerk9, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
|
||
FROM fac_imp_factuur i, fin_factuur f
|
||
WHERE i.fin_factuur_key IS NOT NULL
|
||
AND i.fac_import_key = p_import_key
|
||
AND f.fin_factuur_key = i.fin_factuur_key
|
||
AND kenmerk1 IS NOT NULL -- Incl bijlage
|
||
;
|
||
|
||
CURSOR cfactuurregel
|
||
IS
|
||
SELECT f.fin_factuur_key, fr.fin_factuurregel_key, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
|
||
FROM fac_imp_factuur i, fin_factuurregel fr, fin_factuur f
|
||
WHERE i.fac_import_key = p_import_key
|
||
AND i.fin_factuurregel_key = fr.fin_factuurregel_key
|
||
AND fr.fin_factuur_key = f.fin_factuur_key;
|
||
|
||
|
||
v_aanduiding VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
c_kenmerk_key_bijlage NUMBER(10);
|
||
c_kenmerk_key_soort VARCHAR(1) := 'F'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand)
|
||
v_contract_versies NUMBER(10);
|
||
c_kenmerk_key_controle NUMBER(10);
|
||
c_kenmerk_key_verzamel NUMBER(10);
|
||
c_kenmerk_key_mareon_bron NUMBER(10);
|
||
c_kenmerk_key_gebouw NUMBER(10);
|
||
v_opdracht_key NUMBER(10);
|
||
v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren
|
||
v_fin_factuur_key NUMBER(10);
|
||
v_locatie_code ALG_LOCATIE.ALG_LOCATIE_CODE%TYPE;
|
||
v_gebouw_key ALG_GEBOUW.ALG_GEBOUW_KEY%TYPE;
|
||
v_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE;
|
||
v_dubbele_facturen NUMBER(10);
|
||
v_perslid_key_beh CNT_CONTRACT.PRS_PERSLID_KEY_BEH%TYPE;
|
||
v_foutcode NUMBER(10);
|
||
|
||
v_fin_factuur_boekmaand_nu VARCHAR(7); -- Ingelezen factuur in format tekst "jaar-mnd" (2022-05)
|
||
v_gebroken_boekjaar NUMBER(1) := 0 ;
|
||
v_cnt_looptijd_mnd NUMBER(10);
|
||
v_cnt_deel_betaald_1 NUMBER(10); -- Deel van contract wat reeds betaald is
|
||
v_cnt_deel_betaald_2 NUMBER(10); -- Deel van contract wat betaald is als de mareon-factuur ook verwerkt is
|
||
v_cnt_deel_betaald_tekst VARCHAR2 (200); -- Tekst voor in tijdelijke kenmerveld om te kijken of bepaling boekmaand correct is
|
||
-- v_cnt_deel_betaald NUMBER(10); -- METHODE 1: Deel van contract betaald met deze factuur
|
||
-- v_fin_factuur_boekmaand VARCHAR(7); -- METHODE 1: De nieuwe boekmaand op de geimporteerde Mareon-factuur
|
||
v_fin_factuur_boekmaand_2 VARCHAR(7); -- De nieuwe boekmaand op de geimporteerde Mareon-factuur - METHODE 2
|
||
v_fin_factuur_boekmaand_tekst VARCHAR2 (1000); -- Tekst voor in tijdelijke kenmerkveld om te kijken of bepaling boekmaand correct is
|
||
c_kenmerk_key_boekmaand NUMBER(10);
|
||
v_cnt_termijn_type VARCHAR(1);
|
||
v_cnt_termijn_aantal NUMBER(3);
|
||
v_cnt_soort VARCHAR2 (200);
|
||
v_factuur_datum_boekmaand NUMBER(10);
|
||
v_factuur_datum_boekmaand_jr NUMBER(10);
|
||
v_factuur_datum_boekmaand_prev VARCHAR(2);
|
||
v_factuur_datum_boekmaand_nu VARCHAR(2);
|
||
v_fin_factuur_boekmaand_laatst VARCHAR(7);
|
||
v_fin_factuur_boekmaand_prev VARCHAR(7);
|
||
|
||
PROCEDURE track_error (p_error_str IN VARCHAR2, p_foutcode IN NUMBER, p_factuur_key IN NUMBER, p_perslid_key IN NUMBER)
|
||
IS
|
||
v_factuur_opmerking FIN_FACTUUR.FIN_FACTUUR_OPMERKING%TYPE;
|
||
v_kenmerk_key_foutcode FIN_KENMERK.FIN_KENMERK_KEY%TYPE;
|
||
v_foutcode NUMBER(10);
|
||
v_verschil NUMBER(10);
|
||
BEGIN
|
||
fac.trackaction ('FINUPD', p_factuur_key, p_perslid_key, NULL, p_error_str);
|
||
|
||
SELECT fin_factuur_opmerking
|
||
INTO v_factuur_opmerking
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
IF v_factuur_opmerking IS NOT NULL
|
||
THEN
|
||
v_factuur_opmerking := SUBSTR(v_factuur_opmerking || CHR (13) || CHR (10) || p_error_str, 1, 250);
|
||
ELSE
|
||
v_factuur_opmerking := SUBSTR(p_error_str,1,250);
|
||
END IF;
|
||
|
||
-- nog reden vullen:
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = 3,
|
||
fin_factuur_opmerking = v_factuur_opmerking
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
SELECT fin_kenmerk_key
|
||
INTO v_kenmerk_key_foutcode
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_code = 'FOUTCODE';
|
||
|
||
v_foutcode := COALESCE(FAC.SAFE_TO_NUMBER(FLX.getflex ('FIN', v_kenmerk_key_foutcode, p_factuur_key)),0);
|
||
v_verschil := BITAND(v_foutcode, p_foutcode);
|
||
v_foutcode := v_foutcode - v_verschil;
|
||
v_foutcode := v_foutcode + p_foutcode;
|
||
|
||
FLX.setflex ('FIN', v_kenmerk_key_foutcode, p_factuur_key, v_foutcode);
|
||
|
||
END;
|
||
|
||
BEGIN
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM fac_import
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
-- Voor draaien standaard factuur-update gaan we eerst op fac_imp_factuur een aantal correcties doorvoeren
|
||
FOR rec IN ccor_0
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE fac_imp_factuur
|
||
SET ordernr = '00000' -- Geen ordernr vanuit scanning
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN ccor_0_1
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE fac_imp_factuur
|
||
SET kenmerk3 = 'verzamelfactuur'
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN ccor_0_2
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE fac_imp_factuur
|
||
SET ordernr = SUBSTR(ordernr,1,LENGTH(ordernr)-(REGEXP_INSTR(REVERSE(ordernr), '\d')-1))
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN ccor_3
|
||
LOOP
|
||
BEGIN
|
||
|
||
IF fac.safe_to_number(rec.cnt_contract_nummer_intern) IS NOT NULL THEN
|
||
|
||
SELECT count(*)
|
||
INTO v_contract_versies
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL AND cnt_contract_status = 0
|
||
AND cnt_contract_nummer_intern = rec.cnt_contract_nummer_intern ;
|
||
|
||
-- Als er meer dan 1 versie is, dan moet factuur ter controle. We gaan hiervoor een kenmerkveld vullen...
|
||
IF v_contract_versies > 1 THEN
|
||
|
||
UPDATE fac_imp_factuur
|
||
SET kenmerk2 = 'ter controle'
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN ccor_4
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE fac_imp_factuur
|
||
SET ordernr = REPLACE(ordernr,'BE','')
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
UPDATE fac_imp_factuur
|
||
SET ordernr = REPLACE(ordernr,'B','')
|
||
WHERE fac_import_key = p_import_key ;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- Nu kunnen we de standaard FCLT verwerk import facturen draaien
|
||
fac_update_factuur (p_import_key);
|
||
|
||
-- CUST: post processing voor verwerking van het PDF document
|
||
SELECT MIN (fin_kenmerk_key)
|
||
INTO c_kenmerk_key_bijlage
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_code = 'FACTUURBESTAND'
|
||
AND fin_kenmerk_verwijder IS NULL;
|
||
|
||
-- CUST: Voor verwerking Contracten die qua versienr nog gecontroleerd moeten worden het kenmerk_key ophalen
|
||
SELECT MIN (fin_kenmerk_key)
|
||
INTO c_kenmerk_key_controle
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||
AND fin_kenmerk_code = 'EXTRACONTROLE'
|
||
AND fin_kenmerk_verwijder IS NULL;
|
||
|
||
-- CUST: Voor verwerking Verzamelfactuur-indicatie het kenmerk_key ophalen
|
||
SELECT MIN (fin_kenmerk_key)
|
||
INTO c_kenmerk_key_verzamel
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||
AND fin_kenmerk_code = 'VERZAMELFACTUUR'
|
||
AND fin_kenmerk_verwijder IS NULL;
|
||
|
||
-- CUST: Voor verwerking Mareon-bron het kenmerk_key ophalen
|
||
SELECT MIN (fin_kenmerk_key)
|
||
INTO c_kenmerk_key_mareon_bron
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
|
||
AND fin_kenmerk_kenmerktype = 'C'
|
||
AND fin_kenmerk_code = 'MAREON_BRON'
|
||
AND fin_kenmerk_verwijder IS NULL;
|
||
|
||
-- CUST: Voor vullen van het gebouwkenmerk op factuurregelniveau
|
||
SELECT MIN (fin_kenmerk_key)
|
||
INTO c_kenmerk_key_gebouw
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_code = 'GEBOUW'
|
||
AND fin_kenmerk_verwijder IS NULL;
|
||
|
||
-- We gaan nu beginnen met het verder verwerken van de factuur..
|
||
FOR rec IN cfactuur
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
|
||
IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL
|
||
THEN
|
||
|
||
BEGIN
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES('IMPORT:' || TO_CHAR (p_import_key),
|
||
'flexcode',
|
||
'FIN:'
|
||
|| TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan!
|
||
|| ':' || c_kenmerk_key_bijlage || ':' -- De kenmerk key
|
||
|| c_kenmerk_key_soort -- 'F of M'
|
||
);
|
||
|
||
-- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk)
|
||
-- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet
|
||
IF c_kenmerk_key_soort = 'F'
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||
VALUES (rec.fin_factuur_key, c_kenmerk_key_bijlage, rec.kenmerk1);
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_aanduiding_controle := 'Van factuur met key ' || rec.fin_factuur_key || ' is de bestandsnaam niet bewaard (regel ' || rec.fac_imp_file_index || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding_controle,
|
||
'Factuurnr:' || rec.factuurnr || ' / Bestandsnaam: ' || rec.kenmerk1
|
||
);
|
||
|
||
track_error (v_aanduiding_controle, 1, rec.fin_factuur_key, v_perslid_key); -- bit 0
|
||
END;
|
||
|
||
COMMIT;
|
||
|
||
END IF;
|
||
|
||
-- Incomplete facturen, zonder orderreferentie, gaan we ook op controle zetten
|
||
IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL)
|
||
THEN
|
||
|
||
v_aanduiding_controle := 'ERROR: Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ;
|
||
track_error (v_aanduiding_controle, 2, rec.fin_factuur_key, v_perslid_key); -- bit 1
|
||
|
||
END IF;
|
||
|
||
-- Fout gemeldt door Mareon
|
||
|
||
IF rec.kenmerk6 = '3'
|
||
THEN
|
||
v_foutcode := 0;
|
||
IF rec.kenmerk7 LIKE '%Intern bedrijf is niet (goed) vastgesteld%'
|
||
THEN v_foutcode := POWER(2,2);
|
||
ELSE v_foutcode := POWER(2,3);
|
||
END IF;
|
||
|
||
v_aanduiding_controle := 'ERROR: ' || REPLACE(rec.kenmerk7, ' @@', CHR(13)||CHR(10));
|
||
track_error (v_aanduiding_controle, v_foutcode, rec.fin_factuur_key, v_perslid_key);
|
||
|
||
END IF;
|
||
|
||
-- Mareon_bron tonen in Facilitor bij Factuur
|
||
IF rec.kenmerk9 IS NOT NULL AND c_kenmerk_key_mareon_bron IS NOT NULL
|
||
THEN
|
||
|
||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||
VALUES (rec.fin_factuur_key, c_kenmerk_key_mareon_bron, rec.kenmerk9);
|
||
|
||
END IF;
|
||
|
||
-- Controle of er al een factuur ontvangen is met hetzelfde factuurnummer en referentie
|
||
-- 1 Afgewezen
|
||
-- 2 Ingevoerd
|
||
-- 3 Incompleet
|
||
-- 5 Ter goedkeuring
|
||
-- 6 Akkoord
|
||
-- 7 Verwerkt
|
||
|
||
IF rec.mld_opdr_key IS NOT NULL
|
||
THEN
|
||
SELECT count(*)
|
||
INTO v_dubbele_facturen
|
||
FROM mld_opdr oa, fin_factuur f
|
||
WHERE oa.mld_opdr_key = f.mld_opdr_key
|
||
AND rec.factuurnr = f.fin_factuur_nr
|
||
AND rec.mld_opdr_key = oa.mld_opdr_key
|
||
AND f.fin_factuur_statuses_key NOT IN (1)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND f.fin_factuur_key <> rec.fin_factuur_key;
|
||
END IF;
|
||
|
||
IF rec.bes_bestelopdr_key IS NOT NULL
|
||
THEN
|
||
SELECT count(*)
|
||
INTO v_dubbele_facturen
|
||
FROM bes_bestelopdr oa, fin_factuur f
|
||
WHERE oa.bes_bestelopdr_key = f.bes_bestelopdr_key
|
||
AND rec.factuurnr = f.fin_factuur_nr
|
||
AND rec.bes_bestelopdr_key = oa.bes_bestelopdr_key
|
||
AND f.fin_factuur_statuses_key NOT IN (1)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND f.fin_factuur_key <> rec.fin_factuur_key;
|
||
END IF;
|
||
|
||
IF rec.cnt_contract_key IS NOT NULL
|
||
THEN
|
||
SELECT count(*)
|
||
INTO v_dubbele_facturen
|
||
FROM cnt_contract ca, fin_factuur f
|
||
WHERE ca.cnt_contract_key = f.cnt_contract_key
|
||
AND rec.factuurnr = f.fin_factuur_nr
|
||
AND rec.cnt_contract_key = ca.cnt_contract_key
|
||
AND f.fin_factuur_statuses_key NOT IN (1)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND f.fin_factuur_key <> rec.fin_factuur_key;
|
||
|
||
-- De beheerder van het contract gaat als eerste goedkeurder ingevuld worden.
|
||
-- Tenminste als deze rechten heeft op WEB_FINGOE
|
||
SELECT MAX(prs_perslid_key_beh)
|
||
INTO v_perslid_key_beh
|
||
FROM cnt_contract c, fac_v_webgebruiker g, fac_functie f
|
||
WHERE c.prs_perslid_key_beh = g.prs_perslid_key
|
||
AND g.fac_functie_key = f.fac_functie_key
|
||
AND f.fac_functie_code = 'WEB_FINGOE'
|
||
AND cnt_contract_key = rec.cnt_contract_key;
|
||
|
||
IF v_perslid_key_beh IS NOT NULL
|
||
THEN
|
||
UPDATE fin_factuur
|
||
SET prs_perslid_key_goedkeur = v_perslid_key_beh
|
||
WHERE fin_factuur_key = rec.fin_factuur_key;
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
IF v_dubbele_facturen <> 0
|
||
THEN
|
||
v_aanduiding_controle := 'ERROR: Dubbele facturen gevonden!' ;
|
||
track_error (v_aanduiding_controle, POWER(2,4), rec.fin_factuur_key, v_perslid_key);
|
||
END IF;
|
||
|
||
-- tot slot nog nette logging
|
||
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
|
||
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding);
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
-- We gaan nu beginnen met het verder verwerken van de factuur..
|
||
FOR rec IN cfactuurregel
|
||
LOOP
|
||
BEGIN
|
||
-- vul de locatiecode in de factuurregel
|
||
IF rec.mld_opdr_key IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT l.alg_locatie_code, (SELECT MAX(alg_gebouw_key) FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = l.alg_locatie_key)
|
||
INTO v_locatie_code, v_gebouw_key
|
||
FROM mld_opdr o, mld_melding m, alg_locatie l
|
||
WHERE o.mld_opdr_key = rec.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_locatie_code := 'Onbekend';
|
||
END;
|
||
END IF;
|
||
|
||
-- vul de locatiecode in de factuurregel
|
||
IF rec.bes_bestelopdr_key IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT l.alg_locatie_code, (SELECT MAX(alg_gebouw_key) FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = l.alg_locatie_key)
|
||
INTO v_locatie_code, v_gebouw_key
|
||
FROM bes_bestelopdr o, mld_adres a, alg_locatie l
|
||
WHERE o.bes_bestelopdr_key = rec.bes_bestelopdr_key
|
||
AND o.mld_adres_key_lev = a.mld_adres_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_locatie_code := 'Onbekend';
|
||
END;
|
||
END IF;
|
||
|
||
-- vul de locatiecode in de factuurregel
|
||
IF rec.cnt_contract_key IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT alg_locatie_code, (SELECT MAX(alg_gebouw_key) FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = l.alg_locatie_key)
|
||
INTO v_locatie_code, v_gebouw_key
|
||
FROM alg_district d, alg_locatie l, fin_factuurregel fr
|
||
WHERE d.alg_district_key = l.alg_district_key
|
||
AND d.alg_regio_key IN (2, 3) -- binnenland / buitenland
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND fr.fin_factuurregel_omschrijving LIKE '%' || l.alg_locatie_code || '%'
|
||
AND fr.fin_factuurregel_key = rec.fin_factuurregel_key;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_locatie_code := 'Onbekend';
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
v_locatie_code := 'Meerdere';
|
||
END;
|
||
END IF;
|
||
|
||
UPDATE fin_factuurregel fr
|
||
SET fr.fin_factuurregel_referentie = v_locatie_code
|
||
WHERE fr.fin_factuurregel_key = rec.fin_factuurregel_key;
|
||
|
||
IF v_gebouw_key IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
|
||
fin_factuurregel_key,
|
||
fin_kenmerkfactregel_waarde)
|
||
VALUES (c_kenmerk_key_gebouw,
|
||
rec.fin_factuurregel_key,
|
||
v_gebouw_key);
|
||
END IF;
|
||
|
||
-- Zijn er regels niet goed geimporteerd? Dat kan voorkomen als bijvoorbeeld de combinatie btw tarief en verlegd
|
||
-- niet leiden tot een eenduidige Exact code
|
||
IF rec.fin_factuurregel_key IS NULL
|
||
THEN
|
||
SELECT (SELECT MAX (f.fin_factuur_key)
|
||
FROM fac_imp_factuur f
|
||
WHERE f.fac_import_key = fr.fac_import_key) factuur_key
|
||
INTO v_fin_factuur_key
|
||
FROM fac_imp_factuur fr
|
||
WHERE fr.fac_import_key = p_import_key
|
||
AND fr.fin_factuurregel_key IS NULL;
|
||
|
||
IF v_fin_factuur_key IS NOT NULL
|
||
THEN
|
||
v_aanduiding_controle := 'ERROR: Fouten in ge<67>mporteerde factuur op ' || to_char(SYSDATE, 'DD-MM-YYYY');
|
||
track_error (v_aanduiding_controle, POWER(2,5), rec.fin_factuur_key, v_perslid_key);
|
||
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
|
||
v_errormsg :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
|
||
SELECT MAX(i.fin_factuur_key) fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr
|
||
INTO v_fin_factuur_key, v_errorhint
|
||
FROM fac_imp_factuur i, fin_factuur f
|
||
WHERE i.fac_import_key = p_import_key
|
||
AND i.fin_factuur_key = f.fin_factuur_key (+)
|
||
GROUP BY i.fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr ;
|
||
|
||
IF v_fin_factuur_key IS NOT NULL
|
||
THEN
|
||
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = 3,
|
||
fin_factuur_opmerking = SUBSTR('Bij factuurimport is volgende Errormessage gemeld: ' || v_errormsg || CHR (13) || CHR (10) ||
|
||
'Actie 1: Informeren Facilitor' || CHR (13) || CHR (10) ||
|
||
'Actie 2: Factuur gewoon oppakken: Aanvullen, doorzetten, etc', 1, 250)
|
||
WHERE fin_factuur_key = v_fin_factuur_key ;
|
||
|
||
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
|
||
fac.trackaction ('FINUPD', v_fin_factuur_key, v_perslid_key, NULL, v_aanduiding);
|
||
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint || ' - ' || v_aanduiding);
|
||
COMMIT;
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
--- bit 0: bijlage kon niet opgeslagen worden.
|
||
--- bit 1: ontbrekende orderreferentie
|
||
--- bit 2: fout in bedrijfsherkenning
|
||
--- bit 3: overige fout uit import
|
||
--- bit 4: dubbele factuur
|
||
--- bit 5: verzamelfactuur
|
||
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_detail
|
||
AS
|
||
SELECT f.fin_factuur_key factuur_key,
|
||
f.fin_factuur_opmerking,
|
||
FAC.gettrackingdate ('FINNEW', f.fin_factuur_key) fin_factuur_aanmaak,
|
||
bi.foutmelding,
|
||
b.prs_bedrijf_naam
|
||
FROM fin_factuur f,
|
||
(SELECT kf.fin_factuur_key, 'bijlage kon niet opgeslagen worden' foutmelding
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 1) <> 0
|
||
UNION ALL
|
||
SELECT kf.fin_factuur_key, 'ontbrekende orderreferentie' foutmelding
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 2) <> 0
|
||
UNION ALL
|
||
SELECT kf.fin_factuur_key, 'fout in bedrijfsherkenning' foutmelding
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 4) <> 0
|
||
UNION ALL
|
||
SELECT kf.fin_factuur_key, 'overige fout uit import' foutmelding
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 8) <> 0
|
||
UNION ALL
|
||
SELECT kf.fin_factuur_key, 'dubbele factuur' foutmelding
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 16) <> 0
|
||
UNION ALL
|
||
SELECT kf.fin_factuur_key, 'verzamelfactuur' foutmelding
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 32) <> 0) bi,
|
||
(SELECT fo.fin_factuur_key, mld_uitvoerende_keys prs_bedrijf_key
|
||
FROM mld_opdr o, fin_factuur fo
|
||
WHERE fo.mld_opdr_key = o.mld_opdr_key
|
||
UNION ALL
|
||
SELECT fb.fin_factuur_key, bo.prs_bedrijf_key
|
||
FROM bes_bestelopdr bo, fin_factuur fb
|
||
WHERE fb.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
UNION ALL
|
||
SELECT fc.fin_factuur_key, c.cnt_prs_bedrijf_key
|
||
FROM cnt_contract c, fin_factuur fc
|
||
WHERE fc.cnt_contract_key = c.cnt_contract_key) fbed,
|
||
prs_bedrijf b
|
||
WHERE f.fin_factuur_key = bi.fin_factuur_key AND f.fin_factuur_key = fbed.fin_factuur_key(+)
|
||
AND fbed.prs_bedrijf_key = b.prs_bedrijf_key(+);
|
||
|
||
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_trend
|
||
AS
|
||
SELECT f.fin_factuur_key factuur_key,
|
||
FAC.gettrackingdate ('FINNEW', f.fin_factuur_key) fin_factuur_aanmaak,
|
||
waarde,
|
||
kfb.fin_kenmerkfactuur_waarde
|
||
FROM fin_factuur f,
|
||
(SELECT kf.fin_factuur_key, 1 waarde
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'FOUTCODE'
|
||
AND fin_kenmerkfactuur_waarde <> '0') kff,
|
||
(SELECT fin_factuur_key, fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur kf, fin_kenmerk k
|
||
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
|
||
AND k.fin_kenmerk_code = 'MAREON_BRON') kfb
|
||
WHERE f.fin_factuur_key = kff.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = kfb.fin_factuur_key(+)
|
||
AND fin_factuur_bron = 1;
|
||
|
||
/*
|
||
|
||
reversed billing verstuurd
|
||
begin vbxx_select_fact('FACT', sysdate); end;
|
||
|
||
|
||
*/
|
||
|
||
|
||
------ 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
|