From c073561e18a66e0edee2beec193cf7633ea8f389 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 12 May 2025 19:03:26 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 551ac9f8..69c7883e 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -4750,29 +4750,40 @@ class DataProcessor: final_umsatz_str_konsolidiert = "k.A." # Default final_ma_str_konsolidiert = "k.A." # Default try: - # ... (Ihre Konsolidierungslogik, die final_umsatz_str_konsolidiert und final_ma_str_konsolidiert setzt) crm_umsatz_val = self._get_cell_value_safe(row_data, "CRM Umsatz") wiki_umsatz_val = final_wiki_data.get('umsatz', 'k.A.') crm_ma_val = self._get_cell_value_safe(row_data, "CRM Anzahl Mitarbeiter") wiki_ma_val = final_wiki_data.get('mitarbeiter', 'k.A.') - num_crm_umsatz = get_numeric_filter_value(crm_umsatz_val, is_umsatz=True) # Globale Funktion - num_wiki_umsatz = get_numeric_filter_value(wiki_umsatz_val, is_umsatz=True) # Globale Funktion - num_crm_ma = get_numeric_filter_value(crm_ma_val, is_umsatz=False) # Globale Funktion - num_wiki_ma = get_numeric_filter_value(wiki_ma_val, is_umsatz=False) # Globale Funktion + + # get_numeric_filter_value gibt 0.0 oder 0 zurück, wenn der Input nicht positiv numerisch ist oder leer/k.A. + num_crm_umsatz = get_numeric_filter_value(crm_umsatz_val, is_umsatz=True) + num_wiki_umsatz = get_numeric_filter_value(wiki_umsatz_val, is_umsatz=True) + num_crm_ma = get_numeric_filter_value(crm_ma_val, is_umsatz=False) + num_wiki_ma = get_numeric_filter_value(wiki_ma_val, is_umsatz=False) + + # Logge die numerischen Werte VOR der Konsolidierung + self.logger.debug(f" Konsolidierung Input: num_crm_umsatz={num_crm_umsatz}, num_wiki_umsatz={num_wiki_umsatz}, num_crm_ma={num_crm_ma}, num_wiki_ma={num_wiki_ma}") + + # Konsolidierung: Wiki > CRM. Wenn Wiki keinen positiven Wert hat, nimm CRM. + # Wenn beide keinen positiven Wert haben, bleibt es bei 0. final_num_umsatz = num_wiki_umsatz if num_wiki_umsatz > 0 else num_crm_umsatz final_num_ma = num_wiki_ma if num_wiki_ma > 0 else num_crm_ma + + # String-Konvertierung: "0" bedeutet "unbekannt" -> "k.A." + # Nur echt positive Werte werden als Zahl geschrieben. final_umsatz_str_konsolidiert = str(int(round(final_num_umsatz))) if final_num_umsatz > 0 else 'k.A.' final_ma_str_konsolidiert = str(int(round(final_num_ma))) if final_num_ma > 0 else 'k.A.' updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Umsatz (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [[final_umsatz_str_konsolidiert]]}) updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Mitarbeiter (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [[final_ma_str_konsolidiert]]}) - self.logger.debug(f" -> Konsolidiert: Umsatz={final_umsatz_str_konsolidiert}, MA={final_ma_str_konsolidiert}") + # Das Log hier sollte jetzt die String-Werte ausgeben, die auch geschrieben werden: + self.logger.debug(f" -> Konsolidiert (Sheet-Werte): Umsatz='{final_umsatz_str_konsolidiert}', MA='{final_ma_str_konsolidiert}'") except Exception as e_consolidate: self.logger.error(f"FEHLER bei Konsolidierung Umsatz/Mitarbeiter fuer Zeile {row_num_in_sheet}: {e_consolidate}") updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Umsatz (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER KONSO']]}) updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Finaler Mitarbeiter (Wiki>CRM)"] + 1)}{row_num_in_sheet}', 'values': [['FEHLER KONSO']]}) - final_umsatz_str_konsolidiert = "FEHLER KONSO" # Wichtig für Plausi-Check - final_ma_str_konsolidiert = "FEHLER KONSO" # Wichtig für Plausi-Check + final_umsatz_str_konsolidiert = "FEHLER KONSO" + final_ma_str_konsolidiert = "FEHLER KONSO" # --- NEU: 3f. Plausibilitäts-Checks durchführen (BB-BG) --- self.logger.debug(f" -> Führe Plausibilitäts-Checks für Zeile {row_num_in_sheet} durch...")