Печать Z-отчёта

Редактировать

Чтобы напечатать z-отчёт:

  1. В манифесте укажите разрешение на печать Z-отчётов:

    <uses-permission android:name="ru.evotor.permission.PRINT_Z_REPORT" />
    
  2. Создайте команду для печати отчёта и вызовите метод .process:

     // uuid пользователя, можно получить через UserApi
     // можно не передавать или передать null, тогда будет использован текущий авторизованный пользователь на терминале
     val userUuid: String? = null
     PrintZReportCommand(userUuid).process(context, callback)
    
  3. Обработка результата. В параметры метода .processпередайте следующий callback:

    val callback = IntegrationManagerCallback { future ->
                if (future.result?.type == IntegrationManagerFuture.Result.Type.OK) {
                    // Z-отчет успешно напечатан
                } else if (future.result?.type == IntegrationManagerFuture.Result.Type.ERROR) {
                       when (future.result.error.code) {
                        PrintZReportCommandResult.ERROR_CODE_DATETIME_SYNC_REQUIRED -> {
                            // Нужна синхронизация даты/времени ККМ и терминала
                        }
                        PrintZReportCommandResult.ERROR_CODE_KKM_IS_BUSY -> {
                          // ККМ в данный момент выполняет другую операцию
                        }
                        PrintZReportCommandResult.ERROR_CODE_NO_AUTHENTICATED_USER -> {
                            // Нет авторизованного пользователя на терминале
                            // Ошибку возможно получить только если в параметры команды не был передан userUuid
                        }
                        PrintZReportCommandResult.ERROR_CODE_NO_PERMISSION -> {
                            // У приложения нет необходимого разрешения (permission)
                            // Добавьте в манифест строчку <uses-permission android:name="ru.evotor.permission.PRINT_Z_REPORT" />
                        }
                        PrintZReportCommandResult.ERROR_CODE_PRINT_DOCUMENT_FAILED -> {
                            // Ошибка печати
                        }
                        PrintZReportCommandResult.ERROR_CODE_USER_NOT_FOUND -> {
                            // Пользователь не найден на терминале
                            // В параметры команды передан несуществующий userUuid
                        }
                    }
                }
            }
    

См. также