HMOD#62538 -- FIP aanvullen externe bedrijven en Kenmerkvelden met once-script achteraf nog vullen

svn path=/Customer/; revision=46901
This commit is contained in:
Jos Migo
2020-05-24 07:47:18 +00:00
parent 0f8b11571b
commit 298427f0b3

190
onces/HMOD/HMOD#62538.sql Normal file
View File

@@ -0,0 +1,190 @@
-- Customer specific once-script voor HMOD
-- $Id$
--
-- Oncescript om bij de FIP - Externe bedrijven import nog de aanvullende kenmerk-velden te vullen
DEFINE thisfile = 'HMOD#62538.SQL'
DEFINE dbuser = '^HMOD'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
-- Once-procedure toevoegen
CREATE OR REPLACE PROCEDURE hmod_update_externebedrijven_overige (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR (100);
v_count NUMBER;
v_overig1_key NUMBER (10) := 1240 ; -- lokaal 1220; -- prs_kenmerk_key = Bankrek 1 relatie
v_overig2_key NUMBER (10) := 1260 ; -- lokaal 1221 -- prs_kenmerk_key = KvK-nummer
v_overig1_gevuld NUMBER (10) ;
v_overig2_gevuld NUMBER (10) ;
v_overig1_gevuldmet VARCHAR (100);
v_overig2_gevuldmet VARCHAR (100);
v_overig1_gevuldmet_key NUMBER (10);
v_overig2_gevuldmet_key NUMBER (10);
v_count_import NUMBER (10);
-- Overig1 = prs_kenmerk_key 1240 = Bankrek 1 relatie
CURSOR c_overig1
IS
SELECT b.prs_bedrijf_key, i.prs_bedrijf_overig1
FROM fac_imp_ext_bedrijf i, prs_bedrijf b
WHERE b.prs_bedrijf_naam = i.prs_bedrijf_naam
AND i.prs_bedrijf_overig1 IS NOT NULL
AND b.prs_bedrijf_intern IS NULL;
-- Overig2 = prs_kenmerk_key 1260 = KvK-nummer
CURSOR c_overig2
IS
SELECT b.prs_bedrijf_key, i.prs_bedrijf_overig2
FROM fac_imp_ext_bedrijf i, prs_bedrijf b
WHERE b.prs_bedrijf_naam = i.prs_bedrijf_naam
AND i.prs_bedrijf_overig2 IS NOT NULL
AND b.prs_bedrijf_intern IS NULL;
BEGIN
FOR rec IN c_overig1
LOOP
BEGIN
-- Eerst checken of dit kenmerk al op bedrijf gevuld is
SELECT count(*)
INTO v_overig1_gevuld
FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'B' and prs_link_key = rec.prs_bedrijf_key and prs_kenmerk_key = v_overig1_key ;
-- Niet gevuld - dan toevoegen
IF v_overig1_gevuld = 0 THEN
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerk_key,
prs_kenmerklink_waarde,
prs_kenmerklink_niveau)
VALUES (rec.prs_bedrijf_key,
v_overig1_key,
rec.prs_bedrijf_overig1,
'B') ;
COMMIT;
END IF;
-- Wel gevuld dan indien afwijkend aanpassen
IF v_overig1_gevuld > 0 THEN
SELECT prs_kenmerklink_waarde, prs_kenmerklink_key
INTO v_overig1_gevuldmet, v_overig1_gevuldmet_key
FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'B' and prs_link_key = rec.prs_bedrijf_key and prs_kenmerk_key = v_overig1_key ;
IF v_overig1_gevuldmet <> rec.prs_bedrijf_overig1
THEN
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = rec.prs_bedrijf_overig1
WHERE prs_kenmerklink_key = v_overig1_gevuldmet_key ;
COMMIT;
END IF;
END IF;
END;
END LOOP;
FOR rec IN c_overig2
LOOP
BEGIN
-- Eerst checken of dit kenmerk al op bedrijf gevuld is
SELECT count(*)
INTO v_overig2_gevuld
FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'B' and prs_link_key = rec.prs_bedrijf_key and prs_kenmerk_key = v_overig2_key ;
-- Niet gevuld - dan toevoegen
IF v_overig2_gevuld = 0 THEN
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerk_key,
prs_kenmerklink_waarde,
prs_kenmerklink_niveau)
VALUES (rec.prs_bedrijf_key,
v_overig2_key,
rec.prs_bedrijf_overig2,
'B') ;
COMMIT;
END IF;
-- Wel gevuld dan indien afwijkend aanpassen
IF v_overig1_gevuld > 0 THEN
SELECT prs_kenmerklink_waarde, prs_kenmerklink_key
INTO v_overig2_gevuldmet, v_overig2_gevuldmet_key
FROM prs_kenmerklink
WHERE prs_kenmerklink_niveau = 'B' and prs_link_key = rec.prs_bedrijf_key and prs_kenmerk_key = v_overig2_key ;
IF v_overig2_gevuldmet <> rec.prs_bedrijf_overig2
THEN
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = rec.prs_bedrijf_overig2
WHERE prs_kenmerklink_key = v_overig2_gevuldmet_key ;
COMMIT;
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
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_errormsg || ' - Check !!!! : ' || v_aanduiding,
'');
END hmod_update_externebedrijven_overige;
/
-- Procedure uitvoeren
begin hmod_update_externebedrijven_overige (null);
end;
/
-- Procedure weer droppen
DROP PROCEDURE hmod_update_externebedrijven_overige ;
------ 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