diff --git a/src/Services/EntityMergers/Mergers/EntityMergerInterface.php b/src/Services/EntityMergers/Mergers/EntityMergerInterface.php index 9c8d9eb9..838bc1d6 100644 --- a/src/Services/EntityMergers/Mergers/EntityMergerInterface.php +++ b/src/Services/EntityMergers/Mergers/EntityMergerInterface.php @@ -24,12 +24,17 @@ declare(strict_types=1); namespace App\Services\EntityMergers\Mergers; +/** + * @template T of object + */ interface EntityMergerInterface { /** * Determines if this merger supports merging the other entity into the target entity. * @param object $target + * @phpstan-param T $target * @param object $other + * @phpstan-param T $other * @param array $context * @return bool True if this merger supports merging the other entity into the target entity, false otherwise */ @@ -39,8 +44,11 @@ interface EntityMergerInterface * Merge the other entity into the target entity. * The target entity will be modified and returned. * @param object $target + * @phpstan-param T $target * @param object $other + * @phpstan-param T $other * @param array $context + * @phpstan-return T * @return object */ public function merge(object $target, object $other, array $context = []): object; diff --git a/src/Services/EntityMergers/Mergers/PartMerger.php b/src/Services/EntityMergers/Mergers/PartMerger.php index 6c839414..731da0b7 100644 --- a/src/Services/EntityMergers/Mergers/PartMerger.php +++ b/src/Services/EntityMergers/Mergers/PartMerger.php @@ -31,6 +31,9 @@ use App\Entity\Parts\PartLot; use App\Entity\PriceInformations\Orderdetail; use Symfony\Component\DependencyInjection\Attribute\Autoconfigure; +/** + * @implements EntityMergerInterface + */ #[Autoconfigure(public: true)] class PartMerger implements EntityMergerInterface { @@ -74,7 +77,7 @@ class PartMerger implements EntityMergerInterface $this->mergeTags($target, $other, 'tags'); //Merge manufacturing status - $this->useCallback(function (?ManufacturingStatus $t, ?ManufacturingStatus $o): ?ManufacturingStatus { + $this->useCallback(function (?ManufacturingStatus $t, ?ManufacturingStatus $o): ManufacturingStatus { //Use the other value, if the target value is not set if ($t === ManufacturingStatus::NOT_SET || $t === null) { return $o ?? ManufacturingStatus::NOT_SET; @@ -91,6 +94,9 @@ class PartMerger implements EntityMergerInterface return $t; }, $target, $other, 'providerReference'); + //Merge the collections + $this->mergeCollectionFields($target, $other, $context); + return $target; }