+7(962)919-86-60
Тирика-Магазин

Накопленные баллы сгорают через N дней

В версию 14 программы Тирика мы добавили новую настройку: Накопленные баллы сгорают через N дней. Добавление этой настройки повлекло за собой очень странные на первый взгляд ограничения в программе, и в этой статье мы решили пояснить принципы работы Тирики относительно накопленных баллов.

Давайте рассмотрим пример: Магазин торгует конфетами и обещает покупателям вернуть 10% уплаченного в виде накопленных баллов; баллы сгорают через 5 дней; при оплате баллами баллы не начисляются. Постоянный покупатель Василиса Премудрая покупала:

Сколько баллов осталось на счету Василисы после этого?

Ну как же, 16 баллов, скажете Вы - и будете, разумеется, неправы: вопрос "сколько осталось баллов" не имеет смысла без указания той даты, когда мы спрашиваем об оставшихся баллах. Так, например, 5 января у Василисы будет 16 баллов, 6 января останется уже только 11 баллов (остаток от покупки 1 января сгорит вечером 5 января), а на 20 января у Василисы не останется ни одного накопленного балла.

Обратите, пожалуйста, внимание на предыдущий абзац: мы только что сказали: остаток от покупки 1 января сгорит вечером 5 января. Что значит "остаток от покупки"? Разве Василиса потратила 4 января баллы именно из первой покупки, а не "вообще" из накопленного?

Да, разумеется, она потратила их именно из первой покупки. Если мы не привяжем потраченные Василисой баллы к конкретной покупке (или конкретным покупкам), то мы не будем знать 6-го января, какие баллы у нее сгорели, а какие еще нет. Каждую оплату баллами программа привязывает к конкретной покупке или покупкам, на которых покупатель эти баллы заработал. Из этой привязки и вытекают все описанные ниже выводы

Вывод 1: Мы не всегда можем удалить продажу с накопленными баллами

Если после ввода в программу описанных выше покупок Василисы мы решим удалить покупку от 1 января, причем сделаем это не позднее 5 января, то программа разрешит нам это и "перепривяжет" оплату баллами от 5 января на продажу 3 января. Если же после этого мы решим удалить продажу и от 3 января тоже, то программа не позволит нам это сделать: в этом случае ей некуда будет привязать потраченные 4 января баллы, и тогда получится, что баллы на оплату конфет как бы взялись из воздуха - чего программа, разумеется, допустить не может. Единственный способ обойти это ограничение - это удалить либо оплату баллами 4 января, либо вообще всю продажу от 4 января, тогда программе перепривязывать станет нечего и она разрешит удаление продаж от 1-го и 3-го.

Если же мы протянем с удалением до 20-го, то программа не даст нам удалить даже и продажу от 1 января: на 20-е января все баллы Василисы уже сгорят и программе просто некуда будет перепривязать оплату баллами от 4 января. Для того, чтобы обойти это ограничение, мы можем либо удалить оплату баллами от 4 января, либо временно отключить в настройках программы сгорание баллов, удалить продажу от 1 января и потом опять включить в настройках Тирики сгорание баллов.

Вывод 2: При настроенной синхронизации баз данных мы не всегда знаем, сколько баллов накоплено покупателем

Давайте рассмотрим такую ситуацию: Предприниматель владеет магазином конфет и имеет две копии Тирики: в магазине и дома. Эти две копии связаны между собой синхронизацией баз данных. Пусть в нашем примере выше через пять минут после покупки 4 января Василиса звонит в интернет-магазин (трубку снимает сам предприниматель из дома) и просит продать ей еще конфет на 10 рублей, оплата баллами. Предприниматель оформляет эту продажу на своем домашнем компьютере.

Поскольку между двумя продажами от 4 января прошло всего пять минут, синхронизация баз данных могла не успеть сработать и на домашнем компьютере предпринимателя могла не отразиться продажа, сделенная в магазине. Если в этом случае Тирика на компьютере предпринимателя привяжет оплату баллами к продаже от 1 января, то после синхронизации получится, что из 10 заработанных 1 января баллов Василиса потратила 20: 10 в магазине и 10 по телефону.

Для того, чтобы этого не случилось, Тирика при настроенной синхронизации привязывает оплаты к продажам только на резидентном складе (в данном случае - на компьютере магазина). В этом случае Тирика:

Таким образом получается, что ввод продажи на домашнем компьтютере не уменьшит количество накопленных Василисой баллов: это уменьшение произойдет только после того, как продажа будет по синхронизации отправлена в магазин и там привязана к продаже от 3 января

Вывод 3: Оплата баллами при синхронизации может работать некорректно

Давайте рассмотрим сеть из двух магазинов конфет, в каждом магазине стоит компьютер под управлением программы Тирика, эти компьютеры связаны между собой синхронизацией баз данных. Постоянный покупатель Василиса Премудрая покупает:

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

Мы предполагаем, что такие ситуации будут случаться очень, Очень, ОЧЕНЬ редко. Для ее возникновения нужно, чтобы покупатель сделал вторую покупку во втором магазине быстрее, чем будет выполнена синхрнизация. Никакого способа "обойти" такую ситуацию, к сожалению, нет, и если она все же случится в вашем магазине, то получится, что вы подарили покупателю лишние 10 баллов.

Пожалуйста, обратите внимание на то, что эта (ужасная) ситуация способна появиться не оттого, что программа Тирика неправильно работает - она появляется из-за самой сути синхронизации баз данных, когда 99% времени компьютеры магазинов не связаны друг с другом и ни один из них не знает, что делает в эту секунду другой. Эта ошибка проистекает из самой сути синхронизации баз данных - ее сеансной работы - и не может быть разрешена никаким образом.

Вывод 4: Баллы накапливаются и хранятся в продажах

Как показано выше, в программе нет и не может быть никакого места для хранения накопленных и потраченных баллов кроме собственно продаж. Баллы без продаж не существуют. Значит:

Вывод 5: Теперь баллы нельзя редактировать вручную

В прежних (до 14.0) версиях программы у пользователя была возможность вручню ввести или изменить количество накопленных покупателем баллов.

В новых версиях программы количество накопленных баллов есть не одно число, которое программа хранит где-то в базе данных, но сумма баллов, накопленных по продажам с учетом потраченных и сгоревших. Отредактировать эту сумму вручную нельзя, т.к. иначе программа не будет знать, в какую именно продажу надо добавить добавленные вручную баллы, или из какой продажи их надо удалить.

Вывод 6: В списке покупателей пропала колонка "Накопленные баллы"

В прежних (до 14.0) версиях программы в списке покупателей была колонка "накопленные баллы", которые можно было просматривить, а также сортировать покупателей по количеству баллов.

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

Также интересно почитать

Скидки и бонусы
Подарочные сертификаты
Наборы, составные товары
Несколько цен на товары
Старая цена товара

Следующая статья: Банковский терминал