Compare commits
4 Commits
b7fd1da5b8
...
6c31b9fbf3
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c31b9fbf3 | |||
| f5cc53253e | |||
| cf4b632cba | |||
| 95fb80dd57 |
@@ -8,10 +8,10 @@ Dispoinaktiv=ACHTUNG BG mit dispoinaktiven Stücklistenpositionen. Es wird keine
|
|||||||
|
|
||||||
[ComboTextblöcke]
|
[ComboTextblöcke]
|
||||||
KleinbuchstabeTruemmer=ACHTUNG Index in Sivas mit Kleinbuchstaben + Trümmerbaugruppe. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
KleinbuchstabeTruemmer=ACHTUNG Index in Sivas mit Kleinbuchstaben + Trümmerbaugruppe. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
KleinbuchstabeBlacklist=ACHTUNG Index in Sivas mit Kleinbuchstaben + BG mit Beistellungen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
KleinbuchstabeBlacklistBG=ACHTUNG Index in Sivas mit Kleinbuchstaben + BG mit Beistellungen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
KleinbuchstabeWerkstoffdiskrepanz=ACHTUNG Index in Sivas mit Kleinbuchstaben + Materialdiskrepanz. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
KleinbuchstabeWerkstoffdiskrepanz=ACHTUNG Index in Sivas mit Kleinbuchstaben + Materialdiskrepanz. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
KleinbuchstabeDispoinaktiv=ACHTUNG Index in Sivas mit Kleinbuchstaben + BG mit Dispoinaktiven Stücklistenpositionen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
KleinbuchstabeDispoinaktiv=ACHTUNG Index in Sivas mit Kleinbuchstaben + BG mit Dispoinaktiven Stücklistenpositionen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
TruemmerBlacklist=ACHTUNG Trümmerbaugruppe + BG mit Beistellungen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
TruemmerBlacklistBG=ACHTUNG Trümmerbaugruppe + BG mit Beistellungen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
TruemmerWerkstoffdiskrepanz=ACHTUNG Trümmerbaugruppe + Materialdiskrepanz. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
TruemmerWerkstoffdiskrepanz=ACHTUNG Trümmerbaugruppe + Materialdiskrepanz. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
TruemmerDispoinaktiv=ACHTUNG Trümmerbaugruppe + BG mit dispoinaktiven Stücklistenpositionen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
TruemmerDispoinaktiv=ACHTUNG Trümmerbaugruppe + BG mit dispoinaktiven Stücklistenpositionen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
KleinbuchstabeTruemmerBlacklist=ACHTUNG Index in Sivas mit Kleinbuchstaben + Trümmerbaugruppe + BG mit Beistellungen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
KleinbuchstabeTruemmerBlacklist=ACHTUNG Index in Sivas mit Kleinbuchstaben + Trümmerbaugruppe + BG mit Beistellungen. Ausführliche Informationen zu erforderlichen Tätigkeiten / potentiellen Fehlern vgl. Konstruktionsrichtlinien
|
||||||
@@ -20,8 +20,8 @@ BlacklistHZDispoinaktiv=ACHTUNG Bearbeitetes Halbzeug mit beigestellten und disp
|
|||||||
BlacklistBGDispoinaktiv=ACHTUNG BG mit beigestellten und dispoinaktiven Stücklistenpositionen. Es wird keine Stückliste übergeben. Diese muss bei einer Änderung händisch angelegt und archiviert werden. Hierfür die Verantwortlichen für den Teilestamm informieren.
|
BlacklistBGDispoinaktiv=ACHTUNG BG mit beigestellten und dispoinaktiven Stücklistenpositionen. Es wird keine Stückliste übergeben. Diese muss bei einer Änderung händisch angelegt und archiviert werden. Hierfür die Verantwortlichen für den Teilestamm informieren.
|
||||||
|
|
||||||
;Nachfolgende Kombinationen können nicht auftreten:
|
;Nachfolgende Kombinationen können nicht auftreten:
|
||||||
;- BlacklistWerkstoffdiskrepanz
|
;- BlacklistBGWerkstoffdiskrepanz
|
||||||
;- KleinbuchstabeTruemmerWerkstoffdiskrepanz
|
;- KleinbuchstabeTruemmerWerkstoffdiskrepanz
|
||||||
;- KleinbuchstabeBlacklistWerkstoffdiskrepanz
|
;- KleinbuchstabeBlacklistBGWerkstoffdiskrepanz
|
||||||
;- TruemmerBlacklistWerkstoffdiskrepanz=
|
;- TruemmerBlacklistBGWerkstoffdiskrepanz
|
||||||
;- KleinbuchstabeTruemmerBlacklistWerkstoffdiskrepanz=
|
;- KleinbuchstabeTruemmerBlacklistBGWerkstoffdiskrepanz
|
||||||
|
|||||||
+100
-49
@@ -242,6 +242,7 @@ class CadItem(DataModel):
|
|||||||
self._read_only_items = {}
|
self._read_only_items = {}
|
||||||
self._controller = None
|
self._controller = None
|
||||||
self._logic = None
|
self._logic = None
|
||||||
|
self._has_bom = None
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
asm_id = self.get_asm_id() # das einzige was beim Löschen des Modells bleiben sollte, ist die übergeordnete Baugruppennummer
|
asm_id = self.get_asm_id() # das einzige was beim Löschen des Modells bleiben sollte, ist die übergeordnete Baugruppennummer
|
||||||
@@ -294,6 +295,14 @@ class CadItem(DataModel):
|
|||||||
raise ValueError(f"Property '{property_name}' doesn't exist in BOM! Check property spelling!")
|
raise ValueError(f"Property '{property_name}' doesn't exist in BOM! Check property spelling!")
|
||||||
else:
|
else:
|
||||||
return self._bom_properties[property_name]
|
return self._bom_properties[property_name]
|
||||||
|
|
||||||
|
def set_bom_existence(self, bom_status: bool) -> bool:
|
||||||
|
self._has_bom = bom_status
|
||||||
|
|
||||||
|
def has_bom(self) -> bool:
|
||||||
|
return self._has_bom
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Methoden um die Verwendbarkeit einzelner Schalter auszugrauen
|
# Methoden um die Verwendbarkeit einzelner Schalter auszugrauen
|
||||||
def set_read_only_dict(self, data:dict):
|
def set_read_only_dict(self, data:dict):
|
||||||
@@ -389,7 +398,7 @@ class CadItem(DataModel):
|
|||||||
text_neu = None
|
text_neu = None
|
||||||
# semikolon müssen rausfliegen
|
# semikolon müssen rausfliegen
|
||||||
if re.search(';', text):
|
if re.search(';', text):
|
||||||
text_neu = re.sub(r"\s*;\s*", " /", text, flags=re.I)
|
text_neu = re.sub(r"\s*;\s*", " / ", text, flags=re.I)
|
||||||
if author:
|
if author:
|
||||||
if text_neu:
|
if text_neu:
|
||||||
text_neu = '{aenderungstext} (von {author})'.format(aenderungstext=text_neu, author=author)
|
text_neu = '{aenderungstext} (von {author})'.format(aenderungstext=text_neu, author=author)
|
||||||
@@ -477,7 +486,7 @@ class CadItem(DataModel):
|
|||||||
if "freigabevermerk_sivas" in translated_data:
|
if "freigabevermerk_sivas" in translated_data:
|
||||||
text = translated_data["freigabevermerk_sivas"]
|
text = translated_data["freigabevermerk_sivas"]
|
||||||
if re.search(';', text):
|
if re.search(';', text):
|
||||||
translated_data["freigabevermerk_neu"] = re.sub(r"\s*;\s*", " /", text, flags=re.I)
|
translated_data["freigabevermerk_neu"] = re.sub(r"\s*;\s*", " / ", text, flags=re.I)
|
||||||
|
|
||||||
# Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co."
|
# Spezial Hersteller: aus "80312 - Rehau AG & Co." wird "Rehau AG & Co."
|
||||||
if "hersteller_sivas" in translated_data:
|
if "hersteller_sivas" in translated_data:
|
||||||
@@ -650,6 +659,20 @@ class CadItem(DataModel):
|
|||||||
if not self.get_gui_data(key_sivas):
|
if not self.get_gui_data(key_sivas):
|
||||||
if not self.get_gui_data(key_neu):
|
if not self.get_gui_data(key_neu):
|
||||||
missing.append(self.key2label[key_neu])
|
missing.append(self.key2label[key_neu])
|
||||||
|
|
||||||
|
def get_key_with_data(self, key_sivas: str, key_neu: str, key_list: list = []):
|
||||||
|
''' Vergleicht Inhalt von SIVAS-Feld und überschriebenem Feld:
|
||||||
|
- Sind nur das überschriebene oder das überschriebe und das SIVAS-Feld befüllt, wird das überschriebene zurückgegeben
|
||||||
|
- Ist nur das SIVAS-Feld befüllt, wird das SIVAS-Feld zurückgegeben
|
||||||
|
- Ist keines von beiden Feldern befüllt, wird None zurückgegeben '''
|
||||||
|
|
||||||
|
if not self.get_gui_data(key_neu):
|
||||||
|
if not self.get_gui_data(key_sivas):
|
||||||
|
return
|
||||||
|
key_list.append(key_sivas)
|
||||||
|
else:
|
||||||
|
key_list.append(key_neu)
|
||||||
|
return key_list
|
||||||
|
|
||||||
def check_pflichtfelder(self):
|
def check_pflichtfelder(self):
|
||||||
"""Allgemeine Prüfungen:
|
"""Allgemeine Prüfungen:
|
||||||
@@ -754,13 +777,36 @@ class CadItem(DataModel):
|
|||||||
return (True, {})
|
return (True, {})
|
||||||
|
|
||||||
def check_improper_chars(self, invalid_chars):
|
def check_improper_chars(self, invalid_chars):
|
||||||
""" überprüft ob inder Oberfläche nicht erlaubte Zeichen eingetragen wurden"""
|
"""
|
||||||
wrongchars = dict()
|
Überprüft, ob in den Eingabefeldern der GUI unzulässige Zeichen eingetragen wurden.
|
||||||
for key in self.key2label:
|
Die unzulässigen Zeichen sind in cfg/InvalidCharacters.txt aufgelistet.
|
||||||
if key == "model3d_neu": # 3D Teil Pfad ausnehmen
|
Ursprung dieser Liste ist \\ruledesigner\RDF_Daten\Konfigurator\CustomVaulting\ERP_Item.ini -> Option "InvalidCharacters"
|
||||||
continue
|
"""
|
||||||
if key == "material_sivas": # Wert in GUI-Spalte "SIVAS-Werte in Feld "Material" nicht berücksichtigen
|
wrongchars = {}
|
||||||
continue
|
keys_to_check = []
|
||||||
|
|
||||||
|
# Bei diesen Feldern soll geprüft werden, ob sie einen Inhalt aufweisen. Wenn nicht, muss auch nicht geprüft werden, ob sich darin unzulässige Zeichen befinden.
|
||||||
|
check_key_for_data = ["halbzeugnummer_neu", "halbzeuglaenge_neu", "zusatzinfos_auto_text", "zusatzinfos_bendef_text"]
|
||||||
|
keys_with_data = list(filter(lambda key: self.get_gui_data(key) != "", check_key_for_data))
|
||||||
|
keys_to_check + keys_with_data
|
||||||
|
|
||||||
|
# Mapping SIVAS-Felder und Überschriebene Felder. Hier soll jeweils geprüft werden, welches der beiden einen Wert enthält.
|
||||||
|
# Wenn beide Felder einen Wert enthalten soll nur das überschriebene Feld nach unzulässigen Zeichen durchsucht werden, ansonsten das SIVAS-Feld
|
||||||
|
compare_keys_for_data = { "bezeichnung1_sivas": "bezeichnung1_neu",
|
||||||
|
"tosgruppe_sivas": "tosgruppe_neu",
|
||||||
|
"hersteller_sivas": "hersteller_neu",
|
||||||
|
"ersatzfuer_sivas": "ersatzfuer_neu",
|
||||||
|
"ersetztdurch_sivas": "ersetztdurch_neu",
|
||||||
|
"herstteilenr_sivas": "herstteilenr_neu",
|
||||||
|
"material_sivas": "material_neu",
|
||||||
|
"aenderungsindex_sivas": "aenderungsindex_neu",
|
||||||
|
"aenderungstext_sivas": "aenderungstext_neu",
|
||||||
|
"freigabevermerk_sivas": "freigabevermerk_neu",
|
||||||
|
}
|
||||||
|
for sivas_key, neu_key in compare_keys_for_data.items():
|
||||||
|
self.get_key_with_data(sivas_key, neu_key, keys_to_check)
|
||||||
|
|
||||||
|
for key in keys_to_check:
|
||||||
content = self.get_gui_data(key)
|
content = self.get_gui_data(key)
|
||||||
for c in invalid_chars:
|
for c in invalid_chars:
|
||||||
if c in content:
|
if c in content:
|
||||||
@@ -787,18 +833,14 @@ class CadItem(DataModel):
|
|||||||
def check_content(self):
|
def check_content(self):
|
||||||
"""Überprüfe die Inhalte nach Längen, Zeichenketten und korrekten Kombinationen der Eingaben"""
|
"""Überprüfe die Inhalte nach Längen, Zeichenketten und korrekten Kombinationen der Eingaben"""
|
||||||
|
|
||||||
|
# Prüfung Bezeichnungslänge (darf max. 50 Zeichen betragen)
|
||||||
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
|
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
|
||||||
content = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
|
content = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
|
||||||
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
|
if len(content) > 50:
|
||||||
if len(content) > 45:
|
self.message_error('Bezeichnung1 zu gross', 'bezeichnung_zu_gross_50')
|
||||||
self.message_error('Bezeichnung1 zu gross', 'bezeichnung_zu_gross_45')
|
return False
|
||||||
return False
|
|
||||||
else:
|
|
||||||
if len(content) > 50:
|
|
||||||
self.message_error('Bezeichnung1 zu gross', 'bezeichnung_zu_gross_50')
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Rüstcode und Sögeliste
|
# Rüstcode und Sägeliste
|
||||||
ruestcode = self.get_gui_data("ruestcode_sivas")
|
ruestcode = self.get_gui_data("ruestcode_sivas")
|
||||||
halbzeugOhneSaege_neu = self.get_gui_data("halbzeugOhneSaege_neu")
|
halbzeugOhneSaege_neu = self.get_gui_data("halbzeugOhneSaege_neu")
|
||||||
if ruestcode == "SRC Standard Rüstcode" and halbzeugOhneSaege_neu == "Sägeliste nicht benötigt":
|
if ruestcode == "SRC Standard Rüstcode" and halbzeugOhneSaege_neu == "Sägeliste nicht benötigt":
|
||||||
@@ -2522,6 +2564,7 @@ class GuiLogic():
|
|||||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||||
version_sivas = str(self._model.get_gui_data("version_sivas"))
|
version_sivas = str(self._model.get_gui_data("version_sivas"))
|
||||||
freigabe_sivas = self._model.get_gui_data("freigabevermerk_sivas")
|
freigabe_sivas = self._model.get_gui_data("freigabevermerk_sivas")
|
||||||
|
freigabe_neu = self._model.get_gui_data("freigabevermerk_neu") # Brauchen wir für den Fall, dass der SIVAS-Freigabevermerk beim Einlesen bereits transformiert wurden, da er ein Semikolon enthielt.
|
||||||
|
|
||||||
if selected is None:
|
if selected is None:
|
||||||
# Default Vorbelegung
|
# Default Vorbelegung
|
||||||
@@ -2534,59 +2577,67 @@ class GuiLogic():
|
|||||||
default = 'Anpassung an neues Indexsystem, Zeichnung mit Versionsnummer {version} weiterhin gültig'.format(version=version_sivas)
|
default = 'Anpassung an neues Indexsystem, Zeichnung mit Versionsnummer {version} weiterhin gültig'.format(version=version_sivas)
|
||||||
else:
|
else:
|
||||||
default = '-'
|
default = '-'
|
||||||
|
else:
|
||||||
|
if freigabe_neu is not None:
|
||||||
|
default = freigabe_neu
|
||||||
ret['freigabevermerk_neu'] = default
|
ret['freigabevermerk_neu'] = default
|
||||||
else:
|
else:
|
||||||
ret['freigabevermerk_neu'] = selected
|
ret['freigabevermerk_neu'] = selected
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def cb_zusatzinfos_auto_text(self, selected):
|
def cb_zusatzinfos_auto_text(self, selected):
|
||||||
ret = dict()
|
|
||||||
|
|
||||||
|
ret = dict()
|
||||||
aenderungsindex_sivas = self._model.get_gui_data("aenderungsindex_sivas")
|
aenderungsindex_sivas = self._model.get_gui_data("aenderungsindex_sivas")
|
||||||
truemmer = self._model.get_gui_data("truemmer")
|
truemmer = self._model.get_gui_data("truemmer")
|
||||||
ruestcode = self._model.get_gui_data("ruestcode_sivas")
|
ruestcode = self._model.get_gui_data("ruestcode_sivas")
|
||||||
teilenummer = str(self._model.get_gui_data("teilenummer"))
|
|
||||||
werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu")
|
werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu")
|
||||||
aus_halbzeug_neu = self._model.get_gui_data("aus_halbzeug_neu")
|
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
|
||||||
|
|
||||||
|
bom_exists = self._model.has_bom()
|
||||||
|
beistellungen = False
|
||||||
|
dispoinaktiv = False
|
||||||
|
if bom_exists:
|
||||||
|
beistellungen = "True" in self._model.get_bom_properties("Lieferantenbeistellung").values()
|
||||||
|
dispoinaktiv = "False" in self._model.get_bom_properties("Dispoaktiv").values()
|
||||||
|
|
||||||
|
# Liest Optionsnamen aus 'Zusatzinformationen.cfg'
|
||||||
|
cfg_single_options = dict.fromkeys(self._config.Zusatz.get_section_options("EinzelTextblöcke"), "EinzelTextblöcke")
|
||||||
|
cfg_combo_options = dict.fromkeys(self._config.Zusatz.get_section_options("ComboTextblöcke"), "ComboTextblöcke")
|
||||||
|
all_cfg_options = cfg_single_options | cfg_combo_options
|
||||||
|
|
||||||
if selected is None:
|
if selected is None:
|
||||||
text = ''
|
text = ''
|
||||||
try:
|
try:
|
||||||
blacklist = self._config.get_blacklist()
|
self._config.get_blacklist()
|
||||||
except:
|
except:
|
||||||
self._model.message_error('Blacklist nicht vorhanden', 'blacklist_not_exist')
|
self._model.message_error('Blacklist nicht vorhanden', 'blacklist_not_exist')
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
# Prüft, ob einer der nachfolgenden Fälle auf die Teilenummer zutrifft, die im Moment migriert wird
|
||||||
|
matches = []
|
||||||
if aenderungsindex_sivas and aenderungsindex_sivas.islower():
|
if aenderungsindex_sivas and aenderungsindex_sivas.islower():
|
||||||
if truemmer == 'J' or ruestcode is None:
|
matches.append("Kleinbuchstabe")
|
||||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmer')
|
if truemmer == 'J' or ruestcode is None:
|
||||||
if teilenummer in blacklist:
|
matches.append("Truemmer")
|
||||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist')
|
if werkstoffdiskr_neu:
|
||||||
elif teilenummer in blacklist:
|
matches.append("Werkstoffdiskrepanz")
|
||||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist')
|
if dispoinaktiv:
|
||||||
elif werkstoffdiskr_neu == True:
|
matches.append("Dispoinaktiv")
|
||||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz')
|
if beistellungen:
|
||||||
|
if aus_halbzeug:
|
||||||
|
matches.append("BlacklistHZ")
|
||||||
else:
|
else:
|
||||||
text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe')
|
matches.append("BlacklistBG")
|
||||||
text = text.format(aenderungsindex=aenderungsindex_sivas)
|
|
||||||
elif truemmer == 'J' or ruestcode is None:
|
|
||||||
if teilenummer in blacklist:
|
|
||||||
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerBlacklist')
|
|
||||||
elif werkstoffdiskr_neu == True:
|
|
||||||
text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerWerkstoffdiskrepanz')
|
|
||||||
else:
|
|
||||||
text = self._config.Zusatz.get('EinzelTextblöcke', 'Truemmer')
|
|
||||||
elif teilenummer in blacklist:
|
|
||||||
if aus_halbzeug_neu:
|
|
||||||
text = self._config.Zusatz.get('EinzelTextblöcke', 'BlacklistHZ')
|
|
||||||
else:
|
|
||||||
text = self._config.Zusatz.get('EinzelTextblöcke', 'BlacklistBG')
|
|
||||||
elif werkstoffdiskr_neu == True:
|
|
||||||
text = self._config.Zusatz.get('EinzelTextblöcke', 'Werkstoffdiskrepanz')
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
# Sucht sich die zutreffende Option aus der "Zusatzinformationen.cfg", die mit den gefundenen Fällen übereinstimmen
|
||||||
|
# heraus und gibt den Optionstext zurück. Bei fehlender Übereinstimmung wird kein Text geschrieben
|
||||||
|
if len(matches) > 0:
|
||||||
|
match_len = len("".join(matches))
|
||||||
|
for option in all_cfg_options:
|
||||||
|
if all(match in option for match in matches) and len(option) == match_len:
|
||||||
|
text = self._config.Zusatz.get(all_cfg_options[option], option)
|
||||||
|
break
|
||||||
|
|
||||||
ret['zusatzinfos_auto_text'] = text
|
ret['zusatzinfos_auto_text'] = text
|
||||||
else:
|
else:
|
||||||
|
|||||||
+15
-8
@@ -121,9 +121,12 @@ class Controller(Observer):
|
|||||||
data_dir = self.get_env("data")
|
data_dir = self.get_env("data")
|
||||||
rd_dbase_filename = self.get_env("rd_dbase_filename")
|
rd_dbase_filename = self.get_env("rd_dbase_filename")
|
||||||
|
|
||||||
excluded_bom_ids = self._config.bom_config.get_excluded_ids("ExcludedPartnumbersInBOM")
|
excluded_bom_ids = self._config.bom_config.get_excluded_ids("ExcludedPartnumbersInBOM") # Artikelnummern wie z.B. "MA0000006" sollen nicht im Baum dargestellt werden
|
||||||
|
|
||||||
sivas_bom = SivasBOM(asm_id, data_dir, asm_id + '.json', load_local_bom, excluded_bom_ids)
|
sivas_bom = SivasBOM(asm_id, data_dir, asm_id + '.json', load_local_bom, excluded_bom_ids)
|
||||||
|
|
||||||
|
bom_existence = False if not sivas_bom.bom_data else True
|
||||||
|
|
||||||
sivas_bom.extend_asm_bom(asm_id, {"Parent": None, "Position": "10/0"}) # Ergänzt Stücklistendaten um eine fiktive Baugruppe "None", in der die Haupt-Teilenummer als Pos. 1 vorliegt. Dadurch können auch Teilenummern ohne Stückliste korrekt abgebildet werden
|
sivas_bom.extend_asm_bom(asm_id, {"Parent": None, "Position": "10/0"}) # Ergänzt Stücklistendaten um eine fiktive Baugruppe "None", in der die Haupt-Teilenummer als Pos. 1 vorliegt. Dadurch können auch Teilenummern ohne Stückliste korrekt abgebildet werden
|
||||||
|
|
||||||
rd_data = RuleDesignerDatabaseConfig(data_dir, rd_dbase_filename, load_local_rd_ids)
|
rd_data = RuleDesignerDatabaseConfig(data_dir, rd_dbase_filename, load_local_rd_ids)
|
||||||
@@ -137,6 +140,7 @@ class Controller(Observer):
|
|||||||
self._model.set_red_ids(pending_ids)
|
self._model.set_red_ids(pending_ids)
|
||||||
self._model.set_parent_children(sivas_bom.parent_children)
|
self._model.set_parent_children(sivas_bom.parent_children)
|
||||||
self._model.set_asm_id(asm_id)
|
self._model.set_asm_id(asm_id)
|
||||||
|
self._model.set_bom_existence(bom_existence)
|
||||||
self._model.set_bom_properties(sivas_bom.all_bom_properties)
|
self._model.set_bom_properties(sivas_bom.all_bom_properties)
|
||||||
|
|
||||||
def set_model(self, model):
|
def set_model(self, model):
|
||||||
@@ -184,8 +188,8 @@ class Controller(Observer):
|
|||||||
# falls eine .json Datei davon im Work Ordner existiert, dann diese zuerst versuchen ins Modell zu laden
|
# falls eine .json Datei davon im Work Ordner existiert, dann diese zuerst versuchen ins Modell zu laden
|
||||||
self._view.clear_rightframes()
|
self._view.clear_rightframes()
|
||||||
self._model.clear()
|
self._model.clear()
|
||||||
isok = self._model.from_json_file(self.get_env("out"), cid)
|
saved_json_exists = self._model.from_json_file(self.get_env("out"), cid)
|
||||||
if isok == False:
|
if saved_json_exists == False:
|
||||||
# ansonsten die .csv Datei mit den SIVAS Infos aus data holen
|
# ansonsten die .csv Datei mit den SIVAS Infos aus data holen
|
||||||
loaded = self._model.sivas_data_from_csv(cid)
|
loaded = self._model.sivas_data_from_csv(cid)
|
||||||
if loaded == None:
|
if loaded == None:
|
||||||
@@ -283,15 +287,17 @@ class Controller(Observer):
|
|||||||
elif key == 'cb_zurücksetzen':
|
elif key == 'cb_zurücksetzen':
|
||||||
self.zuruecksetzen()
|
self.zuruecksetzen()
|
||||||
elif key == 'cb_suche_asm':
|
elif key == 'cb_suche_asm':
|
||||||
# kopiere Blacklist von Server
|
# hole dir die in die GUI eingetragene Nummer
|
||||||
update_database.get_blacklist(self.get_env("data"))
|
update_database.get_blacklist(self.get_env("data"))
|
||||||
# hole dir den in die gui eingetragene Nummer
|
|
||||||
current_asmid = self.data_from_view('asm_id')
|
current_asmid = self.data_from_view('asm_id')
|
||||||
self.set_current_asm_id(current_asmid)
|
if current_asmid != '':
|
||||||
|
self.set_current_asm_id(current_asmid)
|
||||||
elif key == 'cb_ladelokal_asm':
|
elif key == 'cb_ladelokal_asm':
|
||||||
|
# hole dir nur die lokalen Daten. Keine Datenbankabfrage außer Blacklist
|
||||||
|
update_database.get_blacklist(self.get_env("data"))
|
||||||
current_asmid = self.data_from_view('asm_id')
|
current_asmid = self.data_from_view('asm_id')
|
||||||
# hole dir nur die lokalen Daten. Keine Datenbankabfrage
|
if current_asmid != '':
|
||||||
self.set_current_asm_id(current_asmid, load_local_bom=True, load_local_teilestamm=True, load_local_rd_ids=True)
|
self.set_current_asm_id(current_asmid, load_local_bom=True, load_local_teilestamm=True, load_local_rd_ids=True)
|
||||||
elif key == 'cb_3dsuchen':
|
elif key == 'cb_3dsuchen':
|
||||||
self.suche_3d()
|
self.suche_3d()
|
||||||
|
|
||||||
@@ -318,6 +324,7 @@ class Controller(Observer):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Pruefung ob assembly-id in Blacklist fehlt
|
# Pruefung ob assembly-id in Blacklist fehlt
|
||||||
|
update_database.get_blacklist(self.get_env("data"))
|
||||||
(ok, missing_blacklist_id) = self._model.check_blacklist_completeness()
|
(ok, missing_blacklist_id) = self._model.check_blacklist_completeness()
|
||||||
if ok == False:
|
if ok == False:
|
||||||
id = ''.join(missing_blacklist_id)
|
id = ''.join(missing_blacklist_id)
|
||||||
|
|||||||
+1
-3
@@ -595,10 +595,8 @@ class RightFrameBezeichnung(AllFrames):
|
|||||||
def trace_bezeichnung_neu(self, var, index, mode):
|
def trace_bezeichnung_neu(self, var, index, mode):
|
||||||
""" Spezial: Bei zu langem Eintrag die Farbe des Textes auffällig machen """
|
""" Spezial: Bei zu langem Eintrag die Farbe des Textes auffällig machen """
|
||||||
text = self.bezeichnung1_neu.get()
|
text = self.bezeichnung1_neu.get()
|
||||||
if len(text) < 45:
|
if len(text) < 51:
|
||||||
self.bezeichnung1_neu_entry.configure(foreground='black')
|
self.bezeichnung1_neu_entry.configure(foreground='black')
|
||||||
elif len(text) < 51:
|
|
||||||
self.bezeichnung1_neu_entry.configure(foreground='orange')
|
|
||||||
else:
|
else:
|
||||||
self.bezeichnung1_neu_entry.configure(foreground='red')
|
self.bezeichnung1_neu_entry.configure(foreground='red')
|
||||||
|
|
||||||
|
|||||||
@@ -806,7 +806,6 @@ class Configs:
|
|||||||
self.Materialien = MaterialTransConfig(cfg_dir)
|
self.Materialien = MaterialTransConfig(cfg_dir)
|
||||||
self.bom_config = BOMConfig(cfg_dir)
|
self.bom_config = BOMConfig(cfg_dir)
|
||||||
self._teilenummern = None
|
self._teilenummern = None
|
||||||
self._blacklist = None
|
|
||||||
|
|
||||||
def get_cfg_path(self):
|
def get_cfg_path(self):
|
||||||
return self._cfg_dir
|
return self._cfg_dir
|
||||||
@@ -826,8 +825,7 @@ class Configs:
|
|||||||
def get_blacklist(self):
|
def get_blacklist(self):
|
||||||
if not self._data_dir:
|
if not self._data_dir:
|
||||||
raise Exception("set_data_dir not called. path not set")
|
raise Exception("set_data_dir not called. path not set")
|
||||||
if not self._blacklist:
|
with open(os.path.join(self._data_dir, 'blacklist.txt')) as f:
|
||||||
with open(os.path.join(self._data_dir, 'blacklist.txt')) as f:
|
lines = f.read().splitlines()
|
||||||
lines = f.read().splitlines()
|
self._blacklist = lines
|
||||||
self._blacklist = lines
|
|
||||||
return self._blacklist
|
return self._blacklist
|
||||||
|
|||||||
Reference in New Issue
Block a user