Алгоритмы работы кассы Расчёт скидки при оплате товаров и услуг Кассир вводит в чек выбранные покупателем товары и услуги Для каждого товара касса формирует запрос об отпускной цене на этот товар и отправляет этот запрос в модуль расчёта модуль расчёта возвращает величину отпускной цены на указанный товар с учётом всех действующих на данный момент скидок Отпускная цена товара выводится на экране покупателя По окончании ввода всех товаров в чек и до оплаты касса посылает ещё один запрос о наличии и размере скидки на чек в целом модуль расчёта возвращает величину скидки на чек. Пропорционально изменяются цены на товары в чеке, что общая сумма чека уменьшилась на указанную величину скидки Окончательная сумма для расчёта печатается в чеке и выводится на экране покупателя Модуль расчёта вычисляет скидки на товары и на чек в целом в соответствии с правилами, указанными в настройке дисконтной схемы. Использование дисконтной карты для получения скидки при оплате Покупатель предъявляет дисконтную карту на кассе Касса в запросы к модулю расчёта о величинах скидок на товар и на чек добавляет номер предъявленной дисконтной карты модуль расчёта вычисляет скидки на товары и на чек в целом с учётом наличия у покупателя дисконтной карты Карта может быть предъявлена в любой момент ввода товаров в чек. После регистрации карты повторно рассчитываются скидки на все товары в чеке. Расчёт баллов по окончании покупки Покупатель предъявляет бонусную карту на кассе по окончании оплаты касса посылает запрос в модуль расчёта на вычисление баллов за совершённые покупки модуль расчёта вычисляет число баллов в соответствии с правилами, указанными в настройке дисконтной схемы модуль расчёта изменяет число баллов на счёте карты Оплата баллами Покупатель предъявляет бонусную карту на кассе перед оплатой касса посылает запрос в модуль расчёта на вычисление числа баллов, которые можно потратить на оплату чека на экране отображается окно с предложением оплатить часть чека баллами кассир задаёт вопрос покупателю и вводит ответ если выбрана оплата баллами, то сумма оплаты уменьшается на указанную величину по окончании оплаты модуль расчёта изменяет число баллов на счёте карты