| Current Path : /var/www/homesaver/www/bitrix/admin/ |
| 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 '';
}
}