| Current Path : /var/www/homesaver/www/bitrix/modules/fermaofd.ferma/admin/ |
| Current File : /var/www/homesaver/www/bitrix/modules/fermaofd.ferma/admin/receipt_status.php |
<?
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php');
require_once __DIR__ . '/../const.php';
use Bitrix\Main\Page;
use Bitrix\Main\Text\Encoding;
use Bitrix\Main\Web\Json;
// $blogModulePermissions = $APPLICATION->GetGroupRight("blog");
// if ($blogModulePermissions < "R")
// $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__DIR__ . '/receipt-popup.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . FERMAOFD_FERMA_MODULE_ID . '/prolog.php');
CJSCore::init('sidepanel');
$APPLICATION->SetAdditionalCSS('/bitrix/css/' . FERMAOFD_FERMA_MODULE_ID . '/ofdferma_receipts.css');
// Page\Asset::getInstance()->addCss('/bitrix/css/'.FERMAOFD_FERMA_MODULE_ID.'/ofdferma_receipts.css');
Page\Asset::getInstance()->addJs('/bitrix/js/' . FERMAOFD_FERMA_MODULE_ID . '/ofdferma_receipts.js');
CModule::includeModule(FERMAOFD_FERMA_MODULE_ID);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$receiptId = isset($_POST['receiptId']) ? $_POST['receiptId'] : null;
if (empty($receiptId)) {
echo CUtil::PhpToJSObject([
'result' => 'failed',
'message' => GetMessage('FERMAOFD_EMPTY_ORDER_ID'),
]);
exit;
}
$receipt = COfdFermaReceipt::GetByReceiptID($receiptId);
if (empty($receipt)) {
echo CUtil::PhpToJSObject([
'result' => 'failed',
'message' => GetMessage('FERMAOFD_RECEIPT_NOT_FOUND'),
]);
exit;
}
try {
$fermaApiClient = CMainOfdFerma::getApiService();
} catch (\RuntimeException $e) {
echo CUtil::PhpToJSObject([
'result' => 'failed',
'message' => GetMessage('FERMAOFD_FAILED_CREATE_API_CLIENT'),
]);
exit;
}
try {
$response = $fermaApiClient->getElectronReceiptStatus($receipt['RECEIPT_ID']);
} catch (CFermaApiException $e) {
echo CUtil::PhpToJSObject([
'result' => 'failed',
'message' => sprintf(GetMessage('FERMAOFD_FAILED_API_REQUEST') . ': %s', $e->getMessage()),
]);
exit;
}
if ($response['Status'] === 'Failed') {
if (isset($response['Error']['Message'])) {
echo CUtil::PhpToJSObject([
'result' => 'failed',
'message' => sprintf(GetMessage('FERMAOFD_FAILED_CHECK_RECEIPT') . ': %s.', $response['Error']['Message']),
]);
} else {
echo CUtil::PhpToJSObject([
'result' => 'failed',
'message' => GetMessage('FERMAOFD_FAILED_CHECK_RECEIPT_UNEXPECTED'),
]);
}
exit;
}
$data = $response['Data'];
COfdFermaReceipt::Update($receipt['ID'], [
'STATUS_ID' => $data['StatusCode'],
'STATUS_NAME' => $data['StatusName'],
'STATUS_MESSAGE' => $data['StatusMessage'],
'DESCRIPTION' => $data['Description'],
'DEVICE_ID' => $data['Device']['DeviceId'],
'RNM' => $data['Device']['RNM'],
'ZN' => $data['Device']['ZN'],
'FN' => $data['Device']['FN'],
'FDN' => $data['Device']['FDN'],
'FPD' => $data['Device']['FPD'],
]);
echo CUtil::PhpToJSObject([
'result' => 'success',
'data' => $data,
]);
exit;
}
$APPLICATION->SetTitle(GetMessage('FERMAOFD_CHECK_RECEIPT'));
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php');
if (!ofdferma_curlChecker()) {
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');
exit;
}
$receiptId = $_REQUEST['receiptId'];
?>
<?php
if (empty($receiptId)) {
?>
<div class="adm-info-message-wrap adm-info-message-red">
<div class="adm-info-message">
<span><?= GetMessage('FERMAOFD_EMPTY_RECEIPT_ID') ?></span>
<div class="adm-info-message-icon"></div>
</div>
</div>
<?php
} else {
?>
<div class="ofd-loader" id="ofd-loader">
<?= GetMessage('FERMAOFD_PLEASE_WAIT') ?>
</div>
<div class="ofd-result" id="ofd-result" style="display: none">
<table class="ofd-result__table">
<tbody>
<tr>
<td><?= GetMessage('FERMAOFD_RECEIPT_STATUS') ?>:</td>
<td>#StatusMessage# (id: #StatusCode#)</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_RECEIPT_DATE') ?>:</td>
<td>#ReceiptDateUtc#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_CASHBOX_N') ?>:</td>
<td>#Device.DeviceId#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_CASHBOX_RNM') ?>:</td>
<td>#Device.RNM#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_CASHBOX_ZN') ?>:</td>
<td>#Device.ZN#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_CASHBOX_FN') ?>:</td>
<td>#Device.FN#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_CASHBOX_FDN') ?>:</td>
<td>#Device.FDN#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_CASHBOX_FPD') ?>:</td>
<td>#Device.FPD#</td>
</tr>
<tr>
<td><?= GetMessage('FERMAOFD_DESCRIPTION') ?>:</td>
<td>#Device.DESCRIPTION#</td>
</tr>
</tbody>
</table>
</div>
<div class="ofd-actions" id="ofd-actions" style="display: none">
<input type="button" class="adm-btn" id="refresh-btn" value="<?= GetMessage('FERMAOFD_RETRY_REQUEST') ?>">
</div>
<script>
BX.ready(function () {
var $loader = BX('ofd-loader');
var $result = BX('ofd-result');
var $refreshBtn = BX('refresh-btn');
var $actions = BX('ofd-actions');
var template = $result.innerHTML;
BX.cleanNode($result);
BX.show($result);
BX.bind($refreshBtn, 'click', function (e) {
e.preventDefault();
refreshStatus();
});
runCheck();
function refreshStatus() {
startLoader();
BX.cleanNode($result);
runCheck();
}
function runCheck() {
window.ofdferma.checkReceiptStatus(
<?=Json::encode($receiptId)?>,
function (response) {
finishLoader();
if (response.result === 'failed') {
$result.append(BX.create('div', {
html: '<div class="adm-info-message-wrap adm-info-message-red">' +
'<div class="adm-info-message">' +
'<span>' + response.message + '</span>' +
'<div class="adm-info-message-icon"></div>' +
'</div>' +
'</div>'
}));
}
if (response.result === 'success') {
var data = response.data;
var content = template
.replace('#StatusMessage#', data['StatusMessage'] || '')
.replace('#StatusCode#', data['StatusCode'] || '')
.replace('#ReceiptDateUtc#', data['ReceiptDateUtc'] || '')
.replace('#Device.DeviceId#', data['Device']['DeviceId'] || '')
.replace('#Device.RNM#', data['Device']['RNM'] || '')
.replace('#Device.ZN#', data['Device']['ZN'] || '')
.replace('#Device.FN#', data['Device']['FN'] || '')
.replace('#Device.FDN#', data['Device']['FDN'] || '')
.replace('#Device.FPD#', data['Device']['FPD'] || '')
.replace('#Device.DESCRIPTION#', data['Description'] || '');
$result.append(BX.create('div', {
html: content
}));
}
},
function (response) {
finishLoader();
$result.append(BX.create('div', {
html: '<div class="adm-info-message-wrap adm-info-message-red">' +
'<div class="adm-info-message">' +
'<span><?=GetMessage('FERMAOFD_FAILED_UNEXPECTED')?></span>' +
'<div class="adm-info-message-icon"></div>' +
'</div>' +
'</div>'
}));
}
);
}
function startLoader() {
BX.show($loader);
BX.hide($actions);
window.parent.BX.showWait();
}
function finishLoader() {
BX.hide($loader);
BX.show($actions);
window.parent.BX.closeWait();
}
});
</script>
<?php
}
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');