Skip to content

Commit 9f85dbf

Browse files
[PT-1158] Magento2 plugin trying to confirm a declined order (#102)
1 parent bf64ca9 commit 9f85dbf

File tree

4 files changed

+57
-17
lines changed

4 files changed

+57
-17
lines changed

Helpers/Log.php

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@
33
namespace Mondu\Mondu\Helpers;
44

55
use Magento\Framework\Api\SearchCriteriaBuilder;
6-
use \Magento\Framework\App\Helper\AbstractHelper;
7-
use Magento\Framework\Exception\NotFoundException;
6+
use Magento\Framework\App\Helper\AbstractHelper;
87
use Magento\Sales\Api\OrderRepositoryInterface;
98
use Magento\Sales\Model\Order;
10-
use \Mondu\Mondu\Model\LogFactory;
9+
use Mondu\Mondu\Model\LogFactory;
1110
use Mondu\Mondu\Model\Request\Factory;
1211
use Mondu\Mondu\Model\Ui\ConfigProvider;
1312

1413
class Log extends AbstractHelper
1514
{
15+
const MONDU_STATE_CONFIRMED = 'confirmed';
16+
const MONDU_STATE_PARTIALLY_SHIPPED = 'partially_shipped';
17+
const MONDU_STATE_PARTIALLY_COMPLETE = 'partially_complete';
18+
const MONDU_STATE_SHIPPED = 'shipped';
19+
const MONDU_STATE_COMPLETE = 'complete';
20+
1621
/**
1722
* @var LogFactory
1823
*/
@@ -81,9 +86,7 @@ public function getLogCollection($orderUid)
8186
->addFieldToFilter('reference_id', ['eq' => $orderUid])
8287
->load();
8388

84-
$log = $logCollection->getFirstItem();
85-
86-
return $log;
89+
return $logCollection->getFirstItem();
8790
}
8891

8992
/**
@@ -103,15 +106,14 @@ public function logTransaction($order, $response, $addons = null, $paymentMethod
103106
'store_id' => $order->getStoreId(),
104107
'order_id' => $order->getId() ? $order->getId() : $order->getEntityId(),
105108
'reference_id' => $order->getMonduReferenceId(),
106-
// 'transaction_tstamp' => date('Y-m-d H:i:s',time()),
107109
'created_at' => $order->getCreatedAt(),
108110
'customer_id' => $order->getCustomerId(),
109111
'mondu_state' => $response['state'] ?? null,
110-
// 'mode' => $this->helper->getMode() ? 'sandbox' : 'live',
111112
'mode' => $this->_configProvider->getMode(),
112113
'addons' => json_encode($addons),
113114
'payment_method' => $paymentMethod,
114115
'authorized_net_term' => $response['authorized_net_term'],
116+
'is_confirmed' => 1,
115117
'invoice_iban' => $response['merchant']['viban'] ?? null
116118
];
117119
$monduLogger->addData($logData);
@@ -233,6 +235,10 @@ public function updateLogMonduData(
233235
$data = [];
234236
if ($monduState) {
235237
$data['mondu_state'] = $monduState;
238+
239+
if ($monduState == self::MONDU_STATE_CONFIRMED) {
240+
$data['is_confirmed'] = 1;
241+
}
236242
}
237243

238244
if ($viban) {
@@ -253,6 +259,7 @@ public function updateLogMonduData(
253259

254260
$log->addData($data);
255261
$log->save();
262+
256263
return $log->getId();
257264
}
258265

@@ -273,9 +280,9 @@ public function canShipOrder($orderUid)
273280
$log = $logCollection->getFirstItem()->getData();
274281

275282
if (isset($log['mondu_state']) && (
276-
$log['mondu_state'] === 'confirmed' ||
277-
$log['mondu_state'] === 'partially_shipped' ||
278-
$log['mondu_state'] === 'partially_complete'
283+
$log['mondu_state'] === self::MONDU_STATE_CONFIRMED ||
284+
$log['mondu_state'] === self::MONDU_STATE_PARTIALLY_SHIPPED ||
285+
$log['mondu_state'] === self::MONDU_STATE_PARTIALLY_COMPLETE
279286
)) {
280287
return true;
281288
}
@@ -300,10 +307,10 @@ public function canCreditMemo($orderUid)
300307
$log = $logCollection->getFirstItem()->getData();
301308

302309
if (isset($log['mondu_state']) && (
303-
$log['mondu_state'] === 'partially_shipped' ||
304-
$log['mondu_state'] === 'shipped' ||
305-
$log['mondu_state'] === 'partially_complete' ||
306-
$log['mondu_state'] === 'complete'
310+
$log['mondu_state'] === self::MONDU_STATE_PARTIALLY_SHIPPED ||
311+
$log['mondu_state'] === self::MONDU_STATE_SHIPPED ||
312+
$log['mondu_state'] === self::MONDU_STATE_PARTIALLY_COMPLETE ||
313+
$log['mondu_state'] === self::MONDU_STATE_COMPLETE
307314
)
308315
) {
309316
return true;

Model/Request/ConfirmOrder.php

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Magento\Framework\Exception\LocalizedException;
66
use Magento\Framework\HTTP\Client\Curl;
77
use Mondu\Mondu\Model\Ui\ConfigProvider;
8+
use Mondu\Mondu\Model\LogFactory;
89

910
class ConfirmOrder extends CommonRequest implements RequestInterface
1011
{
@@ -18,23 +19,37 @@ class ConfirmOrder extends CommonRequest implements RequestInterface
1819
*/
1920
protected $configProvider;
2021

22+
/**
23+
* @var LogFactory
24+
*/
25+
private $logger;
26+
2127
/**
2228
* @param Curl $curl
2329
* @param ConfigProvider $configProvider
30+
* @param LogFactory $monduLogger
2431
*/
2532
public function __construct(
2633
Curl $curl,
27-
ConfigProvider $configProvider
34+
ConfigProvider $configProvider,
35+
LogFactory $monduLogger
2836
) {
2937
$this->curl = $curl;
3038
$this->configProvider = $configProvider;
39+
$this->logger = $monduLogger;
3140
}
3241

3342
/**
3443
* @inheritDoc
3544
*/
3645
protected function request($params)
3746
{
47+
$log = $this->getLogData($params['orderUid']);
48+
49+
if ($log && $log['is_confirmed']) {
50+
return true;
51+
}
52+
3853
$url = $this->configProvider->getApiUrl('orders') . '/' . $params['orderUid'] . '/confirm';
3954

4055
$resultJson = $this->sendRequestWithParams(
@@ -55,4 +70,20 @@ protected function request($params)
5570

5671
return $result;
5772
}
73+
74+
/**
75+
* @param $orderUuid
76+
*
77+
* @return mixed
78+
*/
79+
private function getLogData($orderUuid)
80+
{
81+
$monduLogger = $this->logger->create();
82+
83+
$logCollection = $monduLogger->getCollection()
84+
->addFieldToFilter('reference_id', ['eq' => $orderUuid])
85+
->load();
86+
87+
return $logCollection && $logCollection->getFirstItem()->getData() ? $logCollection->getFirstItem()->getData() : false;
88+
}
5889
}

etc/db_schema.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<column xsi:type="text" name="addons" comment="Order addons"/>
1212
<column xsi:type="varchar" name="invoice_iban" comment="Iban"/>
1313
<column xsi:type="tinyint" name="skip_ship_observer" padding="2" comment="Skip ship observer"/>
14+
<column xsi:type="smallint" name="is_confirmed" unsigned="true" nullable="false" default="0" comment="Is order was confirmed"/>
1415
<column xsi:type="varchar" name="payment_method" comment="Mondu payment method"/>
1516
<column xsi:type="int" name="authorized_net_term" unsigned="true" nullable="true" comment="Mondu authorized net term"/>
1617

etc/db_schema_whitelist.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"addons": true,
1313
"invoice_iban": true,
1414
"skip_ship_observer": true,
15+
"is_confirmed": true,
1516
"payment_method": true,
1617
"authorized_net_term": true
1718
},
@@ -39,4 +40,4 @@
3940
"mondu_reference_id": true
4041
}
4142
}
42-
}
43+
}

0 commit comments

Comments
 (0)