From 7024733b6fe55ee74f0ec999fa5eed19822aa49e Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Tue, 4 Mar 2025 15:55:36 +0300 Subject: [PATCH] [ERP-357] non_bonusable_goods --- erp24/api2/controllers/BonusController.php | 34 ++++++++++++---------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/erp24/api2/controllers/BonusController.php b/erp24/api2/controllers/BonusController.php index 8168ee4a..2add55f1 100644 --- a/erp24/api2/controllers/BonusController.php +++ b/erp24/api2/controllers/BonusController.php @@ -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 = []; -- 2.39.5