$subfleets[75]["id"] = 75; $subfleets[75]["name"] = "XB 711"; $subfleets[75]["master"] = 77; $subfleets[75]["count"] = 0; // } // } // Fetch the report and it's results { $reporturl = "http://login.max.manline.co.za/m4/2/api_request/Report/export?report=87&responseFormat=csv&numberOfRowsPerPage=10000"; print $reporturl . "<br>"; $fileParser = new FileParser($reporturl); $fileParser->setCurlFile("fleetPositions.csv"); $reportresults = $fileParser->parseFile(); if ($reportresults === false) { print "There was an error!"; print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return; print "<br>"; } // } $fleetlist = array(); foreach ($reportresults as $memberkey => $memberval) { $fleetid = $memberval["Fleet Id"]; $truckid = $memberval["Truck Id"]; $fleetlist[$fleetid] = $memberval["Fleet"]; $mastercheck = array_key_exists($fleetid, $masterfleets); if ($mastercheck == true) { $masterfleets[$fleetid]["trucks"][$truckid]["id"] = $truckid; $masterfleets[$fleetid]["trucks"][$truckid]["name"] = $memberval["Truck"]; }
function fetchRightDays() { // Preparation { require_once BASE . "basefunctions/baseapis/FileParser/FileParser.php"; if ($_POST["conf"]) { $conf = $_POST["conf"]; // Build date strings for CURL pull { $startday = substr($conf["startdate"], 0, 2); $startmonth = substr($conf["startdate"], 3, 2); $startyear = substr($conf["startdate"], 6, 4); $startstring = $startyear . "-" . $startmonth . "-" . $startday; $stopday = substr($conf["stopdate"], 0, 2); $stopmonth = substr($conf["stopdate"], 3, 2); $stopyear = substr($conf["stopdate"], 6, 4); $stopstring = $stopyear . "-" . $stopmonth . "-" . $stopday; // } // Fetch the report and it's results { $reporturl = "http://login.max.manline.co.za/m4/2/api_request/Report/export?report=26&responseFormat=csv&Start_Date=" . $startstring . "&Stop_Date=" . $stopstring . "&numberOfRowsPerPage=10000"; $fileParser = new FileParser($reporturl); $fileParser->setCurlFile("greenmiledays" . date("U") . ".csv"); $reportresults = $fileParser->parseFile(); if ($reportresults === false) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return; print "<br>"; } // } if ($reportresults) { // Create and process the start of the csv file { $destination = FIRSTBASE . "/displaycase/greenmiledays/"; $destname = $startstring . "-" . $stopstring; $destname = str_replace(".csv", "", $destname); $destname .= ".csv"; $desthandle = fopen($destination . $destname, "w"); foreach ($reportresults[1] as $header => $discard) { fwrite($desthandle, $header . ","); } fwrite($desthandle, "Load Diff,Offload Diff\r\n"); // } foreach ($reportresults as $reskey => $resval) { foreach ($resval as $column => $value) { fwrite($desthandle, $value . ","); } // Loading Difference { $loadplanned = $resval["Planned Loading Arrival"]; $loadactual = $resval["Loading Arrival"]; if ($loadactual != "(none)") { $plannedday = substr($loadplanned, 8, 2); $plannedmonth = substr($loadplanned, 5, 2); $plannedyear = substr($loadplanned, 0, 4); $actualday = substr($loadactual, 8, 2); $actualmonth = substr($loadactual, 5, 2); $actualyear = substr($loadactual, 0, 4); if ($plannedmonth < $actualmonth) { $monthdays = date("t", mktime(0, 0, 0, $plannedmonth, $plannedday, $plannedyear)); $loaddiff = $actualday + $monthdays - $plannedday; } else { if ($plannedmonth > $actualmonth) { $monthdays = date("t", mktime(0, 0, 0, $actualmonth, $actualday, $actualyear)); $loaddiff = $plannedday + $monthdays - $actualday; } else { if ($plannedday < $actualday) { $loaddiff = $actualday - $plannedday; } else { $loaddiff = $plannedday - $actualday; } } } $diffyear = $plannedyear - $actualyear; } else { $loaddiff = -1; } $reportresults[$reskey]["Load Diff"] = $loaddiff; // } // Offoading Difference { $offloadplanned = $resval["Planned Offloading Arrival"]; $offloadactual = $resval["Offloading Arrival"]; if ($offloadactual != "(none)") { $plannedday = substr($offloadplanned, 8, 2); $plannedmonth = substr($offloadplanned, 5, 2); $plannedyear = substr($offloadplanned, 0, 4); $actualday = substr($offloadactual, 8, 2); $actualmonth = substr($offloadactual, 5, 2); $actualyear = substr($offloadactual, 0, 4); if ($plannedmonth < $actualmonth) { $monthdays = date("t", mktime(0, 0, 0, $plannedmonth, $plannedday, $plannedyear)); $offloaddiff = $actualday + $monthdays - $plannedday; } else { if ($plannedmonth > $actualmonth) { $monthdays = date("t", mktime(0, 0, 0, $actualmonth, $actualday, $actualyear)); $offloaddiff = $plannedday + $monthdays - $actualday; } else { if ($plannedday < $actualday) { $offloaddiff = $actualday - $plannedday; } else { $offloaddiff = $plannedday - $actualday; } } } $diffyear = $plannedyear - $actualyear; } else { $offloaddiff = -1; } $reportresults[$reskey]["Offload Diff"] = $offloaddiff; // } fwrite($desthandle, $loaddiff . "," . $offloaddiff . "\r\n"); // Add details to csv } } fclose($desthandle); // close the csv } // } maxineTop("Header"); print "<form name='dayreportform' action='index.php?mode=maxine/index&action=fetchrightdays' method='post'>"; openHeader(1200); maxineButton("Submit", "dayreportform.submit();", 2); if ($reportresults) { maxineButton("Download", "goTo(\"" . BASE . "/basefunctions/downloadcsv.php?filename=" . $destname . "&filepath=" . $destination . "\");", 2); } maxineButton("Back", "goTo(\"index.php?mode=maxine/index&action=firstmenu\");", 2); closeHeader(); print "<div class='tray' style='width:1200px;'>"; // Date Select { openSubbar(500); print "Date Select"; closeSubbar(); print "<div class='standard content1' style='width:500px;'>"; print "<span style='width:50%; display:inline-block;'>"; print "Start Date"; print "<input name='conf[startdate]' id='startdate' value='" . $conf["startdate"] . "' readonly style='width: 110px; text-align: center;'>"; print "<img src='" . BASE . "/images/calendar.png' onClick='displayDatePicker(\"conf[startdate]\", this, \"dmy\", \"\");' />"; print "</span>"; print "<span style='width:50%; display:inline-block;'>"; print "Stop Date"; print "<input name='conf[stopdate]' id='stopdate' value='" . $conf["stopdate"] . "' readonly style='width: 110px; text-align: center;'>"; print "<img src='" . BASE . "/images/calendar.png' onClick='displayDatePicker(\"conf[stopdate]\", this, \"dmy\", \"\");' />"; print "</span>"; print "</div>"; // } if ($reportresults) { openSubbar(1200); print "Results"; closeSubbar(); print "<table class='standard' style='width:1200px;'>"; // Headers { print "<tr class='heading' style='font-size:10px;'>"; foreach ($reportresults[1] as $header => $discard) { print "<td>"; print $header; print "</td>"; } print "</tr>"; // } foreach ($reportresults as $reskey => $resval) { print "<tr class='content1' style='height:38px;'>"; foreach ($resval as $column => $value) { print "<td>"; print "<p class='standard' style='color:BLACK;'>" . $value . "</font>"; print "</td>"; } print "</tr>"; } print "</table>"; } print "</div>"; print "</form>"; maxineBottom(); }
/** refuel($test = FALSE) * get open and missing refuel data * @param BOOL $test is this a request for test platform? * @return TRUE on success. FALSE otherwise */ public function refuel($test = FALSE) { $fleets = $this->_incomefleets; $data = (array) array(); foreach ($fleets as $val) { $data[$val['maxid']]['fleet_id'] = $val['maxid']; if (array_key_exists('fleets', $val)) { $sql = (string) 'SELECT SUM(`fleet_count`) AS `fleet_count`, SUM(`missing_count`) AS `missing_count`, SUM(`open_count`) AS `open_count`, SUM(`total_open_count`) AS `total_open_count` '; $sql .= 'FROM `refuels` '; $fleetsToLoop = (array) array(); foreach ($val['fleets'] as $ook) { $fleetsToLoop[] = $ook[0]; } $sql .= 'WHERE `fleet_id` IN(' . implode($fleetsToLoop, ',') . ')'; $row = sqlQuery($sql); if ($row === FALSE) { continue; } $data[$val['maxid']]['fleet_count'] = $row[0]['fleet_count']; $data[$val['maxid']]['missing_count'] = $row[0]['missing_count']; $data[$val['maxid']]['open_count'] = $row[0]['open_count']; $data[$val['maxid']]['total_open_count'] = $row[0]['total_open_count']; } else { //: Get fleet count $trucks = $this->_apiurl . "report=145&responseFormat=csv&Fleet=" . $val['maxid'] . "&Start%20Date=" . date("Y-m-d") . "&Stop%20Date=" . date("Y-m-d", strtotime("+1 day")); if ($test === TRUE) { $trucks = preg_replace('/https\\:\\/\\/login\\.max\\.bwtsgroup\\.com/', 'http://max.mobilize.biz', $trucks); } $fileParser = new FileParser($trucks); $fileParser->setCurlFile("trucks." . $val['maxid'] . ".csv"); $trucks = $fileParser->parseFile(); if ($trucks === FALSE) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return FALSE; } if (is_array($trucks) === FALSE) { return FALSE; } $data[$val['maxid']]['fleet_count'] = count($trucks); //: End $refuels = $this->_apiurl . "report=175&responseFormat=csv&Fleet=" . $val['maxid'] . "&Start%20Date=" . date("Y-m-d", strtotime('-30 days')) . "&Stop%20Date=" . date("Y-m-01", strtotime("+1 month")); if ($test === TRUE) { $refuels = preg_replace('/https\\:\\/\\/login\\.max\\.bwtsgroup\\.com/', 'http://max.mobilize.biz', $refuels); } print $refuels . PHP_EOL; $fileParser = new FileParser($refuels); $fileParser->setCurlFile("missingrefuels" . $val['maxid'] . ".csv"); $missingrefuels = $fileParser->parseFile(); if ($missingrefuels === FALSE) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return FALSE; } if (is_array($missingrefuels) === FALSE) { return FALSE; } // print_r($missingrefuels); $i = (int) 0; //: Missing Refuels foreach ($missingrefuels as $key => $value) { //: Checks if ($val['maxid'] == 73) { print_r($value); } if ($value['Odometer'] === '(none)' || $value['Odometer'] === '') { continue; } if (substr($value['Variance'], 0, 1) !== '-') { continue; } //: End if ($value['Variance'] * -1 >= $val['kms_limit']) { $i++; } } $data[$val['maxid']]['missing_count'] = $i; //: End //: Open Refuels $refuels = $this->_apiurl . "report=174&responseFormat=csv&Fleet=" . $val['maxid'] . "&Start%20Date=" . date("Y-m-d", strtotime('-30 days')) . "&Stop%20Date=" . date("Y-m-01", strtotime("+1 month")); if ($test === TRUE) { $refuels = preg_replace('/https\\:\\/\\/login\\.max\\.bwtsgroup\\.com/', 'http://max.mobilize.biz', $refuels); } print $refuels . PHP_EOL; $fileParser = new FileParser($refuels); $fileParser->setCurlFile("openrefuels" . $val['maxid'] . ".csv"); $openrefuels = $fileParser->parseFile(); if ($openrefuels === FALSE) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return FALSE; } if (is_array($openrefuels) === FALSE) { return FALSE; } // print_r($openrefuels); $cnt = (int) 0; foreach ($openrefuels as $key => $value) { //: Convert the refuel time difference into seconds $refuel_time = (int) 0; $split = preg_split('/\\s/', $value['Duration Open (Refuel Time)']); if (array_key_exists(0, $split)) { if (substr($split[0], -1, 1) === 'd') { //: Days $refuel_time += 24 * 60 * 60 * (int) $split[0]; } else { //: Hours $refuel_time += 60 * 60 * (int) $split[0]; } } if (array_key_exists(1, $split)) { //: Hours $refuel_time += 60 * 60 * (int) $split[0]; } // print('refuel time: '.$refuel_time.PHP_EOL); if ($refuel_time >= $val['open_time']) { $cnt++; } //: End } $data[$val['maxid']]['total_open_count'] = count($openrefuels); $data[$val['maxid']]['open_count'] = $cnt; //: End } } foreach ($data as $key => $val) { $record = sqlPull(array("table" => "refuels", "where" => "fleet_id=" . $key, "customkey" => "fleet_id")); if (array_key_exists($key, $record) && $record[$key]) { sqlCommit(array("table" => "refuels", "where" => "fleet_id=" . $key, "fields" => $val)); } else { sqlCreate(array("table" => "refuels", "fields" => $val)); } print '|'; } }
/** fleetdayHandler::importBudget() * Import this months budget data * @author Feighen Oosterbroek * @author feighen@manlinegroup.com * @return FALSE on failure NULL otherwise */ public function importBudget() { for ($i = 1; $i <= date("t"); $i++) { foreach ($this->_incomefleets as $incfleetkey => $incfleetval) { $blackoutcount = (double) 0; $daybudget = (double) 0; $daybudkms = (double) 0; $daybudgetcontrib = (double) 0; //: Get the data $budgeturl = $this->_apiurl . "report=85&responseFormat=csv&Start_Date=" . date("Y-m-" . (strlen($i) === 1 ? "0" . $i : $i)) . "&Stop_Date=" . ($i == date("t") ? date("Y-" . date("m", strtotime("+1 month")) . "-01") : date("Y-m-" . (strlen($i) === 1 ? "0" . ($i + 1) : $i + 1))) . "&Fleet=" . $incfleetval["id"]; $fileParser = new FileParser($budgeturl); $fileParser->setCurlFile("budget" . $incfleetval["id"] . ".csv"); $budgetdata = $fileParser->parseFile(); if ($budgetdata === false) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return; print "<pre style='font-family:verdana;font-size:13'>errors"; print_r($fileParser->getErrors()); print "</pre>"; print "<br />"; } //: End //: Collate data foreach ($budgetdata as $budgetkey => $budgetval) { $truckbudget = isset($budgetval["Income"]) ? str_replace(",", "", $budgetval["Income"]) : ""; $truckbudget = str_replace("R", "", $truckbudget); $daybudget += $truckbudget; $truckbudgetcontrib = isset($budgetval["Contribution"]) ? str_replace(",", "", $budgetval["Contribution"]) : ""; $truckbudgetcontrib = str_replace("R", "", $truckbudgetcontrib); $daybudgetcontrib += $truckbudgetcontrib; $daybudkms += isset($budgetval["Kms"]) ? $budgetval["Kms"] : 0; // Calculate the number of trucks per fleet that have a budget and no trip if (isset($budgetval["Blackout Status"]) && ($budgetval["Blackout Status"] == "1" || $budgetval["Blackout Status"] == "Yes")) { if ($truckbudget > 0) { $blackoutcount++; } } } //: End //: Insert or update $fleetscore = (array) array(); $fleetscore["fleetid"] = $incfleetval["id"]; $fleetscore["budget"] = $daybudget; $fleetscore["budgetcontrib"] = $daybudgetcontrib; $fleetscore["budkms"] = $daybudkms; $fleetscore["day"] = $i; $fleetscore["date"] = strtotime(date("Y-m-" . (strlen($i) === 1 ? "0" . $i : $i))); $fleetscore["updated"] = date("U"); $fleetscore["blackouts"] = $blackoutcount; //: check to see if this data needs to be updated or if it can just be inserted $record = sqlPull(array("onerow" => TRUE, "table" => "fleet_scores", "where" => "`fleetid`=" . $fleetscore["fleetid"] . " AND `date`=" . $fleetscore["date"])); if (isset($record) && $record) { //: Update sqlCommit(array("table" => "fleet_scores", "where" => "id=" . $record["id"], "fields" => $fleetscore)); } else { //: Insert sqlCreate(array("table" => "fleet_scores", "fields" => $fleetscore)); } //: End } /* //: Testing if ($i > 1) { break; } //: End */ } }
function getRightTimes($startstring, $stopstring) { // Fetch the report and it's results { $reporturl = "http://login.max.manline.co.za/m4/2/api_request/Report/export?report=26&responseFormat=csv&Start_Date=" . $startstring . "&Stop_Date=" . $stopstring . "&numberOfRowsPerPage=10000"; $fileParser = new FileParser($reporturl); $fileParser->setCurlFile("greenmiledays.csv"); $reportresults = $fileParser->parseFile(); if ($reportresults === false) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return; print "<br>"; } // } $loadcount = 0; $offloadcount = 0; $rightdayload = 0; $righthourload = 0; $rightdayoffload = 0; $righthouroffload = 0; foreach ($reportresults as $reskey => $resval) { // Loading Difference { $loadhourdiff = $resval["Loading Difference (hrs)"]; $loaddaydiff = calcDaysBetweenPlannedVsActual($resval["Planned Loading Arrival"], $resval["Loading Arrival"]); //print($resval["Planned Loading Arrival"]." ".$resval["Loading Arrival"]."<br>"); //print($loadhourdiff." ".$loaddaydiff.""); if ($loaddaydiff >= 0) { $loadcount++; if ($loadhourdiff < 4 && $loadhourdiff > -4) { //print(" Load Hour +"); $righthourload++; } if ($loaddaydiff == 0) { $rightdayload++; //print(" Load Day +"); } } // } // Offoading Difference { $offloadhourdiff = $resval["Offloading Difference (hrs)"]; $offloaddaydiff = calcDaysBetweenPlannedVsActual($resval["Planned Offloading Arrival"], $resval["Offloading Arrival"]); if ($offloaddaydiff >= 0) { $offloadcount++; if ($offloadhourdiff < 4 && $offloadhourdiff > -4) { $righthouroffload++; } if ($offloaddaydiff == 0) { $rightdayoffload++; } } // } } if ($loadcount > 0 && $offloadcount > 0) { $result["loadtime"] = round($righthourload / $loadcount * 100, 2); $result["loadday"] = round($rightdayload / $loadcount * 100, 2); $result["offloadtime"] = round($righthouroffload / $offloadcount * 100, 2); $result["offloadday"] = round($rightdayoffload / $offloadcount * 100, 2); } else { $result["loadday"] = 0; $result["loadtime"] = 0; $result["offloadday"] = 0; $result["offloadtime"] = 0; } return $result; }
/** fleetdayHandler::importBudget($fleet = NULL) * Import this months budget data * @author Feighen Oosterbroek * @author feighen@manlinegroup.com * @param $fleet INT Which do we want import? * @return FALSE on failure NULL otherwise */ public function importBudget($fleet = NULL) { for ($i = 1; $i <= date("t"); $i++) { foreach ($this->_incomefleets as $incfleetkey => $incfleetval) { if (isset($fleet) && $fleet) { if ($fleet != $incfleetval["id"]) { continue; } } if (array_key_exists('fleets', $incfleetval)) { $fleetscore["fleetid"] = $incfleetval["id"]; $fleetscore["budget"] = (double) 0; $fleetscore["budgetcontrib"] = (double) 0; $fleetscore["budkms"] = (double) 0; $fleetscore["blackouts"] = (double) 0; $fleetscore["day"] = $i; $fleetscore["date"] = strtotime(date("Y-m-" . (strlen($i) === 1 ? "0" . $i : $i))); foreach ($incfleetval['fleets'] as $key => $val) { //print_r($val); $record = sqlPull(array("onerow" => TRUE, "table" => "fleet_scores", "where" => "`fleetid`=" . $val[0] . " AND `date`=" . strtotime(date("Y-m-" . (strlen($i) === 1 ? "0" . $i : $i))))); print_r($record); if ($record) { $fleetscore["budget"] += $record['budget']; $fleetscore["budgetcontrib"] += $record['budgetcontrib']; $fleetscore["budkms"] += $record['budkms']; $fleetscore["blackouts"] += $record['blackouts']; } } // print_r($fleetscore); } else { //: Skip t24 entries if (array_key_exists("t24", $incfleetval)) { continue; } $blackoutcount = (double) 0; $daybudget = (double) 0; $daybudkms = (double) 0; $daybudgetcontrib = (double) 0; //: Get the data $startDate = (string) date("Y-m-" . (strlen($i) === 1 ? "0" . $i : $i)); $stopDate = (string) ""; if ($i == date("t") && date("m") == 12) { $stopDate = date("Y-m-d", mktime(0, 0, 0, 1, 1, date("Y") + 1)); } elseif ($i == date("t")) { $stopDate = date("Y-" . date("m", strtotime("+1 month")) . "-01"); } else { if ($i === 9) { $stopDate = date("Y-m-" . (strlen($i) === 1 ? $i + 1 : $i + 1)); } else { $stopDate = date("Y-m-" . (strlen($i) === 1 ? "0" . ($i + 1) : $i + 1)); } } $budgeturl = $this->_apiurl . "report=85&responseFormat=csv&Start_Date=" . $startDate . "&Stop_Date=" . $stopDate . "&Fleet=" . $incfleetval["maxid"]; print "budgeturl: " . $budgeturl . PHP_EOL; $fileParser = new FileParser($budgeturl); $fileParser->setCurlFile("budget" . $incfleetval["id"] . date('d', strtotime($startDate)) . ".csv"); $budgetdata = $fileParser->parseFile(); if ($budgetdata === false) { print "<pre style='font-family:verdana;font-size:13'>"; print_r($fileParser->getErrors()); print "</pre>"; return; print "<pre style='font-family:verdana;font-size:13'>errors"; print_r($fileParser->getErrors()); print "</pre>"; print "<br />"; } //: End //: Collate data foreach ($budgetdata as $budgetkey => $budgetval) { if (array_key_exists('trucks', $incfleetval)) { if (array_key_exists('Truck', $budgetval)) { if (in_array($budgetval['Truck'], $incfleetval['trucks']) === FALSE) { continue; } } } $truckbudget = isset($budgetval["Income"]) ? str_replace(",", "", $budgetval["Income"]) : ""; $truckbudget = str_replace("R", "", $truckbudget); $daybudget += $truckbudget; $truckbudgetcontrib = isset($budgetval["Contribution"]) ? str_replace(",", "", $budgetval["Contribution"]) : ""; $truckbudgetcontrib = str_replace("R", "", $truckbudgetcontrib); $daybudgetcontrib += $truckbudgetcontrib; $daybudkms += isset($budgetval["Kms"]) ? $budgetval["Kms"] : 0; // Calculate the number of trucks per fleet that have a budget and no trip if (isset($budgetval["Blackout Status"]) && ($budgetval["Blackout Status"] == "1" || $budgetval["Blackout Status"] == "Yes")) { if ($truckbudget > 0) { $blackoutcount++; } } } //: End //: Insert or update $fleetscore = (array) array(); $fleetscore["fleetid"] = $incfleetval["id"]; $fleetscore["budget"] = $daybudget; $fleetscore["budgetcontrib"] = $daybudgetcontrib; $fleetscore["budkms"] = $daybudkms; $fleetscore["day"] = $i; $fleetscore["date"] = strtotime(date("Y-m-" . (strlen($i) === 1 ? "0" . $i : $i))); # $fleetscore["updated"] = date("U"); $fleetscore["blackouts"] = $blackoutcount; } //: check to see if this data needs to be updated or if it can just be inserted $record = sqlPull(array("onerow" => TRUE, "table" => "fleet_scores", "where" => "`fleetid`=" . $fleetscore["fleetid"] . " AND `date`=" . $fleetscore["date"])); if (isset($record) && $record) { //: Update sqlCommit(array("table" => "fleet_scores", "where" => "id=" . $record["id"], "fields" => $fleetscore)); } else { //: Insert sqlCreate(array("table" => "fleet_scores", "fields" => $fleetscore)); } //: End } /* //: Testing if ($i > 1) { break; } //: End */ } }