2563 lines
97 KiB
SQL
2563 lines
97 KiB
SQL
--
|
||
-- $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;
|
||
|
||
-- 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_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
|
||
fac_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;
|
||
|
||
CREATE OR REPLACE VIEW mdux_huurcontracten_gebouwen
|
||
AS
|
||
SELECT * FROM mdux_huurcontracten_gebouw
|
||
UNION
|
||
SELECT * FROM mdux_huurcontracten_locatie;
|
||
|
||
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;
|
||
|
||
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;
|
||
|
||
------ 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
|