Пишу своё приложение для онлайн-кассы Эвотор 5 (работает на Андроиде).
Нужно сделать функцию формирования и отправки чека. Точнее функция-то написана, но почему-то не работает.
Конкретная проблема: при выполнении PrintSellReceiptCommand выдаётся ошибка "Delivery option isn't paid". Что она значит - непонятно.
Документация API Эвотор либо неполная, либо просто мне не понятна. Сложность в том, что оборудование и библиотека Эвотор специфические, информации о них практически ноль.
Буду рад любой помощи в решении проблемы, в том числе платной. На Фрилансе тоже опубликовал задачу, но это скорее всё же вопрос, чем задание.
Вот имеющийся код формирования и отправки чека. Привожу его полностью, потому что непонятно, что именно вызывает ошибку.
List<Position> positions = new ArrayList<>();
positions.add(
Position.Builder.newInstance(
UUID.randomUUID().toString(),
null,
"Тестовый товар",
"шт",
0,
new BigDecimal(1),
new BigDecimal(3)
).build()
);
Map<Payment, BigDecimal> payments = new HashMap<Payment, BigDecimal>();
payments.put(new Payment(
UUID.randomUUID().toString(),
new BigDecimal(sum),
null, // Deprecated
new PaymentPerformer(
new PaymentSystem(PaymentType.ELECTRON, "Bank", "Cashless"),
null,
null,
null,
null
),
null,
null,
null,
null
),new BigDecimal(sum));
PrintGroup printGroup = new PrintGroup(UUID.randomUUID().toString(),
PrintGroup.Type.CASH_RECEIPT, null, null, null, null, false);
Receipt.PrintReceipt printReceipt = new Receipt.PrintReceipt(
printGroup,
positions,
payments,
new HashMap<Payment, BigDecimal>(), new HashMap<String, BigDecimal>()
);
ArrayList<Receipt.PrintReceipt> printReceipts = new ArrayList<>();
printReceipts.add(printReceipt);
PrintSellReceiptCommand command = new PrintSellReceiptCommand(printReceipts,null,null,email,new BigDecimal(0),address,place,null);
command.process(MainActivity.this, new IntegrationManagerCallback() {
@Override
public void run(IntegrationManagerFuture future) {
IntegrationManagerFuture.Result result2 = null;
try {
result2 = future.getResult();
switch (result2.getType()) {
case OK:
// ...
break;
case ERROR:
Error error = result2.getError(); // здесь выдаётся ошибка Delivery option isn't paid
break;
}
} catch (IntegrationException e) {
e.printStackTrace();
}
}
});