Issues (3641)

Spryker/Zed/Sales/Business/Order/OrderHydrator.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\Sales\Business\Order;
9
10
use Generated\Shared\Transfer\AddressTransfer;
11
use Generated\Shared\Transfer\CountryTransfer;
12
use Generated\Shared\Transfer\OrderTransfer;
13
use Generated\Shared\Transfer\ShipmentCarrierTransfer;
14
use Generated\Shared\Transfer\ShipmentMethodTransfer;
15
use Orm\Zed\Sales\Persistence\SpySalesOrder;
16
use Orm\Zed\Sales\Persistence\SpySalesOrderAddress;
17
use Spryker\Zed\Sales\Business\Exception\InvalidSalesOrderException;
18
use Spryker\Zed\Sales\Business\Model\Order\OrderHydrator as OrderHydratorWithoutMultiShipping;
19
20
class OrderHydrator extends OrderHydratorWithoutMultiShipping
0 ignored issues
show
Deprecated Code introduced by
The class Spryker\Zed\Sales\Busine...del\Order\OrderHydrator has been deprecated: Use {@link \Spryker\Zed\Sales\Business\Order\OrderHydrator} instead. ( Ignorable by Annotation )

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

20
class OrderHydrator extends /** @scrutinizer ignore-deprecated */ OrderHydratorWithoutMultiShipping
Loading history...
21
{
22
    /**
23
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
24
     *
25
     * @throws \Spryker\Zed\Sales\Business\Exception\InvalidSalesOrderException
26
     *
27
     * @return \Orm\Zed\Sales\Persistence\SpySalesOrder
28
     */
29
    protected function getOrderEntity(OrderTransfer $orderTransfer)
30
    {
31
        $orderTransfer->requireIdSalesOrder()
32
            ->requireFkCustomer();
33
34
        $customerTransfer = $this->getCustomerByFkCustomer($orderTransfer);
35
36
        $orderEntity = $this->queryContainer
37
            ->querySalesOrderDetailsWithoutShippingAddress($orderTransfer->getIdSalesOrder())
38
            ->findOne();
39
40
        if (!$this->isOrderApplicableForRetrieval($orderTransfer, $customerTransfer, $orderEntity)) {
41
            throw new InvalidSalesOrderException(sprintf(
42
                'Order could not be found for ID %s and customer reference %s',
43
                $orderTransfer->getIdSalesOrder(),
44
                $orderTransfer->getCustomerReference(),
45
            ));
46
        }
47
48
        return $orderEntity;
49
    }
50
51
    /**
52
     * @deprecated Use {@link \Spryker\Zed\Sales\Business\Reader\OrderReader::getOrderTransfer()} instead.
53
     *
54
     * @param int $idSalesOrder
55
     *
56
     * @throws \Spryker\Zed\Sales\Business\Exception\InvalidSalesOrderException
57
     *
58
     * @return \Generated\Shared\Transfer\OrderTransfer
59
     */
60
    public function hydrateOrderTransferFromPersistenceByIdSalesOrder($idSalesOrder)
61
    {
62
        $orderEntity = $this->queryContainer
63
            ->querySalesOrderDetailsWithoutShippingAddress($idSalesOrder)
64
            ->findOne();
65
66
        if ($orderEntity === null) {
67
            throw new InvalidSalesOrderException(
68
                sprintf(
69
                    'Order could not be found for ID %s',
70
                    $idSalesOrder,
71
                ),
72
            );
73
        }
74
75
        return $this->hydrateOrderTransferFromPersistenceBySalesOrder($orderEntity);
76
    }
77
78
    /**
79
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
80
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
81
     *
82
     * @return void
83
     */
84
    protected function hydrateBillingAddressToOrderTransfer(SpySalesOrder $orderEntity, OrderTransfer $orderTransfer): void
85
    {
86
        $orderTransfer->setBillingAddress(
87
            $this->createAddressTransfer($orderEntity->getBillingAddress()),
88
        );
89
    }
90
91
    /**
92
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
93
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
94
     *
95
     * @return void
96
     */
97
    protected function hydrateShippingAddressToOrderTransfer(SpySalesOrder $orderEntity, OrderTransfer $orderTransfer): void
98
    {
99
        $shippingAddress = $orderEntity->getShippingAddress();
100
101
        if ($shippingAddress === null) {
102
            return;
103
        }
104
105
        $orderTransfer->setShippingAddress($this->createAddressTransfer($shippingAddress));
106
    }
107
108
    /**
109
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderAddress $salesOrderAddressEntity
110
     *
111
     * @return \Generated\Shared\Transfer\AddressTransfer
112
     */
113
    protected function createAddressTransfer(SpySalesOrderAddress $salesOrderAddressEntity): AddressTransfer
114
    {
115
        $countryEntity = $salesOrderAddressEntity->getCountry();
116
117
        $addressTransfer = new AddressTransfer();
118
        $addressTransfer->fromArray($salesOrderAddressEntity->toArray(), true);
119
        $addressTransfer->setIso2Code($countryEntity->getIso2Code());
120
121
        $countryTransfer = (new CountryTransfer())->fromArray($countryEntity->toArray(), true);
122
        $addressTransfer->setCountry($countryTransfer);
123
124
        return $addressTransfer;
125
    }
126
127
    /**
128
     * @param string $shipmentMethod
129
     *
130
     * @return \Generated\Shared\Transfer\ShipmentMethodTransfer
131
     */
132
    protected function createShipmentMethod(string $shipmentMethod): ShipmentMethodTransfer
133
    {
134
        return (new ShipmentMethodTransfer())
135
            ->setName($shipmentMethod);
136
    }
137
138
    /**
139
     * @param string $carrierName
140
     *
141
     * @return \Generated\Shared\Transfer\ShipmentCarrierTransfer
142
     */
143
    protected function createShipmentCarrier(string $carrierName): ShipmentCarrierTransfer
144
    {
145
        return (new ShipmentCarrierTransfer())
146
            ->setName($carrierName);
147
    }
148
}
149