Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/admin/
Upload File :
Current File : /var/www/homesaver/www/bitrix/admin/receipts.php

<?
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php');

use Bitrix\Main\Page;

// $blogModulePermissions = $APPLICATION->GetGroupRight("blog");
// if ($blogModulePermissions < "R")
// 	$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

IncludeModuleLangFile(__FILE__);
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/ofdferma/prolog.php');

CJSCore::init('sidepanel');

$APPLICATION->SetAdditionalCSS('/bitrix/css/ofdferma/ofdferma_receipts.css');
// Page\Asset::getInstance()->addCss('/bitrix/css/ofdferma/ofdferma_receipts.css');
Page\Asset::getInstance()->addJs('/bitrix/js/ofdferma/ofdferma_receipts.js');

CModule::includeModule('ofdferma');

$sTableID = 'tbl_ofdferma_ofdferma_receipt';

$oSort = new CAdminSorting($sTableID, 'ID', 'asc');
$lAdmin = new CAdminList($sTableID, $oSort);

$receiptTypes = CAllOfdFermaReceipt::$receiptTypes;

$arFilterFields = array(
    'filter_date_create_from',
    'filter_date_create_to',
    'filter_receipt_id',
    'filter_device_id',
    'filter_type',
    'filter_rnm',
    'filter_zn',
    'filter_fn',
    'filter_fdn',
    'filter_fpd',
    'filter_id',
);
$USER_FIELD_MANAGER->AdminListAddFilterFields('OFDFERMA_RECEIPTS', $arFilterFields);

$lAdmin->InitFilter($arFilterFields);

$arFilter = array();
if (strlen($filter_device_id) > 0) {
    $arFilter['DEVICE_ID'] = $filter_device_id;
}
if (strlen($filter_receipt_id) > 0) {
    $arFilter['~RECEIPT_ID'] = $filter_receipt_id;
}
if (strlen($filter_rnm) > 0) {
    $arFilter['RNM'] = $filter_rnm;
}
if (strlen($filter_zn) > 0) {
    $arFilter['ZN'] = $filter_zn;
}
if (strlen($filter_type) > 0) {
    $arFilter['TYPE'] = $filter_type;
}
if (strlen($filter_fn) > 0) {
    $arFilter['FN'] = $filter_fn;
}
if (strlen($filter_fdn) > 0) {
    $arFilter['FDN'] = $filter_fdn;
}
if (strlen($filter_fpd) > 0) {
    $arFilter['FPD'] = $filter_fpd;
}
if (strlen($filter_id) > 0) {
    $arFilter['ID'] = $filter_id;
}
if (strlen($filter_date_create_from) > 0) {
    $arFilter['>=DATE_CREATE'] = trim($filter_date_create_from);
} elseif ($set_filter != 'Y' && $del_filter != 'Y') {
    $filter_date_create_from_FILTER_PERIOD = 'day';
    $filter_date_create_from_FILTER_DIRECTION = 'current';
    $arFilter['>=DATE_CREATE'] = new \Bitrix\Main\Type\Date();
}
if (strlen($filter_date_create_to) > 0) {
    if ($arDate = ParseDateTime($filter_date_create_to, CSite::GetDateFormat('FULL', SITE_ID))) {
        if (strlen($filter_date_create_to) < 11) {
            $arDate['HH'] = 23;
            $arDate['MI'] = 59;
            $arDate['SS'] = 59;
        }

        $filter_date_create_to = date($DB->DateFormatToPHP(CSite::GetDateFormat('FULL', SITE_ID)), mktime($arDate['HH'], $arDate['MI'], $arDate['SS'], $arDate['MM'], $arDate['DD'], $arDate['YYYY']));
        $arFilter['<=DATE_CREATE'] = $filter_date_create_to;
    } else {
        $filter_date_create_to = '';
    }
}

$USER_FIELD_MANAGER->AdminListAddFilter('OFDFERMA_RECEIPTS', $arFilter);

$arHeaders = array(
    array('id' => 'ID', 'content' => 'ID', 'sort' => 'ID', 'default' => true),
    array('id' => 'ORDER_ID', 'content' => 'Номер заказа', 'sort' => 'ORDER_ID', 'default' => true),
    array('id' => 'TOTAL_PRICE', 'content' => 'Сумма чека', 'sort' => 'TOTAL_PRICE', 'default' => true),
    array('id' => 'DEVICE_ID', 'content' => 'ID кассы', 'sort' => 'DEVICE_ID', 'default' => false),
    array('id' => 'TYPE', 'content' => 'Тип операции', 'sort' => 'TYPE', 'default' => false),
    array('id' => 'RNM', 'content' => 'Регистрационный номер кассы', 'sort' => 'RNM', 'default' => false),
    array('id' => 'ZN', 'content' => 'Заводской номер кассы', 'sort' => 'ZN', 'default' => false),
    array(
        'id' => 'FN', 'content' => 'Номер фискального накопителя, установленного в кассу', 'sort' => 'FN',
        'default' => false,
    ),
    array('id' => 'FDN', 'content' => 'Номер фискального документа', 'sort' => 'FDN', 'default' => true),
    array('id' => 'FPD', 'content' => 'Фискальный признак документа', 'sort' => 'FPD', 'default' => false),
    array('id' => 'STATUS_ID', 'content' => 'Статус передачи в ОФД', 'sort' => 'STATUS_ID', 'default' => true),
    array('id' => 'RECEIPT_ID', 'content' => 'Номер чека', 'sort' => 'RECEIPT_ID', 'default' => true),
    array('id' => 'DATE_CREATE', 'content' => 'Дата создания', 'sort' => 'DATE_CREATE', 'default' => true),
    array(
        'id' => 'DATE_UPDATE', 'content' => 'Дата последнего обновления', 'sort' => 'DATE_UPDATE', 'default' => false,
    ),
);

$USER_FIELD_MANAGER->AdminListAddHeaders('OFDFERMA_RECEIPTS', $arHeaders);
$lAdmin->AddHeaders($arHeaders);

$arVisibleColumns = $lAdmin->GetVisibleHeaderColumns();

$arSelectedFields = array(
    'ID', 'ORDER_ID', 'RECEIPT_ID', 'DATE_CREATE', 'DATE_UPDATE', 'TYPE', 'CONTENT', 'TOTAL_PRICE',
    'STATUS_ID', 'STATUS_NAME', 'STATUS_MESSAGE', 'DEVICE_ID', 'RNM', 'ZN', 'FN', 'FDN', 'FPD',
);

foreach ($arVisibleColumns as $val) {
    if (!in_array($val, $arSelectedFields)) {
        $arSelectedFields[] = $val;
    }
}

$dbResultList = COfdFermaReceipt::GetList(
    array($by => $order),
    $arFilter,
    false,
    array('nPageSize' => CAdminResult::GetNavSize($sTableID)),
    $arSelectedFields
);

$dbResultList = new CAdminResult($dbResultList, $sTableID);
$dbResultList->NavStart();

$lAdmin->NavText($dbResultList->GetNavPrint('Чеки'));

while ($arReceipt = $dbResultList->NavNext()) {
    $content = json_decode($arReceipt['CONTENT'], true);

    $receiptUrl = 'https://ofd.ru/rec/' . $arReceipt['FN'] . '/' . $arReceipt['FDN'] . '/' . $arReceipt['FPD'];

    $row =& $lAdmin->AddRow($arReceipt['ID'], $arReceipt, false, 'Показать чек');

    $row->AddField('ID', '<a href="' . $receiptUrl . '" target="_blank" title="Показать чек">' . $arReceipt['ID'] . '</a>');
    $row->AddField('RECEIPT_ID', '<a href="' . $receiptUrl . '" target="_blank">' . $arReceipt['RECEIPT_ID'] . '</a>');
    $row->AddField('ORDER_ID', '<a href="sale_order_edit.php?ID=' . $arReceipt['ORDER_ID'] . '&lang=' . LANG . '" target="_blank">' . $arReceipt['ORDER_ID'] . '</a>');
    $row->AddField('TOTAL_PRICE', CAllOfdFermaReceipt::receiptPriceFormat($arReceipt['TOTAL_PRICE']));
    $row->AddField('DATE_CREATE', $arReceipt['DATE_CREATE']);
    $row->AddField('DATE_UPDATE', $arReceipt['DATE_UPDATE']);
    $row->AddField('DEVICE_ID', $arReceipt['DEVICE_ID']);
    $row->AddField('TYPE', isset($receiptTypes[$arReceipt['TYPE']]) ? $receiptTypes[$arReceipt['TYPE']] : '');
    $row->AddField('RNM', $arReceipt['RNM']);
    $row->AddField('ZN', $arReceipt['ZN']);
    $row->AddField('FN', $arReceipt['FN']);
    $row->AddField('FDN', $arReceipt['FDN']);
    $row->AddField('FPD', $arReceipt['FPD']);
    $row->AddField('STATUS_ID', $arReceipt['STATUS_MESSAGE']);

    $row->AddField('URL', '<a href="' . $receiptUrl . '" target="_blank">' . $receiptUrl . '</a>');

    $USER_FIELD_MANAGER->AddUserFields('OFDFERMA_RECEIPTS', $arReceipt, $row);

    $arActions = array(
        array(
            'ICON' => 'edit', 'TEXT' => 'Показать чек',
            'ACTION' => $lAdmin->ActionRedirect($receiptUrl),
            'DEFAULT' => true,
        ),
        array(
            'ICON' => 'edit', 'TEXT' => 'Проверить статус',
            'ACTION' => 'window.ofdferma.openReceiptStatusPanel("' . $arReceipt['RECEIPT_ID'] . '");',
            'DEFAULT' => true,
        ),
    );

    if ($arReceipt['TYPE'] === 'Income') {
        $arActions[] = array(
            'ICON' => 'edit', 'TEXT' => 'Сформировать чек возврата',
            'ACTION' => 'window.ofdferma.openReceiptRefundPanel("' . $arReceipt['RECEIPT_ID'] . '");',
            'DEFAULT' => true,
        );
    }

    $row->AddActions($arActions);
}

$lAdmin->AddFooter(
    array(
        array(
            'title' => GetMessage('MAIN_ADMIN_LIST_SELECTED'),
            'value' => $dbResultList->SelectedRowsCount(),
        ),
        array(
            'counter' => true,
            'title' => GetMessage('MAIN_ADMIN_LIST_CHECKED'),
            'value' => '0',
        ),
    )
);

$lAdmin->AddAdminContextMenu();

$lAdmin->CheckListMode();


/****************************************************************************/
/***********  MAIN PAGE  ****************************************************/
/****************************************************************************/
$APPLICATION->SetTitle('Реестр чеков');
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php');

?>
    <form name="find_form" method="GET" action="<? echo $APPLICATION->GetCurPage() ?>?">
        <?
        $oFilter = new CAdminFilter(
            $sTableID . '_filter',
            array(
                'ID чека',
                'Номер чека',
                'Тип операции',
                'Дата создания чека',
                'Регистрационный номер кассы',
                'Заводской номер кассы',
                'Номер фискального накопителя',
                'Фискальный признак документа',
                'Номер фискального документа',
            )
        );

        $oFilter->Begin();
        ?>
        <tr>
            <td>ID чека:</td>
            <td><input type="text" name="filter_id" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40"></td>
        </tr>
        <tr>
            <td>Номер чека:</td>
            <td><input type="text" name="filter_receipt_id" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40">
            </td>
        </tr>
        <tr>
            <td>Тип операции:</td>
            <td>
                <select name="filter_type">
                    <option value="NOT_REF">(любой)</option>
                    <?php

                    foreach ($receiptTypes as $value => $label) {
                        $selected = $filter_type === $value ? ' selected' : '';

                        echo '<option value="' . $value . '"' . $selected . '>' . $label . '</option>';
                    }

                    ?>
                </select>
            </td>
        </tr>
        <tr>
            <td>Дата создания чека:</td>
            <td>
                <?= CalendarPeriod(
                    'filter_date_create_from', htmlspecialcharsbx($filter_date_create_from),
                    'filter_date_create_to', htmlspecialcharsbx($filter_date_create_to),
                    'find_form', 'Y'
                ) ?>
            </td>
        </tr>
        <tr>
            <td>Регистрационный номер кассы:</td>
            <td><input type="text" name="filter_rnm" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40"></td>
        </tr>
        <tr>
            <td>Заводской номер кассы:</td>
            <td><input type="text" name="filter_zn" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40"></td>
        </tr>
        <tr>
            <td>Номер фискального накопителя:</td>
            <td><input type="text" name="filter_fn" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40"></td>
        </tr>
        <tr>
            <td>Фискальный признак документа:</td>
            <td><input type="text" name="filter_fpd" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40"></td>
        </tr>
        <tr>
            <td>Номер фискального документа:</td>
            <td><input type="text" name="filter_fdn" value="<? echo htmlspecialcharsbx($filter_id) ?>" size="40"></td>
        </tr>
        <?

        $USER_FIELD_MANAGER->AdminListShowFilter('OFDFERMA_RECEIPTS');

        $oFilter->Buttons(
            array(
                'table_id' => $sTableID,
                'url' => $APPLICATION->GetCurPage(),
                'form' => 'find_form',
            )
        );

        $oFilter->End();

        ?>
    </form>

<?
UnRegisterModuleDependences('sale', 'OnSalePayOrder', 'ofdferma', 'CMainOfdFerma', 'onSalePayRefundOrder');
RegisterModuleDependences('sale', 'OnSalePayOrder', 'ofdferma', 'CMainOfdFerma', 'onSalePayCancelOrder');
$lAdmin->DisplayList();
?>

<?
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php');

function receiptTypeFormat($value)
{
    switch ($value) {
        case 'Income':
            return 'получение денежных средств от покупателя';
        case 'IncomeReturn':
            return 'возврат денежных средств, полученных от покупателя';
        case 'IncomePrepayment':
            return 'авансовый платеж от покупателя';
        case 'IncomePrepaymentReturn':
            return 'возврат аванса';
        case 'Expense':
            return 'выдача денежных средств покупателю';
        case 'ExpenseReturn':
            return 'возврат денежных средств, выданных покупателю';
        default:
            return '';
    }
}