Sortierung des Bundleinhalts aus dem Produkt übernommen. Zu früher umbruch bei Level >1 gefixt

This commit is contained in:
2026-03-19 15:14:08 +01:00
parent 6c3b7a9cd0
commit e2fc2a786e

View File

@@ -402,18 +402,31 @@ $indentMm = max(0, ($lvl - 1) * $INDENT_MM_PER_LVL);
// Name-Spalte: ohne Spacer-Tabelle bei Level 1 (indent=0), sonst mit // Name-Spalte: ohne Spacer-Tabelle bei Level 1 (indent=0), sonst mit
if ($indentMm > 0) { if ($indentMm > 0) {
$nameCellHtml = ' /*$nameCellHtml = '
<table cellspacing="0" cellpadding="0" width="100%"> <table cellspacing="0" cellpadding="0" width="100%">
<tr> <tr>
<td style="width:'.$indentMm.'mm; padding:0; margin:0;"></td> <td style="width:'.$indentMm.'mm; padding:0; margin:0;"></td>
<td style="font-size:'.$textFontPx.'px; line-height:'.$lineHeight.'; padding:0; margin:0;">'.$text.'</td> <td style="font-size:'.$textFontPx.'px; line-height:'.$lineHeight.'; padding:0; margin:0;">'.$text.'</td>
</tr> </tr>
</table>'; </table>';*/
$indentMm = max(0, ($lvl - 1) * $INDENT_MM_PER_LVL);
$indentSpaces = str_repeat('&nbsp;', max(0, ($lvl - 1) * 4));
$nameCellHtml = '
<span style="
font-size:'.$textFontPx.'px;
line-height:'.$lineHeight.';
">'.$indentSpaces.$text.'</span>';
//Ende ersetzter Teil
} else { } else {
// Level 1: direkt rendern // Level 1: direkt rendern
$nameCellHtml = '<span style="font-size:'.$textFontPx.'px; line-height:'.$lineHeight.';">'.$text.'</span>'; $nameCellHtml = '<span style="font-size:'.$textFontPx.'px; line-height:'.$lineHeight.';">'.$text.'</span>';
} }
$bundleRows .= ' $bundleRows .= '
<tr> <tr>
<!-- Anzahl --> <!-- Anzahl -->
@@ -429,7 +442,7 @@ if ($indentMm > 0) {
<!-- Name mit Einrückung --> <!-- Name mit Einrückung -->
<td style=" <td style="
width:68%; width:78%;
vertical-align:middle; vertical-align:middle;
padding:'.$ROW_PAD_V_MM.'mm '.$ROW_PAD_H_MM.'mm;"> padding:'.$ROW_PAD_V_MM.'mm '.$ROW_PAD_H_MM.'mm;">
'.$nameCellHtml.' '.$nameCellHtml.'
@@ -437,7 +450,7 @@ if ($indentMm > 0) {
<!-- Gewicht rechts mit extra Innenabstand --> <!-- Gewicht rechts mit extra Innenabstand -->
<td style=" <td style="
width:20%; width:10%;
text-align:right; text-align:right;
vertical-align:middle; vertical-align:middle;
font-size:'.$weightFontPx.'px; font-size:'.$weightFontPx.'px;
@@ -779,6 +792,12 @@ function addMaterialsRecursive($Epi, array $materials, int $level, array &$bundl
if ($level > $MAX_BUNDLE_LEVEL || empty($materials)) { if ($level > $MAX_BUNDLE_LEVEL || empty($materials)) {
return; return;
} }
// Nach "position" aufsteigend sortieren (pro Level)
usort($materials, function ($a, $b) {
$posA = isset($a->position) ? (int)$a->position : PHP_INT_MAX;
$posB = isset($b->position) ? (int)$b->position : PHP_INT_MAX;
return $posA <=> $posB;
});
foreach ($materials as $mat) { foreach ($materials as $mat) {
$isFree = !empty($mat->is_free_material); $isFree = !empty($mat->is_free_material);