8056 lines
333 KiB
SQL
8056 lines
333 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
|
||
DEFINE thisfile = 'YASK.SQL'
|
||
DEFINE dbuser = 'YASK'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
CREATE OR REPLACE PACKAGE YASK
|
||
AS
|
||
|
||
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
|
||
RETURN VARCHAR2;
|
||
|
||
FUNCTION bepaal_fin_district (p_fin_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 fin_set_approver (p_factuur_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);
|
||
|
||
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER);
|
||
|
||
PROCEDURE self_register_hook (p_perslid_key IN NUMBER);
|
||
|
||
PROCEDURE checkopdracht (p_opdr_key IN NUMBER);
|
||
|
||
FUNCTION altrecht_get_mld_stdmelding (p_meldingtype VARCHAR,
|
||
p_categorie VARCHAR,
|
||
p_subcategorie VARCHAR)
|
||
RETURN NUMBER;
|
||
|
||
-- Routines voor de koppeling van Altrecht met TOPdesk voor reserveringen
|
||
PROCEDURE upsert_resroom (p_locId IN VARCHAR2, p_roomName VARCHAR2, p_roomNr VARCHAR2, p_roomId IN VARCHAR2);
|
||
|
||
FUNCTION get_resroom (p_roomId IN VARCHAR2)
|
||
RETURN NUMBER;
|
||
|
||
PROCEDURE upsert_artikelkenmerk (p_artId IN VARCHAR2, p_artOpm VARCHAR2);
|
||
|
||
PROCEDURE proces_email_fivoor (pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER
|
||
);
|
||
|
||
-- Einde Altrecht
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PACKAGE BODY YASK
|
||
AS
|
||
|
||
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
|
||
v_geen_opslag NUMBER;
|
||
|
||
BEGIN
|
||
|
||
SELECT FAC.safe_to_number(ko.mld_kenmerkopdr_waarde)
|
||
INTO v_geen_opslag
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 21 -- Geen opslag
|
||
AND ko.mld_opdr_key = p_opdr_key;
|
||
|
||
RETURN v_geen_opslag;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN NULL;
|
||
END;
|
||
|
||
|
||
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
|
||
|
||
v_geen_opslag NUMBER;
|
||
v_opslag NUMBER;
|
||
v_opdr_mat NUMBER;
|
||
|
||
v_locatie_key ALG_LOCATIE.ALG_LOCATIE_KEY%TYPE;
|
||
v_srtdiscipline_key INS_SRTDISCIPLINE.INS_SRTDISCIPLINE_KEY%TYPE;
|
||
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
|
||
v_kostensoort_key PRS_KOSTENSOORT.PRS_KOSTENSOORT_KEY%TYPE;
|
||
v_bedrijf_key MLD_OPDR.MLD_UITVOERENDE_KEYS%TYPE;
|
||
v_melding_datum MLD_MELDING.MLD_MELDING_DATUM%TYPE;
|
||
|
||
BEGIN
|
||
|
||
v_geen_opslag := YASK.geen_opslag(p_opdr_key);
|
||
|
||
IF v_geen_opslag = 1 THEN
|
||
RETURN NULL;
|
||
END IF;
|
||
|
||
-- In het geval er materiaal regels aan de opdracht zitten rekenen we geen opslag.
|
||
-- De materiaal regels bevatten namelijk een prijs incl opslag.
|
||
-- 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 NULL;
|
||
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 yask_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
|
||
RETURN v_opslag;
|
||
END IF;
|
||
|
||
-- Controleer of de NEN code is ingevuld in de opslag tabel. Dan
|
||
-- geldt deze altijd.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM yask_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND prs_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
|
||
RETURN v_opslag;
|
||
END IF;
|
||
|
||
-- Controleer of de vakgroep icm vakgroeptype is ingevuld in de opslag tabel.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM yask_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND 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
|
||
RETURN v_opslag;
|
||
END IF;
|
||
|
||
-- Controleer of de vakgroeptype is ingevuld in de opslag tabel.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM yask_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND 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
|
||
RETURN v_opslag;
|
||
END IF;
|
||
|
||
-- Dan houden we nog <20><>n optie over en dat is een lege regel.
|
||
SELECT MAX(opslag)
|
||
INTO v_opslag
|
||
FROM yask_imp_opslag
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND 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
|
||
RETURN v_opslag;
|
||
END IF;
|
||
|
||
RETURN NULL;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN NULL;
|
||
END;
|
||
|
||
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
AS
|
||
|
||
v_geen_opslag NUMBER;
|
||
v_srtopslag ALG_KENMERK.ALG_KENMERK_OMSCHRIJVING%TYPE;
|
||
|
||
v_locatie_key ALG_LOCATIE.ALG_LOCATIE_KEY%TYPE;
|
||
v_srtdiscipline_key INS_SRTDISCIPLINE.INS_SRTDISCIPLINE_KEY%TYPE;
|
||
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
|
||
v_kostensoort_key PRS_KOSTENSOORT.PRS_KOSTENSOORT_KEY%TYPE;
|
||
|
||
BEGIN
|
||
|
||
v_geen_opslag := YASK.geen_opslag(p_opdr_key);
|
||
|
||
IF v_geen_opslag = 1 THEN
|
||
RETURN NULL;
|
||
END IF;
|
||
|
||
SELECT alg_kenmerk_omschrijving
|
||
INTO v_srtopslag
|
||
FROM alg_onrgoedkenmerk aogk,
|
||
alg_kenmerk ak,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND aogk.alg_kenmerk_key = ak.alg_kenmerk_key
|
||
AND aogk.alg_kenmerk_key =
|
||
DECODE (sd.ins_srtdiscipline_omschrijving, 'Projecten', 1002,
|
||
DECODE (d.ins_discipline_omschrijving, 'Schoonmaak', 1003, 1000))
|
||
AND aogk.alg_onrgoed_key = m.mld_alg_locatie_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
RETURN v_srtopslag;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN NULL;
|
||
END;
|
||
|
||
-- 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 MAX(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;
|
||
|
||
IF v_district_key IS NOT NULL
|
||
THEN
|
||
RETURN v_district_key;
|
||
END IF;
|
||
|
||
SELECT MIN (alg_district_key)
|
||
INTO v_district_key
|
||
FROM fin_factuur f,
|
||
cnt_contract_plaats cp,
|
||
alg_locatie l
|
||
WHERE f.fin_factuur_key = p_fin_key
|
||
AND f.cnt_contract_key = cp.cnt_contract_key
|
||
AND ( cp.cnt_alg_plaats_code = 'G'
|
||
AND cp.cnt_alg_plaats_key IN (SELECT alg_gebouw_key
|
||
FROM alg_gebouw g
|
||
WHERE g.alg_locatie_key = l.alg_locatie_key)
|
||
OR (cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_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 MAX(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;
|
||
|
||
IF v_gebouw_key IS NOT NULL
|
||
THEN
|
||
RETURN v_gebouw_key;
|
||
END IF;
|
||
|
||
SELECT MIN (alg_gebouw_key)
|
||
INTO v_gebouw_key
|
||
FROM fin_factuur f,
|
||
cnt_contract_plaats cp,
|
||
alg_gebouw g
|
||
WHERE f.fin_factuur_key = p_fin_key
|
||
AND f.cnt_contract_key = cp.cnt_contract_key
|
||
AND ( (cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = g.alg_gebouw_key)
|
||
OR
|
||
(cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_key = g.alg_locatie_key)
|
||
);
|
||
RETURN v_gebouw_key;
|
||
END;
|
||
|
||
-- Vul het kenmerk verkoopprijs (srtkenmerk_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_verkoop_kenmerk_key NUMBER;
|
||
|
||
BEGIN
|
||
BEGIN
|
||
-- Bepaal de key van het kenmerk verkoopprijs
|
||
SELECT mld_kenmerk_key
|
||
INTO v_verkoop_kenmerk_key
|
||
FROM mld_kenmerk k, mld_opdr o
|
||
WHERE k.mld_srtkenmerk_key = 201 -- Verkoopprijs
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND o.mld_opdr_key = p_opdr_key;
|
||
|
||
SELECT mld_opdr_kosten
|
||
INTO v_opdr_kosten
|
||
FROM mld_opdr o
|
||
WHERE mld_opdr_key = p_opdr_key;
|
||
|
||
v_opslag := YASK.bepaal_opslag(p_opdr_key);
|
||
|
||
IF v_opslag = 0
|
||
THEN
|
||
v_verkoopprijs := NULL;
|
||
ELSE
|
||
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
|
||
END IF;
|
||
MLD.upsertopdrachtkenmerk (v_verkoop_kenmerk_key, p_opdr_key, v_verkoopprijs);
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN; -- Dan heeft de opdracht geen kenmerk voor de Verkoopprijs
|
||
END;
|
||
END;
|
||
|
||
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_perslid_key_beh mld_opdr.prs_perslid_key%TYPE;
|
||
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_opdr_key mld_opdr.mld_opdr_key%TYPE;
|
||
v_contract_key cnt_contract.cnt_contract_key%TYPE;
|
||
v_bestelopdr_key bes_bestelopdr.bes_bestelopdr_key%TYPE;
|
||
v_eerste_fiatteur prs_perslid.prs_perslid_key%TYPE;
|
||
v_tweede_fiatteur prs_perslid.prs_perslid_key%TYPE;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
BEGIN
|
||
-- Contracten worden nog niet meegenomen in deze functie
|
||
IF YASK.bepaal_fin_district(p_factuur_key) = 301
|
||
THEN
|
||
-- Levanto, mag verwijderd worden YASK#76545
|
||
v_eerste_fiatteur := 5441; -- Mark Vonken
|
||
v_tweede_fiatteur := 5442; -- Pepijn Reijnders
|
||
ELSE
|
||
-- Renewi
|
||
v_eerste_fiatteur := 10581; -- Jesper van Kollenburg
|
||
v_tweede_fiatteur := 10141; -- Walter van der Wilt
|
||
END IF;
|
||
v_count := 0;
|
||
|
||
v_errorhint := 'Bepaal type factuur';
|
||
-- Laten we eens eerst kijken of we het over een contract of een opdracht hebben
|
||
SELECT mld_opdr_key, cnt_contract_key, bes_bestelopdr_key, fin_factuur_statuses_key, fin_factuur_totaal
|
||
INTO v_opdr_key, v_contract_key, v_bestelopdr_key, v_factuur_statuses_key, v_factuur_totaal
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
|
||
-- We kennen op dit moment nog geen functionaliteit voor bestelopdrachten
|
||
IF v_opdr_key IS NOT NULL OR v_contract_key IS NOT NULL
|
||
THEN
|
||
|
||
IF v_factuur_statuses_key = 2 -- ingevoerd
|
||
THEN
|
||
-- kijk of de gebouwcoordinator FINGOE rechten heeft
|
||
-- Wie is de gebouwcoordinator?
|
||
v_errorhint := 'Kijk of de gebouwcoordinator is';
|
||
SELECT prs_perslid_key_verantw, prs_perslid_naam_friendly
|
||
INTO v_perslid_key_beh, v_perslid_naam_goedkeur
|
||
FROM alg_gebouw g, prs_v_perslid_fullnames pf
|
||
WHERE g.alg_gebouw_key = YASK.bepaal_fin_gebouw(p_factuur_key)
|
||
AND prs_perslid_key_verantw = pf.prs_perslid_key;
|
||
|
||
v_errorhint := 'Kijk of de gebouwcoordinator FINGOE rechten heeft';
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_v_webgebruiker wg, fac_functie f
|
||
WHERE wg.fac_functie_key = f.fac_functie_key
|
||
AND f.fac_functie_code = 'WEB_FINGOE'
|
||
AND wg.prs_perslid_key = v_perslid_key_beh;
|
||
|
||
-- Behandelaar heeft rechten en goedkeurder was nog niet gezet.
|
||
IF v_count > 0 AND v_perslid_key_goedkeur IS NULL
|
||
THEN
|
||
-- Als status van de factuur nog ingevoerd is dan zetten we de status naar Ter goedkeuring (5)
|
||
v_errorhint := 'Zet de status naar Ter Goedkeuring';
|
||
fac.trackaction (
|
||
'FINFOK',
|
||
p_factuur_key,
|
||
3,
|
||
NULL,
|
||
'Expliciete goedkeuring door aangewezen goedkeurder: '
|
||
|| v_perslid_naam_goedkeur);
|
||
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_beh
|
||
WHERE fin_factuur_key = p_factuur_key;
|
||
END IF;
|
||
|
||
ELSIF v_factuur_statuses_key = 5 -- ter goedkeuring
|
||
THEN
|
||
NULL;
|
||
ELSIF v_factuur_statuses_key = 6 -- akkoord
|
||
THEN
|
||
v_perslid_key_goedkeur := NULL;
|
||
|
||
IF v_factuur_totaal <= 15000
|
||
THEN
|
||
-- geen goedkeuring nodig
|
||
NULL;
|
||
ELSE
|
||
-- Heeft de eerste fiatteur de factuur al goedgekeurd?
|
||
v_errorhint := 'Heeft de eerste fiatteur de factuur al goedgekeurd?';
|
||
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_eerste_fiatteur
|
||
AND t.fac_tracking_refkey = p_factuur_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- bedrag is groter dan 15000 en de eerste fiatteur heeft nog niet goedgekeurd
|
||
v_perslid_key_goedkeur := v_eerste_fiatteur;
|
||
ELSIF v_factuur_totaal > 50000
|
||
THEN
|
||
-- De eerste fiatteur heeft goedgekeurd maar het bedrag is hoger dan 50000, dus de tweede fiatteur moet ook goedkeuren
|
||
-- Heeft de tweede fiatteur de factuur al goedgekeurd?
|
||
v_errorhint := 'Bedrag is hoger dan 50000';
|
||
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_tweede_fiatteur
|
||
AND t.fac_tracking_refkey = p_factuur_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- De tweede fiatteur heeft nog niet goedgekeurd
|
||
v_perslid_key_goedkeur := v_tweede_fiatteur;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
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 sturen een notificatie naar de persoon die de factuur moet goedkeuren.
|
||
BEGIN
|
||
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;
|
||
|
||
END IF;
|
||
END IF;
|
||
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 ('YASK.fin_set_approver', 'E', v_errormsg || ' (' || p_factuur_key || ')' , v_errorhint);
|
||
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
|
||
yask.add_xml_row(p_bestand,
|
||
'<' || p_tag || '>'
|
||
|| xml.char_to_html(p_value)
|
||
|| '</' || p_tag || '>');
|
||
END;
|
||
|
||
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_niveau VARCHAR2 (1);
|
||
BEGIN
|
||
CASE p_module
|
||
WHEN 'PRS'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT prs_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM prs_kenmerk
|
||
WHERE prs_kenmerk_key = p_kenmerk_key;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = p_kenmerk_waarde
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
|
||
prs_link_key,
|
||
prs_kenmerklink_niveau,
|
||
prs_kenmerklink_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
v_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'ALG'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT alg_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_key = p_kenmerk_key;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE alg_onrgoedkenmerk
|
||
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
|
||
alg_onrgoed_key,
|
||
alg_onrgoed_niveau,
|
||
alg_onrgoedkenmerk_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
v_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'BEZ'
|
||
THEN
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE bez_kenmerkwaarde
|
||
SET bez_kenmerkwaarde_waarde = p_kenmerk_waarde
|
||
WHERE bez_bezoekers_key = p_link_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key,
|
||
bez_bezoekers_key,
|
||
bez_kenmerkwaarde_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'MLD'
|
||
THEN
|
||
-- melding- of opdrachtkenmerk?
|
||
SELECT mld_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM mld_kenmerk
|
||
WHERE mld_kenmerk_key = p_kenmerk_key;
|
||
|
||
CASE v_niveau
|
||
WHEN 'O'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE mld_kenmerkopdr
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE mld_kenmerkopdr
|
||
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||
mld_opdr_key,
|
||
mld_kenmerkopdr_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
WHEN 'S'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE mld_kenmerkmelding
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE mld_kenmerkmelding
|
||
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
|
||
mld_melding_key,
|
||
mld_kenmerkmelding_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END CASE;
|
||
|
||
WHEN 'FIN'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT fin_kenmerk_type
|
||
INTO v_niveau
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_key = p_kenmerk_key;
|
||
|
||
|
||
IF v_niveau = 'F'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactuur
|
||
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
|
||
fin_factuur_key,
|
||
fin_kenmerkfactuur_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- Kenmerk bij factuurregel
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactregel
|
||
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
|
||
fin_factuurregel_key,
|
||
fin_kenmerkfactregel_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
WHEN 'RES'
|
||
THEN
|
||
-- res_rsv_ruimte kenmerk
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE res_kenmerkwaarde
|
||
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END CASE;
|
||
END;
|
||
|
||
PROCEDURE self_register_hook (p_perslid_key IN NUMBER)
|
||
AS
|
||
v_ruimte_key NUMBER;
|
||
v_afdeling_key NUMBER;
|
||
v_groep_key NUMBER;
|
||
v_perslid_email PRS_PERSLID.PRS_PERSLID_EMAIL%TYPE;
|
||
|
||
BEGIN
|
||
|
||
SELECT MAX (kl.prs_link_key), MAX(FLX.getflex('PRS', 1140, p.prs_afdeling_key, 'A'))
|
||
INTO v_afdeling_key, v_groep_key
|
||
FROM prs_perslid p, prs_kenmerklink kl
|
||
WHERE kl.prs_kenmerk_key = 1041 -- Domein
|
||
AND kl.prs_kenmerklink_verwijder IS NULL
|
||
AND LOWER(kl.prs_kenmerklink_waarde) =
|
||
SUBSTR (LOWER(p.prs_perslid_email),
|
||
INSTR (LOWER(p.prs_perslid_email), '@') + 1,
|
||
100)
|
||
AND p.prs_perslid_key = p_perslid_key;
|
||
|
||
-- Als we de afdeling niet kennen dan blijft de persoon onder onbekend.
|
||
IF v_afdeling_key IS NOT NULL
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_afdeling_key = v_afdeling_key
|
||
WHERE prs_perslid_key = p_perslid_key;
|
||
END IF;
|
||
|
||
-- zoek de juiste werkplek voor deze persoon. Bij de afdeling staat in een kenmerk ook de ruimteaanduiding.
|
||
SELECT MAX (rg.alg_ruimte_key)
|
||
INTO v_ruimte_key
|
||
FROM prs_perslid p, prs_kenmerklink kld, prs_kenmerklink klr, alg_v_ruimte_gegevens rg
|
||
WHERE kld.prs_kenmerk_key = 1041 -- Domein
|
||
AND kld.prs_kenmerklink_verwijder IS NULL
|
||
AND LOWER(kld.prs_kenmerklink_waarde) =
|
||
SUBSTR (LOWER(p.prs_perslid_email),
|
||
INSTR (LOWER(p.prs_perslid_email), '@') + 1,
|
||
100)
|
||
AND kld.prs_link_key = klr.prs_link_key
|
||
AND klr.prs_kenmerk_key = 1060 -- Locatiecode-Ruimtenummer
|
||
AND klr.prs_kenmerklink_verwijder IS NULL
|
||
AND LOWER(klr.prs_kenmerklink_waarde) =
|
||
LOWER(rg.alg_locatie_code) || '-' || LOWER(rg.alg_ruimte_nr)
|
||
AND p.prs_perslid_key = p_perslid_key;
|
||
|
||
prs.movetoruimte (p_perslid_key, v_ruimte_key, 'A');
|
||
|
||
-- Als de persoon al in deze autorisatiegroep aanwezig is hoeven we dit niet meer aan te passen.
|
||
-- Dit betekent dat we alleen de eerste keer dit checken. Wat waarschijnlijk ook al afgedekt wordt omdat
|
||
-- dit in de self registratie hook staat die niet vaker aangeroepen wordt.
|
||
IF v_groep_key IS NOT NULL
|
||
THEN
|
||
DELETE fac_gebruikersgroep WHERE prs_perslid_key = p_perslid_key;
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
VALUES (v_groep_key, p_perslid_key);
|
||
END IF;
|
||
|
||
END;
|
||
|
||
PROCEDURE checkopdracht (p_opdr_key IN NUMBER)
|
||
AS
|
||
v_kenmerk_key MLD_KENMERK.MLD_KENMERK_KEY%TYPE;
|
||
v_typeopdr_code MLD_TYPEOPDR.MLD_TYPEOPDR_CODE%TYPE;
|
||
v_typeopdr_key MLD_TYPEOPDR.MLD_TYPEOPDR_KEY%TYPE;
|
||
v_statusopdr_key MLD_OPDR.MLD_STATUSOPDR_KEY%TYPE;
|
||
v_melding_key MLD_OPDR.MLD_MELDING_KEY%TYPE;
|
||
v_kostensoort_key MLD_OPDR.PRS_KOSTENSOORT_KEY%TYPE;
|
||
v_kostensoort_key_new MLD_OPDR.PRS_KOSTENSOORT_KEY%TYPE;
|
||
v_srtdiscipline_prefix INS_SRTDISCIPLINE.INS_SRTDISCIPLINE_PREFIX%TYPE;
|
||
v_kostensoort_oms PRS_KOSTENSOORT.PRS_KOSTENSOORT_OMS%TYPE;
|
||
v_kostensoort_oms_new PRS_KOSTENSOORT.PRS_KOSTENSOORT_OMS%TYPE;
|
||
v_kostensoort_opm PRS_KOSTENSOORT.PRS_KOSTENSOORT_OPMERKING%TYPE;
|
||
v_kostensoort_opm_new PRS_KOSTENSOORT.PRS_KOSTENSOORT_OPMERKING%TYPE;
|
||
v_opdr_bedrijfopdr_volgnr MLD_OPDR.MLD_OPDR_BEDRIJFOPDR_VOLGNR%TYPE;
|
||
v_action FAC_TRACKING.FAC_TRACKING_OMS%TYPE;
|
||
v_kosten NUMBER;
|
||
v_verkoopprijs NUMBER;
|
||
v_klantoffertelimiet NUMBER;
|
||
v_regio_key ALG_REGIO.ALG_REGIO_KEY%TYPE;
|
||
v_inkoopnummer_opdracht VARCHAR2(100);
|
||
v_inkoopnummer_melding VARCHAR2(100);
|
||
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Functionaliteit tbv de contractmutaties.
|
||
-- We moeten nog kijken of dit een generieke functie moet worden.
|
||
-- Het bepalen van het opslagpercentage en de verkoopprijs moet na deze functie uitgevoerd worden.
|
||
|
||
-- Even wat algemene gegevens ophalen
|
||
SELECT ot.mld_typeopdr_code, ot.mld_typeopdr_key, o.mld_statusopdr_key, o.mld_melding_key, d.alg_regio_key, o.prs_kostensoort_key, ks.prs_kostensoort_oms, ks.prs_kostensoort_opmerking, sd.ins_srtdiscipline_prefix, o.mld_opdr_bedrijfopdr_volgnr
|
||
INTO v_typeopdr_code, v_typeopdr_key, v_statusopdr_key, v_melding_key, v_regio_key, v_kostensoort_key, v_kostensoort_oms, v_kostensoort_opm, v_srtdiscipline_prefix, v_opdr_bedrijfopdr_volgnr
|
||
FROM mld_opdr o, mld_typeopdr ot, mld_melding m, mld_stdmelding std, mld_discipline d, ins_srtdiscipline sd, prs_kostensoort ks, alg_locatie l, alg_district d
|
||
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND o.mld_opdr_key = p_opdr_key
|
||
AND o.mld_melding_key = m.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 o.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key (+)
|
||
AND l.alg_district_key = d.alg_district_key(+);
|
||
|
||
-- Bij de subcategorie wordt de NEN code ingevuld (aspect fac_usrdata_omschr2 in eigen tabel)
|
||
|
||
-- Is er een subcategorie ingevuld
|
||
v_errorhint := 'Op zoek naar de subcategorie';
|
||
BEGIN
|
||
SELECT prs_kostensoort_key, prs_kostensoort_oms, prs_kostensoort_opmerking
|
||
INTO v_kostensoort_key_new, v_kostensoort_oms_new, v_kostensoort_opm_new
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud, prs_kostensoort ks
|
||
WHERE ko.mld_opdr_key = p_opdr_key
|
||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_code = 'RABO_SUBCAT'
|
||
AND FAC.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrdata_omschr2 = ks.prs_kostensoort_upper
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
|
||
IF COALESCE(v_kostensoort_key_new, -1) <> COALESCE(v_kostensoort_key, -1) AND v_kostensoort_key_new IS NOT NULL
|
||
THEN
|
||
IF v_kostensoort_oms IS NOT NULL THEN
|
||
v_kostensoort_oms := v_kostensoort_oms || '-' || v_kostensoort_opm;
|
||
END IF;
|
||
v_kostensoort_oms_new := v_kostensoort_oms_new || '-' || v_kostensoort_opm_new;
|
||
v_action := 'Opdracht ' || v_srtdiscipline_prefix || v_melding_key || '/' || v_opdr_bedrijfopdr_volgnr || ' is gewijzigd.' || CHR(10)
|
||
|| 'Afwijkende kostensoort: ' || COALESCE(v_kostensoort_oms, '(leeg)') || ' --> ' || v_kostensoort_oms_new;
|
||
fac.trackaction('ORDUPD', p_opdr_key, NULL, NULL, v_action);
|
||
|
||
UPDATE mld_opdr
|
||
SET prs_kostensoort_key = v_kostensoort_key_new
|
||
WHERE mld_opdr_key = p_opdr_key;
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL;
|
||
-- Als het kenmerk niet bestaat of niet gevuld is hoeven we niets te doen.
|
||
END;
|
||
|
||
|
||
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.writelog ('YASK.checkopdracht', 'E', SUBSTR (v_errormsg, 1, 1000), v_errorhint || ' - opdracht_key:' || p_opdr_key);
|
||
END;
|
||
|
||
FUNCTION altrecht_get_mld_stdmelding (p_meldingtype VARCHAR,
|
||
p_categorie VARCHAR,
|
||
p_subcategorie VARCHAR)
|
||
RETURN NUMBER
|
||
AS
|
||
v_usrtab_key NUMBER;
|
||
v_stdmelding_key NUMBER;
|
||
BEGIN
|
||
v_usrtab_key := -1;
|
||
v_stdmelding_key := -1;
|
||
|
||
CASE UPPER (p_meldingtype)
|
||
WHEN 'KLACHT'
|
||
THEN
|
||
v_usrtab_key := 81;
|
||
WHEN 'STORING'
|
||
THEN
|
||
v_usrtab_key := 101;
|
||
WHEN 'AANVRAAG'
|
||
THEN
|
||
v_usrtab_key := 102;
|
||
ELSE
|
||
v_usrtab_key := -1;
|
||
END CASE;
|
||
|
||
IF v_usrtab_key <> -1
|
||
THEN
|
||
BEGIN
|
||
SELECT fac_usrdata_prijs
|
||
INTO v_stdmelding_key
|
||
FROM fac_usrdata ud
|
||
WHERE fac_usrtab_key = v_usrtab_key
|
||
AND SUBSTR(UPPER(fac_usrdata_omschr2),1,40) = UPPER (SUBSTR(p_subcategorie, 1,40))
|
||
AND UPPER (fac_usrdata_omschr) = UPPER (p_categorie);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_stdmelding_key := -1;
|
||
END;
|
||
END IF;
|
||
|
||
RETURN v_stdmelding_key;
|
||
END;
|
||
|
||
-- Routines voor de koppeling van Altrecht met TOPdesk voor reserveringen
|
||
PROCEDURE upsert_resroom (p_locId IN VARCHAR2, p_roomName VARCHAR2, p_roomNr VARCHAR2, p_roomId IN VARCHAR2)
|
||
AS
|
||
v_res_ruimte_key NUMBER;
|
||
v_ruimte_key NUMBER;
|
||
v_verdieping_key NUMBER;
|
||
v_gebouw_key NUMBER;
|
||
v_ruimte_opstel_key NUMBER;
|
||
v_gebouw_prefix VARCHAR2(1);
|
||
BEGIN
|
||
|
||
-- Zoek het gebouw waaronder we een vergaderzaal gaan toevoegen.
|
||
BEGIN
|
||
SELECT g.alg_gebouw_key, v.alg_verdieping_key, SUBSTR(alg_gebouw_naam, 1,1)
|
||
INTO v_gebouw_key, v_verdieping_key, v_gebouw_prefix
|
||
FROM alg_gebouw g, alg_verdieping v
|
||
WHERE g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_code = '0'
|
||
AND alg_gebouw_externnr = p_locId;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN;
|
||
-- geen gebouw gevonden dat meedoet in de sync
|
||
END;
|
||
|
||
-- En nu kijken we of de reserveerbare zaal al bestaat.
|
||
BEGIN
|
||
SELECT res_ruimte_opstel_key, rr.res_ruimte_key
|
||
INTO v_ruimte_opstel_key, v_res_ruimte_key
|
||
FROM res_ruimte rr, res_ruimte_opstelling rro
|
||
WHERE rr.res_ruimte_key = rro.res_ruimte_key
|
||
AND rro.res_opstelling_key = 11 -- standaard
|
||
AND res_ruimte_extern_id = p_roomId;
|
||
|
||
-- We kennen de reserveerbare zaal al. Dan gaan we de omschrijving updaten
|
||
-- want misschien is deze gewijzigd.
|
||
UPDATE res_ruimte
|
||
SET res_ruimte_nr = SUBSTR(v_gebouw_prefix || '-' || p_roomName,1,40),
|
||
res_ruimte_begintijd = 1,
|
||
res_ruimte_eindtijd = 23
|
||
WHERE res_ruimte_key = v_res_ruimte_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
BEGIN
|
||
SELECT g.alg_gebouw_key, v.alg_verdieping_key
|
||
INTO v_gebouw_key, v_verdieping_key
|
||
FROM alg_gebouw g, alg_verdieping v
|
||
WHERE g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_code = '0'
|
||
AND alg_gebouw_externnr = p_locId;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL;
|
||
return;
|
||
-- geen gebouw gevonden dat meedoet in de sync
|
||
END;
|
||
dbms_output.put_line('before alg_ruimte');
|
||
BEGIN
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte r
|
||
WHERE r.alg_verdieping_key = v_verdieping_key
|
||
AND r.alg_ruimte_nr = SUBSTR(p_roomNr,1,20);
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
dbms_output.put_line('before insert alg_ruimte' || v_verdieping_key || '-' || p_roomNr || '-' || p_roomName);
|
||
INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_ruimte_omschrijving, alg_srtruimte_key)
|
||
VALUES(v_verdieping_key, SUBSTR(p_roomNr,1,20), SUBSTR(p_roomName,1,30), 12) -- onbekend
|
||
RETURNING alg_ruimte_key INTO v_ruimte_key;
|
||
END;
|
||
dbms_output.put_line('before res_ruimte');
|
||
-- AltrechtRuimten = 981
|
||
INSERT INTO res_ruimte (res_discipline_key,
|
||
res_ruimte_nr,
|
||
res_ruimte_omschrijving,
|
||
res_ruimte_extern_id,
|
||
res_ruimte_begintijd,
|
||
res_ruimte_eindtijd)
|
||
VALUES (981,
|
||
SUBSTR(v_gebouw_prefix || '-' || p_roomName,1,40),
|
||
null,
|
||
p_roomId,
|
||
1,
|
||
23)
|
||
RETURNING res_ruimte_key INTO v_res_ruimte_key;
|
||
dbms_output.put_line('before res_alg_ruimte' || v_res_ruimte_key || '-' || v_ruimte_key);
|
||
INSERT INTO res_alg_ruimte (res_ruimte_key, alg_ruimte_key)
|
||
VALUES (v_res_ruimte_key, v_ruimte_key);
|
||
dbms_output.put_line('before res_ruimte_opstelling');
|
||
INSERT INTO res_ruimte_opstelling (res_ruimte_key, res_opstelling_key, res_ruimte_opstel_default, res_ruimte_opstel_bezoekers)
|
||
VALUES (v_res_ruimte_key, 11, 1, 100)
|
||
RETURNING res_ruimte_opstel_key INTO v_ruimte_opstel_key;
|
||
END;
|
||
END;
|
||
|
||
|
||
FUNCTION get_resroom (p_roomId IN VARCHAR2)
|
||
RETURN NUMBER
|
||
AS
|
||
v_ruimte_opstel_key NUMBER;
|
||
BEGIN
|
||
BEGIN
|
||
SELECT rr.res_ruimte_key
|
||
INTO v_ruimte_opstel_key
|
||
FROM res_ruimte rr, res_ruimte_opstelling rro
|
||
WHERE rr.res_ruimte_key = rro.res_ruimte_key
|
||
AND rro.res_opstelling_key = 11 -- standaard
|
||
AND res_ruimte_extern_id = p_roomId;
|
||
RETURN v_ruimte_opstel_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN NULL;
|
||
END;
|
||
END;
|
||
|
||
PROCEDURE upsert_artikelkenmerk (p_artId IN VARCHAR2, p_artOpm VARCHAR2)
|
||
AS
|
||
v_artikel_key RES_ARTIKEL.RES_ARTIKEL_KEY%TYPE;
|
||
v_rsv_artikel_key RES_RSV_ARTIKEL.RES_RSV_ARTIKEL_KEY%TYPE;
|
||
v_srtkenmerk_key RES_SRTKENMERK.RES_SRTKENMERK_KEY%TYPE;
|
||
v_kenmerk_key RES_KENMERK.RES_KENMERK_KEY%TYPE;
|
||
v_kenmerkartikel_key RES_KENMERKARTIKEL.RES_KENMERKARTIKEL_KEY%TYPE;
|
||
BEGIN
|
||
|
||
-- Zoek het artikel op adhv de externe id
|
||
SELECT res_artikel_key, res_rsv_artikel_key
|
||
INTO v_artikel_key, v_rsv_artikel_key
|
||
FROM res_rsv_artikel
|
||
WHERE res_rsv_artikel_externnr = p_artId;
|
||
|
||
SELECT res_srtkenmerk_key
|
||
INTO v_srtkenmerk_key
|
||
FROM res_srtkenmerk
|
||
WHERE res_srtkenmerk_code = 'ARTIKELOPM';
|
||
-- Zoek het kenmerk op dat bij dit artikel hoort.
|
||
BEGIN
|
||
SELECT res_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = v_srtkenmerk_key
|
||
AND k.res_artikel_key = v_artikel_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
INSERT INTO res_kenmerk (res_srtkenmerk_key, res_artikel_key, res_kenmerk_niveau, res_kenmerk_volgnummer)
|
||
VALUES (v_srtkenmerk_key, v_artikel_key, 'C', 100)
|
||
RETURNING res_kenmerk_key INTO v_kenmerk_key;
|
||
END;
|
||
|
||
BEGIN
|
||
SELECT res_kenmerkartikel_key
|
||
INTO v_kenmerkartikel_key
|
||
FROM res_kenmerkartikel
|
||
WHERE res_rsv_artikel_key = v_rsv_artikel_key
|
||
AND res_kenmerk_key = v_kenmerk_key;
|
||
|
||
UPDATE res_kenmerkartikel
|
||
SET res_kenmerkartikel_waarde = p_artOpm
|
||
WHERE res_kenmerkartikel_key = v_kenmerkartikel_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
INSERT INTO res_kenmerkartikel(res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_waarde)
|
||
VALUES (v_rsv_artikel_key, v_kenmerk_key, p_artOpm);
|
||
END;
|
||
EXCEPTION WHEN OTHERS THEN
|
||
fac.writelog ('YASK.upsert_artikelkenmerk', 'W', 'Kan opmerking niet toevoegen aan artikel (' || p_artId || ')' || p_artOpm , '');
|
||
END;
|
||
|
||
PROCEDURE proces_email_fivoor (pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER
|
||
)
|
||
AS
|
||
sender prs_perslid.prs_perslid_key%TYPE;
|
||
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
|
||
newkey mld_melding.mld_melding_key%TYPE;
|
||
defaultstdmelding fac_setting.fac_setting_default%TYPE;
|
||
kkey_att mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
kkey_mail mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
errormsg fac_result.fac_result_waarde%TYPE;
|
||
status_key mld_melding.mld_melding_status%TYPE;
|
||
externnr mld_melding.mld_melding_externnr%TYPE;
|
||
gebouw_code alg_gebouw.alg_gebouw_code%TYPE;
|
||
gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
|
||
locatie_key alg_locatie.alg_locatie_key%TYPE;
|
||
onderwerp mld_melding.mld_melding_onderwerp%TYPE;
|
||
k_locatiegeg mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
|
||
k_plaatsruimte mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
|
||
omschrijving mld_melding.mld_melding_omschrijving%TYPE;
|
||
|
||
FUNCTION findstr (p_body IN VARCHAR2, p_begin IN VARCHAR2, p_eind IN VARCHAR2)
|
||
RETURN VARCHAR2
|
||
AS
|
||
BEGIN
|
||
RETURN SUBSTR (
|
||
p_body,
|
||
INSTR (p_body, p_begin) + LENGTH (p_begin),
|
||
INSTR (p_body, p_eind, INSTR (p_body, p_begin) + LENGTH (p_begin))
|
||
- (INSTR (p_body, p_begin) + LENGTH (p_begin)));
|
||
END;
|
||
|
||
BEGIN
|
||
DELETE fac_rapport WHERE fac_rapport_node = 'PROCESEMAIL';
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel)
|
||
VALUES ('PROCESEMAIL', SUBSTR(pbody, 1, 2000));
|
||
|
||
defaultstdmelding := 441;
|
||
kkey_att := 41;
|
||
kkey_mail := 261;
|
||
sender := 26721; -- M2M user Fivoor
|
||
status_key := 2; -- voor feedback komt de status op FO te staan omdat de FrontOffice hier eerst naar gaat kijken.
|
||
|
||
externnr := findstr(pbody, 'Fivoor' || CHR(10), CHR(10));
|
||
gebouw_code := findstr(pbody, 'Korte omschrijving' || CHR(10), '|');
|
||
onderwerp := findstr(pbody, 'Korte omschrijving' || CHR(10), CHR(10));
|
||
k_locatiegeg := findstr(pbody, 'Ruimte / middel' || CHR(10), CHR(10) || CHR(10));
|
||
k_plaatsruimte := findstr(pbody, 'Exacte plaats/ruimte' || CHR(10), CHR(10));
|
||
omschrijving := findstr(pbody, 'Omschrijving van de melding' || CHR(10), CHR(10) || CHR(10) || 'Voor vragen');
|
||
|
||
SELECT alg_gebouw_key, alg_locatie_key
|
||
INTO gebouw_key, locatie_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND alg_gebouw_code = gebouw_code;
|
||
|
||
IF defaultstdmelding IS NOT NULL
|
||
THEN
|
||
-- suggested extensions:
|
||
-- check for MLDUSE-write autorisations
|
||
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
||
-- append (as a note?) to an existing melding if #key is found in the subject
|
||
BEGIN
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_melding_datum,
|
||
mld_melding_onderwerp,
|
||
mld_melding_omschrijving,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_status,
|
||
mld_stdmelding_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
prs_kostenplaats_key,
|
||
mld_melding_spoed,
|
||
mld_melding_externnr)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
SYSDATE,
|
||
SUBSTR (onderwerp, 1, 80),
|
||
SUBSTR (omschrijving, 1, 4000),
|
||
locatie_key,
|
||
gebouw_key,
|
||
NULL,
|
||
defaultstdmelding,
|
||
sender,
|
||
sender,
|
||
NULL,
|
||
3,
|
||
externnr)
|
||
RETURNING mld_melding_key
|
||
INTO newkey;
|
||
|
||
FLX.setflex ('MLD', 301, newkey, SUBSTR(k_locatiegeg, 1, 100));
|
||
FLX.setflex ('MLD', 221, newkey, SUBSTR(k_plaatsruimte, 1, 300));
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'kenmerkpath',
|
||
'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_att || CHR(92)); -- CHR(92) = \
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'kenmerkorgmailpath',
|
||
'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_mail || CHR(92));
|
||
|
||
mld.setmeldingstatus (newkey, status_key, sender);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'maillog',
|
||
'Geregistreerd onder melding ' || newkey);
|
||
END;
|
||
END IF;
|
||
|
||
IF errormsg IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', errormsg);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.writelog (
|
||
'PROCESSEMAIL',
|
||
'W',
|
||
'Mail kon niet verwerkt worden afzender: '
|
||
|| pfrom
|
||
|| '['
|
||
|| errormsg
|
||
|| ']',
|
||
'OTHERS (error '
|
||
|| SQLCODE
|
||
|| '/'
|
||
|| SUBSTR (SQLERRM, 1, 100)
|
||
|| ')');
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'errormsg',
|
||
'Database fout - Neem contact op met uw systeembeheerder');
|
||
END;
|
||
|
||
-- Einde Altrecht routines
|
||
END;
|
||
/
|
||
|
||
-- Notificatiejob om bezoekers van powerpacker een welkomsmail te sturen.
|
||
CREATE OR REPLACE VIEW yask_v_noti_pp_noti_bezoekers
|
||
AS
|
||
SELECT NULL sender,
|
||
NULL receiver,
|
||
'Welcome to PowerPacker' text,
|
||
'CUST02' code,
|
||
b.bez_bezoekers_key key,
|
||
NULL xkey,
|
||
bez_bezoekers_email xemail,
|
||
NULL xmobile,
|
||
LISTAGG (bijl.bijlage, '|')
|
||
WITHIN GROUP (ORDER BY bijl.bijlage) AS attachments
|
||
FROM bez_bezoekers b,
|
||
bez_afspraak a,
|
||
alg_locatie l,
|
||
(SELECT af.bez_afspraak_key, fac_bijlagen_key bijlage
|
||
FROM fac_v_bijlagen bij, bez_afspraak af
|
||
WHERE fac_bijlagen_module = 'ALG'
|
||
AND af.alg_locatie_key = bij.fac_bijlagen_refkey
|
||
AND ( (af.bez_actie_key = 1 AND bij.fac_bijlagen_kenmerk_key = 1141)
|
||
OR (af.bez_actie_key = 2 AND bij.fac_bijlagen_kenmerk_key = 1142)
|
||
OR (af.bez_actie_key = 3 AND bij.fac_bijlagen_kenmerk_key = 1140)
|
||
)) bijl,
|
||
(SELECT fac_notificatie_job_nextrun nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE fac_notificatie_job_view = 'YASK_V_NOTI_PP_NOTI_BEZOEKERS') n
|
||
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND a.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = 102 -- PowerPacker
|
||
AND a.bez_afspraak_key = bijl.bez_afspraak_key(+)
|
||
AND ( ( TRUNC(FAC.datumtijdplusuitvoertijd (SYSDATE, 2, 'D')) = TRUNC(bez_afspraak_datum)
|
||
AND TO_CHAR(SYSDATE, 'D') NOT IN (1,7) -- 1 zondag, 7 zaterdag
|
||
AND TRUNC(SYSDATE) NOT IN (SELECT mld_vrije_dagen_datum FROM mld_vrije_dagen)
|
||
AND TO_CHAR (nextrun, 'HH24:MI') = '16:00' -- we gaan om 16:00 uur de normale notificatie versturen
|
||
)
|
||
OR ( TRUNC(FAC.datumtijdplusuitvoertijd (SYSDATE, 2, 'D')) > TRUNC(bez_afspraak_datum)
|
||
AND b.bez_bezoekers_aanmaak > nextrun - 1/24
|
||
AND b.bez_bezoekers_aanmaak < nextrun -- De bezoekers die binnen 2 dagen aangemaakt worden krijgen direct een mail
|
||
)
|
||
)
|
||
GROUP BY alg_onrgoed_keys, a.bez_afspraak_key, b.bez_bezoekers_key, bez_bezoekers_email;
|
||
|
||
|
||
-- Rapport voor het doorbelasten van de kosten. Hier wordt ook een opslagperscentage in meegenomen.
|
||
-- Als het een project betreft is de vakgroep omschrijving Projecten
|
||
-- Als het om schoonmaak gaat heet de vakgroep Schoonmaak
|
||
-- En anders is het materiaal of subcontrating. Maar deze hebben hetzelfde tarief.
|
||
-- De tarieven staan bij de locatie vermeld in flexvelden.
|
||
CREATE OR REPLACE VIEW yask_v_kosten_doorbelasting
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
|
||
m.mld_melding_key,
|
||
l.alg_locatie_omschrijving meldinglocatie,
|
||
di.alg_district_omschrijving district,
|
||
pf.prs_perslid_naam_full melder,
|
||
sd.ins_srtdiscipline_omschrijving soortmelding,
|
||
d.ins_discipline_omschrijving productgroep,
|
||
std.mld_stdmelding_omschrijving subproductgroep,
|
||
ksm.prs_kostensoort_oms melding_nen_omschrijving,
|
||
ksm.prs_kostensoort_refcode melding_nen_code,
|
||
CASE
|
||
WHEN m.mld_melding_status = 5 AND m.mld_melding_afgerond = 1
|
||
THEN
|
||
'Afgerond'
|
||
ELSE
|
||
ms.mld_statuses_omschrijving
|
||
END
|
||
meldingstatus,
|
||
fs.fac_usrdata_omschr facturatiestatus,
|
||
m.mld_melding_datum meldingdatum,
|
||
MLD.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld,
|
||
m.mld_melding_onderwerp onderwerp,
|
||
m.mld_melding_omschrijving vomschrijving,
|
||
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer,
|
||
ot.mld_typeopdr_omschrijving opdrachttype,
|
||
so.mld_statusopdr_omschrijving opdrachtstatus,
|
||
o.mld_opdr_omschrijving opdrachtomschrijving,
|
||
COALESCE(kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms) opdracht_nen_omschrijving,
|
||
b.prs_bedrijf_naam opdrachtuitvoerende,
|
||
o.mld_opdr_kosten opdrachtkosten,
|
||
YASK.bepaal_srtopslag(o.mld_opdr_key) soortopslag,
|
||
YASK.bepaal_opslag(o.mld_opdr_key) opslag,
|
||
o.mld_opdr_kosten * ((100 + COALESCE(YASK.bepaal_opslag(o.mld_opdr_key),0)) /100) kostenplusopslag,
|
||
YASK.geen_opslag(o.mld_opdr_key) geenopslag,
|
||
TO_CHAR(ADD_MONTHS(SYSDATE,
|
||
COALESCE((SELECT FAC.safe_to_number(alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk aogk WHERE alg_kenmerk_key = 1060
|
||
AND alg_onrgoed_key = l.alg_district_key),0)),'yyyymm') boekmaand,
|
||
aog.alg_gebouw_naam meldinggebouw,
|
||
(SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 182) klant_inkoopordernr,
|
||
(SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 181) klant_kostenplaats,
|
||
(SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 183) klant_werkorder,
|
||
o.mld_opdr_key,
|
||
l.alg_district_key,
|
||
kso.prs_kostensoort_oms afw_opdracht_nen_omschrijving,
|
||
kso.prs_kostensoort_refcode afw_opdracht_nen_code
|
||
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 mld_melding_key, fac_usrdata_omschr
|
||
FROM fac_usrdata ud, mld_kenmerkmelding km
|
||
WHERE km.mld_kenmerk_key = 1 -- Facturatiestatus
|
||
AND FAC.safe_to_number (mld_kenmerkmelding_waarde) =
|
||
ud.fac_usrdata_key) fs
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND std.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND m.mld_melding_key = fs.mld_melding_key(+)
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND m.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND 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(+)
|
||
-- Levanto worden niet meegenomen in de proforma facturen, mag verwijderd worden YASK#76545
|
||
AND l.alg_district_key NOT IN (301);
|
||
|
||
CREATE OR REPLACE VIEW yask_v_kosten_doorb_frozen
|
||
AS
|
||
SELECT fin_verkoopfactuur_omschr meldingnummer,
|
||
fin_verkoopfactuur_n4 mld_melding_key,
|
||
l.alg_locatie_omschrijving meldinglocatie,
|
||
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,
|
||
fin_verkoopfactuur_c7 klant_inkoopordernr,
|
||
fin_verkoopfactuur_c8 klant_kostenplaats,
|
||
prs_kostensoortgrp_oms klant_werkorder,
|
||
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 = o.mld_melding_key
|
||
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(+)
|
||
-- Levanto (, mag verwijderd worden YASK#76545) en Renewi worden niet meegenomen in de proforma facturen
|
||
AND vf.fin_verkoopfactuur_n5 NOT IN (301, 501);
|
||
|
||
CREATE OR REPLACE VIEW yask_v_kosten_export_power_bi
|
||
AS
|
||
SELECT d.meldingnummer,
|
||
d.mld_melding_key,
|
||
d.meldinglocatie,
|
||
d.district,
|
||
u.melding_gebouw,
|
||
u.melding_gebouwcode,
|
||
d.melder,
|
||
d.soortmelding,
|
||
d.productgroep,
|
||
d.subproductgroep,
|
||
d.melding_nen_omschrijving,
|
||
d.melding_nen_code,
|
||
d.meldingstatus,
|
||
d.facturatiestatus,
|
||
d.meldingdatum,
|
||
d.afgemeld,
|
||
d.onderwerp,
|
||
d.vomschrijving,
|
||
d.opdrachtnummer,
|
||
d.opdrachttype,
|
||
d.opdrachtstatus,
|
||
d.opdrachtomschrijving,
|
||
d.opdracht_nen_omschrijving,
|
||
d.opdrachtuitvoerende,
|
||
d.opdrachtkosten,
|
||
d.soortopslag,
|
||
d.opslag,
|
||
d.kostenplusopslag,
|
||
d.geenopslag,
|
||
d.boekmaand,
|
||
d.klant_inkoopordernr,
|
||
d.klant_kostenplaats,
|
||
d.klant_werkorder,
|
||
d.mld_opdr_key,
|
||
u.sla_accpturen,
|
||
u.plan_uitvoertijd_sla,
|
||
u.accept_sla_dagen,
|
||
u.accept_sla_uren,
|
||
u.afspraak_sla_dagen,
|
||
u.accept_sla_optijd,
|
||
u.uitvoering_sla_optijd,
|
||
u.afspraak_sla_optijd,
|
||
u.melding_afgemeld datum_afgemeld,
|
||
u.melding_accepted datum_acceptatie,
|
||
u.melding_datum datum_aanmaak,
|
||
u.fclt_3d_locatie_key,
|
||
d.afw_opdracht_nen_omschrijving,
|
||
d.afw_opdracht_nen_code
|
||
FROM yask_v_kosten_doorbelasting d, mld_v_udr_melding u
|
||
WHERE meldingstatus <> 'Historie'
|
||
AND d.mld_melding_key = u.melding_key
|
||
UNION ALL
|
||
SELECT f.meldingnummer,
|
||
f.mld_melding_key,
|
||
f.meldinglocatie,
|
||
f.district,
|
||
u.melding_gebouw,
|
||
u.melding_gebouwcode,
|
||
f.melder,
|
||
f.soortmelding,
|
||
f.productgroep,
|
||
f.subproductgroep,
|
||
f.melding_nen_omschrijving,
|
||
f.melding_nen_code,
|
||
f.meldingstatus,
|
||
f.facturatiestatus,
|
||
f.meldingdatum,
|
||
f.afgemeld,
|
||
f.onderwerp,
|
||
f.vomschrijving,
|
||
f.opdrachtnummer,
|
||
f.opdrachttype,
|
||
f.opdrachtstatus,
|
||
f.opdrachtomschrijving,
|
||
f.opdracht_nen_omschrijving,
|
||
f.opdrachtuitvoerende,
|
||
f.opdrachtkosten,
|
||
f.soortopslag,
|
||
f.opslag,
|
||
f.kostenplusopslag,
|
||
f.geenopslag,
|
||
f.boekmaand,
|
||
f.klant_inkoopordernr,
|
||
f.klant_kostenplaats,
|
||
f.klant_werkorder,
|
||
f.mld_opdr_key,
|
||
u.sla_accpturen,
|
||
u.plan_uitvoertijd_sla,
|
||
u.accept_sla_dagen,
|
||
u.accept_sla_uren,
|
||
u.afspraak_sla_dagen,
|
||
u.accept_sla_optijd,
|
||
u.uitvoering_sla_optijd,
|
||
u.afspraak_sla_optijd,
|
||
u.melding_afgemeld datum_afgemeld,
|
||
u.melding_accepted datum_acceptatie,
|
||
u.melding_datum datum_aanmaak,
|
||
u.fclt_3d_locatie_key,
|
||
f.afw_opdracht_nen_omschrijving,
|
||
f.afw_opdracht_nen_code
|
||
FROM yask_v_kosten_doorb_frozen f, mld_v_udr_melding u
|
||
WHERE f.mld_melding_key = u.melding_key;
|
||
|
||
-- View met de resultaten van uitgevoerde en geplande inspecties
|
||
-- gecombineerd met nog uit te voeren inspecties.
|
||
CREATE OR REPLACE VIEW yask_v_deelsrtcontrole_mi
|
||
AS
|
||
SELECT ins_deel_key
|
||
deel_key,
|
||
dg.ins_discipline_omschrijving
|
||
discipline,
|
||
ins_srtdeel_omschrijving
|
||
soort,
|
||
ins_srtgroep_omschrijving
|
||
groep,
|
||
ins_srtdeel_upper
|
||
soortcode,
|
||
ins_deel_omschrijving
|
||
omschrijving,
|
||
ins_deel_opmerking
|
||
opmerking,
|
||
l.alg_locatie_omschrijving
|
||
locatie_omschrijving,
|
||
alg_gebouw_omschrijving
|
||
gebouw,
|
||
alg_ruimte_nr
|
||
ruimtenr,
|
||
ins_deel_aantal
|
||
aantal,
|
||
ins_srtcontrole_omschrijving
|
||
srtcontrole_omschrijving,
|
||
d.ins_discipline_omschrijving,
|
||
NULL
|
||
ins_deelsrtcontrole_datum,
|
||
NULL
|
||
controlemode_omschrijving,
|
||
NULL
|
||
ins_deelsrtcontrole_opmerking,
|
||
NULL
|
||
perslid,
|
||
INS.nextcyclusdate (ins_deel_key, ins_srtcontrole_key, 1)
|
||
ins_deelsrtcontrole_datum_org,
|
||
NULL
|
||
ins_deelsrtcontrole_plandatum,
|
||
'Niet gepland'
|
||
deelsrtcontrole_status
|
||
FROM ins_v_deel_gegevens dg,
|
||
ins_srtcontrole sc,
|
||
ctr_discipline d,
|
||
alg_locatie l
|
||
WHERE dg.alg_locatie_key = l.alg_locatie_key
|
||
AND sc.ctr_discipline_key = d.ins_discipline_key
|
||
AND ( ( ins_srtcontrole_niveau = 'S'
|
||
AND ins_srtinstallatie_key = dg.ins_srtdeel_key)
|
||
OR ( ins_srtcontrole_niveau = 'G'
|
||
AND ins_srtinstallatie_key = dg.ins_srtgroep_key)
|
||
OR ( ins_srtcontrole_niveau = 'D'
|
||
AND ins_srtinstallatie_key = dg.ins_discipline_key))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM ins_v_udr_deelinspect di
|
||
WHERE deelsrtcontrole_status = 'Gepland'
|
||
AND di.deel_key = dg.ins_deel_key
|
||
AND di.ins_srtcontrole_key = sc.ins_srtcontrole_key)
|
||
UNION ALL
|
||
SELECT deel_key,
|
||
discipline,
|
||
soort,
|
||
groep,
|
||
soortcode,
|
||
omschrijving,
|
||
opmerking,
|
||
locatie_omschrijving,
|
||
gebouw,
|
||
ruimtenr,
|
||
aantal,
|
||
srtcontrole_omschrijving,
|
||
ctr_discipline_omschrijving,
|
||
ins_deelsrtcontrole_datum,
|
||
controlemode_omschrijving,
|
||
ins_deelsrtcontrole_opmerking,
|
||
perslid,
|
||
ins_deelsrtcontrole_datum_org,
|
||
ins_deelsrtcontrole_plandatum,
|
||
deelsrtcontrole_status
|
||
FROM ins_v_udr_deelinspect;
|
||
|
||
-- Klantrapportage catering voor Rabobank
|
||
CREATE OR REPLACE VIEW yask_v_rap_rabo_catering
|
||
AS
|
||
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr reserveringsnummer_fac,
|
||
g.alg_gebouw_code reserveringsgebouw,
|
||
di.alg_district_omschrijving district,
|
||
l.alg_locatie_omschrijving locatie,
|
||
rrr.res_rsv_ruimte_omschrijving reserveringomschrijving,
|
||
TRUNC (rrr.res_rsv_ruimte_van) reserveringdatum,
|
||
flx.getflex ('RES', 401, rrr.res_rsv_ruimte_key) resnummer,
|
||
flx.getflex ('RES', 641, rrr.res_rsv_ruimte_key) contactpersoon,
|
||
flx.getflex ('RES', 681, rrr.res_rsv_ruimte_key) aanvrager,
|
||
k.prs_kostenplaats_nr kostenplaatsnr,
|
||
k.prs_kostenplaats_omschrijving kostenplaatsoms,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_refcode,
|
||
bo.res_status_bo_omschrijving status,
|
||
res_rsv_artikel_inkoopprijs inkoopbedrag,
|
||
rra.res_rsv_artikel_btw,
|
||
(SELECT FAC.safe_to_number(res_kenmerkartikel_waarde)
|
||
FROM res_kenmerkartikel ka, res_kenmerk rk
|
||
WHERE ka.res_rsv_artikel_key = rra.res_rsv_artikel_key
|
||
AND ka.res_kenmerk_key = rk.res_kenmerk_key
|
||
AND rk.res_kenmerk_code = 'OPSLAGPERC') opslag,
|
||
rra.res_rsv_artikel_prijs kostenplusopslagexbtw,
|
||
ROUND(rra.res_rsv_artikel_prijs * (1 + (rra.res_rsv_artikel_btw / 100)),2) kostenplusopslaginclbtw,
|
||
DECODE(o.mld_opdr_key, NULL, NULL, o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr) opdracht,
|
||
TO_CHAR(o.mld_opdr_datumbegin, 'YYYY-MM') boekmaand
|
||
FROM res_rsv_ruimte rrr,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
res_discipline rd,
|
||
prs_kostenplaats k,
|
||
prs_kostensoort ks,
|
||
res_status_bo bo,
|
||
mld_opdr o
|
||
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND rra.res_rsv_artikel_verwijder IS NULL
|
||
AND ra.res_discipline_key = rd.ins_discipline_key
|
||
AND rd.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND rrr.alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND rra.res_status_bo_key = bo.res_status_bo_key
|
||
AND FAC.safe_to_number(rra.res_rsv_artikel_externnr) = o.mld_opdr_key(+);
|
||
|
||
-- Procedure om data klaar te zetten voor de reversed billing. Hierna wordt de vbxx_select_fact procedure aangeroepen die
|
||
CREATE OR REPLACE PROCEDURE yask_select_pre_fact (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
|
||
CURSOR c_res
|
||
IS
|
||
SELECT SUM(res_rsv_artikel_inkoopprijs) totaalprijs,
|
||
l.alg_locatie_key,
|
||
g.alg_gebouw_key,
|
||
MAX(rrr.prs_kostenplaats_key) prs_kostenplaats_key,
|
||
MAX(rrr.res_rsv_ruimte_contact_key) res_rsv_ruimte_contact_key,
|
||
(SELECT FLX.getflex('ALG', k.alg_kenmerk_key, g.alg_gebouw_key, 'G')
|
||
FROM alg_kenmerk k
|
||
WHERE alg_kenmerk_code = 'NIET_IN_RB') niet_in_rb
|
||
FROM res_rsv_ruimte rrr,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l
|
||
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key = 1221 -- Rabobank - Catering
|
||
AND rrr.alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND rra.res_status_bo_key = 5 -- afgemeld
|
||
AND rra.res_rsv_artikel_levering < TRUNC(SYSDATE, 'MM')
|
||
GROUP BY l.alg_locatie_key,
|
||
g.alg_gebouw_key;
|
||
|
||
CURSOR c_res_geb (c_gebouw_key IN NUMBER)
|
||
IS
|
||
SELECT rra.res_rsv_artikel_key
|
||
FROM res_rsv_ruimte rrr,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l
|
||
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key = 1221 -- Rabobank - Catering
|
||
AND rrr.alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND rra.res_status_bo_key = 5 -- afgemeld
|
||
AND rra.res_rsv_artikel_levering < TRUNC(SYSDATE, 'MM')
|
||
AND g.alg_gebouw_key = c_gebouw_key;
|
||
|
||
CURSOR c_mld (c_stdmelding_key IN NUMBER)
|
||
IS
|
||
SELECT mld_melding_key, mld_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = c_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND TRUNC(SYSDATE, 'MM') -1 > mld_melding_einddatum;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint 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);
|
||
v_typeopdr_key NUMBER (10);
|
||
v_stdmelding_key NUMBER (10);
|
||
v_melding_key NUMBER (10);
|
||
v_melding_status NUMBER (1);
|
||
v_bedrijf_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_contact_key NUMBER (10);
|
||
v_opdr_key NUMBER (10);
|
||
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||
v_rb_goedgekeurd_kenmerk_key NUMBER (10);
|
||
v_niet_doorbelasten_kenmerk_key NUMBER (10);
|
||
v_stdmelding_t_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
|
||
v_stdmelding_t_accepttijd mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
|
||
|
||
BEGIN
|
||
|
||
-- zoek de standaardmelding
|
||
v_errormsg := 'Standaard melding met code RB_RABO_CATERING opzoeken';
|
||
SELECT mld_stdmelding_key,
|
||
mld_stdmelding_t_uitvoertijd,
|
||
mld_stdmelding_t_accepttijd
|
||
INTO v_stdmelding_key,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_code = 'RB_RABO_CATERING';
|
||
|
||
v_errormsg := 'Opdrachttype opzoeken om de opdracht onder aan te maken';
|
||
SELECT mld_typeopdr_key
|
||
INTO v_typeopdr_key
|
||
FROM mld_typeopdr ot
|
||
WHERE UPPER(ot.mld_typeopdr_omschrijving) like 'REVERSED%'; -- ReversedBilling
|
||
|
||
FOR rec IN c_res
|
||
LOOP
|
||
IF COALESCE(rec.niet_in_rb, 0) = 0 -- Dus wel in de reversed billing
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Zoek de kostenplaats van de api: ' || rec.res_rsv_ruimte_contact_key;
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_key = rec.res_rsv_ruimte_contact_key;
|
||
|
||
-- controleer of er een openstaande melding is voor dit gebouw
|
||
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
|
||
SELECT mld_melding_key, mld_melding_status
|
||
INTO v_melding_key, v_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND TRUNC(SYSDATE, 'MM') -1 BETWEEN mld_melding_datum AND mld_melding_einddatum;
|
||
|
||
IF v_melding_status = 0 OR v_melding_status = 2
|
||
THEN
|
||
mld.setmeldingstatus (v_melding_key, 4, rec.res_rsv_ruimte_contact_key);
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- dan gaan we een nieuwe melding aanmaken
|
||
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
|
||
INSERT INTO mld_melding (mld_melding_omschrijving,
|
||
mld_melding_onderwerp,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key,
|
||
mld_stdmelding_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_einddatum,
|
||
mld_melding_datum,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_melding_t_accepttijd,
|
||
mld_meldbron_key,
|
||
mld_melding_module,
|
||
mld_melding_spoed)
|
||
VALUES ('Catering ReversedBilling boekingen' || CHR(10) || 'Administratieve melding die door het systeem wordt afgemeld.' ,
|
||
'Catering ReversedBilling boekingen',
|
||
rec.res_rsv_ruimte_contact_key, -- API catering rabobank
|
||
v_kostenplaats_key, -- Rabobank
|
||
v_stdmelding_key,
|
||
rec.alg_locatie_key,
|
||
rec.alg_gebouw_key,
|
||
TO_DATE (TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'YYYY') || '1231',
|
||
'YYYYMMDD'),
|
||
TO_DATE (TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'YYYY') || '0101',
|
||
'YYYYMMDD'),
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd,
|
||
5,
|
||
'MLD',
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, rec.res_rsv_ruimte_contact_key);
|
||
mld.setmeldingstatus (v_melding_key, 4, rec.res_rsv_ruimte_contact_key);
|
||
END;
|
||
|
||
-- maak een opdracht aan voor dit gebouw en deze periode
|
||
BEGIN
|
||
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
|
||
-- de contactpersoon bij de reservering de contactpersoon is.
|
||
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || rec.res_rsv_ruimte_contact_key;
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_contactpersoon cp
|
||
WHERE cp.prs_perslid_key = rec.res_rsv_ruimte_contact_key;
|
||
|
||
-- Nu op zoek naar het ReversedBilling contract
|
||
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
|
||
SELECT cnt_contract_key
|
||
INTO v_contact_key
|
||
FROM cnt_contract c, cnt_discipline d
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
|
||
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
|
||
AND TRUNC(SYSDATE, 'MM') -2 BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
|
||
|
||
|
||
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
|
||
|
||
v_errormsg := 'Maak opdracht aan om factuur van cateraar te matchen';
|
||
|
||
-- maak opdracht aan om cateringfactuur van leverancier te matchen
|
||
INSERT INTO mld_opdr (mld_melding_key,
|
||
prs_kostenplaats_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key,
|
||
prs_perslid_key,
|
||
cnt_contract_key,
|
||
mld_uitvoerende_keys,
|
||
mld_opdr_datumbegin,
|
||
mld_opdr_einddatum,
|
||
mld_opdr_module,
|
||
mld_opdr_omschrijving,
|
||
mld_opdr_materiaal,
|
||
mld_opdr_kosten,
|
||
mld_opdr_bedrijfopdr_volgnr)
|
||
VALUES ( v_melding_key,
|
||
v_kostenplaats_key, -- Rabobank kostenplaats
|
||
5, -- uitgegeven
|
||
v_typeopdr_key,
|
||
rec.res_rsv_ruimte_contact_key, -- API catering rabobank
|
||
v_contact_key,
|
||
v_bedrijf_key,
|
||
TO_DATE (TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'YYYYMM') || '01',
|
||
'YYYYMMDD'),
|
||
TRUNC(SYSDATE, 'MM') -1,
|
||
'MLD',
|
||
'Cateringreserveringen export-maand: ' || TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'MON-YYYY'),
|
||
rec.totaalprijs,
|
||
rec.totaalprijs,
|
||
v_mld_opdr_bedrijfopdr_volgnr)
|
||
RETURNING mld_opdr_key INTO v_opdr_key;
|
||
|
||
v_errormsg := 'Update opdracht status';
|
||
-- meld de opdracht af
|
||
MLD.setopdrachtstatus (v_opdr_key, 6, rec.res_rsv_ruimte_contact_key);
|
||
MLD.updatemeldingstatus (v_melding_key, 0, rec.res_rsv_ruimte_contact_key);
|
||
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
|
||
UPDATE fac_tracking SET fac_tracking_datum = TRUNC(SYSDATE, 'MM') -1
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
|
||
-- en zet hem nog op afgerond
|
||
MLD.setopdrachtstatus (v_opdr_key, 9, rec.res_rsv_ruimte_contact_key);
|
||
UPDATE fac_tracking SET fac_tracking_datum = TRUNC(SYSDATE, 'MM') -1
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
|
||
SELECT mld_kenmerk_key
|
||
INTO v_rb_goedgekeurd_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
|
||
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: NIETDOORBELASTEN';
|
||
SELECT mld_kenmerk_key
|
||
INTO v_niet_doorbelasten_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'NIETDOORBELASTEN' -- Niet op de doorbelasting naar Rabo
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk NIETDOORBELASTEN op 1 zetten';
|
||
FLX.setflex('OPD', v_niet_doorbelasten_kenmerk_key, v_opdr_key, '1');
|
||
|
||
v_errormsg := 'Koppel de catering artikelen aan de opdracht.';
|
||
|
||
FOR rec_g IN c_res_geb(rec.alg_gebouw_key)
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- koppel de artikelen aan de opdracht en zet de status van de artikelen op verwerkt.
|
||
v_errormsg := 'Pas de status van de artikelen aan ' || v_opdr_key;
|
||
UPDATE res_rsv_artikel rra
|
||
SET res_rsv_artikel_verwerkt = SYSDATE,
|
||
res_status_bo_key = 6,
|
||
res_rsv_artikel_externnr = v_opdr_key
|
||
WHERE rra.res_rsv_artikel_key = rec_g.res_rsv_artikel_key;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
ELSE -- niet opnemen in Reversed billing maar wel de catering naar historie brengen.
|
||
FOR rec_g IN c_res_geb(rec.alg_gebouw_key)
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- koppel de artikelen aan de opdracht en zet de status van de artikelen op verwerkt.
|
||
v_errormsg := 'Pas de status van de artikelen aan ' || v_opdr_key;
|
||
UPDATE res_rsv_artikel rra
|
||
SET res_rsv_artikel_verwerkt = SYSDATE,
|
||
res_status_bo_key = 6,
|
||
res_rsv_artikel_externnr = NULL
|
||
WHERE rra.res_rsv_artikel_key = rec_g.res_rsv_artikel_key;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
END LOOP;
|
||
-- afmelden oude meldingen
|
||
|
||
FOR rec_mld IN c_mld (v_stdmelding_key)
|
||
LOOP
|
||
v_errormsg := 'Afmelden oude melding ' || rec_mld.mld_melding_key;
|
||
mld.setmeldingstatus (rec_mld.mld_melding_key, 5, NULL);
|
||
END LOOP;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errorhint := v_errormsg;
|
||
v_errormsg := 'Fout bij aanmaken catering RB opdracht' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT 'meldingnummer;' ||
|
||
'meldinglocatie;' ||
|
||
'melder;' ||
|
||
'soortmelding;' ||
|
||
'productgroep;' ||
|
||
'subproductgroep;' ||
|
||
'melding_nen_omschrijving;' ||
|
||
'melding_nen_code;' ||
|
||
'meldingstatus;' ||
|
||
'facturatiestatus;' ||
|
||
'meldingdatum;' ||
|
||
'afgemeld;' ||
|
||
'onderwerp;' ||
|
||
'vomschrijving;' ||
|
||
'opdrachtnummer;' ||
|
||
'opdrachttype;' ||
|
||
'opdrachtstatus;' ||
|
||
'opdrachtomschrijving;' ||
|
||
'opdracht_nen_omschrijving;' ||
|
||
'opdrachtuitvoerende;' ||
|
||
'opdrachtkosten;' ||
|
||
'soortopslag;' ||
|
||
'opslag;' ||
|
||
'kostenplusopslag;' ||
|
||
'geenopslag;' ||
|
||
'boekmaand;' ||
|
||
'meldinggebouw;' ||
|
||
'klant_inkoopordernr;' ||
|
||
'klant_kostenplaats;' ||
|
||
'klant_werkorder;', -1, alg_district_key
|
||
FROM alg_district
|
||
UNION ALL
|
||
SELECT meldingnummer || ';' ||
|
||
meldinglocatie || ';' ||
|
||
melder || ';' ||
|
||
soortmelding || ';' ||
|
||
productgroep || ';' ||
|
||
subproductgroep || ';' ||
|
||
melding_nen_omschrijving || ';' ||
|
||
melding_nen_code || ';' ||
|
||
meldingstatus || ';' ||
|
||
facturatiestatus || ';' ||
|
||
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, '.', ',') || ';' ||
|
||
soortopslag || ';' ||
|
||
opslag || ';' ||
|
||
REPLACE(kostenplusopslag, '.', ',') || ';' ||
|
||
geenopslag || ';' ||
|
||
boekmaand || ';' ||
|
||
meldinggebouw || ';' ||
|
||
klant_inkoopordernr || ';' ||
|
||
klant_kostenplaats || ';' ||
|
||
klant_werkorder,
|
||
mld_melding_key,
|
||
alg_district_key
|
||
FROM yask_v_kosten_doorbelasting
|
||
WHERE facturatiestatus = 'Gereed voor facturatie';
|
||
|
||
-- Procedure om pro-forma factuur klaar te zetten.
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_district_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT mld_melding_key
|
||
FROM yask_v_kosten_doorbelasting
|
||
WHERE meldingstatus = 'Afgerond'
|
||
--AND COALESCE(facturatiestatus, 'Onbekend') <> 'Gefactureerd'
|
||
AND meldingstatus <> 'Historie'
|
||
AND alg_district_key = p_district_key
|
||
GROUP BY mld_melding_key;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_boekmaand VARCHAR2 (10);
|
||
|
||
BEGIN
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
SELECT TO_CHAR (
|
||
ADD_MONTHS (
|
||
SYSDATE,
|
||
COALESCE (
|
||
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
|
||
FROM alg_onrgoedkenmerk aogk
|
||
WHERE alg_kenmerk_key = 1060 -- boekmaand offset
|
||
AND alg_onrgoed_key = d.alg_district_key),
|
||
0)),
|
||
'yyyymm')
|
||
INTO v_boekmaand
|
||
FROM alg_district d
|
||
WHERE alg_district_key = p_district_key;
|
||
|
||
ALG.upsertkenmerk (1200, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly datum pro forma
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
-- zet de melding op status 'Gereed voor facturatie'
|
||
MLD.upsertmeldingkenmerk (1, rec.mld_melding_key, 1); -- Facturatiestatus naar Gereed voor facturatie
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout bij aanmaken pro forma factuur' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', rec.mld_melding_key || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verwerk (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_district_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT mld_melding_key
|
||
FROM yask_v_kosten_doorbelasting
|
||
WHERE meldingstatus = 'Afgerond'
|
||
AND facturatiestatus = 'Gereed voor facturatie'
|
||
AND alg_district_key = p_district_key
|
||
GROUP BY mld_melding_key;
|
||
|
||
CURSOR c_opdr (c_melding_key NUMBER)
|
||
IS
|
||
SELECT *
|
||
FROM yask_v_kosten_doorbelasting
|
||
WHERE mld_melding_key = c_melding_key;
|
||
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_boekmaand VARCHAR2 (10);
|
||
|
||
BEGIN
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
-- 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
|
||
WHERE alg_kenmerk_key = 1060 -- boekmaand offset
|
||
AND alg_onrgoed_key = d.alg_district_key),
|
||
0)),
|
||
'yyyymm')
|
||
INTO v_boekmaand
|
||
FROM alg_district d
|
||
WHERE alg_district_key = p_district_key;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- zet de melding op facturatie status 'Gefactureerd'
|
||
MLD.upsertmeldingkenmerk (1, rec.mld_melding_key, 2);
|
||
|
||
-- We gaan eerst alle onderliggende opdrachten op verwerkt zetten.
|
||
FOR rec1 IN c_opdr(rec.mld_melding_key)
|
||
LOOP
|
||
BEGIN
|
||
-- bevries de factuurgegevens in de verkooptabel.
|
||
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_aanmaak,
|
||
fin_verkoopfactuur_id,
|
||
fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_omschr,
|
||
fin_verkoopfactuur_xmlnode,
|
||
fin_verkoopfactuur_refkey,
|
||
prs_kostensoort_oms,
|
||
fin_verkoopfactuur_bedrag,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_n1,
|
||
fin_verkoopfactuur_n2,
|
||
fin_verkoopfactuur_n3,
|
||
fin_verkoopfactuur_n4,
|
||
fin_verkoopfactuur_n5,
|
||
fin_verkoopfactuur_c1,
|
||
fin_verkoopfactuur_c2,
|
||
fin_verkoopfactuur_c3,
|
||
fin_verkoopfactuur_c4,
|
||
fin_verkoopfactuur_c5,
|
||
fin_verkoopfactuur_c6,
|
||
fin_verkoopfactuur_c7,
|
||
fin_verkoopfactuur_c8,
|
||
prs_kostensoortgrp_oms)
|
||
VALUES (SYSDATE,
|
||
rec1.opdrachtnummer,
|
||
SYSDATE,
|
||
rec1.meldingnummer,
|
||
'opdracht',
|
||
rec1.mld_opdr_key,
|
||
rec1.opdracht_nen_omschrijving,
|
||
rec1.opdrachtkosten,
|
||
v_boekmaand,
|
||
rec1.geenopslag,
|
||
rec1.opslag,
|
||
rec1.kostenplusopslag,
|
||
rec1.mld_melding_key,
|
||
rec1.alg_district_key,
|
||
rec1.melding_nen_omschrijving,
|
||
rec1.melding_nen_code,
|
||
rec1.soortmelding,
|
||
rec1.productgroep,
|
||
rec1.subproductgroep,
|
||
rec1.soortopslag,
|
||
rec1.klant_inkoopordernr,
|
||
rec1.klant_kostenplaats,
|
||
rec1.klant_werkorder
|
||
);
|
||
|
||
MLD.setopdrachtstatus (rec1.mld_opdr_key, 7, NULL); -- Verwerkt
|
||
END;
|
||
END LOOP;
|
||
|
||
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL, NULL); -- Historie
|
||
END;
|
||
END LOOP;
|
||
ALG.upsertkenmerk (1201, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly export datum pro forma
|
||
ALG.upsertkenmerk (1080, p_district_key ,v_boekmaand); -- Readonly boekmaand laatste export veld.
|
||
END;
|
||
/
|
||
|
||
-- Grolsch
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_101
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 101;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_101 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 101);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_101 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 101);
|
||
END;
|
||
/
|
||
|
||
-- Power-Packer
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_102
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 102;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_102 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 102);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_102 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 102);
|
||
END;
|
||
/
|
||
|
||
-- Raben
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_103
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 103;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_103 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 103);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_103 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 103);
|
||
END;
|
||
/
|
||
|
||
-- RFC
|
||
-- 385 RFC Balkbruk
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_385
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 385;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_385 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 385);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_385 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 385);
|
||
END;
|
||
/
|
||
|
||
-- 384 RFC Borculo
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_384
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 384;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_384 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 384);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_384 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 384);
|
||
END;
|
||
/
|
||
|
||
-- 381 RFC Amersfoort
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_381
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 381;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_381 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 381);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_381 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 381);
|
||
END;
|
||
/
|
||
|
||
-- 105 RFC Wageningen
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_105
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 105;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_105 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 105);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_105 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 105);
|
||
END;
|
||
/
|
||
|
||
-- Altrecht
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_341
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_pro_forma
|
||
WHERE alg_district_key = 341;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_341 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma(p_applname, p_applrun, 341);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_341 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
yask_select_pro_forma_verwerk (p_applname, p_applrun, 341);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_r121 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_regio_key = 121 OR alg_regio_key = -1;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_r121 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 121, NULL);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_r121 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 121, NULL);
|
||
END;
|
||
/
|
||
|
||
/*
|
||
|
||
-- Rabobank Centraal
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_801 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 801;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_801 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 801);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_801 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 801);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Centraal zuid
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_841 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 841;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_841 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 841);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_841 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 841);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 01
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_802 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 802;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_802 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 802);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_802 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 802);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 02
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_803 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 803;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_803 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 803);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_803 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 803);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 03
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_804 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 804;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_804 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 804);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_804 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 804);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 04
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_805 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 805;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_805 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 805);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_805 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 805);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 05
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_806 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 806;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_806 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 806);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_806 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 806);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 06
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_807 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 807;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_807 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 807);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_807 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 807);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 07
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_808 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 808;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_808 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 808);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_808 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 808);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 08
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_809 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 809;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_809 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 809);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_809 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 809);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 09
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_810 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 810;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_810 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 810);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_810 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 810);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 10
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_811 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 811;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_811 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 811);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_811 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 811);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 11
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_812 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 812;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_812 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 812);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_812 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 812);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 12
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_813 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 813;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_813 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 813);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_813 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 813);
|
||
END;
|
||
/
|
||
|
||
-- Rabobank Kring 13
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_814 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 814;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_814 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 814);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_814 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 814);
|
||
END;
|
||
/
|
||
|
||
|
||
-- Rabobank Kring 14
|
||
CREATE OR REPLACE VIEW yask_v_export_pro_forma_815 (
|
||
result,
|
||
result_order,
|
||
alg_district_key
|
||
)
|
||
AS
|
||
SELECT result, result_order, alg_district_key
|
||
FROM vbxx_v_export_pro_forma
|
||
WHERE alg_district_key = 815;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_815 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma (p_applname, p_applrun, 815);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_815 (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_pro_forma_verwerk (p_applname, p_applrun, 815);
|
||
END;
|
||
/
|
||
*/
|
||
-- De werkwijze van de import is als volgt:
|
||
-- De importabel bevat alle records die nog geldig zijn
|
||
-- Een nieuwe import voegt regels toe als de combinatie van velden niet gevonden kan worden.
|
||
-- De enige uitzondering is een regel waarvan nu de einddatum gezet is en die in de tabel
|
||
-- nog zonder einddatum staat.
|
||
-- Regels verwijderen uit de import tabel kan door 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 yask_import_opslag (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
v_newline VARCHAR2 (1000);
|
||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_skipfield VARCHAR2 (100);
|
||
-- De importvelden
|
||
v_imp_opslag_key NUMBER (10);
|
||
v_begin_txt VARCHAR2 (100);
|
||
v_eind_txt VARCHAR2 (100);
|
||
v_locatie_code VARCHAR2 (100);
|
||
v_srtdiscipline_omschrijving VARCHAR2 (100);
|
||
v_discipline_omschrijving VARCHAR2 (100);
|
||
v_kostensoort_oms 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_oms);
|
||
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_oms) = 'KOSTENSOORT' OR UPPER (v_kostensoort_oms) = 'PRS_KOSTENSOORT_OMS')
|
||
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 yask_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_oms
|
||
|| ' | '
|
||
|| 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 kostensoort code';
|
||
|
||
SELECT prs_kostensoort_key
|
||
INTO v_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE UPPER (prs_kostensoort_oms) =
|
||
UPPER (TRIM (v_kostensoort_oms));
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_kostensoort_key := NULL;
|
||
END;
|
||
|
||
v_errorhint := 'Leverancier niet gevonden: ' || v_leverancier_nr;
|
||
v_bedrijf_key := NULL;
|
||
|
||
IF v_leverancier_nr IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
-- vinden we dit bedrijf via het kenmerk AFWLEVERANCIERNR?
|
||
SELECT prs_link_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_kenmerklink kl, prs_kenmerk k
|
||
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key
|
||
AND k.prs_kenmerk_code = 'AFWLEVERANCIERNR'
|
||
AND UPPER(kl.prs_kenmerklink_waarde) = UPPER(v_leverancier_nr);
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND THEN
|
||
|
||
BEGIN
|
||
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
|
||
fac.imp_writelog (p_import_key, 'E', v_errorhint, '');
|
||
END;
|
||
END;
|
||
END IF;
|
||
|
||
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 yask_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_oms
|
||
|| ' | '
|
||
|| 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 yask_update_opslag (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_v_imp_opslag
|
||
AS
|
||
SELECT o.imp_opslag_key,
|
||
l.alg_locatie_code,
|
||
sd.ins_srtdiscipline_omschrijving,
|
||
d.ins_discipline_omschrijving,
|
||
prs_kostensoort_oms,
|
||
COALESCE((SELECT FLX.getflex('PRS', k.prs_kenmerk_key, b.prs_bedrijf_key, 'B', 1) FROM prs_kenmerk k WHERE k.prs_kenmerk_code = 'AFWLEVERANCIERNR'), prs_leverancier_nr) prs_leverancier_nr,
|
||
o.opslag,
|
||
o.ingangsdatum,
|
||
o.einddatum,
|
||
o.imp_opslag_aanmaak,
|
||
o.imp_opslag_verwijder
|
||
FROM yask_imp_opslag o,
|
||
alg_locatie l,
|
||
ins_srtdiscipline sd,
|
||
mld_discipline d,
|
||
prs_kostensoort k,
|
||
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(+);
|
||
|
||
|
||
CREATE OR REPLACE VIEW yask_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
|
||
WHERE kl.prs_kenmerk_key = 1020
|
||
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,
|
||
(SELECT MAX(prs_kostenplaats_nr)
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_key = COALESCE(o.prs_kostenplaats_key, c.prs_kostenplaats_key)) prs_kostenplaats_nr,
|
||
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,
|
||
l.alg_district_key
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
alg_locatie l,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
(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 = l.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 c.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_verwijder IS NULL;
|
||
|
||
|
||
CREATE OR REPLACE VIEW yask_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 yask_v_export_exact_62_Ren (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_exact_63_Ren (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW yask_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
|
||
)
|
||
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,
|
||
'74900' reknr,
|
||
COALESCE(REPLACE(prs_kostenplaats_nr, 'Levanto '), '441.200') kstplcode,
|
||
'10' kstdrcode,
|
||
fin_btwtabelwaarde_code
|
||
btw_code,
|
||
fg.dagboek,
|
||
SUBSTR(UPPER(b.prs_bedrijf_naam),1,3) || ',' ||
|
||
SUBSTR(fin_factuur_boekmaand,6,2) oms_kop,
|
||
fin_factuur_debiteur_nr,
|
||
alg_district_key
|
||
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,
|
||
prs_kostenplaats_nr,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek,
|
||
e.alg_district_key
|
||
FROM yask_v_factuur_gegevens g,
|
||
yask_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,
|
||
prs_kostenplaats_nr,
|
||
fin_factuur_boekmaand,
|
||
g.dagboek,
|
||
e.alg_district_key) 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 yask_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 yask_v_bron_export_exact_xml
|
||
WHERE c_dagboek = dagboek
|
||
AND alg_district_key = p_district_key
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM yask_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);
|
||
|
||
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 YASK.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 yask_exp_factuur
|
||
WHERE dagboek = p_dagboek
|
||
AND alg_district_key = p_district_key;
|
||
|
||
INSERT INTO yask_exp_factuur (fin_factuur_key, dagboek, alg_district_key)
|
||
( SELECT DISTINCT fg.fin_factuur_key, fg.dagboek, alg_district_key
|
||
FROM yask_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 -- Renewi / Levanto
|
||
AND dagboek = p_dagboek
|
||
);
|
||
|
||
-- 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 = 1
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY')
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,3,2) = p_dagboek
|
||
AND YASK.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
|
||
yask.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
yask.add_xml_row (v_bestand, '<eExact>');
|
||
yask.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;
|
||
|
||
yask.add_xml_row (v_bestand, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
|
||
yask.add_xml_element (v_bestand, 'Description', rec.oms_kop);
|
||
yask.add_xml_element (v_bestand, 'Date', rec.datum);
|
||
yask.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
yask.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 boestuknummer aanmaken
|
||
yask.set_kenmerk('FIN', 1, rec1.fin_factuur_key, v_boekstuknummer, 0);
|
||
|
||
-- 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;
|
||
|
||
yask.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
|
||
yask.add_xml_element (v_bestand, 'Date', rec1.datum);
|
||
-- Het is niet gelukt om de boekmaand mee te sturen
|
||
-- yask.add_xml_element (v_bestand, 'FinYear', TO_CHAR(v_boekmaand, 'YYYY') );
|
||
-- yask.add_xml_element (v_bestand, 'FinPeriod', TO_CHAR(v_boekmaand, 'MM') );
|
||
yask.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
|
||
yask.add_xml_element (v_bestand, 'Description', rec1.oms_regel);
|
||
yask.add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
|
||
yask.add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
|
||
yask.add_xml_row (v_bestand, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
yask.add_xml_row (v_bestand, '<Item code=""/>');
|
||
yask.add_xml_row (v_bestand, '<Amount>');
|
||
yask.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
|
||
yask.add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
|
||
yask.add_xml_row (v_bestand, '</Amount>');
|
||
yask.add_xml_row (v_bestand, '<Payment>');
|
||
yask.add_xml_element (v_bestand, 'Reference', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr );
|
||
yask.add_xml_element (v_bestand, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
|
||
yask.add_xml_row (v_bestand, '</Payment>');
|
||
yask.add_xml_row (v_bestand, '<FinReferences>');
|
||
yask.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr);
|
||
yask.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
yask.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 = 41;
|
||
|
||
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();
|
||
yask.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">');
|
||
yask.add_xml_row (v_bestand, '<DocumentType number="7"/>');
|
||
yask.add_xml_element (v_bestand, 'Subject', xml.char_to_html(v_boekstuknummer));
|
||
yask.add_xml_element (v_bestand, 'OurRef', xml.char_to_html(v_boekstuknummer));
|
||
yask.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr);
|
||
yask.add_xml_row (v_bestand, '<Account code="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
yask.add_xml_element (v_bestand, 'FCLTattachment', v_bijlagen_key);
|
||
yask.add_xml_row (v_bestand, '</DocumentAttachment>');
|
||
END IF;
|
||
|
||
yask.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;
|
||
yask.add_xml_row (v_bestand, '</GLEntry>');
|
||
v_order_count := v_order_count + 1;
|
||
END;
|
||
END LOOP;
|
||
|
||
yask.add_xml_row (v_bestand, '</GLEntries>');
|
||
yask.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;
|
||
/
|
||
|
||
-- Renewi district_key = 501
|
||
CREATE OR REPLACE PROCEDURE yask_select_exact_62_Ren (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
yask_select_exact_xml (p_applname, p_applrun, '62', 501);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_exact_63_Ren (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
yask_select_exact_xml (p_applname, p_applrun, '63', 501);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_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 VIEW yask_v_export_verwerk_exact_62_Ren (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_verwerk_exact;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_verwerk_exact_63_Ren (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_verwerk_exact;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_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 yask_exp_factuur f,
|
||
yask_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;
|
||
|
||
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 yask_exp_factuur
|
||
WHERE dagboek = p_dagboek
|
||
AND alg_district_key = p_district_key;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_verwerk_exact_62_Ren (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
yask_select_verwerk_exact (p_applname, p_applrun, '62', 501);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_verwerk_exact_63_Ren (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
yask_select_verwerk_exact (p_applname, p_applrun, '63', 501);
|
||
END;
|
||
/
|
||
|
||
-- Export procedures en fucnties voor Rabobank
|
||
CREATE OR REPLACE VIEW yask_v_export_exact_62_Rabo (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM vbxx_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_exact_63_Rabo (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM vbxx_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_exact_62_Rabo (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_exact_xml (p_applname, p_applrun, '62', NULL, 121);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_exact_63_Rabo (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_exact_xml (p_applname, p_applrun, '63', NULL, 121);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_verwerk_exact_62_Rab (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM vbxx_v_export_verwerk_exact;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_verwerk_exact_63_Rab (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT result, result_order
|
||
FROM vbxx_v_export_verwerk_exact;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_verwerk_exact_62_Rab (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_verwerk_exact (p_applname, p_applrun, '62', NULL, 121);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_verwerk_exact_63_Rab (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
vbxx_select_verwerk_exact (p_applname, p_applrun, '63', NULL, 121);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
-- Views en procedures voor de Exact export naar Veza voor Mindlabs
|
||
CREATE OR REPLACE VIEW yask_v_factuur_gegevens_veza
|
||
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,
|
||
fr.fin_factuurregel_omschrijving,
|
||
k.prs_kostensoort_refcode,
|
||
k.prs_kostensoort_oms,
|
||
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,
|
||
f.fin_factuur_debiteur_nr,
|
||
f.fin_factuur_opmerking,
|
||
f.fin_factuur_boekmaand,
|
||
COALESCE (o.mld_opdr_datumbegin, COALESCE (c.cnt_contract_looptijd_tot, bo.bes_bestelopdr_datum))
|
||
opdr_datum,
|
||
COALESCE (
|
||
o.prs_kostenplaats_key,
|
||
COALESCE (
|
||
c.prs_kostenplaats_key,
|
||
(SELECT DISTINCT b.prs_kostenplaats_key
|
||
FROM bes_bestelling b, bes_bestelopdr_item boi, bes_bestelling_item bi
|
||
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key)))
|
||
prs_kostenplaats_key,
|
||
FLX.getflex ('ALG',
|
||
1260,
|
||
COALESCE (ml.alg_district_key, cl.alg_district_key),
|
||
'D',1)
|
||
dagboek,
|
||
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 of incompleet
|
||
SELECT DECODE (COUNT (*), 0, f.fin_factuur_statuses_key, 2)
|
||
FROM fin_factuur f_t,
|
||
cnt_contract c_t,
|
||
bes_bestelopdr b_t,
|
||
mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder IS NULL
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE (o_t.mld_uitvoerende_keys, COALESCE (b_t.prs_bedrijf_key, c_t.cnt_prs_bedrijf_key)) =
|
||
COALESCE (o.mld_uitvoerende_keys, COALESCE (bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key IN (2, 3)
|
||
AND f.fin_factuur_statuses_key = 6)
|
||
fin_factuur_statuses_key,
|
||
lk.prs_kostenplaats_nr
|
||
lev_kpn,
|
||
(SELECT prs_kostenplaats_nr FROM prs_kostenplaats kp
|
||
WHERE kp.prs_kostenplaats_key = COALESCE(o.prs_kostenplaats_key, b.prs_kostenplaats_key, c.prs_kostenplaats_key))
|
||
kpcode,
|
||
FLX.getflex ('ALG',
|
||
1300,
|
||
COALESCE (ml.alg_district_key, cl.alg_district_key),
|
||
'D',1)
|
||
kdcode,
|
||
COALESCE (ml.alg_district_key, cl.alg_district_key)
|
||
alg_district_key
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
bes_bestelling b,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
prs_kostensoort k,
|
||
prs_kostensoortgrp kg,
|
||
prs_kostenplaats lk,
|
||
alg_v_allonrgoed_gegevens og,
|
||
alg_locatie ml,
|
||
alg_locatie cl,
|
||
(SELECT DISTINCT f1.fin_factuur_key, cnt_alg_plaats_key alg_gebouw_key, alg_locatie_key
|
||
FROM fin_factuur f1, cnt_contract_plaats cp, alg_gebouw g
|
||
WHERE f1.cnt_contract_key = cp.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'G'
|
||
AND cnt_alg_plaats_key = g.alg_gebouw_key
|
||
UNION ALL
|
||
SELECT DISTINCT f1.fin_factuur_key, g.alg_gebouw_key, alg_locatie_key
|
||
FROM fin_factuur f1, cnt_contract_plaats cp, alg_gebouw g
|
||
WHERE f1.cnt_contract_key = cp.cnt_contract_key
|
||
AND cnt_alg_plaats_code = 'L'
|
||
AND cnt_alg_plaats_key = g.alg_locatie_key) cg,
|
||
(SELECT boi.bes_bestelopdr_key, bi.bes_bestelling_key
|
||
FROM bes_bestelopdr_item boi, bes_bestelling_item bi
|
||
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
GROUP BY boi.bes_bestelopdr_key, bi.bes_bestelling_key) bo2b
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND o.mld_melding_key = m.mld_melding_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 bo.bes_bestelopdr_key = bo2b.bes_bestelopdr_key(+)
|
||
AND bo2b.bes_bestelling_key = b.bes_bestelling_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND k.prs_kostensoort_key = COALESCE (fr.prs_kostensoort_key, f.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 = cg.fin_factuur_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND og.alg_locatie_key = ml.alg_locatie_key(+)
|
||
AND cg.alg_locatie_key = cl.alg_locatie_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL
|
||
AND COALESCE (b_c.prs_bedrijf_key, COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key)) IS NOT NULL;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_bron_export_exact_veza
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
SUBSTR(b.prs_bedrijf_naam, 1,30) oms_kop,
|
||
REPLACE (SUBSTR (fin_factuurregel_omschrijving, 1, 60), ',', '')
|
||
oms_detail,
|
||
opdracht_id,
|
||
fin_factuur_nr factuur_nr,
|
||
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
|
||
b.prs_leverancier_nr crdnr,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
fin_factuur_nr betaalref,
|
||
prs_kostensoort_oms itemcode,
|
||
prs_kostensoort_refcode reknr,
|
||
kpcode kstplcode,
|
||
kdcode kstdrcode,
|
||
fin_btwtabelwaarde_code btw_code,
|
||
lev_kpn,
|
||
(SELECT fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 61
|
||
AND kf.fin_factuur_key = fg.fin_factuur_key) boekstuknr,
|
||
dagboek,
|
||
alg_district_key,
|
||
fin_factuur_datum,
|
||
fin_factuur_statuses_key
|
||
FROM ( SELECT g.fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_oms,
|
||
fin_factuurregel_omschrijving,
|
||
SUM (fin_factuurregel_totaal) bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incl,
|
||
fin_btwtabelwaarde_code,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_key,
|
||
lev_kpn,
|
||
kpcode,
|
||
kdcode,
|
||
g.dagboek,
|
||
g.alg_district_key,
|
||
fin_factuur_statuses_key
|
||
FROM yask_v_factuur_gegevens_veza g,
|
||
yask_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,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_oms,
|
||
fin_btwtabelwaarde_code,
|
||
fin_factuurregel_omschrijving,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
prs_kostenplaats_key,
|
||
lev_kpn,
|
||
kpcode,
|
||
kdcode,
|
||
g.dagboek,
|
||
g.alg_district_key,
|
||
fin_factuur_statuses_key) fg,
|
||
prs_bedrijf b
|
||
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_exact_veza_t (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT REPLACE(REPLACE( regelnummer
|
||
|| ','
|
||
|| dagb_type
|
||
|| ','
|
||
|| dagbknr
|
||
|| ','
|
||
|| periode
|
||
|| ','
|
||
|| bkjcode
|
||
|| ','
|
||
|| boekstuknr
|
||
|| ','
|
||
|| oms25
|
||
|| ','
|
||
|| datum
|
||
|| ','
|
||
|| empty9
|
||
|| ','
|
||
|| debnr
|
||
|| ','
|
||
|| crdnr
|
||
|| ','
|
||
|| empty12
|
||
|| ','
|
||
|| bedrag
|
||
|| ','
|
||
|| drbk_in_val
|
||
|| ','
|
||
|| valcode
|
||
|| ','
|
||
|| koers
|
||
|| ','
|
||
|| kredbep
|
||
|| ','
|
||
|| bdrkredbep
|
||
|| ','
|
||
|| vervdatfak
|
||
|| ','
|
||
|| vervdatkrd
|
||
|| ','
|
||
|| empty21
|
||
|| ','
|
||
|| empty22
|
||
|| ','
|
||
|| weeknummer
|
||
|| ','
|
||
|| betaalref
|
||
|| ','
|
||
|| betwijze
|
||
|| ','
|
||
|| grek_bdr
|
||
|| ','
|
||
|| empty27
|
||
|| ','
|
||
|| empty28
|
||
|| ','
|
||
|| empty29
|
||
|| ','
|
||
|| empty30
|
||
|| ','
|
||
|| empty31
|
||
|| ','
|
||
|| transsubtype
|
||
|| ','
|
||
|| empty33
|
||
|| ','
|
||
|| empty34
|
||
|| ','
|
||
|| empty35
|
||
|| ','
|
||
|| empty36
|
||
|| ','
|
||
|| empty37
|
||
|| ','
|
||
|| empty38
|
||
|| ','
|
||
|| projectnr
|
||
|| ','
|
||
|| empty40,CHR (13), ''), CHR (10), '<ret>'),
|
||
boekstuknr * 100 + regelnummer
|
||
FROM (
|
||
SELECT 0 regelnummer,
|
||
'I' dagb_type,
|
||
dagboek dagbknr,
|
||
'' periode,
|
||
'' bkjcode,
|
||
boekstuknr,
|
||
oms_kop oms25,
|
||
TO_CHAR (TO_DATE(datum, 'yyyy-mm-dd'), 'ddmmyyyy') datum,
|
||
'' empty9,
|
||
'' debnr,
|
||
crdnr,
|
||
'' empty12,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag,
|
||
'' drbk_in_val,
|
||
'' valcode,
|
||
'' koers,
|
||
'' kredbep,
|
||
'' bdrkredbep,
|
||
'' vervdatfak,
|
||
'' vervdatkrd,
|
||
'' empty21,
|
||
'' empty22,
|
||
'' weeknummer,
|
||
betaalref,
|
||
'' betwijze,
|
||
'' grek_bdr,
|
||
'' empty27,
|
||
'' empty28,
|
||
'' empty29,
|
||
'' empty30,
|
||
'' empty31,
|
||
'' transsubtype,
|
||
'' empty33,
|
||
'' empty34,
|
||
'' empty35,
|
||
'' empty36,
|
||
'' empty37,
|
||
'' empty38,
|
||
'' projectnr,
|
||
'!' empty40
|
||
FROM (SELECT datum,
|
||
factuur_nr,
|
||
betaalref,
|
||
crdnr,
|
||
oms_kop,
|
||
boekstuknr,
|
||
dagboek,
|
||
SUM (bedrag_incl)
|
||
bedrag
|
||
FROM yask_v_bron_export_exact_veza
|
||
GROUP BY datum,
|
||
factuur_nr,
|
||
betaalref,
|
||
crdnr,
|
||
oms_kop,
|
||
boekstuknr,
|
||
dagboek) fg
|
||
UNION ALL
|
||
SELECT 1 regelnummer,
|
||
'I' dagb_type,
|
||
dagboek dagbknr,
|
||
'' periode,
|
||
'' bkjcode,
|
||
boekstuknr,
|
||
oms_detail,
|
||
TO_CHAR (TO_DATE(datum, 'yyyy-mm-dd'), 'ddmmyyyy') datum,
|
||
reknr,
|
||
'' debnr,
|
||
crdnr,
|
||
'' empty12,
|
||
REPLACE (TO_CHAR (bedrag_incl), ',', '.') bedrag,
|
||
opdracht_id drbk_in_val,
|
||
'' val_code,
|
||
'' koers,
|
||
'' kredbep,
|
||
'' bdrkredbep,
|
||
'' vervdatfak,
|
||
'' vervdatkrd,
|
||
btw_code,
|
||
REPLACE (TO_CHAR (bedrag_incl - bedrag), ',', '.') btw_bdr,
|
||
'' weeknummer,
|
||
'' empty24,
|
||
'' empty25,
|
||
'' empty26,
|
||
kstplcode,
|
||
kstdrcode,
|
||
'' empty29,
|
||
'' empty30,
|
||
'' empty31,
|
||
'' transsubtype,
|
||
'' empty33,
|
||
'' empty34,
|
||
'' emtpy35,
|
||
'' empty36,
|
||
'' empty37,
|
||
'' empty38,
|
||
'' projectnr,
|
||
'!' empty40
|
||
FROM yask_v_bron_export_exact_veza fg
|
||
ORDER BY boekstuknr, regelnummer);
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_exact_veza (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT_VEZA';
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_select_exact_veza (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
|
||
CURSOR c (c_district_key NUMBER)
|
||
IS
|
||
SELECT crdnr, factuur_nr, MAX(datum) datum
|
||
FROM yask_v_bron_export_exact_veza
|
||
WHERE alg_district_key = c_district_key
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2, c_district_key NUMBER)
|
||
IS
|
||
SELECT *
|
||
FROM yask_v_bron_export_exact_veza
|
||
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
|
||
AND alg_district_key = c_district_key
|
||
AND factuur_nr = c_factuur_nr;
|
||
|
||
CURSOR cv IS
|
||
SELECT result, result_order
|
||
FROM yask_v_export_exact_veza_t
|
||
ORDER BY result_order;
|
||
|
||
v_first NUMBER;
|
||
v_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_dagboek NUMBER;
|
||
v_ml_district_key NUMBER := 621;
|
||
|
||
v_log VARCHAR2(1000);
|
||
v_log_prev VARCHAR2 (1000);
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
BEGIN
|
||
v_count := 0;
|
||
v_bestand := SUBSTR(p_applname, 1, 12);
|
||
v_crdnr := 'Q';
|
||
v_factuur_nr := 'Q';
|
||
v_dagboek := FLX.getflex('ALG', 1260, v_ml_district_key, 'D');
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
DELETE fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 61
|
||
AND fin_factuur_key IN (SELECT fin_factuur_key
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key <> 7);
|
||
|
||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||
-- deze keys gebruikt kunnen worden.
|
||
DELETE yask_exp_factuur
|
||
WHERE alg_district_key = v_ml_district_key; -- mindlabs
|
||
|
||
INSERT INTO yask_exp_factuur (fin_factuur_key, dagboek, alg_district_key)
|
||
( SELECT DISTINCT fin_factuur_key, dagboek, v_ml_district_key -- mindlabs
|
||
FROM yask_v_factuur_gegevens_veza
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND alg_district_key = v_ml_district_key -- mindlabs
|
||
AND fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
|
||
AND fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
|
||
);
|
||
|
||
-- Bepaal het boekstuknummer (key 1) met het hoogste nummer van dit jaar
|
||
|
||
SELECT MAX(fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_kenmerk_key = 61
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY');
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || v_dagboek || '0000');
|
||
END IF;
|
||
|
||
-- nu gaan we de boekstuknummer invullen
|
||
FOR rec IN c(v_ml_district_key)
|
||
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;
|
||
|
||
FOR rec1 IN c_sub (v_crdnr, v_factuur_nr, v_ml_district_key)
|
||
LOOP
|
||
BEGIN
|
||
-- Boekstuknummer aanmaken
|
||
yask.set_kenmerk('FIN', 61, rec1.fin_factuur_key, v_boekstuknummer, 0);
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- De view bevat voor alle subregels volgnummer 1. Deze gaan we nu omzetten naar echte volgnummers.
|
||
FOR rec IN cv
|
||
LOOP
|
||
BEGIN
|
||
v_first := substr(rec.result, 1,1);
|
||
IF v_first = 0 THEN
|
||
v_count := 0;
|
||
ELSE
|
||
v_count := v_count + 1;
|
||
END IF;
|
||
|
||
v_log_prev := v_log;
|
||
v_log := rec.result_order || ' | ' || rec.result_order;
|
||
INSERT INTO fac_rapport (
|
||
fac_rapport_regel,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_node)
|
||
VALUES (
|
||
v_count || substr (rec.result, 2),
|
||
SUBSTR(rec.result_order, 1,2) || SUBSTR(rec.result_order, 5,4) || to_char(1000+v_count), -- forceer sortering bij count > 9, alleen jaar en volgnummer van het boekstuknummer zijn interessant.
|
||
v_bestand);
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', SUBSTR (v_errormsg, 1, 1000), '');
|
||
fac.writelog (p_applname, 'I', 'Log: ' || SUBSTR (v_log, 1, 990), '');
|
||
fac.writelog (p_applname, 'I', 'Log_prev: ' || SUBSTR (v_log_prev, 1, 990), '');
|
||
INSERT INTO fac_rapport (
|
||
fac_rapport_regel,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_node)
|
||
VALUES (
|
||
'Fout: Export is afgebroken',
|
||
9999999999,
|
||
v_bestand);
|
||
-- Als er iets fout gegaan is willen we voorkomen dat de verwerk actie uitgevoerd wordt.
|
||
DELETE yask_exp_factuur
|
||
WHERE alg_district_key = v_ml_district_key; -- mindlabs
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_vw_exact_veza (
|
||
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_EXACTVEZA';
|
||
|
||
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
|
||
CREATE OR REPLACE PROCEDURE yask_select_vw_exact_veza (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c_fact (c_district_key NUMBER)
|
||
IS
|
||
SELECT f.fin_factuur_key
|
||
FROM yask_exp_factuur f
|
||
, yask_v_factuur_gegevens_veza fg
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND f.dagboek = fg.dagboek
|
||
AND f.alg_district_key = c_district_key -- mindlabs
|
||
AND fg.fin_factuur_statuses_key = 6;
|
||
|
||
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;
|
||
v_ml_district_key NUMBER := 621;
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
|
||
-- Facilitor user
|
||
v_aanvrager := 3;
|
||
|
||
v_logdate := SYSDATE;
|
||
|
||
v_bestand := 'VW_EXACTVEZA';
|
||
v_volgnr := 1;
|
||
-- Eerst opruiming
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
FOR rec1 IN c_fact(v_ml_district_key)
|
||
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;
|
||
DELETE yask_exp_factuur
|
||
WHERE alg_district_key = v_ml_district_key;
|
||
END;
|
||
/
|
||
|
||
|
||
-- Einde VEZA exact export
|
||
|
||
|
||
-- Rapportage voor contractmutaties. Het is nog niet bekend of dit Rabo/Yask specifiek is of dat dit rapport ooit eens naar
|
||
-- de VBXX package gaat. YASK#90843
|
||
-- We kijken naar het overzicht van dit jaar offset =0 of vorig jaar offset = -1.
|
||
CREATE OR REPLACE VIEW yask_v_rap_contractmutaties
|
||
AS
|
||
SELECT mld_melding_key,
|
||
mld_melding_externnr,
|
||
mld_opdr_key,
|
||
status,
|
||
alg_gebouw_upper,
|
||
alg_locatie_omschrijving,
|
||
alg_district_omschrijving,
|
||
prs_bedrijf_naam,
|
||
dienst,
|
||
subcat,
|
||
kantineregeling,
|
||
ruimtekantineregeling,
|
||
nencode,
|
||
grootboek,
|
||
bedrag_ex,
|
||
opslagperc,
|
||
verkoopprijs,
|
||
btw,
|
||
vk_bedrag_inc_btw,
|
||
ingangsdatum,
|
||
startverrekening,
|
||
DECODE(offset, 0, 'Actueel', -1, 'Vorig Jaar', 'Onbekend') periode,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 1, vk_bedrag_inc_btw /12) jan,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 2, vk_bedrag_inc_btw /12) feb,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 3, vk_bedrag_inc_btw /12) mrt,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 4, vk_bedrag_inc_btw /12) apr,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 5, vk_bedrag_inc_btw /12) mei,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 6, vk_bedrag_inc_btw /12) jun,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 7, vk_bedrag_inc_btw /12) jul,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 8, vk_bedrag_inc_btw /12) aug,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 9, vk_bedrag_inc_btw /12) sep,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 10, vk_bedrag_inc_btw /12) okt,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 11, vk_bedrag_inc_btw /12) nov,
|
||
vbxx.vk_bepaal_maandbedrag(ingangsdatum, startverrekening, offset, 12, vk_bedrag_inc_btw /12) dec
|
||
FROM (
|
||
SELECT m.mld_melding_key, --Contractmutatie nummer
|
||
m.mld_melding_externnr,
|
||
o.mld_opdr_key,
|
||
ms.mld_statuses_omschrijving status,
|
||
g.alg_gebouw_upper, --PRP-nummer
|
||
l.alg_locatie_omschrijving,
|
||
d.alg_district_omschrijving,
|
||
u.prs_bedrijf_naam, --Uitvoerende leverancier
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata ud, mld_kenmerk k
|
||
WHERE ud.fac_usrdata_key = FAC.safe_to_number (flx.getflex ('OPD', k.mld_kenmerk_key, o.mld_opdr_key))
|
||
AND k.mld_kenmerk_code = 'RABO_DIENST'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key) dienst, --Dienst
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata ud, mld_kenmerk k
|
||
WHERE ud.fac_usrdata_key = FAC.safe_to_number (flx.getflex ('OPD', k.mld_kenmerk_key, o.mld_opdr_key))
|
||
AND k.mld_kenmerk_code = 'RABO_SUBCAT'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key) subcat, -- Subcategorie
|
||
ks.prs_kostensoort_oms nencode, -- NEN-code
|
||
ks.prs_kostensoort_refcode grootboek, --Grootboekrekening
|
||
(SELECT DECODE(flx.getflex ('OPD', k.mld_kenmerk_key, o.mld_opdr_key), '1', 'Ja', 'Nee')
|
||
FROM mld_kenmerk k
|
||
WHERE k.mld_kenmerk_code = 'KANTINEREGELING'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key) kantineregeling, --Kantine regeling
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata ud, mld_kenmerk k
|
||
WHERE ud.fac_usrdata_key = FAC.safe_to_number (flx.getflex ('OPD', k.mld_kenmerk_key, o.mld_opdr_key))
|
||
AND k.mld_kenmerk_code = 'RUIMTEKANTINEREGELING'
|
||
AND k.mld_typeopdr_key = o.mld_typeopdr_key) ruimtekantineregeling, --Ruimte kantine regeling
|
||
o.mld_opdr_totaal_ex bedrag_ex, -- Inkoopwaarde bedrag per jaar ex BTW
|
||
COALESCE(k_o.opslagperc,0) opslagperc, -- NIET VOOR PBI EXTERN EBIT %
|
||
o.mld_opdr_totaal_ex * (1 + COALESCE(k_o.opslagperc,0) / 100) verkoopprijs, --Verkoopwaarde per jaar
|
||
o.btw, --BTW %
|
||
o.mld_opdr_totaal_ex * (1 + COALESCE(k_o.opslagperc,0) / 100) * (1 + btw / 100) vk_bedrag_inc_btw, --Bedrag per jaar incl BTW
|
||
o.ingangsdatum,
|
||
o.startverrekening,
|
||
p.offset
|
||
FROM (SELECT DECODE (ko.mld_kenmerk_code, 'BEDRAGHOOG', 21, 'BEDRAGLAAG', 9, 'BEDRAGNUL', 0, 21)
|
||
btw,
|
||
COALESCE (fac.safe_to_number (ko.mld_kenmerkopdr_waarde), mld_opdr_kosten)
|
||
mld_opdr_totaal_ex,
|
||
(SELECT fac.safe_to_date (ko.mld_kenmerkopdr_waarde, 'dd-mm-yyyy')
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_code = 'STARTMUT'
|
||
AND ko.mld_opdr_key = o.mld_opdr_key) ingangsdatum,
|
||
(SELECT fac.safe_to_date (ko.mld_kenmerkopdr_waarde, 'dd-mm-yyyy')
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_code = 'STARTVEREKENING'
|
||
AND ko.mld_opdr_key = o.mld_opdr_key) startverrekening,
|
||
o.*
|
||
FROM mld_opdr o,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_kenmerk_code IN ('BEDRAGHOOG', 'BEDRAGLAAG', 'BEDRAGNUL')) ko
|
||
WHERE ko.mld_opdr_key(+) = o.mld_opdr_key) o,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_statuses ms,
|
||
prs_kostensoort ks,
|
||
alg_v_onroerendgoed_gegevens og,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
prs_bedrijf u,
|
||
(SELECT 0 offset FROM DUAL UNION ALL SELECT -1 FROM DUAL) p,
|
||
(SELECT ko.mld_opdr_key, fac.safe_to_number (ko.mld_kenmerkopdr_waarde) opslagperc
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_kenmerk_code = 'OPSLAGPERC') k_o,
|
||
(SELECT ko.mld_opdr_key, fac.safe_to_number (ko.mld_kenmerkopdr_waarde) verkoopprijs
|
||
FROM mld_kenmerkopdr ko, mld_kenmerk k
|
||
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_kenmerk_code = 'VERKOOPPRIJS') k_v
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND og.alg_gebouw_key = g.alg_gebouw_key(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND o.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND o.mld_opdr_key = k_o.mld_opdr_key(+)
|
||
AND o.mld_opdr_key = k_v.mld_opdr_key(+)
|
||
AND o.mld_uitvoerende_keys = u.prs_bedrijf_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND ot.mld_typeopdr_code = 'CONTRACTMUTATIE'
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND EXTRACT(YEAR FROM COALESCE(startverrekening, SYSDATE)) <= EXTRACT(YEAR FROM SYSDATE) + p.offset);
|
||
|
||
-- export / bevriezen contractmutatieopdrachten waarvan de status is afgerond (9)
|
||
CREATE OR REPLACE PROCEDURE yask_select_verw_contractmut_opd (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT mld_opdr_key
|
||
FROM mld_opdr o, mld_typeopdr ot
|
||
WHERE mld_statusopdr_key = 9 AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_code = 'CONTRACTMUTATIE';
|
||
|
||
v_kenmerk_key NUMBER;
|
||
BEGIN
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
v_kenmerk_key := VBXX.get_kenmerk_key('OPD', rec.mld_opdr_key, 'STARTVEREKENING');
|
||
FLX.setflex('OPD', v_kenmerk_key, rec.mld_opdr_key, TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'MM'),-1), 'dd-mm-yyyy'));
|
||
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, NULL); -- Verwerkt
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-- om de baseline te zetten.
|
||
CREATE OR REPLACE PROCEDURE yask_select_verw_contractmut_mld (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT m.mld_melding_key
|
||
FROM mld_melding m, mld_stdmelding std
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND mld_melding_status = 5 -- afgemeld
|
||
AND mld_melding_afgerond = 1
|
||
AND std.mld_stdmelding_code = 'CONTRACTMUTATIE'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_opdr o
|
||
WHERE o.mld_melding_key = m.mld_melding_key AND mld_statusopdr_key NOT IN (1, 2, 7)); -- afgewezen, niet akkoord, verwerkt
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL); -- Verwerkt
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_v_noti_fin_factuur_note
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
'CUST01',
|
||
NULL,
|
||
p.prs_perslid_key,
|
||
'Er is een notitie aan factuur '
|
||
|| n.fin_factuur_key
|
||
|| ' toegevoegd.',
|
||
n.fin_factuur_key,
|
||
NULL
|
||
FROM fin_factuur_note n,
|
||
prs_perslid p,
|
||
fac_gebruikersgroep gg,
|
||
fac_groeprechten gr,
|
||
fac_functie f
|
||
WHERE p.prs_perslid_key = gg.prs_perslid_key
|
||
AND COALESCE (p.prs_perslid_srtnoti_mode, 0) <> 0
|
||
AND gg.fac_groep_key = gr.fac_groep_key
|
||
AND gr.fac_functie_key = f.fac_functie_key
|
||
AND f.fac_functie_code = 'WEB_USER04'
|
||
AND n.prs_perslid_key <> gg.prs_perslid_key
|
||
AND n.fin_factuur_note_aanmaak BETWEEN (SELECT fac_notificatie_job_nextrun
|
||
- fac_notificatie_job_interval
|
||
/ 24
|
||
FROM fac_notificatie_job
|
||
WHERE fac_notificatie_job_view =
|
||
'YASK_V_NOTI_FIN_FACTUUR_NOTE')
|
||
AND (SELECT fac_notificatie_job_nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE fac_notificatie_job_view =
|
||
'YASK_V_NOTI_FIN_FACTUUR_NOTE');
|
||
|
||
-- View tbv klant Renewi voor opdrachten die van contract naar mandaat zijn gezet
|
||
-- alleen voor tracing van OPDUPD
|
||
-- tracking moet deze tekst bevattnen contractopdracht --> mandaatopdracht.
|
||
|
||
CREATE OR REPLACE VIEW yask_v_conract2mandaatopd
|
||
(
|
||
mld_key,
|
||
mld_omschrijving,
|
||
opdracht_nr
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,m.mld_melding_omschrijving, m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM fac_tracking f, mld_melding m, mld_opdr o where m.mld_melding_key = o.mld_melding_key
|
||
AND m.prs_perslid_key= 10161
|
||
AND f.fac_tracking_refkey=o.mld_opdr_key
|
||
AND f.fac_srtnotificatie_key=76
|
||
AND lower(f.fac_tracking_oms) like '%contractopdracht --> mandaatopdracht%';
|
||
|
||
-- YASK#85310 Rapportage view voor catering waarbij de dezelfde kolommen niet getoond worden.
|
||
-- Kenmerksoort 41 bevat extra informatie over de artikelen.
|
||
CREATE OR REPLACE VIEW yask_v_rap_catering_overview
|
||
AS
|
||
SELECT TRUNC (rrr.res_rsv_ruimte_van) van,
|
||
res_rsv_ruimte_van,
|
||
l.alg_locatie_omschrijving,
|
||
alg_locatie_adres,
|
||
alg_ruimte_omschrijving,
|
||
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_reservering_nr,
|
||
res_rsv_ruimte_omschrijving,
|
||
res_rsv_ruimte_opmerking,
|
||
res_rsv_artikel_levering,
|
||
rra.res_rsv_artikel_aantal
|
||
|| ' * '
|
||
|| res_artikel_omschrijving
|
||
|| DECODE (ka.res_kenmerkartikel_waarde, NULL, NULL, ' (' || res_kenmerkartikel_waarde || ')') artikel,
|
||
rd.ins_discipline_omschrijving,
|
||
rd.ins_discipline_key fclt_3d_discipline_key
|
||
FROM res_reservering r,
|
||
res_rsv_ruimte rrr,
|
||
(SELECT res_rsv_ruimte_key, alg_ruimte_key
|
||
FROM res_v_rsv_ruimte_2_alg_ruimte r2a
|
||
UNION
|
||
SELECT res_rsv_ruimte_key, alg_ruimte_key
|
||
FROM res_rsv_ruimte
|
||
WHERE alg_ruimte_key IS NOT NULL) r2a,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
(SELECT res_kenmerkartikel_waarde, res_rsv_artikel_key
|
||
FROM res_kenmerkartikel kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 41) ka,
|
||
ins_tab_discipline rd
|
||
WHERE r.res_reservering_key = rrr.res_reservering_key
|
||
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key
|
||
AND r2a.alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND rra.res_rsv_artikel_key = ka.res_rsv_artikel_key(+)
|
||
AND ra.res_discipline_key = rd.ins_discipline_key
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rra.res_rsv_artikel_verwijder IS NULL;
|
||
|
||
|
||
-------------------------------------------------------------------------------
|
||
-- Importfunctie om contactpersonen bij bedrijven toe te voegen aan FACILITOR
|
||
--
|
||
-- Hopelijk wordt deze met 2021.1 opgenomen in de standaard
|
||
-------------------------------------------------------------------------------
|
||
CREATE OR REPLACE PROCEDURE yask_import_contactpersoon (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (400);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
v_count NUMBER;
|
||
BEGIN
|
||
|
||
v_errorhint := 'Generieke update';
|
||
-- de sequence array staat beschreven in FAC_PACF.SRC bij de fac_import_perslid_upd_body proc
|
||
prs.import_perslid (p_import_key,
|
||
'0;0;0;0;0;0;1;2;3;5;' ||
|
||
'4;0;0;0;0;7;8;9;0;11;' ||
|
||
'10;12;13;6;0;0;14;15;0;0;'||
|
||
'0;0;0;0;0;0;0;0;0;0;'||
|
||
'0;0;0;0;0;0',
|
||
'Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password;Bedrijf;Autorisatieprofiel%'
|
||
);
|
||
|
||
-- Klantspecifieke aanpassingen
|
||
v_errorhint := 'Controle op Bedrijf';
|
||
FOR rec IN (SELECT distinct prs_kenmerk1 FROM fac_imp_perslid)
|
||
LOOP
|
||
IF rec.prs_kenmerk1 IS NOT NULL
|
||
THEN
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND UPPER(prs_bedrijf_naam) = upper(rec.prs_kenmerk1);
|
||
|
||
IF v_count <> 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Bedrijf: ' || rec.prs_kenmerk1 || ' komt ' || v_count || ' keer voor in de lijst met bedrijven.', v_errorhint);
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
v_errorhint := 'Controle op Autorisatieprofiel';
|
||
FOR rec IN (SELECT prs_kenmerk2 FROM fac_imp_perslid)
|
||
LOOP
|
||
IF rec.prs_kenmerk2 IS NOT NULL
|
||
THEN
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM fac_groep
|
||
WHERE upper(fac_groep_omschrijving) = upper(rec.prs_kenmerk2);
|
||
|
||
IF v_count <> 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Autorisatieprofiel: ' || rec.prs_kenmerk2 || ' komt ' || v_count || ' keer voor in de lijst met autorisatieprofielen.', v_errorhint);
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END yask_import_contactpersoon;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_update_contactpersoon (
|
||
p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c
|
||
IS
|
||
SELECT * FROM fac_imp_perslid;
|
||
|
||
v_count NUMBER;
|
||
v_perslid_key NUMBER;
|
||
v_bedrijf_key NUMBER;
|
||
v_groep_key NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (400);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
BEGIN
|
||
-- generic update
|
||
prs.update_perslid (p_import_key, 'NR', 'A');
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'Zoek aangemaakt persoon.';
|
||
|
||
SELECT MAX (prs_perslid_key)
|
||
INTO v_perslid_key
|
||
FROM prs_perslid p
|
||
WHERE rec.prs_perslid_naam = p.prs_perslid_naam
|
||
AND COALESCE (rec.prs_perslid_voornaam, 'Voornaam') =
|
||
COALESCE (p.prs_perslid_voornaam, 'Voornaam')
|
||
AND COALESCE (rec.prs_perslid_tussenvoegsel, 'Tussenvoegsel') =
|
||
COALESCE (p.prs_perslid_tussenvoegsel, 'Tussenvoegsel')
|
||
AND COALESCE (rec.prs_perslid_voorletters, 'Voorletters') =
|
||
COALESCE (p.prs_perslid_voorletters, 'Voorletters')
|
||
AND p.prs_perslid_aanmaak > SYSDATE - 1
|
||
AND p.prs_perslid_verwijder IS NULL;
|
||
|
||
IF v_perslid_key IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Persoon: '
|
||
|| rec.prs_perslid_naam
|
||
|| '-'
|
||
|| rec.prs_perslid_voornaam
|
||
|| '-'
|
||
|| rec.prs_perslid_voorletters
|
||
|| ' kan niet gevonden worden.',
|
||
v_errorhint);
|
||
ELSE
|
||
v_errorhint := 'Zoek bedrijf.';
|
||
|
||
SELECT MAX (prs_bedrijf_key)
|
||
INTO v_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND UPPER (prs_bedrijf_naam) = UPPER (rec.prs_kenmerk1);
|
||
|
||
IF v_bedrijf_key IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Bedrijf: ' || rec.prs_kenmerk1 || ' kan niet gevonden worden.',
|
||
v_errorhint);
|
||
ELSE
|
||
INSERT INTO prs_contactpersoon (prs_contactpersoon_naam,
|
||
prs_contactpersoon_tussenv,
|
||
prs_contactpersoon_voorletters,
|
||
prs_contactpersoon_voornaam,
|
||
prs_contactpersoon_titel,
|
||
prs_contactpersoon_telefoon_1,
|
||
prs_contactpersoon_telefoon_2,
|
||
prs_contactpersoon_email,
|
||
prs_perslid_key,
|
||
prs_bedrijf_key)
|
||
VALUES (SUBSTR(rec.prs_perslid_naam, 1, 30),
|
||
rec.prs_perslid_tussenvoegsel,
|
||
rec.prs_perslid_voorletters,
|
||
rec.prs_perslid_voornaam,
|
||
rec.prs_perslid_titel,
|
||
rec.prs_perslid_telefoonnr,
|
||
rec.prs_perslid_mobiel,
|
||
rec.prs_perslid_email,
|
||
v_perslid_key,
|
||
v_bedrijf_key);
|
||
|
||
v_errorhint := 'Zoek autorisatiegroep.';
|
||
|
||
SELECT MAX (fac_groep_key)
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE UPPER (rec.prs_kenmerk2) = UPPER (fac_groep_omschrijving);
|
||
|
||
IF v_groep_key IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Autorisatiegroep: '
|
||
|| rec.prs_kenmerk2
|
||
|| ' kan niet gevonden worden.',
|
||
v_errorhint);
|
||
ELSE
|
||
INSERT INTO fac_gebruikersgroep (prs_perslid_key,
|
||
fac_groep_key)
|
||
VALUES (v_perslid_key, v_groep_key);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END yask_update_contactpersoon;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW yask_v_noti_cntreminder
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
par1,
|
||
par2,
|
||
xkey,
|
||
xemail,
|
||
xmobile,
|
||
fac_srtnotificatie_key,
|
||
attachments,
|
||
xsender,
|
||
prs_bedrijfadres_key
|
||
)
|
||
AS
|
||
SELECT '',
|
||
'',
|
||
c.prs_perslid_key_beh,
|
||
'Rappel: Contract '
|
||
|| c.cnt_contract_nummer_intern
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, '',
|
||
'.' || cnt_contract_versie)
|
||
|| ' ('
|
||
|| c.cnt_contract_omschrijving
|
||
|| ' '
|
||
|| b.prs_bedrijf_naam
|
||
|| ')'
|
||
|| ' moet uiterlijk per '
|
||
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
'DD-MM-YYYY')
|
||
|| ' worden verlengd of opgezegd.',
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
NULL,
|
||
NULL
|
||
xemail,
|
||
NULL
|
||
xmobile,
|
||
NULL
|
||
fac_srtnotificatie_key,
|
||
NULL
|
||
attachments,
|
||
NULL
|
||
xsender,
|
||
NULL
|
||
prs_bedrijfadres_key
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
|
||
AND cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
|
||
AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
|
||
UNION
|
||
SELECT '',
|
||
'',
|
||
c.prs_perslid_key_eig,
|
||
'Rappel: Contract '
|
||
|| c.cnt_contract_nummer_intern
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, '',
|
||
'.' || cnt_contract_versie)
|
||
|| ' ('
|
||
|| c.cnt_contract_omschrijving
|
||
|| ' '
|
||
|| b.prs_bedrijf_naam
|
||
|| ')'
|
||
|| ' moet uiterlijk per '
|
||
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
'DD-MM-YYYY')
|
||
|| ' worden verlengd of opgezegd.',
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
NULL,
|
||
NULL
|
||
xemail,
|
||
NULL
|
||
xmobile,
|
||
NULL
|
||
fac_srtnotificatie_key,
|
||
NULL
|
||
attachments,
|
||
NULL
|
||
xsender,
|
||
NULL
|
||
prs_bedrijfadres_key
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
|
||
AND cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND c.prs_perslid_key_eig IS NOT NULL
|
||
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
|
||
AND cnt.cnt_getopzegdatum (c.cnt_contract_key));
|
||
|
||
|
||
CREATE OR REPLACE VIEW yask_v_noti_ctrreminder
|
||
AS
|
||
SELECT 'CUST03' code,
|
||
NULL sender,
|
||
prs_perslid_key receiver,
|
||
'Taak "' || ins_srtcontrole_omschrijving || '" moet vandaag voor pand ' || ins_deel_omschrijving || ' uitgevoerd worden.' text,
|
||
ins_deel_key key,
|
||
NULL xkey
|
||
FROM (WITH
|
||
gepland
|
||
AS
|
||
(SELECT dsc.ins_deel_key, dsc.ins_srtcontrole_key, dsc.ins_deelsrtcontrole_plandatum
|
||
FROM ins_deelsrtcontrole dsc
|
||
WHERE dsc.ins_deelsrtcontrole_status = 0)
|
||
SELECT n.prs_perslid_key,
|
||
n.INS_SRTCONTROLE_KEY,
|
||
n.ins_deel_key,
|
||
n.ins_deel_omschrijving,
|
||
n.ins_srtcontrole_omschrijving,
|
||
g.ins_deelsrtcontrole_plandatum
|
||
FROM (SELECT p.prs_perslid_key,
|
||
sc.ins_srtcontrole_omschrijving,
|
||
dg.ins_deel_omschrijving,
|
||
dg.ins_deel_key,
|
||
sc.ins_srtcontrole_key
|
||
FROM ins_v_deel_gegevens dg,
|
||
ins_srtcontrole sc,
|
||
prs_perslid p,
|
||
fac_groeprechten gr,
|
||
fac_gebruikersgroep gg
|
||
WHERE dg.ins_srtdeel_key = sc.ins_srtinstallatie_key
|
||
AND dg.ins_discipline_omschrijving = 'Gebouw'
|
||
AND gr.ins_discipline_key = dg.ins_discipline_key
|
||
AND p.prs_perslid_key = gg.prs_perslid_key
|
||
AND gg.fac_groep_key = gr.fac_groep_key
|
||
AND gr.fac_groep_key = 1161 -- SGE_gebouw_inspecties
|
||
) n
|
||
JOIN gepland g
|
||
ON n.ins_deel_key = g.ins_deel_key(+) AND n.ins_srtcontrole_key = g.ins_srtcontrole_key(+))
|
||
WHERE TRUNC (COALESCE (ins_deelsrtcontrole_plandatum,
|
||
fac.nextcyclusdatedeel (ins_deel_key, ins_srtcontrole_key, 1)
|
||
)) =
|
||
TRUNC (SYSDATE)
|
||
GROUP BY prs_perslid_key, ins_srtcontrole_omschrijving, ins_deel_omschrijving, ins_deel_key;
|
||
|
||
-- Views voor het opleveren van bijlagen
|
||
CREATE OR REPLACE VIEW yask_v_export_factuur_bijlage
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_omschrijving,
|
||
r.alg_regio_omschrijving,
|
||
di.alg_district_omschrijving,
|
||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' alg_locatie_omschrijving,
|
||
g.alg_gebouw_code,
|
||
kf.fin_kenmerk_omschrijving,
|
||
b.fac_bijlagen_aanmaak,
|
||
b.fac_bijlagen_key,
|
||
di.alg_district_omschrijving
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(l.alg_locatie_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'')
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(g.alg_gebouw_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| CHR(92)
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(kf.fin_kenmerk_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| b.fac_bijlagen_filename
|
||
fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory)
|
||
LENGTH(
|
||
di.alg_district_omschrijving
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(l.alg_locatie_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'')
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(g.alg_gebouw_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| CHR(92)
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(kf.fin_kenmerk_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| b.fac_bijlagen_filename
|
||
) check_lengte
|
||
FROM fac_v_bijlagen b,
|
||
fin_factuur f,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_stdmelding sm,
|
||
mld_discipline d,
|
||
ins_srtdiscipline sd,
|
||
(SELECT m.mld_melding_key,
|
||
COALESCE (og.alg_gebouw_code, 'Geen gebouw') alg_gebouw_code
|
||
FROM mld_melding m,
|
||
alg_v_onroerendgoed_gegevens og
|
||
WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) ) g,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
alg_regio r,
|
||
fin_kenmerk kf
|
||
WHERE b.fac_bijlagen_refkey = f.fin_factuur_key
|
||
AND b.fac_bijlagen_module = 'FIN'
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_discipline_module = 'MLD'
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.mld_melding_key = g.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND di.alg_regio_key = r.alg_regio_key
|
||
AND b.fac_bijlagen_verwijder IS NULL
|
||
AND b.fac_bijlagen_kenmerk_key = kf.fin_kenmerk_key;
|
||
|
||
CREATE OR REPLACE VIEW yask_v_export_opdracht_bijlage
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_omschrijving,
|
||
ot.mld_typeopdr_omschrijving,
|
||
r.alg_regio_omschrijving,
|
||
di.alg_district_omschrijving,
|
||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' alg_locatie_omschrijving,
|
||
g.alg_gebouw_code,
|
||
COALESCE(km.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving) mld_kenmerk_omschrijving,
|
||
b.fac_bijlagen_aanmaak,
|
||
b.fac_bijlagen_key,
|
||
di.alg_district_omschrijving
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(l.alg_locatie_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'')
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(g.alg_gebouw_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| CHR(92)
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(COALESCE(km.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving) , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| b.fac_bijlagen_filename
|
||
fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory)
|
||
LENGTH(
|
||
di.alg_district_omschrijving
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(l.alg_locatie_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'')
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(g.alg_gebouw_code , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| CHR(92)
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
|| CHR(92)
|
||
|| REPLACE(REGEXP_REPLACE(COALESCE(km.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving) , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '')
|
||
|| CHR(92)
|
||
|| b.fac_bijlagen_filename
|
||
) check_lengte
|
||
FROM fac_v_bijlagen b,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
mld_stdmelding sm,
|
||
mld_discipline d,
|
||
ins_srtdiscipline sd,
|
||
(SELECT m.mld_melding_key,
|
||
COALESCE (og.alg_gebouw_code, 'Geen gebouw') alg_gebouw_code
|
||
FROM mld_melding m,
|
||
alg_v_onroerendgoed_gegevens og
|
||
WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) ) g,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
alg_regio r,
|
||
mld_kenmerk km,
|
||
mld_srtkenmerk sk
|
||
WHERE b.fac_bijlagen_refkey = o.mld_opdr_key
|
||
AND b.fac_bijlagen_module = 'MLD'
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_discipline_module = 'MLD'
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.mld_melding_key = g.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND di.alg_regio_key = r.alg_regio_key
|
||
AND b.fac_bijlagen_verwijder IS NULL
|
||
AND b.fac_bijlagen_kenmerk_key = km.mld_kenmerk_key
|
||
AND km.mld_kenmerk_niveau = 'O'
|
||
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
|
||
|
||
-- Import functie om cateringbestellingen vanuit Rabobank via een webservice (importfunctie) in te lezen. Per aanroep
|
||
-- wordt er <20><>n cateringregel meegegeven. De catering wordt in res_rsv_artikel records geplaatst.
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_import_rabo_catering (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;
|
||
v_error_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_skipfield VARCHAR2 (100);
|
||
-- De importvelden
|
||
v_startdatum_txt VARCHAR2 (1000);
|
||
v_einddatum_txt VARCHAR2 (1000);
|
||
v_startdatum DATE;
|
||
v_einddatum DATE;
|
||
v_id VARCHAR2 (1000);
|
||
v_omschrijving VARCHAR2 (1000);
|
||
v_kostenplaats_id VARCHAR2 (1000);
|
||
v_kostenplaats_oms VARCHAR2 (1000);
|
||
v_bedrag_hoog_txt VARCHAR2 (1000);
|
||
v_bedrag_hoog NUMBER(9,2);
|
||
v_bedrag_laag_txt VARCHAR2 (1000);
|
||
v_bedrag_laag NUMBER(9,2);
|
||
v_bedrag_nul_txt VARCHAR2 (1000);
|
||
v_bedrag_nul NUMBER(9,2);
|
||
v_gebouw_code VARCHAR2 (1000);
|
||
v_gebouw_key NUMBER(10);
|
||
v_leverancier VARCHAR2 (1000);
|
||
v_contactpersoon VARCHAR2 (1000);
|
||
v_aanvrager VARCHAR2 (1000);
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
|
||
-- Init
|
||
v_fielddelimitor := ';';
|
||
DELETE yask_imp_rabo_catering;
|
||
|
||
FOR rec1 IN c_cursor
|
||
LOOP
|
||
BEGIN
|
||
v_newline := REPLACE(rec1.fac_imp_file_line, CHR(34)); -- verijder dubbele quotes. Die verstoren het vinden van de velden.
|
||
v_aanduiding := v_newline;
|
||
v_error_count := 0;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_startdatum_txt);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_einddatum_txt);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_id);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostenplaats_id);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostenplaats_oms);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrag_hoog_txt);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrag_laag_txt);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrag_nul_txt);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_leverancier);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_contactpersoon);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_aanvrager);
|
||
|
||
-- voeg nieuwe records toe
|
||
-- en wijzig bestaande records
|
||
v_aanduiding := v_startdatum_txt
|
||
|| ' | '
|
||
|| v_id
|
||
|| ' | '
|
||
|| v_omschrijving
|
||
|| ' | '
|
||
|| v_kostenplaats_id
|
||
|| ' | '
|
||
|| v_kostenplaats_oms
|
||
|| ' | '
|
||
|| v_bedrag_hoog_txt
|
||
|| ' | '
|
||
|| v_bedrag_laag_txt
|
||
|| ' | '
|
||
|| v_bedrag_nul_txt
|
||
|| ' | '
|
||
|| v_gebouw_code
|
||
|| ' | '
|
||
|| v_leverancier
|
||
|| ' | '
|
||
|| v_contactpersoon;
|
||
|
||
v_errorhint := 'Controleer datum';
|
||
|
||
v_startdatum := FAC.safe_to_date(replace(replace(v_startdatum_txt, 'T', ' '), 'Z'), 'yyyy-mm-dd hh24:mi:ss');
|
||
IF (v_startdatum IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Geen geldige startdatum', v_startdatum_txt);
|
||
v_error_count := v_error_count + 1;
|
||
END IF;
|
||
|
||
v_einddatum := FAC.safe_to_date(replace(replace(v_einddatum_txt, 'T', ' '), 'Z'), 'yyyy-mm-dd hh24:mi:ss');
|
||
IF (v_einddatum IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Geen geldige einddatum', v_einddatum_txt);
|
||
v_error_count := v_error_count + 1;
|
||
END IF;
|
||
|
||
v_omschrijving := SUBSTR(v_omschrijving, 1, 60);
|
||
v_kostenplaats_id := SUBSTR(v_kostenplaats_id, 1, 30);
|
||
v_kostenplaats_oms := SUBSTR(v_kostenplaats_oms, 1, 60);
|
||
v_leverancier := SUBSTR(v_leverancier, 1, 100);
|
||
v_contactpersoon := SUBSTR(v_contactpersoon, 1, 100);
|
||
|
||
v_bedrag_hoog := FAC.safe_to_number(REPLACE(v_bedrag_hoog_txt, ',', '.'));
|
||
IF v_bedrag_hoog_txt IS NOT NULL AND v_bedrag_hoog IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Geen geldige bedrag hoog', v_bedrag_hoog_txt);
|
||
v_error_count := v_error_count + 1;
|
||
END IF;
|
||
|
||
v_bedrag_laag := FAC.safe_to_number(REPLACE(v_bedrag_laag_txt, ',', '.'));
|
||
IF v_bedrag_laag_txt IS NOT NULL AND v_bedrag_laag IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Geen geldige bedrag laag', v_bedrag_laag_txt);
|
||
v_error_count := v_error_count + 1;
|
||
END IF;
|
||
|
||
v_bedrag_nul := FAC.safe_to_number(REPLACE(v_bedrag_nul_txt, ',', '.'));
|
||
IF v_bedrag_nul_txt IS NOT NULL AND v_bedrag_nul IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Geen geldige bedrag nul', v_bedrag_nul_txt);
|
||
v_error_count := v_error_count + 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Controleer gebouw';
|
||
|
||
BEGIN
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND UPPER (alg_gebouw_code) =
|
||
UPPER (TRIM (v_gebouw_code));
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Gebouw kan niet gevonden worden.', v_gebouw_code);
|
||
v_error_count := v_error_count + 1;
|
||
END;
|
||
|
||
IF v_error_count = 0
|
||
THEN
|
||
|
||
INSERT INTO yask_imp_rabo_catering (datum,
|
||
einddatum,
|
||
id,
|
||
omschrijving,
|
||
kostenplaats_id,
|
||
kostenplaats_oms,
|
||
bedrag_hoog,
|
||
bedrag_laag,
|
||
bedrag_nul,
|
||
gebouw_key,
|
||
leverancier,
|
||
contactpersoon,
|
||
aanvrager)
|
||
VALUES (v_startdatum,
|
||
v_einddatum,
|
||
v_id,
|
||
v_omschrijving,
|
||
v_kostenplaats_id,
|
||
v_kostenplaats_oms,
|
||
v_bedrag_hoog,
|
||
v_bedrag_laag,
|
||
v_bedrag_nul,
|
||
v_gebouw_key,
|
||
v_leverancier,
|
||
v_contactpersoon,
|
||
v_aanvrager);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
SUBSTR (v_errormsg, 1, 1000),
|
||
v_errorhint || ' - ' || v_aanduiding);
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_update_rabo_catering (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c IS
|
||
SELECT * FROM yask_imp_rabo_catering;
|
||
|
||
v_reservering_key NUMBER;
|
||
v_rsv_ruimte_key NUMBER;
|
||
v_rsv_artikel_key NUMBER;
|
||
v_kostenplaatsgrp_key NUMBER;
|
||
v_kostenplaats_key NUMBER;
|
||
v_perslid_key NUMBER;
|
||
v_ruimte_key NUMBER;
|
||
v_kenmerk_key NUMBER;
|
||
v_discipline_key NUMBER;
|
||
v_rsv_ruimte_omschrijving_prev RES_RSV_RUIMTE.RES_RSV_RUIMTE_OMSCHRIJVING%TYPE;
|
||
v_ruimte_key_prev NUMBER;
|
||
v_rsv_ruimte_van_prev DATE;
|
||
v_rsv_ruimte_tot_prev DATE;
|
||
v_gebouw_code ALG_GEBOUW.ALG_GEBOUW_CODE%TYPE;
|
||
v_gebouw_code_prev ALG_GEBOUW.ALG_GEBOUW_CODE%TYPE;
|
||
v_tracking FAC_TRACKING.FAC_TRACKING_OMS%TYPE;
|
||
v_status_bo_key NUMBER;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
PROCEDURE add_catering (p_rsv_ruimte_key IN NUMBER, p_perslid_key IN NUMBER, p_artikel_code IN VARCHAR2, p_levering IN DATE, p_bedrag IN NUMBER)
|
||
AS
|
||
v_artikel_key NUMBER;
|
||
v_artikel_btw RES_ARTIKEL.RES_ARTIKEL_BTW%TYPE;
|
||
v_artikel_omschrijving RES_ARTIKEL.RES_ARTIKEL_OMSCHRIJVING%TYPE;
|
||
v_rsv_artikel_inkoopprijs RES_RSV_ARTIKEL.RES_RSV_ARTIKEL_INKOOPPRIJS%TYPE;
|
||
v_rsv_artikel_key NUMBER;
|
||
BEGIN
|
||
-- zoek het artikel op.
|
||
SELECT res_artikel_key, res_artikel_btw, res_artikel_omschrijving
|
||
INTO v_artikel_key, v_artikel_btw, v_artikel_omschrijving
|
||
FROM res_artikel
|
||
WHERE res_artikel_verwijder IS NULL
|
||
AND res_artikel_externnr = p_artikel_code;
|
||
|
||
BEGIN
|
||
-- Bestaat het artikel al?
|
||
SELECT res_rsv_artikel_key, res_rsv_artikel_inkoopprijs
|
||
INTO v_rsv_artikel_key, v_rsv_artikel_inkoopprijs
|
||
FROM res_rsv_artikel rra
|
||
WHERE rra.res_artikel_key = v_artikel_key
|
||
AND rra.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND rra.res_rsv_artikel_verwijder IS NULL;
|
||
|
||
IF COALESCE(p_bedrag, 0) = 0
|
||
THEN
|
||
DELETE FROM res_rsv_artikel WHERE res_rsv_artikel_key = v_rsv_artikel_key;
|
||
fac.trackaction('RESUPD', p_rsv_ruimte_key, p_perslid_key, NULL, 'Artikel: ' || v_artikel_omschrijving || ' is verwijderd.');
|
||
ELSE
|
||
IF p_bedrag <> v_rsv_artikel_inkoopprijs
|
||
THEN
|
||
UPDATE res_rsv_artikel
|
||
SET res_rsv_artikel_prijs = p_bedrag,
|
||
res_rsv_artikel_inkoopprijs = p_bedrag,
|
||
res_rsv_artikel_levering = p_levering
|
||
WHERE res_rsv_artikel_key = v_rsv_artikel_key;
|
||
vbxx.set_opslag_perc_cat(v_rsv_artikel_key);
|
||
fac.trackaction('RESUPD', p_rsv_ruimte_key, p_perslid_key, NULL, 'Artikel: ' || v_artikel_omschrijving || ' is gewijzigd.' || CHR(10)
|
||
|| 'Prijs: ' || v_rsv_artikel_inkoopprijs || ' --> ' || p_bedrag);
|
||
ELSE
|
||
-- Als de prijs niet is aangepast kan natuurlijk nog wel de datum aangepast zijn.
|
||
UPDATE res_rsv_artikel
|
||
SET res_rsv_artikel_levering = p_levering
|
||
WHERE res_rsv_artikel_key = v_rsv_artikel_key;
|
||
END IF;
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
IF COALESCE(p_bedrag, 0) <> 0
|
||
THEN
|
||
INSERT INTO res_rsv_artikel (res_rsv_ruimte_key, res_artikel_key, res_rsv_artikel_aantal, res_rsv_artikel_prijs, res_rsv_artikel_inkoopprijs, res_rsv_artikel_btw, res_rsv_artikel_levering, res_status_bo_key, res_rsv_artikel_afgemeld)
|
||
VALUES (p_rsv_ruimte_key, v_artikel_key, 1, p_bedrag, p_bedrag, v_artikel_btw, p_levering, 5, SYSDATE)
|
||
RETURNING res_rsv_artikel_key INTO v_rsv_artikel_key;
|
||
END IF;
|
||
vbxx.set_opslag_perc_cat(v_rsv_artikel_key);
|
||
END;
|
||
END;
|
||
|
||
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM fac_import
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
v_aanduiding := rec.id;
|
||
-- zoek de catalogus
|
||
v_errorhint := 'Zoek de catalogus';
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM res_discipline
|
||
WHERE ins_discipline_omschrijving = 'Rabobank - Catering';
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Catalogus kan niet gevonden worden.', rec.id);
|
||
RETURN; -- dan hebben we hier niets meer te zoeken.
|
||
END;
|
||
|
||
-- maak de artikelscope aan
|
||
INSERT INTO res_srtartikel_onrgoed (alg_onrgoed_key, alg_onrgoed_niveau, res_discipline_key)
|
||
SELECT rec.gebouw_key, 'G', v_discipline_key FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM res_srtartikel_onrgoed so
|
||
WHERE so.alg_onrgoed_key = rec.gebouw_key
|
||
AND so.res_discipline_key = v_discipline_key
|
||
AND so.alg_onrgoed_niveau = 'G');
|
||
|
||
-- zoek de kostenplaatsgroep
|
||
v_errorhint := 'Zoek de kostenplaatsgroep';
|
||
BEGIN
|
||
SELECT prs_kostenplaatsgrp_key
|
||
INTO v_kostenplaatsgrp_key
|
||
FROM prs_kostenplaatsgrp
|
||
WHERE prs_kostenplaatsgrp_oms = 'Rabobank';
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Kostenplaatsgroep kan niet gevonden worden.', rec.id);
|
||
RETURN; -- dan hebben we hier niets meer te zoeken.
|
||
END;
|
||
|
||
-- zoek de kostenplaats
|
||
v_errorhint := 'Zoek de kostenplaats';
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaatsgrp_key = v_kostenplaatsgrp_key
|
||
AND UPPER(prs_kostenplaats_nr) = UPPER(rec.kostenplaats_id);
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- De kostenplaats bestaat nog niet, dus dan maken we deze aan.
|
||
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module, prs_kostenplaats_begin, prs_kostenplaatsgrp_key)
|
||
VALUES (rec.kostenplaats_id, rec.kostenplaats_oms, 'PRJ', SYSDATE, v_kostenplaatsgrp_key)
|
||
RETURNING prs_kostenplaats_key INTO v_kostenplaats_key;
|
||
END;
|
||
|
||
-- zoek een ruimte voor de catering
|
||
v_errorhint := 'Zoek de ruimte onder het gebouw';
|
||
SELECT MIN(alg_ruimte_key)
|
||
INTO v_ruimte_key
|
||
FROM alg_verdieping v, alg_ruimte r
|
||
WHERE v.alg_gebouw_key = rec.gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_verwijder IS NULL;
|
||
|
||
IF v_ruimte_key IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Kostenplaatsgroep kan niet gevonden worden.', rec.id);
|
||
RETURN; -- dan hebben we hier niets meer te zoeken.
|
||
END IF;
|
||
|
||
-- Kenmerk key opzoeken van de externe referentie
|
||
v_errorhint := 'Zoek het kenmerk RABONUMMER';
|
||
SELECT res_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM res_kenmerk
|
||
WHERE res_kenmerk_code = 'RABONUMMER';
|
||
|
||
BEGIN
|
||
-- Kijk of de reservering al bestaat
|
||
SELECT rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_omschrijving, rrr.alg_ruimte_key, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot
|
||
INTO v_rsv_ruimte_key, v_reservering_key, v_rsv_ruimte_omschrijving_prev, v_ruimte_key_prev, v_rsv_ruimte_van_prev, v_rsv_ruimte_tot_prev
|
||
FROM res_rsv_ruimte rrr, res_kenmerkwaarde kw
|
||
WHERE rrr.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
|
||
AND kw.res_kenmerk_key = v_kenmerk_key
|
||
AND kw.res_kenmerkreservering_waarde = rec.id
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL;
|
||
|
||
SELECT MAX(res_status_bo_key)
|
||
INTO v_status_bo_key
|
||
FROM res_rsv_artikel rra
|
||
WHERE res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_rsv_ruimte_key = v_rsv_ruimte_key;
|
||
|
||
-- Controleer of de catering al verwerkt is. Dan accepteren we geen aanpassingen meer.
|
||
IF v_status_bo_key = 6
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Catering is doorgezet naar de leverancier en kan niet meer aangepast worden.', rec.id);
|
||
RETURN; -- dan hebben we hier niets meer te zoeken.
|
||
END IF;
|
||
|
||
v_errorhint := 'Pas de deelreservering aan';
|
||
UPDATE res_rsv_ruimte
|
||
SET res_rsv_ruimte_omschrijving = rec.omschrijving,
|
||
prs_kostenplaats_key = v_kostenplaats_key,
|
||
alg_ruimte_key = v_ruimte_key,
|
||
res_rsv_ruimte_van = rec.datum,
|
||
res_rsv_ruimte_tot = rec.einddatum
|
||
WHERE res_rsv_ruimte_key = v_rsv_ruimte_key;
|
||
|
||
-- Voeg tracking toe
|
||
IF v_rsv_ruimte_omschrijving_prev <> rec.omschrijving
|
||
THEN
|
||
v_tracking := CHR(10) || 'Omschrijving: ' || v_rsv_ruimte_omschrijving_prev || ' --> ' || rec.omschrijving;
|
||
END IF;
|
||
|
||
IF v_ruimte_key_prev <> v_ruimte_key
|
||
THEN
|
||
SELECT alg_gebouw_upper INTO v_gebouw_code_prev FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = v_ruimte_key_prev;
|
||
SELECT alg_gebouw_upper INTO v_gebouw_code FROM alg_v_ruimte_gegevens WHERE alg_ruimte_key = v_ruimte_key;
|
||
v_tracking := v_tracking || CHR(10) || 'Ruimte: ' || v_gebouw_code_prev || ' --> ' || v_gebouw_code;
|
||
END IF;
|
||
|
||
IF v_rsv_ruimte_van_prev <> rec.datum
|
||
THEN
|
||
v_tracking := v_tracking || CHR(10) || 'Van: ' || TO_CHAR(v_rsv_ruimte_van_prev, 'DD-MM-YYYY HH24:MI') || ' --> ' || TO_CHAR(rec.datum, 'DD-MM-YYYY HH24:MI');
|
||
END IF;
|
||
|
||
IF v_rsv_ruimte_tot_prev <> rec.einddatum
|
||
THEN
|
||
v_tracking := v_tracking || CHR(10) || 'Van: ' || TO_CHAR(v_rsv_ruimte_tot_prev, 'DD-MM-YYYY HH24:MI') || ' --> ' || TO_CHAR(rec.einddatum, 'DD-MM-YYYY HH24:MI');
|
||
END IF;
|
||
IF v_tracking IS NOT NULL
|
||
THEN
|
||
fac.trackaction('RESUPD', v_rsv_ruimte_key, v_perslid_key, NULL, 'Reservering ' || v_reservering_key || '/1 is gewijzigd' || v_tracking);
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errorhint := 'Voeg de reservering toe';
|
||
INSERT INTO res_reservering (res_reservering_aanmaak) VALUES (SYSDATE)
|
||
RETURNING res_reservering_key INTO v_reservering_key;
|
||
|
||
v_errorhint := 'Voeg de deelreservering toe';
|
||
INSERT INTO res_rsv_ruimte (res_reservering_key,
|
||
res_rsv_ruimte_volgnr,
|
||
res_rsv_ruimte_omschrijving,
|
||
prs_kostenplaats_key,
|
||
res_rsv_ruimte_contact_key,
|
||
res_rsv_ruimte_host_key,
|
||
alg_ruimte_key,
|
||
res_rsv_ruimte_cvab_mode,
|
||
res_activiteit_key,
|
||
res_rsv_ruimte_van,
|
||
res_rsv_ruimte_tot,
|
||
res_status_fo_key)
|
||
VALUES (v_reservering_key,
|
||
1,
|
||
rec.omschrijving,
|
||
v_kostenplaats_key,
|
||
v_perslid_key, -- API user
|
||
v_perslid_key,
|
||
v_ruimte_key,
|
||
1,
|
||
150,
|
||
rec.datum,
|
||
rec.einddatum,
|
||
2)
|
||
RETURNING res_rsv_ruimte_key INTO v_rsv_ruimte_key;
|
||
END;
|
||
|
||
-- Kenmerk toevoegen met de externe referentie
|
||
v_errorhint := 'Zet het kenmerk RABONUMMER';
|
||
FLX.setflex ('RES', v_kenmerk_key, v_rsv_ruimte_key, NULL, rec.id);
|
||
|
||
-- Kenmerk toevoegen met leverancier
|
||
v_errorhint := 'Zoek het kenmerk SUPPLIER';
|
||
SELECT res_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM res_kenmerk
|
||
WHERE res_kenmerk_code = 'SUPPLIER';
|
||
|
||
v_errorhint := 'Zet het kenmerk SUPPLIER';
|
||
FLX.setflex ('RES', v_kenmerk_key, v_rsv_ruimte_key, NULL, rec.leverancier);
|
||
|
||
-- Kenmerk toevoegen met contactpersoon
|
||
v_errorhint := 'Zoek het kenmerk CONTACTPERSOON';
|
||
SELECT res_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM res_kenmerk
|
||
WHERE res_kenmerk_code = 'CONTACTPERSOON';
|
||
|
||
v_errorhint := 'Zet het kenmerk CONTACTPERSOON';
|
||
FLX.setflex ('RES', v_kenmerk_key, v_rsv_ruimte_key, NULL, rec.contactpersoon);
|
||
|
||
-- Kenmerk toevoegen met contactpersoon
|
||
v_errorhint := 'Zoek het kenmerk AANVRAGER';
|
||
SELECT res_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM res_kenmerk
|
||
WHERE res_kenmerk_code = 'AANVRAGER';
|
||
|
||
v_errorhint := 'Zet het kenmerk AANVRAGER';
|
||
FLX.setflex ('RES', v_kenmerk_key, v_rsv_ruimte_key, NULL, rec.aanvrager);
|
||
|
||
-- Nu nog de catering toevoegen
|
||
v_errorhint := 'Voeg de catering toe';
|
||
add_catering (v_rsv_ruimte_key, v_perslid_key, 'RABOCATHOOG', rec.datum, rec.bedrag_hoog);
|
||
add_catering (v_rsv_ruimte_key, v_perslid_key, 'RABOCATLAAG', rec.datum, rec.bedrag_laag);
|
||
add_catering (v_rsv_ruimte_key, v_perslid_key, 'RABOCATNUL', rec.datum, rec.bedrag_nul);
|
||
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
SUBSTR (v_errormsg, 1, 1000),
|
||
v_errorhint || ' - ' || v_aanduiding);
|
||
END;
|
||
/
|
||
|
||
--
|
||
--
|
||
--
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_import_rabo_automaten (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_errorcount NUMBER;
|
||
v_ongeldig BOOLEAN;
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_skipfield VARCHAR2 (100);
|
||
v_header1 VARCHAR2 (1000);
|
||
v_header2 VARCHAR2 (1000);
|
||
v_header3 VARCHAR2 (1000);
|
||
v_header4 VARCHAR2 (1000);
|
||
v_header5 VARCHAR2 (1000);
|
||
-- De importvelden
|
||
v_plaats VARCHAR2(100);
|
||
v_adres VARCHAR2(100);
|
||
v_pandcode VARCHAR2(100);
|
||
v_bedrag_txt VARCHAR2(100);
|
||
v_bedrag NUMBER(11,2);
|
||
v_btw_txt VARCHAR2(100);
|
||
v_btw NUMBER(11,2);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_onderwerp VARCHAR2(100);
|
||
header_found BOOLEAN;
|
||
v_header_chk1 BOOLEAN;
|
||
v_header_chk2 BOOLEAN;
|
||
v_header_jaar NUMBER;
|
||
v_header_maand NUMBER;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE yask_imp_rabo_automaten;
|
||
|
||
-- Init
|
||
header_found := FALSE;
|
||
v_fielddelimitor := ';';
|
||
v_errorcount := 0;
|
||
|
||
-- Controle of de import al gedaan is voor de vorige maand
|
||
|
||
FOR rec IN c_cursor
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_aanduiding := v_newline;
|
||
v_locatie_key := NULL;
|
||
v_gebouw_key := NULL;
|
||
v_ongeldig := FALSE;
|
||
|
||
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_nr (v_newline, v_fielddelimitor, 1, v_header1);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 2, v_header2);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 3, v_header3);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_header4);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 5, v_header5);
|
||
|
||
IF header_found = FALSE
|
||
THEN
|
||
CASE rec.fac_imp_file_index
|
||
WHEN 1 THEN IF v_header1 = 'Variabele kosten losse condimenten:' THEN v_header_chk1 := TRUE; v_onderwerp := v_header1; END IF;
|
||
IF v_header1 = 'Variabele kosten consumpties:' THEN v_header_chk1 := TRUE; v_onderwerp := v_header1; END IF;
|
||
WHEN 3 THEN IF v_header1 = 'Year' THEN v_header_jaar := FAC.safe_to_number(v_header2); END IF; -- losse condimenten
|
||
WHEN 4 THEN IF v_header1 = 'Month' THEN v_header_maand := FAC.safe_to_number(v_header2); END IF; -- losse condimenten
|
||
IF v_header1 = 'YEAR' THEN v_header_jaar := FAC.safe_to_number(v_header2); END IF; -- consumpties
|
||
WHEN 5 THEN IF v_header1 = 'PERIOD' THEN v_header_maand := FAC.safe_to_number(v_header2); END IF; -- consumpties
|
||
WHEN 7 THEN IF v_header1 = 'Pandcodes' AND v_header2 = 'City' AND v_header3 = 'Street' AND v_header4 = 'BTW%' AND (v_header5 = 'Total' OR v_header5 = 'Totaal') THEN v_header_chk2 := TRUE; END IF; -- losse condimenten
|
||
WHEN 8 THEN IF v_header1 = 'Pandcode' AND v_header2 = 'CITY_SHIP_TO' AND v_header3 = 'STREET_SHIP_TO' AND v_header4 = 'Total' THEN v_header_chk2 := TRUE; END IF; -- consumpties
|
||
ELSE NULL;
|
||
END CASE;
|
||
IF v_header_chk1 = TRUE
|
||
AND v_header_chk2 = TRUE
|
||
AND v_header_jaar IS NOT NULL
|
||
AND v_header_maand IS NOT NULL
|
||
THEN
|
||
header_found := TRUE;
|
||
END IF;
|
||
ELSIF v_header1 <> 'Grand Total' AND v_header1 <> 'Eindtotaal'
|
||
THEN
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 1, v_pandcode);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 2, v_plaats);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 3, v_adres);
|
||
IF v_onderwerp = 'Variabele kosten losse condimenten:'
|
||
THEN
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_btw_txt);
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 5, v_bedrag_txt);
|
||
ELSE
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 4, v_bedrag_txt);
|
||
v_btw_txt := '0,09';
|
||
END IF;
|
||
|
||
-- voeg nieuwe records toe
|
||
-- en wijzig bestaande records
|
||
v_aanduiding := v_pandcode || '|' || v_plaats || ' | ' || v_adres || ' | ' || v_btw_txt || ' | ' || v_bedrag_txt;
|
||
|
||
v_errorhint := 'Zoek het juiste gebouw op';
|
||
BEGIN
|
||
SELECT l.alg_locatie_key, g.alg_gebouw_key
|
||
INTO v_locatie_key, v_gebouw_key
|
||
FROM alg_gebouw g, alg_locatie l, alg_district d
|
||
WHERE g.alg_gebouw_verwijder IS NULL
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND alg_locatie_verwijder IS NULL
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND d.alg_regio_key = 121 -- RABOBANK.
|
||
AND UPPER (alg_gebouw_code) = UPPER (TRIM (v_pandcode));
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Gebouw kan niet gevonden worden.', v_aanduiding);
|
||
v_ongeldig := TRUE;
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Meerdere gebouwen gevonden.', v_aanduiding);
|
||
v_ongeldig := TRUE;
|
||
END;
|
||
|
||
-- controle op btw
|
||
v_errorhint := 'Controle op btw';
|
||
v_btw_txt := replace (v_btw_txt, ',','.'); -- Komma omzetten naar punten als decimaal scheidingsteken.
|
||
v_btw := FAC.safe_to_number(v_btw_txt)*100;
|
||
|
||
-- controle op bedrag
|
||
v_errorhint := 'Controle op bedrag';
|
||
v_bedrag_txt := replace(
|
||
replace(
|
||
replace(
|
||
replace(v_bedrag_txt, '<EFBFBD>') -- Euroteken vervangen
|
||
,' ') -- Er komen spaties voor tussen een min-teken en het bedrag.
|
||
,'.') -- Duizendtal scheidingsteken vervangen
|
||
,',','.'); -- Komma omzetten naar punten als decimaal scheidingsteken.
|
||
|
||
v_bedrag := FAC.safe_to_number(v_bedrag_txt);
|
||
IF v_bedrag IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Bedrag is geen nummer', v_aanduiding || '(' || v_bedrag_txt || ')');
|
||
v_ongeldig := TRUE;
|
||
END IF;
|
||
|
||
v_errorhint := 'Vul de importtabel';
|
||
IF v_ongeldig = FALSE AND v_bedrag <> 0
|
||
THEN
|
||
INSERT INTO yask_imp_rabo_automaten (onderwerp,
|
||
alg_locatie_key,
|
||
alg_gebouw_key,
|
||
periode,
|
||
bedrag,
|
||
btw)
|
||
VALUES (v_onderwerp,
|
||
v_locatie_key,
|
||
v_gebouw_key,
|
||
v_header_jaar || '-' || v_header_maand,
|
||
v_bedrag,
|
||
v_btw);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
IF header_found = FALSE
|
||
THEN
|
||
IF v_header_chk1 THEN v_aanduiding := v_aanduiding || ' ' || 'TRUE';
|
||
ELSE v_aanduiding := v_aanduiding || ' ' || 'FALSE';
|
||
END IF;
|
||
|
||
IF v_header_chk2 THEN v_aanduiding := v_aanduiding || '|' || 'TRUE';
|
||
ELSE v_aanduiding := v_aanduiding || '|' || 'FALSE';
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'E', 'Geen geldige header gevonden.', v_aanduiding || ' | ' || v_header_jaar || ' | ' || v_header_maand);
|
||
END IF;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_update_rabo_automaten (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT onderwerp,
|
||
alg_locatie_key,
|
||
alg_gebouw_key,
|
||
periode,
|
||
SUM(bedrag) bedrag,
|
||
btw
|
||
FROM yask_imp_rabo_automaten
|
||
GROUP BY onderwerp,
|
||
alg_locatie_key,
|
||
alg_gebouw_key,
|
||
periode,
|
||
btw
|
||
ORDER BY alg_gebouw_key;
|
||
|
||
CURSOR c_mld (c_stdmelding_key IN NUMBER)
|
||
IS
|
||
SELECT mld_melding_key, mld_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = c_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND TRUNC(SYSDATE, 'MM') -1 > mld_melding_einddatum;
|
||
|
||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
v_errorcount NUMBER;
|
||
v_ongeldig BOOLEAN;
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_stdmelding_key NUMBER (10);
|
||
v_typeopdr_key NUMBER (10);
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_melding_key NUMBER (10);
|
||
v_melding_status NUMBER (1);
|
||
v_bedrijf_key NUMBER (10);
|
||
v_contact_key NUMBER (10);
|
||
v_opdr_key NUMBER (10);
|
||
v_gebouw_key_prev NUMBER(10);
|
||
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||
v_rb_goedgekeurd_kenmerk_key NUMBER (10);
|
||
v_typefactuur_kenmerk_key NUMBER (10);
|
||
v_usrdata_key NUMBER (10);
|
||
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||
v_stdmelding_t_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
|
||
v_stdmelding_t_accepttijd mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
|
||
v_stdmelding_code mld_stdmelding.mld_stdmelding_code%TYPE;
|
||
v_melding_datum DATE;
|
||
v_melding_einddatum DATE;
|
||
v_opdr_datumbegin DATE;
|
||
v_opdr_einddatum DATE;
|
||
|
||
PROCEDURE add_kenmerk_btw_bedrag (p_opdr_key IN NUMBER, p_typeopdr_key IN NUMBER, p_btw IN NUMBER, p_bedrag IN NUMBER)
|
||
AS
|
||
v_btw_bedrag_kenmerk_key NUMBER;
|
||
v_kenmerk_code VARCHAR2(20);
|
||
BEGIN
|
||
CASE p_btw
|
||
WHEN 21 THEN v_kenmerk_code := 'BEDRAGHOOG';
|
||
WHEN 9 THEN v_kenmerk_code := 'BEDRAGLAAG';
|
||
WHEN 0 THEN v_kenmerk_code := 'BEDRAGNUL';
|
||
ELSE RETURN;
|
||
END CASE;
|
||
|
||
-- zoek het kenmerk op.
|
||
SELECT mld_kenmerk_key
|
||
INTO v_btw_bedrag_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = v_kenmerk_code
|
||
AND k.mld_typeopdr_key = p_typeopdr_key;
|
||
|
||
FLX.setflex('OPD', v_btw_bedrag_kenmerk_key, p_opdr_key, p_bedrag);
|
||
END;
|
||
|
||
BEGIN
|
||
-- initialisatie
|
||
v_gebouw_key_prev := -1;
|
||
v_opdr_kosten := 0;
|
||
v_errormsg := 'Opdrachttype opzoeken om de opdracht onder aan te maken';
|
||
SELECT mld_typeopdr_key
|
||
INTO v_typeopdr_key
|
||
FROM mld_typeopdr ot
|
||
WHERE UPPER(ot.mld_typeopdr_omschrijving) like 'REVERSED%'; -- ReversedBilling
|
||
|
||
v_errormsg := 'Opzoeken van de user waaronder we de meldingen en opdrachten gaan aanmaken';
|
||
SELECT prs_perslid_key, prs_kostenplaats_key
|
||
INTO v_perslid_key, v_kostenplaats_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_RABO_AUTOMATEN';
|
||
|
||
FOR rec IN c_cursor
|
||
LOOP
|
||
IF v_gebouw_key_prev <> rec.alg_gebouw_key
|
||
THEN
|
||
-- Bij vervolregels met een ander btw tarief gaan we geen meldingen en opdrachten aanmaken.
|
||
IF v_stdmelding_key IS NULL
|
||
THEN
|
||
IF rec.onderwerp = 'Variabele kosten losse condimenten:'
|
||
THEN
|
||
v_stdmelding_code := 'RB_RABO_AUTOMATEN_CONDIMENTEN';
|
||
ELSIF rec.onderwerp = 'Variabele kosten consumpties:'
|
||
THEN
|
||
v_stdmelding_code := 'RB_RABO_AUTOMATEN_CONSUMPTIES';
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'Fout bij aanmaken catering RB opdracht', 'Melding niet gevonden voor: ' || rec.onderwerp);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- zoek de standaardmelding
|
||
v_errormsg := 'Standaard melding met code RB_RABO_AUTOMATEN opzoeken';
|
||
SELECT mld_stdmelding_key,
|
||
mld_stdmelding_t_uitvoertijd,
|
||
mld_stdmelding_t_accepttijd
|
||
INTO v_stdmelding_key,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_code = v_stdmelding_code;
|
||
|
||
-- Dan zijn de grensdata ook nog niet geinitialiseerd.
|
||
v_melding_datum := TO_DATE(SUBSTR(rec.periode, 1,4) || '0101', 'YYYYMMDD');
|
||
v_melding_einddatum := ADD_MONTHS(v_melding_datum, 12) -1;
|
||
v_opdr_datumbegin := TO_DATE(rec.periode || '-01', 'YYYY-MM-DD');
|
||
v_opdr_einddatum := ADD_MONTHS(v_opdr_datumbegin, 1) -1;
|
||
|
||
END IF;
|
||
|
||
BEGIN
|
||
-- controleer of er een openstaande melding is voor dit gebouw
|
||
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
|
||
SELECT mld_melding_key, mld_melding_status
|
||
INTO v_melding_key, v_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND v_opdr_datumbegin BETWEEN mld_melding_datum AND mld_melding_einddatum;
|
||
|
||
IF v_melding_status = 0 OR v_melding_status = 2
|
||
THEN
|
||
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- dan gaan we een nieuwe melding aanmaken
|
||
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
|
||
INSERT INTO mld_melding (mld_melding_omschrijving,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key,
|
||
mld_stdmelding_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_einddatum,
|
||
mld_melding_datum,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_melding_t_accepttijd,
|
||
mld_meldbron_key,
|
||
mld_melding_module,
|
||
mld_melding_spoed)
|
||
VALUES ('Automaat ReversedBilling boekingen',
|
||
v_perslid_key, -- API catering rabobank
|
||
v_kostenplaats_key, -- Rabobank (kostenplaats van bovenstaande user)
|
||
v_stdmelding_key,
|
||
rec.alg_locatie_key,
|
||
rec.alg_gebouw_key,
|
||
v_melding_einddatum,
|
||
v_melding_datum,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd,
|
||
5,
|
||
'MLD',
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
|
||
END;
|
||
|
||
-- maak een opdracht aan voor dit gebouw en deze periode
|
||
BEGIN
|
||
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
|
||
-- de user, onder wie we de melding en opdracht aanmaken, de contactpersoon is.
|
||
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || v_perslid_key;
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_contactpersoon cp
|
||
WHERE cp.prs_perslid_key = v_perslid_key;
|
||
|
||
-- Nu op zoek naar het ReversedBilling contract
|
||
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
|
||
SELECT cnt_contract_key
|
||
INTO v_contact_key
|
||
FROM cnt_contract c, cnt_discipline d
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
|
||
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
|
||
AND v_opdr_datumbegin BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
|
||
|
||
|
||
-- Controleer of er al een opdracht bestaat.
|
||
v_errormsg := 'Controleer of RB opdracht al bestaat. ' || rec.onderwerp || ' | ' || rec.alg_locatie_key || ' | ' || rec.alg_gebouw_key || ' | ' || rec.periode || '-' || rec.bedrag;
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM mld_opdr o, mld_melding m
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND m.mld_stdmelding_key = v_stdmelding_key
|
||
AND o.mld_opdr_datumbegin = v_opdr_datumbegin
|
||
AND o.mld_opdr_einddatum = v_opdr_einddatum;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
|
||
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
|
||
|
||
v_errormsg := 'Maak opdracht aan';
|
||
|
||
-- maak opdracht aan om cateringfactuur van leverancier te matchen
|
||
INSERT INTO mld_opdr (mld_melding_key,
|
||
prs_kostenplaats_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key,
|
||
prs_perslid_key,
|
||
cnt_contract_key,
|
||
mld_uitvoerende_keys,
|
||
mld_opdr_datumbegin,
|
||
mld_opdr_einddatum,
|
||
mld_opdr_module,
|
||
mld_opdr_omschrijving,
|
||
mld_opdr_bedrijfopdr_volgnr)
|
||
VALUES ( v_melding_key,
|
||
v_kostenplaats_key, -- Rabobank kostenplaats
|
||
5, -- uitgegeven
|
||
v_typeopdr_key,
|
||
v_perslid_key, -- Maas import user
|
||
v_contact_key,
|
||
v_bedrijf_key,
|
||
v_opdr_datumbegin,
|
||
v_opdr_einddatum,
|
||
'MLD',
|
||
rec.onderwerp || ' ' || TO_CHAR (v_opdr_datumbegin, 'MON-YYYY'),
|
||
v_mld_opdr_bedrijfopdr_volgnr)
|
||
RETURNING mld_opdr_key INTO v_opdr_key;
|
||
|
||
v_errormsg := 'Update opdracht status';
|
||
-- meld de opdracht af
|
||
MLD.setopdrachtstatus (v_opdr_key, 6, v_perslid_key);
|
||
MLD.updatemeldingstatus (v_melding_key, 0, v_perslid_key); -- Facilitor
|
||
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
|
||
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
|
||
-- en zet hem nog op afgerond
|
||
MLD.setopdrachtstatus (v_opdr_key, 9, v_perslid_key);
|
||
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
|
||
SELECT mld_kenmerk_key
|
||
INTO v_rb_goedgekeurd_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
|
||
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: TYPEFACTUUR';
|
||
SELECT k.mld_kenmerk_key, k.mld_kenmerk_default
|
||
INTO v_typefactuur_kenmerk_key, v_usrdata_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TYPEFACTUUR'
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk TYPEFACTUUR op B zetten';
|
||
-- Dit is de default van het kenmerk
|
||
FLX.setflex('OPD', v_typefactuur_kenmerk_key, v_opdr_key, v_usrdata_key);
|
||
VBXX.set_opslag_perc (v_opdr_key);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'RB opdracht bestaat al', rec.onderwerp || ' | ' || rec.alg_locatie_key || ' | ' || rec.alg_gebouw_key || ' | ' || rec.periode || '-' || rec.bedrag);
|
||
v_opdr_key := NULL; -- Als de opdracht al bestaat gaan we er niets meer op aanpassen.
|
||
END IF;
|
||
END;
|
||
|
||
|
||
v_gebouw_key_prev := rec.alg_gebouw_key;
|
||
v_opdr_kosten := 0;
|
||
END IF;
|
||
-- Aanpassen van het kenmerk per btw tarief en het totaalbedrag invullen. Dit doen we alleen als de opdracht niet al bestond.
|
||
IF v_opdr_key IS NOT NULL
|
||
THEN
|
||
-- Voeg het kenmerk met het bedrag toe en tel het totaal voor de opdracht op.
|
||
add_kenmerk_btw_bedrag (v_opdr_key, v_typeopdr_key, rec.btw, rec.bedrag);
|
||
v_opdr_kosten := v_opdr_kosten + rec.bedrag;
|
||
UPDATE mld_opdr SET mld_opdr_kosten = v_opdr_kosten, mld_opdr_materiaal = v_opdr_kosten WHERE mld_opdr_key = v_opdr_key;
|
||
VBXX.set_verkoopprijs (v_opdr_key);
|
||
END IF;
|
||
|
||
END LOOP;
|
||
|
||
-- afmelden oude meldingen
|
||
FOR rec_mld IN c_mld (v_stdmelding_key)
|
||
LOOP
|
||
v_errormsg := 'Afmelden oude melding ' || rec_mld.mld_melding_key;
|
||
mld.setmeldingstatus (rec_mld.mld_melding_key, 5, NULL);
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errorhint := v_errormsg;
|
||
v_errormsg := 'Fout bij aanmaken catering RB opdracht' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
--
|
||
-- Import van RB facturen mbt gladheidsbestrijding
|
||
--
|
||
-- Opbouw van het bestand is:
|
||
--Bijlage voor facturatie;;;;;;
|
||
--;;;;;;
|
||
--Februari 2025 Week 6 t/m 9;;;Week 6;Week 7;Week 8;Totaal
|
||
--;;;;;;Totaal
|
||
--PRP nummer;Plaats;Straat;;;;
|
||
--PRP-000375;Alkmaar;Robonsbosweg 5; <20> 385,00 ; <20> 1.155,00 ; <20> 770,00 ; <20> 2.310,00
|
||
--PRP-000974;Almelo;De Werf 5; <20> 660,00 ; <20> 990,00 ; <20> 660,00 ; <20> 2.310,00
|
||
--
|
||
-- Belangrijk om te weten is dat de kolom totaal niet altijd op dezelfde plek staat.
|
||
|
||
CREATE OR REPLACE VIEW yask_v_rabo_imp_gladheid
|
||
AS
|
||
SELECT fac_import_key,
|
||
fac_imp_csv_key,
|
||
fac_imp_csv_index,
|
||
(SELECT TO_DATE (SUBSTR (fac_imp_csv_col01, 1, INSTR (fac_imp_csv_col01, ' ') - 1), 'Month')
|
||
FROM fac_imp_csv im
|
||
WHERE im.fac_import_key = i.fac_import_key AND fac_imp_csv_index = 3) maand,
|
||
REPLACE (
|
||
REPLACE (
|
||
REPLACE (
|
||
REPLACE (CASE
|
||
WHEN (SELECT fac_imp_csv_col07
|
||
FROM fac_imp_csv i7
|
||
WHERE i7.fac_import_key = i.fac_import_key AND fac_imp_csv_index = 3) = 'Totaal'
|
||
THEN
|
||
i.fac_imp_csv_col07
|
||
WHEN (SELECT fac_imp_csv_col08
|
||
FROM fac_imp_csv i8
|
||
WHERE i8.fac_import_key = i.fac_import_key AND fac_imp_csv_index = 3) = 'Totaal'
|
||
THEN
|
||
i.fac_imp_csv_col08
|
||
WHEN (SELECT fac_imp_csv_col09
|
||
FROM fac_imp_csv i9
|
||
WHERE i9.fac_import_key = i.fac_import_key AND fac_imp_csv_index = 3) = 'Totaal'
|
||
THEN
|
||
i.fac_imp_csv_col09
|
||
WHEN (SELECT fac_imp_csv_col10
|
||
FROM fac_imp_csv i10
|
||
WHERE i10.fac_import_key = i.fac_import_key AND fac_imp_csv_index = 3) = 'Totaal'
|
||
THEN
|
||
i.fac_imp_csv_col10
|
||
ELSE
|
||
'Onbekend'
|
||
END,
|
||
'<EFBFBD>') -- Euroteken vervangen
|
||
,
|
||
' ') -- Er komen spaties voor tussen een min-teken en het bedrag.
|
||
,
|
||
'.') -- Duizendtal scheidingsteken vervangen
|
||
,
|
||
',',
|
||
'.') -- Komma omzetten naar punten als decimaal scheidingsteken.
|
||
totaal,
|
||
fac_imp_csv_col01 prp,
|
||
fac_imp_csv_col02 plaats,
|
||
fac_imp_csv_col03 adres,
|
||
fac_imp_csv_col20 alg_locatie_key,
|
||
fac_imp_csv_col21 alg_gebouw_key
|
||
FROM fac_imp_csv i
|
||
WHERE i.fac_imp_csv_col01 LIKE 'PRP-%';
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_import_rabo_gladheid (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT *
|
||
FROM yask_v_rabo_imp_gladheid
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_csv_index;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
v_errorcount NUMBER;
|
||
v_aanduiding VARCHAR (200);
|
||
v_ongeldig BOOLEAN;
|
||
v_count NUMBER;
|
||
v_totaal NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- De importvelden
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
BEGIN
|
||
-- Init
|
||
v_totaal := 0;
|
||
-- Controle of de import al gedaan is voor de vorige maand
|
||
FOR rec IN c_cursor
|
||
LOOP
|
||
BEGIN
|
||
v_locatie_key := NULL;
|
||
v_gebouw_key := NULL;
|
||
v_ongeldig := FALSE;
|
||
v_aanduiding := rec.prp || '|' || rec.plaats || '|' || rec.adres || '|' || rec.totaal;
|
||
|
||
v_errorhint := 'Zoek het juiste gebouw op';
|
||
BEGIN
|
||
SELECT l.alg_locatie_key, g.alg_gebouw_key
|
||
INTO v_locatie_key, v_gebouw_key
|
||
FROM alg_gebouw g, alg_locatie l, alg_district d
|
||
WHERE g.alg_gebouw_verwijder IS NULL
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND alg_locatie_verwijder IS NULL
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND d.alg_regio_key = 121 -- RABOBANK.
|
||
AND UPPER (alg_gebouw_code) = UPPER (TRIM (rec.prp));
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Gebouw kan niet gevonden worden.', v_aanduiding);
|
||
v_ongeldig := TRUE;
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Meerdere gebouwen gevonden.', v_aanduiding);
|
||
v_ongeldig := TRUE;
|
||
END;
|
||
|
||
IF FAC.safe_to_number(rec.totaal) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Bedrag is geen nummer', v_aanduiding || '(' || rec.totaal || ')');
|
||
v_ongeldig := TRUE;
|
||
END IF;
|
||
|
||
v_errorhint := 'Vul de csv import tabel aan met locatie en gebouw key';
|
||
IF v_ongeldig = FALSE
|
||
THEN
|
||
UPDATE fac_imp_csv SET fac_imp_csv_col20 = v_locatie_key,
|
||
fac_imp_csv_col21 = v_gebouw_key
|
||
WHERE fac_imp_csv_key = rec.fac_imp_csv_key;
|
||
v_totaal := v_totaal + COALESCE(FAC.safe_to_number(rec.totaal), 0);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Totaal ingelezen bedrag: ' || v_totaal, NULL);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_update_rabo_gladheid (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT *
|
||
FROM yask_v_rabo_imp_gladheid
|
||
WHERE fac_import_key = p_import_key
|
||
AND FAC.safe_to_number(totaal) IS NOT NULL
|
||
ORDER BY fac_imp_csv_index;
|
||
|
||
CURSOR c_mld (c_stdmelding_key IN NUMBER)
|
||
IS
|
||
SELECT mld_melding_key, mld_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = c_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND TRUNC(SYSDATE, 'MM') -1 > mld_melding_einddatum;
|
||
|
||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
v_errorcount NUMBER;
|
||
v_ongeldig BOOLEAN;
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_stdmelding_key NUMBER (10);
|
||
v_typeopdr_key NUMBER (10);
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_melding_key NUMBER (10);
|
||
v_melding_status NUMBER (1);
|
||
v_bedrijf_key NUMBER (10);
|
||
v_contact_key NUMBER (10);
|
||
v_opdr_key NUMBER (10);
|
||
v_gebouw_key_prev NUMBER(10);
|
||
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||
v_rb_goedgekeurd_kenmerk_key NUMBER (10);
|
||
v_typefactuur_kenmerk_key NUMBER (10);
|
||
v_usrdata_key NUMBER (10);
|
||
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||
v_stdmelding_t_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
|
||
v_stdmelding_t_accepttijd mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
|
||
v_stdmelding_code mld_stdmelding.mld_stdmelding_code%TYPE;
|
||
v_melding_datum DATE;
|
||
v_melding_einddatum DATE;
|
||
v_opdr_datumbegin DATE;
|
||
v_opdr_einddatum DATE;
|
||
|
||
PROCEDURE add_kenmerk_btw_bedrag (p_opdr_key IN NUMBER, p_typeopdr_key IN NUMBER, p_btw IN NUMBER, p_bedrag IN NUMBER)
|
||
AS
|
||
v_btw_bedrag_kenmerk_key NUMBER;
|
||
v_kenmerk_code VARCHAR2(20);
|
||
BEGIN
|
||
CASE p_btw
|
||
WHEN 21 THEN v_kenmerk_code := 'BEDRAGHOOG';
|
||
WHEN 9 THEN v_kenmerk_code := 'BEDRAGLAAG';
|
||
WHEN 0 THEN v_kenmerk_code := 'BEDRAGNUL';
|
||
ELSE RETURN;
|
||
END CASE;
|
||
|
||
-- zoek het kenmerk op.
|
||
SELECT mld_kenmerk_key
|
||
INTO v_btw_bedrag_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = v_kenmerk_code
|
||
AND k.mld_typeopdr_key = p_typeopdr_key;
|
||
|
||
FLX.setflex('OPD', v_btw_bedrag_kenmerk_key, p_opdr_key, p_bedrag);
|
||
END;
|
||
|
||
BEGIN
|
||
-- initialisatie
|
||
v_gebouw_key_prev := -1;
|
||
v_opdr_kosten := 0;
|
||
v_errormsg := 'Opdrachttype opzoeken om de opdracht onder aan te maken';
|
||
SELECT mld_typeopdr_key
|
||
INTO v_typeopdr_key
|
||
FROM mld_typeopdr ot
|
||
WHERE ot.mld_typeopdr_code = 'REVERSEDBILLING'; -- ReversedBilling
|
||
|
||
v_errormsg := 'Opzoeken van de user waaronder we de meldingen en opdrachten gaan aanmaken';
|
||
SELECT prs_perslid_key, prs_kostenplaats_key
|
||
INTO v_perslid_key, v_kostenplaats_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_RABO_GLADHEIDSBESTRIJDING';
|
||
|
||
FOR rec IN c_cursor
|
||
LOOP
|
||
IF v_gebouw_key_prev <> rec.alg_gebouw_key AND rec.alg_gebouw_key IS NOT NULL
|
||
THEN
|
||
-- Bij vervolregels met een ander btw tarief gaan we geen meldingen en opdrachten aanmaken.
|
||
IF v_stdmelding_key IS NULL
|
||
THEN
|
||
v_stdmelding_code := 'RB_RABO_GLADHEIDSBESTRIJDING';
|
||
-- zoek de standaardmelding
|
||
v_errormsg := 'Standaard melding met code RB_RABO_GLADHEIDSBESTRIJDING opzoeken';
|
||
SELECT mld_stdmelding_key,
|
||
mld_stdmelding_t_uitvoertijd,
|
||
mld_stdmelding_t_accepttijd
|
||
INTO v_stdmelding_key,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_code = v_stdmelding_code;
|
||
|
||
-- Dan zijn de grensdata ook nog niet geinitialiseerd.
|
||
v_errormsg := 'Initialiseren grensdata: ' || rec.maand;
|
||
v_melding_datum := TRUNC(rec.maand,'yyyy');
|
||
v_melding_einddatum := ADD_MONTHS(v_melding_datum, 12) -1;
|
||
v_opdr_datumbegin := rec.maand;
|
||
v_opdr_einddatum := ADD_MONTHS(v_opdr_datumbegin, 1) -1;
|
||
END IF;
|
||
|
||
BEGIN
|
||
-- controleer of er een openstaande melding is voor dit gebouw
|
||
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
|
||
SELECT mld_melding_key, mld_melding_status
|
||
INTO v_melding_key, v_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND v_opdr_datumbegin BETWEEN mld_melding_datum AND mld_melding_einddatum;
|
||
|
||
IF v_melding_status = 0 OR v_melding_status = 2
|
||
THEN
|
||
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- dan gaan we een nieuwe melding aanmaken
|
||
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
|
||
INSERT INTO mld_melding (mld_melding_omschrijving,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key,
|
||
mld_stdmelding_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_einddatum,
|
||
mld_melding_datum,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_melding_t_accepttijd,
|
||
mld_meldbron_key,
|
||
mld_melding_module,
|
||
mld_melding_spoed)
|
||
VALUES ('Gladheid ReversedBilling boekingen',
|
||
v_perslid_key, -- API catering rabobank
|
||
v_kostenplaats_key, -- Rabobank (kostenplaats van bovenstaande user)
|
||
v_stdmelding_key,
|
||
rec.alg_locatie_key,
|
||
rec.alg_gebouw_key,
|
||
v_melding_einddatum,
|
||
v_melding_datum,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd,
|
||
5,
|
||
'MLD',
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
|
||
END;
|
||
|
||
-- maak een opdracht aan voor dit gebouw en deze periode
|
||
BEGIN
|
||
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
|
||
-- de user, onder wie we de melding en opdracht aanmaken, de contactpersoon is.
|
||
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || v_perslid_key;
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_contactpersoon cp
|
||
WHERE cp.prs_perslid_key = v_perslid_key;
|
||
|
||
-- Nu op zoek naar het ReversedBilling contract
|
||
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
|
||
SELECT cnt_contract_key
|
||
INTO v_contact_key
|
||
FROM cnt_contract c, cnt_discipline d
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
|
||
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
|
||
AND v_opdr_datumbegin BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
|
||
|
||
|
||
-- Controleer of er al een opdracht bestaat.
|
||
v_errormsg := 'Controleer of RB opdracht al bestaat. ' || rec.prp || ' | ' || rec.plaats || ' | ' || rec.maand || '-' || rec.totaal;
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM mld_opdr o, mld_melding m
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND m.mld_stdmelding_key = v_stdmelding_key
|
||
AND o.mld_opdr_datumbegin = v_opdr_datumbegin
|
||
AND o.mld_opdr_einddatum = v_opdr_einddatum;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
|
||
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
|
||
|
||
v_errormsg := 'Maak opdracht aan';
|
||
|
||
-- maak opdracht aan om cateringfactuur van leverancier te matchen
|
||
INSERT INTO mld_opdr (mld_melding_key,
|
||
prs_kostenplaats_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key,
|
||
prs_perslid_key,
|
||
cnt_contract_key,
|
||
mld_uitvoerende_keys,
|
||
mld_opdr_datumbegin,
|
||
mld_opdr_einddatum,
|
||
mld_opdr_module,
|
||
mld_opdr_omschrijving,
|
||
mld_opdr_bedrijfopdr_volgnr)
|
||
VALUES ( v_melding_key,
|
||
v_kostenplaats_key, -- Rabobank kostenplaats
|
||
5, -- uitgegeven
|
||
v_typeopdr_key,
|
||
v_perslid_key, -- Maas import user
|
||
v_contact_key,
|
||
v_bedrijf_key,
|
||
v_opdr_datumbegin,
|
||
v_opdr_einddatum,
|
||
'MLD',
|
||
'Variabele kosten gladheidsbestrijding' || ' ' || TO_CHAR (v_opdr_datumbegin, 'MON-YYYY'),
|
||
v_mld_opdr_bedrijfopdr_volgnr)
|
||
RETURNING mld_opdr_key INTO v_opdr_key;
|
||
|
||
v_errormsg := 'Update opdracht status';
|
||
-- meld de opdracht af
|
||
MLD.setopdrachtstatus (v_opdr_key, 6, v_perslid_key);
|
||
MLD.updatemeldingstatus (v_melding_key, 0, v_perslid_key); -- Facilitor
|
||
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
|
||
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
|
||
-- en zet hem nog op afgerond
|
||
MLD.setopdrachtstatus (v_opdr_key, 9, v_perslid_key);
|
||
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
|
||
SELECT mld_kenmerk_key
|
||
INTO v_rb_goedgekeurd_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
|
||
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: TYPEFACTUUR';
|
||
SELECT k.mld_kenmerk_key, k.mld_kenmerk_default
|
||
INTO v_typefactuur_kenmerk_key, v_usrdata_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TYPEFACTUUR'
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk TYPEFACTUUR op B zetten: ' || v_typefactuur_kenmerk_key || '-' || v_opdr_key || '-' || v_usrdata_key;
|
||
-- Dit is de default van het kenmerk
|
||
FLX.setflex('OPD', v_typefactuur_kenmerk_key, v_opdr_key, v_usrdata_key);
|
||
VBXX.set_opslag_perc (v_opdr_key);
|
||
v_errormsg := 'Einde Loop ';
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'RB opdracht bestaat al', 'Gladheid' || ' | ' || rec.prp || ' | ' || rec.plaats || ' | ' || rec.maand || '-' || rec.totaal);
|
||
v_opdr_key := NULL; -- Als de opdracht al bestaat gaan we er niets meer op aanpassen.
|
||
END IF;
|
||
END;
|
||
|
||
|
||
v_gebouw_key_prev := rec.alg_gebouw_key;
|
||
v_opdr_kosten := 0;
|
||
END IF;
|
||
-- Aanpassen van het kenmerk per btw tarief en het totaalbedrag invullen. Dit doen we alleen als de opdracht niet al bestond.
|
||
IF v_opdr_key IS NOT NULL AND rec.alg_gebouw_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Voeg het kenmerk met het btw bedrag toe aan de opdracht ' || rec.totaal;
|
||
-- Voeg het kenmerk met het bedrag toe en tel het totaal voor de opdracht op.
|
||
add_kenmerk_btw_bedrag (v_opdr_key, v_typeopdr_key, 21, rec.totaal);
|
||
v_opdr_kosten := v_opdr_kosten + rec.totaal;
|
||
UPDATE mld_opdr SET mld_opdr_kosten = v_opdr_kosten, mld_opdr_materiaal = v_opdr_kosten WHERE mld_opdr_key = v_opdr_key;
|
||
VBXX.set_verkoopprijs (v_opdr_key);
|
||
END IF;
|
||
|
||
END LOOP;
|
||
|
||
-- afmelden oude meldingen
|
||
FOR rec_mld IN c_mld (v_stdmelding_key)
|
||
LOOP
|
||
v_errormsg := 'Afmelden oude melding ' || rec_mld.mld_melding_key;
|
||
mld.setmeldingstatus (rec_mld.mld_melding_key, 5, NULL);
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errorhint := v_errormsg;
|
||
v_errormsg := 'Fout bij aanmaken gladheid RB opdracht' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
-- inlezen van de kosten op sanitaire middelen. Deze worden door CWS aangeboden. Het bestand ziet er als volgt uit:
|
||
/*
|
||
Periode 2025-01
|
||
Project ID PRP code Delivery Location Delivery Location Street Number Postcode City Item Number (AX) Item Number (AX) Item Number (AX) Aantal Prijs per stuk Prijs Januari BTW
|
||
104409-1001 PRP-000406 LO1002000530 Rabobank IJsseldelta Willemskade 1 # 8011 AC Zwolle Foam M 5480000 CWS foam soap Best standard 500ml 3 <09> 6,85 <09> 20,55 21,50%
|
||
104409-1001 PRP-000406 LO1002000530 Rabobank IJsseldelta Willemskade 1 # 8011 AC Zwolle FoldPaper C272300 CWS folded paper Frottee extra recycling C-fold 2-ply white 20 <09> 1,05 <09> 21,00 21,50%
|
||
104409-1001 PRP-000406 LO1002000530 Rabobank IJsseldelta Willemskade 1 # 8011 AC Zwolle Foam M 5480000 CWS foam soap Best standard 500ml 3 <09> 6,85 <09> 20,55 21,50%
|
||
104409-1001 PRP-000406 LO1002000530 Rabobank IJsseldelta Willemskade 1 # 8011 AC Zwolle FoldPaper C272300 CWS folded paper Frottee extra recycling C-fold 2-ply white 20 <09> 1,05 <09> 21,00 21,50%
|
||
*/
|
||
-- Onderstaande view telt de bedragen per gebouw op en zorgt ervoor dat na de import de gebouw en locatie key ingevuld zijn in de csv.
|
||
|
||
CREATE OR REPLACE VIEW yask_v_rabo_imp_sanitair
|
||
AS
|
||
SELECT fac_import_key,
|
||
MIN (fac_imp_csv_key)
|
||
fac_imp_csv_key,
|
||
MIN (fac_imp_csv_index)
|
||
fac_imp_csv_index,
|
||
(SELECT TO_DATE (fac_imp_csv_col02, 'YYYY-MM')
|
||
FROM fac_imp_csv im
|
||
WHERE im.fac_import_key = i.fac_import_key AND fac_imp_csv_index = 1 AND UPPER (fac_imp_csv_col01) = 'PERIODE')
|
||
maand,
|
||
SUM (FAC.safe_to_number (REPLACE (REPLACE (REPLACE (REPLACE (fac_imp_csv_col14, '<EFBFBD>') -- Euroteken vervangen
|
||
, ' ') -- Er komen spaties voor tussen een min-teken en het bedrag.
|
||
, '.') -- Duizendtal scheidingsteken vervangen
|
||
, ',', '.')))
|
||
totaal,
|
||
fac_imp_csv_col02
|
||
prp,
|
||
fac_imp_csv_col08
|
||
plaats,
|
||
fac_imp_csv_col05
|
||
adres,
|
||
fac_imp_csv_col20
|
||
alg_locatie_key,
|
||
fac_imp_csv_col21
|
||
alg_gebouw_key
|
||
FROM fac_imp_csv i
|
||
WHERE i.fac_imp_csv_col02 LIKE 'PRP-%'
|
||
GROUP BY fac_imp_csv_col02,
|
||
fac_import_key,
|
||
fac_imp_csv_col02,
|
||
fac_imp_csv_col08,
|
||
fac_imp_csv_col05,
|
||
fac_imp_csv_col20,
|
||
fac_imp_csv_col21;
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_import_rabo_sanitair (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT *
|
||
FROM yask_v_rabo_imp_sanitair
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_csv_index;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
v_errorcount NUMBER;
|
||
v_aanduiding VARCHAR (200);
|
||
v_ongeldig BOOLEAN;
|
||
v_count NUMBER;
|
||
v_totaal NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- De importvelden
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
BEGIN
|
||
-- Init
|
||
v_totaal := 0;
|
||
-- Controle of de import al gedaan is voor de vorige maand
|
||
FOR rec IN c_cursor
|
||
LOOP
|
||
BEGIN
|
||
v_locatie_key := NULL;
|
||
v_gebouw_key := NULL;
|
||
v_ongeldig := FALSE;
|
||
v_aanduiding := rec.prp || '|' || rec.plaats || '|' || rec.adres || '|' || rec.totaal;
|
||
|
||
v_errorhint := 'Zoek het juiste gebouw op';
|
||
BEGIN
|
||
SELECT l.alg_locatie_key, g.alg_gebouw_key
|
||
INTO v_locatie_key, v_gebouw_key
|
||
FROM alg_gebouw g, alg_locatie l, alg_district d
|
||
WHERE g.alg_gebouw_verwijder IS NULL
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND alg_locatie_verwijder IS NULL
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND d.alg_regio_key = 121 -- RABOBANK.
|
||
AND UPPER (alg_gebouw_code) = UPPER (TRIM (rec.prp));
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Gebouw kan niet gevonden worden.', v_aanduiding);
|
||
v_ongeldig := TRUE;
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Meerdere gebouwen gevonden.', v_aanduiding);
|
||
v_ongeldig := TRUE;
|
||
END;
|
||
|
||
IF FAC.safe_to_number(rec.totaal) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Bedrag is geen nummer', v_aanduiding || '(' || rec.totaal || ')');
|
||
v_ongeldig := TRUE;
|
||
END IF;
|
||
|
||
v_errorhint := 'Vul de csv import tabel aan met locatie en gebouw key';
|
||
IF v_ongeldig = FALSE
|
||
THEN
|
||
UPDATE fac_imp_csv SET fac_imp_csv_col20 = v_locatie_key,
|
||
fac_imp_csv_col21 = v_gebouw_key
|
||
WHERE fac_imp_csv_key = rec.fac_imp_csv_key;
|
||
v_totaal := v_totaal + COALESCE(FAC.safe_to_number(rec.totaal), 0);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Totaal ingelezen bedrag: ' || v_totaal, NULL);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_update_rabo_sanitair (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT maand,
|
||
sum(totaal) totaal,
|
||
prp,
|
||
max(plaats) plaats,
|
||
max(alg_locatie_key) alg_locatie_key,
|
||
max(alg_gebouw_key) alg_gebouw_key
|
||
FROM yask_v_rabo_imp_sanitair
|
||
WHERE fac_import_key = p_import_key
|
||
AND FAC.safe_to_number(totaal) IS NOT NULL
|
||
GROUP by maand, prp
|
||
ORDER BY alg_gebouw_key;
|
||
|
||
CURSOR c_mld (c_stdmelding_key IN NUMBER)
|
||
IS
|
||
SELECT mld_melding_key, mld_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = c_stdmelding_key -- Verzamelmelding Sanitair
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND TRUNC(SYSDATE, 'MM') -1 > mld_melding_einddatum;
|
||
|
||
v_aanduiding VARCHAR2 (1000); -- Import line
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
v_errorcount NUMBER;
|
||
v_ongeldig BOOLEAN;
|
||
v_count NUMBER;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_stdmelding_key NUMBER (10);
|
||
v_typeopdr_key NUMBER (10);
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_melding_key NUMBER (10);
|
||
v_melding_status NUMBER (1);
|
||
v_bedrijf_key NUMBER (10);
|
||
v_contact_key NUMBER (10);
|
||
v_opdr_key NUMBER (10);
|
||
v_gebouw_key_prev NUMBER(10);
|
||
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
|
||
v_rb_goedgekeurd_kenmerk_key NUMBER (10);
|
||
v_typefactuur_kenmerk_key NUMBER (10);
|
||
v_usrdata_key NUMBER (10);
|
||
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||
v_opdr_kosten_totaal mld_opdr.mld_opdr_kosten%TYPE;
|
||
v_stdmelding_t_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
|
||
v_stdmelding_t_accepttijd mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
|
||
v_stdmelding_code mld_stdmelding.mld_stdmelding_code%TYPE;
|
||
v_melding_datum DATE;
|
||
v_melding_einddatum DATE;
|
||
v_opdr_datumbegin DATE;
|
||
v_opdr_einddatum DATE;
|
||
|
||
PROCEDURE add_kenmerk_btw_bedrag (p_opdr_key IN NUMBER, p_typeopdr_key IN NUMBER, p_btw IN NUMBER, p_bedrag IN NUMBER)
|
||
AS
|
||
v_btw_bedrag_kenmerk_key NUMBER;
|
||
v_kenmerk_code VARCHAR2(20);
|
||
BEGIN
|
||
CASE p_btw
|
||
WHEN 21 THEN v_kenmerk_code := 'BEDRAGHOOG';
|
||
WHEN 9 THEN v_kenmerk_code := 'BEDRAGLAAG';
|
||
WHEN 0 THEN v_kenmerk_code := 'BEDRAGNUL';
|
||
ELSE RETURN;
|
||
END CASE;
|
||
|
||
-- zoek het kenmerk op.
|
||
SELECT mld_kenmerk_key
|
||
INTO v_btw_bedrag_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = v_kenmerk_code
|
||
AND k.mld_typeopdr_key = p_typeopdr_key;
|
||
|
||
FLX.setflex('OPD', v_btw_bedrag_kenmerk_key, p_opdr_key, p_bedrag);
|
||
END;
|
||
|
||
BEGIN
|
||
-- initialisatie
|
||
v_gebouw_key_prev := -1;
|
||
v_opdr_kosten := 0;
|
||
v_opdr_kosten_totaal := 0;
|
||
|
||
v_errormsg := 'Opdrachttype opzoeken om de opdracht onder aan te maken';
|
||
SELECT mld_typeopdr_key
|
||
INTO v_typeopdr_key
|
||
FROM mld_typeopdr ot
|
||
WHERE ot.mld_typeopdr_code = 'REVERSEDBILLING'; -- ReversedBilling
|
||
|
||
v_errormsg := 'Opzoeken van de user waaronder we de meldingen en opdrachten gaan aanmaken';
|
||
SELECT prs_perslid_key, prs_kostenplaats_key
|
||
INTO v_perslid_key, v_kostenplaats_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_RABO_SANITAIR';
|
||
|
||
FOR rec IN c_cursor
|
||
LOOP
|
||
IF v_gebouw_key_prev <> rec.alg_gebouw_key AND rec.alg_gebouw_key IS NOT NULL
|
||
THEN
|
||
-- Bij vervolregels met een ander btw tarief gaan we geen meldingen en opdrachten aanmaken.
|
||
IF v_stdmelding_key IS NULL
|
||
THEN
|
||
v_stdmelding_code := 'RB_RABO_SANITAIR';
|
||
-- zoek de standaardmelding
|
||
v_errormsg := 'Standaard melding met code RB_RABO_SANITAIR opzoeken';
|
||
SELECT mld_stdmelding_key,
|
||
mld_stdmelding_t_uitvoertijd,
|
||
mld_stdmelding_t_accepttijd
|
||
INTO v_stdmelding_key,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_code = v_stdmelding_code;
|
||
|
||
-- Dan zijn de grensdata ook nog niet geinitialiseerd.
|
||
v_errormsg := 'Initialiseren grensdata: ' || rec.maand;
|
||
v_melding_datum := TRUNC(rec.maand,'yyyy');
|
||
v_melding_einddatum := ADD_MONTHS(v_melding_datum, 12) -1;
|
||
v_opdr_datumbegin := rec.maand;
|
||
v_opdr_einddatum := ADD_MONTHS(v_opdr_datumbegin, 1) -1;
|
||
END IF;
|
||
|
||
BEGIN
|
||
-- controleer of er een openstaande melding is voor dit gebouw
|
||
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
|
||
SELECT mld_melding_key, mld_melding_status
|
||
INTO v_melding_key, v_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
|
||
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
|
||
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND v_opdr_datumbegin BETWEEN mld_melding_datum AND mld_melding_einddatum;
|
||
|
||
IF v_melding_status = 0 OR v_melding_status = 2
|
||
THEN
|
||
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- dan gaan we een nieuwe melding aanmaken
|
||
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
|
||
INSERT INTO mld_melding (mld_melding_omschrijving,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_key,
|
||
mld_stdmelding_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_einddatum,
|
||
mld_melding_datum,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_melding_t_accepttijd,
|
||
mld_meldbron_key,
|
||
mld_melding_module,
|
||
mld_melding_spoed)
|
||
VALUES ('Sanitair ReversedBilling boekingen',
|
||
v_perslid_key, -- API catering rabobank
|
||
v_kostenplaats_key, -- Rabobank (kostenplaats van bovenstaande user)
|
||
v_stdmelding_key,
|
||
rec.alg_locatie_key,
|
||
rec.alg_gebouw_key,
|
||
v_melding_einddatum,
|
||
v_melding_datum,
|
||
v_stdmelding_t_uitvoertijd,
|
||
v_stdmelding_t_accepttijd,
|
||
5,
|
||
'MLD',
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
|
||
END;
|
||
|
||
-- maak een opdracht aan voor dit gebouw en deze periode
|
||
BEGIN
|
||
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
|
||
-- de user, onder wie we de melding en opdracht aanmaken, de contactpersoon is.
|
||
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || v_perslid_key;
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_contactpersoon cp
|
||
WHERE cp.prs_perslid_key = v_perslid_key;
|
||
|
||
-- Nu op zoek naar het ReversedBilling contract
|
||
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
|
||
SELECT cnt_contract_key
|
||
INTO v_contact_key
|
||
FROM cnt_contract c, cnt_discipline d
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
|
||
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
|
||
AND v_opdr_datumbegin BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
|
||
|
||
|
||
-- Controleer of er al een opdracht bestaat.
|
||
v_errormsg := 'Controleer of RB opdracht al bestaat. ' || rec.prp || ' | ' || rec.plaats || ' | ' || rec.maand || '-' || rec.totaal;
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM mld_opdr o, mld_melding m
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
|
||
AND m.mld_stdmelding_key = v_stdmelding_key
|
||
AND o.mld_opdr_datumbegin = v_opdr_datumbegin
|
||
AND o.mld_opdr_einddatum = v_opdr_einddatum;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
|
||
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
|
||
|
||
v_errormsg := 'Maak opdracht aan';
|
||
|
||
-- maak opdracht aan om cateringfactuur van leverancier te matchen
|
||
INSERT INTO mld_opdr (mld_melding_key,
|
||
prs_kostenplaats_key,
|
||
mld_statusopdr_key,
|
||
mld_typeopdr_key,
|
||
prs_perslid_key,
|
||
cnt_contract_key,
|
||
mld_uitvoerende_keys,
|
||
mld_opdr_datumbegin,
|
||
mld_opdr_einddatum,
|
||
mld_opdr_module,
|
||
mld_opdr_omschrijving,
|
||
mld_opdr_bedrijfopdr_volgnr)
|
||
VALUES ( v_melding_key,
|
||
v_kostenplaats_key, -- Rabobank kostenplaats
|
||
5, -- uitgegeven
|
||
v_typeopdr_key,
|
||
v_perslid_key, -- Maas import user
|
||
v_contact_key,
|
||
v_bedrijf_key,
|
||
v_opdr_datumbegin,
|
||
v_opdr_einddatum,
|
||
'MLD',
|
||
'Variabele kosten geleverde sanitaire voorzieningen' || ' ' || TO_CHAR (v_opdr_datumbegin, 'MON-YYYY'),
|
||
v_mld_opdr_bedrijfopdr_volgnr)
|
||
RETURNING mld_opdr_key INTO v_opdr_key;
|
||
|
||
v_errormsg := 'Update opdracht status';
|
||
-- meld de opdracht af
|
||
MLD.setopdrachtstatus (v_opdr_key, 6, v_perslid_key);
|
||
MLD.updatemeldingstatus (v_melding_key, 0, v_perslid_key); -- Facilitor
|
||
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
|
||
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
|
||
-- en zet hem nog op afgerond
|
||
MLD.setopdrachtstatus (v_opdr_key, 9, v_perslid_key);
|
||
UPDATE fac_tracking SET fac_tracking_datum = v_opdr_einddatum
|
||
WHERE fac_tracking_refkey = v_opdr_key
|
||
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
|
||
SELECT mld_kenmerk_key
|
||
INTO v_rb_goedgekeurd_kenmerk_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
|
||
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
|
||
|
||
v_errormsg := 'Opvragen van het opdrachtkenmerk: TYPEFACTUUR';
|
||
SELECT k.mld_kenmerk_key, k.mld_kenmerk_default
|
||
INTO v_typefactuur_kenmerk_key, v_usrdata_key
|
||
FROM mld_kenmerk k, mld_srtkenmerk sk
|
||
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
||
AND sk.mld_srtkenmerk_code = 'TYPEFACTUUR'
|
||
AND k.mld_typeopdr_key = v_typeopdr_key;
|
||
|
||
v_errormsg := 'Kenmerk TYPEFACTUUR op B zetten: ' || v_typefactuur_kenmerk_key || '-' || v_opdr_key || '-' || v_usrdata_key;
|
||
-- Dit is de default van het kenmerk
|
||
FLX.setflex('OPD', v_typefactuur_kenmerk_key, v_opdr_key, v_usrdata_key);
|
||
VBXX.set_opslag_perc (v_opdr_key);
|
||
v_errormsg := 'Einde Loop ';
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'RB opdracht bestaat al', 'Sanitair' || ' | ' || rec.prp || ' | ' || rec.plaats || ' | ' || rec.maand || '-' || rec.totaal);
|
||
v_opdr_key := NULL; -- Als de opdracht al bestaat gaan we er niets meer op aanpassen.
|
||
END IF;
|
||
END;
|
||
|
||
|
||
v_gebouw_key_prev := rec.alg_gebouw_key;
|
||
|
||
v_opdr_kosten := 0;
|
||
END IF;
|
||
-- Aanpassen van het kenmerk per btw tarief en het totaalbedrag invullen. Dit doen we alleen als de opdracht niet al bestond.
|
||
IF v_opdr_key IS NOT NULL AND rec.alg_gebouw_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Voeg het kenmerk met het btw bedrag toe aan de opdracht ' || rec.totaal;
|
||
-- Voeg het kenmerk met het bedrag toe en tel het totaal voor de opdracht op.
|
||
add_kenmerk_btw_bedrag (v_opdr_key, v_typeopdr_key, 21, rec.totaal);
|
||
v_opdr_kosten := v_opdr_kosten + rec.totaal;
|
||
v_opdr_kosten_totaal := v_opdr_kosten_totaal + rec.totaal;
|
||
UPDATE mld_opdr SET mld_opdr_kosten = v_opdr_kosten, mld_opdr_materiaal = v_opdr_kosten WHERE mld_opdr_key = v_opdr_key;
|
||
VBXX.set_verkoopprijs (v_opdr_key);
|
||
END IF;
|
||
|
||
END LOOP;
|
||
|
||
-- afmelden oude meldingen
|
||
FOR rec_mld IN c_mld (v_stdmelding_key)
|
||
LOOP
|
||
v_errormsg := 'Afmelden oude melding ' || rec_mld.mld_melding_key;
|
||
mld.setmeldingstatus (rec_mld.mld_melding_key, 5, NULL);
|
||
END LOOP;
|
||
fac.imp_writelog (p_import_key, 'S', 'Totaal aangemaakte opdrachten bedrag: ' || v_opdr_kosten_totaal, NULL);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errorhint := v_errormsg;
|
||
v_errormsg := 'Fout bij aanmaken sanitair RB opdracht' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_update_rabo_pandinfo (p_import_key NUMBER)
|
||
AS
|
||
CURSOR c IS
|
||
SELECT fac_imp_csv_index,
|
||
fac_imp_csv_col01 kringnr,
|
||
fac_imp_csv_col02 kringnaam,
|
||
fac_imp_csv_col03 prp_nr,
|
||
fac_imp_csv_col04 adres,
|
||
fac_imp_csv_col05 postcode,
|
||
fac_imp_csv_col06 plaats,
|
||
fac_imp_csv_col07 categorie,
|
||
fac_imp_csv_col08 gebouwnaam,
|
||
fac_imp_csv_col09 roepnaam,
|
||
fac_imp_csv_col10 soortpand,
|
||
fac_imp_csv_col11 fase,
|
||
fac_imp_csv_col12 verwachteingangdatum,
|
||
fac_imp_csv_col13 werkelijkeingangsdatum,
|
||
fac_imp_csv_col14 verwachteeinddatum,
|
||
fac_imp_csv_col15 werkelijkeeinddatum,
|
||
fac_imp_csv_col16 m2bvo,
|
||
fac_imp_csv_col17 bijgewerkt
|
||
FROM fac_imp_csv
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_csv_index;
|
||
|
||
CURSOR c_dis IS
|
||
SELECT fac_imp_csv_col01 kringnr, fac_imp_csv_col02 kringnaam
|
||
FROM fac_imp_csv
|
||
WHERE fac_import_key = p_import_key AND fac_imp_csv_index <> 1
|
||
GROUP BY fac_imp_csv_col01, fac_imp_csv_col02;
|
||
|
||
v_kk_kring_nr ALG_KENMERK.ALG_KENMERK_KEY%TYPE;
|
||
v_kk_kring_oms ALG_KENMERK.ALG_KENMERK_KEY%TYPE;
|
||
v_kk_gebouwverantw ALG_KENMERK.ALG_KENMERK_KEY%TYPE;
|
||
|
||
v_locatie_omschrijving ALG_LOCATIE.ALG_LOCATIE_OMSCHRIJVING%TYPE;
|
||
v_gebouw_naam ALG_GEBOUW.ALG_GEBOUW_NAAM%TYPE;
|
||
v_srtgebouw_omschrijving ALG_SRTGEBOUW.ALG_SRTGEBOUW_OMSCHRIJVING%TYPE;
|
||
v_srtgebouw_key ALG_SRTGEBOUW.ALG_SRTGEBOUW_KEY%TYPE;
|
||
v_srtgebouw_key_new ALG_SRTGEBOUW.ALG_SRTGEBOUW_KEY%TYPE;
|
||
v_gebouwverantw_key ALG_GEBOUW.PRS_PERSLID_KEY_VERANTW%TYPE;
|
||
|
||
v_district_key NUMBER;
|
||
v_locatie_key NUMBER;
|
||
v_gebouw_key NUMBER;
|
||
v_verdieping_key NUMBER;
|
||
v_unlocode VARCHAR2 (10);
|
||
v_gebouw_vervaldatum ALG_GEBOUW.ALG_GEBOUW_VERVALDATUM%TYPE;
|
||
v_gebouw_vervaldatum_new ALG_GEBOUW.ALG_GEBOUW_VERVALDATUM%TYPE;
|
||
v_dienstniveau_key MLD_DIENSTNIVEAU.MLD_DIENSTNIVEAU_KEY%TYPE;
|
||
|
||
v_header VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_aanduiding VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
|
||
|
||
PROCEDURE updateFlex (p_onrgoed_key IN NUMBER, p_onrgoed_niveau IN VARCHAR2, p_kenmerk_code IN VARCHAR2, p_waarde IN VARCHAR2, p_tracking IN NUMBER, p_history IN NUMBER)
|
||
AS
|
||
v_kk NUMBER;
|
||
v_k_waarde ALG_ONRGOEDKENMERK.ALG_ONRGOEDKENMERK_WAARDE%TYPE;
|
||
v_k_waarde_new ALG_ONRGOEDKENMERK.ALG_ONRGOEDKENMERK_WAARDE%TYPE;
|
||
v_k_oms ALG_KENMERK.ALG_KENMERK_OMSCHRIJVING%TYPE;
|
||
v_k_type ALG_KENMERK.ALG_KENMERK_KENMERKTYPE%TYPE;
|
||
v_k_dec ALG_KENMERK.ALG_KENMERK_DEC%TYPE;
|
||
v_k_num NUMBER;
|
||
BEGIN
|
||
v_kk := vbxx.get_kenmerk_key ('ALG', NULL, p_kenmerk_code);
|
||
v_k_waarde := flx.getflex ('ALG', v_kk, p_onrgoed_key, p_onrgoed_niveau, 1);
|
||
v_k_waarde_new := p_waarde;
|
||
|
||
SELECT alg_kenmerk_omschrijving, alg_kenmerk_kenmerktype, alg_kenmerk_dec
|
||
INTO v_k_oms, v_k_type, v_k_dec
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_key = v_kk;
|
||
|
||
IF v_k_type = 'N'
|
||
THEN
|
||
v_k_waarde_new := REPLACE(v_k_waarde_new, ',', '.');
|
||
v_k_num := FAC.safe_to_number(v_k_waarde_new);
|
||
v_k_waarde_new := TO_CHAR(v_k_num, 'FM999999.90');
|
||
ELSIF v_k_type = 'D'
|
||
THEN
|
||
v_k_waarde_new := TO_CHAR(FAC.safe_to_date(v_k_waarde_new, 'yyyy-mm-dd'), 'dd-mm-yyyy');
|
||
END IF;
|
||
|
||
IF COALESCE(v_k_waarde_new, '(leeg)') <> COALESCE(v_k_waarde, '(leeg)')
|
||
THEN
|
||
|
||
IF p_tracking = 1
|
||
THEN
|
||
fac.trackaction('ALGGUP', p_onrgoed_key, NULL, NULL, v_k_oms || ': ' || COALESCE(v_k_waarde, '(leeg)') || ' --> ' || COALESCE(v_k_waarde_new, '(leeg)'));
|
||
END IF;
|
||
|
||
IF p_history = 1
|
||
THEN
|
||
UPDATE alg_onrgoedkenmerk
|
||
SET alg_onrgoedkenmerk_verwijder = SYSDATE
|
||
WHERE alg_kenmerk_key = v_kk
|
||
AND alg_onrgoed_key = p_onrgoed_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
END IF;
|
||
flx.setflex ('ALG', v_kk, p_onrgoed_key, p_onrgoed_niveau, v_k_waarde_new);
|
||
END IF;
|
||
END;
|
||
|
||
|
||
FUNCTION findAndCreateLocation (p_locatie_code IN VARCHAR2,
|
||
p_locatie_omschrijving IN VARCHAR2,
|
||
p_district_key IN NUMBER,
|
||
p_volgnr IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
p_locatie_key NUMBER;
|
||
BEGIN
|
||
v_aanduiding := 'findAndCreateLocation: ' || p_locatie_code || ' - ' || p_locatie_omschrijving || ' - ' || p_district_key || ' - ' || p_volgnr;
|
||
v_errorhint := 'aanmaken locatie';
|
||
BEGIN
|
||
IF p_volgnr IS NULL
|
||
THEN
|
||
-- laten we eerst kijken of de locatie al bestaat.
|
||
SELECT MAX (alg_locatie_key)
|
||
INTO p_locatie_key
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_verwijder IS NULL
|
||
AND alg_district_key = p_district_key
|
||
AND UPPER (alg_locatie_omschrijving) = UPPER (p_locatie_omschrijving);
|
||
|
||
IF p_locatie_key IS NOT NULL
|
||
THEN
|
||
RETURN p_locatie_key;
|
||
END IF;
|
||
END IF;
|
||
|
||
SELECT alg_locatie_key
|
||
INTO p_locatie_key
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_verwijder IS NULL
|
||
AND alg_district_key = p_district_key
|
||
AND UPPER (alg_locatie_code) = UPPER (p_locatie_code) || COALESCE (TO_CHAR (p_volgnr), '');
|
||
|
||
p_locatie_key :=
|
||
findAndCreateLocation (p_locatie_code,
|
||
p_locatie_omschrijving,
|
||
p_district_key,
|
||
COALESCE (p_volgnr, 0) + 1);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- dan kunnen we een locatie aanmaken
|
||
IF p_locatie_code = 'RABO-NEW' OR p_volgnr IS NOT NULL
|
||
THEN
|
||
INSERT INTO imp_log (fac_import_key,
|
||
imp_log_status,
|
||
imp_log_omschrijving,
|
||
imp_log_hint)
|
||
VALUES (
|
||
p_import_key,
|
||
'E',
|
||
'Nieuwe locatie aangemaakt met afwijkende code:' || p_locatie_code || ' omschrijving: ' || p_locatie_omschrijving, NULL);
|
||
END IF;
|
||
|
||
INSERT INTO alg_locatie (alg_locatie_code, alg_locatie_omschrijving, alg_district_key)
|
||
VALUES (UPPER (p_locatie_code) || COALESCE (TO_CHAR (p_volgnr), ''),
|
||
p_locatie_omschrijving,
|
||
p_district_key)
|
||
RETURNING alg_locatie_key
|
||
INTO p_locatie_key;
|
||
END;
|
||
|
||
RETURN p_locatie_key;
|
||
END;
|
||
BEGIN
|
||
|
||
SELECT fac_imp_csv_col01 || ';' ||
|
||
fac_imp_csv_col02 || ';' ||
|
||
fac_imp_csv_col03 || ';' ||
|
||
fac_imp_csv_col04 || ';' ||
|
||
fac_imp_csv_col05 || ';' ||
|
||
fac_imp_csv_col06 || ';' ||
|
||
fac_imp_csv_col07 || ';' ||
|
||
fac_imp_csv_col08 || ';' ||
|
||
fac_imp_csv_col09 || ';' ||
|
||
fac_imp_csv_col10 || ';' ||
|
||
fac_imp_csv_col11 || ';' ||
|
||
fac_imp_csv_col12 || ';' ||
|
||
fac_imp_csv_col13 || ';' ||
|
||
fac_imp_csv_col14 || ';' ||
|
||
fac_imp_csv_col15 || ';' ||
|
||
fac_imp_csv_col16 || ';' ||
|
||
fac_imp_csv_col17
|
||
INTO v_header
|
||
FROM fac_imp_csv
|
||
WHERE fac_import_key = p_import_key AND fac_imp_csv_index = 1;
|
||
|
||
IF v_header NOT LIKE 'Kringnr;Kringnaam;PRP_NR;Adres;Postcode;Plaats;Categorie;Gebouwnaam;Roepnaam;Soort pand;Fase;Verwachte ingangdatum;Werkelijke ingangsdatum;Verwachte einddatum;Werkelijke einddatum;m2 BVO;Bijgewerkt t/m%'
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldige header gevonden', v_header || ' <> ' || 'Kringnr;Kringnaam;PRP_NR;Adres;Postcode;Plaats;Categorie;Gebouwnaam;Roepnaam;Soort pand;Fase;Verwachte ingangdatum;Werkelijke ingangsdatum;Verwachte einddatum;Werkelijke einddatum;m2 BVO;Bijgewerkt t/m');
|
||
RETURN;
|
||
END IF;
|
||
|
||
v_kk_kring_nr := vbxx.get_kenmerk_key ('ALG', NULL, 'DISTRICTCODE');
|
||
v_kk_kring_oms := vbxx.get_kenmerk_key ('ALG', NULL, 'DISTRICTOMS');
|
||
|
||
v_errorhint := 'Opzoeken dienstniveau van de Rabobank';
|
||
BEGIN
|
||
SELECT mld_dienstniveau_key
|
||
INTO v_dienstniveau_key
|
||
FROM mld_dienstniveau
|
||
WHERE UPPER (mld_dienstniveau_omschr) = 'RABOBANK';
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_dienstniveau_key := NULL;
|
||
END;
|
||
|
||
v_errorhint := 'Opzoeken gebouwverantwoordelijke bij district';
|
||
v_kk_gebouwverantw := vbxx.get_kenmerk_key ('ALG', NULL, 'GEBOUWVERANTW');
|
||
|
||
FOR rec IN c_dis
|
||
LOOP
|
||
v_aanduiding := rec.kringnr || ' - ' || rec.kringnaam;
|
||
v_errorhint := 'Bijwerken kring';
|
||
BEGIN
|
||
SELECT alg_onrgoed_key
|
||
INTO v_district_key
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_kenmerk_key = v_kk_kring_nr AND alg_onrgoedkenmerk_waarde = rec.kringnr;
|
||
|
||
UPDATE alg_district
|
||
SET alg_district_omschrijving =
|
||
SUBSTR (
|
||
''
|
||
|| DECODE (rec.kringnr, '99', '', TO_CHAR (rec.kringnr, 'FM00') || ' ')
|
||
|| REPLACE (rec.kringnaam, '#'),
|
||
1,
|
||
30)
|
||
WHERE alg_district_key = v_district_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
INSERT INTO alg_district (alg_regio_key, alg_district_omschrijving)
|
||
VALUES (
|
||
121,
|
||
SUBSTR (
|
||
''
|
||
|| DECODE (rec.kringnr, '99', '', TO_CHAR (rec.kringnr, 'FM00') || ' ')
|
||
|| REPLACE (rec.kringnaam, '#'),
|
||
1,
|
||
30))
|
||
RETURNING alg_district_key
|
||
INTO v_district_key;
|
||
END;
|
||
|
||
flx.setflex ('ALG',
|
||
v_kk_kring_nr,
|
||
v_district_key,
|
||
'D',
|
||
rec.kringnr);
|
||
flx.setflex ('ALG',
|
||
v_kk_kring_oms,
|
||
v_district_key,
|
||
'D',
|
||
rec.kringnaam);
|
||
END LOOP;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
IF rec.fac_imp_csv_index = 1
|
||
THEN
|
||
-- dit was de header regel
|
||
CONTINUE;
|
||
END IF;
|
||
|
||
v_errorhint := 'Bijwerken gebouwtype';
|
||
-- bestaat het gebouwtype al
|
||
SELECT DECODE (rec.soortpand, 'n.v.t.', rec.categorie, rec.soortpand) INTO v_srtgebouw_omschrijving FROM DUAL;
|
||
v_aanduiding := rec.prp_nr || ' - ' || v_srtgebouw_omschrijving;
|
||
|
||
BEGIN
|
||
SELECT alg_srtgebouw_key
|
||
INTO v_srtgebouw_key_new
|
||
FROM alg_srtgebouw
|
||
WHERE UPPER (alg_srtgebouw_omschrijving) = UPPER (v_srtgebouw_omschrijving)
|
||
AND alg_srtgebouw_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
INSERT INTO alg_srtgebouw (alg_srtgebouw_omschrijving)
|
||
VALUES (v_srtgebouw_omschrijving)
|
||
RETURNING alg_srtgebouw_key
|
||
INTO v_srtgebouw_key;
|
||
END;
|
||
|
||
BEGIN
|
||
v_locatie_omschrijving := SUBSTR(TRIM (SUBSTR (rec.gebouwnaam, INSTR (rec.gebouwnaam, ',') + 2)),1,30);
|
||
|
||
v_errorhint := 'Opzoeken van het district';
|
||
SELECT alg_onrgoed_key
|
||
INTO v_district_key
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_kenmerk_key = v_kk_kring_nr AND alg_onrgoedkenmerk_waarde = rec.kringnr;
|
||
|
||
v_gebouwverantw_key := FLX.getflex('ALG', v_kk_gebouwverantw, v_district_key, 'D', 1);
|
||
|
||
v_errorhint := 'Opvragen gebouw';
|
||
SELECT alg_gebouw_key,
|
||
alg_gebouw_naam,
|
||
alg_srtgebouw_key,
|
||
alg_locatie_key,
|
||
alg_gebouw_vervaldatum
|
||
INTO v_gebouw_key,
|
||
v_gebouw_naam,
|
||
v_srtgebouw_key,
|
||
v_locatie_key,
|
||
v_gebouw_vervaldatum
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL AND alg_gebouw_code = rec.prp_nr;
|
||
|
||
-- Misschien nog tracken
|
||
v_errorhint := 'Aanpassen bestaand gebouw';
|
||
UPDATE alg_gebouw
|
||
SET alg_gebouw_naam = rec.roepnaam,
|
||
alg_srtgebouw_key = v_srtgebouw_key_new
|
||
WHERE alg_gebouw_key = v_gebouw_key;
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errorhint := 'Aanmaken nieuw gebouw (opzoeken district)';
|
||
-- We moeten een nieuw gebouw aanmaken.
|
||
-- Dan starten we met het aanmaken van de locatie
|
||
|
||
-- Wat is de UN/LOCODE code van de plaats
|
||
v_errorhint := 'Opzoeken generieke locatiecode';
|
||
BEGIN
|
||
SELECT fac_usrdata_code
|
||
INTO v_unlocode
|
||
FROM fac_usrdata
|
||
WHERE UPPER (fac_usrdata_omschr) = UPPER (rec.plaats);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_unlocode := 'NLXXX';
|
||
END;
|
||
|
||
v_locatie_key :=
|
||
findAndCreateLocation (UPPER (REPLACE (v_unlocode, 'NL', 'RABO-')),
|
||
v_locatie_omschrijving,
|
||
v_district_key,
|
||
NULL);
|
||
|
||
-- We gaan de locatiegegevens alleen aanpassen als de locatie nieuw aangemaakt is. Dit kunnen we zien
|
||
-- omdat dan het adres nog niet ingevuld is.
|
||
v_errorhint := 'Aanpassen locatiegegevens';
|
||
UPDATE alg_locatie
|
||
SET alg_locatie_adres = rec.adres,
|
||
alg_locatie_postcode = rec.postcode,
|
||
alg_locatie_plaats = rec.plaats,
|
||
alg_locatie_post_adres = rec.adres,
|
||
alg_locatie_post_postcode = rec.postcode,
|
||
alg_locatie_post_plaats = rec.plaats
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND alg_locatie_adres IS NULL;
|
||
|
||
v_errorhint := 'Aanmaken nieuw gebouw'; -- vul direct het dienstniveau van de rabobank in en zet de bezoekersregistratie uit.
|
||
INSERT INTO alg_gebouw (alg_locatie_key, alg_gebouw_code, alg_gebouw_naam, alg_srtgebouw_key, mld_dienstniveau_key, alg_gebouw_bez, prs_perslid_key_verantw)
|
||
VALUES (v_locatie_key, rec.prp_nr, rec.roepnaam, v_srtgebouw_key_new, v_dienstniveau_key, NULL, v_gebouwverantw_key)
|
||
RETURNING alg_gebouw_key INTO v_gebouw_key;
|
||
|
||
v_errorhint := 'Aanmaken nieuwe verdieping';
|
||
INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_omschrijving, alg_verdieping_volgnr, alg_verdieping_code)
|
||
VALUES (v_gebouw_key, 'Verdieping 0', 0, '0')
|
||
RETURNING alg_verdieping_key INTO v_verdieping_key;
|
||
|
||
v_errorhint := 'Aanmaken nieuwe ruimte';
|
||
INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_omschrijving, alg_srtruimte_key, alg_ruimte_nr)
|
||
VALUES (v_verdieping_key, 'Algemene ruimte', 606, '0.01');
|
||
END;
|
||
|
||
v_errorhint := 'Aanpassen gebouwkenmerken';
|
||
updateFlex (v_gebouw_key, 'G', 'FASE', rec.fase, 1, 1);
|
||
updateFlex (v_gebouw_key, 'G', 'VERWINGANG', rec.verwachteingangdatum, 1, 0);
|
||
updateFlex (v_gebouw_key, 'G', 'WERKINGANG', rec.werkelijkeingangsdatum, 1, 0);
|
||
updateFlex (v_gebouw_key, 'G', 'VERWEIND', rec.verwachteeinddatum, 1, 0);
|
||
updateFlex (v_gebouw_key, 'G', 'M2BVO', rec.m2bvo, 1, 1);
|
||
updateFlex (v_gebouw_key, 'G', 'TIMESTAMP', rec.bijgewerkt, 0, 0);
|
||
updateFlex (v_gebouw_key, 'G', 'EXACT_CODE', SUBSTR(rec.prp_nr, INSTR(rec.prp_nr, '-')+1), 1, 0);
|
||
|
||
v_errorhint := 'Aanpassen vervaldatum bij gebouw';
|
||
v_gebouw_vervaldatum_new := FAC.safe_to_date(rec.werkelijkeeinddatum, 'dd-mm-yyyy');
|
||
|
||
IF COALESCE(v_gebouw_vervaldatum_new, TRUNC(SYSDATE)) <> COALESCE(v_gebouw_vervaldatum, TRUNC(SYSDATE))
|
||
THEN
|
||
fac.trackaction('ALGGUP', v_gebouw_key, NULL, NULL, 'Vervaldatum: ' || COALESCE(TO_CHAR(v_gebouw_vervaldatum, 'DD-MM-YYYY'), '(leeg)') || ' --> ' || COALESCE(TO_CHAR(v_gebouw_vervaldatum_new, 'DD-MM-YYYY'), '(leeg)'));
|
||
UPDATE alg_gebouw
|
||
SET alg_gebouw_vervaldatum = FAC.safe_to_date(rec.werkelijkeeinddatum, 'dd-mm-yyyy')
|
||
WHERE alg_gebouw_key = v_gebouw_key;
|
||
|
||
UPDATE alg_locatie l
|
||
SET alg_locatie_vervaldatum = ( SELECT MAX(alg_gebouw_vervaldatum) KEEP (DENSE_RANK FIRST ORDER BY alg_gebouw_vervaldatum DESC NULLS FIRST)
|
||
FROM alg_gebouw g
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_verwijder IS NULL)
|
||
WHERE l.alg_locatie_key = v_locatie_key;
|
||
|
||
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', v_errormsg || ' (' || v_aanduiding || ')' , v_errorhint);
|
||
END;
|
||
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_pre_putorders
|
||
AS
|
||
CURSOR c IS
|
||
SELECT n.*
|
||
FROM fac_notificatie n, fac_srtnotificatie sn
|
||
WHERE n.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code IN ('MLDAB2', 'MLDBHG');
|
||
|
||
v_kenmerkblokmelding_key NUMBER;
|
||
v_srtnotificatie_key NUMBER;
|
||
BEGIN
|
||
SELECT fac_srtnotificatie_key
|
||
INTO v_srtnotificatie_key
|
||
FROM fac_srtnotificatie
|
||
WHERE fac_srtnotificatie_code = 'CUST95';
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
-- kijk of de receiver rechten heeft op het behandelblok
|
||
SELECT MAX (kbm.mld_kenmerkblokmelding_key)
|
||
INTO v_kenmerkblokmelding_key
|
||
FROM mld_kenmerkblokmelding kbm
|
||
WHERE kbm.ins_discipline_key IN
|
||
(SELECT ins_discipline_key
|
||
FROM fac_gebruikersgroep gg, fac_groeprechten gr, fac_functie f
|
||
WHERE gg.PRS_PERSLID_KEY = rec.prs_perslid_key_receiver
|
||
AND gg.fac_groep_key = gr.fac_groep_key
|
||
AND gr.FAC_FUNCTIE_KEY = f.fac_functie_key
|
||
AND f.fac_functie_code = 'WEB_MLDBOF')
|
||
AND rec.fac_notificatie_refkey = kbm.mld_melding_key
|
||
AND kbm.mld_kenmerkblokmelding_afmelddatum IS NULL;
|
||
|
||
--DBMS_OUTPUT.put_line (v_kenmerkblokmelding_key);
|
||
-- Dan passen we de notificatie aan naar een klantspecifieke notificatie
|
||
IF v_kenmerkblokmelding_key IS NOT NULL
|
||
THEN
|
||
UPDATE fac_notificatie n
|
||
SET fac_srtnotificatie_key = v_srtnotificatie_key
|
||
WHERE fac_notificatie_key = rec.fac_notificatie_key;
|
||
END IF;
|
||
END LOOP;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL; -- Als de srtnotificatie niet bestaat
|
||
END yask_pre_putorders;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE yask_daily
|
||
AS
|
||
BEGIN
|
||
IF TO_CHAR (SYSDATE, 'dd') = '08' -- 8e van de maand!
|
||
THEN
|
||
yask_select_pre_fact ('PRE_FACT', SYSDATE);
|
||
vbxx_select_fact ('FACT', SYSDATE);
|
||
END IF;
|
||
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
|