Задача. Ресторан работает по депозитной системе. Гости на входе вносят депозит (допустим 5000 за стол). На кассе кипера оформляем это как предоплата, предоплата фискальная, выдается фискальный чек. Дальше официанты (на своих станциях) вносят блюда в стол. Если гость поел на большую сумму чем внес предоплату, то в момент расчета все нормально: касса просит доплату и на эту сумму так же выдается фискальный чек. Тут все ОК.

Обратная ситуация, когда гость "не доел" внесенную сумму. По условиям заведения, остаток этой суммы гостю не возвращается. Для того что бы закрыть такой столик кассир вносит специальное блюдо на оставшуюся сумму, и закрывает столик в 0. Но если этого не сделать и попробовать рассчитать такой столик, то система дает это сделать, а остаток депозита автоматом оформляется как фискальный возврат. Т.е. если кассир прошляпил и оплатил столик с остатком депозита - будет возврат.

Нужно как то избежать этой ситуации.
1. Вообще запретить в программе оплату стола в котором сумма предоплаты больше чем сумма блюд. Но нигде не нашел подобного права.
2. Выкинуть стандартную кнопку оплаты. Вместо нее добавить свою кнопку, в обработчике которой сделать проверку. Если все нормально, то вызвать процедуру оплаты. Если есть остаток депозита, то как минимум, выдать сообщение и вернуться в стол. Как максимум автоматически внести в стол спец блюдо на остаток и вызвать процедуру оплаты.

Но тут есть еще одна беда: на кассе стоит клавиатурная станция. Соответственно нужно перехватывать кнопку клавиатуры.

Приветствуются любые идеи (в том числе и бредовые) как это сделать.