PageRenderTime 27ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/schedule/main2.php

https://github.com/MyITCRM/myitcrm1
PHP | 373 lines | 256 code | 79 blank | 38 comment | 87 complexity | acdc39e0bf49e3f8d4c53c2169a2a2c7 MD5 | raw file
  1. <?php
  2. require('include.php');
  3. if(!xml2php("schedule")) {
  4. $smarty->assign('error_msg',"Error in language file");
  5. }
  6. /* load the date format from the js calendar */
  7. $wo_id = $_GET['wo_id'];
  8. /* check if work order closed we don't want to reschedule a work order if it's closed */
  9. if(isset($wo_id)) {
  10. $q = "SELECT WORK_ORDER_CURRENT_STATUS FROM ".PRFX."TABLE_WORK_ORDER WHERE WORK_ORDER_ID=".$db->qstr($wo_id);
  11. if(!$rs = $db->execute($q)) {
  12. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  13. exit;
  14. } else {
  15. $status = $rs->fields['WORK_ORDER_CURRENT_STATUS'];
  16. }
  17. if($status == '6') {
  18. force_page('workorder', 'view&wo_id='.$wo_id.'&error_msg=Can not set a schedule for closed work order&page_title=Work Order ID '.$wo_id.'&type=warning');
  19. } elseif ($status == '7') {
  20. force_page('workorder', 'view&wo_id='.$wo_id.'&error_msg=Can not set a schedule for closed work order&page_title=Work Order ID '.$wo_id.'&type=warning');
  21. } elseif ($status == '8') {
  22. force_page('workorder', 'view&wo_id='.$wo_id.'&error_msg=Can not set a schedule for closed work order&page_title=Work Order ID '.$wo_id.'&type=warning');
  23. } elseif ($status == '9') {
  24. force_page('workorder', 'view&wo_id='.$wo_id.'&error_msg=Can not set a schedule for closed work order&page_title=Work Order ID '.$wo_id.'&type=warning');
  25. }
  26. }
  27. $y = $VAR['y'] ;
  28. $m = $VAR['m'];
  29. $d = $VAR['d'];
  30. //$cur_date = $d."/".$m."/".$y; //added by Glen V
  31. $cur_date = $d."/".$m."/".$y;
  32. //$date_array2 = array('y'=>$y, 'd'=>$d, 'm'=>$m,);
  33. $date_array = array('y'=>$y, 'd'=>$d, 'm'=>$m, 'wo_id'=>$wo_id);
  34. $smarty->assign('date_array',$date_array);
  35. $smarty->assign('date_array2',$date_array2);
  36. /* load start time from setup */
  37. $q = "SELECT OFFICE_HOUR_START,OFFICE_HOUR_END FROM ".PRFX."SETUP";
  38. if(!$rs = $db->execute($q)) {
  39. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  40. exit;
  41. }
  42. $H = $rs->fields['OFFICE_HOUR_START'];
  43. $E = $rs->fields['OFFICE_HOUR_END'];
  44. if(empty($H) || empty($E)) {
  45. force_page('core', 'error&error_msg=You must first set a start and stop times in the control center');
  46. exit;
  47. }
  48. /* get the curent login */
  49. if(!isset($VAR['tech'])) {
  50. $tech = $_SESSION['login_id'];
  51. } else {
  52. $tech = $VAR['tech'];
  53. }
  54. /* get list of techs for dropdown*/
  55. $tech_array = display_tech($db);
  56. $smarty->assign('selected', $tech);
  57. $smarty->assign('tech',$tech_array);
  58. $smarty->assign('y',$y);
  59. $smarty->assign('m',$m);
  60. $smarty->assign('d',$d);
  61. /* this will be pulled from the database later */
  62. $business_start = mktime($H,0,0,$m,$d,$y);
  63. $business_end = mktime($E,0,0,$m,$d,$y);
  64. /* look in the database for a scheduleed event and build the calander */
  65. $q = "SELECT * FROM ".PRFX."TABLE_SCHEDULE WHERE SCHEDULE_START >= " . $business_start. " AND SCHEDULE_START <= " .$business_end. "
  66. AND EMPLOYEE_ID ='".$tech."' ORDER BY SCHEDULE_START ASC";
  67. if(!$rs = $db->Execute($q)) {
  68. force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
  69. exit;
  70. }
  71. $sch = array();
  72. while (!$rs->EOF ){
  73. array_push($sch, array(
  74. "SCHEDULE_ID" => $rs->fields["SCHEDULE_ID"],
  75. "SCHEDULE_START" => $rs->fields["SCHEDULE_START"],
  76. "SCHEDULE_END" => $rs->fields["SCHEDULE_END"],
  77. "SCHEDULE_NOTES" => $rs->fields["SCHEDULE_NOTES"],
  78. "WORK_ORDER_ID" => $rs->fields["WORK_ORDER_ID"]
  79. ));
  80. $rs->MoveNext();
  81. }
  82. /* start the calendar var */
  83. $calendar .= "<table cellpadding=\"0\" cellspacing=\"0\" class=\"olotable\">\n
  84. <tr>\n
  85. <td class=\"olohead\" width=\"75\">&nbsp;</td>\n
  86. <td class=\"olohead\" width=\"200\" align=\"center\" >$D </td>\n
  87. </tr>\n" ;
  88. $i = 0;
  89. $start = mktime($H,0,0,$m,$d,$y);
  90. //$start = mktime($H,$d,$m,$y);
  91. while($start <= $business_end){
  92. if(date("i",$start) == 0) {
  93. $calendar .= "<tr><td class=\"olotd\" nowrap>&nbsp;<b>".date("h:i a", $start)."</b></td>\n";
  94. if($start >= $sch[$i]['SCHEDULE_START'] && $start <= $sch[$i]['SCHEDULE_END']){
  95. if($start == $sch[$i]['SCHEDULE_START']){
  96. if($sch[$i]['WORK_ORDER_ID'] > 1 ) {
  97. //$calendar .= "<td class=\"menutd2\" align=\"center\" onClick=\"window.location='?page=workorder:view&wo_id=".$sch[$i]['WORK_ORDER_ID']."page_title=Work Order ID ".$sch[$i]['WORK_ORDER_ID ']."'\"><b>\n";
  98. $calendar .= "<td class=\"menutd2\" align=\"center\" onClick=\"window.location='?page=schedule:view&sch_id=".$sch[$i]['SCHEDULE_ID']."&y=".$y."&m=".$m."&d=".$d."'\">";
  99. $calendar .= "Work Order ". $sch[$i]['WORK_ORDER_ID']." - Currently scheduled for ".date("h:i a",$sch[$i]['SCHEDULE_START'])." until ".date("h:i a",$sch[$i]['SCHEDULE_END'])." ".$sch[$i]['SCHEDULE_NOTES']."\n";
  100. $calendar . "</b></td>\n";
  101. } else {
  102. $calendar .= "<td class=\"menutd2\" align=\"center\" onClick=\"window.location='?page=schedule:view&sch_id=".$sch[$i]['SCHEDULE_ID']."&y=".$y."&m=".$m."&d=".$d."'\">";
  103. $calendar .= "<b>From: ".date("h:i a",$sch[$i]['SCHEDULE_START'])." to: ".date("h:i a",$sch[$i]['SCHEDULE_END']).' '.$sch[$i]['SCHEDULE_NOTES']."\n";
  104. $calendar .= "</b></td>\n";
  105. }
  106. } else {
  107. $calendar .= "<td class=\"menutd2\">&nbsp;</td>\n";
  108. }
  109. } else {
  110. $calendar .= "<td class=\"olotd\" onClick=\"window.location='?page=schedule:new&starttime=".date("h:i a", $start)."&day=".$cur_date."&wo_id=".$wo_id."&tech=".$tech."'\"></td>\n";
  111. }
  112. $calendar .= "</tr>";
  113. } else {
  114. $calendar .= "<tr>\n<td></td>\n";
  115. if($start >= $sch[$i]['SCHEDULE_START'] && $start <= $sch[$i]['SCHEDULE_END']){
  116. if($start == $sch[$i]['SCHEDULE_START']) {
  117. if($sch[$i]['WORK_ORDER_ID'] > 1 ) {
  118. //$calendar .= "<td class=\"menutd2\" align=\"center\" onClick=\"window.location='?page=workorder:view&wo_id=".$sch[$i]['WORK_ORDER_ID']."page_title=Work Order ID ".$sch[$i]['WORK_ORDER_ID ']."'\"><b>\n";
  119. $calendar .= "<td class=\"menutd2\" align=\"center\" onClick=\"window.location='?page=schedule:view&sch_id=".$sch[$i]['SCHEDULE_ID']."&y=".$y."&m=".$m."&d=".$d."'\">";
  120. $calendar .= "Work Order ID ". $sch[$i]['WORK_ORDER_ID']." From: ".date("h:i a",$sch[$i]['SCHEDULE_START'])." To: ".date("h:i a",$sch[$i]['SCHEDULE_END'])." ".$sch[$i]['SCHEDULE_NOTES']."\n";
  121. $calendar . "</b></td>\n";
  122. } else {
  123. $calendar .= "<td class=\"menutd2\" align=\"center\" onClick=\"window.location='?page=schedule:view&sch_id=".$sch[$i]['SCHEDULE_ID']."&y=".$y."&m=".$m."&d=".$d."'\">";
  124. $calendar .= "<b>From: ".date("h:i a",$sch[$i]['SCHEDULE_START'])." To: ".date("h:i a",$sch[$i]['SCHEDULE_END']).' '.$sch[$i]['SCHEDULE_NOTES']."\n";
  125. $calendar .= "</b></td>\n";
  126. }
  127. } else {
  128. $calendar .= "<td class=\"menutd2\"><br></td>\n</tr>";
  129. }
  130. } else {
  131. $calendar .= "<td class=\"olotd4\" onClick=\"window.location='?page=schedule:new&starttime=".date("h:i a", $start) ."&day=".$cur_date."&wo_id=".$wo_id."&tech=".$tech."'\">&nbsp; ".date("h:i a", $start)."</td>\n</tr>";
  132. }
  133. }
  134. if($start == $sch[$i]['SCHEDULE_END']) {
  135. $i++;
  136. }
  137. $start = mktime(date("H",$start),date("i",$start)+15,0,$m,$d,$y);
  138. }
  139. $calendar .= "\n</table>";
  140. //Get weekdays calendar
  141. $daystore = explode("-", $cur_date);
  142. $dateline = mktime(0,0,0,$daystore[1], $daystore[0], $daystore[2]);
  143. $nextday = $cur_date+(1*60*60*24);
  144. $preday = $cur_date-(1*60*60*24);
  145. $daysub = date("w", $dateline);
  146. if ($daysub != 1)
  147. {
  148. if ($daysub == 0)
  149. {
  150. // its a sunday, so we need to append one day to it..
  151. $startweekdateline = $dateline+86400;
  152. $eventdateline = $dateline;
  153. } else {
  154. $daysubt = $daysub-1;
  155. $startweekdateline = $dateline-($daysubt*86400);
  156. }
  157. } else {
  158. $startweekdateline = $dateline;
  159. }
  160. if (empty($eventdateline))
  161. {
  162. $eventdateline = $startweekdateline;
  163. }
  164. $prevweek = $dateline-(7 * 86400);
  165. $nextweek = $dateline+(7 * 86400);
  166. if ($loadentireweek == true)
  167. {
  168. $caltype = "week";
  169. } else {
  170. $caltype = "workweek";
  171. }
  172. // ======= HEADER =======
  173. $data .= '<table border="0" cellpadding="3" cellspacing="1" width="100%" class="tborder"><tr><td class="row1"><span class="smalltext">
  174. <table border="0" cellpadding="2" cellspacing="0" width="100%"><tr><td width="1" align="left"><a href="#" onClick="javascript:switchGridTab(\'tw'. $caltype .'\', \'teamwork\');fetchData(\'tw'. $caltype .'\', \''. date("d-m-Y", $prevweek) .'\');"><img src="'. $_SWIFT["themepath"] .'icon_back.gif" border="0" align="absmiddle" /></a></td>
  175. <td width="100%" align="center"><span class="ttexttitle">[%REPTITLE%]</span></td>
  176. <td width="1" align="right"><a href="#" onClick="javascript:switchGridTab(\'tw'. $caltype .'\', \'teamwork\');fetchData(\'tw'. $caltype .'\', \''. date("d-m-Y", $nextweek) .'\');"><img src="'. $_SWIFT["themepath"] .'icon_forward.gif" border="0" align="absmiddle" /></a></td></tr></table><BR />';
  177. $data .= '<table border="0" cellpadding="0" cellspacing="0" width="100%" class="calborder">'.SWIFT_CRLF;
  178. $daylist = array();
  179. for ($ii=0; $ii<7; $ii++)
  180. {
  181. $day = array(1,2,3,4,5,6,7,8,9);
  182. if ($_schedule[$day."_enabled"] == 1 || $loadentireweek == true)
  183. {
  184. $daylist[] = $ii;
  185. }
  186. }
  187. $colspan = 2+(count($daylist)*2);
  188. if (!count($daylist))
  189. {
  190. $splitwidth = 100;
  191. } else {
  192. $splitwidth = round(100/count($daylist));
  193. }
  194. $data .= '<tr class="calhrbg"><td width="60" style="PADDING: 3px;" class="calhrbg"><span class="tabletitle">&nbsp;</span></td><td width="1" class="calendarsplitter"><img src="'. $_SWIFT["themepath"] .'space.gif" border="0" width="1" height="1" /></td>'.SWIFT_CRLF;
  195. for ($kk=0; $kk<7; $kk++)
  196. {
  197. // Sunday
  198. if ($kk == 0)
  199. {
  200. $daydateline = $startweekdateline-86400;
  201. } else if ($kk == 1) {
  202. $daydateline = $startweekdateline;
  203. } else {
  204. $daydateline = $startweekdateline+(($kk-1)*86400);
  205. }
  206. if (in_array($kk, $daylist))
  207. {
  208. if ($kk == $daylist[0])
  209. {
  210. $startdaydateline = $daydateline;
  211. } else if ($kk == $daylist[count($daylist)-1]) {
  212. $enddaydateline = $daydateline;
  213. }
  214. $data .= '<td width="'. $splitwidth .'%" align="center">'.SWIFT_CRLF;
  215. $data .= '<span class="tabletitle">'. date("D, d M", $daydateline) .'</span>'.SWIFT_CRLF;
  216. $data .= '</td>'.SWIFT_CRLF;
  217. if ($kk != $daylist[count($daylist)-1])
  218. {
  219. $data .= '<td width="1" class="calendarsplitter"><img src="'. $_SWIFT["themepath"] .'space.gif" border="0" width="1" height="1" /></td>'.SWIFT_CRLF;
  220. }
  221. }
  222. }
  223. $data .= '</tr>'.SWIFT_CRLF;
  224. for ($ii=0; $ii<24; $ii++)
  225. {
  226. $formattedhour = sprintf("%02d:00", $ii);
  227. $tdclass = "calinactivehour";
  228. $data .= '<tr class="'. $tdclass .'"><td width="60" style="PADDING: 3px;" class="calhrbg"><span class="tabletitle">'. $formattedhour .'</span></td><td width="1" class="calendarsplitter"><img src="'. $_SWIFT["themepath"] .'space.gif" border="0" width="1" height="1" /></td>';
  229. for ($kk=0; $kk<7; $kk++)
  230. {
  231. // Sunday
  232. if ($kk == 0)
  233. {
  234. $daydateline = $startweekdateline-86400;
  235. } else if ($kk == 1) {
  236. $daydateline = $startweekdateline;
  237. } else {
  238. $daydateline = $startweekdateline+(($kk-1)*86400);
  239. }
  240. $day = array(1,2,3,4,5,6,7,8,9);
  241. // echo $day."-".$_schedule[$day."_open"]."<BR />";
  242. // echo $day."-".$_schedule[$day."_close"]."<BR />";
  243. if (in_array($kk, $daylist))
  244. {
  245. $daycomp = $day."_enabled";
  246. $hrdateline = mktime($ii,0,0,date("m", $daydateline), date("d", $daydateline), date("Y", $daydateline));
  247. $opendateline = returnHourDateline($_schedule[$day."_open"], $daydateline);
  248. $closedateline = returnHourDateline($_schedule[$day."_close"], $daydateline);
  249. $tdclass = "calinactivehour";
  250. if ($_schedule[$daycomp] == "1" && $opendateline <= $hrdateline && $closedateline >= $hrdateline)
  251. {
  252. $tdclass = "calactivehour";
  253. }
  254. $verticalblocks = renderVerticalEventBlocks($_events, $hrdateline, ($hrdateline+3599), true, $_schedule);
  255. $data .= '<td width="'. $splitwidth .'%" class="'. $tdclass .'"'. iif(empty($verticalblocks), ' style="CURSOR: pointer;" onMouseOver="javascript:this.className=\'calhrbg\';" onMouseOut="javascript:this.className=\''. $tdclass .'\';" onClick="javascript:window.location.href=\'index.php?_m=teamwork&_a=insertevent&startdateline='. $hrdateline .'\';" title="'. $_SWIFT["language"]["insertevent"] .'"') .'>';
  256. // $data .= "Event: ".date("d m Y h:i:s A", $_events[8]["startdateline"])."<BR />";
  257. // $data .= "HR: ".date("d m Y h:i:s A", $hrdateline)."<BR />";
  258. // $data .= "Day: ".date("d m Y h:i:s A", $daydateline)."<BR />";
  259. $data .= $verticalblocks;
  260. $data .= '</td>';
  261. if ($kk != $daylist[count($daylist)-1])
  262. {
  263. $data .= '<td width="1" class="calendarsplitter"><img src="'. $_SWIFT["themepath"] .'space.gif" border="0" width="1" height="1" /></td>';
  264. }
  265. }
  266. }
  267. /* if ($opendateline < $hrdateline)
  268. {
  269. echo $formattedhour."Open is OK<BR />";
  270. } else {
  271. echo $formattedhour."Open Not OK<BR />";
  272. }
  273. if ($closedateline > $hrdateline)
  274. {
  275. echo $formattedhour."Close is OK<BR />";
  276. } else {
  277. echo $formattedhour."Close is NOT OK<BR />";
  278. }*/
  279. $data .= '</tr>';
  280. if ($ii != 23)
  281. {
  282. $data .= '<tr height="1" class="calendarsplitter"><td colspan="'. $colspan .'"><img src="'. $_SWIFT["themepath"] .'space.gif" border="0" width="1" height="1" /></td></tr>';
  283. }
  284. }
  285. $data .= '</table>';
  286. $data .= '</span></td></tr></table><BR />';
  287. return str_replace("[%REPTITLE%]", date("F d Y", $startdaydateline)." - ".date("F d Y", $enddaydateline), $data);
  288. /* get employee Display Name */
  289. /* feed smarty */
  290. $smarty->assign('calendar', $calendar);
  291. $smarty->assign('cur_date', $cur_date);
  292. $smarty->display('schedule'.SEP.'main.tpl');
  293. ?>