#ifdef  PRS // 13-03-96 AH
/*  PRS_TAB.SRC
 *  $Revision$
 *  $Id$
 */

CREATE_TABLE(prs_relatietype, 0)
(
   prs_relatietype_key
       NUMBER (10) PRIMARY KEY,
   prs_relatietype_omschrijving
       VARCHAR2(100)
       NOT_NULL(prs_relatietype_omschrijving, prs_c_prs_relatietype_omschr),
   prs_relatietype_aanmaak
       DATE
       DEFAULT SYSDATE,
   prs_relatietype_verwijder
       DATE
       DEFAULT NULLDATUM,
   CONSTRAINT prs_u_prs_relatietype_oms UNIQUE(prs_relatietype_omschrijving, prs_relatietype_verwijder)
);

CREATE_TABLE(prs_bedrijf,0)
(
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_bedrijf_key PRIMARY KEY,
    prs_bedrijf_naam
        VARCHAR2(60)
        NOT_NULL(prs_bedrijf_naam, prs_c_prs_bedrijf_naam),
    prs_bedrijf_naam_upper
        VARCHAR2(60)
        NOT_NULL(prs_bedrijf_naam_upper, prs_c_prs_bedrijf_naam_upper),
    prs_bedrijf_post_adres
        VARCHAR2(50),
    prs_bedrijf_post_postcode
        VARCHAR2(12),
    prs_bedrijf_post_plaats
        VARCHAR2(30),
    prs_bedrijf_post_land
        VARCHAR2(30),
    prs_bedrijf_bezoek_adres
        VARCHAR2(50),
    prs_bedrijf_bezoek_postcode
        VARCHAR2(12),
    prs_bedrijf_bezoek_plaats
        VARCHAR2(30),
    prs_bedrijf_bezoek_land
        VARCHAR2(30),
    prs_bedrijf_telefoon
        VARCHAR2(20),
    prs_bedrijf_fax
        VARCHAR2(20),
    prs_bedrijf_telefoon2
        VARCHAR2(20),
    prs_bedrijf_contact_persoon
        VARCHAR2(30),
    prs_bedrijf_contact_telefoon
        VARCHAR2(20),
    prs_bedrijf_contact_fax
        VARCHAR2(20),
    prs_bedrijf_opmerking
        VARCHAR2(320),
    prs_bedrijf_opmerking2
        VARCHAR2(320),
    prs_bedrijf_uurloon
        NUMBER(6,2),
    prs_leverancier_nr
        VARCHAR2(50),
    prs_overeenkomst_nr
        VARCHAR2(20),
    prs_overeenkomst_datum
        DATE,
    prs_bedrijf_email
        VARCHAR2(100),
    prs_bedrijf_order_confirm  /* 1=leverancier bevestigt opdrachtontvangst expliciet, 0/null=veronderstelt bevestigd (non-SOAP only) */
        NUMBER(1),
    prs_bedrijf_image_loc
        VARCHAR2(256),
    prs_bedrijf_details_loc
        VARCHAR2(256),
    prs_bedrijf_xmldetails_loc
        VARCHAR2(256),
    prs_bedrijf_xmlcatalogus_loc
        VARCHAR2(256),
    prs_bedrijf_bes_limiet
        NUMBER(8,2),
    prs_bedrijf_bes_kosten
        NUMBER(8,2),
--   fin_btwtabel_key
--       NUMBER(10)
--       CONSTRAINT prs_r_fin_btwtabel_key1 REFERENCES fin_btwtabel(fin_btwtabel_key),
    prs_bedrijf_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_bedrijf_aanmaak, prs_c_prs_bedrijf_aanmaak),
    prs_bedrijf_verwijder
        DATE
        DEFAULT NULLDATUM,
    prs_bedrijf_leverancier -- bedrijf is leverancier (o.a. voor LEV)
        NUMBER(1)
        CONSTRAINT prs_c_prs_bedrijf_leverancier CHECK(prs_bedrijf_leverancier IS NULL
                                                    OR prs_bedrijf_leverancier = 1 ),
    prs_bedrijf_uitvoerende /* bedrijf is uitvoerende in opdrachten */
        NUMBER(1)
        DEFAULT 1 /* LOG#1691 */
        CONSTRAINT prs_c_prs_bedrijf_uitvoerende CHECK(prs_bedrijf_uitvoerende IS NULL
                                                    OR prs_bedrijf_uitvoerende = 1 ),
    prs_bedrijf_contract /* een contract kan worden afgesloten met bedrijf */
        NUMBER(1)
        CONSTRAINT prs_c_prs_bedrijf_contract CHECK(prs_bedrijf_contract IS NULL
                                                 OR prs_bedrijf_contract = 1 ),
    prs_bedrijf_intern /* is onderdeel van de eigen organisatie */
        NUMBER(1)
        CONSTRAINT prs_c_prs_bedrijf_intern CHECK(prs_bedrijf_intern IS NULL
                                                 OR prs_bedrijf_intern = 1 ),
    prs_bedrijf_huurder /* is huurder */
        NUMBER(1)
        CONSTRAINT prs_c_prs_bedrijf_huurder CHECK(prs_bedrijf_huurder IS NULL
                                                 OR prs_bedrijf_huurder = 1 ),
    prs_bedrijf_bezoeker /* kan als bezoekend bedrijf worden aangemerkt */
        NUMBER(1)
        CONSTRAINT prs_c_prs_bedrijf_bezoeker CHECK(prs_bedrijf_bezoeker IS NULL
                                                 OR prs_bedrijf_bezoeker = 1 ),
    prs_bedrijf_ingids /* is zichtbaar in telefoongids */
        NUMBER(1)
        CONSTRAINT prs_c_prs_bedrijf_ingids CHECK(prs_bedrijf_ingids IS NULL
                                                 OR prs_bedrijf_ingids = 1 ),
    prs_bedrijf_bes_factor  /* FSN#19902, voor PRD, had bijna een flex kunnen zijn */
        NUMBER(8,6)
        DEFAULT 1,
        CONSTRAINT prs_u_prs_bedrijf_naam_upper UNIQUE(prs_bedrijf_naam_upper, prs_bedrijf_verwijder),
    prs_bedrijf_t_uitvoertijd
        MLD_T_UITVOERTIJD
        CONSTRAINT prs_c_prs_bedrijf_t_uitvtijd CHECK(prs_bedrijf_t_uitvoertijd.tijdsduur >= 0), /* of null */
    prs_relatietype_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_relatietype_key REFERENCES prs_relatietype(prs_relatietype_key)
);
ALTER TABLE prs_bedrijf MODIFY prs_bedrijf_t_uitvoertijd DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);

ALTER TABLE ins_srtdeel
ADD
(
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT ins_r_prs_bedrijf_key2 REFERENCES prs_bedrijf(prs_bedrijf_key)
);

ALTER TABLE fac_import_app
ADD
(
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE
);

/* Kruistabel met bedrijfsrelaties (use case Mareon): bedrijf 1 doet iets voor bedrijf 2 of andersom */
CREATE_TABLE(prs_bedrijf_bedrijf,0)
(
   prs_bedrijf_bedrijf_key
        NUMBER (10) PRIMARY KEY NOT NULL,
   prs_bedrijf_key1
        NUMBER (10)
        CONSTRAINT prs_r_prs_bedrijf_bedrijf1 REFERENCES prs_bedrijf (prs_bedrijf_key) NOT NULL,
   prs_bedrijf_externid1
        VARCHAR2(60),     -- optional remote key of 1
   prs_bedrijf_key2
        NUMBER (10)
        CONSTRAINT prs_r_prs_bedrijf_bedrijf2 REFERENCES prs_bedrijf (prs_bedrijf_key) NOT NULL,
   prs_bedrijf_externid2
        VARCHAR2(60),     -- optional remote key of 2
   prs_bedrijf_bedrijf_startdatum
        DATE
        DEFAULT SYSDATE,
   prs_bedrijf_bedrijf_einddatum
        DATE,
   prs_bedrijf_bedrijf_status
        NUMBER(1)         -- voor mld_opdr_teverzenden: 0=niet te verzenden 1=te verzenden
        DEFAULT(0)
        NOT NULL,
   prs_bedrijf_bedrijf_charged
        NUMBER(1)         -- 0=niemand, 1=opdrachtnemer, 2=opdrachtgever
        DEFAULT(0)
        NOT NULL,
   prs_bedrijf_bedrijf_chargemode
        NUMBER(4),        -- een codering voor de "premiummode" waaruit afgeleid kan worden hoe de kosten worden berekend (per opdracht, per bestelling, enz), enigszins futureproof
   prs_bedrijf_bedrijf_fee1
        NUMBER(6,2),      -- bedrag in euro's tbv berekening icm chargemode
   prs_bedrijf_bedrijf_fee2
        NUMBER(6,2),      -- bedrag in euro's tbv berekening icm chargemode
   prs_bedrijf_bedrijf_fee3
        NUMBER(6,2)       -- bedrag in euro's tbv berekening icm chargemode
);

/*  Kruistabel met elektronische adressen van een bedrijf, toegepast door
 *  PutOrders voor Bestellingen, Contracten en Opdrachten. Bij Opdrachten kan
 *  er per opdrachttype een ander adres zijn, het record met mld_typeopdr_key NULL
 *  is de fallback voor de niet benoemde opdrachttypes
 */
CREATE_TABLE(prs_bedrijfadres, 0) (
    prs_bedrijfadres_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_bedrijfadres_key PRIMARY KEY,
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_bedrijf_key6 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
    alg_district_key
        NUMBER(10)
        CONSTRAINT prs_r_alg_district_key REFERENCES alg_district(alg_district_key) ON DELETE CASCADE,
    alg_locatie_key
        NUMBER(10)
        CONSTRAINT prs_r_alg_locatie_key REFERENCES alg_locatie(alg_locatie_key) ON DELETE CASCADE,
    prs_bedrijfadres_type /* O=Order, B=Bestelling, V=Voorraadinfo, C=Contract, N=Notificatie */
        VARCHAR2(1)
        CONSTRAINT prs_c_prs_bedrijfadrestype CHECK (prs_bedrijfadres_type IN ('O','B','C','V','N')),
-- In MLD_TAB.SRC:
--    mld_typeopdr_key
--        NUMBER(10) CONSTRAINT prs_r_mld_typeopdr_key REFERENCES mld_typeopdr(mld_typeopdr_key) ON DELETE CASCADE,
    prs_bedrijfadres_url    /* voor digitale verzending */
        VARCHAR2(512),
    prs_bedrijfadres_ordermode /* bitwise, TBD */
        NUMBER(3)  DEFAULT 0,
    prs_bedrijfadres_soapversion /* future use, eg 1.1 or 1.2 */
        VARCHAR2(10),
    prs_bedrijfadres_soapaction
        VARCHAR2(128),
    prs_bedrijfadres_certificate
        VARCHAR2(255),
    prs_bedrijfadres_xsl
        VARCHAR2(256),
    prs_bedrijfadres_ext
        VARCHAR2(10),
    prs_bedrijfadres_username
        VARCHAR2(32),
    prs_bedrijfadres_password
        VARCHAR2(32),
    prs_bedrijfadres_authmethod /* 0=http.open, 1=Forces basic, 2=custom header, 3=add to xml, >4=future use */
        NUMBER(3)
        DEFAULT 0
        NOT NULL,
--    prs_bedrijfadres_lockuser_key
--        NUMBER(10)
--        CONSTRAINT prs_r_prs_bedrijfadres_lckusr REFERENCES prs_perslid(prs_perslid_key),
    prs_bedrijfadres_locksecret
        VARCHAR2(128),
    prs_bedrijfadres_lockexpire
        NUMBER(10),
    prs_bedrijfadres_attachfile
        VARCHAR2(256),
    prs_bedrijfadres_flexfiles /* 0=default (volgens S("puo_order_flexfiles")), 1=wel, 2=niet */
        NUMBER(3)
        DEFAULT 0
        NOT NULL,
    prs_bedrijfadres_encoding /* 0=text/xml, 1=multipart/form-data, 2=application/json, , 3=text/html */
        NUMBER(3)
        DEFAULT 0
        NOT NULL,
    prs_bedrijfadres_loglevel
        NUMBER(1)
        DEFAULT 0
        NOT NULL
);

CREATE_TABLE(prs_kostenplaatsgrp,0) (
   prs_kostenplaatsgrp_key
       NUMBER (10) PRIMARY KEY,
   prs_kostenplaatsgrp_nr
       VARCHAR2(30),
   prs_kostenplaatsgrp_oms
       VARCHAR2(60)
       NOT NULL,
   prs_kostenplaatsgrp_limiet
       NUMBER(8),
   prs_kostenplaatsgrp_limperiode /* 0(of NULL)=geen(oneindig), 1=maand, 2=jaar */
       NUMBER(1),
--   prs_perslid_key
--       NUMBER(10)
--       CONSTRAINT prs_r_prs_perslid_key11 REFERENCES prs_perslid(prs_perslid_key),
   prs_kostenplaatsgrp_aanmaak
       DATE
       DEFAULT SYSDATE
);

CREATE_TABLE(prs_kostenplaats,0) (
   prs_kostenplaats_key
       NUMBER (10) PRIMARY KEY,
   prs_kostenplaats_nr
       VARCHAR2(30) NOT NULL,
   prs_kostenplaats_upper
       VARCHAR2(30),
   prs_kostenplaats_omschrijving
       VARCHAR2(60),
--   prs_perslid_key
--       NUMBER(10)
--       CONSTRAINT prs_r_prs_perslid_key9 REFERENCES prs_perslid(prs_perslid_key),
   prs_kostenplaats_module
       VARCHAR2(3) NOT NULL
       CONSTRAINT prs_c_prs_kostenplaats CHECK (prs_kostenplaats_module IN ('PRS', 'ALG', 'PRJ')),
   prs_kostenplaats_begin
       DATE DEFAULT SYSDATE,
   prs_kostenplaats_eind
       DATE,
   prs_kostenplaatsgrp_key
       NUMBER(10)
       CONSTRAINT prs_r_prs_kostenplaatsgrp_key REFERENCES prs_kostenplaatsgrp(prs_kostenplaatsgrp_key),
   prs_kostenplaats_aanmaak
       DATE DEFAULT SYSDATE,
   prs_kostenplaats_verwijder
       DATE,
   prs_kostenplaats_limiet --- Indien leeg, zie prs_kostenplaatsdisc
       NUMBER(8),
   prs_kostenplaats_limietperiode -- 0(of NULL)=geen(oneindig) (default), 1=maand, 2=jaar
       NUMBER(1),
   prs_kostenplaats_extern -- 0=intern, 1=extern (gebruikt bij prijsberekeningen)
       NUMBER(1)
       DEFAULT 0,
   prs_kostenplaats_fiat -- 0=geen, 1=wel fiattering
       NUMBER(1)
       DEFAULT 1
       CONSTRAINT prs_c_prs_kostenplaat_fiat CHECK(prs_kostenplaats_fiat IS NOT NULL)
       CONSTRAINT prs_c_prs_kostenplaat_fiat1 CHECK(prs_kostenplaats_fiat IN (0,1)),
   ins_discipline_key
       NUMBER(10)
       CONSTRAINT prs_r_ins_discipline_key2 REFERENCES ins_tab_discipline(ins_discipline_key),
CONSTRAINT prs_u_prs_kostenplaats_upper UNIQUE(prs_kostenplaats_upper, prs_kostenplaats_verwijder, ins_discipline_key)
);

ALTER TABLE alg_gebouw ADD
(
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT alg_r_prs_afdeling_kostenp1 REFERENCES prs_kostenplaats(prs_kostenplaats_key)
);

ALTER TABLE alg_terreinsector ADD
(
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT alg_r_prs_afdeling_kostenp2 REFERENCES prs_kostenplaats(prs_kostenplaats_key)
);

ALTER TABLE ins_srtcontrole ADD
(
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT ins_r_prs_kostenplaats_key1 REFERENCES prs_kostenplaats(prs_kostenplaats_key)
);

/* disciplineafhankelijke afdelingsbudgetten (=kostenplaatsbudgetten),
 * vergelijkbaar met fac_profielwaarde voor persoonlijke budgetten
 * als prs_kostenplaats_limiet gevuld is, dan wordt die gebruikt
 * als die leeg is wordt hier gekeken of er een limiet voor de catalogus is
 * en zo nee, dan is er dus geen limiet.
 * De periode is in alle gevallen prs_kostenplaats_limietperiode
 */
CREATE_TABLE(prs_kostenplaatsdisc, 0) (
    prs_kostenplaatsdisc_key
        NUMBER(10) PRIMARY KEY,
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_kostenplaats_key4 REFERENCES prs_kostenplaats(prs_kostenplaats_key) ON DELETE CASCADE,
    ins_discipline_key
        NUMBER(10)
        REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE,
    prs_kostenplaatsdisc_limiet
        NUMBER(8)
        NOT NULL,
    prs_kostenplaatsdisc_aanmaak
       DATE
       DEFAULT SYSDATE
);

CREATE_TABLE(prs_afdeling,0)
(
    prs_afdeling_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_afdeling_key PRIMARY KEY,
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_bedrijf_key3 REFERENCES prs_bedrijf(prs_bedrijf_key),
    prs_afdeling_parentkey
        NUMBER(10)
        CONSTRAINT prs_r_prs_afdeling_parentkey REFERENCES prs_afdeling(prs_afdeling_key),
    prs_afdeling_naam
        VARCHAR2(15)
        NOT_NULL(prs_afdeling_naam, prs_c_prs_afdeling_naam),
    prs_afdeling_upper
        VARCHAR2(15)
        NOT_NULL(prs_afdeling_upper, prs_c_prs_afdeling_upper),
    prs_afdeling_omschrijving
        VARCHAR2(60),
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT alg_r_prs_afdeling_kostenp REFERENCES prs_kostenplaats(prs_kostenplaats_key),
--    mld_adres_key
--        NUMBER(10)
--        CONSTRAINT alg_r_mld_adres_key2 REFERENCES mld_adres(mld_adres_key),
    prs_afdeling_externid    /* voor koppelingen met externe systemen, bijvoorbeeld een externe GUID */
        VARCHAR2(128),
    prs_afdeling_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_afdeling_aanmaak, prs_c_prs_afdeling_aanmaak),
    prs_afdeling_verwijder
        DATE
        DEFAULT NULLDATUM,
    CONSTRAINT prs_u_prs_afdeling_upper UNIQUE(prs_afdeling_upper, prs_afdeling_parentkey, prs_bedrijf_key, prs_afdeling_verwijder),
    CONSTRAINT prs_c_prs_afdeling_parent
        CHECK ((prs_afdeling_parentkey IS NULL AND prs_bedrijf_key IS NOT NULL)
              OR (prs_afdeling_parentkey IS NOT NULL AND prs_bedrijf_key IS NULL))
);

ALTER TABLE alg_terreinsector ADD
(
    prs_afdeling_key
       NUMBER(10)
       CONSTRAINT alg_r_prs_afdeling1 REFERENCES prs_afdeling(prs_afdeling_key)
);

CREATE_TABLE(prs_srtperslid,0)
(
    prs_srtperslid_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_srtperslid_key PRIMARY KEY,
    prs_srtperslid_omschrijving
        VARCHAR2(60)
        NOT_NULL(prs_srtperslid_omschrijving, prs_c_prs_srtperslid_omschr),
    prs_srtperslid_upper
        VARCHAR2(60)
        NOT_NULL(prs_srtperslid_upper, prs_c_prs_srtperslid_upper),
    prs_bedrijf_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_bedrijf_key REFERENCES prs_bedrijf(prs_bedrijf_key),
    prs_srtperslid_uurloon
        NUMBER(6,2),
    prs_srtperslid_opp
        NUMBER(9,2)
        CONSTRAINT prs_c_prs_srtperslid_opp CHECK(prs_srtperslid_opp >= 0),
    prs_srtperslid_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_srtperslid_aanmaak, prs_c_prs_srtperslid_aanmaak),
    prs_srtperslid_verwijder
        DATE
        DEFAULT NULLDATUM,
    CONSTRAINT prs_u_prs_srtperslid_upper UNIQUE(prs_srtperslid_upper, prs_srtperslid_verwijder)
);


CREATE_TABLE(prs_werkplek,0)
(
    prs_werkplek_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_werkplek_key PRIMARY KEY,
    prs_werkplek_module
        VARCHAR2(3),
    prs_werkplek_volgnr
        NUMBER(4)
        NOT_NULL(prs_werkplek_volgnr, prs_c_prs_werkplek_volgnr),
    prs_werkplek_omschrijving
        VARCHAR2(30),
    prs_werkplek_type
        NUMBER(1)
        DEFAULT 0
        CONSTRAINT prs_c_prs_werkplek_type CHECK(prs_werkplek_type IN (0,1,2)), /* 0=vast, 1=flex, 2=tbd*/
    prs_werkplek_vastopp
        NUMBER(1)
        CONSTRAINT prs_c_prs_werkplek_vastopp CHECK(prs_werkplek_vastopp IS NULL
                                                 OR prs_werkplek_vastopp = 1),
    prs_werkplek_opp
        NUMBER(8,2)
        CONSTRAINT prs_c_prs_werkplek_opp CHECK(prs_werkplek_opp >= 0
                                             OR prs_werkplek_opp IS NULL),
    prs_werkplek_virtueel
        NUMBER(1)
        DEFAULT 0
        CONSTRAINT prs_c_werkplek_virtueel1 CHECK (prs_werkplek_virtueel=0 OR prs_werkplek_virtueel=1),
    prs_alg_ruimte_key
        NUMBER(10)
        NOT_NULL(prs_alg_ruimte_key, prs_r_prs_alg_ruimte_key1)
        CONSTRAINT prs_r_prs_alg_ruimte_key2 REFERENCES alg_ruimte(alg_ruimte_key),
    prs_werkplek_dwgx
        NUMBER(10,3),
    prs_werkplek_dwgy
        NUMBER(10,3),
    prs_werkplek_dwgz
        NUMBER(10,3),
    prs_werkplek_dwgrotatie
        NUMBER(5,1),
    prs_werkplek_dwgschaal
        NUMBER(5,2),
    prs_werkplek_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_werkplek_aanmaak, prs_c_prs_werkplek_aanmaak),
    prs_werkplek_getekend
        DATE
        DEFAULT NULLDATUM,
    CONSTRAINT prs_u_prs_werkplek_volgnr UNIQUE(prs_alg_ruimte_key, prs_werkplek_volgnr)
);


CREATE_TABLE(prs_perslid,0)
(
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_perslid_key PRIMARY KEY,
    prs_perslid_module
        VARCHAR2(3),
    prs_srtperslid_key
        NUMBER(10)
        NOT_NULL(prs_srtperslid_key, prs_r_prs_srtperslid_key1)
        CONSTRAINT prs_r_prs_srtperslid_key2 REFERENCES prs_srtperslid(prs_srtperslid_key),
    prs_afdeling_key
        NUMBER(10)
        NOT_NULL(prs_afdeling_key, prs_c_prs_prs_afdeling_key)
        CONSTRAINT prs_r_prs_afdeling_key REFERENCES prs_afdeling(prs_afdeling_key),
    prs_perslid_naam
        VARCHAR2(60)
        NOT_NULL(prs_perslid_naam, prs_c_prs_perslid_naam),
    prs_perslid_upper
        VARCHAR2(60)
        NOT_NULL(prs_perslid_upper, prs_c_prs_perslid_upper),
    prs_perslid_tussenvoegsel
        VARCHAR2(15),
    prs_perslid_voorletters
        VARCHAR2(15),
    prs_perslid_voornaam
        VARCHAR2(30),
    prs_perslid_titel
        VARCHAR2(15),
    prs_perslid_geslacht
        NUMBER(1),   -- 1=man; 0=vrouw (geen M/V ivm international)
    prs_perslid_initialen
        VARCHAR2(10),
    prs_perslid_init_upper
        VARCHAR2(10),
    prs_perslid_nr
        VARCHAR2(16),
    prs_perslid_oslogin
        VARCHAR2(30)
        CONSTRAINT prs_c_prs_perslid_oslogin UNIQUE,
    prs_perslid_oslogin2
        VARCHAR2(30)
        CONSTRAINT prs_c_prs_perslid_oslogin2 UNIQUE,
    prs_perslid_salt
        VARCHAR2(32),
    prs_perslid_wachtwoord_hash
        VARCHAR2(128),
    prs_perslid_wachtwoord_exp
        DATE,
    prs_perslid_authenticatie
        VARCHAR2(128),
    prs_perslid_authenticatie_exp
        DATE,
    prs_perslid_otpsecret
        VARCHAR2(128),
    prs_perslid_otpcounter
        NUMBER(10),
    prs_perslid_apikey
        VARCHAR2(128),
    prs_perslid_flags -- documentatie in appl/shared/user.inc
        NUMBER(10)
        DEFAULT 0,
    prs_perslid_lang
        VARCHAR2(3),
    prs_perslid_dienstverband
        NUMBER(5,2)
        DEFAULT 100
        CONSTRAINT prs_c_prs_perslid_dienstverb CHECK(prs_perslid_dienstverband BETWEEN 0 AND 100),
    prs_perslid_opp
        NUMBER(9,2)
        CONSTRAINT prs_c_prs_perslid_opp CHECK(prs_perslid_opp >= 0),
    prs_perslid_ingangsdatum
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_perslid_ingangsdatum, prs_c_prs_perslid_ingangsdatum),
    prs_perslid_einddatum
        DATE,
    prs_perslid_uurloon
        NUMBER(6,2)
        CONSTRAINT prs_c_prs_perslid_uurloon CHECK(NVL(prs_perslid_uurloon, 0) >= 0),
    prs_perslid_telefoonnr
        VARCHAR2(15),
    prs_perslid_mobiel
        VARCHAR2(15),
    prs_perslid_email
        VARCHAR2(200),
    prs_perslid_ingids /* is zichtbaar in telefoongids */
        NUMBER(1)
        DEFAULT 1
        CONSTRAINT prs_c_prs_perslid_ingids CHECK(prs_perslid_ingids IS NULL
                                                 OR prs_perslid_ingids = 1 ),
    fac_profiel_key
        NUMBER (10)
        CONSTRAINT prs_r_fac_profiel_key REFERENCES fac_profiel(fac_profiel_key),
// persoonlijke srtnotificatie-mode indien de fac_srtnotificatie.fac_srtnotificatie_usermode=1
// voor een notificatie die aan mij gericht is.
    prs_perslid_srtnoti_mode
        NUMBER(3),
    prs_perslid_systeemadres /* alleen voor systeembeheerders en voor SYSTEM-personen. Bevat de SOAP-url voor terugkoppeling (MAYF#20525)*/
        VARCHAR2(200),
--    mld_adres_key
--        NUMBER(10)
--        CONSTRAINT prs_r_mld_adres_key2 REFERENCES mld_adres(mld_adres_key),
    prs_perslid_login
        DATE,
    alg_onroerendgoed_keys  /* de actueel geregistreerde plaats; key, type en bezetdatum horen bij elkaar */
        NUMBER(10),
    alg_onroerendgoed_type
        VARCHAR2(1)
        CONSTRAINT prs_c_alg_onroerendgoed_type CHECK(alg_onroerendgoed_type IN ('L', 'G', 'V', 'R', 'T', 'W')),
    prs_perslid_bezetdatum
        DATE,
    prs_perslid_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_perslid_aanmaak, prs_c_prs_perslid_aanmaak),
    prs_perslid_verwijder
        DATE
        DEFAULT NULLDATUM,
    prs_perslid_inactief
        DATE,
    prs_perslid_options // JSON
        VARCHAR2(4000),
    prs_perslid_credentials_datum /* wanneer voor het laatst gewijzigd. Oudere sessie ongeldig */
        DATE
        DEFAULT SYSDATE NOT NULL,
    prs_perslid_externid    /* voor koppelingen met externe systemen, bijvoorbeeld een externe GUID */
        VARCHAR2(128),
    prs_perslid_externoslogin -- SCIM only, not uppercased
        VARCHAR2(30),
    prs_perslid_terms_datum
        DATE,
    prs_perslid_terms_version /* filename of accepted terms of condition */
        VARCHAR2(200),
    prs_perslid_timezone
        VARCHAR2(40),
    CONSTRAINT prs_c_prs_perslid_datums CHECK(prs_perslid_einddatum >= prs_perslid_ingangsdatum),
    prs_perslid_loglevel
        NUMBER(1)
        DEFAULT 0
        NOT NULL
);

// Without this column, that table is useless, but we must define it here, after prs_perslid.
ALTER TABLE fac_gebruikersgroep ADD (
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
        CONSTRAINT fac_c_prs_perslid_key CHECK(prs_perslid_key IS NOT NULL)
);

ALTER TABLE fac_perfmon_sample ADD (
  prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key1 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);

ALTER TABLE fac_notificatie ADD(
  prs_perslid_key_sender
    NUMBER(10)
    REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
  prs_perslid_key_receiver
    NUMBER(10)
    REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);

ALTER TABLE fac_activiteit ADD (
  prs_perslid_key
    NUMBER (10)
    REFERENCES prs_perslid(prs_perslid_key),
  fac_activiteit_user_key
    NUMBER(10)
    REFERENCES prs_perslid(prs_perslid_key)
);

ALTER TABLE fac_tracking ADD (
  prs_perslid_key
  NUMBER (10)
  REFERENCES prs_perslid (prs_perslid_key) ON DELETE SET NULL
);

ALTER TABLE fac_nieuws ADD (
  prs_perslid_key
  NUMBER(10)
  REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
);

ALTER TABLE fac_faq ADD (
  prs_perslid_key
  NUMBER(10)
  REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
);

ALTER TABLE fac_session ADD (
  prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key2 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);
ALTER TABLE fac_bookmark ADD (
  prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key3 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);
ALTER TABLE fac_bookmark ADD (
  prs_perslid_key_auth
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key4 REFERENCES prs_perslid(prs_perslid_key)
);
ALTER TABLE fac_menu ADD (
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key7 REFERENCES prs_perslid (prs_perslid_key) ON DELETE CASCADE
);
ALTER TABLE fac_qvw_ticket ADD (
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_qvw_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);
ALTER TABLE fac_usrrap ADD (
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);
ALTER TABLE fac_gui_counter ADD (
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_guicnt_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
);

ALTER TABLE alg_gebouw ADD (
    prs_perslid_key_verantw
        NUMBER(10)
        CONSTRAINT alg_r_prs_perslid_key1 REFERENCES prs_perslid(prs_perslid_key),
    prs_perslid_key_verantw2
        NUMBER(10)
        CONSTRAINT alg_r_prs_perslid_key2 REFERENCES prs_perslid(prs_perslid_key)
);

ALTER TABLE prs_bedrijfadres
    ADD prs_bedrijfadres_lockuser_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_bedrijfadres_lckser REFERENCES prs_perslid(prs_perslid_key);

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

ALTER TABLE prs_kostenplaats ADD
(
   prs_perslid_key
       NUMBER(10)
       CONSTRAINT prs_r_prs_perslid_key9 REFERENCES prs_perslid(prs_perslid_key)
);

ALTER TABLE fac_import ADD
(
  prs_perslid_key
     NUMBER(10)
     CONSTRAINT fac_r_prs_perslid_key5 REFERENCES prs_perslid(prs_perslid_key)
);

ALTER TABLE ins_deel
ADD
(    prs_perslid_key_beh
        NUMBER(10)
        CONSTRAINT ins_r_prs_perslid_key_beh REFERENCES prs_perslid (prs_perslid_key)
);

ALTER TABLE ins_scenario
ADD
(    prs_perslid_key
        NUMBER(10)
        CONSTRAINT ins_r_prs_perslid_key0 REFERENCES prs_perslid(prs_perslid_key)
);
/* Dat iemand ooit geinspecteerd heeft is geen reden om die niet te mogen verwijderen
   en de inspectie blijft evenzogoed als je niet meer weet wie het gedaan heeft,
   vandaar on delete set null */
ALTER TABLE ins_deelsrtcontrole
ADD
(
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT ins_r_prs_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
);

ALTER TABLE fac_kenmwaarden
ADD
(
    prs_perslid_key
        NUMBER(10)
        CONSTRAINT fac_r_prs_perslid_key8 REFERENCES prs_perslid(prs_perslid_key),
        CONSTRAINT fac_c_prs_perslid_key1 CHECK(prs_perslid_key IS NOT NULL)
);

ALTER TABLE fac_kenmwaarden
ADD
CONSTRAINT fac_u_fac_kenmwaarden UNIQUE(fac_kenmwaarden_module, fac_kenmwaarden_refkey, fac_kenmwaarden_kenmerk_key, prs_perslid_key);

ALTER TABLE fac_setting ADD
(
   prs_perslid_key
       NUMBER(10)
       CONSTRAINT prs_perslid_key12 REFERENCES prs_perslid (prs_perslid_key)
);

ALTER TABLE fac_audit ADD
(
   prs_perslid_key
       NUMBER(10)
       CONSTRAINT fac_r_prs_perslid_key9 REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
);

ALTER TABLE ins_deel_note
ADD
(
    prs_perslid_key
        NUMBER(10)
        REFERENCES prs_perslid (prs_perslid_key) ON DELETE SET NULL
);

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

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

COMMENT ON COLUMN prs_kostenplaats.prs_perslid_key IS 'Budgethouder';

// key_alt is een vervanger voor key als frontend
// Dit is een operationele tabel, verwijderveld zinloos
//
CREATE_TABLE(prs_collega,0)
(
    prs_collega_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_collega_key PRIMARY KEY,
    prs_perslid_key
        NUMBER(10)
        NOT_NULL(prs_perslid_key, prs_r_prs_perslid_key12)
        CONSTRAINT prs_r_prs_perslid_key13 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
    prs_perslid_key_alt
        NUMBER(10)
        NOT_NULL(prs_perslid_key_alt, prs_r_prs_perslid_key14)
        CONSTRAINT prs_r_prs_perslid_key15 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
    prs_collega_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_collega_aanmaak, prs_c_prs_collega_aanmaak)
);

CREATE_TABLE(prs_perslidkostenplaats,0)
(
    prs_perslidkostenplaats_key
        NUMBER(10) PRIMARY KEY,
    prs_perslid_key
        NUMBER(10) NOT NULL
        CONSTRAINT prs_r_prs_perslid_key10 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_kostenplaats_key1 REFERENCES prs_kostenplaats(prs_kostenplaats_key) ON DELETE CASCADE,
    prs_perslidkostenplaats_boeken
        NUMBER(1)
        DEFAULT 1
        CONSTRAINT prs_c_prs_pkp_boeken CHECK(prs_perslidkostenplaats_boeken IN (0,1)),
    prs_perslidkostenplaats_inzage
        NUMBER(1)
        DEFAULT 1
        CONSTRAINT prs_c_prs_pkp_inzage CHECK(prs_perslidkostenplaats_inzage IN (0,1)),
    prs_perslidkostenplaats_aanmk
        DATE
        DEFAULT SYSDATE
);

// Had voor hetzelfde geld prs_afdelingruimte geheten
CREATE_TABLE(prs_ruimteafdeling,0)
(
    prs_ruimteafdeling_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_ruimteafdeling_key PRIMARY KEY,
    prs_afdeling_key
        NUMBER(10)
        NOT_NULL(prs_afdeling_key, prs_c_prs_afdeling_key3)
        CONSTRAINT prs_r_prs_ra_afdeling_key REFERENCES prs_afdeling(prs_afdeling_key),
    alg_ruimte_key
        NUMBER(10)
        NOT_NULL(alg_ruimte_key, prs_c_alg_ruimte_key)
        CONSTRAINT prs_r_alg_ruimte_key1 REFERENCES alg_ruimte(alg_ruimte_key),
    prs_ruimteafdeling_bezetting
        NUMBER(8,5)
        DEFAULT 100
        CONSTRAINT prs_c_prs_riumteafd_bezetting2 CHECK
         (prs_ruimteafdeling_bezetting is not null AND prs_ruimteafdeling_bezetting BETWEEN 0 AND 100),
    prs_ruimteafdeling_aanmaak
        DATE
        DEFAULT SYSDATE,
    prs_ruimteafdeling_verwijder
        DATE
        DEFAULT NULLDATUM,
    CONSTRAINT prs_u_ruimteafdeling UNIQUE(prs_afdeling_key, alg_ruimte_key, prs_ruimteafdeling_verwijder)
);


CREATE_TABLE(prs_perslidwerkplek,0)
(
    prs_perslidwerkplek_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_perslidwerkplek_key PRIMARY KEY,
    prs_perslid_key
        NUMBER(10)
        NOT_NULL(prs_perslid_key, prs_c_prs_perslid_key3)
        CONSTRAINT prs_r_prs_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
    prs_werkplek_key
        NUMBER(10)
        NOT_NULL(prs_werkplek_key, prs_c_prs_perslidwp_key)
        CONSTRAINT prs_r_prs_werkplek_key REFERENCES prs_werkplek(prs_werkplek_key) ON DELETE CASCADE,
    prs_perslidwerkplek_bezetting
        NUMBER(3)
        DEFAULT 100
        CONSTRAINT prs_c_prs_perslidwp_bezetting2 CHECK
         (prs_perslidwerkplek_bezetting is not null and prs_perslidwerkplek_bezetting BETWEEN 0 AND 100),
    prs_perslidwerkplek_volgnr  -- UWVA#18996
        NUMBER(2),
    prs_perslidwerkplek_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_perslidwerkplek_aanmaak, prs_c_prs_perslidwp_aanmaak),
    CONSTRAINT prs_u_perslidwerkplek UNIQUE(prs_perslid_key, prs_werkplek_key)
);



CREATE_TABLE(prs_kenmerk,0)
    (prs_kenmerk_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_kenmerk_key PRIMARY KEY
    ,prs_kenmerk_niveau
        VARCHAR2(1)
        CONSTRAINT prs_c_prs_kenmerk_niveau2 CHECK
         (prs_kenmerk_niveau IS NOT NULL and prs_kenmerk_niveau IN ('P','A','B','C'))
    ,prs_kenmerk_volgnr
        NUMBER(3)
        NOT NULL
    ,prs_kenmerk_omschrijving
        VARCHAR2(50)
    ,prs_kenmerk_upper
        VARCHAR2(50)
    ,prs_kenmerk_hint
        VARCHAR2(255)
    ,prs_kenmerk_default
        VARCHAR2(4000)
    ,prs_kenmerk_dimensie
        VARCHAR2(10)
    ,prs_kenmerk_kenmerktype
        VARCHAR2(1)
        CONSTRAINT prs_c_prs_kenmerk_type2 CHECK
         (prs_kenmerk_kenmerktype IN ('C','N','D','T','R','X','L','Q','F','M','E','S','l','B'))
    ,prs_kenmerk_systeem
        NUMBER(2)
        DEFAULT 0
        NOT NULL
    ,prs_kenmerk_toonbaar
        NUMBER(1)
    ,prs_kenmerk_uniek
        NUMBER(1)
    ,prs_kenmerk_regexp
        VARCHAR2(255)
    ,prs_kenmerk_verplicht
        NUMBER(1)
    ,prs_kenmerk_groep
        NUMBER(1)
        DEFAULT 0 NOT NULL
    ,prs_kenmerk_lengte
        NUMBER(4)
    ,prs_kenmerk_dec
        NUMBER(2)
    ,prs_kenmerk_nmin
        NUMBER(10)
    ,prs_kenmerk_nmax
        NUMBER(10)
    ,fac_kenmerkdomein_key
        NUMBER(10)
        CONSTRAINT prs_r_kenmerkdomein_key1 REFERENCES fac_kenmerkdomein(fac_kenmerkdomein_key)
    ,prs_kenmerk_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_kenmerk_aanmaak, prs_c_prs_kenmerk_aanmaak)
    ,prs_kenmerk_verwijder
        DATE
        DEFAULT NULLDATUM
    ,prs_srtperslid_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_srtperslid_key3 REFERENCES prs_srtperslid(prs_srtperslid_key)
);

CREATE_TABLE(prs_kenmerklink,0)
    (prs_kenmerkLink_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_kenmerklink_key PRIMARY KEY
    ,prs_link_key
        NUMBER(10)
    ,prs_kenmerklink_niveau
        VARCHAR2(1)
    ,prs_kenmerk_key
        NUMBER(10)
    ,prs_kenmerklink_waarde
        VARCHAR2(4000)
    ,prs_kenmerklink_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(prs_kenmerklink_aanmaak, prs_c_prs_kenmerklink_aanm)
    ,prs_kenmerklink_verwijder
        DATE
        DEFAULT NULLDATUM
    ,CONSTRAINT prs_u_prs_kenmerklink_key UNIQUE(prs_link_key, prs_kenmerk_key, prs_kenmerklink_verwijder)
);

CREATE_TABLE(prs_contactpersoon, 0)
(
prs_contactpersoon_key
    NUMBER(10)
    PRIMARY KEY,
prs_contactpersoon_naam
    VARCHAR2(30)
    NOT_NULL(prs_contactpersoon_naam, prs_c_contactpersoon_naam),
prs_contactpersoon_tussenv
    VARCHAR2(15),
prs_contactpersoon_voorletters
    VARCHAR2(10),
prs_contactpersoon_voornaam
    VARCHAR2(30),
prs_contactpersoon_aanhef
    VARCHAR2(30),
prs_contactpersoon_titel
    VARCHAR2(10),
prs_contactpersoon_telefoon_1
    VARCHAR2(30),
prs_contactpersoon_telefoon_2
    VARCHAR2(30),
prs_contactpersoon_fax
    VARCHAR2(30),
prs_contactpersoon_email
    VARCHAR2(50),
prs_contactpersoon_functie
    VARCHAR2(60),
prs_contactpersoon_opmerking
    VARCHAR2(255),
prs_contactpersoon_uurloon
    NUMBER(6,2),
prs_bedrijf_key
    NUMBER(10)
    CONSTRAINT prs_r_prs_bedrijf_key4 REFERENCES prs_bedrijf(prs_bedrijf_key),
prs_perslid_key  /* kan eventueel een Facilitor user zijn */
    NUMBER(10)
    CONSTRAINT prs_r_prs_perslid_key16 REFERENCES prs_perslid(prs_perslid_key),
prs_contactpersoon_aanmaak
    DATE
    DEFAULT SYSDATE,
prs_contactpersoon_verwijder
    DATE
);

CREATE_TABLE(prs_contactpersoon_locatie, 0)
(
prs_contactpersoon_locatie_key
    NUMBER(10)
    PRIMARY KEY,
prs_contactpersoon_key
    NUMBER(10)
    CONSTRAINT prs_r_prs_contactpersoon_key REFERENCES prs_contactpersoon(prs_contactpersoon_key) ON DELETE CASCADE,
alg_locatie_key
    NUMBER(10)
    CONSTRAINT prs_r_alg_locatie_key3 REFERENCES alg_locatie(alg_locatie_key)
);


CREATE_TABLE(prs_dienst, 0)
(
prs_dienst_key
    NUMBER(10)
    PRIMARY KEY,
prs_dienst_omschrijving
    VARCHAR2(60)
    NOT_NULL(prs_dienst_omschrijving, prs_c_prs_dienst_omschrijving)
    CONSTRAINT prs_c_prs_dienst_omschr UNIQUE
);

ALTER TABLE ins_srtcontrole ADD
(
    prs_dienst_key NUMBER(10)
        CONSTRAINT ins_r_prs_dienst_key1 REFERENCES prs_dienst(prs_dienst_key)
);

CREATE_TABLE(prs_bedrijfdienstlocatie, 0)  /* intussen feitelijk prs_bedrijfdienstgebouw_of_locatie */
(
prs_bedrijfdienstlocatie_key
    NUMBER(10)
    PRIMARY KEY,
prs_bedrijf_key
    NUMBER(10)
    NOT_NULL(prs_bedrijf_key, prs_c_prs_bedrijf_key2)
    CONSTRAINT prs_r_prs_bedrijf_key5 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
prs_dienst_key
    NUMBER(10)
    NOT_NULL(prs_dienst_key, prs_c_prs_dienst_key1)
    CONSTRAINT prs_r_prs_dienst_key1 REFERENCES prs_dienst(prs_dienst_key) ON DELETE CASCADE,
alg_locatie_key
    NUMBER(10)
    CONSTRAINT prs_r_alg_locatie_key4 REFERENCES alg_locatie(alg_locatie_key) ON DELETE CASCADE,
alg_gebouw_key
    NUMBER(10)
    CONSTRAINT prs_r_alg_gebouw_key1 REFERENCES alg_gebouw(alg_gebouw_key) ON DELETE CASCADE,
prs_bdl_t_uitvoertijd
    MLD_T_UITVOERTIJD
    CONSTRAINT prs_c_prs_bdl_t_uitvoertijd CHECK(prs_bdl_t_uitvoertijd.tijdsduur >= 0), /* of null */
CONSTRAINT prs_u_prs_bedrijfdienstloc_key UNIQUE (prs_bedrijf_key, prs_dienst_key, alg_locatie_key, alg_gebouw_key),
CONSTRAINT prs_c_prs_bedrijfdienstloc CHECK (alg_locatie_key IS NULL OR alg_gebouw_key IS NULL)
);
ALTER TABLE prs_bedrijfdienstlocatie MODIFY prs_bdl_t_uitvoertijd DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);


CREATE_TABLE(prs_project,0) (
    prs_project_key
        NUMBER(10) PRIMARY KEY,
    prs_project_omschrijving
        VARCHAR2(60)
        NOT NULL,
    prs_kostenplaats_key
        NUMBER(10)
        CONSTRAINT prs_r_prs_kostenplaats_key2 REFERENCES prs_kostenplaats(prs_kostenplaats_key),
    prs_project_datum  /* altijd handig */
        DATE
--    mld_adres_key
--        NUMBER(10)
--        CONSTRAINT prs_r_mld_adres_key3 REFERENCES mld_adres(mld_adres_key)
);

CREATE_TABLE(prs_kostensoortgrp,0) (
   prs_kostensoortgrp_key
       NUMBER (10) PRIMARY KEY,
   prs_kostensoortgrp_oms
       VARCHAR2(60)
       NOT NULL,
   prs_kostensoortgrp_altcode
       VARCHAR2(60)
);

CREATE_TABLE(prs_kostensoort,0) (
   prs_kostensoort_key
       NUMBER (10) PRIMARY KEY,
   prs_kostensoort_oms      -- code
       VARCHAR2(60)
       NOT NULL,
   prs_kostensoort_upper
       VARCHAR2(60),
   prs_kostensoort_opmerking   -- omschrijving
       VARCHAR2(255),
   prs_kostensoort_refcode     -- bv grootboeknr
       VARCHAR2(60),
   prs_kostensoort_doorbelasten   -- 1=Ja
       NUMBER(1) DEFAULT(1)
       CONSTRAINT prs_c_prs_kostensoort_doorbel CHECK(prs_kostensoort_doorbelasten IN (0,1)),
   prs_kostensoort_btw   -- BTW doorbelasten 1=Incl.
       NUMBER(1) DEFAULT(1)
       CONSTRAINT prs_c_prs_kostensoort_btw CHECK(prs_kostensoort_btw IN (0,1)),
    prs_kostenplaats_key
       NUMBER(10)
       CONSTRAINT prs_r_prs_kostenplaats_key3 REFERENCES prs_kostenplaats(prs_kostenplaats_key),
   prs_kostensoortgrp_key
       NUMBER(10)
       NOT NULL
       CONSTRAINT prs_r_prs_kostensoortgrp_key REFERENCES prs_kostensoortgrp(prs_kostensoortgrp_key),
   prs_kostensoort_aanmaak
       DATE DEFAULT SYSDATE,
   prs_kostensoort_altcode
       VARCHAR2(60)
--   fin_btwtabelwaarde_key
--       NUMBER(10)
--       CONSTRAINT prs_r_fin_btwtabelwaarde_key REFERENCES fin_btwtabelwaarde (fin_btwtabelwaarde_key)
);

ALTER TABLE ins_tab_discipline ADD
(
    prs_kostensoort_key
        NUMBER(10)
        CONSTRAINT ins_r_prs_kostensoort_key1 REFERENCES prs_kostensoort(prs_kostensoort_key)
);

CREATE_TABLE(prs_kostencombinatie,0) (
   prs_kostencombinatie_key
       NUMBER (10) PRIMARY KEY,
   prs_kostenplaatsgrp_key
       NUMBER(10) NOT NULL
       CONSTRAINT prs_r_prs_kostenplaatsgrp_key2 REFERENCES prs_kostenplaatsgrp(prs_kostenplaatsgrp_key) ON DELETE CASCADE,
   prs_kostensoort_key
       NUMBER(10) NOT NULL
       CONSTRAINT prs_r_prs_kostensoort_key1 REFERENCES prs_kostensoort(prs_kostensoort_key) ON DELETE CASCADE,
   prs_kostencombinatie_aanmaak
       DATE
       DEFAULT SYSDATE
);

CREATE_TABLE(prs_staffel, 0)
(
   prs_staffel_key
    NUMBER (10)  PRIMARY KEY,
   prs_bedrijf_key
    NUMBER (10)  NOT NULL REFERENCES prs_bedrijf (prs_bedrijf_key) ON DELETE CASCADE,
   prs_staffel_grenswaarde
    NUMBER (12),
   prs_staffel_korting
    NUMBER (12, 6) NOT NULL
);

CREATE_TABLE(prs_perslid_inzetbaar, 0)
(
    prs_perslid_inzetbaar_key
        NUMBER(10)
        CONSTRAINT prs_k_prs_inzetbaar_key PRIMARY KEY,
    prs_perslid_key
        NUMBER(10)
        NOT_NULL(prs_perslid_key, prs_c_prs_perslid_key6)
        CONSTRAINT prs_r_prs_perslid_key17 REFERENCES prs_perslid(prs_perslid_key),
    prs_perslid_inzetbaar_van
        NUMBER(4)
        NOT_NULL(prs_perslid_inzetbaar_van, prs_c_prs_perslid_inzet_van)
        CONSTRAINT prs_c_prs_perslid_inzet_van2 CHECK(prs_perslid_inzetbaar_van>=0 AND prs_perslid_inzetbaar_van<1440),
    prs_perslid_inzetbaar_tot
        NUMBER(4)
        NOT_NULL(prs_perslid_inzetbaar_tot, prs_c_prs_perslid_inzet_tot)
        CONSTRAINT prs_c_prs_perslid_inzet_tot2 CHECK(prs_perslid_inzetbaar_tot>=0 AND prs_perslid_inzetbaar_tot<1440),
    prs_perslid_inzetbaar_dag  -- 0=zondag, 1=maandag, 2=dinsdag, 3=woensdag, 4=donderdag, 5=vrijdag, 6=zaterdag
        NUMBER(1)
        NOT_NULL(prs_perslid_inzetbaar_dag, prs_c_prs_perslid_inzet_dag)
);

REGISTERONCE('$Id$')

#endif // PRS
