PageRenderTime 51ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/sale/admin/report.php

https://gitlab.com/alexprowars/bitrix
PHP | 346 lines | 261 code | 54 blank | 31 comment | 33 complexity | 6f14a29370e6d28983637b09123a2b19 MD5 | raw file
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. \Bitrix\Main\Loader::includeModule('sale');
  4. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
  5. global $DB;
  6. $saleModulePermissions = $APPLICATION->GetGroupRight("sale");
  7. if ($saleModulePermissions <= "D")
  8. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  9. IncludeModuleLangFile(__FILE__);
  10. if(!CBXFeatures::IsFeatureEnabled('SaleReports'))
  11. {
  12. require($DOCUMENT_ROOT."/bitrix/modules/main/include/prolog_admin_after.php");
  13. ShowError(GetMessage("SALE_FEATURE_NOT_ALLOW"));
  14. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  15. die();
  16. }
  17. // <editor-fold defaultstate="collapsed" desc="--------- Server processing ---------">
  18. ClearVars();
  19. $errorMessage = '';
  20. $errAdmMessage = null;
  21. // Using report module
  22. if (!CModule::IncludeModule('report'))
  23. {
  24. $errorMessage .= GetMessage("REPORT_MODULE_NOT_INSTALLED").'<br>';
  25. }
  26. // Using catalog module
  27. if (!CModule::IncludeModule('catalog'))
  28. {
  29. $errorMessage .= GetMessage("CATALOG_MODULE_NOT_INSTALLED").'<br>';
  30. }
  31. // Using iblock module
  32. if (!CModule::IncludeModule('iblock'))
  33. {
  34. $errorMessage .= GetMessage("IBLOCK_MODULE_NOT_INSTALLED").'<br>';
  35. }
  36. if (!$errorMessage)
  37. {
  38. CBaseSaleReportHelper::init();
  39. $arParams = array(
  40. 'PATH_TO_REPORT_LIST' => '/bitrix/admin/sale_report.php?lang='.LANG
  41. );
  42. // <editor-fold defaultstate="collapsed" desc="Creating or updating base reports">
  43. //$ownerId = call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'getOwnerId'));
  44. // auto create fresh default reports only if some reports alredy exist
  45. $optionSaleReportsVersion = '~U_'.SALE_REPORT_OWNER_ID.'_REPORTS';
  46. $userReportVersion = CUserOptions::GetOption('sale', $optionSaleReportsVersion, CBaseSaleReportHelper::getFirstVersion());
  47. $saleReportVersion = CBaseSaleReportHelper::getCurrentVersion();
  48. if ($saleReportVersion !== $userReportVersion && CheckVersion($saleReportVersion, $userReportVersion))
  49. {
  50. $nReps = 0;
  51. foreach (CBaseSaleReportHelper::getOwners() as $ownerId) $nReps += CReport::GetCountInt($ownerId);
  52. if ($nReps > 0)
  53. {
  54. $dReports = CBaseSaleReportHelper::getDefaultReports();
  55. foreach ($dReports as $moduleVer => $vReports)
  56. {
  57. if ($moduleVer !== $userReportVersion && CheckVersion($moduleVer, $userReportVersion))
  58. {
  59. // add fresh vReports
  60. //CReport::addFreshDefaultReports($vReports, $ownerId);
  61. foreach ($vReports as &$dReport)
  62. {
  63. $dReport['settings']['mark_default'] = $dReport['mark_default'];
  64. $dReport['settings']['title'] = $dReport['title'];
  65. $dReport['settings']['description'] = $dReport['description'];
  66. $dReport['settings']['owner'] = $dReport['owner'];
  67. CReport::Add($dReport['settings']);
  68. }
  69. unset($dReport);
  70. }
  71. }
  72. }
  73. unset($nReps);
  74. CUserOptions::SetOption('sale', $optionSaleReportsVersion, $saleReportVersion);
  75. }
  76. // create default reports by user request
  77. if (!empty($_POST['CREATE_DEFAULT']))
  78. {
  79. $dReports = CBaseSaleReportHelper::getDefaultReports();
  80. foreach ($dReports as $moduleVer => $vReports)
  81. {
  82. //CReport::addFreshDefaultReports($vReports, $ownerId);
  83. foreach ($vReports as &$dReport)
  84. {
  85. $dReport['settings']['mark_default'] = $dReport['mark_default'];
  86. $dReport['settings']['title'] = $dReport['title'];
  87. $dReport['settings']['description'] = $dReport['description'];
  88. $dReport['settings']['owner'] = $dReport['owner'];
  89. CReport::Add($dReport['settings']);
  90. }
  91. unset($dReport);
  92. }
  93. LocalRedirect($arParams['PATH_TO_REPORT_LIST']);
  94. }
  95. // </editor-fold>
  96. $needDisplayUpdate14_5_2message = false;
  97. if(CUserOptions::GetOption('report', 'NEED_DISPLAY_UPDATE_14_5_2_MESSAGE', 'Y') === 'Y')
  98. {
  99. $needDisplayUpdate14_5_2message = true;
  100. CUserOptions::SetOption('report', 'NEED_DISPLAY_UPDATE_14_5_2_MESSAGE', 'N');
  101. }
  102. // Preparing reports list.
  103. $sTableID = 'tbl_sale_report';
  104. $lReports = new CAdminList($sTableID);
  105. if (($arID = $lReports->GroupAction()) && $saleModulePermissions >= 'W')
  106. {
  107. if ($_REQUEST['action_target'] === 'on' || $_REQUEST['action_target'] === 'selected')
  108. {
  109. $arID = array();
  110. // Getting reports list.
  111. $res = Bitrix\Report\ReportTable::getList(array(
  112. 'select' => array('ID'),
  113. 'filter' => array('=CREATED_BY' => $USER->GetID(), '=OWNER_ID' => CBaseSaleReportHelper::getOwners())
  114. ));
  115. while ($row = $res->fetch())
  116. $arID[] = $row['ID'];
  117. unset($res);
  118. unset($row);
  119. }
  120. foreach ($arID as $ID)
  121. {
  122. if ($ID == '') continue;
  123. switch ($_REQUEST['action'])
  124. {
  125. case "delete":
  126. @set_time_limit(0);
  127. $DB->StartTransaction();
  128. if (!CReport::Delete($ID))
  129. {
  130. $DB->Rollback();
  131. if ($ex = $APPLICATION->GetException())
  132. $lReports->AddGroupError($ex->GetString(), $ID);
  133. else
  134. $lReports->AddGroupError(GetMessage("SALE_REPORT_ERROR_DELREPFROMLIST"), $ID);
  135. }
  136. $DB->Commit();
  137. break;
  138. }
  139. }
  140. }
  141. // Getting reports list.
  142. $dbRepList = Bitrix\Report\ReportTable::getList(array(
  143. 'select' => array('ID', 'TITLE', 'DESCRIPTION', 'CREATED_DATE', 'MARK_DEFAULT'),
  144. 'filter' => array('=CREATED_BY' => $USER->GetID(), '=OWNER_ID' => CBaseSaleReportHelper::getOwners())
  145. ));
  146. $dbRepList = new CAdminResult($dbRepList, $sTableID);
  147. $dbRepList->NavStart();
  148. $lReports->NavText($dbRepList->GetNavPrint(GetMessage("SALE_REPORT_TITLE")));
  149. $lReports->AddHeaders(
  150. array(
  151. array(
  152. 'id' =>'TITLE',
  153. 'content' =>'<b>'.GetMessage('SALE_REPORT_LIST_TITLE').'</b>',
  154. 'sort' =>'TITLE',
  155. 'default' =>true
  156. ),
  157. array(
  158. 'id' =>'CREATED_DATE',
  159. 'content' =>'<b>'.GetMessage('SALE_REPORT_LIST_CREATED_DATE').'</b>',
  160. 'sort' =>'CREATED_DATE',
  161. 'default' =>true
  162. )
  163. )
  164. );
  165. // $arRes containing array as: array( 'ID' =>..., 'TITLE'=>..., 'DESCRIPTION'=>..., 'CREATED_DATE'=>... ).
  166. $nReports = 0;
  167. while ($arRes = $dbRepList->NavNext(false))
  168. {
  169. $lRow = $lReports->AddRow($arRes['ID'], $arRes);
  170. $lRow->AddViewField('TITLE', "<a href='" . "sale_report_view.php?lang=" . LANG . '&ID=' . $arRes['ID'] . "' title='" . CUtil::addslashes(htmlspecialcharsEx($arRes['DESCRIPTION'])) . "'>" . CUtil::addslashes(htmlspecialcharsEx($arRes['TITLE'])) . "</a>");
  171. $createdDateStr = ($arRes['CREATED_DATE'] instanceof \Bitrix\Main\Type\DateTime || $arRes['CREATED_DATE'] instanceof \Bitrix\Main\Type\Date) ? ConvertTimeStamp($arRes['CREATED_DATE']->getTimestamp(), 'SHORT') : '';
  172. $lRow->AddViewField('CREATED_DATE', $createdDateStr);
  173. $markNum = 0;
  174. if (isset($arRes['MARK_DEFAULT']))
  175. $markNum = intval($arRes['MARK_DEFAULT']);
  176. // <editor-fold defaultstate="collapsed" desc="Context menu of rows of AdminList.">
  177. $arRowActions = array();
  178. if ($saleModulePermissions >= 'D')
  179. {
  180. $arRowActions[] = array(
  181. "ICON"=>"view",
  182. "TEXT"=>GetMessage('SALE_REPORT_LIST_ROW_ACTIONS_VIEW_TEXT'),
  183. "ACTION"=>$lReports->ActionRedirect("sale_report_view.php?lang=".LANG."&ID=".$arRes['ID']),
  184. "DEFAULT"=>true
  185. );
  186. }
  187. if ($saleModulePermissions >= 'W')
  188. {
  189. $arRowActions[] = array(
  190. "ICON"=>"copy",
  191. "TEXT"=>GetMessage('SALE_REPORT_LIST_ROW_ACTIONS_COPY_TEXT'),
  192. "ACTION"=>$lReports->ActionRedirect("sale_report_construct.php?copyID=".$arRes['ID']."&lang=".LANG),
  193. //"DEFAULT"=>true
  194. );
  195. if ($markNum === 0)
  196. {
  197. $arRowActions[] = array(
  198. "ICON"=>"edit",
  199. "TEXT"=>GetMessage('SALE_REPORT_LIST_ROW_ACTIONS_EDIT_TEXT'),
  200. "ACTION"=>$lReports->ActionRedirect("sale_report_construct.php?ID=".$arRes['ID']."&lang=".LANG),
  201. //"DEFAULT"=>true
  202. );
  203. }
  204. $arRowActions[] = array(
  205. "ICON"=>"delete",
  206. "TEXT"=>GetMessage('SALE_REPORT_LIST_ROW_ACTIONS_DELETE_TEXT'),
  207. "ACTION"=>"if(confirm('".GetMessage("REPORT_DELETE_CONFIRM")."')) ".$lReports->ActionDoGroup($arRes['ID'], "delete")
  208. );
  209. }
  210. // </editor-fold>
  211. $lRow->AddActions($arRowActions);
  212. $nReports++;
  213. }
  214. // Group actions
  215. $lReports->AddGroupActionTable(
  216. array(
  217. "delete" => GetMessage("MAIN_ADMIN_LIST_DELETE")/*,
  218. "activate" => GetMessage("MAIN_ADMIN_LIST_ACTIVATE"),
  219. "deactivate" => GetMessage("MAIN_ADMIN_LIST_DEACTIVATE")*/
  220. )
  221. );
  222. // Menu of actions.
  223. $arContextMenu = array(
  224. array(
  225. "TEXT" => GetMessage("SALE_REPORT_LIST_ADD_REPORT"),
  226. "LINK" => "sale_report_construct.php?lang=" . LANG,
  227. "TITLE" => GetMessage("SALE_REPORT_LIST_ADD_REPORT_TITLE"),
  228. "ICON" => "btn_new"
  229. )
  230. );
  231. // Attach "Menu of actions".
  232. $lReports->AddAdminContextMenu($arContextMenu);
  233. // Adding summary row.
  234. $lReports->AddFooter(
  235. array(
  236. array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$dbRepList->SelectedRowsCount()), // quatity of elements
  237. array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"), // counter of selected elements
  238. )
  239. );
  240. // Processing options or export to Excel.
  241. $lReports->CheckListMode();
  242. }
  243. // </editor-fold>
  244. // Page header
  245. $APPLICATION->SetTitle(GetMessage("SALE_REPORT_TITLE"));
  246. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  247. // <editor-fold defaultstate="collapsed" desc="--------- Page output ---------">
  248. if( $errorMessage )
  249. {
  250. $errAdmMessage = new CAdminMessage(
  251. array(
  252. "DETAILS"=>$errorMessage,
  253. "TYPE"=>"ERROR",
  254. "MESSAGE"=>GetMessage('SALE_REPORT_ERROR_GETREPORTLIST'),
  255. "HTML"=>true
  256. )
  257. );
  258. echo $errAdmMessage->Show();
  259. }
  260. else
  261. {
  262. ?>
  263. <?php if ($nReports == 0): ?>
  264. <?
  265. $arMessageNoReps = new CAdminMessage(array('MESSAGE' => GetMessage('SALE_REPORT_EMPTY_LIST'), 'TYPE' => 'OK'));
  266. echo $arMessageNoReps->Show();
  267. ?>
  268. <form action="" method="POST">
  269. <input type="hidden" name="CREATE_DEFAULT" value="1" />
  270. <input class="adm-btn-save" type="submit" value="<?=GetMessage('SALE_REPORT_CREATE_DEFAULT')?>" />
  271. </form>
  272. <?php else: ?>
  273. <?php
  274. if ($needDisplayUpdate14_5_2message)
  275. {
  276. $admMessage = new CAdminMessage(
  277. array(
  278. "TYPE"=>"OK",
  279. "MESSAGE"=>GetMessage('REPORT_UPDATE_14_5_2_MESSAGE')
  280. )
  281. );
  282. echo $admMessage->Show();
  283. unset($admMessage);
  284. }
  285. ?>
  286. <?php $lReports->DisplayList(); ?>
  287. <?php endif; ?>
  288. <?php
  289. }
  290. // </editor-fold>
  291. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  292. ?>