CREATE TABLE HOOFDREKENING (
    HOOFDREKENING_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    NUMMER VARCHAR(255),
    OMSCHRIJVING VARCHAR(200),
    PIAHOOFCATEGORIEOMSCHRIJVING VARCHAR(80),
    PIAHOOFDCATEGORIECODE VARCHAR(20),
    SUBCODE VARCHAR(20),
    SUBCODEOMSCHRIJVING VARCHAR(80),
    VALT_BINNEN_HOOFDREKENING_ID INTEGER
);

CREATE TABLE KOSTENPLAATS (
    KOSTENPLAATS_ID INTEGER PRIMARY KEY,
    BTWCODE VARCHAR(255),
    BTWOMSCHRIJVING VARCHAR(80),
    KOSTENPLAATSSOORTCODE DECIMAL(10,2),
    KOSTENPLAATSSOORTOMSCHRIJVING DECIMAL(10,2),
    KOSTENPLAATSTYPECODE DECIMAL(10,2),
    KOSTENPLAATSTYPEOMSCHRIJVING DECIMAL(10,2),
    NAAM VARCHAR(80),
    OMSCHRIJVING VARCHAR(200)
);

CREATE TABLE DOCUMENT (
    DOCUMENT_ID INTEGER PRIMARY KEY,
    COCUMENTBESCHRIJVING VARCHAR(255),
    DATUMCREATIEDOCUMENT DATE,
    DATUMONTVANGSTDOCUMENT DATE,
    DATUMVERZENDINGDOCUMENT DATE,
    DOCUMENTAUTEUR VARCHAR(200),
    DOCUMENTIDENTIFICATIE VARCHAR(255),
    DOCUMENTTITEL VARCHAR(200),
    VERTROUWELIJKAANDUIDING VARCHAR(20)
);

CREATE TABLE LEVERANCIER (
    LEVERANCIER_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(200),
    NUMMER VARCHAR(255)
);

CREATE TABLE ACTIVASOORT (
    ACTIVASOORT_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    OMSCHRIJVING VARCHAR(200)
);

CREATE TABLE KP_HFDRKNNG_KSTNPLTS (
    KP_HFDRKNNG_KSTNPLTS_ID INTEGER PRIMARY KEY,
    HOOFDREKENING_ID INTEGER,
    KOSTENPLAATS_ID INTEGER
);

CREATE TABLE CONTRACT (
    CONTRACT_ID INTEGER PRIMARY KEY,
    AUTORISATIEGROEP VARCHAR(200),
    BESCHRIJVING TEXT,
    BOVENLIGGEND_CONTRACT_ID INTEGER,
    CATEGORIE VARCHAR(80),
    CLASSIFICATIE VARCHAR(80),
    CONTRACTANT_LEVERANCIER_ID INTEGER,
    CONTRACTREVISIE INTEGER,
    DATUMCREATIE DATE,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    GROEP VARCHAR(80),
    INTERNCONTRACTID VARCHAR(255),
    INTERNCONTRACTREVISIE INTEGER,
    OPMERKINGEN TEXT,
    STATUS VARCHAR(80),
    TYPE VARCHAR(80),
    VOORWAARDE VARCHAR(80),
    ZOEKWOORDEN VARCHAR(255)
);

CREATE TABLE ACTIVA (
    ACTIVA_ID INTEGER PRIMARY KEY,
    IS_SOORT_ACTIVASOORT_ID INTEGER,
    NAAM VARCHAR(80),
    OMSCHRIJVING VARCHAR(200)
);

CREATE TABLE INKOOPORDER (
    INKOOPORDER_ID INTEGER PRIMARY KEY,
    ARTIKELCODE VARCHAR(80),
    BETALINGMEERDEREJAREN BOOLEAN,
    BETREFT VARCHAR(255),
    BETREFT_CONTRACT_ID INTEGER,
    DATUMEINDE DATE,
    DATUMINGEDIEND DATE,
    DATUMSTART DATE,
    GERELATEERD_INKOOPORDER_ID INTEGER,
    GOEDERENCODE VARCHAR(80),
    OMSCHRIJVING VARCHAR(255),
    OORSPRONKELIJK_INKOOPORDER_ID INTEGER,
    ORDERNUMMER VARCHAR(255),
    SALDO VARCHAR(255),
    TOTAALNETTOBEDRAG DECIMAL(10,2),
    VERPLICHTING_AAN_LEVERANCIER_ID INTEGER,
    WIJZEVANAANBESTEDEN VARCHAR(255)
);

CREATE TABLE KP_CNTRCT_DCMNT (
    KP_CNTRCT_DCMNT_ID INTEGER PRIMARY KEY,
    CONTRACT_ID INTEGER,
    DOCUMENT_ID INTEGER
);

CREATE TABLE KP_HFDRKNNG_ACTV (
    KP_HFDRKNNG_ACTV_ID INTEGER PRIMARY KEY,
    HOOFDREKENING_ID INTEGER,
    ACTIVA_ID INTEGER
);

CREATE TABLE KP_KSTNPLTS_INKPRDR (
    KP_KSTNPLTS_INKPRDR_ID INTEGER PRIMARY KEY,
    KOSTENPLAATS_ID INTEGER,
    INKOOPORDER_ID INTEGER
);

CREATE TABLE KP_INKPRDR_HFDRKNNG (
    KP_INKPRDR_HFDRKNNG_ID INTEGER PRIMARY KEY,
    INKOOPORDER_ID INTEGER,
    HOOFDREKENING_ID INTEGER
);

CREATE TABLE FACTUUR (
    FACTUUR_ID INTEGER PRIMARY KEY,
    BETAALBAARPER DATE,
    BETAALTERMIJN VARCHAR(255),
    CODE VARCHAR(255),
    CREDITEUR_LEVERANCIER_ID INTEGER,
    DATUMFACTUUR DATE,
    FACTUURBEDRAGBTW DECIMAL(10,2),
    FACTUURBEDRAGEXCLUSIEFBTW DECIMAL(10,2),
    GEDEKT_VIA_INKOOPORDER_ID INTEGER,
    OMSCHRIJVING VARCHAR(200),
    SCHRIJFT_OP_KOSTENPLAATS_ID INTEGER
);

ALTER TABLE KP_CNTRCT_DCMNT ADD CONSTRAINT FK_KP_CNTRCT_DCMNT_1 FOREIGN KEY (CONTRACT_ID) REFERENCES CONTRACT (CONTRACT_ID);
-- CONTRACT (many-to-many junction, Connector_ID: 103)

ALTER TABLE KP_CNTRCT_DCMNT ADD CONSTRAINT FK_KP_CNTRCT_DCMNT_2 FOREIGN KEY (DOCUMENT_ID) REFERENCES DOCUMENT (DOCUMENT_ID);
-- DOCUMENT (many-to-many junction, Connector_ID: 103)

ALTER TABLE KP_KSTNPLTS_INKPRDR ADD CONSTRAINT FK_KP_KSTNPLTS_INKPRDR_1 FOREIGN KEY (KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- KOSTENPLAATS (many-to-many junction, Connector_ID: 492)

ALTER TABLE KP_KSTNPLTS_INKPRDR ADD CONSTRAINT FK_KP_KSTNPLTS_INKPRDR_2 FOREIGN KEY (INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- INKOOPORDER (many-to-many junction, Connector_ID: 492)

ALTER TABLE KP_INKPRDR_HFDRKNNG ADD CONSTRAINT FK_KP_INKPRDR_HFDRKNNG_1 FOREIGN KEY (INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- INKOOPORDER (many-to-many junction, Connector_ID: 499)

ALTER TABLE KP_INKPRDR_HFDRKNNG ADD CONSTRAINT FK_KP_INKPRDR_HFDRKNNG_2 FOREIGN KEY (HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- HOOFDREKENING (many-to-many junction, Connector_ID: 499)

ALTER TABLE KP_HFDRKNNG_KSTNPLTS ADD CONSTRAINT FK_KP_HFDRKNNG_KSTNPLTS_1 FOREIGN KEY (HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- HOOFDREKENING (many-to-many junction, Connector_ID: 505)

ALTER TABLE KP_HFDRKNNG_KSTNPLTS ADD CONSTRAINT FK_KP_HFDRKNNG_KSTNPLTS_2 FOREIGN KEY (KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- KOSTENPLAATS (many-to-many junction, Connector_ID: 505)

ALTER TABLE KP_HFDRKNNG_ACTV ADD CONSTRAINT FK_KP_HFDRKNNG_ACTV_1 FOREIGN KEY (HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- HOOFDREKENING (many-to-many junction, Connector_ID: 532)

ALTER TABLE KP_HFDRKNNG_ACTV ADD CONSTRAINT FK_KP_HFDRKNNG_ACTV_2 FOREIGN KEY (ACTIVA_ID) REFERENCES ACTIVA (ACTIVA_ID);
-- ACTIVA (many-to-many junction, Connector_ID: 532)

ALTER TABLE CONTRACT ADD CONSTRAINT FK_CONTRACT_CONTRACTANT FOREIGN KEY (CONTRACTANT_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- CONTRACTANT (1 to 0..*, Connector_ID: 404)

ALTER TABLE CONTRACT ADD CONSTRAINT FK_CONTRACT_BOVENLIGGEND FOREIGN KEY (BOVENLIGGEND_CONTRACT_ID) REFERENCES CONTRACT (CONTRACT_ID);
-- BOVENLIGGEND (0..* to 0..1, Connector_ID: 405)

ALTER TABLE INKOOPORDER ADD CONSTRAINT FK_INKOOPORDER_OORSPRONKELIJK FOREIGN KEY (OORSPRONKELIJK_INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- OORSPRONKELIJK (0..1 to 0..1, Connector_ID: 493)

ALTER TABLE INKOOPORDER ADD CONSTRAINT FK_INKOOPORDER_GERELATEERD FOREIGN KEY (GERELATEERD_INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- GERELATEERD (0..1 to 0..*, Connector_ID: 494)

ALTER TABLE INKOOPORDER ADD CONSTRAINT FK_INKOOPORDER_BETREFT FOREIGN KEY (BETREFT_CONTRACT_ID) REFERENCES CONTRACT (CONTRACT_ID);
-- BETREFT (0..1 to 1, Connector_ID: 495)

ALTER TABLE INKOOPORDER ADD CONSTRAINT FK_INKOOPORDER_VERPLICHTING_AAN FOREIGN KEY (VERPLICHTING_AAN_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- VERPLICHTING_AAN (0..* to 1, Connector_ID: 496)

ALTER TABLE HOOFDREKENING ADD CONSTRAINT FK_HOOFDREKENING_VALT_BINNEN FOREIGN KEY (VALT_BINNEN_HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- VALT_BINNEN (1 to 0..*, Connector_ID: 504)

ALTER TABLE FACTUUR ADD CONSTRAINT FK_FACTUUR_CREDITEUR FOREIGN KEY (CREDITEUR_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- CREDITEUR (0..* to 1, Connector_ID: 507)

ALTER TABLE FACTUUR ADD CONSTRAINT FK_FACTUUR_GEDEKT_VIA FOREIGN KEY (GEDEKT_VIA_INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- GEDEKT_VIA (0..* to 0..1, Connector_ID: 509)

ALTER TABLE FACTUUR ADD CONSTRAINT FK_FACTUUR_SCHRIJFT_OP FOREIGN KEY (SCHRIJFT_OP_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- SCHRIJFT_OP (0..* to 0..1, Connector_ID: 510)

ALTER TABLE ACTIVA ADD CONSTRAINT FK_ACTIVA_IS_SOORT FOREIGN KEY (IS_SOORT_ACTIVASOORT_ID) REFERENCES ACTIVASOORT (ACTIVASOORT_ID);
-- IS_SOORT (0..* to 1, Connector_ID: 533)

