• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/exchange/onec/converterdocument.php
  • Класс: BitrixSaleExchangeOneCConverterDocumentProfile
  • Вызов: ConverterDocumentProfile::resolveParams
public function resolveParams($documentImport)
    {
        if(!($documentImport instanceof DocumentImport))
            throw new ArgumentException("Document must be instanceof DocumentImport");

        $result = array();

        $params = $documentImport->getFieldValues();
        foreach($params as $k=>$v)
        {
            switch($k)
            {
                case 'VERSION':
                    if(!empty($v))
                        $profile['VERSION_1C'] = $v;
                    break;
                case 'XML_ID':
                case 'OFICIAL_NAME':
                case 'FULL_NAME':
                case 'INN':
                case 'KPP':
                case 'OKPO_CODE':
                case 'EGRPO':
                case 'OKVED':
                case 'OKDP':
                case 'OKOPF':
                case 'OKFC':
                    //case 'OKPO':
                    if(!empty($v))
                        $profile[$k] = $v;
                    break;
                case 'ITEM_NAME':
                    if(!empty($v))
                    {
                        $profile[$k] = $v;
                        $profile['AGENT_NAME'] = $v;
                    }
                    break;
                case 'REGISTRATION_ADDRESS':
                case 'UR_ADDRESS':
                case 'ADDRESS':
                    foreach($params[$k] as $name=>$values)
                    {
                        if($name == 'ADDRESS_FIELD')
                        {
                            foreach($values as $nameAddres=>$valuesAddres)
                            {
                                $profile[$k][$nameAddres] = $valuesAddres['VALUE'];
                            }
                        }
                        else
                        {
                            $profile[$k][$name] = $values;
                        }
                    }
                    break;
                case 'CONTACTS':
                    foreach($params[$k]['CONTACT'] as $name=>$values)
                    {
                        $profile['CONTACT'][$name] = $values['VALUE'];
                    }

                    $profile['CONTACT']['EMAIL'] = !empty($profile['CONTACT']['MAIL_NEW'])? $profile['CONTACT']['MAIL_NEW']:null;
                    $profile['CONTACT']['PHONE'] = !empty($profile['CONTACT']['WORK_PHONE_NEW'])? $profile['CONTACT']['WORK_PHONE_NEW']:null;

                    break;
                case 'REPRESENTATIVES':
                    foreach($params[$k]['REPRESENTATIVE'] as $name=>$values)
                    {
                        if($name == 'CONTACT_PERSON')
                        {
                            $profile['CONTACT'][$name] = $values['ITEM_NAME'];
                        }
                    }
                    break;
            }
        }

        if(!empty($profile["OKPO_CODE"]))
            $profile["OKPO"] = $profile["OKPO_CODE"];

        if(strlen($profile["OFICIAL_NAME"]) > 0 && strlen($profile["INN"]) > 0)
            $profile["TYPE"] = "UR";
        elseif(strlen($profile["INN"]) > 0)
            $profile["TYPE"] = "IP";
        else
            $profile["TYPE"] = "FIZ";

        if(!empty($profile))
        {
            $property = array();
            foreach($profile as $name => $value)
            {
                switch($name)
                {
                    case 'ID':
                    case 'VERSION':
                    case 'ITEM_NAME':
                    case 'OFICIAL_NAME':
                    case 'FULL_NAME':
                    case 'INN':
                    case 'KPP':
                    case 'OKPO_CODE':
                    case 'EGRPO':
                    case 'OKVED':
                    case 'OKDP':
                    case 'OKOPF':
                    case 'OKFC':
                    case 'OKPO':
                        $property[$name] = $value;
                        break;
                    case 'CONTACT':
                        $property["EMAIL"] = $value["MAIL_NEW"];
                        $property["PHONE"] = $value["WORK_PHONE_NEW"];
                        break;
                    case 'REPRESENTATIVE':
                        $property["CONTACT_PERSON"] = $value["CONTACT_PERSON"];
                        break;
                    case 'REGISTRATION_ADDRESS':
                    case 'UR_ADDRESS':
                        foreach($value as $nameProperty => $valueProperty)
                        {
                            if(strlen($valueProperty) > 0 && empty($property[$nameProperty]))
                                $property[$nameProperty] = $valueProperty;
                        }
                        $property["ADDRESS_FULL"] = $value["PRESENTATION"];
                        $property["INDEX"] = $value["POST_CODE"];
                        break;
                    case 'ADDRESS':
                        foreach($value as $nameProperty => $valueProperty)
                        {
                            if(strlen($valueProperty) > 0 && empty($property["F_".$nameProperty]))
                                $property["F_".$nameProperty] = $valueProperty;
                        }
                        $property["F_ADDRESS_FULL"] = $value["PRESENTATION"];
                        $property["F_INDEX"] = $value["POST_CODE"];
                        break;
                }
            }
        }

	$result['TRAITS'] = isset($profile)? $profile:array();
	$result['ORDER_PROPS'] = isset($property)? $property:array();

        return $result;
    }