svn path=/Customer/trunk/; revision=15272

This commit is contained in:
Maarten van der Heide
2012-05-08 11:40:44 +00:00
parent 8301a4a815
commit 3dd57eaddc
2 changed files with 476 additions and 2 deletions

35
PRIS/Once/pris2.sql Normal file
View File

@@ -0,0 +1,35 @@
-- Customer specific once-script PRIS2.
--
-- (c) 2012 SG|facilitor bv
-- $Revision: 1 $
-- $Modtime: 8-05-12 13:34 $
--
-- Support: +31 53 4800700
SET ECHO ON
SPOOL xpris2.lst
SET DEFINE OFF
-- Voor importeren eigen tabellen (specifiek: voor hash table pandcode-->vinder-regio)
CREATE TABLE pris_imp_usrdata (
fac_usrtab_naam VARCHAR2 (16),
fac_usrdata_code VARCHAR2 (40),
fac_usrdata_omschr VARCHAR2 (60),
fac_usrdata_volgnr NUMBER (3),
fac_usrdata_prijs NUMBER (8,2),
fac_usrdata_vervaldatum DATE
);
INSERT INTO fac_import_app
(fac_import_app_code, fac_import_app_oms,
fac_functie_key)
SELECT 'USRDATA', 'FIP: Aanmaken/bijwerken eigen tabel',
fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_IMPORT';
BEGIN adm.systrackscript('$Workfile: pris2.sql $', '$Revision: 1 $', 1); END;
/
@pris.sql
SPOOL OFF

View File

@@ -1,7 +1,7 @@
-- Script containing customer specific configuration sql statements for PRIS
-- (c) 2010 SG|facilitor bv
-- $Revision: 2 $
-- $Modtime: 23-09-10 13:10 $
-- $Revision: 3 $
-- $Modtime: 8-05-12 13:38 $
--
-- Support: +31 53 4800700
@@ -246,6 +246,445 @@ AS
AND og.alg_locatie_key = l.alg_locatie_key
AND m.mld_melding_status = s.mld_statuses_key;
CREATE OR REPLACE PROCEDURE pris_import_usrdata (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (200);
-- De importvelden:
v_fac_usrtab_naam VARCHAR2 (256); -- C16
v_fac_usrdata_code VARCHAR2 (256); -- C40
v_fac_usrdata_omschr VARCHAR2 (256); -- C60
v_fac_usrdata_volgnr VARCHAR2 (256); -- N3
v_fac_usrdata_prijs VARCHAR2 (256); -- N8,2
v_fac_usrdata_vervaldatum VARCHAR2 (256); -- DATE
-- Overig:
v_fac_usrdata_volgnr_n NUMBER (3); -- N3
v_fac_usrdata_prijs_n NUMBER (8, 2); -- N8,2
v_fac_usrdata_vervaldatum_d DATE; -- DATE
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM pris_imp_usrdata;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_fac_usrtab_naam);
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_code);
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_omschr);
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_volgnr);
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_prijs);
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_vervaldatum);
v_aanduiding :=
'[' || v_fac_usrtab_naam || '|' || v_fac_usrdata_code || '] ';
-- 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_fac_usrtab_naam) = 'TABELNAAM'
AND UPPER (v_fac_usrdata_code) = 'WAARDE_CODE'
AND UPPER (v_fac_usrdata_omschr) = 'WAARDE_OMS'
AND UPPER (v_fac_usrdata_volgnr) = 'VOLGNR'
AND UPPER (v_fac_usrdata_prijs) = 'PRIJS'
AND UPPER (v_fac_usrdata_vervaldatum) = 'VERVALDATUM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Tabelnaam ongeldig; ongedefinieerd of te lang';
v_fac_usrtab_naam := TRIM (v_fac_usrtab_naam);
IF v_fac_usrtab_naam IS NULL OR LENGTH (v_fac_usrtab_naam) > 16
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Waarde-code ongeldig; ongedefinieerd of te lang';
v_fac_usrdata_code := TRIM (v_fac_usrdata_code);
IF v_fac_usrdata_code IS NULL OR LENGTH (v_fac_usrdata_code) > 40
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Waarde-omschrijving te lang';
v_fac_usrdata_omschr := TRIM (v_fac_usrdata_omschr);
IF LENGTH (v_fac_usrdata_omschr) > 60
THEN
v_fac_usrdata_omschr :=
SUBSTR (TRIM (v_fac_usrdata_omschr), 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Waarde-omschrijving wordt afgebroken tot ['
|| v_fac_usrdata_omschr
|| ']'
);
END IF;
--
v_errormsg := 'Volgnummer ongeldig; maximale grootte 999';
v_fac_usrdata_volgnr := TRIM (v_fac_usrdata_volgnr);
v_fac_usrdata_volgnr_n := NULL;
IF (v_fac_usrdata_volgnr IS NOT NULL)
THEN
IF (fac.safe_to_number (v_fac_usrdata_volgnr) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_fac_usrdata_volgnr_n :=
fac.safe_to_number (v_fac_usrdata_volgnr);
END IF;
END IF;
--
v_errormsg := 'Prijs ongeldig; maximale grootte 999999.99';
v_fac_usrdata_prijs := TRIM (v_fac_usrdata_prijs);
v_fac_usrdata_prijs_n := NULL;
IF (v_fac_usrdata_prijs IS NOT NULL)
THEN
IF (fac.safe_to_number (v_fac_usrdata_prijs) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_fac_usrdata_prijs_n :=
fac.safe_to_number (v_fac_usrdata_prijs);
END IF;
END IF;
--
v_errormsg := 'Vervaldatum ongeldig';
v_fac_usrdata_vervaldatum := TRIM (v_fac_usrdata_vervaldatum);
v_fac_usrdata_vervaldatum_d := NULL;
IF (v_fac_usrdata_vervaldatum IS NOT NULL)
THEN
IF (fac.safe_to_date (v_fac_usrdata_vervaldatum, 'dd-mm-yyyy') IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_fac_usrdata_vervaldatum_d :=
fac.safe_to_date (v_fac_usrdata_vervaldatum,
'dd-mm-yyyy');
END IF;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
INSERT INTO pris_imp_usrdata (fac_usrtab_naam,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_volgnr,
fac_usrdata_prijs,
fac_usrdata_vervaldatum)
VALUES (v_fac_usrtab_naam,
v_fac_usrdata_code,
v_fac_usrdata_omschr,
v_fac_usrdata_volgnr_n,
v_fac_usrdata_prijs_n,
v_fac_usrdata_vervaldatum_d);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'');
END;
COMMIT;
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',
'Eigen tabellen/aantal ingelezen importregels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Eigen tabellen/aantal ongeldige niet ingelezen 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, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces eigen tabellen afgebroken!');
END pris_import_usrdata;
/
/* Formatted on 7-3-2011 11:52:52 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE pris_update_usrdata (p_import_key IN NUMBER)
AS
-- Cursor loopt over de voorkomende (unieke) tabelnamen.
CURSOR c1
IS
SELECT DISTINCT fac_usrtab_naam FROM pris_imp_usrdata;
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- SUBPROC
PROCEDURE add_tabel (p_import_key IN NUMBER,
p_tabname IN VARCHAR2)
AS
CURSOR c1
IS
SELECT fac_usrtab_naam,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_volgnr,
fac_usrdata_prijs,
fac_usrdata_vervaldatum
FROM pris_imp_usrdata
WHERE fac_usrtab_naam = p_tabname;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_upd NUMBER (10);
v_tab_key NUMBER;
BEGIN
v_count_tot := 0;
v_count_upd := 0;
v_errormsg := 'Fout bij bepalen eigen tabel [' || p_tabname || '] ';
SELECT COUNT ( * )
INTO v_count
FROM fac_usrtab
WHERE fac_usrtab_naam = p_tabname;
IF (v_count = 0)
THEN
v_errormsg := 'Fout bij toevoegen eigen tabel [' || p_tabname || '] ';
INSERT INTO fac_usrtab (fac_usrtab_naam, fac_usrtab_omschrijving)
VALUES (p_tabname, p_tabname)
RETURNING fac_usrtab_key INTO v_tab_key;
COMMIT;
ELSE
SELECT fac_usrtab_key
INTO v_tab_key
FROM fac_usrtab
WHERE fac_usrtab_naam = p_tabname;
END IF;
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg :=
'Fout bij bepalen bestaan waarde-code ['
|| rec.fac_usrdata_code
|| '] ';
SELECT COUNT ( * )
INTO v_count
FROM fac_usrdata
WHERE fac_usrtab_key = v_tab_key
AND fac_usrdata_code = rec.fac_usrdata_code;
IF (v_count = 0)
THEN
v_errormsg :=
'Fout bij toevoegen waarde-code ['
|| rec.fac_usrdata_code
|| '] ';
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_volgnr,
fac_usrdata_vervaldatum,
fac_usrdata_prijs)
VALUES (v_tab_key,
rec.fac_usrdata_code,
rec.fac_usrdata_omschr,
rec.fac_usrdata_volgnr,
rec.fac_usrdata_vervaldatum,
rec.fac_usrdata_prijs);
ELSE
v_errormsg :=
'Fout bij bijwerken waarde-code ['
|| rec.fac_usrdata_code
|| '] ';
UPDATE fac_usrdata
SET fac_usrdata_omschr = rec.fac_usrdata_omschr,
fac_usrdata_volgnr = rec.fac_usrdata_volgnr,
fac_usrdata_vervaldatum = rec.fac_usrdata_vervaldatum,
fac_usrdata_prijs = rec.fac_usrdata_prijs
WHERE fac_usrtab_key = v_tab_key
AND fac_usrdata_code = rec.fac_usrdata_code;
END IF;
COMMIT;
v_count_upd := v_count_upd + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
p_tabname || ': #ingelezen = ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
p_tabname || ': #toegevoegd/bijgewerkt = ' || TO_CHAR (v_count_upd),
''
);
COMMIT;
END;
-- MAIN
BEGIN
-- Loop door de voorkomende (unieke) tabelnamen en voeg deze toe en/of werk
-- deze bij.
FOR rec IN c1
LOOP
BEGIN
add_tabel (p_import_key, rec.fac_usrtab_naam);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Importproces eigen tabellen afgebroken!');
END pris_update_usrdata;
/
BEGIN fac.registercustversion('PRIS', 1); END;
/