Skip to main content

Выгрузка заказов с сайта в 1С

10 июля, 2020 15:29
Просмотров 1006
Section background

Как правило, кроме загрузки и обновления каталога на сайте, требуется еще и выгружать заказы с сайта в 1С.

Настройка на со стороны сайта, производится в блоке «Обмен заказами с 1С».

Для того, чтобы базово включить выгрузку, то есть чтобы сайт начал отдавать заказы на запрос из 1С, достаточно отметить чекбокс «Выгружать заказы».

Чуть ниже есть информация о том, какие заказы будут выгружены при следующем запросе из 1С, а также есть возможность посмотреть, содержимое, которое будет сформировано для 1С.

Ваша конфигурация может не принимать данные в utf-8, поэтому может потребоваться изменить кодировку, через пункт «Кодировка ответа».

При необходимости, вы можете ограничить нижний порог даты/времени создания заказов, чтобы не выгружать старые, даже если они изменятся. Или же, наоборот, сместить назад, дату/время последнего запроса, чтобы включить в состав выгрузки старые заказы.

Также, может потребоваться исключить из выгрузки заказы в каких-то статусах.

В ситуации, когда в заказах на сайте есть товары не только из 1С, может потребоваться следующая настройка, чтобы обеспечить совместимость

Помимо этого, если у товара нет GUID из 1С, то в информацию о товаре автоматически попадут данные об артикуле, если он заполнен.

В узел «Валюта» выгружаемого заказа, по умолчанию записывается валюта первого типа цен или «руб», если данных по типам цен нет. При необходимости, вы можете включить поведение, чтобы значение валюты было получено из данных заказа.

В набор данных по реквизитам заказа, добавляются данные по способу оплаты, способу доставки, адресу доставки, текущему статусу, адресу плательщика и т.д.

Если заказ на сайте находится в статусе «Отменен», то реквизит «Отменен» выгружается со значением «true», а также реквизит «ПометкаУдаления» с аналогичным значением.


Пример XML сформированного по заказу

1. Основные данные и данные контрагента:

Вполне возможно, вам может потребоваться модифицировать данные контрагента, то есть что-то добавить/изменить/удалить. Для решения задачи вы можете воспользоваться фильтром. Передаются 2 параметра, массив текущих данных контрагента, а также объект заказа.

Предположим, что мете заказа, также хранится ИНН контрагента и вам нужно его передать.

Пример:

\add_filter('itglx_wc1c_order_xml_contragent_data_array', function ($contragentData, $order) {
/*
* заполним ИНН контрагента из меты заказа, при генерации XML получится тег в "Контрагент->ИНН",
* то есть прямой потомок, как, например "Роль"
*/
$contragentData['ИНН'] = \get_post_meta($order->get_id(), 'мета ключ со значением ИНН', true);

return $contragentData;
}, 10, 2);

 

Контрагент — физ/юр

По умолчанию, контрагент всегда выгружается по данным, как физ. лицо. Если вам требуется деление на физ и юр лиц, то необходимо включить настройку:

При обработке данных о контрагенте, модуль в 1С решает юрлицо или нет, на основании отсутствии узла «ПолноеНаименование» и наличии узла «ОфициальноеНаименование».

Таким образом, при формировании данных по контрагенту, если включена настройка и заполнено стандартное поле компании «billing_company», то у контрагента не будет узла «ПолноеНаименование», а в «Наименование» и «ОфициальноеНаименование» попадет название компании, при этом указанные фамилия и имя будут выгружены, как представитель с отношением контактное лицо.


2. Данные по товарам:

3. Данные по реквизитам:

Если вам требуется модифицировать набор реквизитов заказа, то вы можете воспользоваться фильтром. Передаются 2 параметра, массив текущих реквизитов, где ключ это имя реквизита, а значение — значение реквизита, а также объект заказа.

Пример:

\add_filter('itglx_wc1c_order_xml_requisites_data_array', function ($requisitesArray, $order) {
    $requisitesArray['Какое-то название реквизита'] = 'Значение этого реквизита';

    // id заказа получается следующим образом - $order->get_id()

    return $requisitesArray;
}, 10, 2);

Поделиться: