Кастомизация соответствия статусов заказов
Актуально для версии 20
Содержание
Задача
Добавить кастомные соответствия между статусами заказов в 1С и статусами заказов на сайте.
Доступные по умолчанию соответствия
На данный момент в системе по умолчанию доступны следующие соответствия статусов заказа на сайте:Доставляется, Закрыт, Готов. Эти статусы проставляются на сайте в зависимости от информации, которая приходит из 1С в файлах выгрузки. Эти соответствия описаны в файле ~/xsl/import/commerceML2.xsl и выглядят следующим образом:
- 1. Если заполнено поле "Дата отгрузки по 1С" - Доставляется
- 2. Если стоит "Пометка удаления" - Закрыт
- 3. Если заказ в статусе "Проведён" - Готов
Решение
Создание нового соответствия
Рассмотрим вариант создания нового статуса заказа на сайте и установление соответствия между ним и данными из 1С.
- Создаём новый статус заказа, назовём его "Отгружен", в поле "Код статуса" пропишем "shipped".
- Из файла ~/xsl/import/commerceML2.xsl копируем весь блок
<xsl:template match="Документ">
- Заводим свой параметр, назовём его is_shipped. Добавляем в начало блока запись
<xsl:param name="is_shipped" select="$properties[Наименование = 'Отгружен']/Значение = 'true'" />
- Затем, в блоке
<group name="order_props">
В скопированном блоке первые несколько строк - описание параметров, которые будут использоваться в шаблоне далее.
мы находим следующий блок кода, где перечисляется обработка соответствия статусов заказов:
<xsl:choose>
<xsl:when test="$is_canceled">
<property name="status_id">
<title>Статус заказа</title>
<value>canceled</value>
</property>
</xsl:when>
<xsl:when test="$is_ready">
<property name="status_id">
<title>Статус заказа</title>
<value>ready</value>
</property>
</xsl:when>
</xsl:choose>
</xsl:choose>
<xsl:when test="$is_shipped">
<property name="status_id">
<title>Статус заказа</title>
<value>shipped</value>
</property>
</xsl:when>
На этом все необходимые действия выполнены и при следующем обмене данными с 1С у заказов, в файле выгрузки которых будет иметься запись:
<ЗначениеРеквизита>
<Наименование>Отгружен</Наименование>
<Значение>true</Значение>
</ЗначениеРеквизита>
статус будет установлен в "Отгружен".
Переопределение существующих соответствий
Переопределение существующих соответствий делается абсолютно тем же путём, как и создание нового соответствия.
- Сначала мы смотрим доступные статусы заказов в справочнике "Статус заказа" в модуле "Шаблоны данных"
- Затем смотрим поле "Код статуса" - именно его мы будем использовать для определения статуса
- Выполняем все те же пункты, которые мы делали при создании нового заказа, но пропускаем пункты 3 и 4
- Нам остаётся лишь изменить значение между тегами value в необходимого нам статуса на тот код статуса, который мы выбрали