Кейс: как мы настраивали маркировку чеков по системе «Честный ЗНАК». Интеграция онлайн-касс с Drupal-сайтами

По закону №54-ФЗ «О применении контрольно-кассовой техники», владелец интернет-магазина обязан интегрировать свой сайт с онлайн-кассой. Это нужно для соблюдения требований законодательства: отправлять в налоговую инспекцию электронные версии чеков, передавать фискальные данные и т.д.

Помимо обязательных данных, прописанных в законе, с 2018 года некоторых предпринимателей коснулось нововведение: «Честный ЗНАК» — система маркировка товаров, которая пока охватывает только несколько категорий, но в ближайшем будущем будет обязательной для всех российских производств. Эта маркировка должна быть нанесена на товар, а информация о ней содержаться в чеке полного расчёта.

В этой статье мы расскажем о нашем Drupal-модуле для онлайн-касс и о том, как мы модифицировали его для маркировки чеков по системе «Честный знак» для нашего клиента.

Drupal-модуль от Initlab для генерации чеков

Наш разработчик Геворг Мкртчян создал контрибный модуль для выполнения требований ФЗ-54. Контрибный означает, что его можно скачать с drupal.org, он поддерживается сообществом Drupal-разработчиков. Если вы программист, можете скачать его бета-версию по ссылке.

Важное уточнение: эта версия модуля не включает передачу маркировки «Честного ЗНАКА», о которой мы пишем ниже. Решение написано под бизнес-процессы конкретного клиента, делиться им в публичном доступе мы пока не планируем. Однако базовая версия прекрасно подойдёт для работы с Бизнес.Ру.

Этот модуль позволяет интегрировать сайт на Drupal с сервисом «Онлайн-чеки» от Бизнес.Ру — это облачный сервис для автоматизации бизнеса, который поддерживает интеграцию со многими популярными платформами интернет-магазинов и осуществляет полную поддержку онлайн-касс (54-ФЗ) и ЕГАИС.

Наш модуль генерирует чек, сохраняет его копию в базе данных сайта и направляет его со всеми необходимыми данными в онлайн-кассу Бизнес.Ру. Этот модуль и был подключен на сайте нашего клиента RASTL — интернет-магазина постельного белья и ивановского текстиля.

Здесь может возникнуть резонный вопрос: почему бы не воспользоваться готовым сервисом генерации чеков, например, в составе процессинга платежей Сбербанка? У решения использовать отдельный сервис для оплаты чеков три причины:

  • для удобства клиентов, на сайте задействовано несколько методов платежей, а не только процессинг Сбербанка, поэтому пришлось бы писать отдельные решения под каждую платёжную систему, что крайне затратно;
  • на момент внедрения онлайн-кассы возможности работы с чеками у процессинга Сбербанка были ограничены, а Бизнес.Ру был одним из лидеров в этой сфере, с хорошей клиентской поддержкой и условиями;
  • у клиента на сайте своя логика продаж, скидок и промокодов, поэтому оптимально было использовать именно отдельный сервис.

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

Мы кратко опишем этапы покупки без сложных технических подробностей. Это нужно для понимания роли нашего модуля в процессе продаж и как в дальнейшем он был доработан:

1) человек оплачивает покупку на сайте любым удобным способом;

2) наш модуль формирует чек о предоплате, сохраняет его на сервере сайта и отправляет на Бизнес.ру;

3) Бизнес.Ру направляет сформированный электронный чек в ОФД (оператор фискальных данных) и в онлайн-кассу интернет-магазина;

4) ОФД направляет чек покупателю и передаёт данные о продаже в ФНС.

Покупка совершена, требования законодательства выполнены. С модулем у нашего клиента не было никаких проблем до появления системы «Честный ЗНАК». Его было необходимо доработать, потому что на предпоследнем шаге чек стало нужно наполнять новой информацией и отправлять в новое место, но обо всём по порядку.

«Честный ЗНАК»

В 2018 году в нашей стране появился «Честный ЗНАК» — национальная система маркировки кодами Data Matrix. Она помогает отследить путь товара от производителя к покупателю и призвана бороться с незаконным оборотом продукции, некачественными товарами и недобросовестными производителями.

Уже с января 2021 коды Data Matrix наносят на табачные, меховые изделия, обувь, лекарственные препараты и др. Если вы предприниматель и вашей продукции пока что не коснулся ЧЗ, вам всё равно нужно морально к этому приготовиться: к 2024 году планируется сделать маркировку обязательной для всех без исключения товаров на российском рынке.

Каждому подлежащему маркировке товару присваивается уникальный код Data Matrix. Он должен быть нанесён на продукцию физически в виде наклейки, а информация о нём должна быть передана в систему «Честный ЗНАК» (дальше мы будем сокращать её как ЧЗ). Каждый код можно проверить в системе ЧЗ, где будет отражена подробная информация о товаре.

Кейс клиента

Итак, товары интернет-магазина RASTL стали подлежать маркировке ЧЗ. То сеть теперь нашему клиенту нужно отправлять в Бизнес.Ру не только чек о предоплате, но и чек с информацией о маркировке. Давайте разбираться в этапах формирования, нанесения и передачи маркировки Data Matrix.

Как проходит маркировка товаров

Код маркировки формируется сразу после его изготовления и ввода в оборот. Производитель продукции «заказывает» коды для товаров у системы ЧЗ и наносит их на товар:

1) в системе ЧЗ создаётся карточка товара, задаётся количество изготовленных единиц и после формируются уникальные коды маркировок для всей партии;

2) отсюда коды выводятся в печать на нужный носитель;

3) маркировка наносится на товары.

Затем производитель отправляет товар продавцу, в нашем случае интернет-магазину. В его CRM заносится количество единиц полученного товара и коды соответствующих им маркировок.

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

Что не так с маркировкой чеков?

По нашей первой цепочке чек с предоплатой, сформированный на сайте, попадает в ОФД, а затем в налоговую и клиенту. Но теперь мы должны отчитаться не о том, сколько денег получили от клиента, а о том, что продали то самое маркированное фабричное полотенце, а не сшили его в подвале. Налоговой и ЧЗ нужна разная информация, поэтому мы не можем упихнуть всё в один чек и прислать разом: оплачено, не контрафакт.

То есть получается, что теперь нам нужен второй чек:

1) первый чек — информация о предоплате (оплате заказа) для налоговой и покупателя, отправляется после формирования заказа;

2) второй чек — информация о маркировке для ЧЗ и покупателя, отправляется после сбора посылки.

Мы уже разобрались, как Data Matrix оказывается на товаре и как проходит оплата на сайте, теперь рассмотрим процессы, которые происходят после.

У интернет-магазина RASTL CRM собственной разработки, где содержится информация о товарных остатках и соответствующих им кодах маркировок. Именно отсюда передаются данные на сайт для дальнейшего взаимодействия с Бизнес.ру

После оплаты заказа происходит следующее:

1) чек предоплаты сформирован, отправлен в Бизнес.Ру и клиенту;

2) заказ с сайта импортируется в CRM для обработки;

3) заказ собирается и подготавливается к отправке. Как мы писали выше, на этом этапе в CRM регистрируются фактические коды маркировок для товаров, которые будут отправлены. Если сильно упростить, до момента отправки товара клиенту код «спит». Он сгенерирован, наклеен на товар и содержит информацию о нём, но нигде не отображается;

4) формируется сопроводительная документация, из CRM на сайт передаются коды маркировок;

5) модуль на сайте генерирует чек полного расчёта с информацией о маркировке товара и передаёт его в Бизнес.ру;

6) Бизнес.Ру передаёт этот чек в ОФД, ОФД отправляет его в ЧЗ и маркировка проданных товаров выводится из системы;

7) покупатель получает оба чека на электронную почту или по смс.

С этими знаниями мы приступили к апгрейду модуля, чтобы «научить» его передавать информацию о маркировке товара в Бизнес.Ру.

Суть задачи и первые трудности

Код маркировки в физическом виде — это скопление квадратиков в квадратике. Но при передаче на сайт и дальше, когда заказ собран, ЧЗ через CRM шлёт на наш модуль строку с информацией о маркировке, которую мы должны передать в Бизнес.Ру.

Конечно, хотелось бы рассказать, как мы слёту всё переделали и запустили. Но мы столкнулись с тем, что строка с информацией о маркировке ни при каких условиях не отправлялись на Бизнес.Ру. Постараемся не перегружать вас программистскими подробностями наших мытарств и сократим рассказ о поиске решения.

Перекодировка маркировки: как мы добивались правды у ЧЗ и Бизнес.Ру

Сама маркировка состоит из кода товара и серийного номера товара. Именно в таком формате она поступает из CRM клиента в наш модуль. Мы пытались передать её в таком формате в Бизнес.Ру, но ничего не получалось — маркировка не попадала в ОФД. За эту доработку взялся наш разработчик Константин Прозоров.

Кейс: как мы настраивали маркировку чеков по системе «Честный ЗНАК». Интеграция онлайн-касс с Drupal-сайтами

Мы стали искать ответы на сайте ЧЗ, так как вся заваруха ради них. Оказалось, что две группы данных из CRM (код и номер товара) нужно было перекодировать в шестнадцатиричный формат. К такому нас жизнь готовила, поэтому мы встроили перекодировку в наш модуль. Он стал передавать данные в нужном формате, чтобы и ЧЗ, и Бизнес.Ру были нами довольны.

Кейс: как мы настраивали маркировку чеков по системе «Честный ЗНАК». Интеграция онлайн-касс с Drupal-сайтами

Первая маленькая победа: маркировка стала поступать в ОФД. Но нам сказали, что она всё равно некорректная. И поскольку мы сделали всё возможное по документации ЧЗ, дальше решили искать ответы у Бизнес.Ру. Спустя заявку на горячей линии, письмо на поддержку и ещё один звонок, нашего Константина соединили с программистом, который понимал всю тираду про байты, кодировки и прочее умное.

Выяснилось, что мы прописали слишком полную перекодировку по примеру ЧЗ. Но нигде не было сказано, что первые четыре байта дописывает Бизнес.Ру к уже преобразованной в шестнадцатиричный формат маркировке.

Кейс: как мы настраивали маркировку чеков по системе «Честный ЗНАК». Интеграция онлайн-касс с Drupal-сайтами

К слову сказать, если бы не живое общение, мы бы долго искали ответ. Например, в той же пояснительной документации Бизнес.Ру есть вот такая информация:

Кейс: как мы настраивали маркировку чеков по системе «Честный ЗНАК». Интеграция онлайн-касс с Drupal-сайтами

Но нет алгоритма формирования и никакой информации об этом «кусочке», который они подставляют сами.

В итоге всё сложилось благополучно. Модуль модифицирован, маркировка уходит куда нужно — хэппи энд.

Вместо вывода

«Честный ЗНАК» — неизбежное будущее всего российского рынка. В прошлом году это были шины, в этом питьевая вода и БАДы, а в следующем — ваши товары или товары ваших клиентов. Крайне рекомендуем всем, кто так или иначе связан с онлайн-торговлей, заранее к этому подготовиться. Пока что достаточно морально и информационно, но и с апгрейдом нужного инструментария не затягивайте — если что-то можно заранее организовать или улучшить, то так и поступите.

66
2 комментария

В 2022 читаю, о том, что мы делали в 2018м году в офд.
Да у них тоже есть аффилированные сервисы облачной фискализации. А закрытие чека предполаты, чеком выдачи товара норма и без всякой маркировки с 2017го года. Просто ФНС никого не гоняла и не было достаточны причин заморачиваться и делать правильно

1
Ответить

Интересный кейс, можно подробнее?

Ответить