Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
11.11.2014, 16:53
|
|||
|---|---|---|---|
Perl - подскажите, как модифицировать код |
|||
|
#18+
Есть биллинговая система на Perl. В системе есть клиенты, у клиентов есть счета, у счетов есть услуги. У каждой услуги есть тарифный план, определяющий порядок списания абонентской платы и ее величину. Периодически или по событию осуществляется списание абонентской платы за подключенные услуги со счета. Если средств на счету достаточно — услуги подключаются (или остаются подключенными). Если средств на счету нет — услуги отключаются (или остаются отключенными). Но если на счету средства есть, но не на все услуги, то часть услуг подключается, часть услуг остается отключенной. Причем какого-нибудь документированного регламента по приоритету услуг нет, поэтому нельзя запланировать, какие услуги подключаться, а какие отключаться. Я хочу изменить это поведение, сделать так, чтобы все услуги подключались или отключались только пачкой — если средств на счету хватает на все, то все подключить, если не хватает на все, то все отключить. Но код системы довольно запутанный, а я не так хорошо знаю Perl. Во всяком случае несколько package в одном pm-файле и $class->SUPER мне незнакомы. Обработкой абонплаты занимается скрипт со следующим кодом: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. Класс BL::AbonFee довольно большой (35 КБ), вот основные места: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. За списания отвечает, насколько я смог разобраться, этот фрагмент: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. $fee в свою очередь это экземпляр класса BL::AbonFee::prepaid: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Если я правильно понял логику работы, мне нужно организовать дополнительную проверку в самом первом скрипте, просуммировав абонплату на всех услугах для одного счета и перенеся логику из класса BL::AbonFee в вышестоящий скрипт. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.11.2014, 00:36
|
|||
|---|---|---|---|
Perl - подскажите, как модифицировать код |
|||
|
#18+
Вам в ветку работа. С точки зрения СУБД - надо begin_work и commit 1) Вывести за цикл. 2) По ексепшену - откатывать транзакцию. А вообще при изменении $order в запросе вы можете поменять порядок подключения / отключения сервисов. ЗЫ: Код древний... Тут нету Class::XSAccessor'а минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&tablet=1&tid=1462262]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 362ms |

| 0 / 0 |
