- актуальная версия СуперМаг Плюс начиная с 30.10.2022г., определена как 1.049.1 сп1.
Работа с Честным знаком из Супермаг Плюс построена по принципу «работа из одного окна», т.е. сотрудникам, которые работают в Торговой системе и должны взаимодействовать с государственными системами (ЕГАИС, Честный знак) не нужно заходить в несколько программ. Все необходимые документы загружаются в Супермаг Плюс и появляется возможность создавать учетные документы на основании документов ФГИС. Дополнительная возможность сопоставлять номенклатуру ФГИС и учетную номенклатуру позволяет минимизировать ошибки, связанные с человеческим фактором.
Общие принципы работы с маркированными товарами:
1. Факт перехода прав собственности на товар фиксируется через электронный документ, полученный по ЭДО.
2. Факты выбытия маркированной продукцией из оборота фиксируется на кассовом ПО при продаже конечному покупателю
В решении Супермаг Плюс есть возможность подключить электронный документооборот через сервис ПО СБИС (от компании Тензор).
Внимание!Идентификатор участника обмена который устанавливается в документе "УПД на приход", и "Накладная поставщика".Не передается в явном виде от провайдера электронного документооборота. В настоящее время для его модификации следует изменить схему объекта UI.XSD Оптимально (но не обязательно!), если его значение будет равно значению переменной в файле UI.XML. Значение может принимать любое значение (цифра, набор цифр, какой-то код), главное, чтобы он был уникальным. Для случая, если одна БД обслуживает несколько ЮР лиц.Или используется распределенная БД, работа с УПД в которых подразумевает, что используется более одной БД для обмена(чаще всего это одна Центральная БД) с документами УПД, и использует для получения свои почтовые каталоги (настроенные УПД фильтры).Из практики: <xs:element msdata:Locale="ru" name="SMWAYBILLSEXT">
После того, как изменена схема, установлено значение по умолчанию (или оставили все как есть, т.е. "1"). Проверьте настройку в почтовом модуле, параметр "Собственный идентификатор участника документооборота" - должен быть равен этому значению. Зачем это сделано?Сценарий таков:
|
---|
Здесь и далее, предлагается общая инструкция по настройке обмена электронными документами через провайдера Тензор (решение СБИС).
Схемы объектов используемые в процессе обмена (будут актуализироваться, изменяться, предлагаться варианты).
№ п.п. | Название объекта. | Тип объекта в СМ+ | Название файла. схемы | Файл схемы. (!эти файлы берем себе!) | Дата модификации. | Пример файла XML. Комментарий. |
---|---|---|---|---|---|---|
1. | Заказ поставщику. | OR | OR.XSD | OR.XSD | 21.01.2022 | 210625120745_12480_2_1.XML.1624601281.629194.xml |
OR_Заказ поставщику.XML | ||||||
2. | Подтверждение заказа поставщику. | OE | OE.XSD | 25.06.2021 | ||
3. | Накладная поставщика. | WE | WE.XSD | 25.06.2021 | В обмене с Тензор не участвует. (устарела). Возможно участие при использовании структуры с распределенными БД Супермаг. | |
4. | УПД на приход. | UI | UI.XSD | UI.XSD | 14.10.2022 от 1.049 сп3 | Функция ArticleByBarcode заменена функцией ArticleByBarcodeUI В функцию ArticleByBarcode внесено следующее изменение: если поиск артикула по штриховому коду из спецификации XML-документа не привел к успеху, то из штрихового кода удаляются лидирующие нули и выполняется повторный поиск артикула. (теперь задаётся три аргумента - штриховой код, код КИЗ, код ОСУ) Изменен принцип приема УПД на приход. Добавили функцию ArticleBySupplierCodeUI для определения артикула по артикулу Супермага,
<xs:element smimport:Function="ArticleBySupplierCodeUI(SMSPECWE.BARCODE, SMDOCUMENTS.CLIENTINN, SMDOCUMENTS.CLIENTKPP, SMSPECTOBACCOWE.MARKCODE, SMSPECOSUCODEWE.OSUCODE)" name="ARTICLE" type="xs:string" /> В перечень функций импорта данных из XML файлов добавлена функция ArticleByAnyCodeUI. Функция аналогична функции ArticleBySupplierCodeUI за исключением того, что в качестве аргументов для определения контрагента используются не данные о его ИНН и КПП, а код клиента Супермаг+. |
UI | UI.XSD | UI_1.051.XSD | 15.08.2023 | Удален лишний тег <xs:element name="UTDSUPPDOC" type="xs:string" /> | ||
UI | UI.XSD | 01.11.2023 от 1.052 | В XSD схеме до версии 1.052 УПД на приход (UI.XSD) имеется тег с явным указанием значения по умолчанию, например: Внесено изменение содержащее значение Собственного идентификатора участника документооборота из настроек почтового модуля: Внесено изменение для фиксирования в УПД данных в поле "Ключ товара из УПД" <xs:element smimport:Function="Decode(BARCODE, BARCODE)" name="CARDKEY" type="xs:string" /> | |||
UI | UI.XSD | 01.03.2024 от 1.053 | При обработке XML-файла входящего УПД на приход имелась, но не была декларирована возможность заполнять поле документа УПД OURUTDID (собственный идентификатор участника обмена УПД) значением атрибута «Собственный идентификатор участника документооборота» почтового ящика, в который пришел документ. Для этого необходимо, чтобы во входящем XML-файле значение тэга OURUTDID отсутствовало, а в XSD-схеме строка с описанием тэга выглядела следующим образом: <xs:element default="$(DOCEXCHID)" name="OURUTDID" type="xs:string" /> Где параметр $(DOCEXCHID) замещается значением «Собственный идентификатор участника документооборота» почтового ящика. Замещение выполняется внутри алгоритма почтового модуля в ходе импорта содержания XSD-файла для его использования при обработке XML-файла. | |||
UI | UI.XSD | 17.04.2024 от 1.053 сп2 | Функция импорта «ArticleKeyByVariousUI». Для документа УПД на приход, в спецификации которого есть поле «Ключ товара из УПД», создана функция импорта «ArticleKeyByVariousUI». Функция позволяет из перечня полей исходного документа - артикул Супермаг+, артикул контрагента, штриховой код, КИЗ или ОСУ, взять первое попавшееся непустое значение и поместить его в заданное поле (Ключ товара из УПД). Функция используется для того, чтобы в случае, когда оказалось невозможным автоматически определить артикул по данным документа поставщика, поместить в УПД в специальное поле некоторое значение, по которому можно было бы в дальнейшем определить этот артикул. Функция импорта «ArticleByVariousUI». Артикул товара по информации об артикуле Супермаг+, артикуле контрагента, штриховом коде, КИЗ или ОСУ. Функция позволяет определить артикул по любому набору данных, который будет присутствовать во входном XML-файле и может быть использован для поиска артикула. Функция имеет 7 параметров:
В XSD-схеме должны быть описаны все поля, которые требуются для задания аргументов функции. В XML-файле почтового пакета могут присутствовать только те поля, которых достаточно для определения артикула. Если для определения артикула используются данные контрагента (артикул контрагента, ИНН и КПП), то в XML-файле поле «КПП» может отсутствовать, если для однозначного определения контрагента достаточно только ИНН. | |||
UI | UI.XSD | 29.05.2024 от 1.053 сп2 | В структуру файла подтверждения приема УПД и файла УПД на отгрузку добавлены тэги INNSIGNATORY и NAMESIGNATORY – ИНН подписанта и имя подписанта. <xs:element name="INNSIGNATORY" type="xs:string" minOccurs="0" /> | |||
UI | UI.XSD | 25.09.2024 от 1.054 сп3 | Создана новая функция ClientByAnyGLNINN для обработки XML файлов при импорте документов. Функция возвращает код контрагента по его ИНН и КПП или GLN, в зависимости от того, что встретится во входном файле. Создана функция GenerateDocUIDateAnyGLNINN для обработки XML файлов при импорте документов. Функция генерирует номер документа Супермаг+ с использованием ИНН и КПП или GLN контрагента, в зависимости от того, что встретится во входном файле, а также КПП места хранения или GLN места хранения, в зависимости от того, что встретится во входном файле, и с контролем даты документа. Атрибуты функции: locationKpp КПП места хранения Примечание: контроль даты документа необходим в тех случаях, когда поставщик начинает нумерацию своих документов заново с некоторой даты, например, с начала года. | |||
5. | Требование на отбор | SW | SW.XSD | 21.01.2022 | SW_Требование на отбор.xml - В обмене с Тензор не участвует. Возможно использование для решения локальных задач. Один из способов применения - формирование документа на обмен товара (хлеб). | |
6. | Ответ системы СМ+ на факт приемки. | PACKAGE | UICONFIRM.XSD | UICONFIRM.XSD | 10.10.2022 от 1.049 сп2 | УПД фильтр. Формат данных XML. Содержание файла ответа с результатом приемки. |
PACKAGE | UICONFIRM.XSD | 01.11.2023 от 1.052 | В документы «УПД на приход» и «УПД на отгрузку» на закладку «Грузораспорядители» добавлены атрибуты «Подписант» и «ИНН». Атрибуты заполняются именем и ИНН подписанта ЭДО – сотрудника подтверждающего УПД на приход, или отправляющего УПД на отгрузку. | |||
7. | Квитанция провайдера ЭДО. Протокол обмена дополнен получением технической квитанции в ответ на отсылку файла с результатом приемки. Квитанция имеет смысл подтверждения успешности обработки и пересылки провайдером ЭДО файла подтверждения. | - | - | - | 14.03.2022 | |
8. | УПД на расход. | UD | UD.XSD | UD_1049_1.xsd | 01.12.2022 от 1.049.1 | Добавлен тег BARCODEEXTERNAL.
В XSD схему почтового объекта УПД на отгрузку добавлен тэг SMDOCTRANSPORT, содержащий информацию транспортного раздела. Данные заполняются при создании документа из соответствующих полей расходной накладной. |
UD | UD.XSD | 01.11.2023 от 1.052 | В структуру файла подтверждения приема УПД и файла УПД на отгрузку добавлены тэги INNSIGNATORY и NAMESIGNATORY – ИНН подписанта и имя подписанта. <xs:element name="INNSIGNATORY" type="xs:string" minOccurs="0" /> | |||
UD | UD.XSD | 11.07.2024 от 1.054 | Расширено количество передаваемых данных. | |||
9. | Ответ СБИС на факт приемки покупателем продукции на основании УПД на отгрузку (полученного из СуперМаг Плюс). (от версии 1.049) | <xs:element name="REPLY"> | UDCONFIRM.xsd | 10.10.2022 от 1.049 | В рамках версии 1.049 мы ожидаем безоговорочного согласия от клиента ( <RESULT>1</RESULT>). Или полного отказа от приемки <RESULT>2</RESULT> Варианты связанные с согласованием разногласий пока не реализованы. | |
<xs:element name="REPLY"> | UDCONFIRM.xsd | UDCONFIRM_1.051.xsd | 21.08.2023 от 1.051 | Внимательно прочитать! Для отсылки информации о подписанте в УПД на отгрузку, необходимо в файл описания структуры XML пакета (UD.xsd) в тэг ="SMDOCUD" добавить тэги: | ||
2. Устарела.....бедует удалена...Схемы объектов используемые в процессе обмена (будут актуализироваться, изменяться, предлагаться варианты).
№ п.п. | Название объекта. | Тип объекта в СМ+ | Название файла. схемы | Файл схемы. (!эти файлы берем себе!) | Дата модификации. | Пример файла XML. Комментарий. |
---|---|---|---|---|---|---|
1. | Заказ поставщику. | OR | OR.XSD | 25.06.2021 21.01.2022 | ||
2. | Подтверждение заказа поставщику. | OE | OE.XSD | 25.06.2021 | ||
3. | Накладная поставщика. | WE | WE.XSD | 25.06.2021 | В обмене с Тензор не участвует. (устарела). Возможно участие при использовании структуры с распределенными БД Супермаг. | |
4. | УПД на приход. | UI | UI.XSD | 25.06.2021 21.01.2022 до 1.048 01.06.2022 от 1.048 01.09.2022 от 1.049 20.09.2022 от 1.049 сп1 11.10.2022 от 1.049 сп3 14.10.2022 от 1.049 сп3 | UPD_Natur_Prod.xml Изменено значение в схеме для OURUTDID UPD_Natur_Prod_SMALL.xml ; UPD_Natur_Prod_SMALL2.xml UPD_Natur_Prod_SMALL5_UKD.XML - УКД UPD_Natur_Prod_SMALL5.XML - УПД Представленная схема является универсальной, т.е. предполагает использование и УПД и УКД. Внимание! для успешной приемки УПД на приход в версии 1.049 - требуется установка патча на сервер. Sm.Post.Filters.Utd.1.049x64.7z В версию 1.049 сп1 и выше, это изменение уже включено, патч НЕ требуется. Функция ArticleByBarcode заменена функцией ArticleByBarcodeUI В функцию ArticleByBarcode внесено следующее изменение: если поиск артикула по штриховому коду из спецификации XML-документа не привел к успеху, то из штрихового кода удаляются лидирующие нули и выполняется повторный поиск артикула. (теперь задаётся три аргумента - штриховой код, код КИЗ, код ОСУ) Изменен принцип приема УПД на приход. Добавили функцию ArticleBySupplierCodeUI для определения артикула по артикулу Супермага,
Для версии 1.49 сп2, можно использовать патч. <xs:element smimport:Function="ArticleBySupplierCodeUI(SMSPECWE.BARCODE, SMDOCUMENTS.CLIENTINN, SMDOCUMENTS.CLIENTKPP, SMSPECTOBACCOWE.MARKCODE, SMSPECOSUCODEWE.OSUCODE)" name="ARTICLE" type="xs:string" /> В перечень функций импорта данных из XML файлов добавлена функция ArticleByAnyCodeUI. Функция аналогична функции ArticleBySupplierCodeUI за исключением того, что в качестве аргументов для определения контрагента используются не данные о его ИНН и КПП, а код клиента Супермаг+. | |
5. | Требование на отбор | SW | SW.XSD | 21.01.2022 | SW_Требование на отбор.xml - В обмене с Тензор не участвует. Возможно использование для решения локальных задач. Один из способов применения - формирование документа на обмен товара (хлеб). | |
6. | Ответ системы СМ+ на факт приемки. (до версии 1.045) | PACKAGE | UICONFIRM.XSD | устарела | 25.06.2021 | |
7. | Ответ системы СМ+ на факт приемки. (от версии 1.046) | PACKAGE | UICONFIRM.XSD | 29.09.21 | нет примера | |
8. | Ответ системы СМ+ на факт приемки. (от версии 1.046) | PACKAGE | UICONFIRM.XSD | 29.09.21 | ||
9. | Ответ системы СМ+ на факт приемки. (от версии 1.046) | PACKAGE | UICONFIRM.XSD | 29.09.21 | нет примера | |
10. | Ответ системы СМ+ на факт приемки. (от версии 1.046) | PACKAGE | UICONFIRM.XSD | 31.03.2022 01.09.2022 01.09.2022 от 1.049 10.10.2022 от 1.049 сп2 | Из схемы исключён элемент <xs:element name="SUPPLIERARTICLE" type="xs:string" /> Поскольку, отсутствие у карточки артикула поставщика, приводило к ошибке: ----- Причина исключения, уровень вложения 1 ----- Для обхода ошибки, есть 2 варианта:
Необязательные патчи для версии 1.047 сп2-3. Ошибка формирования файла ответа REPLY description_Результат приемки: Sm.Post.Filters.Utd.1.047x64.7z Неверный статус УПД при приеме немаркированного товара с расхождением: Схема для версии 1.48. Схема для версии 1.49 и выше. Схема для версии 1.49 сп2 и выше. УПД фильтр. Формат данных XML. Содержание файла ответа с результатом приемки. | |
11. | Квитанция провайдера ЭДО. Протокол обмена дополнен получением технической квитанции в ответ на отсылку файла с результатом приемки. Квитанция имеет смысл подтверждения успешности обработки и пересылки провайдером ЭДО файла подтверждения. | - | - | - | 14.03.2022 | |
12. | УПД на расход. | UD | UD.XSD | UD_1049_1.xsd | 01.06.2022 от 1.048 20.06.2022 от 1.048 30.08.2022 от 1.048 01.09.2022 от 1.049 01.12.2022 от 1.049.1 | Добавлен тег BARCODEEXTERNAL.
В XSD схему почтового объекта УПД на отгрузку добавлен тэг SMDOCTRANSPORT, содержащий информацию транспортного раздела. Данные заполняются при создании документа из соответствующих полей расходной накладной. |
13. | Ответ СБИС на факт приемки покупателем продукции на основании УПД на отгрузку (полученного из СуперМаг Плюс). (от версии 1.049) | <xs:element name="REPLY"> | UDCONFIRM.xsd | 10.10.2022 от 1.049 | В рамках версии 1.049 мы ожидаем безоговорочного согласия от клиента ( <RESULT>1</RESULT>). Или полного отказа от приемки <RESULT>2</RESULT> Варианты связанные с согласованием разногласий пока не реализованы. |
Перечень готовых QR кодов для самопроверки, на основании UPD_Natur_Prod.xml → QR коды.docx
2. Требования для клиентов для подключения Интеграции СМ+
- 1. Наличие версии Супермаг Плюс 1.49 или выше.
- Наличие специальной расширенной лицензии для ПО Супермаг плюс. Дополнительный модуль УПД EDI (ОДИН на ВСЁ ) в котором открыты модули их функции (список будет расширяться):
- №121 УПД на отгрузку (функции - 12001, 12002, 12100, 12104, 12002, 12100, 12104, 12109, 12110, 12111, 12116, 12121, 12150).
- №56 УПД на приход (функции - 5600, 5603, 5606, 5607, 5609, 5610, 5611, 5616, 5621). - Расширенная лицензия выдается по договоренности между клиентом и его курирующим менеджером (со стороны компании Ритейл Софт) на коммерческой основе.
- Лицензированию подлежит каждый экземпляр БД, в случае если клиентом используется вариант «распределительных баз».
- В случае, если у клиента имеется одна единая БД которая используется для работы всех пользователей предприятия (склады, магазины, офис) – расширенная лицензия понадобится только одна.
- Лицензия открывает доступ к необходимым разделам ПО, и выдает разрешение на их использование всем пользователям СМ+ без ограничений.
- Допускается вариант работы, когда расширенная лицензия приобретается только для центральной базы данных. В этом случае, функционал работы с ЭДО в подчинённых базах сохранятся, но попадает под действие некоторых ограничений. Сократить количество ограничений, которые могут возникнуть у операторов в магазинах, позволит использование мобильного рабочего места СММобайл. Отсутствие лицензии, не даст возможности использовать раздел УПД на приход, УП на отгрузку, но несмотря на это, процессы связанные приемкой товаров \ отгрузкой товаров на основании УПД – будут доступны (доступны с ограничением).
- Допускаются различные комбинированные варианты, при которых, модули ЭДО приобретаются не на всю сеть. Например, расширенная лицензия не устанавливается в «маленькие» магазины.
- Для окончательного принятия решения со стороны клиента о необходимости приобретения модуля ЭДО и его количеств. Компания разработчик ПО – предлагает получить временную лицензию на модуль ЭДО для старшей БД. И при наличии, для 1-й (любой) подчиненной сроком на 2 месяца.
- Для осуществления обмена данными на стороне СМ+ необходимо:
- Запустить и настроить Почтовый модуль Супермаг Плюс.
- В параметры настроек добавить две «Доверительные базы», например TENSOR1, TENSOR2 (или как на рисунках - SBIS_IN_УПД, SBIS_OUT).
- Каждая из БД должна производить обмен по протоколу FTP.
- Каждая из БД должна иметь свои уникальные каталоги обмена (IN, OUT).
- БД TENSOR1 – должна использовать фильтр «Стандартный фильтр XML»
- БД TENSOR2 – должна использовать фильтр «УПД XML» - Настройка отмеченная в п.7 обеспечивает обмен разными типами документов по разным каналам связи. (например, База TENSOR1 предназначена для обмена EDI объектами. База TENSOR2 предназначена для обмена УПД и УКД документами (в дальнейшем);
- Каждая из БД использует свои почтовые схемы объектов (XSD).
- Схемы объектов будут предоставляться службой Технической поддержки СМ+, но вариант разработки новых (других) схем самостоятельно клиентом– не исключён (если такая необходимость возникнет).
3. Общие принципы и условия обмена.
- Обмен подразумевает ситуацию при которой справочники (товары и их атрибуты, поставщики, клиенты и т.п.) не имеют полной синхронизации между отправителем и получателем.
- Поэтому идентификация объектов на принимающей стороне происходит по заранее определенным и назначенным признакам.
- Например: идентификация карточки, происходит на основании закрепленного за товаром Штрихового кода.
- Например: идентификация поставщика, происходит на основании GLN (GLN (Global Location Number) – глобальный номер места нахождения – уникальный номер в системе GS1 для идентификации участников цепи поставки и их материальных, функциональных или юридических объектов (подразделений) (филиалы/офисы/склады/рампы и т.д.). Используется главным образом в EDI для эффективной идентификации всех объектов, касающихся поставок).
- Торговая система Супермаг Плюс при формировании пакета на отправку или при осуществлении приема имеет возможность указания в схеме объекта XSD определенных функций, в задачу которых будет входить предобразование одной сущности в другую. Например: При приеме объекта со ШК, функция ArticleByBarcode* произведет преобразование ШК в артикул карточки товара в Супермаг Плюс. * - описание функций смотрите в бюллетенях изменений - Бюллетень изменений СуперМаг
- В качестве транспорта для передачи объектов со стороны Супермаг Плюс используется Почтовый модуль СуперМага работающий по протоколу FTP.
4. Необходимая информация для справочников Супермаг Плюс, которая требует обязательного указания и согласования с Тензор.
- Контрагент (Поставщик, Покупатель, Собственный контрагент). Указывается: ИНН, КПП, GLN.
- Контрагент (Поставщик). Указывается (опционально): на закладке "Артикулы контрагента" - спецификация поставляемой продукции, Арт. контрагента (внутренний код поставщика), Штриховой код товара (Штриховой код товара который зафиксирован в справочниках поставщика, для идентификации товара).
- Места хранения. Указывается: КПП, GLN
- Карточка товара. Указывается: На закладке "Штрихкоды", для одного ШК - атрибут "Обмен с EDI", именно этот ШК будет участвовать в отсылке поставщику. Алгоритм выбора ШК для отправки поставщику работает по следующему правилу: По умолчанию передается ШК поставщика, заранее заявленный в системе СМ+ (раздел контрагенты, закладка артикулы поставщика), если список артикулов и ШК у поставщика пуст. То передается ШК из раздела - карточка товара, который имеет признак - "Использовать при с EDI обмене". Если ни один штриховой код не отмечен, штриховой код будет подобран по правилу "первый попавшийся".
5. Настройки обмена.
- Для обеспечения полноценного обмена как EDI объектами, так и УПД и УКД объектами. Используются разные точки отправки и приемка.
- Пример настроек Почтового модуля для обмена EDI объектами:
- Пример настроек Почтового модуля для обмена УПД и УКД объектами:
Обратите внимание, что в рамках версии 1.49 сп2.
УПД фильтр. Опция «Сохранять копию (.bak) при отсылке».
В настройки почтового модуля для УПД фильтра добавлена опция «Сохранять копию (.bak) при отсылке». По умолчанию флаг не отмечен.
Если флаг отметить, то при отсылке пакетов по протоколу «УПД фильтр» копии отсылаемых файлов будут сохраняться в подкаталоге LOG каталога исходящих сообщений с расширением .bak.
Опция может быть полезна в тех случаях, когда провайдер забирает файлы пакетов в автоматическом режиме, но требуется знать точное содержание переданных файлов, например, в случаях разногласий с провайдером или контрагентом в интерпретации содержания отосланных пакетов. При использовании опции необходимо следить за размером дискового пространства и периодически удалять ненужные файлы.
5. Правила рассылки почтовых объектов.
- правила рассылок почтовых объектов указываются пользователями исходя из текущих потребностей, структуры сети и способа работы. Ниже представлены общие моменты.
- Интерфейс настройки:
- возможные настройки №1 (централизованная схема БД Супермаг (одна база данных)).
№ п.п. | Название объекта. | Тип объекта в СМ+ | Правило рассылки в доверительную базу. |
---|---|---|---|
1. | Заказ поставщику. | OR | 1-2 |
2. | Подтверждение заказа поставщику. | OE | нет, или 2-3 опционально по договоренности с провайдером EDI. |
3. | Накладная поставщика. | WE | нет |
4. | УПД на приход. | UI | нет |
5. | Ответ системы СМ+ на факт приемки. | PACKAGE | ответ происходит в автоматическом режиме. |
Настройка №2 находится на этапе проектирования.Предполагаемое время готовности февраль 2022г. |
---|
- возможные настройки №2 (распределенная схема БД Супермаг (одна старшая и множество подчиненных БД)).
Обмен с ЭДО и EDI (со всеми провайдерами) настроен в базе ЦО.
ЦО получает Накладную поставщика из магазина и отсылает ответ.
Справка:
Отличия между EDI и ЭДО
Теперь мы располагаем всей полнотой информации, чтобы уверенно ответить: EDI и ЭДО — разные системы. Доступен и ответ на вопрос о том, в чём заключаются отличия между ними. Главное из них — в следующем:
сообщения и документы в системе EDI имеют форму, не утверждённую законодательством — она определяется самими участниками обмена данными;
документация, передаваемая с помощью системы ЭДО, имеет форму, предусмотренную нормативными актами, и заверяется электронной цифровой подписью. Это придаёт ей юридическую силу и позволяет подавать в налоговые инспекции, суды, другие государственные и муниципальные органы.
Примечание:
№1 - В рамках версии 1.045 сп2. Была сделана доработка
Почтовый модуль. Функция импорта артикула XML файла.
В почтовый модуль добавлена функция ArticleByBarcodeUI для определения артикула при импорте XML файла по содержанию поля, предназначенного для хранения EAN штрихового кода артикула и/или таблицы с КИЗ.
Функция исследует значение поля для хранения штрихового кода. если поле содержит данные, то определяет артикул по штриховому коду, также как функция ArticleByBarcode. В противном случае функция исследует содержание таблицы с КИЗ и определяет артикул по содержанию первого попавшегося кода КИЗ (КИЗ содержит 14 символов GTIN товара после кода применения 01, из которого, в свою очередь, можно получить EAN товара отбрасыванием лидирующего нуля).
XSD схема должна содержать, как поле «BARCODE» (название может быть произвольным), так и таблицу с полем «MARCCODE», тогда как XML файл может содержать как оба поля, так и какое либо одно из них.
Функция ArticleByBarcodeUI предназначена, в первую очередь для обработки УПД на приход при приеме УПД от разных поставщиков, которые по разному формируют содержание документа.
--- Задача функции сводится к определению артикула из двух возможных источников.
Но, как показала практика, есть случаи, когда на товаре нет ШК, и еще нет КИЗ (не маркированный), чаще всего такой товар - является весовым.
В этом случае, "добыть" артикул нам не из чего. Конечно, можно исправить схему (убрать функцию: "ArticleByBarcode(BARCODE)" или "ArticleByBarcodeUI"). И передавать Артикул в явном виде в файле УПД (UI).
Но тогда сломается определение артикула для случаев, когда нужно опираться на ШК или КиЗ (т.е. для штучных товаров и маркированных товаров, а их порядка 90% в общем справочнике).
Предложение следующее (или \ или):
- Назначить на товар ШК = текущему артикулу.
- Назначить на товар любой короткий ШК, можно вообще любой.
- Назначить на товар ШК = артикулу поставщика.
Определить этот код, как "Используется при EDI обмене". Передавать его для поставщика и получать его обратно. На основании функций "ArticleByBarcode(BARCODE)" или "ArticleByBarcodeUI" - определять артикул товарной карточки. (т.е. не менять установленную логику работы).
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
№2 - Провайдер присылает документ с заполненной "меткой", необходимо было видеть значение этой же метки, но в другом документе.
Во вложении скрипт, который нужно пропустить по базе oracle от имени supermag.
Если по почте приходит документ «Подтверждение заказа поставщику» с изменившимся значением метки «EDIReceivedStatus»,
то это значение будет проставлено в ту же метку для заказа поставщику, находящегося в общих основаниях подтверждения заказа.
Ограничение: если после получения метки ее удалить из заказа поставщику и получить повторно документ
«Подтверждение заказа поставщику» с прежним значением метки, она в заказ поставщику не проставится,
т.к. в подтверждении заказа ее значение не изменится.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
№3 - В рамках версии 1.048. Была сделана доработка, касающаяся работы с УКД на приход.
....
- Почтовый модуль принимает УКД в документ «УПД на приход» с операцией «Коррекция при приемке». При приеме УКД создается новый документ УПД на приход, спецификация которого формируется, как спецификация первичного УПД с коррекцией по данным УКД.
- Содержание вновь созданного документа УПД на приход сверяется с содержанием приходной накладной. В случае расхождения, УКД на приход блокируется "Заблокирован", в случае совпадения - получает статус «Закрыт».
- Поставщику отсылается уведомление о подтверждении приема.
- Если приходная накладная имела статус «Принят на складе», то ее статус автоматически меняется на «Принят полностью».
....В случае расхождения, УКД на приход блокируется...
Не стоит воспринимать блокировку УКД, как отказ от приемки. В данном случае, система СуперМаг отказывает в обработке именно УКД. И ввиду того, что уже ранее сообщала поставщику о возникших расхождениях, и даже указывала на них - будет новый УКД. Обращаю внимание, не исправленный УКД (такого понятия нет), а именно новый УКД с новым номером. По факту его приемки в систему, СуперМаг выполнит всю необходимую серию проверок, чтобы подтвердить поставку или снова отклонить УКД.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
№4 - Почему УПД блокируется?
Нужно более детально смотреть состав документов, проверяется совпадение.
- МХ поставки.
- поставщик
- собственный контрагент
- вхождение в спецификацию
- количество
- цена полная (допускается расхождение в пределах не более +- копейка)
- цена без НДС (допускается расхождение в пределах не более +- копейка)
- сумма НДС (допускается расхождение в пределах не более +- копейка)
- ставка НДС
- полная сумма (допускается расхождение в пределах не более +- копейка)
- сумма без НДС (допускается расхождение в пределах не более +- копейка)
- сумма документа (допускается расхождение в пределах не более +- копейка)
- марки (при наличии)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
№5 - Почему УПД блокируется?
Исследовав накладную поставщика (УПД на приход) с внутренним документом Приходная накладная. Допустим, Вы сделали вывод, что СуперМаг Плюс неверно формирует документ.
Отбросив все негативные эмоции в сторону, предлагаю еще раз разобраться в случившимся. Основной момент про который нужно не забывать, это "Спасение утопающих – дело рук самих утопающих."
Никто, еще раз никто - не услышит ваши призывы, обвинения - пока не будет доказательной базы. И тут, в дело в ступает наше школьное образование, которое я надеюсь (те кто дочитал до сюда) имеют.
Рассмотрим пример формирования УПД от поставщика А.
Товар | Кол-во | Цена без налога | Полная цена | Сумма НДС | Сумма без налогов | Ставка НДС | Сумма |
ТЕСТОВАЯ ТЕСТОВАЯ КАРТОЧКА №1ТЕСТОВА | 13 | 10.83 | 13 | 28.17 | 140.83 | 20 | 169 |
На первый взгляд. вполне корректная накладная.
Но.....
13*10.83= 140.79 (Количество * Цена без налога = Сумма без налога )
13*13=169 (Количество * Цена = Сумма)
Можно и другой вариант рассмотреть:
Товар | Кол-во | Цена без налога | Полная цена | Сумма НДС | Сумма без налогов | Ставка НДС | Сумма |
ТЕСТОВАЯ ТЕСТОВАЯ КАРТОЧКА №1ТЕСТОВА | 13 | 10.83 | 13 | 28.16 | 140.79 | 20 | 168.95 |
13*10.83= 140.79 (Количество * Цена без налога = Сумма без налога )
13*13=169 (Количество * Цена = Сумма)
Можно ли считать, что какой-то из документов оформлен не верно? Да. Но попробуйте это объявить поставщику, т.е. указать ему на нарушение существующих правил формирования докментов, регламенты и пр.
Поставщик и вы, все время работали по бумажкам. Не уделяя должного внимания - свободно распоряжались копейками в документах, округляли их или отбрасывали.
Бухгалтерия оперировала только суммами и в спецификацию не лезла. В итоге вы и он, хитрили, подделывали \ подбивали документы под суммы и считали себя победителем.
ВСЁ, халява закончилась.
Теперь, такой документ проверку в Супермаг Плюс - не пройдет. Не сможем мы согласиться с документом поставщика, который пренебрёг элементарными правилами математики.
Наверное, уже большинство поняли в чем проблема (если не поняли, дальше можете не читать (до свидания! ).
Большинство думают, что формат электронной накладной такой, что "циферки" в ней помещаются не полностью, приходится "бедному" поставщику все округлять.
Но, как бы не так:
https://www.consultant.ru/document/cons_doc_LAW_388349/
Формат, например, поля, ЦенаТов = N(26.11)
Формат числового значения указывается в виде N(m.k), где: m - максимальное количество знаков в числе, включая знак (для отрицательного числа), целую и дробную часть числа без разделяющей десятичной точки, k - максимальное число знаков дробной части числа. Если число знаков дробной части числа равно 0 (то есть число целое), то формат числового значения имеет вид N(m).
Т.е. 11! знаков после запятой.
Спросите у поставщика- зачем его "программист", наокруглял значения цен и сумм и из "кареты сделал тыкву"?
Вот так выглядят эти документы в Торговой системе Супермаг Плюс.
И кто теперь, по вашему мнению, слабое звено?
Выдохнули.... и поняли, поставщика "переделать" не выйдет, придется искать решение у себя в системе.
- В документе Приходная накладная, есть закладка "Финансовые атрибуты" - там параметр "Округление". Меняем пробуем подгоняем. Помним, что погрешность в +- 1 копейка, для строки спецификации - СуперМаг Плюс умеет игнорировать.
- В документе Приходная накладная, есть функция "Заполнить ценами из УПД". Заполняем, пробуем в разных режимах округления.
Кто-то спросит, а нельзя ли заполнять Приходную накладную с теми же ошибками, что допустил поставщик? - НЕТ НЕЛЬЗЯ.
Что делать, если не удается ни проставить подходящие цены, ни выбрать правило? -> оформить Приходную накладную максимально близко по ценам и суммам. После чего подтвердить УПД вручную на сайте.
Сколько таких "кривых документов" можно получить в течении дня? - все зависит от поставщика. Обычно такие документы составляют малую часть. Обычно их создает один и тот же поставщик, мы очень надеемся, что рано или поздно проверяющие органы его "найдут". Заплатив штраф, за некорректную уплату налогов, он поменяет своего "программиста", на адекватного специалиста. И всем станет - счастье.
--------------------------------------------------------------------------
№6 - Почему при приеме УПД не находится товарная карточка?
Ошибка возникает из-за невозможности определить артикул по данным входящего пакета. Во входном пакете есть значение кода ОСУ: <OSUCODE>020481022303313837120</OSUCODE>. Этот код является штрихкодом формата GS1 в котором зашита информация о коде EAN13 – «4810223033138» и количестве «120». По коду EAN можно получить артикул. Но Супермаг не распознал последовательность символов 020481022303313837120 как корректный штрихкод и не получил из него код EAN13. Дело в том, что форматы штрихкодов очень разнообразны и по внешнему виду штрихкода не всегда можно определить его тип и, соответственно, выделить данные из штрихкода. Возможно неоднозначное определение типа. Поэтому в Супермаге имеется справочник «Штрихкоды» в котором должны быть описаны типы штрихкодов, используемых данным клиентом.
В данной БД не был разрешен штрихкод типа GS1. Я добавил в справочник «Штрихкоды» такой штрихкод (ид. 41, «секционный GS1»). После этого приём УПД в БД BELPROD заработал.
Ошибка:
--------------------------------------------------------
2023.02.07 (вторник) 10:56:59 1.49.1.0 sp3 Sm.Post.Server
----- Прерывание работы программы -----
сообщение: "Ошибка приёма объекта «UI 0000000037», виртуальный пакет «UPD_c4a6a73a-c3e1-4e68-9e36-94084c53120d.SVP»"
исключение: Sm.Core.BaseException
источник: Sm.Post.DbLoader
----- Причина исключения, уровень вложения 1 -----
сообщение: "Невозможно записать в БД объект «UI, 0000000037», таблица «SMSPECWE»"
исключение: Sm.Core.BaseException
источник: Sm.Post.DbLoader
метод: Void WriteNewObject(Sm.Server.Database.OracleTransConn)
в Sm.Post.PostObjectAdapter.WriteNewObject(OracleTransConn transaction)
в Sm.Post.PostObjectDocumentAdapter.WriteNewObject(OracleTransConn transaction)
в Sm.Post.PostObjectAdapter.WriteObject(OracleTransConn connection, PostObject originalByType)
в Sm.Post.PostUploader.UploadObject(IVirtualPackageReader reader, PostObjectInfo postData, PostObject originalByType)
в Sm.Post.PostUploader.UploadObjects(IVirtualPackageReader reader, ICollection objs, LockMultiObjects locker, Dictionary`2 original, IUploadExceptionHandler xHandler, IPostReplyClient postReply, Progress progress, Boolean postReplySuccess)
----- Причина исключения, уровень вложения 2 -----
сообщение: "ORA-01400: невозможно вставить NULL в ("SUPERMAG"."SMSPECWE"."ARTICLE")"
исключение: Oracle.ManagedDataAccess.Client.OracleException
источник: Oracle Data Provider for .NET, Managed Driver
данные:
соединено с: База данных=BELPROD; Пользователь=Supermag
текст команды: Insert into Supermag.SMSPECWE(DOCID,DOCTYPE,SPECITEM,ARTICLE,COUNTRY,DISPLAYITEM,DISPLAYITEMUI,ITEMPRICE,ITEMPRICECUR,ITEMPRICENOTAX,QUANTITY,QUANTITYUI,SPECITEMUI,TOTALPRICE,TOTALPRICECUR,TOTALPRICENOTAX,VATRATE,VATSUM) values(:pDOCID,:pDOCTYPE,:pSPECITEM,:pARTICLE,:pCOUNTRY,:pDISPLAYITEM,:pDISPLAYITEMUI,:pITEMPRICE,:pITEMPRICECUR,:pITEMPRICENOTAX,:pQUANTITY,:pQUANTITYUI,:pSPECITEMUI,:pTOTALPRICE,:pTOTALPRICECUR,:pTOTALPRICENOTAX,:pVATRATE,:pVATSUM)
тип команды: Text
параметры: pDOCID=«0000000037»; pDOCTYPE=«UI»; pSPECITEM=«1»; pARTICLE=«»; pCOUNTRY=«Россия»; pDISPLAYITEM=«1»; pDISPLAYITEMUI=«»; pITEMPRICE=«501,00»; pITEMPRICECUR=«0»; pITEMPRICENOTAX=«455,45»; pQUANTITY=«736,710»; pQUANTITYUI=«»; pSPECITEMUI=«»; pTOTALPRICE=«369091,71»; pTOTALPRICECUR=«0»; pTOTALPRICENOTAX=«335537,92»; pVATRATE=«10»; pVATSUM=«33553,79»
метод: Int32 UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs, BatchCommandInfo[], Int32)
в System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
в System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
в System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
в Oracle.ManagedDataAccess.Client.OracleDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
в System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
в System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
в Sm.Server.Database.OracleRunner.Update(OracleSafeAdapter dataAdapter, DataTable dataTable)
в Sm.Post.PostObjectAdapter.WriteNewObject(OracleTransConn transaction)