MDUX#30791: Implementatie MDUX

svn path=/Customer/trunk/; revision=23721
This commit is contained in:
Marcel Bourseau
2014-12-17 15:23:40 +00:00
parent 6ff68c3ff5
commit 23fc7a2f33

View File

@@ -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)