Passed
Push — feature/eco-574/eco-2266-check... ( efd21d )
by Aleksey
08:13
created

RefundRequestBuilder::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 6
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\Transaction\Refund;
9
10
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...
11
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...
12
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...
13
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...
14
use SprykerEco\Shared\Afterpay\AfterpayConfig;
15
use SprykerEco\Shared\Afterpay\AfterpayConstants;
16
use SprykerEco\Zed\Afterpay\Business\Payment\Mapper\OrderToRequestTransferInterface;
17
use SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToMoneyInterface;
18
19
class RefundRequestBuilder implements RefundRequestBuilderInterface
20
{
21
    /**
22
     * @var \SprykerEco\Zed\Afterpay\Business\Payment\Mapper\OrderToRequestTransferInterface
23
     */
24
    protected $orderToRequestMapper;
25
26
    /**
27
     * @var \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToMoneyInterface
28
     */
29
    private $money;
30
31
    /**
32
     * @param \SprykerEco\Zed\Afterpay\Business\Payment\Mapper\OrderToRequestTransferInterface $orderToRequestMapper
33
     * @param \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToMoneyInterface $money
34
     */
35
    public function __construct(
36
        OrderToRequestTransferInterface $orderToRequestMapper,
37
        AfterpayToMoneyInterface $money
38
    ) {
39
        $this->orderToRequestMapper = $orderToRequestMapper;
40
        $this->money = $money;
41
    }
42
43
    /**
44
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
45
     *
46
     * @return \Generated\Shared\Transfer\AfterpayRefundRequestTransfer
47
     */
48
    public function buildBaseRefundRequestForOrder(OrderTransfer $orderTransfer): AfterpayRefundRequestTransfer
49
    {
50
        $refundRequestTransfer = $this->orderToRequestMapper
51
            ->orderToBaseRefundRequest($orderTransfer);
52
53
        return $refundRequestTransfer;
54
    }
55
56
    /**
57
     * @param \Generated\Shared\Transfer\ItemTransfer $orderItemTransfer
58
     * @param \Generated\Shared\Transfer\AfterpayRefundRequestTransfer $refundRequestTransfer
59
     *
60
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface
61
     */
62
    public function addOrderItemToRefundRequest(
63
        ItemTransfer $orderItemTransfer,
64
        AfterpayRefundRequestTransfer $refundRequestTransfer
65
    ): RefundRequestBuilderInterface {
66
67
        $orderItemRequestTransfer = $this->orderToRequestMapper->orderItemToAfterpayItemRequest($orderItemTransfer);
68
69
        $this->addOrderItemToRefundDetails($orderItemRequestTransfer, $refundRequestTransfer);
70
71
        return $this;
72
    }
73
74
    /**
75
     * @param int $expenseAmount
76
     * @param \Generated\Shared\Transfer\AfterpayRefundRequestTransfer $refundRequestTransfer
77
     *
78
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface
79
     */
80
    public function addOrderExpenseToRefundRequest(
81
        int $expenseAmount,
82
        AfterpayRefundRequestTransfer $refundRequestTransfer
83
    ): RefundRequestBuilderInterface {
84
        $expenseItemRequestTransfer = $this->buildExpenseItemTransfer($expenseAmount);
85
        $this->addOrderItemToRefundRequest($expenseItemRequestTransfer, $refundRequestTransfer);
86
87
        return $this;
88
    }
89
90
    /**
91
     * @param \Generated\Shared\Transfer\AfterpayRequestOrderItemTransfer $orderItemRequestTransfer
92
     * @param \Generated\Shared\Transfer\AfterpayRefundRequestTransfer $refundRequestTransfer
93
     *
94
     * @return void
95
     */
96
    protected function addOrderItemToRefundDetails(
97
        AfterpayRequestOrderItemTransfer $orderItemRequestTransfer,
98
        AfterpayRefundRequestTransfer $refundRequestTransfer
99
    ): void {
100
        $refundRequestTransfer->addOrderItem($orderItemRequestTransfer);
101
    }
102
103
    /**
104
     * @param int $expenseAmount
105
     *
106
     * @return \Generated\Shared\Transfer\ItemTransfer
107
     */
108
    protected function buildExpenseItemTransfer(int $expenseAmount): ItemTransfer
109
    {
110
        return (new ItemTransfer())
111
            ->setSku(AfterpayConfig::REFUND_EXPENSE_SKU)
112
            ->setName(AfterpayConfig::REFUND_EXPENSE_DECRIPTION)
113
            ->setUnitGrossPrice($expenseAmount)
114
            ->setUnitPriceToPayAggregation($expenseAmount)
115
            ->setUnitTaxAmountFullAggregation(0)
116
            ->setQuantity(1);
117
    }
118
119
    /**
120
     * @param float $decimalValue
121
     *
122
     * @return int
123
     */
124
    protected function decimalToInt(float $decimalValue): int
125
    {
126
        return $this->money->convertDecimalToInteger($decimalValue);
127
    }
128
129
    /**
130
     * @param int $intValue
131
     *
132
     * @return string
133
     */
134
    protected function intToDecimalString(int $intValue): string
135
    {
136
        return (string)$this->money->convertIntegerToDecimal($intValue);
137
    }
138
}
139