Користувальницькькі налаштування

Налаштування сайту


discounts

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
discounts [2022/12/30 18:17]
nightfly
discounts [2023/01/19 10:49] (поточний)
mixtery [Міграція з старих знижок]
Рядок 1: Рядок 1:
 +
 +
 ====== Знижки ====== ====== Знижки ======
  
-Механіка знижок доступна починаючи з Ubilling 0.3.4. У версії Ubilling 1.3.4 (ага, після сотні стабільних релізів) її було вдумливо переписано, і вона більше не спирається на "додаткові поля профілю", як це було раніше. Суть реалізації знижок, полягає в тому, що при відповідному виклику **discountprocessing** з [[remoteapi|Remote API]] відбувається наступне:+Механіка знижок доступна починаючи з Ubilling 0.3.4. У версії Ubilling 1.3.4 (ага, після сотні стабільних релізів) її було вдумливо переписано, і вона більше не спирається на "додаткові поля профілю", як це було раніше.  
 + 
 + 
 + 
 +Суть реалізації знижок, полягає в тому, що при відповідному виклику **discountprocessing** з [[remoteapi|Remote API]] відбувається наступне:
  
-  * Видобуваються суми усіх позитивних платежів за місяць (поточний чи попередній, опційно).+  * Видобуваються суми усіх позитивних платежів за якийсь період часу (поточний чи попередній місяць, чи добу, опційно).
   * У випадку, якщо для користувачів, що здійснили ці платежі встановлено ненульовий відсоток знижки, цей відсоток від суми всіх платежів користувача зараховується на його рахунок.   * У випадку, якщо для користувачів, що здійснили ці платежі встановлено ненульовий відсоток знижки, цей відсоток від суми всіх платежів користувача зараховується на його рахунок.
  
 +{{:discounts00.jpg?400|}}
  
 ====== Ввімкнення та налаштування ====== ====== Ввімкнення та налаштування ======
Рядок 22: Рядок 29:
 ; будуть розглядатись оплати за "попередній місяць" замість "за поточний" як це є за замовчуванням. ; будуть розглядатись оплати за "попередній місяць" замість "за поточний" як це є за замовчуванням.
 ;DISCOUNT_PREVMONTH=1 ;DISCOUNT_PREVMONTH=1
 +; Ввімкніть дану опцію, для щоденної обробки знижок. В цьому випадку, будуть розглядатись тільки платежі за поточну добу.
 +DISCOUNT_DAILY=0
 </file> </file>
  
Рядок 49: Рядок 58:
 <code> <code>
 20 1 1 * *      /bin/ubapi "discountprocessing" 20 1 1 * *      /bin/ubapi "discountprocessing"
 +</code>
 +
 +Також, з якоїсь причини, вам може захотітись обробляти знижки щоденно. Ну типу "пройшов день, користувачі щось там пооплачували, вони молодці, давайте нарахуємо їм знижок не в кінці місяця а наприкінці доби". Добре, без проблем. У цьому випадку нам необхідно увімкнути опцію DISCOUNT_DAILY в конфізі
 +
 +<code ini>
 +DISCOUNT_DAILY=1
 +</code>
 +
 +та здійснювати виклик з Remote API щоденно, наприкінці доби
 +
 +<code>
 +59 23 * * *   /bin/ubapi "discountprocessing"
 </code> </code>
  
Рядок 79: Рядок 100:
 ====== Міграція з старих знижок ====== ====== Міграція з старих знижок ======
  
-У випадку, якщо ви раніше, в доісторичні часи, використовували стару механіку знижок, що спиралась на "Додаткові поля профілю" aka CF <del>можемо тільки поспівчувати</del> - з турботою про вас, зроблено простий [[onepunch|One-punch скрипт]] для міграції отого всього мороку в нормальний сучасний вигляд. Просто, після оновлення до 1.3.4 чи вище, разочок запустіть його в "PHP консолі розробника" і все в вас буде добре ;)+У випадку, якщо ви раніше, в доісторичні часи, використовували стару механіку знижок, що спиралась на "Додаткові поля профілю" aka CF <del>можемо тільки поспівчувати</del> - з турботою про вас, зроблено простий [[onepunch|One-punch скрипт]] для міграції отого всього мороку в нормальний сучасний вигляд. Просто, після оновлення Ubilling до 1.3.4 чи новішого, разочок запустіть його в "PHP консолі розробника" і все в вас буде добре ;)
  
 <code php> <code php>
- 
     if ($ubillingConfig->getAlterParam('DISCOUNTS_ENABLED')) {     if ($ubillingConfig->getAlterParam('DISCOUNTS_ENABLED')) {
         $discountCfId = $ubillingConfig->getAlterParam('DISCOUNT_PERCENT_CFID');         $discountCfId = $ubillingConfig->getAlterParam('DISCOUNT_PERCENT_CFID');
Рядок 96: Рядок 116:
                         if (!isset($allDiscounts[$eachLogin])) {                         if (!isset($allDiscounts[$eachLogin])) {
                             $newDiscount = ubRouting::filters($eachOldDiscountData['content'], 'int');                             $newDiscount = ubRouting::filters($eachOldDiscountData['content'], 'int');
-                            $discountsDb->data('login', ubRouting::filters($eachOldDiscountData['login'], 'mres'));+                            $loginF = ubRouting::filters($eachOldDiscountData['login'], 'mres')
 +                            $loginF = trim($loginF); 
 +                            $discountsDb->data('login', $loginF);
                             $discountsDb->data('percent', $newDiscount);                             $discountsDb->data('percent', $newDiscount);
                             $discountsDb->create();                             $discountsDb->create();
-                            show_success(__('User') . ' (' . $eachLogin . ') ' . __('Discount') .' '. $newDiscount);+                            show_success(__('User') . ' (' . $eachLogin . ') ' . __('Discount') . ' ' . $newDiscount);
                         } else {                         } else {
                             show_warning(__('User') . ' (' . $eachLogin . ') ' . __('already have discount'));                             show_warning(__('User') . ' (' . $eachLogin . ') ' . __('already have discount'));
                         }                         }
                     } else {                     } else {
-                        show_error(__('User') . ' (' . $eachLogin . ') ' . __('have wrong discount value').' '.$newDiscount);+                        show_error(__('User') . ' (' . $eachLogin . ') ' . __('have wrong discount value') . ' ' . $newDiscount);
                     }                     }
                 }                 }
 +                $cache = new UbillingCache();
 +                $cache->delete(Discounts::CACHE_KEY);
             } else {             } else {
                 show_error(__('No old discounts found'));                 show_error(__('No old discounts found'));
Рядок 117: Рядок 141:
     }     }
 </code> </code>
 +
 +Всі ваші старі знижки, з додаткових полів профілю, буде сконвертовано для роботи в нову структуру даних, після чого ви зможете сміливо видалити це додаткове поле профілю і забути про нього як про страшний сон.
discounts.1672417055.txt.gz · Востаннє змінено: 2022/12/30 18:17 повз nightfly