Issues (3641)

Communication/Handler/ShipmentFormHandler.php (1 issue)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace Spryker\Zed\ManualOrderEntryGui\Communication\Handler;
9
10
use ArrayObject;
11
use Generated\Shared\Transfer\ExpenseTransfer;
12
use Generated\Shared\Transfer\QuoteTransfer;
13
use Generated\Shared\Transfer\ShipmentMethodTransfer;
14
use Generated\Shared\Transfer\ShipmentTransfer;
15
use Spryker\Shared\ManualOrderEntryGui\ManualOrderEntryGuiConfig;
16
use Spryker\Zed\ManualOrderEntryGui\Dependency\Facade\ManualOrderEntryGuiToShipmentFacadeInterface;
17
use Symfony\Component\HttpFoundation\Request;
18
19
class ShipmentFormHandler implements FormHandlerInterface
20
{
21
    /**
22
     * @var \Spryker\Zed\ManualOrderEntryGui\Dependency\Facade\ManualOrderEntryGuiToShipmentFacadeInterface
23
     */
24
    protected $shipmentFacade;
25
26
    /**
27
     * @param \Spryker\Zed\ManualOrderEntryGui\Dependency\Facade\ManualOrderEntryGuiToShipmentFacadeInterface $shipmentFacade
28
     */
29
    public function __construct(
30
        ManualOrderEntryGuiToShipmentFacadeInterface $shipmentFacade
31
    ) {
32
        $this->shipmentFacade = $shipmentFacade;
33
    }
34
35
    /**
36
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
37
     * @param \Symfony\Component\Form\FormInterface $form
38
     * @param \Symfony\Component\HttpFoundation\Request $request
39
     *
40
     * @return \Generated\Shared\Transfer\QuoteTransfer
41
     */
42
    public function handle(QuoteTransfer $quoteTransfer, &$form, Request $request): QuoteTransfer
43
    {
44
        $idShipmentMethod = $quoteTransfer->getShipment()->getMethod()->getIdShipmentMethod();
45
        if (!$idShipmentMethod) {
46
            return $quoteTransfer;
47
        }
48
49
        $shipmentMethodTransfer = $this->shipmentFacade->findAvailableMethodById($idShipmentMethod, $quoteTransfer);
50
        $shipmentTransfer = new ShipmentTransfer();
51
        $shipmentTransfer->setMethod($shipmentMethodTransfer);
52
53
        $quoteTransfer->setShipment($shipmentTransfer);
54
55
        $expenseTransfer = $this->createShippingExpenseTransfer($shipmentMethodTransfer);
0 ignored issues
show
It seems like $shipmentMethodTransfer can also be of type null; however, parameter $shipmentMethodTransfer of Spryker\Zed\ManualOrderE...ippingExpenseTransfer() does only seem to accept Generated\Shared\Transfer\ShipmentMethodTransfer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

55
        $expenseTransfer = $this->createShippingExpenseTransfer(/** @scrutinizer ignore-type */ $shipmentMethodTransfer);
Loading history...
56
        $quoteTransfer->setExpenses(new ArrayObject([$expenseTransfer]));
57
58
        return $quoteTransfer;
59
    }
60
61
    /**
62
     * @param \Generated\Shared\Transfer\ShipmentMethodTransfer $shipmentMethodTransfer
63
     *
64
     * @return \Generated\Shared\Transfer\ExpenseTransfer
65
     */
66
    protected function createShippingExpenseTransfer(ShipmentMethodTransfer $shipmentMethodTransfer): ExpenseTransfer
67
    {
68
        $shipmentExpenseTransfer = new ExpenseTransfer();
69
        $shipmentExpenseTransfer->fromArray($shipmentMethodTransfer->toArray(), true);
70
        $shipmentExpenseTransfer->setType(ManualOrderEntryGuiConfig::SHIPMENT_EXPENSE_TYPE);
71
        $shipmentExpenseTransfer->setUnitNetPrice(0);
72
        $shipmentExpenseTransfer->setUnitGrossPrice($shipmentMethodTransfer->getStoreCurrencyPrice());
73
        $shipmentExpenseTransfer->setQuantity(1);
74
75
        return $shipmentExpenseTransfer;
76
    }
77
}
78