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

COMMIT;
SET DEFINE OFF

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#85890
RENAME fac_v_orderqueue to fac_v_orderqueue_OLD;

// Tijdelijke dummy die niets oplevert
CREATE OR REPLACE VIEW fac_v_orderqueue
AS
    SELECT -1         prs_bedrijf_key,
           -1         alg_locatie_key,
           'dontcare' xmlnode,
           -1         key,
           -1         reference,
           ''         sender,
           SYSDATE    teverzenden_datum
      FROM DUAL
     WHERE 0 = 1;

CREATE TABLE prs_bedrijfadres_srtnoti
(
    prs_bedrijfadres_srtnoti_key
        NUMBER(10)
        PRIMARY KEY,
    prs_bedrijfadres_key
        NUMBER(10)
        CONSTRAINT prs_r_bedrijfadres_key2
        REFERENCES prs_bedrijfadres(prs_bedrijfadres_key) ON DELETE CASCADE,
    fac_srtnotificatie_key
        NUMBER(10)
        REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE,
    prs_bedrijfadres_method -- optionele overrule method (anders GET/POST afhankelijk van of er een body is)
        VARCHAR2(16),
    prs_bedrijfadres_url -- optionele overrule endpoint
        VARCHAR2(512),
    prs_bedrijfadres_srtnoti_aanmaak
        DATE
        DEFAULT SYSDATE NOT NULL
);

CREATE SEQUENCE prs_s_prs_bedrijfadres_srtnoti_key MINVALUE 1;

ALTER TABLE fac_notificatie
    ADD fac_notificatie_naam VARCHAR(80); // puur informatief voor logging/support, bijvoorbeeld opdrachtnummer

ALTER TABLE fac_notificatie
    ADD fac_notificatie_failmessage VARCHAR(4000); // de laatste

ALTER TABLE fac_notificatie
    ADD fac_notificatie_faildatum DATE; // de laatste

ALTER TABLE fac_notificatie
    ADD fac_notificatie_realuser VARCHAR2(64);

ALTER TABLE prs_bedrijfadres
    ADD ins_discipline_key NUMBER(10)
        REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE; // Scherpere bedrijfadres bepaling, vooral reserveringen?

ALTER TABLE prs_bedrijfadres
   ADD prs_bedrijfadres_omschrijving VARCHAR2(100);

ALTER TABLE prs_bedrijfadres
    MODIFY prs_bedrijfadres_type VARCHAR2(3); // Ook ruimte voor BOG voor BestelOpdrachten Generiek

ALTER TABLE prs_bedrijf DROP CONSTRAINT prs_c_prs_bedrijf_intern;  // mag ook 2 zijn

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

UPDATE prs_bedrijf
   SET prs_bedrijf_intern = 2, // is nu logischer
       prs_bedrijf_uitvoerende = NULL
 WHERE prs_bedrijf_naam = 'Aareon Facilitor Mobile app';

ALTER TABLE prs_contactpersoon
    ADD prs_contactpersoon_systeem
    NUMBER(1) DEFAULT 0 NOT NULL;

ALTER TABLE fac_version
    ADD fac_version_tasker_date DATE;

CREATE_TABLE(fac_cust, 0)
(
    fac_cust_key                NUMBER(10)
                                CONSTRAINT fac_k_fac_cust_key PRIMARY KEY,
    fac_cust_customerid         VARCHAR(4) NOT NULL,
    fac_cust_schema             VARCHAR(30) DEFAULT '00' NOT NULL, // kopie fac_version_schema van de gebruiker
    fac_cust_enabled            NUMBER(1) DEFAULT 1 NOT NULL, // future use, disable during upgrades?
    fac_cust_aanmaak            DATE DEFAULT SYSDATE NOT NULL,
    CONSTRAINT fac_u_fac_cust UNIQUE(fac_cust_customerid)
);

CREATE_TABLE(fac_task, 0)
(
    fac_task_key                NUMBER(10)
                                CONSTRAINT fac_k_fac_task_key PRIMARY KEY,
    fac_cust_key                NUMBER(10) REFERENCES fac_cust(fac_cust_key) ON DELETE CASCADE,
    fac_task_code               VARCHAR(32) NOT NULL,
    fac_task_nextrun            DATE,
    fac_task_lastrun            DATE,
    fac_task_flags              NUMBER(3) DEFAULT 1 NOT NULL, -- +1=enabled
    fac_task_aanmaak            DATE DEFAULT SYSDATE NOT NULL,
    CONSTRAINT fac_u_fac_task UNIQUE(fac_cust_key, fac_task_code)
);

CREATE SEQUENCE fac_s_fac_cust_key              MINVALUE 1;
CREATE SEQUENCE fac_s_fac_task_key              MINVALUE 1;

DEF_FAC_SRTNOT('RESSND', 1, 'lcl_noti_RESSND', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 60);

DEF_MENUITEM(2, 'lcl_menu_prs_bedrijf_system'   , '', 'FAC', 'appl/prs/prs_bedrijf_search.asp?intern=2', 0, 0, 'WEB_PRSSYS', 'W', '1', '');
MENU_INS_AFTER('lcl_menu_prs_bedrijf_system', 'lcl_menu_fac_eigen_tabellen', 1);

DEF_MENUITEM(2, 'lcl_menu_system_adresses'      , '', 'FAC', 'appl/mgt/prs_bedrijfadres.asp', 0, 0, 'WEB_PRSSYS', 'W', '1', '');
MENU_INS_AFTER('lcl_menu_system_adresses', 'lcl_menu_prs_bedrijf_system', 1);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#80469


/////////////////////////////////////////////////////////////////////////////////////////// YAXX#84687
ALTER TABLE prs_bedrijf
    ADD prs_bedrijf_mld_limiet NUMBER(8,2);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#85970
CREATE_TABLE(mld_melding_tag,0)  /* generiekere opzet voor mld_releases of mld_releasekalender */
(
    mld_melding_tag_key
        NUMBER(10)
        CONSTRAINT mld_k_melding_tag_key PRIMARY KEY,
    ins_srtdiscipline_key
        NUMBER(10) NOT NULL
        CONSTRAINT mld_r_ins_srtdiscipline_key4 REFERENCES ins_srtdiscipline(ins_srtdiscipline_key) ON DELETE CASCADE,
    mld_melding_tag_naam
        VARCHAR2(30)
        NOT NULL,
    mld_melding_tag_oms                 /* korte omschrijving */
        VARCHAR2(1000),
    mld_stdmeldinggroep_key             /* optional reference to mld_stdmeldinggroep */
        NUMBER(10)
        CONSTRAINT mld_r_mld_stdmeldinggroep_key2 REFERENCES mld_stdmeldinggroep(mld_stdmeldinggroep_key),
    mld_melding_tag_datum_van           /* lijkt logisch, maar definieren waarom */
        DATE,
    mld_melding_tag_datum_tot           /* de releasedatum */
        DATE NOT NULL,
    prs_perslid_key                     /* aanmaker of verantwoordelijke */
        NUMBER(10)
        CONSTRAINT mld_r_prs_perslid_key15 REFERENCES prs_perslid(prs_perslid_key),
    mld_melding_tag_aanmaak
        DATE DEFAULT SYSDATE NOT NULL,
    mld_melding_tag_verwijder
        DATE
);
CREATE UNIQUE INDEX mld_i_mld_melding_tag1 ON mld_melding_tag(ins_srtdiscipline_key, UPPER(mld_melding_tag_naam), mld_melding_tag_verwijder);

CREATE SEQUENCE mld_s_mld_melding_tag_key MINVALUE 1;

ALTER TABLE mld_stdmelding ADD
    mld_stdmelding_taggable
        NUMBER(1)
        DEFAULT 0
        NOT NULL;

ALTER TABLE mld_melding ADD
    mld_melding_tag_key
        NUMBER(10)
        CONSTRAINT mld_r_mld_melding_tag REFERENCES mld_melding_tag(mld_melding_tag_key);

DEF_FAC_FUNCTIE3('WEB_MLDTAG', 'MLD',  3, 1,    1);

DEF_MENUITEM(1, 'lcl_menu_mld_melding_tag'      , '', 'MLD', 'appl/mgt/mld_melding_tag.asp', 0, 0, 'WEB_MLDTAG', 'R', '1', '');
MENU_INS_AFTER('lcl_menu_mld_melding_tag', 'lcl_menu_mld_mi', 1);

/////////////////////////////////////////////////////////////////////////////////////////// VNOG#83559
ALTER TABLE fac_imp_ins
  ADD (
        ins_srtdeel_omschr_parent   VARCHAR2 (100),
        ins_deel_omschr_parent      VARCHAR2 (60)
      );

/////////////////////////////////////////////////////////////////////////////////////////// AAXX#83884
UPDATE mld_typeopdr_srtdiscipline mts
   SET mts.ins_srtdiscipline_key =
           (SELECT md.ins_srtdiscipline_key
              FROM mld_discipline md
             WHERE md.ins_discipline_key = mts.ins_discipline_key)
 WHERE EXISTS
           (SELECT 1
              FROM mld_discipline md
             WHERE md.ins_discipline_key = mts.ins_discipline_key);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#83805
DELETE FROM fac_menu
 WHERE fac_menuitems_key IN (SELECT fac_menuitems_key
                               FROM fac_menuitems
                              WHERE fac_menuitems_label = 'lcl_menu_fac_aut_groep'
                            );
DELETE FROM fac_menuitems
 WHERE fac_menuitems_label = 'lcl_menu_fac_aut_groep';

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#86343
// Sinds HSLE#36898 (2016.3) al niet meer in gebruik.

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

UPDATE prs_perslid
   SET prs_perslid_options = NULL
 WHERE prs_perslid_options IS NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
DEF_FAC_MESSAGE ('INS_M205', 'Parent object bestaat niet.','Parent object does noet exist.');

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#85815
ALTER TABLE mld_typeopdr
  ADD mld_typeopdr_code VARCHAR2(60)
  CONSTRAINT mld_u_mld_typeopdr_code UNIQUE;

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#86003
ALTER TABLE fac_imp_cnt
  ADD ( mantel_nr_versie VARCHAR2(10)
      , soortcontact VARCHAR2(1)
      , kostensoort VARCHAR2(60)
      , scope VARCHAR2(1)
      );
ALTER TABLE fac_imp_cnt
     MODIFY ( bedrijf_naam VARCHAR2(200)
            , contact_naam VARCHAR2(200)
            );

/////////////////////////////////////////////////////////////////////////////////////////// DHLD#86034
ALTER TABLE prs_perslid
     MODIFY ( prs_perslid_oslogin  VARCHAR2(256)
            , prs_perslid_oslogin2 VARCHAR2(256)
            );
ALTER TABLE fac_imp_perslid
     MODIFY prs_perslid_oslogin VARCHAR2(256);

/////////////////////////////////////////////////////////////////////////////////////////// YASK#86818
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MIN_A' , 'Nieuwe min.waarde van dit kenmerksoort voldoet niet aan alle afdelingen.'      ,'New min.value of this property-type does not satisfy all departments.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MIN_B' , 'Nieuwe min.waarde van dit kenmerksoort voldoet niet aan alle bedrijven.'       ,'New min.value of this property-type does not satisfy all companies.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MIN_C' , 'Nieuwe min.waarde van dit kenmerksoort voldoet niet aan alle contactpersonen.' ,'New min.value of this property-type does not satisfy all contact persons');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MIN_P' , 'Nieuwe min.waarde van dit kenmerksoort voldoet niet aan alle personen.'        ,'New min.value of this property-type does not satisfy all persons.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MAX_A' , 'Nieuwe max.waarde van dit kenmerksoort voldoet niet aan alle afdelingen.'      ,'New max.value of this property-type does not satisfy all departments.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MAX_B' , 'Nieuwe max.waarde van dit kenmerksoort voldoet niet aan alle bedrijven.'       ,'New max.value of this property-type does not satisfy all companies.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MAX_C' , 'Nieuwe max.waarde van dit kenmerksoort voldoet niet aan alle contactpersonen.' ,'New max.value of this property-type does not satisfy all contact persons.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_MAX_P' , 'Nieuwe max.waarde van dit kenmerksoort voldoet niet aan alle personen.'        ,'New max.value of this property-type does not satisfy all persons.');
DEF_FAC_MESSAGE ('PRS_C_PRS_KENMERK_LENGTE', 'De lengte moet tussen 1 en 50 liggen.','Length must be between 1 and 50.');

/////////////////////////////////////////////////////////////////////////////////////////// VGLD#85984
ALTER TABLE cnt_contract
  ADD cnt_contract_inactiveren  /* Automatisch sluiten na einddatum (0=nee, 1=ja) */
      NUMBER(1)
      DEFAULT 0
      CONSTRAINT cnt_r_cnt_contract_inactiveren CHECK(cnt_contract_inactiveren IN (0,1));

/////////////////////////////////////////////////////////////////////////////////////////// YAXX#86411
ALTER TABLE alg_kenmerk DROP CONSTRAINT alg_c_alg_kenmerk_niveau1;
ALTER TABLE alg_kenmerk ADD CONSTRAINT alg_c_alg_kenmerk_niveau1 CHECK(alg_kenmerk_niveau IS NOT NULL
               AND alg_kenmerk_niveau IN ('R','V','G','T','L','D', 'E'));
DEF_MENUITEM(2, 'lcl_menu_alg_regiokenmerken'   , '', 'ALG', 'appl/mgt/alg_kenmerk.asp?level=E', 0, 0, 'WEB_ALGMGT', 'W', '1', '');
MENU_INS_AFTER('lcl_menu_alg_regiokenmerken', 'lcl_menu_alg_districtkenmerken', -10);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#82174
-- Variatie op MENU_INS_AFTER(); nl. zonder fac_menuitems-record
INSERT INTO fac_menu (fac_menu_volgnr,
                      fac_menu_altlabel,
                      fac_menu_info,
                      fac_menu_alturl,
                      fac_menu_altgroep,
                      fac_menu_level,
                      fac_functie_key)
    SELECT (SELECT fac_menu_volgnr + 5
              FROM fac_menu
             WHERE fac_menu_altlabel = 'lcl_menu_session'),
           'lcl_menu_get_exchange',
           '',
           'appl/api/exchange/default.asp',
           2,
           2,
           fac_functie_key
      FROM fac_functie
     WHERE fac_functie_code = 'WEB_FACTAB'
       AND NOT EXISTS
               (SELECT ''
                  FROM fac_menu
                 WHERE fac_menu_alturl = 'appl/api/exchange/default.asp');

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#82423
ALTER TABLE alg_gebouw ADD alg_gebouw_virtueel NUMBER(1) DEFAULT(0) NOT NULL;
ALTER TABLE alg_verdieping ADD alg_verdieping_virtueel NUMBER(1) DEFAULT(0) NOT NULL;
ALTER TABLE alg_ruimte ADD alg_ruimte_virtueel NUMBER(1) DEFAULT(0) NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// BAUS#82535
DEF_FAC_SRTNOT('ACTUPD', 0, 'lcl_noti_ACTUPD', 'fac/job.asp?job_key=', '0', 'activiteit', 60);

/////////////////////////////////////////////////////////////////////////////////////////// PCHX#85935
CREATE VIEW prs_v_rap_vervangers AS SELECT * FROM DUAL;
DEF_RAPPORT('PRS', 'WEB_PRSMAN', 0 , 'prs_v_rap_vervangers',          'Vervangers',                     'Vervangers per persoon',
                                                                      'Substitutes',                    'Substitutes per person')

/////////////////////////////////////////////////////////////////////////////////////////// LOGC#86231
UPDATE fac_usrrap_cols c1
   SET fac_usrrap_cols_sorting = 1
 WHERE     fac_usrrap_cols_column_name = 'hide_f_sort'
       AND fac_usrrap_cols_visible IN ('H', 'I')    -- Ik ben [H]idden of [I]nvisible (verborgen/onzichtbaar)
       AND fac_usrrap_cols_sorting = 3              -- Sortering staat op automatisch
       AND fac_usrrap_cols_volgnr =                 -- Ik ben de eerste kolom
           (  SELECT MIN (fac_usrrap_cols_volgnr)
                FROM fac_usrrap_cols c2
               WHERE c2.fac_usrrap_key = c1.fac_usrrap_key
            GROUP BY fac_usrrap_key)
       AND NOT EXISTS                               -- autosorting is van toepassing (alle kolommen staan op 'automatisch' sorteren)
               (SELECT ''
                  FROM fac_usrrap_cols c3
                 WHERE     c3.fac_usrrap_key = c1.fac_usrrap_key
                       AND fac_usrrap_cols_sorting <> 3);

/////////////////////////////////////////////////////////////////////////////////////////// NOVA#85923
ALTER TABLE mld_typeopdr
  ADD mld_typeopdr_confirm_for_send
      NUMBER(1)
      DEFAULT 0;

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

UPDATE mld_typeopdr
   SET mld_typeopdr_confirm_for_send = fac.getsetting('mld_opdr_confirm_for_send');

/////////////////////////////////////////////////////////////////////////////////////////// CARG#85437
ALTER TABLE bes_disc_params
  ADD bes_disc_params_autodeliverdays
      NUMBER(4);

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#86197
UPDATE fac_setting
   SET fac_setting_pvalue =
           REPLACE (
               REPLACE (fac_setting_pvalue,
                        'fa-file-import',
                        'fa-file-upload'),
               'fa-file-export',
               'fa-file-download')
 WHERE     fac_setting_name = 'buttons_in_hamburger'
       AND fac_setting_pvalue IS NOT NULL;

/////////////////////////////////////////////////////////////////////////////////////////// MARX#87424
ALTER TABLE prs_bedrijf DROP CONSTRAINT prs_u_prs_bedrijf_naam_upper DROP INDEX;
ALTER TABLE prs_bedrijf ADD CONSTRAINT prs_u_prs_bedrijf_naam_upper UNIQUE(prs_bedrijf_naam_upper, prs_bedrijf_intern, prs_bedrijf_verwijder);

/////////////////////////////////////////////////////////////////////////////////////////// WRTH#87857
UPDATE fac_import_app SET fac_import_app_csv = 1 WHERE fac_import_app_code = 'CNT';

/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
REGISTERONCE('$Id$')

#define POST_RECREATE "DB49to50_post.src"
#include "epilogue.inc"
