AAIT#72551 -- Once Inventarisatie-Externe-Bedrijven aanpassen - vooruitlevering tbv nieuwe klanten in inlo

svn path=/Customer/; revision=56782
This commit is contained in:
Jos Migo
2022-08-07 18:47:27 +00:00
parent ff5e6ef8a0
commit 2fd4416e0e

View File

@@ -0,0 +1,572 @@
--
-- $Id$
--
-- ONCESCRIPT om tijdelijk de FIP: FAC_UPDATE_BEDRIJFADRES via een CUST te laten lopen,
--- zodat HEYDAY in die omgeving de verbetering uit 2022.3 alvast kan gebruiken voor de nieuwe klanten die komende periode op stapel staan (o.a. IKEA).
DEFINE thisfile = 'INLO#72551.SQL'
DEFINE dbuser = 'INLO'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
WHENEVER SQLERROR CONTINUE;
PROMPT &fcltcusterr
SET DEFINE OFF
------ payload begin ------
CREATE TABLE inlo_imp_bedrijfadres
(
prs_bedrijf_key NUMBER (10),
prs_bedrijfadres_type VARCHAR2 (1),
mld_typeopdr_key NUMBER (10),
prs_bedrijfadres_url VARCHAR2 (512),
prs_bedrijfadres_ordermode NUMBER (3),
prs_bedrijfadres_certificate VARCHAR2 (255),
prs_bedrijfadres_xsl VARCHAR2 (256),
prs_bedrijfadres_ext VARCHAR2 (10),
prs_bedrijfadres_attachfile VARCHAR2 (256),
prs_bedrijfadres_username VARCHAR2 (32),
prs_bedrijfadres_password VARCHAR2 (320),
prs_bedrijfadres_plugin VARCHAR2 (320),
prs_bedrijfadres_plugindata VARCHAR2 (4000),
prs_bedrijfadres_sender VARCHAR2 (512),
prs_bedrijfadres_lockuser_key NUMBER (10),
prs_bedrijfadres_lockexpire NUMBER (10)
);
CREATE OR REPLACE PROCEDURE inlo_import_bedrijfadres (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint 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_prs_bedrijf_naam VARCHAR2 (255); -- VARCHAR2(60),
v_prs_leverancier_nr VARCHAR2 (255); -- VARCHAR2(50),
v_prs_bedrijf_key NUMBER(10);
v_prs_bedrijfadres_type VARCHAR2 (255); -- VARCHAR2(1),
v_mld_typeopdr_omschrijving VARCHAR2 (255); -- NUMBER(10),
v_mld_typeopdr_key NUMBER(10);
v_prs_bedrijfadres_url VARCHAR2 (1000); -- VARCHAR2(512),
v_prs_bedrijfadres_ordermode VARCHAR2 (255); -- NUMBER(3),
v_prs_bedrijfadres_certificate VARCHAR2 (1000); -- VARCHAR2(255),
v_prs_bedrijfadres_xsl VARCHAR2 (1000); -- VARCHAR2(256),
v_prs_bedrijfadres_ext VARCHAR2 (255); -- VARCHAR2(10),
v_prs_bedrijfadres_attachfile VARCHAR2 (1000); -- VARCHAR2(256),
v_prs_bedrijfadres_username VARCHAR2 (255); -- VARCHAR2(32),
v_prs_bedrijfadres_password VARCHAR2 (1000); -- VARCHAR2(320)),
v_prs_bedrijfadres_sender VARCHAR2 (1000); -- VARCHAR2(512),
v_prs_bedrijfadres_lockuser VARCHAR2 (255); -- NUMBER(10),
v_lockuser_key NUMBER (10);
v_prs_bedrijfadres_lockexpire VARCHAR2 (255);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM inlo_imp_bedrijfadres;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
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_prs_bedrijf_naam);
fac.imp_getfield (v_newline, c_delim, v_prs_leverancier_nr);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_type);
fac.imp_getfield (v_newline, c_delim, v_mld_typeopdr_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_url);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_ordermode);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_certificate);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_xsl);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_ext);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_attachfile);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_username);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_password);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_sender);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_lockuser);
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_lockexpire);
v_aanduiding :=
'['
|| v_prs_bedrijf_naam
|| '|'
|| v_prs_leverancier_nr
|| '|'
|| v_prs_bedrijfadres_type
|| '|'
|| v_mld_typeopdr_omschrijving
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_prs_bedrijf_naam) = 'BEDRIJFSNAAM'
AND UPPER (v_prs_leverancier_nr) = 'LEVERANCIERNUMMER'
AND UPPER (v_prs_bedrijfadres_type) = 'KANAAL'
AND UPPER (v_mld_typeopdr_omschrijving) = 'OPDRACHTTYPE'
AND UPPER (v_prs_bedrijfadres_url) = 'ADRES'
AND UPPER (v_prs_bedrijfadres_ordermode) = 'ORDERMODE'
AND UPPER (v_prs_bedrijfadres_certificate) = 'CERTIFICAAT'
AND UPPER (v_prs_bedrijfadres_xsl) = 'XSL_TEMPLATE'
AND UPPER (v_prs_bedrijfadres_ext) = 'EXTENSIE'
AND UPPER (v_prs_bedrijfadres_attachfile) = 'VASTE_BIJLAGE'
AND UPPER (v_prs_bedrijfadres_username) = 'LOGIN'
AND UPPER (v_prs_bedrijfadres_password) = 'WACHTWOORD'
AND UPPER (v_prs_bedrijfadres_sender) = 'AFZENDER'
AND UPPER (v_prs_bedrijfadres_lockuser) = 'VASTE_GEBRUIKER'
AND UPPER (v_prs_bedrijfadres_lockexpire) = 'EXPIRE_DAYS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Bedrijf niet gevonden';
BEGIN
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijf
WHERE COALESCE(prs_bedrijf_intern, 0) <> 1
AND prs_bedrijf_verwijder IS NULL
AND UPPER(prs_leverancier_nr) = UPPER(v_prs_leverancier_nr);
EXCEPTION WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijf
WHERE COALESCE(prs_bedrijf_intern, 0) <> 1
AND prs_bedrijf_verwijder IS NULL
AND UPPER(prs_bedrijf_naam) = UPPER(v_prs_bedrijf_naam);
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END;
END;
IF v_ongeldig = 0
THEN
v_errormsg := 'Opdrachttype niet gevonden';
v_mld_typeopdr_key := NULL;
IF UPPER(v_prs_bedrijfadres_type) = 'O' AND v_mld_typeopdr_omschrijving IS NOT NULL
THEN
BEGIN
SELECT mld_typeopdr_key
INTO v_mld_typeopdr_key
FROM mld_typeopdr
WHERE mld_typeopdr_upper = UPPER(v_mld_typeopdr_omschrijving);
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END;
END IF;
END IF;
-- Expire days mag niet negatief of meer zijn dan 10 posities lang.
-- Indien leeg, dan blijft/wordt expire_days=ongedefinieerd=NULL!
v_prs_bedrijfadres_lockexpire := TRIM (v_prs_bedrijfadres_lockexpire);
IF v_prs_bedrijfadres_lockexpire IS NOT NULL
AND ( fac.safe_to_number (v_prs_bedrijfadres_lockexpire) IS NULL
OR fac.safe_to_number (v_prs_bedrijfadres_lockexpire) < 0
OR fac.safe_to_number (v_prs_bedrijfadres_lockexpire) > 9999999999)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Ongeldig aantal expire days',
'Regel wordt niet ingelezen (Expire days:' || v_prs_bedrijfadres_lockexpire || ')'
);
v_ongeldig := 1;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Controleer kanaal';
IF LENGTH(v_prs_bedrijfadres_type) > 1
THEN
v_prs_bedrijfadres_type := SUBSTR(v_prs_bedrijfadres_type, 1, 1);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Kanaal aangepast naar: ' || v_prs_bedrijfadres_type);
END IF;
v_errormsg := 'Controleer lengte van URL';
IF LENGTH(v_prs_bedrijfadres_url) > 512
THEN
v_prs_bedrijfadres_url := SUBSTR(v_prs_bedrijfadres_url, 1, 512);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'URL aangepast naar: ' || v_prs_bedrijfadres_url);
END IF;
v_errormsg := 'Controleer ordermode';
IF LENGTH(v_prs_bedrijfadres_ordermode) > 3
OR ( fac.safe_to_number(v_prs_bedrijfadres_ordermode) IS NULL
AND v_prs_bedrijfadres_ordermode IS NOT NULL)
THEN
v_prs_bedrijfadres_ordermode := SUBSTR(v_prs_bedrijfadres_ordermode, 1, 3);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Ordermode aangepast naar: ' || fac.safe_to_number(v_prs_bedrijfadres_ordermode));
END IF;
v_errormsg := 'Controleer lengte van certificaat';
IF LENGTH(v_prs_bedrijfadres_certificate) > 255
THEN
v_prs_bedrijfadres_certificate := SUBSTR(v_prs_bedrijfadres_certificate, 1, 255);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Certificaat aangepast naar: ' || v_prs_bedrijfadres_certificate);
END IF;
v_errormsg := 'Controleer lengte van stylesheet';
IF LENGTH(v_prs_bedrijfadres_xsl) > 256
THEN
v_prs_bedrijfadres_xsl := SUBSTR(v_prs_bedrijfadres_xsl, 1, 256);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Stylesheet aangepast naar: ' || v_prs_bedrijfadres_xsl);
END IF;
v_errormsg := 'Controleer lengte van extensie';
IF LENGTH(v_prs_bedrijfadres_ext) > 10
THEN
v_prs_bedrijfadres_ext := SUBSTR(v_prs_bedrijfadres_ext, 1, 10);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Extensie aangepast naar: ' || v_prs_bedrijfadres_ext);
END IF;
v_errormsg := 'Controleer lengte van vaste bijlage';
IF LENGTH(v_prs_bedrijfadres_attachfile) > 256
THEN
v_prs_bedrijfadres_attachfile := SUBSTR(v_prs_bedrijfadres_attachfile, 1, 256);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Vaste bijlage aangepast naar: ' || v_prs_bedrijfadres_attachfile);
ELSE
IF ((LENGTH(v_prs_bedrijfadres_attachfile) > 0) AND (INSTR(v_prs_bedrijfadres_attachfile,'.') < 0))
THEN
v_prs_bedrijfadres_attachfile := '';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Ongeldige vaste bijlage verwijderd: ' || v_prs_bedrijfadres_attachfile);
END IF;
END IF;
v_errormsg := 'Controleer lengte van login';
IF LENGTH(v_prs_bedrijfadres_username) > 32
THEN
v_prs_bedrijfadres_username := SUBSTR(v_prs_bedrijfadres_username, 1, 32);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Login aangepast naar: ' || v_prs_bedrijfadres_username);
END IF;
v_errormsg := 'Controleer lengte van wachtwoord';
IF LENGTH(v_prs_bedrijfadres_password) > 320
THEN
v_prs_bedrijfadres_password := SUBSTR(v_prs_bedrijfadres_password, 1, 320);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Wachtwoord aangepast naar: ' || v_prs_bedrijfadres_password);
END IF;
v_errormsg := 'Controleer lengte van afzender';
IF LENGTH(v_prs_bedrijfadres_sender) > 512
THEN
v_prs_bedrijfadres_sender := SUBSTR(v_prs_bedrijfadres_sender, 1, 512);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
'Afzender aangepast naar: ' || v_prs_bedrijfadres_sender);
END IF;
-- Vindt de key van de vaste gebruiker.
v_prs_bedrijfadres_lockuser := TRIM (v_prs_bedrijfadres_lockuser);
IF v_prs_bedrijfadres_lockuser IS NOT NULL
THEN
BEGIN
SELECT prs_perslid_key
INTO v_lockuser_key
FROM prs_perslid
WHERE prs_perslid_oslogin = UPPER (v_prs_bedrijfadres_lockuser)
AND prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_lockuser_key := NULL;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Budgethouder-aanduiding kan niet gevonden worden',
'Vaste gebruiker wordt leeg gemaakt [' || v_prs_bedrijfadres_lockuser || ']');
END;
ELSE
v_lockuser_key := NULL;
END IF;
BEGIN
v_errormsg := 'Toevoegen bedrijfadres';
INSERT INTO inlo_imp_bedrijfadres (prs_bedrijf_key,
prs_bedrijfadres_type,
mld_typeopdr_key,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_bedrijfadres_ext,
prs_bedrijfadres_attachfile,
prs_bedrijfadres_username,
prs_bedrijfadres_password,
prs_bedrijfadres_sender,
prs_bedrijfadres_lockuser_key,
prs_bedrijfadres_lockexpire)
VALUES (v_prs_bedrijf_key,
v_prs_bedrijfadres_type,
v_mld_typeopdr_key,
v_prs_bedrijfadres_url,
v_prs_bedrijfadres_ordermode,
v_prs_bedrijfadres_certificate,
v_prs_bedrijfadres_xsl,
v_prs_bedrijfadres_ext,
v_prs_bedrijfadres_attachfile,
v_prs_bedrijfadres_username,
v_prs_bedrijfadres_password,
v_prs_bedrijfadres_sender,
v_lockuser_key,
fac.safe_to_number (v_prs_bedrijfadres_lockexpire));
COMMIT;
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,
'');
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',
'Adressen/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Adressen/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 adressen afgebroken!');
END inlo_import_bedrijfadres;
/
CREATE OR REPLACE PROCEDURE inlo_update_bedrijfadres (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM inlo_imp_bedrijfadres i;
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_aanduiding VARCHAR2 (200) := '-';
v_prs_bedrijf_naam VARCHAR (60);
-- MAIN
BEGIN
v_count_tot := 0;
v_count := 0;
FOR rec IN c
LOOP
BEGIN
SELECT prs_bedrijf_naam
INTO v_prs_bedrijf_naam
FROM prs_bedrijf
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| v_prs_bedrijf_naam
|| '|'
|| rec.prs_bedrijfadres_type
|| '] ';
v_errorhint := 'Fout toevoegen bedrijfadres';
INSERT INTO prs_bedrijfadres (prs_bedrijf_key,
prs_bedrijfadres_type,
mld_typeopdr_key,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_bedrijfadres_ext,
prs_bedrijfadres_attachfile,
prs_bedrijfadres_username,
prs_bedrijfadres_password,
prs_bedrijfadres_sender,
prs_bedrijfadres_lockuser_key,
prs_bedrijfadres_locksecret,
prs_bedrijfadres_lockexpire)
VALUES (rec.prs_bedrijf_key,
rec.prs_bedrijfadres_type,
rec.mld_typeopdr_key,
rec.prs_bedrijfadres_url,
rec.prs_bedrijfadres_ordermode,
rec.prs_bedrijfadres_certificate,
rec.prs_bedrijfadres_xsl,
rec.prs_bedrijfadres_ext,
rec.prs_bedrijfadres_attachfile,
rec.prs_bedrijfadres_username,
rec.prs_bedrijfadres_password,
rec.prs_bedrijfadres_sender,
rec.prs_bedrijfadres_lockuser_key,
CASE
WHEN rec.prs_bedrijfadres_lockuser_key IS NOT NULL
THEN DBMS_RANDOM.string('a', 32)
ELSE NULL
END,
CASE
WHEN rec.prs_bedrijfadres_lockuser_key IS NOT NULL
THEN COALESCE(rec.prs_bedrijfadres_lockexpire, 30)
ELSE NULL
END);
v_count := v_count + 1;
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;
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count),
'');
COMMIT;
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,
'Importproces bedrijfadressen afgebroken!');
END;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 1); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile