2017 © Pedro Peláez
 

magento-module kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

image

mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 3 Open issues
  • 31 Versions
  • 3 % Grown

The README.md

Build Status Latest Stable Version Total Downloads, (*1)

Модуль интеграции Онлайн касс для Magento 1/2

Модуль разрабатывается для полной поддержки требований 54 ФЗ интернет-магазинами на Magento 1 и 2 для сервисов:, (*2)

  • АТОЛ онлайн. Модуль поддерживает версию сервиса АТОЛ v4 (ФФД 1.05).
  • Чеконлайн.

Функциональность модуля

Передача данных в Онлайн кассу

  • отправляет данные о счете/возврате:
    • автоматически при создании счета (настраивается в конфигурации)
    • автоматически при создании возврата (настраивается в конфигурации)
    • вручную одной из консольных команд (см. ниже)
    • вручную из админки кнопкой на странице Счета или Возврата

Повторная передача данных в Онлайн кассу (Resell)

(Не путать с чеком коррекции), (*3)

  • Отменяет предыдущий чек прихода (по Invoice) и отправляет новый.
    • вручную при нажатии кнопки Resell в админке
    • консольной командой (см. ниже)
    • другой модуль может триггерить \Mygento\Kkm\Api\Processor\SendInterface::proceedResellRefund

Получение данных из АТОЛ

  • получает из АТОЛ данные о статусе регистрации счета/возврата
    • автоматически (настраивается в конфигурации). После обработки данных АТОЛ отправляет результат обратно (колбек). По умолчанию URL: http://shop.ru/kkm/frontend/callback
    • крон задачей для проверки статусов
    • вручную из админки кнопкой на странице Счета или Возврата
    • консольной командой mygento:kkm:update-one {$uuid} или mygento:kkm:update-all {$storeId}

Получение данных из Чеконлайн

Работа сервиса Чеконлайн построена по синхронному принципу, понятие «статус» документа в сервисе отсутствует. Вместо этого используются кэширование ответов. Ключём кэша являются поля Group, RequestId, ClientId, что значит, что если будут отправлены запросы с одинаковыми указанными полями, то сервис ответит данными из кэша. В кэш помещаются успешные ответы и некоторые ошибки устройства Ккм (см. документацию Чеконлайн), (*4)

Процесс отправки данных в Онлайн кассу

  1. На основании сущности Invoice или Creditmemo формируется объект Mygento\Kkm\Api\Data\RequestInterface. 1.1. При асинхронной передаче - объект помещается в очередь (см. Magento Queue Framework) 1.2. При синхронной передаче - передается классу Vendor для отправки, (*5)

  2. Регистрируется попытка отправки данных. Создается сущность Api\Data\TransactionInterface\TransactionAttemptInterface со статусом NEW (1), (*6)

  3. Осуществляется передача данных в виде JSON., (*7)

    3.1. В случае УСПЕШНОЙ передачи (один из HTTP статусов [200, 400, 401]), (*8)

  • создается транзакция - сущность Magento\Sales\Api\Data\TransactionInterface в который записываются уникальный идентификатор запроса (UUID - Атол; RequestId - Чеконлайн) и все данные о передаче. В админке это грид Sales -> Transactions.
  • Сущность попытки отправки TransactionAttemptInterface получает статус Sent (2)
  • Создается комментарий к заказу
  • Транзакция получает в ККМ-статус (kkm_status):, (*9)

    • Атол - wait
    • Чеконлайн - done, (*10)

      3.2. В случае НЕУСПЕШНОЙ передачи (статусы отличные от [200, 400, 401] (так же 500 для Чеконлайн), отсутствие ответа от сервера, некорректные данные в инвойсе или возврате), (*11)

  • Сущность попытки отправки TransactionAttemptInterface получает статус Error (3), (*12)

  • Создается комментарий к заказу с описанием причины ошибки
  • Заказ получает статус "KKM Failed"
  • Если выброшено исключение VendorBadServerAnswerException (сервер не отвечает и еще в некоторых случаях) и включена асинхронная передача - то отправка будет снова помещена в очередь.
  • Если выброшено исключение VendorNonFatalErrorException и включена асинхронная передача - то:
    • Атол - выполняется генерация нового external_id и отправка будет снова помещена в очередь.
    • Чеконлайн - Сущность транзакции получает статус wait и отправка снова помещается в очередь без генерации нового external_id, т.к. ответ с нефатальной ошибкой не кэшируется. Так же при работе «облачного» сервиса Чеконлайн могут возникать ошибки возвращающие HTTP код 500 и структуру, содержащая поля: FCEError, ErrorDescription, Device и Fatal. Поле Fatal со значением true показывает, что повторное выполнение запроса приведёт к ошибке. Если поле Fatal равно false то отправка так же помещается в очередь.
  1. Только Атол. Модуль автоматически запрашивает у АТОЛа статус по всем транзакциям с ККМ-статусом wait, (*13)

    4.1 Попытки обновления статуса прекращаются, когда транзакция получает статус done, (*14)

    4.2 Максимальное количество попыток настройкой модуля ККМ., (*15)

  2. В случае НЕУСПЕШНОЙ передачи выполняется несколько попыток отправки с увеличивающимися интервалами (например через 1 минуту, 5 минут, 15 минут, 30 минут, 1 час)., (*16)

    5.1 Настройка интервалов доступна в настройках модуля ККМ., (*17)

    5.2 Максимальное количество попыток отправки тажке ограничего настройкой модуля ККМ., (*18)

    5.3 В случае, когда достигается максимальное количество попыток отправки, счетчик попыток обнуляется и отправка возобновляется через сутки., (*19)

Процесс повторной отправки данных (Resell)

Работает только для тех чеков, которые были отправлены и имеют статус Done., (*20)

  1. На основании Invoice создается чек возврата (refund) и отправляется в Онлайн кассу.
  2. Создается новая запись Payment Transaction, дочерняя от предыдущей отправки sell по этому инвойсу.
  3. Когда статус отправки из п.1 становится Done (Для Чеконлайн статус отправки сразу становится Done в случае успеха) - формируется и отправляется новый чек прихода (sell).
  4. Для нового чека прихода создается новая запись Payment Transaction, дочерняя от транзакции для чека возврата (п.2).
  5. Resell считается завершенным, если новый чек прихода (п.3) получает статус Done. Обновление статуса происходит так же как и во всех остальных случаях (Для Чеконлайн обновление статуса не происходит т.к. работа сервиса устроена по синхронному принципу)

Отчеты

Модуль отправляет отчеты об отправленных данных в Онлайн кассу на емейл (в конфиге). Неуспешные отправки отображаются в этом же письме с доп.деталями. Также этот отчет можно посмотреть в консоли., (*21)

  • Еженедельный (за прошлую неделю), Ежедневный (за текущий день), Ежедневный (за вчерашний день)
  • Верстка письма. Файл view/adminhtml/templates/email/kkm_report-mjml.mjml содержит верстку письма. Редактируется с помощью сервиса https://mjml.io/

Поддержка новых версий сервиса АТОЛ Онлайн

Модуль поддерживал версии сервиса v3 и v4. Если выйдет новая версия, необходимо сделать след.шаги:, (*22)

  1. создать class RequestForVersionX наследник абстрактного класса Request
  2. релилизовать его JSON представление - метод jsonSerialize()
  3. добавить создание объекта реквеста в Mygento\Kkm\Model\Atol\RequestFactory
  4. добавить инфу о новой версии сервиса в сурс модель Mygento\Kkm\Model\Source\ApiVersion

Использование очередей

  • отправка сообщений в Онлайн кассу может осуществляться в двух режимах:
    • синхронный (сразу после сохранения сущности или ручной отправки);
    • асинхронно (через нативный механизм очередей сообщений Magento).
  • режим работы настраивается в конфигурации

Ручная отправка данных

  • Отправка данных на странице сущности
  • Отправка данных консольной командой с указанием IncrementId сущности

Логирование сообщений

  • Модуль логирует (при включенном режиме Debug в Stores -> Configuration -> Mygento Extensions -> Extensions and Support) все запросы (и ответы).
  • Лог запросов доступен на странице конфигурации модуля

Список Rewrite

нет, (*23)

Список событий и плагинов, Описание действий и причины

События

  • sales_order_invoice_save_commit_after:
    • отправляет данные по инвойсу после его сохранения.
  • sales_order_creditmemo_save_commit_after:
    • отправляет данные по возврату после сохранения.

Плагины

  • before плагин ExtraSalesViewToolbarButtons на метод Magento\Backend\Block\Widget\Button\Toolbar::pushButtons добавляет кнопки Отправки в Онлайн кассу и кнопку проверки статуса на страницу сущности в админке

Список доступных реализованных API

нет, (*24)

Список встроенных тестов, что и как они тестируют

нет, (*25)

Cron-процессы

  • kkm_statuses
    • Только Атол. Обновление статуса: job обновляет статусы транзакций, у которых статус wait. По умолчанию каждую минуту
  • kkm_proceed_scheduled_attempt
    • выполняет повторные попытки отправки запросов по заданному расписанию (scheduled_at).
  • kkm_report
    • Отчет: job отправки отчета. Частота конфигурируется в админке на стр. настроек модуля. По умолчанию ежедневно в 00:07

Консольные команды

  • mygento:kkm:report - Отображает отчет. Аргументы: today, yesterday, week
  • mygento:kkm:refund - Отправляет возврат. Аргументы: IncrementId сущности
  • mygento:kkm:sell - Отправляет счет. Аргументы: IncrementId сущности
  • mygento:kkm:resell - Запускает процесс resell. Отправляет refund по текущему чеку. Аргументы: IncrementId сущности. При указании ключа -f увеличится external_id.
  • mygento:kkm:update-all - Только Атол. Запрашивает данные о статусе всех отправок со статусом wait для указанного стора. Аргументы: StoreID
  • mygento:kkm:update-one - Только Атол. Запрашивает данные о статусе указанной отправки. Аргументы: UUID

The Versions

30/07 2018

dev-master

9999999-dev https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

30/07 2018

dev-Mavlyan-logsTrait-for-other-modules

dev-Mavlyan-logsTrait-for-other-modules https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

24/07 2018

dev-clear-logs-up

dev-clear-logs-up https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

24/07 2018

dev-travis-phpunit

dev-travis-phpunit https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

17/05 2018

dev-feature-gift-card-support

dev-feature-gift-card-support https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

15/05 2018

dev-discount-up-version-patch-1

dev-discount-up-version-patch-1 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

24/04 2018

dev-m2

dev-m2 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

OSL-3.0

The Requires

 

The Development Requires

magento mygento

10/04 2018
10/04 2018

dev-update-version-1.1.7

dev-update-version-1.1.7 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

29/03 2018

1.1.6.1

1.1.6.1 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

29/03 2018

dev-hotfix-loop

dev-hotfix-loop https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

28/03 2018

dev-stage

dev-stage https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

28/03 2018

dev-nn-368-external_id

dev-nn-368-external_id https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

28/03 2018

dev-nn-347-1kop

dev-nn-347-1kop https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

22/03 2018

dev-defect-nn-368-external_id_increment

dev-defect-nn-368-external_id_increment https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

06/02 2018
02/02 2018
31/01 2018

dev-defect-nn-151-kkmFailed-status-error

dev-defect-nn-151-kkmFailed-status-error https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

31/01 2018

dev-mygmod-61-phpunit-test-generator

dev-mygmod-61-phpunit-test-generator https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

31/01 2018

1.1.4.1

1.1.4.1 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

30/01 2018
26/01 2018

dev-defect-nn-288-cron

dev-defect-nn-288-cron https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

17/01 2018

dev-split

dev-split https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

28/12 2017

dev-feature-disable-internal-calculations

dev-feature-disable-internal-calculations https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

27/10 2017

1.1.3

1.1.3.0 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

27/10 2017

1.1.2

1.1.2.0 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

24/08 2017

1.1.1

1.1.1.0 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

24/08 2017

dev-NN-117-newsprint

dev-NN-117-newsprint https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

16/08 2017

1.1.0

1.1.0.0 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

30/06 2017

1.0.4

1.0.4.0 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento

24/06 2017

dev-MYGMOD-44

dev-MYGMOD-44 https://github.com/mygento/kkm

Модуль интеграции фискальных кассовых аппаратов для Magento в соответствии с 54-ФЗ

  Sources   Download

proprietary

The Requires

 

The Development Requires

payment magento