Служба INECRMAN (Incotex ECR Manager)

Здесь можно скачать последние обновления программного обеспечения.
Раздел только для размещения материалов по темам работы конструкторского бюро (КБ).
Аватара пользователя
AntonR
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 274
Зарегистрирован: 28 янв 2020, 15:18

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение AntonR »

web-valeev писал(а): 07 май 2020, 22:37 Добрый вечер. Прошу помочь с форматом и типом отправляемого пакета данных в службу. Думаю будет всем полезно если закрепите это на первой страничке.
Разберите пожалуйста с пояснениями на конкретном примере.вместе со смещением и старшим байтом вперед.
Отправляемый JSON:
{"command":"GetDriverInfo"}
Ожидаю ответа в виде пакета байт.
Здравствуйте. Эта команда в байтах выглядит так

Код: Выделить всё

00 00 00 1b 7b 22 63 6f 6d 6d 61 6e 64 22 3a 22 47 65 74 44 72 69 76 65 72 49 6e 66 6f 22 7d

Теги:
Аватара пользователя
globarh
Сообщения: 3
Зарегистрирован: 16 май 2020, 08:07

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение globarh »

Подскажите пожалуйста как на C++Builder отравить и получить команду:
String TextJSON = "{\"sessionKey\": null, \"command\": \"OpenSession\", \"userNumber\": 1, \"userPassword\": \"0\", \"portName\": \"COM6\", \"baudRate\": 115200, \"model\": \"119F\", \"serialNumber\": \"12345678\", \"debug\": true, \"logPath\": \"C:\Temp\"}";
int Length = TextJSON.Length();

IdTCPClient1->Host = "192.168.0.31";
IdTCPClient1->Port = 50009;
IdTCPClient1->Connect();

IdTCPClient1->Socket->Write(Length);
IdTCPClient1->Socket->Write(TextJSON);
Memo1->Text = IdTCPClient1->Socket->ReadLn();

IdTCPClient1->Disconnect();
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

globarh, посмотрите сообщение перед вашим.
Я просил разобрать в каком виде отправлять json в службу.

1. Необходимо json без пробелов перевести в формат buffer (пакет байт).
В моем примере JSON для получения версии драйвера. {"command":"GetDriverInfo"} переводится в формат Buffer (HEX).
Получается: 7b 22 63 6f 6d 6d 61 6e 64 22 3a 22 47 65 74 44 72 69 76 65 72 49 6e 66 6f 22 7d

2. Далее посчитаем что у нас 27 символов.

3. 27 это 1b в HEX.

4. Добавляем перед основным пакетом байт 00 00 00 1b, также в формате buffer.
Получается: 00 00 00 1b 7b 22 63 6f 6d 6d 61 6e 64 22 3a 22 47 65 74 44 72 69 76 65 72 49 6e 66 6f 22 7d

5. Создаем коннект и отправляем , то что получилось в п.4.

6. Отлавливаем ответ от порта. В ответе будет версия драйвера , тоже в виде пакета байт. Далее конвертнуть в нужный формат и работать с данными.

Прошу разработчиков службы добавить этот пример в инструкцию.
Аватара пользователя
AntonR
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 274
Зарегистрирован: 28 янв 2020, 15:18

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение AntonR »

globarh, Здравствуйте.
Вы с какой моделью ККТ налаживаете связь? Если как в примере, это Меркурий-119Ф, то можно убрать поля userNumber, userPassword и serialNumber, если у Вас всего одна ККТ. В остальном видится все верно, хотя я и не специалист по C++Builder.
И так как Вы включили логи, то в папке C:\Temp\ должны появляться файлы для анализа.
Аватара пользователя
globarh
Сообщения: 3
Зарегистрирован: 16 май 2020, 08:07

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение globarh »

Логи не появляются, ReadLn не получает ответ. Есть готовые примеры на Delphi, C++Builder, или похожих языках? Подключаю Меркурий 185Ф, параметр "model": "185F" выставил. Из 1С все работает нормально.
Аватара пользователя
AntonR
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 274
Зарегистрирован: 28 янв 2020, 15:18

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение AntonR »

globarh, Здравствуйте.
На Delphi будет примерно так

Код: Выделить всё

  Memo1.Clear;

  TextJSON := '{"command": "GetDriverInfo"}';

  IdTCPClient1.Host := '192.168.0.31';
  IdTCPClient1.Port := 50009;
  IdTCPClient1.Connect();

  IdTCPClient1.Socket.Write(length(TextJSON));
  IdTCPClient1.Socket.Write(TextJSON);

  Stream := TStringStream.Create('');
  IdTCPClient1.Socket.ReadStream(Stream);
  Memo1.Lines.Add(Stream.DataString);

  IdTCPClient1.Disconnect();
Аватара пользователя
globarh
Сообщения: 3
Зарегистрирован: 16 май 2020, 08:07

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение globarh »

Спасибо огромное, заработало, вот код на C++Builder
Memo1.Clear;

AnsiString TextJSON = "{\"command\": \"GetDriverInfo\"}";

IdTCPClient->Host = "192.168.0.31";
IdTCPClient->Port = 50009;
IdTCPClient->ConnectTimeout = 3000;
IdTCPClient->ReadTimeout = 3000;
IdTCPClient->Connect();

IdTCPClient->Socket->Write(TextJSON.Length());
IdTCPClient->Socket->Write(TextJSON);

TStringStream* Stream = new TStringStream();
IdTCPClient->Socket->ReadStream(Stream);
Memo1->Lines->Add(Stream->DataString);

IdTCPClient->Disconnect();
Аватара пользователя
bns68
Сообщения: 6
Зарегистрирован: 25 май 2020, 18:29

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение bns68 »

Здравствуйте! Подскажите, как передать в чек атрибут 1008 (для отправки электронной версии чека)?
Аватара пользователя
AntonR
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 274
Зарегистрирован: 28 янв 2020, 15:18

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение AntonR »

bns68, Здравствуйте. В команде CloseCheck параметр sendCheckTo отвечает за тэг 1008. Телефон или электронный адрес покупателя.
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

Добрый день. Коллеги есть несколько вопросов.
1. Можете предоставить список и коды ошибок от ККМ.?
2. Не нашел в документации как в чек отправить теги 1227 и 1228 (Наименование и ИНН покупателя) обязательные при некоторых расчетах.
Нашел. В команде открытия чека
3. Не хватает пробела в тексте ошибки от ККМ №66 - "Требуетсяпровести гашение"
Последний раз редактировалось web-valeev 27 май 2020, 12:04, всего редактировалось 3 раза.
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

Ещё вопрос. Корректно ли поведение ККМ, которое не позволяет производит инкассацию денег(Снятие суммы (WithdrawMoney)) при смене превышающей 24 часа? Ведь это не фискальная операция.
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

Коллеги уточните также по следующим ситуациям:
1. Словил ошибку при печати чека, но при этом не отменил чек.
Далее попытался напечатать чек ещё раз.
Команда GetStatus говорит что чек закрыт, но при этом команда открытия чека не сработала. На скриншоте видно.
http://prntscr.com/sop1as

2. При указании товару признака способа расчета "Оплата кредита" (paymentFormCode":7) - ККМ не позволяет закрыть чек.
Выходит ошибка -509, 'Оплата кредита возможна только отдельным чеком'.
Уточните что означает эта ошибка? При закрытии указываю способы оплаты prepayment и cash.
Все модели ККМ позволяют в одном чеке использовать разные способы оплаты.
Например это очередной платеж по кредиту:
Нужно отразить предыдущие платежи, текущий платеж, и остаток кредита.

3. Ошибка из.п.2. не очищается из памяти ккм и при оплате следующих чеков снова выходит.
Хотя признак способа расчета уже указан "Полный расчет".
На попытку отменить чек - ККМ отвечает: result: -217, description: 'Ошибка физического обмена : Канал: Таймаут'

Очистка ошибки из памяти ККМ достигается только перезагрузкой меркурия.
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

Ещё вопросы:
1. При перезагрузке ФР или ПК никогда не удается с первого раза подцепиться к меркурию.
Драйвер отвечает "Ошибка доступа к порту".
Иногда помогает несколько раз перезагрузить приложение.
Тоже самое через mercConfig2. С первой попытки всегда "Ошибка доступа к порту".
Есть ли какие то специфические действия при первом подключении к ФР?

2. Пробую подключаться уже к 119Ф.
На нем смена была превышена 24 часа.
Во первых код и наименование ошибки отличается от автономок.
(result: 278, description: 'Продолжительность смены ФН более 24 часов.')
Во вторых запрос GetStatus говорит что смена не превышена.
На скрине видно.

http://prntscr.com/sp60ad
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

web-valeev писал(а): 27 май 2020, 15:10 2. При указании товару признака способа расчета "Оплата кредита" (paymentFormCode":7) - ККМ не позволяет закрыть чек.
Выходит ошибка -509, 'Оплата кредита возможна только отдельным чеком'.
Уточните что означает эта ошибка? При закрытии указываю способы оплаты prepayment и cash.
Все модели ККМ позволяют в одном чеке использовать разные способы оплаты.
Например это очередной платеж по кредиту:
Нужно отразить предыдущие платежи, текущий платеж, и остаток кредита.
Такой же кейс на 119Ф проходит успешно.
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

1.По 119Ф в команде GetStatus также некорректно отдается последний номер чека. Всегда 0.
На скриншоте видно: http://prntscr.com/sp7kqs

2. Вопросы по алогольному слипу:
На 115Ф не печатается ссылка.

На 119Ф игнорируется переданные ИНН и КПП. Печатает ИНН с которым зафискален. Вместо КПП печатает вопросительные знаки.
Аватара пользователя
AntonR
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 274
Зарегистрирован: 28 янв 2020, 15:18

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение AntonR »

web-valeev, Здравствуйте.
1. Интересующий Вас номер последнего ФД находится в поле fnInfo:lastDoc:num. В будущем продублируем эту информацию и в поле checkInfo:num.
2. Ссылка закодирована в QR-код. Разве она нужна в текстовом виде?
3. М-119Ф не принимает параметр ИНН при печати слипа ЕГАИС. КПП программируется в панели управления ККТ.
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

AntonR писал(а): 28 май 2020, 13:22 1. Интересующий Вас номер последнего ФД находится в поле fnInfo:lastDoc:num. В будущем продублируем эту информацию и в поле checkInfo:num.
Номер ФД не равен номеру чека в смене. Не нужно дублировать. Исправьте для 119Ф. У 115 всё правильно
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

Вопрос по чеку коррекции.
Выше вычитал, что на автономках в режиме ФР с этим есть проблемы. Проверил на 119Ф.
1. При закрытии чека коррекции ругается на дату. Хотя отправлена согласно документации. На скриншоте видно.
http://prntscr.com/spe3tu
2. В других моделях ККМ чек коррекции реализован без отправки предмета расчета.
в ФФД 1.0.5 это допускается.
В примере выше пришлось создать фиктивный товар "Коррекция", чтобы указать ставку налога. Так как больше негде её указать.
Вы планируете это реализовать?
Аватара пользователя
web-valeev
Сообщения: 12
Зарегистрирован: 06 май 2020, 10:10

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение web-valeev »

AntonR писал(а): 28 май 2020, 13:22 2. Ссылка закодирована в QR-код. Разве она нужна в текстовом виде?
В письме РАР указано, что отдельный QR код для алкоголя можно не печатать, но остальные данные остались обязательны для печати.
https://egais.ru/news/view?id=1542
Аватара пользователя
AntonR
Сотрудник Инкотекс
Сотрудник Инкотекс
Сообщения: 274
Зарегистрирован: 28 янв 2020, 15:18

Re: Служба INECRMAN (Incotex ECR Manager)

Сообщение AntonR »

web-valeev писал(а): 27 май 2020, 15:10 1. Словил ошибку при печати чека, но при этом не отменил чек.
Далее попытался напечатать чек ещё раз.
Команда GetStatus говорит что чек закрыт, но при этом команда открытия чека не сработала.
Да, есть такая ошибка в текущем релизе службы INECRMAN. В следующей версии исправим. Если нужно быстро, пришлите запрос на vtsoft@incotex.ru, вышлем ссылку на еще не опубликованную сборку.
web-valeev писал(а): 27 май 2020, 15:10 2. При указании товару признака способа расчета "Оплата кредита" (paymentFormCode":7) - ККМ не позволяет закрыть чек.
Выходит ошибка -509, 'Оплата кредита возможна только отдельным чеком'.
В текущей версии ПО ККТ так и есть. Раньше таковы были требования ФФД. Готовится к выпуску новая прошивка ККТ, где эта ситуация устранена.
web-valeev писал(а): 27 май 2020, 15:10 На попытку отменить чек - ККМ отвечает: result: -217, description: 'Ошибка физического обмена : Канал: Таймаут'
Сейчас в ККТ есть особенность, после ошибки -509, следующую команду касса может получить только через 5-7 секунд. Будет исправлено в будующих прошивках.
Ответить