feat(piece) : add quantity to structure normalization, PATCH and clone
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -242,6 +242,7 @@ class MachineStructureController extends AbstractController
|
|||||||
$newLink->setNameOverride($link->getNameOverride());
|
$newLink->setNameOverride($link->getNameOverride());
|
||||||
$newLink->setReferenceOverride($link->getReferenceOverride());
|
$newLink->setReferenceOverride($link->getReferenceOverride());
|
||||||
$newLink->setPrixOverride($link->getPrixOverride());
|
$newLink->setPrixOverride($link->getPrixOverride());
|
||||||
|
$newLink->setQuantity($link->getQuantity());
|
||||||
|
|
||||||
$parent = $link->getParentLink();
|
$parent = $link->getParentLink();
|
||||||
if ($parent && isset($componentLinkMap[$parent->getId()])) {
|
if ($parent && isset($componentLinkMap[$parent->getId()])) {
|
||||||
@@ -395,6 +396,11 @@ class MachineStructureController extends AbstractController
|
|||||||
|
|
||||||
$this->applyOverrides($link, $entry['overrides'] ?? null);
|
$this->applyOverrides($link, $entry['overrides'] ?? null);
|
||||||
|
|
||||||
|
if (!isset($entry['parentComponentLinkId']) && !isset($entry['parentLinkId'])) {
|
||||||
|
$quantity = isset($entry['quantity']) ? (int) $entry['quantity'] : $link->getQuantity();
|
||||||
|
$link->setQuantity(max(1, $quantity));
|
||||||
|
}
|
||||||
|
|
||||||
$pendingParents[$linkId] = $this->resolveIdentifier($entry, [
|
$pendingParents[$linkId] = $this->resolveIdentifier($entry, [
|
||||||
'parentComponentLinkId',
|
'parentComponentLinkId',
|
||||||
'parentLinkId',
|
'parentLinkId',
|
||||||
@@ -636,10 +642,42 @@ class MachineStructureController extends AbstractController
|
|||||||
'parentComponentLinkId' => $parentLink?->getId(),
|
'parentComponentLinkId' => $parentLink?->getId(),
|
||||||
'parentComponentId' => $parentLink?->getComposant()->getId(),
|
'parentComponentId' => $parentLink?->getComposant()->getId(),
|
||||||
'overrides' => $this->normalizeOverrides($link),
|
'overrides' => $this->normalizeOverrides($link),
|
||||||
|
'quantity' => $this->resolvePieceQuantity($link),
|
||||||
];
|
];
|
||||||
}, $links);
|
}, $links);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function resolvePieceQuantity(MachinePieceLink $link): int
|
||||||
|
{
|
||||||
|
$parentLink = $link->getParentLink();
|
||||||
|
|
||||||
|
if (!$parentLink) {
|
||||||
|
return $link->getQuantity();
|
||||||
|
}
|
||||||
|
|
||||||
|
$composant = $parentLink->getComposant();
|
||||||
|
$structure = $composant->getStructure();
|
||||||
|
|
||||||
|
if (!is_array($structure) || !isset($structure['pieces']) || !is_array($structure['pieces'])) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$piece = $link->getPiece();
|
||||||
|
$typePiece = $piece->getTypePiece();
|
||||||
|
$typePieceId = $typePiece?->getId();
|
||||||
|
|
||||||
|
foreach ($structure['pieces'] as $pieceDef) {
|
||||||
|
if (!is_array($pieceDef)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (isset($pieceDef['typePieceId']) && $pieceDef['typePieceId'] === $typePieceId) {
|
||||||
|
return (int) ($pieceDef['quantity'] ?? 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
private function normalizeProductLinks(array $links): array
|
private function normalizeProductLinks(array $links): array
|
||||||
{
|
{
|
||||||
return array_map(function (MachineProductLink $link): array {
|
return array_map(function (MachineProductLink $link): array {
|
||||||
|
|||||||
Reference in New Issue
Block a user