diff --git a/lib/caditem.py b/lib/caditem.py index 42197df..d5995fd 100644 --- a/lib/caditem.py +++ b/lib/caditem.py @@ -86,7 +86,7 @@ class CadItem(DataModel): "ersatzfuer_sivas", "ersatzfuer_neu", "ersetztdurch_sivas", "ersetztdurch_neu", "herstteilenr_sivas", "herstteilenr_neu", - "werkstoffdiskr_sivas", + "werkstoffdiskr_neu", "werkstofftyp_sivas", "werkstofftyp_neu", "material_sivas", "material_neu", "oberflaeche_neu", @@ -185,7 +185,6 @@ class CadItem(DataModel): self._read_only_items = {} if self._logic: self._logic.clear_states() - self._logic.clear_configurations() def add_logic(self, logic): self._logic = logic @@ -284,6 +283,10 @@ class CadItem(DataModel): def _transform_content_from_csv(self, translated_data, author=None): """"baut die Texte aus der csv Datei nach dem Einladen um""" + # default setzen + if 'datenbank' not in translated_data: + translated_data["datenbank"] = 'Produktiv' + # Änderungstext sollte Author enthalten wenn einer gegeben ist if 'aenderungstext_sivas' in translated_data: text= translated_data["aenderungstext_sivas"] @@ -494,17 +497,20 @@ class CadItem(DataModel): return self._controller.message_error(title, key) def check(self): - self.check_pflichtfelder() + res = self.check_pflichtfelder() + if len(res) > 0: + return (False, res) + else: + return (True, []) - def check_key_existence(self, key, missing): + def check_key_existence(self, mess, key, missing): if not self.get_gui_data(key): - missing.append(key) + missing.append(mess) - def check_key_both_columns(self, key_sivas, key_neu, missing): + def check_key_both_columns(self, mess, key_sivas, key_neu, missing): if not self.get_gui_data(key_sivas): if not self.get_gui_data(key_neu): - missing.append(key_sivas) - missing.append(key_neu) + missing.append(mess) def check_pflichtfelder(self): """Allgemeine Prüfungen: @@ -513,65 +519,66 @@ class CadItem(DataModel): missing = list() # Teilenummer - self.check_key_existence("teilenummer", missing) + self.check_key_existence( 'Teilenummer', "teilenummer", missing) # Datenbank - self.check_key_existence("datenbank", missing) + self.check_key_existence("Datenbank", "datenbank", missing) # PDM-Kategorie - self.check_key_existence("pdm_kategorie_neu", missing) + self.check_key_existence("PDM-Kategorie", "pdm_kategorie_neu", missing) # Halbzeugfarbe hblzeug_oberfläche = self.get_gui_data("oberflaeche_neu") if hblzeug_oberfläche == "eloxieren" or hblzeug_oberfläche == "lackieren" or hblzeug_oberfläche == "pulverbeschichten": if not self.get_gui_data("halbzeugfarbe_neu"): - missing.append("halbzeugfarbe_neu") + missing.append("Halbzeugfarbe") # Lebenszyklusstatus - self.check_key_existence("lebenszyklus_status_neu", missing) + self.check_key_existence("Lebenszyklusstatus", "lebenszyklus_status_neu", missing) # 3D-Modell - self.check_key_existence("model3d_neu", missing) + self.check_key_existence("3D-Model", "model3d_neu", missing) # Bezeichnung 1 - self.check_key_both_columns("bezeichnung1_sivas", "bezeichnung1_neu", missing) + self.check_key_both_columns("Bezeichnung 1", "bezeichnung1_sivas", "bezeichnung1_neu", missing) # Halbzeug ohne Sägeliste - self.check_key_both_columns("halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu", missing) + self.check_key_both_columns("Halbzeug ohne Sägeliste", "halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu", missing) # Rüstcode - self.check_key_both_columns("ruestcode_sivas", "ruestcode_neu", missing) + self.check_key_both_columns("Rüstcode", "ruestcode_sivas", "ruestcode_neu", missing) pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu") # Fertigungsart if pdm_kategorie_neu == "Einzelteil" or pdm_kategorie_neu == "Schweissbaugruppe": - self.check_key_existence("fertigungsart_neu", missing) + self.check_key_both_columns("Fertigungsart", "fertigungsart_sivas", "fertigungsart_neu", missing) + # Allgemeintoleranz - self.check_key_both_columns("allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing) + self.check_key_both_columns("Allgemeintoleranz", "allgemeintoleranz_sivas", "allgemeintoleranz_neu", missing) # FOS-Gruppe - self.check_key_both_columns("fosGruppe_sivas", "fosGruppe_neu", missing) + self.check_key_both_columns("FOS-Gruppe", "fosGruppe_sivas", "fosGruppe_neu", missing) # Kalkulationsart - self.check_key_both_columns("kalkulationsart_sivas", "kalkulationsart_neu", missing) + self.check_key_both_columns("Kalkulationsart", "kalkulationsart_sivas", "kalkulationsart_neu", missing) # Beschaffungsart - self.check_key_both_columns("beschaffungsart_sivas", "beschaffungsart_neu", missing) + self.check_key_both_columns("Beschaffungsart", "beschaffungsart_sivas", "beschaffungsart_neu", missing) # Mengeneinheit - self.check_key_both_columns("mengeneinheit_sivas", "mengeneinheit_neu", missing) + self.check_key_both_columns("Mengeneinheit", "mengeneinheit_sivas", "mengeneinheit_neu", missing) # Halbzeug - self.check_key_both_columns("halbzeug_sivas", "halbzeug_neu", missing) + self.check_key_both_columns("Halbzeug", "halbzeug_sivas", "halbzeug_neu", missing) # TOS-Gruppe - self.check_key_both_columns("tosgruppe_sivas", "tosgruppe_neu", missing) + self.check_key_both_columns("Tosgruppe", "tosgruppe_sivas", "tosgruppe_neu", missing) # Dispogruppe - self.check_key_both_columns("dispogruppe_sivas", "dispogruppe_neu", missing) + self.check_key_both_columns("Dispogruppe", "dispogruppe_sivas", "dispogruppe_neu", missing) # Dispolaufgruppe - self.check_key_both_columns("dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing) + self.check_key_both_columns("Dispolaufgruppe", "dispolaufgruppe_sivas", "dispolaufgruppe_neu", missing) # Werkstofftyp aus_halbzeug = self.get_gui_data("aus_halbzeug_neu") if aus_halbzeug is False: - self.check_key_both_columns("werkstofftyp_sivas", "werkstofftyp_neu", missing) + self.check_key_both_columns("Werkstofftyp", "werkstofftyp_sivas", "werkstofftyp_neu", missing) # Änderungstext - self.check_key_both_columns("aenderungstext_sivas", "aenderungstext_neu", missing) + self.check_key_both_columns("Änderungstext", "aenderungstext_sivas", "aenderungstext_neu", missing) # Freigabevermerk - self.check_key_both_columns("freigabevermerk_sivas", "freigabevermerk_neu", missing) + self.check_key_both_columns("Freigabevermerk", "freigabevermerk_sivas", "freigabevermerk_neu", missing) # Automatische Zusatzinformationen - self.check_key_existence("zusatzinfos_auto_text", missing) + self.check_key_existence("Automatische Zusatzinformationen", "zusatzinfos_auto_text", missing) return missing class CadItemRepository: @@ -1064,7 +1071,6 @@ class GuiLogic(): def cb_fertigungsart_neu(self, selected): ret = dict() pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu") - fertigungsart_sivas = self._model.get_gui_data("fertigungsart_sivas") if pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe": self.set_state('cb_fertigungsart_neu', 'disabled') @@ -1082,13 +1088,7 @@ class GuiLogic(): ret['cb_fertigungsart_neu'] = '' if selected is None: - # Default Vorbelegung - default = '' - if fertigungsart_sivas == '' or fertigungsart_sivas != "SW - schweißen": - default = "SW - schweißen" - else: - default = "" - ret['fertigungsart_neu'] = default + ret['fertigungsart_neu'] = '' else: ret['fertigungsart_neu'] = selected return ret @@ -1105,7 +1105,9 @@ class GuiLogic(): elif pdm_kategorie_neu == "Kaufteil" or pdm_kategorie_neu == "Schweissbaugruppe": cblist = None if pdm_kategorie_neu == "Einzelteil": - if fertigungsart == "3D - 3D drucken": + if fertigungsart == "3D - 3D-drucken": + section = "Allgemeintoleranz3DDruck" + elif fertigungsart == "3D - 3D drucken": section = "Allgemeintoleranz3DDruck" elif fertigungsart == "BI - biegen": section = "AllgemeintoleranzSpanen" @@ -1131,9 +1133,14 @@ class GuiLogic(): section = "AllgemeintoleranzStanzen" elif fertigungsart == "SW - schweißen": section = "AllgemeintoleranzSchweissen" + elif fertigungsart == "": + section = None else: raise Exception("no such fertigungsart "+ fertigungsart) - cblist = self._config.Fertigung.get_list_in_section(section) + if section: + cblist = self._config.Fertigung.get_list_in_section(section) + else: + cblist = None else: cblist = None ret['cb_allgemeintoleranz_neu'] = cblist @@ -1147,6 +1154,8 @@ class GuiLogic(): else: if fertigungsart == "3D - 3D-drucken": default = "ISO 2768:1991-mK" + elif fertigungsart == "3D - 3D drucken": + default = "ISO 2768:1991-mK" elif fertigungsart == "BI - biegen": default = "ISO 2768:1991-mK" elif fertigungsart == "DR - drehen": @@ -1172,6 +1181,8 @@ class GuiLogic(): elif fertigungsart == "SW - schweißen": # TODO default = "" + elif fertigungsart == "": + default = "" else: raise Exception("no such fertigungsart "+ fertigungsart) ret['allgemeintoleranz_neu'] = default @@ -1680,7 +1691,7 @@ class GuiLogic(): truemmer = self._model.get_gui_data("truemmer") ruestcode = self._model.get_gui_data("ruestcode_sivas") teilenummer = str(self._model.get_gui_data("teilenummer")) - werkstoffdiskr_sivas = self._model.get_gui_data("werkstoffdiskr_sivas") + werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu") if selected is None: text = '' @@ -1692,14 +1703,15 @@ class GuiLogic(): text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeTruemmerBlacklist') elif teilenummer in blacklist: text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeBlacklist') - elif werkstoffdiskr_sivas == True: + elif werkstoffdiskr_neu == True: text = self._config.Zusatz.get('ComboTextblöcke', 'KleinbuchstabeWerkstoffdiskrepanz') else: text = self._config.Zusatz.get('EinzelTextblöcke', 'Kleinbuchstabe') + text = text.format(aenderungsindex=aenderungsindex_sivas) elif truemmer == 'J' or ruestcode == '': if teilenummer in blacklist: text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerBlacklist') - elif werkstoffdiskr_sivas == True: + elif werkstoffdiskr_neu == True: text = self._config.Zusatz.get('ComboTextblöcke', 'TruemmerWerkstoffdiskrepanz') else: text = self._config.Zusatz.get('EinzelTextblöcke', 'Truemmer') diff --git a/lib/controller.py b/lib/controller.py index cbb1a6f..15fa398 100644 --- a/lib/controller.py +++ b/lib/controller.py @@ -32,6 +32,7 @@ messages = { "werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!', "color_not_defined":'Teilenummer kann nicht ohne festgelegte Farbe migriert werden!', "aenderungstext_too_long":'Änderungstext_weist zu viele Zeichen auf. Bitte auf 400 Zeichen verkürzen!', + "missing_data":'Fehlende Angaben in der Oberfläche: {Labels}', } @@ -207,8 +208,15 @@ class Controller(Observer): def message_info(self, title, key, questions='ok'): return messagebox.showinfo(title, messages[key]) - def message_error(self, title, key): - return messagebox.showerror(title, messages[key]) + def message_error(self, title, key, values): + text = messages[key] + if 'Labels' in values: + text = text.format(Labels=values['Labels']) + if 'Zeichentyp' in values: + text = text.format(Zeichentyp=values['Zeichentyp']) + if 'Feldname' in values: + text = text.format(Feldname=values['Feldname']) + return messagebox.showerror(title, text) def callback(self, key, value): if not self._model: @@ -248,7 +256,10 @@ class Controller(Observer): self.refresh_gui() def migrieren(self): - self._model.check() + (ok, missing) = self._model.check() + if ok == False: + labels = ', '.join(missing) + self.message_error('Fehlende Angaben', 'missing_data', {'Labels':labels}) def zuruecksetzen(self): data = dict() diff --git a/lib/manage_configs.py b/lib/manage_configs.py index c33611d..94d3086 100644 --- a/lib/manage_configs.py +++ b/lib/manage_configs.py @@ -447,6 +447,11 @@ class ZusatzConfig(IniBasedConfig): def __init__(self, config_dir='.', config_file='Zusatzinformationen.cfg'): super().__init__(config_dir, config_file) +class ERPConfig(IniBasedConfig): + """Auslesen der Zusatzinformationen die aus dem Änderungsindex abgeleitet werden""" + def __init__(self, config_dir='.', config_file='ERP_Item.ini'): + super().__init__(config_dir, config_file) + class Configs: """Sammlung aller Configdateien """ def __init__(self, cfg_dir): @@ -461,6 +466,7 @@ class Configs: self.Pfade = PfadConfig(cfg_dir) self.Werkstoffe = WerkstoffeConfig(cfg_dir) self.Zusatz = ZusatzConfig(cfg_dir) + self.ERP = ERPConfig(cfg_dir) self.TOSGruppen = TOSGroupsConfig(cfg_dir) self.Materialien = MaterialTransConfig(cfg_dir)