]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-357] non_bonusable_goods
authorAlexander Smirnov <fredeom@mail.ru>
Tue, 4 Mar 2025 12:55:36 +0000 (15:55 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Tue, 4 Mar 2025 12:55:36 +0000 (15:55 +0300)
erp24/api2/controllers/BonusController.php

index 8168ee4a4a232a6d17b410cdeb8eb2fb22707fd7..2add55f132d2443ca80a3948f08e834f57ecf204 100644 (file)
@@ -96,29 +96,27 @@ class BonusController extends BaseController
         // массив с id товарыми не участвующих в бонусной
         $items_arr_no = array_values(ArrayHelper::map(
             UniversalCatalogItem::find()->where(['catalog_alias' => 'unused_nomenclature'])->all(), 'guid', 'guid'));
+        $items_arr_no_bonus_writeoffs = array_values(ArrayHelper::map(
+            UniversalCatalogItem::find()->where(['catalog_alias' => 'non_bonusable_goods'])->all(), 'guid', 'guid'));
         file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
-//        $items_arr_no = [];
-//        $items_arr_no[] = "a3d4e24f-3373-11e9-babd-408d5cd22d1e";
-//        $items_arr_no[] = "40148db7-f9b2-11eb-af2b-98eecb8ceff8";
-//        //$items_arr_no[]="bdd17599-09d8-11e5-bd74-1c6f659fb563"; // тюльпаны
-//        //$items_arr_no[]="f8c1a067-3dfb-11e9-bac5-408d5cd22d1e"; // тюльпаны 39-90 100 шт.
-//        //$items_arr_no[]="ccbd228d-9af0-11ec-9b41-7c10c9872bb9"; // тюльпан 50.
-//        $items_arr_no[] = "5cf27236-b4ec-11e8-93c5-1c6f659fb563"; // фаленопсис
 
         $all_amount = 0;
         $has_actions = false;
-        $summa_no = 0; // пробегаемся по массиву с товарами и считаем сумму вычета
+        $summa_no = 0;
+        $summa_no_writeoffs = 0;
         if (!empty($result["items"])) {
             foreach ($result["items"] as $item) {
                 if (in_array($item["product_id"], $items_arr_no)) {
                     $summa_no = $summa_no + $item["price"] * $item["quantity"];
                     $has_actions = true;
+                } else if (in_array($item["product_id"], $items_arr_no_bonus_writeoffs)) {
+                    $summa_no_writeoffs = $summa_no_writeoffs + $item["price"] * $item["quantity"];
                 }
                 $all_amount += $item["price"] * $item["quantity"];
             }
         }
         file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
-        $baza = $all_amount - $summa_no;
+        $baza_nachislenie = $all_amount - $summa_no;
 
         $check_amount = $check_amount - $summa_no;
         file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
@@ -138,7 +136,7 @@ class BonusController extends BaseController
         }
         file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         $credit_procent = $userFound && $userFound->source > 0 && $salesCount == 0 ? self::$CREDIT_HIGH_PROCENT : $cashback_rate;
-        $will_be_credited_bonuses = $credit_procent * $baza;
+        $will_be_credited_bonuses = $credit_procent * $baza_nachislenie;
 
         $will_be_credited_bonuses = round($will_be_credited_bonuses);
         $mess["will_be_credited_bonuses"] = $will_be_credited_bonuses;
@@ -206,10 +204,11 @@ class BonusController extends BaseController
         $name = $user->name;
         $user_balans = ClientHelper::getBonusBalance($result['phone']);
         file_put_contents(self::OUT_DIR . '/get_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
-        if ($baza < 0) {
-            $baza = 0;
+        $baza_spisanie = $baza_nachislenie - $summa_no_writeoffs;
+        if ($baza_spisanie < 0) {
+            $baza_spisanie = 0;
         }
-        $max = $baza * $percent;  // максимально можем разрешить списывать до 30 процентов от суммы заказа
+        $max = $baza_spisanie * $percent;  // максимально можем разрешить списывать до 30 процентов от суммы заказа
         $max = round($max);
         $available_bonus = $user_balans;
         if ($available_bonus > $max) { // если баллов бонусов больше чем 30 процентов списываем по максимуму 30
@@ -736,15 +735,20 @@ class BonusController extends BaseController
         $amount_real = 0;
         $items_arr_no = array_values(ArrayHelper::map(
             UniversalCatalogItem::find()->where(['catalog_alias' => 'unused_nomenclature'])->all(), 'guid', 'guid'));
+        $items_arr_no_bonus_writeoffs = array_values(ArrayHelper::map(
+            UniversalCatalogItem::find()->where(['catalog_alias' => 'non_bonusable_goods'])->all(), 'guid', 'guid'));
 
         file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
-        $summa_no = 0; //пробегаемся по массиву с товарами и считаем сумму вычета
+        $summa_no = 0;
+        $summa_no_writeoffs = 0;
         $amount_all = 0;
 
         file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         foreach ($result['items'] as $item) {
             if (in_array($item["product_id"], $items_arr_no)) {
                 $summa_no = $summa_no + $item["price"] * $item["quantity"];
+            } if (in_array($item["product_id"], $items_arr_no_bonus_writeoffs)) {
+                $summa_no_writeoffs = $summa_no_writeoffs + $item["price"] * $item["quantity"];
             } else {
                 $amount_real = $amount_real + $item["price"] * $item["quantity"];
             }
@@ -772,7 +776,7 @@ class BonusController extends BaseController
         file_put_contents(self::OUT_DIR . '/sale_bonuses_' . $fl . '.json', PHP_EOL . '--' . __LINE__, FILE_APPEND);
         // сумма со скидкой
         $summa_chek = $amount_all - $write_off_bonuses;
-        $baza_back = $amount_real - $write_off_bonuses;
+        $baza_back = $amount_real + $summa_no_writeoffs - $write_off_bonuses;
 
         $mess = [];