Code:
<!-- begin output of report -->
<?php
/* assemble start date */
if (isset($thisMonth)) {
$start_date = mktime(0,0,0,date("n"),1,date("Y"));
$end_date = mktime(23,59,59,date("n")+1,0,date("Y"));
}
else if (isset($lastMonth)) {
$start_date = mktime(0,0,0,date("n")-1,1,date("Y"));
$end_date = mktime(23,59,59,date("n"),0,date("Y"));
}
else if (isset($last60)) {
$start_date = mktime(0,0,0,date("n"),date("j")-60,date("Y"));
$end_date = mktime(23,59,59,date("n"),date("j"),date("Y"));
}
else if(isset ($last90)) {
$start_date = mktime(0,0,0,date("n"),date("j")-90,date("Y"));
$end_date = mktime(23,59,59,date("n"),date("j"),date("Y"));
}
elseif (isset($sbmt)) {
/* start and end dates should have been given, assign accordingly */
$start_max_day = date("j",mktime(0,0,0,$smonth+1,0,$syear));
if (! (intval($sday) <= $start_max_day)) {
$sday = $start_max_day;
}
$start_date = mktime(0,0,0,intval($smonth),intval($sday),$syear);
$end_max_day = date("j",mktime(0,0,0,intval($smonth)+1,0,$syear));
if (! (intval($eday) <= $end_max_day)) {
$eday = $end_max_day;
}
$end_date = mktime(23,59,59,intval($emonth),intval($eday),$eyear);
}
else {
/* nothing was sent to the page, so create default inputs */
$start_date = mktime(0,0,0,date("n"),1,date("Y"));
$end_date = mktime(23,59,59,date("n")+1,0,date("Y"));
$interval = "byMonth";
}
$query_date_line = "";
/* get the interval and set the date line for the query */
switch ($interval) {
case 'byMonth':
$query_date_line = "FROM_UNIXTIME(cdate, '%M, %Y') as order_date, ";
$query_group_line = "GROUP BY order_date";
break;
case 'byWeek':
$query_date_line .= "WEEK(FROM_UNIXTIME(cdate, '%Y-%m-%d')) as week_number, ";
$query_date_line .= "FROM_UNIXTIME(cdate, '%M %d, %Y') as order_date, ";
$query_group_line = "GROUP BY week_number";
break;
case 'byDay':
/* query for days */
$query_date_line = "FROM_UNIXTIME(cdate, '%M %d, %Y') as order_date, ";
$query_group_line = "GROUP BY order_date";
break;
default:
$query_date_line = '';
$query_group_line = '';
break;
}
/* better way of setting up query */
$q = "SELECT ";
$r = $q;
$u = $q;
$query_between_line = "WHERE cdate BETWEEN '" . $start_date . "' AND '" . $end_date . "' ";
if ($query_date_line) {
$q .= $query_date_line;
}
$q .= "FROM_UNIXTIME(cdate, '%Y%m%d') as date_num, ";
$q .= "COUNT(order_id) as number_of_orders, ";
$q .= "SUM(order_subtotal) as revenue ";
$q .= "FROM #__{vm}_orders ";
$q .= $query_between_line;
if ($query_group_line) {
$q .= $query_group_line;
}
$q .= " ORDER BY date_num ASC";
/** setup items sold query */
if ($query_date_line) {
$r .= $query_date_line;
}
$r .= "FROM_UNIXTIME(cdate, '%Y%m%d') as date_num, ";
$r .= "SUM(product_quantity) as items_sold ";
$r .= "FROM #__{vm}_order_item ";
$r .= $query_between_line;
if ($query_group_line) {
$r .= $query_group_line;
}
$r .= " ORDER BY date_num ASC";
// added for v0.2 PRODUCT LISTING QUERY!
if (!empty($show_products)) {
/* setup end of product listing query */
$u .= "product_name, product_sku, ";
if ($query_date_line) {
$u .= str_replace ("cdate", "#__{vm}_order_item.cdate", $query_date_line);
}
$u .= "FROM_UNIXTIME(#__{vm}_order_item.cdate, '%Y%m%d') as date_num, ";
$u .= "SUM(product_quantity) as items_sold ";
$u .= "FROM #__{vm}_order_item, #__{vm}_orders, #__{vm}_product ";
$u .= str_replace ("cdate", "#__{vm}_order_item.cdate", $query_between_line);
$u .= "AND #__{vm}_orders.order_id=#__{vm}_order_item.order_id ";
$u .= "AND #__{vm}_order_item.product_id=#__{vm}_product.product_id ";
$u .= "GROUP BY product_sku, product_name, order_date ";
$u .= " ORDER BY date_num, product_name ASC";
$dbpl = new ps_DB;
$dbpl->query($u);
}
/* setup the db and query */
$db = new ps_DB;
$dbis = new ps_DB;
$db->query($q);
$dbis->query($r);
?>
<h4><?php
echo $VM_LANG->_('PHPSHOP_RB_REPORT_FOR') ." ";
echo date("M j, Y", $start_date)." --> ". date("M j, Y", $end_date);
?></h4>
<table class="adminlist">
<tr>
<th><?php echo $VM_LANG->_('PHPSHOP_RB_DATE') ?></th>
<th><?php echo $VM_LANG->_('PHPSHOP_RB_ORDERS') ?></th>
<th><?php echo $VM_LANG->_('PHPSHOP_RB_TOTAL_ITEMS') ?></th>
<th><?php echo $VM_LANG->_('PHPSHOP_RB_REVENUE') ?></th>
</tr>
<?php
while ($db->next_record()) {
$dbis->next_record();
if ($i++ % 2) {
$bgcolor='row0';
}
else {
$bgcolor='row1';
}
?>
<tr class="<?php echo $bgcolor ?>">
<td><?php $db->p("order_date"); ?></td>
<td><?php $db->p("number_of_orders"); ?></td>
<td><?php $dbis->p("items_sold"); ?></td>
<td><?php $db->p("revenue"); ?> </td>
</tr>
<?php
$weekNum = 0;//CT.need this for weekly viewing of products
// BEGIN product listing
if (!empty($show_products)) {
?>
<tr><td> </td><td colspan="2">
<table class="adminlist">
<tr>
<td colspan="3" align="left"><h3><?php echo $VM_LANG->_('PHPSHOP_RB_PRODLIST') ?></h3></td>
</tr>
<tr bgcolor="#ffffff">
<th>#</th>
<th><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_NAME_TITLE') ?></th>
<th><?php echo $VM_LANG->_('PHPSHOP_CART_QUANTITY') ?></th>
</tr>
<?php
$i = 1;
$has_next = $dbpl->next_record();
while ( $has_next) {
//CT
$showLine = 0;
if ($interval == "byWeek"){
if( $dbpl->f("order_date") == $db->f("order_date") ) { $weekNum = $dbpl->f("week_number");}
if ( $dbpl->f("week_number") == $weekNum ){ $showLine = 1;}
//echo $dbpl->f("week_number")."-".$weekNum."<br/>";
}else{
if( $dbpl->f("order_date") == $db->f("order_date")) { $showLine = 1;}
}
if ($showLine == 1){
//end CT
echo "<tr bgcolor=\"#ffffff\">\n";
echo "<td>".$i++."</td>\n";
echo '<td align="left">' . $dbpl->f("product_name") . " (" . $dbpl->f("product_sku") . ")</td>\n";
echo '<td align="left">' . $dbpl->f("items_sold") . "</td>\n";
echo "</tr>\n";
}
$has_next = $dbpl->next_record();
}
$dbpl->reset();
?>
<tr><td colspan="3"><hr width="85%"></td></tr>
</table>
</td><td> </td>
</tr>
<?php
}
// END product listing
} ?>
</table>
<!-- end output of report -->
Ist das irgendwie möglich?
Lesezeichen