• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/conversion/psrequisiteconverter.php
  • Класс: Bitrix\Crm\Requisite\Conversion\PSRequisiteConverter
  • Вызов: PSRequisiteConverter::updatePSParams
static function updatePSParams()
{
	if (!is_array(self::$psEntityTreeMap))
		return;

	$paySystem = new \CSalePaySystemAction();

	foreach (self::$paySystemData as $psInfo)
	{
		if (is_array($psInfo) && is_array($psInfo['PSA_PARAMS']) && is_array($psInfo['PSA_PARAMS_ORIG']))
		{
			$psId = isset($psInfo['PS_ID']) ? (int)$psInfo['PS_ID'] : 0;
			$relatedCompanyId = isset(self::$psEntityTreeMap[$psId]['CO']) ?
				(int)self::$psEntityTreeMap[$psId]['CO'] : 0;
			$paramsAllEmpty =  isset($psInfo['PSA_PARAMS_ALL_EMPTY']) ?
				($psInfo['PSA_PARAMS_ALL_EMPTY'] === 'Y' ? 'Y' : 'N') : 'N';
			if ($relatedCompanyId > 0 || $paramsAllEmpty === 'Y')
			{
				$psaId = isset($psInfo['PSA_ID']) ? (int)$psInfo['PSA_ID'] : 0;
				$personTypeId = isset($psInfo['PSA_PERSON_TYPE_ID']) ? (int)$psInfo['PSA_PERSON_TYPE_ID'] : 0;
				$presetCountryId = isset($psInfo['PRESET_COUNTRY_ID']) ? (int)$psInfo['PRESET_COUNTRY_ID'] : 0;
				$origPsaParams = $psInfo['PSA_PARAMS_ORIG'];

				// convert params
				$origPsaParamsModified = false;
				foreach ($psInfo['PSA_PARAMS'] as $paramName => $convInfo)
				{
					if (isset($convInfo['VALUE']) && (!empty($convInfo['VALUE']) || $paramsAllEmpty === 'Y'))
					{
						$paramType = '';
						$paramValue = '';
						switch ($convInfo['ENTITY_ABBR'])
						{
							case 'CO':
								$paramType = 'CRM_MYCOMPANY';
								$paramValue = $convInfo['FIELD_NAME'];
								break;
							case 'CO.MF':
								$paramType = 'CRM_MYCOMPANY';
								$paramValue = $convInfo['FIELD_NAME'];
								if (isset($convInfo['MF_VALUE_TYPE']) && !empty($convInfo['MF_VALUE_TYPE']))
									$paramValue .= '_'.$convInfo['MF_VALUE_TYPE'];
								break;
							case 'RQ':
								if ($presetCountryId > 0)
								{
									$paramType = 'MC_REQUISITE';
									$paramValue = $convInfo['FIELD_NAME'];
									if ($paramValue === EntityRequisite::ADDRESS && isset($convInfo['ADDR_TYPE']))
										$paramValue .= '_'.(int)$convInfo['ADDR_TYPE'];
									$paramValue .= '|'.$presetCountryId;
								}
								break;
							case 'BD':
								if ($presetCountryId > 0)
								{
									$paramType = 'MC_BANK_DETAIL';
									$paramValue = $convInfo['FIELD_NAME'].'|'.$presetCountryId;
								}
								break;
						}
						if (!empty($paramType) && !empty($paramValue))
						{
							if (is_array($origPsaParams[$paramName]))
							{
								$origPsaParams[$paramName]['TYPE'] = $paramType;
								$origPsaParams[$paramName]['VALUE'] = $paramValue;
								$origPsaParamsModified = true;
							}
						}
					}
				}

				// save modified params
				if ($origPsaParamsModified)
				{
					$psaParams = \CSalePaySystemAction::SerializeParams($origPsaParams);
					$psaFields = array('PARAMS' => $psaParams, 'PERSON_TYPE_ID' => $personTypeId);
					$paySystem->Update($psaId, $psaFields);
				}
			}
		}
	}
}