function Add($fields) { if (\Bitrix\Main\Config\Option::get('main', '~sale_paysystem_converted') == 'Y') { if (!CSalePaySystemAction::CheckFields("ADD", $fields)) { return false; } if (isset($fields['ACTION_FILE'])) { $map = self::getOldToNewHandlersMap(); if (isset($map[$fields['ACTION_FILE']])) { $fields['ACTION_FILE'] = $map[$fields['ACTION_FILE']]; } } $fields['PSA_NAME'] = $fields['NAME']; if (array_key_exists("LOGOTIP", $fields) && is_array($fields["LOGOTIP"])) { $fields["LOGOTIP"]["MODULE_ID"] = "sale"; } CFile::SaveForDB($fields, "LOGOTIP", "sale/paysystem/logotip"); if (isset($fields['PAY_SYSTEM_ID']) && $fields['PAY_SYSTEM_ID'] > 0) { $dbRes = PaySystemActionTable::getById($fields['PAY_SYSTEM_ID']); $data = $dbRes->fetch(); if ($data['ACTION_FILE'] != '') { $result = PaySystemActionTable::add($fields); } else { $result = PaySystemActionTable::update($fields['PAY_SYSTEM_ID'], $fields); } } else { $result = PaySystemActionTable::add($fields); } if ($result->isSuccess()) { if ($fields['PARAMS']) { $params = unserialize($fields['PARAMS']); if (!isset($params['BX_PAY_SYSTEM_ID'])) { $params['BX_PAY_SYSTEM_ID'] = array('TYPE' => '', 'VALUE' => $result->getId()); PaySystemActionTable::update($result->getId(), array('PARAMS' => serialize($params))); $consumers = \Bitrix\Sale\BusinessValue::getConsumers(); if (!isset($consumers['PAYSYSTEM_' . $result->getId()])) { \Bitrix\Sale\BusinessValue::addConsumer('PAYSYSTEM_' . $result->getId(), \Bitrix\Sale\PaySystem\Manager::getHandlerDescription($fields['ACTION_FILE'])); } else { \Bitrix\Sale\BusinessValue::changeConsumer('PAYSYSTEM_' . $result->getId(), \Bitrix\Sale\PaySystem\Manager::getHandlerDescription($fields['ACTION_FILE'])); } } $params = self::prepareParamsForBusVal($result->getId(), $fields); foreach ($params as $item) { \Bitrix\Sale\BusinessValue::setMapping($item['CODE'], $item['CONSUMER'], $item['PERSON_TYPE_ID'], $item['MAP']); } } if (isset($fields['PERSON_TYPE_ID']) && $fields['PERSON_TYPE_ID'] > 0) { $fields = array("SERVICE_ID" => $result->getId(), "SERVICE_TYPE" => \Bitrix\Sale\Services\PaySystem\Restrictions\Manager::SERVICE_TYPE_PAYMENT, "SORT" => 100, "PARAMS" => array('PERSON_TYPE_ID' => array($fields['PERSON_TYPE_ID']))); \Bitrix\Sale\Services\PaySystem\Restrictions\PersonType::save($fields); } return $result->getId(); } return false; } else { global $DB; $arFields = $fields; if (!CSalePaySystemAction::CheckFields("ADD", $arFields)) { return false; } if (array_key_exists("LOGOTIP", $arFields) && is_array($arFields["LOGOTIP"])) { $arFields["LOGOTIP"]["MODULE_ID"] = "sale"; } CFile::SaveForDB($arFields, "LOGOTIP", "sale/paysystem/logotip"); $arInsert = $DB->PrepareInsert("b_sale_pay_system_action", $arFields); $strSql = "INSERT INTO b_sale_pay_system_action(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); return $ID; } }
function GetList($order = array("ID" => "DESC"), $filter = array(), $group = false, $arNavStartParams = false, $select = array()) { if (!($select && is_array($select))) { $select = array("ID", "PERSON_TYPE_ID", "VARS"); } $select = array_flip($select); $personTypes = BusinessValue::getPersonTypes(); if ($filter && is_array($filter)) { if ($filter['PERSON_TYPE_ID']) { if (!is_array($filter['PERSON_TYPE_ID'])) { $filter['PERSON_TYPE_ID'] = array($filter['PERSON_TYPE_ID']); } $personTypes = array_intersect_key($personTypes, array_flip($filter['PERSON_TYPE_ID'])); } if (isset($filter['ID'])) { $personTypes = isset($personTypes[$filter['ID']]) ? array($filter['ID'] => $personTypes[$filter['ID']]) : array(); } } $rows = array(); if ($personTypes && ($consumers = BusinessValue::getConsumers()) && ($consumer = $consumers[BusinessValueConsumer1C::CONSUMER_KEY]) && is_array($consumer) && ($codes = $consumer['CODES']) && is_array($codes)) { foreach ($personTypes as $personTypeId => $personType) { $systemCodes = self::$systemCodes[$personType['DOMAIN']]; $vars = array(); foreach ($codes as $codeKey => $code) { if ($mapping = BusinessValue::getMapping($codeKey, BusinessValueConsumer1C::CONSUMER_KEY, $personTypeId, array('GET_VALUE' => array('PROPERTY' => 'BY_ID')))) { $mapping1C = array('VALUE' => $mapping['PROVIDER_VALUE']); switch ($mapping['PROVIDER_KEY']) { case 'VALUE': $mapping1C['TYPE'] = ''; break; case 'USER': case 'ORDER': case 'PROPERTY': case 'COMPANY': case 'PAYMENT': case 'SHIPMENT': $mapping1C['TYPE'] = $mapping['PROVIDER_KEY']; break; default: continue; // other types aren't present in old version } if (isset($code['CODE_INDEX'])) { $codeKey1C = 'REKV_' . $code['CODE_INDEX']; $mapping1C['NAME'] = $code['NAME']; } else { $codeKey1C = $systemCodes[$codeKey]; } $vars[$codeKey1C] = $mapping1C; } } if ($vars) { $vars['IS_FIZ'] = $personTypes[$personTypeId]['DOMAIN'] === BusinessValue::INDIVIDUAL_DOMAIN ? 'Y' : 'N'; $rows[] = array_intersect_key(array('ID' => $personTypeId, 'PERSON_TYPE_ID' => $personTypeId, 'VARS' => serialize($vars)), $select); } } } if (!$group && is_array($group)) { return count($rows); } else { $result = new CDBResult(); $result->InitFromArray($rows); return $result; } }