Files
Customer/MDUX/mdux.sql
Sander Schepers c19c78fd5a MDUX#54919 Notificaties periodieke taken
svn path=/Customer/trunk/; revision=40005
2018-11-28 14:07:10 +00:00

4006 lines
152 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for Medux (MDUX)
DEFINE thisfile = 'MDUX.SQL'
DEFINE dbuser = '^MDUX'
DEFINE custid = 'MDUX'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
--
-- Personen import
--
CREATE OR REPLACE PROCEDURE mdux_post_import_perslid (p_import_key IN NUMBER)
AS
BEGIN
UPDATE fac_imp_perslid
SET prs_afdeling_naam = prs_afdeling_naam || prs_kenmerk1
WHERE fac_import_key = p_import_key
AND LENGTH(prs_afdeling_naam || prs_kenmerk1) <= 10;
-- lengte-conditie omdat afdelingsnaam max. 10 lang mag zijn. Ongeldige perslid-records worden zo op voorhand uitgesloten, en niet geupdate.
END;
/
CREATE OR REPLACE PROCEDURE mdux_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
-- Let op: afdelingcode (kolomnaam Afdnr.) is nog NIET het afdelingscode, maar het 1e gedeelte ervan.
-- De kolom erna (Kostendrager) moet erachter worden geplakt, in AFAS zijn dat bij MDUX 2 velden, die tezamen het afdelingscode vormen.
-- Dat gebeurt in de post_import functie, die de afdelingscode (afdnr + kostendrager) alsnog korrekt vult.
-- Daarom gaat kostendrager (kolom 7) in kenmerkenveld 1 (positie 27).
-- Dus hier wordt afdelingscode (plaats nummer 7 in de string '0;0;0;0;0;0;6;4;3;1;' voor een deel gevuld (het moet gevuld zijn, records zonde afd.nr komen anders niet in de import tabel terecht.
prs.import_perslid (p_import_key,
'0;0;0;0;0;0;6;4;3;1;' ||
'2;0;0;0;0;11;10;9;0;5;' ||
'8;12;0;0;0;0;7;0;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
'Roepnaam;Voorletters;Voorvoegsel;Achternaam;Persnr.;Afdnr.;Kostendrager;Functie;Email;Mobile;Telefoon;Loginnaam%'
);
COMMIT;
-- Korrektie van de afdelingscode gebeurt nu...
mdux_post_import_perslid(p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END mdux_import_perslid;
/
CREATE OR REPLACE PROCEDURE mdux_update_perslid (
p_import_key IN NUMBER
) IS
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND i.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL
ORDER BY 2;
v_count NUMBER;
BEGIN
-- generic update
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count < 300
THEN
fac.imp_writelog (p_import_key,
'E',
'Het aantal te importeren personen is te klein ('
|| TO_CHAR (v_count) || ')',
'Zie Specificatie'
);
RETURN;
END IF;
-- 'NR' betekent dat op basis van personeelsNummeR wordt gematched.
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
prs.update_perslid (p_import_key, 'NR', NULL);
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
END mdux_update_perslid;
/
------
------ BUDGET UPDATE / IMPORT prs_kostenplaasten.
------
CREATE OR REPLACE PROCEDURE mdux_import_budget (p_import_key IN NUMBER)
AS
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
c_fielddelimitor VARCHAR2 (1) := ';';
-- De importvelden:
v_prs_kostenplaats_nr VARCHAR2 (256);
v_prs_kostenplaats_limiet VARCHAR2 (256);
v_prs_kostenplaats_bh VARCHAR2 (256);
v_prs_kostenplaatsgrp_oms VARCHAR2 (256);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM mdux_imp_kostenplaatsen;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01, 02, 03, 04
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_nr);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_limiet);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_bh);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaatsgrp_oms);
v_aanduiding :=
'['
|| v_prs_kostenplaats_nr
|| '|'
|| v_prs_kostenplaats_limiet
|| '|'
|| v_prs_kostenplaats_bh
|| '|'
|| v_prs_kostenplaatsgrp_oms
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_prs_kostenplaats_nr) = 'KOSTENPLAATS'
AND UPPER (v_prs_kostenplaats_limiet) = 'BUDGET'
AND UPPER (v_prs_kostenplaats_bh) = 'BUDGETHOUDER'
AND UPPER (v_prs_kostenplaatsgrp_oms) = 'KOSTENPLAATSGROEP'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
--
v_errorhint := 'Ongeldige kostenplaats';
v_prs_kostenplaats_nr := TRIM (v_prs_kostenplaats_nr);
IF LENGTH (v_prs_kostenplaats_nr) > 30
THEN
v_prs_kostenplaats_nr := SUBSTR (v_prs_kostenplaats_nr, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Kostenplaats te lang',
'Kostenplaats wordt afgebroken tot ['
|| v_prs_kostenplaats_nr
|| ']'
);
ELSE
IF (v_prs_kostenplaats_nr IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Kostenplaats onbekend',
'Kostenplaats is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
IF LENGTH (v_prs_kostenplaats_limiet) > 8
THEN
v_prs_kostenplaats_limiet := SUBSTR (v_prs_kostenplaats_limiet, 1, 8);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Budget te lang',
'Budget wordt afgebroken tot ['
|| v_prs_kostenplaats_limiet
|| ']'
);
ELSE
IF (v_prs_kostenplaats_limiet IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Budget onbekend',
'Budget is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige loginnaam budgethouder';
v_prs_kostenplaats_bh := TRIM (v_prs_kostenplaats_bh);
IF LENGTH (v_prs_kostenplaats_bh) > 30
THEN
v_prs_kostenplaats_bh := SUBSTR (v_prs_kostenplaats_bh, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Loginnaam van budgethouder te lang',
'Loginnaam wordt afgebroken tot ['
|| v_prs_kostenplaats_bh
|| ']'
);
END IF;
--
v_errorhint := 'Ongeldige kostenplaatsgroep';
v_prs_kostenplaatsgrp_oms := TRIM (v_prs_kostenplaatsgrp_oms);
IF LENGTH (v_prs_kostenplaatsgrp_oms) > 60
THEN
v_prs_kostenplaatsgrp_oms := SUBSTR (v_prs_kostenplaatsgrp_oms, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Kostenplaatsgroep te lang',
'Kostenplaatsgroep wordt afgebroken tot ['
|| v_prs_kostenplaatsgrp_oms
|| ']'
);
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel mdux_imp_kostenplaatsen';
INSERT INTO mdux_imp_kostenplaatsen
(prs_kostenplaats_nr, prs_kostenplaats_limiet, prs_kostenplaats_bh, prs_kostenplaatsgrp_oms)
VALUES (v_prs_kostenplaats_nr, v_prs_kostenplaats_limiet, v_prs_kostenplaats_bh,v_prs_kostenplaatsgrp_oms);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!'
);
ELSE
fac.imp_writelog (p_import_key,
'S',
'Budgetten: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (p_import_key,
'S',
'Budgetten: aantal ongeldige importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END mdux_import_budget;
/
CREATE OR REPLACE PROCEDURE mdux_update_budget (
p_import_key IN NUMBER
)
IS
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
v_prs_kostenplaats_key NUMBER (10);
v_prs_perslid_key NUMBER(10);
v_prs_kostenplaatsgrp_key NUMBER(10);
-- Alle budgetten: dit zijn de regels waarvan de objectnaam voldoet aan de volgende codering: XX-XXTTXX, met op de X precies 1 karakter.
CURSOR c_kpn
IS
SELECT *
FROM mdux_imp_kostenplaatsen;
BEGIN
v_count_tot := 0;
v_count_error := 0;
v_aanduiding := '';
-- Alle bugetten verwerken...
FOR rc IN c_kpn
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errorhint := 'Fout bij bepalen kostenplaats [' || rc.prs_kostenplaats_nr || ']';
SELECT prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = UPPER(rc.prs_kostenplaats_nr)
AND prs_kostenplaats_verwijder IS NULL;
v_errorhint := 'Fout bij bepalen budgethouder [' || rc.prs_kostenplaats_bh || ']';
v_prs_perslid_key := NULL;
IF rc.prs_kostenplaats_bh IS NOT NULL
THEN
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_oslogin = UPPER(rc.prs_kostenplaats_bh)
AND prs_perslid_verwijder IS NULL;
END IF;
v_errorhint := 'Fout bij bepalen kostenplaatsgroep [' || rc.prs_kostenplaatsgrp_oms || ']';
v_prs_kostenplaatsgrp_key := NULL;
IF rc.prs_kostenplaatsgrp_oms IS NOT NULL
THEN
SELECT prs_kostenplaatsgrp_key
INTO v_prs_kostenplaatsgrp_key
FROM prs_kostenplaatsgrp
WHERE UPPER(prs_kostenplaatsgrp_oms) = UPPER(rc.prs_kostenplaatsgrp_oms);
END IF;
v_errorhint := 'Fout bij update budget bij kostenplaats [' || rc.prs_kostenplaats_nr || ']';
UPDATE prs_kostenplaats
SET prs_kostenplaats_limiet = rc.prs_kostenplaats_limiet,
prs_perslid_key = v_prs_perslid_key,
prs_kostenplaatsgrp_key = v_prs_kostenplaatsgrp_key
WHERE prs_kostenplaats_key = v_prs_kostenplaats_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Budget: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (p_import_key,
'S',
'Budget: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
END mdux_update_budget;
/
------
------ FACTUURIMPORT / KOPPELING NAVISION (roundtrip, dit is deel I: de import van facturen uit Navision)
------
CREATE OR REPLACE PROCEDURE mdux_post_fin_factuur_navision (p_import_key IN NUMBER)
AS
BEGIN
UPDATE fac_imp_factuur
SET ordernr = SUBSTR(ordernr,4)
WHERE UPPER(ordernr) LIKE 'FCC%'
AND fac_import_key = p_import_key;
END;
/
CREATE OR REPLACE PROCEDURE mdux_import_fin_factuur_nav (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(50);
BEGIN
--In de XSL: leveranciernr(1);factuurnr(2);factuurdatum(3);opdrachtnr(4);omschrijving(5);bedrag(6);btwperc(7);document(8);navision_nr(9)
-- Leveranciernummer doen we nog ff niet.
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2'
v_seq_of_columns := '1;2;3;4;0;0;5;0;6;0;7;8;0;0;0;9;0;0;0;0;0;0';
-- Variabelelijst
-- v_leveranciernr: 1
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
-- v_factuurdatum: 3
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_locatie: 5
-- v_afleverdatum: 6
-- v_omschrijving: 7
-- v_aantal: 8
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
-- v_docid: 12
-- v_debiteur_nr: 13
-- v_opmerking: 14
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
-- v_kenmerk1: 16 (AX opdrachtnummer: IONRxxxx)
-- v_kenmerk2: 17 (GLN Leverancier(snummer)
-- v_kenmerk3: 18 (IBAN)
-- v_kenmerk4: 19 (G-IBAN - geblokkeerde rekening)
-- v_kenmerk5: 20 (G-Amount - bedrag geblokeerde rekening)
-- v_boekmaand: 21
-- v_kenmerk6: 22 (Factuuronderwerp)
-- v_kenmerk7: 23
-- v_kenmerk8: 24
-- v_kenmerk9: 25
-- v_kenmerk10: 26
-- v_kenmerk11: 27
-- v_kenmerk12: 28
fac_import_factuur_body(p_import_key, v_seq_of_columns);
mdux_post_fin_factuur_navision (p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE mdux_post_update_factuur_nav (p_import_key IN NUMBER)
AS
CURSOR cfactuur_kenmerk_navision_nr
IS
SELECT DISTINCT fin_factuur_key, kenmerk1, factuurnr, fac_imp_file_index
FROM fac_imp_factuur
WHERE fin_factuur_key IS NOT NULL
AND fac_import_key = p_import_key
AND kenmerk1 IS NOT NULL;
-- Key van het kenmerk 'navision nummer ' bij de factuur
c_kenmerk_key_navision_nr NUMBER(10) := 2;
BEGIN
-- Het externe opdrachtnr (AX) wordt in kenmerk 1 van fac_imp_factuur gezet, dus alle fac_imp_factuur langsgaan en verwerken
FOR rc IN cfactuur_kenmerk_navision_nr
LOOP
BEGIN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rc.fin_factuur_key, c_kenmerk_key_navision_nr, rc.kenmerk1);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'W',
'Van factuur met key ' || rc.fin_factuur_key || ' is de externe factuurnr (Navision)niet bewaard (regel ' || rc.fac_imp_file_index || ')',
'Factuurnr:' || rc.factuurnr || ' / Navision: ' || rc.kenmerk1
);
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE mdux_update_fin_factuur_nav (p_import_key IN NUMBER)
AS
BEGIN
-- Standaard FCLT verwerk import facturen
fac_update_factuur (p_import_key);
mdux_post_update_factuur_nav(p_import_key);
END;
/
------
------ FACTUUREXPORT / KOPPELING NAVISION
------
--------------------------------------------------
-- NAVISION: Factuurexport
-- View waarin bij de factuur met fin_factuur_key het bijbehorende externe factuurnr uit Navision.
CREATE OR REPLACE VIEW mdux_v_factuur_navision_nr (fin_factuur_key, fin_factuur_navision_nr)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 2;
-- View waarin bij de factuur met fin_factuur_key het bijbehorende kenmerk 'afgewezen' wordt bepaald.
CREATE OR REPLACE VIEW mdux_v_factuur_afgewezen (fin_factuur_key, fin_factuur_afgewezen)
AS
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
AND fin_kenmerk_key = 3;
-- view tbv export naar financieel systeem Navision
CREATE OR REPLACE VIEW mdux_v_factuur_mldcnt_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_navision_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
fin_factuur_totaal_inclbtw,
prs_bedrijf_key,
prs_leverancier_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_totaal_incbtw,
fin_factuurregel_btw_perc,
fin_btwtabelwaarde_btwcode,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
project_nummer,
prs_kostensoort_oms,
prs_kostensoort_doorbelasten,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
COALESCE (TO_CHAR (cnt_contract_nummer),
(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)
)
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
nav.fin_factuur_navision_nr,
f.fin_factuur_totaal,
f.fin_factuur_totaal_btw,
CASE
WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-'
ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+'
END fin_factuur_totaal_inclbtw,
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
COALESCE (b_c.prs_leverancier_nr, b_o.prs_leverancier_nr) prs_leverancier_nr,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
CASE
WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0')
ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0')
END fin_factuurregel_totaal_incbtw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
NULL projectnummer,
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr,
NULL bes_opdr_key,
o.mld_opdr_key,
c.cnt_contract_key,
f.fin_factuur_statuses_key
FROM fin_factuur f,
mdux_v_factuur_navision_nr nav,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp_c,
prs_kostenplaats kp_o
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.bes_bestelopdr_key is null
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND f.fin_factuur_key = nav.fin_factuur_key(+);
CREATE OR REPLACE VIEW mdux_v_factuur_bes_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_nr,
fin_factuur_navision_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
fin_factuur_totaal_inclbtw,
prs_bedrijf_key,
prs_leverancier_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_totaal_incbtw,
fin_factuurregel_btw_perc,
fin_btwtabelwaarde_btwcode,
fin_factuurregel_nr,
fin_factuurregel_omschrijving,
fin_factuur_debiteur_nr,
project_nummer,
prs_kostensoort_oms,
prs_kostensoort_doorbelasten,
prs_kostenplaats_nr,
bes_opdr_key,
mld_opdr_key,
cnt_contract_key,
fin_factuur_statuses_key
)
AS
SELECT DISTINCT f.fin_factuur_key,
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_nr,
nav.fin_factuur_navision_nr,
f.fin_factuur_totaal,
f.fin_factuur_totaal_btw,
CASE
WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-'
ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+'
END fin_factuur_totaal_inclbtw,
b.prs_bedrijf_key,
b.prs_leverancier_nr,
fr.fin_factuurregel_totaal,
fr.fin_factuurregel_btw,
CASE
WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0
THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0')
ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0')
END fin_factuurregel_totaal_incbtw,
btw.fin_btwtabelwaarde_perc,
btw.fin_btwtabelwaarde_code,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_omschrijving,
f.fin_factuur_debiteur_nr,
NULL projectnummer,
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
f.fin_factuur_statuses_key
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
fin_factuur f,
mdux_v_factuur_navision_nr nav,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
prs_kostensoort ks,
prs_kostensoort ks_regel,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.fin_factuur_key = nav.fin_factuur_key(+);
CREATE OR REPLACE VIEW mdux_v_factuur_geg
AS
SELECT * from mdux_v_factuur_mldcnt_gegevens
UNION
SELECT * from mdux_v_factuur_bes_gegevens;
-- Alle facturen die of akkoord of afgewezen zijn, gaan terug naar Navision.
CREATE OR REPLACE VIEW mdux_v_factuur_geg_2_navision
AS
SELECT * from mdux_v_factuur_mldcnt_gegevens
WHERE fin_factuur_statuses_key IN (1,6)
UNION
SELECT * from mdux_v_factuur_bes_gegevens
WHERE fin_factuur_statuses_key IN (1,6);
CREATE OR REPLACE VIEW mdux_v_exp_navision_body
(result, result_order)
AS
SELECT '<factuur><navision_nr>' || fin_factuur_navision_nr || '</navision_nr><akkoord>' ||
DECODE(fin_factuur_statuses_key, 1, '0','1') || '</akkoord></factuur>'
, fin_factuur_key
FROM mdux_v_factuur_geg_2_navision;
CREATE OR REPLACE VIEW mdux_v_export_navision (
result,
result_order
)
AS
SELECT '<xml>',0 FROM DUAL
UNION
SELECT result, result_order FROM mdux_v_exp_navision_body
UNION
SELECT '</xml>',99999999999999999999 FROM DUAL;
CREATE OR REPLACE PROCEDURE mdux_export_navision (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
-- In cursor cfactuur alle facturen die worden geexporteerd...
CURSOR cfactuur
IS
SELECT fin_factuur_key, fin_factuur_statuses_key
FROM mdux_v_factuur_geg_2_navision
GROUP BY fin_factuur_key, fin_factuur_statuses_key;
c_kenmerk_key_afgewezen NUMBER(10) := 3;
v_count NUMBER(10);
BEGIN
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
FOR cfact IN cfactuur
LOOP
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
IF cfact.fin_factuur_statuses_key = 6
THEN
-- Status akkoord kan op reguliere wijze naar verwerkt...
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
ELSE
IF cfact.fin_factuur_statuses_key = 1
THEN
-- Status afgewezen kan NIET op reguliere wijze naar verwerkt... (zie call MDUX#31142)
SELECT COUNT(*)
INTO v_count
FROM mdux_v_factuur_afgewezen
WHERE fin_factuur_key = cfact.fin_factuur_key;
IF v_count = 1
THEN
UPDATE fin_kenmerkfactuur
SET fin_kenmerkfactuur_waarde = '1'
WHERE fin_factuur_key = cfact.fin_factuur_key
AND fin_kenmerk_key = c_kenmerk_key_afgewezen;
ELSE
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (cfact.fin_factuur_key, c_kenmerk_key_afgewezen, '1');
END IF;
END IF;
fac.trackaction ('FINVER', cfact.fin_factuur_key, NULL, NULL, 'Factuur van afgewezen naar verwerkt');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 7
WHERE fin_factuur_key = cfact.fin_factuur_key;
END IF;
END LOOP;
END;
/
CREATE OR REPLACE VIEW mdux_v_export_undo_navision (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_oms
|| ';'
|| bes_opdr_key
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
FROM mdux_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_statuses_key = 7;
CREATE OR REPLACE PROCEDURE mdux_select_undo_navision (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
BEGIN
v_errormsg := 'Geen akties';
END;
/
-- Procedure om alle geexporteerde facturen naar status akkoord terug te zetten.
CREATE OR REPLACE PROCEDURE mdux_export_undo_navision (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR cfactuur
IS
SELECT DISTINCT f.fin_factuur_key, t.fac_tracking_datum
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
WHERE sn.fac_srtnotificatie_code ='FINVER'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
FROM fac_tracking t1
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
AND f.fin_factuur_key = t.fac_tracking_refkey
AND fin_factuur_statuses_key = 7;
v_fac_tracking_datum_akkoord DATE;
v_fac_tracking_datum_afgewezen DATE;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
c_kenmerk_key_afgewezen NUMBER(10) := 3;
BEGIN
v_errormsg := 'Geen akties';
FOR cfact IN cfactuur
LOOP
SELECT MAX(t.fac_tracking_datum)
INTO v_fac_tracking_datum_akkoord
FROM fac_tracking t, fin_factuur f, fac_srtnotificatie sn
WHERE f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_key = cfact.fin_factuur_key
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINFOK';
SELECT MAX(t.fac_tracking_datum)
INTO v_fac_tracking_datum_afgewezen
FROM fac_tracking t, fin_factuur f, fac_srtnotificatie sn
WHERE f.fin_factuur_key = t.fac_tracking_refkey
AND f.fin_factuur_key = cfact.fin_factuur_key
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINFNO';
IF v_fac_tracking_datum_afgewezen IS NULL
THEN IF v_fac_tracking_datum_akkoord IS NOT NULL
THEN
-- Factuur was oorspronkelijk akkoord, DUS weer terug op akkoord zetten.
-- Eerst de factuur in tracking zetten...
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
-- Dan maar zelf en custom-made:
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
END IF;
-- Als beiden null zijn, dan GEEN actie (deze situatie zou niet voor mogen komen)
ELSE
IF v_fac_tracking_datum_akkoord IS NOT NULL
THEN
-- Factuur had kennelijk beide statussen, dus akkoord en afgewezen.
-- Het gaat er nu om wat de laatste status van die 2 was, dus ff vergelijken...
IF v_fac_tracking_datum_akkoord > v_fac_tracking_datum_afgewezen
THEN
-- Factuur was oorspronkelijk akkoord, DUS weer terug op akkoord zetten.
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 6
WHERE fin_factuur_key = cfact.fin_factuur_key;
ELSE
-- Factuur was oorspronkelijk afgewezen, DUS weer terug op afgewezen zetten.
fac.trackaction ('FINFNO', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 1
WHERE fin_factuur_key = cfact.fin_factuur_key;
DELETE FROM fin_kenmerkfactuur
WHERE fin_factuur_key = cfact.fin_factuur_key
AND fin_kenmerk_key = c_kenmerk_key_afgewezen;
END IF;
ELSE
-- Factuur was oorspronkelijk afgewezen, DUS weer terug op afgewezen zetten.
fac.trackaction ('FINFNO', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
UPDATE fin_factuur
SET fin_factuur_statuses_key = 1
WHERE fin_factuur_key = cfact.fin_factuur_key;
DELETE FROM fin_kenmerkfactuur
WHERE fin_factuur_key = cfact.fin_factuur_key
AND fin_kenmerk_key = c_kenmerk_key_afgewezen;
END IF;
END IF;
END LOOP;
END;
/
-- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft,
-- dan het bedrijf een L (Leverancier) is waar in Facilitor (bij vrije bestelaanvragen) uit gekozen kan worden....
-- Daarom in deze post-import alle bedrijven in de import met p_import_key een L markeren die een technisch adres hebben...
CREATE OR REPLACE PROCEDURE mdux_post_import_bedrijf (p_import_key IN NUMBER)
AS
BEGIN
UPDATE fac_imp_ext_bedrijf
SET prs_bedrijf_leverancier = 1
WHERE prs_bedrijf_order_adres IS NOT NULL
AND prs_leverancier_nr NOT IN (10846,58977) --MDUX#52455: Uitzondering voor Staples en Zalsman BV
;
-- MDUX#32101: Alle leveranciers als "uitvoerende" markeren, deze gelijkgetrokken aan "Leverancier" (had ook in 1 query gekund).
UPDATE fac_imp_ext_bedrijf
SET prs_bedrijf_uitvoerende = 1
WHERE prs_bedrijf_order_adres IS NOT NULL;
-- MDUX#37363: Alle leveranciers als potentieel "contractant" markeren
UPDATE fac_imp_ext_bedrijf
SET prs_bedrijf_contract = 1;
END;
/
CREATE OR REPLACE PROCEDURE mdux_import_bedrijf (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_seq_of_columns VARCHAR(255);
BEGIN
-- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;18;9;0;1;2;3;4;5;6;27;8;9;0;1;2;3;4
v_seq_of_columns := '2;1;3;4;5;6;0;0;0;0;7;8;11;0;0;0;0;9;0;0;0;0;0;0;0;0;10;0;0;0;0;0;0;0';
fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 1);
-- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft,
-- dan het bedrijf een L (Leverancier) is waar in Facilitor (bij vrije bestelaanvragen) uit gekozen kan worden....
mdux_post_import_bedrijf (p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces relaties afgebroken!');
END mdux_import_bedrijf;
/
-- Werkt de technische adres(sen) van bedrijf 'p_bedrijf_key' bij.
-- Parameters:
-- p_bedrijf_key (id van prs_bedrijf)
-- p_bedrijfadres_url (technisch adres, b.v. mailadres. URL, FTP, ..)
-- p_bedrijf_broc (1 of NULL, indien 1 dan is bedrijf als zodanig geregistreerd als p_kanaal (volgende param).
-- -- Dus b.v. 1 en p_kanaal = 'B', dan is bedrijf een leverancier in Facilitor
-- -- En b.v. NULL en p_kanaal = 'O', dan is bedrijf geen uitvoerende in Facilitor.
-- p_kanaal is "B" (bestelopdracht), "O" (meldingpdracht) of "C" (contract)
CREATE OR REPLACE PROCEDURE mdux_delupsert_bedrijfadres (p_bedrijf_key IN NUMBER, p_bedrijfadres_url IN VARCHAR2, p_bedrijfadres_xsl IN VARCHAR2, p_bedrijf_broc IN NUMBER, p_kanaal IN VARCHAR)
AS
v_count NUMBER (10);
v_bedrijfadres_url prs_bedrijfadres.prs_bedrijfadres_url%TYPE;
BEGIN
-- In beide gevallen (insert of update) moet het Technisch adres worden bijgewerkt.
-- Als kolom p_bedrijfadres_url gevuld is (met een technisch adres), dan zal deze ook geinsert of bijgewerkt moeten worden als kanaal "p_kanaal",
-- en wordt deze relatie een "L" (Leverancier).
-- Indien de kolom p_bedrijfadres_url niet (meer) gevuld is, en het technisich adres met "broc"-kanaal bestaat, dan wordt deze verwijderd.
-- en wordt deze relatie niet langer een "L" (Leverancier).
SELECT COUNT (*)
INTO v_count
FROM prs_bedrijfadres
WHERE prs_bedrijf_key = p_bedrijf_key
AND prs_bedrijfadres_type = p_kanaal;
v_bedrijfadres_url := TRIM(p_bedrijfadres_url);
IF v_bedrijfadres_url IS NOT NULL
THEN
-- We doen een soort can correctieslagje, door ff de prefix mailto: ervoor zetten als die dat nog niet heeft er er een @ in dit veld aanwezig is
-- NB: @ betekent hier maar eens dat het een mailadres betreft en geen URL. O ja? Ja, laten we daar maar 'ns van uitgaan....
IF SUBSTR(v_bedrijfadres_url, 1, 7) <> 'mailto:' AND INSTR(v_bedrijfadres_url,'@') > 0
THEN
v_bedrijfadres_url := 'mailto:' || v_bedrijfadres_url;
END IF;
-- Dit externe bedrijf heeft een technisch adres in het BRONsysteem!
IF v_count = 0
THEN
-- Bedrijf heeft nog geen technisch adres in Facilitor, alleen aanmaken indien 'p_bedrijf_broc' = 1 (zodat bij juiste kanaal wordt aangemaakt).
IF p_bedrijf_broc = 1
THEN
INSERT INTO prs_bedrijfadres( prs_bedrijf_key, prs_bedrijfadres_type, prs_bedrijfadres_url , prs_bedrijfadres_xsl)
VALUES (p_bedrijf_key, p_kanaal, v_bedrijfadres_url, p_bedrijfadres_xsl);
END IF;
ELSE
-- Bedrijf heeft al een technisch adres voor dit kanaal p_kanaal, dus updaten als 'p_bedrijf_broc' = 1 (zodat bij juiste kanaal wordt ge-update), en anders verwijderen.
IF p_bedrijf_broc = 1
THEN
-- Bijwerken van technische adres van dit bedrijf, NIET! de stylesheet, die wordt namelijk in Facilitor beheerd!!!
UPDATE prs_bedrijfadres
SET prs_bedrijfadres_url = v_bedrijfadres_url
WHERE prs_bedrijf_key = p_bedrijf_key
AND prs_bedrijfadres_type = p_kanaal;
ELSE
-- Verwijderen van technische adres van dit bedrijf bij het kanaal p_kanaal, omdat het geen leverancier/uitvoerende/contractant meer is!
DELETE prs_bedrijfadres
WHERE prs_bedrijf_key = p_bedrijf_key
AND prs_bedrijfadres_type = p_kanaal;
END IF;
END IF;
ELSE
-- Dit externe bedrijf heeft geen technisch adres (bij kanaal bestelopdrachten) in RBT geregistreerd
-- Als die in Facilitor er 1 heeft, dan wordt deze geleegd (ongeacht p_kanaal), dus gewoon altijd verwijderen (want die heeft dus GEEN technisch adres).
IF v_count > 0
THEN
DELETE prs_bedrijfadres
WHERE prs_bedrijf_key = p_bedrijf_key
AND prs_bedrijfadres_type = p_kanaal;
END IF;
END IF; -- v_bedrijfadres_url IS NOT NULL
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE mdux_update_bedrijf_body (p_import_key IN NUMBER, p_sync IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_new NUMBER (10);
v_count_upd NUMBER (10);
v_count_del NUMBER (10);
v_aanduiding VARCHAR2 (200) := '-';
-- SUBPROC
PROCEDURE add_bedrijf (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT * FROM fac_imp_ext_bedrijf ib;
v_bedrijf_key NUMBER (10);
BEGIN
v_count_tot := 0;
v_count_new := 0;
v_count_upd := 0;
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.prs_bedrijf_naam
|| '|'
|| rec.prs_leverancier_nr
|| '] ';
v_errorhint := 'Fout bepalen bedrijf';
IF rec.prs_leverancier_nr IS NULL AND p_sync = 1
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Leveranciernummer ongedefinieerd!',
v_errorhint);
COMMIT;
ELSE
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_leverancier_nr) =
UPPER (rec.prs_leverancier_nr);
IF v_count = 0 OR p_sync = 0
THEN
v_errorhint := 'Fout toevoegen bedrijf';
INSERT INTO prs_bedrijf (prs_bedrijf_naam,
prs_leverancier_nr,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_email,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_huurder,
prs_bedrijf_ingids,
prs_bedrijf_uurloon,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_opmerking)
VALUES (rec.prs_bedrijf_naam,
rec.prs_leverancier_nr,
rec.prs_bedrijf_bezoek_adres,
rec.prs_bedrijf_bezoek_postcode,
rec.prs_bedrijf_bezoek_plaats,
rec.prs_bedrijf_bezoek_land,
rec.prs_bedrijf_post_adres,
rec.prs_bedrijf_post_postcode,
rec.prs_bedrijf_post_plaats,
rec.prs_bedrijf_post_land,
rec.prs_bedrijf_telefoon,
rec.prs_bedrijf_fax,
rec.prs_bedrijf_email,
rec.prs_bedrijf_contact_persoon,
rec.prs_bedrijf_contact_telefoon,
rec.prs_bedrijf_contact_fax,
DECODE (rec.prs_bedrijf_leverancier,
1, 1,
NULL),
DECODE (rec.prs_bedrijf_uitvoerende,
1, 1,
NULL),
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
rec.prs_bedrijf_uurloon,
rec.prs_overeenkomst_nr,
rec.prs_overeenkomst_datum,
rec.prs_bedrijf_opmerking) RETURNING prs_bedrijf_key INTO v_bedrijf_key;
v_count_new := v_count_new + 1;
ELSE -- v_count > 0
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_leverancier_nr) =
UPPER (rec.prs_leverancier_nr);
v_errorhint := 'Fout bijwerken bedrijf';
UPDATE prs_bedrijf
SET prs_bedrijf_naam =
COALESCE (rec.prs_bedrijf_naam, prs_bedrijf_naam),
prs_bedrijf_bezoek_adres =
COALESCE (rec.prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_adres),
prs_bedrijf_bezoek_postcode =
COALESCE (rec.prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_postcode),
prs_bedrijf_bezoek_plaats =
COALESCE (rec.prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_plaats),
prs_bedrijf_bezoek_land =
COALESCE (rec.prs_bedrijf_bezoek_land,
prs_bedrijf_bezoek_land),
prs_bedrijf_post_adres =
COALESCE (rec.prs_bedrijf_post_adres,
prs_bedrijf_post_adres),
prs_bedrijf_post_postcode =
COALESCE (rec.prs_bedrijf_post_postcode,
prs_bedrijf_post_postcode),
prs_bedrijf_post_plaats =
COALESCE (rec.prs_bedrijf_post_plaats,
prs_bedrijf_post_plaats),
prs_bedrijf_post_land =
COALESCE (rec.prs_bedrijf_post_land,
prs_bedrijf_post_land),
prs_bedrijf_telefoon =
COALESCE (rec.prs_bedrijf_telefoon,
prs_bedrijf_telefoon),
prs_bedrijf_fax =
COALESCE (rec.prs_bedrijf_fax, prs_bedrijf_fax),
prs_bedrijf_email =
COALESCE (rec.prs_bedrijf_email,
prs_bedrijf_email),
prs_bedrijf_contact_persoon =
COALESCE (rec.prs_bedrijf_contact_persoon,
prs_bedrijf_contact_persoon),
prs_bedrijf_contact_telefoon =
COALESCE (rec.prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_telefoon),
prs_bedrijf_contact_fax =
COALESCE (rec.prs_bedrijf_contact_fax,
prs_bedrijf_contact_fax),
prs_bedrijf_leverancier =
DECODE (rec.prs_bedrijf_leverancier, 1, 1, NULL),
prs_bedrijf_uitvoerende =
DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL),
prs_bedrijf_contract =
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
prs_bedrijf_huurder =
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
prs_bedrijf_ingids =
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
prs_bedrijf_uurloon =
COALESCE (rec.prs_bedrijf_uurloon,
prs_bedrijf_uurloon),
prs_overeenkomst_nr =
COALESCE (rec.prs_overeenkomst_nr,
prs_overeenkomst_nr),
prs_overeenkomst_datum =
COALESCE (rec.prs_overeenkomst_datum,
prs_overeenkomst_datum),
prs_bedrijf_opmerking =
COALESCE (rec.prs_bedrijf_opmerking,
prs_bedrijf_opmerking)
WHERE prs_bedrijf_key = v_bedrijf_key;
v_count_upd := v_count_upd + 1;
END IF; -- v_count = 0
END IF; -- rec.prs_leverancier_nr IS NULL
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count_new),
'');
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #bijgewerkt: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
END;
-- SUBPROC
PROCEDURE del_bedrijf (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT *
FROM prs_v_aanwezigbedrijf b
WHERE b.prs_bedrijf_intern IS NULL
AND b.prs_leverancier_nr IS NOT NULL
AND prs_leverancier_nr NOT IN (10846,58977) --MDUX#52455: Uitzondering voor Staples en Zalsman BV
AND NOT EXISTS
(SELECT 1
FROM fac_imp_ext_bedrijf
WHERE prs_leverancier_nr = b.prs_leverancier_nr);
v_bedrijf_key NUMBER (10);
BEGIN
v_count_del := 0;
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := '[' || rec.prs_bedrijf_naam || '] ';
v_errorhint := 'Fout verwijderen bedrijf';
UPDATE prs_bedrijf
SET prs_bedrijf_verwijder = SYSDATE
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
v_count_del := v_count_del + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #verwijderd: ' || TO_CHAR (v_count_del),
'');
COMMIT;
END;
PROCEDURE diensten_bedrijf (p_import_key IN NUMBER)
AS
CURSOR c_dienst
IS
SELECT DISTINCT prs_dienst_omschrijving
FROM fac_imp_ext_bedrijf
WHERE prs_dienst_omschrijving IS NOT NULL;
CURSOR c_dienstlocgebouw
IS
SELECT prs_dienst_omschrijving, alg_locatie_code, alg_gebouw_code, prs_bedrijf_naam
FROM fac_imp_ext_bedrijf
WHERE prs_dienst_omschrijving IS NOT NULL;
v_alg_locatie_key NUMBER (10);
v_alg_gebouw_key NUMBER (10);
v_prs_dienst_key NUMBER (10);
v_prs_bedrijf_key NUMBER (10);
BEGIN
v_count_tot := 0;
v_count_upd := 0;
FOR rec2 IN c_dienst
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg :=
'Kan dienst niet bepalen ['
|| rec2.prs_dienst_omschrijving
|| '] ';
BEGIN
SELECT prs_dienst_key
INTO v_prs_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec2.prs_dienst_omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg :=
'Kan dienst niet wegschrijven ['
|| rec2.prs_dienst_omschrijving
|| '] ';
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (rec2.prs_dienst_omschrijving);
END;
v_count_upd := v_count_upd + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT; -- tbv logging
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Diensten: aantal ingelezen: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (p_import_key,
'S',
'Diensten: aantal toegevoegd: '
|| TO_CHAR (v_count_upd),
''
);
v_count_tot := 0;
v_count_upd := 0;
FOR rec3 IN c_dienstlocgebouw
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg :=
'Kan dienst niet bepalen ['
|| rec3.prs_dienst_omschrijving
|| '] ';
SELECT prs_dienst_key
INTO v_prs_dienst_key
FROM prs_dienst
WHERE prs_dienst_omschrijving = rec3.prs_dienst_omschrijving;
v_errormsg :=
'Kan locatie niet bepalen [' || rec3.alg_locatie_code || '] ';
IF rec3.alg_locatie_code IS NOT NULL
THEN
SELECT alg_locatie_key
INTO v_alg_locatie_key
FROM alg_v_aanweziglocatie
WHERE alg_locatie_code = rec3.alg_locatie_code;
ELSE
v_alg_locatie_key := NULL;
END IF;
v_errormsg :=
'Kan gebouw niet bepalen [' || rec3.alg_gebouw_code || '] ';
IF rec3.alg_gebouw_code IS NOT NULL
THEN
SELECT alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_code = rec3.alg_gebouw_code
AND alg_locatie_key = v_alg_locatie_key;
ELSE
v_alg_gebouw_key := NULL;
END IF;
v_errormsg :=
'Kan bedrijf niet bepalen [' || rec3.prs_bedrijf_naam || '] ';
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE prs_bedrijf_naam = rec3.prs_bedrijf_naam;
v_errormsg :=
'Kan bedrijf/dienst/loc/gebouw niet wegschrijven ['
|| rec3.prs_bedrijf_naam
|| '/'
|| rec3.prs_dienst_omschrijving
|| '/'
|| rec3.alg_locatie_code
|| '/'
|| rec3.alg_gebouw_code
|| '] ';
INSERT INTO prs_bedrijfdienstlocatie
(
prs_dienst_key, prs_bedrijf_key, alg_locatie_key, alg_gebouw_key
)
VALUES (v_prs_dienst_key, v_prs_bedrijf_key, decode (v_alg_gebouw_key, null, v_alg_locatie_key, null), v_alg_gebouw_key);
v_count_upd := v_count_upd + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint
);
COMMIT; -- tbv logging
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Bedrijf/dienst/locatie: aantal ingelezen: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (p_import_key,
'S',
'Bedrijf/dienst/locatie: aantal toegevoegd: '
|| TO_CHAR (v_count_upd),
''
);
END;
-- MAIN
BEGIN
IF p_sync = 1
THEN
-- Bij aanvullen nooit verwijderen, alleen bij sync-en
del_bedrijf (p_import_key);
END IF;
add_bedrijf (p_import_key);
IF p_sync = 0
THEN
-- Bij aanvullen bedrijven de diensten-locatie-gebouw uitvoeren, bij sync-en (nog) niet
diensten_bedrijf(p_import_key);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Importproces relaties afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE mdux_post_update_bedrijf (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT * FROM fac_imp_ext_bedrijf ib;
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '-';
v_bedrijf_key NUMBER (10);
v_aantal_bedrijfadres_url NUMBER (10);
BEGIN
SELECT count(*)
INTO v_aantal_bedrijfadres_url
FROM fac_imp_ext_bedrijf
WHERE prs_bedrijf_order_adres IS NOT NULL;
-- Worden de technische adressen elders beheerd, dan bijwerken, en anders met rust laten (dan beheer in Facilitor, zal de defeault zijn)
-- Wij gaan conclusie beheer in Facilitor of bron hier als volgt bepalen:
-- indien er GEEN bedrijfsadres_url's in de bron staan, dan beheer in Facilitor.
-- indien er minimaal 1 bedrijfsadres_url's in de bron staat, dan beheer in bronsysteem
IF v_aantal_bedrijfadres_url > 0
THEN
-- Beheer van technische adressen in bronsysteem, dus we gaan hier de technische adressen bijweken op basis van leveranciernummer (add/upd/del).
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.prs_bedrijf_naam
|| '|'
|| rec.prs_leverancier_nr
|| '] ';
v_errorhint := 'Fout bepalen bedrijf';
IF rec.prs_leverancier_nr IS NOT NULL
THEN
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr);
mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_leverancier, 'B');
-- MDUX#32101: Voor mldopdrachten (en contracten ook maar) geen technisch adres instellen, MDUX wil dat vooralsnog handmatig versturen.
-- mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_uitvoerende, 'O');
-- mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_contract, 'C');
END IF; -- rec.prs_leverancier_nr IS NULL
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
END IF;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE mdux_update_bedrijf (p_import_key IN NUMBER)
AS
BEGIN
mdux_update_bedrijf_body(p_import_key, 1);
mdux_post_update_bedrijf (p_import_key);
END ;
/
CREATE OR REPLACE VIEW MDUX_V_PERSLID_WARM
(PRS_PERSLID_KEY, PRS_PERSLID_INFO, PRS_PERSLID_VERWIJDER)
AS
SELECT prs_perslid_key,
prs_perslid_naam
|| DECODE (p.prs_perslid_voorletters,
NULL, '',
', ' || p.prs_perslid_voorletters)
|| DECODE (p.prs_perslid_tussenvoegsel,
NULL, '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (p.prs_perslid_voornaam,
NULL, '',
' (' || p.prs_perslid_voornaam || ')')
|| '(pers.nr: '
|| prs_perslid_nr
|| ')',
prs_perslid_verwijder
FROM prs_perslid p
WHERE prs_perslid_nr IS NOT NULL;
CREATE OR REPLACE VIEW mdux_v_budget_basic
AS
SELECT prs_kostenplaats_key,
kostenplaats,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
SUM (bedrag) bedrag,
SUM (geraamd) geraamd,
prs_kostenplaats_limiet,
prs_kostenplaatsgrp_key,
kpgroep,
kp_prs_perslid_key,
kpg_prs_perslid_key,
limietperiode,
to_char(besteldatum,'YYYY') jaar,
to_char(besteldatum,'MM') maand
FROM (SELECT k.prs_kostenplaats_key,
NVL2 (
k.prs_kostenplaats_nr,
prs_kostenplaats_nr || ' '
|| lcl.x ('prs_kostenplaats_omschrijving',
k.prs_kostenplaats_key,
k.prs_kostenplaats_omschrijving),
'')
kostenplaats,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_opmerking,
CASE
WHEN (module = 'BES' AND (status = 6 OR status = 7))
OR (module = 'MLD' AND (status = 7 OR status = 9))
OR (module = 'RES' AND (status = 5 OR status = 6))
THEN
COALESCE (bedrag, 0)
ELSE
0
END
bedrag,
CASE
WHEN (module = 'BES' AND (status = 6 OR status = 7))
OR (module = 'MLD' AND (status = 7 OR status = 9))
OR (module = 'RES' AND (status = 5 OR status = 6))
THEN
0
ELSE
COALESCE (bedrag, 0)
END
geraamd,
k.prs_kostenplaats_limiet,
k.prs_kostenplaatsgrp_key,
kpg.prs_kostenplaatsgrp_oms kpgroep,
k.prs_perslid_key kp_prs_perslid_key,
kpg.prs_perslid_key kpg_prs_perslid_key,
status,
module,
COALESCE (kpg.prs_kostenplaatsgrp_limperiode,
k.prs_kostenplaats_limietperiode)
limietperiode,
besteldatum
FROM (SELECT o.prs_kostenplaats_key,
o.mld_opdr_datumbegin datum,
m.prs_perslid_key prs_perslid_key,
mdis.ins_discipline_omschrijving categorie,
sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
categorienummer,
COALESCE (o.mld_opdr_kosten, 0) bedrag,
o.mld_statusopdr_key status,
'MLD' module,
COALESCE (s.prs_kostensoort_key,
mdis.prs_kostensoort_key)
prs_kostensoort_key,
o.mld_opdr_ordernr ordernr,
o.mld_opdr_key kostenplaats_item_key,
-1 kostenplaats_item_child_key,
m.mld_alg_locatie_key locatie_key,
o.mld_opdr_datumbegin besteldatum
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding s,
mld_discipline mdis,
ins_srtdiscipline sd
WHERE o.mld_opdr_kosten <> 0
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 1
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = s.mld_stdmelding_key
AND mdis.ins_discipline_key = s.mld_ins_discipline_key
AND mdis.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 4, 10)
-- AND o.mld_opdr_datumbegin BETWEEN TO_DATE (
-- '20-12-2014 00:00',
-- 'DD-MM-YYYY HH24:MI')
-- AND TO_DATE (
-- '20-12-2014 23:59',
-- 'DD-MM-YYYY HH24:MI')
UNION ALL
SELECT b.prs_kostenplaats_key,
bo.bes_bestelopdr_datum datum,
b.prs_perslid_key prs_perslid_key,
'Bestelling' categorie,
TO_CHAR (b.bes_bestelling_key) categorienummer,
(boi.bes_bestelopdr_item_aantal
* boi.bes_bestelopdr_item_prijs)
bedrag,
COALESCE (bo.bes_bestelopdr_status, 0) status,
'BES' module,
bdis.prs_kostensoort_key,
b.bes_bestelling_ordernr ordernr,
b.bes_bestelling_key kostenplaats_item_key,
-1 kostenplaats_item_child_key,
(SELECT alg_locatie_key
FROM mld_adres ma
WHERE ma.mld_adres_key = b.mld_adres_key_lev)
locatie_key,
bo.bes_bestelopdr_datum besteldatum
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_srtdeel isd,
bes_srtgroep isg,
bes_discipline bdis
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key =
boi.bes_bestelopdr_item_key
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
AND isg.ins_discipline_key = bdis.ins_discipline_key
AND bo.bes_bestelopdr_status IN (4, 6, 7)
-- AND bo.bes_bestelopdr_datum BETWEEN TO_DATE (
-- '20-12-2014 00:00',
-- 'DD-MM-YYYY HH24:MI')
-- AND TO_DATE (
-- '20-12-2014 23:59',
-- 'DD-MM-YYYY HH24:MI')
) tab,
prs_kostenplaats k,
prs_kostenplaatsgrp kpg,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
prs_perslid p,
prs_v_afdeling d,
alg_locatie l
WHERE tab.prs_kostenplaats_key(+) = k.prs_kostenplaats_key
AND tab.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND tab.prs_perslid_key = p.prs_perslid_key(+)
AND p.prs_afdeling_key = d.prs_afdeling_key(+)
AND tab.locatie_key = l.alg_locatie_key(+)
-- AND k.prs_kostenplaats_key IN (2, 3, 67, 110, 111, 135)
-- AND (k.prs_perslid_key = 329 OR kpg.prs_perslid_key = 329)
)
GROUP BY prs_kostenplaats_key,
kostenplaats,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_kostenplaats_limiet,
prs_kostenplaatsgrp_key,
kpgroep,
kp_prs_perslid_key,
kpg_prs_perslid_key,
limietperiode,
to_char(besteldatum,'YYYY'),
to_char(besteldatum,'MM');
-- MDUX#35025 herinnering tbv binnenboeken(leveren) van bestellingen
CREATE OR REPLACE VIEW MDUX_V_RAP_BES_OPEN_LEV
(
BES_BESTELOPDR_KEY,
EXTRA_KEY,
ORDERNUMMER,
BESTELLER,
BESTELDATUM,
LEVERDATUM,
LEVERANCIER,
TOTAAL
)
AS
SELECT bo.bes_bestelopdr_key,
p1.prs_perslid_key,
'FCC' || bo.bes_bestelopdr_id Ordernummer,
p3.prs_perslid_naam_friendly Besteller,
TO_CHAR (bes.bes_bestelling_datum, 'DD-MM-YYYY') Besteldatum,
TO_CHAR (bes_bestelling_leverdatum, 'DD-MM-YYYY') Leverdatum,
bdr.prs_bedrijf_naam Leverancier,
SUM (boi.totaal) Totaal
FROM bes_bestelopdr bo,
bes_bestelling bes,
(SELECT bes_bestelopdr_key,
bes_bestelopdr_item_key,
bes_bestelopdr_item_aantal,
bes_bestelopdr_item_prijs,
bes_bestelopdr_item_aantal * bes_bestelopdr_item_prijs
totaal
FROM bes_bestelopdr_item) boi,
bes_bestelling_item bi,
prs_perslid p1,
prs_perslid p2,
prs_v_perslid_fullnames p3,
mld_adres ma,
fac_gebruikersgroep fg,
prs_bedrijf bdr,
(SELECT p.prs_perslid_key, g.alg_locatie_key
FROM prs_perslidwerkplek ppw,
prs_werkplek w,
prs_perslid p,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE w.prs_werkplek_key = ppw.prs_werkplek_key
AND p.prs_perslid_key = ppw.prs_perslid_key
AND p.prs_perslid_verwijder IS NULL
AND w.prs_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) pw
WHERE bes_bestelopdr_status IN (4, 5)
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND p1.prs_perslid_key = pw.prs_perslid_key
AND pw.alg_locatie_key = ma.alg_locatie_key
AND bes.mld_adres_key_lev = ma.mld_adres_key
AND fg.prs_perslid_key = p1.prs_perslid_key
AND fg.fac_groep_key = 22
AND p1.prs_perslid_verwijder IS NULL
AND SUBSTR (p1.prs_perslid_oslogin, 0, 1) != '_'
AND ( (bes_bestelling_leverdatum < SYSDATE - 5
AND bes_bestelling_leverdatum > bes_bestelopdr_datum)
OR (bes_bestelopdr_datum < SYSDATE - 5
AND bes_bestelling_leverdatum <= bes_bestelopdr_datum))
AND bes.prs_perslid_key_voor = p2.prs_perslid_key
AND p2.prs_afdeling_key = p1.prs_afdeling_key
AND p3.prs_perslid_key = bes.prs_perslid_key_voor
AND bo.prs_bedrijf_key = bdr.prs_bedrijf_key
GROUP BY bo.bes_bestelopdr_key,
bo.bes_bestelopdr_id,
p3.prs_perslid_naam_friendly,
bes.bes_bestelling_datum,
bes_bestelling_leverdatum,
bdr.prs_bedrijf_naam,
p1.prs_perslid_key
ORDER BY 2;
CREATE OR REPLACE VIEW MDUX_V_NOTI_BES_LEV_REMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST01',
NULL,
extra_key,
'Herinnering: er zijn '
|| COUNT (bes_bestelopdr_key)
|| ' openstaande bestelodprachten die op uw levering wachten',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'MDUX_V_RAP_BES_OPEN_LEV'),
extra_key
FROM MDUX_V_RAP_BES_OPEN_LEV
GROUP BY extra_key;
-- MDUX#35089 rapport tbv bestellers inzage in bestelde artikelen
CREATE OR REPLACE VIEW MDUX_V_RAP_BES_ARTIKEL_VOOR
(
Aanvraagnr,
Bestel_datum,
Status,
Besteller,
Besteld_voor,
Catalogus,
Groep,
Artikel_nummer,
Artikel,
Aantal,
Artikel_prijs,
Totaalbedrag,
besteller_key,
FCLT_3D_AFDELING_KEY,
FCLT_3D_LOCATIE_KEY
)
AS
SELECT b.bes_bestelling_key,
b.bes_bestelling_datum,
stat.bes_bestellingstatuses_omschr,
pf.prs_perslid_naam_full,
kd.prs_perslid_info,
dis.ins_discipline_omschrijving ins_discipline_omschrijving,
grp.bes_srtgroep_omschrijving bes_srtgroep_omschrijving,
srt.bes_srtdeel_nr bes_srtdeel_nr,
srt.bes_srtdeel_omschrijving bes_srtdeel_omschrijving,
bi.bes_bestelling_item_aantal aantalart,
COALESCE (bi.bes_bestelling_item_prijs, 0) artikelprijs,
bi.bes_bestelling_item_aantal
* COALESCE (bi.bes_bestelling_item_prijs, 0)
totaalbedrag,
p.prs_perslid_key,
boom.prs_afdeling_key1,
l.alg_locatie_key
FROM bes_bestelling_item bi,
bes_srtdeel srt,
bes_bestelling b,
bes_bestellingstatuses stat,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling d,
prs_v_afdeling_boom boom,
bes_srtgroep grp,
ins_tab_discipline dis,
mld_adres adr,
alg_locatie l,
alg_district di,
(SELECT bes_bestelling_key, prs_perslid_info
FROM bes_kenmerkbestell bkb,
bes_kenmerk bk,
MDUX_V_PERSLID_WARM p
WHERE bes_kenmerkbestell_verwijder IS NULL
AND bk.bes_kenmerk_key = bkb.bes_kenmerk_key
AND bk.bes_srtkenmerk_key = 21
AND TO_CHAR (p.prs_perslid_key(+)) =
bes_kenmerkbestell_waarde) kd
WHERE bi.bes_srtdeel_key = srt.bes_srtdeel_key
AND srt.bes_srtgroep_key = grp.bes_srtgroep_key
AND grp.ins_discipline_key = dis.ins_discipline_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.bes_bestelling_status = stat.bes_bestellingstatuses_key
AND p.prs_perslid_key = b.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = d.prs_afdeling_key
AND d.prs_afdeling_key = boom.prs_afdeling_key
AND b.mld_adres_key_lev = adr.mld_adres_key
AND adr.alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = dI.alg_district_key(+)
AND kd.bes_bestelling_key = b.bes_bestelling_key
AND NOT EXISTS
(SELECT b1.bes_bestelling_key
FROM bes_bestelling b1
WHERE bes_bestelling_parentkey = b.bes_bestelling_key)
AND b.bes_bestelling_status NOT IN (8)
ORDER BY bes_bestelling_key;
-- MDUX#37895: Factuurmatching in financieel pakket laten plaatsvinden -> hiervoor stellen we via API onderstaande view beschikbaar...
CREATE OR REPLACE VIEW mdux_bes_4_ax
AS
SELECT
'FCC' || TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
b.prs_bedrijf_key,
b.prs_leverancier_nr,
kp.prs_kostenplaats_nr,
bo.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
BO.BES_BESTELOPDR_LEVKOSTEN,
BO.BES_BESTELOPDR_KORTING,
BO.BES_BESTELOPDR_STATUS,
fac.gettrackingdate('BESOTV', bo.BES_BESTELOPDR_KEY) bes_besotv_datum,
BOI.BES_BESTELOPDR_ITEM_POSNR,
BOI.BES_BESTELOPDR_ITEM_OMSCHRIJV,
BOI.BES_BESTELOPDR_ITEM_AANTAL,
BOI.BES_BESTELOPDR_ITEM_AANTALONTV,
BOI.BES_BESTELOPDR_ITEM_PRIJS,
BOI.BES_BESTELOPDR_ITEM_BRUTOPRIJS,
BOI.BES_BESTELOPDR_ITEM_STATUS
FROM bes_bestelopdr bo,
prs_bedrijf b,
bes_bestelling bes,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
prs_kostenplaats kp
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes.bes_bestelling_key = bi.bes_bestelling_key
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key;
-- De noti-job gaat niet op prs_perslid, maar op een vast mailadres van MDUX.
-- Hiervoor 'xemail' kolom gebruiken, die gaat voor (=ipv) de receiver indien we als flags in de noti-job de waarde 1 meegeven. Zie mdux08.sql
CREATE OR REPLACE VIEW mdux_v_noti_cntreminder
(code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile)
AS
SELECT '', '', c.prs_perslid_key_beh,
'Rapp<EFBFBD>l: 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, 'facilitair@medux.nl', NULL
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 /* actief */
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key));
CREATE OR REPLACE VIEW mdux_huurcontracten_tmp
(cnt_contract_key,
prs_bedrijf_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
cnt_contract_plaats_gewicht)
AS
SELECT c1.cnt_contract_key,
b.prs_bedrijf_key,
c1.prs_perslid_key_eig,
c1.cnt_contract_nummer_intern,
c1.cnt_contract_versie,
c1.cnt_contract_omschrijving,
c1.cnt_contract_looptijd_van,
c1.cnt_contract_looptijd_tot,
12
* ( TO_CHAR (c1.cnt_contract_looptijd_tot, 'YYYY')
- TO_CHAR (c1.cnt_contract_looptijd_van, 'YYYY')
- 1)
+ (12 - TO_CHAR (c1.cnt_contract_looptijd_van, 'MM'))
+ (TO_CHAR (c1.cnt_contract_looptijd_tot, 'MM')) cnt_looptijd_mnd,
ROUND(100
* LEAST (
1,
(SYSDATE - LEAST (c1.cnt_contract_looptijd_van, SYSDATE))
/ (GREATEST (
c1.cnt_contract_looptijd_tot
- c1.cnt_contract_looptijd_van,
1
))
)) perc_looptijd,
ROUND( (c1.cnt_contract_looptijd_tot
- GREATEST (c1.cnt_contract_looptijd_van,
LEAST (SYSDATE, c1.cnt_contract_looptijd_tot)))
/ 7) aantal_weken_tegaan,
cnt.cnt_getrappeldatum (c1.cnt_contract_key) cnt_contract_rappeldatum,
cnt.cnt_getopzegdatum (c1.cnt_contract_key) cnt_contract_opzegdatum,
(SELECT lcl.x ('cnt_termijn_omschrijving',
cnt_termijn_key,
cnt_termijn_omschrijving)
FROM cnt_termijn
WHERE cnt_termijn_key = c1.cnt_contract_opzegtermijn) cnt_contract_opzegtermijn,
(SELECT lcl.x ('cnt_termijn_omschrijving',
cnt_termijn_key,
cnt_termijn_omschrijving)
FROM cnt_termijn
WHERE cnt_termijn_key = c1.cnt_contract_rappeltermijn) cnt_contract_rappeltermijn,
c1.cnt_contract_status,
DECODE (
cnt.cnt_contract_status (
c1.cnt_contract_looptijd_van,
cnt.cnt_getrappeldatum (c1.cnt_contract_key),
cnt.cnt_getopzegdatum (c1.cnt_contract_key),
c1.cnt_contract_looptijd_tot
),
0,
lcl.l ('lcl_cnt_future'),
1,
lcl.l ('lcl_cnt_topical'),
2,
lcl.l ('lcl_cnt_warn'),
3,
lcl.l ('lcl_cnt_cancel'),
4,
lcl.l ('lcl_cnt_past')) contract_fase_actief,
DECODE (
c1.cnt_contract_status,
0,
DECODE (fac.getsetting ('cnt_contract_approval'),
1, lcl.l ('lcl_cnt_active_approval'),
lcl.l ('lcl_cnt_active')),
1,
lcl.l ('lcl_cnt_inactive'),
2,
lcl.l ('lcl_cnt_new'),
3,
lcl.l ('lcl_cnt_forapproval') ) cnt_contract_status_txt,
c1.cnt_contract_kosten,
c1.cnt_contract_termijnkosten,
c1.cnt_contract_termijnkosten * DECODE(ct.cnt_termijn_type, 'M', 1 / ct.cnt_termijn_aantal, 'Y', 1 / (ct.cnt_termijn_aantal * 12), 'D', 365 / (ct.cnt_termijn_aantal * 12), 1) cnt_contract_termijnkosten_mnd,
ct.cnt_termijn_type,
ct.cnt_termijn_aantal,
ct.cnt_termijn_omschrijving,
COALESCE (c1.ins_discipline_key, -1) contract_disc_key,
c1.prs_afdeling_key_eig,
(SELECT prs_afdeling_naam
FROM prs_v_afdeling
WHERE prs_afdeling_key = c1.prs_afdeling_key_eig) cnt_eigenaar_afdeling_naam,
b.prs_bedrijf_naam,
p1.prs_perslid_naam_full,
p1.prs_perslid_naam_friendly,
cp1.cnt_alg_plaats_key,
cp1.cnt_alg_plaats_code,
cp1.cnt_contract_plaats_gewicht
FROM cnt_v_aanwezigcontract c1,
cnt_termijn ct,
prs_v_perslid_fullnames_all p1,
prs_bedrijf b,
cnt_contract_plaats cp1
WHERE b.prs_bedrijf_key = c1.cnt_prs_bedrijf_key
AND c1.ins_discipline_key = 301
AND c1.cnt_contract_termijntermijn = ct.cnt_termijn_key(+)
AND c1.cnt_contract_key = cp1.cnt_contract_key (+)
AND c1.prs_perslid_key_eig = p1.prs_perslid_key(+)
AND COALESCE (c1.cnt_contract_versie, '0') =
(SELECT COALESCE (MAX (cnt_contract_versie), '0')
FROM cnt_v_aanwezigcontract c2
WHERE c2.cnt_contract_nummer_intern =
c1.cnt_contract_nummer_intern);
CREATE OR REPLACE VIEW mdux_huurcontracten_gebouw
(cnt_contract_key,
prs_bedrijf_key,
alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving)
AS
SELECT cnt_contract_key,
prs_bedrijf_key,
alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving
FROM mdux_huurcontracten_tmp, alg_gebouw g
WHERE g.alg_gebouw_key(+) = cnt_alg_plaats_key
AND COALESCE(cnt_alg_plaats_code,'G') = 'G';
CREATE OR REPLACE VIEW mdux_huurcontracten_locatie
(cnt_contract_key,
prs_bedrijf_key,
alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving)
AS
SELECT cnt_contract_key,
prs_bedrijf_key,
alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving
FROM mdux_huurcontracten_tmp, alg_gebouw g, alg_locatie l
WHERE l.alg_locatie_key (+) = cnt_alg_plaats_key
AND COALESCE(cnt_alg_plaats_code,'L') = 'L'
AND g.alg_gebouw_key(+) = l.alg_locatie_key;
--MDUX#52712 Rapportage huurcontracten, uitbreiding ruimten
CREATE OR REPLACE FORCE VIEW MDUX_HUURCONTRACTEN_RUIMTEN
(
CNT_CONTRACT_KEY,
PRS_BEDRIJF_KEY,
ALG_GEBOUW_KEY,
PRS_PERSLID_KEY_EIG,
CNT_CONTRACT_NUMMER_INTERN,
CNT_CONTRACT_VERSIE,
CNT_CONTRACT_OMSCHRIJVING,
CNT_CONTRACT_LOOPTIJD_VAN,
CNT_CONTRACT_LOOPTIJD_TOT,
CNT_LOOPTIJD_MND,
PERC_LOOPTIJD,
AANTAL_WEKEN_TEGAAN,
CNT_CONTRACT_RAPPELDATUM,
CNT_CONTRACT_OPZEGDATUM,
CNT_CONTRACT_OPZEGTERMIJN,
CNT_CONTRACT_RAPPELTERMIJN,
CNT_CONTRACT_STATUS,
CONTRACT_FASE_ACTIEF,
CNT_CONTRACT_STATUS_TXT,
CNT_CONTRACT_KOSTEN,
CNT_CONTRACT_TERMIJNKOSTEN,
CNT_CONTRACT_TERMIJNKOSTEN_MND,
CNT_CONTRACT_TERMIJN_TYPE,
CNT_CONTRACT_TERMIJN_AANTAL,
CNT_CONTRACT_TERMIJN_OMSCHR,
CONTRACT_DISC_KEY,
PRS_AFDELING_KEY_EIG,
CNT_EIGENAAR_AFDELING_NAAM,
PRS_BEDRIJF_NAAM,
PRS_PERSLID_NAAM_FULL,
PRS_PERSLID_NAAM_FRIENDLY,
CNT_ALG_PLAATS_KEY,
CNT_ALG_PLAATS_CODE,
ALG_GEBOUW_CODE,
ALG_GEBOUW_NAAM,
ALG_GEBOUW_OMSCHRIJVING
)
AS
SELECT cnt_contract_key,
prs_bedrijf_key,
g.alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving
FROM mdux_huurcontracten_tmp,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE r.alg_ruimte_key(+) = cnt_alg_plaats_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND COALESCE (cnt_alg_plaats_code, 'R') = 'R';
CREATE OR REPLACE VIEW mdux_huurcontracten_gebouwen
AS
SELECT * FROM mdux_huurcontracten_gebouw
UNION
SELECT * FROM mdux_huurcontracten_locatie
UNION
SELECT * FROM mdux_huurcontracten_ruimten;
CREATE OR REPLACE VIEW mdux_rap_huurcontracten
(
cnt_contract_key,
prs_bedrijf_key,
alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving,
alg_verdieping_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_ruimte_opp_alt1,
alg_ruimte_opp_alt2,
alg_ruimte_omtrek,
alg_ruimte_inhoud,
alg_ruimte_opmerking,
prs_ruimteafdeling_bezetting,
prs_afdeling_key,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
mdux_kostenplaats,
mdux_kostendrager,
cnt_interne_doorbelasting,
cnt_interne_doorbelasting_mnd,
cnt_contractsoort,
indexatie_volgens,
waarborgsom,
bankgarantie,
servicekosten_permaand,
status_huurcontract,
huurkosten_permaand,
maand_van_index,
crediteur,
crediteurnummer
)
AS
SELECT cnt_contract_key,
hc.prs_bedrijf_key,
hc.alg_gebouw_key,
prs_perslid_key_eig,
cnt_contract_nummer_intern,
cnt_contract_versie,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_looptijd_mnd,
perc_looptijd,
aantal_weken_tegaan,
cnt_contract_rappeldatum,
cnt_contract_opzegdatum,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_status,
contract_fase_actief,
cnt_contract_status_txt,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijnkosten_mnd,
cnt_contract_termijn_type,
cnt_contract_termijn_aantal,
cnt_contract_termijn_omschr,
contract_disc_key,
prs_afdeling_key_eig,
cnt_eigenaar_afdeling_naam,
prs_bedrijf_naam,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_omschrijving,
v.alg_verdieping_key,
v.alg_verdieping_omschrijving,
v.alg_verdieping_volgnr,
v.alg_verdieping_code,
r.alg_ruimte_key,
r.alg_ruimte_nr,
r.alg_ruimte_omschrijving,
r.alg_ruimte_bruto_vloeropp,
r.alg_ruimte_opp_alt1,
r.alg_ruimte_opp_alt2,
r.alg_ruimte_omtrek,
r.alg_ruimte_inhoud,
r.alg_ruimte_opmerking,
ra.prs_ruimteafdeling_bezetting,
a.prs_afdeling_key,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
k.prs_kostenplaats_key,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
SUBSTR (k.prs_kostenplaats_nr,
1,
INSTR (k.prs_kostenplaats_nr, '.') - 1)
mdux_kostenplaats,
SUBSTR (k.prs_kostenplaats_nr,
1 + INSTR (k.prs_kostenplaats_nr, '.'))
mdux_kostendrager,
ROUND (
cnt_contract_termijnkosten
* ( (SELECT SUM (prs_ruimteafdeling_bezetting)
FROM prs_ruimteafdeling ra2,
alg_verdieping v2,
alg_ruimte r2,
mdux_huurcontracten_gebouwen hc2
WHERE hc2.cnt_contract_key = hc.cnt_contract_key
AND v2.alg_gebouw_key = hc2.alg_gebouw_key
AND v2.alg_verdieping_verwijder IS NULL
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND r2.alg_ruimte_verwijder IS NULL
AND ra2.alg_ruimte_key = r2.alg_ruimte_key
AND ra2.prs_afdeling_key = a.prs_afdeling_key
AND ra2.prs_ruimteafdeling_verwijder IS NULL)
/ (SELECT COALESCE (SUM (prs_ruimteafdeling_bezetting), 100)
FROM prs_ruimteafdeling ra2,
alg_verdieping v2,
alg_ruimte r2,
mdux_huurcontracten_gebouwen hc2
WHERE hc2.cnt_contract_key = hc.cnt_contract_key
AND v2.alg_gebouw_key = hc2.alg_gebouw_key
AND v2.alg_verdieping_verwijder IS NULL
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND r2.alg_ruimte_verwijder IS NULL
AND ra2.alg_ruimte_key = r2.alg_ruimte_key
AND ra2.prs_ruimteafdeling_verwijder IS NULL)),
2)
mdux_interne_doorbelasting,
ROUND (
cnt_contract_termijnkosten_mnd
* ( (SELECT SUM (prs_ruimteafdeling_bezetting)
FROM prs_ruimteafdeling ra2,
alg_verdieping v2,
alg_ruimte r2,
mdux_huurcontracten_gebouwen hc2
WHERE hc2.cnt_contract_key = hc.cnt_contract_key
AND v2.alg_gebouw_key = hc2.alg_gebouw_key
AND v2.alg_verdieping_verwijder IS NULL
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND r2.alg_ruimte_verwijder IS NULL
AND ra2.alg_ruimte_key = r2.alg_ruimte_key
AND ra2.prs_afdeling_key = a.prs_afdeling_key
AND ra2.prs_ruimteafdeling_verwijder IS NULL)
/ (SELECT COALESCE (SUM (prs_ruimteafdeling_bezetting), 100)
FROM prs_ruimteafdeling ra2,
alg_verdieping v2,
alg_ruimte r2,
mdux_huurcontracten_gebouwen hc2
WHERE hc2.cnt_contract_key = hc.cnt_contract_key
AND v2.alg_gebouw_key = hc2.alg_gebouw_key
AND v2.alg_verdieping_verwijder IS NULL
AND r2.alg_verdieping_key = v2.alg_verdieping_key
AND r2.alg_ruimte_verwijder IS NULL
AND ra2.alg_ruimte_key = r2.alg_ruimte_key
AND ra2.prs_ruimteafdeling_verwijder IS NULL)),
2)
mdux_interne_doorbelasting_mnd,
(SELECT ins_discipline_omschrijving
FROM cnt_discipline cd, cnt_contract c
WHERE c.ins_discipline_key = cd.ins_discipline_key
AND c.cnt_contract_key = hc.cnt_contract_key)
contractsoort,
(SELECT cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 8
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key)
indexatie_volgens,
(SELECT cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 13
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key)
waarborgsom,
(SELECT cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 1
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key)
bankgarantie,
(SELECT fac.safe_to_number(cnt_kenmerkcontract_waarde)
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 11
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key)
servicekosten_permaand,
(SELECT fac_usrdata_omschr
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck, fac_usrdata fu
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 61
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key
AND fu.fac_usrtab_key = 181
AND TO_CHAR (fac_usrdata_key) = cnt_kenmerkcontract_waarde)
status_huurcontract,
(SELECT fac.safe_to_number(cnt_kenmerkcontract_waarde)
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 6
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key)
huurkosten_permaand,
(SELECT fac_usrdata_omschr
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck, fac_usrdata fu
WHERE ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_srtkenmerk_key = 9
AND ck.cnt_kenmerk_verwijder IS NULL
AND ckc.cnt_contract_key = hc.cnt_contract_key
AND fu.fac_usrtab_key = 43
AND TO_CHAR (fac_usrdata_key) = cnt_kenmerkcontract_waarde)
maand_van_index,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf b, cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE TO_CHAR (prs_bedrijf_key) = cnt_kenmerkcontract_waarde
AND ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_kenmerk_verwijder IS NULL
AND ck.cnt_srtkenmerk_key = 5
AND ckc.cnt_contract_key = hc.cnt_contract_key)
crediteur,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b, cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE TO_CHAR (prs_bedrijf_key) = cnt_kenmerkcontract_waarde
AND ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_kenmerk_verwijder IS NULL
AND ck.cnt_srtkenmerk_key = 5
AND ckc.cnt_contract_key = hc.cnt_contract_key)
crediteurnummer
FROM mdux_huurcontracten_gebouwen hc,
alg_verdieping v,
alg_ruimte r,
prs_ruimteafdeling ra,
prs_afdeling a,
prs_kostenplaats k
WHERE hc.alg_gebouw_key = v.alg_gebouw_key(+)
AND v.alg_verdieping_verwijder IS NULL
AND v.alg_verdieping_key = r.alg_verdieping_key(+)
AND r.alg_ruimte_verwijder IS NULL
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND ra.prs_ruimteafdeling_verwijder IS NULL
AND ra.prs_afdeling_key = a.prs_afdeling_key(+)
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+);
CREATE OR REPLACE VIEW MDUX_V_INS_QRC
(
FCLT_3D_DISCIPLINE_KEY,
FCLT_3D_LOCATIE_KEY,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
PLAATS,
SOORTRUIMTE,
AFDELING_KEY,
AFDELING,
AFDELING_OMSCHRIJVING,
INS_SRTDEEL_CODE,
INS_SRTDEEL_OMSCHRIJVING,
INS_DEEL_OMSCHRIJVING,
INS_DEEL_KEY,
INS_SRTDEEL_KEY,
FCLT_F_OBJECTSOORT,
INS_ALG_RUIMTE_TYPE,
ALG_DISTRICT_KEY,
INS_DEEL_UPPER,
ALG_RUIMTE_KEY,
FCLT_F_FAC_BOOKMARK_NAAM,
HIDE_F_BOOKMARK_ID
)
AS
SELECT i.ins_discipline_key,
l.alg_locatie_key,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_plaatsaanduiding plaats,
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key)
soortruimte,
NULL,
NULL,
NULL,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving,
i.ins_deel_omschrijving,
i.ins_deel_key,
s.ins_srtdeel_key,
s.ins_srtdeel_upper,
i.ins_alg_ruimte_type,
l.alg_district_key,
ins_deel_upper,
i.ins_alg_ruimte_key,
b.fac_bookmark_naam,
b.fac_bookmark_id
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
alg_locatie l,
alg_district di,
fac_bookmark b
WHERE b.fac_bookmark_naam LIKE '%QRC%'
AND ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND s.ins_srtdeel_key = i.ins_srtdeel_key
UNION ALL
SELECT i.ins_discipline_key,
NULL,
NULL,
NULL,
NULL,
NULL,
a.prs_afdeling_key,
a.prs_afdeling_upper,
a.prs_afdeling_omschrijving,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving,
i.ins_deel_omschrijving,
i.ins_deel_key,
s.ins_srtdeel_key,
s.ins_srtdeel_upper,
i.ins_alg_ruimte_type,
NULL,
ins_deel_upper,
i.ins_alg_ruimte_key,
b.fac_bookmark_naam,
b.fac_bookmark_id
FROM ins_deel i,
prs_afdeling a,
ins_srtdeel s,
fac_bookmark b
WHERE b.fac_bookmark_naam LIKE '%QRC%'
AND ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = a.prs_afdeling_key
AND s.ins_srtdeel_key = i.ins_srtdeel_key
AND ins_alg_ruimte_type = 'A';
CREATE OR REPLACE VIEW mdux_v_rap_keyvsfe
(
soort_gebruiker,
Naam,
Loginnaam,
laatste_login
)
AS
SELECT DECODE (key_user, 1, 'KEY', 'FE'),
pf.prs_perslid_naam_full,
oslogin,
prs_perslid_login
FROM (SELECT *
FROM (SELECT p.prs_perslid_key prs_key,
COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2)
oslogin,
1 login,
-- 1=user heeft login + groep + rechten
DECODE (
SIGN(TRUNC(COALESCE (
p.prs_perslid_login
+ 92,
SYSDATE - 1
))
- TRUNC (SYSDATE)),
-1,
0,
1
) -- 1=user heeft laatste 92 dagen ingelogd
recent_login
FROM prs_v_aanwezigperslid p
WHERE EXISTS
-- op basis van login + groep + rechten
(SELECT 1
FROM fac_v_rap_groeprechten
WHERE fclt_f_login =
COALESCE (
p.prs_perslid_oslogin,
p.prs_perslid_oslogin2
))
UNION ALL
-- FSN#24029: Soms ook personen zonder login meetellen!
SELECT p.prs_perslid_key,
NULL oslogin,
1 login,
-- 1=user telt mee, want allow_for_others!
0 recent_login
-- geen login, dus nooit recent ingelogd
FROM prs_v_aanwezigperslid p
WHERE COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2) IS NULL
AND (fac.getSetting (
'mld_allow_for_others'
) = 1
OR EXISTS
(SELECT 1
FROM bes_disc_params dp
WHERE dp.bes_disc_params_for_others =
1))
UNION ALL
-- FSN#27315: En ook eventuele "sensorusers" meetellen!
SELECT NULL prs_perslid_key,
NULL oslogin,
COUNT ( * ) login,
-- elke sensoruser telt mee als FE!
1 recent_login
-- recent actief dus tellen als recent
FROM ins_v_aanwezigdeel d
WHERE ins_deel_statedate >
TRUNC (SYSDATE - 30)) x
LEFT JOIN
-- 1=user heeft rechten op key-codes=notFE-codes
(SELECT DISTINCT fclt_f_login, 1 key_user
FROM fac_v_rap_groeprechten gr,
fac_functie f
WHERE gr.fclt_f_funcode = f.fac_functie_code
AND f.fac_functie_groep IN (1, 2)) a
ON x.oslogin = a.fclt_f_login
LEFT JOIN -- FSN#30404: 1=user is cross-domain (xd) user
(SELECT p.prs_perslid_key, 1 xd_user
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND p.prs_perslid_apikey IS NOT NULL
AND ab.prs_bedrijf_key =
fac.safe_to_number(fac.getSetting('xd_primary_bedrijfkey')))
b
ON x.prs_key = b.prs_perslid_key) st,
prs_perslid p,
prs_v_perslid_fullnames pf
WHERE login = 1
AND UPPER (oslogin) != '_FACILITOR'
AND p.prs_perslid_key = st.prs_key
AND pf.prs_perslid_key = p.prs_perslid_key;
--MDUX#52557 - Rapportage Mutaties objectenbeheer (22-03-2018)
CREATE OR REPLACE FORCE VIEW MDUX_V_INS_MUTATIES
(
DISCIPLINE,
GROEP,
DEEL_KEY,
DEEL_OMSCHRIJVING,
DEEL_OPMERKING,
SRTDEEL,
SRTDEEL_OMSCHRIJVING,
TRACKING_KEY,
TRACKING_DATUM,
TRACKING_MAAND,
TRACKING_OMSCHRIJVING,
NIEUW,
WIJZIGING,
INACTIEF,
VERVALLEN,
VERVALDATUM
)
AS
SELECT disc.ins_discipline_omschrijving AS Discipline,
sg.ins_srtgroep_omschrijving AS Groep,
d.ins_deel_key AS Deel_key,
d.ins_deel_omschrijving AS Deel_omschrijving,
d.ins_deel_opmerking AS Deel_opmerking,
sd.ins_srtdeel_code AS Srtdeel,
sd.ins_srtdeel_omschrijving Srtdeel_omschrijving,
t.fac_tracking_key AS Tracking_key,
t.fac_tracking_datum AS Tracking_datum,
TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') AS Tracking_maand,
CASE
WHEN t.fac_tracking_oms IS NULL
THEN
CASE
WHEN n.fac_srtnotificatie_oms = 'lcl_noti_INSNEW'
THEN
'Object geregistreerd'
ELSE
'Object gewijzigd'
END
ELSE
t.fac_tracking_oms
END
AS Tracking_omschrijving,
CASE
WHEN CASE
WHEN t.fac_tracking_oms IS NULL
THEN
CASE
WHEN n.fac_srtnotificatie_oms = 'lcl_noti_INSNEW'
THEN
'Object geregistreerd'
ELSE
'Object gewijzigd'
END
ELSE
t.fac_tracking_oms
END = 'Object geregistreerd'
THEN
1
ELSE
0
END
AS Nieuw,
CASE --Hiermee wordt geteld het aantal wijzigingen
WHEN n.fac_srtnotificatie_oms = 'lcl_noti_INSNEW'
OR t.fac_tracking_oms LIKE '%%Actief: 1 --> 0%'
OR t.fac_tracking_oms LIKE '%Vervaldatum: (leeg) -->%'
THEN
0
ELSE
CASE
WHEN t.fac_tracking_oms LIKE '%Object gewijzigd%'
AND (T.FAC_TRACKING_OMS LIKE '%Status: %'
OR T.FAC_TRACKING_OMS LIKE '%Notitieveld: %'
OR T.FAC_TRACKING_OMS LIKE
'%Nadere gegevens van plaats/eigenaar: %')
THEN
1
ELSE
0
END
END
AS Wijziging,
CASE
WHEN t.fac_tracking_oms LIKE '%Actief: 1 --> 0%' --Hiermee wordt geteld het aantal wijzigingen dat objecten inactief zijn gemaakt
THEN 1
ELSE 0
END
AS Inactief,
CASE
WHEN t.fac_tracking_oms LIKE '%Vervaldatum: (leeg) -->%' --Hiermee wordt geteld het aantal wijzigingen dat objecten vervallen zijn gemaakt
THEN 1
ELSE 0
END
AS Vervallen,
d.ins_deel_vervaldatum AS Vervaldatum
FROM ins_tab_discipline disc,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
fac_tracking t,
fac_srtnotificatie n
WHERE t.fac_tracking_refkey = d.ins_deel_key
AND n.fac_srtnotificatie_xmlnode = 'deel'
--AND t.fac_tracking_oms IS NOT NULL
AND t.fac_srtnotificatie_key = n.fac_srtnotificatie_key
AND disc.ins_discipline_key = d.ins_discipline_key
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND disc.ins_discipline_key = sg.ins_discipline_key
AND sd.ins_srtdeel_verwijder IS NULL -- MDUX#53847 Objectsoorten die verwijderd zijn, niet meer tonen in de rapportage
ORDER BY t.fac_tracking_datum DESC;
--MDUX#52700 - Rapportage Aantallen meldingen Metrics, aangepast (22-03-2018)
CREATE OR REPLACE FORCE VIEW MDUX_V_MELDINGEN
(
MELDING_KEY,
MELDINGNUMMER,
MELDING_REGIO,
MELDING_DISTRICT,
MELDING_LOCATIECODE,
MELDING_LOCATIE,
MELDING_LOCATIEPLAATS,
FCLT_3D_LOCATIE_KEY,
MELDING_GEBOUWCODE,
MELDING_GEBOUW,
MELDING_VERDIEPING,
MELDING_RUIMTENR,
MELDING_RUIMTE,
MELDING_ORDERNR,
KOSTENSOORTGROEP,
KOSTENSOORT,
KOSTENPLAATS,
KOSTENPLAATS_OMS,
MELDER,
MELDER_KEY,
AFDELING,
AFDELING_OMSCHRIJVING,
FCLT_3D_AFDELING_KEY,
BEDRIJF_KEY,
INVOERDER,
MELDBRON,
SOORTMELDING,
FCLT_3D_DISCIPLINE_KEY,
PRODUCTGROEP,
SUBPRODUCTGROEP,
BEHANDELGROEP,
BEHANDELAAR,
BEHANDELAAR_KEY,
SUBPRODUCTGROEPGROEP,
MELDING_STATUS,
SLA_NVT,
SLA_WERKDGN,
SLA_WERKUREN,
SLA_RESPIJTDGN,
SLA_RESPIJTUREN,
SLA_ACCPTDGN,
SLA_ACCPTUREN,
PLAN_UITVOERTIJD_SLA,
MELDING_DATUM,
MELDING_EINDDATUM,
MELDING_ACCEPTDATUM,
MELDING_AFGEMELD,
MELDING_ACCEPTED,
DOORLOOPTIJD_WERKDGN,
DOORLOOPTIJD_WERKUREN,
ONDERWERP,
VOMSCHRIJVING,
MELDING_OPMERKING,
PRIORITEIT,
PRIORITEITTXT,
RATING,
RATING_OPMERKING,
BOLLETJE,
ACCEPT_SLA_DAGEN,
ACCEPT_SLA_UREN,
UITVOERING_SLA_DAGEN,
UITVOERING_SLA_UREN,
AFSPRAAK_SLA_DAGEN,
AFSPRAAK_SLA_UREN,
ACCEPT_SLA_OPTIJD,
UITVOERING_SLA_OPTIJD,
AFSPRAAK_SLA_OPTIJD,
SELFSERVICE
)
AS
SELECT mld_melding_key,
meldingnummer,
alg_regio_omschrijving,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
locatie_plaats,
alg_locatie_key,
gebouw,
gebouw_naam,
verdieping,
ruimte,
ruimte_omschrijving,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
prs_perslid_key,
afdeling,
afdeling_omschrijving,
afdeling_key,
prs_bedrijf_key,
invoerder,
meldbron,
soortmelding,
ins_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
datum,
einddatum,
acceptdatum,
afgemeld,
accepted,
DECODE (x.t_doorlooptijd.eenheid,
'D', x.t_doorlooptijd.tijdsduur,
NULL)
doorlooptijd_werkdgn,
DECODE (x.t_doorlooptijd.eenheid,
'U', x.t_doorlooptijd.tijdsduur,
NULL)
doorlooptijd_werkuren,
onderwerp,
omschrijving,
opmerking,
mld_melding_spoed prioriteit,
DECODE (mld_melding_spoed,
3, lcl.l ('lcl_mld_urg_normaal'),
1, lcl.l ('lcl_mld_urg_kritiek'),
2, lcl.l ('lcl_mld_urg_hoog'),
4, lcl.l ('lcl_mld_urg_laag')),
mld_melding_satisfaction,
mld_melding_satisfaction_op,
mld_melding_flag,
DECODE (x.t_doorlooptijd.eenheid,
'D', acceptdatum - COALESCE (accepted, afgemeld),
NULL)
accept_sla_dagen,
DECODE (x.t_doorlooptijd.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
NULL)
accept_sla_uren,
DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
NULL)
uitvoering_sla_dagen,
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE))
* 24)
+ COALESCE (sla_respijturen, 0),
NULL)
uitvoering_sla_uren,
DECODE (
x.t_doorlooptijd.eenheid,
'D',
einddatum
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
NULL)
afspraak_sla_dagen,
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijtdgn, 0),
NULL)
afspraak_sla_uren,
CASE
WHEN acceptdatum IS NULL
OR -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd.
DECODE (x.t_doorlooptijd.eenheid,
'D',
acceptdatum - COALESCE (accepted, afgemeld),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
(acceptdatum - COALESCE (accepted, afgemeld)) * 24,
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
accept_sla_optijd,
CASE
WHEN DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE))
* 24)
+ COALESCE (sla_respijturen, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
uitvoering_sla_optijd,
CASE
WHEN DECODE (
x.t_doorlooptijd.eenheid,
'D',
einddatum
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijtdgn, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
afspraak_sla_optijd,
DECODE (invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no'))
selfservice
FROM (SELECT m.mld_melding_key,
m.prs_perslid_key,
sd.ins_srtdiscipline_prefix || m.mld_melding_key
meldingnummer,
alg_regio_omschrijving,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
alg_locatie_plaats locatie_plaats,
l.alg_locatie_key,
og.alg_gebouw_code gebouw,
og.alg_gebouw_naam gebouw_naam,
og.alg_verdieping_code verdieping,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
m.mld_melding_ordernr melding_ordernr,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key =
ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key,
disc.prs_kostensoort_key)
FROM mld_stdmelding sm,
mld_discipline disc
WHERE sm.mld_ins_discipline_key =
disc.ins_discipline_key
AND sm.mld_stdmelding_key =
s.mld_stdmelding_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key,
disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key =
disc.ins_discipline_key
AND sm.mld_stdmelding_key =
s.mld_stdmelding_key))
kostensoort,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats_oms,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
(SELECT prs_afdeling_naam
FROM prs_afdeling afd, prs_perslid pp
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
afdeling,
(SELECT prs_afdeling_omschrijving
FROM prs_afdeling afd, prs_perslid pp
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
afdeling_omschrijving,
(SELECT prs_afdeling_key
FROM prs_perslid pp
WHERE pp.prs_perslid_key = m.prs_perslid_key)
afdeling_key,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva, prs_perslid pp
WHERE pva.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
prs_bedrijf_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
mld.getmeldinguser (m.mld_melding_key))
invoerder,
(SELECT mb.mld_meldbron_omschrijving
FROM mld_meldbron mb
WHERE mb.mld_meldbron_key = m.mld_meldbron_key)
meldbron,
m.mld_meldbron_key,
sd.ins_srtdiscipline_key ins_srtdiscipline_key,
sd.ins_srtdiscipline_omschrijving soortmelding,
md.ins_discipline_key ins_discipline_key,
CASE md.ins_discipline_key --MDUX#52700: Vakgroep "Aanvraag" en "Aanvraag Retail" samengevoegd, zelfde voor "Storing" en "Storing Retail"
WHEN 424 THEN 'Aanvraag'
WHEN 422 THEN 'Storing'
ELSE md.ins_discipline_omschrijving
END
productgroep,
s.mld_stdmelding_omschrijving subproductgroep,
smg.mld_stdmeldinggroep_naam subproductgroepgroep,
mbg.mld_behandelgroep_naam behandelgroep,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
behandelaar,
m.mld_melding_behandelaar_key behandelaar_key,
(SELECT mld_statuses_omschrijving
FROM mld_statuses sta
WHERE sta.mld_statuses_key = m.mld_melding_status)
status,
CASE
WHEN m.mld_melding_einddatum >
COALESCE (
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
fac.gettrackingdate ('MLDREJ',
m.mld_melding_key),
SYSDATE)
THEN
1
ELSE
0
END
plan_uitvoertijd_sla,
CASE
WHEN m.mld_melding_indult = 1
OR s.mld_stdmelding_slabewaken = 0
THEN
1
ELSE
0
END
sla_nvt,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'D', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkdgn,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkuren,
DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijtdgn,
DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijturen,
DECODE (m.mld_melding_t_accepttijd.eenheid,
'D', m.mld_melding_t_accepttijd.tijdsduur,
NULL)
sla_accptdgn,
DECODE (m.mld_melding_t_accepttijd.eenheid,
'U', m.mld_melding_t_accepttijd.tijdsduur,
NULL)
sla_accpturen,
m.mld_melding_datum datum,
CASE
WHEN s.mld_stdmelding_planbaar = 2 THEN TO_DATE (NULL)
ELSE m.mld_melding_einddatum
END
einddatum,
mld.getacceptdatum (m.mld_melding_datum,
m.mld_stdmelding_key,
og.alg_onroerendgoed_keys)
acceptdatum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
afgemeld,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
accepted,
mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
m.mld_melding_spoed,
m.mld_melding_satisfaction,
m.mld_melding_satisfaction_op,
m.mld_melding_flag
FROM mld_melding m,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_regio r,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
mld_disc_params mdp,
mld_behandelgroep mbg,
ins_srtdiscipline sd,
mld_stdmeldinggroep smg
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND md.ins_discipline_key = s.mld_ins_discipline_key
AND md.ins_discipline_key = mdp.mld_ins_discipline_key
AND s.mld_stdmeldinggroep_key =
smg.mld_stdmeldinggroep_key(+)
AND mdp.mld_behandelgroep_key =
mbg.mld_behandelgroep_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND d.alg_regio_key = r.alg_regio_key(+)
AND m.mld_alg_onroerendgoed_keys =
og.alg_onroerendgoed_keys(+)
AND m.fac_activiteit_key IS NULL
AND m.mld_melding_datum >=
TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x;
--MDUX#52640 - Notificatie Keuring elektrisch handgereedschap, leverancier
CREATE OR REPLACE FORCE VIEW MDUX_V_NOTI_KEURING_EXTERN
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT n.fac_srtnotificatie_code,
NULL,
b.prs_perslid_key,
('(Her)keuring' || ' - ' || a.prs_afdeling_omschrijving),
d.ins_deel_key,
NULL,
l.prs_bedrijf_email,
NULL
FROM ins_deel d,
ins_srtcontrole sc,
prs_afdeling a,
prs_perslid b,
prs_bedrijf l,
ins_kenmerkdeel kmd,
ins_kenmerk km,
ins_deelsrtcontrole dsc,
fac_srtnotificatie n
WHERE sc.ins_srtcontrole_key = 270 --Jaarlijkse keuring Objectsoort Elektrisch handgereedschap
AND d.ins_srtdeel_key = 401
AND d.ins_deel_key = kmd.ins_deel_key
AND n.fac_srtnotificatie_code = 'CUST02'
AND a.prs_afdeling_key = d.ins_alg_ruimte_key
AND l.prs_bedrijf_key = kmd.ins_kenmerkdeel_waarde
AND km.ins_kenmerk_key = kmd.ins_kenmerk_key
AND km.ins_srtkenmerk_key = 202 --Kenmerk Leverancier
AND d.ins_deel_key = dsc.ins_deel_key(+)
AND d.prs_perslid_key_beh = b.prs_perslid_key(+)
AND d.ins_deel_verwijder IS NULL
AND COALESCE (
TRUNC (dsc.ins_deelsrtcontrole_plandatum),
TRUNC(COALESCE (
(SELECT MAX(dsc.ins_deelsrtcontrole_plandatum)
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND sc.ins_srtcontrole_key = dsc.ins_srtcontrole_key
AND dsc.ins_deelsrtcontrole_status IN (5, 6)),
TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key,
1))))) = TRUNC (SYSDATE + 14);
--MDUX#52640 - Notificatie Keuring elektrisch handgereedschap, interne organisatie
CREATE OR REPLACE FORCE VIEW MDUX_V_NOTI_KEURING_INTERN
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT n.fac_srtnotificatie_code,
NULL,
b.prs_perslid_key,
('(Her)keuring' || ' - ' || a.prs_afdeling_omschrijving),
d.ins_deel_key,
NULL
FROM ins_deel d,
ins_srtcontrole sc,
prs_afdeling a,
prs_perslid b,
ins_deelsrtcontrole dsc,
fac_srtnotificatie n
WHERE sc.ins_srtcontrole_key = 270 --Jaarlijkse keuring Objectsoort Elektrisch handgereedschap
AND d.ins_srtdeel_key = 401
AND n.fac_srtnotificatie_code = 'CUST03'
AND a.prs_afdeling_key = d.ins_alg_ruimte_key
AND d.prs_perslid_key_beh = b.prs_perslid_key
AND d.ins_deel_key = dsc.ins_deel_key(+)
AND d.ins_deel_verwijder IS NULL
AND COALESCE (
TRUNC (dsc.ins_deelsrtcontrole_plandatum),
TRUNC(COALESCE (
(SELECT MAX(dsc.ins_deelsrtcontrole_plandatum)
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND sc.ins_srtcontrole_key = dsc.ins_srtcontrole_key
AND dsc.ins_deelsrtcontrole_status IN (5, 6)),
TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key,
sc.ins_srtcontrole_key,
1))))) = TRUNC (SYSDATE + 14);
CREATE OR REPLACE FORCE VIEW mdux_v_rap_taken
(
objbehkey,
objbehoms,
lockey,
locoms,
levkey,
levoms,
sdkey,
sdoms,
sckey,
scoms,
dkey,
doms,
cpland,
extra_key,
xemail
)
AS
SELECT (SELECT MAX (kmd.ins_kenmerkdeel_waarde)
FROM ins_kenmerk km, ins_kenmerkdeel kmd
WHERE km.ins_srtkenmerk_key = 301 -- Kenmerksoort "Vestigingsmanager"
AND km.ins_kenmerk_key = kmd.ins_kenmerk_key)
AS objbehkey,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key =
(SELECT MAX (kmd.ins_kenmerkdeel_waarde)
FROM ins_kenmerk km, ins_kenmerkdeel kmd
WHERE km.ins_srtkenmerk_key = 301 -- Kenmerksoort "Vestigingsmanager"
AND km.ins_kenmerk_key = kmd.ins_kenmerk_key))
AS objbehoms,
l.alg_locatie_key,
l.alg_locatie_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_bedrijf lev
WHERE lev.prs_bedrijf_key =
(SELECT MAX (levk.ins_kenmerk_default)
FROM ins_kenmerk levk
WHERE levk.ins_kenmerk_verwijder IS NULL
AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object"
AND levk.ins_srtinstallatie_key =
sc.ins_srtcontrole_key))
AS levkey,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf lev
WHERE lev.prs_bedrijf_key =
(SELECT MAX (levk.ins_kenmerk_default)
FROM ins_kenmerk levk
WHERE levk.ins_kenmerk_verwijder IS NULL
AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object"
AND levk.ins_srtinstallatie_key =
sc.ins_srtcontrole_key))
AS levoms,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_omschrijving,
d.ins_deel_key,
d.ins_deel_omschrijving,
dsc.ins_deelsrtcontrole_plandatum,
l.alg_locatie_key,
(SELECT prs_bedrijf_email
FROM prs_bedrijf lev
WHERE lev.prs_bedrijf_key =
(SELECT levk.ins_kenmerk_default
FROM ins_kenmerk levk
WHERE levk.ins_kenmerk_verwijder IS NULL
AND levk.ins_srtkenmerk_key = 202 -- Kenmerksoort "Leverancier object"
AND levk.ins_srtinstallatie_key =
sc.ins_srtcontrole_key))
xemail
FROM ins_deel d,
ins_srtdeel sd,
ins_srtcontrole sc,
prs_perslid b,
alg_locatie l,
ins_deelsrtcontrole dsc,
ins_kenmerk km,
ins_kenmerkdeel kmd,
ins_srtkenmerk sk
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND d.ins_deel_key = dsc.ins_deel_key(+)
AND d.prs_perslid_key_beh = b.prs_perslid_key
AND d.ins_deel_verwijder IS NULL
AND dsc.ins_deel_key = d.ins_deel_key
AND l.alg_locatie_key = d.ins_alg_locatie_key
AND dsc.ins_deelsrtcontrole_datum IS NULL
AND kmd.ins_kenmerk_key = km.ins_kenmerk_key
AND km.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND kmd.ins_kenmerkdeel_waarde = '67' -- Waarde "ja" bij kenmerk 'Automatische notificatie'
AND sk.ins_srtkenmerk_key = 281 -- Automatische notificatie
AND km.ins_kenmerk_verwijder IS NULL
AND km.ins_srtinstallatie_key = sd.ins_srtdeel_key;
CREATE OR REPLACE VIEW mdux_v_noti_taken_intern
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST04',
NULL,
rap.objbehkey,
('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms),
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'MDUX_V_RAP_TAKEN')
rapportnr,
rap.lockey
FROM mdux_v_rap_taken rap
WHERE COALESCE (
TRUNC (rap.cpland),
TRUNC(COALESCE (
(SELECT MAX (dsc.ins_deelsrtcontrole_plandatum)
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = rap.dkey
AND rap.sckey = dsc.ins_srtcontrole_key
AND dsc.ins_deelsrtcontrole_status IN (5, 6)),
TRUNC (fac.nextcyclusdatedeel (rap.dkey, rap.sckey, 1))))) <
TRUNC (SYSDATE + 28)
GROUP BY ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms),
rap.objbehkey,
rap.lockey;
CREATE OR REPLACE VIEW mdux_v_noti_taken_extern
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST05',
NULL,
rap.objbehkey,
('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms),
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'MDUX_V_RAP_TAKEN')
rapportnr,
rap.lockey,
rap.xemail,
NULL
FROM mdux_v_rap_taken rap
WHERE COALESCE (
TRUNC (rap.cpland),
TRUNC(COALESCE (
(SELECT MAX (dsc.ins_deelsrtcontrole_plandatum)
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = rap.dkey
AND rap.sckey = dsc.ins_srtcontrole_key
AND dsc.ins_deelsrtcontrole_status IN (5, 6)),
TRUNC (fac.nextcyclusdatedeel (rap.dkey, rap.sckey, 1))))) <
TRUNC (SYSDATE + 28)
GROUP BY ('Geplande taak - ' || rap.sdoms || ' - ' || rap.locoms),
rap.objbehkey,
rap.sckey,
rap.lockey,
rap.xemail;
------ 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