/* DB18TO19.SRC
 * Update script van Facilitor schema
 * $Revision$
 * $Id$
 */
#include "prologue.inc"

COMMIT;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26583
ALTER TABLE alg_ruimte ADD alg_ruimte_beginuur NUMBER(5,2);
ALTER TABLE alg_ruimte ADD alg_ruimte_einduur NUMBER(5,2);
ALTER TABLE alg_ruimte ADD alg_ruimte_werkdagen NUMBER(1) -- DEFAULT NULL op gebouw terugvallen
        CONSTRAINT alg_c_alg_ruimte_werk CHECK(alg_ruimte_werkdagen IN(0,1));

-- Alter without errors, using new function
#include "adm\adm_pac.src"
BEGIN
  adm.tryalter('TABLE alg_gebouw DROP CONSTRAINT alg_c_alg_gebouw_week');
  adm.tryalter('TABLE alg_gebouw DROP CONSTRAINT alg_c_alg_gebouw_werk');
END;
/
ALTER TABLE alg_gebouw ADD CONSTRAINT alg_c_alg_gebouw_werk CHECK(alg_gebouw_werkdagen IN (0,1));
UPDATE alg_gebouw SET alg_gebouw_werkdagen = 0 WHERE alg_gebouw_werkdagen IS NULL;
ALTER TABLE alg_gebouw ADD NOT_NULL(alg_gebouw_werkdagen, alg_c_gebouw_werkdagen);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26586
DEF_FAC_FUNCTIE2('WEB_MLDAFR', 'Backoffice:meldingen-afronden', 'MLD', 15, 1,1,'Om afgemelde meldingen financieel te kunnen afronden (SLA overschrijdingen)');
DEF_FAC_SRTNOT('MLDAFR', 0, 'Uw melding ##KEY## (##DISC##/##STDMLD##) is definitief gereed gemeld',  'mld/mld_melding.asp?mld_key=', '0', 'melding');
ALTER TABLE mld_melding ADD mld_melding_respijt NUMBER(8,5) DEFAULT 0;
ALTER TABLE mld_melding ADD mld_melding_indult NUMBER(1) DEFAULT 0
 CONSTRAINT mld_c_mld_melding_indult1 CHECK(mld_melding_indult IN (0, 1))
  NOT_NULL(mld_melding_indult, mld_c_mld_melding_indult2);
ALTER TABLE mld_melding ADD mld_melding_afgerond NUMBER(1) DEFAULT 0
 CONSTRAINT mld_c_mld_melding_afgerond1 CHECK(mld_melding_afgerond IN (0, 1))
  NOT_NULL(mld_melding_afgerond, mld_c_mld_melding_afgerond2);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26577
ALTER TABLE mld_stdmelding ADD mld_stdmelding_slabewaken NUMBER(1) DEFAULT 1 NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// PNBR#26541
ALTER TABLE mld_stdmelding ADD alg_onrgoed_obj_niveau
  VARCHAR2(1)
  CONSTRAINT mld_c_alg_onrgoed_obj_niveau CHECK (alg_onrgoed_obj_niveau IN ('L','G','V','R'));

UPDATE mld_stdmelding
   SET alg_onrgoed_obj_niveau = alg_onrgoed_niveau;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26578
CREATE_TABLE(mld_afmeldtekst, 0)
(
    mld_afmeldtekst_key
        NUMBER(10)
        CONSTRAINT mld_k_afmeldtekst_key PRIMARY KEY,
    mld_afmeldtekst_naam
        VARCHAR2(60)
        NOT_NULL(mld_afmeldtekst_naam, mld_c_afmeldtekst_naam),
    mld_afmeldtekst_omschrijving
        VARCHAR2(1000)
        NOT_NULL(mld_afmeldtekst_omschrijving, mld_c_mld_afmeldtekst_omschr),
    mld_stdmelding_key
        NUMBER(10)
        CONSTRAINT mld_r_mld_stdmelding_key3 REFERENCES mld_stdmelding(mld_stdmelding_key),
  CONSTRAINT mld_u_afmeldtekst_naam UNIQUE (mld_afmeldtekst_naam)
);

CREATE SEQUENCE mld_s_mld_afmeldtekst_key      MINVALUE 1;

DEF_MENUITEM(2, 'lcl_menu_mld_afmeldteksten'    , '', 'MLD', 'appl/facmgtVB/mld_afmeldtekstgrid.asp', 0, 0, 'WEB_MLDMGT', 'W', '1');
MENU_INS_AFTER('lcl_menu_mld_afmeldteksten', 'lcl_menu_mld_dienst_niveaus', 2);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26580
ALTER TABLE mld_stdmelding ADD mld_stdmelding_kanverwijzen NUMBER(4) DEFAULT 0;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26722
UPDATE fac_srtnotificatie
   SET fac_srtnotificatie_xmlnode = 'bezoeker',
       fac_srtnotificatie_url = 'bez/bez_afspraak.asp?bez_key='
WHERE fac_srtnotificatie_code IN ('BEZBAD', 'BEZDON', 'BEZDO2', 'BEZOUT', 'BEZOU2');

-- Gooi bezoekerstracking weg als de bezoekers inmiddels ook weg zijn, required voor de volgende stappen
-- This really may take some time!
DELETE FROM fac_tracking
 WHERE fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
                                    FROM fac_srtnotificatie
                                   WHERE fac_srtnotificatie_code IN ('BEZBAD', 'BEZDON', 'BEZDO2', 'BEZOUT', 'BEZOU2'))
   AND NOT EXISTS (SELECT '' FROM bez_bezoekers WHERE bez_afspraak_key = fac_tracking_refkey);

-- This again will take some time!
UPDATE fac_notificatie
   SET fac_notificatie_refkey = (SELECT MIN(bez_bezoekers_key) FROM bez_bezoekers WHERE bez_afspraak_key = fac_notificatie_refkey)
 WHERE fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
                                    FROM fac_srtnotificatie
                                   WHERE fac_srtnotificatie_code IN ('BEZBAD', 'BEZDON', 'BEZDO2', 'BEZOUT', 'BEZOU2'));

-- Alle bezoekersgerelateerde portalberichten omcatten van afspraak naar (een) bezoeker
-- Omdat in de epiloog straks heel veel wordt gewist, willen we die zinloze tijd besparen
-- en gooien we dat hier alvast leeg.
DELETE FROM fac_session WHERE fac_session_expire < SYSDATE - 2;
DELETE FROM web_user_messages WHERE web_user_mess_action_datum < SYSDATE - 60;
COMMIT;
UPDATE web_user_messages
   SET web_user_mess_action_params = (SELECT MIN(bez_bezoekers_key) FROM bez_bezoekers WHERE bez_afspraak_key = web_user_mess_action_params)
 WHERE fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
                                    FROM fac_srtnotificatie
                                   WHERE fac_srtnotificatie_code IN ('BEZBAD', 'BEZDON', 'BEZDO2', 'BEZOUT', 'BEZOU2'));

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26580
UPDATE fac_menuitems SET fac_menuitems_url = 'appl/mld/mld_stdmelding_search.asp'
 WHERE fac_menuitems_url = 'appl/facmgtVB/mld_stdmeldinggrid.asp';

/////////////////////////////////////////////////////////////////////////////////////////// RWSN#26844
ALTER TABLE faq_kenmerkwaarde DROP CONSTRAINT faq_r_faq_key;
ALTER TABLE faq_kenmerkwaarde ADD CONSTRAINT faq_r_faq_key
 FOREIGN KEY (fac_faq_key)  REFERENCES fac_faq(fac_faq_key) ON DELETE CASCADE;
///////////////////////////////////////////////////////////////////////////////////////////
ALTER TABLE mld_melding ADD mld_melding_satisfaction NUMBER(2);
ALTER TABLE res_rsv_ruimte ADD res_rsv_ruimte_satisfaction NUMBER(2);
ALTER TABLE bes_bestelling ADD bes_bestelling_satisfaction NUMBER(2);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26809 (1)
ALTER TABLE ins_deel ADD ins_deel_state VARCHAR2(128);
ALTER TABLE ins_deel ADD ins_deel_statedate DATE;
/////////////////////////////////////////////////////////////////////////////////////////// FSN#26359
ALTER TABLE res_deel ADD res_deel_omschrijving VARCHAR2(60);
UPDATE res_deel R
   SET R.res_deel_omschrijving = (SELECT I.ins_deel_omschrijving
                                    FROM ins_deel I
                                   WHERE R.res_ins_deel_key = I.ins_deel_key);
ALTER TABLE res_deel ADD CONSTRAINT res_c_res_deel_omschrijving CHECK(res_deel_omschrijving IS NOT NULL);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#27063
CREATE UNIQUE INDEX res_i_res_deel3 ON res_deel (res_ins_deel_key, res_discipline_key, res_deel_verwijder);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26947
ALTER TABLE prs_perslidwerkplek DROP CONSTRAINT prs_r_prs_werkplek_key;
ALTER TABLE prs_perslidwerkplek ADD CONSTRAINT prs_r_prs_werkplek_key
  FOREIGN KEY (prs_werkplek_key) REFERENCES prs_werkplek(prs_werkplek_key) ON DELETE CASCADE;

ALTER TABLE prj_werkplek DROP CONSTRAINT prj_r_prs_werkplek_key;
ALTER TABLE prj_werkplek ADD CONSTRAINT prj_r_prs_werkplek_key
  FOREIGN KEY (prs_werkplek_key) REFERENCES prs_werkplek(prs_werkplek_key) ON DELETE CASCADE;

ALTER PACKAGE fac COMPILE; // anders (nog) invalid
ALTER PACKAGE fac COMPILE BODY;
DELETE FROM prs_werkplek pw
      WHERE     NOT EXISTS (SELECT ''
                              FROM prs_perslidwerkplek pwp
                             WHERE pwp.prs_werkplek_key = pw.prs_werkplek_key)
            AND NOT EXISTS (SELECT ''
                              FROM prj_werkplek jp
                             WHERE jp.prs_werkplek_key = pw.prs_werkplek_key)
            AND fac.getsetting ('prs_werkplek_implicit') = 1;

ALTER TABLE prs_perslidwerkplek DROP CONSTRAINT prs_u_perslidwerkplek DROP INDEX;
DELETE FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_verwijder IS NOT NULL;
ALTER TABLE prs_perslidwerkplek ADD CONSTRAINT prs_u_perslidwerkplek
  UNIQUE(prs_perslid_key, prs_werkplek_key);

DELETE FROM prj_werkplek WHERE prs_werkplek_key IN (SELECT prs_werkplek_key FROM prs_werkplek WHERE prs_werkplek_verwijder IS NOT NULL);

ALTER TABLE prs_werkplek DROP CONSTRAINT prs_u_prs_werkplek_volgnr DROP INDEX;
DELETE FROM prs_werkplek WHERE prs_werkplek_verwijder IS NOT NULL;
ALTER TABLE prs_werkplek ADD CONSTRAINT prs_u_prs_werkplek_volgnr UNIQUE(prs_alg_ruimte_key, prs_werkplek_volgnr);

INSERT INTO cad_label
    (cad_label_omschrijving, cad_label_view, cad_label_type, cad_label_size, fac_functie_key)
   SELECT  'Werkplekbezetting', 'cad_v_label_wp_bewoner', '9', 100, fac_functie_key
     FROM fac_functie
    where fac_functie_code = 'WEB_PRSUSE';

/////////////////////////////////////////////////////////////////////////////////////////// AAZC#26925
ALTER TABLE fac_imp_mld ADD mld_stdmelding_notfrontend      VARCHAR2(1);
ALTER TABLE fac_imp_mld ADD alg_onrgoed_niveau              VARCHAR2(1);
ALTER TABLE fac_imp_mld ADD mld_typeopdr_omschrijving       VARCHAR2(30);
/////////////////////////////////////////////////////////////////////////////////////////// FSN#26427
UPDATE bes_srtkenmerk SET bes_srtkenmerk_lengte = 20 WHERE bes_srtkenmerk_lengte > 20 AND bes_srtkenmerk_kenmerktype = 'N';
UPDATE cnt_srtkenmerk SET cnt_srtkenmerk_lengte = 20 WHERE cnt_srtkenmerk_lengte > 20 AND cnt_srtkenmerk_kenmerktype = 'N';
UPDATE ins_srtkenmerk SET ins_srtkenmerk_lengte = 20 WHERE ins_srtkenmerk_lengte > 20 AND ins_srtkenmerk_kenmerktype = 'N';
UPDATE mld_srtkenmerk SET mld_srtkenmerk_lengte = 20 WHERE mld_srtkenmerk_lengte > 20 AND mld_srtkenmerk_kenmerktype = 'N';
UPDATE res_srtkenmerk SET res_srtkenmerk_lengte = 20 WHERE res_srtkenmerk_lengte > 20 AND res_srtkenmerk_kenmerktype = 'N';

UPDATE alg_kenmerk SET alg_kenmerk_lengte = 20 WHERE alg_kenmerk_lengte > 20 AND alg_kenmerk_kenmerktype = 'N';
UPDATE bez_kenmerk SET bez_kenmerk_lengte = 20 WHERE bez_kenmerk_lengte > 20 AND bez_kenmerk_kenmerktype = 'N';
UPDATE faq_kenmerk SET faq_kenmerk_lengte = 20 WHERE faq_kenmerk_lengte > 20 AND faq_kenmerk_kenmerktype = 'N';
UPDATE fin_kenmerk SET fin_kenmerk_lengte = 20 WHERE fin_kenmerk_lengte > 20 AND fin_kenmerk_kenmerktype = 'N';
UPDATE prs_kenmerk SET prs_kenmerk_lengte = 20 WHERE prs_kenmerk_lengte > 20 AND prs_kenmerk_kenmerktype = 'N';

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#26875
UPDATE mld_melding SET prs_perslid_key_voor = prs_perslid_key WHERE prs_perslid_key_voor <> prs_perslid_key AND fac.getSetting('mld_allow_for_others') <>1;

/////////////////////////////////////////////////////////////////////////////////////////// #25357
// Voor 5.2.1 werd fac_import_key nog niet altijd ingevuld bij IMP_LOG. Die mogen ondertussen
// wel een keer weg. De 100 dagen is gewoon extra safety (putorders misbruikt IMP_LOG)
DELETE
  FROM imp_log
 WHERE fac_import_key IS NULL AND imp_log_datum < SYSDATE - 100;
COMMIT;

// Het volgende opruimen is anders niet vooruit te branden bij ARAI
// Sowieso wel logisch
CREATE INDEX imp_i_log_importkey1 ON imp_log(fac_import_key);
CREATE INDEX fac_i_import_appkey1 ON fac_import(fac_import_app_key);

// Het volgende opruimen gebeurt sinds 5.3.2 automatisch achteraan imp/imp_shared.js
// De allereerste keer kan dit veel tijd vergen omdat achterstallige logging opgeruimd
// moet worden Dat doen we liever tijdens de upgrade om te voorkomen dat de gebruiker
// de eerste import na deze upgrade geconfronteerd wordt met timeouts.
DECLARE
   week      NUMBER (10);
   minkeep   fac_import.fac_import_key%TYPE;
BEGIN
   FOR c IN (  SELECT fia.fac_import_app_key, fia.fac_import_app_code, COUNT ( * )
                 FROM fac_import_app fia, fac_import fi
                WHERE fia.fac_import_app_key = fi.fac_import_app_key
             GROUP BY fia.fac_import_app_key, fia.fac_import_app_code
               HAVING COUNT ( * ) > 100) -- Alleen de echt grote doen we hier.
   LOOP
      DBMS_OUTPUT.put_line ('Import: ' || c.fac_import_app_code);

      SELECT MIN (fac_import_key)
        INTO minkeep
        FROM (  SELECT fac_import_key
                  FROM fac_import fi2
                 WHERE fi2.fac_import_app_key = c.fac_import_app_key
              ORDER BY fac_import_key DESC)
       WHERE ROWNUM <= 10;

      -- Per week om de transactie klein te houden
      FOR week IN REVERSE 0 .. 100
      LOOP
         DBMS_OUTPUT.put_line (TO_CHAR(SYSDATE, 'HH24:MI:SS') || ' Week: ' || TO_CHAR (week));

         DELETE fac_import fi1
          WHERE     fi1.fac_import_app_key = c.fac_import_app_key
                AND fac_import_datum_verwerkt < SYSDATE - 7 - week * 7
                AND fac_import_key < minkeep;

         COMMIT;
      END LOOP;
   END LOOP;
END;
/

/////////////////////////////////////////////////////////////////////////////////////////// FSN#27044
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde1 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde2 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde3 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde4 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde5 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde6 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde7 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde8 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde9 VARCHAR2 (255);
ALTER TABLE fac_imp_onrgoed1 ADD alg_kenmerkwaarde10 VARCHAR2 (255);

///////////////////////////////////////////////////////////////////////////////////////////
ALTER TABLE alg_srtruimte MODIFY alg_srtruimte_omschrijving VARCHAR2(50);
ALTER TABLE alg_srtruimte MODIFY alg_srtruimte_upper VARCHAR2(50);
ALTER TABLE fac_imp_onrgoed2 MODIFY alg_srtruimte_omschrijving VARCHAR2(50);

/////////////////////////////////////////////////////////////////////////////////////////// AALB#27395
ALTER TABLE fac_imp_cnt DROP COLUMN flex1;
ALTER TABLE fac_imp_cnt DROP COLUMN flex2;
ALTER TABLE fac_imp_cnt DROP COLUMN flex3;
ALTER TABLE fac_imp_cnt DROP COLUMN flex4;
ALTER TABLE fac_imp_cnt DROP COLUMN flex5;
ALTER TABLE fac_imp_cnt ADD versie VARCHAR2(10);
ALTER TABLE fac_imp_cnt ADD dienst VARCHAR2(60);
ALTER TABLE fac_imp_cnt ADD flex1 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex2 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex3 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex4 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex5 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex6 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex7 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex8 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex9 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex10 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex11 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex12 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex13 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex14 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex15 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex16 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex17 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex18 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex19 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex20 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex21 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex22 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex23 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex24 VARCHAR2(255);
ALTER TABLE fac_imp_cnt ADD flex25 VARCHAR2(255);

CREATE VIEW fac_v_exp_flex_cnt AS SELECT 'dummy' XX FROM DUAL;
INSERT INTO fac_usrrap
            (fac_usrrap_omschrijving, fac_usrrap_view_name,
             fac_usrrap_in_huidige_locatie,
             fac_usrrap_template, fac_usrrap_macro,
             fac_usrrap_vraagbegindatum, fac_usrrap_vraageinddatum,
             fac_usrrap_functie,
             fac_usrrap_info,
             fac_functie_key, fac_usrrap_autorefresh
            )
     VALUES ('TRANSPORT: Flexkenmerken Contracten', 'fac_v_exp_flex_cnt',
             NULL,
             NULL, NULL,
             0, 0,
             0,
             'Exporteren van flexkenmerken voor CNT (per contractsoort)',
             (SELECT fac_functie_key FROM fac_functie
               WHERE fac_functie_code = 'WEB_PRSSYS'),
             0
            );
/////////////////////////////////////////////////////////////////////////////////////////// AALB#27395
ALTER TABLE fac_imp_flex ADD cnt_discipline VARCHAR2(255);

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#26310
ALTER TABLE fac_imp_res_artikel_sync ADD res_artikel_minimum NUMBER(3);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26584
ALTER TABLE mld_stdmelding ADD mld_stdmelding_afhankelijk NUMBER(1) DEFAULT 0
  CONSTRAINT mld_c_stdmelding_afhankelijk CHECK (mld_stdmelding_afhankelijk IN (0,1));
ALTER TABLE alg_srtruimte ADD alg_srtruimte_uitvoertijd NUMBER(8,5)
  CONSTRAINT alg_c_alg_srtruimt_uitvoertijd CHECK(alg_srtruimte_uitvoertijd >= 0);

/////////////////////////////////////////////////////////////////////////////////////////// PNBR#26815
CREATE_TABLE(mld_stdmeldingfaq, 0)
(
    mld_stdmeldingfaq_key
        NUMBER(10)
        CONSTRAINT mld_k_stdmeldingfaq_key PRIMARY KEY,
    ins_discipline_key
        NUMBER(10)
        NOT_NULL(ins_discipline_key, mld_c_ins_discipline_key3)
        CONSTRAINT mld_r_mld_discipline_key1 REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE,
    mld_stdmelding_key
        NUMBER(10)
        CONSTRAINT mld_r_mld_stdmelding_key4 REFERENCES mld_stdmelding(mld_stdmelding_key) ON DELETE CASCADE,
    fac_faq_key
        NUMBER(10)
        NOT_NULL(fac_faq_key, mld_c_fac_faq_key)
        CONSTRAINT mld_r_fac_faq_key1 REFERENCES fac_faq(fac_faq_key) ON DELETE CASCADE
);
CREATE UNIQUE INDEX mld_i_mld_stdmeldingfaq1 ON mld_stdmeldingfaq(mld_stdmelding_key, ins_discipline_key, fac_faq_key);
CREATE INDEX mld_i_mld_stdmeldingfaq2 ON mld_stdmeldingfaq(ins_discipline_key, fac_faq_key);

CREATE SEQUENCE mld_s_mld_stdmeldingfaq_key MINVALUE 1;
CREATE_TRIGGER(mld_t_mld_stdmeldingfaq_B_IU)
BEFORE INSERT OR UPDATE ON mld_stdmeldingfaq
FOR EACH ROW
BEGIN
    UPDATE_PRIMARY_KEY(mld_stdmeldingfaq_key, mld_s_mld_stdmeldingfaq_key);
END;
/

INSERT INTO mld_stdmeldingfaq(fac_faq_key, mld_stdmelding_key, ins_discipline_key)
SELECT fac_faq_key, mld_stdmelding_key, ins_discipline_key
  FROM fac_faq
 WHERE ins_discipline_key IS NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// AAES#26763
ALTER TABLE fac_session ADD fac_session_ip VARCHAR(64);
ALTER TABLE fac_session ADD fac_session_useragent VARCHAR(256);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#27092
ALTER TABLE fac_session ADD fac_session_sessionid_hash VARCHAR(128); // future use, ruimte voor salt
ALTER TABLE prs_perslid MODIFY prs_perslid_wachtwoord_hash VARCHAR(128);
-- Op dit moment bestaat prs.md5hex nog wel en fac.makehash nog niet.
UPDATE fac_session
   SET fac_session_sessionid_hash = prs.md5hex(fac_session_sessionid)
 WHERE fac_session_sessionid IS NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#23329
DEF_FAC_SRTNOT('BES2UP', 0, 'Bestelopdracht ##KEY## is gewijzigd',          '', '0', 'bestelopdr');


/////////////////////////////////////////////////////////////////////////////////////////// VGLD#27145
ALTER TABLE ins_srtdiscipline DROP CONSTRAINT ins_u_ins_srtdisc_omschr DROP INDEX;
ALTER TABLE ins_srtdiscipline ADD CONSTRAINT ins_u_ins_srtdisc_omschr
     UNIQUE (ins_srtdiscipline_omschrijving,
             ins_srtdiscipline_verwijder,
             ins_srtdiscipline_module);

/////////////////////////////////////////////////////////////////////////////////////////// AAIT#27019
ALTER TABLE fac_imp_ext_bedrijf ADD prs_bedrijf_xsl VARCHAR2(256);
ALTER TABLE fac_imp_ext_bedrijf ADD prs_bedrijf_order_adres VARCHAR2(256);

/////////////////////////////////////////////////////////////////////////////////////////// PNBR#26265
ALTER TABLE fac_faq MODIFY (fac_faq_datum DEFAULT NULL);

/////////////////////////////////////////////////////////////////////////////////////////// NMMS#27223
ALTER TABLE ins_deel
  ADD ins_deel_uitvoertijd
      NUMBER(8,5)
      CONSTRAINT ins_c_ins_deel_uitvoertijd CHECK(ins_deel_uitvoertijd >= 0);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26502
-- Volgnummers zijn vlgs de GUI verplicht, dat gaan we nu forceren maar mogelijk is het nog niet zo.
UPDATE bes_kenmerk SET bes_kenmerk_volgnummer = 1 WHERE bes_kenmerk_volgnummer IS NULL;
UPDATE cnt_kenmerk SET cnt_kenmerk_volgnummer = 1 WHERE cnt_kenmerk_volgnummer IS NULL;
UPDATE ins_kenmerk SET ins_kenmerk_volgnummer = 1 WHERE ins_kenmerk_volgnummer IS NULL;
UPDATE mld_kenmerk SET mld_kenmerk_volgnummer = 1 WHERE mld_kenmerk_volgnummer IS NULL;
UPDATE res_kenmerk SET res_kenmerk_volgnummer = 1 WHERE res_kenmerk_volgnummer IS NULL;

UPDATE alg_kenmerk SET alg_kenmerk_volgnr = 1 WHERE alg_kenmerk_volgnr IS NULL;
UPDATE bez_kenmerk SET bez_kenmerk_volgnr = 1 WHERE bez_kenmerk_volgnr IS NULL;
UPDATE faq_kenmerk SET faq_kenmerk_volgnr = 1 WHERE faq_kenmerk_volgnr IS NULL;
UPDATE fin_kenmerk SET fin_kenmerk_volgnr = 1 WHERE fin_kenmerk_volgnr IS NULL;
UPDATE prs_kenmerk SET prs_kenmerk_volgnr = 1 WHERE prs_kenmerk_volgnr IS NULL;

-- Tsja, we deden dit altijd nog met een constraint naam. Wel of niet doen? Volgens mij is dit wel genoeg zo.
ALTER TABLE alg_kenmerk MODIFY (alg_kenmerk_volgnr NOT NULL);
ALTER TABLE bez_kenmerk MODIFY (bez_kenmerk_volgnr NOT NULL);
ALTER TABLE faq_kenmerk MODIFY (faq_kenmerk_volgnr NOT NULL);
ALTER TABLE fin_kenmerk MODIFY (fin_kenmerk_volgnr NOT NULL);
ALTER TABLE prs_kenmerk MODIFY (prs_kenmerk_volgnr NOT NULL);

ALTER TABLE cnt_kenmerk MODIFY (cnt_kenmerk_volgnummer NOT NULL);
ALTER TABLE ins_kenmerk MODIFY (ins_kenmerk_volgnummer NOT NULL);
ALTER TABLE mld_kenmerk MODIFY (mld_kenmerk_volgnummer NOT NULL);
ALTER TABLE res_kenmerk MODIFY (res_kenmerk_volgnummer NOT NULL);

--Uniek maken met volgnummer doorgeschoven naar DB20

/////////////////////////////////////////////////////////////////////////////////////////// FSN#27238
ALTER TABLE mld_melding ADD mld_melding_locked_user_key NUMBER(10);
ALTER TABLE mld_melding ADD mld_melding_locked_date DATE;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26576
ALTER TABLE prs_bedrijf ADD prs_bedrijf_uitvoertijd NUMBER(8,5)
    CONSTRAINT prs_c_prs_bedrijf_uitvoertijd CHECK(prs_bedrijf_uitvoertijd >= 0);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#26809 (2)
ALTER TABLE res_rsv_ruimte ADD res_rsv_ruimte_tot_actual DATE;

/////////////////////////////////////////////////////////////////////////////////////////// CSUN#27276
ALTER TABLE alg_locatie MODIFY alg_locatie_omschrijving VARCHAR2(60);
ALTER TABLE alg_locatie MODIFY alg_locatie_upper VARCHAR2(60);
ALTER TABLE fac_imp_onrgoed1 MODIFY alg_locatie_omschrijving VARCHAR2(60);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#25603
ALTER TABLE fac_import_app ADD fac_import_app_action
    VARCHAR(320) DEFAULT 'ORACLE' NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#
-- maak usrrap aan met vaste key 12 als default reserveringsrapport
CREATE OR REPLACE VIEW res_v_rap_infobordframe AS SELECT 'temporary' a FROM DUAL;
-- Move existing #12 to another key
UPDATE fac_usrrap
   SET fac_usrrap_key = fac_s_fac_usrrap_key.NEXTVAL
 WHERE fac_usrrap_key = 12;

INSERT INTO fac_usrrap (fac_usrrap_key, fac_usrrap_omschrijving, fac_usrrap_view_name,fac_usrrap_info, fac_functie_key)
 SELECT 12, 'INFOBORD: Actuele reserveringen','res_v_rap_infobordframe','Reserveringsoverzicht tbv informatieschermen', fac_functie_key
   FROM fac_functie WHERE fac_functie_code='WEB_RESFOF';

-- kleurthema cad_v_thema_srtruimtesensor met vaste key 12 als default reserveringsbezettingsthema
INSERT INTO cad_thema
    ( cad_thema_key, cad_thema_omschrijving, cad_legenda_key, cad_thema_view, cad_thema_type, fac_functie_key )
    SELECT 12, 'Actuele bezetting', 1, 'cad_v_thema_srtruimtesensor', '1', fac_functie_key
      from fac_functie
    where fac_functie_code = 'WEB_RESFOF';

-- labelthema cad_v_label_bezetbareruimtes met vaste key 12 als default reserveringslabelthema
INSERT INTO cad_label
    ( cad_label_key, cad_label_omschrijving, cad_label_view, cad_label_type, cad_label_size, fac_functie_key )
    SELECT 12, 'Flexibele ruimtes', 'cad_v_label_bezetbareruimtes', '1', -500, fac_functie_key
      from fac_functie
    where fac_functie_code = 'WEB_RESFOF';

/////////////////////////////////////////////////////////////////////////////////////////// PCHD#27234
ALTER TABLE prs_bedrijf ADD prs_bedrijf_offerte_adres VARCHAR2(256);
/////////////////////////////////////////////////////////////////////////////////////////// AAIT#26798
ALTER TABLE prs_bedrijf ADD prs_bedrijf_contract_adres VARCHAR2(256);
/////////////////////////////////////////////////////////////////////////////////////////// UWVA#26975
UPDATE bes_srtdeel
   SET bes_srtdeel_vervaldatum = NULL
 WHERE bes_srtdeel_vervaldatum = bes_srtdeel_aanmaak
   AND bes_srtdeel_verwijder IS NOT NULL;
/////////////////////////////////////////////////////////////////////////////////////////// QA
BEGIN
 adm.tryalter('INDEX fac_fac_tracking_refkey1 RENAME TO fac_i_tracking_refkey1');
 adm.tryalter('INDEX fac_i_fac_tracking_refkey1 RENAME TO fac_i_tracking_refkey1');
 adm.tryalter('INDEX fac_fac_tracking_refkey2 RENAME TO fac_i_tracking_perslidkey1');
END;
/
-- These appear to exist on some older instances
BEGIN
 adm.trydrop('TABLE ond_srtonderhoud PURGE');
 adm.trydrop('TABLE fip_afdeling PURGE');
 adm.trydrop('TABLE fip_afdeling_0 PURGE');
 adm.trydrop('TABLE fip_afdeling_1 PURGE');
 adm.trydrop('TABLE fip_afdeling_2 PURGE');
 adm.trydrop('TABLE fip_afdeling_3 PURGE');
 adm.trydrop('TABLE fip_afdeling_4 PURGE');
 adm.trydrop('TABLE fip_artikel PURGE');
 adm.trydrop('TABLE fip_artikel_scope PURGE');
 adm.trydrop('TABLE fip_bedrijf PURGE');
 adm.trydrop('TABLE fip_error PURGE');
 adm.trydrop('TABLE fip_gebouw PURGE');
 adm.trydrop('TABLE fip_imp_melding PURGE');
 adm.trydrop('TABLE fip_info PURGE');
 adm.trydrop('TABLE fip_locatie PURGE');
 adm.trydrop('TABLE fip_perslid PURGE');
 adm.trydrop('TABLE fip_ruimte PURGE');
 adm.trydrop('TABLE fip_srtmelding PURGE');
 adm.trydrop('TABLE fip_voorziening PURGE');
 adm.trydrop('VIEW fip_errmes');
 adm.trydrop('SEQUENCE fip_s_fip_fip_afdeling_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_artikel_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_art_scope_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_bedrijf_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_error_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_gebouw_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_info_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_locatie_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_perslid_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_ruimte_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_srtmelding_key');
 adm.trydrop('SEQUENCE fip_s_fip_fip_voorziening_key');
 adm.trydrop('SEQUENCE web_s_helpsys_key');
 adm.trydrop('index res_i_res_rsv_deel5');
END;
/
-- UPDATE for UWVA#17812 to.5.0.6 was not uptodate, backpatch
ALTER TABLE fin_factuur MODIFY fin_factuur_totaal_btw NUMBER (10,4);
ALTER TABLE fin_factuurregel MODIFY fin_factuurregel_btw NUMBER(10,4);

/////////////////////////////////////////////////////////////////////////////////////////// GENERAL

/////////////////////////////////////////////////////////////////////////////////////////// CLEANUP
ALTER TABLE fac_faq DROP COLUMN ins_discipline_key;
ALTER TABLE fac_faq DROP COLUMN mld_stdmelding_key;
ALTER TABLE mld_stdmelding DROP CONSTRAINT mld_c_stdmelding_urenofdagen;
ALTER TABLE mld_stdmelding DROP COLUMN mld_stdmelding_streeftijd;
ALTER TABLE fac_imp_mld DROP COLUMN mld_stdmelding_streeftijd;
ALTER TABLE prs_perslidwerkplek DROP COLUMN prs_perslidwerkplek_verwijder;
ALTER TABLE prs_werkplek DROP COLUMN prs_werkplek_verwijder;

// FSN#26999
DROP VIEW prs_v_aanwezigperslidafdeling;
DROP VIEW prs_v_perslidafdeling_gegevens;
DROP VIEW prs_v_aanwezigperslideenheid;
DROP VIEW prs_v_perslideenheid_gegevens;
DROP VIEW prs_v_verplichting_all;
DROP TABLE prs_perslidafdeling PURGE;
DROP TABLE prs_perslideenheid PURGE;
DROP SEQUENCE prs_s_prs_perslidafdeling_key;
DROP SEQUENCE prs_s_prs_perslideenheid_key;

DROP VIEW prs_v_aanwezigperslidwerkplek;
DROP VIEW prs_v_aanwezigwerkplek;
DROP VIEW all_v_aanwezigwerkplek;


///////////////////////////////////////////////////////////////////////////////////////////
REGISTERONCE('$Workfile: DB18to19.src $','$Revision$')
#include "epilogue.inc"
