Тупо стоит комп, на нём сканер, берём товар, пикаем, специальный запросик летит в базу, в ответ получаем цену и остаток по текущему МХ. Типа так. Причем цену может получить ту, которая только что установилась переоценкой и еще не выгружалась на кассы.
Хорошо, если цена увеличилась этой переоценкой. если уменьшилась - покупатель будет неприятно удивлен при расчете (касса же еще не знает, что надо продавать дешевле).
Не знаю кому как, а мне иногда случается просчитывать покупку по чекерам строго под запас наличных.
Поэтому мне больше нравится вариант, когда чекер получает данные одновременно с кассами и хранит в своей базе.
Естественно, это не решает проблем, если прогрузка не дошла до кассы.
Решать, конечно же, надо "по месту" исходя из сочетания софта и организации работы. В каких-то раскладах твой вариант будет лучше.
SELECT c.article, c.name, p.price, m.abbrev, NVL(c.country,'Россия') as country, NVL(q.quantity,0) as quantity FROM supermag.smcard c, supermag.smprices p, supermag.sameasurement m, supermag.smstoreunits bc, supermag.smgoods q WHERE bc.barcode =( :barcode ) AND c.article=p.article AND c.article=bc.article AND (bc.quantity=1 OR bc.quantity is Null) AND c.idmeasurement=m.id(+) AND c.article=q.article(+) AND p.storeloc=( :location ) AND p.pricetype=( :prtype ) AND q.storeloc(+) = ( :location )