Passed
Push — master ( 8ab9a9...d14dee )
by
unknown
01:02 queued 16s
created

SubstituteWarning::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 5
c 1
b 0
f 0
nc 1
nop 6
dl 0
loc 13
rs 10
1
<?php
2
3
/**
4
 * PAYONE Magento 2 Connector is free software: you can redistribute it and/or modify
5
 * it under the terms of the GNU Lesser General Public License as published by
6
 * the Free Software Foundation, either version 3 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * PAYONE Magento 2 Connector is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public License
15
 * along with PAYONE Magento 2 Connector. If not, see <http://www.gnu.org/licenses/>.
16
 *
17
 * PHP version 5
18
 *
19
 * @category  Payone
20
 * @package   Payone_Magento2_Plugin
21
 * @author    FATCHIP GmbH <[email protected]>
22
 * @copyright 2003 - 2024 Payone GmbH
23
 * @license   <http://www.gnu.org/licenses/> GNU Lesser General Public License
24
 * @link      http://www.payone.de
25
 */
26
27
namespace Payone\Core\Block\Adminhtml\Order\View;
28
29
use Magento\Framework\View\Element\Template;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\View\Element\Template 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...
30
use Magento\Framework\View\Element\Template\Context;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\View\Element\Template\Context 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...
31
use Magento\Sales\Model\Order;
0 ignored issues
show
Bug introduced by
The type Magento\Sales\Model\Order 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...
32
use Magento\Framework\UrlInterface;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\UrlInterface 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...
33
use Payone\Core\Helper\Database;
34
35
class SubstituteWarning extends Template
36
{
37
    /**
38
     * Core registry
39
     *
40
     * @var \Magento\Framework\Registry
0 ignored issues
show
Bug introduced by
The type Magento\Framework\Registry 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...
41
     */
42
    protected $_coreRegistry = null;
43
44
    /**
45
     * @var Database
46
     */
47
    protected $databaseHelper;
48
49
    /**
50
     * Order factory
51
     *
52
     * @var \Magento\Sales\Model\OrderFactory
0 ignored issues
show
Bug introduced by
The type Magento\Sales\Model\OrderFactory 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...
53
     */
54
    protected $orderFactory;
55
56
    /**
57
     * Url builder object
58
     *
59
     * @var UrlInterface
60
     */
61
    protected $urlBuilder;
62
63
    /**
64
     * @var Order
65
     */
66
    protected $oSubstituteOrder = null;
67
68
    /**
69
     * @param Context $context
70
     * @param \Magento\Framework\Registry $registry
71
     * @param Database $databaseHelper
72
     * @param \Magento\Sales\Model\OrderFactory $orderFactory
73
     * @param UrlInterface $urlBuilder
74
     * @param array $data
75
     */
76
    public function __construct(
77
        Context $context,
78
        \Magento\Framework\Registry $registry,
79
        Database $databaseHelper,
80
        \Magento\Sales\Model\OrderFactory $orderFactory,
81
        UrlInterface $urlBuilder,
82
        array $data = []
83
    ) {
84
        $this->_coreRegistry = $registry;
85
        $this->databaseHelper = $databaseHelper;
86
        $this->orderFactory = $orderFactory;
87
        $this->urlBuilder = $urlBuilder;
88
        parent::__construct($context, $data);
89
    }
90
91
    /**
92
     * Retrieve order model object
93
     *
94
     * @return \Magento\Sales\Model\Order
95
     */
96
    public function getOrder()
97
    {
98
        return $this->_coreRegistry->registry('sales_order');
99
    }
100
101
    /**
102
     * Checks if the current order is a substitute order
103
     *
104
     * @return bool
105
     */
106
    public function isSubstituteOrder()
107
    {
108
        $oOrder = $this->getOrder();
109
        if (!empty($oOrder->getPayoneCancelSubstituteIncrementId())) {
110
            return true;
111
        }
112
        return false;
113
    }
114
115
    /**
116
     * Check if the current order has a substitute order
117
     *
118
     * @return bool
119
     */
120
    public function hasSubstituteOrder()
121
    {
122
        if ($this->getOrder()->getStatus() == Order::STATE_CANCELED && !empty($this->getSubstituteOrder())) {
123
            return true;
124
        }
125
        return false;
126
    }
127
128
    /**
129
     * @return Order|false
130
     */
131
    protected function getSubstituteOrder()
132
    {
133
        if ($this->oSubstituteOrder === null) {
134
            $this->oSubstituteOrder = false;
0 ignored issues
show
Documentation Bug introduced by
It seems like false of type false is incompatible with the declared type Magento\Sales\Model\Order of property $oSubstituteOrder.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
135
136
            $sIncrementId = $this->databaseHelper->getSubstituteOrderIncrementId($this->getOrder()->getIncrementId());
137
            if (!empty($sIncrementId)) {
138
                $oOrder = $this->orderFactory->create()->loadByIncrementId($sIncrementId);
139
                if ($oOrder && $oOrder->getId()) {
140
                    $this->oSubstituteOrder = $oOrder;
141
                }
142
            }
143
        }
144
        return $this->oSubstituteOrder;
145
    }
146
147
    protected function getOrigOrder()
148
    {
149
        $oOrder = $this->orderFactory->create()->loadByIncrementId($this->getOrder()->getPayoneCancelSubstituteIncrementId());
150
        if ($oOrder && $oOrder->getId()) {
151
            return $oOrder;
152
        }
153
        return false;
154
    }
155
156
    /**
157
     * @return string
158
     */
159
    protected function _toHtml()
160
    {
161
        if ($this->hasSubstituteOrder() || $this->isSubstituteOrder()) {
162
            return parent::_toHtml();
163
        }
164
        return '';
165
    }
166
167
    /**
168
     * Returns backend order url
169
     *
170
     * @param  string $sOrderId
171
     * @return string
172
     */
173
    protected function getViewBackendOrderUrl($sOrderId)
174
    {
175
        return $this->urlBuilder->getUrl('sales/order/view', [
176
            'order_id' => $sOrderId
177
        ]);
178
    }
179
180
    /**
181
     * Returns URL to original order
182
     *
183
     * @return string
184
     */
185
    public function getOrigOrderBackendUrl()
186
    {
187
        $oOrigOrder = $this->getOrigOrder();
188
        if ($oOrigOrder) {
189
            return $this->getViewBackendOrderUrl($oOrigOrder->getId());
190
        }
191
        return false;
0 ignored issues
show
Bug Best Practice introduced by
The expression return false returns the type false which is incompatible with the documented return type string.
Loading history...
192
    }
193
194
    /**
195
     * @return string|false
196
     */
197
    public function getSubstituteOrderBackendUrl()
198
    {
199
        $oSubstituteOrder = $this->getSubstituteOrder();
200
        if (!empty($oSubstituteOrder)) {
201
            return $this->getViewBackendOrderUrl($oSubstituteOrder->getId());
202
        }
203
        return false;
204
    }
205
206
    /**
207
     * @return string|false
208
     */
209
    public function getSubstituteOrderIncrementNr()
210
    {
211
        $oSubstituteOrder = $this->getSubstituteOrder();
212
        if (!empty($oSubstituteOrder)) {
213
            return $oSubstituteOrder->getIncrementId();
214
        }
215
        return false;
216
    }
217
}