Перейти к содержимому


Начисление контрагентам бонусов за покупки


В теме одно сообщение

#1 SpectralEye

    Участник

  • Пользователи
  • PipPip
  • 16 сообщений

Отправлено 14 Февраль 2014 - 12:00

Здравствуйте.

Совсем недавно только начал работать с вашей системой, еще не до конца во всё въехал. В связи с этим требуется небольшая помощь и совет. Ситуация следующая.

Мне нужно дописать функционал для стандартных таблиц Счета и Контрагенты таким образом, чтобы Контрагентам начислялись бонусы за 10% от суммы покупки. Сделать так, чтобы при сохранении счета бонусы прибавлялись к общим количествам бонусов контрагента, я сумел. Но это неправильный подход, потому что тогда при редактировании бонусы прибавляются снова. Наверное, идеальным вариантом было бы сделать подсчет бонусов за все завершенные сделки при отображении страницы с бонусами, но я пока не понял, как это можно реализовать.

Можете меня направить в нужную сторону?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Февраль 2014 - 16:24

Можно добавить вычисление на событие отображения поля с бонусами и именно там считать актуальный бонус на момент открытия страницы с ними, суммируя все бонусы из счетов данного клиента. Соответственно, вычисление из счетов удаляете.

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





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных