# Spezifikationsdokument Migrationstool
## Treeview
Beim Doppelklick auf eine bereits migrierte Teilenummer dürfen die Formularfelder nicht befüllt werden.
## Formularfelder
**Allgemeine Hinweise:**
1. Für jedes der nachfolgend aufgelisteten Feldnamen (z.B. "Teilenummer") soll ein Label-Widget in der 1. Spalte "Feld" der GUI erstellt werden. Labeltext ist jeweils der Feldname. Ausnahme ist das Feld "Baugruppennummer", bei dem das Label und ein Entry-Feld oberhalb des Treeviews liegen.
2. Die eingetragenen Feldwerte sollen in einer json-Datei gespeichert werden. Wird eine Teilenummer geöffnet/bearbeitet, für die bereits eine json-Datei exisitert, müssen die Felder mit den Werten aus dieser json-Datei befüllt werden. Nur beim erstmaligen Öffnen/Bearbeiten einer Teilenummer dürfen Felder geleert oder auf den Defaultwert umgestellt werden. Art und Umfang dieser initialen Feldanpassungen wird in den nachfolgenden Feldspezifikationen näher beschrieben.
3. Defaultwert bedeutet, dass beim Bearbeiten einer **neuen** Teilenummer, die noch keine json-Datei besitzt, ein bestimmter, voreingestellter Wert eingetragen / vorausgewählt ist
4. "state" beschreibt in den nachfolgenden Feldspezifikationen den Parameter "state" des tk-Widgets. Dieser Parameter definiert, in welchem Umfang ein User mit dem Widget interagieren kann
5. "from_siv.csv" beschreibt nachfolgend die CSV-Datei, welche die Teilestamminformationen zu einer Teilenummer enthält. Die CSV wird durch den Sivas-internen Prozess "ExcelUeb" von Hr. Jakob erzeugt (siehe auch [get_sivas_teilestamm.py](../lib/get_sivas_teilestamm.py))
---
### Baugruppennummer
>**Widgets:** Entry
>**Typ 1:** Entry
>**Zulässiger Datentyp:** Integer
>**state:** keiner
>**Position:** Oberhalb des Treeviews und unterhalb des zugehörigen Labels
>**Typ 2:** Button
>**Icon/Bild:** Lupe
Im Feld "Baugruppennummer" wird die SIVAS-Teilenummer (die zusammen mit den Stücklistenpositionen) migriert werden soll.
**Funktionsweise**
Nach der Eingabe der Baugruppennummer und anschließendem Klick auf den Button mit Lupe soll die Stückliste der Teilenummer über das Sivas2json-Programm generiert und die aktuelle Version der RD_Teilenummer.csv in das [data-Verzeichnis](../data/) kopiert werden. Die Stücklistenstruktur der Teilenummer soll dann als Treeview abgebildet werden.
Besitzt die eingetragenen Teilenummer keine Stückliste, soll im Treeview nur diese Nummer dargestellt werden / auswählbar sein. Zur Erstellung des Treeviews kann in diesem Fall keine json-Datei des sivas2json-Programms verwendet werden, da dieses bei Teilenummern ohne Stückliste keine Dateien generieren kann und stattdessen eine Fehlermeldung ausgibt.
---
#### **Migration**
>**Spaltenname Impfdatei:** Wird nicht in Impfdatei berücksichtigt
---
---
### Teilenummer
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget-Typ:** Entry
>**state:** readonly
>**Wert:** Aus Spalte "Teilenummer" in "from_siv.csv"
Teilenummern, die nicht vom Datentyp Integer sind und nicht aus 9 Zahlen bestehen, sollen im Treeview orange eingefärbt werden. Beim Doppelklick auf diese Teilenummern im Treeview darf nichts passieren
---
#### **Migration**
>**Spaltenname Impfdatei:** Teilenummer
---
---
### Datenbank
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 3: Überschriebene Werte**
>**Widget:**
>**Typ:** RadioButton
>**Werte:** Produktiv, Schulung
>**Defaultwert:** Produktiv
Die Werte steuern das Zielverzeichnis (Spalte "New Path" in Impfdatei), aus dem RuleDesigner die CAD-Modelle zur Datensatzerstellung einliest.
#### **Migration**
>**Spaltenname Impfdatei:** keine eigene Spalte
Wird zur Definierung des Wertes in der Spalte "New Path" benötigt, siehe [Tätigkeiten Impfdateierstellung - New Path](#new-path)
---
---
### PDM-Kategorie
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Werte:** Sektion "Kategorien" in [Allgemein.cfg](../cfg/Allgemein.cfg)
>**Defaultwert:** Leer -> Kategoriefestlegung kann nicht automatisch erfolgen
>**state:** readonly
Aus ComboBox wählt User die RuleDesigner-Kategorie aus, der die Teilenummer zugeordnet werden soll.
---
#### **Migration**
>**Spaltenname Impfdatei:** KategorieNE
---
---
### Neuaufbau
>**Pflichtfeld:** Nein
---
>**Widget:**
>**Typ:** CheckButton
>**Defaultwert:** Haken nicht gesetzt
**Logik, die steuert, welcher state im CheckButton gilt und welcher Wert bei state = disabled gilt:**
IF PDM-Kategorie != "Einzelteil" OR "Kaufteil":
state = disabled
Wert = False (Haken nicht gesetzt)
ELSE:
state = keiner
---
#### **Migration**
>**Spaltenname Impfdatei:** Keine eigene Spalte
Haken in CheckButton definiert je nach Situation den Pfad zum 3D-Modell. Dies ist im Feld [3D-Modell](#3d-modell) beschrieben.
---
---
### Aus Halbzeug
>**Pflichtfeld:** Nein
---
>**Widget:**
>**Typ:** CheckButton
>**Defaultwert:** False (Haken nicht gesetzt)
**Logik, die state in CheckButton steuert und definiert, welcher Wert bei state = disabled gilt:**
IF PDM-Kategorie == "Einzelteil":
state = keiner
ELSE:
state = disabled
Wert = False (Haken nicht gesetzt)
---
#### **Migration**
>**Spaltenname Impfdatei:** HalbzeugInternAngabe
- Der Feldwert (Haken gesetzt / Haken nicht gesetzt) muss vor dem Schreiben in die Spalte "HalbzeugInternAngabe" der Impfdatei gemappt werden, siehe [Tätigkeiten Impfdateierstellung - Aus Halbzeug](#aus-halbzeug-1)
- Haken in CheckButton definiert je nach Situation den Pfad zum 3D-Modell. Dies ist im Feld [3D-Modell](#3d-modell) beschrieben.
---
---
### Halbzeugnummer
>**Pflichtfeld:** Nein
---
>**Widget:**
>**Typ:** Entry
>**Defaultwert:** "" (leer)
**Logik, die Text in Entry steuert:**
IF Aus Halbzeug == True (Haken gesetzt) AND Kind der aktuellen Teilenummer in RD_Teilenummern.csv:
Text = Teilenummer des Kindes
ELSE:
Text = ""
**Logik, die state im Entry steuert:**
IF Aus Halbzeug == Haken gesetzt:
state = keiner
ELSE:
state = disabled
---
#### **Migration**
>**Spaltenname Impfdatei:** HalbzeugIntern
---
---
### Halbzeuglänge
>**Pflichtfeld:** Nein
---
>**Widget:**
>**Typ:** Entry
>**Defaultwert:** "" (leer)
**Logik, die Text in Entry steuert:**
IF Aus Halbzeug == Haken gesetzt AND Kind der aktuellen Teilenummer in RD_Teilenummern.csv:
Text = Wert aus json-Key "Länge" des Kindes
ELSE:
Text = ""
**Logik, die state im Entry steuert:**
IF Aus Halbzeug == Haken gesetzt:
state = keiner
ELSE:
state = disabled
---
#### **Migration**
>**Spaltenname Impfdatei:** Kopiertes_Teil_1_y_Skalierung
---
---
### Halbzeugoberfläche
>**Pflichtfeld:** Nein
---
>**Widget:**
>**Typ:** ComboBox
>**Werte:** Sektion "Oberflaechenbehandlungen" aus [Oberflächenbehandlung.cfg](../cfg/Oberflächenbehandlung.cfg)
>**Defaultwert:** "" (leer)
**Logik, die steuert, welchen state die ComboBox aufweist und welcher Wert bei state = disabled in Textfeld der ComboBox gilt:**
IF Aus Halbzeug == True (Haken gesetzt):
state = readonly
ELSE:
state = disabled
Wert = ""
---
#### **Migration**
>**Spaltenname Impfdatei:** Oberflaechenbehandlung
---
---
### Halbzeugfarbe
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt:**
IF Halbzeugoberfläche == "eloxieren" OR "lackieren" OR "pulverbeschichten":
Pflichtfeld = True
ELSE:
Pflichtfeld = False
>**Widget:**
>**Typ:** ComboBox
>**Defaultwert:** Keiner
**Logik, die steuert, welchen state die ComboBox aufweist und welcher Wert bei state = disabled in Textfeld der ComboBox gilt:**
IF Aus Halbzeug == True (Haken gesetzt):
IF Halbzeugoberfläche == "eloxieren" OR "lackieren" OR "pulverbeschichten":
state = readonly
ELSE:
state = disabled
Wert = ""
ELSE:
state = disabled
Wert = ""
**Logik, die steuert, welche Dropdownwerte in ComboBox auswählbar sind:**
IF Halbzeugoberfläche == "eloxieren":
Werte = Sektion "FarbeEloxieren" in Farben.cfg
ELSE IF Halbzeugoberfläche == "lackieren" OR "pulverbeschichten":
Werte = Sektion "Farbauswahl" in Farben.cfg
ELSE:
Werte = keine Dropdownwerte in ComboBox
---
#### **Migration**
>**Spaltenname Impfdatei:** Farbe
---
---
### Lebenszyklusstatus
>**Pflichtfeld:** Ja, immer
---
>**Widget:**
>**Typ:** RadioButton
>**Werte:** Prototyp, Serie
>**Defaultwert:** Keiner
---
#### **Migration**
>**Spaltenname Impfdatei:** Serien-Status
---
---
### 3D-Modell
>**Pflichtfeld:** Ja, immer
---
>**Widgets:**
>**Typen:** ComboBox, Button
**Beispiel:**

**Auswählbare Dateitypen bei Klick auf Button "Durchsuchen":**
Es sollen ausschließlich .par oder .asm-Dateien auswählbar sein:

In tk wie folgt erzielbar:
`filedialog.askopenfilename(filetypes=[("Part-Dokumente", ".par"), ("Assembly-Dokumente", ".asm")])`
**Nachfolgende Logik definiert:**
- state der ComboBox je nach Situation (readonly / disabled)
- Defaultwert (Wert, der im Textfeld der ComboBox angezeigt werden soll, bevor ein Dropdownwert ausgewählt wurde)
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
IF PDM-Kategorie == "Baugruppe" OR "Schweissbaugruppe":
Defaultwert = \\ssg.local\freigaben\Abteilungen\Entwicklung\CAD\Standards\SolidEdge\Template\DIN Metric\baugruppe.asm
Dropdownwerte = keine
state_ComboBox = disabled
state_Button = disabled
ELSE IF PDM-Kategorie == "Kaufteil":
Defaultwert = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par
Dropdownwerte = keine
state_ComboBox = disabled
state_Button = disabled
ELSE IF PDM-Kategorie == "Einzelteil":
IF Aus Halbzeug == True (Haken gesetzt) OR Neuaufbau == True (Haken gesetzt):
Defaultwert = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par
Dropdownwerte = keine
state_ComboBox = disabled
state_Button = disabled
ELSE:
Defaultwert = ""
Dropdownwerte = Dateipfade von allen .par-Dateien, die die aktuelle Teilenummer im Dateinamen aufweisen und sich gleichzeitig in einem der rekursiv durchsuchten Pfade aus der Sektion "3D-Modelle" in "Zielpfade.cfg" befinden.
state_ComboBox = readonly
state_Button = keiner
IF Button "Durchsuchen" geklickt und benutzerdefinierte Solid Edge-Datei gewählt:
Defaultwert = Dateipfad der gewählten Solid Edge-Datei
---
#### **Migration**
**Spaltennamen Impfdatei:** keine eigene Spalte
- Definiert Wert in Spalte "Path" der Impfdatei, siehe [Tätigkeiten Impfdateierstellung - Path](#path)
- Definiert Wert in Spalte "Filename" der Impfdatei, siehe [Tätigkeiten Impfdateierstellung - Filename](#filename)
---
---
### Bezeichnung 1
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** readonly
>**Wert:** Aus Spalte "Bezeichnung1" in "from_siv.csv"
**Aufgaben beim Einlesen des Feldes aus "from_siv.csv":**
- Das Kürzel "kpl" (klein- oder großgeschrieben) in einer der nachfolgenden Varianten (oder bestehend aus der Kombination dieser Varianten) soll aus der Bezeichnung entfernt werden:
- Leerzeichen vor (und ggf. nach) "kpl", z.B. " kpl " ; " kpl"
- Satzzeichen nach (und ggf. vor) "kpl", z.B. "kpl." ; ", KPL." ; " kpl,"
Befindest sich das Kürzel nicht am Bezeichnungsende, muss es durch ein Leerzeichen ersetzt werden, z.B.
*WEICHE S 22,5° -R- KPL. MIT SEILZUGSCHALTUNG* ---wird zu---> *WEICHE S 22,5° -R- MIT SEILZUGSCHALTUNG*
---
#### **Spalte 3: Überschriebene Werte**
>**Widget**
>**Typ:** Entry
>**Defaultwert:** "" (leer)
**Logik, die bestimmt, wie viele Zeichen in Entry eingetragen werden dürfen:**
IF PDM-Kategorie == "Baugruppe" OR "Schweissbaugruppe":
Längenbeschränkung = 45 Zeichen
ELSE:
Längenbeschränkung = 50 Zeichen
Wenn die Bezeichnungslänge in der Spalte "SIVAS-Werte" größer als die oben beschriebene Längenbeschränkung des Entry-Feldes ist, soll im Entry-Feld der Spalte "Überschriebene Werte" ein roter Platzhalter-Text erscheinen, solange sich kein Text vom User in das Entry-Feld eingetragen wurde.

**Hinweis:**
GIF dient nur zur kurzen Veranschaulichung, wie der Platzhaltertext aussehen könnte und wurde (mit abgewandeltem Text) durch Code aus folgender [Stackoverflow-Antwort](https://stackoverflow.com/a/47928390) erstellt -> muss ggf. angepasst werden, da in der Antwort kein ttk verwendet wurde!
---
#### **Migration**
>**Spaltenname in Impfdatei:** Bezeichnung2
- Es muss vor der Erstellung der Impfdatei eine Längenprüfung durchgeführt werden(siehe auch [Längenprüfung Bezeichnung](#bezeichnung-1-1))
- Bei PDM-Kategorie = "Baugruppe" und "Schweissbaugruppe" muss die Spalte "Bezeichnung4" in der Impfdatei mit "- BG" befüllt werden (siehe [Tätigkeiten Impfdateierstellung - Bezeichnung4](#bezeichnung4))
- Die Bezeichnung muss in die Spalte "Title" der Impfdatei eingetragen werden (siehe [Tätigkeiten Impfdateierstellung - Title](#title))
---
---
### Bezeichnung 2
>**Pflichtfeld:** Nein
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** readonly
>**Wert:** Aus Spalte "Bezeichnung2" in "from_siv.csv"
Feld dient lediglich zur informativen Darstellung des Wertes aus dem Sivas-Feld "Bezeichnung2".
---
#### **Migration**
>**Spaltenname Impfdatei:** Wird nicht in Impfdatei berücksichtigt
---
---
### Halbzeug ohne Sägeliste
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** disabled
>**Wert:** Aus Spalte "HzOhneSaegeliste" in "from_siv.csv"
**Aufgaben beim Einlesen des Wertes aus "from_siv.csv":**
Der Wert aus der Spalte "HzOhneSaegeliste" in "from_siv.csv" muss in gemappter / umgewandelter Form in das Entry-Feld der Spalte "SIVAS-Werte" eingetragen werden:
|Wert in from_siv.csv" |Neuer Wert in Spalte "SIVAS-Werte"|
|:--------------------------------|:---------------------------------|
|J |Sägeliste nicht benötigt |
|N |Sägeliste benötigt |
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Defaultwert:** "" (leer)
**Nachfolgende Logik definiert:**
- state der ComboBox je nach Situation (readonly / disabled)
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
IF PDM-Kategorie == "Baugruppe":
Dropdownwerte = None (keine Werte)
state = disabled
ELSE:
IF Rüstcode == HZS Halbzeuge Sägeteile:
Dropdownwerte = Sektion "HalbzeugOhneSaegeliste" aus Allgemein.cfg
state = readonly
ELSE:
Dropdownwerte = None (keine Werte)
state = disabled
---
#### **Migration**
>**Spaltenname Impfdatei:** HalbzeugOhneSaegeliste
Wenn das Feld "Rüstcode" den Wert "SRC Standard Rüstcode" und das Feld HalbzeugOhneSaegeliste den Wert "Sägeliste nicht benötigt" aufweist, muss eine Fehlermeldung ausgegeben werden (siehe auch [Tätigkeiten vor Erstellung der Impfdatei](#halbzeug-ohne-sc3a4geliste-1))
---
---
### Rüstcode
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** disabled
>**Wert:** Aus Spalte "Ruestcode" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**state:** readonly
**Nachfolgende Logik definiert:**
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
IF PDM-Kategorie == "Baugruppe":
Dropdownwerte = Sektion "RuestcodeBaugruppe" in Allgemein.cfg
ELSE:
Dropdownwerte = Sektion "RuestcodeStandard" in Allgemein.cfg
**Nachfolgende Logik definiert:**
- Defaultwert (Wert, der im Textfeld der ComboBox angezeigt wird, bevor ein Dropdownwert ausgewählt wurde)
IF Wert aus Spalte "Ruestcode" in "from_siv.csv" == "" OR Wert aus Spalte "Truemmer" in from_siv.csv == "J":
IF PDM-Kategorie == "Baugruppe":
Defaultwert = "Trümmerbaugruppe"
ELSE:
Defaultwert = "" (leer) + INFO-messagebox, siehe nachfolgendes Bild:

ELSE:
Defaultwert = "" (leer)
---
#### **Migration**
>**Spaltenname Impfdatei:** RuestcodeAusw
Es muss geprüft werden, ob ein zulässiger Rüstcode eingetragen ist, siehe [Tätigkeiten vor Impfdateierstellung](#ruestcode)
---
---
### Fertigungsart
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt:**
IF PDM-Kategorie == "Einzelteil" OR "Schweissbaugruppe":
Pflichtfeld = True
ELSE:
Pflichtfeld = False
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** disabled
>**Wert:** Aus Spalte "Fertigungsart" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Nachfolgende Logik definiert:**
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
IF PDM-Kategorie == "Baugruppe":
Dropdownwerte = Sektion "FertigungsartenBaugruppe" in Fertigungsarten.cfg
ELSE IF PDM-Kategorie == "Einzelteil":
Dropdownwerte = Schlüssel aus Sektion "Fertigungsarten" in Fertigungsarten.cfg
ELSE:
Dropdownwerte = None (keine Werte)
**Nachfolgende Logik definiert:**
- Defaultwert (Wert, der im Textfeld der ComboBox angezeigt werden soll, bevor ein Dropdownwert ausgewählt wurde)
IF PDM-Kategorie == "Schweissbaugruppe":
IF Wert aus Spalte "Fertigungsart" in "from_siv.csv" == "" OR != "schweißen":
Defaultwert = "schweißen"
ELSE:
Defaultwert = "" (leer)
ELSE:
Defaultwert == "" (leer)
**Nachfolgende Logik definiert:**
- state der ComboBox je nach Situation (readonly / disabled)
IF PDM-Kategorie == "Kaufteil" OR "Schweissbaugruppe":
state = disabled
ELSE:
state = readonly
---
#### **Migration**
>**Spaltenname Impfdatei:** Fertigungsart
- Der Feldwert muss vor Erstellung der Impfdatei geprüft werden, siehe [Feldprüfung Fertigungsart](#fertigungsart-1)
- Der Wert muss vor dem Eintragen in die Impfdatei gemappt / umgewandelt werden, siehe [Tätigkeiten Impfdateierstellung - Fertigungsart](#fertigungsart-2)
---
---
### Allgemeintoleranz
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt:**
IF PDM-Kategorie == "Einzelteil" OR "Schweissbaugruppe":
Pflichtfeld = True
ELSE:
Pflichtfeld = False
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Nachfolgende Logik definiert:**
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
IF PDM-Kategorie == "Baugruppe":
Dropdownwerte = Sektion "AllgemeintoleranzBaugruppe" in Fertigungsarten.cfg
ELSE IF PDM-Kategorie == "Kaufteil" OR "Schweissbaugruppe":
Dropdownwerte = None (keine Werte)
ELSE IF PDM-Kategorie == "Einzelteil":
Dropdownwerte = siehe nachfolgende Tabelle
**Hinweis:**
Bei [PDM-Kategorie](#pdm-kategorie) "Einzelteil" hängt die Allgemeintoleranz von der [Fertigungsart](#fertigungsart) ab. In der nachfolgenden Tabelle ist aufgelistet, in welcher Sektion der Datei [Fertigungsarten.cfg](../cfg/Fertigungsarten.cfg) die Allgemeintoleranzwerte definiert sind, die bei den jeweiligen Fertigungsarten in der ComboBox auswählbar sein sollen:
|Wert im Feld [Fertigungsart](#fertigungsart) |Sektion in [Fertigungsarten.cfg](../cfg/Fertigungsarten.cfg) |
|---------------------------------------------|-------------------------------------------------------------|
|3D - 3D drucken |Allgemeintoleranz3DDruck |
|BI - biegen |AllgemeintoleranzSpanen |
|DR - drehen |AllgemeintoleranzSpanen |
|EX - extrudieren |AllgemeintoleranzExtrudieren |
|FR - fräsen |AllgemeintoleranzSpanen |
|GI - gießen |AllgemeintoleranzGiessen |
|LW - laser- und wasserstrahlschneiden |AllgemeintoleranzSpanen |
|PR - verpressen |AllgemeintoleranzVerpressen |
|SA - sägen |AllgemeintoleranzSpanen |
|SN - strangpressen |AllgemeintoleranzStrangpressen |
|SP - spritzgießen |AllgemeintoleranzSpritzgiessen |
|ST - stanzen |AllgemeintoleranzStanzen |
**Nachfolgende Logik definiert:**
- Defaultwert (Wert, der im Textfeld der ComboBox angezeigt werden soll, bevor ein Dropdownwert ausgewählt wurde)
IF PDM-Kategorie == "Baugruppe" OR "Kaufteil":
Defaultwert = "" (leer)
ELSE IF PDM-Kategorie == "Schweissbaugruppe":
Defaultwert = "EN ISO 13920-BF"
ELSE IF PDM-Kategorie == "Einzelteil":
Defaultwert = siehe nachfolgende Tabelle
**Hinweis:**
Bei der [PDM-Kategorie](#pdm-kategorie) "Einzelteil" soll abhängig von der gewählten [Fertigungsart](#fertigungsart) automatisch eine vordefinierte Allgemeintoleranzklasse eingetragen werden. Die entsprechenden Defaultwerte sind der rechten Tabellenspalte zu entnehmen:
|Wert im Feld [Fertigungsart](#fertigungsart) |Defaultwert |
|---------------------------------------------|---------------------|
|3D - 3D drucken |ISO 2768:1991-mK |
|BI - biegen |ISO 2768:1991-mK |
|DR - drehen |ISO 2768:1991-mK |
|EX - extrudieren |DIN 16941 - 3A |
|FR - fräsen |ISO 2768:1991-mK |
|GI - gießen |ISO 8062-3 - DCTG 10 |
|LW - laser- und wasserstrahlschneiden |ISO 2768:1991-mK |
|PR - verpressen |ISO 2768:1991-mK |
|SA - sägen |ISO 2768:1991-mK |
|SN - strangpressen |EN 12020-2 |
|SP - spritzgießen |ISO 20457 - TG5 |
|ST - stanzen |DIN 6930-2 - m |
**Nachfolgende Logik definiert:**
- state der ComboBox je nach Situation (readonly / disabled)
IF PDM-Kategorie == "Kaufteil" OR "Schweissbaugruppe":
state = disabled
ELSE:
state = readonly
---
#### **Migration**
>**Spaltenname Impfdatei:** Allgemeintoleranz
---
---
### FOS-Gruppe
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** disabled
>**Wert:** Aus Spalte "FosGruppe" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Nachfolgende Logik definiert:**
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
- state der ComboBox je nach Situation (readonly / disabled)
IF PDM-Kategorie == "Kaufteil":
Dropdownwerte = Sektion "FOS_Gruppe" in Allgemein.cfg
state = readonly
ELSE:
Dropdownwerte = None (Keine)
state = disabled
**Nachfolgende Logik definiert:**
- Defaultwert = Wert, der im Textfeld der ComboBox angezeigt werden soll, bevor ein Dropdownwert ausgewählt wurde
IF PDM-Kategorie == "Baugruppe":
IF Wert aus Spalte "FosGruppe" in "from_siv.csv" == "" (leer) OR "0 - Einzelteil":
Defaultwert = "1 - Baugruppe"
ELSE:
Defaultwert = ""
ELSE:
IF Wert aus Spalte "FosGruppe" in "from_siv.csv" == "" (leer) OR "1 - Baugruppe":
Defaultwert = "0 - Einzelteil"
ELSE:
Defaultwert = ""
---
#### **Migration**
>**Spaltenname Impfdatei:** FOS-GruppeNE
- Der Feldwert muss vor Erstellung der Impfdatei geprüft werden, siehe [Feldprüfung FOS-Gruppe](#fos-gruppe-1)
- Der Feldwert muss in gemappter / umgewandelter Form in die Impfdatei eingetragen werden, siehe [Tätigkeiten Impfdateierstellung - FOS-Gruppe](#fos-gruppe-2)
---
---
### Kalkulationsart
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**state:** disabled
>**Wert:** Aus Spalte "Kalkulationsart" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Nachfolgende Logik definiert:**
- Dropdownwerte (Quelle, wo die Dropdownwerte zu finden sind, bzw. direkt die Werte)
- state der ComboBox je nach Situation (readonly / disabled)
IF PDM-Kategorie == "Baugruppe":
Dropdownwerte = Sektion "Kalkulationsart" in Allgemein.cfg
state = readonly
ELSE:
Dropdownwerte = None (keine Werte)
state = disabled
**Nachfolgende Logik definiert:**
- Defaultwert (Wert, der im Textfeld der ComboBox angezeigt werden soll, bevor ein Dropdownwert ausgewählt wurde)
IF PDM-Kategorie == "Kaufteil":
IF Wert aus Spalte "Kalkulationsart" in "from_siv.csv" == "" (leer) OR "Eigenbau":
Defaultwert = "Kaufteil"
ELSE:
Defaultwert = ""
ELSE:
IF Wert aus Spalte "Kalkulationsart" in "from_siv.csv" == "" (leer) OR "Kaufteil":
Defaultwert = "Eigenbau"
ELSE:
Defaultwert = ""
---
#### **Migration**
>**Spaltenname Impfdatei:** KalkulationsartNE
- Der Feldwert muss vor Erstellung der Impfdatei geprüft werden, siehe [Feldprüfung Kalkulationsart](#kalkulationsart-1)
- Es [Tätigkeiten vor Erstellung der Impfdatei](#tätigkeiten-vor-erstellung-der-impfdatei)
---
---
### Beschaffungsart
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Wert:** Aus Spalte "Beschaffungsart" in "from_siv.csv"
**Aufgaben beim Einlesen des Wertes aus "from_siv.csv":**
Der Wert aus der Spalte "Beschaffungsart" in "from_siv.csv" muss in gemappter / umgewandelter Form in das Entry-Feld der Spalte "SIVAS-Werte" eingetragen werden:
|Wert in from_siv.csv" |Neuer Wert in Spalte "SIVAS-Werte"|
|:--------------------------------|:---------------------------------|
|Eigenbaugruppe |Eigenbau |
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Logik, die steuert, welche Werte in der ComboBox angezeigt werden:**
IF PDM-Kategorie == "Baugruppe":
Wert = "Eigenbau"
ELSE IF PDM-Kategorie == "Einzelteil":
Werte = Sektion "Beschaffungsart" in Allgemein.cfg
ELSE IF PDM-Kategorie == "Kaufteil":
Wert = "Kaufteil
ELSE IF PDM-Kategorie == "Schweissbaugruppe":
Wert = "Eigenbau"
---
#### **Migration**
>**Spaltenname Impfdatei:** BeschaffungsartNE
Beim Klick auf den Button "Migrieren" muss die festgelegte Beschaffungsart geprüft werden, siehe [Tätigkeiten vor Erstellung der Impfdatei](#tätigkeiten-vor-erstellung-der-impfdatei)
---
---
### Mengeneinheit
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** Mengeneinheit
**Aufgaben beim Einlesen des Wertes aus "from_siv.csv":**
1. Es muss der Wert ab " - " entfernt werden. Beispiel:
"Stck - Stück" ---wird zu---> "Stck"
2. Nach Entfernung muss das Kürzel in das Entry-Feld eingetragen werden
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Read only:** Ja
>**Defaultwert:** Keiner (leer)
**Auswählbare Dropdownwerte:**
IF Rüstcode == "SRC Standard Rüstcode" OR "Trümmerbaugruppe":
Dropdownwerte = "Stck"
ELSE IF Rüstcode == "HZS Halbzeuge Sägeteile":
IF PDM-Kategorie == "Einzelteil" OR "Kaufteil":
Dropdownwerte = alle Werte der Sektion "EinheitAusw" aus Allgemein.cfg
ELSE IF PDM-Kategorie == "Schweissbaugruppe":
Dropdownwerte = "m"
---
#### **Migration**
>**Spaltenname Impfdatei:** Mengeneinheit
Beim Klick auf den Button "Migrieren" muss die festgelegte Mengeneinheit geprüft werden, siehe [Tätigkeiten vor Erstellung der Impfdatei](#tätigkeiten-vor-erstellung-der-impfdatei)
---
---
### Halbzeug
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** CheckButton
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** Halbzeug
**Aufgaben beim Einlesen des Wertes aus "from_siv.csv":**
- Der Wert "WAHR" muss in "True" (Haken gesetzt), bzw. der Wert "FALSCH" in "False" (Haken nicht gesetzt) umgewandelt werden
---
#### **Spalte 3: Überschriebene Werte**
>**Widget:**
>**Typ:** CheckButton
>**Defaultwert:** Identisch wie in Spalte "SIVAS-Werte"
**Fallabhängiger Schreibschutz:**
IF PDM-Kategorie == "Baugruppe" (OR "Normteil"):
Read only = True
ELSE:
Read only = False
---
#### **Migration**
>**Spaltenname Impfdatei:** Halbzeug
Beim Erstellen der Impfdatei müssen die CheckButton-Werte gemappt werden (siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung))
---
---
### TOS-Gruppe
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** TOS_Gruppe
Im Entry-Feld muss der Spaltenwert "TOS_Gruppe" aus "from_siv.csv" eingetragen werden
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** Entry
>**Read only:** Nein
**Defaultwert:**
IF TOS-Gruppe in Spalte "SIVAS-Werte" == "":
Defaultwert == 6
ELSE:
Defaultwert == ""
---
#### **Migration**
**Spaltennamen Impfdatei:**
Die zu befüllenden Spalten in der Impfdatei ergeben sich aus der angegebenen TOS-Gruppennummer. Beim Erstellen der Impfdatei müssen daher alle Felder, die Bestandteil der TOS-Gruppennummer sind, extrahiert und mit Werten befüllt werden (siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung))
---
---
### Dispogruppe
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** Dispogruppe
Im Entry-Feld muss der Spaltenwert "Dispogruppe" aus "from_siv.csv" eingetragen werden
*Aktuell ist es so vorgesehen, dass das Mapping erst bei Erstellung der Impfdatei erfolgt, während im Programm die tatsächlichen Dropdownwerte aus SIVAS angezeigt werden (z.B. 20 - Förderer
). Oder soll das Mapping bereits beim Einlesen der Werte aus "Dispogruppe erfolgen"? Gleiches gilt dann auch für das Feld "Dispolaufgruppe"*
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Read only:** Ja
>**Werte:** siehe Kommentar unten. Ansonsten Schlüssel der Sektion "Dispogruppe" in Allgemein.cfg
>**Defaultwert:** Keiner (leer)
*Es fehlen aktuell in einer der .cfg-Dateien die SIVAS-Werte für die Dispogruppen vor dem Mapping, falls das Mapping wie im Kommentar oben beschrieben erst bei Erstellung der Impfdatei erfolgen soll*
Wenn kein Wert im Entry-Feld der Spalte "SIVAS-Werte" eingetragen ist, soll der Hintergrund der ComboBox solange rot eingefärbt sein, bis ein Wert ausgewählt wurde.
---
#### **Migration**
>**Spaltenname Impfdatei:** Dispogruppe
Bei der Erstellung der Impfdatei muss ein Mapping der Dispogruppen durchgeführt werden (siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung))
---
---
### Dispolaufgruppe
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
Im Entry-Feld muss der Spaltenwert "Dispolaufgruppe" aus "from_siv.csv" eingetragen werden.
*Siehe Kommentar bei Feld "Dispogruppe"*
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Read only:** Ja
>**Werte:** siehe Kommentar unten. Ansonsten Schlüssel der Sektion "Dispolaufgruppe" in Allgemein.cfg
>**Defaultwert:** Keiner (leer)
*Es fehlen aktuell in einer der .cfg-Dateien die SIVAS-Werte für die Dispolaufgruppen vor dem Mapping, falls das Mapping wie im Kommentar des Feldes "Dispogruppe" beschrieben erst bei Erstellung der Impfdatei erfolgen soll*
Wenn kein Wert im Entry-Feld der Spalte "SIVAS-Werte" eingetragen ist, soll der Hintergrund der ComboBox solange rot eingefärbt sein, bis ein Wert ausgewählt wurde.
---
#### **Migration**
>**Spaltenname Impfdatei:** Dispolaufgruppe
Vor der Erstellung der Impfdatei muss geprüft werden, ob eine Dispolaufgruppe vorliegt (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
Bei der Erstellung der Impfdatei muss ein Mapping der Dispolaufgruppen durchgeführt werden (siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung))
---
---
### Ersatz für
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** ErsatzFuer
In diesem Feld soll informativ der Spaltenwert "ErsatzFuer" aus "from_siv.csv" eingetragen werden.
*Soll das Feld eingefärbt werden oder ein automatischer Text im Feld "Zusätzliche Informationen" erscheinen, wenn "Ersatz für" einen Wert aufweist? Wird in der Spalte "Überschriebene Werte" überhaupt ein Feld benötigt?*
---
#### **Migration**
>**Spaltenname Impfdatei:** Nicht in Impfdatei enthalten
Vor der Erstellung der Impfdatei soll zu Informationszwecken geprüft werden, ob die ersetzte Teilenummer bereits in RuleDesigner vorliegt (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
---
---
### Ersetzt durch
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** ErsetztDurch
In diesem Feld soll informativ der Spaltenwert "ErsetztDurch" aus "from_siv.csv" eingetragen werden.
*Soll das Feld eingefärbt werden, oder ein automatischer Text im Feld "Zusätzliche Informationen" erscheinen, wenn "Ersetzt durch" einen Wert aufweist? Wird in der Spalte "Überschriebene Werte" überhaupt ein Feld benötigt?*
---
#### **Migration**
>**Spaltenname Impfdatei:** Nicht in Impfdatei enthalten
Vor der Erstellung der Impfdatei soll zu Informationszwecken geprüft werden, ob die Ersatz-Teilenummer bereits in RuleDesigner vorliegt (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
---
---
### Hersteller
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** Hersteller
In diesem Feld soll der Spaltenwert "Hersteller" aus "from_siv.csv" eingetragen werden.
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Werte:** Werte aus Sektion "Hersteller" in [Hersteller.cfg](/cfg/Hersteller.cfg)
>**Defaultwert:** Keiner (leer)
**Fallabhängiger Schreibschutz:**
IF PDM-Kategorie == "Kaufteil":
Read only = False
ELSE:
Read only = True
---
#### **Migration**
>**Spaltenname Impfdatei:** HerstellerTeilenummer
Vor der Erstellung der Impfdatei muss geprüft werden, ob der Hersteller in RuleDesigner angelegt wurde (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
---
---
### Hersteller Teilenummer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Read only:** Ja
>**Daten:**
>**Spaltenname in "from_siv.csv":** HerstellerTeilenummer
In diesem Feld soll der Spaltenwert "HerstellerTeilenummer" aus "from_siv.csv" eingetragen werden.
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
>**Werte:** Werte aus Sektion "Hersteller" in [Hersteller.cfg](/cfg/Hersteller.cfg)
>**Defaultwert:** Keiner (leer)
**Fallabhängiger Schreibschutz:**
IF PDM-Kategorie == "Kaufteil":
Read only = False
ELSE:
Read only = True
---
#### **Migration**
>**Spaltenname Impfdatei:** HerstellerTeilenummer
Vor der Erstellung der Impfdatei muss geprüft werden, ob der Hersteller in RuleDesigner angelegt wurde (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
---
---
### Werkstoffdiskrepanz
>**Pflichtfeld:** Nein
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** CheckButton
>**Defaultwert:** False (Haken nicht gesetzt)
**Feld in folgenden Fällen disabled:**
IF Aus Halbzeug == Haken gesetzt:
disabled = True
ELSE:
disabled = False
---
#### **Migration**
>**Spaltenname Impfdatei:** Wird nicht im Impfdatei berücksichtigt
---
---
### Werkstofftyp
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt und wann ComboBox disabled ist:**
IF PDM-Kategorie == "Einzelteil":
IF Aus Halbzeug == True:
Pflichtfeld = False
ELSE:
Pflichtfeld = True
ELSE:
Pflichtfeld = False
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Logik, die steuert, wann ComboBox disabled ist:**
IF PDM-Kategorie == "Einzelteil":
IF Aus Halbzeug == True:
disabled = True
ELSE:
disabled = False
ELSE:
disabled = True
**Logik, die steuert, welcher Defaultwert gilt:**
- In den nachfolgenden Fällen darf **kein** Defaultwert eingetragen werden (selbst wenn in from_siv.csv ein Wert in der Spalte "Werkstoff" eingetragen sein sollte):
- PDM-Kategorie == "Kaufteil"
- PDM-Kategorie == "Baugruppe"
- PDM-Kategorie == "Schweissbaugruppe"
- PDM-Kategorie == "Einzelteil" und Aus Halbzeug == True (Haken gesetzt)
- Ist der Haken nicht gesetzt, dann wird der Defaultwert wie folgt bestimmt:
Als erstes muss geprüft werden, ob der Werkstoff in "from_siv.csv" (Spalte "Werkstoff") als Objekt in [Materialübersetzung.json](../cfg/Materialübersetzung.json) existiert. Wenn nicht, soll eine Info-Messagebox erscheinen (vor Klick auf "Migrieren"):

Wenn ja, muss geprüft werden, ob das Objekt einen Key "Werkstofftyp" aufweist. Wenn ja, soll dessen Wert in das Feld "Werkstofftyp" der Spalte "Überschriebene Werte" eingetragen werden:

Wenn nein, soll stattdessen der Wert des Objekt-Keys "Message" als Platzhalter in rot eingetragen werden:

**Auswählbare Werte in Dropdown:** Sektion "Werkstofftyp" in [Werkstoff.cfg](../cfg/Werkstoff.cfg)
---
#### **Migration**
>**Spaltenname Impfdatei:** WerkstofftypNE
Vor der Erstellung der Impfdatei muss geprüft werden, ob ein gültiger Werkstofftyp vorliegt (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
---
---
### Material
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt:**
Wie bei Feld [Werkstofftyp](#werkstofftyp)
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Wert:** Aus Spalte "Werkstoff" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Logik, die steuert, wann ComboBox disabled ist:**
Wie bei Feld [Werkstofftyp](#werkstofftyp)
**Logik, die steuert, welcher Defaultwert gilt:**
- In den nachfolgenden Fällen darf **kein** Defaultwert eingetragen werden (selbst wenn in from_siv.csv ein Wert in der Spalte "Werkstoff" eingetragen sein sollte):
- PDM-Kategorie == "Baugruppe"
- PDM-Kategorie == "Schweissbaugruppe"
- PDM-Kategorie == "Einzelteil" und Aus Halbzeug == True (Haken gesetzt)
- Gilt PDM-Kategorie == "Kaufteil" soll der Defaultwert "siehe Hersteller" eingetragen werden
- Gilt PDM-Kategorie == "Einzelteil" und Aus Halbzeug == False (kein Haken), dann wird der Defaultwert wie folgt bestimmt:
Als erstes muss geprüft werden, ob der Werkstoff in "from_siv.csv" (Spalte "Werkstoff") als Objekt in [Materialübersetzung.json](../cfg/Materialübersetzung.json) existiert. Wenn nicht, soll nichts passieren (Info-Messagebox wird bereits im Feld [Werkstofftyp](#Werkstofftyp) erzeugt). Existiert das Objekt, muss geprüft werden, ob das Objekt einen Key "Werkstoff" aufweist. Wenn ja, soll dessen Wert in das Feld "Material" der Spalte "Überschriebene Werte" eingetragen werden:

Wenn nicht, soll wie bei der ComboBox des Feldes "Werkstofftyp" der Wert des Objekt-Keys "Message" als Platzhalter in rot eingetragen werden:

**Logik, die steuert, welche Werte in der ComboBox auswählbar sind:**
Je nachdem, welcher [Werkstofftyp](#Werkstofftyp) ausgewählt ist, müssen die Werte aus einer der nachfolgend aufgelisteten Sektionen in der cfg-Datei [Werkstoff.cfg](../cfg/Werkstoff.cfg) auswählbar sein:
|Wert in ComboBox "Werkstofftyp" |Werte aus Sektion in Werkstoff.cfg |
|--------------------------------------|-----------------------------------|
|Stahl |Stahl |
|Aluminium |Aluminium |
|Kunst-/ Verbundstoff |Kunst-/ Verbundstoff |
|Schwermetall |Schwermetall |
|Festigkeitsklasse |Festigkeitsklasse |
**Hinweis:**
Wenn der Werkstofftyp geändert wird, muss der Wert in der ComboBox des Feldes "Material" entfernt werden. Wenn in TK einstellbar soll zudem der Hintergrund der ComboBox solange rot eingefärbt werden, bis ein neues Material ausgewählt wurde.
---
#### **Migration**
>**Spaltenname Impfdatei:** WerkstoffNE
Vor der Erstellung der Impfdatei müssen die Werkstoffeingaben geprüft werden (siehe [Tätigkeiten vor Impfdateierstellung](#tätigkeiten-vor-erstellung-der-impfdatei))
---
---
### Oberfläche
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt:**
Wie bei Feld [Werkstofftyp](#werkstofftyp)
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Logik, die steuert, wann ComboBox disabled ist:**
Wie bei Feld [Werkstofftyp](#werkstofftyp)
**Logik, die steuert, welcher Defaultwert gilt:**
- In den nachfolgenden Fällen darf **kein** Defaultwert eingetragen werden (selbst wenn in from_siv.csv ein Wert in der Spalte "Werkstoff" eingetragen sein sollte):
- PDM-Kategorie == "Baugruppe"
- PDM-Kategorie == "Kaufteil"
- PDM-Kategorie == "Einzelteil" und Aus Halbzeug == True (Haken gesetzt)
- Gilt PDM-Kategorie == "Einzelteil" und Aus Halbzeug == False (kein Haken), dann wird der Defaultwert wie folgt bestimmt:
Als erstes muss geprüft werden, ob der Werkstoff in "from_siv.csv" (Spalte "Werkstoff") als Objekt in [Materialübersetzung.json](../cfg/Materialübersetzung.json) existiert. Wenn nicht, soll nichts passieren (Info-Messagebox wird bereits im Feld [Werkstofftyp](#Werkstofftyp) erzeugt). Existiert das Objekt, muss geprüft werden, ob das Objekt einen Key "Oberfläche" aufweist. Wenn ja, soll dessen Wert in die ComboBox eingetragen werden:

Wenn nicht, soll im Gegensatz zu den ComboBoxen der Felder "Werkstofftyp" und "Material" **nicht** der Wert des Objekt-Keys "Message" eingetragen werden.
**Logik, die steuert, welche Werte in der ComboBox auswählbar sind:**
Je nachdem, welcher [Werkstofftyp](#Werkstofftyp) ausgewählt ist, müssen die Werte aus einer der nachfolgend aufgelisteten Sektionen in der cfg-Datei [Oberflächenbehandlung.cfg](../cfg/Oberflächenbehandlung.cfg) auswählbar sein:
|Wert in ComboBox "Werkstofftyp" |Werte aus Sektion in Oberflächenbehandlung.cfg |
|--------------------------------------|-----------------------------------------------|
|Stahl |OberflächenbehandlungStahl |
|Aluminium |OberflächenbehandlungAluminium |
|Kunst-/ Verbundstoff |OberflächenbehandlungKunsVerbund |
|Schwermetall |OberflächenbehandlungSchwermetall |
|Festigkeitsklasse |OberflaechenbehandlungNormteil |
**Veränderung Werkstofftyp:**
Erfolgt eine Wertänderung in der ComboBox des Feldes "Werkstofftyp" muss der Wert in der ComboBox des Feldes "Material" durch einen leeren Wert ersetzt werden.
---
#### **Migration**
>**Spaltenname Impfdatei:** Oberflaechenbehandlung
---
---
### Farbe
**Logik, die steuert, wann es sich um ein Pflichtfeld handelt:**
IF Oberflaechenbehandlung == "eloxieren" OR "lackieren" OR "Masterbatch (Grundfarbe)" OR "pulverbeschichten":
Pflichtfeld = True
ELSE:
Pflichtfeld = False
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** ComboBox
**Logik, die steuert, wann ComboBox disabled ist:**
IF Oberflaechenbehandlung == "eloxieren" OR "lackieren" OR "Masterbatch (Grundfarbe)" OR "pulverbeschichten":
disabled = False
ELSE:
disabled = True
**Logik, die steuert, welcher Defaultwert gilt:**
- In den nachfolgenden Fällen darf **kein** Defaultwert eingetragen werden (selbst wenn in from_siv.csv ein Wert in der Spalte "Werkstoff" eingetragen sein sollte):
- PDM-Kategorie == "Baugruppe"
- PDM-Kategorie == "Kaufteil"
- PDM-Kategorie == "Einzelteil" und Aus Halbzeug == True (Haken gesetzt)
- Gilt PDM-Kategorie == "Einzelteil" und Aus Halbzeug == False (kein Haken), dann wird der Defaultwert wie folgt bestimmt:
Als erstes muss geprüft werden, ob der Werkstoff in "from_siv.csv" (Spalte "Werkstoff") als Objekt in [Materialübersetzung.json](../cfg/Materialübersetzung.json) existiert. Wenn nicht, soll nichts passieren (Info-Messagebox wird bereits im Feld [Werkstofftyp](#Werkstofftyp) erzeugt). Existiert das Objekt, muss geprüft werden, ob das Objekt einen Key "Farbe" aufweist. Wenn ja, soll dessen Wert in die ComboBox eingetragen werden:

Wenn nicht, soll im Gegensatz zu den ComboBoxen der Felder "Werkstofftyp" und "Material" **nicht** der Wert des Objekt-Keys "Message" eingetragen werden.
**Logik, die steuert, welche Werte in der ComboBox auswählbar sind:**
Je nachdem, welche [Oberfläche](#oberfläche) ausgewählt ist, müssen die Werte aus einer der nachfolgend aufgelisteten Sektionen in der cfg-Datei [Farben.cfg](../cfg/Farben.cfg) auswählbar sein:
|Wert in ComboBox "Oberfläche" |Werte aus Sektion in Farben.cfg |
|--------------------------------------|--------------------------------|
|eloxieren |FarbeEloxieren |
|lackieren |Farbauswahl |
|Masterbatch (Grunfarbe) |Farbauswahl |
|pulverbeschichten |Farbauswahl |
**Veränderung Oberfläche:**
Erfolgt eine Wertänderung in der ComboBox des Feldes "Oberfläche" muss der Wert in der ComboBox des Feldes "Farbe" durch einen leeren Wert ersetzt werden. Wenn in TK einstellbar soll zudem der Hintergrund der ComboBox solange rot eingefärbt werden, bis eine neue Oberfläche ausgewählt wurde.
---
#### **Migration**
>**Spaltenname Impfdatei:** Farbe
---
---
### Version
>**Pflichtfeld:** Nein
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Wert:** Aus Spalte "Version" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** Entry
#### **Migration**
>**Spaltenname Impfdatei:** Wird nicht im Impfdatei berücksichtigt -> Wird für Bestimmung des Freigabevermerks benötigt.
---
---
### Änderungsindex
>**Pflichtfeld:** Nein
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Entry
>**Wert:** Aus Spalte "AktuellerIndex" in "from_siv.csv"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** Entry
#### **Migration**
>**Spaltenname Impfdatei:** StartRevision
Liegt kein Änderungsindex vor, muss "A" in die Impfdatei eingetragen werden (siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung))
---
---
### Änderungstext
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Text (mehrzeilig)
>**Wert:** Aus Spalte "Aenderungstext" in "from_siv.csv"
**Aufgaben beim Einlesen des Feldes aus "from_siv.csv":**
- Semikolon (einschließlich vor- und nachgesetztem Leerzeichen) sollen durch ein Slash mit vor- und nachgesetztem Leerzeichen (" / ") ersetzt werden. Beispiel:
- Änderungstext in "from_siv.csv": "Gewindebohrung auf M5 vergrößert (war M4); Fasen entfernt"
- Änderungstext nach dem Einlesen: "Gewindebohrung auf M5 vergrößert (war M4) / Fasen entfernt"
- Wenn die Spalte "Aenderungstext" in "from_siv.csv" einen Wert enthält, soll der Textbaustein "(von {Wert aus Spalte "Indexerfasser in 'from_siv.csv'})" angehängt werden, Beispiel:
- Änderungstext in "from_siv.csv": "Biegeradius auf R5 vergrößert (war R4)"
- Änderungstext nach dem Einlesen: "Biegeradius auf R5 vergrößert (war R4) (von M.SCHNEIDER)"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** Text (mehrzeilig)
>**Zeichenbegrenzung:** 400
**Bestimmung der Zeichenbegrenzung:**
Wenn die Länge des Änderungstextes in der Spalte "SIVAS-Werte" die Zeichengrenze überschreitet, soll im Textfeld der Spalte "Überschriebene Werte" ein roter Platzhalter-Text erscheinen, solange kein kürzerer Änderungstext vom User in das Textfeld eingetragen wurde. Das Aussehen / Verhalten des Platzhalters soll identisch wie beim Feld [Bezeichnung 1](#bezeichnung-1) sein.
**Logik, die steuert, welcher Defaultwert gilt:**
IF Wert aus Spalte "Aenderungstext" in "from_siv.csv" == "":
IF PDM-Kategorie == "Kaufteil":
Defaultwert = "Erstanlage"
ELSE:
Defaultwert = "Erstanlage (von {Indexerfasser})"
ELSE:
Defaultwert = ""
---
#### **Migration**
>**Spaltenname in Impfdatei:** Änderungsbeschreibung
Es muss vor Erstellung der Impfdatei eine Längenprüfung durchgeführt werden, siehe [Tätigkeiten vor Erstellung der Impfdatei](#tätigkeiten-vor-erstellung-der-impfdatei)
---
---
### Freigabevermerk
>**Pflichtfeld:** Ja, immer
---
#### **Spalte 2: SIVAS-Werte**
>**Widget:**
>**Typ:** Text (mehrzeilig)
>**Wert:** Aus Spalte "Freigabevermerk" in "from_siv.csv"
**Aufgaben beim Einlesen des Feldes aus "from_siv.csv":**
- Semikolon (einschließlich vor- und nachgesetztem Leerzeichen) sollen durch ein Slash mit vor- und nachgesetztem Leerzeichen (" / ") ersetzt werden. Beispiel:
- Freigabevermerk in "from_siv.csv": "Verringerte Rissgefahr durch größeren Biegeradius; Kostenreduktion durch geringere Blechstärke"
- Freigabevermerk nach dem Einlesen: "Verringerte Rissgefahr durch größeren Biegeradius / Kostenreduktion durch geringere Blechstärke"
---
#### **Spalte 3: Überschriebene Werte**
>**Widget-Typ:** Text (mehrzeilig)
>**Zeichenbegrenzung:** 400
**Bestimmung der Zeichenbegrenzung:**
Wie beim Feld [Änderungstext](#änderungstext)
**Logik, die steuert, welcher Defaultwert gilt:**
IF Wert aus Spalte "Freigabevermerk" in "from_siv.csv" == "":
IF PDM-Kategorie == "Kaufteil":
Defaultwert = ""
ELSE:
IF Wert aus Spalte "Version" in "from_siv.csv" == 6 aufeinanderfolgende Zahlen:
Freigabevermerk = "Anpassung an neues Indexsystem, Zeichnung mit Versionsnummer {Wert aus Feld 'Version'} weiterhin gültig"
ELSE:
Defaultwert = ""
ELSE:
Defaultwert = ""
---
#### **Migration**
>**Spaltenname in Impfdatei:** Freigabevermerk
Es muss vor Erstellung der Impfdatei eine Längenprüfung durchgeführt werden, siehe [Tätigkeiten vor Erstellung der Impfdatei](#tätigkeiten-vor-erstellung-der-impfdatei)
---
---
### Automatische Zusatzinformationen
>**Pflichtfeld:** Nein
>**Widget:**
>**Typ:** Text (mehrzeilig)
>**Zeichenbegrenzung:** 400
>**disabled:** Ja
**Logik, die steuert, welche vordefinierten Textblöcke je nach Situation in das Textfeld eingetragen werden sollen:**
Hinweis:
Die nachfolgend aufgeführten Sektionen "EinzelTextblöcke" und "ComboTextblöcke" sind in der cfg-Datei [Zusatzinformationen.cfg](../cfg/Zusatzinformationen.cfg) enthalten.
IF Version == Kleinbuchstabe:
IF Trümmer == True OR Rüstcode == "":
Text = Sektion "ComboTextblöcke" -> Key "VersionTruemmer"
IF Teilenummer in Blacklist:
Text = Sektion "ComboTextblöcke" -> Key "VersionTruemmerBlacklist"
ELSE IF Teilenummer in Blacklist:
Text = Sektion "ComboTextblöcke" -> Key "VersionBlacklist"
ELSE IF Werkstoffdiskrepanz == True:
Text = Sektion "ComboTextblöcke" -> Key "VersionWerkstoffdiskrepanz"
ELSE:
Text = Sektion "EinzelTextblöcke" -> Key "Version"
ELSE IF Trümmer == True OR "Rüstcode" == "":
IF Teilenummer in Blacklist:
Text = Sektion "ComboTextblöcke" -> Key "TruemmerBlacklist"
ELSE IF Werkstoffdiskrepanz == True:
Text = Sektion "ComboTextblöcke" -> Key "TruemmerWerkstoffdiskrepanz"
ELSE:
Text = Sektion "EinzelTextblöcke" -> Key "Truemmer"
---
#### **Migration**
>**Spaltenname Impfdatei:** keine eigene Spalte -> Wird zur Definierung des Wertes in der Spalte "ZusaetzlicheInformationen" benötigt, siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung)
### Benutzerdefinierte Zusatzinformationen
>**Pflichtfeld:** Nein
>**Widget:**
>**Typ:** Text (mehrzeilig)
>**disabled:** Nein
**Bestimmung der Zeichenbegrenzung:**
Die Zeichenbegrenzung berechnet sich wie folgt:
Zeichenbegrenzung = 400 - Aktuelle Anzahl an Zeichen im Textfeld [Automatische Zusatzinformationen](#automatische-zusatzinformationen)
---
#### **Migration**
>**Spaltenname Impfdatei:** keine eigene Spalte -> Wird zur Definierung des Wertes in der Spalte "ZusaetzlicheInformationen" benötigt, siehe [Tätigkeiten Impfdateierstellung](#tätigkeiten-im-rahmen-der-impfdateierstellung)
## Button Migrieren
**Button soll in folgenden Fällen disabled sein:**
- Keines der Felder in der Spalte "SIVAS-Werte" ist befüllt
---
### Tätigkeiten vor Erstellung der Impfdatei
**Allgemeine Hinweise:**
- Wenn die Migration nicht abgeschlossen werden darf, bevor fehlende oder fehlerhafte Feldeintragungen behoben wurden, soll beim Klick auf den Button "Migrieren" eine ERROR-Messagebox erscheinen. Mehrere, gleichzeitig auftretende Fehler sind in einer Messagebox zusammenzufassen. Sollten Neben ERROR-Messageboxen gleichzeitig weitere Messagebox-Typen (z.B. YESNO) auftreten sind diese jeweils als separate Messageboxen auszugeben.
### Feldprüfungen
#### Allgemeine Prüfungen:
- Solange nicht alle Pflichtfelder einen Wert aufweisen, muss beim Klick auf den Button "Migrieren" eine ERROR-Messagebox erscheinen, in der alle Pflichtfelder aufgelistet sind, die keinen Wert aufweisen
- Es muss bei allen Feldern geprüft werden, ob sie ein unzulässiges Zeichen enthalten. Die Zeichen sind in der ini-Datei [ERP_Item.ini](\\ruledesigner\RDF_Daten\Konfigurator\CustomVaulting\ERP_Item.ini) in Sektion "Settings" unter dem Key "InvalidCharacters" aufgelistet:

Sollten unzulässige Zeichen in den Feldern identifiziert werden, muss eine ERROR-Messagebox ausgegeben werden. In der Messagebox soll jeweils das unzulässige Zeichen und der zugehörige Feldname aufgeführt sein, z.B. wie folgt:

---
#### Bezeichnung 1
Wenn die Anzahl der Zeichen im Feld [Bezeichnung 1](#bezeichnung-1) > 50 ist und im Feld der Spalte "Überschriebene Werte" keine kürzere Bezeichnung eingetragen wurde, soll beim Klick auf Button "Migrieren" eine ERROR-Messagebox erscheinen, z.B:

---
#### Halbzeug ohne Sägeliste
Wenn das Feld [Rüstcode](#rüstcode) den Wert "SRC Standard Rüstcode" aufweist und das Feld [Halbzeug ohne Sägeliste](#halbzeug-ohne-sägeliste) den Wert "Sägeliste nicht benötigt" besitzt, muss eine ERROR-Messagebox ausgegeben werden, z.B.:

---
#### Ruestcode
Wenn die [PDM-Kategorie](#pdm-kategorie) != "Baugruppe" ist und im Feld [Rüstcode](#rüstcode) kein Wert eingetragen ist, muss eine Error-Messagebox erscheinen, z.B.:

---
#### Fertigungsart
Tritt eine der nachfolgenden Kombinationen auf, muss eine ERROR-Messagebox erscheinen:
- [PDM-Kategorie](#pdm-kategorie) == "Baugruppe" in Verbindung mit einer der nachfolgenden [Fertigungsarten](#fertigungsart):
- "3D-drucken"
- "extrudieren"
- "gießen"
- "verpressen"
- "strangpressen"
- "spritzgießen"
- "schweißen"
- [PDM-Kategorie](#pdm-kategorie) == "Kaufteil" in Verbindung mit einer der Fertigungsarten aus Sektion "Fertigungsarten" in [Fertigungsarten.cfg](../cfg/Fertigungsarten.cfg)
- [PDM-Kategorie](#pdm-kategorie) == "Schweissbaugruppe" und [Fertigungsart](#fertigungsart) != "schweißen"
**ERROR-Messagebox:**

---
#### FOS-Gruppe
Tritt eine der nachfolgenden Kombinationen auf, muss eine ERROR-Messagebox erscheinen:
- [PDM-Kategorie](#pdm-kategorie) == "Baugruppe" und [FOS-Gruppe](#fos-gruppe) == "0 - Einzelteil"
- [PDM-Kategorie](#pdm-kategorie) == "Einzelteil" und [FOS-Gruppe](#fos-gruppe) == "1 - Baugruppe"
- [PDM-Kategorie](#pdm-kategorie) == "Schweissbaugruppe" und [FOS-Gruppe](#fos-gruppe) == "1 - Baugruppe"
**ERROR-Messagebox:**

---
#### Kalkulationsart
Tritt eine der nachfolgenden Kombinationen auf, muss eine ERROR-Messagebox erscheinen:
- [PDM-Kategorie](#pdm-kategorie) == "Kaufteil" und [Kalkulationsart](#kalkulationsart) == "Eigenbau"
- [PDM-Kategorie](#pdm-kategorie) == "Einzelteil" und [Kalkulationsart](#kalkulationsart) == "Kaufteil"
- [PDM-Kategorie](#pdm-kategorie) == "Schweissbaugruppe" und [Kalkulationsart](#kalkulationsart) == "Kaufteil"
**ERROR-Messagebox:**

---
#### Werkstofftyp
Wenn der eingetragene Wert nicht in Sektion "Werkstofftyp" der cfg-Datei [Werkstoff.cfg](../cfg/Werkstoff.cfg) enthalten ist, muss eine ERROR-Messagebox, z.B. mit dem Text "*Eingetragener Werkstofftyp falsch. Bitte korrigeren!*" erscheinen. (Tritt z.B. auf, wenn in ComboBox "*Bitte individuell auswählen*" steht)
---
#### Material
Tritt eine der nachfolgenden Kombinationen auf, muss eine ERROR-Messagebox, z.B. mit dem Text "*Werkstoff falsch. Bitte korrigieren!*" erscheinen:
- PDM-Kategorie == "Baugruppe" und Material != ""
- PDM-Kategorie == "Einzelteil" und Aus Halbzeug == True AND Material != ""
- PDM-Kategorie == "Kaufteil" und Material != "siehe Hersteller"
- PDM-Kategorie == "Schweissbaugruppe" und Material != ""
Die oben genannte ERROR-Messagebox soll auch dann erscheinen, wenn der eingetragene Wert nicht in einer der nachfolgenden Sektionen der cfg-Datei [Werkstoff.cfg](../cfg/Werkstoff.cfg) enthalten ist:
- Stahl
- Aluminium
- Kunst-/ Verbundstoff
- Schwermetall
- Festigkeitsklasse
---
#### Mengeneinheit
Wenn in der Spalte "Überschriebene Werte" nur ein Dropdownwert (z.B. "Stck") zulässig ist und in der Spalte "SIVAS-Werte" ein davon abweichender Wert eingetragen ist, soll eine Fehlermeldung ausgegeben werden, z.B. mit Text *"Mengeneinheit in SIVAS prüfen"*
---
#### Beschaffungsart
Falls die nachfolgenden Kombinationen auftreten muss eine Fehlermeldung, z.B. mit Text "Bitte Beschaffungsart in Sivas korrigieren" erscheinen:
- PDM-Kategorie == "Baugruppe" AND Beschaffungsart == "Kaufteil"
- PDM-Kategorie == "Schweissbaugruppe" AND Beschaffungsart == "Kaufteil"
- PDM-Kategorie == "Kaufteil" AND Beschaffungsart == "Eigenbau"
---
#### Dispolaufgruppe
Wenn das Feld Dispolaufgruppe in der Spalte "SIVAS-Werte" leer ist und in der Spalte "Überschriebene Werte" kein neuer Wert ausgewählt wurde soll eine Fehlermeldung, z.B. mit Text "*Bitte Dispolaufgruppe wählen!*", bzw. "*Bitte Dispolaufgruppe wählen!*" erscheinen.
---
#### Ersatz für
Wenn die ersetzte Teilenummer noch nicht in der Datei "RD_Teilenummern.csv" existiert, soll eine YESNO-Messagebox, z.B. mit Text *"Ersetzte Teilenummer {Teilenummer in Feld "Ersatz für"} existiert noch nicht in migriert. Migration trotzdem durchführen?"*. Beim Klick auf "Ja" soll die Migration durchgeführt werden, bei "Nein" nicht.
---
#### Ersetzt durch
Wenn die Ersatz-Teilenummer noch nicht in der Datei "RD_Teilenummern.csv" existiert, soll eine YESNO-Messagebox, z.B. mit Text *"Ersatz-Teilenummer {Teilenummer in "Ersetzt durch"} exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?"* erscheinen. Beim Klick auf "Ja" soll die Migration durchgeführt werden, bei "Nein" nicht.
---
#### Hersteller
Wenn der angegebene Hersteller in der Spalte "SIVAS-Werte" nicht in der Datei [Hersteller.cfg](/cfg/Hersteller.cfg) existiert muss eine ERROR-Messagebox, z.B. mit Text "Hersteller nicht in RuleDesigner enthalten. Bitte nachpflegen" erscheinen, die eine Migration verhindert.
---
#### Änderungstext und Freigabevermerk
Wenn die Länge des Änderungstextes oder Freigabevermerks eine Länge von 400 Zeichen überschreitet und in der Spalte "Überschriebene Werte" kein kürzerer Änderungstext eingetragen wurde, muss beim Klick auf den Button "Migrieren" eine ERROR-Messagebox erscheinen. Beim Feld Änderungstext, z.B. mit Text "*Änderungstext weist {Länge Änderungstext in Spalte 'SIVAS-Werte'} auf. Bitte auf 400 Zeichen verkürzen!*". Beim Feld "Freigabevermerk, z.B. mit Text "*Freigabevermerk weist {Länge Freigabevermerk in Spalte 'SIVAS-Werte'} auf. Bitte auf 400 Zeichen verkürzen!*" erscheinen.
Beispiel für Änderungstext:

### Tätigkeiten im Rahmen der Impfdateierstellung
**Allgemeine Hinweise:**
- Die Spalte "überschriebene Werte" gewinnt, d.h. wenn sich sowohl in der Spalte "SIVAS-Werte" als auch in der Spalte "Überschriebene Werte" Werte befinden, wird immer der Wert aus der Spalte "Überschriebene Werte" in die Impfdatei geschrieben / migriert.
**Spaltenbefüllungen:**
---
#### Path
Path = Ursprungsverzeichnis, aus dem das Solid Edge-DataPrepUtility die CAD-Dateien in das Zielverzeichnis (Verzeichnis, aus dem RuleDesigner die CAD-Daten zum Erstellen der Datensätze einliest) kopiert.
Der Wert in der Spalte "Path" ergibt sich, indem der Wert aus dem Feld [3D-Modell](#3d-modell) um nachfolgende Elemente verkürzt wird:
- den Dateinamen
- die Dateiendung
- den Backslash vor dem Dateinamen
**Beispiel:**
Wert in [3D-Modell](#3d-modell) (vor Verkürzung): `\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\01_Rohdatenpool\4er\400000194.par`
Resultierender Wert in Spalte "Path" : `\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\01_Rohdatenpool\4er`
---
#### Filename
Filename = Dateiname der Solid Edge-Datei im Ursprungsverzeichnis
Der Wert in der Spalte Filename ergibt sich, indem der Wert aus dem Feld [3D-Modell](#3d-modell) bis zum Backslash vor dem Dateinamen gekürzt wird.
**Beispiel:**
Wert in [3D-Modell](#3d-modell) (vor Verkürzung): `\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\01_Rohdatenpool\4er\400000194.par`
Resultierender Wert in Spalte "Filename": `400000194.par`
---
#### New path
>**Spaltenname Impfdatei:** New path
New path = Zielverzeichnis, von dem aus RuleDesigner die Solid Edge-Dateien zum Erstellen des Datensatzes einliest.
Der Pfad ergibt sich durch folgende Logik:
IF Datenbank == "Produktiv":
New_path = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool\
ELSE:
New_path = \\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool
Wenn User, der migriert, noch keinen Ordner in `\\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool` besitzt, soll dieser automatisch beim Klick auf "Migrieren" angelegt werden.
---
#### New Filename
New Filename = Dateiname der Solid Edge-Datei im Zielverzeichnis (siehe Wert in Spalte "New path")
Der Dateiname setzt sich aus dem Wert im Feld "Teilenummer" und der Dateiendung der Solid Edge-Datei, die im Wert des Feldes "3D-Modell" enthalten ist, zusammen.
---
#### Delete, Document Number, Revision, Project Name, Teamcenter Item Type, Part Type, TC_ImportTime, Last Saved Version, Subject, Category, Keywords
In der nachfolgenden Tabelle ist aufgelistet, welche Werte die entsprechenden Spalten in der Impfdatei erhalten sollen:
|Spalte |Wert |
|:--------------------|:----------|
|Delete | "" (leer) |
|Document Number | - |
|Revision | - |
|Project Name | - |
|Teamcenter Item Type | - |
|Part Type | - |
|TC_ImportTime | - |
|Last Saved Version | - |
|Subject | - |
|Category | - |
|Keywords | - |
---
#### Title
Die Wert in der Spalte "Title" wird wie folgt festgelegt:
IF PDM-Kategorie == "Baugruppe" OR "Schweissbaugruppe":
Title = Wert aus Feld "Bezeichnung 1" + " - BG"
ELSE:
Title == Wert aus Feld "Bezeichnung 1"
Beispiel:
- **PDM-Kategorie:**
Baugruppe
- **Wert in Feld Bezeichnung 1:**
Rahmen 1 Beladung Schliesser
**Resultierender Wert in Spalte "Title":**
Rahmen 1 Beladung Schliesser - BG
---
#### Bezeichnung4
In den nachfolgend aufgeführten Fällen muss die Spalte "Bezeichnung4" der Impfdatei mit dem Kürzel "- BG" befüllt werden:
IF PDM-Kategorie == "Baugruppe" OR "Schweissbaugruppe":
Bezeichnung4 == "- BG"
ELSE:
Bezeichnung4 == ""
---
#### Author
In der Spalte "Author" soll der Wert aus der Windows-Systemumgebungsvariable `%USERNAME%` eingetragen werden
---
#### StartRevision
IF Wert in Spalte "AktuellerIndex" in "from_siv.csv" == "":
StartRevision = "A"
ELSE:
StartRevision = Wert aus Spalte "AktuellerIndex" in "from_siv.csv"
---
#### Aus Halbzeug
Vor die Impfdatei geschrieben wird, müssen die CheckButton-Werte gemappt werden, siehe Tabelle:
|Wert in Feld [Aus Halbzeug](#aus-halbzeug) |Wert in Impfdatei |
|-------------------------------------------|-----------------------------|
|True (Haken gesetzt) |Ja |
|False (Haken nicht gesetzt) |"" (kein Wert) |
---
#### Fertigungsart
Bevor die Fertigungsarten in die Impfdatei geschrieben werden, müssen die eingetragenen Werte gemappt werden, siehe Tabelle:
|Wert in Feld [Fertigungsart](#fertigungsart) |Wert in Impfdatei |
|---------------------------------------------|-----------------------------|
|3D - 3D drucken |3D-drucken |
|BI - biegen |biegen |
|DR - drehen |drehen |
|EX - extrudieren |extrudieren |
|FR - fräsen |fräsen |
|GI - gießen |gießen |
|LW - laser- und wasserstrahlschneiden |laser-/wasserstrahlschneiden |
|PR - verpressen |verpressen |
|SA - sägen |sägen |
|SN - strangpressen |strangpressen |
|SP - spritzgießen |spritzgießen |
|ST - stanzen |stanzen |
|SW - schweißen |schweißen |
---
#### FOS-Gruppe
Der eingetragene Wert im Feld [FOS-Gruppe](#fos-gruppe) muss als gemappter Wert in die Impfdatei geschrieben werden, siehe rechte Tabellenspalte:
|Wert in Feld [FOS-Gruppe](#fos-gruppe) |Wert in Impfdatei |
|---------------------------------------|-----------------------------|
|0 - Einzelteil |Einzelteil |
|1 - Baugruppe |Baugruppe |
---
#### TOS-Gruppe
Die Zahlen der TOS-Gruppennummer beschreiben einen Pfad, d.h. die nächste Zahl/Gruppe ist immer das Kind der aktuellen Zahl/Gruppe. Jede Zahl/Gruppe verfügt über ein eigenes RuleDesigner-Feld, das in der Impfliste befüllt werden muss.
Die nachfolgende Tabelle beschreibt anhand der Gruppennummer 3303, welche Felder (siehe Feldnamen) jeweils welche Werte erhalten müssten:
|Nr. |Feldname |Wert |
|----:|---------------------------|-------------------------|
|3 |TOS-Gruppe | Schönenberger Produkt |
|33 |TOS_Schoenenberger_Produkt | ILS IntraLogistikSystem |
|330 |TOS_ILS | ILS 2.0 |
|3303 |TOS_ILS_2 | Laufprofil 2.0 |
Eine Auflistung mit allen Gruppen und deren Werten / Kindern befindet sich in der Datei [TOS-Gruppen.json](../cfg/TOS-Gruppen.json).
**Anmerkung:**
Felder, die nicht Teil der angegebenen TOS-Gruppennummer sind, dürfen trotzdem in der Impfdatei vorhanden sein, solange sie keinen Wert aufweisen. Grund:
Das Solid Edge "DataPrepUtility" berücksichtigt beim Schreiben der Paramter in die Solid Edge-Dateien keine leeren Spalten/Werte.
---
#### Dispogruppe
Der festgelegte Wert im Feld "Dispogruppe" muss bis einschließlich " - " gekürzt werden. Beispiel:
"20 - Förderer" ---wird zu---> "Förderer"
**Sonderfall:**
- "60 - Kleinteile" ---wird zu---> "Kleinteil" ("e" am Ende von "Kleinteile" entfällt)
---
#### Dispolaufgruppe
Der festgelegte Wert des Feldes "Dispolaufgruppe" muss bis einschließlich " - " gekürzt werden. Beispiel:
"20 - Intra Logistic System + Alt-HFS" ---wird zu---> "Intra Logistic System + alt-HFS"
**Sonderfälle**
- "40 - Spinnereikomponenten" ---wird zu---> "Spinnereikomponente" ("n" am Ende von "Spinnereikomponenten" entfällt)
- "20 - Intra Logistic System + Alt-HFS" ---wird zu---> "Intra Logistic System + alt-HFS" ("a" in "alt" wird kleingeschrieben)
---
#### ZusaetzlicheInformationen
Die Werte aus den Feldern [Automatische Zusatzinformationen](#automatische-zusatzinformationen) und [Benutzerdefinierte Zusatzinformationen](#benutzerdefinierte-zusatzinformationen) müssen vor dem Eintragen in die Impfdatei zusammengesetzt werden
### Tätigkeiten nach der Impfdateierstellung
1. Kopieren des aktuellen Standes der RuleDesigner-Datenbank (nachdem RDX-Prozess ausgeführt wurde).
2. Leerung der aktuellen Maske
## Button "Speichern"
## Button "Zurücksetzen"
Beim Klick auf den Button "Zurücksetzen" soll die Datei "from_siv.csv" zur zugehörigen Teilenummer erneut abgeleitet werden. Hintergrund: Sollte sich in einem Feld der Spalte "SIVAS-Werte" ein Wert befinden, der in Sivas berichtigt werden muss, bevor die Migration durchgeführt werden kann