Status- und Herstellerinformationen in Readable Assembly-Exports hinzufügen.

This commit is contained in:
Marcel Diegelmann 2026-04-14 11:21:15 +02:00
parent a126a8f7b6
commit 66c905738d
4 changed files with 34 additions and 14 deletions

View file

@ -237,6 +237,7 @@ class AssemblyPartAggregator
$result = [ $result = [
'name' => $assembly->getName(), 'name' => $assembly->getName(),
'ipn' => $assembly->getIpn(), 'ipn' => $assembly->getIpn(),
'status' => $assembly->getStatus() ?? '-',
'quantity' => $quantity, 'quantity' => $quantity,
'multiplier' => $depth === 0 ? null : $parentMultiplier, 'multiplier' => $depth === 0 ? null : $parentMultiplier,
'parts' => [], 'parts' => [],
@ -249,6 +250,7 @@ class AssemblyPartAggregator
$result['parts'][] = [ $result['parts'][] = [
'name' => $bomEntry->getPart()->getName(), 'name' => $bomEntry->getPart()->getName(),
'ipn' => $bomEntry->getPart()->getIpn(), 'ipn' => $bomEntry->getPart()->getIpn(),
'manufacturer' => $bomEntry->getPart()->getManufacturer()?->getName() ?? '-',
'quantity' => $bomEntry->getQuantity(), 'quantity' => $bomEntry->getQuantity(),
'effectiveQuantity' => $bomEntry->getQuantity() * $parentMultiplier, 'effectiveQuantity' => $bomEntry->getQuantity() * $parentMultiplier,
]; ];
@ -262,8 +264,10 @@ class AssemblyPartAggregator
} else { } else {
$result['others'][] = [ $result['others'][] = [
'name' => $bomEntry->getName(), 'name' => $bomEntry->getName(),
'ipn' => '-',
'quantity' => $bomEntry->getQuantity(), 'quantity' => $bomEntry->getQuantity(),
'multiplier' => $parentMultiplier, 'multiplier' => $parentMultiplier,
'effectiveQuantity' => $bomEntry->getQuantity() * $parentMultiplier,
]; ];
} }
} }

View file

@ -431,19 +431,20 @@ class EntityExporter
], ],
Assembly::class => [ Assembly::class => [
'header' => [ 'header' => [
'Id', 'ParentId', 'Type', 'AssemblyIpn', 'AssemblyNameHierarchical', 'AssemblyName', 'Id', 'ParentId', 'Type', 'AssemblyIpn', 'AssemblyStatus', 'AssemblyNameHierarchical', 'AssemblyName',
'AssemblyFullName', 'AssemblyFullName',
//BOM relevant attributes //BOM relevant attributes
'Quantity', 'PartId', 'PartName', 'Ipn', 'Manufacturer', 'Mpn', 'Name', 'Designator', 'Quantity', 'PartId', 'PartName', 'Ipn', 'Manufacturer', 'Mpn', 'Name', 'Designator',
'Description', 'ReferencedAssemblyId', 'ReferencedAssemblyIpn', 'Description', 'ReferencedAssemblyId', 'ReferencedAssemblyIpn', 'ReferencedAssemblyStatus',
'ReferencedAssemblyFullName', 'ReferencedAssemblyFullName',
], ],
'processEntity' => fn($entity, $depth) => [ 'processEntity' => fn(Assembly $entity, $depth) => [
'Id' => $entity->getId(), 'Id' => $entity->getId(),
'ParentId' => $entity->getParent()?->getId() ?? '', 'ParentId' => $entity->getParent()?->getId() ?? '',
'Type' => 'assembly', 'Type' => 'assembly',
'AssemblyIpn' => $entity->getIpn(), 'AssemblyIpn' => $entity->getIpn(),
'AssemblyStatus' => $entity->getStatus() ?? '-',
'AssemblyNameHierarchical' => str_repeat('--', $depth) . ' ' . $entity->getName(), 'AssemblyNameHierarchical' => str_repeat('--', $depth) . ' ' . $entity->getName(),
'AssemblyName' => $entity->getName(), 'AssemblyName' => $entity->getName(),
'AssemblyFullName' => $this->getFullName($entity), 'AssemblyFullName' => $this->getFullName($entity),
@ -460,6 +461,7 @@ class EntityExporter
'Description' => '-', 'Description' => '-',
'ReferencedAssemblyId' => '-', 'ReferencedAssemblyId' => '-',
'ReferencedAssemblyIpn' => '-', 'ReferencedAssemblyIpn' => '-',
'ReferencedAssemblyStatus' => '-',
'ReferencedAssemblyFullName' => '-', 'ReferencedAssemblyFullName' => '-',
], ],
'processBomEntries' => fn($entity, $depth) => $this->processBomEntriesWithAggregatedParts($entity, $depth), 'processBomEntries' => fn($entity, $depth) => $this->processBomEntriesWithAggregatedParts($entity, $depth),
@ -581,6 +583,7 @@ class EntityExporter
'ParentId' => '', 'ParentId' => '',
'Type' => 'assembly_bom_entry', 'Type' => 'assembly_bom_entry',
'AssemblyIpn' => $assembly->getIpn(), 'AssemblyIpn' => $assembly->getIpn(),
'AssemblyStatus' => $bomEntry->getReferencedAssembly() ? $assembly->getStatus() : '-',
'AssemblyNameHierarchical' => str_repeat('--', $depth) . '> ' . $assembly->getName(), 'AssemblyNameHierarchical' => str_repeat('--', $depth) . '> ' . $assembly->getName(),
'AssemblyName' => $assembly->getName(), 'AssemblyName' => $assembly->getName(),
'AssemblyFullName' => $this->getFullName($assembly), 'AssemblyFullName' => $this->getFullName($assembly),
@ -597,6 +600,7 @@ class EntityExporter
'Description' => $bomEntry->getPart()?->getDescription() ?? '-', 'Description' => $bomEntry->getPart()?->getDescription() ?? '-',
'ReferencedAssemblyId' => $bomEntry->getReferencedAssembly()?->getId() ?? '-', 'ReferencedAssemblyId' => $bomEntry->getReferencedAssembly()?->getId() ?? '-',
'ReferencedAssemblyIpn' => $bomEntry->getReferencedAssembly()?->getIpn() ?? '-', 'ReferencedAssemblyIpn' => $bomEntry->getReferencedAssembly()?->getIpn() ?? '-',
'ReferencedAssemblyStatus' => $bomEntry->getReferencedAssembly()?->getStatus() ?? '-',
'ReferencedAssemblyFullName' => $this->getFullName($bomEntry->getReferencedAssembly() ?? null), 'ReferencedAssemblyFullName' => $this->getFullName($bomEntry->getReferencedAssembly() ?? null),
]; ];
@ -615,6 +619,7 @@ class EntityExporter
'ParentId' => '', 'ParentId' => '',
'Type' => 'subassembly_part_list', 'Type' => 'subassembly_part_list',
'AssemblyIpn' => $partAssembly ? $partAssembly->getIpn() : '', 'AssemblyIpn' => $partAssembly ? $partAssembly->getIpn() : '',
'AssemblyStatus' => $partAssembly ? $partAssembly->getStatus() : '-',
'AssemblyNameHierarchical' => '', 'AssemblyNameHierarchical' => '',
'AssemblyName' => $partAssembly ? $partAssembly->getName() : '', 'AssemblyName' => $partAssembly ? $partAssembly->getName() : '',
'AssemblyFullName' => $this->getFullName($partAssembly), 'AssemblyFullName' => $this->getFullName($partAssembly),
@ -624,13 +629,14 @@ class EntityExporter
'PartId' => $partData['part']?->getId(), 'PartId' => $partData['part']?->getId(),
'PartName' => $partData['part']?->getName(), 'PartName' => $partData['part']?->getName(),
'Ipn' => $partData['part']?->getIpn(), 'Ipn' => $partData['part']?->getIpn(),
'Manufacturer' => $partData['part']?->getManufacturer()?->getName(), 'Manufacturer' => $partData['part']?->getManufacturer()?->getName() ?? '-',
'Mpn' => $partData['part']?->getManufacturerProductNumber(), 'Mpn' => $partData['part']?->getManufacturerProductNumber(),
'Name' => $partData['name'] ?? '', 'Name' => $partData['name'] ?? '',
'Designator' => $partData['designator'], 'Designator' => $partData['designator'],
'Description' => $partData['part']?->getDescription(), 'Description' => $partData['part']?->getDescription(),
'ReferencedAssemblyId' => '-', 'ReferencedAssemblyId' => '-',
'ReferencedAssemblyIpn' => '-', 'ReferencedAssemblyIpn' => '-',
'ReferencedAssemblyStatus' => '-',
'ReferencedAssemblyFullName' => '-', 'ReferencedAssemblyFullName' => '-',
]; ];
} }

View file

@ -27,6 +27,7 @@
<th>#</th> <th>#</th>
<th>Assembly Name</th> <th>Assembly Name</th>
<th>IPN</th> <th>IPN</th>
<th>Status</th>
<th>Section</th> <th>Section</th>
</tr> </tr>
</thead> </thead>
@ -36,6 +37,7 @@
<td>{{ loop.index }}</td> <td>{{ loop.index }}</td>
<td>Assembly: {{ assembly.name }}</td> <td>Assembly: {{ assembly.name }}</td>
<td>{% if assembly.ipn != '' %}{{ assembly.ipn }}{% else %}-{% endif %}</td> <td>{% if assembly.ipn != '' %}{{ assembly.ipn }}{% else %}-{% endif %}</td>
<td>{{ assembly.status|default('-') }}</td>
<td>{{ loop.index + 1 }}</td> <td>{{ loop.index + 1 }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -45,11 +47,12 @@
<!-- Assembly Details --> <!-- Assembly Details -->
{% for assembly in assemblies %} {% for assembly in assemblies %}
<div class="assembly-header">Assembly: {{ assembly.name }}</div> <div class="assembly-header">Assembly: {{ assembly.name }} [IPN: {{ assembly.ipn|default('-') }}, Status: {{ assembly.status|default('-') }}]</div>
<table> <table>
<thead> <thead>
<tr> <tr>
<th>Name</th> <th>Name</th>
<th>Manufacturer</th>
<th>IPN</th> <th>IPN</th>
<th>Quantity</th> <th>Quantity</th>
<th>Multiplier</th> <th>Multiplier</th>
@ -60,6 +63,7 @@
{% for part in assembly.parts %} {% for part in assembly.parts %}
<tr> <tr>
<td>{{ part.name }}</td> <td>{{ part.name }}</td>
<td>{{ part.manufacturer }}</td>
<td>{{ part.ipn }}</td> <td>{{ part.ipn }}</td>
<td>{{ part.quantity }}</td> <td>{{ part.quantity }}</td>
<td>{% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %}</td> <td>{% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %}</td>
@ -69,19 +73,21 @@
{% for other in assembly.others %} {% for other in assembly.others %}
<tr> <tr>
<td>{{ other.name }}</td> <td>{{ other.name }}</td>
<td>{{ other.ipn }}</td> <td>-</td>
<td>{{ other.ipn|default('-') }}</td>
<td>{{ other.quantity }}</td> <td>{{ other.quantity }}</td>
<td>{{ other.multiplier }}</td> <td>{{ other.multiplier }}</td>
<td>{{ other.effectiveQuantity }}</td> <td>{{ other.effectiveQuantity|default('-') }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
{% for referencedAssembly in assembly.referencedAssemblies %} {% for referencedAssembly in assembly.referencedAssemblies %}
<tr> <tr>
<td>{{ referencedAssembly.name }}</td> <td>{{ referencedAssembly.name }}</td>
<td>{{ referencedAssembly.ipn }}</td> <td>-</td>
<td>{{ referencedAssembly.quantity }}</td> <td>{{ referencedAssembly.ipn|default('-') }}</td>
<td></td>
<td>{{ referencedAssembly.quantity }}</td> <td>{{ referencedAssembly.quantity }}</td>
<td>{{ referencedAssembly.multiplier|default('-') }}</td>
<td>{{ (referencedAssembly.quantity * (referencedAssembly.multiplier|default(1)))|default(referencedAssembly.quantity) }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

View file

@ -1,11 +1,12 @@
<div class="referenced-assembly-table"> <div class="referenced-assembly-table">
<div class="assembly-header">Referenced Assembly: {{ assembly.name }} [IPN: {% if assembly.ipn != '' %}{{ assembly.ipn }}{% else %}-{% endif %}, quantity: {{ assembly.quantity }}]</div> <div class="assembly-header">Referenced Assembly: {{ assembly.name }} [IPN: {{ assembly.ipn|default('-') }}, Status: {{ assembly.status|default('-') }}, quantity: {{ assembly.quantity }}]</div>
<table> <table>
<thead> <thead>
<tr> <tr>
<th>Type</th> <th>Type</th>
<th>Name</th> <th>Name</th>
<th>Manufacturer</th>
<th>IPN</th> <th>IPN</th>
<th>Quantity</th> <th>Quantity</th>
<th>Multiplier</th> <th>Multiplier</th>
@ -17,6 +18,7 @@
<tr> <tr>
<td>Part</td> <td>Part</td>
<td>{{ part.name }}</td> <td>{{ part.name }}</td>
<td>{{ part.manufacturer }}</td>
<td>{{ part.ipn }}</td> <td>{{ part.ipn }}</td>
<td>{{ part.quantity }}</td> <td>{{ part.quantity }}</td>
<td>{% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %}</td> <td>{% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %}</td>
@ -29,9 +31,10 @@
<td>Other</td> <td>Other</td>
<td>{{ other.name }}</td> <td>{{ other.name }}</td>
<td>-</td> <td>-</td>
<td>{{ other.ipn|default('-') }}</td>
<td>{{ other.quantity }}</td> <td>{{ other.quantity }}</td>
<td>{{ other.multiplier }}</td> <td>{{ other.multiplier }}</td>
<td>-</td> <td>{{ other.effectiveQuantity|default('-') }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
@ -40,9 +43,10 @@
<td>Referenced assembly</td> <td>Referenced assembly</td>
<td>{{ referencedAssembly.name }}</td> <td>{{ referencedAssembly.name }}</td>
<td>-</td> <td>-</td>
<td>{{ referencedAssembly.ipn|default('-') }}</td>
<td>{{ referencedAssembly.quantity }}</td> <td>{{ referencedAssembly.quantity }}</td>
<td></td> <td>{{ referencedAssembly.multiplier|default('-') }}</td>
<td>{{ referencedAssembly.multiplier }}</td> <td>{{ (referencedAssembly.quantity * (referencedAssembly.multiplier|default(1)))|default(referencedAssembly.quantity) }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>