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

COMMIT;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28168
CREATE_TABLE(fac_export_app, 0)
(
  fac_export_app_key
    NUMBER(10)
    PRIMARY KEY,
  fac_export_app_code
    VARCHAR2(20),
  fac_export_app_oms
    VARCHAR2(60),
  fac_functie_key
    NUMBER(10)
    NOT_NULL(fac_functie_key, fac_c_fac_functie_key3)
    CONSTRAINT fac_r_fac_functie_key3 REFERENCES fac_functie(fac_functie_key),
  fac_export_app_charset
    VARCHAR(32),
  fac_export_app_folder
    VARCHAR(320),
  fac_export_app_prefix
    VARCHAR2(60),
  fac_export_app_postfix
    VARCHAR2(20),
  fac_export_app_log_postfix
    VARCHAR2(4),
  fac_export_app_flags
    NUMBER(10) DEFAULT 0, -- Documentatie in APPL\EXP\exp_shared.js
  fac_export_app_xsl
    VARCHAR2(256),
  fac_export_app_timestamp
    VARCHAR2(20),
  fac_export_app_datum
    DATE,
  fac_export_app_aanmaak
    DATE
    DEFAULT SYSDATE
);

CREATE SEQUENCE fac_s_fac_export_app_key        MINVALUE 1;

/////////////////////////////////////////////////////////////////////////////////////////// AAIT#28088
ALTER TABLE res_disc_params ADD res_disc_params_remoteurl VARCHAR2(512);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28257
UPDATE fac_functie SET fac_functie_groep = 0 WHERE fac_functie_code ='WEB_RESNOS';

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#28292
// Deze hadden we bij UWVA teruggezet. Nu definitief weer 'goed'
ALTER TABLE cnt_contract MODIFY (cnt_contract_status DEFAULT NULL);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28515
CREATE UNIQUE INDEX prs_i_prs_perslid7 ON prs_perslid(prs_perslid_apikey);
CREATE INDEX mld_i_mld_melding20 ON mld_melding(mld_melding_datum);
CREATE INDEX mld_i_mld_melding21 ON mld_melding(mld_melding_externnr);
CREATE INDEX prs_i_prscontactpersoon1 ON prs_contactpersoon(prs_bedrijf_key);
CREATE INDEX prs_i_prscontactpersoon2 ON prs_contactpersoon(prs_perslid_key);

/////////////////////////////////////////////////////////////////////////////////////////// HOUT#28038
ALTER TABLE cnt_disc_params ADD cnt_disc_params_opmerking VARCHAR2(320);

/////////////////////////////////////////////////////////////////////////////////////////// ARAI#28067
ALTER TABLE mld_typeopdr ADD mld_typeopdr_afhandeling NUMBER(1) DEFAULT 0;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28568
-- level of organisation from which objects can be chosen (-1=alle, 0=bedrijf, ...., 9=geen)
ALTER TABLE mld_stdmelding ADD alg_org_obj_niveau NUMBER(1) DEFAULT 9 CONSTRAINT mld_c_alg_org_objniveau CHECK (alg_org_obj_niveau IN (-1,0,1,2,3,4,5,9));


/////////////////////////////////////////////////////////////////////////////////////////// AAIT#28510
ALTER TABLE fac_import ADD prs_perslid_key NUMBER(10) CONSTRAINT fac_r_prs_perslid_key5 REFERENCES prs_perslid(prs_perslid_key);

/////////////////////////////////////////////////////////////////////////////////////////// AANS#28583
ALTER TABLE bez_actie ADD bez_actie_default NUMBER(1);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28624
ALTER TABLE cnt_contract ADD cnt_contract_locked_user_key NUMBER(10);
ALTER TABLE cnt_contract ADD cnt_contract_locked_date DATE;

/////////////////////////////////////////////////////////////////////////////////////////// AAEY#28481
ALTER TABLE fac_imp_factuur ADD boekmaand VARCHAR2(7);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28644
ALTER TABLE fac_imp_perslid ADD prs_perslid_partner_naam        VARCHAR2(60);
ALTER TABLE fac_imp_perslid ADD prs_perslid_partner_tussenv     VARCHAR2(15);
ALTER TABLE fac_imp_perslid ADD prs_perslid_naamgebruik_code    NUMBER(1) DEFAULT 0;
ALTER TABLE fac_imp_perslid ADD prs_perslid_geslacht            NUMBER(1);
ALTER TABLE fac_imp_perslid ADD prs_perslid_dienstverband       NUMBER(3);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk1                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk2                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk3                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk4                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk5                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk6                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk7                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk8                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk9                    VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk10                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk11                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk12                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk13                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk14                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk15                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk16                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk17                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk18                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk19                   VARCHAR2(255);
ALTER TABLE fac_imp_perslid ADD prs_kenmerk20                   VARCHAR2(255);

/////////////////////////////////////////////////////////////////////////////////////////// HOUT#27908
ALTER TABLE res_rsv_ruimte ADD res_rsv_ruimte_flag NUMBER(1);

/////////////////////////////////////////////////////////////////////////////////////////// AAIT#26733
// Melding opdrachten
DEF_FAC_FUNCTIE2('WEB_ORDGO2', 'Backoffice:Opdrachten-goedk2',   'MLD', 11, 1,    1, 'Om opdrachten boven de tweede limiet goed te kunnen keuren');
DEF_FAC_FUNCTIE2('WEB_ORDGO3', 'Backoffice:Opdrachten-goedk3',   'MLD', 11, 1,    1, 'Om opdrachten boven de derde limiet goed te kunnen keuren');
DEF_FAC_FUNCTIE2('WEB_ORDGO4', 'Backoffice:Opdrachten-goedk4',   'MLD', 11, 1,    1, 'Om opdrachten boven de vierde limiet goed te kunnen keuren');
DEF_FAC_FUNCTIE2('WEB_ORDGO5', 'Backoffice:Opdrachten-goedk5',   'MLD', 11, 1,    1, 'Om opdrachten boven de vijfde limiet goed te kunnen keuren');

ALTER TABLE mld_disc_params MODIFY mld_disc_params_bestellimiet NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE mld_disc_params ADD mld_disc_params_bestellimiet2 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE mld_disc_params ADD mld_disc_params_bestellimiet3 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE mld_disc_params ADD mld_disc_params_bestellimiet4 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE mld_disc_params ADD mld_disc_params_bestellimiet5 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE mld_opdr ADD mld_opdr_approved NUMBER(11,2);

// Bestelling aanvragen
DEF_FAC_FUNCTIE2('WEB_BESGO2', 'Backoffice:Bestellingen-goedk2', 'BES', 11, 1,    1, 'Om bestelaanvragen boven de tweede limiet goed te kunnen keuren');
DEF_FAC_FUNCTIE2('WEB_BESGO3', 'Backoffice:Bestellingen-goedk3', 'BES', 11, 1,    1, 'Om bestelaanvragen boven de derde limiet goed te kunnen keuren');
DEF_FAC_FUNCTIE2('WEB_BESGO4', 'Backoffice:Bestellingen-goedk4', 'BES', 11, 1,    1, 'Om bestelaanvragen boven de vierde limiet goed te kunnen keuren');
DEF_FAC_FUNCTIE2('WEB_BESGO5', 'Backoffice:Bestellingen-goedk5', 'BES', 11, 1,    1, 'Om bestelaanvragen boven de vijfde limiet goed te kunnen keuren');

ALTER TABLE bes_disc_params ADD bes_disc_params_bestellimiet2 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE bes_disc_params ADD bes_disc_params_bestellimiet3 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE bes_disc_params ADD bes_disc_params_bestellimiet4 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE bes_disc_params ADD bes_disc_params_bestellimiet5 NUMBER(11,2) DEFAULT 1000000;
ALTER TABLE bes_bestelling ADD bes_bestelling_approved NUMBER(11,2);

/////////////////////////////////////////////////////////////////////////////////////////// RWSN#28358
ALTER TABLE fac_kenmerkdomein ADD fac_kenmerkdomein_verval VARCHAR2(30);

/////////////////////////////////////////////////////////////////////////////////////////// VGLD#28822
DELETE FROM bes_kenmerk WHERE bes_srtinstallatie_key IS NULL;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28732
ALTER TABLE ins_kenmerk DROP CONSTRAINT ins_c_ins_kenmerk_niveau2;
ALTER TABLE ins_kenmerk ADD CONSTRAINT ins_c_ins_kenmerk_niveau2
  CHECK (ins_kenmerk_niveau IS NOT NULL AND (ins_kenmerk_niveau IN('D', 'G', 'S', 'C')));

CREATE_TABLE(ins_kmdeelsrtcontr,0)
( ins_kmdeelsrtcontr_key
      NUMBER(10)
      CONSTRAINT ins_k_kmdeelsrtcontr_key PRIMARY KEY,
  ins_deelsrtcontrole_key
      NUMBER(10)
      NOT NULL REFERENCES ins_deelsrtcontrole (ins_deelsrtcontrole_key) ON DELETE CASCADE,
   ins_kenmerk_key
      NUMBER(10)
      NOT_NULL(ins_kenmerk_key, ins_c_ins_kenmerk_key1)
      CONSTRAINT ins_r_ins_kenmerk_key3 REFERENCES ins_kenmerk(ins_kenmerk_key),
   ins_kmdeelsrtcontr_waarde
      VARCHAR2(4000),
   ins_kmdeelsrtcontr_aanmaak
      DATE
      DEFAULT SYSDATE
      NOT_NULL(ins_kmdeelsrtcontr_aanmaak,ins_c_kmdeelsrtcontr_aanmaak),
   ins_kmdeelsrtcontr_verwijder
      DATE
      DEFAULT NULLDATUM,
   CONSTRAINT ins_u_ins_kmdeelsrtcontr UNIQUE(ins_kenmerk_key, ins_deelsrtcontrole_key, ins_kmdeelsrtcontr_verwijder)
);

CREATE SEQUENCE ins_s_ins_kmdeelsrtcontr_key MINVALUE 1;

DEF_MENUITEM(2, 'lcl_menu_ins_kenmerken_insp'   , '', 'INS', 'appl/facmgtVB/ins_kenmerkgrid.asp?inspectie=1', 0, 0, 'WEB_INSMGT', 'W', '1');
MENU_INS_AFTER('lcl_menu_ins_kenmerken_insp', 'lcl_menu_ins_kenmerken', 2);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#28896
CREATE_TABLE(ins_deel_state_history, 0)
(
    ins_deel_state_history_key
        NUMBER(10)
        CONSTRAINT ins_k_deel_state_history_key PRIMARY KEY,
    ins_deel_key
        NUMBER(10)
        CONSTRAINT ins_r_ins_deel_key2 REFERENCES ins_deel(ins_deel_key),
    ins_deel_state
        VARCHAR2(128),
    ins_deel_statedate
        DATE,
    ins_deel_state_history_opmerk /* je weet het niet he */
        VARCHAR2(320)
);

CREATE SEQUENCE ins_s_ins_deel_state_hist_key MINVALUE 1;
CREATE_TRIGGER(ins_t_ins_deel_state_hist_B_I)
BEFORE INSERT ON ins_deel_state_history
FOR EACH ROW
BEGIN
    UPDATE_PRIMARY_KEY(ins_deel_state_history_key,ins_s_ins_deel_state_hist_key);
END;
/
// Truuk: converteer de bekende tracking; vereist wel de bovenstaande trigger
INSERT INTO ins_deel_state_history (ins_deel_key, ins_deel_state, ins_deel_statedate)
    SELECT fac_tracking_refkey ins_deel_key,
           MAX(REPLACE (REPLACE (fac_tracking_oms, 'Status ', ''), '''', '')),
           t.fac_tracking_datum
      FROM fac_tracking t
     WHERE t.fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
                                          FROM fac_srtnotificatie n
                                         WHERE n.fac_srtnotificatie_code = 'INSUPD')
           AND t.fac_tracking_oms LIKE 'Status %'
  GROUP BY fac_tracking_refkey, t.fac_tracking_datum;

// Now lets clean the tracking
DELETE FROM fac_tracking t
      WHERE t.fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
                                           FROM fac_srtnotificatie n
                                          WHERE n.fac_srtnotificatie_code = 'INSUPD')
            AND t.fac_tracking_oms LIKE 'Status %';

CREATE UNIQUE INDEX ins_i_ins_deel_state_hist1 ON ins_deel_state_history(ins_deel_key, ins_deel_statedate);

/////////////////////////////////////////////////////////////////////////////////////////// AAIT#28530
ALTER TABLE bes_bestelling ADD bes_bestelling_satisfaction_op VARCHAR2(2000);
ALTER TABLE mld_melding ADD mld_melding_satisfaction_op VARCHAR2(2000);
ALTER TABLE res_rsv_ruimte ADD res_rsv_ruimte_satisfaction_op VARCHAR2(2000);

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

/////////////////////////////////////////////////////////////////////////////////////////// CLEANUP

ALTER TABLE prs_bedrijf DROP COLUMN prs_bedrijf_mldorder_adres;
ALTER TABLE prs_bedrijf DROP COLUMN prs_bedrijf_order_adres;
ALTER TABLE prs_bedrijf DROP COLUMN prs_bedrijf_order_mode;
ALTER TABLE prs_bedrijf DROP COLUMN prs_bedrijf_order_certificate;
ALTER TABLE prs_bedrijf DROP COLUMN prs_bedrijf_XSL;
ALTER TABLE fac_session DROP COLUMN fac_session_sessionid; // Al niet meer in gebruik sinds 5.3.2

///////////////////////////////////////////////////////////////////////////////////////////
REGISTERONCE('$Id$')
#include "epilogue.inc"
