/* DB7TO8.SRC
 * Update script van Facilitor schema DB7 naar DB8
 * $Revision$
 * $Id$
 */
#include "prologue.inc"


////////////////////////////////////////////////////////////////////////////////////////// FSN#18850
START_LOCALEITEMS('MLD_SRTDISCIPLINE_KEY')
DEFINE_LOCALEITEM(lcl_search_diff_fields)
DEFINE_LOCALEITEM(lcl_select_uitvoerende)
DEFINE_LOCALEITEM(lcl_select_vakgroep)
DEFINE_LOCALEITEM(lcl_select_stdmelding)
DEFINE_LOCALEITEM(lcl_mld_is_mldnew)
DEFINE_LOCALEITEM(lcl_mld_is_mldupd)
DEFINE_LOCALEITEM(lcl_mld_is_mldafm)
DEFINE_LOCALEITEM(lcl_mld_is_mldrej)
DEFINE_LOCALEITEM(lcl_mld_statusfilters)
DEFINE_LOCALEITEM(lcl_doaction_hint)
DEFINE_LOCALEITEM(LCL.mld.select_noloc_selected)
DEFINE_LOCALEITEM(LCL.mld.opdr_closed_3)
DEFINE_LOCALEITEM(LCL.mld.vakgroep)
DEFINE_LOCALEITEM(LCL.mld.person_prefix)
DEFINE_LOCALEITEM(LCL.mld.select_nostdmld_selected)
DEFINE_LOCALEITEM(LCL.mld.mldstatus)
END_LOCALEITEMS()
/

/////////////////////////////////////////////////////////////////////////////////////////// FSN#18742
ALTER TABLE ins_srtdeel ADD ins_srtdeel_voorraadmin NUMBER(6);
ALTER TABLE ins_srtdeel ADD ins_srtdeel_voorraadmax NUMBER(6);
ALTER TABLE bes_disc_params
        ADD bes_ins_discipline_key_inkoop NUMBER(10)
 CONSTRAINT bes_r_ins_discipine_key2 REFERENCES ins_tab_discipline(ins_discipline_key);

DEF_MENUITEM(1, 'lcl_menu_bes_bo_voorraad'      , '', 'BES', 'appl/bes/bes_voorraad_search.asp?urole=bo', 0, 0, 'WEB_BESBOF', 'R', '0');

/////////////////////////////////////////////////////////////////////////////////////////// PZHO#18868
ALTER TABLE bes_disc_params ADD bes_disc_params_pgb NUMBER(1);

/////////////////////////////////////////////////////////////////////////////////////////// AABT#18483
CREATE_TABLE(fin_btwtabel, 0)
(
    fin_btwtabel_key
        NUMBER(10)
        CONSTRAINT fin_k_btwtabel_key PRIMARY KEY,
    fin_btwtabel_omschrijving
        VARCHAR(30)
        NOT_NULL(fin_btwtabel_omschrijving, fin_c_btwtabel_omschr),
    fin_btwtabel_default
        NUMBER(1),
    fin_btwtabel_aanmaak
        DATE
        DEFAULT SYSDATE,
    fin_btwtabel_verwijder
        DATE
        DEFAULT NULLDATUM
);

CREATE_TABLE(fin_btwtabelwaarde, 0)
(
    fin_btwtabelwaarde_key
        NUMBER(10)
        CONSTRAINT fin_k_btwtabelwaarde_key PRIMARY KEY,
    fin_btwtabel_key
        NUMBER(10)
        CONSTRAINT fin_r_btwtabel_key1 REFERENCES fin_btwtabel(fin_btwtabel_key) ON DELETE CASCADE
        NOT_NULL(fin_btwtabel_key, fin_c_btwtabel_key1),
    fin_btwtabelwaarde_code
        VARCHAR(10)
        NOT_NULL(fin_btwtabelwaarde_code, fin_c_btwtabelwaarde_code),
    fin_btwtabelwaarde_oms
        VARCHAR(30),
    fin_btwtabelwaarde_perc
        NUMBER(5,3)
        NOT_NULL(fin_btwtabelwaarde_perc, fin_c_btwtabelwaarde_perc),
    fin_btwtabelwaarde_verlegd
        NUMBER(1),
    fin_btwtabelwaarde_van  -- yet unused
        DATE,
    fin_btwtabelwaarde_tot  -- yet unused
        DATE,
    fin_btwtabelwaarde_aanmaak
        DATE
        DEFAULT SYSDATE,
    fin_btwtabelwaarde_verwijder
        DATE
        DEFAULT NULLDATUM,
    CONSTRAINT fin_u_fin_btwtabelwaarde UNIQUE(fin_btwtabel_key, fin_btwtabelwaarde_code, fin_btwtabelwaarde_verwijder)
);

ALTER TABLE prs_bedrijf
        ADD fin_btwtabel_key NUMBER(10)
 CONSTRAINT prs_r_fin_btwtabel_key1 REFERENCES fin_btwtabel(fin_btwtabel_key);

ALTER TABLE fin_factuurregel
        ADD fin_btwtabelwaarde_key NUMBER(10)
 CONSTRAINT fin_r_btwtabelwaarde_key1 REFERENCES fin_btwtabelwaarde(fin_btwtabelwaarde_key);

CREATE SEQUENCE fin_s_fin_btwtabel_key MINVALUE 2;
CREATE SEQUENCE fin_s_fin_btwtabelwaarde_key MINVALUE 4;
-- triggers al nodig tbv inserts
CREATE_TRIGGER(fin_t_fin_btwtabel_b_iu)
BEFORE INSERT OR UPDATE ON fin_btwtabel
FOR EACH ROW
BEGIN
   UPDATE_PRIMARY_KEY(fin_btwtabel_key, fin_s_fin_btwtabel_key);
END;
/
CREATE_TRIGGER(fin_t_fin_btwtabelwaarde_b_iu)
BEFORE INSERT OR UPDATE ON fin_btwtabelwaarde
FOR EACH ROW
BEGIN
   UPDATE_PRIMARY_KEY(fin_btwtabelwaarde_key, fin_s_fin_btwtabelwaarde_key);
END;
/

INSERT INTO fin_btwtabel (fin_btwtabel_key, fin_btwtabel_omschrijving, fin_btwtabel_default) VALUES (1, 'NL standaard', 1);
INSERT INTO fin_btwtabelwaarde (fin_btwtabelwaarde_key, fin_btwtabel_key, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc) VALUES(1, 1, '0', 'Nul', 0);
INSERT INTO fin_btwtabelwaarde (fin_btwtabelwaarde_key, fin_btwtabel_key, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc) VALUES(2, 1, 'L', 'Laag', 6);
INSERT INTO fin_btwtabelwaarde (fin_btwtabelwaarde_key, fin_btwtabel_key, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_btwtabelwaarde_perc) VALUES(3, 1, 'H', 'Hoog', 19);

UPDATE fin_factuurregel f
   SET f.fin_btwtabelwaarde_key =
         (SELECT CASE
                   WHEN COALESCE (fr.fin_factuurregel_totaal, 0) = 0
                     OR  (  100
                          * fr.fin_factuurregel_btw
                          / fr.fin_factuurregel_totaal) <= 1
                   THEN 1 -- NL Nul 0%
                   WHEN  (  100
                          * fr.fin_factuurregel_btw
                          / fr.fin_factuurregel_totaal) <= 10
                   THEN 2 -- NL Laag 6%
                   ELSE 3 -- NL Hoog 19%
                 END
            FROM fin_factuurregel fr
           WHERE fr.fin_factuurregel_key = f.fin_factuurregel_key)
 WHERE fin_btwtabelwaarde_key IS NULL;

DEF_MENUITEM(2, 'lcl_menu_fin_btwtabellen'      , '', 'FIN', 'appl/facmgtVB/fin_btwtabelgrid.asp', 0, 0, 'WEB_FINMSU', 'W', '1');
DEF_MENUITEM(2, 'lcl_menu_fin_btwtabelwaarden'  , '', 'FIN', 'appl/facmgtVB/fin_btwtabelwaardegrid.asp', 0, 0, 'WEB_FINMSU', 'W', '1');

-- Default-opties, dus toevoegen. Na lcl_menu_fin_profiel_limieten
INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr
                     )
   SELECT   i.fac_menuitems_key, m.fac_menu_volgnr + 2
     FROM   fac_menuitems i, fac_menu m
    WHERE   i.fac_menuitems_key = (SELECT   mmi.fac_menuitems_key
                                     FROM   fac_menuitems mmi
                                    WHERE   mmi.fac_menuitems_label = 'lcl_menu_fin_btwtabellen')
            AND m.fac_menuitems_key =
                  (SELECT   mm.fac_menuitems_key
                     FROM   fac_menu mm, fac_menuitems mmi
                    WHERE   mm.fac_menuitems_key = mmi.fac_menuitems_key
                            AND mmi.fac_menuitems_label = 'lcl_menu_fin_profiel_limieten');

INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr
                     )
   SELECT   i.fac_menuitems_key, m.fac_menu_volgnr + 4
     FROM   fac_menuitems i, fac_menu m
    WHERE   i.fac_menuitems_key = (SELECT   mmi.fac_menuitems_key
                                     FROM   fac_menuitems mmi
                                    WHERE   mmi.fac_menuitems_label = 'lcl_menu_fin_btwtabelwaarden')
            AND m.fac_menuitems_key =
                  (SELECT   mm.fac_menuitems_key
                     FROM   fac_menu mm, fac_menuitems mmi
                    WHERE   mm.fac_menuitems_key = mmi.fac_menuitems_key
                            AND mmi.fac_menuitems_label = 'lcl_menu_fin_profiel_limieten');

/////////////////////////////////////////////////////////////////////////////////////////// FSN#18717
ALTER TABLE fac_imp_ins ADD prs_perslid_matchcode       VARCHAR2(255);
ALTER TABLE fac_imp_ins ADD prs_perslid_matchwaarde     VARCHAR2(255);
ALTER TABLE fac_imp_ins ADD ins_kenmerkwaarde1          VARCHAR2(255);
ALTER TABLE fac_imp_ins ADD ins_kenmerkwaarde2          VARCHAR2(255);
ALTER TABLE fac_imp_ins ADD ins_kenmerkwaarde3          VARCHAR2(255);
ALTER TABLE fac_imp_ins ADD ins_kenmerkwaarde4          VARCHAR2(255);
ALTER TABLE fac_imp_ins ADD ins_kenmerkwaarde5          VARCHAR2(255);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#18975
ALTER TABLE fac_imp_mld MODIFY mld_stdmelding_kostensoort VARCHAR2(60);

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#18996
ALTER TABLE prs_perslidwerkplek ADD prs_perslidwerkplek_volgnr NUMBER(2);
ALTER TABLE prs_perslid ADD prs_perslid_geslacht NUMBER(1);
ALTER TABLE prs_werkplek MODIFY prs_werkplek_volgnr NUMBER(4);
DEF_FAC_SRTNOT('PRSNEW', 0, 'Contract geregistreerd',  'prs/prs_perslid.asp?prs_key='   , '0', 'perslid');
DEF_FAC_SRTNOT('PRSUPD', 0, 'Contract gewijzigd',      'prs/prs_perslid.asp?prs_key='   , '0', 'perslid');
DEF_FAC_SRTNOT('PRSDEL', 0, 'Contract verwijderd',     'prs/prs_perslid.asp?prs_key='   , '0', 'perslid');


/////////////////////////////////////////////////////////////////////////////////////////// FSN#19006

CREATE_TABLE(fac_imp_factuur, 0)
(
   ordernr          VARCHAR2 (15),
   leveranciernr    VARCHAR2 (20),
   factuurnr        VARCHAR2 (30),
   factuurdatum     VARCHAR2 (10),
   aantal           VARCHAR2 (10),
   kostprijs        VARCHAR2 (15),
   btw              VARCHAR2 (2),
   debiteurnr       VARCHAR2 (30),
   locatie          VARCHAR2 (10),
   afleverdatum     VARCHAR2 (10),
   btw_bedrag       VARCHAR2 (15),
   docid            VARCHAR2 (255),
   omschrijving     VARCHAR2 (60)
);

CREATE INDEX fac_i_imp_factuur1 ON fac_imp_factuur (ordernr);

INSERT INTO fin_factuur_statuses (fin_factuur_statuses_key, fin_factuur_statuses_omschr) VALUES (3,'Ongeldige import');

ALTER TABLE fin_factuur DROP CONSTRAINT fin_c_fin_factuur2;

INSERT INTO fac_import_app
            (fac_import_app_code, fac_import_app_oms,
             fac_import_app_systeem, fac_functie_key
             )
   SELECT 'FACTUUR', 'Standaard import van facturenbestand van leverancier(s)', 1,
          fac_functie_key
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_FINFOF';

ALTER TABLE mld_disc_params
        ADD mld_disc_params_factmatchmode NUMBER(1)
 CONSTRAINT mld_c_disc_params1 CHECK(mld_disc_params_factmatchmode IN (2,3));

ALTER TABLE bes_disc_params
        ADD bes_disc_params_factmatchmode NUMBER(1)
 CONSTRAINT bes_c_disc_params1 CHECK(bes_disc_params_factmatchmode IN (2,3));

/////////////////////////////////////////////////////////////////////////////////////////// FSN#18558

ALTER TABLE mld_disc_params
        ADD mld_disc_params_factuurgrens NUMBER(8);

ALTER TABLE bes_disc_params
        ADD bes_disc_params_factuurgrens NUMBER(8);

ALTER TABLE cnt_disc_params
        ADD cnt_disc_params_factuurgrens NUMBER(8);

/////////////////////////////////////////////////////////////////////////////////////////// FSN#18558
DEF_FAC_FUNCTIE2('WEB_BEZPRK', 'Parkeerplaatsen',            'BEZ',  0, 0,'Om parkeerplaatsen bij bezoekers te kunnen inzien en boeken');
// Om compatibel te blijven krijgt de defaultgroep deze rechten
INSERT INTO fac_groeprechten
            (fac_groep_key,
             fac_functie_key,
             fac_gebruiker_prs_level_read,
             fac_gebruiker_alg_level_read,
             fac_gebruiker_prs_level_write,
             fac_gebruiker_alg_level_write
            )
   SELECT (SELECT fac_groep_key
             FROM fac_groep
            WHERE fac_groep_upper = '_DEFAULT'), fac_functie_key, -1, -1, -1, -1
     FROM fac_functie
    WHERE fac_functie_code='WEB_BEZPRK';


/////////////////////////////////////////////////////////////////////////////////////////// FSN#18613
// Opschonen probleem flexkenmerken
// verwijder alle flexkenmerken die er volgens de definities helemaal niet hadden moeten zijn.
DELETE FROM mld_kenmerkmelding
      WHERE (mld_melding_key, mld_kenmerk_key) IN
                  (SELECT v.mld_melding_key, mld_kenmerk_key
                     FROM mld_kenmerkmelding v
                   MINUS -- degene die er horen te zijn
                   SELECT v.mld_melding_key, v.mld_kenmerk_key
                     FROM mld_kenmerkmelding v,
                          mld_kenmerk vk,
                          mld_melding m,
                          mld_stdmelding s,
                          mld_discipline d
                    WHERE     v.mld_melding_key = m.mld_melding_key
                          AND v.mld_kenmerk_key = vk.mld_kenmerk_key
                          AND s.mld_stdmelding_key = M.mld_stdmelding_key
                          AND s.mld_ins_discipline_key = d.ins_discipline_key
                          AND ( (vk.mld_stdmelding_key = s.mld_stdmelding_key
                                 AND vk.mld_kenmerk_niveau = 'S')
                               OR (vk.mld_stdmelding_key =
                                      s.mld_ins_discipline_key
                                   AND vk.mld_kenmerk_niveau = 'D')
                               OR (vk.mld_stdmelding_key =
                                      d.ins_srtdiscipline_key
                                   AND vk.mld_kenmerk_niveau = 'T')));

/////////////////////////////////////////////////////////////////////////////////////////// FSN#19101
DEF_FAC_SRTNOT('RESDIR', 3, 'Let op: reservering ##KEY## (##DESC##) is ongeldig!', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering');

/////////////////////////////////////////////////////////////////////////////////////////// AADS#18286
CREATE_TABLE(alg_srtruimte_locatiegebouw,0)
(
    alg_srtruimte_lg_key
        NUMBER(10)
        CONSTRAINT alg_k_alg_srtruimte_lg_key PRIMARY KEY,
    alg_srtruimte_key
        NUMBER(10)
        CONSTRAINT alg_r_alg_srtruimte_key2 REFERENCES alg_srtruimte(alg_srtruimte_key) ON DELETE CASCADE
        NOT_NULL(alg_srtruimte_key, alg_r_srtruimte_key1),
    alg_locatie_key
        NUMBER(10)
        CONSTRAINT alg_r_locatie_key3 REFERENCES alg_locatie(alg_locatie_key) ON DELETE CASCADE,
    alg_gebouw_key
        NUMBER(10)
        CONSTRAINT alg_r_alg_gebouw_key3 REFERENCES alg_gebouw(alg_gebouw_key) ON DELETE CASCADE,
    alg_srtruimte_lg_prijs
        NUMBER(11,5),
    alg_srtruimte_lg_prijs2  /* extra kosten, bv servicekosten */
        NUMBER(11,5),
    alg_srtruimte_lg_prijs3  /* extra kosten, bv onderhoud */
        NUMBER(11,5),
    alg_srtruimte_lg_prijs4  /* extra kosten, bv energie */
        NUMBER(11,5),
    alg_srtruimte_lg_prijs5  /* extra kosten, bv belasting */
        NUMBER(11,5),
    CONSTRAINT alg_u_alg_srtruimte_lg UNIQUE(alg_srtruimte_key, alg_locatie_key, alg_gebouw_key),
    CONSTRAINT alg_c_alg_srtruimte_lg CHECK (alg_locatie_key IS NULL OR alg_gebouw_key IS NULL)
);

CREATE SEQUENCE alg_s_alg_srtruimte_lg_key      MINVALUE 1;

CREATE_TRIGGER(alg_t_alg_srtruimte_lg_B_IU)
BEFORE INSERT OR UPDATE ON alg_srtruimte_locatiegebouw
FOR EACH ROW
BEGIN
    UPDATE_PRIMARY_KEY(alg_srtruimte_lg_key, alg_s_alg_srtruimte_lg_key);
END;
/

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#19001
ALTER TABLE prs_perslid
        ADD prs_perslid_ingids NUMBER(1) DEFAULT 1
 CONSTRAINT prs_c_prs_perslid_ingids CHECK(prs_perslid_ingids IS NULL OR prs_perslid_ingids = 1 );

/////////////////////////////////////////////////////////////////////////////////////////// RWSN#18845
UPDATE fac_srtnotificatie SET fac_srtnotificatie_oms= REPLACE(fac_srtnotificatie_oms, '##KEY##', '##OPDRKEY##')
WHERE fac_srtnotificatie_xmlnode = 'opdracht';

/////////////////////////////////////////////////////////////////////////////////////////// FSN#19122
UPDATE fac_functie set fac_functie_min_level=3 WHERE fac_functie_code IN ('WEB_FINFOF', 'WEB_FINBOF');
UPDATE fac_groeprechten SET fac_gebruiker_alg_level_write = fac_gebruiker_prs_level_write,
                            fac_gebruiker_alg_level_read = fac_gebruiker_prs_level_read
 WHERE fac_functie_key IN (SELECT fac_functie_key FROM fac_functie WHERE fac_functie_code IN ('WEB_FINFOF', 'WEB_FINBOF'));

/////////////////////////////////////////////////////////////////////////////////////////// UWVA#19018
INSERT INTO fac_notificatie_job (fac_notificatie_job_view, fac_notificatie_job_oms, fac_notificatie_job_interval, fac_notificatie_job_mode)
     VALUES ('fac_v_noti_finreminder', 'Fiatteringsverzoek voor facturen naar budgethouder', 24, 3);

DEF_FAC_SRTNOT('FININF', 0, 'Factuur goedkeuring vereist',      'fin/fin_search.asp', '1', 'factuur');

/////////////////////////////////////////////////////////////////////////////////////////// AADS#18286
DEF_MENUITEM(2, 'lcl_menu_alg_ruimtetarieven'   , '', 'ALG', 'appl/alg/alg_ruimtefunctie_search.asp', 0, 0, 'WEB_ALGMSU', 'R', '1');
-- Default-optie, dus toevoegen. Na lcl_menu_alg_ruimtefuncties
INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr
                     )
   SELECT   i.fac_menuitems_key, m.fac_menu_volgnr + 5
     FROM   fac_menuitems i, fac_menu m
    WHERE   i.fac_menuitems_key = (SELECT   mmi.fac_menuitems_key
                                     FROM   fac_menuitems mmi
                                    WHERE   mmi.fac_menuitems_label = 'lcl_menu_alg_ruimtetarieven')
            AND m.fac_menuitems_key =
                  (SELECT   mm.fac_menuitems_key
                     FROM   fac_menu mm, fac_menuitems mmi
                    WHERE   mm.fac_menuitems_key = mmi.fac_menuitems_key
                            AND mmi.fac_menuitems_label = 'lcl_menu_alg_ruimtefuncties');
COMMIT;
///////////////////////////////////////////////////////////////////////////////////////////
REGISTERONCE('$Workfile: DB7to8.src $','$Revision$')
#include "epilogue.inc"
