Files
Customer/YASK/yask.sql
Arthur Egberink 5404c436c3 YASK#85310 De kolom met de catalogusnaam is toegevoegd aan het rapport.
svn path=/Customer/trunk/; revision=66598
2024-10-14 14:48:37 +00:00

4330 lines
166 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'YASK.SQL'
DEFINE dbuser = 'YASK'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE YASK
AS
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER;
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER;
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
RETURN VARCHAR2;
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);
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);
-- 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
WHERE ko.mld_kenmerk_key = 21 -- Geen opslag
AND ko.mld_opdr_key = p_opdr_key;
RETURN v_geen_opslag;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
RETURN NUMBER
AS
v_geen_opslag NUMBER;
v_opslag NUMBER;
v_opdr_mat NUMBER;
v_locatie_key ALG_LOCATIE.ALG_LOCATIE_KEY%TYPE;
v_srtdiscipline_key INS_SRTDISCIPLINE.INS_SRTDISCIPLINE_KEY%TYPE;
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
v_kostensoort_key PRS_KOSTENSOORT.PRS_KOSTENSOORT_KEY%TYPE;
v_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 alg_district_key
INTO v_district_key
FROM fin_factuur f, mld_opdr o, mld_melding m, alg_locatie l
WHERE f.fin_factuur_key = p_fin_key
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key;
RETURN v_district_key;
END;
-- deze functie bepaald aan de hand van de factuur_key het gebouw.
FUNCTION bepaal_fin_gebouw (p_fin_key IN NUMBER)
RETURN NUMBER
AS
v_gebouw_key NUMBER;
BEGIN
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM fin_factuur f, mld_opdr o, mld_melding m, alg_v_onroerendgoed aog
WHERE f.fin_factuur_key = p_fin_key
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys;
RETURN v_gebouw_key;
END;
-- Vul het kenmerk verkoopprijs (key 201) bij de opdracht
PROCEDURE set_verkoopprijs (p_opdr_key IN NUMBER)
AS
v_opdr_kosten NUMBER;
v_verkoopprijs NUMBER;
v_opslag NUMBER;
BEGIN
SELECT mld_opdr_kosten
INTO v_opdr_kosten
FROM mld_opdr o
WHERE mld_opdr_key = p_opdr_key;
v_opslag := YASK.bepaal_opslag(p_opdr_key);
IF v_opslag = 0
THEN
v_verkoopprijs := NULL;
ELSE
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
END IF;
MLD.upsertopdrachtkenmerk (201, p_opdr_key, v_verkoopprijs);
END;
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)
INTO v_afdeling_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 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');
-- De medewerkers van Renewi gaan we onder een andere autorisatiegroep plaatsen
SELECT LOWER(prs_perslid_email)
INTO v_perslid_email
FROM prs_perslid
WHERE prs_perslid_key = p_perslid_key;
SELECT MIN(fac_groep_key)
INTO v_groep_key
FROM fac_groep g
WHERE LOWER(fac_groep_externid) =
SUBSTR (v_perslid_email,
INSTR (v_perslid_email, '@'),
100)
AND NOT EXISTS (SELECT 1
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = p_perslid_key
AND gg.fac_groep_key = g.fac_groep_key);
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;
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', 'E', 'Kan opmerking niet toevoegen aan artikel (' || p_artId || ')' || p_artOpm , '');
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 = vf.fin_verkoopfactuur_n4
AND o.mld_opdr_key = vf.fin_verkoopfactuur_refkey
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
-- 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;
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;
/
-- Carglass
CREATE OR REPLACE VIEW yask_v_export_pro_forma_104
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 104;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_104 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 104);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_104 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 104);
END;
/
-- RFC
-- 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;
/
-- 383 RFC DC North
CREATE OR REPLACE VIEW yask_v_export_pro_forma_383
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 383;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_383 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 383);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_383 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 383);
END;
/
-- 382 RFC Meppel
CREATE OR REPLACE VIEW yask_v_export_pro_forma_382
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 382;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_382 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 382);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_382 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 382);
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;
/
-- Unisys
CREATE OR REPLACE VIEW yask_v_export_pro_forma_106
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 106;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_106 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 106);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_106 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 106);
END;
/
-- TIP
CREATE OR REPLACE VIEW yask_v_export_pro_forma_107
AS
SELECT result, result_order
FROM yask_v_export_pro_forma
WHERE alg_district_key = 107;
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_107 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma(p_applname, p_applrun, 107);
END;
/
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verw_107 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
BEGIN
yask_select_pro_forma_verwerk (p_applname, p_applrun, 107);
END;
/
-- 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;
/
-- 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_refcode VARCHAR2 (100);
v_opslag_txt VARCHAR2 (100);
v_leverancier_nr VARCHAR2 (100);
v_locatie_key NUMBER (10);
v_srtdiscipline_key NUMBER (10);
v_discipline_key NUMBER (10);
v_kostensoort_key NUMBER (10);
v_bedrijf_key NUMBER (10);
v_opslag NUMBER (8, 4);
v_begin DATE;
v_eind DATE;
v_null_date DATE;
header_found BOOLEAN;
BEGIN
-- Eerst opruiming
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtdiscipline_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_discipline_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostensoort_refcode);
fac.imp_getfield (v_newline, v_fielddelimitor, v_leverancier_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_opslag_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_begin_txt);
fac.imp_getfield (v_newline, v_fielddelimitor, v_eind_txt);
-- Skip until a valid header is found
-- De headers in de Excel export zijn ander dan in de csv export daarom controleren we op beiden.
IF (UPPER (v_locatie_code) = 'LOCATIE' OR UPPER (v_locatie_code) = 'ALG_LOCATIE_CODE')
AND (UPPER (v_srtdiscipline_omschrijving) = 'VAKGROEPTYPE' OR UPPER (v_srtdiscipline_omschrijving) = 'INS_SRTDISCIPLINE_OMSCHRIJVING')
AND (UPPER (v_discipline_omschrijving) = 'VAKGROEP' OR UPPER (v_discipline_omschrijving) = 'INS_DISCIPLINE_OMSCHRIJVING')
AND (UPPER (v_kostensoort_refcode) = 'NEN CODE' OR UPPER (v_kostensoort_refcode) = 'PRS_KOSTENSOORT_REFCODE')
AND (UPPER (v_leverancier_nr) = 'LEVERANCIERNUMMER' OR UPPER (v_leverancier_nr) = 'PRS_LEVERANCIER_NR')
AND UPPER (v_opslag_txt) = 'OPSLAG'
AND UPPER (v_begin_txt) = 'INGANGSDATUM'
AND (UPPER (v_eind_txt) = 'VERVALDATUM' OR UPPER (v_eind_txt) = 'EINDDATUM')
THEN
-- Sla de kopregel over.
header_found := TRUE;
UPDATE 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_refcode
|| ' | '
|| v_leverancier_nr
|| ' | '
|| v_opslag_txt
|| ' | '
|| v_begin_txt
|| ' | '
|| v_eind_txt;
v_errorhint := 'Controleer locatie';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL
AND UPPER (alg_locatie_code) =
UPPER (TRIM (v_locatie_code));
BEGIN
v_errorhint := 'Controleer vakgroeptype';
SELECT ins_srtdiscipline_key
INTO v_srtdiscipline_key
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_verwijder IS NULL
AND UPPER (ins_srtdiscipline_omschrijving) =
UPPER (TRIM (v_srtdiscipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_srtdiscipline_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer vakgroep';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_srtdiscipline_key = v_srtdiscipline_key
AND UPPER (ins_discipline_omschrijving) =
UPPER (TRIM (v_discipline_omschrijving));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_discipline_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer nen code';
SELECT prs_kostensoort_key
INTO v_kostensoort_key
FROM prs_kostensoort
WHERE UPPER (prs_kostensoort_refcode) =
UPPER (TRIM (v_kostensoort_refcode));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kostensoort_key := NULL;
END;
BEGIN
v_errorhint := 'Controleer leverancier';
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER (prs_leverancier_nr) =
UPPER (TRIM (v_leverancier_nr));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_bedrijf_key := NULL;
END;
v_errorhint := 'Controleer opslag';
v_opslag_txt := REPLACE (v_opslag_txt, ',', '.');
v_opslag := TO_NUMBER (v_opslag_txt);
v_errorhint := 'Controleer ingangsdatum';
v_begin := TO_DATE (v_begin_txt, 'dd-mm-yyyy');
v_errorhint := 'Controleer vervaldatum';
v_eind := TO_DATE (v_eind_txt, 'dd-mm-yyyy');
INSERT INTO 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_refcode
|| ' | '
|| v_opslag_txt
|| ' | '
|| v_begin_txt
|| ' | '
|| v_eind_txt);
END IF;
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig opslag importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
v_errorhint || ' - ' || v_aanduiding);
END;
/
-- De update functie doet eigenlijk niets maar anders komt er een foutmelding bij de update.
CREATE OR REPLACE PROCEDURE 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_refcode,
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;
/
-- 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')
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')
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;
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
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
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) 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
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;
------ 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