enquiryreport.php 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. <?php
  2. /****************************
  3. * File : enquiryreport.php
  4. * Author : Cygnusa
  5. * @2020
  6. ****************************/
  7. /* cSpell:disable */
  8. //SECURITY
  9. if (!defined('APPLICATION_PATH')) {
  10. exit('No direct script access allowed');
  11. }
  12. //FUNCTION LISTS
  13. class enquiryreport
  14. {
  15. public function __construct($parent)
  16. {
  17. //GET PAGE MESSAGE
  18. $this->page_data = globalfunc::getMessage($parent, $parent->lang, 'enquiryreport');
  19. if (count($parent->params) == 0) {
  20. $this->enquirysubmit($parent);
  21. } else {
  22. $qry_params = explode("?", $parent->params[0]);
  23. $parameter_val = strtolower($qry_params[0]);
  24. switch ($parameter_val) {
  25. case "dashboard":
  26. case "export":
  27. $this->$parameter_val($parent);
  28. break;
  29. default:
  30. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  31. break;
  32. }
  33. }
  34. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  35. }
  36. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  37. /* /////////////////////////////// DATE ARRAY //////////////////////////////////////////////// */
  38. private function getDateArray($parent, $period, $from, $to)
  39. {
  40. $date_arr = array();
  41. switch ($period) {
  42. case '6months':
  43. //$date_arr[]=array("from"=>$from_date,"to"=>$to_date);
  44. for ($i = 6; $i >= 1; $i--) {
  45. $from_date = date('Y-m-', strtotime('-' . $i . ' month', strtotime(CUR_DATE))) . "01";
  46. $to_date = date('Y-m-t', strtotime('-' . $i . ' month', strtotime(CUR_DATE)));
  47. $label = date('M Y', strtotime($from_date));
  48. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  49. }
  50. //$from_date = date('Y-m-', strtotime(CUR_DATE)) . "01";
  51. //$to_date = date('Y-m-t', strtotime(CUR_DATE));
  52. //$date_arr[] = array("from" => $from_date, "to" => $to_date);
  53. break;
  54. case '7days':
  55. for ($i = 7; $i >= 1; $i--) {
  56. $from_date = date('Y-m-d', strtotime('-' . $i . ' day', strtotime(CUR_DATE)));
  57. $to_date = $from_date;
  58. $label = date('d-m-Y', strtotime($from_date));
  59. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  60. }
  61. break;
  62. case 'quarter1':
  63. for ($i = 4; $i <= 6; $i++) {
  64. if (date('n', strtotime(CUR_DATE)) > 3) {
  65. $from_date = date('Y-', strtotime(CUR_DATE)) . "0$i-01";
  66. } else {
  67. $from_date = date('Y-', strtotime('-1 year', strtotime(CUR_DATE))) . "0$i-01";
  68. }
  69. $to_date = date('Y-m-t', strtotime($from_date));
  70. $label = date('M Y', strtotime($from_date));
  71. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  72. }
  73. break;
  74. case 'quarter2':
  75. for ($i = 7; $i <= 9; $i++) {
  76. if (date('n', strtotime(CUR_DATE)) > 3) {
  77. $from_date = date('Y-', strtotime(CUR_DATE)) . "0$i-01";
  78. } else {
  79. $from_date = date('Y-', strtotime('-1 year', strtotime(CUR_DATE))) . "0$i-01";
  80. }
  81. $to_date = date('Y-m-t', strtotime($from_date));
  82. $label = date('M Y', strtotime($from_date));
  83. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  84. }
  85. break;
  86. case 'quarter3':
  87. for ($i = 10; $i <= 12; $i++) {
  88. if (date('n', strtotime(CUR_DATE)) > 3) {
  89. $from_date = date('Y-', strtotime(CUR_DATE)) . "$i-01";
  90. } else {
  91. $from_date = date('Y-', strtotime('-1 year', strtotime(CUR_DATE))) . "$i-01";
  92. }
  93. $to_date = date('Y-m-t', strtotime($from_date));
  94. $label = date('M Y', strtotime($from_date));
  95. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  96. }
  97. break;
  98. case 'quarter4':
  99. for ($i = 1; $i <= 3; $i++) {
  100. $from_date = date('Y-', strtotime(CUR_DATE)) . "$i-01";
  101. $to_date = date('Y-m-t', strtotime($from_date));
  102. $label = date('M Y', strtotime($from_date));
  103. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  104. }
  105. break;
  106. case 'other':
  107. $date1 = new DateTime($from);
  108. $date2 = new DateTime($to);
  109. $date_diff = $date1->diff($date2);
  110. //month
  111. if ($date_diff->days > 30 && date('m', strtotime($from)) != date('m', strtotime($to))) {
  112. $start = new DateTime(date('Y-m-', strtotime($from)) . "01");
  113. $end = new DateTime(date('Y-m-t', strtotime($to)));
  114. $interval = DateInterval::createFromDateString('1 month');
  115. $period = new DatePeriod($start, $interval, $end);
  116. foreach ($period as $dt) {
  117. $from_date = $dt->format("Y-m-") . "01";
  118. $to_date = $dt->format("Y-m-t");
  119. $label = date('M Y', strtotime($from_date));
  120. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  121. }
  122. } else { //day wise
  123. for ($i = $date_diff->days; $i >= 0; $i--) {
  124. $from_date = date('Y-m-d', strtotime('-' . $i . ' day', strtotime($to)));
  125. $to_date = $from_date;
  126. $label = date('d-m-Y', strtotime($from_date));
  127. $date_arr[] = (object) array("from" => $from_date, "to" => $to_date, "label" => $label, "value" => "0", "salesvalue" => "0");
  128. }
  129. }
  130. break;
  131. }
  132. return $date_arr;
  133. }
  134. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  135. /* /////////////////////////////// DASHBOARD //////////////////////////////////////////////// */
  136. private function dashboard($parent)
  137. {
  138. globalfunc::checkMethodType($parent, array('POST'));
  139. globalfunc::checkParamCount($parent, 1);
  140. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  141. $REQUEST_KEYS = array('period' => 'string', "segment" => "number");
  142. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  143. $segment = escape_str($parent->_request['segment']);
  144. $period = escape_str($parent->_request['period']);
  145. $from = escape_str($parent->_request['from']);
  146. $to = escape_str($parent->_request['to']);
  147. $to = date('Y-m-t', strtotime($to));
  148. $history = escape_str($parent->_request['history']);
  149. $zmemail = escape_str($parent->_request['zmemail']);
  150. $rmemail = escape_str($parent->_request['rmemail']);
  151. $amemail = escape_str($parent->_request['amemail']);
  152. $dealer_code = escape_str($parent->_request['dealer_code']);
  153. $smpin = escape_str($parent->_request['smpin']);
  154. //GET MONTH ARRAY
  155. $graph = $this->getDateArray($parent, $period, $from, $to);
  156. $user_cond = "";
  157. $manager_cond_arr = array();
  158. switch ($parent->current_user_role) {
  159. case '3': //HO
  160. if ($zmemail != 'all' && $zmemail != '') {
  161. $manager_cond_arr[] = " d.zm_email='" . $zmemail . "'";
  162. }
  163. if ($rmemail != 'all' && $rmemail != '') {
  164. $manager_cond_arr[] = " d.rm_email='" . $rmemail . "'";
  165. }
  166. if ($amemail != 'all' && $amemail != '') {
  167. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  168. }
  169. break;
  170. case '4': //ZM
  171. $manager_cond_arr[] = " d.zm_email='" . $parent->current_user_data->emailid . "'";
  172. if ($rmemail != 'all' && $rmemail != '') {
  173. $manager_cond_arr[] = " d.rm_email='" . $rmemail . "'";
  174. }
  175. if ($amemail != 'all' && $amemail != '') {
  176. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  177. }
  178. break;
  179. case '5': //TRAINER
  180. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' LIMIT 1";
  181. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  182. $zone_cond = (count($trainer_arr) > 0) ? " d.zone='" . $trainer_arr[0]->zone . "'" : " d.zone='0'";
  183. $manager_cond_arr[] = $zone_cond;
  184. if ($rmemail != 'all' && $rmemail != '') {
  185. $manager_cond_arr[] = " d.rm_email='" . $rmemail . "'";
  186. }
  187. if ($amemail != 'all' && $amemail != '') {
  188. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  189. }
  190. break;
  191. case '6': //RM
  192. $manager_cond_arr[] = " d.rm_email='" . $parent->current_user_data->emailid . "'";
  193. if ($amemail != 'all' && $amemail != '') {
  194. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  195. }
  196. break;
  197. case '7': //AM
  198. $manager_cond_arr[] = " d.am_email='" . $parent->current_user_data->emailid . "'";
  199. break;
  200. case '14': //DEALER
  201. //$user_cond = " AND e.dealer_code='" . $parent->current_user_data->dealer_code . "'";
  202. $dealer_code = $parent->current_user_data->dealer_code;
  203. break;
  204. }
  205. if (($dealer_code != 'all' && $dealer_code != '') || ($smpin != 'all' && $smpin != '')) {
  206. if ($dealer_code != 'all' && $dealer_code != '') {
  207. $user_cond = " AND e.dealer_code='" . $dealer_code . "'";
  208. }
  209. if ($smpin != 'all' && $smpin != '') {
  210. $user_cond = " AND e.smpin='" . $smpin . "'";
  211. }
  212. $user_cond .= " AND d.is_deleted='0' AND d.status='1' ";
  213. } else {
  214. $manager_cond = (count($manager_cond_arr) > 0) ? " AND " . @implode(" AND ", $manager_cond_arr) : "";
  215. $user_cond = " AND d.is_deleted='0' AND d.status='1' " . $manager_cond;
  216. }
  217. $start_month = date('Y-m-', strtotime($graph[0]->from)) . "01";
  218. $end_month = date('Y-m-t', strtotime(end($graph)->to));
  219. $join_table = '';
  220. if ($history == '1') {
  221. $join_table = " JOIN " . TABLE_USER . " tu ON tu.smpin=e.smpin ";
  222. }
  223. $user_cond .= ($history == '1') ? " AND tu.status='1' AND tu.is_deleted = 0 AND e.is_current='1'":"";
  224. switch ($segment) {
  225. case '1':$user_cond .= " AND e.segment='1'";
  226. break;
  227. case '2':$user_cond .= " AND e.segment='2'";
  228. break;
  229. }
  230. //TARGET BASED ON MONTHLY
  231. $user_target_str = "SELECT COALESCE(SUM(t.target),0) as data_count FROM " . TABLE_USER_SALETARGET . " t JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=t.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND t.sale_month>='" . date('Y-m-', strtotime($start_month)) . "' AND t.sale_month<='" . date('Y-m-t', strtotime($end_month)) . "' " . $user_cond;
  232. $user_target_arr = $parent->getQueryValue($user_target_str);
  233. $start_date = date('Y-m-d', strtotime($graph[0]->from));
  234. $end_date = date('Y-m-d', strtotime(end($graph)->to));
  235. $user_salesachieve_str = "SELECT COALESCE(SUM(s.sales_count),0) as data_count FROM " . DMS_EMPLOYEE_SALES . " s JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=s.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND s.sale_date>='" . $start_date . "' AND s.sale_date<='" . $end_date . "' " . $user_cond;
  236. $user_salesachieve_arr = $parent->getQueryValue($user_salesachieve_str);
  237. $user_enqachieve_str = "SELECT COUNT(enq.id) as data_count FROM " . DMS_ENQUIRY_MASTER . " as enq LEFT JOIN " . DMS_EMPLOYEE . " e ON e.smpin=enq.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND enq.is_dms=1 AND enq.created_on>='" . $start_date . " 00:00:00' AND enq.created_on<='" . $end_date . " 23:59:59' " . $user_cond;
  238. $user_enqachieve_arr = $parent->getQueryValue($user_enqachieve_str);
  239. $target_sales = (count($user_target_arr) > 0) ? $user_target_arr[0]->data_count : 0;
  240. switch ($segment) {
  241. case '1':$target_enquiry = $target_sales * 5;
  242. break;
  243. case '2':$target_enquiry = $target_sales * 3;
  244. break;
  245. default:
  246. //
  247. $m_user_target_str = "SELECT COALESCE(SUM(t.target),0) as data_count FROM " . TABLE_USER_SALETARGET . " t JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=t.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND t.sale_month>='" . date('Y-m-', strtotime($start_month)) . "' AND t.sale_month<='" . date('Y-m-t', strtotime($end_month)) . "' AND e.segment=1 " . $user_cond;
  248. $m_user_target_arr = $parent->getQueryValue($m_user_target_str);
  249. $mtarget_sales = (count($m_user_target_arr) > 0) ? $m_user_target_arr[0]->data_count : 0;
  250. $mtarget_enquiry = $mtarget_sales * 5;
  251. //
  252. $s_user_target_str = "SELECT COALESCE(SUM(t.target),0) as data_count FROM " . TABLE_USER_SALETARGET . " t JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=t.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND t.sale_month>='" . date('Y-m-', strtotime($start_month)) . "' AND t.sale_month<='" . date('Y-m-t', strtotime($end_month)) . "' AND e.segment=2 " . $user_cond;
  253. $s_user_target_arr = $parent->getQueryValue($s_user_target_str);
  254. $starget_sales = (count($s_user_target_arr) > 0) ? $s_user_target_arr[0]->data_count : 0;
  255. $starget_enquiry = $starget_sales * 3;
  256. //
  257. $o_user_target_str = "SELECT COALESCE(SUM(t.target),0) as data_count FROM " . TABLE_USER_SALETARGET . " t JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=t.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND t.sale_month>='" . date('Y-m-', strtotime($start_month)) . "' AND t.sale_month<='" . date('Y-m-t', strtotime($end_month)) . "' AND e.segment=0 " . $user_cond;
  258. $o_user_target_arr = $parent->getQueryValue($o_user_target_str);
  259. $otarget_sales = (count($o_user_target_arr) > 0) ? $o_user_target_arr[0]->data_count : 0;
  260. $otarget_enquiry = $otarget_sales * 3;
  261. $target_enquiry = $mtarget_enquiry + $starget_enquiry + $otarget_enquiry;
  262. break;
  263. }
  264. $achieved_enquiry = (count($user_enqachieve_arr) > 0) ? $user_enqachieve_arr[0]->data_count : 0;
  265. $achieved_sales = (count($user_salesachieve_arr) > 0) ? $user_salesachieve_arr[0]->data_count : 0;
  266. //$sale_ratio = "5 : 1";
  267. switch ($segment) {
  268. case '1':
  269. case '2':$sale_ratio = projectfunc::enqratio($achieved_enquiry, $achieved_sales);
  270. break;
  271. default:$sale_ratio = '';
  272. break;
  273. }
  274. $hot_str = "SELECT COUNT(enq.id) as data_count FROM " . DMS_ENQUIRY_MASTER . " as enq LEFT JOIN " . DMS_EMPLOYEE . " e ON e.smpin=enq.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND enq.is_dms=1 AND enq.status='H' AND enq.created_on>='" . $start_date . " 00:00:00' AND enq.created_on<='" . $end_date . " 23:59:59' AND enq.enquiry_stage NOT IN ('Z','O','P','V') " . $user_cond;
  275. $hot_arr = $parent->getQueryValue($hot_str);
  276. $warm_str = "SELECT COUNT(enq.id) as data_count FROM " . DMS_ENQUIRY_MASTER . " as enq LEFT JOIN " . DMS_EMPLOYEE . " e ON e.smpin=enq.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND enq.is_dms=1 AND enq.status='W' AND enq.created_on>='" . $start_date . " 00:00:00' AND enq.created_on<='" . $end_date . " 23:59:59' AND enq.enquiry_stage NOT IN ('Z','O','P','V') " . $user_cond;
  277. $warm_arr = $parent->getQueryValue($warm_str);
  278. $cold_str = "SELECT COUNT(enq.id) as data_count FROM " . DMS_ENQUIRY_MASTER . " as enq LEFT JOIN " . DMS_EMPLOYEE . " e ON e.smpin=enq.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND enq.is_dms=1 AND enq.status='P' AND enq.created_on>='" . $start_date . " 00:00:00' AND enq.created_on<='" . $end_date . " 23:59:59' AND enq.enquiry_stage NOT IN ('Z','O','P','V')" . $user_cond;
  279. $cold_arr = $parent->getQueryValue($cold_str);
  280. $lost_str = "SELECT COUNT(enq.id) as data_count FROM " . DMS_ENQUIRY_MASTER . " as enq LEFT JOIN " . DMS_EMPLOYEE . " e ON e.smpin=enq.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND enq.is_dms=1 AND enq.status='L' AND enq.created_on>='" . $start_date . " 00:00:00' AND enq.created_on<='" . $end_date . " 23:59:59' " . $user_cond;
  281. $lost_arr = $parent->getQueryValue($lost_str);
  282. $postponed_str = "SELECT COUNT(enq.id) as data_count FROM " . DMS_ENQUIRY_MASTER . " as enq LEFT JOIN " . DMS_EMPLOYEE . " e ON e.smpin=enq.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND enq.is_dms=1 AND enq.status='E' AND enq.created_on>='" . $start_date . " 00:00:00' AND enq.created_on<='" . $end_date . " 23:59:59' AND enq.enquiry_stage NOT IN ('Z','O','P','V')" . $user_cond;
  283. $postponed_arr = $parent->getQueryValue($postponed_str);
  284. $hot = (count($hot_arr) > 0) ? $hot_arr[0]->data_count : "0";
  285. $warm = (count($warm_arr) > 0) ? $warm_arr[0]->data_count : "0";
  286. $cold = (count($cold_arr) > 0) ? $cold_arr[0]->data_count : "0";
  287. $lost = (count($lost_arr) > 0) ? $lost_arr[0]->data_count : "0";
  288. $postponed = (count($postponed_arr) > 0) ? $postponed_arr[0]->data_count : "0";
  289. $leaddata = (object) array("hot" => $hot, "warm" => $warm, "cold" => $cold, "lost" => $lost, "postponed" => $postponed);
  290. $enquiry_per = ($target_enquiry > 0) ? round(($achieved_enquiry / $target_enquiry) * 100) : "0";
  291. $target_per = ($target_sales > 0) ? round(($achieved_sales / $target_sales) * 100) : "0";
  292. $conversion_per = ($achieved_enquiry > 0) ? round(($achieved_sales / $achieved_enquiry) * 100) : "0";
  293. // $enquiry_percentage = (object) array("percentage" => $enquiry_per, "zero" => "100");
  294. // $sales_percentage = (object) array("percentage" => $target_per, "zero" => "100");
  295. // $conversion_percentage = (object) array("percentage" => $conversion_per, "zero" => "100");
  296. $enquiry_percentage = (object) array("percentage" => $enquiry_per, "zero" => (100 - $enquiry_per));
  297. $sales_percentage = (object) array("percentage" => $target_per, "zero" => (100 - $target_per));
  298. $conversion_percentage = (object) array("percentage" => $conversion_per, "zero" => (100 - $conversion_per));
  299. //TOTAL COUNT
  300. $total_emp = "SELECT COUNT(e.id) as data_count FROM " . DMS_EMPLOYEE . " e JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 " . $user_cond;
  301. $total_emp_arr = $parent->getQueryValue($total_emp);
  302. $productive_str = "SELECT COUNT(DISTINCT e.smpin) as data_count FROM " . DMS_EMPLOYEE_SALES . " t JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=t.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 AND t.sale_date>='" . date('Y-m-', strtotime($start_month)) . "' AND t.sale_date<='" . date('Y-m-t', strtotime($end_month)) . "' " . $user_cond;
  303. $productive_arr = $parent->getQueryValue($productive_str);
  304. $total_emp = (count($total_emp_arr) > 0) ? $total_emp_arr[0]->data_count : "0";
  305. $pro_emp = (count($productive_arr) > 0) ? $productive_arr[0]->data_count : "0";
  306. $productivity_per = ($total_emp > 0) ? round(($pro_emp / $total_emp) * 100) : 0;
  307. $zero_per = 100 - $productivity_per;
  308. $productivity = (object) array("productivity" => $productivity_per, "zero" => $zero_per);
  309. if ($parent->current_user_role == '3') //HO
  310. {
  311. //ALL INDIA
  312. } else if ($parent->current_user_role == '4') //ZM
  313. {
  314. $dcond = " and d.zm_email='" . $parent->current_user_data->emailid . "'";
  315. } else if ($parent->current_user_role == '5') //TRAINER
  316. {
  317. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  318. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  319. $dcond = (count($trainer_arr) > 0) ? " AND d.zone='" . $trainer_arr[0]->zone . "'" : ' AND id=0';
  320. } else if ($parent->current_user_role == '6') //RM
  321. {
  322. $dcond = " and d.rm_email='" . $parent->current_user_data->emailid . "'";
  323. } else if ($parent->current_user_role == '7') //AM
  324. {
  325. $dcond = " and d.am_email='" . $parent->current_user_data->emailid . "'";
  326. } else if ($parent->current_user_role == '14') //Dealer
  327. {
  328. $dcond = " and d.dealer_code='" . $parent->current_user_data->dealer_code . "'";
  329. }
  330. if ($period == 'other') {
  331. $REQUEST_KEYS = array('from' => 'date|Y-m-d', 'to' => 'date|Y-m-d');
  332. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  333. if (strtotime($from) > strtotime($to)) {
  334. $parent->response(array('response' => 'failed', 'message' => $this->page_data['error2']), 406);
  335. }
  336. }
  337. $dcond .= ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  338. $dcond .= ($rmemail != 'all' && $rmemail != '') ? " AND d.rm_email='" . $rmemail . "'" : '';
  339. $dcond .= ($amemail != 'all' && $amemail != '') ? " AND d.am_email='" . $amemail . "'" : '';
  340. $dcond .= ($dealer_code != 'all' && $dealer_code != '') ? " AND d.dealer_code='" . $dealer_code . "'" : '';
  341. $dcond .= ($smpin != 'all' && $smpin != '') ? " AND e.smpin='" . $smpin . "'" : '';
  342. $dcond .= ($segment != '' && $segment > 0) ? " AND e.segment='" . $segment . "'" : "";
  343. $dcond .= ($history == '1') ? " AND tu.status='1' AND tu.is_deleted = 0 AND e.is_current='1'":"";
  344. $graph_data = array();
  345. //GET GRAPH VALUE
  346. foreach ($graph as $key => $value) {
  347. $data_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER . " enq JOIN " . DMS_EMPLOYEE . " e ON enq.smpin=e.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table, "COUNT(DISTINCT enq.id) enqcount", " enq.is_dms=1 AND enq.is_deleted=0 AND e.status=1 AND d.is_deleted=0 AND enq.created_on>='" . $value->from . " 00:00:00' AND enq.created_on<='" . $value->to . " 23:59:59' " . $dcond, "1");
  348. //$graph_data[] = " enq.is_dms=1 AND enq.is_deleted=0 AND e.status=1 AND d.is_deleted=0 AND enq.created_on>='" . $value->from . " 00:00:00' AND enq.created_on<='" . $value->to . " 23:59:59' " . $dcond;
  349. $graph[$key]->value = ($data_arr['nr'] > 0) ? $data_arr['result'][0]->enqcount : "0";
  350. $data_arr = $parent->selectQuery(DMS_EMPLOYEE_SALES . " s JOIN " . DMS_EMPLOYEE . " as e ON e.smpin=s.smpin JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table, "COALESCE(SUM(s.sales_count),0) as data_count", "d.is_deleted=0 AND e.status=1 AND s.sale_date>='" . $value->from . "' AND s.sale_date<='" . $value->to . "' " . $dcond, "1");
  351. $graph[$key]->salesvalue = ($data_arr['nr'] > 0) ? $data_arr['result'][0]->data_count : "0";
  352. }
  353. $data = array("graph" => $graph, "sale_ratio" => $sale_ratio, "target_enquiry" => $target_enquiry, "achieved_enquiry" => $achieved_enquiry, "target_sales" => $target_sales, "achieved_sales" => $achieved_sales, "leaddata" => $leaddata, "enquiry_percentage" => $enquiry_percentage, "sales_percentage" => $sales_percentage, "conversion_percentage" => $conversion_percentage, "productivity" => $productivity);
  354. //LOG
  355. $logstr = 'ENQUIRY REPORT DASHBOARD';
  356. globalfunc::insertUserLog($parent, $logstr);
  357. $parent->response(array('response' => 'success', 'data' => $data, 'message' => $this->page_data['success1']), 200);
  358. }
  359. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  360. /* //////////////////////////////////// EXPORT //////////////////////////////////////////////// */
  361. private function export($parent)
  362. {
  363. globalfunc::checkMethodType($parent, array('POST'));
  364. globalfunc::checkParamCount($parent, 1);
  365. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  366. $REQUEST_KEYS = array('period' => 'string', "segment" => "number");
  367. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  368. $segment = escape_str($parent->_request['segment']);
  369. $period = escape_str($parent->_request['period']);
  370. $from = escape_str($parent->_request['from']);
  371. $to = escape_str($parent->_request['to']);
  372. $to = date('Y-m-t', strtotime($to));
  373. $history = escape_str($parent->_request['history']);
  374. $zmemail = escape_str($parent->_request['zmemail']);
  375. $rmemail = escape_str($parent->_request['rmemail']);
  376. $amemail = escape_str($parent->_request['amemail']);
  377. $dealer_code = escape_str($parent->_request['dealer_code']);
  378. $smpin = escape_str($parent->_request['smpin']);
  379. //Excel class library
  380. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  381. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  382. $objPHPExcel = new PHPExcel();
  383. $objPHPExcel->setActiveSheetIndex(0);
  384. //EXCEL HEADER
  385. $row += 2;
  386. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES DASHBOARD");
  387. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  388. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  389. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  390. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  391. $row += 2;
  392. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, "L" . $row, "M" . $row, "N" . $row, "O" . $row, "P" . $row, "Q" . $row, "R" . $row, "S" . $row, "T" . $row, "U" . $row, "V" . $row, "W" . $row, "X" . $row, "Y" . $row);
  393. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  394. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  395. //SET HEADER
  396. $header_arr = array('S.no', 'Segment', 'SMPIN', 'DSE Name', 'DOJ', 'From', 'To', 'No of Enquiry Target', 'No of Enquiry
  397. Achieved', 'No of follow-up (Call & Visit)', 'No of Test ride', 'No of postponed', 'No of Lost', 'Hot', 'Warm', 'Cold', 'Sales Target', 'Sales Achieved', 'Enquiry Achieved vs. Target', 'Sales Achieved vs. Target', 'Conversion % (Total Sales / Total Enquiries)', 'ZM', 'RM', 'AM', 'Zone');
  398. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  399. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('20');
  400. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('20');
  401. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('30');
  402. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('30');
  403. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('30');
  404. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('30');
  405. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('30');
  406. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  407. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  408. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  409. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth('30');
  410. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth('30');
  411. $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth('30');
  412. $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth('30');
  413. $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth('30');
  414. $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth('30');
  415. $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth('30');
  416. $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth('30');
  417. $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth('30');
  418. $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth('30');
  419. $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setWidth('30');
  420. $objPHPExcel->getActiveSheet()->getColumnDimension('W')->setWidth('30');
  421. $objPHPExcel->getActiveSheet()->getColumnDimension('X')->setWidth('30');
  422. $objPHPExcel->getActiveSheet()->getColumnDimension('Y')->setWidth('30');
  423. $i = 0;
  424. foreach ($header_arr as $val) {
  425. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  426. }
  427. //GET MONTH ARRAY
  428. $graph = $this->getDateArray($parent, $period, $from, $to);
  429. $user_cond = "";
  430. $manager_cond_arr = array();
  431. switch ($parent->current_user_role) {
  432. case '3': //HO
  433. if ($zmemail != 'all' && $zmemail != '') {
  434. $manager_cond_arr[] = " d.zm_email='" . $zmemail . "'";
  435. }
  436. if ($rmemail != 'all' && $rmemail != '') {
  437. $manager_cond_arr[] = " d.rm_email='" . $rmemail . "'";
  438. }
  439. if ($amemail != 'all' && $amemail != '') {
  440. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  441. }
  442. break;
  443. case '4': //ZM
  444. $manager_cond_arr[] = " d.zm_email='" . $parent->current_user_data->emailid . "'";
  445. if ($rmemail != 'all' && $rmemail != '') {
  446. $manager_cond_arr[] = " d.rm_email='" . $rmemail . "'";
  447. }
  448. if ($amemail != 'all' && $amemail != '') {
  449. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  450. }
  451. break;
  452. case '5': //TRAINER
  453. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' LIMIT 1";
  454. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  455. $zone_cond = (count($trainer_arr) > 0) ? " d.zone='" . $trainer_arr[0]->zone . "'" : " d.zone='0'";
  456. $manager_cond_arr[] = $zone_cond;
  457. if ($rmemail != 'all' && $rmemail != '') {
  458. $manager_cond_arr[] = " d.rm_email='" . $rmemail . "'";
  459. }
  460. if ($amemail != 'all' && $amemail != '') {
  461. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  462. }
  463. break;
  464. case '6': //RM
  465. $manager_cond_arr[] = " d.rm_email='" . $parent->current_user_data->emailid . "'";
  466. if ($amemail != 'all' && $amemail != '') {
  467. $manager_cond_arr[] = " d.am_email='" . $amemail . "'";
  468. }
  469. break;
  470. case '7': //AM
  471. $manager_cond_arr[] = " d.am_email='" . $parent->current_user_data->emailid . "'";
  472. break;
  473. case '14': //DEALER
  474. //$user_cond = " AND e.dealer_code='" . $parent->current_user_data->dealer_code . "'";
  475. $dealer_code = $parent->current_user_data->dealer_code;
  476. break;
  477. }
  478. if (($dealer_code != 'all' && $dealer_code != '') || ($smpin != 'all' && $smpin != '')) {
  479. if ($dealer_code != 'all' && $dealer_code != '') {
  480. $user_cond = " AND e.dealer_code='" . $dealer_code . "'";
  481. }
  482. if ($smpin != 'all' && $smpin != '') {
  483. $user_cond = " AND e.smpin='" . $smpin . "'";
  484. }
  485. $user_cond .= " AND d.is_deleted='0' AND d.status='1' ";
  486. } else {
  487. $manager_cond = (count($manager_cond_arr) > 0) ? " AND " . @implode(" AND ", $manager_cond_arr) : "";
  488. $user_cond = " AND d.is_deleted='0' AND d.status='1' " . $manager_cond;
  489. }
  490. if($period == '7days') {
  491. $start_month = date('Y-m-d', strtotime($graph[0]->from));
  492. $end_month = date('Y-m-d', strtotime(end($graph)->to));
  493. }
  494. else {
  495. $start_month = date('Y-m-', strtotime($graph[0]->from)) . "01";
  496. $end_month = date('Y-m-t', strtotime(end($graph)->to));
  497. }
  498. $start_date = $graph[0]->from;
  499. $end_date = end($graph)->to;
  500. $join_table = '';
  501. if ($history == '1') {
  502. $join_table = " JOIN " . TABLE_USER . " tu ON tu.smpin=e.smpin ";
  503. }
  504. $user_cond .= ($history == '1') ? " AND tu.status='1' AND tu.is_deleted = '0' AND e.is_current='1' ":"";
  505. switch ($segment) {
  506. case '1':$user_cond .= " AND e.segment='1'";
  507. break;
  508. case '2':$user_cond .= " AND e.segment='2'";
  509. break;
  510. }
  511. $user_str = "SELECT e.*,d.zm_name,d.rm_name,d.am_name,d.zone FROM " . DMS_EMPLOYEE . " as e JOIN " . DMS_DEALER . " d ON d.dealer_code=e.dealer_code " . $join_table . " WHERE d.is_deleted=0 AND e.status=1 " . $user_cond;
  512. $user_arr = $parent->getQueryValue($user_str);
  513. if (count($user_arr) > 0) {
  514. foreach ($user_arr as $mkey => $res_user) {
  515. $i = 0;
  516. $row++;
  517. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, ($mkey + 1));
  518. switch ($res_user->segment) {
  519. case "1":$segment_str = "Parents/Guardian";
  520. break;
  521. case "2":$segment_str = "Instructor";
  522. break;
  523. default:$segment_str = "Student Learner";
  524. break;
  525. }
  526. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $segment_str);
  527. $objPHPExcel->getActiveSheet()->getStyle('C' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  528. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  529. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  530. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, date('d M Y', strtotime($res_user->date_of_join)) );
  531. $start_month_str = date('d M Y', strtotime($start_month));
  532. $end_month_str = date('d M Y', strtotime($end_month));
  533. if (strtotime($end_date) > strtotime(CUR_DATE)) {
  534. $end_month_str = date('d M Y', strtotime(CUR_DATE));
  535. }
  536. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $start_month_str);
  537. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $end_month_str);
  538. $smpin = $res_user->smpin;
  539. $query_target = $parent->getQueryValue("SELECT COALESCE(SUM(target),0) as total_target FROM " . TABLE_USER_SALETARGET . " WHERE smpin='" . $res_user->smpin . "' AND sale_month>='" . date('Y-m-', strtotime($start_month)) . "-01' AND sale_month<='" . date('Y-m-t', strtotime($end_month)) . "' LIMIT 1");
  540. $sale_target = (count($query_target) > 0) ? (string) $query_target[0]->total_target : 0;
  541. switch ($res_user->segment) {
  542. case "1":$enquiry_target = $sale_target * 5;
  543. break;
  544. case "2":$enquiry_target = $sale_target * 3;
  545. break;
  546. default:$enquiry_target = $sale_target * 3;
  547. break;
  548. }
  549. //$enquiry_target = $sale_target * 3;
  550. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $enquiry_target);
  551. $achieved_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0", "1");
  552. $enquiry_achieved = ($achieved_arr['nr'] > 0) ? $achieved_arr['result'][0]->data_count : 0;
  553. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $enquiry_achieved);
  554. //$q = " smpin='" . $smpin . "' AND created_on>'" . $start_date . " 00:00:00' AND created_on<'" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0";
  555. // $parent->executeQuery("INSERT INTO `" . TABLE_QUERY_LOG . "`( `query_str`, `query_type`, `created_on`) VALUES ('" . escape_str($q) . "', 'vishnu20210204', '" . NOW . "')");
  556. $callvisit_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND modeofcontact IN ('E','F','O','T','S','V') ", "1");
  557. $callvisit = ($callvisit_arr['nr'] > 0) ? $callvisit_arr['result'][0]->data_count : 0;
  558. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $callvisit);
  559. $testride_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND enquiry_stage IN ('T') ", "1");
  560. $testride = ($testride_arr['nr'] > 0) ? $testride_arr['result'][0]->data_count : 0;
  561. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $testride);
  562. $postponed_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND status='E' AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  563. $postponed = ($postponed_arr['nr'] > 0) ? $postponed_arr['result'][0]->data_count : 0;
  564. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $postponed);
  565. $lost_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND status='L' ", "1");
  566. $lost = ($lost_arr['nr'] > 0) ? $lost_arr['result'][0]->data_count : 0;
  567. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $lost);
  568. $hot_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND status='H' AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  569. $hot = ($hot_arr['nr'] > 0) ? $hot_arr['result'][0]->data_count : 0;
  570. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $hot);
  571. $warm_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND status='W' AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  572. $warm = ($warm_arr['nr'] > 0) ? $warm_arr['result'][0]->data_count : 0;
  573. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $warm);
  574. $cold_arr = $parent->selectQuery(DMS_ENQUIRY_MASTER, "COUNT(id) data_count", " smpin='" . $smpin . "' AND created_on>='" . $start_date . " 00:00:00' AND created_on<='" . $end_date . " 23:59:59' AND is_dms=1 AND is_deleted=0 AND status='P' AND enquiry_stage NOT IN ('Z','O','P','V')", "1");
  575. $cold = ($cold_arr['nr'] > 0) ? $cold_arr['result'][0]->data_count : 0;
  576. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $cold);
  577. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $sale_target);
  578. $user_sale = $parent->getQueryValue("SELECT SUM(sales_count) as data_count FROM " . DMS_EMPLOYEE_SALES . " WHERE smpin='" . $smpin . "' AND sale_date>='" . $start_date . "' AND sale_date<='" . $end_date . "' LIMIT 1");
  579. $sales_achieved = (count($user_sale) > 0 && $user_sale[0]->data_count > 0) ? $user_sale[0]->data_count : 0;
  580. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $sales_achieved);
  581. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $enquiry_achieved . "/" . $enquiry_target);
  582. $objPHPExcel->getActiveSheet()->getStyle('R' . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
  583. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $sales_achieved . "/" . $sale_target);
  584. $objPHPExcel->getActiveSheet()->getStyle('S' . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
  585. $sale_ratio = projectfunc::enqratio($enquiry_achieved, $sales_achieved);
  586. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $sale_ratio);
  587. $objPHPExcel->getActiveSheet()->getStyle('T' . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
  588. /* 'Enquiry Achieved vs. Target', 'Sales Achieved vs. Target', 'Conversion % (Total Sales / Total Enquiries)', 'ZM', 'RM', 'AM'
  589. */
  590. //d.zm_name,d.rm_name,d.am_name
  591. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  592. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  593. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  594. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zone);
  595. }
  596. }
  597. //LOG
  598. $logstr = 'SALES DASHBOARD EXPORT';
  599. globalfunc::insertUserLog($parent, $logstr);
  600. $objPHPExcel->getActiveSheet()->setTitle('SALES DASHBOARD');
  601. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  602. $fpath = "../../" . S3_REPORT_URL;
  603. $filename = "enquiry_report_" . uniqid() . ".xlsx";
  604. $objWriter->save($fpath . $filename);
  605. //CONNECT S3
  606. $s3 = awsfileserver::connectS3();
  607. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  608. //delete report
  609. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  610. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  611. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  612. }
  613. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  614. }