Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/fermaofd.ferma/admin/
Upload File :
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');