1. Нужно настроить две БД (доверительную - на вход, и контрагент - на выход )в Почтовом модуле.
Одна для входящих сообщений, другая для исходящих (ниже рисунки).
2. Путь к папкам со схемами у них будет разный. Поскольку, как минимум объект WE, WI (накладная поставщика и приходная у них различаются по составу).
3. Во вложении схемы на вход и выход. Путь к ним указывается в настройках Почтового модуля.
4. Внешняя система на вход СМ+ передает файл – WE_Накладная поставщика_IN.xml
5. СМ+ принимает данный файл, в случае наличия ошибке в исходящем каталоге появится пакет описывающий причину ошибки. Часть ответов будет явно указывать на проблему (нет артикула, не верный тэг XXXX), но часть ответов будут непонятными для пользователя, но 100% понятные нам, разработчикам. Ошибку можно будет передать в службу технической поддержки Супермаг – они подскажут.
6. По факту обработки накладной поставщика, СМ+ сформирует обратную отсылку, которая будет состоять (3 варианта):
1. Накладная поставщика со статусом 3.
2. Накладная поставщика со статусом 0.
3. Накладная поставщика со статусом 0 + специальная метка (уточняем этот момент) + Накладная приходная со спецификацией и перечнем марок КИЗ.
Наши 3 варианта ответа должны обеспечить – ПРИНЯТ, ОТКАЗАНО, ПРИНЯТО и расхождениями. Для третьего случая, СМ+ и высылает приходную накладную, для того, чтобы внешняя система могла сопоставить результаты.
7. Во вложении примеры (для вариантов №1,2):
схемы почтовых объектов,
накладная поставщика (IN\WE_Накладная поставщика_IN.xml),
успех (накладная поставщика (WE) и приходная накладная (WI)) (OUT\Успех.XML),
отказ (накладная поставщика (WE) и приходная накладная (WI)) (OUT\Отказ.XML).
Необходимо отметить, что в файлах Успех.XML и Отказ.XML нам нужны только документы с типом WE (Накладная поставщика), присутствующий в файле документ Приходная накладная (WI) – анализировать НЕ НУЖНО. При обработке файла ищем там WE и смотрим ее статус.
- <POSTOBJECT description="Накладная поставщика" action="normal">
……
<DOCSTATE>0</DOCSTATE> - ОТКАЗ
<DOCSTATE>3</DOCSTATE> - УСПЕХ
5. Для варианта №3. Проводить анализ приходной накладной, нужно только в том случае (условие И), если (Накладная поставщика):
- поле содержит текст: 0
<POSTOBJECT description="Накладная поставщика" action="normal">
……
<DOCSTATE>0</DOCSTATE>
И
- поле имеет значения 2 , 3
<ACCEPTRESULTWE>X</ACCEPTRESULTWE>
СПРАВКА:
Для XML фильтра почтового модуля реализована функция «AcceptResultWE» - «Результат приёма накладной поставщика». Функцию можно использовать при редактировании XSD схемы накладной поставщика в редакторе xml-схем почтового модуля. Функция применима только для накладных поставщика и только при создании схемы для экспорта данных в XML.
Функция помещает в указанное поле одно из следующих значений:
0 – ожидается прием по накладной поставщика
1 – товары (работы, услуги, права) приняты без расхождений (претензий)
2 – товары (работы, услуги, права) приняты с расхождениями (претензией)
3 – товары (работы, услуги, права) не приняты
-1 – ошибочное состояние, например, накладная поставщика или, созданная на ее основании приходная накладная, имеют статус «Черновик».
Пункт 5.
Мы считаем, что информация такого рода, будет расценена нами и поставщиком, как ПРИНЯТО с РАСХОЖДЕНИЯМИ.
Поставщик должен отозвать свою накладную, и прислать нам новую с изменениями.
После этого оператор СМ+, повторно выполнит проверку, и по факту в 1С (или подобную систему) уйдет пакет с успехом.
---- Так же смотрим обязательно ниже, после рисунков.----
Примеры пакетов: SX.7Z (изменен 17072020)
Пример пакета - УСПЕХ: 200617164158_25019_12.XML
Накладная поставщика, которая должна прийти в СМ+ (в примерах она же).
* - так отмечены мои комментарии.
<?xml version="1.0" encoding="UTF-8"?> * оставить как есть.
<PACKAGE name="20200601-000001"> * оставить как есть.
<POSTOBJECT action="normal" description="Накладная поставщика"> * оставить как есть.
<Id>WE1000000033</Id> * оставить как есть.
<WE>
<SMDOCUMENTS>
<COMMENTARY>ТестСМ1С</COMMENTARY> * комментарий, просто текст.
<CREATEDAT>2020-06-17T00:00:00</CREATEDAT> * дата создания документа.
<TOTALSUM>500</TOTALSUM> * сумма по документу, полная с налогами.
<CLIENTINN>5032212790</CLIENTINN> * ИНН покупателя.
<CLIENTKPP>503201001</CLIENTKPP> * КПП покупателя.
<LOCATIONKPP>504745002</LOCATIONKPP> * КПП Места хранения
</SMDOCUMENTS>
<SMWAYBILLSEXT>
<SUPPLIERDOC>0Д83-000002</SUPPLIERDOC> * Номер накладной или УПД на бумаге, видимый глазами.
<SUPPLIERINVOICE>0Д83-000002</SUPPLIERINVOICE> * Номер счет фактуры.
<SUPPLINVOICECREATE>2020-05-31T23:46:06</SUPPLINVOICECREATE> * Дата счет фактуры.
<CONSIGNECLIENTINN>9102031075</CONSIGNECLIENTINN> * ИНН поставщика.
<CONSIGNECLIENTKPP>910201001</CONSIGNECLIENTKPP> * КПП поставщика.
</SMWAYBILLSEXT>
<SMSPECWE> * спецификация пошла.
<SPECITEM>1</SPECITEM> * номер строки.
<DISPLAYITEM>1</DISPLAYITEM> * номер строки.
<ITEMPRICE>100</ITEMPRICE> * цена.
<ITEMPRICENOTAX>100</ITEMPRICENOTAX> * цена без НДС.
<QUANTITY>1</QUANTITY> * количество.
<TOTALPRICE>100</TOTALPRICE> * Итого.
<TOTALPRICENOTAX>100</TOTALPRICENOTAX> * Итого без НДС.
<VATRATE>0</VATRATE> * Ставка НДС (если «Без НДС», то заполняется нулём) по строке
<VATSUM>0</VATSUM> * Сумма НДС по строке
<COUNTRYOKCM>643</COUNTRYOKCM> * Код страны по справочнику ОКСМ
<SUPPLIERARTICLE></SUPPLIERARTICLE> * Артикул товара в учётной системе поставщика (оставить как есть)
<BARCODEXT>50112982</BARCODEXT> * Штриховой код товара
</SMSPECWE>
<SMSPECWE> * спецификация пошла и повторяется для следующих позиций.
<SPECITEM>2</SPECITEM>
<DISPLAYITEM>2</DISPLAYITEM>
<ITEMPRICE>200</ITEMPRICE>
<ITEMPRICENOTAX>200</ITEMPRICENOTAX>
<QUANTITY>1</QUANTITY>
<TOTALPRICE>400</TOTALPRICE>
<TOTALPRICENOTAX>400</TOTALPRICENOTAX>
<VATRATE>0</VATRATE>
<VATSUM>0</VATSUM>
<COUNTRYOKCM>643</COUNTRYOKCM>
<SUPPLIERARTICLE></SUPPLIERARTICLE>
<BARCODEXT>4600439935254</BARCODEXT>
</SMSPECWE>
<SMSPECTOBACCOWE> * перечень марок.
<SPECITEM>1</SPECITEM> * номер строки.
<MARKCODE>00000050112982QEv?c"TAQB3ya15</MARKCODE> * МАРКА.
</SMSPECTOBACCOWE>
<SMSPECTOBACCOWE>
<SPECITEM>2</SPECITEM>
<MARKCODE>04600439935254QEv?c"TAQB3ya15</MARKCODE>
</SMSPECTOBACCOWE>
<SMCOMMONBASES>
<BASEDOCTYPE>OR</BASEDOCTYPE>
<BASEID>1</BASEID>
</SMCOMMONBASES>
</WE>
</POSTOBJECT>
</PACKAGE>