AAIT#69749 -- Algemene inkoopvoorwaarden voor MA en CP doorvoeren + check/herstel afmelder1 en locksecret1 - per klantomgeving oncescript
svn path=/Customer/; revision=54296
This commit is contained in:
415
onces/AA/INLO/INLO#69749.sql
Normal file
415
onces/AA/INLO/INLO#69749.sql
Normal file
@@ -0,0 +1,415 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Script om alle voorwaarden voor Uitvoerende en Contactanten goed te zetten als vaste bijlage in technisch kanaal.
|
||||
-- Op basis aangeleverde excellijst (zie ticket 62728)
|
||||
|
||||
DEFINE thisfile = 'INLO#69749.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 ------
|
||||
|
||||
-- Hulpview
|
||||
CREATE OR REPLACE VIEW inlo_v_bedradres_voorwaarden
|
||||
AS
|
||||
SELECT t.prs_relatietype_omschrijving,
|
||||
b.prs_bedrijf_key,
|
||||
b.prs_bedrijf_naam,
|
||||
(SELECT kw.prs_kenmerklink_waarde
|
||||
FROM prs_kenmerk k, prs_kenmerklink kw
|
||||
WHERE kw.prs_link_key = b.prs_bedrijf_key
|
||||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||||
AND k.prs_kenmerk_omschrijving = 'Ingericht voor Account(s)'
|
||||
AND k.prs_kenmerk_niveau = 'B'
|
||||
AND kw.prs_kenmerklink_verwijder IS NULL)
|
||||
AS account,
|
||||
b.prs_bedrijf_uitvoerende,
|
||||
b.prs_bedrijf_contract,
|
||||
b.prs_overeenkomst_nr,
|
||||
(SELECT kw.prs_kenmerklink_waarde
|
||||
FROM prs_kenmerk k, prs_kenmerklink kw
|
||||
WHERE kw.prs_link_key = b.prs_bedrijf_key
|
||||
AND kw.prs_kenmerk_key = k.prs_kenmerk_key
|
||||
AND k.prs_kenmerk_upper = 'OVEREENKOMST'
|
||||
AND k.prs_kenmerk_niveau = 'B'
|
||||
AND kw.prs_kenmerklink_verwijder IS NULL)
|
||||
AS overeenkomst,
|
||||
a.prs_bedrijfadres_key,
|
||||
a.mld_typeopdr_key,
|
||||
a.prs_bedrijfadres_type, -- O of C
|
||||
DECODE (
|
||||
a.prs_bedrijfadres_type,
|
||||
'C', 'Contracten',
|
||||
'O', COALESCE (o.mld_typeopdr_omschrijving,
|
||||
'Geen/Overige opdrachten'),
|
||||
'<?>')
|
||||
AS Opdrachttype,
|
||||
a.prs_bedrijfadres_flexfiles
|
||||
AS BijlageMeesturen, -- 0 of 1 is JA , 2 = NEE -- ECHTER deze nemen we niet als voorwaarde mee in de bepaling of er wel/geen vaste bijlage mee moet. Staat daar namelijk los van...
|
||||
a.prs_bedrijfadres_attachfile,
|
||||
a.prs_bedrijfadres_url,
|
||||
a.prs_bedrijfadres_lockuser_key,
|
||||
p.prs_perslid_naam,
|
||||
a.prs_bedrijfadres_locksecret,
|
||||
CASE WHEN a.prs_bedrijfadres_type = 'O'
|
||||
THEN COALESCE(t.totaal, 0)
|
||||
ELSE NULL
|
||||
END
|
||||
totaal,
|
||||
CASE WHEN a.prs_bedrijfadres_type = 'O'
|
||||
THEN
|
||||
DECODE(a.mld_typeopdr_key, NULL, NULL, COALESCE(st.subtotaal, 0))
|
||||
ELSE NULL
|
||||
END
|
||||
subtotaal
|
||||
FROM prs_bedrijf b,
|
||||
prs_bedrijfadres a,
|
||||
prs_relatietype t,
|
||||
mld_typeopdr o,
|
||||
prs_perslid p,
|
||||
(SELECT mld_uitvoerende_keys, COUNT (*) totaal
|
||||
FROM mld_opdr
|
||||
WHERE mld_statusopdr_key IN (3, 4, 5, 8, 10) -- lopende opdrachten
|
||||
GROUP BY mld_uitvoerende_keys) t, -- totaal
|
||||
(SELECT mld_uitvoerende_keys, mld_typeopdr_key, COUNT (*) subtotaal
|
||||
FROM mld_opdr
|
||||
WHERE mld_statusopdr_key IN (3, 4, 5, 8, 10) -- lopende opdrachten
|
||||
GROUP BY mld_uitvoerende_keys, mld_typeopdr_key) st -- subtotaal
|
||||
WHERE b.prs_relatietype_key = t.prs_relatietype_key
|
||||
AND a.mld_typeopdr_key = o.mld_typeopdr_key(+)
|
||||
AND b.prs_bedrijf_key = a.prs_bedrijf_key
|
||||
AND b.prs_bedrijf_verwijder IS NULL
|
||||
AND b.prs_bedrijf_intern IS NULL
|
||||
AND (b.prs_bedrijf_uitvoerende = 1 OR b.prs_bedrijf_contract = 1)
|
||||
AND a.prs_bedrijfadres_type in ('C','O') -- Dus alle relaties zonder kanalen op O en C worden niet meegenomen (er vanuitgaande dat dit ook geen actuele relaties zijn...
|
||||
AND a.prs_bedrijfadres_lockuser_key = p.prs_perslid_key (+)
|
||||
AND b.prs_bedrijf_key = t.mld_uitvoerende_keys (+)
|
||||
AND (b.prs_bedrijf_key = st.mld_uitvoerende_keys (+) AND o.mld_typeopdr_key = st.mld_typeopdr_key (+) )
|
||||
ORDER BY b.prs_bedrijf_key, a.prs_bedrijfadres_key ;
|
||||
|
||||
-- PROCEDURE om:
|
||||
---- 0. Te checken en corrigeren dat op elk Opdracht-kanaal ook de afmelder1 en uniek lock_secret is aangemaakt
|
||||
---- 1. De juiste bestanden als vaste bijlage te koppelen
|
||||
---- 2. Projectkanaal aan te maken
|
||||
CREATE OR REPLACE PROCEDURE aaxx_update_voorwaarden (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
v_aanduiding VARCHAR2 (1000);
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
|
||||
-- Per klantomgeving te vullen
|
||||
v_cp_voorwaarden VARCHAR2 (1000) := 'HEYDAY_Algemene Inkoopvoorwaarden_Versie november 2021.pdf' ;
|
||||
v_ma_voorwaarden VARCHAR2 (1000) := 'Algemene inkoopvoorwaarden Campus Vastgoed Greenport Venlo (versie 1 februari 2017).pdf' ;
|
||||
v_projecttype_1 VARCHAR2 (1000) := 'Project RFQ' ;
|
||||
v_projecttype_2 VARCHAR2 (1000) := 'Projectorder' ;
|
||||
v_gedeeld_geheim VARCHAR2 (1000) := '5EaPXnVWbTfqvdttTHyphLxIRTShDBUh' ;
|
||||
-- v_gedeeld_geheim_2 VARCHAR2 (1000) := '' ;
|
||||
|
||||
--- Overige
|
||||
v_mld_typeopdr_key NUMBER (10);
|
||||
v_custcode VARCHAR2 (10);
|
||||
v_afmelder1_key NUMBER (10);
|
||||
v_email_url VARCHAR2 (1000);
|
||||
|
||||
CURSOR ch -- Voor check en herstel van opdrachtkanalen. Moeten gevuld zijn met afmelder1 en gevuld met uniek gedeeld geheim
|
||||
IS
|
||||
SELECT *
|
||||
FROM
|
||||
aaxx_v_bedradres_voorwaarden v
|
||||
WHERE v.prs_bedrijfadres_type = 'O' ;
|
||||
|
||||
CURSOR cp
|
||||
IS
|
||||
SELECT *
|
||||
FROM
|
||||
aaxx_v_bedradres_voorwaarden v
|
||||
WHERE v.prs_relatietype_omschrijving = 'Contracting party' ;
|
||||
|
||||
CURSOR ma
|
||||
IS
|
||||
SELECT *
|
||||
FROM
|
||||
aaxx_v_bedradres_voorwaarden v
|
||||
WHERE v.prs_relatietype_omschrijving = 'Managing agent' ;
|
||||
|
||||
CURSOR pr
|
||||
IS
|
||||
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_bedrijf_email, v_projecttype_1 as projecttype
|
||||
FROM prs_bedrijf b, aaxx_v_bedradres_voorwaarden v
|
||||
WHERE b.prs_bedrijf_key = v.prs_bedrijf_key
|
||||
AND b.prs_bedrijf_uitvoerende = 1
|
||||
-- AND b.prs_bedrijf_email IS NOT NULL
|
||||
AND NOT EXISTS
|
||||
(SELECT v.prs_bedrijf_key
|
||||
FROM aaxx_v_bedradres_voorwaarden v
|
||||
WHERE v.prs_bedrijf_key = b.prs_bedrijf_key
|
||||
AND v.opdrachttype = v_projecttype_1)
|
||||
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_bedrijf_email
|
||||
UNION
|
||||
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_bedrijf_email, v_projecttype_2 as projecttype
|
||||
FROM prs_bedrijf b, aaxx_v_bedradres_voorwaarden v
|
||||
WHERE b.prs_bedrijf_key = v.prs_bedrijf_key
|
||||
AND b.prs_bedrijf_uitvoerende = 1
|
||||
-- AND b.prs_bedrijf_email IS NOT NULL
|
||||
AND NOT EXISTS
|
||||
(SELECT v.prs_bedrijf_key
|
||||
FROM aaxx_v_bedradres_voorwaarden v
|
||||
WHERE v.prs_bedrijf_key = b.prs_bedrijf_key
|
||||
AND v.opdrachttype = v_projecttype_2)
|
||||
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam, b.prs_bedrijf_email ;
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Algemene waarden ophalen
|
||||
SELECT fac_version_cust
|
||||
INTO v_custcode
|
||||
FROM fac_version ;
|
||||
|
||||
SELECT max(prs_perslid_key)
|
||||
INTO v_afmelder1_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_naam = 'Afmelder1' AND prs_perslid_verwijder IS NULL ;
|
||||
|
||||
FOR rec IN ch
|
||||
LOOP
|
||||
|
||||
v_errorhint := 'Check en herstel: ' || rec.prs_bedrijf_key || ' ' || rec.prs_bedrijfadres_key;
|
||||
|
||||
-- gedeeld geheim op projectkanaal 2020 aangemaakt - vullen met random-waarde
|
||||
IF (rec.opdrachttype = v_projecttype_1 OR rec.opdrachttype = v_projecttype_2) AND rec.prs_bedrijfadres_locksecret = v_gedeeld_geheim AND rec.SUBTOTAAL = 0 -- Geen lopende opdrachten op!!
|
||||
THEN
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_locksecret = DBMS_RANDOM.string('a', 32)
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
-- afmelder1 vullen waar nodig
|
||||
IF v_afmelder1_key IS NOT NULL AND rec.prs_bedrijfadres_lockuser_key IS NULL
|
||||
THEN
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_lockuser_key = v_afmelder1_key,
|
||||
prs_bedrijfadres_locksecret = DBMS_RANDOM.string('a', 32)
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
|
||||
|
||||
FOR rec IN cp
|
||||
LOOP
|
||||
|
||||
v_errorhint := 'Update prs_bedrijfadres CP: ' || rec.prs_bedrijf_key || ' ' || rec.prs_bedrijfadres_key;
|
||||
|
||||
-- standaard voorwaarden voor cp
|
||||
IF v_cp_voorwaarden IS NULL -- Indien ze er niet zijn, dan leegmaken..
|
||||
THEN
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_attachfile = ''
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key AND rec.prs_bedrijfadres_attachfile IS NOT NULL
|
||||
;
|
||||
|
||||
|
||||
ELSE -- indien ze er wel zijn dan koppelen waar nodig..
|
||||
IF rec.prs_overeenkomst_nr IS NULL AND rec.overeenkomst IS NULL AND INSTR(upper(rec.opdrachttype),'PROJECT')=0
|
||||
THEN
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_attachfile = v_cp_voorwaarden
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key AND (rec.prs_bedrijfadres_attachfile <>v_cp_voorwaarden OR rec.prs_bedrijfadres_attachfile IS NULL)
|
||||
;
|
||||
|
||||
ELSE -- en anders weghalen
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_attachfile = ''
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key AND rec.prs_bedrijfadres_attachfile IS NOT NULL
|
||||
;
|
||||
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
|
||||
|
||||
FOR rec IN ma
|
||||
LOOP
|
||||
|
||||
v_errorhint := 'Update prs_bedrijfadres MA: ' || rec.prs_bedrijf_key || ' ' || rec.prs_bedrijfadres_key;
|
||||
|
||||
-- standaard voorwaarden voor ma
|
||||
IF v_ma_voorwaarden IS NULL -- Indien ze er niet zijn, dan leegmaken..
|
||||
THEN
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_attachfile = ''
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key AND rec.prs_bedrijfadres_attachfile IS NOT NULL
|
||||
;
|
||||
|
||||
ELSE -- indien ze er wel zijn dan koppelen waar nodig.. Alleen voor Greenport van toepassing
|
||||
IF rec.prs_overeenkomst_nr IS NULL AND rec.overeenkomst IS NULL AND INSTR(upper(rec.opdrachttype),'PROJECT')=0 AND INSTR(UPPER(rec.account),'GREENPORT')>0
|
||||
THEN
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_attachfile = v_ma_voorwaarden
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key AND (rec.prs_bedrijfadres_attachfile <>v_ma_voorwaarden OR rec.prs_bedrijfadres_attachfile IS NULL)
|
||||
;
|
||||
|
||||
ELSE -- en anders weghalen
|
||||
|
||||
UPDATE prs_bedrijfadres
|
||||
SET prs_bedrijfadres_attachfile = ''
|
||||
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key AND rec.prs_bedrijfadres_attachfile IS NOT NULL
|
||||
;
|
||||
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
|
||||
-- Vervolgens nog voor alle uitvoerders waar nog geen projectkanaal op aangemaakt is nog de projectkanalen toevoegen (zonder attachement)
|
||||
FOR rec IN pr
|
||||
LOOP
|
||||
|
||||
v_errorhint := 'Insert projectkanalen: ' || rec.prs_bedrijf_key;
|
||||
|
||||
SELECT mld_typeopdr_key
|
||||
INTO v_mld_typeopdr_key
|
||||
FROM mld_typeopdr
|
||||
WHERE mld_typeopdr_omschrijving = rec.projecttype ;
|
||||
|
||||
-- url voor projectkanaal bepalen: Gelijk aan 'Geen/Overige opdrachten' (mits mailto:..). Anders pakken we (mits gevuld) emailadres uit bedrijf
|
||||
SELECT max(a.prs_bedrijfadres_url)
|
||||
INTO v_email_url
|
||||
FROM aaxx_v_bedradres_voorwaarden v, prs_bedrijfadres a
|
||||
WHERE v.prs_bedrijf_key = rec.prs_bedrijf_key
|
||||
AND v.prs_bedrijfadres_key = a.prs_bedrijfadres_key
|
||||
AND v.opdrachttype = 'Geen/Overige opdrachten'
|
||||
AND INSTR (a.PRS_BEDRIJFADRES_URL, 'mailto:') > 0 ;
|
||||
|
||||
IF v_email_url IS NULL AND rec.prs_bedrijf_email IS NOT NULL
|
||||
THEN
|
||||
v_email_url := 'mailto:' || rec.prs_bedrijf_email ;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Toevoegen kanaal
|
||||
-- als email gevuld.... + afmelder 1 bekend
|
||||
IF v_email_url IS NOT NULL AND v_afmelder1_key IS NOT NULL
|
||||
THEN
|
||||
INSERT INTO prs_bedrijfadres (prs_bedrijfadres_type,
|
||||
mld_typeopdr_key,
|
||||
alg_district_key,
|
||||
alg_locatie_key,
|
||||
prs_bedrijfadres_url,
|
||||
prs_bedrijfadres_sender,
|
||||
prs_bedrijfadres_replyaddress,
|
||||
prs_bedrijfadres_username,
|
||||
prs_bedrijfadres_password,
|
||||
prs_bedrijfadres_authmethod,
|
||||
prs_bedrijfadres_ordermode,
|
||||
prs_bedrijfadres_soapaction,
|
||||
prs_bedrijfadres_certificate,
|
||||
prs_bedrijfadres_xsl,
|
||||
prs_bedrijfadres_error_handler,
|
||||
prs_bedrijfadres_ext,
|
||||
prs_bedrijfadres_lockuser_key,
|
||||
prs_bedrijfadres_locksecret,
|
||||
prs_bedrijfadres_lockexpire,
|
||||
prs_bedrijfadres_loglevel,
|
||||
prs_bedrijfadres_attachfile,
|
||||
prs_bedrijfadres_flexfiles,
|
||||
prs_bedrijfadres_encoding,
|
||||
prs_bedrijfadres_charset,
|
||||
prs_bedrijf_key)
|
||||
VALUES ('O',
|
||||
v_mld_typeopdr_key,
|
||||
NULL,
|
||||
NULL,
|
||||
v_email_url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
'xsl/' || v_custcode || '.xsl',
|
||||
0,
|
||||
NULL,
|
||||
v_afmelder1_key,
|
||||
DBMS_RANDOM.string('a', 32),
|
||||
30,
|
||||
0,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
NULL,
|
||||
rec.prs_bedrijf_key) ;
|
||||
|
||||
END IF;
|
||||
|
||||
END LOOP;
|
||||
|
||||
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.writelog (p_applname,
|
||||
'E',
|
||||
v_errormsg,
|
||||
v_errorhint);
|
||||
|
||||
END aaxx_update_voorwaarden;
|
||||
/
|
||||
|
||||
|
||||
-- Procedure uitvoeren
|
||||
begin aaxx_update_voorwaarden ('update_voorwaarden',null);
|
||||
end;
|
||||
/
|
||||
|
||||
|
||||
|
||||
-- Alles weer droppen
|
||||
DROP VIEW inlo_v_bedradres_voorwaarden ;
|
||||
DROP PROCEDURE aaxx_update_voorwaarden ;
|
||||
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
SET ECHO OFF
|
||||
SPOOL OFF
|
||||
SET DEFINE ON
|
||||
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||||
Reference in New Issue
Block a user