/*
 * $Revision$
 * $Id$
 */

CREATE_TABLE(fac_volgnrs, 0)
(
    fac_volgnr_srt
        VARCHAR2(30)
        CONSTRAINT fac_k_fac_volgnr_srt PRIMARY KEY,
    fac_volgnr
        NUMBER
        DEFAULT 0
        CONSTRAINT fac_c_fac_volgnr NOT NULL,
    fac_volgnr_periode
        VARCHAR2(10)
        DEFAULT 'YYYY'
        CONSTRAINT fac_c_fac_volgnr_periode NOT NULL,
    fac_volgnr_laatste_datum
        DATE
        DEFAULT SYSDATE
        CONSTRAINT fac_c_fac_volgnr_laatste_datum NOT NULL
);


/* Translation for application messages like ALG_M_01 */
CREATE_TABLE (fac_message,0)
(
    fac_message_code
        VARCHAR2(30)
        CONSTRAINT fac_k_fac_message_code PRIMARY KEY,
    fac_message_text
        VARCHAR2(80)
        NOT_NULL(fac_message_text, fac_c_fac_message_text)
);

/* Translation from system entity names like REGIO to user names */
CREATE_TABLE (fac_module,0)
(
    fac_module_name
        VARCHAR2(30)
        CONSTRAINT fac_k_fac_module_name PRIMARY KEY,
    fac_module_version
        VARCHAR2(10),
    fac_module_date
        VARCHAR2(8),
    fac_module_remark
        VARCHAR2(50),
    fac_module_extern
        NUMBER(1)
);

/* Temporary location of print-outs
 * FAC_RAPPORT_SOORT: 0 - Header, 1 - Body, 2 - Footer.
 */
CREATE_TABLE (fac_rapport,0)
(
    fac_rapport_node
        VARCHAR2(12),
    fac_rapport_volgnr
        NUMBER(10),
    fac_rapport_regel
        VARCHAR2(2000),
    fac_rapport_soort
        NUMBER(1),
    fac_rapport_datum
        DATE
        DEFAULT SYSDATE,
    CONSTRAINT fac_u_fac_rapport UNIQUE(fac_rapport_node, fac_rapport_volgnr, fac_rapport_soort)
);

/* Tabel waarin de keys voor de multi_selectie worden bewaard. */
CREATE_TABLE(fac_selectie, 0)
(
    fac_selectie_node
        VARCHAR2(12),
    fac_selectie_tabel
        VARCHAR2(128),
    fac_selectie_key
        NUMBER(10),
    fac_selectie_datum
        DATE
);

// Tabel voor de autorisatie van voorgedefinieerde functionaliteit in Forms
CREATE_TABLE(fac_functie, 0)
(
    fac_functie_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_functie_key PRIMARY KEY,
    fac_functie_code
        VARCHAR2(10)
        NOT_NULL(fac_functie_code, fac_c_fac_functie_code),
    fac_functie_volgnr
        NUMBER(10),
    fac_functie_omschrijving
        VARCHAR2(30)
        NOT_NULL(fac_functie_omschrijving, fac_c_fac_functie_omschrijving),
    fac_functie_module
        VARCHAR2(3),
    fac_functie_groep       /* for licensecount: 0=personal, 1=professional, 2=appmanagement, null=neutral*/
        NUMBER(1),
    fac_functie_min_level
        NUMBER(2),
    fac_functie_discipline
        NUMBER(1)
        DEFAULT 0
        NOT_NULL(fac_functie_discipline, fac_c_fac_functie_discipline),
    fac_functie_info
        VARCHAR2(320),
    CONSTRAINT fac_u_fac_functie UNIQUE(fac_functie_code)
);

// Tabellen voor autorisatie van gebruikers
CREATE_TABLE(fac_groep, 0)
(
    fac_groep_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_groep_key PRIMARY KEY,
    fac_groep_omschrijving
        VARCHAR2(60)
        CONSTRAINT fac_c_fac_groep_omschrijving CHECK(fac_groep_omschrijving IS NOT NULL),
    fac_groep_upper
        VARCHAR2(60),
--        CONSTRAINT fac_c_fac_groep_upper CHECK(fac_groep_upper IS NOT NULL),
    fac_groep_collega
        NUMBER(1)
        DEFAULT 0 NOT NULL,
    fac_groep_externid    /* voor koppelingen met externe systemen, bijvoorbeeld een externe GUID */
        VARCHAR2(128),
    fac_groep_aanmaak
        DATE
        DEFAULT SYSDATE
        CONSTRAINT fac_c_fac_groep_aanmaak NOT NULL,
    fac_groep_opmerking
        VARCHAR2(320),
    CONSTRAINT fac_u_fac_groep_upper UNIQUE(fac_groep_upper)
);

CREATE_TABLE(fac_gebruikersgroep, 0)
(
    fac_gebruikersgroep_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_gebruikersgroep_key PRIMARY KEY,
    fac_groep_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_groep_key REFERENCES fac_groep(fac_groep_key) ON DELETE CASCADE
        CONSTRAINT fac_c_fac_groep_key CHECK(fac_groep_key IS NOT NULL),
// Note: this column is defined in PRS_TAB.SRC
//    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),
    fac_gebruikersgroep_aanmaak
        DATE
        DEFAULT SYSDATE,
    fac_gebruikersgroep_vervaldatum
        DATE
);

CREATE_TABLE(fac_groeprechten, 0)
(
    fac_groeprechten_key
        NUMBER(10)
        CONSTRAINT fac_k_groeprechten_key PRIMARY KEY,
    fac_groep_key
        NUMBER(10)
        NOT_NULL(fac_groep_key, fac_c_fac_groep_key2)
        CONSTRAINT fac_r_groeprechten_groep REFERENCES fac_groep(fac_groep_key) ON DELETE CASCADE,
    fac_functie_key
        NUMBER(10)
        NOT_NULL(fac_functie_key, fac_c_fac_functie_key1)
        CONSTRAINT fac_r_groeprechten_functie REFERENCES fac_functie(fac_functie_key) ON DELETE CASCADE,
    ins_discipline_key
        NUMBER(10)
        /* defined in ins_tab.src: CONSTRAINT fac_r_groeprechten_disc REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE */,
    fac_gebruiker_prs_level_read   NUMBER(1),
    fac_gebruiker_alg_level_read   NUMBER(1),
    fac_gebruiker_prs_level_write  NUMBER(1),
    fac_gebruiker_alg_level_write  NUMBER(1),
    fac_groeprechten_aanmaak
        DATE
        DEFAULT SYSDATE,
    CONSTRAINT fac_u_fac_groeprechten UNIQUE(FAC_GROEP_KEY, FAC_FUNCTIE_KEY, INS_DISCIPLINE_KEY)
);


CREATE_TABLE(fac_usrtab, 0)
(
    fac_usrtab_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_usrtab_key PRIMARY KEY,
    fac_usrtab_naam
        VARCHAR2(16)
        NOT_NULL(fac_usrtab_naam, fac_c_fac_usrtab_naam),
    fac_usrtab_object
        VARCHAR2(20)
        NOT_NULL(fac_usrtab_object, fac_c_fac_usrtab_object),
    fac_usrtab_omschrijving
        VARCHAR2(30),
    fac_usrtab_parentkey  /* verwijzing naar welke tabel een eventuele data_parentkey verwijst */
        NUMBER(10)
        CONSTRAINT fac_r_usrtab_parentkey REFERENCES fac_usrtab(fac_usrtab_key),
    fac_usrtab_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(fac_usrtab_aanmaak, fac_c_fac_usrtab_aanmaak),
    fac_usrtab_verwijder
        DATE,
    fac_functie_key  /* optional required authorisation for editing, implies WEB_PRSSYS if NULL */
        NUMBER(10)
        CONSTRAINT fac_r_usrtab_functie REFERENCES fac_functie(fac_functie_key) ON DELETE SET NULL,
    CONSTRAINT fac_u_fac_usrtab_object UNIQUE(fac_usrtab_object)
);

CREATE_TABLE(fac_usrdata, 0)
(
    fac_usrdata_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_usrdata_key PRIMARY KEY,
    fac_usrtab_key
        NUMBER(10)
        NOT_NULL(fac_usrtab_key, fac_c_fac_usrtab_key)
        CONSTRAINT fac_r_fac_usrtab_key REFERENCES fac_usrtab(fac_usrtab_key) ON DELETE CASCADE,
    fac_usrdata_code
        VARCHAR2(40)
        NOT_NULL(fac_usrdata_code, fac_c_fac_usrdata_code),
    fac_usrdata_upper
        VARCHAR2(40)
        NOT_NULL(fac_usrdata_upper, fac_c_fac_usrdata_upper),
    fac_usrdata_omschr
        VARCHAR2(60),
    fac_usrdata_omschr2  // voor in fac_kenmerkdomein_kolomtxt2
        VARCHAR2(60),
    fac_usrdata_prijs
        NUMBER(15,7),
    fac_usrdata_volgnr
        NUMBER(3),
    fac_usrdata_parentkey  /* waarde van parent voor extra filtering */
        NUMBER(10)
        CONSTRAINT fac_r_usrdata_parentkey REFERENCES fac_usrdata(fac_usrdata_key),
    fac_usrdata_vervaldatum
        DATE,
    fac_usrdata_aanmaak
        DATE
        DEFAULT SYSDATE
        NOT_NULL(fac_usrdata_aanmaak, fac_c_fac_usrdata_aanmaak),
    fac_usrdata_verwijder
        DATE,
    CONSTRAINT fac_u_fac_usrdata_upper UNIQUE(fac_usrtab_key, fac_usrdata_upper, fac_usrdata_verwijder, fac_usrdata_vervaldatum)
);


/*
 * fac_usrrap_functie defines the type of report (bitwise)
 * bitand 0:  desktop-query (plain result, grid).
 * bitand 1:  gestyled via xsl (not plain result).
 * bitand 2:  procedure (not view), allows for start/end date limiting the data
 * bitand 4:  systeemrapport (xmlnode "sysrapport") with core xsl styling
 * bitand 8:  tabelized (reports on nightly snapshot)
 * bitand 16: mobile available
 * bitand 32: template report (core/system setting) to be used as source/sample for reports
 */
CREATE_TABLE(fac_usrrap, 0)
(
    fac_usrrap_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_usrrap_key PRIMARY KEY,
    fac_usrrap_code
      VARCHAR2(60)
      CONSTRAINT fac_u_fac_usrrap_code UNIQUE,
    fac_usrrap_omschrijving
        VARCHAR2(60),
    fac_usrrap_view_name
        VARCHAR2(128)
        NOT_NULL(fac_usrrap_view_name, fac_c_fac_usrrap_view_name),
    fac_usrrap_col_refresh
        DATE,
    fac_usrrap_aanmaak
        DATE
        DEFAULT SYSDATE,
    fac_usrrap_vraagbegindatum
        NUMBER(1)
        DEFAULT 0,
    fac_usrrap_vraageinddatum
        NUMBER(1)
        DEFAULT 0,
    fac_usrrap_functie
        NUMBER(3)
        DEFAULT 0 NOT NULL,
    fac_usrrap_info
        VARCHAR2(1000),
        CONSTRAINT fac_u_fac_usrrap UNIQUE(fac_usrrap_omschrijving),
    fac_usrrap_urllink
        VARCHAR2(100)
        DEFAULT NULL,
    fac_usrrap_groep
        VARCHAR2(40)
        DEFAULT NULL,
    fac_usrrap_autorefresh
        NUMBER(1)
        DEFAULT 0
        CONSTRAINT fac_c_fac_usrrap_refresh CHECK (fac_usrrap_autorefresh IN (0,1)),
    fac_usrrap_count
        NUMBER(1)
        DEFAULT 1
        NOT NULL
        CONSTRAINT fac_c_fac_usrrap_count CHECK (fac_usrrap_count IN (0,1,2,3)), // +2 default on, +1 changeable
    fac_usrrap_ratio
        NUMBER(1)
        DEFAULT 1
        NOT NULL
        CONSTRAINT fac_c_fac_usrrap_ratio CHECK (fac_usrrap_ratio IN (0,1,2,3)), // +2 default on, +1 changeable
    fac_usrrap_pivot
        NUMBER(1)
        DEFAULT 0
        NOT NULL
        CONSTRAINT fac_c_fac_usrrap_pivot CHECK (fac_usrrap_pivot IN (0,1,2,3)), // +2 default on, +1 changeable
    fac_usrrap_graph
        NUMBER(1)
        DEFAULT 0
        NOT NULL
        CONSTRAINT fac_c_fac_usrrap_graph CHECK (fac_usrrap_graph IN (0,1,2,3)), // +2 default on, +1 changeable
    fac_usrrap_sort
        NUMBER(1)
        DEFAULT 0
        NOT NULL
        CONSTRAINT fac_c_fac_usrrap_sort CHECK (fac_usrrap_sort IN (0, 1, 2)), -- 0=x-as (aflopend/oplopend bij de kolom gedefinieerd), 1=y-as oplopend, 2-y-as aflopend.
    fac_usrrap_maxrows
        NUMBER(10),
    fac_usrrap_limiet0
        NUMBER(8),
    fac_usrrap_limiet1
        NUMBER(8),
    fac_usrrap_limiet2
        NUMBER(8),
    fac_usrrap_limiet3
        NUMBER(8),
    fac_usrrap_cond
        NUMBER(1)
        DEFAULT 0
        NOT NULL
        CONSTRAINT fac_c_fac_usrrap_cond CHECK (fac_usrrap_cond IN (0,1,2,3)), // 0=AND, 2=OR, +1 changeable
    fac_functie_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_usrrap_functie_key REFERENCES fac_functie(fac_functie_key),
    fac_usrrap_graph_options // JSON
        VARCHAR2(4000),
    fac_usrrap_graph_type
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    fac_usrrap_volgnr
        NUMBER(10),
    fac_usrrap_parameters
        VARCHAR2(200)
// Note: this column is defined in PRS_TAB.SRC
//  , prs_perslid_key
//        NUMBER(10)
//        CONSTRAINT fac_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
);

// De kolommen van een rapport
CREATE_TABLE(fac_usrrap_cols, 0)
(
    fac_usrrap_cols_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_usrrap_cols_key PRIMARY KEY,
    fac_usrrap_key
        NUMBER(10)
        CONSTRAINT fac_r_usrrap_cols_usrrap_key REFERENCES fac_usrrap(fac_usrrap_key)
        ON DELETE CASCADE,
    fac_usrrap_cols_volgnr
        NUMBER(10),
    fac_usrrap_cols_column_name
        VARCHAR2(128)
        NOT_NULL(fac_usrrap_cols_column_name, fac_c_usrrap_cols_column_name),
    fac_usrrap_cols_expression
        VARCHAR2(4000),
    fac_usrrap_cols_caption
        VARCHAR2(60),
    fac_usrrap_cols_filter /* See lcl_rap_filterLOV */
        VARCHAR2(3),
    fac_usrrap_cols_filterdefault /* Predefined filterval */
        VARCHAR2(500),
    fac_usrrap_cols_datatype
        VARCHAR2(16)
        NOT NULL,
    fac_usrrap_cols_urllink
        VARCHAR2(255),
    fac_usrrap_cols_visible /* V;Visible; C;Visible Combine; I;Invisible; H;Hidden; S;Suppress repetitions */
        VARCHAR2(1)
        DEFAULT 'V'
        NOT NULL
        CONSTRAINT fac_c_usrrap_cols_visible CHECK (fac_usrrap_cols_visible IN ('V', 'C', 'I', 'H', 'S', 'U')),
    fac_usrrap_cols_group
        VARCHAR2(1)
        DEFAULT 'G'
        NOT NULL
        CONSTRAINT fac_c_usrrap_cols_group CHECK (fac_usrrap_cols_group IN ('G', 'S', 'C', 'A', 'H', 'D', 'W', 'M', 'Q', 'Y')),
    fac_usrrap_cols_sorting
        NUMBER(1)
        DEFAULT 3
        NOT NULL
        CONSTRAINT fac_c_usrrap_cols_sorting CHECK (fac_usrrap_cols_sorting IN (0,1,2,3))
);

CREATE_TABLE(fac_usrgraph, 0)
(
    fac_usrgraph_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_usrgraph_key PRIMARY KEY,
    fac_usrgraph_omschrijving
        VARCHAR2(60),
    fac_usrgraph_view_name
        VARCHAR2(128)
        NOT_NULL(fac_usrgraph_view_name, fac_c_fac_usrgraph_view_name),
    fac_usrgraph_aanmaak
        DATE
        DEFAULT SYSDATE,
    fac_usrgraph_type
        NUMBER(1)
        DEFAULT 1,
    fac_usrgraph_limiet0
        NUMBER(8),
    fac_usrgraph_limiet1
        NUMBER(8),
    fac_usrgraph_limiet2
        NUMBER(8),
    fac_usrgraph_limiet3
        NUMBER(8),
    fac_functie_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_usrgraph_functie_key REFERENCES fac_functie(fac_functie_key),
    fac_usrgraph_orderby
        VARCHAR(60),
    fac_usrgraph_maxrows
        NUMBER(10),
    fac_usrgraph_options  // JSON
        VARCHAR2(4000)
);


// management dashboards
CREATE_TABLE(fac_mgtrap, 0)
(
 fac_mgtrap_key          NUMBER(10),
 fac_mgtrap_omschrijving VARCHAR2(60),
 fac_mgtrap_view_name    VARCHAR2(128),
 fac_mgtrap_aanmaak      DATE,
 fac_mgtrap_info         VARCHAR2(100),
 fac_functie_key         NUMBER(10),
 fac_mgtrap_waarde1      NUMBER(8,2),
 fac_mgtrap_waarde2      NUMBER(8,2),
 fac_mgtrap_waarde3      NUMBER(8,2),
 fac_mgtrap_waarde4      NUMBER(8,2)
);

CREATE_TABLE(imp_schedule, 0)
(
  imp_schedule_key      NUMBER(10)
, imp_schedule_name     VARCHAR2(20)
, imp_schedule_aanmaak  DATE DEFAULT SYSDATE
, imp_schedule_done     DATE
// Note: this column is defined in PRS_TAB.SRC
//  prs_perslid_key
//        NUMBER(10)
//        CONSTRAINT imp_r_perslid REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
);

CREATE_TABLE(fac_profiel, 0) (
    fac_profiel_key
        NUMBER(10) PRIMARY KEY,
    fac_profiel_omschrijving
        VARCHAR2(30) NOT NULL,
    fac_profiel_limiet
        NUMBER(8),
    fac_profiel_aanmaak
        DATE
        DEFAULT SYSDATE
);

CREATE_TABLE(fac_profielwaarde, 0) (
    fac_profielwaarde_key
        NUMBER(10) PRIMARY KEY,
    fac_profiel_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_profiel_key REFERENCES fac_profiel(fac_profiel_key) ON DELETE CASCADE,
--    ins_discipline_key
--        NUMBER(10)
--        REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE,
    fac_profielwaarde_limiet
        NUMBER(8)
        NOT NULL,
    fac_profielwaarde_aanmaak
        DATE
        DEFAULT SYSDATE
);

CREATE_TABLE(fac_perfmon, 0)
(
  fac_perfmon_datum
        DATE
        DEFAULT SYSDATE
        CONSTRAINT fac_k_fac_perform_datum PRIMARY KEY,
  fac_perfmon_waarde
        NUMBER
        DEFAULT 0,
  fac_perfmon_aantal
        NUMBER
        DEFAULT 0,
  fac_perfmon_threshold
        NUMBER,
  fac_perfmon_users
        NUMBER
);

CREATE_TABLE(fac_perfmon_sample, 0)
(
  fac_perfmon_sample_datum
        DATE
        DEFAULT SYSDATE,
  fac_perfmon_sample_waarde1
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde2
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde3
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde4
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde5
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde6
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde7
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde8
        NUMBER
        DEFAULT 0,
  fac_perfmon_sample_waarde9
        NUMBER
        DEFAULT 0,
// Note: this column is defined in PRS_TAB.SRC
//  prs_perslid_key
//        NUMBER(10)
//        CONSTRAINT fac_r_prs_perslid_key1 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
  fac_perfmon_sample_ip
        VARCHAR2(32),
  fac_perfmon_sample_opmerking
        VARCHAR2(60)
);

/*
 * fac_srtnotificatie_mode: de (bitwise) waarde van de gewenste verspreiding, is de default voor fac_notificatie_status
 * fac_srtnotificatie_usermode: 0/null of 1 om aan te geven of de user deze notificatie zelf nog uit mag zetten
 * fac_srtnotificatie_xmlnode: de xml-tagnaam in facilitor XML om de gegevens voor fac_notificatie_refkey te kunnen vinden.
 * fac_srtnotificatie_groep: 0 of 1 om aan te geven dat record met gelijke srtnotificatie_key en gelijke receiver
 *  bij elkaar in 1 bericht mogen.
 * fac_srtnotificatie_purgemode: ongebruikt
 * fac_srtnotificatie_delay: aantal seconden dat(minimaal, na insert) gewacht moet worden alvorens deze notificatie te verzenden
 */

CREATE_TABLE(fac_srtnotificatie, 0)
(
  fac_srtnotificatie_key
    NUMBER(10) PRIMARY KEY,
  fac_srtnotificatie_code
    VARCHAR2(6),
  fac_srtnotificatie_mode
    NUMBER(3),
  fac_srtnotificatie_usermode
    NUMBER(1),
  fac_srtnotificatie_purgemode
    NUMBER(1),
  fac_srtnotificatie_oms
    VARCHAR2(2048),
  fac_srtnotificatie_xmlnode
    VARCHAR2(60),
  fac_srtnotificatie_url
    VARCHAR2(255),
  fac_srtnotificatie_groep
    VARCHAR2(1),
  fac_srtnotificatie_delay
    NUMBER(4),
  fac_srtnotificatie_gebouw
    NUMBER(1)
    DEFAULT 0
    NOT_NULL(fac_srtnotificatie_gebouw, fac_c_fac_srtnotificatie_geb),
  fac_srtnotificatie_srtkm_key
    NUMBER(10),
  fac_srtnotificatie_noticollegas
    NUMBER(3)
    DEFAULT 0
    NOT NULL
);

/*
 * fac_notificatie_status: de actuele verzendingsstatus. Bij de insert is deze gelijk aan fac_srtnotificatie_mode
 *   waarin bitwise is aangegeven hoe de notificatie verspreid moet worden:
 * 32 = POST conform prs_bedrijfadres
 * 16 = POST naar prs_perslid_systeemadres
 *  8 = popup aan receiver prs_perslid_key
 *  4 = per sms aan receiver prs_perslid_mobiel
 *  2 = per email naar receiver prs_perslid_email
 *  1 = in statusinfo window op portal van receiver prs_perslid_key
 * fac_notificatie_refkey: de key van een melding, reservering etc. Welke entiteit het betreft wordt bepaald
 *  door fac_srtnotificatie_xmlnode. Deze kan ook worden toegevoegd aan fac_srtnotificatie_url.
 * optional prs_bedrijfadres_key references to the techparams for transmission for appropraite channels
 */
CREATE_TABLE(fac_notificatie, 0)
(
  fac_notificatie_key
    NUMBER(10) PRIMARY KEY,
  fac_srtnotificatie_key
    NUMBER(10)
    REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE,
  fac_notificatie_naam -- puur informatief voor logging/support, bijvoorbeeld opdrachtnummer
    VARCHAR(80),
  fac_notificatie_status
    NUMBER(3)
    NOT_NULL(fac_notificatie_status, fac_c_fac_notificatie_status),
  fac_notificatie_queue
    VARCHAR2(20)
    DEFAULT 'DEFAULT' NOT NULL,
// Note: these columns are defined in PRS_TAB.SRC
//  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,
//  prs_bedrijfadres_key
//    NUMBER(10)
//    CONSTRAINT prs_r_bedrijfadres_key1
//    REFERENCES prs_bedrijfadres(prs_bedrijfadres_key) ON DELETE CASCADE,
  fac_notificatie_receiver_email
    VARCHAR2(255),
  fac_notificatie_email_cc
    VARCHAR2(4000),
  fac_notificatie_email_bcc
    VARCHAR2(4000),
  fac_notificatie_receiver_phone
    VARCHAR2(30),
  fac_notificatie_oms
    VARCHAR2(2048),
  fac_notificatie_geturl /* rapport mailen */
    VARCHAR2(4000),
  fac_notificatie_getbody
    VARCHAR2(4000),
  fac_notificatie_refkey
    NUMBER(10),
  fac_notificatie_extrakey
    NUMBER(10),
  fac_notificatie_prioriteit
    NUMBER(1),
  fac_notificatie_datum
    DATE
    DEFAULT SYSDATE,
  fac_notificatie_sender_email
    VARCHAR2(255),
  fac_notificatie_lang
    VARCHAR2(3),
  fac_notificatie_systeemadres
    VARCHAR2(200),
  fac_notificatie_attachments   /* comma-separated filenames */
    VARCHAR2(4000),
  fac_notificatie_notbefore
    DATE
    DEFAULT SYSDATE NOT NULL,
  fac_notificatie_failcount
    NUMBER(10)
    DEFAULT 0 NOT NULL,
   fac_notificatie_failmessage /* de laatste failmessage, rest zoek je maar in Putorders logging */
    VARCHAR(4000),
   fac_notificatie_faildatum  // de laatste
    DATE,
  fac_notificatie_realuser
    VARCHAR2(64)
);
/* Welke notificatiejobs bestaan er
 * Vermelding hierin veroorzaakt periodieke notificaties
 * op basis van de genoemde view.
 */
CREATE_TABLE(fac_notificatie_job, 0)
(
  fac_notificatie_job_key
     NUMBER(10)
     PRIMARY KEY,
  fac_notificatie_job_view
     VARCHAR2(1000),
  fac_notificatie_job_geturl
    VARCHAR2(4000),
  fac_notificatie_job_getbody
    VARCHAR2(4000),
//  prs_perslid_key -- owner
//     NUMBER(10)
//     CONSTRAINT fac_r_prs_perslid_key5 REFERENCES prs_perslid(prs_perslid_key)
//  prs_perslid_key_receiver
//    NUMBER(10)
//    REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
  fac_notificatie_job_oms
     VARCHAR2(60),
  fac_notificatie_job_mode
    NUMBER(3),
  fac_notificatie_job_flags
    NUMBER(10) default 0, -- see documentation &1=view has xemail and xmobile, &2=use fac.notifytracking instead of fac.putnotification(srtprio), &32=commando
  fac_notificatie_job_interval
     NUMBER(5),
  fac_notificatie_job_seconds
     NUMBER(5),
  fac_notificatie_job_queue
    VARCHAR2(20)
    DEFAULT 'DEFAULT' NOT NULL,
  fac_notificatie_job_nextrun
     DATE,
  fac_notificatie_job_lastrun
     DATE,
  fac_usrrap_key
     NUMBER(10)
     REFERENCES fac_usrrap(fac_usrrap_key) ON DELETE CASCADE
, CONSTRAINT fac_c_notificatie_job1 CHECK((fac_notificatie_job_interval IS NOT NULL AND fac_notificatie_job_seconds IS NULL) OR (fac_notificatie_job_interval IS NULL AND fac_notificatie_job_seconds IS NOT NULL))
);
/* Welke importapps bestaan er */
CREATE_TABLE(fac_import_app, 0)
(
  fac_import_app_key
    NUMBER(10)
    PRIMARY KEY,
  fac_import_app_code
    VARCHAR2(20),
  fac_import_app_oms
    VARCHAR2(60),
  fac_import_app_prefix
    VARCHAR2(4),
--    ins_discipline_key
--        NUMBER(10)
--        REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE,
--    prs_bedrijf_key
--        NUMBER(10)
--        REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
  fac_import_app_xsl
    VARCHAR2(256),
  fac_functie_key
    NUMBER(10)
    NOT_NULL(fac_functie_key, fac_c_fac_functie_key2)
    CONSTRAINT fac_r_fac_functie_key REFERENCES fac_functie(fac_functie_key),
  fac_import_app_browse_f_key
    NUMBER(10)
    CONSTRAINT fac_r_fac_functie_key4 REFERENCES fac_functie(fac_functie_key),
  fac_import_app_charset
    VARCHAR(32),
  fac_import_app_delimiter
    VARCHAR(2),
  fac_import_app_folder
    VARCHAR(320),
  fac_import_app_files
    VARCHAR(32),
  fac_import_app_loglevel
    NUMBER(1) DEFAULT 0 NOT NULL,
  fac_import_app_csv
    NUMBER(1) DEFAULT 0  NOT NULL
);

/* Uitgevoerde importjobs */
CREATE_TABLE(fac_import, 0)
(
  fac_import_key
    NUMBER(10)
    PRIMARY KEY,
  fac_import_app_key
    NUMBER(10)
    CONSTRAINT fac_r_fac_import_app_key REFERENCES fac_import_app(fac_import_app_key) ON DELETE CASCADE,
  fac_import_datum_gelezen
     DATE,
  fac_import_datum_verwerkt
     DATE,
  fac_import_filenaam
     VARCHAR2 (256),
  fac_import_versie
     VARCHAR2(30),
  fac_import_refkey
     NUMBER(10),
  fac_import_backupdir
     VARCHAR(320)
// Note: this column is defined in PRS_TAB.SRC
//  prs_perslid_key
//     NUMBER(10)
//     CONSTRAINT fac_r_prs_perslid_key5 REFERENCES prs_perslid(prs_perslid_key)
);

CREATE_TABLE(imp_log, 0)
(
  imp_log_key              NUMBER(10) CONSTRAINT imp_k_imp_log_key PRIMARY KEY,
  fac_import_key           NUMBER(10) CONSTRAINT fac_r_fac_import_key2 REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
  imp_log_applicatie       VARCHAR2(50)
, imp_log_datum            DATE DEFAULT SYSDATE
, imp_log_status           VARCHAR2(1)
, imp_log_omschrijving     VARCHAR2(1000)
, imp_log_hint             VARCHAR2(1000)
, CONSTRAINT fac_c_imp_log_appl CHECK(fac_import_key IS NOT NULL OR imp_log_applicatie IS NOT NULL)
);

CREATE_TABLE(fac_export_app, 0)
(
  fac_export_app_key
    NUMBER(10)
    PRIMARY KEY,
  fac_export_app_code
    VARCHAR2(20),
  fac_export_app_oms
    VARCHAR2(60),
  fac_functie_key
    NUMBER(10)
    NOT_NULL(fac_functie_key, fac_c_fac_functie_key3)
    CONSTRAINT fac_r_fac_functie_key3 REFERENCES fac_functie(fac_functie_key),
  fac_export_app_browse_f_key
    NUMBER(10)
    CONSTRAINT fac_r_fac_functie_key5 REFERENCES fac_functie(fac_functie_key),
  fac_export_app_charset
    VARCHAR(32),
  fac_export_app_delimiter
    VARCHAR(2),
  fac_export_app_folder
    VARCHAR(320),
  fac_export_app_prefix
    VARCHAR2(4),
  fac_export_app_file_prefix
    VARCHAR2(60),
  fac_export_app_postfix
    VARCHAR2(20),
  fac_export_app_log_postfix
    VARCHAR2(4),
  fac_export_app_flags
    NUMBER(10) DEFAULT 0, -- Documentatie in APPL\EXP\exp_shared.js
  fac_export_app_xsl
    VARCHAR2(256),
  fac_export_app_timestamp
    VARCHAR2(20),
  fac_export_app_datum
    DATE,
  fac_export_app_aanmaak
    DATE
    DEFAULT SYSDATE,
  CONSTRAINT fac_u_fac_export_app_code UNIQUE(fac_export_app_code)
);

-- Might still need some changes
CREATE_TABLE(fac_activiteit, 0)
(
  fac_activiteit_key
    NUMBER(10)
    PRIMARY KEY,
// Note: this column is defined in PRS_TAB.SRC
//  prs_perslid_key
//    NUMBER (10)
//    REFERENCES prs_perslid(prs_perslid_key),
//  fac_activiteit_user_key
//    NUMBER(10)
//    REFERENCES prs_perslid(prs_perslid_key),
  fac_activiteit_omschrijving
    VARCHAR2(60 CHAR),
  fac_activiteit_eerste
    DATE,
  fac_activiteit_laatste
    DATE,
  fac_activiteit_volgende
    DATE,
  fac_activiteit_xmlnode
    VARCHAR2(20),
  fac_activiteit_eenheid  -- 1=dagelijks, 2=wekelijk, 3=maandelijk, 4=jaarlijks, null=eenmalig. Niet beschikbaar: uurlijks(0)
    NUMBER(1)
    DEFAULT(1)
    CONSTRAINT fac_c_fac_activiteit_eenheid CHECK (fac_activiteit_eenheid IN (1,2,3,4,5) OR fac_activiteit_eenheid IS NULL),
  fac_activiteit_bits  -- details, afhankelijk van de mode (mag best null zijn)
    NUMBER(4),
  fac_activiteit_periode
    NUMBER(6),
  fac_activiteit_aantal
    NUMBER(5),
  fac_activiteit_einddatum
    DATE,
  fac_activiteit_aanmaak
    DATE
    DEFAULT SYSDATE,
  fac_activiteit_verwijder
    DATE,
  fac_activiteit_status_key
    NUMBER(1)
);

CREATE_TABLE(fac_imp_file, 0)
(
  fac_import_key           NUMBER(10) CONSTRAINT fac_r_fac_import_key1 REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
  fac_imp_file_index       NUMBER(10),
  fac_imp_file_line        VARCHAR2(4000 CHAR)
);

CREATE_TABLE(fac_imp_csv, 0)
(
  fac_imp_csv_key         NUMBER(10) PRIMARY KEY,
  fac_import_key          NUMBER(10) CONSTRAINT fac_r_fac_import_key4 REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
  fac_imp_csv_index       NUMBER(10) NOT NULL,
  fac_imp_csv_datum       DATE DEFAULT SYSDATE,
  fac_imp_file_line       VARCHAR2(4000 CHAR),
  fac_imp_csv_col01       VARCHAR2(4000),
  fac_imp_csv_col02       VARCHAR2(4000),
  fac_imp_csv_col03       VARCHAR2(4000),
  fac_imp_csv_col04       VARCHAR2(4000),
  fac_imp_csv_col05       VARCHAR2(4000),
  fac_imp_csv_col06       VARCHAR2(4000),
  fac_imp_csv_col07       VARCHAR2(4000),
  fac_imp_csv_col08       VARCHAR2(4000),
  fac_imp_csv_col09       VARCHAR2(4000),
  fac_imp_csv_col10       VARCHAR2(4000),
  fac_imp_csv_col11       VARCHAR2(4000),
  fac_imp_csv_col12       VARCHAR2(4000),
  fac_imp_csv_col13       VARCHAR2(4000),
  fac_imp_csv_col14       VARCHAR2(4000),
  fac_imp_csv_col15       VARCHAR2(4000),
  fac_imp_csv_col16       VARCHAR2(4000),
  fac_imp_csv_col17       VARCHAR2(4000),
  fac_imp_csv_col18       VARCHAR2(4000),
  fac_imp_csv_col19       VARCHAR2(4000),
  fac_imp_csv_col20       VARCHAR2(4000),
  fac_imp_csv_col21       VARCHAR2(4000),
  fac_imp_csv_col22       VARCHAR2(4000),
  fac_imp_csv_col23       VARCHAR2(4000),
  fac_imp_csv_col24       VARCHAR2(4000),
  fac_imp_csv_col25       VARCHAR2(4000),
  fac_imp_csv_col26       VARCHAR2(4000),
  fac_imp_csv_col27       VARCHAR2(4000),
  fac_imp_csv_col28       VARCHAR2(4000),
  fac_imp_csv_col29       VARCHAR2(4000),
  fac_imp_csv_col30       VARCHAR2(4000),
  fac_imp_csv_col31       VARCHAR2(4000),
  fac_imp_csv_col32       VARCHAR2(4000),
  fac_imp_csv_col33       VARCHAR2(4000),
  fac_imp_csv_col34       VARCHAR2(4000),
  fac_imp_csv_col35       VARCHAR2(4000),
  fac_imp_csv_col36       VARCHAR2(4000),
  fac_imp_csv_col37       VARCHAR2(4000),
  fac_imp_csv_col38       VARCHAR2(4000),
  fac_imp_csv_col39       VARCHAR2(4000),
  fac_imp_csv_col40       VARCHAR2(4000),
  fac_imp_csv_col41       VARCHAR2(4000),
  fac_imp_csv_col42       VARCHAR2(4000),
  fac_imp_csv_col43       VARCHAR2(4000),
  fac_imp_csv_col44       VARCHAR2(4000),
  fac_imp_csv_col45       VARCHAR2(4000),
  fac_imp_csv_col46       VARCHAR2(4000),
  fac_imp_csv_col47       VARCHAR2(4000),
  fac_imp_csv_col48       VARCHAR2(4000),
  fac_imp_csv_col49       VARCHAR2(4000),
  fac_imp_csv_col50       VARCHAR2(4000),
  fac_imp_csv_col51       VARCHAR2(4000),
  fac_imp_csv_col52       VARCHAR2(4000),
  fac_imp_csv_col53       VARCHAR2(4000),
  fac_imp_csv_col54       VARCHAR2(4000),
  fac_imp_csv_col55       VARCHAR2(4000),
  fac_imp_csv_col56       VARCHAR2(4000),
  fac_imp_csv_col57       VARCHAR2(4000),
  fac_imp_csv_col58       VARCHAR2(4000),
  fac_imp_csv_col59       VARCHAR2(4000),
  fac_imp_csv_col60       VARCHAR2(4000),
  fac_imp_csv_col61       VARCHAR2(4000),
  fac_imp_csv_col62       VARCHAR2(4000),
  fac_imp_csv_col63       VARCHAR2(4000),
  fac_imp_csv_col64       VARCHAR2(4000),
  fac_imp_csv_col65       VARCHAR2(4000),
  fac_imp_csv_col66       VARCHAR2(4000),
  fac_imp_csv_col67       VARCHAR2(4000),
  fac_imp_csv_col68       VARCHAR2(4000),
  fac_imp_csv_col69       VARCHAR2(4000),
  fac_imp_csv_col70       VARCHAR2(4000),
  fac_imp_csv_col71       VARCHAR2(4000),
  fac_imp_csv_col72       VARCHAR2(4000),
  fac_imp_csv_col73       VARCHAR2(4000),
  fac_imp_csv_col74       VARCHAR2(4000),
  fac_imp_csv_col75       VARCHAR2(4000),
  fac_imp_csv_col76       VARCHAR2(4000),
  fac_imp_csv_col77       VARCHAR2(4000),
  fac_imp_csv_col78       VARCHAR2(4000),
  fac_imp_csv_col79       VARCHAR2(4000),
  fac_imp_csv_col80       VARCHAR2(4000),
  fac_imp_csv_col81       VARCHAR2(4000),
  fac_imp_csv_col82       VARCHAR2(4000),
  fac_imp_csv_col83       VARCHAR2(4000),
  fac_imp_csv_col84       VARCHAR2(4000),
  fac_imp_csv_col85       VARCHAR2(4000),
  fac_imp_csv_col86       VARCHAR2(4000),
  fac_imp_csv_col87       VARCHAR2(4000),
  fac_imp_csv_col88       VARCHAR2(4000),
  fac_imp_csv_col89       VARCHAR2(4000),
  fac_imp_csv_col90       VARCHAR2(4000),
  fac_imp_csv_col91       VARCHAR2(4000),
  fac_imp_csv_col92       VARCHAR2(4000),
  fac_imp_csv_col93       VARCHAR2(4000),
  fac_imp_csv_col94       VARCHAR2(4000),
  fac_imp_csv_col95       VARCHAR2(4000),
  fac_imp_csv_col96       VARCHAR2(4000),
  fac_imp_csv_col97       VARCHAR2(4000),
  fac_imp_csv_col98       VARCHAR2(4000),
  fac_imp_csv_col99       VARCHAR2(4000)
);

CREATE_TABLE(fac_imp_catalogus, 0)
(
  fac_import_key             NUMBER(10) CONSTRAINT fac_r_fac_import_key3 REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
  ins_discipline_key         NUMBER(10),
  prs_bedrijf_key            NUMBER(10),
  fac_imp_catalogus_datum    DATE,
  ins_srtdeel_nr             VARCHAR2(32),
  ins_srtgroep_omschrijving  VARCHAR2(60),
  ins_srtdeel_omschrijving   VARCHAR2(100),
  ins_srtdeel_prijs          NUMBER(11,5),
  ins_srtdeel_eenheid        VARCHAR2(30),
  ins_srtdeel_image          VARCHAR2(255),
  ins_srtdeel_veelvoud       NUMBER(6),
  ins_srtdeel_btw            NUMBER(3),
  ins_srtdeel_vervaldatum    DATE,
  ins_srtdeel_inkprijs       NUMBER(11,5),
  ins_srtdeel_minimum        NUMBER(6),
  bes_staffeltabel_key       NUMBER(10),
  ins_srtdeel_wijzigdagen    NUMBER(3),
  ins_srtdeel_annuleerdagen  NUMBER(3),
  ins_srtdeel_opmerking      VARCHAR2(2000),
  ins_srtdeel_sensortype     NUMBER(3),
  ins_srtdeel_acadsymbol_dwgx NUMBER(16,3),
  ins_srtdeel_acadsymbol_dwgy NUMBER(16,3),
  ins_srtdeel_externnr        VARCHAR2(256)
);

// Facilitor Import (FIP) tabellen
CREATE_TABLE(fac_imp_onrgoed1, 0)
(
    alg_regio_omschrijving         VARCHAR2(30)
  , alg_district_omschrijving      VARCHAR2(30)
  , alg_locatie_code               VARCHAR2(10)
  , alg_locatie_omschrijving       VARCHAR2(60)
  , alg_gebouw_code                VARCHAR2(12)
  , alg_gebouw_naam                VARCHAR2(60)
  , alg_gebouw_adres               VARCHAR2(50)
  , alg_gebouw_postcode            VARCHAR2(12)
  , alg_srtgebouw_omschrijving     VARCHAR2(30)
  , alg_locatie_verantw            VARCHAR2(30)
  , alg_locatie_verantw_tel        VARCHAR2(20)
  , alg_locatie_adres              VARCHAR2(50)
  , alg_locatie_postcode           VARCHAR2(12)
  , alg_locatie_plaats             VARCHAR2(30)
  , alg_locatie_land               VARCHAR2(30)
  , alg_locatie_post_adres         VARCHAR2(50)
  , alg_locatie_post_postcode      VARCHAR2(12)
  , alg_locatie_post_plaats        VARCHAR2(30)
  , alg_locatie_post_land          VARCHAR2(30)
  , alg_kenmerkwaarde1             VARCHAR2(4000)
  , alg_kenmerkwaarde2             VARCHAR2(4000)
  , alg_kenmerkwaarde3             VARCHAR2(4000)
  , alg_kenmerkwaarde4             VARCHAR2(4000)
  , alg_kenmerkwaarde5             VARCHAR2(4000)
  , alg_kenmerkwaarde6             VARCHAR2(4000)
  , alg_kenmerkwaarde7             VARCHAR2(4000)
  , alg_kenmerkwaarde8             VARCHAR2(4000)
  , alg_kenmerkwaarde9             VARCHAR2(4000)
  , alg_kenmerkwaarde10            VARCHAR2(4000)
);

CREATE_TABLE(fac_imp_mld, 0)
(
    ins_srtdiscipline_omschrijving  VARCHAR2(30)
  , ins_srtdiscipline_prefix        VARCHAR2(3)
  , ins_srtdiscipline_alg           VARCHAR2(16)
  , ins_srtdiscipline_ins           VARCHAR2(16)
  , ins_srtdiscipline_bes           VARCHAR2(16)
  , ins_discipline_omschrijving     VARCHAR2(60)
  , ins_discipline_image            VARCHAR2(255)
  , mld_stdmelding_omschrijving     VARCHAR2(60)
  , mld_stdmelding_groep            VARCHAR2(30)
  , mld_stdmelding_kostensoort      VARCHAR2(60)
  , mld_stdmelding_accepttijd       NUMBER(12,5)
  , mld_stdmelding_accepttijd1      NUMBER(12,5)
  , mld_stdmelding_accepttijd2      NUMBER(12,5)
  , mld_stdmelding_accepttijd4      NUMBER(12,5)
  , mld_stdmelding_uitvoertijd      NUMBER(12,5)
  , mld_stdmelding_uitvoertijd1     NUMBER(12,5)
  , mld_stdmelding_uitvoertijd2     NUMBER(12,5)
  , mld_stdmelding_uitvoertijd4     NUMBER(12,5)
  , mld_discipline_directklaar      NUMBER(1)
  , prs_dienst                      VARCHAR2(60)
  , mld_stdmelding_notfrontend      VARCHAR2(1)
  , alg_onrgoed_niveau              VARCHAR2(1)
  , mld_typeopdr_omschrijving       VARCHAR2(30)
  , mld_stdmelding_hint             VARCHAR2(1000)
  , mld_stdmelding_kopieerbaar      NUMBER(1)
  , mld_stdmelding_afmeldtext       NUMBER(1)
  , mld_stdmelding_doublecheck      NUMBER(4)
  , mld_stdmelding_slabewaken       NUMBER(1)
  , mld_stdmelding_externnr         VARCHAR2(256)
  , mld_stdmelding_image            VARCHAR2(255)
  , mld_stdmelding_objects_allowed  NUMBER(1)
);

CREATE_TABLE(fac_imp_mldafmtxt, 0)
(
    mld_afmeldtekst_naam            VARCHAR2(60)
  , mld_afmeldtekst_omschrijving    VARCHAR2(1000)
  , ins_discipline_key              NUMBER(10)
  , mld_stdmelding_key              NUMBER(10)
  , mld_afmeldtekst_usefor          NUMBER(1)
);

CREATE_TABLE(fac_imp_onrgoed2, 0)
(
    alg_locatie_code               VARCHAR2(10)
  , alg_gebouw_code                VARCHAR2(12)
  , alg_verdieping_volgnr          NUMBER(3,0)
  , alg_srtruimte_omschrijving     VARCHAR2(50)
  , alg_ruimte_nr                  VARCHAR2(20)
  , alg_ruimte_omschrijving        VARCHAR2(30)
  , alg_ruimte_bruto_vloeropp      NUMBER(8,2)
  , reserveerbaar                  VARCHAR2(1)
  , res_discipline_omschrijving    VARCHAR2(60)
  , res_discipline_expire_dagen    NUMBER(3)
  , res_ruimte_prijs               NUMBER(7,2)
  , res_opstelling_omschrijving    VARCHAR2(30)
  , res_ruimte_opstel_bezoekers    NUMBER (5)
  , res_ruimte_nr                  VARCHAR2(255)
  , res_ruimte_omschrijving        VARCHAR2(255)
  , prs_afdeling_naam              VARCHAR2(60 CHAR)  -- 15 zou genoeg zijn, wat speelruimte
  , prs_ruimteafdeling_bezetting   NUMBER(8,5)
  , alg_kenmerkwaarde1             VARCHAR2(4000)
  , alg_kenmerkwaarde2             VARCHAR2(4000)
  , alg_kenmerkwaarde3             VARCHAR2(4000)
  , alg_kenmerkwaarde4             VARCHAR2(4000)
  , alg_kenmerkwaarde5             VARCHAR2(4000)
);

CREATE_TABLE(fac_imp_organisatie, 0)
(
   PRS_BEDRIJF_NAAM               VARCHAR2 (60)
  ,PRS_AFDELING_NAAM              VARCHAR2 (15)
  ,PRS_AFDELING_NAAM_PARENT       VARCHAR2 (15)
  ,PRS_AFDELING_OMSCHRIJVING      VARCHAR2 (60 CHAR)
  ,PRS_KOSTENPLAATS_NR            VARCHAR2 (30)
  ,PRS_AFDELING_EXTERNID          VARCHAR2 (256)
);

CREATE_TABLE(fac_imp_kpn, 0)
(
   prs_kostenplaats_nr              VARCHAR2 (30),
   prs_kostenplaats_omschrijving    VARCHAR2 (60),
   prs_kostenplaats_module          VARCHAR2 (3),
   prs_kostenplaats_begin           DATE,
   prs_kostenplaats_eind            DATE,
   prs_kostenplaatsgrp_key          NUMBER (10),
   prs_perslid_key                  NUMBER (10),
   prs_kostenplaats_limiet          NUMBER (8),
   prs_kostenplaats_limietperiode   NUMBER (1),
   prs_kostenplaats_extern          NUMBER (1),
   prs_kostenplaats_fiat            NUMBER (1),
   prs_kostenplaats_externnr        VARCHAR2(256)
);

CREATE_TABLE(fac_imp_kostensoort, 0)
(
   prs_kostensoort_oms              VARCHAR2 (60),
   prs_kostensoort_opmerking        VARCHAR2 (255),
   prs_kostensoort_refcode          VARCHAR2 (60),
   prs_kostensoort_doorbelasten     NUMBER (1),
   prs_kostensoort_btw              NUMBER (1),
   prs_kostenplaats_key             NUMBER (10),
   prs_kostensoortgrp_key           NUMBER (10),
   prs_kostensoort_eind             DATE,
   prs_kostensoort_altcode          VARCHAR2 (60)
);

CREATE_TABLE(fac_imp_perslid, 0)
(
   alg_locatie_code                VARCHAR2(10)
  ,alg_gebouw_code                 VARCHAR2(12)
  ,alg_verdieping_volgnr           NUMBER(3,0)
  ,alg_ruimte_nr                   VARCHAR2(20)
  ,prs_werkplek_volgnr             NUMBER (8)
  ,prs_werkplek_omschrijving       VARCHAR2 (30)
  ,prs_afdeling_naam               VARCHAR2 (15)
  ,prs_kostenplaats_nr             VARCHAR2 (30)
  ,prs_perslid_naam                VARCHAR2 (60)
  ,prs_perslid_tussenvoegsel       VARCHAR2 (15)
  ,prs_perslid_voorletters         VARCHAR2 (15)
  ,prs_perslid_voornaam            VARCHAR2 (30)
  ,prs_perslid_titel               VARCHAR2 (15)
  ,prs_perslid_telefoonnr          VARCHAR2 (20)
  ,prs_perslid_mobiel              VARCHAR2 (20)
  ,prs_perslid_email               VARCHAR2 (200)
  ,prs_srtperslid_omschrijving     VARCHAR2 (100)
  ,prs_perslid_nr                  VARCHAR2 (16)
  ,prs_perslid_oslogin             VARCHAR2 (256)
  ,prs_perslid_wachtwoord          VARCHAR2 (30)
  ,prs_perslid_partner_naam        VARCHAR2(60)
  ,prs_perslid_partner_tussenv     VARCHAR2(15)
  ,prs_perslid_naamgebruik_code    NUMBER(1) DEFAULT 0
  ,prs_perslid_geslacht            NUMBER(1)
  ,prs_perslid_dienstverband       NUMBER(3)
  ,prs_kenmerk1                    VARCHAR2(4000)
  ,prs_kenmerk2                    VARCHAR2(4000)
  ,prs_kenmerk3                    VARCHAR2(4000)
  ,prs_kenmerk4                    VARCHAR2(4000)
  ,prs_kenmerk5                    VARCHAR2(4000)
  ,prs_kenmerk6                    VARCHAR2(4000)
  ,prs_kenmerk7                    VARCHAR2(4000)
  ,prs_kenmerk8                    VARCHAR2(4000)
  ,prs_kenmerk9                    VARCHAR2(4000)
  ,prs_kenmerk10                   VARCHAR2(4000)
  ,prs_kenmerk11                   VARCHAR2(4000)
  ,prs_kenmerk12                   VARCHAR2(4000)
  ,prs_kenmerk13                   VARCHAR2(4000)
  ,prs_kenmerk14                   VARCHAR2(4000)
  ,prs_kenmerk15                   VARCHAR2(4000)
  ,prs_kenmerk16                   VARCHAR2(4000)
  ,prs_kenmerk17                   VARCHAR2(4000)
  ,prs_kenmerk18                   VARCHAR2(4000)
  ,prs_kenmerk19                   VARCHAR2(4000)
  ,prs_kenmerk20                   VARCHAR2(4000)
  ,fac_import_key                  NUMBER(10)       /* for internal processing */
  ,fac_imp_file_index              NUMBER(10)       /* for internal processing */
  ,prs_perslid_key                 NUMBER(10)       /* for internal processing */
  ,prs_perslid_apikey              VARCHAR2(128)    /* for XD-syncing */
  ,prs_perslid_visibility          NUMBER(3)
  ,prs_perslid_externid            VARCHAR2(256)
);

CREATE_TABLE(fac_imp_ins, 0)
(
   ins_discipline_omschrijving VARCHAR2 (60)
  ,ins_discipline_kostensoort  VARCHAR2 (60)
  ,ins_srtgroep_omschrijving   VARCHAR2 (60)
  ,ins_srtdeel_code            VARCHAR2 (10)
  ,ins_srtdeel_omschrijving    VARCHAR2 (100)
  ,ins_deel_omschrijving       VARCHAR2 (60)
  ,ins_deel_opmerking          VARCHAR2 (320)
  ,reserveerbaar               NUMBER (1)
  ,res_deel_eenheid            VARCHAR2 (10)
  ,res_deel_prijs              NUMBER (7,2)
  ,alg_locatie_code            VARCHAR2 (10)
  ,alg_gebouw_code             VARCHAR2 (12)
  ,alg_verdieping_volgnr       NUMBER (3)
  ,alg_ruimte_nr               VARCHAR2 (20)
  ,res_deel_alg_level          NUMBER (1)
  ,res_discipline_type         VARCHAR2 (60)
  ,res_discipline_omschrijving VARCHAR2 (60)
  ,res_discipline_kostensoort  VARCHAR2 (60)
  ,prs_perslid_matchcode       VARCHAR2 (4000)
  ,prs_perslid_matchwaarde     VARCHAR2 (4000)
  ,ins_kenmerkwaarde1          VARCHAR2 (4000)
  ,ins_kenmerkwaarde2          VARCHAR2 (4000)
  ,ins_kenmerkwaarde3          VARCHAR2 (4000)
  ,ins_kenmerkwaarde4          VARCHAR2 (4000)
  ,ins_kenmerkwaarde5          VARCHAR2 (4000)
  ,ins_kenmerkwaarde6          VARCHAR2 (4000)
  ,ins_kenmerkwaarde7          VARCHAR2 (4000)
  ,ins_kenmerkwaarde8          VARCHAR2 (4000)
  ,ins_kenmerkwaarde9          VARCHAR2 (4000)
  ,ins_kenmerkwaarde10         VARCHAR2 (4000)
  ,ins_kenmerkwaarde11         VARCHAR2 (4000)
  ,ins_kenmerkwaarde12         VARCHAR2 (4000)
  ,ins_kenmerkwaarde13         VARCHAR2 (4000)
  ,ins_kenmerkwaarde14         VARCHAR2 (4000)
  ,ins_kenmerkwaarde15         VARCHAR2 (4000)
  ,ins_kenmerkwaarde16         VARCHAR2 (4000)
  ,ins_kenmerkwaarde17         VARCHAR2 (4000)
  ,ins_kenmerkwaarde18         VARCHAR2 (4000)
  ,ins_kenmerkwaarde19         VARCHAR2 (4000)
  ,ins_kenmerkwaarde20         VARCHAR2 (4000)
  ,ins_deel_aanmaak            DATE
  ,ins_deel_vervaldatum        DATE
  ,ins_deel_aantal             NUMBER(8,2) DEFAULT(0) NOT NULL
  ,ins_deel_externnr           VARCHAR2(256)
  ,ins_srtdeel_omschr_parent   VARCHAR2 (100)
  ,ins_deel_omschr_parent      VARCHAR2 (60)
);

CREATE_TABLE(fac_imp_sle, 0)
(
   ins_srtdeel_code            VARCHAR2 (10)
  ,ins_srtdeel_omschrijving    VARCHAR2 (100)
  ,alg_locatie_code            VARCHAR2 (10) -- stam + cilinder
  ,alg_gebouw_code             VARCHAR2 (12) -- stam
  ,alg_verdieping_code         VARCHAR2 (10) -- stam
  ,alg_ruimte_nr               VARCHAR2 (20) -- stam
  ,cil_gebouw_code             VARCHAR2 (12)
  ,cil_verdieping_code         VARCHAR2 (10)
  ,cil_ruimte_nr               VARCHAR2 (10)
  ,aant_sleutels_in_set        NUMBER (3)
  ,ins_kenmerkwaarde1          VARCHAR2(4000)
  ,ins_kenmerkwaarde2          VARCHAR2(4000)
  ,ins_kenmerkwaarde3          VARCHAR2(4000)
  ,ins_kenmerkwaarde4          VARCHAR2(4000)
  ,ins_kenmerkwaarde5          VARCHAR2(4000)
);

-- Deze tabel is al gedefinieerd, zonder dat er al standaard procedures voor zijn.
CREATE_TABLE(fac_imp_adres, 0)
(
  adres_naam                  VARCHAR2(60),
  adres_bezoek_adres          VARCHAR2(50),
  adres_bezoek_postcode       VARCHAR2(12),
  adres_bezoek_plaats         VARCHAR2(30),
  adres_bezoek_land           VARCHAR2(30),
  adres_post_adres            VARCHAR2(50),
  adres_gebouw_ruimte         VARCHAR2(30),
  adres_post_postcode         VARCHAR2(12),
  adres_post_plaats           VARCHAR2(30),
  adres_post_land             VARCHAR2(30),
  adres_telefoon              VARCHAR2(20),
  adres_fax                   VARCHAR2(15),
  locatie_key                 NUMBER(10),
  adres_factuuradres          NUMBER(1),
  adres_opdrachtadres         NUMBER(1),
  adres_afleveradres          NUMBER(1)
);

CREATE_TABLE(fac_imp_res_artikel_sync, 0)
(
  res_artikel_key              NUMBER(10),
  res_discipline_oms           VARCHAR2(255),
  res_kostensoort_oms          VARCHAR2(255),
  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),
  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_groep            VARCHAR2(10),
  res_artikel_volgnummer       NUMBER(3),
  res_artikel_ingangsdatum     DATE,
  res_artikel_vervaldatum      DATE,
  res_artikel_minimum          NUMBER(3),
  res_artikel_externnr         VARCHAR2(256)
);

CREATE_TABLE(fac_imp_fac_groep, 0)
(
  naam          VARCHAR2(100),
  functiecode   VARCHAR2(100),
  discipline    VARCHAR2(100),
  srtdiscipline VARCHAR2(100),
  orgread       NUMBER,
  orgwrite      NUMBER,
  algread       NUMBER,
  algwrite      NUMBER
);

CREATE_TABLE(fac_imp_fac_gebruikersgroep, 0)
(
   groep              VARCHAR2 (100),
   personeelsnummer   VARCHAR2 (100),
   login              VARCHAR2 (100),
   email              VARCHAR2 (255)
);

CREATE_TABLE(fac_imp_ext_bedrijf, 0)
(
   prs_bedrijf_naam VARCHAR2 (60),
   prs_leverancier_nr VARCHAR2 (50),
   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_post_adres VARCHAR2 (50),
   prs_bedrijf_post_postcode VARCHAR2 (12),
   prs_bedrijf_post_plaats VARCHAR2 (30),
   prs_bedrijf_post_land VARCHAR2 (30),
   prs_bedrijf_contact_persoon VARCHAR2 (30),
   prs_bedrijf_contact_telefoon VARCHAR2 (20),
   prs_bedrijf_contact_fax VARCHAR2 (20),
   prs_bedrijf_leverancier NUMBER (1),
   prs_bedrijf_uitvoerende NUMBER (1),
   prs_bedrijf_contract NUMBER (1),
   prs_bedrijf_huurder NUMBER (1),
   prs_bedrijf_ingids NUMBER (1),
   prs_bedrijf_uurloon NUMBER (6, 2),
   prs_overeenkomst_nr VARCHAR2 (30),
   prs_overeenkomst_datum DATE,
   prs_bedrijf_email VARCHAR2 (100),
   prs_bedrijf_opmerking VARCHAR2 (4000),
   prs_dienst_omschrijving VARCHAR2 (60),
   alg_locatie_code VARCHAR2 (10),
   alg_gebouw_code VARCHAR2 (12),
   prs_bedrijf_overig1 VARCHAR2 (256),
   prs_bedrijf_overig2 VARCHAR2 (256),
   prs_bedrijf_overig3 VARCHAR2 (256),
   prs_bedrijf_xsl VARCHAR2(256),
   prs_bedrijf_order_adres VARCHAR2(256),
   prs_relatietype VARCHAR2(256)
);

CREATE_TABLE(fac_imp_bedrijfadres, 0)
(
   prs_bedrijf_key                NUMBER (10),
   prs_bedrijfadres_type          VARCHAR2 (1),
   mld_typeopdr_key               NUMBER (10),
   prs_bedrijfadres_url           VARCHAR2 (512),
   prs_bedrijfadres_ordermode     NUMBER (3),
   prs_bedrijfadres_certificate   VARCHAR2 (255),
   prs_bedrijfadres_xsl           VARCHAR2 (256),
   prs_bedrijfadres_ext           VARCHAR2 (10),
   prs_bedrijfadres_attachfile    VARCHAR2 (256),
   prs_bedrijfadres_username      VARCHAR2 (128),
   prs_bedrijfadres_password      VARCHAR2 (320),
   prs_bedrijfadres_plugin        VARCHAR2 (320),
   prs_bedrijfadres_plugindata    VARCHAR2 (4000),
   prs_bedrijfadres_sender        VARCHAR2 (512),
   prs_bedrijfadres_replyaddress  VARCHAR2 (512),
   prs_bedrijfadres_lockuser_key  NUMBER (10),
   prs_bedrijfadres_lockexpire    NUMBER (10)
);


// For OPrognose import (optional)
CREATE_TABLE(fac_imp_oprognose, 0) (
 objectcode
    VARCHAR2(128),
 ele_ondbouw
    VARCHAR2(128),
 han_pk
    VARCHAR2(128),
 element
    VARCHAR2(128),
 locatie
    VARCHAR2(128),
 handeling
    VARCHAR2(1024),
 gebrek
    VARCHAR2(1024),
 hoeveelheid
    VARCHAR2(128),
 eenheid
    VARCHAR2(128),
 prijs
    VARCHAR2(128),
 startjaar
    VARCHAR2(128)
);

CREATE_TABLE(fac_imp_taak_mjob, 0)
( ins_deel_key                  NUMBER(10)
, ctr_discipline_key            NUMBER(10)
, ismjob                        NUMBER(1)
, ins_srtcontrole_omschrijving  VARCHAR2(60)
, ins_srtcontrole_key           NUMBER(10)
, ins_srtcontrole_opmerking     VARCHAR2(320)
, ins_srtcontrole_groep         VARCHAR2(60)
, ins_srtcontrole_prioriteit    NUMBER(3)
, fin_btwtabelwaarde_key        NUMBER(10)
, prs_kostenplaats_key          NUMBER(10)
, ins_srtcontroledl_xcp_aantal  NUMBER(8,2)
, ins_srtcontroledl_xcp_aanteh  VARCHAR2(30)
, ins_srtcontroledl_xcp_perc    NUMBER(3)
, ins_srtcontroledl_xcp_opmerk  VARCHAR2(320)
, ins_srtcontroledl_xcp_eenheid NUMBER(3)
, ins_srtcontroledl_xcp_periode NUMBER(6,2)
, ins_srtcontroledl_xcp_start   DATE
, ins_srtcontroledl_xcp_eind    DATE
, ins_srtcontroledl_xcp_materia NUMBER(9,2)
, prs_dienst_omschrijving       VARCHAR2(60)
, ins_srtcontroledl_xcp_key     NUMBER(10)
);

CREATE_TABLE (fac_setting,0) (
  fac_setting_key
    NUMBER(10) PRIMARY KEY,
  fac_setting_module
    VARCHAR2(3) NOT NULL,
  fac_setting_flags
    NUMBER(10) default 0, -- invisible
  fac_setting_name
    VARCHAR2(64) UNIQUE NOT NULL,
  fac_setting_description
    VARCHAR2(250) UNIQUE NOT NULL,
  fac_setting_comment
    VARCHAR2(2000),
  fac_setting_type
    VARCHAR2(32)
    DEFAULT 'string'
    NOT_NULL(fac_setting_type, fac_c_setting_type),
  fac_setting_default
    VARCHAR2(4000),
  fac_setting_pvalue
    VARCHAR2(4000),
  fac_setting_datum
    DATE,
  fac_functie_key
    NUMBER(10)
    CONSTRAINT fac_r_setting_functie REFERENCES fac_functie(fac_functie_key)
// Note: this column is defined in PRS_TAB.SRC
// ,prs_perslid_key
//  NUMBER(10) CONSTRAINT prs_perslid_key12 REFERENCES prs_perslid (prs_perslid_key)
);

// We want the database to know what he is. This table has only one record.
// Note: each field could have been a record in FAC_SETTING but table
//       FAC_VERSION predates database settings.
CREATE_TABLE (fac_version, 0) (
  fac_version_key
    NUMBER(10)
    CONSTRAINT fac_k_fac_version_key PRIMARY KEY,
  fac_version_schema
    VARCHAR(30),
  fac_version_upgrading
    VARCHAR(64),
  fac_version_upgrading_date
    DATE,
  fac_version_cust
    VARCHAR(4),
  fac_version_group
    VARCHAR2(4),
  fac_version_custnr
    NUMBER(3),
  fac_version_otap
    VARCHAR2(1),
  fac_version_lang
    VARCHAR2(3) NOT NULL,
  fac_version_date
    DATE,
  fac_version_putorders_date DATE,
  fac_version_scheduler_date DATE,
  fac_version_notify_date DATE,
  fac_version_cleanup_date DATE,
  fac_version_tasker_date DATE
);

CREATE_TABLE(fac_typestaffel, 0)
(
   fac_typestaffel_key
    NUMBER (10)  PRIMARY KEY,
   fac_typestaffel_omschrijving
    VARCHAR2 (30 CHAR) NOT NULL
);

CREATE_TABLE(fac_tracking, 0)
(
   fac_tracking_key
        NUMBER (10)
        PRIMARY KEY,
   fac_tracking_datum
        DATE
        DEFAULT SYSDATE,
   fac_srtnotificatie_key
        NUMBER (10)
        NOT NULL
        REFERENCES fac_srtnotificatie (fac_srtnotificatie_key) ON DELETE CASCADE,
   fac_tracking_refkey
        NUMBER (10)
        NOT NULL,
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key       NUMBER (10) REFERENCES prs_perslid (prs_perslid_key) ON DELETE SET NULL,
   fac_tracking_oms
        VARCHAR2(2048 CHAR),
   fac_tracking_subject_refkey /* optionele verwijzing naar iets (bv discipline) dat in de omschrijving genoemd wordt */
        NUMBER (10)
);

CREATE_TABLE( fac_menuitems, 0)
(
   fac_menuitems_key     NUMBER(10) PRIMARY KEY,
   fac_menuitems_groep   NUMBER(1),                                          /* 0=personal, 1=professional, 2=appmanagement, 3=mobile*/
   fac_menuitems_label   VARCHAR2 (30 CHAR) NOT NULL,
   fac_menuitems_oms     VARCHAR2 (60 CHAR),
   fac_menuitems_module  VARCHAR2 (3 CHAR),
   fac_menuitems_url     VARCHAR2 (60 CHAR),
   fac_menuitems_srtdisc NUMBER(1),
   fac_menuitems_disc    NUMBER(1),
   fac_functie_key       NUMBER(10) CONSTRAINT fac_r_menuitems1 REFERENCES fac_functie (fac_functie_key),
   fac_menuitems_rw      VARCHAR2 (1 CHAR),
   fac_menuitems_default VARCHAR2 (1 CHAR),
   fac_menuitems_image   VARCHAR2 (255 CHAR)
);

CREATE_TABLE(fac_menu, 0)
(
   fac_menu_key         NUMBER(10) PRIMARY KEY,
   fac_menu_volgnr      NUMBER(5),
   fac_menuitems_key    NUMBER(10) CONSTRAINT fac_r_menu1 REFERENCES fac_menuitems (fac_menuitems_key) ON DELETE CASCADE,
   fac_menu_info        VARCHAR2 (1024 CHAR),
   fac_menu_message     VARCHAR2 (1024 CHAR),
   fac_menu_altlabel    VARCHAR2 (30 CHAR),
   fac_menu_alturl      VARCHAR2 (1000 CHAR),
   fac_menu_altgroep    NUMBER(1),
   fac_functie_key      NUMBER(10) CONSTRAINT fac_r_menu2 REFERENCES fac_functie (fac_functie_key),
   fac_menu_image       VARCHAR2 (255 CHAR),
   fac_menu_color       VARCHAR2 (60 CHAR),
// Note: this column is defined in INS_TAB.SRC
//   ins_discipline_key   NUMBER(10) CONSTRAINT fac_r_menu3 REFERENCES ins_tab_discipline (ins_discipline_key),
//   ins_srtdiscipline_key NUMBER(10) CONSTRAINT fac_r_menu4 REFERENCES ins_srtdiscipline (ins_srtdiscipline_key),
   fac_menu_level       NUMBER(1) DEFAULT 1 NOT NULL,  /* 0=future-use, 1=hoofdmenu, 2=submenu, 3-9=future use */
   fac_menu_portal      NUMBER(1),  /* 1=include in picture/portalmenu, null=donot include, other=future use **Not applicable WHERE fac_menu_altgroep IN (5,6) (pinned/FAV) */
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid          NUMBER(10) CONSTRAINT fac_r_prs_perslid_key7 REFERENCES prs_perslid (prs_perslid_key) ON DELETE CASCADE,
   fac_menu_filter      VARCHAR2(4000),
   fac_menu_advfilter   VARCHAR2(4000),
   fac_menu_aanmaak     DATE DEFAULT SYSDATE
);

-- CREATE_TABLE(fac_queue, 0)
-- (
--    fac_queue_key NUMBER(10) PRIMARY KEY,
--    fac_queue_id VARCHAR2(255),
--    fac_queue_payload CLOB,
--    fac_queue_code VARCHAR2(50),
--    fac_queue_state VARCHAR2(50),
--    CONSTRAINT fac_u_fac_queue_id UNIQUE(fac_queue_id)
-- );

CREATE_TABLE(fac_nieuws_groep, 0)
(
    fac_nieuws_groep_key
        NUMBER(10)
        CONSTRAINT fac_k_nieuws_groep_key PRIMARY KEY,
    fac_nieuws_groep_omschrijving
        VARCHAR2(30)
        CONSTRAINT fac_c_nieuws_groep_omschr CHECK(fac_nieuws_groep_omschrijving IS NOT NULL),
    fac_nieuws_groep_aanmaak
        DATE
        DEFAULT SYSDATE
        CONSTRAINT fac_c_niews_groep_aanmaak NOT NULL
);

CREATE_TABLE(fac_nieuws, 0)
(
   fac_nieuws_key            NUMBER(10) PRIMARY KEY,
   fac_nieuws_titel          VARCHAR2(100 CHAR),
   fac_nieuws_image          VARCHAR2(255 CHAR),
   fac_nieuws_omschrijving   VARCHAR2(4000 CHAR),
   fac_nieuws_onrgoed_key    NUMBER(10),
   fac_nieuws_onrgoed_niveau VARCHAR2(1),
   fac_nieuws_van            DATE,
   fac_nieuws_tot            DATE,
   fac_nieuws_aanmaak        DATE DEFAULT SYSDATE,
   fac_nieuws_lang           VARCHAR2(3),
   fac_groep_key             NUMBER(10) REFERENCES fac_groep(fac_groep_key), /* voor welke autorisatiegroep */
   fac_nieuws_show           NUMBER(3) DEFAULT 3 NOT NULL, /* &1=portal, &2=blogpagina, &4=community */
   fac_nieuws_groep_key      NUMBER(10) REFERENCES fac_nieuws_groep(fac_nieuws_groep_key),
   fac_nieuws_parentkey      NUMBER(10) REFERENCES fac_nieuws(fac_nieuws_key) ON DELETE CASCADE
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key           NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL
//  Note: this column is defined in MLD_TAB.SRC
//   mld_melding_key         NUMBER(10) REFERENCES mld_melding(mld_melding_key) ON DELETE SET NULL
);

CREATE_TABLE(fac_faq, 0)
(
   fac_faq_key NUMBER (10) PRIMARY KEY,
// Note: this column is defined in INS_TAB.SRC
//   faq_ins_discipline_key NUMBER(10)
//       NOT_NULL(faq_ins_discipline_key, faq_c_ins_discipline_key)
//       CONSTRAINT faq_r_ins_discipine_key REFERENCES ins_tab_discipline(ins_discipline_key),
   fac_faq_question VARCHAR2 (4000 CHAR),
   fac_faq_answer VARCHAR2 (4000 CHAR),
   fac_faq_answer2 VARCHAR2 (4000 CHAR),
   fac_faq_source VARCHAR2 (60 CHAR),
   fac_faq_url VARCHAR2 (250 CHAR),
   fac_faq_level NUMBER(1),
   fac_faq_rank NUMBER,
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL,
   fac_functie_key NUMBER(10) REFERENCES fac_functie(fac_functie_key),
   fac_faq_datum DATE, // vanaf
   fac_faq_wijzigdatum DATE,  // actualiteit
   fac_faq_vervaldatum DATE,  // geldigheid
   fac_faq_lang VARCHAR2(3),
   fac_faq_hint VARCHAR2(1000),
   fac_faq_displaymode NUMBER(3) DEFAULT 0  NOT NULL, -- +1=Altijd tonen melding, +2=Pop-up melding, +4=Altijd tonen opdracht, +8=Pop-up opdracht, +16=Altijd tonen afspraak, +32=Pop-up opdracht.
   fac_faq_module VARCHAR2(4) DEFAULT 'MLD' NOT NULL
);

CREATE_TABLE(fac_localeitems, 0) /* Alle mogelijk vertaalbare labels/teksten */
(
   fac_localeitems_key NUMBER (10) PRIMARY KEY,
   fac_localeitems_dialect_id VARCHAR2(30 CHAR),   /* de dialectbepaler, kolom, bijvoorbeeld INS_SRTDISCIPLINE_KEY */
   fac_localeitems_lcl VARCHAR2(100 CHAR),        /* het label, bv lcl_complains */
   CONSTRAINT fac_u_fac_localeitems UNIQUE(fac_localeitems_dialect_id, fac_localeitems_lcl)
);

// Dit is de tabel met tekst-overrules van labels en kolomwaarden
// Er kunnen ook kolomnamen zijn die vertaald worden,
// en dat gaat dan altijd om vertalingen (language) en niet dialecten
// Die komen ook in deze tabel, maar we weten dan nu dus:
// Of fac_localeitems_key+fac_locale_dialectkey, Of fac_locale_kolomnaam+fac_locale_kolomkeyval gevuld
// Met de kennis van nu zou je daar bijna 2 tabellen voor maken :-P
CREATE_TABLE(fac_locale, 0) /* Alle feitelijk vertaalde teksten */
(
   fac_locale_key NUMBER (10) PRIMARY KEY,
   fac_localeitems_key NUMBER (10) REFERENCES fac_localeitems(fac_localeitems_key) ON DELETE CASCADE,
   fac_locale_dialect_key NUMBER(10),
   fac_locale_kolomnaam VARCHAR2(128 CHAR),
   fac_locale_kolomkeyval NUMBER(10),
   fac_locale_lang VARCHAR2(3) NOT NULL,
   fac_locale_tekst VARCHAR2(4000 CHAR),
   CONSTRAINT fac_u_fac_locale UNIQUE(fac_locale_dialect_key, fac_locale_lang, fac_localeitems_key, fac_locale_kolomnaam, fac_locale_kolomkeyval),
   CONSTRAINT fac_c_fac_locale1 CHECK((fac_localeitems_key IS NOT NULL AND fac_locale_dialect_key IS NOT NULL AND fac_locale_kolomnaam IS NULL AND fac_locale_kolomkeyval IS NULL)
                                   OR (fac_localeitems_key IS NULL AND fac_locale_dialect_key IS NULL AND fac_locale_kolomnaam IS NOT NULL AND fac_locale_kolomkeyval IS NOT NULL))
);
CREATE_TABLE(fac_locale_xsl, 0) /* labelvertalingen voor stylesheets */
(
   fac_locale_xsl_key       NUMBER (10) PRIMARY KEY,
   fac_locale_xsl_label     VARCHAR2(60 CHAR),
   fac_locale_xsl_module    VARCHAR2(3 CHAR),
   fac_locale_xsl_lang      VARCHAR2(3) NOT NULL,
   fac_locale_xsl_tekst     VARCHAR2(4000 CHAR),
   fac_locale_xsl_cust      VARCHAR2(4000),
   fac_locale_xsl_isvalid   NUMBER(1) DEFAULT 1 NOT NULL,
   CONSTRAINT fac_u_fac_locale_xsl UNIQUE(fac_locale_xsl_label, fac_locale_xsl_lang, fac_locale_xsl_module)
);

CREATE_TABLE(fac_locale_xref, 0) // TEMP XREF
(
  fac_locale_xref_key        NUMBER(10) PRIMARY KEY,
  fac_locale_xref_filepath   VARCHAR2(100 CHAR) NOT NULL,
  fac_locale_xref_client     NUMBER(1) // 1 voor clientside (anders serverside)
      CONSTRAINT fac_c_fac_locale_xref_client CHECK(fac_locale_xref_client IS NULL
                                                    OR fac_locale_xref_client = 1),
  fac_locale_xsl_key         REFERENCES fac_locale_xsl(fac_locale_xsl_key) ON DELETE CASCADE,
  fac_locale_xref_aanmaak    DATE DEFAULT SYSDATE
);

/* Bevat alle mogelijke statussen en teksten daarbij; wordt initieel gevuld en via views vertaalbaar aangeboden */
CREATE_TABLE(fac_code2label, 0)
(
   fac_code2label_key     NUMBER (10) PRIMARY KEY,
   fac_code2label_domein  VARCHAR2 (30) NOT NULL,
   fac_code2label_code    NUMBER (3) NOT NULL,
   fac_code2label_label   VARCHAR2 (30) NOT NULL
);

CREATE_TABLE(fac_imp_factuur, 0) /* Standaard tabel voor de factuur-import */
(
   leveranciernr        VARCHAR2 (30),      -- prs_bedrijf.overeenkomstnr
   ordernr              VARCHAR2 (31),      -- de code van de BROC (optionally even prefixed although unsupported with standard import)
   factuurnr            VARCHAR2 (30),
   factuurdatum         VARCHAR2 (10),
   aantal               VARCHAR2 (10),      -- aantal geleverd (info)
   kostprijs            VARCHAR2 (15),      -- stuksprijs (info)
   btw                  VARCHAR2 (2),       -- code: zie fin_btw_tabelwaarde_code
   debiteurnr           VARCHAR2 (30),
   locatie              VARCHAR2 (30),      -- referentie
   afleverdatum         VARCHAR2 (10),       -- info
   btw_bedrag           VARCHAR2 (15),      -- regeltotaal btw
   docid                VARCHAR2 (255),     -- bestandsnaam
   omschrijving         VARCHAR2 (250),      -- regelomschrijving
   opmerking            VARCHAR2(250),
   btw_verlegd          VARCHAR2(3),
   kenmerk1             VARCHAR2(4000),
   kenmerk2             VARCHAR2(4000),
   kenmerk3             VARCHAR2(4000),
   kenmerk4             VARCHAR2(4000),
   kenmerk5             VARCHAR2(4000),
   kenmerk6             VARCHAR2(4000),
   kenmerk7             VARCHAR2(4000),
   kenmerk8             VARCHAR2(4000),
   kenmerk9             VARCHAR2(4000),
   kenmerk10            VARCHAR2(4000),
   kenmerk11            VARCHAR2(4000),
   kenmerk12            VARCHAR2(4000),
   kenmerk13            VARCHAR2(4000),
   kenmerk14            VARCHAR2(4000),
   kenmerk15            VARCHAR2(4000),
   kenmerk16            VARCHAR2(4000),
   kenmerk17            VARCHAR2(4000),
   kenmerk18            VARCHAR2(4000),
   kenmerk19            VARCHAR2(4000),
   kenmerk20            VARCHAR2(4000),
   fac_import_key       NUMBER(10) CONSTRAINT fac_r_fac_imp_factuur1 REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
   fac_imp_file_index   NUMBER(10),
   fin_factuur_key      NUMBER(10),           -- geen importkolom, temp
   fin_factuurregel_key NUMBER(10),           -- geen importkolom, temp
   boekmaand            VARCHAR2(7),
   artikelcode          VARCHAR2(30),
   factuurregelaantal   NUMBER(8,2),
   eenheid              VARCHAR2(30),
   opdrachtregelid      NUMBER(10),
   externnr             VARCHAR2(256)
);

CREATE_TABLE(fac_imp_menu, 0)
(
   menu_volgnr             VARCHAR2(255),
   menuitems_label         VARCHAR2(255),
   menuitems_groep         VARCHAR2(255),
   menuitems_url           VARCHAR2(255),
   menu_info               VARCHAR2(255),
   menu_altlabel           VARCHAR2(255),
   menu_alturl             VARCHAR2(1000),
   menu_altgroep           VARCHAR2(255),
   functie_code            VARCHAR2(255),
   discipline_omschr       VARCHAR2(255),
   srtdiscipline_omschr    VARCHAR2(255),
   menu_image              VARCHAR2(255),
   menu_level              VARCHAR2(255),
   menu_portal             VARCHAR2(255)
);

// PF: 1 anamorphe tabel voor alle modules
// -- UWVA#32742:  flexkenmerken transport voor objecten
CREATE_TABLE(fac_imp_flex, 0)
(
   fac_kenmerkdomein_omschrijving   VARCHAR2(255),
   fac_kenmerkdomein_objectnaam     VARCHAR2(255),
   fac_kenmerkdomein_kolomnaam      VARCHAR2(255),
   fac_kenmerkdomein_kolomtxt       VARCHAR2(255),
   fac_usrtab_naam                  VARCHAR2(255),
   srtkenmerk_omschrijving      VARCHAR2(255),
   srtkenmerk_code              VARCHAR2(255),
   srtkenmerk_kenmerktype       VARCHAR2(255),
   srtkenmerk_systeem           VARCHAR2(255),
   srtkenmerk_lengte            VARCHAR2(255),
   srtkenmerk_dec               VARCHAR2(255),
   srtkenmerk_nmin              VARCHAR2(255),
   srtkenmerk_nmax              VARCHAR2(255),
   srtkenmerk_dimensie          VARCHAR2(255),
   kenmerk_niveau               VARCHAR2(255),
   kenmerk_verplicht            VARCHAR2(255),
   kenmerk_groep                VARCHAR2(255),
   kenmerk_rolcode              VARCHAR2(255),
   kenmerk_volgnummer           VARCHAR2(255),
   kenmerk_default              VARCHAR2(4000),
   kenmerk_type                 VARCHAR2(255),
   kenmerk_toonbaar             VARCHAR2(255),
   kenmerk_uniek                VARCHAR2(255),
   kenmerk_hint                 VARCHAR2(255),
   kenmerk_regexp               VARCHAR2(255),
   kenmerk_show_expr            VARCHAR2(4000),
   kenmerk_omschr               VARCHAR2(255),
   kenmerk_code                 VARCHAR2(255),
   kenmerk_verwijder            VARCHAR2(255),
   kenmerk_extra_1              VARCHAR2(255),
   kenmerk_extra_2              VARCHAR2(255),
   kenmerk_extra_3              VARCHAR2(255),
   kenmerk_extra_4              VARCHAR2(255),
   res_srtactiviteit            VARCHAR2(255),
   res_activiteit               VARCHAR2(255),
   mld_srtdiscipline            VARCHAR2(255),
   mld_discipline               VARCHAR2(255),
   mld_stdmelding               VARCHAR2(255),
   mld_typeopdr                 VARCHAR2(255),
   bes_discipline               VARCHAR2(255),
   bes_srtgroep                 VARCHAR2(255),
   bes_srtdeel                  VARCHAR2(255),
   cnt_discipline               VARCHAR2(255),
   ins_discipline               VARCHAR2(255),
   ins_srtgroep                 VARCHAR2(255),
   ins_srtdeel                  VARCHAR2(255),
   kenmerk_wissen               NUMBER(1),
   kenmerk_module               VARCHAR2(3)
);

CREATE_TABLE (fac_kenmwaarden, 0)
(
    fac_kenmwaarden_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_kenmwaarden_key PRIMARY KEY,
    fac_kenmwaarden_module
        VARCHAR2(3)
        NOT_NULL(fac_kenmwaarden_module, fac_c_kenmwaarden_module),
    fac_kenmwaarden_refkey
        NUMBER(10),
    fac_kenmwaarden_niveau
        VARCHAR2(1),
    fac_kenmwaarden_kenmerk_key
        NUMBER(10),
    fac_kenmwaarden_waarde
        VARCHAR2(4000),
    fac_kenmwaarden_exprwaarde
        VARCHAR2 (4000),
    fac_kenmwaarden_kenmerktype
        VARCHAR2(1),
    fac_kenmwaarden_kenmerklen
        NUMBER(4),
    fac_kenmwaarden_kenmerkdec
        NUMBER(3),
    fac_kenmwaarden_isexpr
        VARCHAR2(1)
        DEFAULT 0
        CONSTRAINT fac_c_fac_kenmwaarden_isexpr CHECK(fac_kenmwaarden_isexpr IS NOT NULL
               AND fac_kenmwaarden_isexpr IN (0, 1)),
    fac_kenmwaarden_aanmaak
        DATE
        DEFAULT SYSDATE
// Note: this column is defined in PRS_TAB.SRC
//    prs_perslid_key
//        NUMBER(10)
//        CONSTRAINT fac_r_prs_perslid_key8 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
//        CONSTRAINT fac_c_prs_perslid_key1 CHECK(prs_perslid_key IS NOT NULL),
//    CONSTRAINT fac_u_fac_kenmwaarden UNIQUE(fac_kenmwaarden_module, fac_kenmwaarden_refkey, fac_kenmwaarden_kenmerk_key, prs_perslid_key)
);

CREATE_TABLE(fac_session, 0)
(
   fac_session_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_session_key PRIMARY KEY,
   fac_session_sessionid_hash VARCHAR(128),
   fac_session_data           VARCHAR(256),   -- Diverse data
   fac_session_expire         DATE DEFAULT SYSDATE+(1/24),
   fac_session_aanmaak        DATE DEFAULT SYSDATE,
   fac_session_ip             VARCHAR(64),    -- Ruimte voor ipv6
   fac_session_useragent      VARCHAR(256)
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key           NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
);

CREATE_TABLE(fac_kenmerkdomein, 0)
(
   fac_kenmerkdomein_key
      NUMBER(10)
      CONSTRAINT fac_k_kenmerkdomein_key PRIMARY KEY,
   fac_kenmerkdomein_module
      VARCHAR2(3)
      NOT_NULL(fac_kenmerkdomein_module, fac_c_kenmerkdomein_module),
   fac_kenmerkdomein_omschrijving
      VARCHAR2(50)
      NOT_NULL(fac_kenmerkdomein_omschrijving, fac_c_kenmerkdomein_omschr),
   fac_kenmerkdomein_upper
      VARCHAR2(50)
      NOT_NULL(fac_kenmerkdomein_upper, fac_c_kenmerkdomein_upper),
   fac_kenmerkdomein_objectnaam
      VARCHAR2(2000)
      NOT_NULL(fac_kenmerkdomein_objectnaam, fac_c_refsrtkenm_objnaam),
   fac_kenmerkdomein_kolomnaam
      VARCHAR2(128)
      NOT_NULL(fac_kenmerkdomein_kolomnaam, fac_c_refsrtkenm_kolnaam),
   fac_kenmerkdomein_kolomtxt
      VARCHAR2(128)
      NOT_NULL(fac_kenmerkdomein_kolomtxt, fac_c_refsrtkenm_kolomtxt),
   fac_kenmerkdomein_kolomtxt2
      VARCHAR2(128),
   fac_kenmerkdomein_verval
      VARCHAR2(30),
   fac_usrtab_key
      NUMBER(10)
      CONSTRAINT fac_r_usrtab_key2 REFERENCES fac_usrtab(fac_usrtab_key),
   fac_kenmerkdomein_aanmaak
      DATE
      DEFAULT SYSDATE,
   fac_kenmerkdomein_verwijder
      DATE
      DEFAULT NULLDATUM,
   fac_kenmerkdomein_xmlnode
      VARCHAR2(20),
   CONSTRAINT fac_u_fac_kenmerkdomein_upper UNIQUE(fac_kenmerkdomein_module,fac_kenmerkdomein_upper, fac_kenmerkdomein_verwijder)
);

// A widget is predefined content to be used on widgetpages
CREATE_TABLE(fac_widget, 0)
(
    fac_widget_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_widget_key PRIMARY KEY,
    fac_widget_naam                                      -- Widgetnaam (mn voor bibliotheekwidgets)
        VARCHAR2(60)
        NOT NULL,
    fac_widget_type                                      -- See; Constraint fac_c_widgettype1 for allowed types
        VARCHAR2(3)
        DEFAULT ('FAC')
        NOT NULL,
    fac_widget_typerefkey                                -- Reference depending on the type (usrrap_key, menu_key,..)
        NUMBER(10),
    fac_widget_groep                                     -- DEPRECATED Pagina(naam) of groep(naam) van bijelkaar horende widgets
        VARCHAR2(60),
    fac_widget_volgnr                                    -- DEPRECATED -> onpage
        NUMBER(3),
    fac_widget_id                                        -- Optioneel een id (div_id) van widget
        VARCHAR2(60),
    fac_widget_title                                     -- Optioneel een default titel bij widget
        VARCHAR2(100),
    fac_widget_height                                    -- DEPRECATED -> onpage
        NUMBER(5),
    fac_widget_width                                     -- DEPRECATED -> onpage
        NUMBER(5),
    fac_widget_url                                       -- type URL: Resultaat van URL wordt in de widget getoond
        VARCHAR2(255),
    fac_widget_content                                   -- type RAW: HTML content
        VARCHAR2(4000),
    fac_widget_aanmaak                                   -- Aanmaakdatum
        DATE
        DEFAULT SYSDATE,
    fac_widget_refreshtime                               -- Refreshtijd van widget in seconden, NULL is geen refresh
        NUMBER(5),
    fac_widget_public                                    -- 0=Private widget, 1=Publicly available widget
        NUMBER(1)
        DEFAULT 0
        NOT NULL,
    fac_functie_key                                      -- A la menuitem, indien autorisatie dan tonen
        NUMBER(10)
        CONSTRAINT fac_r_fac_widget_functie_key REFERENCES fac_functie(fac_functie_key)
, CONSTRAINT fac_c_widgettype1 CHECK
            (   (fac_widget_type IN ('FAC', 'URL', 'IMG', 'FLR') AND fac_widget_url IS NOT NULL)
             OR (fac_widget_type IN ('MK', 'MI', 'RAP', 'FAQ') AND fac_widget_typerefkey IS NOT NULL)
             OR (fac_widget_type = 'RAW' AND fac_widget_content IS NOT NULL)
             OR fac_widget_type = 'NWS')
);

// A widgetpage is an ordered group of widgets made accesible to the users
CREATE_TABLE(fac_widget_page, 0)
(
    fac_widget_page_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_widget_page_key PRIMARY KEY,
    fac_widget_page_name                                  -- Paginanaam
        VARCHAR2(60),
// Note: this column is defined in PRS_TAB.SRC
//  , prs_perslid_key
//        NUMBER(10)
//        CONSTRAINT fac_r_prs_perslid_key11 REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE,
    fac_functie_key                                       -- A la menuitem, indien autorisatie dan tonen
        NUMBER(10)
        CONSTRAINT fac_r_widget_page_functie_key REFERENCES fac_functie(fac_functie_key),
    fac_groep_key                                         -- Indien autorisatie dan tonen
        NUMBER(10)
        CONSTRAINT fac_r_widget_page_groep_key REFERENCES fac_groep(fac_groep_key),
    fac_widget_page_aanmaak                               -- Aanmaak datum
        DATE
        DEFAULT SYSDATE
);

CREATE_TABLE(fac_widget_onpage, 0)                        -- Koppeltabel voor fac_widget en fac_widget_page
(
    fac_widget_onpage_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_widget_onpage_key PRIMARY KEY,
    fac_widget_page_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_widget_page_key REFERENCES fac_widget_page(fac_widget_page_key) ON DELETE CASCADE,
    fac_widget_key
        NUMBER(10)
        CONSTRAINT fac_r_fac_widget_key REFERENCES fac_widget(fac_widget_key) ON DELETE CASCADE,
    fac_widget_onpage_order                                -- volgorde
        NUMBER(5),
    fac_widget_onpage_height                               -- Optioneel afwjkend van default
        NUMBER(5),
    fac_widget_onpage_width                                -- Optioneel afwijkend van default
        NUMBER(5)
);

CREATE_TABLE(fac_note_group, 0)
(
   fac_note_group_key             NUMBER (10)    PRIMARY KEY,
   fac_note_group_xmlnode         VARCHAR2(60)   NOT_NULL(fac_note_group_xmlnode, fac_c_fac_note_group_xmlnd),
   fac_note_group_volgnr          NUMBER(3),
   fac_note_group_naam            VARCHAR2(60)   NOT_NULL(fac_note_group_naam, fac_c_fac_note_group_naam),
   fac_note_group_omschrijving    VARCHAR2(4000),
   fac_note_group_vervaldatum     DATE,
   CONSTRAINT fac_u_fac_note_group_naam UNIQUE (fac_note_group_xmlnode,
                                                fac_note_group_naam,
                                                fac_note_group_vervaldatum)
);
/* deze tabel heeft geen numerieke, automatische key maar een GUID-APIKEY achtige key van 32 posities */
CREATE_TABLE(fac_bookmark, 0)
(
   fac_bookmark_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_bookmark_key PRIMARY KEY,
   fac_bookmark_id
        VARCHAR2(32),
   fac_bookmark_naam
        VARCHAR(60)
        NOT_NULL(fac_bookmark_naam, fac_c_fac_bookmark_naam),
   fac_bookmark_path
        VARCHAR(1000)
        NOT_NULL(fac_bookmark_path, fac_c_fac_bookmark_path),
   fac_bookmark_query
        VARCHAR(1000),
   fac_bookmark_unauth_url
        VARCHAR(1000),
   fac_bookmark_refreshtime
        NUMBER(10),
   fac_bookmark_xmlnode
        VARCHAR2(60),
   fac_bookmark_refkey
        NUMBER(10),
   fac_bookmark_aanmaak
        DATE DEFAULT SYSDATE,
   fac_bookmark_flags
        NUMBER(3) DEFAULT(1) NOT NULL, -- 0=onzichtbaar, 1=prssys zichtbaar, 2=iedereen zichtbaar, +4=prssys muteerbaar
   fac_bookmark_expire DATE
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key           NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key_auth      NUMBER(10) REFERENCES prs_perslid(prs_perslid_key)
);

CREATE_TABLE(fac_email_setting, 0)
(
   fac_email_setting_key
        NUMBER(10)
        CONSTRAINT fac_k_fac_email_setting_key PRIMARY KEY,
   fac_email_setting_user VARCHAR2 (255) NOT NULL,
   fac_email_setting_volgnr NUMBER(10)
        DEFAULT 10 NOT NULL,
   fac_email_setting_from VARCHAR2 (255),
   fac_email_setting_frommode NUMBER(3) DEFAULT 0 NOT NULL, -- 0=MAIL FROM SMTP-command, 1=e-mail MIME header, 2=SRS-decode
   fac_email_setting_action VARCHAR2 (255),
   fac_email_setting_aanmaak DATE DEFAULT SYSDATE,
   fac_email_setting_expire DATE,
   fac_email_setting_attachpath VARCHAR2 (255) DEFAULT '*flexfilespath',
   fac_email_setting_attachext VARCHAR2(255),
   fac_email_setting_reqattachext VARCHAR2(255),
   fac_email_setting_attachmaxkb NUMBER(10), -- Kilobyte
   fac_email_setting_loglevel NUMBER(3) DEFAULT 0 NOT NULL,
   fac_email_setting_text VARCHAR2 (320), -- signaaltekst in onderwerpregel
   fac_email_setting_opmerking VARCHAR2 (320),
   fac_email_setting_ai_prompt VARCHAR2 (4000),
// Note: this column is defined in MLD_TAB.SRC
//   mld_stdmelding_key NUMBER(10) REFERENCES mld_stdmelding(mld_stdmelding_key) ON DELETE CASCADE,
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key_auth      NUMBER(10) REFERENCES prs_perslid(prs_perslid_key)
   CONSTRAINT fac_u_fac_email_setting_user UNIQUE(fac_email_setting_user, fac_email_setting_volgnr)
);

-- Resultaattabel te gebruiken als communication area tussen afzonderlijke systemen
-- Bevat geen persistente data, louter tbv communicatie
-- Elk proces moet zelf vooraf opruimen.
CREATE_TABLE(fac_result, 0)
(
  fac_result_sessionid  VARCHAR2(32) NOT NULL,
  fac_result_naam       VARCHAR2(30) NOT NULL,
  fac_result_waarde     VARCHAR2(4000),
  fac_result_aanmaak    DATE DEFAULT SYSDATE
);

--FSN#23346
CREATE_TABLE(fac_imp_usrdata, 0)
(
   fac_usrtab_naam          VARCHAR2(16),
   fac_usrdata_code         VARCHAR2(40),
   fac_usrdata_omschr       VARCHAR2(60),
   fac_usrdata_omschr2      VARCHAR2(60),
   fac_usrdata_volgnr       NUMBER(3),
   fac_usrdata_prijs        NUMBER(15,7),
   fac_usrdata_vervaldatum  DATE,
   fac_usrdata_reftabel     VARCHAR2(16),
   fac_usrdata_refcode      VARCHAR2(40)
);

-- FSN#25766
CREATE_TABLE(fac_imp_inspectie, 0) (
   ins_discipline_omschrijving  VARCHAR2 (60),
   ins_srtgroep_omschrijving    VARCHAR2 (60),
   ins_srtdeel_code             VARCHAR2 (10),
   ins_srtcontrole_omschrijving VARCHAR2 (60),
   ins_srtcontrole_info         VARCHAR2 (320),
   ins_srtcontrole_periode      VARCHAR2 (7),
   ins_srtcontrole_mode         VARCHAR2 (1),
   ins_srtcontrole_eenheid      VARCHAR2 (1),
   ins_srtcontrole_bits         VARCHAR2 (4),
   ctr_discipline_omschrijving  VARCHAR2 (60)
);

-- AAIT#25547
CREATE_TABLE(fac_imp_faq, 0) (
   fac_faq_question                VARCHAR2 (4000),
   fac_faq_answer                  VARCHAR2 (4000),
   fac_faq_answer2                 VARCHAR2 (4000),
   fac_faq_level                   VARCHAR2 (30),
   ins_discipline_key              NUMBER(10),
   mld_stdmelding_key              NUMBER(10),
   fac_faq_source                  VARCHAR2 (60),
   fac_faq_url                     VARCHAR2 (250),
   fac_faq_datum                   DATE,
   fac_faq_lang                    VARCHAR2 (3),
   fac_faq_hint                    VARCHAR2 (1000),
   fac_faq_vervaldatum             DATE,
   faq_discipline_omschrijving     VARCHAR2 (60),
   fac_faq_displaymode             VARCHAR2 (3)
);

-- FSN#25952: Generieke contractenimport
CREATE_TABLE(fac_imp_cnt, 0)
(
   nummer_intern      VARCHAR2 (30),
   nummer_extern      VARCHAR2 (30),
   cnt_soort          VARCHAR2 (60),
   beschrijving       VARCHAR2 (50),
   mantel_nr          VARCHAR2 (30),
   mantel_nr_versie   VARCHAR2 (10),
   omschrijving       VARCHAR2 (1000),
   afdeling           VARCHAR2 (15),
   perslid_eig        VARCHAR2 (30),
   perslid_beh        VARCHAR2 (30),
   opmerking          VARCHAR2 (1000),
   datum_ingang       DATE,
   datum_eind         DATE,
   datum_opzeg        DATE,
   datum_rappel       DATE,
   soortcontact       VARCHAR2 (1),
   bedrijf_naam       VARCHAR2 (200),
   contact_naam       VARCHAR2 (200),
   kpn_code           VARCHAR2 (30),
   kostensoort        VARCHAR2 (60),
   bedrag             NUMBER (11,2),
   bedrag_termijn     NUMBER (11,2),
   uurtarief          NUMBER (6,2),
   korting            NUMBER (4,2),
   locatiecode        VARCHAR2 (10),
   terreincode        VARCHAR2 (12),
   gebouwcode         VARCHAR2 (12),
   verdiepingcode     NUMBER (3),
   ruimtecode         VARCHAR2 (20),
   verlengen          VARCHAR2 (1),
   versie             VARCHAR2 (10),
   dienst             VARCHAR2 (60),
   flex1              VARCHAR2 (255),
   flex2              VARCHAR2 (255),
   flex3              VARCHAR2 (255),
   flex4              VARCHAR2 (255),
   flex5              VARCHAR2 (255),
   flex6              VARCHAR2 (255),
   flex7              VARCHAR2 (255),
   flex8              VARCHAR2 (255),
   flex9              VARCHAR2 (255),
   flex10             VARCHAR2 (255),
   flex11             VARCHAR2 (255),
   flex12             VARCHAR2 (255),
   flex13             VARCHAR2 (255),
   flex14             VARCHAR2 (255),
   flex15             VARCHAR2 (255),
   flex16             VARCHAR2 (255),
   flex17             VARCHAR2 (255),
   flex18             VARCHAR2 (255),
   flex19             VARCHAR2 (255),
   flex20             VARCHAR2 (255),
   flex21             VARCHAR2 (255),
   flex22             VARCHAR2 (255),
   flex23             VARCHAR2 (255),
   flex24             VARCHAR2 (255),
   flex25             VARCHAR2 (255)
);

CREATE_TABLE(fac_imp_translation, 0)
(
   locale_label     VARCHAR2(60 CHAR),
   locale_module    VARCHAR2(3),
   locale_lang      VARCHAR2(3) NOT NULL,
   locale_tekst     VARCHAR2(2000 CHAR)
);

CREATE_TABLE(fac_imp_contactpersoon, 0)
(
    fac_import_key                 NUMBER(10)
            CONSTRAINT fac_r_fac_import_key5
            REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
    prs_contactpersoon_naam        VARCHAR2(30),
    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(200),
    prs_contactpersoon_functie     VARCHAR2(60),
    prs_contactpersoon_opmerking   VARCHAR2(255),
    prs_contactpersoon_uurloon     NUMBER(6,2),
    prs_bedrijf_key                NUMBER(10),
    prs_perslid_key                NUMBER(10),
    alg_locatie_key                NUMBER(10),
    prs_contactpersoon_externnr    VARCHAR2(256),
    prs_contactpersoon_extsyncdate DATE
);

--FSN#23201
CREATE_TABLE(fac_api, 0)
(
   fac_api_key              NUMBER(10) CONSTRAINT fac_k_fac_api_key PRIMARY KEY,
   fac_api_name             VARCHAR2 (32) NOT NULL,
   fac_api_omschrijving     VARCHAR2(60),
   fac_api_filepath         VARCHAR2(64) NOT NULL,
   fac_api_loglevel         NUMBER DEFAULT 0,
   fac_api_errorhandling    NUMBER (10) DEFAULT 1 NOT NULL, // 0=200 on error, 1=400 on error
   fac_usrrap_key           NUMBER (10),
   fac_api_viewmapping_json VARCHAR2 (4000),
   fac_api_stylesheet       VARCHAR2 (64),
   fac_api_stylesheet_out   VARCHAR2 (64),
   fac_api_options_json     VARCHAR2 (4000)
);

CREATE_TABLE(fac_audit, 0)
(
   fac_audit_key
       NUMBER(10)
       CONSTRAINT fac_k_fac_audit_key PRIMARY KEY,
   fac_audit_tabelnaam
       VARCHAR2(128)
       CONSTRAINT fac_k_fac_audit_tabelnaam CHECK(fac_audit_tabelnaam IS NOT NULL),
   fac_audit_tabelkey
       NUMBER(10),
   fac_audit_veldnaam
       VARCHAR2(128),
   fac_audit_actie
       VARCHAR2(1)
       CONSTRAINT fac_k_fac_audit_actie CHECK(fac_audit_actie IN ('C', 'D', 'I', 'U')),
   fac_audit_waarde_oud
       VARCHAR2(4000),
   fac_audit_waarde_nieuw
       VARCHAR2(4000),
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key
//       NUMBER(10)
//       CONSTRAINT fac_r_prs_perslid_key9 REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL,
   fac_audit_opmerking
       VARCHAR2(320),
   fac_audit_datum
       DATE
       DEFAULT SYSDATE
       CONSTRAINT fac_c_fac_audit_datum CHECK(fac_audit_datum IS NOT NULL)
);

CREATE_TABLE(fac_auditfail, 0)
(
   fac_auditfail_key
       NUMBER(10)
       CONSTRAINT fac_k_fac_auditfail_key PRIMARY KEY,
   fac_auditfail_datum
       DATE
       DEFAULT SYSDATE
       NOT NULL,
   fac_auditfail_tekst
       VARCHAR2(2048 CHAR)
);

-- AAIT#25547
CREATE_TABLE(faq_kenmerk,0)
(
   faq_kenmerk_key          NUMBER(10) CONSTRAINT faq_k_faq_kenmerk_key PRIMARY KEY,
   faq_discipline_key       NUMBER(10),
   faq_kenmerk_volgnr       NUMBER(3) NOT NULL,
   faq_kenmerk_rolcode      NUMBER(4) DEFAULT 7 NOT NULL,
   faq_kenmerk_omschrijving VARCHAR2(50),
   faq_kenmerk_upper        VARCHAR2(50),
   faq_kenmerk_code         VARCHAR2(60),
   faq_kenmerk_hint         VARCHAR2(255),
   faq_kenmerk_default      VARCHAR2(4000),
   faq_kenmerk_show_expr    VARCHAR2(4000),
   faq_kenmerk_dimensie     VARCHAR2(10),
   faq_kenmerk_kenmerktype  VARCHAR2(1),
   faq_kenmerk_systeem      NUMBER(2),
   faq_kenmerk_toonbaar     NUMBER(1),
   faq_kenmerk_inlijst      NUMBER(1) DEFAULT 0 NOT NULL,
   faq_kenmerk_uniek        NUMBER(1),
   faq_kenmerk_regexp       VARCHAR2(255),
   faq_kenmerk_verplicht    NUMBER(1),
   faq_kenmerk_groep        NUMBER(1) DEFAULT 0 NOT NULL,
   faq_kenmerk_lengte       NUMBER(4),
   faq_kenmerk_dec          NUMBER(2),
   faq_kenmerk_nmin         NUMBER(10),
   faq_kenmerk_nmax         NUMBER(10),
   fac_kenmerkdomein_key    NUMBER(10)
                            CONSTRAINT faq_r_kenmerkdomein_key1 REFERENCES fac_kenmerkdomein(fac_kenmerkdomein_key),
   faq_kenmerk_aanmaak      DATE
                            DEFAULT SYSDATE
                            NOT_NULL(faq_kenmerk_aanmaak, faq_c_faq_kenmerk_aanmaak),
   faq_kenmerk_verwijder    DATE
                            DEFAULT NULLDATUM,
   fac_functie_key          NUMBER(10)
                            CONSTRAINT fac_r_faq_kenmerk_functie REFERENCES fac_functie (fac_functie_key),
   CONSTRAINT faq_u_faq_kenmerk UNIQUE(faq_discipline_key, faq_kenmerk_omschrijving, faq_kenmerk_groep, faq_kenmerk_verwijder)
// Note: this constraint is defined in INS_TAB.SRC
// , CONSTRAINT faq_c_faq_kenmerk_discipline FOREIGN KEY(faq_discipline_key) REFERENCES ins_tab_discipline(ins_discipline_key)
);

CREATE_TABLE(faq_kenmerkwaarde, 0)
(
   faq_kenmerkwaarde_key       NUMBER(10)
                               CONSTRAINT faq_k_faq_kenmerkwaarde_key PRIMARY KEY,
   fac_faq_key                 NUMBER(10)
                               CONSTRAINT faq_r_faq_key REFERENCES fac_faq(fac_faq_key)  ON DELETE CASCADE,
   faq_kenmerk_key             NUMBER(10),
   faq_kenmerkwaarde_waarde    VARCHAR2(4000),
   faq_kenmerkwaarde_aanmaak   DATE
                               DEFAULT SYSDATE
                               NOT_NULL(faq_kenmerkwaarde_aanmaak, faq_c_faq_kenmerkwaarde_aanm),
   faq_kenmerkwaarde_verwijder DATE
                               DEFAULT NULLDATUM,
   CONSTRAINT faq_u_faq_kenmerkwaarde_key UNIQUE(fac_faq_key, faq_kenmerk_key, faq_kenmerkwaarde_verwijder)
);

// Holds several usage counters and related info for analyzing and stats
CREATE_TABLE(fac_gui_counter, 0)
(
   fac_gui_counter_key      NUMBER (10) PRIMARY KEY,
   fac_gui_counter_group    VARCHAR2 (12),                            /* prodsearch, menu, usrrap */
   fac_gui_counter_refkey   NUMBER (10),
   fac_gui_counter_count    NUMBER (12),
   fac_gui_counter_info     VARCHAR2 (1000),
   fac_gui_counter_date     DATE DEFAULT SYSDATE
// Note: this column is defined in PRS_TAB.SRC
//   prs_perslid_key          NUMBER (10) CONSTRAINT fac_r_guicnt_perslid_key REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
//   CONSTRAINT fac_u_fac_gui_counter UNIQUE(fac_gui_counter_group, fac_gui_counter_date, fac_gui_counter_refkey, prs_perslid_key, fac_gui_counter_info)
);

CREATE_TABLE(fac_sequence, 0)
(
   fac_sequence_key      NUMBER(10)
                         CONSTRAINT fac_k_fac_sequence_key PRIMARY KEY,
   fac_sequence_name     VARCHAR2(50)
                         NOT NULL,
   fac_sequence_lastval  NUMBER(10),
   fac_sequence_expire   DATE
);

CREATE_TABLE(fac_bijlagen, 0)
(
   fac_bijlagen_key             NUMBER(10)
                                CONSTRAINT fac_k_fac_bijlagen_key PRIMARY KEY,
   fac_bijlagen_module          VARCHAR2(4)
                                NOT NULL,
   fac_bijlagen_refkey          NUMBER(10) NOT NULL,
   fac_bijlagen_kenmerk_key     NUMBER(10) NOT NULL,
   fac_bijlagen_disk_directory  VARCHAR2(200)
                                NOT NULL,
   fac_bijlagen_disk_filename   VARCHAR2(200),
   fac_bijlagen_filename        VARCHAR2(200)
                                NOT NULL,
   fac_bijlagen_description     VARCHAR2(500),
   fac_bijlagen_digest          VARCHAR2(64),
   fac_bijlagen_content_type    VARCHAR2(50),
   fac_bijlagen_file_size       NUMBER(12)
                                NOT NULL,
   fac_bijlagen_root_key        NUMBER(10)
                                NOT NULL,
   fac_bijlagen_aanmaak         DATE
                                DEFAULT SYSDATE,
   fac_bijlagen_verwijder       DATE,
   CONSTRAINT fac_r_bijlagen_root_key
      FOREIGN KEY (fac_bijlagen_root_key) REFERENCES fac_bijlagen(fac_bijlagen_key)
);

CREATE_TABLE(fac_layout, 0)
(
   fac_layout_key               NUMBER(10)
                                CONSTRAINT fac_k_fac_layout_key PRIMARY KEY,
   fac_layout_version           NUMBER(2)
                                DEFAULT 1 NOT NULL,
   fac_layout_screen            VARCHAR2(128) NOT NULL,
   fac_layout_options           VARCHAR2(4000), -- JSON
   fac_layout_aanmaak           DATE
                                DEFAULT SYSDATE
);

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

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


REGISTERONCE('$Id$')
