Logik des Feldes 'Zusatzinformationen automatisch' überarbeitet. Konkret wurde die Erkennung der Fälle überarbeitet, bei denen Zusatzinformationen ausgegeben werden sollen. Es wird nun zunächst geprüft, ob die verschiedenen Einzelfälle, z.B. ob es sich um eine Trümmerbaugruppe handelt, auf die zu migrierende Nummer zutreffen. Ist dies der Fall wird der 'Treffer' gesammelt. Am Ende werden alle Treffer miteinander zu einem String kombiniert. Dieser kombinierte String wird anschließend in der 'Zusatzinformationen.cfg' gesucht. Bei Übereinstimmung wird der zugehörige Text aus der 'Zusatzinformationen.cfg' in das GUI-Textfeld geschrieben. Die Überarbeitung wurde durchgeführt, weil es immer mehr Fälle wurden und es mit der bisherigen Logik unübersichtlich wurde, wo der neue Fall eingefügt werden soll. Zudem entstanden Redundanzen. Die neue Logik sollte deutlich dynamischer, wartbarer und einfacher erweiterbar als die bisherige Variante sein. Es muss jedoch in der Zusatzinformationen.cfg darauf geachtet werden, dass die Optionen korrekt geschrieben werden, da das Programm sonst keine Übereinstimmung finden kann
This commit is contained in:
+45
-31
@@ -242,6 +242,7 @@ class CadItem(DataModel):
|
||||
self._read_only_items = {}
|
||||
self._controller = None
|
||||
self._logic = None
|
||||
self._has_bom = None
|
||||
|
||||
def clear(self):
|
||||
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!")
|
||||
else:
|
||||
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
|
||||
def set_read_only_dict(self, data:dict):
|
||||
@@ -2536,53 +2545,58 @@ class GuiLogic():
|
||||
return ret
|
||||
|
||||
def cb_zusatzinfos_auto_text(self, selected):
|
||||
ret = dict()
|
||||
|
||||
ret = dict()
|
||||
aenderungsindex_sivas = self._model.get_gui_data("aenderungsindex_sivas")
|
||||
truemmer = self._model.get_gui_data("truemmer")
|
||||
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")
|
||||
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:
|
||||
text = ''
|
||||
try:
|
||||
blacklist = self._config.get_blacklist()
|
||||
self._config.get_blacklist()
|
||||
except:
|
||||
self._model.message_error('Blacklist nicht vorhanden', 'blacklist_not_exist')
|
||||
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 truemmer == 'J' or ruestcode is None:
|
||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmer')
|
||||
if teilenummer in blacklist:
|
||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist')
|
||||
elif teilenummer in blacklist:
|
||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist')
|
||||
elif werkstoffdiskr_neu == True:
|
||||
text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz')
|
||||
matches.append("Kleinbuchstabe")
|
||||
if truemmer == 'J' or ruestcode is None:
|
||||
matches.append("Truemmer")
|
||||
if werkstoffdiskr_neu:
|
||||
matches.append("Werkstoffdiskrepanz")
|
||||
if dispoinaktiv:
|
||||
matches.append("Dispoinaktiv")
|
||||
if beistellungen:
|
||||
if aus_halbzeug:
|
||||
matches.append("BlacklistHZ")
|
||||
else:
|
||||
text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe')
|
||||
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
|
||||
matches.append("BlacklistBG")
|
||||
|
||||
# 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
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user