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