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

COMMIT;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#40569
UPDATE mld_adres
    SET mld_adres_fax = NULL,
        mld_adres_contactpers_fax = NULL;
ALTER TABLE mld_adres
    RENAME COLUMN mld_adres_contactpers_fax
    TO mld_adres_contactpers_email;
ALTER TABLE mld_adres
    RENAME COLUMN mld_adres_fax
    TO mld_adres_email;
ALTER TABLE mld_adres
    MODIFY (mld_adres_contactpers_email VARCHAR2(200),
            mld_adres_email VARCHAR2(200));

/////////////////////////////////////////////////////////////////////////////////////////// FSN#40722
ALTER TABLE fac_menu
DROP CONSTRAINT fac_r_prs_perslid_key7;

ALTER TABLE fac_menu
ADD CONSTRAINT fac_r_prs_perslid_key7
    FOREIGN KEY (prs_perslid_key)
    REFERENCES prs_perslid (prs_perslid_key)
    ON DELETE CASCADE;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#39651
-- CTRS** is for srtcontrole (Recurring tasks) tracking.
DEF_FAC_SRTNOT('CTRSUP', 0, 'lcl_noti_CTRSUP', 'mgt/ins_srtcontrole.asp?id=152', '0', 'taak', 10);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#36298
ALTER TABLE ins_srtcontroledl_xcp DROP CONSTRAINT ins_u_ins_srtcontroledl_xcp DROP INDEX;
ALTER TABLE ins_srtcontroledl_xcp ADD CONSTRAINT ins_u_ins_srtcontroledl_xcp UNIQUE (ins_deel_key, ins_srtcontrole_key, ins_scenario_key);

DEF_MENUITEM(1, 'lcl_menu_ctr_scenarios'        , '', 'CTR', 'appl/mgt/ctr_scenario.asp', 0, 0, 'WEB_INSMAN', 'W', '1', '');

DROP SEQUENCE ins_s_ins_scenario_key;
CREATE SEQUENCE ins_s_ins_scenario_key MINVALUE 10;

INSERT INTO ins_scenario(ins_scenario_key, ins_scenario_omschrijving)
    VALUES (1, 'Actual scenario');

UPDATE ins_srtcontroledl_xcp SET ins_scenario_key = 1 WHERE ins_scenario_key IS NULL;
ALTER TABLE ins_srtcontroledl_xcp MODIFY ins_scenario_key DEFAULT 1 NOT NULL;

UPDATE ins_srtcontrole SET ins_scenario_key = 1 WHERE ins_scenario_key IS NULL;
ALTER TABLE ins_srtcontrole MODIFY ins_scenario_key DEFAULT 1 NOT NULL;

ALTER TABLE ins_deelsrtcontrole
  ADD ins_scenario_key
      NUMBER(10)
      DEFAULT 1 NOT NULL
    CONSTRAINT ins_r_ins_scenario_key3 REFERENCES ins_scenario(ins_scenario_key)  ON DELETE CASCADE;

ALTER TABLE ins_deelsrtcontrole
  DROP CONSTRAINT ins_u_ins_deelsrtcontrole DROP INDEX;

ALTER TABLE ins_deelsrtcontrole
  ADD CONSTRAINT ins_u_ins_deelsrtcontrole UNIQUE (ins_deel_key, ins_srtcontrole_key, ins_scenario_key, ins_deelsrtcontrole_datum_org);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#39567
ALTER TABLE ins_deelsrtcontrole
  ADD ins_deelsrtcontrole_freezecost
      NUMBER(8,2);
ALTER TABLE ins_deelsrtcontrole
  ADD ins_deelsrtcontrole_freezedate
      DATE;
ALTER TABLE ctr_disc_params
  ADD mld_stdmelding_key
      NUMBER(10)
      CONSTRAINT mld_r_mld_stdmelding_key6 REFERENCES mld_stdmelding;
ALTER TABLE ins_srtcontrole
  ADD mld_stdmelding_key
      NUMBER(10)
      CONSTRAINT mld_r_mld_stdmelding_key7 REFERENCES mld_stdmelding;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#39055
ALTER TABLE bgt_project
  ADD prs_kostenplaats_key
      NUMBER (10)
      CONSTRAINT bgt_r_prs_kostenplaats_key1 REFERENCES prs_kostenplaats (prs_kostenplaats_key);

ALTER TABLE bgt_project
  ADD CONSTRAINT bgt_u_bgt_project UNIQUE(ins_discipline_key, bgt_project_code, bgt_project_verwijder);

ALTER TABLE bgt_project
  MODIFY bgt_project_code CONSTRAINT bgt_c_bgt_project_code NOT NULL;

ALTER TABLE fin_factuur
  ADD fin_factuur_advies
      DATE;

ALTER TABLE bgt_budget
  ADD CONSTRAINT bgt_u_budget UNIQUE (bgt_kostenrubriek_key, prs_kostensoortgrp_key, prs_kostensoort_key);

INSERT INTO fac_message VALUES ('BGT_U_BUDGET','Dit budget bestaat al.');

DEF_MENUITEM(1, 'lcl_menu_bgt_account'          , '', 'BGT', 'appl/mgt/prs_kostenplaats.asp',            0, 0, 'WEB_BGTMGT', 'W', '1', '');
DEF_MENUITEM(1, 'lcl_menu_bgt_bedrijf'          , '', 'BGT', 'appl/prs/prs_bedrijf_search.asp?intern=0', 0, 0, 'WEB_BGTMGT', 'R', '1', '');
DEF_MENUITEM(1, 'lcl_menu_bgt_budget'           , '', 'BGT', 'appl/bgt/bgt_budget.asp',                  0, 0, 'WEB_BGTUSE', 'W', '1', '');
DEF_MENUITEM(1, 'lcl_menu_bgt_opdracht'         , '', 'BGT', 'appl/bgt/mld_opdr.asp',                    0, 0, 'WEB_BGTORD', 'W', '1', '');
DEF_MENUITEM(1, 'lcl_menu_bgt_factuur'          , '', 'BGT', 'appl/bgt/fin_factuur.asp',                 0, 0, 'WEB_BGTORD', 'W', '1', '');
DEF_MENUITEM(1, 'lcl_menu_bgt_rapport'          , '', 'BGT', 'appl/fac/fac_reportx.asp',                 0, 0, 'WEB_BGTMAN', 'R', '1', '');

/////////////////////////////////////////////////////////////////////////////////////////// YKPN#41337
ALTER TABLE mld_typeopdr ADD mld_typeopdr_fvs NUMBER(11,2) DEFAULT 0;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41580
CREATE TABLE aut_sp
(
    aut_sp_key
        NUMBER(10)
        CONSTRAINT aut_k_sp_key PRIMARY KEY,
    aut_sp_code            -- Nodig?
        VARCHAR2(30),
    aut_sp_type            -- 1=Internal (login.asp, future use), 2=UID_DEC (deprecated),
        NUMBER(3),         -- 3=GUID-encrypted (deprecated), 4=JWT, 5=SAML (future use)
    aut_sp_algorithm       -- HS256 is HMAC-SHA256
        VARCHAR2(30),
    aut_sp_omschrijving
        VARCHAR2(30),
    aut_sp_opmerking
        VARCHAR2(320),
    aut_sp_secret
        VARCHAR2(128),
    aut_sp_audience
        VARCHAR2(128),
    aut_idp_duration
        NUMBER(10),
    aut_sp_issuer
        VARCHAR2(128),
    aut_sp_redirect_uri
        VARCHAR2(320),
    fac_functie_key
        NUMBER(10)
        CONSTRAINT aut_r_sp_functie REFERENCES fac_functie(fac_functie_key),
    aut_sp_internal
        NUMBER(1)
        DEFAULT 0 NOT NULL,
    aut_sp_loglevel
      NUMBER(1) DEFAULT 0 NOT NULL,
    aut_sp_aanmaak
        DATE
        DEFAULT SYSDATE
);

CREATE TABLE aut_sp_map
(
    aut_sp_map_key
        NUMBER(10)
        CONSTRAINT aut_k_sp_map_key PRIMARY KEY,
    aut_sp_key
        NUMBER(10)
        CONSTRAINT aut_r_sp_map_id REFERENCES aut_sp(aut_sp_key),
    aut_sp_map_from
        NUMBER(3)
        NOT NULL,
    aut_sp_map_to --  as sent in JWT
        VARCHAR(100)
        NOT NULL,
    aut_sp_map_aanmaak
        DATE
        DEFAULT SYSDATE
);
CREATE SEQUENCE aut_s_aut_sp_key                MINVALUE 1;
CREATE SEQUENCE aut_s_aut_sp_map_key            MINVALUE 1;
CREATE UNIQUE INDEX aut_i_sp_code ON aut_sp(aut_sp_code);

DEF_MENUENTRY(2, 99115, 'lcl_menu_aut_sp'              , '', 'FAC', 'appl/mgt/aut_sp.asp', 0, 0, 'WEB_FACFAC');

ALTER TABLE aut_client_perslid
    ADD aut_client_perslid_device_name
        VARCHAR(320);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41583
ALTER TABLE prs_bedrijfadres
    ADD prs_bedrijfadres_loglevel
        NUMBER(1)
        DEFAULT 0
        NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41521
// Is bij de meeste klanten al handmatig gedaan
UPDATE fac_notificatie_job
   SET fac_notificatie_job_interval = 2160
 WHERE LOWER(fac_notificatie_job_view) = 'fac_v_noti_licentie'
   AND fac_notificatie_job_interval = 24;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#35423

BEGIN
   FOR c
      IN (SELECT prs_perslid_key
            FROM prs_perslid
           WHERE     prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\'  -- comment ' tbv syntaxhilite
                 AND prs_perslid_wachtwoord_hash IS NOT NULL
                 AND prs_perslid_wachtwoord_hash NOT LIKE '%$%'
                 AND EXISTS
                       (SELECT 1 -- met DB27/2015.3 kwam PBKDF2
                          FROM adm_tracking
                         WHERE UPPER(adm_tracking_name) = 'DB26TO27.SRC'
                           AND adm_tracking_date < SYSDATE - 90))
   LOOP
      prs.setpassword (c.prs_perslid_key, NULL);
   END LOOP;
END;
/

/////////////////////////////////////////////////////////////////////////////////////////// YKPN#40774
UPDATE bez_kenmerk
   SET bez_kenmerk_systeem = 0
 WHERE bez_kenmerk_systeem IS NULL;

ALTER TABLE bez_kenmerk
     MODIFY bez_kenmerk_systeem DEFAULT 0 NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// YKPN#40205
ALTER TABLE bez_bezoekers ADD bez_bezoekers_flag NUMBER(1);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41529
DEF_MENUENTRY(2, 99150, 'lcl_menu_fac_anyupload' , '', 'FAC', 'appl/shared/bijlagen.asp', 0, 0, 'WEB_FACFAC');

/////////////////////////////////////////////////////////////////////////////////////////// FSN#35462
INSERT INTO fac_notificatie_job (fac_notificatie_job_view, fac_notificatie_job_oms, fac_notificatie_job_mode, fac_notificatie_job_interval, fac_notificatie_job_flags)
     VALUES ('fac_v_noti_facorderqueuefails', 'Notificatie van problemen bij het versturen van opdrachten.', 2, 24, 3);

/////////////////////////////////////////////////////////////////////////////////////////// PLAT#41495
ALTER TABLE alg_locatie
DROP CONSTRAINT alg_u_alg_locatie_code DROP INDEX;

ALTER TABLE alg_locatie
ADD  CONSTRAINT alg_u_alg_locatie_code UNIQUE(alg_district_key, alg_locatie_code, alg_locatie_verwijder);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41517
DROP TRIGGER mld_t_mld_opdr_materiaal_b_iu;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41668
ALTER TABLE prs_perslid ADD prs_perslid_externid VARCHAR2(128);
CREATE INDEX prs_i_prs_perslid8 ON prs_perslid(prs_perslid_externid);

ALTER TABLE prs_afdeling ADD prs_afdeling_externid VARCHAR2(128);
CREATE INDEX prs_i_prs_afdeling3 ON prs_afdeling(prs_afdeling_externid);

ALTER TABLE fac_groep ADD fac_groep_externid VARCHAR2(128);
CREATE INDEX fac_i_fac_groep1 ON fac_groep(fac_groep_externid);

/////////////////////////////////////////////////////////////////////////////////////////// KFSG#41905
ALTER TABLE prs_perslid ADD prs_perslid_inactief DATE;

/////////////////////////////////////////////////////////////////////////////////////////// FSN#40474
ALTER TABLE mld_opdr ADD mld_opdr_fiatbedrag NUMBER(11,2);

ALTER TABLE prs_kostenplaatsgrp
    ADD prs_kostenplaatsgrp_fiat2_key
   NUMBER(10)
   CONSTRAINT prs_r_prs_perslid_key18 REFERENCES prs_perslid(prs_perslid_key);

ALTER TABLE prs_kostenplaatsgrp
    ADD prs_kostenplaatsgrp_fiat3_key
   NUMBER(10)
   CONSTRAINT prs_r_prs_perslid_key19 REFERENCES prs_perslid(prs_perslid_key);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41733
UPDATE fac_menuitems
   SET fac_menuitems_url = 'appl/mgt/prs_kostenplaatsgrp.asp'
 WHERE fac_menuitems_label = 'lcl_menu_fin_kostenplaatsgroep';

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41744
ALTER TABLE mld_melding MODIFY mld_melding_onderwerp VARCHAR2(80);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#40459
UPDATE prs_bedrijfadres
   SET prs_bedrijfadres_xsl = 'xsl/' || SUBSTR(USER, 1, 4) || '.xsl'
 WHERE REGEXP_LIKE (prs_bedrijfadres_xsl, '^xsl([\\|/])cust.xsl$', 'i');

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41802
UPDATE fac_import_app
   SET fac_functie_key =
          (SELECT fac_functie_key
             FROM fac_functie
            WHERE fac_functie_code = 'WEB_FACFAC')
  WHERE SUBSTR(fac_import_app_code, -4) = '_DEL'
    AND UPPER(fac_import_app_oms) LIKE '%VERVANGEN%';

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41604
DEF_FAC_SRTNOT('MLD2BP', 0, 'lcl_noti_MLD2BP', 'mld/mld_melding.asp?urole=bo&mld_key=', '0', 'melding', 10);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41668
ALTER TABLE prs_perslid ADD prs_perslid_externoslogin VARCHAR2(30);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#41836
DELETE FROM prs_collega
      WHERE prs_perslid_key IN (SELECT prs_perslid_key
                                  FROM prs_perslid
                                 WHERE prs_perslid_verwijder IS NOT NULL)
            OR prs_perslid_key_alt IN (SELECT prs_perslid_key
                                         FROM prs_perslid
                                        WHERE prs_perslid_verwijder IS NOT NULL);

/////////////////////////////////////////////////////////////////////////////////////////// AAIT#40392
ALTER TABLE aut_client ADD prs_bedrijf_key NUMBER(10)
 CONSTRAINT aut_r_prs_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE;

ALTER TABLE prs_bedrijfadres DROP CONSTRAINT prs_c_prs_bedrijfadrestype;
ALTER TABLE prs_bedrijfadres ADD  CONSTRAINT prs_c_prs_bedrijfadrestype CHECK (prs_bedrijfadres_type IN ('O','B','C','V','N'));

/////////////////////////////////////////////////////////////////////////////////////////// RWSN#41312
DEF_MENUITEM(3, 'lcl_mobile_locaties'           , '', 'ALG', 'appl/pda/locatie_list.asp', 0, 0, 'WEB_ALGMAN', 'R', '0',     'fa-location-arrow');
DEF_MENUITEM(3, 'lcl_mobile_gebouwen'           , '', 'ALG', 'appl/pda/gebouw_list.asp', 0, 0, 'WEB_ALGMAN', 'R', '0',      'fa-building-o');
UPDATE fac_menuitems SET fac_menuitems_image='fa-map-marker' where fac_menuitems_label='lcl_mobile_ruimten';

/////////////////////////////////////////////////////////////////////////////////////////// PCHA#38859
ALTER TABLE fac_usrdata DROP CONSTRAINT fac_u_fac_usrdata_upper DROP INDEX;
ALTER TABLE fac_usrdata ADD CONSTRAINT fac_u_fac_usrdata_upper UNIQUE(fac_usrtab_key, fac_usrdata_upper, fac_usrdata_verwijder, fac_usrdata_vervaldatum);

/////////////////////////////////////////////////////////////////////////////////////////// DENB#39784
DEF_MENUITEM(3, 'lcl_mobile_res_voorziening', '', 'RES', 'appl/pda/reservering.asp?restype=CV', 0, 0, 'WEB_RESUSE', 'W', '0', 'fa-bicycle');

/////////////////////////////////////////////////////////////////////////////////////////// GENERAL
UPDATE fac_message
   SET fac_message_text = 'Copyright (c) 1996-2017, Facilitor BV, Nederland'
 WHERE fac_message_code LIKE 'FAC_M005';

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

///////////////////////////////////////////////////////////////////////////////////////////
REGISTERONCE('$Id$')

#include "epilogue.inc"
