CREATE TABLE INKOOPORDER (
    INKOOPORDER_ID NUMBER PRIMARY KEY,
    ARTIKELCODE VARCHAR2(80),
    BETALINGMEERDEREJAREN NUMBER(1),
    BETREFT VARCHAR2(255),
    DATUMEINDE DATE,
    DATUMINGEDIEND DATE,
    DATUMSTART DATE,
    GERELATEERD_INKOOPORDER_ID NUMBER,
    GOEDERENCODE VARCHAR2(80),
    OMSCHRIJVING VARCHAR2(255),
    OORSPRONKELIJK_INKOOPORDER_ID NUMBER,
    ORDERNUMMER VARCHAR2(255),
    SALDO VARCHAR2(255),
    TOTAALNETTOBEDRAG NUMBER(10,2),
    WIJZEVANAANBESTEDEN VARCHAR2(255)
);

CREATE TABLE BESCHIKTE_VOORZIENING (
    BESCHIKTE_VOORZIENING_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(20),
    DATUMEINDE DATE,
    DATUMEINDEOORSPRONKELIJK DATE,
    DATUMSTART DATE,
    EENHEID VARCHAR2(255),
    FREQUENTIE VARCHAR2(255),
    LEVERINGSVORM VARCHAR2(255),
    OMVANG NUMBER,
    REDENEINDE DATE,
    STATUS VARCHAR2(50),
    WET VARCHAR2(255)
);

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

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

CREATE TABLE LEVERANCIER (
    LEVERANCIER_ID NUMBER PRIMARY KEY,
    AGBCODE VARCHAR2(255),
    LEVERANCIERSCODE VARCHAR2(255),
    NAAM VARCHAR2(200),
    SOORTLEVERANCIER VARCHAR2(80),
    SOORTLEVERANCIERCODE VARCHAR2(255)
);

CREATE TABLE CLIENT (
    CLIENT_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(80),
    GEZAGSDRAGERGEKEND NUMBER(1),
    JURIDISCHESTATUS VARCHAR2(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR2(80)
);

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

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

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

CREATE TABLE AOM_AANVRAAGWMOJEUGD (
    AOM_AANVRAAGWMOJEUGD_ID NUMBER PRIMARY KEY,
    CLIENTREACTIE VARCHAR2(100),
    DATUMBESCHIKKING DATE,
    DATUMEERSTEAFSPRAAK DATE,
    DATUMEINDE DATE,
    DATUMPLANVASTGESTELD DATE,
    DATUMSTARTAANVRAAG DATE,
    DESKUNDIGHEID VARCHAR2(50),
    DOORLOOPMETHODIEK VARCHAR2(50),
    HEEFT_CLIENT_ID NUMBER,
    MAXIMALEDOORLOOPTIJD TIMESTAMP,
    REDENAFSLUITING VARCHAR2(50)
);

CREATE TABLE VERPLICHTING_WMO_JEUGD (
    INKOOPORDER_ID NUMBER PRIMARY KEY,
    AOM_AANVRAAGWMOJEUGD_ID NUMBER,
    BESCHIKTE_VOORZIENING_ID NUMBER,
    BUDGETSOORT NUMBER,
    BUDGETSOORTGROEP NUMBER,
    EINDDATUMGEPLAND DATE,
    FEITELIJKE_EINDDATUM DATE,
    HEEFT_CLIENT_ID NUMBER,
    JAAR NUMBER,
    PERIODICITEIT NUMBER,
    VERPLICHTINGSOORT NUMBER,
    VERPLICHTING_AAN_LEVERANCIER_ID NUMBER
);

CREATE TABLE KP_VRPLCHTNG_WMO_JGD_INKPRDR (
    KP_VRPLCHTNG_WMO_JGD_INKPRDR_ID NUMBER PRIMARY KEY,
    VERPLICHTING_WMO_JEUGD_ID NUMBER,
    INKOOPORDER_ID NUMBER
);

ALTER TABLE VERPLICHTING_WMO_JEUGD ADD CONSTRAINT FK_VERPLICHTING_WMO_JEUGD_GEN_INKOOPORDER FOREIGN KEY (INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- Generalization to INKOOPORDER

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_VRPLCHTNG_WMO_JGD_INKPRDR ADD CONSTRAINT FK_KP_VRPLCHTNG_WMO_JGD_INKPRDR_1 FOREIGN KEY (VERPLICHTING_WMO_JEUGD_ID) REFERENCES VERPLICHTING_WMO_JEUGD (INKOOPORDER_ID);
-- VERPLICHTING_WMO_JEUGD (many-to-many junction, Connector_ID: 1037)

ALTER TABLE KP_VRPLCHTNG_WMO_JGD_INKPRDR ADD CONSTRAINT FK_KP_VRPLCHTNG_WMO_JGD_INKPRDR_2 FOREIGN KEY (INKOOPORDER_ID) REFERENCES INKOOPORDER (INKOOPORDER_ID);
-- INKOOPORDER (many-to-many junction, Connector_ID: 1037)

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 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 VERPLICHTING_WMO_JEUGD ADD CONSTRAINT FK_VERPLICHTING_WMO_JEUGD_VERPLICHTING_AAN FOREIGN KEY (VERPLICHTING_AAN_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- VERPLICHTING_AAN (1 to 0..1, Connector_ID: 1035)

ALTER TABLE VERPLICHTING_WMO_JEUGD ADD CONSTRAINT FK_VERPLICHTING_WMO_JEUGD_HEEFT FOREIGN KEY (HEEFT_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- HEEFT (1 to 0..1, Connector_ID: 1036)

ALTER TABLE VERPLICHTING_WMO_JEUGD ADD CONSTRAINT FK_VERPLICHTING_WMO_JEUGD_BESCHIKTE_VOORZIENING FOREIGN KEY (BESCHIKTE_VOORZIENING_ID) REFERENCES BESCHIKTE_VOORZIENING (BESCHIKTE_VOORZIENING_ID);
-- unnamed (1 to 0..1, Connector_ID: 1057)

ALTER TABLE VERPLICHTING_WMO_JEUGD ADD CONSTRAINT FK_VERPLICHTING_WMO_JEUGD_AOM_AANVRAAGWMOJEUGD FOREIGN KEY (AOM_AANVRAAGWMOJEUGD_ID) REFERENCES AOM_AANVRAAGWMOJEUGD (AOM_AANVRAAGWMOJEUGD_ID);
-- unnamed (1 to 0..1, Connector_ID: 1077)

ALTER TABLE AOM_AANVRAAGWMOJEUGD ADD CONSTRAINT FK_AOM_AANVRAAGWMOJEUGD_HEEFT FOREIGN KEY (HEEFT_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- HEEFT (0..* to 1, Connector_ID: 1079)

