From: <dai...@us...> - 2014-07-31 10:24:28
|
Revision: 6799 http://sourceforge.net/p/web-erp/reponame/6799 Author: daintree Date: 2014-07-31 10:24:19 +0000 (Thu, 31 Jul 2014) Log Message: ----------- Andrew Galuski: new dashboard script Modified Paths: -------------- trunk/includes/session.inc trunk/sql/mysql/upgrade4.11-4.12.sql Added Paths: ----------- trunk/Dashboard.php Added: trunk/Dashboard.php =================================================================== --- trunk/Dashboard.php (rev 0) +++ trunk/Dashboard.php 2014-07-31 10:24:19 UTC (rev 6799) @@ -0,0 +1,805 @@ +<?php + +/* $Id: Dashboard.php 6338 2013-09-28 05:10:46Z daintree $*/ + +include('includes/session.inc'); + +$Title = _('Dashboard'); + +include('includes/header.inc'); + +echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/gl.png" title="' . _('Dashboard') . '" alt="" />' . _('Dashboard') . '</p>'; + +$sql = "SELECT pagesecurity + FROM scripts + WHERE scripts.script = 'AgedDebtors.php'"; +$ErrMsg = _('The security for Aging Debtors cannot be retrieved because'); +$DbgMsg = _('The SQL that was used and failed was'); +$Security1Result = DB_query($sql, $db, $ErrMsg, $DbgMsg); +$MyUserRow = DB_fetch_array($Security1Result); +$DebtorSecurity = $MyUserRow['pagesecurity']; + +$sql = "SELECT pagesecurity + FROM scripts + WHERE scripts.script = 'SuppPaymentRun.php'"; +$ErrMsg = _('The security for upcoming payments cannot be retrieved because'); +$DbgMsg = _('The SQL that was used and failed was'); +$Security2Result = DB_query($sql, $db, $ErrMsg, $DbgMsg); +$MyUserRow = DB_fetch_array($Security2Result); +$PayeeSecurity = $MyUserRow['pagesecurity']; + +$sql = "SELECT pagesecurity + FROM scripts + WHERE scripts.script = 'GLAccountInquiry.php'"; +$ErrMsg = _('The security for G/L Accounts cannot be retrieved because'); +$DbgMsg = _('The SQL that was used and failed was'); +$Security2Result = DB_query($sql, $db, $ErrMsg, $DbgMsg); +$MyUserRow = DB_fetch_array($Security2Result); +$CashSecurity = $MyUserRow['pagesecurity']; + +$sql = "SELECT pagesecurity + FROM scripts + WHERE scripts.script = 'SelectSalesOrder.php'"; +$ErrMsg = _('The security for Aging Debtors cannot be retrieved because'); +$DbgMsg = _('The SQL that was used and failed was'); +$Security1Result = DB_query($sql, $db, $ErrMsg, $DbgMsg); +$MyUserRow = DB_fetch_array($Security1Result); +$OrderSecurity = $MyUserRow['pagesecurity']; + +if (in_array($DebtorSecurity, $_SESSION['AllowedPageSecurityTokens']) OR !isset($DebtorSecurity)) { + echo '<br /><b>' . _('Overdue Customer Balances') . '</b> + <table class="selection"><tbody>'; + + $TableHeader = '<tr> + <th>' . _('Customer') . '</th> + <th>' . _('Reference') . '</th> + <th>' . _('Trans Date') . '</th> + <th>' . _('Due Date') . '</th> + <th>' . _('Balance') . '</th> + <th>' . _('Current') . '</th> + <th>' . _('Due Now') . '</th> + <th>' . '> ' . $_SESSION['PastDueDays1'] . ' ' . _('Days Over') . '</th> + <th>' . '> ' . $_SESSION['PastDueDays2'] . ' ' . _('Days Over') . '</th> + </tr>'; + echo $TableHeader; + $j = 1; + $k=0; //row colour counter + if ($_SESSION['SalesmanLogin'] != '') { + $_POST['Salesman'] = $_SESSION['SalesmanLogin']; + } + if (trim($_POST['Salesman'])!=''){ + $SalesLimit = " AND debtorsmaster.debtorno IN (SELECT DISTINCT debtorno FROM custbranch WHERE salesman = '".$_POST['Salesman']."') "; + } else { + $SalesLimit = ""; + } + $SQL = "SELECT debtorsmaster.debtorno, + debtorsmaster.name, + currencies.currency, + currencies.decimalplaces, + paymentterms.terms, + debtorsmaster.creditlimit, + holdreasons.dissallowinvoices, + holdreasons.reasondescription, + SUM( + debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ) AS balance, + SUM( + CASE WHEN (paymentterms.daysbeforedue > 0) + THEN + CASE WHEN (TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate)) >= paymentterms.daysbeforedue + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END + ELSE + CASE WHEN TO_DAYS(Now()) - TO_DAYS(DATE_ADD(DATE_ADD(debtortrans.trandate, " . INTERVAL('1', 'MONTH') . "), " . INTERVAL('(paymentterms.dayinfollowingmonth - DAYOFMONTH(debtortrans.trandate))', 'DAY') .")) >= 0 + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc ELSE 0 END + END + ) AS due, + SUM( + CASE WHEN (paymentterms.daysbeforedue > 0) + THEN + CASE WHEN (TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate)) > paymentterms.daysbeforedue AND TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate) >= (paymentterms.daysbeforedue + " . $_SESSION['PastDueDays1'] . ") + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc ELSE 0 END + ELSE + CASE WHEN TO_DAYS(Now()) - TO_DAYS(DATE_ADD(DATE_ADD(debtortrans.trandate, " . INTERVAL('1', 'MONTH') . "), " . INTERVAL ('(paymentterms.dayinfollowingmonth - DAYOFMONTH(debtortrans.trandate))', 'DAY') . ")) >= " . $_SESSION['PastDueDays1'] . " + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END + END + ) AS overdue1, + SUM( + CASE WHEN (paymentterms.daysbeforedue > 0) + THEN + CASE WHEN (TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate)) > paymentterms.daysbeforedue AND TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate) >= (paymentterms.daysbeforedue + " . $_SESSION['PastDueDays2'] . ") + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc ELSE 0 END + ELSE + CASE WHEN TO_DAYS(Now()) - TO_DAYS(DATE_ADD(DATE_ADD(debtortrans.trandate, " . INTERVAL ('1', 'MONTH') . "), " . INTERVAL('(paymentterms.dayinfollowingmonth - DAYOFMONTH(debtortrans.trandate))', 'DAY') . ")) >= " . $_SESSION['PastDueDays2'] . " + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END + END + ) AS overdue2 + FROM debtorsmaster, + paymentterms, + holdreasons, + currencies, + debtortrans + WHERE debtorsmaster.paymentterms = paymentterms.termsindicator + AND debtorsmaster.currcode = currencies.currabrev + AND debtorsmaster.holdreason = holdreasons.reasoncode + AND debtorsmaster.debtorno = debtortrans.debtorno + " . $SalesLimit . " + GROUP BY debtorsmaster.debtorno, + debtorsmaster.name, + currencies.currency, + paymentterms.terms, + paymentterms.daysbeforedue, + paymentterms.dayinfollowingmonth, + debtorsmaster.creditlimit, + holdreasons.dissallowinvoices, + holdreasons.reasondescription + HAVING + ROUND(ABS(SUM(debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc)),currencies.decimalplaces) > 0"; + $CustomerResult = DB_query($SQL,$db,'','',False,False); /*dont trap errors handled below*/ + + if (DB_error_no($db) !=0) { + prnMsg(_('The customer details could not be retrieved by the SQL because') . ' ' . DB_error_msg($db),'error'); + echo '<br /><a href="' . $RootPath . '/index.php">' . _('Back to the menu') . '</a>'; + if ($debug==1){ + echo '<br />' . $SQL; + } + include('includes/footer.inc'); + exit; + } + + + $TotBal=0; + $TotCurr=0; + $TotDue=0; + $TotOD1=0; + $TotOD2=0; + + $ListCount = DB_num_rows($CustomerResult); + $CurrDecimalPlaces =2; //by default + + while ($AgedAnalysis = DB_fetch_array($CustomerResult,$db)){ + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + $CurrDecimalPlaces = $AgedAnalysis['decimalplaces']; + $DisplayDue = locale_number_format($AgedAnalysis['due']-$AgedAnalysis['overdue1'],$CurrDecimalPlaces); + $DisplayCurrent = locale_number_format($AgedAnalysis['balance']-$AgedAnalysis['due'],$CurrDecimalPlaces); + $DisplayBalance = locale_number_format($AgedAnalysis['balance'],$CurrDecimalPlaces); + $DisplayOverdue1 = locale_number_format($AgedAnalysis['overdue1']-$AgedAnalysis['overdue2'],$CurrDecimalPlaces); + $DisplayOverdue2 = locale_number_format($AgedAnalysis['overdue2'],$CurrDecimalPlaces); + if ($DisplayDue <> 0 OR $DisplayOverdue1 <> 0 OR $DisplayOverdue2 <> 0) { + $TotBal += $AgedAnalysis['balance']; + $TotDue += ($AgedAnalysis['due']-$AgedAnalysis['overdue1']); + $TotCurr += ($AgedAnalysis['balance']-$AgedAnalysis['due']); + $TotOD1 += ($AgedAnalysis['overdue1']-$AgedAnalysis['overdue2']); + $TotOD2 += $AgedAnalysis['overdue2']; + + + printf('<td><b>%s</b></td> + <td><b>%s</b></td> + <td><b>%s</b></td> + <td><b>%s</b></td> + <td class="number"><b>%s</b></td> + <td class="number"><b>%s</b></td> + <td class="number" style="color:orange;"><b>%s</b></td> + <td class="number" style="color:red;"><b>%s</b></td> + <td class="number" style="color:red;"><b>%s</b></td>', + $AgedAnalysis['debtorno'] . ' - ' . $AgedAnalysis['name'], + '', + '', + '', + $DisplayBalance, + $DisplayCurrent, + $DisplayDue, + $DisplayOverdue1, + $DisplayOverdue2 + ); + echo '</tr>'; + $sql = "SELECT systypes.typename, + debtortrans.transno, + debtortrans.trandate, + daysbeforedue, + dayinfollowingmonth, + (debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc) as balance, + (CASE WHEN (paymentterms.daysbeforedue > 0) + THEN + (CASE WHEN (TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate)) >= paymentterms.daysbeforedue + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END) + ELSE + (CASE WHEN TO_DAYS(Now()) - TO_DAYS(DATE_ADD(DATE_ADD(debtortrans.trandate, " . INTERVAL('1', 'MONTH') . "), " . INTERVAL('(paymentterms.dayinfollowingmonth - DAYOFMONTH(debtortrans.trandate))', 'DAY') . ")) >= 0 + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END) + END) AS due, + (CASE WHEN (paymentterms.daysbeforedue > 0) + THEN + (CASE WHEN TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate) > paymentterms.daysbeforedue AND TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate) >= (paymentterms.daysbeforedue + " . $_SESSION['PastDueDays1'] . ") THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc ELSE 0 END) + ELSE + (CASE WHEN (TO_DAYS(Now()) - TO_DAYS(DATE_ADD(DATE_ADD(debtortrans.trandate, " . INTERVAL('1', 'MONTH') . "), " . INTERVAL('(paymentterms.dayinfollowingmonth - DAYOFMONTH(debtortrans.trandate))', 'DAY') . ")) >= " . $_SESSION['PastDueDays1'] . ") + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END) + END) AS overdue1, + (CASE WHEN (paymentterms.daysbeforedue > 0) + THEN + (CASE WHEN TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate) > paymentterms.daysbeforedue AND TO_DAYS(Now()) - TO_DAYS(debtortrans.trandate) >= (paymentterms.daysbeforedue + " . $_SESSION['PastDueDays2'] . ") + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END) + ELSE + (CASE WHEN (TO_DAYS(Now()) - TO_DAYS(DATE_ADD(DATE_ADD(debtortrans.trandate, " . INTERVAL('1', 'MONTH') . "), " . INTERVAL('(paymentterms.dayinfollowingmonth - DAYOFMONTH(debtortrans.trandate))','DAY') . ")) >= " . $_SESSION['PastDueDays2'] . ") + THEN debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc + ELSE 0 END) + END) AS overdue2 + FROM debtorsmaster, + paymentterms, + debtortrans, + systypes + WHERE systypes.typeid = debtortrans.type + AND debtorsmaster.paymentterms = paymentterms.termsindicator + AND debtorsmaster.debtorno = debtortrans.debtorno + AND debtortrans.debtorno = '" . $AgedAnalysis['debtorno'] . "' + AND ABS(debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc)>0.004"; + + if ($_SESSION['SalesmanLogin'] != '') { + $sql .= " AND debtortrans.salesperson='" . $_SESSION['SalesmanLogin'] . "'"; + } + + $DetailResult = DB_query($sql,$db,'','',False,False); + if (DB_error_no($db) !=0) { + prnMsg(_('The details of outstanding transactions for customer') . ' - ' . $AgedAnalysis['debtorno'] . ' ' . _('could not be retrieved because') . ' - ' . DB_error_msg($db),'error'); + echo '<br /><a href="' . $RootPath . '/index.php">' . _('Back to the menu') . '</a>'; + if ($debug==1){ + echo '<br />' . _('The SQL that failed was') . '<br />' . $sql; + } + include('includes/footer.inc'); + exit; + } + + while ($DetailTrans = DB_fetch_array($DetailResult)){ + + $DisplayTranDate = ConvertSQLDate($DetailTrans['trandate']); + $DisplayDue = locale_number_format($DetailTrans['due']-$DetailTrans['overdue1'],$CurrDecimalPlaces); + $DisplayCurrent = locale_number_format($DetailTrans['balance']-$DetailTrans['due'],$CurrDecimalPlaces); + $DisplayBalance = locale_number_format($DetailTrans['balance'],$CurrDecimalPlaces); + $DisplayOverdue1 = locale_number_format($DetailTrans['overdue1']-$DetailTrans['overdue2'],$CurrDecimalPlaces); + $DisplayOverdue2 = locale_number_format($DetailTrans['overdue2'],$CurrDecimalPlaces); + + if ($DetailTrans['daysbeforedue'] > 0) { + $AddDays=$DetailTrans['daysbeforedue'] . ' days'; + $DisplayDueDate = date_add(date_create($DetailTrans['trandate']), date_interval_create_from_date_string($AddDays)); + } else { + $AddDays=(intval($DetailTrans['dayinfollowingmonth']) - 1) . ' days'; + $DisplayDueDate= date_create($DetailTrans['trandate']); + $DisplayDueDate->modify('first day of next month'); + $DisplayDueDate=date_add($DisplayDueDate, date_interval_create_from_date_string($AddDays)); + + } + $DisplayDueDate=date_format($DisplayDueDate,$_SESSION['DefaultDateFormat']); + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + printf('<td style="text-align:center">%s</td> + <td style="text-align:right">%s</td> + <td>%s</td> + <td>%s</td> + <td class="number">%s</td> + <td class="number">%s</td> + <td class="number" style="color:orange;">%s</td> + <td class="number" style="color:red;">%s</td> + <td class="number" style="color:red;">%s</td>', + $DetailTrans['typename'], + $DetailTrans['transno'], + $DisplayTranDate, + $DisplayDueDate, + $DisplayBalance, + $DisplayCurrent, + $DisplayDue, + $DisplayOverdue1, + $DisplayOverdue2); + echo '</tr>'; + } //end while there are detail transactions to show + } //has Due now or overdue + } //end customer aged analysis while loop + + $DisplayTotBalance = locale_number_format($TotBal,$CurrDecimalPlaces); + $DisplayTotDue = locale_number_format($TotDue,$CurrDecimalPlaces); + $DisplayTotCurrent = locale_number_format($TotCurr,$CurrDecimalPlaces); + $DisplayTotOverdue1 = locale_number_format($TotOD1,$CurrDecimalPlaces); + $DisplayTotOverdue2 = locale_number_format($TotOD2,$CurrDecimalPlaces); + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + printf('<td style="text-align:left"><b>%s</b></td> + <td><b>%s</b></td> + <td><b>%s</b></td> + <td><b>%s</b></td> + <td class="number"><b>%s</b></td> + <td class="number"><b>%s</b></td> + <td class="number"><b>%s</b></td> + <td class="number" style="color:red;"><b>%s</b></td> + <td class="number" style="color:red;"><b>%s</b></td>', + _('Totals'), + '', + '', + '', + $DisplayTotBalance, + $DisplayTotCurrent, + $DisplayTotDue, + $DisplayTotOverdue1, + $DisplayTotOverdue2); + + echo '</tr>'; + echo '</tbody> + </table>'; +} //DebtorSecurity + +if (in_array($PayeeSecurity, $_SESSION['AllowedPageSecurityTokens']) OR !isset($PayeeSecurity)) { + //$UpcomingDate = Date($_SESSION['DefaultDateFormat'], Mktime(0,0,0,Date('m')+1,0 ,Date('y'))); + $UpcomingDate = Date(($_SESSION['DefaultDateFormat']), strtotime($UpcomingDate . ' + 30 days')); + + echo '<br /><b>' . _('Supplier Invoices Due within 1 Month') . '</b> + <table class="selection"> + <tbody>'; + + $TableHeader = '<tr> + <th>' . _('Supplier') . '</th> + <th>' . _('Invoice Date') . '</th> + <th>' . _('Invoice') . '</th> + <th>' . _('Amount Due') . '</th> + <th>' . _('Due Date') . '</th> + </tr>'; + echo $TableHeader; + $j = 1; + $k=0; //row colour counter + $sql = "SELECT suppliers.supplierid, + currencies.decimalplaces AS currdecimalplaces, + SUM(supptrans.ovamount + supptrans.ovgst - supptrans.alloc) AS balance + FROM suppliers INNER JOIN paymentterms + ON suppliers.paymentterms = paymentterms.termsindicator + INNER JOIN supptrans + ON suppliers.supplierid = supptrans.supplierno + INNER JOIN systypes + ON systypes.typeid = supptrans.type + INNER JOIN currencies + ON suppliers.currcode=currencies.currabrev + WHERE supptrans.ovamount + supptrans.ovgst - supptrans.alloc !=0 + AND supptrans.hold=0 + GROUP BY suppliers.supplierid, + currencies.decimalplaces + HAVING SUM(supptrans.ovamount + supptrans.ovgst - supptrans.alloc) <> 0 + ORDER BY suppliers.supplierid"; + + $SuppliersResult = DB_query($sql,$db); + + $SupplierID =''; + $TotalPayments = 0; + $TotalAccumDiffOnExch = 0; + + while ($SuppliersToPay = DB_fetch_array($SuppliersResult)){ + + $CurrDecimalPlaces = $SuppliersToPay['currdecimalplaces']; + + $sql = "SELECT suppliers.supplierid, + suppliers.suppname, + systypes.typename, + paymentterms.terms, + supptrans.suppreference, + supptrans.trandate, + supptrans.rate, + supptrans.transno, + supptrans.type, + supptrans.duedate, + (supptrans.ovamount + supptrans.ovgst - supptrans.alloc) AS balance, + (supptrans.ovamount + supptrans.ovgst ) AS trantotal, + supptrans.diffonexch, + supptrans.id + FROM suppliers INNER JOIN paymentterms + ON suppliers.paymentterms = paymentterms.termsindicator + INNER JOIN supptrans + ON suppliers.supplierid = supptrans.supplierno + INNER JOIN systypes + ON systypes.typeid = supptrans.type + WHERE supptrans.supplierno = '" . $SuppliersToPay['supplierid'] . "' + AND supptrans.ovamount + supptrans.ovgst - supptrans.alloc !=0 + AND supptrans.duedate <='" . FormatDateForSQL($UpcomingDate) . "' + AND supptrans.hold = 0 + ORDER BY supptrans.supplierno, + supptrans.type, + supptrans.transno"; + + $TransResult = DB_query($sql,$db,'','',false,false); + if (DB_error_no($db) !=0) { + prnMsg(_('The details of supplier invoices due could not be retrieved because') . ' - ' . DB_error_msg($db),'error'); + echo '<br /><a href="' . $RootPath . '/index.php">' . _('Back to the menu') . '</a>'; + if ($debug==1){ + echo '<br />' . _('The SQL that failed was') . ' ' . $sql; + } + include('includes/footer.inc'); + exit; + } + + unset($Allocs); + $Allocs = array(); + $AllocCounter =0; + + while ($DetailTrans = DB_fetch_array($TransResult)){ + + if ($DetailTrans['supplierid'] != $SupplierID){ /*Need to head up for a new suppliers details */ + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + $SupplierID = $DetailTrans['supplierid']; + $SupplierName = $DetailTrans['suppname']; + + //$AccumBalance = 0; + $AccumDiffOnExch = 0; + + printf('<td style="text-align:left"><b>%s</b></td> + <td>%s</td> + <td>%s</td> + <td class="number">%s</td> + <td>%s</td>', + $DetailTrans['supplierid'] . ' - ' . $DetailTrans['suppname'] . ' - ' . $DetailTrans['terms'], + '', + '', + '', + ''); + echo '</tr>'; + } + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + $DisplayFormat = ''; + + if ((time()-(60*60*24)) > strtotime($DetailTrans['duedate'])) { + $DisplayFormat=' style="color:red;" '; + } + $DislayTranDate = ConvertSQLDate($DetailTrans['trandate']); + $AccumBalance += $DetailTrans['balance']; + $PayNow='<a href="' . $RootPath . '/Payments.php?&SupplierID=' . $SupplierID. '&Amount=' . $DetailTrans['balance'] . '&BankTransRef=' .$DetailTrans['suppreference'] . '">' .$DetailTrans['suppreference'] . '</a>'; + printf('<td style="text-align:center">%s</td> + <td>%s</td> + <td>%s</td> + <td class="number"' . $DisplayFormat . '>%s</td> + <td' . $DisplayFormat . '>%s</td>', + $DetailTrans['typename'], + $DislayTranDate, + $PayNow, + locale_number_format($DetailTrans['balance'],$CurrDecimalPlaces), + ConvertSQLDate($DetailTrans['duedate'])); + echo '</tr>'; + } /*end while there are detail transactions to show */ + } /* end while there are suppliers to retrieve transactions for */ + + /* if (DB_error_no($db) !=0) { + prnMsg(_('None of the payments will be processed. Unfortunately, there was a problem committing the changes to the database because') . ' - ' . DB_error_msg($db),'error'); + echo '<br /><a href="' . $RootPath . '/index.php">' . _('Back to the menu') . '</a>'; + if ($debug==1){ + prnMsg(_('The SQL that failed was') . '<br />' . $SQL,'error'); + } + include('includes/footer.inc'); + exit; + } */ + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k=1; + } + printf('<td style="text-align:left"><b>%s</b></td> + <td>%s</td> + <td>%s</td> + <td class="number"><b>%s</b></td> + <td><b>%s</b></td>', + _('Grand Total Payments Due'), + '', + '', + locale_number_format($AccumBalance,$CurrDecimalPlaces), + ''); + echo '</tr>'; + echo '</tbody> + </table>'; +} //PayeeSecurity +if (in_array($CashSecurity, $_SESSION['AllowedPageSecurityTokens']) OR !isset($CashSecurity)) { + include('includes/GLPostings.inc'); + echo '<br /><b>Bank and Credit Card Balances</b> + <table class="selection"><tbody>'; + $FirstPeriodSelected = GetPeriod(date($_SESSION['DefaultDateFormat']), $db); + $LastPeriodSelected = GetPeriod(date($_SESSION['DefaultDateFormat']), $db); + $SelectedPeriod=$LastPeriodSelected; + $TableHeader = '<tr> + <th class="ascending">' . _('GL Account') . '</th> + <th class="ascending">' . _('Account Name') . '</th> + <th class="ascending">' . _('Balance') . '</th> + </tr>'; + echo $TableHeader; + $j = 1; + $k=0; //row colour counter + $sql = "SELECT bankaccounts.accountcode, + bankaccounts.bankaccountcode, + chartmaster.accountname, + bankaccountname + FROM bankaccounts INNER JOIN chartmaster + ON bankaccounts.accountcode = chartmaster.accountcode"; + + $ErrMsg = _('The bank accounts set up could not be retrieved because'); + $DbgMsg = _('The SQL used to retrieve the bank account details was') . '<br />' . $sql; + $result1 = DB_query($sql,$db,$ErrMsg,$DbgMsg); + + while ($myrow = DB_fetch_array($result1)) { + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k++; + } + /*Is the account a balance sheet or a profit and loss account */ + $result = DB_query("SELECT pandl + FROM accountgroups + INNER JOIN chartmaster ON accountgroups.groupname=chartmaster.group_ + WHERE chartmaster.accountcode='" . $myrow['accountcode'] ."'",$db); + $PandLRow = DB_fetch_row($result); + if ($PandLRow[0]==1){ + $PandLAccount = True; + }else{ + $PandLAccount = False; /*its a balance sheet account */ + } + + $sql= "SELECT counterindex, + type, + typename, + gltrans.typeno, + trandate, + narrative, + amount, + periodno, + gltrans.tag, + tagdescription + FROM gltrans INNER JOIN systypes + ON systypes.typeid=gltrans.type + LEFT JOIN tags + ON gltrans.tag = tags.tagref + WHERE gltrans.account = '" . $myrow['accountcode'] . "' + AND posted=1 + AND periodno>='" . $FirstPeriodSelected . "' + AND periodno<='" . $LastPeriodSelected . "' + ORDER BY periodno, gltrans.trandate, counterindex"; + $TransResult = DB_query($sql,$db,$ErrMsg); + if ($PandLAccount==True) { + $RunningTotal = 0; + } else { + // added to fix bug with Brought Forward Balance always being zero + $sql = "SELECT bfwd, + actual, + period + FROM chartdetails + WHERE chartdetails.accountcode='" . $myrow['accountcode'] . "' + AND chartdetails.period='" . $FirstPeriodSelected . "'"; + + $ErrMsg = _('The chart details for account') . ' ' . $myrow['accountcode'] . ' ' . _('could not be retrieved'); + $ChartDetailsResult = DB_query($sql,$db,$ErrMsg); + $ChartDetailRow = DB_fetch_array($ChartDetailsResult); + $RunningTotal =$ChartDetailRow['bfwd']; + } + $PeriodTotal = 0; + $PeriodNo = -9999; + while ($myrow2=DB_fetch_array($TransResult)) { + if ($myrow2['periodno']!=$PeriodNo){ + if ($PeriodNo!=-9999){ //ie its not the first time around + /*Get the ChartDetails balance b/fwd and the actual movement in the account for the period as recorded in the chart details - need to ensure integrity of transactions to the chart detail movements. Also, for a balance sheet account it is the balance carried forward that is important, not just the transactions*/ + + $sql = "SELECT bfwd, + actual, + period + FROM chartdetails + WHERE chartdetails.accountcode='" . $myrow['accountcode'] . "' + AND chartdetails.period='" . $PeriodNo . "'"; + + $ErrMsg = _('The chart details for account') . ' ' . $myrow['accountcode'] . ' ' . _('could not be retrieved'); + $ChartDetailsResult = DB_query($sql,$db,$ErrMsg); + $ChartDetailRow = DB_fetch_array($ChartDetailsResult); + if ($PeriodTotal < 0 ){ //its a credit balance b/fwd + if ($PandLAccount==True) { + $RunningTotal = 0; + } + } else { //its a debit balance b/fwd + if ($PandLAccount==True) { + $RunningTotal = 0; + } + } + } + $PeriodNo = $myrow2['periodno']; + $PeriodTotal = 0; + } + $RunningTotal += $myrow2['amount']; + $PeriodTotal += $myrow2['amount']; + } + $DisplayBalance=locale_number_format(($RunningTotal),$_SESSION['CompanyRecord']['decimalplaces']); + printf('<td>%s</td> + <td>%s</td> + <td class="number">%s</td>', + $myrow['accountcode'] . ' - ' . $myrow['accountname'], + $myrow['bankaccountname'], + $DisplayBalance); + echo '</tr>'; + } //each bank account + echo '</tbody> + </table>'; +} //CashSecurity + +if (in_array($OrderSecurity, $_SESSION['AllowedPageSecurityTokens']) OR !isset($OrderSecurity)) { + echo '<br /><b>Outstanding Orders</b>'; + + echo '<table cellpadding="2" width="95%" class="selection">'; + $RecentDate = Date(($_SESSION['DefaultDateFormat']), strtotime($RecentDate . ' - 1 days')); + $TableHeader = '<tr>' . + /* + <th>' . _('Modify') . '</th> + */ + '<th>' . _('View Order') . '</th>' . + /* + <th>' . _('Invoice') . '</th> + <th>' . _('Dispatch Note') . '</th> + <th>' . _('Labels') . '</th> + */ + '<th>' . _('Customer') . '</th> + <th>' . _('Branch') . '</th> + <th>' . _('Cust Order') . ' #</th> + <th>' . _('Order Date') . '</th> + <th>' . _('Req Del Date') . '</th> + <th>' . _('Delivery To') . '</th> + <th>' . _('Order Total') . ' in ' . $_SESSION['CompanyRecord']['currencydefault'] . '</th>'; + echo $TableHeader; + + $SQL = "SELECT salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverto, + salesorders.deliverydate, + salesorders.printedpackingslip, + salesorders.poplaced, + SUM(salesorderdetails.unitprice*salesorderdetails.quantity*(1-salesorderdetails.discountpercent)/currencies.rate) AS ordervalue + FROM salesorders INNER JOIN salesorderdetails + ON salesorders.orderno = salesorderdetails.orderno + INNER JOIN debtorsmaster + ON salesorders.debtorno = debtorsmaster.debtorno + INNER JOIN custbranch + ON debtorsmaster.debtorno = custbranch.debtorno + AND salesorders.branchcode = custbranch.branchcode + INNER JOIN currencies + ON debtorsmaster.currcode = currencies.currabrev + WHERE salesorderdetails.completed=0 + AND salesorders.quotation =0 + GROUP BY salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverto, + salesorders.deliverydate, + salesorders.printedpackingslip + ORDER BY salesorders.orddate DESC, salesorders.orderno"; + $ErrMsg = _('No orders or quotations were returned by the SQL because'); + $SalesOrdersResult = DB_query($SQL,$db,$ErrMsg); + + /*show a table of the orders returned by the SQL */ + if (DB_num_rows($SalesOrdersResult)>0) { + + $i = 1; + $j = 1; + $k=0; //row colour counter + $OrdersTotal =0; + + while ($myrow=DB_fetch_array($SalesOrdersResult)) { + $FontColor=''; + $FormatedOrderDate = ConvertSQLDate($myrow['orddate']); + if ($FormatedOrderDate >= $RecentDate) { + $FontColor=' style="color:green; font-weight:bold"'; + } + if ($k==1){ + echo '<tr class="EvenTableRows">'; + $k=0; + } else { + echo '<tr class="OddTableRows">'; + $k++; + } + + + $ModifyPage = $RootPath . '/SelectOrderItems.php?ModifyOrderNumber=' . $myrow['orderno']; + $Confirm_Invoice = $RootPath . '/ConfirmDispatch_Invoice.php?OrderNumber=' .$myrow['orderno']; + + if ($_SESSION['PackNoteFormat']==1){ /*Laser printed A4 default */ + $PrintDispatchNote = $RootPath . '/PrintCustOrder_generic.php?TransNo=' . $myrow['orderno']; + } else { /*pre-printed stationery default */ + $PrintDispatchNote = $RootPath . '/PrintCustOrder.php?TransNo=' . $myrow['orderno']; + } + $PrintQuotation = $RootPath . '/PDFQuotation.php?QuotationNo=' . $myrow['orderno']; + $PrintQuotationPortrait = $RootPath . '/PDFQuotationPortrait.php?QuotationNo=' . $myrow['orderno']; + $FormatedDelDate = ConvertSQLDate($myrow['deliverydate']); + $FormatedOrderValue = locale_number_format($myrow['ordervalue'],$_SESSION['CompanyRecord']['decimalplaces']); + $PrintAck = $RootPath . '/PDFAck.php?AcknowledgementNo=' . $myrow['orderno']; + + if ($myrow['printedpackingslip']==0) { + $PrintText = _('Print'); + } else { + $PrintText = _('Reprint'); + } + + $PrintLabels = $RootPath . '/PDFShipLabel.php?Type=Sales&ORD=' . $myrow['orderno'] ; + + + printf( + /*<td><a href="%s">%s</a></td>*/ + '<td><a href="%s" target="_blank">' . $myrow['orderno'] . '</a></td>' . + /* + <td><a href="%s">' . _('Invoice') . '</a></td> + <td><a target="_blank" href="%s">' . $PrintText . ' <img src="' .$RootPath.'/css/'.$Theme.'/images/pdf.png" title="' . _('Click for PDF') . '" alt="" /></a></td> + <td><a href="%s">' . _('Labels') . '</a></td> + */ + '<td' . $FontColor . '>%s</td> + <td' . $FontColor . '>%s</td> + <td' . $FontColor . '>%s</td> + <td' . $FontColor . '>%s</td> + <td' . $FontColor . '>%s</td> + <td' . $FontColor . '>%s</td> + <td' . $FontColor . ' class="number">%s</td> + </tr>', + /* + $ModifyPage, + $myrow['orderno'], + */ + $PrintAck, + /* + $Confirm_Invoice, + $PrintDispatchNote, + $PrintLabels, + */ + $myrow['name'], + $myrow['brname'], + $myrow['customerref'], + $FormatedOrderDate, + $FormatedDelDate, + html_entity_decode($myrow['deliverto'],ENT_QUOTES,'UTF-8'), + $FormatedOrderValue, + $i, + $i, + $myrow['orderno']); + $i++; + $OrdersTotal += $myrow['ordervalue']; + } //while + + echo '<tfoot><tr><td colspan="6" class="number">'; + echo '<b>' . _('Total Order(s) Value in'); + echo ' ' . $_SESSION['CompanyRecord']['currencydefault'] . ' :</b></td> + <td class="number"><b>' . locale_number_format($OrdersTotal,$_SESSION['CompanyRecord']['decimalplaces']) . '</b></td> + </tr></tfoot> + </table>'; + } //rows > 0 +} //OrderSecurity +include('includes/footer.inc'); +?> \ No newline at end of file Modified: trunk/includes/session.inc =================================================================== --- trunk/includes/session.inc 2014-07-30 10:09:15 UTC (rev 6798) +++ trunk/includes/session.inc 2014-07-31 10:24:19 UTC (rev 6799) @@ -88,6 +88,8 @@ if (isset($_POST['UserNameEntryField']) AND isset($_POST['Password'])) { $rc = userLogin($_POST['UserNameEntryField'], $_POST['Password'], $SysAdminEmail, $db); + header('Location: ' . $PathPrefix .'Dashboard.php'); + exit; } elseif (empty($_SESSION['DatabaseName'])) { $rc = UL_SHOWLOGIN; } else { @@ -139,7 +141,7 @@ if (strcmp($Version,$_SESSION['VersionNumber'])>0 AND (basename($_SERVER['SCRIPT_NAME'])!='UpgradeDatabase.php')) { header('Location: UpgradeDatabase.php'); } -if(isset($_SESSION['DB_Maintenance'])){ +if(isset($_SESSION['DB_Maintenance'])){ if ($_SESSION['DB_Maintenance']>0) { //run the DB maintenance script if (DateDiff(Date($_SESSION['DefaultDateFormat']), ConvertSQLDate($_SESSION['DB_Maintenance_LastRun']) @@ -152,7 +154,7 @@ } } //purge the audit trail if necessary -if (isset($_SESSION['MonthsAuditTrail'])){ +if (isset($_SESSION['MonthsAuditTrail'])){ $sql = "DELETE FROM audittrail WHERE transactiondate <= '" . Date('Y-m-d', mktime(0,0,0, Date('m')-$_SESSION['MonthsAuditTrail'])) . "'"; $ErrMsg = _('There was a problem deleting expired audit-trail history'); @@ -217,7 +219,7 @@ $result = 'companies/' . $CompanyDir . '/logo.png'; } elseif (file_exists($dir . '/logo.jpg')) { $result = 'companies/' . $CompanyDir . '/logo.jpg'; - } + } return $result; } Modified: trunk/sql/mysql/upgrade4.11-4.12.sql =================================================================== --- trunk/sql/mysql/upgrade4.11-4.12.sql 2014-07-30 10:09:15 UTC (rev 6798) +++ trunk/sql/mysql/upgrade4.11-4.12.sql 2014-07-31 10:24:19 UTC (rev 6799) @@ -52,6 +52,7 @@ ALTER TABLE stockrequest DROP KEY departmentid_2; ALTER TABLE stockrequest DROP KEY loccode_2; ALTER TABLE stockrequestitems DROP KEY stockid_2, DROP KEY dispatchid_2; +INSERT INTO scripts VALUES('Dashboard.php',1,'Display outstanding debtors, creditors etc'); UPDATE config SET confvalue='4.12' WHERE confname='VersionNumber'; |