CREATE TABLE [INKOOPORDER] (
    [INKOOPORDER_ID] INT PRIMARY KEY,
    [ARTIKELCODE] VARCHAR(80),
    [BETALINGMEERDEREJAREN] BIT,
    [BETREFT] VARCHAR(255),
    [DATUMEINDE] DATE,
    [DATUMINGEDIEND] DATE,
    [DATUMSTART] DATE,
    [GERELATEERD_INKOOPORDER_ID] INT,
    [GOEDERENCODE] VARCHAR(80),
    [OMSCHRIJVING] VARCHAR(255),
    [OORSPRONKELIJK_INKOOPORDER_ID] INT,
    [ORDERNUMMER] VARCHAR(255),
    [SALDO] VARCHAR(255),
    [TOTAALNETTOBEDRAG] DECIMAL(10,2),
    [WIJZEVANAANBESTEDEN] VARCHAR(255)
);

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

CREATE TABLE [KOSTENPLAATS] (
    [KOSTENPLAATS_ID] INT 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 [HOOFDREKENING] (
    [HOOFDREKENING_ID] INT 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] INT
);

CREATE TABLE [LEVERANCIER] (
    [LEVERANCIER_ID] INT PRIMARY KEY,
    [AGBCODE] VARCHAR(255),
    [LEVERANCIERSCODE] VARCHAR(255),
    [NAAM] VARCHAR(200),
    [SOORTLEVERANCIER] VARCHAR(80),
    [SOORTLEVERANCIERCODE] VARCHAR(255)
);

CREATE TABLE [CLIENT] (
    [CLIENT_ID] INT PRIMARY KEY,
    [CODE] VARCHAR(80),
    [GEZAGSDRAGERGEKEND] BIT,
    [JURIDISCHESTATUS] VARCHAR(80),
    [WETTELIJKEVERTEGENWOORDIGING] VARCHAR(80)
);

CREATE TABLE [KP_KSTNPLTS_INKPRDR] (
    [KP_KSTNPLTS_INKPRDR_ID] INT PRIMARY KEY,
    [KOSTENPLAATS_ID] INT,
    [INKOOPORDER_ID] INT
);

CREATE TABLE [KP_HFDRKNNG_KSTNPLTS] (
    [KP_HFDRKNNG_KSTNPLTS_ID] INT PRIMARY KEY,
    [HOOFDREKENING_ID] INT,
    [KOSTENPLAATS_ID] INT
);

CREATE TABLE [KP_INKPRDR_HFDRKNNG] (
    [KP_INKPRDR_HFDRKNNG_ID] INT PRIMARY KEY,
    [INKOOPORDER_ID] INT,
    [HOOFDREKENING_ID] INT
);

CREATE TABLE [AOM_AANVRAAGWMOJEUGD] (
    [AOM_AANVRAAGWMOJEUGD_ID] INT PRIMARY KEY,
    [CLIENTREACTIE] VARCHAR(100),
    [DATUMBESCHIKKING] DATE,
    [DATUMEERSTEAFSPRAAK] DATE,
    [DATUMEINDE] DATE,
    [DATUMPLANVASTGESTELD] DATE,
    [DATUMSTARTAANVRAAG] DATE,
    [DESKUNDIGHEID] VARCHAR(50),
    [DOORLOOPMETHODIEK] VARCHAR(50),
    [HEEFT_CLIENT_ID] INT,
    [MAXIMALEDOORLOOPTIJD] DATETIME2,
    [REDENAFSLUITING] VARCHAR(50)
);

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

CREATE TABLE [KP_VRPLCHTNG_WMO_JGD_INKPRDR] (
    [KP_VRPLCHTNG_WMO_JGD_INKPRDR_ID] INT PRIMARY KEY,
    [VERPLICHTING_WMO_JEUGD_ID] INT,
    [INKOOPORDER_ID] INT
);

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)

