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

View file

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

View file

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

View file

@ -1,11 +1,12 @@
<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>
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Manufacturer</th>
<th>IPN</th>
<th>Quantity</th>
<th>Multiplier</th>
@ -17,6 +18,7 @@
<tr>
<td>Part</td>
<td>{{ part.name }}</td>
<td>{{ part.manufacturer }}</td>
<td>{{ part.ipn }}</td>
<td>{{ part.quantity }}</td>
<td>{% if assembly.multiplier %}{{ assembly.multiplier }}{% else %}-{% endif %}</td>
@ -29,9 +31,10 @@
<td>Other</td>
<td>{{ other.name }}</td>
<td>-</td>
<td>{{ other.ipn|default('-') }}</td>
<td>{{ other.quantity }}</td>
<td>{{ other.multiplier }}</td>
<td>-</td>
<td>{{ other.effectiveQuantity|default('-') }}</td>
</tr>
{% endfor %}
@ -40,9 +43,10 @@
<td>Referenced assembly</td>
<td>{{ referencedAssembly.name }}</td>
<td>-</td>
<td>{{ referencedAssembly.ipn|default('-') }}</td>
<td>{{ referencedAssembly.quantity }}</td>
<td></td>
<td>{{ referencedAssembly.multiplier }}</td>
<td>{{ referencedAssembly.multiplier|default('-') }}</td>
<td>{{ (referencedAssembly.quantity * (referencedAssembly.multiplier|default(1)))|default(referencedAssembly.quantity) }}</td>
</tr>
{% endfor %}
</tbody>