| Current Path : /var/www/homesaver/www/bitrix/modules/fermaofd.ferma/ |
| Current File : /var/www/homesaver/www/bitrix/modules/fermaofd.ferma/options.php |
<?php
use Bitrix\Main\Page\Asset;
IncludeModuleLangFile(__FILE__);
require __DIR__ . '/const.php';
CModule::IncludeModule(FERMAOFD_FERMA_MODULE_ID);
CModule::IncludeModule('sale');
/**
* @global CUser $USER
* @global CMain $APPLICATION
**/
$canRead = $USER->CanDoOperation('ofdferma_module_settings_read');
$canWrite = $USER->CanDoOperation('ofdferma_module_settings_write');
if ($canRead || $canWrite) {
IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/main/options.php');
IncludeModuleLangFile(__FILE__);
Asset::getInstance()->addJs('/bitrix/js/' . FERMAOFD_FERMA_MODULE_ID . '/ofdferma_options.js', false);
$arFermaUrlValues = [
'https://ferma-test.ofd.ru' => GetMessage('FERMAOFD_URL_DEMO'),
'https://ferma.ofd.ru' => GetMessage('FERMAOFD_URL_PROD'),
];
$arFermaUrlOptions = [
'REFERENCE' => array_values($arFermaUrlValues),
'REFERENCE_ID' => array_keys($arFermaUrlValues),
];
$arTaxationValues = [
'Common' => GetMessage('FERMAOFD_TAXATION_COMMON'),
'SimpleIn' => GetMessage('FERMAOFD_TAXATION_SIMPLE_IN'),
'SimpleInOut' => GetMessage('FERMAOFD_TAXATION_SIMPLE_IN_OUT'),
'Unified' => GetMessage('FERMAOFD_TAXATION_UNIFIED'),
'UnifiedAgricultural' => GetMessage('FERMAOFD_TAXATION_UNIFIED_AGRICULTURAL'),
'Patent' => GetMessage('FERMAOFD_TAXATION_PATENT'),
];
$arTaxationOptions = [
'REFERENCE' => array_values($arTaxationValues),
'REFERENCE_ID' => array_keys($arTaxationValues),
];
$arPaymentMethodValues = [
'1' => GetMessage('FERMAOFD_PAYMENT_METHOD_PREPAYMENT_100'),
'2' => GetMessage('FERMAOFD_PAYMENT_METHOD_PREPAYMENT'),
'3' => GetMessage('FERMAOFD_PAYMENT_METHOD_PREPAID'),
'4' => GetMessage('FERMAOFD_PAYMENT_METHOD_COMPLETE_PAYMENT'),
'5' => GetMessage('FERMAOFD_PAYMENT_METHOD_PARTIAL_PAYMENT'),
'6' => GetMessage('FERMAOFD_PAYMENT_METHOD_CREDIT_TRANSFER'),
'7' => GetMessage('FERMAOFD_PAYMENT_METHOD_CREDIT_PAYMENT'),
];
$arPaymentMethodOptions = [
'REFERENCE' => array_values($arPaymentMethodValues),
'REFERENCE_ID' => array_keys($arPaymentMethodValues),
];
$arPaymentTypeValues = [];
foreach (CPaymentTypeCollection::$collection as $item) {
$arPaymentTypeValues[$item['id']] = $item['name'];
}
$arPaymentTypeOptions = [
'REFERENCE' => array_values($arPaymentTypeValues),
'REFERENCE_ID' => array_keys($arPaymentTypeValues),
];
$arPaymentVatValues = [];
foreach (CVatCollection::$collection as $k => $v) {
$arPaymentVatValues[$v['code']] = $v['name'];
}
$arPaymentVatOptions = [
'REFERENCE' => array_values($arPaymentVatValues),
'REFERENCE_ID' => array_keys($arPaymentVatValues),
];
$arPaymentDeliveryValues = [
'Include' => GetMessage('FERMAOFD_DELIVERY_IN_RECEIPT_INCLUDE'),
'Exclude' => GetMessage('FERMAOFD_DELIVERY_IN_RECEIPT_EXCLUDE'),
];
$arPaymentDeliveryOptions = [
'REFERENCE' => array_values($arPaymentDeliveryValues),
'REFERENCE_ID' => array_keys($arPaymentDeliveryValues),
];
$arPayTypeValues = [
'0' => GetMessage('FERMAOFD_PAY_TYPE_CASH'),
'1' => GetMessage('FERMAOFD_PAY_TYPE_CASHLESS'),
'2' => GetMessage('FERMAOFD_PAY_TYPE_ADVANCE'),
'3' => GetMessage('FERMAOFD_PAY_TYPE_CREDIT'),
'4' => GetMessage('FERMAOFD_PAY_TYPE_OTHER'),
];
$arPayTypeOptions = [
'REFERENCE' => array_values($arPayTypeValues),
'REFERENCE_ID' => array_keys($arPayTypeValues),
];
$sitesCheckbox = [];
$sitesRes = CSite::GetList($by = 'sort', $order = 'asc');
while ($site = $sitesRes->Fetch()) {
$sitesCheckbox[] = [sprintf('site_enabled_%s', $site['ID']), $site['NAME'], ['checkbox', 'Y']];
}
$arMainOptions = array_merge(
[
['', GetMessage('FERMAOFD_API_SETTINGS_TITLE'), ['heading']],
['api_host', GetMessage('FERMAOFD_URL_API'), ['selectbox', $arFermaUrlOptions]],
['api_login', GetMessage('FERMAOFD_LOGIN'), ['text', 25]],
['api_password', GetMessage('FERMAOFD_PASSWORD'), ['password', 25]],
['', GetMessage('FERMAOFD_COMPANY_SETTINGS_TITLE'), ['heading']],
['agent_inn', GetMessage('FERMAOFD_INN'), ['text', 15]],
['agent_taxation_system', GetMessage('FERMAOFD_TAX_SYSTEM'), ['selectbox', $arTaxationOptions]],
['agent_auto_create', GetMessage('FERMAOFD_AUTO_SUBMIT_AFTER_PAY'), ['checkbox', 'Y']],
['', GetMessage('FERMAOFD_SITES_SETTINGS_TITLE'), ['heading']],
],
$sitesCheckbox,
[
['', GetMessage('FERMAOFD_NOTIFICATIONS_SETTINGS_TITLE'), ['heading']],
['errors_email', GetMessage('FERMAOFD_ERROR_REPORTING_EMAIL'), ['text', 25]],
['', GetMessage('FERMAOFD_DEBUG_SETTINGS_TITLE'), ['heading']],
['receipt_json_log', GetMessage('FERMAOFD_LOG_RECEIPT_JSON'), ['checkbox', 'N']],
['api_log', GetMessage('FERMAOFD_LOG_FERMA_HTTP'), ['checkbox', 'N']],
]
);
$statuses = array_merge([
'null' => ' - �� �������� ��� - ',
], \Bitrix\Sale\OrderStatus::getAllStatusesNames());
$arStatusesOptions = [
'REFERENCE' => array_values($statuses),
'REFERENCE_ID' => array_keys($statuses),
];
$arPaymentOptions = [
['', GetMessage('FERMAOFD_RECEIPT_SETTINGS_TITLE'), ['heading']],
['payment_default_type', GetMessage('FERMAOFD_DEFAULT_PAYMENT_TYPE'), ['selectbox', $arPaymentTypeOptions, '1']],
['payment_default_vat', GetMessage('FERMAOFD_DEFAULT_VAT'), ['selectbox', $arPaymentVatOptions, 'VatNo']],
['payment_delivery', GetMessage('FERMAOFD_DELIVERY_IN_RECEIPT'), ['selectbox', $arPaymentDeliveryOptions, 'Include']],
['', GetMessage('FERMAOFD_RECEIPT_PREPAYMENT'), ['heading']],
['receipt_prepayment', GetMessage('FERMAOFD_ORDER_STATUS_SEND'), ['selectbox', $arStatusesOptions, 'null']],
['receipt_prepayment_default_method', GetMessage('FERMAOFD_DEFAULT_PAYMENT_METHOD'), ['selectbox', $arPaymentMethodOptions, '1']],
['', GetMessage('FERMAOFD_RECEIPT_PAYMENT'), ['heading']],
['receipt_payment', GetMessage('FERMAOFD_ORDER_STATUS_SEND'), ['selectbox', $arStatusesOptions, 'P']],
['receipt_payment_default_method', GetMessage('FERMAOFD_DEFAULT_PAYMENT_METHOD'), ['selectbox', $arPaymentMethodOptions, '4']],
['', GetMessage('FERMAOFD_RECEIPT_REFUND'), ['heading']],
['receipt_refund', GetMessage('FERMAOFD_ORDER_STATUS_SEND'), ['selectbox', $arStatusesOptions, 'null']],
['receipt_refund_default_method', GetMessage('FERMAOFD_DEFAULT_PAYMENT_METHOD'), ['selectbox', $arPaymentMethodOptions, '4']],
['', GetMessage('FERMAOFD_PAYMENT_METHOD_SETTINGS_TITLE'), ['heading']]
];
$systems = \Bitrix\Sale\PaySystem\Manager::getList();
foreach ($systems as $system) {
$arPaymentOptions[] = [
'payment_method_' . $system['ID'],
$system['NAME'],
['selectbox', $arPayTypeOptions, isCash($system['NAME']) ? '0' : '1'],
];
}
$aTabs = [
[
'DIV' => 'edit1',
'TAB' => GetMessage('FERMAOFD_MAIN_SETTINGS_TITLE'),
'ICON' => 'security_settings',
'TITLE' => GetMessage('MAIN_TAB_TITLE_SET'),
],
[
'DIV' => 'edit2',
'TAB' => GetMessage('FERMAOFD_PAYMENT_SETTINGS_TITLE'),
'ICON' => 'security_settings',
'TITLE' => GetMessage('MAIN_TAB_TITLE_SET'),
],
];
$tabControl = new CAdminTabControl('tabControl', $aTabs);
if ($_SERVER['REQUEST_METHOD'] === 'POST'
&& $_REQUEST['Update'] . $_REQUEST['Apply'] . $_REQUEST['RestoreDefaults'] !== ''
&& $canWrite && check_bitrix_sessid()) {
if ($_REQUEST['RestoreDefaults'] != '') {
COption::RemoveOption(FERMAOFD_FERMA_MODULE_ID);
} else {
foreach ($arMainOptions as $arOption) {
$name = $arOption[0];
$val = trim($_REQUEST[$name], " \t\n\r");
$type = $arOption[2][0];
if ($type === 'heading') {
continue;
}
if ($type === 'checkbox' && $val !== 'Y') {
$val = 'N';
}
COption::SetOptionString(FERMAOFD_FERMA_MODULE_ID, $name, $val, $arOption[1]);
}
foreach ($arPaymentOptions as $arOption) {
$name = $arOption[0];
$val = trim($_REQUEST[$name], " \t\n\r");
$type = $arOption[2][0];
if ($type === 'heading') {
continue;
}
if ($type === 'checkbox' && $val !== 'Y') {
$val = 'N';
}
COption::SetOptionString(FERMAOFD_FERMA_MODULE_ID, $name, $val, $arOption[1]);
}
}
if ($_REQUEST['back_url_settings'] !== '') {
if ($_REQUEST['Update'] !== '') {
LocalRedirect($_REQUEST['back_url_settings']);
}
$returnUrl = $_GET['return_url'] ? urlencode($_GET['return_url']) : '';
LocalRedirect($APPLICATION->GetCurPage() . '?mid=' . urlencode(FERMAOFD_FERMA_MODULE_ID) . '&lang=' . urlencode(LANGUAGE_ID) . '&back_url_settings=' . $returnUrl . '&' . $tabControl->ActiveTabParam());
} else {
LocalRedirect($APPLICATION->GetCurPage() . '?mid=' . urlencode(FERMAOFD_FERMA_MODULE_ID) . '&lang=' . urlencode(LANGUAGE_ID) . '&' . $tabControl->ActiveTabParam());
}
}
$message = CSecurityIPRule::CheckAntiFile(true);
if ($message) {
echo $message->Show();
}
$availableMessagePlaceholders = CSecurityEventMessageFormatter::getAvailableMessagePlaceholders();
$availableUserInfoPlaceholders = CSecurityEventMessageFormatter::getAvailableUserInfoPlaceholders();
?>
<form method="post"
action="<? echo $APPLICATION->GetCurPage() ?>?mid=<?= urlencode(FERMAOFD_FERMA_MODULE_ID) ?>&lang=<?= LANGUAGE_ID ?>">
<?php
$tabControl->Begin();
$tabControl->BeginNextTab();
renderWidgets($arMainOptions);
$tabControl->BeginNextTab();
renderWidgets($arPaymentOptions);
$tabControl->Buttons(); ?>
<input <? if (!$canWrite) echo 'disabled' ?> type="submit" name="Update" value="<?= GetMessage('MAIN_SAVE') ?>"
title="<?= GetMessage('MAIN_OPT_SAVE_TITLE') ?>">
<input <? if (!$canWrite) echo 'disabled' ?> type="submit" name="Apply"
value="<?= GetMessage('MAIN_OPT_APPLY') ?>"
title="<?= GetMessage('MAIN_OPT_APPLY_TITLE') ?>">
<? if ($_REQUEST['back_url_settings'] !== ''): ?>
<input <? if (!$canWrite) echo 'disabled' ?> type="button" name="Cancel"
value="<?= GetMessage('MAIN_OPT_CANCEL') ?>"
title="<?= GetMessage('MAIN_OPT_CANCEL_TITLE') ?>"
onclick="window.location='<? echo htmlspecialcharsbx(CUtil::addslashes($_REQUEST['back_url_settings'])) ?>'">
<input type="hidden" name="back_url_settings"
value="<?= htmlspecialcharsbx($_REQUEST['back_url_settings']) ?>">
<? endif ?>
<input <? if (!$canWrite) echo 'disabled' ?> type="submit" name="RestoreDefaults"
title="<? echo GetMessage('MAIN_HINT_RESTORE_DEFAULTS') ?>"
onclick="return confirm('<? echo AddSlashes(GetMessage('MAIN_HINT_RESTORE_DEFAULTS_WARNING')) ?>')"
value="<? echo GetMessage('MAIN_RESTORE_DEFAULTS') ?>">
<?= bitrix_sessid_post(); ?>
<? $tabControl->End(); ?>
</form>
<?php
}
function isCash(string $name): bool
{
return mb_stripos($name, '�����') === 0;
}
function renderWidgets(array $options)
{
foreach ($options as $arOption):
[$id, $label, $type, $attrs] = $arOption;
$note = $attrs['note'] ?: null;
$styles = $attrs['styles'] ?: null;
if ($type[0] == 'heading'): ?>
<tr class="heading">
<td colspan="2"><b><? echo $arOption[1] ?></b></td>
</tr>
<? else: ?>
<tr id="group-<?= $id ?>" <?= $styles ? "style=\"$styles\"" : '' ?>>
<td width="40%">
<label for="<?= htmlspecialcharsbx($id) ?>"><?= $arOption[1] ?>
<? if ($note !== null): ?>
<span class="required"><sup><?= $note ?></sup></span>
<? endif; ?>
:</label>
</td>
<td width="60%">
<? if ($type[0] == 'checkbox'): ?>
<?
$val = COption::GetOptionString(FERMAOFD_FERMA_MODULE_ID, $id, isset($type[1]) ? $type[1] : 'N');
?>
<input type="checkbox" name="<? echo htmlspecialcharsbx($id) ?>"
id="<? echo htmlspecialcharsbx($id) ?>" value="Y"<? if ($val == 'Y') {
echo ' checked';
} ?>>
<? elseif ($type[0] == 'text'): ?>
<? $val = COption::GetOptionString(FERMAOFD_FERMA_MODULE_ID, $id); ?>
<input type="text" size="<? echo $type[1] ?>" maxlength="255"
value="<? echo htmlspecialcharsbx($val) ?>" name="<? echo htmlspecialcharsbx($id) ?>"
id="<? echo htmlspecialcharsbx($id) ?>">
<? elseif ($type[0] == 'password'): ?>
<? $val = COption::GetOptionString(FERMAOFD_FERMA_MODULE_ID, $id); ?>
<input type="password" size="<? echo $type[1] ?>" maxlength="255"
value="<? echo htmlspecialcharsbx($val) ?>" name="<? echo htmlspecialcharsbx($id) ?>"
id="<? echo htmlspecialcharsbx($id) ?>">
<? elseif ($type[0] == 'textarea'): ?>
<? $val = COption::GetOptionString(FERMAOFD_FERMA_MODULE_ID, $id); ?>
<textarea rows="<? echo $type[1] ?>" cols="<? echo $type[2] ?>"
name="<? echo htmlspecialcharsbx($id) ?>"
id="<? echo htmlspecialcharsbx($id) ?>"><? echo htmlspecialcharsbx($val) ?></textarea>
<? elseif ($type[0] == 'selectbox'):
$val = COption::GetOptionString(FERMAOFD_FERMA_MODULE_ID, $id, isset($type[2]) ? $type[2] : '');
echo SelectBoxFromArray($id, $type[1], $val);
endif ?>
</td>
</tr>
<? endif; ?>
<? endforeach;
}