QA » История » Версия 150
« Предыдущее -
Версия 150/338
(Разница(diff)) -
Следующее » -
Текущая версия
as multisoft, 22.04.2019 20:43
QA Вопросы и ответы¶
Ссылки на документацию: aidl, примеры, описания функций¶
Перед началом работы: какие модели поддерживаются?¶
В настоящий момент Фискальное ядро установлено на следующие модели ККТ: MSPOS-K, MSPOS-T-Ф, MSPOS-Е-Ф.Им соответствуют строковые константы моделей (Build.MODEL) устройств:
- MSPOS-K: "V1S-G", "V1S", "V2"
- MSPOS-T-Ф: "T1MINI-G", "T1MINI"
- MSPOS-Е-Ф: "P1_4G", "P1_4G-G", "P1_4G-EU"
Q0:¶
Любые обращения по поводу конерктного устройства/ККТ. Вопросы по переводу устройств между ТК и ОК, а также между субаккаунтами внутри ТК и ОК.¶
A0:¶
При обращении по любым вопросам, которые касаются конкретного устройства, в чаты ТП и разработки
нужно указывать SN устройства (см. наклейку со штрих-кодами на обратной стороне аппарата).
Если вопрос связан с переводом устройства в тестовый контур или обратно в основной,
нужно прикладывать фото задней части устройства либо скриншот первой страницы mspos-expert с читаемым SN.
Перенос устройств между ТК и ОК, а также между их субаккаунтами осуществляется только после подтверждения права собственности на устройство.
Переводы клиентского оборудования из кастомного магазина в основной делаются по заявке с подписью ответственного лица и печатью организации.
Заявки на перевод принимаются только от той организации, к кастомному магазину которой устройство было привязано при отгрузке.
Перенос устройств между ТК и ОК после 13-00 МСК выполняется с большой вероятностью только на следующий день.
где найти SN¶
Фото не обязательно, если девайс уже привязан к Вашему личному кабинету. Предоставление фото позволяет избежать ошибок при переводе.
Q1:¶
Как добавить IFiscalCore.aidl в Android Studio?¶
A1:¶
0. Скачать IFiscalCore.aidl, IAuth.aidl, IExceptionCallback.aidl с сервера
1. В корневой папке проекта создать папку aidl
2. Внутри папки aidl создать папку с именем, соответствуюим package (com.multisoft.drivers.fiscalcore).
3. Правый клик по папке с именем package -> New -> AIDL -> AIDL File
4. Во всплывающем окне ввести имя интерфейса (например, IFiscalCore). Подтвердить выбор.
5. Скопировать содержимое скачанного файла в текстовом виде в созданный без(!) замены файлов.
6. Повторить операции 3-5 для IAuth.aidl и IExceptionCallback.aidl
Q2:¶
У меня ошибка вида Execution failed for task ':app:compileDebugAidl'. Либо .aidl:1: syntax error don't know what to do with "?"*¶
A2:¶
Вероятно файлы содержат BOM.
Выполните инструкции, описанные в Q1.
Q3:¶
Как зарегистрироваться в программе Sunmi Partners?¶
A3:¶
После подписания партнёрского соглашения на указанную в нём почту придёт приглашение на регистрацию в Sunmi Partners. Регистрироваться без инвайта не нужно.
Откройте присланную ссылку с персонального компьютера (ПК) в Google Chrome. Рекомендуется использовать его и в дальнейшем для любых действий в личном кабинете.
Первая загрузка сайта может занять некоторое время, подождите полной загрузки и не обновляйте страницу, пока она не будет полностью загружена.
Если страница загрузилась, но открывается пустой список для выбора страны и/или кода телефона - очистите кеш браузера и обновите страницу.
Не обновляйте страницу повторно, пока она не загрузится полностью.
Следуйте шагам реристрации. Оформлять смс подтверждение не нужно.
По окончании дождитесь верификации аккаута. Она выполняется автоматически в течение 1 рабочего дня.
В процессе регистрации будет предложено загрузить Company Registration Certification. Подробнее в Q5.
После регистрации и успешной верификации нужно добавить фискальное ядро в свой магазин.
Для этого выполните пункты A3_1
При настройке личного кабинета (ЛК) разработчика установите триггеры в соответствии с картинкой.
Debugger access control рекомендуется установить в положение "выкл", иначе придётся периодически вводить в устройство временный пароль,
который присылается на почту, указанную в ЛК в Development -> Debugger.
Не включайте Google Play. В основном контуре Google Play выключен в целях безопасности.
Настройки ТК¶
Q3_1:¶
На устройстве нет MSPOS-Expert. Что делать?
На устройстве нет прилоения %AppName%. Как его добавить?¶
A3_1:¶
Зайдите в личный кабинет на вкладку App Store -> App List,
найдите MSPOS-Expert (или %AppName%) справа в "No apps added", выделите его галку и нажмите кнопку "Added apps".
После этого приложение появится в "Apps Selected".
Если приложения нет в списке справа, проверьте список слева.
Для добавления приложения, отсутствующего в обоих списках напишите разработчикам этого приложения.
Также рекомендуем добавить TeamViewerQS и TeamViewerQS —APPX.
В дальнейшем не удаляйте MSPOS-Expert из магазина.
Как добавить приложение в ЛК разработчика¶
Q4:¶
Как подготовить устройство MSPOS к отладке?¶
A4:¶
В тестовом контуре возможность отладки автоматически включена для всех устройств, привязанных к тестовому аккаунту.
На своём устройстве в "Настройки"->"Безопасность" разрешите установку приложений из неизвестных источников.
Сообщите серийный номер устройств(а) (SN) сотрудникам Multisoft/Альфа-Проект, которые занимаются интеграцией.
Они привяжут его к вашему аккаунту по завершении регистрации в Sunmi Partners.
Для упрощения разработки в ТК в Вашем личном кабинете Device Configuration -> Common -> Debug Protect должен быть выключен.
В этом случае способ, описанный здесь, не актуален.
Там же Device Configuration -> Common -> Install by 3rd APP должен быть включен.
Подключите устройство к сети WiFi с открытым доступом и интернет.
Подключите включенное устройство по USB к компьютеру с установленным Android SDK.
Дождитесь установки драйверов (если используется Windows) и появления уведомления "Отладка по USB разрешена" на устройстве
В AndroidSDKInstallDir\android-sdk\platform-tools\ выполните "adb devices" из консоли,
на экран должны быть выведены серийный номер аппарата и device, что означает, устройство готово к отладке.
Если эта команда показывает "unauthorized", проверьте подключение к интернет и перезагрузите аппарат.
Если после перезагрузки adb devices всё равно возвращает unauthorized, либо при отладке возникают ошибки доступа,
попробуйте включить режим разработчика вручную стандартным для android устройств способом:
многократными тапами по Build.Number (Номер сборки) в меню "о телефоне".
Также попробуйте отключить (если была включена) и включить снова опцию "Отладка по USB" в меню "Для разработчиков".
A4_1:¶
Перевод MSPOS-Е-Ф в режим отладки (включение adb):
Данная процедура необратима. По завершении девайс перезагрузится, и на экране ККТ появится неудаляемый водяной знак.
Использование MSPOS-Е-Ф со включенной отладкой в боевом режиме недопустимо.
Будучи включённым, adb делает устройство небезопасным для конечного пользователя.
Последствия проведения транзакций при использовании устройства в режиме отладки ложатся на компанию, запросившую перевод в режим отладки.
Включение режима отладки разрешено только в целях разработки и тестирования.
При исользовании устройства только в целях тестирования рекомендуем использовать механизм gray release.
Для включения adb на MSPOS-Е-Ф кроме передачи сотрудникам Мультисофт SN и фото с читаемым SN необходимо:
- явно сообщить о своём намерении включить режим отладки (adb) на конкретном устройстве путём указания его SN в текстовой форме
- явно указать намерение использовать устройство в целях разработки и тестирования
- явно подтвердить, что последствия работы с включенным adb ясны
Пример: "Прошу предоствить код для adb на девайс PExxxxxxxxxx. В целях разработки и тестирования. Последствия ясны, риски приняты."
Включение режима отладки осуществляется путём ввода 4-значного одноразового временного кода.
Код необходимо вводить в специальное меню, которое открыватеся после 8 нажатий по TUSN в "Настройки" -> "О телефоне".
Срок действия кода: 24 часа.
Если после ввода появилось сообщение об ошибке, повторно вводить не нужно. Вместо этого сообщите о проблеме сотрудникам Мультисофт, по возможности передав текст сообщения.
Q5:¶
Что делать с Company Registration Certification при регистрации аккаунта в sunmi partners?¶
A5:¶
Прикрепите пустую картинку. Эта опция нужна китайским компаниям.
Q6:¶
Как загрузить приложение в магазин Sunmi?¶
A6:¶
Воспользуйтесь инструкцией по загрузке
При загрузке укажите правильные модели(Terminals): приложение будет доступно только на указанных моделях.
Поле price выставлять в соответствии с партнёрским соглашением.
После загрузки каждой версии в магазин требуется около 1 рабочего дня на автоматический аудит.
Если приложение было загружено в магазин в режиме пре-релиза (gray release),
аудит выполняется при первой загрузке и не распространяется на Change to official version.
Кнопка Change to official version нужна, чтобы применить грей релиз на все аппараты.
Изменение списка устройств для пре-релиза (в т.ч. применение пре-релизана все устройства - change to official version) не сопровождается аудитом.
Изменение атрибутов приложения, таких как скриншоты, описание, поддерживаемые модели и др. вызывает повторный аудит при применении этих свойств (кнопка Save внизу).
ТРЕБОВАНИЯ МАГАЗИНА ПРИЛОЖЕНИЙ К ПО
Для обновления приложения в магазине мы подготовили другую инструкцию
Q7:¶
Что нужно знать о регистрации фискального накопителя (ФН)?¶
A7:¶
Процедура регистрации выполняется один раз за время жизни ФН.
Регистрация ФН - часть процесса включения фискального режима работы ККТ.
Пока ККТ не зарегистрирована с ФН, она находится в учебном режиме. Об этом свидетельствует надпись * учебный режим * в начале чеков.
После регистрации ФН ККТ в процессе работы печатает фискальные документы, за исключением нефискальных документов (RecType.Unfiscal),
документов внесения/изъятия (RecType.PayIn/PayOut) и X-отчётов (PrintXReport).
Если ККТ зарегистрирована в неавтономном режиме (отсутствует флаг OperatingMode.Autonomous),
фискальные документы будут отправляться в ОФД по настроенному каналу связи (валидный сервер и порт ОФД,
выход в интернет по Wifi или через мобильную сеть).
Для регистрации фискального накопителя(ФН) нужно следующее:
а) ФН подключен и в состоянии "готов к регистрации" (FNGetState FnState.ReadyToFiscalization).
б) смена должна быть закрыта (GetDayState DayState.DayClosed)
в) не должно быть открыто ни одного документа (GetRecState RecState.Closed)
после этого можно начинать процедуру регстрации.
Q8:¶
Как зарегистрировать ФН / включить фискальный режим ККТ?¶
A8:¶
Процедура регистрации, в зависимости от желаемых параметров регистрации, может отличаться.
Основные операции при регистрации:
1) установка опций: см. блок "Запрос и установка параметров"
2) сохранение опций (см. SaveOptions )
3) регистрация (см. Register ).
при каждой регистрации обязательными для установки на шаге 1 являются:
SetOrgName
SetOrgAddress
SetPhysicalAddress
SetFnsServerAddress
Если при регистрации в битовом поле "режим работы" (op_mode) не установлен бит OperatingMode.Autonomous (0x02), обязательными на шаге 1 также являются:
SetSenderEmail
SetOfdHost
SetOfdPort
SetOfdName
SetOfdTaxId
Если при регистрации в битовом поле "режим работы" (op_mode) установлен бит OperatingMode.Automatic (0x04), на шаге 1 должен быть установлен номер автомата:
SetVendingSerial
В зависимости от того, является ли пользователь платёжным агентом (параметр agent в функции Register отличен от 0), на шаге 1 должны быть установлены следующие опции:
SetTransferOperatorName
SetTransferOperatorTaxId
SetTransferOperatorTelNum
SetTransferOperatorAddress
SetPaymentAgentTelNum
SetPaymentAgentOperation
SetCommissionAgentTelNum
SetContractorTelNum
Точный список требуемых параметров в зависимости от аргументов функции (пере)регистрации указан в Q25
Q9:¶
Какие особенности работы с несколькими СНО?¶
A9:¶
Пользователь может иметь несколько систем налогообложения (СНО). Запросить СНО, указанную при регистрации, можно функцией GetTaxation
При этом в чеках должна быть указана только одна из зарегистированных СНО.
Если пользователь зарегистрировал кассу с несколькими СНО, то перед каждым открытием документа (OpenRec )
текущая СНО должна быть установлена функцией SetTaxationUsing , в параметрах которой передаётся одна из зарегистрированных СНО.
Q10:¶
Для чего нужна перерегистрация?¶
A10:¶
Если параметры кассы и/или реквизитов пользователя изменились, об этом нужно уведомить Федеральную налоговую службу (ФНС)
посредством отправки оператору фискальных данных (ОФД) отчёта о перерегистрации в электронной форме.
Отчёт о перерегистрации формируется функцией CorrectRegistration.
Её параметры аналогичны функции Register, но нужно установить дополнительный - причину перерегистрации.
Причин перерегистрации может быть 4: замена ФН, смена ОФД, смена реквизитов пользователя и смена настроек ККТ.
Q11:¶
Как выполнить перерегистрацию?¶
A11:¶
Выполняется аналогично регистрации за исключением пункта 0):
0) убедиться, что в очереди на отправку в ОФД нет документов (OFDGetFirstQueuedDocNumber 0), иначе перерегистрация не будет выполнена.
1) установка опций, которые необходимо изменить, в связи с причиной перерегистрации: см. блок "Запрос и установка параметров"
Точный список требуемых параметров в зависимости от аргументов функции (пере)регистрации указан в Q25
2) сохранение опций (см. SaveOptions )
3) перерегистрация(см. CorrectRegistration ).
В связи с ограничениями ФН нельзя выполнить 1 перерегистрацию с несколькими причинами одновременно.
Например, нельзя поменять настройки ОФД и реквизиты пользователя одновременно,
нужно выполнить последовательно 2 перерегистрации в связи с этими причинами, выполняя шаги 1-3.
При этом устанавливаются и сохраняются только те параметры, которые соответствуют причине данной перерегистрации (при условии, что все остальные присутствуют).
Q11.1:¶
Какую причину перерегистрации выбрать при переключении режима между онлайн и оффдайн?¶
A11.1:¶
Правильный подход: при перерегистрации выбрать "смена настроек ккт" CorrectionReason.ChangeKKTSettings.
Однако, некоторые ФН не позволяют это сделать.
В таком случае нужно отменить документ и перерегистрировать с причиной "смена параметров ОФД" CorrectionReason.ChangeOFD.
Перед началом перерегистрации необходимо убедиться, что все необходимые параметры(опции) установлены Q25.
Q12:¶
Как напечатать чек?/ Как сформировать фискальный документ? / Как сформировать нефискальный документ?¶
A12:¶
В общем случае печать документа состоит из открытия OpenRec, наполнения документа и закрытия CloseRec.
Пока документ не закрыт, его можно отменить функцией RecVoid
Если ФН зарегистрирован с несколькими системами налогообложения (СНО),
перед открытием фискального документа с типом Sell/SellRefund/Buy/BuyRefund, либо чека коррекции,
необходимо из зарегистрированных СНО выбрать одну и установить её функцией SetTaxationUsing.
Настраивать СНО не обязательно для каждого документа.
Установленная после соединения с ядром СНО действует до следующей выгрузки ядра из оперативной памяти либо до следующей вызванной SetTaxationUsing.
Наполнение нефискального документа (RecType.Unfiscal) выполняется командами печати:
PrintLine
PrintLineAligned
PrintQRCode
PrintBarCode
SetFont
PrintRaster
Наполнение фискальных документов с типом Sell/SellRefund/Buy/BuyRefund, а также нефискальных с типом PayIn/PayOut выполняется по общему алгоритму:
1. Позиции. В случае PayIn/PayOut команда также обязательна.
PrintRecItem - добавление позиции, можно вызывать сколь угодно много раз.
Только для Sell/SellRefund/Buy/BuyRefund:
Перед PrintRecItem необходимо установить налоги функцией SetItemTaxes.
2. Печать итога.
PrintRecTotal - подведение итога. разрешено вызывать не более 1 раза на документ. После итога добавление позиций запрещено, можно вызывать только команды оплаты:
3. Оплата.
PrintRecItemPay - добавление оплаты, можно вызывать сколь угодно много раз, рекомендуется не более 6 раз на документ (с учётом сдачи).
В некоторых случаях требуется передать телефон или электронный адрес покупателя (тег 1008), об этом в Q13, Q14.
Добавление нефискальной информации в фискальный чек допустимо только при следующем условии:
выводимый на печать текст, штрих-код, QR-код и/или картинка не содержит данных, формат которых похож и/или повторяет формат фискальных данных, печатаемых на чеке.
При обнаружении нарушений печати нефискальных данных в фискальном чеке приложение удаляется из магазина приложений до устранения нарушений.
Q12_1:¶
Как сформировать чек коррекции?¶
A12_1:¶
Чек коррекции отличается от остальных чеков наполнением: оно происходит единственной командой FNMakeCorrectionRec, повтор которой недопустим.
Для формирования суммовых налогов в чеке коррекции перед FNMakeCorrectionRec нужно вызвать SetSumTaxes.
В этом случае параметр taxNum (порядоковый номер используемого налога) функции FNMakeCorrectionRec игнорируется.
Резюмируя: для формирования чека коррекции нужно последовательно и без повторов вызывать:
(если несколько СНО) SetTaxationUsing
OpenRec
(если нужны суммовые налоги)SetSumTaxes
FNMakeCorrectionRec
CloseRec
Q13:¶
Как передать телефон или электронный адрес покупателя (тег 1008)?¶
A13:¶
Для передачи этого тега необходимо использовать функцию SendClientAddress
Она выполняется один раз на весь документ в любой момент после открытия и до закрытия. Повторная передача ведёт к нарушению ФФД.
Установка одновременно электронного адреса и телефона покупателя не предусмотрена ФФД 1.05 от 21.03.2017.
Точно так же покупатель не может иметь нескольких телефонов и/или email одновременно.
При использовании SendClientAddress в опциях заранее должен быть установлен эл. адрес отправителя SetSenderEmail
Q14:¶
В каком формате передавать телефон или электронный адрес покупателя (тег 1008) в функции SendClientAddress ?¶
A14:¶
Телефон или электронный адрес покупатеся следует передавать в соответствии с ФФД 1.05 от 21.03.2017 Таблица 5, тег 1008:
Формат: +{Ц} или {С}@{C},
где Ц - "атрибут, обозначающий, что данные реквизита должны быть представлены в виде цифры",
С- "атрибут, обозначающий, что данные реквизита должны быть представлены в виде символа".
Символы и цифры должны быть представлены в электронной форме "в соответствии с кодовой таблицей CP866".
Q15:¶
Как изменить параметры автоинкассации при закрытии смены?¶
A15:¶
Включение или отключение автоинкассации выполняется функцией SetDayCloseAutoPayOut
Если необходимо сохранить значение параметра для применения его во всех следующих функциях закрытия смены (CloseDay ),
в т.ч. после перезагрузки, нужно сохранить опции (SaveOptions ).
Q16, Q17:¶
Какие типы документа доступны для чека коррекции в аргументе "operation" функции FNMakeCorrectionRec ?¶
Почему в чеке коррекции не работает OperationType.SellRefund и OperationType.BuyRefund )?¶
A16, A17:¶
В соответствии с ФФД 1.05 от 21.03.2017 Таблица 25 "Реквизит «Признак расчета» (тег 1054) для кассового чека коррекции (БСО коррекции)
может принимать одно из следующих значений: «1» – приход, «3» – расход."
Поэтому чек коррекции на возврат прихода и возват расхода возвращает ошибку.
Q18:¶
Как передать признак предмета расчета и признак способа расчета (теги 1212 и 1214)?¶
A18:¶
Для передачи свободных тегов используется функция SetTagAttribute (начиная с 1.8.28).
Её нужно вызывать перед добавлением позиции (PrintRecitem ), в которой необходимо установить соответствующий тег.
Обращаем внимание на примечания 1 и 2 к таблице 29 ФФД (введены Приказом ФНС России от 09.04.2018 N ММВ-7-20/207@):
1. В случае если в составе кассового чека (БСО) реквизит "предмет расчета" (тег 1059) содержит реквизит "признак предмета расчета" (тег 1212), имеющий значение "15",
то такой кассовый чек (БСО) при передаче в ОФД в электронной форме в реквизите "наименование предмета расчета" (тег 1030)
должен содержать одно из значений от "1" до "25", указанных в таблице 29.1.
2. В случае если в составе кассового чека (БСО) реквизит "предмет расчета" (тег 1059) содержит реквизит "признак предмета расчета" (тег 1212), имеющий значение "16",
то такой кассовый чек (БСО) при передаче в ОФД в электронной форме в реквизите "наименование предмета расчета" (тег 1030)
должен содержать одно из значений от "26" до "31", указанных в таблице 29.1._
В случае передачи в 1212 значений 15 или 16, в PrintRecItem
в аргумент itemName необходимо передавать значение реквизита из таблицы 29.1 ФФД без дополнительного текста: значения от "1" до "31".
Печатная форма формируется ядром.
Q19:¶
Какие значения передать при установке тегов 1212 и 1214?¶
A19:¶
Значения реквизита «признак способа расчета» (тег 1214) в соответствии с ФФД 1.05 от 21.03.2017 Таблица 28:
1 | ПРЕДОПЛАТА 100% |
2 | ПРЕДОПЛАТА |
3 | АВАНС |
4 | ПОЛНЫЙ РАСЧЕТ |
5 | ЧАСТИЧНЫЙ РАСЧЕТ И КРЕДИТ |
6 | ПЕРЕДАЧА В КРЕДИТ |
7 | ОПЛАТА КРЕДИТА |
Значения реквизита «признак предмета расчета» (тег 1212) в соответствии с ФФД 1.05 от 21.03.2017 в ред. Приказа ФНС России от 09.04.2018 Таблица 29:
1 | ТОВАР |
2 | ПОДАКЦИЗНЫЙ ТОВАР |
3 | РАБОТА |
4 | УСЛУГА |
5 | СТАВКА АЗАРТНОЙ ИГРЫ |
6 | ВЫИГРЫШ АЗАРТНОЙ ИГРЫ |
7 | ЛОТЕРЕЙНЫЙ БИЛЕТ |
8 | ВЫИГРЫШ ЛОТЕРЕИ |
9 | ПРЕДОСТАВЛЕНИЕ РИД |
10 | ПЛАТЕЖ |
11 | АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ |
12 | СОСТАВНОЙ ПРЕДМЕТ РАСЧЕТА |
13 | ИНОЙ ПРЕДМЕТ РАСЧЕТА |
14 | ИМУЩЕСТВЕННОЕ ПРАВО (с 1.12.37+) |
15 | ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД (с 1.12.37+) |
16 | СТРАХОВЫЕ ВЗНОСЫ (с 1.12.37+) |
17 | ТОРГОВЫЙ СБОР (с 1.12.37+) |
18 | КУРОРТНЫЙ СБОР (с 1.12.37+) |
19 | ЗАЛОГ (с 1.12.37+) |
Q20:¶
Как пробить сдачу?¶
A20:¶
Сначала пробейте оплату наличными, сумму, которую передал клиент, например, 100р.
IFiscalCore.PrintRecItemPay((int)PayType.Cash, "100.00", "ПРИНЯТО ОТ КЛИЕНТА НАЛИЧНЫМИ:",callback);
После этого выполните вызов PrintRecItemPay с параметрами PayType.Cash, в total передайте сумму со знаком "минус".
Например, сдача в 15 рублей 1 копейку оформляется вызовом:
IFiscalCore.PrintRecItemPay((int)PayType.Cash, "-15.01", "СДАЧА:",callback);
В предыдущих двух командах параметр itemText может быть любым.
В результате после закрытия документ, если "принято" - "сдача" == сумме стоимости всех позиций по документу, на чеке появится 2 последовательные надписи:
"ПРИНЯТО ОТ КЛИЕНТА НАЛИЧНЫМИ: 100.00"
"СДАЧА: 15.01"
и ниже, в соответствии с ФФД:
"НАЛИЧНЫМИ 84.99"
Q21:¶
Как работать по старому законотадельству в режиме ЧПМ ?¶
A21:¶
Если клиент по закону имеет право пользоваться ЧПМ, переход в режим ЧПМ осуществляется при соблюдении следующих условий:
1. ККТ не зарегистрирована
2. К ККТ не подключен (зарегистрированный) ФН
3. ПО умеет работать в режиме ЧПМ без обращений к ФН.
4. ПО умеет определять текущий режим работы через вызов функции DirectIO
Внимание! Режим работы ККТ, определяемый перечислением Mode отличается от режима работы ФН, описанного в OperatingMode
Численные значения перечислений лежат в начале страницы
Запрос текущего режима работы ККТ (Mode) выполняется следующим образом:
1. Создаётся экземпляр IAuth, который реализует все функции интерфейса.
2. Создаётся экземпляр IExceptionCallback по аналогии с любым другим коллбеком об ошибке
3. Выполняется команда DirectIO с параметрами DirectIOCmd.GetMode,
в качестве второго параметра необходимо передать идентификатор пользовательского ПО, либо package приложения, из которого функция вызывается.
4.1 Если команда выполнена успешно, ядро вызовет auth.Result(currentMode) с параметром currentMode, равном текущему режиму работы ККТ (Mode).
4.2 Пользовательское ПО сохраняет это число и сравнивает с Mode.OFD и Mode.ENVD, определяя текущий режим работы.
5.1 Если команда завершилась с ошибкой, коллбек об ошибке передаётся стандартно, через IExceptionCallback
Переход в режим ЧПМ осуществляется через программный вызов DirectIO при выполнении условий 1-3 аналогично запросу текущего режима работы ККТ (Mode).
В качестве первого параметра необходимо использовать константу DirectIOCmd.ChangeMode
При смене режима в auth.Result возвращается новый режим работы. Был режим: Mode.OFD. Сменили режим => в auth.Result возвращается Mode.ENVD
Q22:¶
Какие особенности у режима ЧПМ ?¶
A22:¶
В режиме ЧПМ все обращения к ФН отключены и будут возвращать ErrCode.Hardware, ExtHardwareErr.Nack кроме FNGetNumber.
Функции, начинающиеся с FN, OFD, FDI, QueryOFD, OfdOut, QueryFiscal созданы для работы в режиме ОФД,
обращаются к ФН и будут возвращать указанную выше ошибку в режиме ЧПМ.
В любой момент из режима ЧПМ можно перейти обратно в режим ОФД с потерей всех счётчиков и состояний по вызову команды DirectIO с параметрами для смены режима работы.
Для корректной работы устройства в режиме ЧПМ его необходимо зарегистрировать.
Перед регистрацией необходимо установить и сохранить следующие опции:
SetOrgName
SetOrgAddress
Регистрация выполняется стандартной функцией Register
В качестве параметров необходимо передать: reg_num, равный "00000", а также корректный ИНН и имя кассира. Остальные параметры не влияют на результат выполнения.
Q23:¶
Как проверить, к какому магазину привязано устройство?¶
A23:¶
Откройте App Store или Магазин приложений. Нажмите иконку пользователя справа вверху.
Открывшееся меню прокрутите вниз.
В поле "Service provider" или "поставщик услуг" показывается текущий магазин, к которому привязано устройство. По умолчанию это Multisoft.
Q24:¶
На устройстве не применяются настройки магазина, что делать?¶
A24:¶
Проверьте A23 ^. Если наименование магазина соответствует ожидаемому, убедитесь, что устройство подключено по Wifi к интернет,
и выполните перезагрузку. Допускается подключение через сеть sim-карты с доступом в интернет, но предпочтительнее пользоваться Wifi.
Если перезагрузка не помогла, зайдите в POS Steward -> network -> network test -> start testing.
Тест пройден успешно, если все три галочки - зелёные.
Если хотя бы одна из них красная, рекомендуется подключиться к другой Wifi сети, где тест пройдёт успешно,
т.к. корректное применение всех параметров магазина гарантируется только при полностью исправном соединении с интернет.
Q25:¶
Как работать с признаком агента? Что делать, если пользователь - агент/поверенный/комиссионер?¶
A25:¶
Если пользователь - агент/поверенный/комиссионер, соответствующий признак агента указывается в параметрах регистрации.
После регистрации можно установить текущий признак агента функцией SetAgentTagUsing (аналогично установке СНО, выполняется перед открытием чека).
Установка признака агента может быть нужна в случае, если необходимо сформировать документ с одним(несколькими) из зарегистрированных признаков агента, к примеру:
при регистрации указан PayAgent и BankPaySubAgent, а предмет расчёта в чеке относится только к PayAgent).
Текущий признак агента распространяется на все предметы расчёта (товары, услуги, ...) в чеке.
По умолчанию текущий признак агента равен указанному при регистрации.
Запросить признак агента в ФН (указывается при регистрации) можно функцией GetAgentTag
В зависимости от выбранного текущего признака агента в чеке должны быть установлены следующие параметры:
если пользователь - платёжный агент или платёжный субагент (установлены биты AgentTag.PayAgent и/или AgentTag.PaySubAgent)
SetCommissionAgentTelNum
SetPaymentAgentTelNum
SetContractorTelNum
если пользователь - банковский платёжный агент или банковскиий платёжный субагент (установлены биты AgentTag.BankPayAgent и/или AgentTag.BankPaySubAgent)
SetTransferOperatorName
SetTransferOperatorTaxId
SetTransferOperatorTelNum
SetTransferOperatorAddress
SetPaymentAgentOperation
SetPaymentAgentTelNum
SetContractorTelNum
если пользователь - поверенный, комиссионер и/или иной агент (установлен любой из бит AgentTag.Attorney, AgentTag.CommissionAgent, AgentTag.Agent
SetContractorTelNum
В предмете расчёта можно устанавливать признак агента по предмету расчёта функцией SetTagAttribute.
Текущий признак агента (current) добавляется в чек, если он отличен от 0.
При этом предмет расчёта может содержать признак агента по предмету расчёта.
Его значение должно быть подмножеством значений текущего признака агента в чеке (current), иначе ФЯ возвращает ошибку "неверный параметр".
Добавление признака агента по предмету расчёта осуществляется вызовом функции SetTagAttribute до добавления позиции, в которой данный признак необходимо установить.
В докмуент теги, относящиеся к признаку агента (далее - теги агента), добавляются при выполнении следующих условий:
текущий признак агента требует того по ФФД И значение тега не пустое.
Значения тегов агента для документа устанавливаются в ФЯ через функции из блока "Установка дополнительных настроек".
Пример: теги X, Y и Z установлены в непустое ненулевое значение, признак агента требует установки X, Y и K, которй null.
В этом случае в докмуент будут переданы теги X и Y.
В предмет расчёта теги, относящиеся к признаку агента (далее - теги агента), добавляются при выполнении следующих условий:
тег был передан в SetTagAttribute, И значение тега не пустое.
Пример: теги X, Y и Z установлены в непустое ненулевое значение через SetTagAttribute, признак агента по предмету расчёта требует установки X, Y и K, которй null.
В этом случае в предмет расчёта будут переданы теги X, Y и Z.
Q26:¶
Когда необходимо менять ФН?¶
A26:¶
Самый действенный способ - периодически проверять FNGetWarningFlags
Если WarningFlag содержит FNMemoryOverflow или UrgentCSReplace -> пора менять.
Если в ответе на фискальную операцию (открытие/закрытие смены/документа) в коллбеке об ошибке возвращается ErrCode.Hardware и ExtHardwareErr.Fatal,
а также установлены эти флаги -> пора менять уже прямо сейчас.
Q27:¶
Как менять ФН?¶
A27:¶
1. Закрыть смену, если была открыта
2. Если ккт находится в неавтономном режиме, нужно дождаться отправки всех документов в ОФД (OFDGetQueuedMessagesCount равно нулю)
3. Закрыть архив ФН CloseFiscalMode
4. Если ккт в неавтономном режиме - дождаться отправки отчёта о закрытии архива в ОФД (аналогично п.2)
5. Вставить новый ФН.
6. Выполнить перерегистрацию CorrectRegistration в связи с заменой ФН
Q28:¶
Где посмотреть логи MSPOS-Expert? как выгрузить логи?¶
A28:¶
Откройте MSPOS-Expert, перейдите на страницу "статус", внизу нажмите кнопку "выгрузка лога".
Если выпадет диалог с запросом разрешений, подтвердите их.
После этого логи появятся в корне карты памяти в папке "mspos"
Далее их можно будет выгрузить, подключив устройство к ПК, либо по teamviewer (более быстрый способ).
Q29:¶
Как будет происходить переход на НДС 20% в 2019 году?¶
A29:¶
Ниже при упоминании НДС 18% имеются ввиду ставки 18 и 18/118, которым соответствуют коды налогов TaxNum._18 (0) и TaxNum._18_118(2).
В соответствии с ФФД, 01.01.2019 НДС 18% должен быть заменён на НДС 20%. При этом номера ставок не изменились.
Мы сделали соответствующие изменения, согласно которым индексы останутся прежними, но в чеках, открытых после 1го января 2019 года включительно,
сумма НДС вместо 18% будет рассчитываться по ставке 20%.
Чеки, открытые до полуночи с 31 декабря на 1е января закрываются по времени открытия, т.е. ставка в них будет 18%.
Печатные формы будут также соответствовать ФФД, при условии, что MSPOS-Expert обновлён.
Для перехода с 18% на 20% от пользовательского ПО не требуется изменений в части общения с ФЯ, т.к. установка ставки НДС ведётся по её индексу.
Рекомендуется с 1го января контролировать версию ФЯ через GetAidlVersion, чтобы пользователь обновил mspos-expert.
Q30:¶
Как выполнить возврат с НДС 18% в 2019 году?¶
A30:¶
Ниже при упоминании ставки 18% имеется ввиду ставка НДС 18% или 18/118%.
До 2019 года кодам налогов TaxNum._18 (0) и TaxNum._18_118(2) соответствуют ставки НДС 18% и 18/118%.
После полуночи с 31.12.2018 на 1.01.2019 этим кодами будут соответствовать ставки 20% и 20/120%.
Для возвратов мы расширили ставки налогов TaxNum: добавлены индексы _REFUND_18 = 6 и _REFUND_18_118 = 7.
Чтобы после 01.01.2019 сделать возврат со ставкой 18%, необходимо использовать коды _REFUND_18 или _REFUND_18_118.
Добавлена блокировка установки ставок налогов _REFUND_18 и _REFUND_18_118 в чеках Sell и Buy. Чеки коррекции можно формировать с любой доступной ставкой.
В сформированном чеке сумма налогов по ставке будет рассчитана корректно.
Q31:¶
При закрытии чека (CloseRec) получаем ошибку errCode 1 (ErrCode.WrongArgument), extErrCode 9, message "Некорректное значение параметров команды ФН", хотя параметры заведомо корректные. В логах BadArgument. Что делать?¶
A31:¶
Согласно документации на ФН, так он сигнализирует о переполнении итогов смены. Необходимо аннулировать чек и закрыть смену.
Также имеется информация, что ФН на 36 месяцев под СНО, рассчитанный на работу только под услуги, отвечает BadArgument, если в 1212 указвыается 1 (товар).
Q32:¶
Как программно посмотреть системную информацию об устройстве (номер сборки, firmware version и т.д.)?¶
A32:¶
Программный доступ к системной информации на сайте SUNMI Developers
Документация к встроенному сканеру лежит здесь
Программно открыть App store со страницей определённого приложения, ещё ссылка.
Настройка пользовательских действий по нажатию на кнопки громкости.
Q33¶
Как открыть денежный ящик на MSPOS-Т-Ф?¶
A33:¶
Воспользуйтесь функцией aidl OpenDrawer (добавлена в 1.13.39)
Q34¶
Какая распиновка разъёма денежного ящика на MSPOS-Т-Ф? Куда подключать считыватель карт в MSPOS-Т-Ф ?¶
A34:¶
Ответы на эти вопросы, а также полный перечень разъёмов доступны по ссылке
Q35¶
Какие собенности при подключении тестового ФН (МГМ) ?¶
A35:¶
1. МГМ может быть использован только в целях разработки и тестирования
2. МГМ можно сбросить в состояние по умолчанию (готов к регистрации). FNResetDebug в AIDL.
3. ККТ с МГМ регистрируется только в тестовом контуре ОФД. Информацию по подключению к тестовому контуру нежно уточнять у ОФД, к которому Вы собираетесь подключиться.
Q36¶
Переданный в аргументе функции SetTagAttribute код товара отображается в ОФД некорректно. Что делать?
Как передать код товара (КТ, КТН) 1162 в виде массива байтов ?
В каком формате нужно кодировать символы для передачи 1162 через SetTagByteAttribute?¶
A36:¶
Некоторые ОФД придумали собственный способ кодирования 1162.
Для поддержки передачи кода товара в виде массива байт в 1.14.40 была добавлена функция SetTagByteAttribute
Вопросы, связанные с форматом данных тега 1162 при передаче в виде массива байт, следует адресовать технической поддержке конкретного ОФД.
Q37¶
Как работать с подакцизными товарами (признак торговли подакцизными товарами) 1207?¶
A37:¶
Установите Tag.ExceiseTag функцией SetTagAttribute до вызова функции (пере)регистрации.
Это нужно, чтобы в последствии можно было передавать 1212 со значением 2.
Q38¶
Как быстро применяются настройки в Личном кабинете (ЛК)? Как ускорить применение настроек ТК после изменения?¶
A38:¶
Настройки, установленные в ЛК SUNMI влияют только на устройства, привязанные к этому аккаунту.
Настройки магазина прилетают на устройство в течение нескольких минут при наличии стабильного интернет-соединения.
Если устройство в момент изменения настроек было не подключено к сети интерент или выключено, настройки применятся при следующем подключении к интернет.
Для ускорения применения настроек на устройстве необходимо:
0. Обеспечить стабильное подключение к интернет
1. Если приложение "Магазин приложений" было открыто ранее, смахнуть его из списка недавних приложений.
2. Зайти в "Магазин приложений" на устройстве
3. Дождаться полной загрузки магазина. В этот момент настройки применены.
Если устройство было подключено к ПК, настройки adb применятся при следующем подключении к ПК.
4. Если настройки не применены, нужно проверить, к какому магазину привязано устройство (см. Q23)
5. Если название магазина совпадает с названием ТК, перезагрузите устройство и повторите пп. 1-4, иначе настройки устройства поменять нельзя.