-
Notifications
You must be signed in to change notification settings - Fork 120
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #29 from timschofield/master
Adds new script from Paul Becker and more (see comment)
- Loading branch information
Showing
3 changed files
with
433 additions
and
663 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,272 @@ | ||
<?php | ||
/* By Paul Becker */ | ||
|
||
include ('includes/session.php'); | ||
include ('includes/phplot/phplot.php'); | ||
$Title = _('GL Account Graph'); | ||
|
||
$ViewTopic = 'GLInquiries'; | ||
$BookMark = 'GLAccountGraph'; | ||
|
||
include ('includes/header.php'); | ||
|
||
$SelectADifferentPeriod = ''; | ||
|
||
if (isset($_POST['Account'])) { | ||
$SelectedAccount = $_POST['Account']; | ||
} elseif (isset($_GET['Account'])) { | ||
$SelectedAccount = $_GET['Account']; | ||
} | ||
|
||
if ($_POST['Period'] != '') { | ||
$_POST['FromPeriod'] = ReportPeriod($_POST['Period'], 'From'); | ||
$_POST['ToPeriod'] = ReportPeriod($_POST['Period'], 'To'); | ||
} | ||
|
||
if (isset($_POST['FromPeriod']) and isset($_POST['ToPeriod'])) { | ||
|
||
if ($_POST['FromPeriod'] > $_POST['ToPeriod']) { | ||
prnMsg(_('The selected period from is actually after the period to! Please re-select the reporting period'), 'error'); | ||
$SelectADifferentPeriod = _('Select A Different Period'); | ||
} | ||
|
||
} | ||
|
||
if ((!isset($_POST['FromPeriod']) or !isset($_POST['ToPeriod'])) or $SelectADifferentPeriod == _('Select A Different Period')) { | ||
|
||
echo '<form method="post" action="' . htmlspecialchars(basename(__FILE__), ENT_QUOTES, 'UTF-8') . '">'; | ||
echo '<input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />'; | ||
|
||
echo '<p class="page_title_text"> | ||
<img src="' . $RootPath . '/css/' . $_SESSION['Theme'] . '/images/maintenance.png" title="' . _('Search') . '" alt="" />' . ' ' . $Title . ' | ||
</p>'; | ||
|
||
echo '<table class="selection"> | ||
<tr> | ||
<td>' . _('Select GL Account') . ':</td> | ||
<td><select name="Account">'; | ||
|
||
$SQL = "SELECT chartmaster.accountcode, | ||
bankaccounts.accountcode AS bankact, | ||
bankaccounts.currcode, | ||
chartmaster.accountname | ||
FROM chartmaster LEFT JOIN bankaccounts | ||
ON chartmaster.accountcode=bankaccounts.accountcode | ||
INNER JOIN glaccountusers ON glaccountusers.accountcode=chartmaster.accountcode AND glaccountusers.userid='" . $_SESSION['UserID'] . "' AND glaccountusers.canview=1 | ||
ORDER BY chartmaster.accountcode"; | ||
$Account = DB_query($SQL); | ||
while ($MyRow = DB_fetch_array($Account)) { | ||
if ($MyRow['accountcode'] == $SelectedAccount) { | ||
if (!is_null($MyRow['bankact'])) { | ||
$BankAccount = true; | ||
} | ||
echo '<option selected="selected" value="' . $MyRow['accountcode'] . '">' . $MyRow['accountcode'] . ' ' . htmlspecialchars($MyRow['accountname'], ENT_QUOTES, 'UTF-8', false) . '</option>'; | ||
} else { | ||
echo '<option value="' . $MyRow['accountcode'] . '">' . $MyRow['accountcode'] . ' ' . htmlspecialchars($MyRow['accountname'], ENT_QUOTES, 'UTF-8', false) . '</option>'; | ||
} | ||
} | ||
echo '</select> | ||
</td> | ||
</tr>'; | ||
|
||
echo '<tr> | ||
<td>' . _('Graph Type') . '</td> | ||
<td><select name="GraphType"> | ||
<option value="bars">' . _('Bar Graph') . '</option> | ||
<option value="stackedbars">' . _('Stacked Bar Graph') . '</option> | ||
<option value="lines">' . _('Line Graph') . '</option> | ||
<option value="linepoints">' . _('Line Point Graph') . '</option> | ||
<option value="area">' . _('Area Graph') . '</option> | ||
<option value="points">' . _('Points Graph') . '</option> | ||
<option value="pie">' . _('Pie Graph') . '</option> | ||
<option value="thinbarline">' . _('Thin Bar Line Graph') . '</option> | ||
<option value="squared">' . _('Squared Graph') . '</option> | ||
<option value="stackedarea">' . _('Stacked Area Graph') . '</option> | ||
</select> | ||
</td> | ||
</tr>'; | ||
|
||
echo '<tr> | ||
<td>', _('Invert Graph'), '</td> | ||
<td><input type="checkbox" name="InvertGraph" /></td> | ||
</tr>'; | ||
|
||
echo '<tr> | ||
<td>' . _('Select Period From') . ':</td> | ||
<td><select name="FromPeriod">'; | ||
|
||
if (Date('m') > $_SESSION['YearEnd']) { | ||
/*Dates in SQL format */ | ||
$DefaultFromDate = Date('Y-m-d', Mktime(0, 0, 0, $_SESSION['YearEnd'] + 2, 0, Date('Y'))); | ||
} else { | ||
$DefaultFromDate = Date('Y-m-d', Mktime(0, 0, 0, $_SESSION['YearEnd'] + 2, 0, Date('Y') - 1)); | ||
} | ||
$SQL = "SELECT periodno, lastdate_in_period FROM periods ORDER BY periodno"; | ||
$Periods = DB_query($SQL); | ||
|
||
while ($MyRow = DB_fetch_array($Periods)) { | ||
if (isset($_POST['FromPeriod']) and $_POST['FromPeriod'] != '') { | ||
if ($_POST['FromPeriod'] == $MyRow['periodno']) { | ||
echo '<option selected="selected" value="' . $MyRow['periodno'] . '">' . MonthAndYearFromSQLDate($MyRow['lastdate_in_period']) . '</option>'; | ||
} else { | ||
echo '<option value="' . $MyRow['periodno'] . '">' . MonthAndYearFromSQLDate($MyRow['lastdate_in_period']) . '</option>'; | ||
} | ||
} else { | ||
if ($MyRow['lastdate_in_period'] == $DefaultFromDate) { | ||
echo '<option selected="selected" value="' . $MyRow['periodno'] . '">' . MonthAndYearFromSQLDate($MyRow['lastdate_in_period']) . '</option>'; | ||
} else { | ||
echo '<option value="' . $MyRow['periodno'] . '">' . MonthAndYearFromSQLDate($MyRow['lastdate_in_period']) . '</option>'; | ||
} | ||
} | ||
} | ||
|
||
echo '</select> | ||
</td> | ||
</tr>'; | ||
if (!isset($_POST['ToPeriod']) or $_POST['ToPeriod'] == '') { | ||
$DefaultToPeriod = GetPeriod(DateAdd(ConvertSQLDate($DefaultFromDate), 'm', 11)); | ||
} else { | ||
$DefaultToPeriod = $_POST['ToPeriod']; | ||
} | ||
|
||
echo '<tr> | ||
<td>' . _('Select Period To') . ':</td> | ||
<td><select name="ToPeriod">'; | ||
|
||
$RetResult = DB_data_seek($Periods, 0); | ||
|
||
while ($MyRow = DB_fetch_array($Periods)) { | ||
|
||
if ($MyRow['periodno'] == $DefaultToPeriod) { | ||
echo '<option selected="selected" value="' . $MyRow['periodno'] . '">' . MonthAndYearFromSQLDate($MyRow['lastdate_in_period']) . '</option>'; | ||
} else { | ||
echo '<option value ="' . $MyRow['periodno'] . '">' . MonthAndYearFromSQLDate($MyRow['lastdate_in_period']) . '</option>'; | ||
} | ||
} | ||
echo '</select> | ||
</td> | ||
</tr>'; | ||
|
||
if (!isset($_POST['Period'])) { | ||
$_POST['Period'] = ''; | ||
} | ||
|
||
echo '<tr> | ||
<td colspan="2"> | ||
<h3>', _('OR'), '</h3> | ||
</td> | ||
</tr>'; | ||
|
||
echo '<tr> | ||
<td>' . _('Select Period') . ':</td> | ||
<td>' . ReportPeriodList($_POST['Period']) . '</td> | ||
</tr>'; | ||
|
||
echo '</table> | ||
<div class="centre"> | ||
<input type="submit" name="ShowGraph" value="' . _('Show Account Graph') . '" /> | ||
</div> | ||
</form>'; | ||
include ('includes/footer.php'); | ||
} else { | ||
|
||
$Graph = new PHPlot(950, 450); | ||
$SelectClause = ''; | ||
$WhereClause = ''; | ||
$GraphTitle = ''; | ||
|
||
$GraphTitle = _('GL Account Graph - Actual vs. Budget') . "\n\r"; | ||
//$GraphTitle .= $SelectedAccount . " - " . $SelectedAccountName . "\n\r"; | ||
$SQL = "SELECT YEAR(`lastdate_in_period`) AS year, MONTHNAME(`lastdate_in_period`) AS month | ||
FROM `periods` | ||
WHERE `periodno`='" . $_POST['FromPeriod'] . "' OR periodno='" . $_POST['ToPeriod'] . "'"; | ||
|
||
$Result = DB_query($SQL); | ||
|
||
$FromPeriod = DB_fetch_array($Result); | ||
$Starting = $FromPeriod['month'] . ' ' . $FromPeriod['year']; | ||
|
||
$ToPeriod = DB_fetch_array($Result); | ||
$Ending = $ToPeriod['month'] . ' ' . $ToPeriod['year']; | ||
|
||
$GraphTitle.= ' ' . _('From Period') . ' ' . $Starting . ' ' . _('to') . ' ' . $Ending . "\n\r"; | ||
|
||
$WhereClause = "WHERE " . $WhereClause . " periods.periodno>='" . $_POST['FromPeriod'] . "' AND periods.periodno <= '" . $_POST['ToPeriod'] . "'"; | ||
|
||
$SQL = "SELECT periods.periodno, | ||
periods.lastdate_in_period, | ||
chartmaster.group_ AS group_, | ||
chartdetails.budget AS budget, | ||
(CASE WHEN chartdetails.actual=0 THEN 0 ELSE chartdetails.actual END) AS actual | ||
FROM periods | ||
INNER JOIN chartdetails ON periods.periodno=chartdetails.period | ||
INNER JOIN chartmaster ON chartdetails.accountcode=chartmaster.accountcode " . $WhereClause . " | ||
AND chartdetails.accountcode = '" . $SelectedAccount . "' | ||
GROUP BY periods.periodno, | ||
periods.lastdate_in_period | ||
ORDER BY periods.periodno"; | ||
|
||
$Graph->SetTitle($GraphTitle); | ||
$Graph->SetTitleColor('blue'); | ||
$Graph->SetOutputFile('companies/' . $_SESSION['DatabaseName'] . '/reports/glaccountgraph.png'); | ||
$Graph->SetXTitle(_('Month')); | ||
|
||
$Graph->SetXTickPos('none'); | ||
$Graph->SetXTickLabelPos('none'); | ||
$Graph->SetXLabelAngle(90); | ||
$Graph->SetBackgroundColor('white'); | ||
$Graph->SetTitleColor('blue'); | ||
$Graph->SetFileFormat('png'); | ||
$Graph->SetPlotType($_POST['GraphType']); | ||
$Graph->SetIsInline('1'); | ||
$Graph->SetShading(5); | ||
$Graph->SetDrawYGrid(true); | ||
$Graph->SetDataType('text-data'); | ||
$Graph->SetNumberFormat($DecimalPoint, $ThousandsSeparator); | ||
$Graph->SetPrecisionY($_SESSION['CompanyRecord']['decimalplaces']); | ||
|
||
$SalesResult = DB_query($SQL); | ||
if (DB_error_no() != 0) { | ||
|
||
prnMsg(_('The GL Account graph data for the selected criteria could not be retrieved because') . ' - ' . DB_error_msg(), 'error'); | ||
include ('includes/footer.php'); | ||
exit; | ||
} | ||
if (DB_num_rows($SalesResult) == 0) { | ||
prnMsg(_('There is not GL Account data for the criteria entered to graph'), 'info'); | ||
include ('includes/footer.php'); | ||
exit; | ||
} | ||
|
||
$GraphArray = array(); | ||
$i = 0; | ||
while ($MyRow = DB_fetch_array($SalesResult)) { | ||
if (!isset($_POST['InvertGraph'])) { | ||
$GraphArray[$i] = array(MonthAndYearFromSQLDate($MyRow['lastdate_in_period']), $MyRow['actual'], $MyRow['budget']); | ||
} else { | ||
$GraphArray[$i] = array(MonthAndYearFromSQLDate($MyRow['lastdate_in_period']), -$MyRow['actual'], $MyRow['budget']); | ||
} | ||
++$i; | ||
} | ||
|
||
$Graph->SetDataValues($GraphArray); | ||
$Graph->SetDataColors(array('grey', 'wheat'), //Data Colors | ||
array('black') //Border Colors | ||
); | ||
$Graph->SetLegend(array(_('Actual'), _('Budget'))); | ||
$Graph->SetYDataLabelPos('plotin'); | ||
|
||
//Draw it | ||
$Graph->DrawGraph(); | ||
echo '<table class="selection"> | ||
<tr> | ||
<td><p><img src="companies/' . $_SESSION['DatabaseName'] . '/reports/glaccountgraph.png" alt="Sales Report Graph"></img></p></td> | ||
</tr> | ||
</table>'; | ||
|
||
echo '<div class="noprint centre"> | ||
<a href="', basename(__FILE__), '">', _('Select Different Criteria'), '</a> | ||
</div>'; | ||
include ('includes/footer.php'); | ||
} | ||
?> |
Oops, something went wrong.