Интеграция с cloudkassir.ru
Цель доработки (какую проблему решаем?)
Неизвестно
Предлагаемый нами вариант решения
Доработку делаем только для 11.7
- Реализуем интеграцию с cloudkassir.ru для оформления фискальных чеков через этот сервис.
- Доработки выполняем согласно документации CloudKassir.
- Реализуем поддержку методов
- Метод формирования кассового чека.
- Метод формирования чека коррекции.
- Метод получения статуса чека.
- Метод получения детализации чека.
- Дорабатываем кассовую часть программы, для корректной работы актуальных режимов через сервис cloudkassir:
- Честный знак. Разрешительный режим
- Честны знак. Разливное пиво
- ЕГАИС
- Несколько ФР
- Несколько СНО
- Адаптируем кассовую часть программы для корректной работы стандартных функций через сервис cloudkassir
- Стараемся использовать существующие алгоритмы, которые уже реализованы для работы с FRServer.
Описание доработок для реализации предлагаемой схемы работы
Настройка интеграции
Настройки выполняются в карточке кассового аппарата, вкладка "CloudKassir":
- Оформление чеков через CloudKassir (Да/Нет) - включает\отключает оформление чеков через CloudKassir
- Рабочие места, которые могут работать с этой кассой
- Юридическое лицо
- В карточке юридического лица обязательно должны быть заданы ИНН и режим налогообложения
- ИНН должен совпадать с ИНН юр. лица из ЛК CloudKassir
- Public ID (значение из ЛК CloudKassir)
- API Secret (значение из ЛК CloudKassir)
- При необходимости, можно задать имя и ИНН кассира
- ИНН проходит валидацию на стороне CloudKassir, тестовый\неправильный ИНН приведет к ошибке "Некорректный документ".
Кассовый аппарат может быть настроен одновременно для работы через FRServer и CloudKassir. При такой настройке кассовые чеки будут оформляться через CloudKassir, а прочие операции (печать на обычные принтеры, работа с банковским терминалом и т.п.) будут выполняться через FRServer
В карточке холдинга должен быть задан email системного администратора, на него будут отправляться сообщения об ошибках. Если email системного администратора не будет задан, то сообщения будут отправляться на email техподдержки Юпитер
Добавляем новую процедуру "CloudKassir.Оформить кассовый чек"
-
Формирует JSON чек в формате CloudKassir
- Если передан формальный параметр "Чек коррекции", то формируется JSON чека коррекции
- Логику формирования JSON смотреть в таблице параметров кассового чека и в таблице параметров чека коррекции
- Отправляет запрос на формирование кассового чека в CloudKassir. Получает и анализирует ответ.
-
Если CloudKassir отвечает ошибкой, то
- Ошибка выводится на экран
- Отправляется на почту системного администратора (вместе с лог-файлом)
- Работа процедуры прерывается.
- Если запрос прошел успешно, то сохраняет в заказ "ID чека в CloudKassir"
- В заказ прописывается признак фискализации
- Работа процедуры завершается.
Таблица параметров кассового чека
Параметр в CloudKassir | Описание параметра в CloudKassir | Значение в Юпитере |
Inn* | ИНН вашей организации или ИП, на который зарегистрирована касса | ИНН из юридического лица, указанного в кассовом аппарате |
Type* | Признак расчета | Определяется контекстом вызова. Income - Приход; IncomeReturn - Возврат прихода; Expense - Расход; ExpenseReturn - Возврат расхода. |
InvoiceId | Номер заказа в вашей системе | Код заказа в Юпитере |
AccountId | Идентификатор пользователя в вашей системе | Не передается |
CustomerReceipt* | Параметры формирования чека/состав чека | |
E-mail покупателя для отправки чека | Если для чека в параметре "Адрес покупателя для отправки в ФР" задан email, то используется он. Если нет, то Email из карточки клиента, указанного в заказе. Если нет, то пусто. | |
Phone | Телефон покупателя в формате без скобок и дефисов для отправки ссылки на чек |
Если для чека в параметре "Адрес покупателя для отправки в ФР" задан телефон, то используется он. Если нет, то Основной номер телефона из карточки клиента, указанного в заказе. Если нет, то пусто. |
TaxationSystem* | Система налогообложения | Система налогообложения из чека (по товарным строкам), если нет то СНО из настроек торгового зала, если нет то СНО из юридического лица, указанного в кассовом аппарате. |
CalculationPlace | Покупатель, наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта покупателя (клиента) | Не передается |
CustomerInn | ИНН покупателя | Не передается |
isBso | true, если чек является бланком строгой отчётности | Всегда false |
AgentSign | Признак агента | Не передается |
CashierName | Имя кассира | Имя кассира из кассового аппарата, если нет то имя текущего сотрудника |
CashierInn |
ИНН кассира | ИНН кассира из кассового аппарата, если нет то ИНН текущего сотрудника, если нет то пусто. ИНН проходит валидацию на стороне CloudKassir, тестовый\неправильный ИНН приведет к ошибке "Некорректный документ". |
AdditionalReceiptInfos | Дополнительная информация общая для чека, многострочная | Не передается |
AdditionalReceiptRequisite | Дополнительный реквизит чека | Не передается |
CustomerBirthday | Дата рождения покупателя (клиента) | Не передается |
CustomerStateCode | Гражданство | Не передается |
CustomerDocType | Код вида документа, удостоверяющего личность | Не передается |
CustomerDoc | Данные документа, удостоверяющего личность | Не передается |
CustomerPlace | Адрес покупателя (клиента) | Не передается |
CustomerStateCode | Гражданство | Не передается |
Items* | Параметры услуг/товарных позиций в чеке. | |
Label* | Наименование товара или услуги | Из карточки ТМЦ, первое что задано: Наименование для чека, Наименование для счета, Наименование |
Price* | Цена за единицу товара/услуги | Строка заказа, фактическая цена |
Quantity* | Количество | Строка заказа, количество |
Vat* | Ставка НДС услуги/товара | Ставка НДС из юридического лица, указанного в кассовом аппарате. Если в юр. лице нет, то из карточки ТМЦ. |
Amount* | Price * Quantity c учетом скидки | Строка заказа, фактическая сумма |
Method* | Способ расчёта | Из карточки ТМЦ. Если в карточке не задан, то всегда "4 FullPay, полный расчёт". |
Object* | Предмет расчёта | Из карточки ТМЦ. Если в карточке не задан, то для Услуг всегда "4 Service, услуга". Если в подгруппе стоит признак "Подакцизный товар" и считан код маркировки, то "31 АТМ". Если в подгруппе стоит признак "Подакцизный товар" и код маркировки не считан, то "2 ExcisedCommodity, подакцизный товар". Если в подгруппе не стоит признак "Подакцизный товар" и считан код маркировки, то "33 ТМ". Если в подгруппе не стоит признак "Подакцизный товар" и код маркировки не считан, то "1 Commodity, товар". |
MeasurementUnit | Единица измерения | Не передается |
Excise | Сумма акциза | Не передается |
CountryOriginCode | Код страны происхождения товара | Не передается |
CustomsDeclarationNumber | Регистрационный номер таможенной декларации | Не передается |
AgentSign | Признак агента | Не передается |
AgentData | Данные агента | Не передается |
PurveyorData | Данные поставщика платежного агента | Не передается |
AdditionalPositionInfo | Дополнительная информация внутри конкретной позиции чека | Не передается |
SaleObjectData | Дополнительный реквизит предмета расчета | Не передается |
ProductCodeData | Данные маркировки товара | Не передается |
MarkPartQuantity | Дробное количество маркированного товара | Не передается |
RawMarkCode | Код маркировки | Считанный код маркировки. Символы GS заменяются на "\u001d" |
GroupSeparator | Разделитель GS | Не передается |
UnitCode* | Мера количества предмета расчета | Из карточки ТМЦ (кг, литры или штуки). Изделия разливного пива, всегда в литрах |
additionalReceiptInfos | Дополнительный реквизит пользователя, тег ОФД 1084 | Не передается |
OperationReceiptRequisite | Операционный реквизит чека, тег ОФД 1270 | Не передается |
IndustryRequisiteCollection | Отраслевой реквизит предмета расчета | Заполняется если выполнена проверка в разрешительно режиме |
code | Фиксированное значение "030" | |
documentDate | Фиксированное значение "21.11.2023" | |
documentNumber | Фиксированное значение "1994" | |
requisiteValue | Строка-результат проверки в разрешительном режиме | |
Amounts* | Общая сумма платежа или возврата | |
cash* | Сумма оплаты наличными | Сумма оплат с типом фискальный 1. Без сдачи (сдача не поддерживается CloudKassir) |
Electronic* | Сумма оплаты электронными деньгами | Сумма оплат с типом фискальный 2 |
AdvancePayment* | Сумма из предоплаты (зачетом аванса) | Сумма "Зачет аванса" по заказу |
Credit* | Сумма постоплатой (в кредит) | Всегда 0 |
provision* | Сумма оплаты встречным предоставлением (сертификаты, др. мат.ценности) | Сумма оплат Фискальный 3 + Фискальный 4 |
UserRequisiteData | Дополнительный реквизит пользователя | Не передается |
Таблица параметров чека коррекции
Параметр в CloudKassir | Описание параметра в CloudKassir | Значение в Юпитере |
CorrectionReceiptData | Состав чека | |
OrganizationInn* | ИНН организации | ИНН из юридического лица, указанного в кассовом аппарате |
VatRate | Ставка НДС | Не передается |
TaxationSystem* | Система налогообложения | Система налогообложения из чека (по товарным строкам), если нет то СНО из настроек торгового зала, если нет то СНО из юридического лица, указанного в кассовом аппарате. |
CorrectionReceiptType* | Признак расчета коррекции | Определяется контекстом вызова. 1 - Корректировка прихода; 2 - Возврат прихода; 3 - Корректировка расхода; 4 - Возврат расхода |
CustomerInfo | Покупатель, наименование организации или фамилия, имя, отчество (при наличии), серия и номер паспорта покупателя (клиента), тег ОФД 1227 | Не передается |
CustomerInn | ИНН покупателя, тег ОФД 1228 | Не передается |
CustomerBirthday | Дата рождения покупателя (клиента), тег ОФД 1243 (ффд 1.2) | Не передается |
CustomerStateCode | Гражданство, тег ОФД 1244 (ффд 1.2) | Не передается |
CustomerDocType | Код вида документа, удостоверяющего личность, тег ОФД 1245 (ффд 1.2) | Не передается |
CustomerDoc | Данные документа, удостоверяющего личность, тег ОФД 1246 (ффд 1.2) | Не передается |
CustomerPlace | Адрес покупателя (клиента), тег ОФД 1254 (ффд 1.2) | Не передается |
CustomerContactAddress | Email или телефон покупателя, тег ОФД 1008 | Если для чека в параметре "Адрес покупателя для отправки в ФР" задан email, то используется он. Если нет, то Email из карточки клиента, указанного в заказе. Если нет, то если для чека в параметре "Адрес покупателя для отправки в ФР" задан телефон, то используется он. Если нет, то Основной номер телефона из карточки клиента, указанного в заказе. Если нет, то пусто. |
CashierName | Имя кассира | По аналогии с кассовым чеком |
CashierInn |
ИНН кассира | По аналогии с кассовым чеком |
PaymentPlace | Место использования ККТ (сайт) | Не передается |
PaymentAddress | Адрес использования ККТ | Не передается |
CorrectionType* | Тип коррекции | Определяется контекстом запуска. 0 - Самостоятельно, 1 - По предписанию |
AdditionalReceiptRequisite | Дополнительный реквизит чека (тег 1192) | Не передается |
CauseCorrection* | Основание для коррекции | |
CorrectionDate* | Дата документа основания для коррекции | Текущая дата |
CorrectionNumber* | Номер документа основания для коррекции | Всегда пусто |
Amounts* | Общая сумма платежа или возврата | По аналогии с кассовым чеком |
Items* | Содержимое позиций чека | По аналогии с кассовым чеком |
IndustryRequisites | Отраслевой реквизит чека | По аналогии с кассовым чеком |
UserRequisiteData | Дополнительный реквизит пользователя | Не передается |
OperationReceiptRequisite | Операционный реквизит чека, тег ОФД 1270 | Не передается |
Добавляем новую процедуру "CloudKassir.Получить состояние кассового чека"
- Принимает на вход "ID чека в CloudKassir"
- Отправляет запрос Запрос статуса чека
- Анализирует ответ
-
Если статус чека "Error" (Чек не пробился)
- Ошибка выводится на экран. Текст ошибки из ответа CloudKassir
- Ошибка отправляется на почту системного администратора (вместе с лог-файлом)
- Работа процедуры завершается с ошибкой
-
Если статус чека "Queued", параметра "Warnings" нет (Чек в очереди)
- Ошибка выводится на экран, "Кассовый чек еще не оформлен, находится в очереди CloudKassir"
- Ошибка отправляется на почту системного администратора (вместе с лог-файлом)
- Работа процедуры завершается с ошибкой
-
Если статус чека Queued и есть параметр "Warnings" (Чек в очереди, но не может быть пробит по указанной причине)
- Ошибка выводится на экран, "Чек в очереди, но не может быть пробит по указанной причине: {текст причины из ответа CloudKassir}"
- Ошибка отправляется на почту системного администратора (вместе с лог-файлом)
- Работа процедуры завершается с ошибкой
-
Если статус чека "Processed" (Чек успешно обработался).
-
Отправляет запрос Получение данных чека
-
Если запрос прошел успешно,
- Записывает в заказ параметры фискального чека (номер, ФПД, номер смены и т.п.)
- Работа процедуры завершается
-
Если запрос прошел с ошибкой
- Ошибка выводится на экран
- Ошибка отправляется на почту системного администратора (вместе с лог-файлом)
- Работа процедуры завершается с ошибкой
-
Если запрос прошел успешно,
-
Отправляет запрос Получение данных чека
Изменяем работу процедуры "Печать всего заказа на фискальный принтер"
-
Отключить для CloudKassir
- 404[66920815] "Печатать свой заголовок перед фискальным чеком"
- 30867470[59249035] "Печатать скидки в подвале фискального чека"
- 30867469[59245145] "Проверки, что можно распечатать чек"
- Есть для заказа не определен СНО, то получать его из юридического лица из кассового аппарата
-
Проверять, что заданы обязательные параметры
- Юридическое лицо в кассовом аппарате
- ИНН у юридического лица
- СНО для заказа
- Вместо процедуры 249[59244613] "Печать чека через FRServer (рекурсия)" вызывать новую процедуру "CloudKassir.Оформить кассовый чек"
Изменяем работу процедуры "Провести оплаты, распечатать чек (до закрытия заказа)"
-
Если в заказ прописан "ID чека в CloudKassir" и не записаны параметры фискального чека, то вызывает процедуру "CloudKassir.Получить состояние кассового чека"
- Если процедура "CloudKassir.Получить состояние кассового чека" завершается с ошибкой, то работа процедуры "Провести оплаты, распечатать чек (до закрытия заказа)" прерывается.
Изменяем работу процедуры "Закрыть текущий заказ"
- До работы с ЕГАИС, что на этапе работы с ЕГАИС в заказ были записаны параметры фискального чека.
-
Если в заказ прописан "ID чека в CloudKassir" и не записаны параметры фискального чека, то вызывает процедуру "CloudKassir.Получить состояние кассового чека"
- Если процедура "CloudKassir.Получить состояние кассового чека" завершается с ошибкой, то работа процедуры "Закрыть текущий заказ" прерывается.
Изменяем работу процедуры "Распровести все оплаты"
-
Если в заказ прописан "ID чека в CloudKassir" и не записаны параметры фискального чека, то вызывает процедуру "CloudKassir.Получить состояние кассового чека"
- Если процедура "CloudKassir.Получить состояние кассового чека" завершается с ошибкой, то работа процедуры "Распровести все оплаты" прерывается.
Прочие изменения в логике работы программы/функционале
- Отключить для CloudKassir
- 30867470[178127181], 249[178126872] Проверка времени на ФР при открытии дня
- 249[59703313] "Автоматическое закрытие\открытие рабочего дня и кассовой смены"
- 249[59704835] "Получить и записать в текущее рабочее место версию FRServer"
- 371[67698691] Меню функции. Функции кассового аппарата.
- 249[64159880] "ФР.Закрыть смену"
- 249[64159882] "ФР.Открыть смену"
- 249[56557808] "ФР.Внесение"
- 249[56557809] "ФР.Изъятие"
- 249[66781542] "ФР.Распечатать файл"
- 249[66781538] "ФР.Построчная печать файла"
- 249[66781544] "ФР.Напечатать строки"
- 249[66781543] "ФР.Отрезать чек"
- 249[66781536] "ФР.Печать QR кода"
- 249[66781532] "ФР.Открыть денежный ящик"
- 249[66912658] "ФР.Отменить текущий чек"
- 127[59703867] Пакетное оформление чеков коррекции
- 1507360[66781968] "ФР.Определить фискальный регистратор и установить с ним связь". Искать не только Кассовый аппарат FRserver, но и CloudKassir
- 30867469[59705721] "Найти и определить параметры ФР для этого текущего места". Искать не только Кассовый аппарат FRserver, но и CloudKassir
-
117[178126900] Провести все оплаты, по наличную номера чека определяется тип фискального документа. Если в заказ прописан номер чека и заказ не фискализирован, то печатается чек коррекции.
- Перед проведением оплат, запрашиваем параметры чека от CloudKassir. Если параметры не получены, то выдается ошибка и оплаты не проводятся.
- Режим нескольких ФР
- Режим "Совмещение систем налогообложения"
- Работа с предоплатой
-
Работа с маркированными товарами (Честны знак)
- Не проверялось
-
Работа с разрешительным режимом (Честный знак)
- Не проверялось
-
Работа с разливным пивом
- Не проверялось
-
ЕГАИС, DocsInBox
- Не проверялось
-
249[66650563] "Передать текущий заказ в ЕГАИС через УТМ"
- 30867469[66651512] "Определяем фискальные параметры"
-
249[176947695] "Передать чек продажи в ЕГАИС через DocsInBox}"
- 30867469[176949947] "Получаем параметры с фискального регистратора"
- Перед закрытием чека, до работы с ЕГАИС, запрашиваем параметры чека от CloudKassir. Если параметры не получены, то выдается ошибка и чек не закрывается. Таким образом, работа с ЕГАИС происходит только после успешного получения параметров чека. 471-14[2700-7301]
-
249[59572602] "Способ выдачи кассового чека"
- Может использоваться, но если выбран вариант "Распечатать", то реквизиты для отправки чека будут определяться из карточки клиента
Время составления ТЗ: Неизвестно ч.
Время работы программиста: Неизвестно ч.
Время внедрения: Неизвестно ч.
Время тестирования: Неизвестно ч.
Стоимость: Неизвестно руб.
Система JUPITER www.jupiter.systems (с) 2024г.
Нет комментариев