コード例 #1
0
 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;
     }
 }
コード例 #2
0
ファイル: export.php プロジェクト: akniyev/itprom_dobrohost
 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;
     }
 }