Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.12 KB | None | 0 0
  1. <?
  2.  
  3. function MyDeliveryOrderCallback($productID, $userID, $bPaid, $orderID)
  4. {
  5. global $DB;
  6.  
  7. // Обработаем входные параметры
  8. $productID = IntVal($productID); // Код заказанного товара
  9. $userID = IntVal($userID); // Код пользователя-покупателя
  10. $bPaid = ($bPaid ? True : False); // Устанавливается или снимается флаг доставки
  11. $orderID = IntVal($orderID); // Код заказа
  12.  
  13. if ($userID <= 0)
  14. return False;
  15.  
  16. if ($orderID <= 0)
  17. return False;
  18.  
  19. // Внесем (снимем) деньги на счет
  20. if (!CSaleUserAccount::UpdateAccount(
  21. $userID,
  22. ($bPaid ? 100 : -100),
  23. "USD",
  24. "MANUAL",
  25. $orderID
  26. ))
  27. return False;
  28.  
  29. return True;
  30. }
  31.  
  32. define( "BONUS_ACTIVATE_ORDERS_CNT", 1);
  33. define( "BONUS_ACTIVATE_AVERAGE_SUM", 1000);
  34. define( "BONUS_IBLOCK_ID", 4);
  35.  
  36. $arSelectBonus = Array("ID" , "NAME", "PROPERTY_PROP1", "PROPERTY_PROP2", "PROPERTY_PROP3", "PROPERTY_PROP4");
  37. $arFilterBonus = Array("ID" , "<=PROPERTY_PROP3" <= date( "d.m.Y" )); // "PROPERTY_PROP2" <= date( "d.m.Y" )); // <= такого знака нет. В массиве это означает что у KEY => VALUE, т.е. показывает что у ключа такое значение если простым языком говорить / знак меньше или равно, ставится в KEY массива!!! и код свойство даты активации PROP3
  38.  
  39. $NeedBonusElementsArr = getFromIB( BONUS_IBLOCK_ID, $arSelectBonus, $arFilterBonus );
  40.  
  41. // делаем проверку, если массив с бонусами на дату не пустой, тогда только запускаем наш скрипт
  42. // START
  43. if( !empty( $NeedBonusElementsArr ) ) {
  44.  
  45. // перерисовываем полученный массив по пользователю
  46. // я просил чтобы ты перерисовал массив чтобы сгруппировать по ID пользователю
  47. // надо чтобы массив приобрел такой вид
  48. // {
  49. // USER_ID => array(
  50. // 0 => array(
  51. // BONUS_SUM => 100,
  52. // BONUS_NAME => NAME,
  53. // )
  54. // )
  55. // }
  56. // это делается так
  57. $usersBonusesArr = array();
  58. $i = 0;
  59. foreach ($NeedBonusElementsArr as $usersBonusElement) {
  60. $usersBonusesArr[$usersBonusElement["PROPERTY_PROP5_VALUE"]][$i]["BONUS_SUM"] = $usersBonusElement["PROPERTY_PROP1_VALUE"];
  61. $usersBonusesArr[$usersBonusElement["PROPERTY_PROP5_VALUE"]][$i]["BONUS_NAME"] = $usersBonusElement["NAME"];
  62. $i++;
  63. }
  64.  
  65.  
  66. // теперь, если ты сделаешь print_r( $usersBonusesArr ), ты увидишь массив в том виде как я описал выше.
  67. // дальше, пройди в цикле этот массив $usersBonusesArr так foreach ( $usersBonusesArr as $userBonusKey => $userBonusValue )
  68. // внутрь цикле перенеси скрипт который вчера писли который получает все заказы, делает подсчет и общую сумму заказов.
  69. // только вместо $USER->GetID() в фильтре заказов, подставь $userBonusKey потому что в нем теперь хранится ID пользователей.
  70. foreach ( $usersBonusesArr as $userBonusKey => $userBonusValue ){
  71.  
  72. $arFilter = Array(
  73. "USER_ID" => $userBonusKey,
  74. "STATUS_ID" => "F",
  75. );
  76. $arSelectFields = Array();
  77.  
  78. $ordersCount = 0;
  79. $totalOrdersSum = 0;
  80.  
  81. $db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
  82. while ($ar_sales = $db_sales->Fetch())
  83. {
  84. $ordersCount++;
  85. $totalOrdersSum += $ar_sales["PRICE"];
  86.  
  87.  
  88. }
  89.  
  90.  
  91. // получаем все заказы пользователя и делаем подсчет
  92.  
  93.  
  94. // делаем проверку, если количество заказов больше 1 и сумма заказов больше 3000
  95. // количество заказов = 1 и сумма заказов >= 3000 определен статичным массивом
  96. if($ordersCount >= BONUS_ACTIVATE_ORDERS_CNT && $totalOrdersSum >= BONUS_ACTIVATE_AVERAGE_SUM) {
  97.  
  98. global $DB;
  99.  
  100. // Обработаем входные параметры
  101. $userID = $userBonusValue['ID']; // Код пользователя-покупателя
  102. $bPaid = ($userBonusValue['PROPERTY_PROP1_VALUE'] ? True : False); // Устанавливается или снимается флаг доставки
  103. $orderID = $userBonusValue['PROPERTY_PROP1_VALUE_ID']; // Код заказа
  104.  
  105. if ($userID <= 0)
  106. return False;
  107.  
  108. if ($orderID <= 0)
  109. return False;
  110.  
  111. // Внесем (снимем) деньги на счет
  112. if (!CSaleUserAccount::UpdateAccount(
  113. $userID,
  114. ($bPaid ? 50 : -50),
  115. "KZT",
  116. "MANUAL",
  117. $orderID
  118. )
  119. )
  120. return False;
  121.  
  122. return True;
  123.  
  124. }
  125.  
  126.  
  127. }
  128. // END
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement