示例#1
0
 /**
  * Modify payment collection.
  *
  * @param string $action			Action.
  * @param Payment $payment			Payment.
  * @param null|string $name				Field name.
  * @param null|string|int|float $oldValue		Old value.
  * @param null|string|int|float $value			New value.
  * @return Result
  * @throws Main\ArgumentOutOfRangeException
  * @throws Main\NotImplementedException
  * @throws Main\ObjectNotFoundException
  */
 public function onPaymentCollectionModify($action, Payment $payment, $name = null, $oldValue = null, $value = null)
 {
     $result = new Result();
     if ($action == EventActions::DELETE) {
         if ($this->getField('PAY_SYSTEM_ID') == $payment->getPaymentSystemId()) {
             /** @var PaymentCollection $paymentCollection */
             if (!($paymentCollection = $payment->getCollection())) {
                 throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
             }
             /** @var Payment $entityPayment */
             foreach ($paymentCollection as $entityPayment) {
                 if (intval($entityPayment->getField('PAY_SYSTEM_ID')) > 0 && intval($entityPayment->getField('PAY_SYSTEM_ID')) != $payment->getPaymentSystemId()) {
                     $this->setFieldNoDemand('PAY_SYSTEM_ID', $entityPayment->getField('PAY_SYSTEM_ID'));
                     break;
                 }
             }
         }
     }
     if ($action != EventActions::UPDATE) {
         return $result;
     }
     if ($name == "CURRENCY" && $value != $this->getField("CURRENCY")) {
         throw new Main\NotImplementedException();
     }
     if ($name == "SUM" || $name == "PAID") {
         if ($this->isCanceled()) {
             $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PAID_ORDER_CANCELED'), 'SALE_ORDER_PAID_ORDER_CANCELED'));
             return $result;
         }
         if ($name == "SUM" && !$payment->isPaid()) {
             if ($value == 0 && $payment->isInner()) {
                 $payment->delete();
             }
             return $result;
         }
         $r = $this->syncOrderAndPayments($payment);
         if (!$r->isSuccess()) {
             $result->addErrors($r->getErrors());
         }
     } elseif ($name == "IS_RETURN") {
         if ($this->isCanceled()) {
             $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_RETURN_ORDER_CANCELED'), 'SALE_ORDER_RETURN_ORDER_CANCELED'));
             return $result;
         }
         if ($value != Payment::RETURN_NONE) {
             if (!$payment->isPaid()) {
                 $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PAYMENT_RETURN_NOT_PAID'), 'SALE_ORDER_PAYMENT_RETURN_NOT_PAID'));
                 return $result;
             }
             $oldPaid = $this->isPaid() ? "Y" : "N";
             /** @var PaymentCollection $paymentCollection */
             if (!($paymentCollection = $this->getPaymentCollection())) {
                 throw new Main\ObjectNotFoundException('Entity "PaymentCollection" not found');
             }
             $creditSum = 0;
             $overPaid = $paymentCollection->getPaidSum() - $this->getPrice();
             if ($overPaid <= 0) {
                 $creditSum = $payment->getSum();
                 $overPaid = 0;
             } elseif ($payment->getSum() - $overPaid > 0) {
                 $creditSum = $payment->getSum() - $overPaid;
             }
             if ($value == Payment::RETURN_PS) {
                 $psId = $payment->getPaymentSystemId();
             } elseif ($value == Payment::RETURN_INNER) {
                 $psId = Manager::getInnerPaySystemId();
             } else {
                 $result->addError(new Entity\EntityError('unsupported operation'));
                 return $result;
             }
             $service = Manager::getObjectById($psId);
             if ($service && $service->isRefundable()) {
                 if ($creditSum) {
                     if ($value == Payment::RETURN_PS) {
                         if ($overPaid > 0) {
                             $userBudget = Internals\UserBudgetPool::getUserBudgetByOrder($this);
                             if (PriceMaths::roundByFormatCurrency($overPaid, $this->getCurrency()) > PriceMaths::roundByFormatCurrency($userBudget, $this->getCurrency())) {
                                 $result->addError(new Entity\EntityError(Loc::getMessage('SALE_ORDER_PAYMENT_RETURN_PAID')));
                                 return $result;
                             }
                         }
                     }
                     $refResult = $service->refund($payment);
                     if ($refResult->isSuccess()) {
                         if ($overPaid > 0) {
                             Internals\UserBudgetPool::addPoolItem($this, -$overPaid, Internals\UserBudgetPool::BUDGET_TYPE_ORDER_PAY, $payment);
                         }
                     } else {
                         $result->addErrors($refResult->getErrors());
                         return $result;
                     }
                 }
             } else {
                 $result->addError(new Entity\EntityError(Loc::getMessage('SALE_ORDER_PAYMENT_RETURN_NO_SUPPORTED')));
                 return $result;
             }
             $payment->setFieldNoDemand('PAID', 'N');
             $finalSumPaid = $this->getSumPaid() - $creditSum;
             if ($finalSumPaid != $this->getSumPaid()) {
                 $this->setFieldNoDemand('SUM_PAID', $finalSumPaid);
                 $this->setFieldNoDemand('PAYED', $this->getPrice() <= $finalSumPaid ? "Y" : "N");
             }
             /** @var Result $r */
             $r = $this->onAfterSyncPaid($oldPaid);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
             }
         } else {
             if ($payment->isPaid()) {
                 $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PAYMENT_RETURN_PAID'), 'SALE_ORDER_PAYMENT_RETURN_PAID'));
                 return $result;
             }
             $userBudget = Internals\UserBudgetPool::getUserBudgetByOrder($this);
             if (PriceMaths::roundByFormatCurrency($userBudget, $this->getCurrency()) < PriceMaths::roundByFormatCurrency($payment->getSum(), $this->getCurrency())) {
                 $result->addError(new ResultError(Loc::getMessage('SALE_ORDER_PAYMENT_NOT_ENOUGH_USER_BUDGET'), "SALE_ORDER_PAYMENT_NOT_ENOUGH_USER_BUDGET"));
                 return $result;
             }
             Internals\UserBudgetPool::addPoolItem($this, $payment->getSum() * -1, Internals\UserBudgetPool::BUDGET_TYPE_ORDER_PAY, $payment);
             $r = $payment->setField('PAID', "Y");
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
                 return $result;
             }
         }
     } elseif ($name == "PAY_SYSTEM_ID") {
         if ($payment->getField('PAY_SYSTEM_ID') != $this->getField('PAY_SYSTEM_ID')) {
             $this->setFieldNoDemand('PAY_SYSTEM_ID', $payment->getField('PAY_SYSTEM_ID'));
         }
     } elseif ($name == "DATE_PAID") {
         if ($payment->getField('DATE_PAID') != $this->getField('DATE_PAID')) {
             $this->setFieldNoDemand('DATE_PAYED', $payment->getField('DATE_PAID'));
         }
     }
     if ($value != $oldValue) {
         $fields = $this->fields->getChangedValues();
         if (!array_key_exists("UPDATED_1C", $fields)) {
             parent::setField("UPDATED_1C", "N");
         }
     }
     return $result;
 }
 function InitParamArrays($arOrder, $orderID = 0, $psParams = "", $relatedData = array(), $payment = array())
 {
     if (!is_array($relatedData)) {
         $relatedData = array();
     }
     $GLOBALS["SALE_INPUT_PARAMS"] = array();
     $GLOBALS["SALE_CORRESPONDENCE"] = array();
     if (!is_array($arOrder) || count($arOrder) <= 0 || !array_key_exists("ID", $arOrder)) {
         $arOrder = array();
         $orderID = IntVal($orderID);
         if ($orderID > 0) {
             $arOrderTmp = CSaleOrder::GetByID($orderID);
         }
         if (!empty($arOrderTmp)) {
             foreach ($arOrderTmp as $k => $v) {
                 $arOrder["~" . $k] = $v;
                 $arOrder[$k] = htmlspecialcharsbx($v);
             }
         }
     } else {
         if ($orderID == 0 && $arOrder['ID'] > 0) {
             $orderID = $arOrder['ID'];
         }
     }
     if (empty($payment) && $orderID > 0) {
         $payment = \Bitrix\Sale\Internals\PaymentTable::getRow(array('select' => array('*'), 'filter' => array('ORDER_ID' => $orderID, '!PAY_SYSTEM_ID' => \Bitrix\Sale\PaySystem\Manager::getInnerPaySystemId())));
     }
     if (count($arOrder) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"] = $arOrder;
     }
     if (!empty($payment)) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = $payment['SUM'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~SHOULD_PAY"] = $payment['SUM'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAYED"] = $payment['PAID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAYED"] = $payment['PAID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAY_SYSTEM_ID"] = $payment['PAY_SYSTEM_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAY_SYSTEM_ID"] = $payment['PAY_SYSTEM_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ORDER_PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~ORDER_PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["PAYMENT"] = $payment;
     } else {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE"]) - DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SUM_PAID"]);
     }
     $arDateInsert = explode(" ", $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"]);
     if (is_array($arDateInsert) && count($arDateInsert) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT_DATE"] = $arDateInsert[0];
     } else {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT_DATE"] = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"];
     }
     if (!empty($payment)) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL_DATE"] = ConvertTimeStamp(MakeTimeStamp($payment["DATE_BILL"]), 'SHORT');
     }
     $userID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
     if ($userID > 0) {
         $dbUser = CUser::GetByID($userID);
         if ($arUser = $dbUser->GetNext()) {
             $GLOBALS["SALE_INPUT_PARAMS"]["USER"] = $arUser;
         }
     }
     $arCurOrderProps = array();
     if (isset($relatedData["PROPERTIES"]) && is_array($relatedData["PROPERTIES"])) {
         $properties = $relatedData["PROPERTIES"];
         foreach ($properties as $key => $value) {
             $arCurOrderProps["~" . $key] = $value;
             $arCurOrderProps[$key] = htmlspecialcharsEx($value);
         }
     } else {
         $dbOrderPropVals = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]), false, false, array("ID", "CODE", "VALUE", "ORDER_PROPS_ID", "PROP_TYPE"));
         while ($arOrderPropVals = $dbOrderPropVals->Fetch()) {
             $arCurOrderPropsTmp = CSaleOrderProps::GetRealValue($arOrderPropVals["ORDER_PROPS_ID"], $arOrderPropVals["CODE"], $arOrderPropVals["PROP_TYPE"], $arOrderPropVals["VALUE"], LANGUAGE_ID);
             foreach ($arCurOrderPropsTmp as $key => $value) {
                 $arCurOrderProps["~" . $key] = $value;
                 $arCurOrderProps[$key] = htmlspecialcharsEx($value);
             }
         }
     }
     if (count($arCurOrderProps) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"] = $arCurOrderProps;
     }
     $shipment = \Bitrix\Sale\Internals\ShipmentTable::getRow(array('select' => array('DELIVERY_ID'), 'filter' => array('ORDER_ID' => $orderID, 'SYSTEM' => 'N')));
     if ($shipment) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DELIVERY_ID"] = $shipment['DELIVERY_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~DELIVERY_ID"] = $shipment['DELIVERY_ID'];
     }
     $paySystemId = '';
     if ($payment && $payment['PAY_SYSTEM_ID'] > 0) {
         $paySystemId = $payment['PAY_SYSTEM_ID'];
     } elseif (isset($arOrder['PAY_SYSTEM_ID']) && $arOrder['PAY_SYSTEM_ID'] > 0) {
         $paySystemId = $arOrder['PAY_SYSTEM_ID'];
     } else {
         $psParams = unserialize($psParams);
         if (isset($psParams['BX_PAY_SYSTEM_ID'])) {
             $paySystemId = $psParams['BX_PAY_SYSTEM_ID']['VALUE'];
         }
     }
     if ($paySystemId !== '') {
         if (!isset($arOrder['PERSON_TYPE_ID']) || $arOrder['PERSON_TYPE_ID'] <= 0) {
             // for crm quote compatibility
             $personTypes = CSalePaySystem::getPaySystemPersonTypeIds($paySystemId);
             $personTypeId = array_shift($personTypes);
         } else {
             $personTypeId = $arOrder['PERSON_TYPE_ID'];
         }
         $params = CSalePaySystemAction::getParamsByConsumer('PAYSYSTEM_' . $paySystemId, $personTypeId);
         foreach ($params as $key => $value) {
             $params[$key]['~VALUE'] = htmlspecialcharsbx($value['VALUE']);
         }
         $GLOBALS["SALE_CORRESPONDENCE"] = $params;
     }
     if ($payment['COMPANY_ID'] > 0) {
         if (!array_key_exists('COMPANY', $GLOBALS["SALE_INPUT_PARAMS"])) {
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"] = array();
         }
         global $USER_FIELD_MANAGER;
         $userFieldsList = $USER_FIELD_MANAGER->GetUserFields(\Bitrix\Sale\Internals\CompanyTable::getUfId(), null, LANGUAGE_ID);
         foreach ($userFieldsList as $key => $userField) {
             $value = $USER_FIELD_MANAGER->GetUserFieldValue(\Bitrix\Sale\Internals\CompanyTable::getUfId(), $key, $payment['COMPANY_ID']);
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"][$key] = $value;
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"]["~" . $key] = $value;
         }
         $companyFieldList = \Bitrix\Sale\Internals\CompanyTable::getRowById($payment['COMPANY_ID']);
         foreach ($companyFieldList as $key => $value) {
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"][$key] = $value;
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"]["~" . $key] = $value;
         }
     }
     // fields with no interface
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["~VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["~VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["TYPE"] = 'ORDER';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["VALUE"] = 'PAYMENT_ID';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["~VALUE"] = 'PAYMENT_ID';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["TYPE"] = 'ORDER';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["VALUE"] = 'PAYED';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["~VALUE"] = 'PAYED';
     if (isset($relatedData["BASKET_ITEMS"]) && is_array($relatedData["BASKET_ITEMS"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["BASKET_ITEMS"] = $relatedData["BASKET_ITEMS"];
     }
     if (isset($relatedData["TAX_LIST"]) && is_array($relatedData["TAX_LIST"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["TAX_LIST"] = $relatedData["TAX_LIST"];
     }
     if (isset($relatedData["REQUISITE"]) && is_array($relatedData["REQUISITE"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["REQUISITE"] = $relatedData["REQUISITE"];
         self::$relatedData['REQUISITE'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['REQUISITE'][$providerValue];
         });
     }
     if (isset($relatedData["BANK_DETAIL"]) && is_array($relatedData["BANK_DETAIL"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["BANK_DETAIL"] = $relatedData["BANK_DETAIL"];
         self::$relatedData['BANK_DETAIL'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['BANK_DETAIL'][$providerValue];
         });
     }
     if (isset($relatedData["CRM_COMPANY"]) && is_array($relatedData["CRM_COMPANY"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["CRM_COMPANY"] = $relatedData["CRM_COMPANY"];
         self::$relatedData['CRM_COMPANY'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['CRM_COMPANY'][$providerValue];
         });
     }
     if (isset($relatedData["CRM_CONTACT"]) && is_array($relatedData["CRM_CONTACT"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["CRM_CONTACT"] = $relatedData["CRM_CONTACT"];
         self::$relatedData['CRM_CONTACT'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['CRM_CONTACT'][$providerValue];
         });
     }
     if (isset($relatedData["MC_REQUISITE"]) && is_array($relatedData["MC_REQUISITE"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["MC_REQUISITE"] = $relatedData["MC_REQUISITE"];
         self::$relatedData['MC_REQUISITE'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['MC_REQUISITE'][$providerValue];
         });
     }
     if (isset($relatedData["MC_BANK_DETAIL"]) && is_array($relatedData["MC_BANK_DETAIL"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["MC_BANK_DETAIL"] = $relatedData["MC_BANK_DETAIL"];
         self::$relatedData['MC_BANK_DETAIL'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['MC_BANK_DETAIL'][$providerValue];
         });
     }
     if (isset($relatedData["CRM_MYCOMPANY"]) && is_array($relatedData["CRM_MYCOMPANY"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["CRM_MYCOMPANY"] = $relatedData["CRM_MYCOMPANY"];
         self::$relatedData['CRM_MYCOMPANY'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['CRM_MYCOMPANY'][$providerValue];
         });
     }
     if ($relatedData) {
         $eventManager = \Bitrix\Main\EventManager::getInstance();
         $eventManager->addEventHandler('sale', 'OnGetBusinessValueProviders', array('\\CSalePaySystemAction', 'getProviders'));
     }
 }
        echo htmlspecialcharsbx($title);
        ?>
							</option>
						<?php 
    }
    ?>
					</optgroup>
				<?php 
}
?>
				<optgroup label="<?php 
echo Loc::getMessage("SPS_ACT_SYSTEM");
?>
">
					<?php 
$innerId = PaySystem\Manager::getInnerPaySystemId();
foreach ($handlerList['SYSTEM'] as $handler => $title) {
    ?>
						<?php 
    if ($innerId > 0 && $handler == 'inner' && $handlerName != 'inner') {
        continue;
    }
    ?>
						<option value="<?php 
    echo htmlspecialcharsbx($handler);
    ?>
"<?php 
    echo !$selected && ToLower($handlerName) == ToLower($handler) ? " selected" : '';
    ?>
>
							<?php 
示例#4
0
 function getPayment($arOrder)
 {
     $result = array();
     $PaymentParam['select'] = array("ID", "PAID", "DATE_BILL", "ORDER_ID", "CURRENCY", "SUM", "COMMENTS", "DATE_PAID", "PAY_SYSTEM_ID", "PAY_SYSTEM_NAME", "IS_RETURN", "PAY_RETURN_COMMENT", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE");
     $PaymentParam['filter']['ORDER_ID'] = $arOrder['ID'];
     $PaymentParam['filter']['!=EXTERNAL_PAYMENT'] = 'F';
     $innerPS = 0;
     $limit = 0;
     $inc = 0;
     if (self::getVersionSchema() < self::PARTIAL_VERSION) {
         $innerPS = \Bitrix\Sale\PaySystem\Manager::getInnerPaySystemId();
         $limit = 1;
     }
     $resPayment = \Bitrix\Sale\Internals\PaymentTable::getList($PaymentParam);
     while ($arPayment = $resPayment->fetch()) {
         foreach ($arPayment as $field => $value) {
             if (self::isFormattedDateFields('Payment', $field)) {
                 $arPayment[$field] = self::getFormatDate($value);
             }
         }
         $result['paySystems'][$arPayment['PAY_SYSTEM_ID']] = $arPayment['PAY_SYSTEM_NAME'];
         if ($innerPS == 0 || $innerPS != $arPayment['PAY_SYSTEM_ID']) {
             if ($limit == 0 || $inc < $limit) {
                 $result['payment'][] = $arPayment;
             }
             $inc++;
         }
     }
     return $result;
 }