Там же, где проверяются сканеры по таблице sarmat.scanner, в случае, если штрих-код изменился и sc_type=1, то
- посылается команда товарному серверу Container.Return (см Вики)
- если команда добавилась успешно, то
- добавить запись в новую mssql таблицу ASK_RET (через команду RunMSSQL), при этом:
- ask_id = id новой добавленной записи в command_gas
- box = считанный штрих-код
- product = good_desc_id из новой добавленной записи в command_gas
- qty = quantity из новой добавленной записи в command_gas
- state = 1
- если ошибка raise выполнения команды, то проверить ее ф-ией is_ora_bkp_error:
- если ф-ия вернула true, то выйти из программы
- иначе вывести текст ошибки в лог и издать три звуковых сигнала на бипер сканера (если есть его IP в таблице scanner)
Также в таймере в части опроса MSSQL таблиц добавить новый опрос в самом начале:
- ищем в ask_ret записи у которых state=1 - для каждой из них
- берется ask_id, с Oracle выбирается запись с command_gas.id =ask_ret.ask_id - и хранится для дальнейшего анализа в шаге текущего цикла - все что далее в этом пункте делается командами RunMSSQL и RefreshMSSQLContainer;
- обновляется в ask_ret поле cell_name и zone_letter из соотв. command_gas, если они не равны полям cell_name и zone_letter в ask_ret
- вызывается стандартный алгоритм обновления container_placement
- если у соотв. command_gas state=2, то делаем update соотв. ask_ret state:=2
- если у соотв. command_gas state=5, то делаем update соотв. ask_ret state:=5