/*
 * Update script van FACILITOR schema
 * $Revision$
 * $Id$
 */
#include "prologue.inc"

COMMIT;
SET DEFINE OFF

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#73722
DELETE FROM fac_api
 WHERE lower(fac_api_filepath)
    IN ('appl/api/api_cntsoap.asp','appl/api/api_report.asp','appl/api/api_besordsoap.asp'
       ,'appl/api/api_bessoap.asp','appl/api/api_bezsoap.asp','appl/api/api_inssoap.asp'
       ,'appl/api/api_xmlnode.asp');

DELETE FROM fac_api
 WHERE fac_api_name IN ('ALG','BES','BEZ','CNT','FIN','INS','MLD','PRS','RES')
   AND lower(fac_api_filepath) = 'appl/api/api_soap.asp';

DROP VIEW alg_v_api_districten;
DROP VIEW alg_v_api_gebouwen;
DROP VIEW alg_v_api_locaties;
DROP VIEW alg_v_api_regios;
DROP VIEW alg_v_api_ruimten;
DROP VIEW alg_v_api_verdiepingen;
DROP VIEW bes_v_api_bestellingen;
DROP VIEW bes_v_api_bestelopdrachten;
DROP VIEW bez_v_api_afspraken;
DROP VIEW cnt_v_api_contracten;
DROP VIEW fin_v_api_facturen;
DROP VIEW ins_v_api_delen;
DROP VIEW mld_v_api_meldingen;
DROP VIEW mld_v_api_opdrachten;
DROP VIEW prs_v_api_afdelingen;
DROP VIEW prs_v_api_personen;
DROP VIEW res_v_api_reserveringen;
DROP VIEW res_v_api_voorzieningen;

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#72157
DELETE FROM aut_client
      WHERE aut_client_id = 'FCLTAPP1';

DELETE FROM aut_client_perslid
      WHERE aut_client_perslid_login IS NULL;

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#74773
UPDATE fac_setting
   SET fac_setting_pvalue =
           (SELECT fac_setting_pvalue
              FROM fac_setting
             WHERE fac_setting_name = 'fac_reserved_number1')
 WHERE fac_setting_name = 'bez_hide_tracking';

UPDATE fac_setting
   SET fac_setting_pvalue =
           (SELECT fac_setting_pvalue
              FROM fac_setting
             WHERE fac_setting_name = 'fac_reserved_number2')
 WHERE fac_setting_name = 'res_hide_tracking';

UPDATE fac_setting
   SET fac_setting_pvalue = NULL
 WHERE fac_setting_name IN ('fac_reserved_number1', 'fac_reserved_number2');

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#69825
ALTER TABLE alg_gebouw DROP CONSTRAINT alg_c_alg_gebouw_omschrijving;
ALTER TABLE alg_terreinsector DROP CONSTRAINT alg_c_alg_terreinsector_omschr;
ALTER TABLE alg_terreinsector MODIFY alg_terreinsector_naam VARCHAR2 (60);
ALTER TABLE alg_terreinsector MODIFY alg_terreinsector_omschrijving VARCHAR2 (60);

/////////////////////////////////////////////////////////////////////////////////////////// RWSN#72958
ALTER TABLE alg_verdieping
    ADD alg_verdieping_bruto_vloeropp NUMBER (12, 2)
            CONSTRAINT alg_c_alg_verdieping_vloeropp CHECK
                (alg_verdieping_bruto_vloeropp >= 0);

/////////////////////////////////////////////////////////////////////////////////////////// BLST#75018
BEGIN
    adm.trydrop ('INDEX prj_i_prj_deel4');
END;
/
create index prj_i_prj_deel4 on prj_deel(prj_werkplek_key);

/////////////////////////////////////////////////////////////////////////////////////////// MNNL#73953
ALTER TABLE ins_deel
  ADD ins_deel_flag NUMBER(1);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#74537
ALTER TABLE fac_kenmwaarden
  ADD fac_kenmwaarden_aanmaak DATE DEFAULT SYSDATE;
ALTER TABLE fac_kenmwaarden
 DROP CONSTRAINT fac_r_prs_perslid_key8;
ALTER TABLE fac_kenmwaarden
  ADD CONSTRAINT fac_r_prs_perslid_key8 FOREIGN KEY (prs_perslid_key) REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE;

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#74111
ALTER TABLE fac_kenmerkdomein ADD fac_kenmerkdomein_kolomtxt2 VARCHAR2(30);
ALTER TABLE fac_usrdata ADD fac_usrdata_omschr2  VARCHAR2(60);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#74102
UPDATE fac_setting
   SET fac_setting_pvalue = '3'
 WHERE fac_setting_name = 'mobile_enabled'
   AND fac_setting_pvalue = 1
   AND EXISTS (SELECT 1
                 FROM fac_setting
                WHERE fac_setting_name = 'puo_app2enabled'
                  AND fac_setting_pvalue = 1
              );

/////////////////////////////////////////////////////////////////////////////////////////// FMHN#74812
ALTER TABLE alg_kenmerk ADD alg_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE bes_kenmerk ADD bes_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE bez_kenmerk ADD bez_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE cnt_kenmerk ADD cnt_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE faq_kenmerk ADD faq_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE fin_kenmerk ADD fin_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE ins_kenmerk ADD ins_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE mld_kenmerk ADD mld_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE prs_kenmerk ADD prs_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;
ALTER TABLE res_kenmerk ADD res_kenmerk_inlijst NUMBER(1) DEFAULT 0 NOT NULL;

BEGIN  -- Alleen BES heeft een tweede lijst-instelling in srtkenmerk_systeem zitten.
   DECLARE
      CURSOR b IS
         SELECT s.bes_srtkenmerk_key
              , CASE WHEN s.bes_srtkenmerk_systeem =  2 THEN 1
                     WHEN s.bes_srtkenmerk_systeem = 16 THEN 2
                     WHEN s.bes_srtkenmerk_systeem = 18 THEN 3
                     ELSE 0
                END systeem
           FROM bes_srtkenmerk s
          WHERE BITAND(s.bes_srtkenmerk_systeem,18) > 0;
      inlijst NUMBER(1);
   BEGIN
      FOR g IN b
      LOOP
         IF (g.systeem > 0)
         THEN
            UPDATE bes_kenmerk
               SET bes_kenmerk_inlijst = g.systeem
             WHERE bes_srtkenmerk_key = g.bes_srtkenmerk_key;
         END IF;
      END LOOP;
   END;
END;
/

UPDATE bez_kenmerk SET bez_kenmerk_inlijst = 1, bez_kenmerk_systeem = bez_kenmerk_systeem - 2 WHERE BITAND(bez_kenmerk_systeem,2) = 2;
UPDATE fin_kenmerk SET fin_kenmerk_inlijst = 1, fin_kenmerk_systeem = fin_kenmerk_systeem - 2 WHERE BITAND(fin_kenmerk_systeem,2) = 2;
UPDATE prs_kenmerk SET prs_kenmerk_inlijst = 1, prs_kenmerk_systeem = prs_kenmerk_systeem - 2 WHERE BITAND(prs_kenmerk_systeem,2) = 2;
UPDATE ins_kenmerk SET ins_kenmerk_inlijst = 1 WHERE ins_srtkenmerk_key IN (SELECT ins_srtkenmerk_key FROM ins_srtkenmerk WHERE BITAND(ins_srtkenmerk_systeem,2) = 2);
UPDATE mld_kenmerk SET mld_kenmerk_inlijst = 1 WHERE mld_srtkenmerk_key IN (SELECT mld_srtkenmerk_key FROM mld_srtkenmerk WHERE BITAND(mld_srtkenmerk_systeem,2) = 2);
UPDATE res_kenmerk SET res_kenmerk_inlijst = 1 WHERE res_srtkenmerk_key IN (SELECT res_srtkenmerk_key FROM res_srtkenmerk WHERE BITAND(res_srtkenmerk_systeem,2) = 2);

UPDATE ins_srtkenmerk SET ins_srtkenmerk_systeem = ins_srtkenmerk_systeem - 2 WHERE BITAND(ins_srtkenmerk_systeem,2) = 2;
UPDATE mld_srtkenmerk SET mld_srtkenmerk_systeem = mld_srtkenmerk_systeem - 2 WHERE BITAND(mld_srtkenmerk_systeem,2) = 2;
UPDATE res_srtkenmerk SET res_srtkenmerk_systeem = res_srtkenmerk_systeem - 2 WHERE BITAND(res_srtkenmerk_systeem,2) = 2;

/////////////////////////////////////////////////////////////////////////////////////////// BLCC#75490
ALTER TABLE mld_opdr_uren ADD mld_opdr_uren_wijzigdatum DATE DEFAULT SYSDATE;
ALTER TABLE mld_opdr_uren ADD mld_opdr_uren_wijziguser_key NUMBER (10)
         CONSTRAINT mld_r_prs_perslid_key13
         REFERENCES prs_perslid (prs_perslid_key) ON DELETE SET NULL;
DROP TRIGGER mld_t_mld_opdr_uren_b_iu;

/////////////////////////////////////////////////////////////////////////////////////////// YASK#65641
CREATE_TABLE(fac_imp_contactpersoon, 0)
(
    fac_import_key                 NUMBER(10)
            CONSTRAINT fac_r_fac_import_key5
            REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
    prs_contactpersoon_naam        VARCHAR2(30),
    prs_contactpersoon_tussenv     VARCHAR2(15),
    prs_contactpersoon_voorletters VARCHAR2(10),
    prs_contactpersoon_voornaam    VARCHAR2(30),
    prs_contactpersoon_aanhef      VARCHAR2(30),
    prs_contactpersoon_titel       VARCHAR2(10),
    prs_contactpersoon_telefoon_1  VARCHAR2(30),
    prs_contactpersoon_telefoon_2  VARCHAR2(30),
    prs_contactpersoon_fax         VARCHAR2(30),
    prs_contactpersoon_email       VARCHAR2(200),
    prs_contactpersoon_functie     VARCHAR2(60),
    prs_contactpersoon_opmerking   VARCHAR2(255),
    prs_contactpersoon_uurloon     NUMBER(6,2),
    prs_bedrijf_key                NUMBER(10),
    prs_perslid_key                NUMBER(10),
    alg_locatie_key                NUMBER(10),
    prs_contactpersoon_externnr    VARCHAR2(256),
    prs_contactpersoon_extsyncdate DATE
);
DEF_IMPORT('WEB_PRSSYS', 'CONTACTPERSOON',             'FIP: Aanvullen contactpersonen',                          'FIP: Add contacts')

/////////////////////////////////////////////////////////////////////////////////////////// LOGC#75610
ALTER TABLE prs_bedrijf ADD prs_bedrijf_x NUMBER(16,6);
ALTER TABLE prs_bedrijf ADD prs_bedrijf_y NUMBER(16,6);

/////////////////////////////////////////////////////////////////////////////////////////// BLCC#75155
ALTER TABLE mld_opdr
    ADD mld_opdr_discipline_key NUMBER (10)
         CONSTRAINT mld_r_opdr_discipline_key1 REFERENCES ins_tab_discipline (ins_discipline_key);
ALTER TRIGGER mld_t_mld_opdr_b_iu disable;
UPDATE mld_opdr o
   SET mld_opdr_discipline_key =
           (SELECT msm.mld_ins_discipline_key
              FROM mld_melding m, mld_stdmelding msm
             WHERE m.mld_melding_key = o.mld_melding_key
               AND msm.mld_stdmelding_key = m.mld_stdmelding_key);
ALTER TRIGGER mld_t_mld_opdr_b_iu enable;

ALTER TABLE mld_opdr
    ADD CONSTRAINT mld_c_mld_opdr_discipline_key1 CHECK (mld_opdr_discipline_key IS NOT NULL);

CREATE INDEX mld_i_mld_opdr19 on mld_opdr(mld_opdr_discipline_key);

/////////////////////////////////////////////////////////////////////////////////////////// BLST#74605
ALTER TABLE res_ruimte ADD res_ruimte_startdatum DATE;
ALTER TABLE res_deel ADD res_deel_startdatum DATE;
ALTER TABLE res_artikel ADD res_artikel_startdatum DATE;

/////////////////////////////////////////////////////////////////////////////////////////// FMHN#73452
ALTER TABLE res_rsv_artikel ADD res_rsv_artikel_afhalen DATE;

/////////////////////////////////////////////////////////////////////////////////////////// AAGB#75674
ALTER TABLE prs_bedrijf ADD prs_bedrijf_url VARCHAR2(512);

/////////////////////////////////////////////////////////////////////////////////////////// FMHN#74150
CREATE SEQUENCE bez_s_bez_actie_groep_key MINVALUE 1;

CREATE TABLE bez_actie_groep
    ( bez_actie_groep_key
      NUMBER(10)
      CONSTRAINT bez_k_bez_actie_groep_key PRIMARY KEY
    , bez_actie_groep_omschrijving
      VARCHAR2(64)
    , bez_actie_groep_default
      NUMBER(1) DEFAULT 0 NOT NULL
    , bez_actie_groep_verwijder
      DATE
    , CONSTRAINT BEZ_U_BEZ_ACTIE_GROEP UNIQUE(bez_actie_groep_omschrijving, bez_actie_groep_verwijder)
    );

CREATE OR REPLACE TRIGGER bez_t_bez_actie_groep_B_I
BEFORE INSERT ON bez_actie_groep
FOR EACH ROW
BEGIN
   UPDATE_PRIMARY_KEY(bez_actie_groep_key, bez_s_bez_actie_groep_key);
END;
/

INSERT INTO bez_actie_groep (bez_actie_groep_omschrijving, bez_actie_groep_default) VALUES ('Default', 1);

ALTER TABLE bez_actie
      ADD bez_actie_groep_key
          NUMBER(10)
          REFERENCES bez_actie_groep(bez_actie_groep_key);

ALTER TABLE bez_actie
      ADD CONSTRAINT BEZ_U_BEZ_ACTIE UNIQUE(bez_actie_groep_key, bez_actie_omschrijving, bez_actie_verwijder);

-- standaard worden alle huidige acties aan default gekoppeld.
UPDATE bez_actie
   SET bez_actie_groep_key = (SELECT bez_actie_groep_key FROM bez_actie_groep WHERE bez_actie_groep_default = 1);

ALTER TABLE bez_actie
      MODIFY (bez_actie_groep_key NOT NULL);

ALTER TABLE alg_gebouw
      ADD bez_actie_groep_key
          NUMBER(10)
          REFERENCES bez_actie_groep(bez_actie_groep_key);

DEF_MENUITEM(2, 'lcl_menu_bez_actie_groep', '', 'BEZ', 'appl/mgt/bez_actie_groep.asp', 0, 0, 'WEB_BEZMGT', 'W', '1', '');
MENU_INS_AFTER('lcl_menu_bez_actie_groep', 'lcl_menu_bez_acties', -10);

/////////////////////////////////////////////////////////////////////////////////////////// MARX#75756
ALTER TABLE prs_bedrijfdienstlocatie
   ADD prs_bedrijf_voor_key NUMBER(10)
    CONSTRAINT prs_r_prs_bedrijf_key7 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE;

ALTER TABLE prs_bedrijfdienstlocatie DROP CONSTRAINT prs_u_prs_bedrijfdienstloc_key DROP INDEX;
ALTER TABLE prs_bedrijfdienstlocatie
 ADD CONSTRAINT prs_u_prs_bedrijfdienstloc_key UNIQUE (prs_bedrijf_key, prs_perslid_key, prs_dienst_key, alg_locatie_key, alg_gebouw_key,prs_bedrijf_voor_key);


/////////////////////////////////////////////////////////////////////////////////////////// MARX#75026

CREATE_TABLE(bes_bestellevr, 0)
(
    bes_bestellevr_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_bestellevr_key PRIMARY KEY,
    bes_bestellevr_pakbon
        VARCHAR(50),
    bes_bestellevr_datum
        DATE
        DEFAULT SYSDATE,
    prs_perslid_key
        NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL,
    bes_bestellevr_opmerk
        VARCHAR2(320),
    bes_bestellevr_externsyncdate
        DATE
);

create index bes_i_bes_bestellever_prs_key on bes_bestellevr (prs_perslid_key);

CREATE_TABLE(bes_bestellevr_item, 0)
(
    bes_bestellevr_item_key
        NUMBER(10)
        CONSTRAINT bes_k_bestel_lev_item_key PRIMARY KEY,
    bes_bestellevr_key
        NUMBER(10) REFERENCES bes_bestellevr(bes_bestellevr_key) ON DELETE CASCADE,
    bes_bestelopdr_item_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_bestelopdr_i_key2 REFERENCES bes_bestelopdr_item(bes_bestelopdr_item_key) ON DELETE CASCADE,
    bes_bestellevr_item_aantal
        NUMBER(15,3)
);

create index bes_i_bes_bestellevr_item1 ON bes_bestellevr_item(bes_bestellevr_key);

CREATE SEQUENCE bes_s_bes_bestellevr_key  MINVALUE 1;
CREATE SEQUENCE bes_s_bes_bestellevr_item_key  MINVALUE 1;

ALTER TABLE fin_factuur
    ADD bes_bestellevr_key NUMBER(10)
    CONSTRAINT fin_r_fin_factuur9 REFERENCES bes_bestellevr(bes_bestellevr_key);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#75899
ALTER TABLE fac_menu MODIFY fac_menu_alturl VARCHAR2(1000 CHAR);
ALTER TABLE fac_imp_menu MODIFY menu_alturl VARCHAR2(1000);

/////////////////////////////////////////////////////////////////////////////////////////// FMHN#75734
ALTER TABLE fac_faq ADD fac_faq_answer2 VARCHAR2 (4000 CHAR);
ALTER TABLE fac_imp_faq ADD fac_faq_answer2 VARCHAR2 (4000);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#69887
DROP VIEW FAC_QVW_LOCALE_XSL;
DROP VIEW FAC_V_QVW_ALLAUTH;
DROP VIEW fac_v_qvw_algauth;
DROP VIEW fac_v_qvw_prsauth;
DROP VIEW fac_v_qvw_insauth;
DROP VIEW prs_v_qvw_bedrijf;
DROP VIEW ins_v_qvw_algemeen;
DROP VIEW ins_v_qvw_inspectie;
DROP VIEW res_v_qvw_algemeen;
DROP VIEW res_v_qvw_locale;
DROP VIEW alg_v_qvw_algemeen;
DROP VIEW mld_v_qvw_algemeen;
DROP VIEW mld_v_qvw_locale;
DROP VIEW cnt_v_qvw_algemeen;
DROP VIEW bes_v_qvw_algemeen;
DROP VIEW bes_v_qvw_locale;
// LCL's verdwijnen met een recreate
// INSERT's INTO fac_qlikview verdwijnen met het droppen van de tabel
DELETE FROM fac_menu WHERE fac_menu_altlabel LIKE 'lcl_menu_fac_qlikvie%';
DELETE FROM fac_menuitems WHERE fac_menuitems_label LIKE 'lcl_menu_fac_qlikvie%';
// Settings verdwijnen met een recreate
DELETE FROM fac_menu where fac_functie_key = (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code = 'WEB_MGTRAP');
DELETE FROM fac_functie where fac_functie_code = 'WEB_MGTRAP';
// Daar gaat-ie dan
DROP TABLE fac_qvw_ticket;
DROP TABLE fac_qlikview;
DROP SEQUENCE fac_s_fac_qlikview_key;
DROP SEQUENCE fac_s_fac_qvw_ticket_key;

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#75765
ALTER TABLE fac_imp_ins ADD res_discipline_type VARCHAR2(60);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#70361
CREATE VIEW ctr_v_monthly_recurring_tasks AS SELECT * FROM DUAL;
DEF_RAPPORT('WEB_CTRUSE', 5, 'ctr_v_monthly_recurring_tasks', 'Periodieke taken: Jaaroverzicht',   'Overzicht van de stand van zaken van afgelopen jaar t/m volgend jaar',
                                                              'Overview recurring tasks per year', 'Overview of the actual state from previous year until next year');

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#74564
ALTER TABLE res_activiteit
    ADD res_activiteit_ismaster
    NUMBER (1)
    DEFAULT 0 NOT NULL;

ALTER TABLE res_activiteit
    ADD res_activiteit_master_key
    NUMBER (10)
    CONSTRAINT res_r_res_activiteit_key2 REFERENCES res_activiteit(res_activiteit_key);

ALTER TABLE res_rsv_ruimte
    ADD res_rsv_ruimte_parent_key
    NUMBER (10)
    CONSTRAINT res_c_res_rsv_ruimte_key3 REFERENCES res_rsv_ruimte(res_rsv_ruimte_key) ON DELETE SET NULL;

create index res_i_res_rsv_ruimte17 on res_rsv_ruimte (res_rsv_ruimte_parent_key);

/////////////////////////////////////////////////////////////////////////////////////////// MARX#75510
ALTER TABLE fac_kenmwaarden DROP CONSTRAINT fac_c_fac_kenmwaarden_niveau DROP INDEX;

/////////////////////////////////////////////////////////////////////////////////////////// BLCC#75093
UPDATE fac_functie
   SET fac_functie_discipline = 1
 WHERE fac_functie_code = 'WEB_ORDOAP';

ALTER PACKAGE fac COMPILE; // anders (nog) invalid en lukt het volgende niet niet
ALTER PACKAGE fac COMPILE BODY;

INSERT INTO fac_groeprechten
     ( fac_groep_key
     , fac_functie_key
     , ins_discipline_key
     , fac_gebruiker_prs_level_read
     , fac_gebruiker_alg_level_read
     , fac_gebruiker_prs_level_write
     , fac_gebruiker_alg_level_write
     )
SELECT g.fac_groep_key
     , g.fac_functie_key
     , d.ins_discipline_key
     , g.fac_gebruiker_prs_level_read
     , g.fac_gebruiker_alg_level_read
     , g.fac_gebruiker_prs_level_write
     , g.fac_gebruiker_alg_level_write
  FROM fac_functie f
     , fac_groeprechten g
     , ins_tab_discipline d
 WHERE g.fac_functie_key = f.fac_functie_key
   AND d.ins_discipline_verwijder is null
   AND d.ins_discipline_module = fac_functie_module
   AND f.fac_functie_code = 'WEB_ORDOAP';

DELETE FROM fac_groeprechten
 WHERE fac_groeprechten_key IN
     ( SELECT r.fac_groeprechten_key
         FROM fac_groeprechten r
            , fac_functie f
        WHERE r.fac_functie_key = f.fac_functie_key
          AND r.ins_discipline_key IS NULL
          AND f.fac_functie_code = 'WEB_ORDOAP'
     );

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#77314

// Drop trigger om res_rsv_ruimte-records aan te kunnen passen in bo_status = 6
DROP TRIGGER res_t_res_rsv_ruimte_B_IU;

// Strip de timestamp (ook maar voor verwijderde records)
UPDATE res_rsv_ruimte
   SET res_rsv_ruimte_externnr =
           SUBSTR (res_rsv_ruimte_externnr, 1, LENGTH (res_rsv_ruimte_externnr) - 14)
 WHERE     res_rsv_ruimte_externnr IS NOT NULL
       AND res_rsv_ruimte_externnr NOT LIKE '##iCalUId##%'
       AND REGEXP_LIKE (res_rsv_ruimte_externnr, '\|\d{13}$');

// Verwijder de dubbelen op een nette manier die niet de Outlook koppeling aftrapt
UPDATE res_rsv_ruimte
   SET res_rsv_ruimte_externnr = NULL
     , res_rsv_ruimte_verwijder = SYSDATE
 WHERE res_rsv_ruimte_externnr IS NOT NULL
   AND res_rsv_ruimte_verwijder IS NULL
   AND res_rsv_ruimte_key NOT IN (  SELECT MIN (res_rsv_ruimte_key)
                                      FROM res_rsv_ruimte
                                     WHERE res_rsv_ruimte_externnr IS NOT NULL
                                       AND res_rsv_ruimte_verwijder IS NULL
                                  GROUP BY res_rsv_ruimte_externnr);

// Voeg de nieuwe unieke index toe
CREATE UNIQUE INDEX res_i_res_rsv_ruimte18
    ON res_rsv_ruimte (CASE
                           WHEN res_rsv_ruimte_verwijder IS NULL
                           THEN
                               res_rsv_ruimte_externnr
                           ELSE
                               NULL
                       END);

// En voeg trigger weer toe
CREATE OR REPLACE TRIGGER res_t_res_rsv_ruimte_B_IU
BEFORE INSERT OR UPDATE ON res_rsv_ruimte
FOR EACH ROW
BEGIN
  IF :old.res_status_bo_key=6 THEN raise_application_error(-20001, 'Reserveringsgegevens '||:new.res_rsv_ruimte_key||'/'||:new.res_rsv_ruimte_volgnr||' zijn verwerkt; wijzigen is niet meer toegestaan.'); END IF;
  BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL OR (:new.res_rsv_ruimte_verwijder IS NULL AND :old.res_rsv_ruimte_verwijder IS NOT NULL) THEN UPDATE res_rsv_artikel SET res_rsv_artikel_verwijder = :new.res_rsv_ruimte_verwijder WHERE res_rsv_artikel.res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND res_rsv_artikel.res_rsv_artikel_verwijder IS NULL; END IF; END;
  BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL OR (:new.res_rsv_ruimte_verwijder IS NULL AND :old.res_rsv_ruimte_verwijder IS NOT NULL) THEN UPDATE res_rsv_deel SET res_rsv_deel_verwijder = :new.res_rsv_ruimte_verwijder WHERE res_rsv_deel.res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND res_rsv_deel.res_rsv_deel_verwijder IS NULL; END IF; END;
  BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL THEN DELETE FROM bez_afspraak WHERE bez_afspraak.res_rsv_ruimte_key = :new.res_rsv_ruimte_key; END IF; END;
  BEGIN IF :new.res_rsv_ruimte_host_key <> :old.res_rsv_ruimte_host_key THEN UPDATE bez_afspraak set bez_afspraak_host_key = :new.res_rsv_ruimte_host_key WHERE res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND bez_afspraak_host_key IS NOT NULL; END IF; END;
  BEGIN IF :new.res_rsv_ruimte_contact_key <> :old.res_rsv_ruimte_contact_key THEN UPDATE bez_afspraak set bez_afspraak_contact_key= :new.res_rsv_ruimte_contact_key WHERE res_rsv_ruimte_key =:new.res_rsv_ruimte_key; END IF; END;
END;
/

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000

REGISTERONCE('$Id$')

#include "epilogue.inc"
