PageRenderTime 26ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/sale.affiliate.report/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 189 lines | 158 code | 29 blank | 2 comment | 30 complexity | 589f058dc6f3e32bbfa6e8c8bd643757 MD5 | raw file
  1. <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?><?
  2. if(!CBXFeatures::IsFeatureEnabled('SaleAffiliate'))
  3. return;
  4. $arParams["REGISTER_PAGE"] = trim($arParams["REGISTER_PAGE"]);
  5. if ($arParams["REGISTER_PAGE"] == '')
  6. $arParams["REGISTER_PAGE"] = "register.php";
  7. if ($arParams["SET_TITLE"] == '') $arParams["SET_TITLE"] = "Y";
  8. if (CModule::IncludeModule("sale"))
  9. {
  10. if ($arParams["SET_TITLE"] == "Y")
  11. $APPLICATION->SetTitle(GetMessage("SPCAS1_PROG_REPORT"));
  12. if ($GLOBALS["USER"]->IsAuthorized())
  13. {
  14. $dbAffiliate = CSaleAffiliate::GetList(
  15. array("TRANSACT_DATE" => "ASC"),
  16. array(
  17. "USER_ID" => intval($GLOBALS["USER"]->GetID()),
  18. "SITE_ID" => SITE_ID,
  19. ),
  20. false,
  21. false,
  22. array("ID", "PLAN_ID", "ACTIVE", "PAID_SUM", "APPROVED_SUM", "PENDING_SUM", "LAST_CALCULATE")
  23. );
  24. if ($arAffiliate = $dbAffiliate->Fetch())
  25. {
  26. $arResult = array();
  27. if ($arAffiliate["ACTIVE"] == "Y")
  28. {
  29. $arResult["FIELDS"] = $arAffiliate;
  30. if ($_REQUEST["del_filter"] <> '')
  31. DelFilter(Array("filter_date_from", "filter_date_to"));
  32. else
  33. InitFilter(Array("filter_date_from", "filter_date_to"));
  34. $filter_date_from = $_REQUEST["filter_date_from"];
  35. $filter_date_to = $_REQUEST["filter_date_to"];
  36. if ($filter_date_from == '' && $filter_date_to == '')
  37. {
  38. $filter_date_from = date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("m") - 3, 1, date("Y")));
  39. $filter_date_to = date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")));
  40. }
  41. $arResult["FILTER"] = array(
  42. "filter_date_from" => $filter_date_from,
  43. "filter_date_to" => $filter_date_to
  44. );
  45. $arResult["CURRENT_PAGE_PARAM"] = $APPLICATION->GetCurPageParam("", array("filter_date_from", "filter_date_to"));
  46. $arResult["CURRENT_PAGE"] = $APPLICATION->GetCurPage();
  47. $arFilter = array(
  48. "=AFFILIATE_ID" => $arAffiliate["ID"],
  49. "=ALLOW_DELIVERY" => "Y",
  50. "=CANCELED" => "N",
  51. "=LID" => SITE_ID
  52. );
  53. if ($filter_date_from <> '')
  54. $arFilter[">=DATE_ALLOW_DELIVERY"] = Trim($filter_date_from);
  55. if ($filter_date_to <> '')
  56. $arFilter["<=DATE_ALLOW_DELIVERY"] = Trim($filter_date_to);
  57. $dbItemsList = \Bitrix\Sale\Internals\OrderTable::getList(
  58. array(
  59. 'filter' => $arFilter,
  60. 'select' => array(
  61. "BASKET_NAME" => 'BASKET.NAME',
  62. "BASKET_PRODUCT_ID" => 'BASKET.PRODUCT_ID',
  63. "BASKET_MODULE" => 'BASKET.MODULE',
  64. "BASKET_PRICE" => 'BASKET.PRICE',
  65. "BASKET_CURRENCY" => 'BASKET.CURRENCY',
  66. "BASKET_DISCOUNT_PRICE" => 'BASKET.DISCOUNT_PRICE',
  67. 'BASKET_QUANTITY' => 'SUM_BASKET_QUANTITY'
  68. ),
  69. 'runtime' => array(
  70. new \Bitrix\Main\Entity\ExpressionField('SUM_BASKET_QUANTITY', 'SUM(%s)', array('BASKET.QUANTITY'))
  71. ),
  72. 'order' => array("BASKET.MODULE" => "ASC", "BASKET.NAME" => "ASC", "BASKET.PRODUCT_ID" => "ASC"),
  73. 'group' => array("BASKET.MODULE", "BASKET.PRODUCT_ID", "BASKET.NAME", "BASKET.PRICE", "BASKET.CURRENCY", "BASKET.DISCOUNT_PRICE"),
  74. )
  75. );
  76. $arResult["ROWS"] = False;
  77. if ($arItemsList = $dbItemsList->Fetch())
  78. {
  79. $affiliateCurrency = CSaleLang::GetLangCurrency(SITE_ID);
  80. $currentBasketModule = $arItemsList["BASKET_MODULE"];
  81. $currentBasketProductID = $arItemsList["BASKET_PRODUCT_ID"];
  82. $currentBasketName = $arItemsList["BASKET_NAME"];
  83. $currentQuantity = 0;
  84. $currentSum = 0;
  85. $totalQuantity = 0;
  86. $totalSum = 0;
  87. $arResult["ROWS"] = array();
  88. do
  89. {
  90. if ($currentBasketModule != $arItemsList["BASKET_MODULE"]
  91. || $currentBasketProductID != $arItemsList["BASKET_PRODUCT_ID"]
  92. || $currentBasketName != $arItemsList["BASKET_NAME"])
  93. {
  94. $arResult["ROWS"][] = array(
  95. "NAME" => htmlspecialcharsex($currentBasketName),
  96. "QUANTITY" => $currentQuantity,
  97. "SUM" => $currentSum,
  98. "CURRENCY" => $affiliateCurrency,
  99. "SUM_FORMAT" => SaleFormatCurrency($currentSum, $affiliateCurrency)
  100. );
  101. $currentBasketModule = $arItemsList["BASKET_MODULE"];
  102. $currentBasketProductID = $arItemsList["BASKET_PRODUCT_ID"];
  103. $currentBasketName = $arItemsList["BASKET_NAME"];
  104. $totalQuantity += $currentQuantity;
  105. $totalSum += $currentSum;
  106. $currentQuantity = 0;
  107. $currentSum = 0;
  108. }
  109. $currentQuantity += $arItemsList["BASKET_QUANTITY"];
  110. if ($affiliateCurrency != $arItemsList["BASKET_CURRENCY"])
  111. //$currentSum += CCurrencyRates::ConvertCurrency(($arItemsList["BASKET_PRICE"] - $arItemsList["BASKET_DISCOUNT_PRICE"]) * $arItemsList["BASKET_QUANTITY"], $arItemsList["BASKET_CURRENCY"], $affiliateCurrency);
  112. $currentSum += CCurrencyRates::ConvertCurrency($arItemsList["BASKET_PRICE"] * $arItemsList["BASKET_QUANTITY"], $arItemsList["BASKET_CURRENCY"], $affiliateCurrency);
  113. else
  114. //$currentSum += ($arItemsList["BASKET_PRICE"] - $arItemsList["BASKET_DISCOUNT_PRICE"]) * $arItemsList["BASKET_QUANTITY"];
  115. $currentSum += $arItemsList["BASKET_PRICE"] * $arItemsList["BASKET_QUANTITY"];
  116. }
  117. while ($arItemsList = $dbItemsList->Fetch());
  118. $arResult["ROWS"][] = array(
  119. "NAME" => $currentBasketName,
  120. "QUANTITY" => $currentQuantity,
  121. "SUM" => $currentSum,
  122. "CURRENCY" => $affiliateCurrency,
  123. "SUM_FORMAT" => SaleFormatCurrency($currentSum, $affiliateCurrency)
  124. );
  125. $totalQuantity += $currentQuantity;
  126. $totalSum += $currentSum;
  127. $arResult["TOTAL"] = array(
  128. "QUANTITY" => $totalQuantity,
  129. "SUM" => $totalSum,
  130. "CURRENCY" => $affiliateCurrency,
  131. "SUM_FORMAT" => SaleFormatCurrency($totalSum, $affiliateCurrency)
  132. );
  133. }
  134. $arResult["FILTER_ID"] = rand(0, 10000);
  135. }
  136. else
  137. {
  138. $arResult = false;
  139. }
  140. $this->IncludeComponentTemplate();
  141. }
  142. else
  143. {
  144. LocalRedirect($arParams["REGISTER_PAGE"]."?REDIRECT_PAGE=".UrlEncode($APPLICATION->GetCurPage()));
  145. die();
  146. }
  147. }
  148. else
  149. {
  150. LocalRedirect($arParams["REGISTER_PAGE"]."?REDIRECT_PAGE=".UrlEncode($APPLICATION->GetCurPage()));
  151. die();
  152. }
  153. }
  154. else
  155. {
  156. ?>
  157. <b><?=ShowError(GetMessage("SPCAS1_NO_SHOP"))?></b>
  158. <?
  159. }
  160. ?>