Что касается добавления свойств к заказу, то за это отвечает код:
//Получим коллекцию свойств, которые доступны для заказа. В моем случае это: ADDRESS, UF_FIO, EMAIL, DELIVERY_DATE и т.д.
$collection = $order->getPropertyCollection();
//Получим ассоциативный массив значений которые хотим записать в заказ
$parsedValues = $this->parser->getFields();
/**@var PropertyValue $property*/
foreach($collection as $property){
//Если свойства из коллекции соответсвуют текущему типу плательщика.
if ($property->getPersonTypeId() == $this->payerType){
//Здесь происходит маппинг полей из моего API в имена свойств заказа.
$fieldName = OrderPropertiesHelper::getField($property->getField('CODE'));
$value = $parsedValues[$fieldName];
//Непосредственно запись значения в свойство
if (!empty($value)) {
$property->setValue($value);
}
}
}
Вот код класса помошника. Массив $acceptableOrderFields описывает, какие свойства заказа будут записываться.
/**
* Класс-помошник который, позволяет получить имена поддерживаемых полей заказа.
*/
class OrderPropertiesHelper
{
private static $acceptableOrderFields = [
'ADDRESS' => 'address',
'UF_FIO' => 'user_name',
'EMAIL' => 'email',
'DELIVERY_DATE' => 'delivery_date',
'PHONE' => 'phone',
'COMPANY' => 'company_name'
];
/**
* Метод проводит соответсвие между полями заказа в битриксе и полями заказа в API
*
* @param $name
* @return null|string
*/
public static function getField($name)
{
if (isset(self::$acceptableOrderFields[$name])) {
return self::$acceptableOrderFields[$name];
} else {
return null;
}
}
}
В массиве $parsedValues у меня находится примерно такой контент:
Просто письма отправляются по событиям почтовым модулем битрикса, и на них завязана работа основного магазина. Поэтому менять поведение почтовых шаблонов не хотелось бы. Возможно есть какие либо другие функции офрмления заказа, которые могли бы мне помочь?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
https://dev.1c-bitrix.ru/api_help/main/reference/c...
Что касается добавления свойств к заказу, то за это отвечает код:
Вот код класса помошника. Массив $acceptableOrderFields описывает, какие свойства заказа будут записываться.
В массиве $parsedValues у меня находится примерно такой контент:
Если что-то не понятно, пишите.