|
From: <ex...@us...> - 2016-08-31 06:32:59
|
Revision: 7605
http://sourceforge.net/p/web-erp/reponame/7605
Author: exsonqu
Date: 2016-08-31 06:32:57 +0000 (Wed, 31 Aug 2016)
Log Message:
-----------
31/08/16 Exson: Addd new feature assign cash from one tab to another.
Modified Paths:
--------------
trunk/includes/MainMenuLinksArray.php
trunk/sql/mysql/upgrade4.13-4.13.1.sql
Added Paths:
-----------
trunk/PcAssignCashTabToTab.php
Added: trunk/PcAssignCashTabToTab.php
===================================================================
--- trunk/PcAssignCashTabToTab.php (rev 0)
+++ trunk/PcAssignCashTabToTab.php 2016-08-31 06:32:57 UTC (rev 7605)
@@ -0,0 +1,393 @@
+<?php
+
+include('includes/session.inc');
+$Title = _('Assignment of Cash From Tab To Tab');
+/* webERP manual links before header.inc */
+$ViewTopic= 'PettyCash';
+$BookMark = 'CashAssignment';
+include('includes/header.inc');
+
+if (isset($_POST['SelectedTabs'])){
+ $SelectedTabs = mb_strtoupper($_POST['SelectedTabs']);
+} elseif (isset($_GET['SelectedTabs'])){
+ $SelectedTabs = mb_strtoupper($_GET['SelectedTabs']);
+}
+
+if (isset($_POST['Days'])){
+ $Days = $_POST['Days'];
+} elseif (isset($_GET['Days'])){
+ $Days = $_GET['Days'];
+}
+
+if (isset($_POST['Cancel'])) {
+ unset($SelectedTabs);
+ unset($Days);
+ unset($_POST['Amount']);
+ unset($_POST['Notes']);
+ unset($_POST['Receipt']);
+}
+
+if (isset($_POST['Process'])) {
+ if ($SelectedTabs=='') {
+ prnMsg(_('You Must First Select a Petty Cash Tab To Assign Cash'),'error');
+ unset($SelectedTabs);
+ }
+ if ($SelectedTabs == mb_strtoupper($_POST['SelectedTabsTo'])) {
+ prnMsg(_('The Tab selected From should not be the same as the selected To'),'error');
+ unset($SelectedTabs);
+ unset($_POST['SelectedTabsTo']);
+ unset($_POST['Process']);
+ }
+}
+
+if (isset($_POST['Go'])) {
+ $InputError = 0;
+ if ($Days<=0) {
+ $InputError = 1;
+ prnMsg(_('The number of days must be a positive number'),'error');
+ $Days=30;
+ }
+}
+
+if (isset($_POST['submit'])) {
+ //initialise no input errors assumed initially before we test
+ $InputError = 0;
+
+ echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/money_add.png" title="' .
+ _('Search') . '" alt="" />' . ' ' . $Title. '</p>';
+
+ /* actions to take once the user has clicked the submit button
+ ie the page has called itself with some user input */
+
+ $i=1;
+
+ if ($_POST['Amount']==0) {
+ $InputError = 1;
+ prnMsg('<br />' . _('The Amount must be input'),'error');
+ }
+
+ $sqlLimit = "SELECT tablimit,tabcode
+ FROM pctabs
+ WHERE tabcode IN ('" . $SelectedTabs . "','" . $_POST['SelectedTabsTo'] . "')";
+
+ $ResultLimit = DB_query($sqlLimit,$db);
+ while ($LimitRow=DB_fetch_array($ResultLimit)){
+ if ($LimitRow['tabcode'] == $SelectedTabs) {
+ if (($_POST['CurrentAmount']+$_POST['Amount'])>$LimitRow['tablimit']){
+ $InputError = 1;
+ prnMsg(_('The balance after this assignment would be greater than the specified limit for this PC tab') . ' ' . $LimitRow[1],'error');
+ }
+ } elseif ($_POST['SelectedTabsToAmt'] - $_POST['Amount']>$LimitRow['tablimit']) {
+ $InputError = 1;
+ prnMsg(_('The balance after this assignment would be greater than the specified limit for this PC tab') . ' ' . $LimitRow[1],'error');
+ }
+ }
+
+ if ($InputError !=1 ) {
+ // Add these 2 new record on submit
+ $sql = "INSERT INTO pcashdetails
+ (counterindex,
+ tabcode,
+ date,
+ codeexpense,
+ amount,
+ authorized,
+ posted,
+ notes,
+ receipt)
+ VALUES (NULL,
+ '" . $_POST['SelectedTabs'] . "',
+ '".FormatDateForSQL($_POST['Date'])."',
+ 'ASSIGNCASH',
+ '" . filter_number_format($_POST['Amount']) . "',
+ '0000-00-00',
+ '0',
+ '" . $_POST['Notes'] . "',
+ '" . $_POST['Receipt'] . "'
+ ),
+ (NULL,
+ '" . $_POST['SelectedTabsTo'] . "',
+ '" . FormatDateForSQL($_POST['Date']) . "',
+ 'ASSIGNCASH',
+ '" . filter_number_format(-$_POST['Amount']) . "',
+ '0000-00-00',
+ '0',
+ '" . $_POST['Notes'] . "',
+ '" . $_POST['Receipt'] . "')";
+ $msg = _('Assignment of cash from PC Tab ') . ' ' . $_POST['SelectedTabs'] . ' ' . _('to') . $_POST['SelectedTabsTo'] . ' ' . _('has been created');
+ }
+
+ if ( $InputError !=1) {
+ //run the SQL from either of the above possibilites
+ $result = DB_query($sql,$db);
+ prnMsg($msg,'success');
+ unset($_POST['SelectedExpense']);
+ unset($_POST['Amount']);
+ unset($_POST['Notes']);
+ unset($_POST['Receipt']);
+ unset($_POST['SelectedTabs']);
+ unset($_POST['Date']);
+ }
+
+}
+
+if (!isset($SelectedTabs)){
+
+ echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/money_add.png" title="' .
+ _('Search') . '" alt="" />' . ' ' . $Title. '</p>';
+
+ echo '<form method="post" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '">';
+ echo '<div>';
+ echo '<input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />';
+
+ $SQL = "SELECT tabcode
+ FROM pctabs
+ WHERE assigner='" . $_SESSION['UserID'] . "'
+ ORDER BY tabcode";
+
+ $result = DB_query($SQL,$db);
+
+ echo '<br /><table class="selection">'; //Main table
+
+ echo '<tr><td>' . _('Petty Cash Tab To Assign Cash From') . ':</td>
+ <td><select name="SelectedTabs">';
+ while ($myrow = DB_fetch_array($result)) {
+ if (isset($_POST['SelectTabs']) and $myrow['tabcode']==$_POST['SelectTabs']) {
+ echo '<option selected="selected" value="';
+ } else {
+ echo '<option value="';
+ }
+ echo $myrow['tabcode'] . '">' . $myrow['tabcode'] . '</option>';
+ }
+
+ echo '</select></td></tr>';
+ echo '<tr><td>' . _('Petty Cash Tab To Assign Cash To') . ':</td>
+ <td><select name="SelectedTabsTo">';
+ DB_data_seek($result,0);
+ while ($myrow = DB_fetch_array($result)) {
+ if (isset($_POST['SelectTabsTo']) AND $myrow['tabcode'] == $_POST['SelectTabs']) {
+ echo '<option selected="selected" value="';
+ } else {
+ echo '<option value="';
+ }
+ echo $myrow['tabcode'] . '">' . $myrow['tabcode'] . '</option>';
+ }
+ echo '</select></td></tr>';
+ echo '</table>'; // close main table
+ DB_free_result($result);
+
+ echo '<br />
+ <div class="centre">
+ <input type="submit" name="Process" value="' . _('Accept') . '" />
+ <input type="submit" name="Cancel" value="' . _('Cancel') . '" />
+ </div>';
+ echo '</div>
+ </form>';
+}
+
+//end of ifs and buts!
+if (isset($_POST['Process']) OR isset($SelectedTabs)) {
+
+ if (!isset($_POST['submit'])) {
+ echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/money_add.png" title="' .
+ _('Search') . '" alt="" />' . ' ' . $Title. '</p>';
+ }
+ echo '<br /><div class="centre"><a href="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '">' . _('Select another tab') . '</a></div>';
+
+
+
+ if (! isset($_GET['edit']) OR isset ($_POST['GO'])){
+
+ if (isset($_POST['Cancel'])) {
+ unset($_POST['Amount']);
+ unset($_POST['Date']);
+ unset($_POST['Notes']);
+ unset($_POST['Receipt']);
+ }
+
+ if(!isset ($Days)){
+ $Days=30;
+ }
+
+ /* Retrieve decimal places to display */
+ $SqlDecimalPlaces="SELECT decimalplaces
+ FROM currencies,pctabs
+ WHERE currencies.currabrev = pctabs.currency
+ AND tabcode='" . $SelectedTabs . "'";
+ $result = DB_query($SqlDecimalPlaces,$db);
+ $myrow=DB_fetch_array($result);
+ $CurrDecimalPlaces = $myrow['decimalplaces'];
+
+ $sql = "SELECT * FROM pcashdetails
+ WHERE tabcode='" . $SelectedTabs . "'
+ AND date >=DATE_SUB(CURDATE(), INTERVAL " . $Days . " DAY)
+ ORDER BY date, counterindex ASC";
+ $result = DB_query($sql,$db);
+
+ echo '<form method="post" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '">
+ <div>
+ <input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />
+ <table class="selection">
+ <tr>
+ <th colspan="8">' . _('Detail Of PC Tab Movements For Last') .':
+ <input type="hidden" name="SelectedTabs" value="' . $SelectedTabs . '" />
+ <input type="text" class="number" name="Days" value="' . $Days . '" maxlength="3" size="4" /> ' . _('Days') . '
+ <input type="submit" name="Go" value="' . _('Go') . '" /></th>
+ </tr>
+ <tr>
+ <th>' . _('Date') . '</th>
+ <th>' . _('Expense Code') . '</th>
+ <th>' . _('Amount') . '</th>
+ <th>' . _('Authorised') . '</th>
+ <th>' . _('Notes') . '</th>
+ <th>' . _('Receipt') . '</th>
+ </tr>';
+
+ $k=0; //row colour counter
+
+ while ($myrow = DB_fetch_array($result)) {
+ if ($k==1){
+ echo '<tr class="EvenTableRows">';
+ $k=0;
+ } else {
+ echo '<tr class="OddTableRows">';
+ $k=1;
+ }
+
+ $sqldes="SELECT description
+ FROM pcexpenses
+ WHERE codeexpense='". $myrow['3'] . "'";
+
+ $ResultDes = DB_query($sqldes,$db);
+ $Description=DB_fetch_array($ResultDes);
+
+ if (!isset($Description['0'])){
+ $Description['0']='ASSIGNCASH';
+ }
+
+ if (($myrow['authorized'] == '0000-00-00') and ($Description['0'] == 'ASSIGNCASH')){
+ // only cash assignations NOT authorized can be modified or deleted
+ echo '<td>' . ConvertSQLDate($myrow['date']) . '</td>
+ <td>' . $Description['0'] . '</td>
+ <td class="number">' . locale_number_format($myrow['amount'],$CurrDecimalPlaces) . '</td>
+ <td>' . ConvertSQLDate($myrow['authorized']) . '</td>
+ <td>' . $myrow['notes'] . '</td>
+ <td>' . $myrow['receipt'] . '</td>
+ </tr>';
+ }else{
+ echo '<td>' . ConvertSQLDate($myrow['date']) . '</td>
+ <td>' . $Description['0'] . '</td>
+ <td class="number">' . locale_number_format($myrow['amount'],$CurrDecimalPlaces) . '</td>
+ <td>' . ConvertSQLDate($myrow['authorized']) . '</td>
+ <td>' . $myrow['notes'] . '</td>
+ <td>' . $myrow['receipt'] . '</td>
+ </tr>';
+ }
+ }
+ //END WHILE LIST LOOP
+
+ $sqlamount="SELECT sum(amount) as amt,
+ tabcode
+ FROM pcashdetails
+ WHERE tabcode IN ('".$SelectedTabs."','" . $_POST['SelectedTabsTo'] . "')
+ GROUP BY tabcode";
+
+ $ResultAmount = DB_query($sqlamount,$db);
+ if (DB_num_rows($ResultAmount)>0) {
+ while ($AmountRow=DB_fetch_array($ResultAmount)) {
+ if (is_null($AmountRow['amt'])) {
+ $AmountRow['amt'] = 0;
+ }
+ if ($AmountRow['tabcode'] == $SelectedTabs) {
+ $SelectedTab = array($AmountRow['amt'],$SelectedTabs);
+ } else {
+ $SelectedTabsTo = array($AmountRow['amt'],$_POST['SelectedTabsTo']);
+ }
+ }
+ }
+ if (!isset($SelectedTab)) {
+ $SelectedTab = array(0,$SelectedTabs);
+ $SelectedTabsTo = array(0,$_POST['SelectedTabsTo']);
+ }
+
+
+
+ echo '<tr>
+ <td colspan="2" style="text-align:right"><b>' . _('Current balance') . ':</b></td>
+ <td>' . locale_number_format($SelectedTab['0'],$CurrDecimalPlaces) . '</td></tr>
+ <input type="hidden" name="CurrentAmount" value="' . $SelectedTab[0] . '" />
+ <input type="hidden" name="SelectedTabs" value="' . $SelectedTab[1] . '" />
+ <input type="hidden" name="SelectedTabsTo" value="' . $SelectedTabsTo[1] . '" />
+ <input type="hidden" name="SelectedTabsToAmt" value="' . $SelectedTabsTo[0] . '" />';
+
+
+ echo '</table>';
+ echo '</div>
+ </form>';
+ }
+
+
+
+ echo '<form method="post" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') .'">
+ <div>
+ <input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />';
+
+/* Ricard: needs revision of this date initialization */
+ if (!isset($_POST['Date'])) {
+ $_POST['Date']=Date($_SESSION['DefaultDateFormat']);
+ }
+
+ echo '<br />
+ <table class="selection">'; //Main table
+ echo '<tr>
+ <th colspan="2"><h3>' . _('New Cash Assignment') . '</h3></th>
+ </tr>';
+ echo '<tr>
+ <td>' . _('Cash Assignation Date') . ':</td>
+ <td><input type="text" class="date" alt="'.$_SESSION['DefaultDateFormat'].'" name="Date" required="required" autofocus="autofocus" size="10" maxlength="10" value="' . $_POST['Date'] . '" /></td>
+ </tr>';
+
+
+ if (!isset($_POST['Amount'])) {
+ $_POST['Amount']=0;
+ }
+
+ echo '<tr>
+ <td>' . _('Amount') . ':</td>
+ <td><input type="text" class="number" name="Amount" size="12" maxlength="11" value="' . locale_number_format($_POST['Amount'],$CurrDecimalPlaces) . '" /></td>
+ </tr>';
+
+ if (!isset($_POST['Notes'])) {
+ $_POST['Notes']='';
+ }
+
+ echo '<tr>
+ <td>' . _('Notes') . ':</td>
+ <td><input type="text" name="Notes" size="50" maxlength="49" value="' . $_POST['Notes'] . '" /></td>
+ </tr>';
+
+ if (!isset($_POST['Receipt'])) {
+ $_POST['Receipt']='';
+ }
+
+ echo '<tr>
+ <td>' . _('Receipt') . ':</td>
+ <td><input type="text" name="Receipt" size="50" maxlength="49" value="' . $_POST['Receipt'] . '" /></td>
+ </tr>
+ </table>
+ <input type="hidden" name="CurrentAmount" value="' . $SelectedTab['0']. '" />
+ <input type="hidden" name="SelectedTabs" value="' . $SelectedTabs . '" />
+ <input type="hidden" name="Days" value="' .$Days. '" />
+ <input type="hidden" name="SelectedTabsTo" value="' . $SelectedTabsTo[1] . '" />
+ <input type="hidden" name="SelectedTabsToAmt" value="' . $SelectedTabsTo[0] . '" />
+ <br />
+ <div class="centre">
+ <input type="submit" name="submit" value="' . _('Accept') . '" />
+ <input type="submit" name="Cancel" value="' . _('Cancel') . '" /></div>
+ </div>
+ </form>';
+
+}
+
+include('includes/footer.inc');
+?>
Modified: trunk/includes/MainMenuLinksArray.php
===================================================================
--- trunk/includes/MainMenuLinksArray.php 2016-08-25 21:05:53 UTC (rev 7604)
+++ trunk/includes/MainMenuLinksArray.php 2016-08-31 06:32:57 UTC (rev 7605)
@@ -446,10 +446,12 @@
'/MaintenanceTasks.php');
$MenuItems['PC']['Transactions']['Caption'] = array(_('Assign Cash to PC Tab'),
+ _('Cash Transfer Between Tabs'),
_('Claim Expenses From PC Tab'),
_('Expenses Authorisation'));
$MenuItems['PC']['Transactions']['URL'] = array('/PcAssignCashToTab.php',
+ '/PcAssignCashTabToTab.php',
'/PcClaimExpensesFromTab.php',
'/PcAuthorizeExpenses.php');
Modified: trunk/sql/mysql/upgrade4.13-4.13.1.sql
===================================================================
--- trunk/sql/mysql/upgrade4.13-4.13.1.sql 2016-08-25 21:05:53 UTC (rev 7604)
+++ trunk/sql/mysql/upgrade4.13-4.13.1.sql 2016-08-31 06:32:57 UTC (rev 7605)
@@ -8,5 +8,6 @@
-- standardise transaction date to DATE type:
ALTER TABLE `debtortrans` CHANGE `trandate` `trandate` DATE NOT NULL DEFAULT '0000-00-00';
ALTER table supplierdiscounts CONVERT TO CHARACTER SET utf8;
+INSERT INTO scripts VALUES ('PcAssignCashTabToTab.php',12,'Assign cash from one tab to another');
|