Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. <?
  2.  
  3. define( "BONUS_ACTIVATE_ORDERS_CNT", 1);
  4. define( "BONUS_ACTIVATE_AVERAGE_SUM", 1000);
  5. define( "BONUS_IBLOCK_ID", 4);
  6.  
  7. $arSelectBonus = Array("ID" , "NAME", "PROPERTY_PROP1", "PROPERTY_PROP2", "PROPERTY_PROP3", "PROPERTY_PROP4");
  8. $arFilterBonus = Array("ID" , "<=PROPERTY_PROP3" <= date( "d.m.Y" )); // "PROPERTY_PROP2" <= date( "d.m.Y" )); // <= такого знака нет. В массиве это означает что у KEY => VALUE, т.е. показывает что у ключа такое значение если простым языком говорить / знак меньше или равно, ставится в KEY массива!!! и код свойство даты активации PROP3
  9.  
  10. $NeedBonusElementsArr = getFromIB( BONUS_IBLOCK_ID, $arSelectBonus, $arFilterBonus );
  11.  
  12. // делаем проверку, если массив с бонусами на дату не пустой, тогда только запускаем наш скрипт
  13. // START
  14. if( !empty( $NeedBonusElementsArr ) ) {
  15.  
  16. // перерисовываем полученный массив по пользователю
  17. // я просил чтобы ты перерисовал массив чтобы сгруппировать по ID пользователю
  18. // надо чтобы массив приобрел такой вид
  19. // {
  20. // USER_ID => array(
  21. // 0 => array(
  22. // BONUS_SUM => 100,
  23. // BONUS_NAME => NAME,
  24. // )
  25. // )
  26. // }
  27. // это делается так
  28. $usersBonusesArr = array();
  29. $i = 0;
  30. foreach ($NeedBonusElementsArr as $usersBonusElement) {
  31. $usersBonusesArr[$usersBonusElement["PROPERTY_PROP5_VALUE"]][$i]["BONUS_SUM"] = $usersBonusElement["PROPERTY_PROP1_VALUE"];
  32. $usersBonusesArr[$usersBonusElement["PROPERTY_PROP5_VALUE"]][$i]["BONUS_NAME"] = $usersBonusElement["NAME"];
  33. $i++;
  34. }
  35.  
  36.  
  37. // теперь, если ты сделаешь print_r( $usersBonusesArr ), ты увидишь массив в том виде как я описал выше.
  38. // дальше, пройди в цикле этот массив $usersBonusesArr так foreach ( $usersBonusesArr as $userBonusKey => $userBonusValue )
  39. // внутрь цикле перенеси скрипт который вчера писли который получает все заказы, делает подсчет и общую сумму заказов.
  40. // только вместо $USER->GetID() в фильтре заказов, подставь $userBonusKey потому что в нем теперь хранится ID пользователей.
  41.  
  42.  
  43. $usersBonusesArr = getFromIB( BONUS_IBLOCK_ID, $arSelectBonus, $arFilterBonus );
  44. foreach ( $usersBonusesArr as $userBonusKey => $userBonusValue ){
  45.  
  46. $arFilter = Array(
  47. "USER_ID" => $userBonusKey,
  48. "STATUS_ID" => "F",
  49. );
  50. $arSelectFields = Array();
  51.  
  52. $ordersCount = 0;
  53. $totalOrdersSum = 0;
  54.  
  55. $db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
  56. while ($ar_sales = $db_sales->Fetch())
  57. {
  58. $ordersCount++;
  59. $totalOrdersSum += $ar_sales["PRICE"];
  60.  
  61.  
  62. }
  63.  
  64. echo '<pre>';
  65. print_r($userBonusValue);
  66. echo '</pre>';
  67. // получаем все заказы пользователя и делаем подсчет
  68.  
  69.  
  70. // делаем проверку, если количество заказов больше 1 и сумма заказов больше 3000
  71. // количество заказов = 1 и сумма заказов >= 3000 определен статичным массивом
  72. if($ordersCount >= BONUS_ACTIVATE_ORDERS_CNT && $totalOrdersSum >= BONUS_ACTIVATE_AVERAGE_SUM){
  73.  
  74. echo $userBonusKey."&nbsp".$ordersCount."<br>";
  75. echo $totalOrdersSum."<br>";
  76.  
  77. }
  78.  
  79.  
  80. }
  81. // END
  82. }
  83.  
  84.  
  85.  
  86.  
  87. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement