1<?php 2 3 4include('includes/session.php'); 5$Title = _('Sales Report'); 6include('includes/header.php'); 7 8 9echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/transactions.png" title="' . _('Sales Report') . '" alt="" />' . ' ' . _('Sales Report') . '</p>'; 10echo '<div class="page_help_text">' . _('Select the parameters for the report') . '</div><br />'; 11 12if (!isset($_POST['DisplayData'])){ 13 /* then assume to display daily - maybe wrong to do this but hey better than reporting an error?*/ 14 $_POST['DisplayData']='Weekly'; 15} 16if (!isset($_POST['DateRange'])){ 17 /* then assume report is for This Month - maybe wrong to do this but hey better than reporting an error?*/ 18 $_POST['DateRange']='ThisMonth'; 19} 20 21echo '<form id="Form1" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '" method="post">'; 22echo '<div>'; 23echo '<input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />'; 24 25echo '<table cellpadding="2" class="selection"> 26 <tr><td valign="top"> 27 <table>'; 28 29echo '<tr><th colspan="2" class="centre">' . _('Date Selection') . '</th> 30 </tr> 31 <tr> 32 <td>' . _('Custom Range') . ':</td> 33 <td><input type="radio" name="DateRange" value="Custom" '; 34if ($_POST['DateRange']=='Custom'){ 35 echo 'checked="checked"'; 36} 37echo ' onchange="ReloadForm(Form1.ShowSales)"/></td> 38 </tr> 39 <tr> 40 <td>' . _('This Week') . ':</td> 41 <td><input type="radio" name="DateRange" value="ThisWeek" '; 42if ($_POST['DateRange']=='ThisWeek'){ 43 echo 'checked="checked"'; 44} 45echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 46 </tr> 47 <tr> 48 <td>' . _('This Month') . ':</td> 49 <td><input type="radio" name="DateRange" value="ThisMonth" '; 50if ($_POST['DateRange']=='ThisMonth'){ 51 echo 'checked="checked"'; 52} 53echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 54 </tr> 55 <tr> 56 <td>' . _('This Quarter') . ':</td> 57 <td><input type="radio" name="DateRange" value="ThisQuarter" '; 58if ($_POST['DateRange']=='ThisQuarter'){ 59 echo 'checked="checked"'; 60} 61echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 62 </tr>'; 63if ($_POST['DateRange']=='Custom'){ 64 if (!isset($_POST['ToDate'])){ 65 $_POST['FromDate'] = Date($_SESSION['DefaultDateFormat'],mktime(1,1,1,Date('m')-12,Date('d')+1,Date('Y'))); 66 $_POST['ToDate'] = Date($_SESSION['DefaultDateFormat']); 67 } 68 echo '<tr> 69 <td>' . _('Date From') . ':</td> 70 <td><input type="text" class="date" name="FromDate" maxlength="10" size="11" value="' . $_POST['FromDate'] . '" /></td> 71 </tr>'; 72 echo '<tr> 73 <td>' . _('Date To') . ':</td> 74 <td><input type="text" class="date" name="ToDate" maxlength="10" size="11" value="' . $_POST['ToDate'] . '" /></td> 75 </tr>'; 76} 77echo '</table> 78 </td><td valign="top"> 79 <table>'; 80 81echo '<tr><th colspan="2" class="centre">' . _('Display Data') . '</th> 82 </tr> 83 <tr> 84 <td>' . _('Daily') . ':</td> 85 <td><input type="radio" name="DisplayData" value="Daily" '; 86if ($_POST['DisplayData']=='Daily'){ 87 echo 'checked="checked"'; 88} 89echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 90 </tr> 91 <tr> 92 <td>' . _('Weekly') . ':</td> 93 <td><input type="radio" name="DisplayData" value="Weekly" '; 94if ($_POST['DisplayData']=='Weekly'){ 95 echo 'checked="checked"'; 96} 97echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 98 </tr> 99 <tr> 100 <td>' . _('Monthly') . ':</td> 101 <td><input type="radio" name="DisplayData" value="Monthly" '; 102if ($_POST['DisplayData']=='Monthly'){ 103 echo 'checked="checked"'; 104} 105echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 106 </tr> 107 <tr> 108 <td>' . _('Quarterly') . ':</td> 109 <td><input type="radio" name="DisplayData" value="Quarterly" '; 110if ($_POST['DisplayData']=='Quarterly'){ 111 echo 'checked="checked"'; 112} 113echo ' onchange="ReloadForm(Form1.ShowSales)" /></td> 114 </tr>'; 115echo '</table> 116 </td></tr> 117 </table>'; 118 119 120echo '<br /> 121 <div class="centre"> 122 <input tabindex="4" type="submit" name="ShowSales" value="' . _('Show Sales') . '" /> 123 </div> 124 </div> 125 </form> 126 <br />'; 127 128if ($_POST['DateRange']=='Custom' AND !isset($_POST['FromDate']) AND !isset($_POST['ToDate'])){ 129 //Don't run the report until custom dates entered 130 unset($_POST['ShowSales']); 131} 132 133if (isset($_POST['ShowSales'])){ 134 $InputError=0; //assume no input errors now test for errors 135 if ($_POST['DateRange']=='Custom'){ 136 if (!Is_Date($_POST['FromDate'])){ 137 $InputError = 1; 138 prnMsg(_('The date entered for the from date is not in the appropriate format. Dates must be entered in the format') . ' ' . $_SESSION['DefaultDateFormat'], 'error'); 139 } 140 if (!Is_Date($_POST['ToDate'])){ 141 $InputError = 1; 142 prnMsg(_('The date entered for the to date is not in the appropriate format. Dates must be entered in the format') . ' ' . $_SESSION['DefaultDateFormat'], 'error'); 143 } 144 if (Date1GreaterThanDate2($_POST['FromDate'],$_POST['ToDate'])){ 145 $InputError = 1; 146 prnMsg(_('The from date is expected to be a date prior to the to date. Please review the selected date range'),'error'); 147 } 148 } 149 switch ($_POST['DateRange']) { 150 case 'ThisWeek': 151 $FromDate = date('Y-m-d',mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y'))); 152 $ToDate = date('Y-m-d'); 153 break; 154 case 'ThisMonth': 155 $FromDate = date('Y-m-d',mktime(0,0,0,date('m'),1,date('Y'))); 156 $ToDate = date('Y-m-d'); 157 break; 158 case 'ThisQuarter': 159 switch (date('m')) { 160 case 1: 161 case 2: 162 case 3: 163 $QuarterStartMonth=1; 164 break; 165 case 4: 166 case 5: 167 case 6: 168 $QuarterStartMonth=4; 169 break; 170 case 7: 171 case 8: 172 case 9: 173 $QuarterStartMonth=7; 174 break; 175 default: 176 $QuarterStartMonth=10; 177 } 178 $FromDate = date('Y-m-d',mktime(0,0,0,$QuarterStartMonth,1,date('Y'))); 179 $ToDate = date('Y-m-d'); 180 break; 181 case 'Custom': 182 $FromDate = FormatDateForSQL($_POST['FromDate']); 183 $ToDate = FormatDateForSQL($_POST['ToDate']); 184 } 185 switch ($_POST['DisplayData']) { 186 case 'Daily': 187 $sql = "SELECT debtortrans.trandate, 188 debtortrans.tpe, 189 SUM(CASE WHEN stockmoves.type=10 THEN 190 price*(1-discountpercent)* -qty 191 ELSE 0 END) 192 as salesvalue, 193 SUM(CASE WHEN stockmoves.type=10 THEN 194 1 ELSE 0 END) 195 as nooforders, 196 SUM(CASE WHEN stockmoves.type=11 THEN 197 price*(1-discountpercent)* (-qty) 198 ELSE 0 END) 199 as returnvalue, 200 SUM((standardcost * -qty)) as cost 201 FROM stockmoves 202 INNER JOIN custbranch 203 ON stockmoves.debtorno=custbranch.debtorno 204 AND stockmoves.branchcode=custbranch.branchcode 205 INNER JOIN debtortrans 206 ON stockmoves.type=debtortrans.type 207 AND stockmoves.transno=debtortrans.transno 208 WHERE (stockmoves.type=10 or stockmoves.type=11) 209 AND show_on_inv_crds =1 210 AND debtortrans.trandate>='" . $FromDate . "' 211 AND debtortrans.trandate<='" . $ToDate . "'"; 212 213 if ($_SESSION['SalesmanLogin'] != '') { 214 $sql .= " AND debtortrans.salesperson='" . $_SESSION['SalesmanLogin'] . "'"; 215 } 216 217 $sql .= " GROUP BY debtortrans.trandate, 218 tpe 219 ORDER BY debtortrans.trandate, 220 tpe"; 221 222 break; 223 case 'Weekly': 224 $sql = "SELECT WEEKOFYEAR(debtortrans.trandate) as week_no, 225 YEAR(debtortrans.trandate) as transyear, 226 debtortrans.tpe, 227 SUM(CASE WHEN stockmoves.type=10 THEN 228 price*(1-discountpercent)* -qty 229 ELSE 0 END) 230 as salesvalue, 231 SUM(CASE WHEN stockmoves.type=10 THEN 232 1 ELSE 0 END) 233 as nooforders, 234 SUM(CASE WHEN stockmoves.type=11 THEN 235 price*(1-discountpercent)* (-qty) 236 ELSE 0 END) 237 as returnvalue, 238 SUM((standardcost * -qty)) as cost 239 FROM stockmoves 240 INNER JOIN custbranch 241 ON stockmoves.debtorno=custbranch.debtorno 242 AND stockmoves.branchcode=custbranch.branchcode 243 INNER JOIN debtortrans 244 ON stockmoves.type=debtortrans.type 245 AND stockmoves.transno=debtortrans.transno 246 WHERE (stockmoves.type=10 or stockmoves.type=11) 247 AND show_on_inv_crds =1 248 AND debtortrans.trandate>='" . $FromDate . "' 249 AND debtortrans.trandate<='" . $ToDate . "'"; 250 251 if ($_SESSION['SalesmanLogin'] != '') { 252 $sql .= " AND debtortrans.salesperson='" . $_SESSION['SalesmanLogin'] . "'"; 253 } 254 255 $sql .= " GROUP BY week_no, 256 transyear, 257 tpe 258 ORDER BY transyear, 259 week_no, 260 tpe"; 261 262 break; 263 case 'Monthly': 264 $sql = "SELECT MONTH(debtortrans.trandate) as month_no, 265 MONTHNAME(debtortrans.trandate) as month_name, 266 YEAR(debtortrans.trandate) as transyear, 267 debtortrans.tpe, 268 SUM(CASE WHEN stockmoves.type=10 THEN 269 price*(1-discountpercent)* -qty 270 ELSE 0 END) 271 as salesvalue, 272 SUM(CASE WHEN stockmoves.type=10 THEN 273 1 ELSE 0 END) 274 as nooforders, 275 SUM(CASE WHEN stockmoves.type=11 THEN 276 price*(1-discountpercent)* (-qty) 277 ELSE 0 END) 278 as returnvalue, 279 SUM((standardcost * -qty)) as cost 280 FROM stockmoves 281 INNER JOIN custbranch 282 ON stockmoves.debtorno=custbranch.debtorno 283 AND stockmoves.branchcode=custbranch.branchcode 284 INNER JOIN debtortrans 285 ON stockmoves.type=debtortrans.type 286 AND stockmoves.transno=debtortrans.transno 287 WHERE (stockmoves.type=10 or stockmoves.type=11) 288 AND show_on_inv_crds =1 289 AND debtortrans.trandate>='" . $FromDate . "' 290 AND debtortrans.trandate<='" . $ToDate . "'"; 291 292 if ($_SESSION['SalesmanLogin'] != '') { 293 $sql .= " AND debtortrans.salesperson='" . $_SESSION['SalesmanLogin'] . "'"; 294 } 295 296 $sql .= " GROUP BY month_no, 297 month_name, 298 transyear, 299 debtortrans.tpe 300 ORDER BY transyear, 301 month_no, 302 tpe"; 303 304 break; 305 case 'Quarterly': 306 $sql = "SELECT QUARTER(debtortrans.trandate) as quarter_no, 307 YEAR(debtortrans.trandate) as transyear, 308 debtortrans.tpe, 309 SUM(CASE WHEN stockmoves.type=10 THEN 310 price*(1-discountpercent)* -qty 311 ELSE 0 END) 312 as salesvalue, 313 SUM(CASE WHEN stockmoves.type=10 THEN 314 1 ELSE 0 END) 315 as nooforders, 316 SUM(CASE WHEN stockmoves.type=11 THEN 317 price*(1-discountpercent)* (-qty) 318 ELSE 0 END) 319 as returnvalue, 320 SUM((standardcost * -qty)) as cost 321 FROM stockmoves 322 INNER JOIN custbranch 323 ON stockmoves.debtorno=custbranch.debtorno 324 AND stockmoves.branchcode=custbranch.branchcode 325 INNER JOIN debtortrans 326 ON stockmoves.type=debtortrans.type 327 AND stockmoves.transno=debtortrans.transno 328 WHERE (stockmoves.type=10 or stockmoves.type=11) 329 AND show_on_inv_crds =1 330 AND debtortrans.trandate>='" . $FromDate . "' 331 AND debtortrans.trandate<='" . $ToDate . "'"; 332 333 if ($_SESSION['SalesmanLogin'] != '') { 334 $sql .= " AND debtortrans.salesperson='" . $_SESSION['SalesmanLogin'] . "'"; 335 } 336 337 $sql .= " GROUP BY quarter_no, 338 transyear, 339 tpe 340 ORDER BY transyear, 341 quarter_no, 342 tpe"; 343 344 break; 345 } 346 347 $ErrMsg = _('The sales data could not be retrieved because') . ' - ' . DB_error_msg(); 348 $SalesResult = DB_query($sql,$ErrMsg); 349 350 351 echo '<table cellpadding="2" class="selection">'; 352 353 echo'<tr> 354 <th>' . _('Period') . '</th> 355 <th>' . _('Sales') . '<br />' . _('Type') . '</th> 356 <th>' . _('No Orders') . '</th> 357 <th>' . _('Total Sales') . '</th> 358 <th>' . _('Refunds') . '</th> 359 <th>' . _('Net Sales') . '</th> 360 <th>' . _('Cost of Sales') . '</th> 361 <th>' . _('Gross Profit') . '</th> 362 </tr>'; 363 364 $CumulativeTotalSales = 0; 365 $CumulativeTotalOrders = 0; 366 $CumulativeTotalRefunds = 0; 367 $CumulativeTotalNetSales = 0; 368 $CumulativeTotalCost = 0; 369 $CumulativeTotalGP = 0; 370 371 $PrdTotalOrders =0; 372 $PrdTotalSales=0; 373 $PrdTotalRefunds=0; 374 $PrdTotalNetSales=0; 375 $PrdTotalCost=0; 376 $PrdTotalGP=0; 377 378 $PeriodHeadingDone = false; 379 $LastPeriodHeading = 'First Run Through'; 380 381 while ($SalesRow=DB_fetch_array($SalesResult)) { 382 echo '<tr class="striped_row">'; 383 384 switch ($_POST['DisplayData']){ 385 case 'Daily': 386 if ($LastPeriodHeading != ConvertSQLDate($SalesRow['trandate'])) { 387 $PeriodHeadingDone=false; 388 if ($LastPeriodHeading != 'First Run Through'){ //print the footer for the period 389 echo '<td colspan="2" class="number">' . _('Total') . '-' . $LastPeriodHeading . '</td> 390 <td class="number">' . $PrdTotalOrders . '</td> 391 <td class="number">' . locale_number_format($PrdTotalSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 392 <td class="number">' . locale_number_format($PrdTotalRefunds,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 393 <td class="number">' . locale_number_format($PrdTotalNetSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 394 <td class="number">' . locale_number_format($PrdTotalCost,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 395 <td class="number">' . locale_number_format($PrdTotalGP,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 396 </tr>'; 397 398 echo '<tr class="striped_row"><td colspan="8"><hr /></td></tr>'; 399 echo '<tr class="striped_row">'; 400 401 $PrdTotalOrders =0; 402 $PrdTotalSales=0; 403 $PrdTotalRefunds=0; 404 $PrdTotalNetSales=0; 405 $PrdTotalCost=0; 406 $PrdTotalGP=0; 407 } 408 } 409 if (! $PeriodHeadingDone){ 410 echo '<td>' . ConvertSQLDate($SalesRow['trandate']) . '</td>'; 411 $LastPeriodHeading = ConvertSQLDate($SalesRow['trandate']); 412 $PeriodHeadingDone = true; 413 } else { 414 echo '<td></td>'; 415 } 416 break; 417 case 'Weekly': 418 if ($LastPeriodHeading != _('wk'). '-' . $SalesRow['week_no'] . ' ' . $SalesRow['transyear']) { 419 $PeriodHeadingDone=false; 420 if ($LastPeriodHeading != 'First Run Through'){ 421 echo '<td colspan="2" class="number">' . _('Total') . '-' . $LastPeriodHeading . '</td> 422 <td class="number">' . $PrdTotalOrders . '</td> 423 <td class="number">' . locale_number_format($PrdTotalSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 424 <td class="number">' . locale_number_format($PrdTotalRefunds,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 425 <td class="number">' . locale_number_format($PrdTotalNetSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 426 <td class="number">' . locale_number_format($PrdTotalCost,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 427 <td class="number">' . locale_number_format($PrdTotalGP,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 428 </tr>'; 429 430 echo '<tr class="striped_row"><td colspan="8"><hr /></td></tr>'; 431 echo '<tr class="striped_row">'; 432 433 $PrdTotalOrders =0; 434 $PrdTotalSales=0; 435 $PrdTotalRefunds=0; 436 $PrdTotalNetSales=0; 437 $PrdTotalCost=0; 438 $PrdTotalGP=0; 439 } 440 } 441 if (! $PeriodHeadingDone){ 442 echo '<td>' . _('wk'). '-' . $SalesRow['week_no'] . ' ' . $SalesRow['transyear'] . '</td>'; 443 $LastPeriodHeading = _('wk'). '-' . $SalesRow['week_no'] . ' ' . $SalesRow['transyear']; 444 $PeriodHeadingDone = true; 445 } else { 446 echo '<td></td>'; 447 } 448 break; 449 case 'Monthly': 450 if ($LastPeriodHeading != $SalesRow['month_name'] . ' ' . $SalesRow['transyear']) { 451 $PeriodHeadingDone=false; 452 if ($LastPeriodHeading != 'First Run Through'){ 453 echo '<td colspan="2" class="number">' . _('Total') . '-' . $LastPeriodHeading . '</td> 454 <td class="number">' . $PrdTotalOrders . '</td> 455 <td class="number">' . locale_number_format($PrdTotalSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 456 <td class="number">' . locale_number_format($PrdTotalRefunds,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 457 <td class="number">' . locale_number_format($PrdTotalNetSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 458 <td class="number">' . locale_number_format($PrdTotalCost,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 459 <td class="number">' . locale_number_format($PrdTotalGP,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 460 </tr>'; 461 462 echo '<tr class="striped_row"><td colspan="8"><hr /></td></tr>'; 463 echo '<tr class="striped_row">'; 464 465 $PrdTotalOrders =0; 466 $PrdTotalSales=0; 467 $PrdTotalRefunds=0; 468 $PrdTotalNetSales=0; 469 $PrdTotalCost=0; 470 $PrdTotalGP=0; 471 } 472 } 473 if (! $PeriodHeadingDone){ 474 echo '<td>' . $SalesRow['month_name'] . ' ' . $SalesRow['transyear'] . '</td>'; 475 $LastPeriodHeading = $SalesRow['month_name'] . ' ' . $SalesRow['transyear']; 476 $PeriodHeadingDone = true; 477 } else { 478 echo '<td></td>'; 479 } 480 break; 481 case 'Quarterly': 482 if ($LastPeriodHeading != _('Qtr'). '-' . $SalesRow['quarter_no'] . ' ' . $SalesRow['transyear']) { 483 $PeriodHeadingDone=false; 484 if ($LastPeriodHeading != 'First Run Through'){ 485 echo '<td colspan="2" class="number">' . _('Total') . '-'. $LastPeriodHeading . '</td> 486 <td class="number">' . $PrdTotalOrders . '</td> 487 <td class="number">' . locale_number_format($PrdTotalSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 488 <td class="number">' . locale_number_format($PrdTotalRefunds,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 489 <td class="number">' . locale_number_format($PrdTotalNetSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 490 <td class="number">' . locale_number_format($PrdTotalCost,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 491 <td class="number">' . locale_number_format($PrdTotalGP,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 492 </tr>'; 493 494 echo '<tr class="striped_row"><td colspan="8"><hr /></td></tr>'; 495 echo '<tr class="striped_row">'; 496 497 $PrdTotalOrders =0; 498 $PrdTotalSales=0; 499 $PrdTotalRefunds=0; 500 $PrdTotalNetSales=0; 501 $PrdTotalCost=0; 502 $PrdTotalGP=0; 503 } 504 } 505 if (! $PeriodHeadingDone){ 506 echo '<td>' . _('Qtr'). '-' . $SalesRow['quarter_no'] . ' ' . $SalesRow['transyear'] . '</td>'; 507 $LastPeriodHeading = _('Qtr'). '-' . $SalesRow['quarter_no'] . ' ' . $SalesRow['transyear']; 508 $PeriodHeadingDone = true; 509 } else { 510 echo '<td></td>'; 511 } 512 break; 513 } // end switch 514 515 // This apparently completes the "double-row" that appears within each 516 // case. The last portion of each case does a PeriodHeadingDone check. 517 // The output from the PeriodHeadingDone area is the first column to go 518 // with these below to make 8 columns. 519 echo '<td>' . $SalesRow['tpe'] . '</td> 520 <td class="number">' . $SalesRow['nooforders'] . '</td> 521 <td class="number">' . locale_number_format($SalesRow['salesvalue'],$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 522 <td class="number">' . locale_number_format($SalesRow['returnvalue'],$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 523 <td class="number">' . locale_number_format($SalesRow['salesvalue']+$SalesRow['returnvalue'],$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 524 <td class="number">' . locale_number_format($SalesRow['cost'],$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 525 <td class="number">' . locale_number_format(($SalesRow['salesvalue']+$SalesRow['returnvalue']-$SalesRow['cost']),$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 526 </tr>'; 527 $PrdTotalOrders +=$SalesRow['nooforders']; 528 $PrdTotalSales += $SalesRow['salesvalue']; 529 $PrdTotalRefunds += $SalesRow['returnvalue']; 530 $PrdTotalNetSales += ($SalesRow['salesvalue']+$SalesRow['returnvalue']); 531 $PrdTotalCost += $SalesRow['cost']; 532 $PrdTotalGP += ($SalesRow['salesvalue']+$SalesRow['returnvalue']-$SalesRow['cost']); 533 534 $CumulativeTotalSales += $SalesRow['salesvalue']; 535 $CumulativeTotalOrders += $SalesRow['nooforders']; 536 $CumulativeTotalRefunds += $SalesRow['returnvalue']; 537 $CumulativeTotalNetSales += ($SalesRow['salesvalue']+$SalesRow['returnvalue']); 538 $CumulativeTotalCost += $SalesRow['cost']; 539 $CumulativeTotalGP += ($SalesRow['salesvalue']+$SalesRow['returnvalue']-$SalesRow['cost']); 540 } // end loop 541 542 echo '<tr class="striped_row"> 543 <td colspan="2" class="number">' . _('Total') . ' ' . $LastPeriodHeading . '</td> 544 <td class="number">' . $PrdTotalOrders . '</td> 545 <td class="number">' . locale_number_format($PrdTotalSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 546 <td class="number">' . locale_number_format($PrdTotalRefunds,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 547 <td class="number">' . locale_number_format($PrdTotalNetSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 548 <td class="number">' . locale_number_format($PrdTotalCost,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 549 <td class="number">' . locale_number_format($PrdTotalGP,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 550 </tr>'; 551 552 echo '<tr class="striped_row"><td colspan="8"><hr /></td></tr>'; 553 echo '<tr class="striped_row">'; 554 555 echo '<td colspan="2" class="number">' . _('GRAND Total') . '</td> 556 <td class="number">' . $CumulativeTotalOrders . '</td> 557 <td class="number">' . locale_number_format($CumulativeTotalSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 558 <td class="number">' . locale_number_format($CumulativeTotalRefunds,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 559 <td class="number">' . locale_number_format($CumulativeTotalNetSales,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 560 <td class="number">' . locale_number_format($CumulativeTotalCost,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 561 <td class="number">' . locale_number_format($CumulativeTotalGP,$_SESSION['CompanyRecord']['decimalplaces']) . '</td> 562 </tr>'; 563 564 echo '</table>'; 565 566} //end of if user hit show sales 567include('includes/footer.php'); 568?> 569