1710 lines
65 KiB
SQL
1710 lines
65 KiB
SQL
-- Script containing customer specific configuration sql statements for MDUX: Medux
|
|
-- (c) 2014 SG|facilitor
|
|
-- $Revision$
|
|
-- $Id$
|
|
--
|
|
-- Support: +31 53 4800710
|
|
|
|
set echo on
|
|
|
|
spool mdux.lst
|
|
|
|
--
|
|
-- 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;
|
|
|
|
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
|
|
v_seq_of_columns := '2;1;3;4;5;6;0;0;0;0;7;8;9;0;0;0;0;11;0;0;0;0;0;0;0;0;10;0;0;0;0;0;0';
|
|
mdux_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
|
|
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;
|
|
|
|
BEGIN fac.registercustversion('MDUX', 6); END;
|
|
/
|
|
|
|
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
|
/
|
|
|
|
show errors;
|
|
|
|
|
|
commit;
|
|
|
|
|
|
spool off; |