Кастомизация соответствия статусов заказов

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 20

Задача

Добавить кастомные соответствия между статусами заказов в 1С и статусами заказов на сайте.


Доступные по умолчанию соответствия

На данный момент в системе по умолчанию доступны следующие соответствия статусов заказа на сайте: Доставляется, Закрыт, Готов.
Эти статусы проставляются на сайте в зависимости от информации, которая приходит из 1С в файлах выгрузки. Эти соответствия описаны в файле ~/xsl/import/commerceML2.xsl и выглядят следующим образом:

  • 1. Если заполнено поле "Дата отгрузки по 1С" - Доставляется
  • 2. Если стоит "Пометка удаления" - Закрыт
  • 3. Если заказ в статусе "Проведён" - Готов

Решение

Создание нового соответствия

Рассмотрим вариант создания нового статуса заказа на сайте и установление соответствия между ним и данными из 1С.

  1. Создаём новый статус заказа, назовём его "Отгружен", в поле "Код статуса" пропишем "shipped".
  2. Из файла ~/xsl/import/commerceML2.xsl копируем весь блок
    <xsl:template match="Документ">
    
  3. В скопированном блоке первые несколько строк - описание параметров, которые будут использоваться в шаблоне далее.

  4. Заводим свой параметр, назовём его is_shipped. Добавляем в начало блока запись
    <xsl:param name="is_shipped" select="$properties[Наименование = 'Отгружен']/Значение = 'true'" />
    
  5. Затем, в блоке
    <group name="order_props">
    
  6. мы находим следующий блок кода, где перечисляется обработка соответствия статусов заказов:

    <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</Значение>
</ЗначениеРеквизита>

статус будет установлен в "Отгружен".

Переопределение существующих соответствий

Переопределение существующих соответствий делается абсолютно тем же путём, как и создание нового соответствия.

  1. Сначала мы смотрим доступные статусы заказов в справочнике "Статус заказа" в модуле "Шаблоны данных"
  2. Затем смотрим поле "Код статуса" - именно его мы будем использовать для определения статуса
  3. Выполняем все те же пункты, которые мы делали при создании нового заказа, но пропускаем пункты 3 и 4
  4. Нам остаётся лишь изменить значение между тегами value в необходимого нам статуса на тот код статуса, который мы выбрали