#ifdef  RES // 07-12-99 BIV
/*
 * $Revision$
 * $Id$
 */

CREATE_TABLE (res_disc_params,0)
(
  res_disc_params_key          NUMBER(10),
  res_ins_discipline_key       NUMBER(10),
  res_disc_params_preposttime  NUMBER(5,2)      DEFAULT 0,
  res_disc_params_notify       NUMBER(2)        DEFAULT 1,
  res_disc_params_bonotify     NUMBER(2)        DEFAULT 0,
  res_disc_params_kosten       NUMBER(3)        DEFAULT 100,         /* Hoeveel van de kosten worden doorbelast in procenten */
  res_disc_params_noti_dagen   NUMBER(2),                            /* aantal dagen voor/achteraf voor reminder */
  res_disc_params_expire_dagen NUMBER(3)        DEFAULT 1 NOT NULL,  /* aantal (hele) dagen vooraf waarna niet meer mag worden gewijzigd */
  res_disc_params_expire_tijd  NUMBER(5,2),                          /* grenstijdstip van de dag voor die freeze (bv 16.5) */
  res_disc_params_expire_wkdag NUMBER(1),                            /* grensweekdag (getweekdaynum, 1-7) voor die freeze (zodat je bv donderdag 17.00 kunt configureren) */
  res_disc_params_cancel_dagen NUMBER(3)        DEFAULT 1 NOT NULL,  /* aantal (hele) dagen vooraf waarna niet meer kostenloos mag worden gennuleerd/verwijderd */
  res_disc_params_remoteurl    VARCHAR2(512),                        /* URL van remote (FACILITOR-) service voor vergaderzalen van andere accounts  */
  res_disc_params_maxduur      NUMBER(5,2)      DEFAULT 0,
  res_disc_params_min_duur     NUMBER(4,2)      DEFAULT 0 NOT NULL,
  res_disc_params_min_deelnmrs NUMBER(5)        DEFAULT 0 NOT NULL,
  res_disc_params_threshold    NUMBER(11,2)     DEFAULT 9999999 NOT NULL,
  res_disc_params_intervals    VARCHAR(2000 CHAR),                   /* Optioneel: JSON-structured intervallen */
  prs_bedrijf_key              NUMBER(10),                           /* Optioneel: de leverancier van deze catalogus */
  res_disc_params_edit_option  NUMBER(1)        DEFAULT 0 NOT NULL,
  CONSTRAINT res_c_ins_discipline_key CHECK (res_ins_discipline_key IS NOT NULL),
  CONSTRAINT res_k_res_disc_params_key PRIMARY KEY (res_disc_params_key),
  CONSTRAINT res_r_ins_discipine_key FOREIGN KEY (res_ins_discipline_key)
    REFERENCES ins_tab_discipline (ins_discipline_key),
  CONSTRAINT res_r_prs_bedrijf_key FOREIGN KEY (prs_bedrijf_key)
    REFERENCES prs_bedrijf (prs_bedrijf_key),
  CONSTRAINT res_c_disc_preposttime CHECK (res_disc_params_preposttime IS NOT NULL),
  CONSTRAINT res_c_bonotify CHECK (res_disc_params_bonotify IS NOT NULL)
);

CREATE_TABLE(res_ruimte,0)
(
  res_ruimte_key
    NUMBER(10)
    CONSTRAINT res_k_res_ruimte_key PRIMARY KEY,
  res_ruimte_nr
    VARCHAR2(40)
    NOT_NULL(res_ruimte_nr, res_c_res_ruimte_nr),
  res_ruimte_upper
    VARCHAR2(40)
    NOT_NULL(res_ruimte_upper, res_c_res_ruimte_upper),
  res_ruimte_omschrijving
    VARCHAR2(1000),
  res_ruimte_volgnummer
    NUMBER(3),
  res_ruimte_minbezoekers
    NUMBER(5)
    DEFAULT 0
    NOT_NULL(res_ruimte_minbezoekers, res_c_ruimte_minbezoekers),
  res_ruimte_info_url
    VARCHAR2(1000),
  res_ruimte_image
    VARCHAR2(255),
  res_ruimte_friendlyname
    VARCHAR2(40),
  res_ruimte_prijs
    NUMBER(7,2),
  res_ruimte_intprijs
    NUMBER(7,2),
  res_ruimte_prijs_vast
    NUMBER(1)
    DEFAULT 0
    CONSTRAINT res_c_res_ruimte_prijs_vast1 CHECK(res_ruimte_prijs_vast IN (0,1)),
  res_ruimte_prijs_ochtend
    NUMBER(7,2),
  res_ruimte_prijs_middag
    NUMBER(7,2),
  res_ruimte_prijs_avond
    NUMBER(7,2),
  res_ruimte_prijs_dag
    NUMBER(7,2),
  res_ruimte_intprijs_ochtend
    NUMBER(7,2),
  res_ruimte_intprijs_middag
    NUMBER(7,2),
  res_ruimte_intprijs_avond
    NUMBER(7,2),
  res_ruimte_intprijs_dag
    NUMBER(7,2),
  res_ruimte_prijsfactor_intern     /* optionele overrule van de setting */
    NUMBER(5,3),
  res_ruimte_begintijd
    NUMBER(5,2)
    CONSTRAINT res_c_ruimte_begintijd CHECK(res_ruimte_begintijd>=0 AND res_ruimte_begintijd<24),
  res_ruimte_eindtijd
    NUMBER(5,2)
    CONSTRAINT res_c_ruimte_eindtijd CHECK(res_ruimte_eindtijd>=0 AND res_ruimte_eindtijd<24),
  res_ruimte_begintijdblok
    NUMBER(5,2)
    CONSTRAINT res_c_ruimte_begintijdblok CHECK(res_ruimte_begintijdblok>=0 AND res_ruimte_begintijdblok<24),
  res_ruimte_eindtijdblok
    NUMBER(5,2)
    CONSTRAINT res_c_ruimte_eindtijdblok CHECK(res_ruimte_eindtijdblok>=0 AND res_ruimte_eindtijdblok<24),
  res_ruimte_min_duur
    NUMBER(5,2),
  res_discipline_key NUMBER(10)
    CONSTRAINT res_c_res_ruimte_dis_key CHECK(res_discipline_key IS NOT NULL)
    CONSTRAINT res_c_res_ruimte_discipline REFERENCES ins_tab_discipline(ins_discipline_key),
  res_ruimte_groep /* cluster ruimtes bij elkaar bij bv 1 wachtruimte */
    VARCHAR2(40),
/* defined in BEZ_TAB.src:
  bez_actie_key
    NUMBER(10)
    REFERENCES bez_actie(bez_actie_key), */
  res_ruimte_vervaldatum
    DATE,
  res_ruimte_startdatum
    DATE,
  res_ruimte_aanmaak
    DATE
    DEFAULT SYSDATE,
  res_ruimte_verwijder
    DATE
    DEFAULT NULLDATUM,
  res_status_fo_key
    NUMBER(2)
    CONSTRAINT res_c_res_status_fo2 CHECK(res_status_fo_key IN (1,2,3,4)),
  res_ruimte_extern_id
    VARCHAR2(256),
  res_ruimte_externsyncdate
    DATE,
  res_ruimte_extern_flags
    NUMBER (10)
    DEFAULT 0
    NOT NULL,
  res_ruimte_graphhooksecret
    VARCHAR2(128),
  res_ruimte_extern_meeting
    NUMBER(4)
    DEFAULT 0
    NOT_NULL(res_ruimte_extern_meeting, res_c_ruimte_extern_meeting),
  res_ruimte_cv
    NUMBER(1)
    DEFAULT 0
    NOT NULL
    CONSTRAINT res_c_res_ruimte_cv CHECK(res_ruimte_cv IN (0,1)),
  res_ruimte_limiet          /* Optional overrule of Setting res_reservering_limiet (days) */
    NUMBER(3),
  CONSTRAINT res_u_res_ruimte_upper UNIQUE(res_ruimte_upper, res_ruimte_verwijder)
);

CREATE_TABLE(res_ruimte_sync,0)
(
  res_ruimte_key
    NUMBER(10),
  res_ruimte_syncstate
    CLOB,
  res_ruimte_syncdate
    DATE
);

CREATE_TABLE(res_alg_ruimte,0)
(
  res_alg_ruimte_key
    NUMBER(10)
    CONSTRAINT res_k_alg_ruimte_key PRIMARY KEY,
  res_ruimte_key
    NUMBER(10)
    NOT_NULL(res_ruimte_key, res_c_res_ruimte_key)
    CONSTRAINT res_r_res_ruimte_key REFERENCES res_ruimte(res_ruimte_key),
  alg_ruimte_key
    NUMBER(10)
    NOT_NULL(alg_ruimte_key, res_c_alg_ruimte_key)
    CONSTRAINT res_r_alg_ruimte_key REFERENCES alg_ruimte(alg_ruimte_key),
  res_alg_ruimte_aanmaak
    DATE
    DEFAULT SYSDATE,
  res_alg_ruimte_verwijder
    DATE
    DEFAULT NULLDATUM,
  CONSTRAINT res_u_alg_ruimte_key UNIQUE(res_ruimte_key, alg_ruimte_key, res_alg_ruimte_verwijder)
);


CREATE_TABLE(res_opstelling, 0)
(
  res_opstelling_key
    NUMBER(10)
    CONSTRAINT res_k_res_opstelling_key PRIMARY KEY,
  res_opstelling_omschrijving
    VARCHAR2(30)
    NOT_NULL(res_opstelling_omschrijving, res_c_res_opstelling_omschr),
  res_opstelling_upper
    VARCHAR2(30)
    NOT_NULL(res_opstelling_upper, res_c_res_opstelling_upper),
  res_opstelling_volgnr
    NUMBER(5),
  res_opstelling_aanmaak
    DATE
    DEFAULT SYSDATE,
  res_opstelling_verwijder
    DATE
    DEFAULT NULLDATUM,
  CONSTRAINT res_u_res_opstelling_upper UNIQUE(res_opstelling_upper, res_opstelling_verwijder)
);


CREATE_TABLE(res_ruimte_opstelling, 0)
( res_ruimte_opstel_key
    NUMBER(10)
    CONSTRAINT res_k_res_ruimte_opstel_key PRIMARY KEY
, res_ruimte_key
    NUMBER(10)
    NOT_NULL(res_ruimte_key, res_c_res_ruimte_key2)
    CONSTRAINT res_r_res_ruimte_key2 REFERENCES res_ruimte(res_ruimte_key)
, res_opstelling_key
    NUMBER(10)
    NOT_NULL(res_opstelling_key, res_c_res_opstelling_key2)
    CONSTRAINT res_r_res_ruimte_opstel_key REFERENCES res_opstelling(res_opstelling_key)
, res_ruimte_opstel_bezoekers
    NUMBER(5)
    NOT_NULL(res_ruimte_opstel_bezoekers, res_c_res_ruimte_bezoekers)
, res_ruimte_opstel_default
    NUMBER(1)
, res_ruimte_opstel_tijd
    NUMBER(5,2) DEFAULT 0 NOT NULL
, res_ruimte_opstel_image
    VARCHAR2(255)
, res_ruimte_opstel_aanmaak
    DATE
    DEFAULT SYSDATE  /* column initially not present, date not real for pre-DB26*/
, res_ruimte_opstel_verwijder
    DATE
,  CONSTRAINT res_u_res_ruimte_opstel_key UNIQUE(res_ruimte_key, res_opstelling_key, res_ruimte_opstel_verwijder)
);


CREATE_TABLE(res_deel, 0)
( res_deel_key
    NUMBER(10)
    CONSTRAINT res_k_res_deel_key PRIMARY KEY
, res_ins_deel_key
    NUMBER(10)
    CONSTRAINT res_r_res_ins_deel_key REFERENCES ins_deel(ins_deel_key)
, res_prs_perslid_key
    NUMBER(10)
    CONSTRAINT res_r_res_prs_perslid_key REFERENCES prs_perslid(prs_perslid_key)
, res_deel_eenheid
    VARCHAR2(10)
, res_deel_prijs
    NUMBER(7,2)
, res_deel_prijs_vast
    NUMBER(1)
    DEFAULT 0
    CONSTRAINT res_c_res_deel_prijs_vast1 CHECK(res_deel_prijs_vast IN (0,1))
, res_deel_opmerking
    VARCHAR2(2000)
, res_deel_bulkreserveerbaar NUMBER(1) DEFAULT(0) NOT NULL
    CONSTRAINT res_c_res_deel_bulkrsveerbaar CHECK(res_deel_bulkreserveerbaar IN (0,1))
, res_discipline_key
    NUMBER(10)
    NOT_NULL(res_discipline_key, res_c_res_deel_dis_key)
    CONSTRAINT res_c_res_deel_discipline REFERENCES ins_tab_discipline(ins_discipline_key)
, res_deel_alg_level
    NUMBER(1)
    NOT_NULL(res_deel_alg_level, res_c_res_deel_alg_level)
, res_deel_vervaldatum
    DATE
, res_deel_startdatum
    DATE
, res_deel_aanmaak
    DATE
    DEFAULT SYSDATE
, res_deel_verwijder
    DATE
    DEFAULT NULLDATUM
, res_deel_omschrijving
    VARCHAR2(60)
    NOT_NULL(res_deel_omschrijving, res_c_res_deel_omschrijving)
, res_deel_image
    VARCHAR2(255)
, res_deel_beschikbaar_bits /* Day of week (dow) beschikbaarheid (default alle dagen van de week) */
    NUMBER(4)
    DEFAULT 127
    NOT NULL
, res_deel_externnr
    VARCHAR2(256)
, res_deel_externsyncdate
    DATE
,   CONSTRAINT res_c_deelperslid_key CHECK((res_ins_deel_key IS NOT NULL AND res_prs_perslid_key IS NULL) OR (res_ins_deel_key IS NULL AND res_prs_perslid_key IS NOT NULL))
);



CREATE_TABLE(res_artikel, 0)
( res_artikel_key
    NUMBER(10)
    CONSTRAINT res_k_res_artikel_key PRIMARY KEY
, res_discipline_key
    NUMBER(10)
    CONSTRAINT res_c_res_artikel_dis_key CHECK(res_discipline_key IS NOT NULL)
    CONSTRAINT res_c_res_artikel_discipline REFERENCES ins_tab_discipline(ins_discipline_key)
, res_artikel_nr
    VARCHAR2(10)
, res_artikel_omschrijving
    VARCHAR2(40)
, res_artikel_eenheid
    VARCHAR2(10)
, res_artikel_prijs
    NUMBER(7,2)
, res_artikel_prijs_vast
    NUMBER(1)
    DEFAULT 0
    CONSTRAINT res_c_res_artikel_prijs_vast CHECK(res_artikel_prijs_vast IS NOT NULL)
    CONSTRAINT res_c_res_artikel_prijs_vast1 CHECK(res_artikel_prijs_vast IN (0,1))
, res_artikel_inkoopprijs
    NUMBER(7,2)
, res_artikel_kostenpersoneel
    NUMBER(7,2)
, res_artikel_kostenalgemeen
    NUMBER(7,2)
, res_artikel_btw
    NUMBER(5,3)
, res_artikel_opmerking
    VARCHAR2(2000)
, res_artikel_image
    VARCHAR2(255)
, res_artikel_groep
    VARCHAR2(10)
, res_artikel_default
    NUMBER(1)
, res_artikel_volgnummer
    NUMBER(3)
, res_artikel_minimum  /* zoveel moet je er minimaal bestellen */
    NUMBER(3)
, res_artikel_flags  /* voor eigenschappen als meervoudig (1) en future extensions */
    NUMBER(1)
    DEFAULT 0
    CONSTRAINT res_c_res_artikel_flags1 CHECK(res_artikel_flags IN (0,1))
, res_artikel_begintijd
    NUMBER(5,2)
    CONSTRAINT res_c_artikel_begintijd CHECK(res_artikel_begintijd >= 0 AND res_artikel_begintijd < 24)
, res_artikel_eindtijd
    NUMBER(5,2)
    CONSTRAINT res_c_artikel_eindtijd CHECK(res_artikel_eindtijd >= 0 AND res_artikel_eindtijd < 24)
, res_artikel_ingangsdatum
    DATE
, res_artikel_vervaldatum
    DATE
, res_artikel_startdatum
    DATE
, res_artikel_aanmaak
    DATE
    DEFAULT SYSDATE
, res_artikel_verwijder
    DATE
    DEFAULT NULLDATUM
, res_artikel_externnr
    VARCHAR2(256)
, res_artikel_externsyncdate
    DATE
, res_artikel_vrije_omschrijving
    NUMBER(1)
    DEFAULT(0) NOT NULL
);

CREATE_TABLE(res_arrangement,0)
(
    res_arrangement_key
        NUMBER(10)
        PRIMARY KEY
,   res_arrangement_omschrijving
        VARCHAR2(60)
        CONSTRAINT res_c_res_arrangement_omschr CHECK(res_arrangement_omschrijving IS NOT NULL)
,   res_arrangement_opmerking
        VARCHAR2(4000)
);

CREATE_TABLE(res_arrangement_artikel, 0)
(  res_arrangement_artikel_key
      NUMBER(10)
      PRIMARY KEY
,  res_arrangement_key
      NUMBER(10)
      CONSTRAINT res_c_res_arrangement_key CHECK(res_arrangement_key IS NOT NULL)
      CONSTRAINT res_c_res_arrangement REFERENCES res_arrangement(res_arrangement_key)
,  res_artikel_key
      NUMBER(10)
      CONSTRAINT res_c_res_arrangement_art_key CHECK(res_artikel_key IS NOT NULL)
      CONSTRAINT res_c_res_arrangement_artikel REFERENCES res_artikel(res_artikel_key)
);

CREATE_TABLE(res_srtactiviteit, 0)
( res_srtactiviteit_key
    NUMBER(10)
    CONSTRAINT res_k_res_srtactiviteit_key PRIMARY KEY
, res_srtactiviteit_omschrijving
    VARCHAR2(30)
    CONSTRAINT res_c_res_activiteit_oms CHECK(res_srtactiviteit_omschrijving IS NOT NULL)
, res_srtactiviteit_opmerking
    VARCHAR2(2000)
, res_srtactiviteit_prefix
    VARCHAR2(3)
, res_srtactiviteit_kostenklant
    NUMBER(1)
, res_srtactiviteit_kpnverplicht
    NUMBER(1) DEFAULT(0) /* 0=optioneel, 1=verplicht, 2=niet tonen */
    CONSTRAINT res_c_srtactiviteit_kpn CHECK(res_srtactiviteit_kpnverplicht IN (0,1,2))
, res_srtactiviteit_anonym
    NUMBER(1) DEFAULT(0)
    CONSTRAINT res_c_srtactiviteit_anonym CHECK(res_srtactiviteit_anonym IN (0,1,2))
, res_srtactiviteit_metomschr
    NUMBER(1) DEFAULT(1) /* 0=niet tonen, 1=tonen */
    CONSTRAINT res_c_srtactiviteit_metomschr CHECK(res_srtactiviteit_metomschr IN (0,1))
, res_srtactiviteit_metopmerk /* was setting res_hide_remark */
    NUMBER(1) DEFAULT(1) /* 0=niet tonen, 1=tonen */
    CONSTRAINT res_c_srtactiviteit_metopmerk CHECK(res_srtactiviteit_metopmerk IN (0,1))
, res_srtactiviteit_metaantal
    NUMBER(1) DEFAULT(1) /* 0=niet tonen, 1=tonen */
    CONSTRAINT res_c_srtactiviteit_metaantal CHECK(res_srtactiviteit_metaantal IN (0,1))
, res_srtactiviteit_aanmaak
    DATE
    DEFAULT SYSDATE
, res_srtactiviteit_verwijder
    DATE
    DEFAULT NULLDATUM
, res_srtactiviteit_soort
    NUMBER(1)
,   CONSTRAINT res_u_res_activiteit_omsch UNIQUE(res_srtactiviteit_omschrijving, res_srtactiviteit_verwijder, res_srtactiviteit_soort)
);

CREATE_TABLE(res_activiteit, 0)
( res_activiteit_key
    NUMBER(10)
    CONSTRAINT res_k_res_activiteit_key PRIMARY KEY
, res_activiteit_omschrijving
    VARCHAR2(50)
    CONSTRAINT res_c_res_activiteit_omschr CHECK(res_activiteit_omschrijving IS NOT NULL)
, res_activiteit_upper
    VARCHAR2(50)
, res_activiteit_duur   /* default tijdsduur van deze activiteit */
    NUMBER(5,2)
    DEFAULT 2
, res_activiteit_volgnr
    NUMBER(3)
, res_activiteit_omsverplicht  /* is res_rsv_ruimte_omschrijving verplicht */
    NUMBER(1) DEFAULT(0)
    CONSTRAINT res_c_activiteit_oms CHECK(res_activiteit_omsverplicht IN (0,1))
, res_activiteit_aantalverplicht  /* is res_rsv_ruimte_bezoekers verplicht */
    NUMBER(1) DEFAULT(0)
    CONSTRAINT res_c_activiteit_aantal CHECK(res_activiteit_aantalverplicht IN (0,1,2))
, res_activiteit_posttime
    NUMBER(5,2) DEFAULT 0 NOT NULL
, res_activiteit_aanmaak
    DATE
    DEFAULT SYSDATE
, res_activiteit_verwijder
    DATE
    DEFAULT NULLDATUM
, res_srtactiviteit_key
    NUMBER(10)
    CONSTRAINT res_r_res_srtactiviteit_key REFERENCES res_srtactiviteit(res_srtactiviteit_key)
, res_activiteit_notfrontend
    NUMBER(1) DEFAULT (0) NOT NULL
    CONSTRAINT res_c_res_activiteit_notfe CHECK (res_activiteit_notfrontend IN (0,1))
, res_activiteit_meteindtijd
    NUMBER(1) DEFAULT 1
    CONSTRAINT res_c_res_activiteit_meteind CHECK(res_activiteit_meteindtijd IS NOT NULL)
, res_activiteit_cvab_mode
    NUMBER(1)
    CONSTRAINT res_c_res_activiteit_cvab_mode CHECK(res_activiteit_cvab_mode IN (0,1,2,3))
,  res_activiteit_intervals                           /* Optional: JSON-structured intervals */
    VARCHAR(2000 CHAR)
,  res_activiteit_limiet       /* Optional overrule of Setting res_reservering_limiet (days) */
     NUMBER(3)
,  res_activiteit_limiet_fe /* Optional overrule of Setting res_fe_reservering_limiet (days) */
     NUMBER(3)
,  res_activiteit_ismaster
    NUMBER (1)
    DEFAULT 0 NOT NULL
,  res_activiteit_master_key
    NUMBER (10)
    CONSTRAINT res_r_res_activiteit_key2 REFERENCES res_activiteit(res_activiteit_key)
,  res_activiteit_image
    VARCHAR2(255)
,  res_activiteit_color
    VARCHAR2(60 CHAR)
, CONSTRAINT res_u_res_activiteit_upper UNIQUE(res_activiteit_upper, res_activiteit_verwijder, res_srtactiviteit_key)
);

CREATE_TABLE(res_reservering,0)
(
  res_reservering_key
    NUMBER(10)
    CONSTRAINT res_k_res_reservering_key PRIMARY KEY,
  res_reservering_aanmaak
    DATE
    DEFAULT SYSDATE,
  res_reservering_ispool
    NUMBER(1)
    DEFAULT 0 NOT NULL,
  mld_melding_key  /* optional reference to (initiating) parent */
    NUMBER(10)
    CONSTRAINT mld_r_mld_melding_key6 REFERENCES mld_melding ON DELETE SET NULL,
  res_reservering_verwijder
    DATE
    DEFAULT NULLDATUM,
  res_reservering_externnr
    VARCHAR2(256),
  res_reservering_externsyncdate
    DATE
);


CREATE_TABLE(res_rsv_ruimte, 0)
( res_rsv_ruimte_key
    NUMBER(10)
    CONSTRAINT res_k_res_rsv_ruimte_key PRIMARY KEY
, res_reservering_key
    NUMBER(10)
    NOT_NULL(res_reservering_key, res_c_res_reservering_key2)
    CONSTRAINT res_c_res_reservering_key3 REFERENCES res_reservering(res_reservering_key)
, res_rsv_ruimte_volgnr
    NUMBER(5)
, res_rsv_ruimte_opmerking
    VARCHAR2(2000)
, res_rsv_ruimte_omschrijving
    VARCHAR2(60)
, res_rsv_ruimte_ordernr
    VARCHAR2(30)
, prs_kostenplaats_key
    NUMBER(10)
    CONSTRAINT res_r_prs_kostenplaats_key2 REFERENCES prs_kostenplaats(prs_kostenplaats_key)
, res_rsv_ruimte_kosten_klant
        NUMBER(1)
        CONSTRAINT res_c_res_kosten_klant CHECK(res_rsv_ruimte_kosten_klant IS NULL
                                             OR res_rsv_ruimte_kosten_klant = 1)
, res_rsv_ruimte_contact_key
    NUMBER(10)
    CONSTRAINT res_r_rsv_ruimte_usr_key2 REFERENCES prs_perslid(prs_perslid_key)
, res_rsv_ruimte_host_key
    NUMBER(10)
    CONSTRAINT res_r_rsv_ruimte_usr_key3 REFERENCES prs_perslid(prs_perslid_key)
, res_rsv_ruimte_telefoon
    VARCHAR2(15)
, alg_ruimte_key NUMBER(10)
    CONSTRAINT res_c_alg_ruimte_key4 REFERENCES alg_ruimte(alg_ruimte_key)
, res_ruimte_opstel_key
    NUMBER(10)
    CONSTRAINT res_r_res_ruimte_opstel_key2 REFERENCES res_ruimte_opstelling(res_ruimte_opstel_key)
, CONSTRAINT res_c_alg_ruimte_or_opstel CHECK (res_ruimte_opstel_key IS NOT NULL OR alg_ruimte_key IS NOT NULL OR mld_opdr_key IS NOT NULL)
, res_rsv_ruimte_cvab_mode  /* 0=afhalen; 1=bezorgen (alg_ruimte bevat res_deel records); null=weetniet, +2=vast  */
    NUMBER(1)
, res_activiteit_key
    NUMBER(10)
    CONSTRAINT res_c_res_activiteit_key2 REFERENCES res_activiteit(res_activiteit_key)
, res_rsv_ruimte_van
    DATE
    NOT_NULL(res_rsv_ruimte_van, res_c_res_rsv_ruimte_van)
, res_rsv_ruimte_van_actual
    DATE
, res_rsv_ruimte_tot
    DATE
    NOT_NULL(res_rsv_ruimte_tot, res_c_res_rsv_ruimte_tot)
, res_rsv_ruimte_tot_actual /* als deze af blijkt te wijken (bv noshow) */
    DATE
, res_rsv_ruimte_bezoekers
    NUMBER(5)
    CONSTRAINT res_c_res_rsv_ruimte_bez CHECK((res_rsv_ruimte_bezoekers IS NULL) OR (res_rsv_ruimte_bezoekers > 0))
, res_rsv_ruimte_bezoekers_shown
    NUMBER(5)
    CONSTRAINT res_c_rsv_ruimte_bez_shown CHECK((res_rsv_ruimte_bezoekers_shown IS NULL) OR (res_rsv_ruimte_bezoekers_shown >= 0))
, res_rsv_ruimte_prijs  /* prijs van de ruimte voor deze deelreservering (zonder korting) */
    NUMBER(9,2)
    CONSTRAINT res_c_res_rsv_ruimte_prijs CHECK((res_rsv_ruimte_prijs >= 0) or (res_rsv_ruimte_prijs IS NULL))
, res_rsv_ruimte_korting  /* Korting op de gehele deelreservering */
    NUMBER(9,2)
    CONSTRAINT res_c_res_rsv_ruimte_korting CHECK(res_rsv_ruimte_korting >= 0)
, res_rsv_ruimte_totaal  /* Afgesproken totaal, meestal leeg */
    NUMBER(9,2)
, res_status_bo_key
    NUMBER(2)
    CONSTRAINT res_c_res_status_bo1 CHECK(res_status_bo_key IN (2,5,6))
, res_status_fo_key
    NUMBER(2)
    CONSTRAINT res_c_res_status_fo1 CHECK(res_status_fo_key IN (1,2,3,4))
, res_rsv_ruimte_noshow
    NUMBER(1)
    CONSTRAINT res_c_res_rsv_ruimte_noshow CHECK((res_rsv_ruimte_noshow = 0) OR (res_rsv_ruimte_noshow = 1))
, mld_opdr_key
    NUMBER(10)
    CONSTRAINT res_r_mld_opdr1 REFERENCES mld_opdr(mld_opdr_key)
, 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
, res_rsv_ruimte_aanmaak
    DATE
    DEFAULT SYSDATE
, res_rsv_ruimte_verwijder
    DATE
    DEFAULT NULLDATUM
, res_rsv_ruimte_dirtlevel
    NUMBER(4)
    DEFAULT 0
, res_rsv_ruimte_kto_verstuurd
    DATE
, res_rsv_ruimte_satisfaction
    NUMBER(2)
, res_rsv_ruimte_satisfaction_op
    VARCHAR2(2000)
, CONSTRAINT res_c_res_rsv_ruimte_van_tot CHECK((res_ruimte_opstel_key IS NOT NULL AND res_rsv_ruimte_van < res_rsv_ruimte_tot) OR (res_ruimte_opstel_key IS NULL AND res_rsv_ruimte_van <= res_rsv_ruimte_tot))
, CONSTRAINT res_c_res_ruimte_activ_key CHECK (res_activiteit_key IS NOT NULL)
, CONSTRAINT res_c_res_ruimte_voorziening CHECK ((res_ruimte_opstel_key IS NOT NULL
                                             OR (    res_ruimte_opstel_key IS NULL
                                                 AND res_rsv_ruimte_prijs IS NULL
                                                 AND res_status_bo_key IS NULL
                                                 )))
, res_rsv_ruimte_flag
    NUMBER(1)
, res_rsv_ruimte_afgerond
    NUMBER(1)
    DEFAULT 0
    CONSTRAINT res_c_res_rsv_ruimte_afgerond CHECK(res_rsv_ruimte_afgerond IS NOT NULL)
    CONSTRAINT res_c_res_rsv_ruimte_afgerond1 CHECK(res_rsv_ruimte_afgerond IN (0,1))
, res_rsv_ruimte_externnr    /* voor koppelingen met externe systemen */
    VARCHAR2(1000)
, res_rsv_ruimte_externnr2   /* voor koppelingen met externe systemen */
    VARCHAR2(1000)
, res_rsv_ruimte_externsyncdate
    DATE
, res_rsv_ruimte_extern_meeting
    NUMBER(4)
    DEFAULT 0
    NOT_NULL(res_rsv_ruimte_extern_meeting, res_c_rsv_extern_meeting)
, res_rsv_ruimte_visibility -- 0=Private, 1=Normal
    NUMBER(4)
    DEFAULT 1
    NOT NULL
, res_rsv_ruimte_teverzenden -- 1=nieuw 2=update
    NUMBER(1)
    DEFAULT 0
    NOT NULL
, res_rsv_ruimte_verzonden
    DATE
, res_rsv_ruimte_cat_appr    /* Catalogus artikelen dienen gefiatteerd te worden 0=Nee, 1=Ja */
    NUMBER(1)
    DEFAULT 0
    NOT NULL
    CONSTRAINT res_c_res_rsv_ruimte_cat_appr CHECK(res_rsv_ruimte_cat_appr IN (0,1))
);

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

CREATE_TABLE(res_rsv_deel, 0)
(  res_rsv_deel_key
     NUMBER(10)
     CONSTRAINT res_k_res_rsv_deel_key PRIMARY KEY
,  res_deel_key
     NUMBER(10)
     NOT_NULL(res_deel_key, res_c_res_rsvd_deel_key)
     CONSTRAINT res_r_res_rsvd_deel_key REFERENCES res_deel(res_deel_key)
,  res_rsv_deel_aantal
     NUMBER(5)
     NOT_NULL(res_rsv_deel_aantal, res_c_res_rsv_deel_aantal)
/* in BEZ_TAB.src:
,  bez_bezoekers_key
     NUMBER(10)
     REFERENCES bez_bezoekers(bez_bezoekers_key) ON DELETE CASCADE */
,  res_status_bo_key
     NUMBER(2)
     DEFAULT 2
     CONSTRAINT res_c_res_status_bo2 CHECK(res_status_bo_key IN (2,5,6))
,  res_rsv_ruimte_key NUMBER(10)
     CONSTRAINT res_c_res_rsv_ruimte_key REFERENCES res_rsv_ruimte(res_rsv_ruimte_key) ON DELETE CASCADE
,  res_rsv_deel_van
     DATE
,  res_rsv_deel_tot
     DATE
,  res_rsv_deel_prijs
     NUMBER(9,2)
     CONSTRAINT res_c_res_rsv_deel_prijs CHECK((res_rsv_deel_prijs >= 0) or (res_rsv_deel_prijs IS NULL))
,  res_rsv_deel_afgemeld
     DATE
,  res_rsv_deel_verwerkt
     DATE
,  res_rsv_deel_aanmaak
     DATE
     DEFAULT SYSDATE
,  res_rsv_deel_mutatie
     DATE
,  res_rsv_deel_verwijder
     DATE
     DEFAULT NULLDATUM
, res_rsv_deel_dirtlevel
    NUMBER(4)
    DEFAULT 0
/* defined in BEZ_TAB.src:
,  CONSTRAINT res_c_res_deel_ruimte
      CHECK (res_rsv_ruimte_key IS NOT NULL OR bez_bezoekers_key IS NOT NULL)
*/
,  res_rsv_deel_geleverd
    DATE
, res_rsv_deel_externnr
    VARCHAR2(256)
, res_rsv_deel_externsyncdate
    DATE
);

ALTER TABLE ins_deel ADD res_rsv_deel_key
      NUMBER(10)
      CONSTRAINT ins_r_res_rsv_deel_key
      REFERENCES res_rsv_deel (res_rsv_deel_key)
      ON DELETE SET NULL;

CREATE_TABLE(res_rsv_artikel, 0)
(  res_rsv_artikel_key
     NUMBER(10)
     CONSTRAINT res_k_res_rsv_artikel_key PRIMARY KEY
,  res_artikel_key
     NUMBER(10)
     NOT_NULL(res_artikel_key, res_c_res_rsva_artikel_key)
     CONSTRAINT res_r_res_rsva_artikel_key REFERENCES res_artikel(res_artikel_key)
,  res_rsv_artikel_aantal
     NUMBER(5)
     NOT_NULL(res_rsv_artikel_aantal, res_c_res_rsv_artikel_aantal)
,  res_rsv_artikel_levering
     DATE
,  res_status_bo_key
     NUMBER(2)
     DEFAULT 2
     CONSTRAINT res_c_res_status_bo3 CHECK(res_status_bo_key IN (2,5,6))
,  res_rsv_ruimte_key NUMBER(10)
     CONSTRAINT res_c_res_rsv_ruimte_key2 REFERENCES res_rsv_ruimte(res_rsv_ruimte_key) ON DELETE CASCADE
     NOT_NULL(res_rsv_ruimte_key, res_c_res_artikel_ruimte)
,  res_rsv_artikel_prijs
     NUMBER(9,2)
,  res_rsv_artikel_afgemeld
     DATE
,  res_rsv_artikel_verwerkt
     DATE
,  res_rsv_artikel_aanmaak
     DATE
     DEFAULT SYSDATE
,  res_rsv_artikel_mutatie
     DATE
,  res_rsv_artikel_verwijder
     DATE
     DEFAULT NULLDATUM
, res_rsv_artikel_dirtlevel
    NUMBER(4)
    DEFAULT 0
, res_rsv_artikel_inkoopprijs
    NUMBER(7,2)
, res_rsv_artikel_btw
    NUMBER(5,3)
, res_rsv_artikel_approved    /* 0=Niet gefiatteerd, 1=Goedgekeurd, 2=Afgewezen */
    NUMBER(1)
    DEFAULT 1
    NOT NULL
    CONSTRAINT res_c_res_rsv_artikel_approved CHECK(res_rsv_artikel_approved IN (0,1,2))
, res_rsv_artikel_geleverd
    DATE
, res_rsv_artikel_afhalen
    DATE
, res_rsv_artikel_externnr
    VARCHAR2(256)
, res_rsv_artikel_externsyncdate
    DATE
, res_rsv_artikel_omschrijving
    VARCHAR2(40)
);


CREATE_TABLE(res_cyclus, 0)
(  res_cyclus_key
     NUMBER(10)
     CONSTRAINT res_k_res_cyclus_key PRIMARY KEY
,  res_cyclus_naam
     VARCHAR2(30)
     NOT_NULL(res_cyclus_naam, res_c_res_cyclus_naam)
,  res_cyclus_periode
     NUMBER(3)
     NOT_NULL(res_cyclus_periode, res_c_res_cyclus_periode)
);



CREATE_TABLE(res_srtkenmerk, 0)
(  res_srtkenmerk_key
      NUMBER(10)
      CONSTRAINT res_k_res_srtkenmerk_key PRIMARY KEY
,  res_srtkenmerk_omschrijving
      VARCHAR2(50)
,  res_srtkenmerk_upper
      VARCHAR2(50)
,  res_srtkenmerk_code
      VARCHAR2(60)
,  res_srtkenmerk_kenmerktype
      VARCHAR2(1)
,  res_srtkenmerk_systeem
      NUMBER(2)
      DEFAULT 0
      NOT NULL
,  res_srtkenmerk_lengte
      NUMBER(4)
,  res_srtkenmerk_dimensie
      VARCHAR2(10)
,  res_srtkenmerk_dec
      NUMBER(3)
,  res_srtkenmerk_nmin
      NUMBER(10)
,  res_srtkenmerk_nmax
      NUMBER(10)
,  fac_kenmerkdomein_key
      NUMBER(10)
      CONSTRAINT res_r_kenmerkdomein_key1 REFERENCES fac_kenmerkdomein(fac_kenmerkdomein_key)
,  res_srtkenmerk_aanmaak
      DATE
      DEFAULT SYSDATE
,  res_srtkenmerk_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT res_c_res_srtkenmerk_omschr    CHECK(res_srtkenmerk_omschrijving IS NOT NULL)
,  CONSTRAINT res_srtkenmerk_omschrijving    CHECK(res_srtkenmerk_omschrijving IS NOT NULL)
,  CONSTRAINT res_u_res_srtkenmerk_upper    UNIQUE(res_srtkenmerk_upper, res_srtkenmerk_verwijder)
,  CONSTRAINT res_c_res_srtkenmerk_lengte    CHECK(res_srtkenmerk_lengte >= 1
                                               AND res_srtkenmerk_lengte <= 4000)
,  CONSTRAINT res_c_res_srtkenmerk_max_min   CHECK(res_srtkenmerk_nmax >= res_srtkenmerk_nmin)
,  CONSTRAINT res_c_res_srtkenmerk_dec       CHECK(res_srtkenmerk_dec >= 0
                                               AND res_srtkenmerk_dec <= res_srtkenmerk_lengte)
,  CONSTRAINT res_c_res_srtkenmerk_aanm      CHECK(res_srtkenmerk_aanmaak IS NOT NULL)
);


CREATE_TABLE(res_kenmerk, 0)
(  res_kenmerk_key
      NUMBER(10)
   CONSTRAINT res_k_res_kenmerk_key PRIMARY KEY
,  res_srtkenmerk_key
      NUMBER(10)
,  res_activiteit_key
      NUMBER(10)
,  res_artikel_key
      NUMBER(10)
,  res_discipline_key
      NUMBER(10)
,  res_kenmerk_niveau /* Activiteit/Discipline/Catering */
      VARCHAR2(1)
      DEFAULT 'A'
,  res_kenmerk_omschrijving
      VARCHAR2(50) /* optionele overrule van srtkenmerk_omschrijving */
,  res_kenmerk_code
      VARCHAR2(60)
,  res_kenmerk_toonbaar
      NUMBER(1)
,  res_kenmerk_inlijst
      NUMBER(1)
      DEFAULT 0 NOT NULL
,  res_kenmerk_uniek
      NUMBER(1)
,  res_kenmerk_regexp
    VARCHAR2(255)
,  res_kenmerk_hint
      VARCHAR2(255 CHAR)
,  res_kenmerk_verplicht
      NUMBER(1)
,  res_kenmerk_groep
      NUMBER(1)
      DEFAULT 0 NOT NULL
,  res_kenmerk_volgnummer
      NUMBER(3)
      NOT NULL
,  res_kenmerk_rolcode
     NUMBER(4)
     DEFAULT 7 NOT NULL
,  res_kenmerk_default
      VARCHAR2(4000)
,  res_kenmerk_show_expr
      VARCHAR2(4000)
,  res_kenmerk_aanmaak
      DATE
      DEFAULT SYSDATE
,  res_kenmerk_verwijder
      DATE
      DEFAULT NULLDATUM
,  fac_functie_key
      NUMBER(10)
      CONSTRAINT fac_r_res_kenmerk_functie REFERENCES fac_functie (fac_functie_key)
,  CONSTRAINT res_r_res_srtkenmerk_key1      CHECK(res_srtkenmerk_key IS NOT NULL)
,  CONSTRAINT res_r_res_srtkenmerk_key2      FOREIGN KEY(res_srtkenmerk_key) REFERENCES res_srtkenmerk(res_srtkenmerk_key)
,  CONSTRAINT res_c_res_kenmerk_niveau1      CHECK(res_kenmerk_niveau IS NOT NULL)
,  CONSTRAINT res_c_res_kenmerk_niveau2      CHECK(res_kenmerk_niveau IN ('A', 'D', 'C')) /* Activiteit/Discipline/Catering */
,  CONSTRAINT res_c_res_kenmerk_aanmaak      CHECK(res_kenmerk_aanmaak IS NOT NULL)
,  CONSTRAINT res_r_res_activiteit_key       FOREIGN KEY(res_activiteit_key) REFERENCES res_activiteit(res_activiteit_key)
,  CONSTRAINT res_r_res_artikel_key          FOREIGN KEY(res_artikel_key) REFERENCES res_artikel(res_artikel_key)
,  CONSTRAINT res_c_res_kenmerk_discipline   FOREIGN KEY(res_discipline_key) REFERENCES ins_tab_discipline(ins_discipline_key)
,  CONSTRAINT res_u_res_kenmerk              UNIQUE(res_activiteit_key, res_discipline_key, res_artikel_key, res_srtkenmerk_key, res_kenmerk_omschrijving, res_kenmerk_groep, res_kenmerk_verwijder)
);

CREATE_TABLE(res_kenmerkwaarde, 0)
(  res_kenmerkwaarde_key
      NUMBER(10)
      CONSTRAINT res_k_res_kenmerkwaarde_key PRIMARY KEY
,  res_rsv_ruimte_key
      NUMBER(10)
,  res_kenmerk_key
      NUMBER(10)
,  res_kenmerkreservering_waarde
      VARCHAR2(4000)
,  res_kenmerkwaarde_aanmaak
      DATE
      DEFAULT SYSDATE
,  res_kenmerkwaarde_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT res_r_res_rsv_ruimte_key           CHECK(res_rsv_ruimte_key IS NOT NULL)
,  CONSTRAINT res_r_res_kenmerk_key1             CHECK(res_kenmerk_key IS NOT NULL)
,  CONSTRAINT res_r_res_rsv_ruimte_key2          FOREIGN KEY(res_rsv_ruimte_key) REFERENCES res_rsv_ruimte(res_rsv_ruimte_key) ON DELETE CASCADE
,  CONSTRAINT res_c_res_kenmerkwaarde_aanm       CHECK(res_kenmerkwaarde_aanmaak IS NOT NULL)
,  CONSTRAINT res_u_res_kenmerkwaarde            UNIQUE(res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkwaarde_verwijder)
);

CREATE_TABLE(res_kenmerkartikel, 0)
(  res_kenmerkartikel_key
      NUMBER(10)
      CONSTRAINT res_k_res_kenmerkartikel_key PRIMARY KEY
,  res_rsv_artikel_key
      NUMBER(10)
,  res_kenmerk_key
      NUMBER(10)
,  res_kenmerkartikel_waarde
      VARCHAR2(4000)
,  res_kenmerkartikel_aanmaak
      DATE
      DEFAULT SYSDATE
,  res_kenmerkartikel_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT res_r_res_rsv_artikel_key          CHECK(res_rsv_artikel_key IS NOT NULL)
,  CONSTRAINT res_r_res_kenmerk_key2             CHECK(res_kenmerk_key IS NOT NULL)
,  CONSTRAINT res_r_res_rsv_artikel_key2         FOREIGN KEY(res_rsv_artikel_key) REFERENCES res_rsv_artikel(res_rsv_artikel_key) ON DELETE CASCADE
,  CONSTRAINT res_c_res_kenmerkartikel_aanm      CHECK(res_kenmerkartikel_aanmaak IS NOT NULL)
,  CONSTRAINT res_u_res_kenmerkartikel           UNIQUE(res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_verwijder)
);

CREATE_TABLE(res_srtartikel_onrgoed, 0)
(  res_srtartikel_onrgoed_key
      NUMBER(10)
      CONSTRAINT res_k_res_srtartikel_og_key PRIMARY KEY
,  alg_onrgoed_key
      NUMBER(10)
      NOT_NULL(alg_onrgoed_key, res_c_res_artikel_og_key)
,  alg_onrgoed_niveau
      VARCHAR2(1)
      NOT_NULL(alg_onrgoed_niveau, res_c_res_srtartikel_og_niv)
      CONSTRAINT res_c_res_srtartikel_og_niv2 CHECK(alg_onrgoed_niveau IN ('L', 'G', 'R'))
,  res_discipline_key
      NUMBER(10)
      NOT_NULL(res_discipline_key, res_c_res_srtartikel_dis_key)
      CONSTRAINT res_c_res_srtartikel_dis REFERENCES ins_tab_discipline(ins_discipline_key)
,  res_srtartikel_og_aanmaak
      DATE
      DEFAULT SYSDATE
,  res_srtartikel_og_verwijder
      DATE
      DEFAULT NULLDATUM
,  res_srtartikel_og_ingangsdatum
      DATE
,  res_srtartikel_og_vervaldatum
      DATE
,  CONSTRAINT res_c_alg_onrgoed_key UNIQUE(alg_onrgoed_key, alg_onrgoed_niveau, res_discipline_key, res_srtartikel_og_verwijder)
);

CREATE_TABLE(res_activiteitdiscipline, 0) (
    res_activiteitdiscipline_key
        NUMBER(10) PRIMARY KEY,
    res_discipline_key
        NUMBER(10)
        REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE,
    res_activiteit_key
        NUMBER(10)
        REFERENCES res_activiteit(res_activiteit_key) ON DELETE CASCADE
);

REGISTERONCE('$Id$')

#endif  // RES
