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:
Michael Stangl
2026-09-14 14:55:30 +02:00
parent 1590f8f7ed
commit c5ae0bd769
+29 -17
View File
@@ -731,25 +731,37 @@ def process_blocks(blocks, lookup):
# Geruest-Baugruppen (GR_<id>_<timestamp>) - je Block eine eigene Zeile
# (siehe Kommentar bei geruest_list oben). Sivasnr kommt direkt aus dem
# ARTINR-Attribut - kann bereits mehrere, kommagetrennte Sivas-IDs
# enthalten (Baugruppe aus mehreren Einzelteilen, siehe ssg-join in
# GeruestInsert.lsp), anders als bei den uebrigen Teilearten also KEIN
# fester Eintrag aus ILS_SIVASNR.
# ARTINR-Attribut - kann mehrere, kommagetrennte Sivas-IDs enthalten
# (Baugruppe aus mehreren Einzelteilen, siehe ssg-join in
# GeruestInsert.lsp) und dieselbe ID mehrfach (menge>1 je Einzelteil).
# 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:
attribs = block.get("attribs", {})
items.append({
"nr": nr,
"teileart": attribs.get("TEILEART", "Geruest"),
"sivasnr": attribs.get("ARTINR", ""),
"sivasnr_quoted": True,
"bezeichnung": attribs.get("BEZEICHNUNG", ""),
"dispgruppe": 20,
"anzahl": 1,
"laenge_mm": attribs.get("LAENGE", ""),
"ids": [get_id(block)],
"details": build_geruest_details(block),
})
nr += 1
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({
"nr": nr,
"teileart": attribs.get("TEILEART", "Geruest"),
"sivasnr": artinr,
"sivasnr_quoted": True,
"bezeichnung": attribs.get("BEZEICHNUNG", ""),
"dispgruppe": 20,
"anzahl": anzahl,
"laenge_mm": attribs.get("LAENGE", ""),
"ids": [get_id(block)],
"details": build_geruest_details(block),
})
nr += 1
# VarioFoerderer-Compound-Bloecke (VF_N) - je Block eine eigene Zeile mit
# vollstaendigen Gefaelle-/Angetrieben-Teilgruppen (immer TYP "Streckengruppe").