Публичное пространство
Проблемы с транспортом данных по продажам
Красная смена на сервере - с чего начать?
- Открываем смену, смотрим есть ли расхождения. Расхождений по счетчикам нет, пишет "Неверная нумерация документов":
В документах используется сквозная нумерация. Если пробили чек, сняли X отчет, пробили еще 1 чек. То номера будут 1,2 и 3 соответственно.
Так как расхождений нет, значит в смене не хватает документа не влияющего на счетчики в ФП: X-отчет, Внесение, Изъятие.
Если найти и переотправить с кассы не удается(был сбой ФР и счетчик перепрыгнул), можно скопировать какой-нибудь из подобных документов на кассе :
Проставить:
id_shift - id смены
id - уникальное значение, лучше проставить id копируемого документа со знаком "-"
numberfield - номер документа которого не хватает на сервере. Можно узнать скриптом:
/* Недостающие номера документов в проблемных сменах */ SELECT t1.operday, t1.shopindex, t1.cashnum, t1.numshift, t1.fiscalsum - p.checksum AS FP_CecksSum, 'BETWEEN ' || (SELECT max(nom)+1 FROM (SELECT s.operday, s.shopindex, s.cashnum, s.numshift, docs.numberfield as nom FROM od_shift s LEFT JOIN (SELECT id_shift, numberfield FROM od_purchase UNION ALL SELECT id_shift, numberfield FROM od_introduction UNION ALL SELECT id_shift, numberfield FROM od_withdrawal UNION ALL SELECT id_shift, numberfield FROM od_reportshift) docs ON docs.id_shift = s.id WHERE s.shiftclose is not null) mmin WHERE mmin.operday = t1.operday AND mmin.shopindex = t1.shopindex AND mmin.cashnum = t1.cashnum AND mmin.numshift = t1.numshift AND mmin.nom < (t1.nom-1) )::varchar(10) || ' AND ' || (t1.nom-1)::varchar(10) || ' OR ' empty_range FROM ( SELECT s.operday, s.shopindex, s.cashnum, s.numshift, docs.numberfield as nom, s.id, s.fiscalsum, s.state FROM od_shift s LEFT JOIN (SELECT id_shift, numberfield FROM od_purchase UNION ALL SELECT id_shift, numberfield FROM od_introduction UNION ALL SELECT id_shift, numberfield FROM od_withdrawal UNION ALL SELECT id_shift, numberfield FROM od_reportshift) docs ON docs.id_shift = s.id WHERE s.shiftclose is not null ) t1 LEFT JOIN (select id_shift, sum(case when operationtype = true then checksumend else -checksumend end) checksum from od_purchase where checkstatus = 0 group by id_shift) p on p.id_shift = t1.id LEFT JOIN (SELECT s.operday, s.shopindex, s.cashnum, s.numshift, docs.numberfield as nom FROM od_shift s LEFT JOIN (SELECT id_shift, numberfield FROM od_purchase UNION ALL SELECT id_shift, numberfield FROM od_introduction UNION ALL SELECT id_shift, numberfield FROM od_withdrawal UNION ALL SELECT id_shift, numberfield FROM od_reportshift) docs ON docs.id_shift = s.id WHERE s.shiftclose is not null) t2 on t1.nom = t2.nom+1 AND t1.operday = t2.operday AND t1.shopindex = t2.shopindex AND t1.cashnum = t2.cashnum AND t1.numshift = t2.numshift WHERE t2.nom is null AND t1.nom<>1 AND t1.state = 3 ORDER BY 1,2,3,4,5
- Если есть расхождения по счетчикам, необходимо найти чек(и) который не дошел до сервера или был задублирован на кассе. Основные советы:
a. Попробовать переотправить документы:
update ch_purchase set senttoserverstatus = 0 where id_shift in (select id from ch_shift where numshift = 378); update ch_reportshift set senttoserverstatus = 0 where id_shift in (select id from ch_shift where numshift = 378); update ch_withdrawal set senttoserverstatus = 0 where id_shift in (select id from ch_shift where numshift = 378); update ch_introduction set senttoserverstatus = 0 where id_shift in (select id from ch_shift where numshift = 378);
б. Если была ошибка записи в ФП, данное событие можно отследить в FiscalPrinter.log на кассе.
в. Поискать чек на сумму расхождений и разбираться что с ним(Например проблема 86 и 133)
Select * from ch_purchase where checksumend = <Сумма расхождений>
Желтая смена на сервере, но смена была закрыта - с чего начать?
Это означает что как минимум отсутствует Z отчет. Для начала переотправить с кассы если не приходит искать где застрял.
Отсутствует смена на сервере - с чего начать?
Для начала попробовать выгрузить только 1 документ, так как когда переотправляешь все скопом, если в одном документе ошибка не придет вся пачка.
Основные моменты:
- Смена может не приходить из-за различных версий сервера и кассы. Так как есть недостающие/лишние поля пакет не может обработаться.
- Дублирование смен, в некоторых версиях происходило дублирование смен, в этом случае с сервера лучше все удалить и выгрузить все заново с кассы. Если дублирование произошло на кассе, то откорректировать ее там, удалить на сервере и перевыгрузить.
- Сетевые проблемы, что то мешает транспорту товаров антивирус, фаервол, не работают службы (nginx, Postgres, JBOSSSVC )
Зеленая смена на сервере, но данные не верные - с чего начать?
Для начала узнать что с чем не сходится. Возможно кто-то подправил или создал Z отчет вручную по имеющимся чекам в БД и он расходится с бумажным.
Не ходят чеки с кассы на сервер. На кассе чеки висят в senttoserverstatus=0
- Брандмауэр. Если некорректно выключать, то касса не видит сервер. Проверенный рабочий вариант: Брандмауэр включен и отключена фильтрация сетей.
- Антивирус
- Службы nginx, JBOSSSVC
- Проблемы с сетью
- Касса вылетает в TinyCore при "Проверки Связи". Удалить storage\crystal-cash\modules\registry\ServerRegisterModules-config.xml и перезакгрузить кассу
- Не проходит "большой" пакет:
Инцидент: На кассе есть связь с сервером (все транспорты работают), но чеки не отправляютя на сервер (senttoserverstatus=0).
Проблема: Проблема с сетевой инфраструктурой клиента. С кассы на сервер не уходят пакеты размером больше 1000 байт.
Как решить: Проверить связь консольно с кассы командой ping -s :
tc@box:~$ ping -s 1000 10.254.94.201 PING 10.254.94.201 (10.254.94.201): 1000 data bytes 1008 bytes from 10.254.94.201: seq=0 ttl=58 time=36.914 ms 1008 bytes from 10.254.94.201: seq=1 ttl=58 time=36.541 ms ^C --- 10.254.94.201 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 36.541/36.727/36.914 ms tc@box:~$ ping -s 1500 10.254.94.201 PING 10.254.94.201 (10.254.94.201): 1500 data bytes ^C --- 10.254.94.201 ping statistics --- 11 packets transmitted, 0 packets received, 100% packet loss
Нужно передавать проблему ИТ службе клиента
С кассы чеки ушли senttoserverstatus=2 , на сервере их нет
В этом случае они скорее всего не валидируются сервером и отклоняются в od_inbound_files.
Возможные причины:
- Разные версии кассы и сервера.
- не заполнены какие то поля на кассе(ch_purchase / ch_shift)
- ошибки в работе PostgreSQL
На сервере все чеки есть, но не (все) выгрузились в ERP
Возможные причины:
- Отсутствует связь
- Не пришла транзакция лояльности(erpi_loytransaction)
© 1994-2024, ООО «Кристалл Сервис Интеграция».
Все права защищены..