fix: Geruest-Sivas-Export erzeugt eine Zeile je Artikelnummer statt Sammelzeile

Sivas kennt nur eine Sivasnr je Zeile - ARTINR (kommagetrennte Liste) wird
daher aufgesplittet. Gleiche Artikelnummern innerhalb derselben Baugruppe
werden zu einer Zeile mit Anzahl>1 zusammengefasst (wie bei Boegen/Weichen).
Jede resultierende Zeile traegt die volle LAENGE der Baugruppe.
This commit is contained in:
2026-09-14 14:55:30 +02:00
parent 1590f8f7ed
commit c5ae0bd769
+18 -6
View File
@@ -731,20 +731,32 @@ def process_blocks(blocks, lookup):
# Geruest-Baugruppen (GR_<id>_<timestamp>) - je Block eine eigene Zeile # Geruest-Baugruppen (GR_<id>_<timestamp>) - je Block eine eigene Zeile
# (siehe Kommentar bei geruest_list oben). Sivasnr kommt direkt aus dem # (siehe Kommentar bei geruest_list oben). Sivasnr kommt direkt aus dem
# ARTINR-Attribut - kann bereits mehrere, kommagetrennte Sivas-IDs # ARTINR-Attribut - kann mehrere, kommagetrennte Sivas-IDs enthalten
# enthalten (Baugruppe aus mehreren Einzelteilen, siehe ssg-join in # (Baugruppe aus mehreren Einzelteilen, siehe ssg-join in
# GeruestInsert.lsp), anders als bei den uebrigen Teilearten also KEIN # GeruestInsert.lsp) und dieselbe ID mehrfach (menge>1 je Einzelteil).
# fester Eintrag aus ILS_SIVASNR. # Anders als bei den uebrigen Teilearten also KEIN fester Eintrag aus
# ILS_SIVASNR - JEDE Artikelnummer bekommt ihre EIGENE Sivas-Zeile (Sivas
# kennt nur eine Sivasnr je Zeile), gleiche Artikelnummern INNERHALB
# derselben Baugruppe werden dabei zu einer Zeile mit anzahl>1
# zusammengefasst (wie bogen_groups/weiche_groups oben). Die volle
# LAENGE der Baugruppe steht auf JEDER so entstandenen Zeile - Sivas hat
# kein Konzept einer "gemeinsamen" Laenge ueber mehrere Zeilen hinweg.
for block in geruest_list: for block in geruest_list:
attribs = block.get("attribs", {}) attribs = block.get("attribs", {})
artinr_list = [a.strip() for a in attribs.get("ARTINR", "").split(",") if a.strip()]
artinr_groups = {}
for artinr in artinr_list:
artinr_groups.setdefault(artinr, 0)
artinr_groups[artinr] += 1
for artinr, anzahl in artinr_groups.items():
items.append({ items.append({
"nr": nr, "nr": nr,
"teileart": attribs.get("TEILEART", "Geruest"), "teileart": attribs.get("TEILEART", "Geruest"),
"sivasnr": attribs.get("ARTINR", ""), "sivasnr": artinr,
"sivasnr_quoted": True, "sivasnr_quoted": True,
"bezeichnung": attribs.get("BEZEICHNUNG", ""), "bezeichnung": attribs.get("BEZEICHNUNG", ""),
"dispgruppe": 20, "dispgruppe": 20,
"anzahl": 1, "anzahl": anzahl,
"laenge_mm": attribs.get("LAENGE", ""), "laenge_mm": attribs.get("LAENGE", ""),
"ids": [get_id(block)], "ids": [get_id(block)],
"details": build_geruest_details(block), "details": build_geruest_details(block),