Completed
Push — feature/eco-574/eco-2266-check... ( b72c03...e5ed68 )
by Ruslan
11s queued 10s
created

getStringDecimalItemVatAmountPrice()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * MIT License
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace SprykerEco\Zed\AfterPay\Business\Payment\Mapper;
9
10
use Generated\Shared\Transfer\AfterPayAuthorizeRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...uthorizeRequestTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use Generated\Shared\Transfer\AfterPayCallTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AfterPayCallTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use Generated\Shared\Transfer\AfterPayCancelRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ayCancelRequestTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
use Generated\Shared\Transfer\AfterPayCaptureRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...yCaptureRequestTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
14
use Generated\Shared\Transfer\AfterPayRefundRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ayRefundRequestTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
use Generated\Shared\Transfer\AfterPayRequestAddressTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...yRequestAddressTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
16
use Generated\Shared\Transfer\AfterPayRequestCustomerTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...RequestCustomerTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
17
use Generated\Shared\Transfer\AfterPayRequestOrderItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...equestOrderItemTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
18
use Generated\Shared\Transfer\AfterPayRequestOrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...PayRequestOrderTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
19
use Generated\Shared\Transfer\AfterPayRequestPaymentTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...yRequestPaymentTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
20
use Generated\Shared\Transfer\ExpenseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\ExpenseTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
21
use Generated\Shared\Transfer\ItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\ItemTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
22
use Generated\Shared\Transfer\OrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\OrderTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
23
use SprykerEco\Shared\AfterPay\AfterPayConfig;
24
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface;
25
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface;
26
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface;
27
28
class OrderToRequestTransfer implements OrderToRequestTransferInterface
29
{
30
    public const NEGATIVE_MULTIPLIER = -1;
31
    public const GIFT_CARD_PROVIDER = 'GiftCard';
32
33
    protected const ZERO_AMOUNT = '0';
34
35
    /**
36
     * @var \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface
37
     */
38
    protected $moneyFacade;
39
40
    /**
41
     * @var \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface
42
     */
43
    protected $storeFacade;
44
45
    /**
46
     * @var array
47
     */
48
    protected static $paymentMethods = [
49
        AfterPayConfig::PAYMENT_METHOD_INVOICE => AfterPayConfig::PAYMENT_TYPE_INVOICE,
50
    ];
51
52
    /**
53
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface
54
     */
55
    protected $priceToPayProvider;
56
57
    /**
58
     * @param \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface $moneyFacade
59
     * @param \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface $storeFacade
60
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface $priceToPayProvider
61
     */
62
    public function __construct(
63
        AfterPayToMoneyFacadeInterface $moneyFacade,
64
        AfterPayToStoreFacadeInterface $storeFacade,
65
        PriceToPayProviderInterface $priceToPayProvider
66
    ) {
67
        $this->moneyFacade = $moneyFacade;
68
        $this->storeFacade = $storeFacade;
69
        $this->priceToPayProvider = $priceToPayProvider;
70
    }
71
72
    /**
73
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
74
     *
75
     * @return \Generated\Shared\Transfer\AfterPayAuthorizeRequestTransfer
76
     */
77
    public function orderToAuthorizeRequest(AfterPayCallTransfer $afterPayCallTransfer): AfterPayAuthorizeRequestTransfer
78
    {
79
        return (new AfterPayAuthorizeRequestTransfer())
80
            ->setPayment($this->buildPaymentRequestTransfer($afterPayCallTransfer))
81
            ->setCustomer($this->buildCustomerRequestTransfer($afterPayCallTransfer))
82
            ->setOrder($this->buildOrderWithItemsRequestTransfer($afterPayCallTransfer));
83
    }
84
85
    /**
86
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
87
     *
88
     * @return \Generated\Shared\Transfer\AfterPayCaptureRequestTransfer
89
     */
90
    public function orderToBaseCaptureRequest(AfterPayCallTransfer $afterPayCallTransfer): AfterPayCaptureRequestTransfer
91
    {
92
        $orderRequestTransfer = $this->buildOrderRequestTransfer($afterPayCallTransfer)
93
            ->setTotalGrossAmount(static::ZERO_AMOUNT);
94
95
        return (new AfterPayCaptureRequestTransfer())
96
            ->setOrderDetails($orderRequestTransfer);
97
    }
98
99
    /**
100
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
101
     *
102
     * @return \Generated\Shared\Transfer\AfterPayCancelRequestTransfer
103
     */
104
    public function orderToBaseCancelRequest(AfterPayCallTransfer $afterPayCallTransfer): AfterPayCancelRequestTransfer
105
    {
106
        $orderRequestTransfer = $this->buildOrderRequestTransfer($afterPayCallTransfer)
107
            ->setTotalGrossAmount(static::ZERO_AMOUNT);
108
109
        return (new AfterPayCancelRequestTransfer())
110
            ->setCancellationDetails($orderRequestTransfer);
111
    }
112
113
    /**
114
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
115
     *
116
     * @return \Generated\Shared\Transfer\AfterPayRefundRequestTransfer
117
     */
118
    public function orderToBaseRefundRequest(OrderTransfer $orderTransfer): AfterPayRefundRequestTransfer
119
    {
120
        return (new AfterPayRefundRequestTransfer())
121
            ->setIdSalesOrder($orderTransfer->getIdSalesOrder())
122
            ->setOrderNumber($orderTransfer->getOrderReference());
123
    }
124
125
    /**
126
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
127
     *
128
     * @return \Generated\Shared\Transfer\AfterPayRequestOrderItemTransfer
129
     */
130
    public function orderItemToAfterPayItemRequest(ItemTransfer $itemTransfer): AfterPayRequestOrderItemTransfer
131
    {
132
        return $this->buildOrderItemRequestTransfer($itemTransfer);
133
    }
134
135
    /**
136
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
137
     *
138
     * @return \Generated\Shared\Transfer\AfterPayRequestCustomerTransfer
139
     */
140
    protected function buildCustomerRequestTransfer(AfterPayCallTransfer $afterPayCallTransfer): AfterPayRequestCustomerTransfer
141
    {
142
        $billingAddressTransfer = $afterPayCallTransfer->getBillingAddress();
143
144
        return (new AfterPayRequestCustomerTransfer())
145
            ->setFirstName($billingAddressTransfer->getFirstName())
146
            ->setLastName($billingAddressTransfer->getLastName())
147
            ->setConversationalLanguage($this->getStoreCountryIso2())
148
            ->setCustomerCategory(AfterPayConfig::API_CUSTOMER_CATEGORY_PERSON)
149
            ->setSalutation($billingAddressTransfer->getSalutation())
150
            ->setEmail($afterPayCallTransfer->getEmail())
151
            ->setAddress($this->buildCustomerBillingAddressRequestTransfer($afterPayCallTransfer));
152
    }
153
154
    /**
155
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
156
     *
157
     * @return \Generated\Shared\Transfer\AfterPayRequestOrderTransfer
158
     */
159
    protected function buildOrderWithItemsRequestTransfer(AfterPayCallTransfer $afterPayCallTransfer): AfterPayRequestOrderTransfer
160
    {
161
        $orderRequestTransfer = $this->buildOrderRequestTransfer($afterPayCallTransfer);
162
163
        foreach ($afterPayCallTransfer->getItems() as $itemTransfer) {
164
            $orderRequestTransfer->addItem(
165
                $this->buildOrderItemRequestTransfer($itemTransfer)
166
            );
167
        }
168
169
        $orderRequestTransfer = $this->addExpensesToOrderRequestTransfer($orderRequestTransfer, $afterPayCallTransfer);
170
171
        return $orderRequestTransfer;
172
    }
173
174
    /**
175
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
176
     *
177
     * @return \Generated\Shared\Transfer\AfterPayRequestOrderTransfer
178
     */
179
    protected function buildOrderRequestTransfer(AfterPayCallTransfer $afterPayCallTransfer): AfterPayRequestOrderTransfer
180
    {
181
        return (new AfterPayRequestOrderTransfer())
182
            ->setNumber($afterPayCallTransfer->getOrderReference())
183
            ->setTotalGrossAmount($this->getStringDecimalOrderGrossTotal($afterPayCallTransfer))
184
            ->setCurrency($afterPayCallTransfer->getCurrency());
185
    }
186
187
    /**
188
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
189
     *
190
     * @return \Generated\Shared\Transfer\AfterPayRequestPaymentTransfer
191
     */
192
    protected function buildPaymentRequestTransfer(AfterPayCallTransfer $afterPayCallTransfer): AfterPayRequestPaymentTransfer
193
    {
194
        return (new AfterPayRequestPaymentTransfer())
195
            ->setType(static::$paymentMethods[$afterPayCallTransfer->getPaymentMethod()]);
196
    }
197
198
    /**
199
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
200
     *
201
     * @return \Generated\Shared\Transfer\AfterPayRequestOrderItemTransfer
202
     */
203
    protected function buildOrderItemRequestTransfer(ItemTransfer $itemTransfer): AfterPayRequestOrderItemTransfer
204
    {
205
        return (new AfterPayRequestOrderItemTransfer())
206
            ->setProductId($itemTransfer->getSku())
207
            ->setDescription($itemTransfer->getName())
208
            ->setGrossUnitPrice($this->getStringDecimalItemGrossUnitPrice($itemTransfer))
209
            ->setQuantity($itemTransfer->getQuantity())
210
            ->setVatAmount($this->getStringDecimalItemVatAmountPrice($itemTransfer))
211
            ->setVatPercent($itemTransfer->getTaxRate())
212
            ->setGroupId($itemTransfer->getGroupKey());
213
    }
214
215
    /**
216
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
217
     *
218
     * @return \Generated\Shared\Transfer\AfterPayRequestAddressTransfer
219
     */
220
    protected function buildCustomerBillingAddressRequestTransfer(AfterPayCallTransfer $afterPayCallTransfer): AfterPayRequestAddressTransfer
221
    {
222
        $customerAddressTransfer = $afterPayCallTransfer->getBillingAddress();
223
224
        return (new AfterPayRequestAddressTransfer())
225
            ->setCountryCode($customerAddressTransfer->getIso2Code())
226
            ->setStreet($customerAddressTransfer->getAddress1())
227
            ->setStreetNumber($customerAddressTransfer->getAddress2())
228
            ->setPostalCode($customerAddressTransfer->getZipCode())
229
            ->setPostalPlace($customerAddressTransfer->getCity());
230
    }
231
232
    /**
233
     * @return string
234
     */
235
    protected function getStoreCountryIso2(): string
236
    {
237
        return $this->storeFacade->getCurrentStore()->getName();
238
    }
239
240
    /**
241
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
242
     *
243
     * @return string
244
     */
245
    protected function getStringDecimalOrderGrossTotal(AfterPayCallTransfer $afterPayCallTransfer): string
246
    {
247
        $orderGrossTotal = $afterPayCallTransfer->getTotals()->getGrandTotal();
248
249
        return (string)$this->moneyFacade->convertIntegerToDecimal($orderGrossTotal);
250
    }
251
252
    /**
253
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
254
     *
255
     * @return string
256
     */
257
    protected function getStringDecimalOrderNetTotal(AfterPayCallTransfer $afterPayCallTransfer): string
258
    {
259
        $orderGrossTotal = $afterPayCallTransfer->getTotals()->getGrandTotal();
260
        $orderTaxTotal = $afterPayCallTransfer->getTotals()->getTaxTotal()->getAmount();
261
        $orderNetTotal = $orderGrossTotal - $orderTaxTotal;
262
263
        return (string)$this->moneyFacade->convertIntegerToDecimal($orderNetTotal);
264
    }
265
266
    /**
267
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
268
     *
269
     * @return string
270
     */
271
    protected function getStringDecimalItemGrossUnitPrice(ItemTransfer $itemTransfer): string
272
    {
273
        $itemUnitGrossPrice = $itemTransfer->getUnitPriceToPayAggregation();
274
275
        return (string)$this->moneyFacade->convertIntegerToDecimal($itemUnitGrossPrice);
276
    }
277
278
    /**
279
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
280
     *
281
     * @return string
282
     */
283
    protected function getStringDecimalItemNetUnitPrice(ItemTransfer $itemTransfer): string
284
    {
285
        $itemUnitGrossPriceAmount = $itemTransfer->getUnitPriceToPayAggregation();
286
        $itemUnitTaxAmount = $itemTransfer->getUnitTaxAmountFullAggregation();
287
        $itemUnitNetAmount = $itemUnitGrossPriceAmount - $itemUnitTaxAmount;
288
289
        return (string)$this->moneyFacade->convertIntegerToDecimal($itemUnitNetAmount);
290
    }
291
292
    /**
293
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
294
     *
295
     * @return string
296
     */
297
    protected function getStringDecimalItemVatAmountPrice(ItemTransfer $itemTransfer): string
298
    {
299
        $itemVatAmountPrice = $itemTransfer->getUnitTaxAmountFullAggregation();
300
301
        return (string)$this->moneyFacade->convertIntegerToDecimal($itemVatAmountPrice);
302
    }
303
304
    /**
305
     * @param \Generated\Shared\Transfer\OrderTransfer $orderWithPaymentTransfer
306
     * @param \Generated\Shared\Transfer\AfterPayRequestOrderTransfer $orderRequestTransfer
307
     *
308
     * @return void
309
     */
310
    protected function addGiftcardItems(
311
        OrderTransfer $orderWithPaymentTransfer,
312
        AfterPayRequestOrderTransfer $orderRequestTransfer
313
    ): void {
314
        foreach ($this->getGiftcards($orderWithPaymentTransfer) as $index => $paymentTransfer) {
315
            $amount = (string)$this->moneyFacade
316
                ->convertIntegerToDecimal(static::NEGATIVE_MULTIPLIER * $paymentTransfer->getAmount());
317
318
            $orderRequestTransfer->addItem(
319
                (new AfterPayRequestOrderItemTransfer())
320
                    ->setProductId(static::GIFT_CARD_PROVIDER . $index)
321
                    ->setDescription(static::GIFT_CARD_PROVIDER . $index)
322
                    ->setGrossUnitPrice($amount)
323
                    ->setQuantity(1)
324
            );
325
        }
326
    }
327
328
    /**
329
     * @param \Generated\Shared\Transfer\OrderTransfer $orderWithPaymentTransfer
330
     *
331
     * @return \Generated\Shared\Transfer\PaymentTransfer[]
332
     */
333
    protected function getGiftcards(OrderTransfer $orderWithPaymentTransfer): array
334
    {
335
        $giftCardPayments = [];
336
        foreach ($orderWithPaymentTransfer->getPayments() as $paymentTransfer) {
337
            if ($paymentTransfer->getPaymentMethod() !== static::GIFT_CARD_PROVIDER) {
338
                continue;
339
            }
340
341
            $giftCardPayments[] = $paymentTransfer;
342
        }
343
344
        return $giftCardPayments;
345
    }
346
347
    /**
348
     * @param \Generated\Shared\Transfer\AfterPayRequestOrderTransfer $orderRequestTransfer
349
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
350
     *
351
     * @return \Generated\Shared\Transfer\AfterPayRequestOrderTransfer
352
     */
353
    protected function addExpensesToOrderRequestTransfer(
354
        AfterPayRequestOrderTransfer $orderRequestTransfer,
355
        AfterPayCallTransfer $afterPayCallTransfer
356
    ): AfterPayRequestOrderTransfer {
357
        foreach ($afterPayCallTransfer->getExpenses() as $expenseTransfer) {
358
            if ($expenseTransfer->getSumPriceToPayAggregation() > 0) {
359
                $orderRequestTransfer->addItem(
360
                    $this->buildOrderExpenseRequestTransfer($expenseTransfer)
361
                );
362
            }
363
        }
364
365
        return $orderRequestTransfer;
366
    }
367
368
    /**
369
     * @param \Generated\Shared\Transfer\ExpenseTransfer $expenseTransfer
370
     *
371
     * @return \Generated\Shared\Transfer\AfterPayRequestOrderItemTransfer
372
     */
373
    protected function buildOrderExpenseRequestTransfer(ExpenseTransfer $expenseTransfer): AfterPayRequestOrderItemTransfer
374
    {
375
        $item = (new AfterPayRequestOrderItemTransfer())
376
            ->setProductId($expenseTransfer->getType())
377
            ->setDescription($expenseTransfer->getName())
378
            ->setGrossUnitPrice($this->getStringDecimalExpenseGrossUnitPrice($expenseTransfer))
379
            ->setNetUnitPrice($this->getStringDecimalExpenseNetUnitPrice($expenseTransfer))
380
            ->setQuantity($expenseTransfer->getQuantity());
381
382
        return $item;
383
    }
384
385
    /**
386
     * @param \Generated\Shared\Transfer\ExpenseTransfer $expenseTransfer
387
     *
388
     * @return string
389
     */
390
    protected function getStringDecimalExpenseGrossUnitPrice(ExpenseTransfer $expenseTransfer): string
391
    {
392
        $expenseUnitGrossPrice = $expenseTransfer->getUnitPriceToPayAggregation();
393
394
        return (string)$this->moneyFacade->convertIntegerToDecimal($expenseUnitGrossPrice);
395
    }
396
397
    /**
398
     * @param \Generated\Shared\Transfer\ExpenseTransfer $expenseTransfer
399
     *
400
     * @return string
401
     */
402
    protected function getStringDecimalExpenseNetUnitPrice(ExpenseTransfer $expenseTransfer): string
403
    {
404
        $expenseUnitGrossPriceAmount = $expenseTransfer->getUnitPriceToPayAggregation();
405
        $expenseUnitTaxAmount = $expenseTransfer->getUnitTaxAmount();
406
        $expenseUnitNetAmount = $expenseUnitGrossPriceAmount - $expenseUnitTaxAmount;
407
408
        return (string)$this->moneyFacade->convertIntegerToDecimal($expenseUnitNetAmount);
409
    }
410
}
411