Show reports covering the period from "; /* Default to last month. */ list($y, $m, $d) = explode('-', date('Y-m-d', time())); $latest = "$y-$m-$d"; $now = mktime(0, 0, 0, $m, $d, $y); $first = mktime(0, 0, 0, $m, 1, $y); $last = $first - 86400; $date = date('Y-m-d', $last); if (is_null($to)) $to = $date; list($y, $m, $d) = explode('-', $date); $first = mktime(0, 0, 0, $m, 1, $y); if (is_null($from)) $from = date('Y-m-d', $first); $date = $first; for ($i = 0; $i < 2; $i++) { $date -= 86400; list ($y, $m, $d) = explode('-', date('Y-m-d', $date)); $date = mktime(0, 0, 0, $m, 1, $y); } $oldest = date('Y-m-d', $date); $then = $date; echo " to \n"; submit("show_reports", "Show"); end_form(); } function check_report_dates($from, $to) { list($y, $m, $d) = explode('-', $from); if (! checkdate($m, $d, $y)) { echo "
Invalid report start date!
\n"; return false; } $start = mktime(0, 0, 0, $m, $d, $y); list($y, $m, $d) = explode('-', $to); if (! checkdate($m, $d, $y)) { echo "Invalid report end date!
\n"; return false; } $end = mktime(0, 0, 0, $m, $d, $y); if ($end < $start) { echo "Report end date is earlier than start date!
\n"; return false; } return true; } function show_order_report(&$order_state_ids) { echo "0 | Week %d | \n", $missing_week); echo "
%d | Week %d | \n", $row->getCount(), $week); echo "
$total | Total | \n"; echo "
%d | %s | \n", $row->getCount(), htmlspecialchars($parcel_sizes[$row->getSize() >> 1])); $total += $row->getCount(); echo "
$total | Total | \n"; echo "
%d | %s | \n", $row->getCount(), htmlspecialchars($requester->getDisplayname())); $total += $row->getCount(); echo "
$total | Total | \n"; echo "
Showing reports for the period $from to $to.
\n"; /* Get orders. */ $order_ids = array(); $order_state_ids = array(); /* XXX: Order 51 changed to state delivered in May then updated in June. */ $dbh = Propel::getConnection(); $sth = $dbh->prepare("select * from OrderState o where updated=(select min(updated) from OrderState where order_id=o.order_id and state & " . $GLOBALS['STATE_DELIVERED'] . ") and updated between '$from' and '$to'"); $sth->execute(); $order_states = OrderStatePeer::populateObjects($sth); foreach ($order_states as $order_state) { $order_ids[] = $order_state->getOrderId(); $order_state_ids[] = $order_state->getId(); } $q = new OrderQuery; $q->filterById($order_ids); if (! count($order_ids)) { echo "No results!
\n"; return; } show_order_report($order_state_ids); show_size_report($order_ids); show_requester_report($order_ids); } if (count($parameters)) { if ($parameters[0] == "from") { $from = $parameters[1]; if ($parameters[2] == "to") $to = $parameters[3]; show_reports($from, $to); } } show_reports_form($from, $to); ?>