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'); |