-- latest version on top

CREATE TABLE IF NOT EXISTS ls.production_order
(
    "Suchschluessel" text COLLATE pg_catalog."default" NOT NULL,
    "Grund_der_Ausloesung_Beschreibung" text COLLATE pg_catalog."default",
    "Produktionsplan_Name" text COLLATE pg_catalog."default",
    "Produktionsplan_Suchschluessel" text COLLATE pg_catalog."default",
    "Status" text COLLATE pg_catalog."default",
    "Freigabe" text COLLATE pg_catalog."default",
    "Startdatum" text COLLATE pg_catalog."default",
    "Enddatum" text COLLATE pg_catalog."default",
    "Arbeitsgang_Arbeitsanweisung" text COLLATE pg_catalog."default",
    "Arbeitsgang_Artikelname" text COLLATE pg_catalog."default",
    "Arbeitsgang_Artikelnummer" text COLLATE pg_catalog."default",
    "Arbeitsgang_Menge" text COLLATE pg_catalog."default",
    "Arbeitsgang_Rohmaterial" text COLLATE pg_catalog."default",
    ret_forms text COLLATE pg_catalog."default",
    ret_materials text COLLATE pg_catalog."default",
    ret_dim_1 integer,
    "Bestelldatum" text COLLATE pg_catalog."default",
    "Kunden_ID" text COLLATE pg_catalog."default",
    "Kundenprioritaet" integer,
    "order" integer,
    clusters integer,
    chunk_id integer,
    prio double precision,
    erfassungspunkt text COLLATE pg_catalog."default",
    CONSTRAINT production_order_pkey1 PRIMARY KEY ("Suchschluessel")
);

CREATE TABLE IF NOT EXISTS ls.production_order (
    "Suchschluessel" TEXT PRIMARY KEY, -- ERP, eindeutiger key für einen Auftrag
    "Grund der Ausloesung Beschreibung" TEXT, -- ERP, nicht relevant
    "Produktionsplan Name" TEXT, -- ERP, nicht relevant
    "Produktionsplan Suchschluessel" TEXT, -- ERP, nicht relevant "Suchschluessel" im Frontend
    "Status" TEXT, -- ERP, entweder "CL", oder "OR". Zur zeit wollen wir bei uns nur Aufträge mit Status "OR" anschauen
    "Freigabe" TEXT, -- ERP, "N" oder "Y", wir schauen nur Aufträge mit "Y" an
    "Startdatum" TEXT, -- ERP
    "Enddatum" TEXT, -- ERP
    "Arbeitsgang_Arbeitsanweisung" TEXT, -- ERP, nicht relevant
    "Arbeitsgang_Artikelname" TEXT, -- ERP, das zeigen wir im Frontend unter "Artikelname" an
    "Arbeitsgang_Artikelnummer" TEXT, -- ERP, das zeigen wir im Frontend unter "Artikelnummer" an
    "Arbeitsgang_Menge" TEXT, -- ERP, das zeigen wir im Frontend unter "Menge" an
    "Arbeitsgang_Rohmaterial" TEXT, -- ERP, Json, Liste mit Rohmaterialien. Wir klassifizieren das mittels regex und zeigen die Klassen für Material und Form an (siehe ret_materials und ret_forms). Außerdem steht hier manchmal noch ein größe mit dabei (siehe ret_dim_1)
    "ret_forms" TEXT, -- KMI, Form des Rohmaterials, das zeigen wir im Frontend unter "Form" an
    "ret_materials" TEXT, -- KMI, Rohmaterial, das zeigen wir im Frontend unter "Material" an
    "ret_dim_1" INTEGER, -- KMI, Länge des Rohmaterials, das zeigen wir im Frontend unter "Dim1 an
    "Bestelldatum" TEXT, -- ERP
    "Kunden-ID" TEXT, -- ERP
    "Kundenprioritaet" INTEGER, -- ERP
    "order" INTEGER, -- KMI, Reihenfolge die durch unsere Heuristik berechnet wurde
    "clusters" INTEGER, -- KMI, wir clustern die Aufträge nach material und form
    "chunk_id" INTEGER, -- KMI Aufträge mit ähnlicher "prio" werden in chunks zusammengefasst, sodass man innerhalb dieser chunks nach cluster sortieren kann (siehe chunk 7 im bild unten). So werden Rüstzeiten minimiert.
    "prio" FLOAT, -- KMI prioritäts score für den Auftrag auf Basis von Kundenprioritaet und Enddatum
    "erfassungspunkt" TEXT
);