MDUX#30791: Implementatie MDUX
svn path=/Customer/trunk/; revision=23721
This commit is contained in:
369
MDUX/mdux.sql
369
MDUX/mdux.sql
@@ -124,6 +124,375 @@ 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)
|
||||
|
||||
Reference in New Issue
Block a user