--
-- $Id$
--
-- Omzetten van huidige inrichting met vakgroepen per team naar vakgroepen per product en secundaire behandelgroepen
--  Er is handmatig al e.e.a. aangemaakt zodat we hier van bekende keys uit kunnen gaan:
--
--	Nieuwe disciplines Facilitor (161), Mareon (181) en Plato (182)
-- Corresponderende meldingen:
--  Gebrek|Verstoring (201, 241, 245)
--  Ondersteuning (202, 242, 246)
--  Vraag (203, 243, 247)
--  Wens (221, 244, 248)

DEFINE thisfile = 'LOGC#56439.SQL'
DEFINE dbuser   = '^LOGC'

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 ------

-- Eerst doen we alles onder FACILITOR, achteraf splitsen we nog naar Mareon en Plato

-- Het omzetten van Ticket/Consultants/Ticket[@Ondersteuning] naar Tickets/FACILITOR/Ondersteuning enz.
-- De secundaire behandelaar wordt gevuld met de primaire behandelaar
-- kenmerk 21 is het type: Gebrek, Wens, Ondersteuning en Vraag en bepaalt de nieuwe stdmelding

-- Waar het type bekend is, kun je 1-op-1 omzetten
UPDATE mld_melding m
   SET
       m.mld_ins_discipline_key =
           (SELECT sm.mld_ins_discipline_key
              FROM mld_stdmelding sm
             WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key),
       mld_melding_behandelaar2_key = mld_melding_behandelaar_key,
       m.mld_stdmelding_key =
           (SELECT DECODE (kmm.mld_kenmerkmelding_waarde,
                           1, 201,
                           2, 202,
                           3, 203,
                           4, 221)
              FROM mld_kenmerkmelding kmm
             WHERE     kmm.mld_melding_key = m.mld_melding_key
                   AND kmm.mld_kenmerk_key = 21)
 WHERE m.mld_melding_key IN
           (SELECT mld_melding_key
              FROM mld_kenmerkmelding
             WHERE     mld_kenmerk_key = 21
                   AND mld_kenmerkmelding_verwijder IS NULL);

-- Waar het type NIET bekend is, vertalen we de tickets obv de huidige primaire behandelgroep
-- wat bepaald wordt via de stdmelding
UPDATE mld_melding m
   SET
       m.mld_ins_discipline_key =
           (SELECT sm.mld_ins_discipline_key
              FROM mld_stdmelding sm
             WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key),
       mld_melding_behandelaar2_key = mld_melding_behandelaar_key,
       m.mld_stdmelding_key =
           DECODE (m.mld_stdmelding_key,
                   22, 221,
                   23, 202,
                   24, 221,
                   101, 203,
                   81, 203,
                   25, 203,
                   3, 203, m.mld_stdmelding_key) -- rest is geen tickets
 WHERE NOT EXISTS
           (SELECT ''
              FROM mld_kenmerkmelding km
             WHERE     mld_kenmerk_key = 21
                   AND mld_kenmerkmelding_verwijder IS NULL
                   AND km.mld_melding_key = m.mld_melding_key);

-- De oude vakgroepen worden secundaire behandelgroepen, net als de nieuwe Testen en Release
UPDATE mld_disc_params SET mld_disc_params_srtgroep = 2 WHERE mld_ins_discipline_key IN (22,42,41,81,43,21,201,202);

-- Meldingen met Test-balletje krijgen secundaire behandelgroep Testen
UPDATE mld_melding SET mld_ins_discipline_key = 201 WHERE mld_melding_flag = 4;
-- Meldingen met 2Saas-balletje krijgen secundaire behandelgroep Release
UPDATE mld_melding SET mld_ins_discipline_key = 202 WHERE mld_melding_flag = 5;

--Nu gaan we MARX splitsen naar de Mareon-vakgroep:
-- Kenmerk 25 is de fixversie/release
UPDATE mld_melding
   SET mld_stdmelding_key =
           DECODE (mld_stdmelding_key,
                   201, 241,
                   202, 242,
                   203, 243,
                   221, 244,
                   mld_stdmelding_key)
 WHERE prs_kostenplaats_key = (SELECT prs_kostenplaats_key
                                 FROM prs_kostenplaats
                                WHERE prs_kostenplaats_upper = 'MARX');
UPDATE mld_melding
   SET mld_stdmelding_key =
           DECODE (mld_stdmelding_key,
                   201, 241,
                   202, 242,
                   203, 243,
                   221, 244,
                   mld_stdmelding_key)
 WHERE mld_melding_key IN
           (SELECT mld_melding_key
              FROM mld_kenmerkmelding kmm
             WHERE     kmm.mld_kenmerkmelding_waarde LIKE 'MARX%'
                   AND kmm.mld_kenmerk_key = 25);

--Nu gaan we PLAT splitsen naar de Plato-vakgroep:
UPDATE mld_melding
   SET mld_stdmelding_key =
           DECODE (mld_stdmelding_key,
                   201, 245,
                   202, 246,
                   203, 247,
                   221, 248,
                   mld_stdmelding_key)
 WHERE prs_kostenplaats_key = (SELECT prs_kostenplaats_key
                                 FROM prs_kostenplaats
                                WHERE prs_kostenplaats_upper = 'PLAT');
UPDATE mld_melding
   SET mld_stdmelding_key =
           DECODE (mld_stdmelding_key,
                   201, 245,
                   202, 246,
                   203, 247,
                   221, 248,
                   mld_stdmelding_key)
 WHERE mld_melding_key IN
           (SELECT mld_melding_key
              FROM mld_kenmerkmelding kmm
             WHERE     kmm.mld_kenmerkmelding_waarde LIKE 'PLAT%'
                   AND kmm.mld_kenmerk_key = 25);

-- Nu moet er (handmatig) geautoriseerd gaan worden

------ 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
