use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Application;
use Bitrix\Sale\Internals\PaySystemActionTable;
use Bitrix\Main\Page\Asset;
use Bitrix\Sale\Helpers\Admin\BusinessValueControl;
use Bitrix\Sale\Services\PaySystem\Restrictions;
use Bitrix\Sale\PaySystem;
use Bitrix\Sale\BusinessValue;
use Bitrix\Main\SystemException;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/include.php");
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/lib/helpers/admin/businessvalue.php');
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
Loc::loadMessages(__FILE__);
$lheStyle = '
';
Asset::getInstance()->addString($lheStyle);
Asset::getInstance()->addJs("/bitrix/js/sale/pay_system.js");
\Bitrix\Sale\Delivery\Restrictions\Manager::getClassesList();
$instance = Application::getInstance();
$context = $instance->getContext();
$request = $context->getRequest();
$server = $context->getServer();
$documentRoot = Application::getDocumentRoot();
$id = (int)$request->get('ID');
if (CModule::IncludeModule("fileman"))
$bFilemanModuleInst = true;
$aTabs = array(
array(
"DIV" => "edit1",
"TAB" => GetMessage("SPSN_TAB_PAYSYS"),
"ICON" => "sale",
"TITLE" => GetMessage("SPSN_TAB_PAYSYS_DESCR"),
)
);
if ($id > 0 && $request->getRequestMethod() !== 'POST')
{
$aTabs[] = array(
"DIV" => "edit3",
"TAB" => GetMessage("SPS_PAY_SYSTEM_RESTRICTION"),
"ICON" => "sale",
"TITLE" => GetMessage("SPS_PAY_SYSTEM_RESTRICTION_DESC"),
);
}
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$errorMessage = '';
$businessValueControl = new BusinessValueControl('PAYSYSTEM');
if ($server->getRequestMethod() == "POST"
&& ($request->get('save') !== null || $request->get('apply') !== null)
&& $saleModulePermissions == "W"
&& check_bitrix_sessid())
{
$name = trim($request->get('NAME'));
if ($name == '')
$errorMessage .= Loc::getMessage("ERROR_NO_NAME")."
";
if ($request->get('ACTION_FILE') == '')
$errorMessage .= Loc::getMessage("ERROR_NO_ACTION_FILE")."
";
$sort = (int)$request->get('SORT');
if ($sort <= 0)
$sort = 100;
$actionFile = $request->get('ACTION_FILE');
if (!$actionFile)
$errorMessage = Loc::getMessage('SALE_PSE_ERROR_ACTION_SAVE');
if ($errorMessage === '')
{
$fields = array(
"NAME" => $name,
"PSA_NAME" => $request->get('PSA_NAME'),
"ACTIVE" => ($request->get('ACTIVE') != 'Y') ? 'N' : $request->get('ACTIVE'),
"CODE" => $request->get('CODE'),
"NEW_WINDOW" => ($request->get('NEW_WINDOW') != 'Y') ? 'N' : $request->get('NEW_WINDOW'),
"ALLOW_EDIT_PAYMENT" => ($request->get('ALLOW_EDIT_PAYMENT') != 'Y') ? 'N' : $request->get('ALLOW_EDIT_PAYMENT'),
"IS_CASH" => (!in_array($request->get('IS_CASH'), array('Y', 'A'))) ? 'N' : $request->get('IS_CASH'),
"SORT" => $sort,
"ENCODING" => $request->get('ENCODING'),
"DESCRIPTION" => $request->get('DESCRIPTION'),
"ACTION_FILE" => $actionFile
);
if ($request->get('PS_MODE'))
$fields['PS_MODE'] = $request->get('PS_MODE');
$path = PaySystem\Manager::getPathToHandlerFolder($actionFile);
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$path.'/handler.php'))
{
require_once $documentRoot.$path.'/handler.php';
$className = PaySystem\Manager::getClassNameFromPath($path);
$fields['HAVE_PAYMENT'] = 'Y';
if (is_subclass_of($className, '\Bitrix\Sale\PaySystem\IPrePayable'))
$fields['HAVE_PREPAY'] = 'Y';
if (is_subclass_of($className, '\Bitrix\Sale\PaySystem\ServiceHandler'))
$fields['HAVE_RESULT_RECEIVE'] = 'Y';
if (is_subclass_of($className, '\Bitrix\Sale\PaySystem\IPayable'))
$fields['HAVE_PRICE'] = 'Y';
}
else
{
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$actionFile."/pre_payment.php"))
$fields["HAVE_PREPAY"] = "Y";
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$actionFile."/result.php"))
$fields["HAVE_RESULT"] = "Y";
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$actionFile."/action.php"))
$fields["HAVE_ACTION"] = "Y";
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$actionFile."/payment.php"))
$fields["HAVE_PAYMENT"] = "Y";
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$actionFile."/result_rec.php"))
$fields["HAVE_RESULT_RECEIVE"] = "Y";
}
if($request->get('TARIF') !== null)
{
if ($path !== null)
{
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$path.'/handler.php'))
{
require_once $documentRoot.$path.'/handler.php';
$className = PaySystem\Manager::getClassNameFromPath($actionFile);
$fields["TARIF"] = $className::prepareToField($request->get('TARIF'));
}
}
else
{
$fields["TARIF"] = CSalePaySystemsHelper::prepareTarifForSaving($actionFile, $request->get('TARIF'));
}
}
$isConsumerChange = $request->get('ACTION_FILE') != $request->get('PRIOR_ACTION_FILE');
$file = $request->getFile('LOGOTIP');
if ($file !== null && $file["error"] == 0)
{
$imageFileError = CFile::CheckImageFile($file);
if ($imageFileError === null)
{
$fields['LOGOTIP'] = $file;
$fields['LOGOTIP']['del'] = trim($request->get("LOGOTIP_del"));
$fields['LOGOTIP']['MODULE_ID'] = "sale";
CFile::SaveForDB($fields, 'LOGOTIP', 'sale/paysystem/logotip');
}
else
{
$errorMessage .= $imageFileError.'.
';
}
}
elseif ($request->get("LOGOTIP_del") !== null && $request->get("LOGOTIP_del") == 'Y')
{
$fields['LOGOTIP'] = 0;
}
elseif ($id <= 0)
{
$image = '/bitrix/images/sale/sale_payments/'.$request->get('ACTION_FILE').'.png';
if (\Bitrix\Main\IO\File::isFileExists($documentRoot.$image))
{
$fields['LOGOTIP'] = CFile::MakeFileArray($image);
$fields['LOGOTIP']['MODULE_ID'] = "sale";
CFile::SaveForDB($fields, 'LOGOTIP', 'sale/paysystem/logotip');
}
}
$data = PaySystem\Manager::getHandlerDescription($request->get('ACTION_FILE'));
if ($id > 0)
{
$result = PaySystemActionTable::update($id, $fields);
if (!$result->isSuccess())
$errorMessage .= join(',', $result->getErrorMessages()).".
";
}
else
{
$result = PaySystemActionTable::add($fields);
if (!$result->isSuccess())
{
$errorMessage .= join(',', $result->getErrorMessages());
}
else
{
$id = $result->getId();
if ($id > 0)
{
$fields = array(
'PARAMS' => serialize(array('BX_PAY_SYSTEM_ID' => $id)),
'PAY_SYSTEM_ID' => $id
);
$result = PaySystemActionTable::update($id, $fields);
if (!$result->isSuccess())
$errorMessage .= join(',', $result->getErrorMessages());
$service = new PaySystem\Service($fields);
$currency = $service->getCurrency();
if ($currency)
{
$params = array(
'SERVICE_ID' => $id,
'SERVICE_TYPE' => Restrictions\Manager::SERVICE_TYPE_PAYMENT,
'PARAMS' => array('CURRENCY' => $currency)
);
Restrictions\Manager::getClassesList();
$saveResult = \Bitrix\Sale\Services\PaySystem\Restrictions\Currency::save($params);
if (!$saveResult->isSuccess())
$errorMessage .= Loc::getMessage('SALE_PSE_ERROR_RSRT_CURRENCY_SAVE');
}
}
}
}
if ($errorMessage === '')
{
if ($isConsumerChange)
{
$priorActionFile = $request->get('PRIOR_ACTION_FILE');
if (empty($priorActionFile))
BusinessValue::addConsumer('PAYSYSTEM_NEW', $data);
else
BusinessValue::changeConsumer('PAYSYSTEM_'.$id, $data);
}
if ($businessValueControl->setMapFromPost())
{
if ($isConsumerChange && empty($priorActionFile))
$businessValueControl->changeConsumerKey('PAYSYSTEM_NEW', 'PAYSYSTEM_'.$id);
if (!$businessValueControl->saveMap())
$errorMessage .= Loc::getMessage('SALE_PSE_ERROR_SET_BIZVAL_MAP');
}
else
{
$errorMessage .= Loc::getMessage('SALE_PSE_ERROR_SET_BIZVAL_MAP');
}
}
}
if ($errorMessage === '')
{
if (strlen($request->get('apply')) > 0)
LocalRedirect("sale_pay_system_edit.php?ID=".$id."&lang=".$context->getLanguage()."&".$tabControl->ActiveTabParam());
else
LocalRedirect("sale_pay_system.php?lang=".$context->getLanguage());
}
}
$paySystem = array();
if ($id > 0)
{
$dbRes = \Bitrix\Sale\PaySystem\Manager::getList(
array(
'filter' => array('ID' => $id),
'order' => array("SORT" => "ASC")
)
);
$paySystem = $dbRes->fetch();
}
require_once($documentRoot."/bitrix/modules/sale/prolog.php");
$APPLICATION->SetTitle(($id > 0) ? Loc::getMessage("SALE_EDIT_RECORD", array("#ID#" => $id)) : Loc::getMessage("SALE_NEW_RECORD"));
$restrictionsHtml = '';
if ($id > 0 && $request->getRequestMethod() !== 'POST')
{
ob_start();
require_once($documentRoot."/bitrix/modules/sale/admin/pay_system_restrictions_list.php");
$restrictionsHtml = ob_get_contents();
ob_end_clean();
}
require($documentRoot."/bitrix/modules/main/include/prolog_admin_after.php");
?>
$aMenu = array(
array(
"TEXT" => Loc::getMessage("SPSN_2FLIST"),
"LINK" => "/bitrix/admin/sale_pay_system.php?lang=".$context->getLanguage().GetFilterParams("filter_"),
"ICON" => "btn_list"
)
);
if ($id > 0 && $saleModulePermissions >= "W")
{
$aMenu[] = array("SEPARATOR" => "Y");
$aMenu[] = array(
"TEXT" => Loc::getMessage("SPSN_NEW_PAYSYS"),
"LINK" => "/bitrix/admin/sale_pay_system_edit.php?lang=".$context->getLanguage().GetFilterParams("filter_"),
"ICON" => "btn_new"
);
$aMenu[] = array(
"TEXT" => Loc::getMessage("SPSN_DELETE_PAYSYS"),
"LINK" => "javascript:if(confirm('".Loc::getMessage("SPSN_DELETE_PAYSYS_CONFIRM")."')) window.location='/bitrix/admin/sale_pay_system.php?action=delete&ID[]=".$id."&lang=".$context->getLanguage()."&".bitrix_sessid_get()."#tb';",
"WARNING" => "Y",
"ICON" => "btn_delete"
);
}
$contextMenu = new CAdminContextMenu($aMenu);
$contextMenu->Show();
?>
$errorMessage, "TYPE"=>"ERROR", "MESSAGE"=>Loc::getMessage("SPSN_ERROR"), "HTML"=>true));?>