Files
Customer/onces/WEND/WEND#67092.sql

138 lines
4.6 KiB
SQL

-- Customer specific once-script voor WEND
-- $Id$
--
-- Oncescript om IT-Objecten uit de Topdesk-import uit te geven aan de personen (= uitleenregistratie)
DEFINE thisfile = 'WEND#67092.SQL'
DEFINE dbuser = '^WEND'
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 ------
DECLARE
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 (1000);
v_count NUMBER;
v_prs_perslid_key NUMBER(10);
v_prs_perslid_naam VARCHAR (1000) ;
v_ins_srtdeel_key NUMBER(10);
v_ins_kenmerk_key NUMBER(10);
CURSOR c
IS
SELECT d.ins_deel_key,
d.ins_deel_omschrijving,
TRIM (km.ins_kenmerkdeel_waarde) uitgegeven_aan, -- emailadres uit Topdesk
d.ins_alg_ruimte_key,
d.ins_alg_ruimte_type,
d.ins_alg_locatie_key,
d.ins_alg_ruimte_key_org,
d.ins_alg_ruimte_type_org
FROM ins_deel d, ins_kenmerkdeel km, ins_kenmerk k
WHERE d.ins_deel_key = km.ins_deel_key
AND km.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 44 -- uitgegeven aan
AND d.ins_alg_ruimte_type = 'R'
-- voor TEST
-- AND d.ins_deel_key IN (749, 987, 221, 237)
;
BEGIN
FOR rec IN c
LOOP
BEGIN
-- Kunnen we persllid_key vinden?
SELECT MIN(prs_perslid_key)
INTO v_prs_perslid_key
FROM prs_perslid
WHERE UPPER(prs_perslid_email) = UPPER(rec.uitgegeven_aan) ;
IF v_prs_perslid_key IS NOT NULL THEN
-- Volledig naam ophalen
SELECT prs_perslid_naam_full
INTO v_prs_perslid_naam
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = v_prs_perslid_key ;
-- 1. In ins_deel de originele/oorspronkelijke plaatsgegevens van Object wegschrijven + Aan welke persoon object nu is uitgeleend
UPDATE ins_deel
SET ins_alg_ruimte_key_org = rec.ins_alg_ruimte_key,
ins_alg_ruimte_type_org = rec.ins_alg_ruimte_type,
ins_alg_ruimte_key = v_prs_perslid_key,
ins_alg_ruimte_type = 'P'
WHERE ins_deel_key = rec.ins_deel_key ;
-- 2. In ins_deel de locatie_key die bovenliggend is aan oorspronkelijke ins_alg_ruimte_key weer toevoegen
UPDATE ins_deel SET ins_alg_locatie_key = rec.ins_alg_locatie_key WHERE ins_deel_key = rec.ins_deel_key ;
-- 3. Kenmerken leegmaken - Bij uitleenregistratie worden eerst afhanelijk van setting bepaalde kenmerken leeggemaalt als je object terughaald/uitgeeft.
----- Voor dit oncescript is dit niet nodig
-- 4. Het kenmerkveld vullen 'uitgifte ivm dienstverband' (srtkenmerk_key = 22, op Objectsoort-niveau vastgelegd)
v_ins_kenmerk_key := NULL ;
SELECT ins_srtdeel_key
INTO v_ins_srtdeel_key
FROM ins_deel
WHERE ins_deel_key = rec.ins_deel_key;
SELECT ins_kenmerk_key
INTO v_ins_kenmerk_key
FROM ins_kenmerk
WHERE ins_kenmerk_niveau = 'S' AND ins_srtinstallatie_key = v_ins_srtdeel_key AND ins_srtkenmerk_key = 22 ;
-- Waarde keuzelijst 1 = uitgifte ivm dienstverband
IF v_ins_kenmerk_key IS NOT NULL THEN
INSERT INTO ins_kenmerkdeel(ins_deel_key,ins_kenmerk_key,ins_kenmerkdeel_waarde) VALUES (rec.ins_deel_key,v_ins_kenmerk_key,'1') ;
END IF;
-- 5. Logging op Object doen
v_aanduiding := 'Object ' || rec.ins_deel_omschrijving || ' is uitgegeven aan ' || v_prs_perslid_naam ;
BEGIN fac.trackaction('INSOUT', rec.ins_deel_key, 3, NULL, v_aanduiding); END; -- Facilitor is prs_perslid_key 3
END IF;
END;
END LOOP;
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