#ifdef  BES // 03-11-2000 PF
/* BES_TAB.SRC
 * $Revision$
 * $Id$
 */

CREATE_TABLE (bes_staffeltabel, 0)
(
   bes_staffeltabel_key
    NUMBER (10)  PRIMARY KEY,
   bes_staffeltabel_naam
    VARCHAR2 (30 CHAR) NOT NULL,
   fac_typestaffel_key
    NUMBER(10) REFERENCES fac_typestaffel(fac_typestaffel_key) NOT NULL,
   bes_staffeltabel_groep
    NUMBER (1) /* null/0 of 1 */
);

CREATE_TABLE(bes_srtgroep,0)
(
    bes_srtgroep_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_srtgroep_key PRIMARY KEY,
    ins_discipline_key
        NUMBER(10)
        NOT_NULL(ins_discipline_key, bes_r_ins_discipline_key1)
        CONSTRAINT bes_r_ins_discipline_key2 REFERENCES ins_tab_discipline,
    bes_srtgroep_omschrijving
        VARCHAR2(60)
        NOT_NULL(bes_srtgroep_omschrijving, bes_c_bes_srtgroep_omschr),
    bes_srtgroep_volgnr
        NUMBER(3),
    prs_kostensoort_key
        NUMBER(10)
        CONSTRAINT bes_r_prs_kostensoort_key1 REFERENCES prs_kostensoort(prs_kostensoort_key),
    bes_srtgroep_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(bes_srtgroep_aanmaak, bes_c_bes_srtgroep_aanmaak),
    bes_srtgroep_verwijder
        DATE
        DEFAULT NULLDATUM,
    CONSTRAINT bes_u_bes_srtgroep_oms UNIQUE(ins_discipline_key, bes_srtgroep_omschrijving, bes_srtgroep_verwijder)
);

-- Gewicht/volume/aantal van een artikel
CREATE_TABLE(bes_grootheid,0)
(
    bes_grootheid_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_grootheid_key PRIMARY KEY,
    /* Naam is b.v. kilogram, liter, aantal (of gram, milliliter, aantal, ...)*/
    bes_grootheid_naam
         VARCHAR2(25),
    bes_grootheid_verwijder
        DATE
        DEFAULT NULLDATUM
);

-- Assortiment van producent/fabrikant (genormaliseerde producten)
CREATE_TABLE(bes_srtprod,0)
(
    bes_srtprod_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_srtprod_key PRIMARY KEY,
    bes_srtgroep_key
        NUMBER(10)
        NOT_NULL(bes_srtgroep_key, bes_c_bes_srtgroep_key3) // echt?
        CONSTRAINT bes_r_bes_srtgroep_key4 REFERENCES bes_srtgroep,
    bes_srtprod_omschrijving
        VARCHAR2(100)
        NOT_NULL(bes_srtprod_omschrijving, bes_c_bes_srtprod_omschrijving),
    bes_srtprod_opmerking
        VARCHAR2(2000 CHAR),
    bes_srtprod_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(bes_srtprod_aanmaak, bes_c_bes_srtprod_aanmaak),
    bes_srtprod_verwijder
        DATE
        DEFAULT NULLDATUM,
    bes_srtprod_volgnr
        NUMBER(3),
    bes_srtprod_btw
        NUMBER(3),
    bes_srtprod_eenheid
        VARCHAR2(30),
    bes_srtprod_nr
        VARCHAR2(32),
    /* MB: Optionele referentie naar producent/fabrikant */
    prs_bedrijf_key
       NUMBER(10)
       CONSTRAINT bes_r_prs_bedrijf_key5 REFERENCES prs_bedrijf(prs_bedrijf_key),
    /* MB: artikel wordt door producent gemaakt tot aan deze datum, mag leeg zijn (= geen maak-limiet) */
    bes_srtprod_vervaldatum
        DATE,
    bes_srtprod_image
        VARCHAR2(255),
    bes_srtprod_veelvoud
        NUMBER(6),
    /* MB: Verwijzing naar eenheid van een grootheid (gram / milliliter / aantal) */
    bes_grootheid_key
        NUMBER(10) CONSTRAINT bes_r_bes_grootheid REFERENCES bes_grootheid(bes_grootheid_key) ON DELETE CASCADE,
    /* MB Hier het getal aan gewicht, inhoud of aantal in te vullen : */
    /* b.v. 1000 (en betekent in combi met bes_grootheid_key b.v. 1000 gram) */
    bes_grootheid_getal
        NUMBER(10),
    bes_srtprod_margebedrag  /* bedrag van de fee per 1 grootheid van dit product */
        NUMBER(12,6),
    bes_srtprod_margebedragpct  /* percentage van de producentfee dat voor ons is, de rest is voor whoever */
        NUMBER(3)
);


CREATE_TABLE(bes_srtdeel,0)
(
    bes_srtdeel_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_srtdeel_key PRIMARY KEY,
    bes_srtgroep_key
        NUMBER(10)
        NOT_NULL(bes_srtgroep_key, bes_r_bes_srtgroep_key1)
        CONSTRAINT bes_r_bes_srtgroep_key2 REFERENCES bes_srtgroep,
    bes_srtdeel_omschrijving
        VARCHAR2(100)
        NOT_NULL(bes_srtdeel_omschrijving, bes_c_bes_srtdeel_omschrijving),
    bes_srtdeel_opmerking
        VARCHAR2(2000 CHAR),
    bes_srtdeel_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(bes_srtdeel_aanmaak, bes_c_bes_srtdeel_aanmaak),
    bes_srtdeel_verwijder
        DATE
        DEFAULT NULLDATUM,
    bes_srtdeel_volgnr
        NUMBER(3),
    bes_srtdeel_btw
        NUMBER(3),
    bes_srtdeel_eenheid
        VARCHAR2(30),
    bes_srtdeel_dimensie
        NUMBER(1),
    bes_srtdeel_preview    /* BES: wel(1)/geen(0) preview tonen voor bestellen */
        NUMBER(1)
        DEFAULT 0,
    bes_srtdeel_nr
        VARCHAR2(32)
        NOT_NULL(bes_srtdeel_nr, bes_c_bes_srtdeel_nr),
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT bes_r_prs_bedrijf_key3 REFERENCES prs_bedrijf(prs_bedrijf_key),
    bes_srtprod_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_srtprod_key2 REFERENCES bes_srtprod(bes_srtprod_key),
    bes_srtdeel_vervaldatum
        DATE,
    bes_srtdeel_image
        VARCHAR2(255),
    bes_srtdeel_details_loc
        VARCHAR2(255),
    bes_srtdeel_veelvoud
        NUMBER(6),
    bes_srtdeel_minimum
        NUMBER(6),
    bes_staffeltabel_key
        NUMBER(10)
        CONSTRAINT bes_r_staffeltabel2 REFERENCES bes_staffeltabel(bes_staffeltabel_key),
    bes_srtdeel_prsflex    /* kan wel(1) of geen (0)persoonsafhankelijke flexkenmerken bevatten */
        NUMBER(1)
        DEFAULT 0,
    bes_srtdeel_voorraadmin
        NUMBER(6),
    bes_srtdeel_voorraadmax
        NUMBER(6),
    bes_srtdeel_voorraadfactor
        NUMBER(6)
        DEFAULT 1,        /* factor tussen inkoop- en verkoopenheden van zelfde artikelnr tbv voorraadbepaling */
    bes_srtdeel_margepct  /* percentage van de leveranciersmarge (verkoop-inkoop) dat voor ons is, de rest is voor whoever */
        NUMBER(3),
    bes_srtdeel_wijzigdagen /* zoveel dagen voor leverdatum nog te wijzigen */
        NUMBER(3),
    bes_srtdeel_annuleerdagen /* zoveel dagen voor leverdatum nog te annuleren */
        NUMBER(3),
    bes_srtdeel_depotverdeelpct
        NUMBER(3),
    bes_srtdeel_notitie /* magazijnlocatie */
        VARCHAR2(50),
    bes_srtdeel_maxbestel    /* De voorrraad is het maximum aantal dat ik mag bestellen {0=nee (default), 1=ja} */
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    ins_srtdeel_key /* objectrelatie */
        NUMBER(10)
        CONSTRAINT ins_r_ins_srtdeel_key4 REFERENCES ins_srtdeel(ins_srtdeel_key)
);


CREATE_TABLE(bes_bestelling, 0)
(
    bes_bestelling_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_bestelling_key PRIMARY KEY,
    bes_bestelling_parentkey  /* indien revisie van bestaande bestelling */
        NUMBER(10)
        CONSTRAINT bes_r_bes_bestelling_parent REFERENCES bes_bestelling(bes_bestelling_key),
    bes_bestelling_retourvan_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_bestelling_retourvan REFERENCES bes_bestelling(bes_bestelling_key),
    bes_bestelling_module
        VARCHAR2(3)
        NOT_NULL(bes_bestelling_module, bes_c_bes_bestelling_module),
    bes_bestelling_status
        NUMBER(10)
        default 2
        NOT_NULL(bes_bestelling_status, bes_c_bes_bestelling_status),
    bes_bestelling_datum        /* besteldatum */
        DATE
        DEFAULT SYSDATE,
    bes_bestelling_leverdatum   /* geplande leverdatum */
        DATE,
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT bes_r_prs_user_key1 REFERENCES prs_perslid(prs_perslid_key),
    prs_perslid_key_voor
        NUMBER(10)
        CONSTRAINT bes_r_prs_perslid_key1 REFERENCES prs_perslid(prs_perslid_key),
    bes_bestelling_opmerking
        VARCHAR2(320),
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT bes_r_prs_kostenplaats_key1 REFERENCES prs_kostenplaats(prs_kostenplaats_key),
    bes_bestelling_kosten_klant
        NUMBER(1)
        CONSTRAINT bes_c_bes_kosten_klant CHECK(bes_bestelling_kosten_klant IS NULL
                                             OR bes_bestelling_kosten_klant = 1),
    bes_bestelling_ordernr
        VARCHAR2(30),
    bes_bestelling_plaats
        VARCHAR2(30),
    bes_bestelling_fiat_user
        NUMBER(10)
        CONSTRAINT bes_r_bes_bestelling_fiat REFERENCES prs_perslid(prs_perslid_key),
    bes_bestelling_fiatbedrag /* Tot zover gefiatteerd */
        NUMBER(11,2),
    mld_adres_key_lev
        NUMBER(10)
        CONSTRAINT bes_r_mld_adres_key_lev REFERENCES mld_adres(mld_adres_key),
    bes_bestelling_levkosten
        NUMBER(8,2),
    bes_bestelling_korting
        NUMBER(8,2),
    fac_activiteit_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_activiteit3 REFERENCES fac_activiteit(fac_activiteit_key) ON DELETE CASCADE,
    mld_melding_key /* optionele verwijzing naar veroorzakende melding */
        NUMBER(10)
        CONSTRAINT bes_r_mld_melding1 REFERENCES mld_melding(mld_melding_key),
    bes_bestelling_kto_verstuurd
        DATE,
    bes_bestelling_satisfaction
        NUMBER(2),
    bes_bestelling_satisfaction_op
        VARCHAR2(2000),
    bes_bestelling_approved
        NUMBER(11,2),
    bes_bestelling_lev_opm
        VARCHAR2(320)
);

CREATE_TABLE(bes_bestelopdr, 0)
(
    bes_bestelopdr_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_bestelopdr_key PRIMARY KEY,
    bes_bestelopdr_id
        VARCHAR2(30),
    bes_bestelopdr_module
        VARCHAR2(3),
    bes_bestelopdr_status
        NUMBER(10),
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT bes_r_prs_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key),
    bes_bestelopdr_datum
        DATE
        DEFAULT SYSDATE,
    mld_adres_key_lev
        NUMBER(10)
        CONSTRAINT bes_r_mld_adres_key1 REFERENCES mld_adres(mld_adres_key),
    mld_adres_key_fac
        NUMBER(10)
        CONSTRAINT bes_r_mld_adres_key_fac1 REFERENCES mld_adres(mld_adres_key),
    bes_bestelopdr_leverdatum
        DATE,
    bes_bestelopdr_levkosten
        NUMBER(8,2),
    bes_bestelopdr_korting
        NUMBER(8,2),
    bes_bestelopdr_opmerking
        VARCHAR2(320),
    cnt_contract_key
        NUMBER(10),
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT bes_r_opdr_prs_user_key1 REFERENCES prs_perslid(prs_perslid_key),
    bes_bestelopdr_delivery_opmerk
        VARCHAR2(320),
    bes_bestelopdr_flag
        NUMBER(1)
);

ALTER TABLE cnt_contract ADD bes_bestelopdr_key
      NUMBER(10)
      CONSTRAINT cnt_r_bes_bestelopdr_key REFERENCES bes_bestelopdr(bes_bestelopdr_key);
ALTER TABLE ins_deel
  ADD bes_bestelopdr_key
      NUMBER(10)
      CONSTRAINT bes_r_bes_bestelopdr_key3 REFERENCES bes_bestelopdr(bes_bestelopdr_key);

CREATE_TABLE(bes_bestelopdr_item, 0)
(
    bes_bestelopdr_item_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_bestelopdr_item_key PRIMARY KEY,
    bes_bestelopdr_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_bestelopdr_key2 REFERENCES bes_bestelopdr(bes_bestelopdr_key) ON DELETE CASCADE
        NOT_NULL(bes_bestelopdr_key, bes_c_bes_bestelopdr_key),
    bes_bestelopdr_item_posnr
        NUMBER(5),
    bes_bestelopdr_item_aantal
        NUMBER(5)
        CONSTRAINT bes_c_bes_bestelopdr_i_aantal CHECK(bes_bestelopdr_item_aantal IS NOT NULL),
    bes_bestelopdr_item_aantalontv
        NUMBER(5),
    bes_bestelopdr_item_aantalexp
        NUMBER(5),
    bes_bestelopdr_item_omschrijv
        VARCHAR2(320),
    bes_bestelopdr_item_opmerking
        VARCHAR2(100),
    bes_bestelopdr_item_prijs
        NUMBER(12,6),
    bes_bestelopdr_item_inkprijs
        NUMBER(8,2),
    bes_bestelopdr_item_brutoprijs
        NUMBER(8,2),
    bes_bestelopdr_item_ontvangen
        DATE,
    bes_bestelopdr_item_status
        NUMBER(10),
    bes_bestelopdr_item_verwerkt
        DATE,
    CONSTRAINT bes_c_bes_bestelopdr_item
         CHECK ((bes_bestelopdr_item_aantal>=0 AND bes_bestelopdr_item_aantalontv<=bes_bestelopdr_item_aantal)
                OR (bes_bestelopdr_item_aantal<0 AND bes_bestelopdr_item_aantalontv>=bes_bestelopdr_item_aantal))
);

CREATE_TABLE(bes_bestelling_item, 0)
(
    bes_bestelling_item_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_bestelling_item_key PRIMARY KEY,
    bes_bestelling_key
        NUMBER(10)
        CONSTRAINT bes_c_bes_bestelling_key CHECK(bes_bestelling_key IS NOT NULL)
        CONSTRAINT bes_r_bes_bestelling_key1 REFERENCES bes_bestelling(bes_bestelling_key) ON DELETE CASCADE,
    bes_srtdeel_key
        NUMBER(10)
        CONSTRAINT bes_c_bes_srtdeel_key1 CHECK(bes_srtdeel_key IS NOT NULL)
        CONSTRAINT bes_r_bes_srtdeel_key REFERENCES bes_srtdeel(bes_srtdeel_key),
    bes_bestelling_item_aantal
        NUMBER(5)
        CONSTRAINT bes_c_bes_bestelling_i_aantal CHECK(bes_bestelling_item_aantal IS NOT NULL),
    bes_bestelling_item_brutoprijs /* verkoopprijs ten tijde van bestelling */
        NUMBER(8,2),
    bes_bestelling_item_prijs  /* incl. kortingen */
        NUMBER(12,6),
    bes_bestelling_item_inkprijs /* inkoopprijs ten tijde van bestelling */
        NUMBER(12,6),
    bes_bestelopdr_item_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_bestelopdr_i_key1 REFERENCES bes_bestelopdr_item(bes_bestelopdr_item_key),
    bes_bestelling_item_aantalontv
        NUMBER(5),
    bes_bestelling_item_status
        NUMBER(10),
    CONSTRAINT bes_c_bes_bestelling_item
        CHECK ((bes_bestelling_item_aantal>=0 AND bes_bestelling_item_aantalontv<=bes_bestelling_item_aantal)
               OR (bes_bestelling_item_aantal<0 AND bes_bestelling_item_aantalontv>=bes_bestelling_item_aantal))
);

--CREATE_TABLE(bes_bestellingstatuses, 0)
--(
--    bes_bestellingstatuses_key
--        NUMBER(10)
--        CONSTRAINT bes_k_bes_bestellingstat_key PRIMARY KEY,
--    bes_bestellingstatuses_omschr
--        VARCHAR2(30)
--);
--
--CREATE_TABLE(bes_bestelopdrstatuses, 0)
--(
--    bes_bestelopdrstatuses_key
--        NUMBER(10)
--        CONSTRAINT bes_k_bes_bestelopdrstat_key PRIMARY KEY,
--    bes_bestelopdrstatuses_omschr
--        VARCHAR2(30)
--);


CREATE_TABLE(bes_disc_params, 0)
  ( bes_disc_params_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_disc_params_key PRIMARY KEY,
    bes_ins_discipline_key
        NUMBER(10)
        NOT_NULL(bes_ins_discipline_key, bes_c_ins_discipline_key)
        CONSTRAINT bes_r_ins_discipine_key REFERENCES ins_tab_discipline(ins_discipline_key),
    bes_disc_params_fiatflow /* Fiatterings flow 0=fiatteur->besbof 1=besbof->fiatteur */
        NUMBER(1)
        DEFAULT 0
        CONSTRAINT bes_c_disc_params_fiatflow CHECK(bes_disc_params_fiatflow IN (0,1)),
    bes_disc_params_bestellimiet
        NUMBER(8,2)
        DEFAULT 100000,
    bes_disc_params_min_bedrag
        NUMBER(8,2)
        DEFAULT 0,
    bes_disc_params_auto_order
        NUMBER(1)
        DEFAULT 0,
    bes_disc_params_autoacceptrfo
        NUMBER(1)
        DEFAULT 0,
    bes_disc_params_factuurpct
        NUMBER
        DEFAULT 0,
    bes_disc_params_factuurmarge
        NUMBER
        DEFAULT 0,
    bes_disc_params_factuurgrens
        NUMBER(8),
    bes_disc_params_factuurappr
        NUMBER(1)
        DEFAULT 0,
    bes_disc_params_factmatchmode    /* 2-weg of 3-weg matching? */
        NUMBER(1)
        CONSTRAINT bes_c_disc_params1 CHECK(bes_disc_params_factmatchmode IN (2,3)), /* leeg mag ook */
    bes_disc_params_leverdagen    /* default levertijd */
        NUMBER,
    bes_disc_params_punchouturl
        VARCHAR2(1024),
    bes_disc_params_punch_bedr_key
      NUMBER(10)
      CONSTRAINT bes_r_prs_bedrijf_key4 REFERENCES prs_bedrijf(prs_bedrijf_key),
    bes_disc_params_remoteconfirm   /* de levering wordt door de leverancier zelf bevestigt */
        NUMBER(1)
        DEFAULT 0,
    bes_disc_params_module
        VARCHAR2(3)
        DEFAULT 'BES',
    bes_disc_params_noti_dagen
        NUMBER(2),
    bes_disc_params_logo_url
        VARCHAR2(255),
    bes_disc_params_retour
        NUMBER(1),
    bes_disc_params_retour_url
        VARCHAR2(255),
    bes_disc_params_levopm_url
        VARCHAR2(255),
    bes_ins_discipline_key_inkoop  /* optionele corresponderende inkoopcatalogus tbv voorraad */
        NUMBER(10)
        CONSTRAINT bes_r_ins_discipine_key2 REFERENCES ins_tab_discipline(ins_discipline_key),
    bes_disc_params_pgb /* 0=Geen van beiden, 1=Alleen pgb, 2=Alleen agb, 3=Beiden, pgb en agb */
        NUMBER(1),
    bes_disc_params_singlegroep /* 1=een bestelling mag alleen artikelen van 1 srtgroep bevatten */
        NUMBER(1),
    bes_disc_params_noti_opdr /* 1=notificeer besteller over bestelopdracht(en) */
        NUMBER(1),
    bes_disc_params_bonotify /* 1=notificeer BO als er een bestelling is */
        NUMBER(1)
        NOT NULL,
    bes_disc_params_herfiat /* 0=nooit, 1=zie criteria, 2=altijd */
        NUMBER(1),
    bes_disc_params_herfiatpct
        NUMBER,
    bes_disc_params_herfiatmarge
        NUMBER,
    bes_disc_params_maxartikel /* het aantal artikelregels dat een bestelling mag bevatten */
        NUMBER(3),
    bes_disc_params_kpautorisatie /* 1=gebruik kostenplaats autorisatie i.p.v. 3D (prs/alg) autorisatie */
      NUMBER(1),
    bes_disc_params_contract /* artikelcatalogus is een abonnement type (contract moet aangemaakt worden)*/
        NUMBER(1),
    bes_disc_params_cnt_disckey
        NUMBER(10)
        CONSTRAINT bes_r_ins_discipline_key3 REFERENCES ins_tab_discipline,
    bes_disc_params_cnt_termijn /* de looptijd */
        NUMBER(10)
        CONSTRAINT bes_r_cnt_termijn_key REFERENCES cnt_termijn(cnt_termijn_key),
    bes_disc_params_cnt_opzegterm /* de opzegtermijn */
        NUMBER(10)
        CONSTRAINT bes_r_cnt_termijn_key2 REFERENCES cnt_termijn(cnt_termijn_key),
    bes_disc_params_for_others /* Kan ik als FE een bestelling voor een ander plaatsen? {0=no | 1=yes} */
        NUMBER(1)
        DEFAULT 0,
    bes_disc_params_bestellimiet2
        NUMBER(11,2)
        DEFAULT 1000000,
    bes_disc_params_bestellimiet3
        NUMBER(11,2)
        DEFAULT 1000000,
    bes_disc_params_bestellimiet4
        NUMBER(11,2)
        DEFAULT 1000000,
    bes_disc_params_bestellimiet5
        NUMBER(11,2)
        DEFAULT 1000000,
    bes_disc_params_freeartikel /* Deprecated, gaat van 2017.3 via bes_disc_params_bestelmode */
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    bes_disc_params_bestelmode /* 0=ouderwets artikelselector, 1=vrij artikelen, 2=bestellijst */
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    bes_disc_params_fotomode /* 0=alleen bij kiezen artikel, 1=ook in bestellijst */
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    bes_disc_params_ins_mode    /* bestelcatalogusinstellingen {0=Niet van toepassing, 1=Aanmaken en koppelen (Nog niet ondersteund), 2=Koppelen} */
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    bes_disc_params_fe_confirm    /* Besteller bevestigt ontvangst {0=Nee (default), 1=Ja} */
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    bes_disc_params_hide_cost_fe  /* Onderdruk kosten in bestellijst voor FE {0=Nee (default), 1=Ja} */
        NUMBER(1)
        DEFAULT 0
        NOT NULL
);

//// flexprops


CREATE_TABLE(bes_srtkenmerk, 0)
(  bes_srtkenmerk_key
      NUMBER(10)
   CONSTRAINT bes_k_bes_srtkenmerk_key PRIMARY KEY
,  bes_srtkenmerk_omschrijving
      VARCHAR2(50)
,  bes_srtkenmerk_upper
      VARCHAR2(50)
,  bes_srtkenmerk_dimensie
      VARCHAR2(10)
,  bes_srtkenmerk_kenmerktype
      VARCHAR2(1)
,  bes_srtkenmerk_systeem
      NUMBER(2)
      DEFAULT 0
      NOT NULL
,  bes_srtkenmerk_lengte
      NUMBER(4)
,  bes_srtkenmerk_dec
      NUMBER(3)
,  bes_srtkenmerk_nmin
      NUMBER(10)
,  bes_srtkenmerk_nmax
      NUMBER(10)
,  fac_kenmerkdomein_key
      NUMBER(10)
      CONSTRAINT bes_r_kenmerkdomein_key1 REFERENCES fac_kenmerkdomein(fac_kenmerkdomein_key)
,  bes_srtkenmerk_aanmaak
      DATE
      DEFAULT SYSDATE
,  bes_srtkenmerk_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT bes_c_bes_srtkenmerk_omschr    CHECK(bes_srtkenmerk_omschrijving IS NOT NULL)
,  CONSTRAINT bes_srtkenmerk_omschrijving    CHECK(bes_srtkenmerk_omschrijving IS NOT NULL)
,  CONSTRAINT bes_u_bes_srtkenmerk_upper    UNIQUE(bes_srtkenmerk_upper, bes_srtkenmerk_verwijder)
,  CONSTRAINT bes_c_bes_srtkenmerk_kenmtype  CHECK(bes_srtkenmerk_kenmerktype IN ('C','N','D','T','R','X','L','Q','F','M','E','S','l','B'))
,  CONSTRAINT bes_c_bes_srtkenmerk_lengte    CHECK(bes_srtkenmerk_lengte >= 1
                                               AND bes_srtkenmerk_lengte <= 4000)
,  CONSTRAINT bes_c_bes_srtkenmerk_max_min   CHECK(bes_srtkenmerk_nmax >= bes_srtkenmerk_nmin)
,  CONSTRAINT bes_c_bes_srtkenmerk_dec       CHECK(bes_srtkenmerk_dec >= 0
                                               AND bes_srtkenmerk_dec <= bes_srtkenmerk_lengte)
,  CONSTRAINT bes_c_bes_srtkenmerk_aanm      CHECK(bes_srtkenmerk_aanmaak IS NOT NULL)
);

CREATE_TABLE(bes_kenmerk, 0)
(  bes_kenmerk_key
      NUMBER(10)
   CONSTRAINT bes_k_bes_kenmerk_key PRIMARY KEY
,  bes_srtkenmerk_key
      NUMBER(10)
,  bes_srtinstallatie_key
      NUMBER(10)
,  bes_kenmerk_type
      VARCHAR2(1)
      CONSTRAINT bes_c_ins_kenmerk_type CHECK
            (bes_kenmerk_type is not null and (bes_kenmerk_type IN( 'B', 'I')))
,  bes_kenmerk_niveau
      VARCHAR2(1)
      CONSTRAINT bes_c_ins_kenmerk_niveau2 CHECK
            (bes_kenmerk_niveau is not null and (bes_kenmerk_niveau IN( 'D', 'G', 'S')))
,  bes_kenmerk_verplicht
      NUMBER(1)
,  bes_kenmerk_groep
      NUMBER(1)
      DEFAULT 0 NOT NULL
,  bes_kenmerk_toonbaar
      NUMBER(1)
,  bes_kenmerk_volgnummer
      NUMBER(3)
      NOT NULL
,  bes_kenmerk_uniek
      NUMBER(1)
,  bes_kenmerk_regexp
    VARCHAR2(255)
,  bes_kenmerk_hint
      VARCHAR2(255 CHAR)
,  bes_kenmerk_aanmaak
      DATE
      DEFAULT SYSDATE
,  bes_kenmerk_default
      VARCHAR2(4000)
,  bes_kenmerk_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT bes_c_bes_srtkenmerk_key1      CHECK(bes_srtkenmerk_key IS NOT NULL)
,  CONSTRAINT bes_r_bes_srtkenmerk_key2      FOREIGN KEY(bes_srtkenmerk_key) REFERENCES bes_srtkenmerk(bes_srtkenmerk_key)
,  CONSTRAINT bes_c_bes_kenmerk_niveau1      CHECK(bes_kenmerk_niveau IS NOT NULL)
,  CONSTRAINT bes_c_bes_kenmerk_toonbaar     CHECK(bes_kenmerk_toonbaar IS NULL
                                                OR bes_kenmerk_toonbaar = 1)
,  CONSTRAINT bes_c_bes_kenmerk_aanmaak      CHECK(bes_kenmerk_aanmaak IS NOT NULL)
,  CONSTRAINT bes_u_bes_kenmerk              UNIQUE(bes_srtkenmerk_key, bes_srtinstallatie_key, bes_kenmerk_type, bes_kenmerk_niveau, bes_kenmerk_groep, bes_kenmerk_verwijder)
);

CREATE_TABLE(bes_kenmerkbestell, 0)
(  bes_kenmerkbestell_key
      NUMBER(10)
   CONSTRAINT bes_k_bes_kenmerkbestell_key PRIMARY KEY
,  bes_bestelling_key
      NUMBER(10)
,  bes_kenmerk_key
      NUMBER(10)
,  bes_kenmerkbestell_waarde
      VARCHAR2(4000)
,  bes_kenmerkbestell_aanmaak
      DATE
      DEFAULT SYSDATE
,  bes_kenmerkbestell_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT bes_c_bes_bestelling_key2      CHECK(bes_bestelling_key IS NOT NULL)
,  CONSTRAINT bes_r_bes_bestelling_key3      FOREIGN KEY(bes_bestelling_key) REFERENCES bes_bestelling(bes_bestelling_key) ON DELETE CASCADE
,  CONSTRAINT bes_c_bes_kenmerk_key1         CHECK(bes_kenmerk_key IS NOT NULL)
,  CONSTRAINT bes_r_bes_kenmerk_key2         FOREIGN KEY(bes_kenmerk_key) REFERENCES bes_kenmerk(bes_kenmerk_key)
,  CONSTRAINT bes_c_bes_kenmerkbestell_aanm  CHECK(bes_kenmerkbestell_aanmaak IS NOT NULL)
,  CONSTRAINT bes_u_bes_kenmerkbestell       UNIQUE(bes_kenmerk_key, bes_bestelling_key, bes_kenmerkbestell_verwijder)
);

CREATE_TABLE(bes_kenmerkbesteli, 0)
(  bes_kenmerkbesteli_key
      NUMBER(10)
   CONSTRAINT bes_k_bes_kenmerkbesteli_key PRIMARY KEY
,  bes_bestelling_item_key
      NUMBER(10)
,  bes_kenmerk_key
      NUMBER(10)
,  bes_kenmerkbesteli_waarde
      VARCHAR2(4000)
,  bes_kenmerkbesteli_aanmaak
      DATE
      DEFAULT SYSDATE
,  bes_kenmerkbesteli_verwijder
      DATE
      DEFAULT NULLDATUM
,  CONSTRAINT bes_c_bes_bestelling_item_key2 CHECK(bes_bestelling_item_key IS NOT NULL)
,  CONSTRAINT bes_r_bes_bestelling_item_key3 FOREIGN KEY(bes_bestelling_item_key) REFERENCES bes_bestelling_item(bes_bestelling_item_key) ON DELETE CASCADE
,  CONSTRAINT bes_c_bes_kenmerk_key3         CHECK(bes_kenmerk_key IS NOT NULL)
,  CONSTRAINT bes_r_bes_kenmerk_key4         FOREIGN KEY(bes_kenmerk_key) REFERENCES bes_kenmerk(bes_kenmerk_key)
,  CONSTRAINT bes_c_bes_kenmerkbesteli_aanm  CHECK(bes_kenmerkbesteli_aanmaak IS NOT NULL)
,  CONSTRAINT bes_u_bes_kenmerkbesteli       UNIQUE(bes_kenmerk_key, bes_bestelling_item_key, bes_kenmerkbesteli_verwijder)
);

CREATE_TABLE(bes_favoriet, 0)
(  bes_favoriet_key
      NUMBER(10) PRIMARY KEY,
   bes_favoriet_naam
      VARCHAR2(50),
   prs_perslid_key
      NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
   bes_srtdeel_key
      NUMBER(10) REFERENCES bes_srtdeel(bes_srtdeel_key) ON DELETE CASCADE
);

CREATE_TABLE (bes_staffel, 0)
(
   bes_staffel_key
    NUMBER (10)  PRIMARY KEY,
   bes_staffeltabel_key
    NUMBER (10)  REFERENCES bes_staffeltabel(bes_staffeltabel_key) ON DELETE CASCADE NOT NULL,
   bes_staffel_grenswaarde
    NUMBER (12),
   bes_staffel_korting
    NUMBER (12, 6) NOT NULL
);

-- Prijsverloop van artikel leverancier
CREATE_TABLE(bes_srtdeel_prijs,0)
(
    bes_srtdeel_prijs_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_srtdeel_prijs_key PRIMARY KEY,
    bes_srtdeel_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_srtdeel_key1 REFERENCES bes_srtdeel(bes_srtdeel_key) ON DELETE CASCADE,
    bes_srtdeel_prijs_prijs
        NUMBER(8,2),
    bes_srtdeel_prijs_inkprijs
        NUMBER(8,2),
    /* MB: Tot aan deze datum geldt deze prijs, daarna is deze prijs niet meer geldig (Farmers wilde dit ook). */
    bes_srtdeel_prijs_vervaldatum
        DATE,
    /* MB: Prioriteit/prijspakker instelling op leverancierartikelprijs-nivo, schaal van 1 (=lage prio) - 4 (=hoogste prio), mag leeg zijn (= 0: laagste prio) */
    bes_srtdeel_prijs_prio
        NUMBER(1)
);

-- Prijsverloop van producten van fabriaknt
CREATE_TABLE(bes_srtprod_prijs,0)
(
    bes_srtprod_prijs_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_srtprod_prijs_key PRIMARY KEY,
    bes_srtprod_key
        NUMBER(10)
        CONSTRAINT bes_r_bes_srtprod_key REFERENCES bes_srtprod(bes_srtprod_key),
    bes_srtprod_prijs_prijs
        NUMBER(8,2),
    bes_srtprod_prijs_inkprijs
        NUMBER(8,2),
    /* MB: Tot aan deze datum geldt deze prijs, daarna is deze prijs niet meer geldig */
    bes_srtprod_prijs_vervaldatum
        DATE,
    /* MB: Prioriteit/prijspakker instelling op producentartikelprijs-nivo, schaal van 1 (=lage prio) - 4 (=hoogste prio), mag leeg zijn (= 0: laagste prio) */
    bes_srtprod_prijs_prio
        NUMBER(1)
);

-- Een productsample voor een klant
CREATE_TABLE(bes_bedrijf_srtprod, 0)
(
    bes_bedrijf_srtprod_key
        NUMBER(10)
        CONSTRAINT bes_k_bedrijf_srtprod_key PRIMARY KEY,
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT bes_r_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
    bes_srtprod_key
        NUMBER(10)
        CONSTRAINT bes_r_srtprod_key1 REFERENCES bes_srtprod(bes_srtprod_key) ON DELETE CASCADE,
    bes_bedrijf_srtprod_weging
        NUMBER(12,2),
    bes_bedrijf_srtprod_opmerking
        VARCHAR2(320),
    bes_bedrijf_srtprod_prijs
        NUMBER(8,2)
);

/* MB: Voorkeursleveranciers    ---------------------------------------------------------------------------*/
CREATE_TABLE(bes_bedrijf_bedrijf,0)
(
    bes_bedrijf_bedrijf_key
        NUMBER(10)
        CONSTRAINT bes_k_bes_bedrijf_bedrijf_key PRIMARY KEY,
    /* Klant: interne bedrijf */
    prs_bedrijf_key_klant
        NUMBER(10)
        CONSTRAINT prs_r_prs_bedrijf_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key),
    /* Leverancier: externe bedrijf */
    prs_bedrijf_key_lev
        NUMBER(10)
        CONSTRAINT prs_r_prs_bedrijf_bedrijf_key2 REFERENCES prs_bedrijf(prs_bedrijf_key)
);


REGISTERONCE('$Id$')

#endif  // BES
