Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
61.54% |
8 / 13 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
| TransferableTransferPickedItemService | |
61.54% |
8 / 13 |
|
0.00% |
0 / 1 |
4.91 | |
0.00% |
0 / 1 |
| getRecipientItem | |
61.54% |
8 / 13 |
|
0.00% |
0 / 1 |
4.91 | |||
| 1 | <?php |
| 2 | |
| 3 | namespace Domain\Transferable\Services; |
| 4 | |
| 5 | use App\Models\Item\Item; |
| 6 | use App\Models\StockIO\StockIO; |
| 7 | use Domain\Item\Interfaces\HasItemsInterface; |
| 8 | use Domain\Transferable\DTOs\TransferItemDTO; |
| 9 | use Domain\Transferable\Exceptions\CantTransferItemException; |
| 10 | use Illuminate\Database\Eloquent\Builder; |
| 11 | |
| 12 | readonly class TransferableTransferPickedItemService extends TransferableTransferItemService |
| 13 | { |
| 14 | protected function getRecipientItem(HasItemsInterface $recipient, TransferItemDTO $itemToTransfer): ?Item |
| 15 | { |
| 16 | if (!$recipient instanceof StockIO) { |
| 17 | throw new CantTransferItemException(__('Recipient is not an InputOutput instance')); |
| 18 | } |
| 19 | |
| 20 | /** @var Item $itemOnReceiver */ |
| 21 | $itemOnReceiver = $recipient->items() |
| 22 | ->whereHas('integration', function (Builder $query) use ($itemToTransfer) { |
| 23 | if (isset($itemToTransfer->item->integration->getAttribute('parameters')['production_order'])) { |
| 24 | $query->where('parameters->production_order', $itemToTransfer->item->integration->getAttribute('parameters')['production_order']); |
| 25 | $query->where('product_id', $itemToTransfer->item->product->getKey()); |
| 26 | |
| 27 | } else if ($itemToTransfer->item->integration->getAttribute('parameters')['priority_value']) { |
| 28 | $query->where('parameters->priority_value', $itemToTransfer->item->integration->getAttribute('parameters')['priority_value']); |
| 29 | $query->where('parameters->priority_field', $itemToTransfer->item->integration->getAttribute('parameters')['priority_field']); |
| 30 | $query->where('product_id', $itemToTransfer->item->product->getKey()); |
| 31 | } |
| 32 | })->first(); |
| 33 | |
| 34 | return $itemOnReceiver ?? null; |
| 35 | } |
| 36 | } |