Reihenfolge der Spalten angepasst (Bezeichner ganz ans Ende); Abfage für fehlende ArtNr bzw fehlenden Bezeichner zu BOM by UV hinzugefügt; Spaltenbreiten angepasst

This commit is contained in:
2025-06-25 11:54:45 +02:00
parent 4626984ede
commit a74b774ad2
+47 -26
View File
@@ -432,42 +432,58 @@ def write_excel_from_json(plines:Polylines, sens2cable: dict, outpath:str, with_
wb2 = Workbook() wb2 = Workbook()
ws1 = wb2.active ws1 = wb2.active
ws1.title = "BOM" ws1.title = "BOM"
ws1.append(["Art.-Number", "Name (SIVAS)", "Amount (pcs)", "Length (m)"]) ws1.append(["Art.-Number", "Amount (pcs)", "Length (m)", "Name (SIVAS)"])
ws1.column_dimensions['A'].width = 15
ws1.column_dimensions['B'].width = 12
ws1.column_dimensions['C'].width = 10
ws1.column_dimensions['D'].width = 50
# Sensoren separat auflisten # Sensoren separat auflisten
for artnr in sorted(sensor_summary.keys()): for artnr in sorted(sensor_summary.keys()):
name = bezeichner_cfg["Sivasnummern"].get(artnr, "")
count = sensor_summary[artnr]
if artnr == "": if artnr == "":
name = "Keine Artikelnummer vergeben. Layout prüfen." name = "Keine Artikelnummer vergeben. Layout prüfen."
elif name == "": else:
name = f"Kein Eintrag zu Art.-Nr: {artnr} in bezeichner.cfg." name = bezeichner_cfg["Sivasnummern"].get(artnr, "")
if name == "":
name = f"Kein Eintrag zu Art.-Nr: {artnr} in bezeichner.cfg."
count = sensor_summary[artnr]
ws1.append([ ws1.append([
artnr, artnr,
name,
count, count,
"" # Sensoren haben keine Länge "", # Sensoren haben keine Länge
name
]) ])
# Kabel separat auflisten # Kabel separat auflisten
for artnr in sorted(set(count_summary.keys()) | set(length_summary.keys())): for artnr in sorted(set(count_summary.keys()) | set(length_summary.keys())):
name = bezeichner_cfg["Sivasnummern"].get(artnr, "")
count = count_summary.get(artnr, "")
length = length_summary.get(artnr, "")
if artnr == "": if artnr == "":
name = "Keine Artikelnummer vergeben. Layout prüfen." name = "Keine Artikelnummer vergeben. Layout prüfen."
elif name == "": else:
name = f"Kein Eintrag zu Art.-Nr: {artnr} in bezeichner.cfg." name = bezeichner_cfg["Sivasnummern"].get(artnr, "")
if name == "":
name = f"Kein Eintrag zu Art.-Nr: {artnr} in bezeichner.cfg."
count = count_summary.get(artnr, "")
length = length_summary.get(artnr, "")
ws1.append([ ws1.append([
artnr, artnr,
name,
count, count,
length length,
name
]) ])
# Neues Sheet für UV-spezifische Übersicht # Neues Sheet für UV-spezifische Übersicht
ws_uv = wb2.create_sheet("BOM by UV") ws2 = wb2.create_sheet("BOM by UV")
ws_uv.append(["UV", "Art.-Number", "Name (SIVAS)", "Amount (pcs)", "Length (m)"]) ws2.append(["UV", "Art.-Number", "Amount (pcs)", "Length (m)", "Name (SIVAS)"])
ws2.column_dimensions['A'].width = 15
ws2.column_dimensions['B'].width = 15
ws2.column_dimensions['C'].width = 12
ws2.column_dimensions['D'].width = 10
ws2.column_dimensions['E'].width = 50
all_uvs = set(uv_sensor_count.keys()) | set(uv_artnr_count.keys()) | set(uv_artnr_length.keys()) all_uvs = set(uv_sensor_count.keys()) | set(uv_artnr_count.keys()) | set(uv_artnr_length.keys())
@@ -478,39 +494,44 @@ def write_excel_from_json(plines:Polylines, sens2cable: dict, outpath:str, with_
all_artnrs.update(uv_artnr_length.get(uv, {}).keys()) all_artnrs.update(uv_artnr_length.get(uv, {}).keys())
for artnr in sorted(all_artnrs): for artnr in sorted(all_artnrs):
if artnr == "":
name = "Keine Artikelnummer vergeben. Layout prüfen."
else:
name = bezeichner_cfg["Sivasnummern"].get(artnr, "")
if name == "":
name = f"Kein Eintrag zu Art.-Nr: {artnr} in bezeichner.cfg."
sensor_amount = uv_sensor_count.get(uv, {}).get(artnr, 0) sensor_amount = uv_sensor_count.get(uv, {}).get(artnr, 0)
cable_count = uv_artnr_count.get(uv, {}).get(artnr, 0) cable_count = uv_artnr_count.get(uv, {}).get(artnr, 0)
cable_length = uv_artnr_length.get(uv, {}).get(artnr, 0) cable_length = uv_artnr_length.get(uv, {}).get(artnr, 0)
name = bezeichner_cfg["Sivasnummern"].get(artnr, "")
# Sensoren separat eintragen (Anzahl) # Sensoren separat eintragen (Anzahl)
if sensor_amount > 0: if sensor_amount > 0:
ws_uv.append([ ws2.append([
uv, uv,
artnr, artnr,
name,
sensor_amount, sensor_amount,
"" "",
name
]) ])
# a) Nur Anzahl, wenn kein "MA" im Namen # a) Nur Anzahl, wenn kein "MA" im Namen
if cable_count > 0 and cable_length == 0: if cable_count > 0 and cable_length == 0:
ws_uv.append([ ws2.append([
uv, uv,
artnr, artnr,
name,
cable_count, cable_count,
"" "",
name
]) ])
# b) Nur Länge, wenn Kabel mit "MA" (Meterware) # b) Nur Länge, wenn Kabel mit "MA" (Meterware)
if cable_length > 0: if cable_length > 0:
ws_uv.append([ ws2.append([
uv, uv,
artnr, artnr,
name,
"", "",
cable_length cable_length,
name
]) ])
bom_path = outpath.replace("_cables.xlsx", "_BOM.xlsx") bom_path = outpath.replace("_cables.xlsx", "_BOM.xlsx")