12 if (intval($paySystemId) > 0)
14 $arPaySystem =
array();
17 array(
"SORT" =>
"ASC",
"PSA_NAME" =>
"ASC"),
20 "PERSON_TYPE_ID" => $arOrder[
"PERSON_TYPE_ID"],
21 "PSA_HAVE_PAYMENT" =>
"Y"
25 while ($arPaySystem = $dbPaySystem->Fetch())
27 if ($arPaySystem[
"ID"] == $paySystemId)
29 $arOrder[
"PAY_SYSTEM_ID"] = $paySystemId;
33 $arOrder[
"ORDER_PRICE"],
34 $arOrder[
"PRICE_DELIVERY"],
35 $arOrder[
"DELIVERY_LOCATION"]
41 if (empty($arPaySystem))
43 $arErrors[] =
array(
"CODE" =>
"CALCULATE",
"TEXT" =>
GetMessage(
'SKGPS_PS_NOT_FOUND'));
48 public static function DoLoadPaySystems($personType, $deliveryId = 0, $arDeliveryMap =
null)
54 "PERSON_TYPE_ID" => $personType,
55 "=PSA_HAVE_PAYMENT" =>
"Y"
59 if (is_array($arDeliveryMap) && (
count($arDeliveryMap) > 0))
61 foreach ($arDeliveryMap as
$val)
63 if (is_array(
$val[$deliveryId]))
65 foreach (
$val[$deliveryId] as $v)
73 array(
"SORT" =>
"ASC",
"PSA_NAME" =>
"ASC"),
76 while ($arPaySystem = $dbPaySystem->GetNext())
77 $arResult[$arPaySystem[
"ID"]] = $arPaySystem;
82 public static function GetByID($id, $personTypeId = 0)
85 $personTypeId = (int)$personTypeId;
87 if ($personTypeId > 0)
89 $select = array_merge(
array(
'ID',
'NAME',
'DESCRIPTION',
'ACTIVE',
'SORT'), self::getAliases());
93 'filter' =>
array(
'ID' => $id)
119 "PSA_ACTION_FILE" =>
'ACTION_FILE',
120 "PSA_RESULT_FILE" =>
'RESULT_FILE',
121 "PSA_NEW_WINDOW" =>
'NEW_WINDOW',
122 "PSA_PERSON_TYPE_ID" =>
'PERSON_TYPE_ID',
123 "PSA_PARAMS" =>
'PARAMS',
124 "PSA_TARIF" =>
'TARIF',
125 "PSA_HAVE_PAYMENT" =>
'HAVE_PAYMENT',
126 "PSA_HAVE_ACTION" =>
'HAVE_ACTION',
127 "PSA_HAVE_RESULT" =>
'HAVE_RESULT',
128 "PSA_HAVE_PREPAY" =>
'HAVE_PREPAY',
129 "PSA_HAVE_RESULT_RECEIVE" =>
'HAVE_RESULT_RECEIVE',
130 "PSA_ENCODING" =>
'ENCODING',
131 "PSA_LOGOTIP" =>
'LOGOTIP'
142 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SKGPS_EMPTY_NAME"),
"ERROR_NO_NAME");
177 $GLOBALS[
"APPLICATION"]->ThrowException(
GetMessage(
"SKGPS_ORDERS_TO_PAYSYSTEM"),
"ERROR_ORDERS_TO_PAYSYSTEM");
183 return $dbRes->isSuccess();
189 'select' =>
array(
'ID'),
190 'filter' =>
array(
'PAY_SYSTEM_ID' => $ids)
194 while ($ps =
$dbRes->fetch())
196 if (!is_null($personTypeId))
198 $dbRestriction = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(
array(
200 'SERVICE_ID' => $ps[
'ID'],
206 while ($restriction = $dbRestriction->fetch())
208 if (!in_array($personTypeId, $restriction[
'PARAMS'][
'PERSON_TYPE_ID']))
223 $dbRestriction = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(
array(
225 'SERVICE_ID' => $paySystemId,
230 while ($restriction = $dbRestriction->fetch())
231 $data = array_merge(
$data, $restriction[
'PARAMS'][
'PERSON_TYPE_ID']);
236 public static function GetList($arOrder =
array(
"SORT" =>
"ASC",
"NAME" =>
"ASC"),
$arFilter =
array(), $arGroupBy =
false, $arNavStartParams =
false, $arSelectFields =
array())
238 if (array_key_exists(
"PSA_PERSON_TYPE_ID",
$arFilter))
244 $salePaySystemFields =
array(
'ID',
'NAME',
'ACTIVE',
'SORT',
'DESCRIPTION');
245 $ignoredFields =
array(
'LID',
'CURRENCY',
'PERSON_TYPE_ID');
247 if (!$arSelectFields)
249 $select =
array(
'ID',
'NAME',
'ACTIVE',
'SORT',
'DESCRIPTION');
254 foreach ($arSelectFields as
$key => $field)
256 if (in_array($field, $ignoredFields))
266 if (in_array(
$key, $ignoredFields))
273 $select = array_merge(
$select,
array(
'PSA_ID' =>
'ID',
'PSA_NAME',
'ACTION_FILE',
'RESULT_FILE',
'NEW_WINDOW',
'PERSON_TYPE_ID',
'PARAMS',
'TARIF',
'HAVE_PAYMENT',
'HAVE_ACTION',
'HAVE_RESULT',
'HAVE_PREPAY',
'HAVE_RESULT_RECEIVE',
'ENCODING',
'LOGOTIP'));
275 if (in_array(
'PARAMS',
$select) && !array_key_exists(
'PSA_ID',
$select))
278 if (in_array(
'PARAMS',
$select) && !in_array(
'PERSON_TYPE_ID',
$select))
282 foreach ($arOrder as
$key => $value)
286 if ($arGroupBy !==
false)
288 $arGroupBy = !is_array($arGroupBy) ?
array($arGroupBy) : $arGroupBy;
290 foreach ($arGroupBy as
$key => $value)
291 $groupBy[
$key] = self::getAlias($value);
303 if (is_array($arNavStartParams) && isset($arNavStartParams[
'nTopCount']))
305 if ($arNavStartParams[
'nTopCount'] > 0)
306 $limit = $arNavStartParams[
'nTopCount'];
313 if ($limit !==
null && !$limit)
316 $dbRestriction = \Bitrix\Sale\Internals\ServiceRestrictionTable::getList(
array(
318 'SERVICE_ID' =>
$data[
'ID'],
323 while ($restriction = $dbRestriction->fetch())
329 if (isset(
$data[
'ACTION_FILE']))
332 if ($oldHandler !==
false)
333 $data[
'ACTION_FILE'] = $oldHandler;
336 if (array_key_exists(
'PARAMS',
$data))
345 if (!in_array(
$key, $salePaySystemFields))
347 $newKey = self::getAliasBack(
$key);
350 $data[$newKey] = $value;
360 $dbRes = new \CDBResult();
366 private static function getAlias(
$key)
369 $pos = mb_strpos(
$key,
'PSA_');
372 $prefix = mb_substr(
$key, 0, $pos);
378 if (isset($aliases[
$key]))
384 private static function getAliasBack($value)
387 $result = array_search($value, $aliases);
408 return CSalePaySystemAction::add(
$arFields);
static getList(array $params=array())
const SERVICE_TYPE_PAYMENT
static getOldToNewHandlersMap()
static Update($id, $fields)
static checkRestriction($restriction, $filter)
static getParamsByConsumer($consumer, $personTypeId)
static getPaySystemPersonTypeIds($paySystemId)
static DoLoadPaySystems($personType, $deliveryId=0, $arDeliveryMap=null)
static DoProcessOrder(&$arOrder, $paySystemId, &$arErrors)
static GetByID($id, $personTypeId=0)
static CheckFields($ACTION, &$arFields)
static getNewIdsFromOld($ids, $personTypeId=null)
static GetList($arOrder=array("SORT"=> "ASC", "NAME"=> "ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static Update($id, $arFields)
static getPSPrice($arPaySystem, $orderPrice, $deliveryPrice, $buyerLocationId)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
$GLOBALS['____1690880296']
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']