This list is closed, nobody may subscribe to it.
2011 |
Jan
(14) |
Feb
(42) |
Mar
(56) |
Apr
(60) |
May
(54) |
Jun
(48) |
Jul
(74) |
Aug
(52) |
Sep
(68) |
Oct
(64) |
Nov
(42) |
Dec
(62) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2012 |
Jan
(142) |
Feb
(270) |
Mar
(374) |
Apr
(230) |
May
(214) |
Jun
(116) |
Jul
(234) |
Aug
(66) |
Sep
(120) |
Oct
(16) |
Nov
(17) |
Dec
(41) |
2013 |
Jan
(19) |
Feb
(18) |
Mar
(8) |
Apr
(40) |
May
(121) |
Jun
(42) |
Jul
(127) |
Aug
(145) |
Sep
(27) |
Oct
(38) |
Nov
(83) |
Dec
(61) |
2014 |
Jan
(33) |
Feb
(35) |
Mar
(59) |
Apr
(41) |
May
(38) |
Jun
(45) |
Jul
(17) |
Aug
(58) |
Sep
(46) |
Oct
(51) |
Nov
(55) |
Dec
(36) |
2015 |
Jan
(57) |
Feb
(67) |
Mar
(70) |
Apr
(34) |
May
(32) |
Jun
(11) |
Jul
(3) |
Aug
(17) |
Sep
(16) |
Oct
(13) |
Nov
(30) |
Dec
(30) |
2016 |
Jan
(17) |
Feb
(12) |
Mar
(17) |
Apr
(20) |
May
(47) |
Jun
(15) |
Jul
(13) |
Aug
(30) |
Sep
(32) |
Oct
(20) |
Nov
(32) |
Dec
(24) |
2017 |
Jan
(16) |
Feb
|
Mar
(11) |
Apr
(11) |
May
(5) |
Jun
(42) |
Jul
(9) |
Aug
(10) |
Sep
(14) |
Oct
(15) |
Nov
(2) |
Dec
(29) |
2018 |
Jan
(28) |
Feb
(49) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <rc...@us...> - 2016-10-31 15:23:58
|
Revision: 7655 http://sourceforge.net/p/web-erp/reponame/7655 Author: rchacon Date: 2016-10-31 15:23:56 +0000 (Mon, 31 Oct 2016) Log Message: ----------- In SecurityTokens.php: Fix Description's input maxlength, fix table head in data table, move form-tables after data table, add cancel button in edit form table, add return button, add style to print data table, add title in form tables, regroup code, change from if/elseif to switch/case to improve code readability, and add code documentation. Modified Paths: -------------- trunk/SecurityTokens.php Modified: trunk/SecurityTokens.php =================================================================== --- trunk/SecurityTokens.php 2016-10-31 03:29:41 UTC (rev 7654) +++ trunk/SecurityTokens.php 2016-10-31 15:23:56 UTC (rev 7655) @@ -8,86 +8,100 @@ $BookMark = 'SecurityTokens';// Pending ? include('includes/header.inc'); -if(isset($_GET['SelectedToken'])) { - if($_GET['Action'] == 'delete'){ - $Result = DB_query("SELECT script FROM scripts WHERE pagesecurity='" . $_GET['SelectedToken'] . "'"); - if(DB_num_rows($Result)>0) { - prnMsg(_('This secuirty token is currently used by the following scripts and cannot be deleted'), 'error'); - echo '<table> - <tr>'; - $i = 0; - while($ScriptRow = DB_fetch_array($Result)) { - if($i == 5){ - $i = 0; - echo '</tr> - <tr>'; - } - $i++; - echo '<td>', $ScriptRow['script'], '</td>'; - } - echo '</tr></table>'; - } else { - $Result = DB_query("DELETE FROM securitytokens WHERE tokenid='" . $_GET['SelectedToken'] . "'"); - } - } else {// It must be an edit - $Sql = "SELECT tokenid, tokenname - FROM securitytokens - WHERE tokenid='" . $_GET['SelectedToken'] . "'"; - $Result = DB_query($Sql); - $MyRow = DB_fetch_array($Result); - $_POST['TokenID'] = $MyRow['tokenid']; - $_POST['TokenDescription'] = $MyRow['tokenname']; - } +// Merge gets into posts: +if(isset($_GET['Action'])) { + $_POST['Action'] = $_GET['Action']; } -if(!isset($_POST['TokenID'])) { - $_POST['TokenID'] = ''; - $_POST['TokenDescription'] = ''; +if(isset($_GET['TokenId'])) { + $_POST['TokenId'] = $_GET['TokenId']; } +if(isset($_GET['TokenDescription'])) { + $_POST['TokenDescription'] = $_GET['TokenDescription']; +} +// Validate the data sent: $InputError = 0; - -if(isset($_POST['Submit']) OR isset($_POST['Update'])) { - if(!is_numeric($_POST['TokenID'])) { +if($_POST['Action']=='insert' OR $_POST['Action']=='update') { + if(!is_numeric($_POST['TokenId'])) { prnMsg(_('The token ID is expected to be a number. Please enter a number for the token ID'), 'error'); $InputError = 1; - } + if(mb_strlen($_POST['TokenId']) == 0) { + prnMsg(_('A token ID must be entered'), 'error'); + $InputError = 1; + } if(mb_strlen($_POST['TokenDescription']) == 0) { prnMsg(_('A token description must be entered'), 'error'); $InputError = 1; } } -if(isset($_POST['Submit'])) { - $TestSql = "SELECT tokenid FROM securitytokens WHERE tokenid='" . $_POST['TokenID'] . "'"; - $TestResult = DB_query($TestSql); - if(DB_num_rows($TestResult)!=0) { - prnMsg( _('This token ID has already been used. Please use a new one') , 'warn'); - $InputError = 1; - } - if($InputError == 0) { - $Sql = "INSERT INTO securitytokens values('" . $_POST['TokenID'] . "', '" . $_POST['TokenDescription'] . "')"; - $Result = DB_query($Sql); - $_POST['TokenID'] = ''; - $_POST['TokenDescription'] = ''; - } -} +// Execute the requested action: +switch($_POST['Action']) { + case 'cancel': + unset($_POST['Action']); + unset($_POST['TokenId']); + unset($_POST['TokenDescription']); + break; + case 'delete': + $Result = DB_query("SELECT script FROM scripts WHERE pagesecurity='" . $_POST['TokenId'] . "'"); + if(DB_num_rows($Result) > 0) { + $List = ''; + while($ScriptRow = DB_fetch_array($Result)) { + $List .= ' ' . $ScriptRow['script']; + } + prnMsg(_('This secuirty token is currently used by the following scripts and cannot be deleted') . ':' . $List, 'error'); + } else { + $Result = DB_query("DELETE FROM securitytokens WHERE tokenid='" . $_POST['TokenId'] . "'"); + if($Result) {prnMsg(_('The security token was deleted successfully'), 'success');} + } + unset($_POST['Action']); + unset($_POST['TokenId']); + unset($_POST['TokenDescription']); + break; + case 'edit': + $Result = DB_query("SELECT tokenid, tokenname FROM securitytokens WHERE tokenid='" . $_POST['TokenId'] . "'"); + $MyRow = DB_fetch_array($Result); + // Keeps $_POST['Action']=edit, and sets $_POST['TokenId'] and $_POST['TokenDescription']. + $_POST['TokenId'] = $MyRow['tokenid']; + $_POST['TokenDescription'] = $MyRow['tokenname']; + break; + case 'insert': + $Result = DB_query("SELECT tokenid FROM securitytokens WHERE tokenid='" . $_POST['TokenId'] . "'"); + if(DB_num_rows($Result) != 0) { + prnMsg( _('This token ID has already been used. Please use a new one') , 'warn'); + $InputError = 1; + } + if($InputError == 0) { + $Result = DB_query("INSERT INTO securitytokens values('" . $_POST['TokenId'] . "', '" . $_POST['TokenDescription'] . "')"); + if($Result) {prnMsg(_('The security token was inserted successfully'), 'success');} + unset($_POST['Action']); + unset($_POST['TokenId']); + unset($_POST['TokenDescription']); + } + break; + case 'update': + if($InputError == 0) { + $Result = DB_query("UPDATE securitytokens SET tokenname='" . $_POST['TokenDescription'] . "' WHERE tokenid='" . $_POST['TokenId'] . "'"); + if($Result) {prnMsg(_('The security token was updated successfully'), 'success');} + unset($_POST['Action']); + unset($_POST['TokenId']); + unset($_POST['TokenDescription']); + } + break; + default:// Unknown requested action. + prnMsg(_('Unknown requested action'), 'error'); + unset($_POST['Action']); + unset($_POST['TokenId']); + unset($_POST['TokenDescription']); +}// END switch($_POST['Action']). -if(isset($_POST['Update']) AND $InputError == 0) { - $Sql = "UPDATE securitytokens - SET tokenname='" . $_POST['TokenDescription'] . "' - WHERE tokenid='" . $_POST['TokenID'] . "'"; - $Result = DB_query($Sql); - $_POST['TokenDescription'] = ''; - $_POST['TokenID'] = ''; -} - echo '<p class="page_title_text"><img alt="" src="', $RootPath, '/css/', $Theme, '/images/maintenance.png" title="', // Icon image. $Title, '" /> ', // Icon title. - $Title, '</p>';// Page title. - -echo '<table class="selection"> + $Title, '</p>', // Page title. +// Security Token Data table: + '<table class="selection"> <thead> <tr> <th>', _('Token ID'), '</th> @@ -95,63 +109,67 @@ <th class="noprint" colspan="2"> </th> </tr> </thead><tbody>'; -$Sql = "SELECT tokenid, tokenname FROM securitytokens ORDER BY tokenid"; -$Result = DB_query($Sql); +$Result = DB_query("SELECT tokenid, tokenname FROM securitytokens ORDER BY tokenid"); while($MyRow = DB_fetch_array($Result)) { echo '<tr> <td class="number">', $MyRow['tokenid'], '</td> <td class="text">', htmlspecialchars($MyRow['tokenname'], ENT_QUOTES, 'UTF-8'), '</td> - <td class="noprint"><a href="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '?SelectedToken=', $MyRow['tokenid'], '&Action=edit">', _('Edit'), '</a></td> - <td class="noprint"><a href="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '?SelectedToken=', $MyRow['tokenid'], '&Action=delete" onclick="return confirm(\'', _('Are you sure you wish to delete this security token?'), '\');">', _('Delete'), '</a></td> + <td class="noprint"><a href="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '?Action=edit&TokenId=', $MyRow['tokenid'], '">', _('Edit'), '</a></td> + <td class="noprint"><a href="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '?Action=delete&TokenId=', $MyRow['tokenid'], '" onclick="return confirm(\'', _('Are you sure you wish to delete this security token?'), '\');">', _('Delete'), '</a></td> </tr>'; } -echo '</tbody></table>'; - -echo '<br /> - <form action="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '" id="form" method="post"> - <input name="FormID" type="hidden" value="' . $_SESSION['FormID'] . '" /> +echo '</tbody></table> + <br /> + <form action="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '" id="form" method="post"> + <input name="FormID" type="hidden" value="', $_SESSION['FormID'], '" /> <table class="noprint"> <thead> <tr> <th colspan="2">'; - -if(isset($_GET['Action']) and $_GET['Action']=='edit') { - echo ('Edit'), '</th>', +// Edit or New Security Token form table: +if(isset($_POST['Action']) and $_POST['Action']=='edit') { + echo ('Edit Security Token'), '</th>', '</tr> </thead><tfoot>', '<tr> <td colspan="2" class="centre">', - '<button name="Update" type="submit" value="', _('Update'), '"><img alt="" src="', $RootPath, '/css/', $Theme, + '<button name="Action" type="submit" value="update"><img alt="" src="', $RootPath, '/css/', $Theme, '/images/tick.svg" /> ', _('Update'), '</button>', // "Update" button. + '<button formaction="SecurityTokens.php?Action=cancel" type="submit"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/cross.svg" /> ', _('Cancel'), '</button>', // "Cancel" button. + '<button onclick="window.location=\'index.php?Application=system\'" type="button"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/return.svg" /> ', _('Return'), '</button>', // "Return" button. '</td>', '</tr> </tfoot><tbody>', '<tr> <td>', _('Token ID'), '</td> - <td>', $_GET['SelectedToken'], '<input name="TokenID" type="hidden" value="', $_GET['SelectedToken'], '" />'; + <td>', $_POST['TokenId'], '<input name="TokenId" type="hidden" value="'; } else { - echo ('Insert'), '</th>', + echo ('New Security Token'), '</th>', '</tr> </thead><tfoot>', '<tr> <td colspan="2" class="centre">', - '<button name="Submit" type="submit" value="', _('Insert'), '"><img alt="" src="', $RootPath, '/css/', $Theme, + '<button name="Action" type="submit" value="insert"><img alt="" src="', $RootPath, '/css/', $Theme, '/images/tick.svg" /> ', _('Insert'), '</button>', // "Insert" button. + '<button onclick="window.location=\'index.php?Application=system\'" type="button"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/return.svg" /> ', _('Return'), '</button>', // "Return" button. '</td>', '</tr> </tfoot><tbody>', '<tr> - <td><label for="TokenID">', _('Token ID'), '</label></td> - <td><input autofocus="autofocus" class="number" id="TokenID" maxlength="4" name="TokenID" required="required" size="6" type="text" value="', $_POST['TokenID'], '" />'; + <td><label for="TokenId">', _('Token ID'), '</label></td> + <td><input autofocus="autofocus" class="number" id="TokenId" maxlength="4" name="TokenId" required="required" size="6" type="text" value="'; } -echo '</td> +echo $_POST['TokenId'], '" /></td> </tr> <tr> <td><label for="TokenDescription">', _('Description'), '</label></td> - <td><input id="TokenDescription" maxlength="50" name="TokenDescription" required="required" size="50" title="', _('The security token description should describe which functions this token allows a user/role to access'), '" type="text" value="', $_POST['TokenDescription'], '" /></td> + <td><input id="TokenDescription" maxlength="60" name="TokenDescription" required="required" size="50" title="', _('The security token description should describe which functions this token allows a user/role to access'), '" type="text" value="', $_POST['TokenDescription'], '" /></td> </tr> </table> </form>'; include('includes/footer.inc'); -?> +?> \ No newline at end of file |
From: <rc...@us...> - 2016-10-31 03:29:43
|
Revision: 7654 http://sourceforge.net/p/web-erp/reponame/7654 Author: rchacon Date: 2016-10-31 03:29:41 +0000 (Mon, 31 Oct 2016) Log Message: ----------- On SupplierPriceList.php, add ViewTopic and BookMark, and complete html table. Add info to manual. Modified Paths: -------------- trunk/SupplierPriceList.php trunk/doc/Change.log trunk/doc/Manual/ManualInventory.html trunk/doc/Manual/ManualPurchaseOrdering.html Modified: trunk/SupplierPriceList.php =================================================================== --- trunk/SupplierPriceList.php 2016-10-24 01:18:52 UTC (rev 7653) +++ trunk/SupplierPriceList.php 2016-10-31 03:29:41 UTC (rev 7654) @@ -1,11 +1,13 @@ <?php +/* $Id: SupplierPriceList.php 6941 2014-10-26 23:18:08Z daintree $*/ +/* Maintain Supplier Price Lists */ -include ('includes/session.inc'); - +include('includes/session.inc'); $Title = _('Supplier Purchasing Data'); +$ViewTopic = 'PurchaseOrdering'; +$BookMark = 'SupplierPriceList'; +include('includes/header.inc'); -include ('includes/header.inc'); - if (isset($_POST['StockSearch'])) { echo '<form action="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '" method="post"> <div> @@ -540,6 +542,7 @@ <th>' . _('Effective From') . '</th> <th>' . _('Suppliers Item Code') . '</th> <th>' . _('Min Order Qty') . '</th> + <th>', _('Save'), '</th> </tr>'; if (isset($_POST['Select'])) { Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-10-24 01:18:52 UTC (rev 7653) +++ trunk/doc/Change.log 2016-10-31 03:29:41 UTC (rev 7654) @@ -1,6 +1,7 @@ webERP Change Log -17/10/16 Phil: Fix SQL in ReverseGRN.php as reported by Ricard/Tim +30/10/16 RChacon: On SupplierPriceList.php, add ViewTopic and BookMark, and complete html table. Add info to manual. +17/10/16 Phil: Fix SQL in ReverseGRN.php as reported by Ricard/Tim. 16/10/16 RChacon: Fix function convertDate(dS,dF). 05/10/16 Eatong: Format the ManualAPITutorial.html for easier reading. 05/10/16 Eatong: Add CSS rule for <pre> for easier reading. Modified: trunk/doc/Manual/ManualInventory.html =================================================================== --- trunk/doc/Manual/ManualInventory.html 2016-10-24 01:18:52 UTC (rev 7653) +++ trunk/doc/Manual/ManualInventory.html 2016-10-31 03:29:41 UTC (rev 7654) @@ -126,7 +126,7 @@ </ul>Entry of the base information is done from the menu, select the inventory tab and click "Add a New Inventory Item". <p> - <h3>Item Code</h3> + <h3><a id="ItemCode">Item Code</a></h3> <p>A stock code is required for each stock item, this can be any combination of characters up to 20 characters long. The coding structure of stock items should be considered, to ensure that like stock items appear together. Internally the system looks at the code to order stock items in the various look up tables. A systematic approach to naming stock items can save a lot of time later. However, good facilities are available to search. Under supplier purchasing data it is also possible to record the supplier's part number against an item.</p> Modified: trunk/doc/Manual/ManualPurchaseOrdering.html =================================================================== --- trunk/doc/Manual/ManualPurchaseOrdering.html 2016-10-24 01:18:52 UTC (rev 7653) +++ trunk/doc/Manual/ManualPurchaseOrdering.html 2016-10-31 03:29:41 UTC (rev 7654) @@ -150,7 +150,7 @@ <a class="minitext" href="#top">⬆ Top</a> </div> -<h2>Recieving Purchase Orders</h2> +<h2>Receiving Purchase Orders</h2> <ul> <li>When the supplier delivers the goods to the warehouse , the stock manager will log into webERP</li> @@ -175,4 +175,29 @@ <p>The goods received note should signed off by the person who received the goods - optionally a copy to the supplier's driver. </p> <p>An alternative short-cut method is also provided for auto-receiving purchase orders at the prices defined in the purchase order, for authorised purchase orders. After having entered a purchase order or modified a purchase order a link to automatically receive the entire order and create the supplier invoice will show if the order is authorised. This will happen automatically if the configuration option to auto authorise purchase orders is set and the user creating or modifying the order is authorised to do so. Clicking this link will receive all the items on the purchase order to the extent there is any quantity yet to be received. However, this program cannot handle controlled items. If there is even one line of controlled/serialised stock on the purchase order then this facility cannot be used.</p> +<div class="floatright"> + <a class="minitext" href="#top">⬆ Top</a> +</div> +<h2>Maintenance</h2> + +<h3><a id="SupplierPriceList">Maintain Supplier Price Lists</a></h3> + +<p>Use this script to maintain supplier price lists used in purchase orders.</p> +<p>Fields (columns):</p> +<ul> +<li><b>StockID</b>. The item code used in the company. See <a href="ManualContents.php?ViewTopic=Inventory#ItemCode">Item Code</a>.</li> +<li><b>Description</b>. The short part description (title) used in the company. See <a href="ManualContents.php?ViewTopic=Inventory#ItemCode">Part Descriptions</a>.</li> +<li><b>Price</b>. Sales price from supplier to company, without taxes.</li> +<li><b>Suppliers UOM</b>. Unit of measure used by the supplier.</li> +<li><b>Conversion Factor</b>. Quantity of company UOM in supplier's UOM. E.g. Quantity of retail units in a wholesale unit.</li> +<li><b>Suppliers Description</b>. The short part description (title) used by supplier in his documents.</li> +<li><b>Lead Time</b>. .</li> +<li><b>Preferred</b>. All the items with this stock Id will be purchased to this supplier?</li> +<li><b>Effective From</b>. Start date.</li> +<li><b>Suppliers Item Code</b>. The item code used by supplier in his documents.</li> +<li><b>Min Order Qty</b>. Minimal quantity sold by the supplier.</li> +<li><b>Save</b>. To commit info.</li> +</ul> + + <!-- Help End: PurchaseOrdering --> \ No newline at end of file |
From: <rc...@us...> - 2016-10-24 01:18:54
|
Revision: 7653 http://sourceforge.net/p/web-erp/reponame/7653 Author: rchacon Date: 2016-10-24 01:18:52 +0000 (Mon, 24 Oct 2016) Log Message: ----------- Fixes column, adds buttons, formats code and moves form after selected table. Modified Paths: -------------- trunk/SecurityTokens.php trunk/includes/ConnectDB_mysql.inc trunk/includes/ConnectDB_mysqli.inc trunk/includes/ConnectDB_postgres.inc trunk/locale/es_ES.utf8/LC_MESSAGES/messages.mo trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po Modified: trunk/SecurityTokens.php =================================================================== --- trunk/SecurityTokens.php 2016-10-23 19:27:31 UTC (rev 7652) +++ trunk/SecurityTokens.php 2016-10-24 01:18:52 UTC (rev 7653) @@ -1,138 +1,157 @@ <?php +/* $Id: SecurityTokens.php 4424 2010-12-22 16:27:45Z tim_schofield $ */ +/* Administration of security tokens */ -/* $Id: SecurityTokens.php 4424 2010-12-22 16:27:45Z tim_schofield $*/ - include('includes/session.inc'); $Title = _('Maintain Security Tokens'); - +$ViewTopic = 'SecuritySchema'; +$BookMark = 'SecurityTokens';// Pending ? include('includes/header.inc'); -if (isset($_GET['SelectedToken'])) { - if ($_GET['Action']=='delete'){ +if(isset($_GET['SelectedToken'])) { + if($_GET['Action'] == 'delete'){ $Result = DB_query("SELECT script FROM scripts WHERE pagesecurity='" . $_GET['SelectedToken'] . "'"); - if (DB_num_rows($Result)>0){ - prnMsg(_('This secuirty token is currently used by the following scripts and cannot be deleted'),'error'); + if(DB_num_rows($Result)>0) { + prnMsg(_('This secuirty token is currently used by the following scripts and cannot be deleted'), 'error'); echo '<table> <tr>'; - $i=0; - while ($ScriptRow = DB_fetch_array($Result)){ - if ($i==5){ - $i=0; + $i = 0; + while($ScriptRow = DB_fetch_array($Result)) { + if($i == 5){ + $i = 0; echo '</tr> <tr>'; } $i++; - echo '<td>' . $ScriptRow['script'] . '</td>'; + echo '<td>', $ScriptRow['script'], '</td>'; } echo '</tr></table>'; } else { $Result = DB_query("DELETE FROM securitytokens WHERE tokenid='" . $_GET['SelectedToken'] . "'"); } - } else { // it must be an edit - $sql="SELECT tokenid, - tokenname + } else {// It must be an edit + $Sql = "SELECT tokenid, tokenname FROM securitytokens - WHERE tokenid='".$_GET['SelectedToken']."'"; - $Result= DB_query($sql); - $myrow = DB_fetch_array($Result,$db); - $_POST['TokenID']=$myrow['tokenid']; - $_POST['TokenDescription']=$myrow['tokenname']; + WHERE tokenid='" . $_GET['SelectedToken'] . "'"; + $Result = DB_query($Sql); + $MyRow = DB_fetch_array($Result); + $_POST['TokenID'] = $MyRow['tokenid']; + $_POST['TokenDescription'] = $MyRow['tokenname']; } } -if (!isset($_POST['TokenID'])){ - $_POST['TokenID']=''; - $_POST['TokenDescription']=''; +if(!isset($_POST['TokenID'])) { + $_POST['TokenID'] = ''; + $_POST['TokenDescription'] = ''; } -$InputError =0; +$InputError = 0; -if (isset($_POST['Submit']) OR isset($_POST['Update'])){ - if (!is_numeric($_POST['TokenID'])){ - prnMsg(_('The token ID is expected to be a number. Please enter a number for the token ID'),'error'); +if(isset($_POST['Submit']) OR isset($_POST['Update'])) { + if(!is_numeric($_POST['TokenID'])) { + prnMsg(_('The token ID is expected to be a number. Please enter a number for the token ID'), 'error'); $InputError = 1; + } - if (mb_strlen($_POST['TokenDescription'])==0){ - prnMsg(_('A token description must be entered'),'error'); + if(mb_strlen($_POST['TokenDescription']) == 0) { + prnMsg(_('A token description must be entered'), 'error'); $InputError = 1; } } -if (isset($_POST['Submit'])) { - - $TestSQL="SELECT tokenid FROM securitytokens WHERE tokenid='".$_POST['TokenID']."'"; - $TestResult=DB_query($TestSQL); - if (DB_num_rows($TestResult)!=0) { +if(isset($_POST['Submit'])) { + $TestSql = "SELECT tokenid FROM securitytokens WHERE tokenid='" . $_POST['TokenID'] . "'"; + $TestResult = DB_query($TestSql); + if(DB_num_rows($TestResult)!=0) { prnMsg( _('This token ID has already been used. Please use a new one') , 'warn'); $InputError = 1; } - if ($InputError == 0){ - $sql = "INSERT INTO securitytokens values('".$_POST['TokenID']."', '".$_POST['TokenDescription']."')"; - $Result= DB_query($sql); - $_POST['TokenID']=''; - $_POST['TokenDescription']=''; + if($InputError == 0) { + $Sql = "INSERT INTO securitytokens values('" . $_POST['TokenID'] . "', '" . $_POST['TokenDescription'] . "')"; + $Result = DB_query($Sql); + $_POST['TokenID'] = ''; + $_POST['TokenDescription'] = ''; } } -if (isset($_POST['Update']) AND $InputError == 0) { - $sql = "UPDATE securitytokens - SET tokenname='".$_POST['TokenDescription'] . "' - WHERE tokenid='".$_POST['TokenID']."'"; - $Result= DB_query($sql); - $_POST['TokenDescription']=''; - $_POST['TokenID']=''; +if(isset($_POST['Update']) AND $InputError == 0) { + $Sql = "UPDATE securitytokens + SET tokenname='" . $_POST['TokenDescription'] . "' + WHERE tokenid='" . $_POST['TokenID'] . "'"; + $Result = DB_query($Sql); + $_POST['TokenDescription'] = ''; + $_POST['TokenID'] = ''; } -echo '<p class="page_title_text"><img src="'.$RootPath.'/css/'.$Theme.'/images/maintenance.png" title="' . - _('Print') . '" alt="" />' . ' ' . $Title . '</p> - <form method="post" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '" id="form"> - <div> - <input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" /> - <br /> - <table> - <tr>'; -if (isset($_GET['Action']) and $_GET['Action']=='edit') { - echo '<td>' . _('Description') . '</td> - <td><input type="text" size="50" autofocus="autofocus" required="required" maxlength="50" name="TokenDescription" value="'.$_POST['TokenDescription'] .'" /></td> - <td><input type="hidden" name="TokenID" value="'.$_GET['SelectedToken'].'" /> - <input type="submit" name="Update" value="' . _('Update') . '" />'; -} else { - echo '<td>' . _('Token ID') . '</td> - <td><input type="text" autofocus="autofocus" required="required" class="integer" name="TokenID" value="'.$_POST['TokenID'].'" /></td> +echo '<p class="page_title_text"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/maintenance.png" title="', // Icon image. + $Title, '" /> ', // Icon title. + $Title, '</p>';// Page title. + +echo '<table class="selection"> + <thead> + <tr> + <th>', _('Token ID'), '</th> + <th>', _('Description'), '</th> + <th class="noprint" colspan="2"> </th> </tr> - <tr> - <td>' . _('Description') . '</td> - <td><input type="text" required="required" size="50" maxlength="50" name="TokenDescription" value="'.$_POST['TokenDescription'] .'" title="' . _( - 'The security token description should describe which functions this token allows a user/role to access') . '" /></td> - <td><input type="submit" name="Submit" value="' . _('Insert') . '" />'; + </thead><tbody>'; +$Sql = "SELECT tokenid, tokenname FROM securitytokens ORDER BY tokenid"; +$Result = DB_query($Sql); +while($MyRow = DB_fetch_array($Result)) { + echo '<tr> + <td class="number">', $MyRow['tokenid'], '</td> + <td class="text">', htmlspecialchars($MyRow['tokenname'], ENT_QUOTES, 'UTF-8'), '</td> + <td class="noprint"><a href="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '?SelectedToken=', $MyRow['tokenid'], '&Action=edit">', _('Edit'), '</a></td> + <td class="noprint"><a href="', htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'), '?SelectedToken=', $MyRow['tokenid'], '&Action=delete" onclick="return confirm(\'', _('Are you sure you wish to delete this security token?'), '\');">', _('Delete'), '</a></td> + </tr>'; } +echo '</tbody></table>'; -echo '</td> - </tr> - </table> - <br />'; +echo '<br /> + <form action="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '" id="form" method="post"> + <input name="FormID" type="hidden" value="' . $_SESSION['FormID'] . '" /> + <table class="noprint"> + <thead> + <tr> + <th colspan="2">'; -echo '</div> - </form>'; - -echo '<table class="selection">'; -echo '<tr> - <th>' . _('Token ID') . '</th> - <th>' . _('Description'). '</th> - </tr>'; - -$sql="SELECT tokenid, tokenname FROM securitytokens ORDER BY tokenid"; -$Result= DB_query($sql); - -while ($myrow = DB_fetch_array($Result,$db)){ - echo '<tr> - <td>' . $myrow['tokenid'] . '</td> - <td>' . htmlspecialchars($myrow['tokenname'],ENT_QUOTES,'UTF-8') . '</td> - <td><a href="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '?SelectedToken=' . $myrow['tokenid'] . '&Action=edit">' . _('Edit') . '</a></td> - <td><a href="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '?SelectedToken=' . $myrow['tokenid'] . '&Action=delete" onclick="return confirm(\'' . _('Are you sure you wish to delete this security token?') . '\');">' . _('Delete') . '</a></td> - </tr>'; +if(isset($_GET['Action']) and $_GET['Action']=='edit') { + echo ('Edit'), '</th>', + '</tr> + </thead><tfoot>', + '<tr> + <td colspan="2" class="centre">', + '<button name="Update" type="submit" value="', _('Update'), '"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/tick.svg" /> ', _('Update'), '</button>', // "Update" button. + '</td>', + '</tr> + </tfoot><tbody>', + '<tr> + <td>', _('Token ID'), '</td> + <td>', $_GET['SelectedToken'], '<input name="TokenID" type="hidden" value="', $_GET['SelectedToken'], '" />'; +} else { + echo ('Insert'), '</th>', + '</tr> + </thead><tfoot>', + '<tr> + <td colspan="2" class="centre">', + '<button name="Submit" type="submit" value="', _('Insert'), '"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/tick.svg" /> ', _('Insert'), '</button>', // "Insert" button. + '</td>', + '</tr> + </tfoot><tbody>', + '<tr> + <td><label for="TokenID">', _('Token ID'), '</label></td> + <td><input autofocus="autofocus" class="number" id="TokenID" maxlength="4" name="TokenID" required="required" size="6" type="text" value="', $_POST['TokenID'], '" />'; } +echo '</td> + </tr> + <tr> + <td><label for="TokenDescription">', _('Description'), '</label></td> + <td><input id="TokenDescription" maxlength="50" name="TokenDescription" required="required" size="50" title="', _('The security token description should describe which functions this token allows a user/role to access'), '" type="text" value="', $_POST['TokenDescription'], '" /></td> + </tr> + </table> + </form>'; -echo '</table>'; - include('includes/footer.inc'); ?> Modified: trunk/includes/ConnectDB_mysql.inc =================================================================== --- trunk/includes/ConnectDB_mysql.inc 2016-10-23 19:27:31 UTC (rev 7652) +++ trunk/includes/ConnectDB_mysql.inc 2016-10-24 01:18:52 UTC (rev 7653) @@ -1,6 +1,6 @@ <?php - /* $Id$ */ +/* Database abstraction for mysql */ define ('LIKE','LIKE'); @@ -122,9 +122,8 @@ Return $RowPointer; } -function DB_fetch_array (&$ResultIndex) { - - $RowPointer=mysql_fetch_array($ResultIndex); +function DB_fetch_array(&$ResultIndex) { + $RowPointer = mysql_fetch_array($ResultIndex); Return $RowPointer; } Modified: trunk/includes/ConnectDB_mysqli.inc =================================================================== --- trunk/includes/ConnectDB_mysqli.inc 2016-10-23 19:27:31 UTC (rev 7652) +++ trunk/includes/ConnectDB_mysqli.inc 2016-10-24 01:18:52 UTC (rev 7653) @@ -1,6 +1,6 @@ <?php - /* $Id$ */ +/* Database abstraction for mysqli */ /* PeterMoulding.com 20071102 Change from mysql to mysqli; @@ -129,8 +129,8 @@ Return $RowPointer; } -function DB_fetch_array (&$ResultIndex) { - $RowPointer=mysqli_fetch_array($ResultIndex); +function DB_fetch_array(&$ResultIndex) { + $RowPointer = mysqli_fetch_array($ResultIndex); Return $RowPointer; } Modified: trunk/includes/ConnectDB_postgres.inc =================================================================== --- trunk/includes/ConnectDB_postgres.inc 2016-10-23 19:27:31 UTC (rev 7652) +++ trunk/includes/ConnectDB_postgres.inc 2016-10-24 01:18:52 UTC (rev 7653) @@ -1,6 +1,6 @@ <?php - /* $Id$ */ +/* Database abstraction for postgres */ define ('LIKE','ILIKE'); /* $PgConnStr = $PgConnStr = "host=".$host." dbname=".$_SESSION['DatabaseName']; */ @@ -84,8 +84,8 @@ Return $RowPointer; } -function DB_fetch_array (&$ResultIndex) { - $RowPointer=pg_fetch_array($ResultIndex); +function DB_fetch_array(&$ResultIndex) { + $RowPointer = pg_fetch_array($ResultIndex); Return $RowPointer; } Modified: trunk/locale/es_ES.utf8/LC_MESSAGES/messages.mo =================================================================== (Binary files differ) Modified: trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po =================================================================== --- trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po 2016-10-23 19:27:31 UTC (rev 7652) +++ trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po 2016-10-24 01:18:52 UTC (rev 7653) @@ -8,7 +8,7 @@ "Project-Id-Version: webERP 4.12.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-05-16 21:31+1200\n" -"PO-Revision-Date: 2016-10-23 13:23-0600\n" +"PO-Revision-Date: 2016-10-23 13:47-0600\n" "Last-Translator: Rafael E. Chacón <raf...@gm...>\n" "Language-Team: TecnoSoluciones.com <web...@te...>\n" "Language: es_ES\n" @@ -36535,7 +36535,7 @@ #: SystemParameters.php:500 msgid "Sales Order Allows Same Item Multiple Times" -msgstr "La Orden de Venta permite el mismo Artículo muchas veces" +msgstr "La orden de venta permite el mismo artículo varias veces" #: SystemParameters.php:508 msgid "Order Entry allows Line Item Narrative" @@ -36843,6 +36843,8 @@ "Set to Automatic - Supplier codes are automatically created - as a " "sequential number" msgstr "" +"Establecida en automático - los códigos de proveedores se crean " +"automáticamente - como un número secuencial" #: SystemParameters.php:714 msgid "Could not load tax categories table" @@ -36942,7 +36944,7 @@ #: SystemParameters.php:787 SystemParameters.php:792 msgid "The input must between 0 and 100" -msgstr "" +msgstr "La entrada debe ser entre 0 y 100" #: SystemParameters.php:787 msgid "integer between 0 and 100" @@ -37125,7 +37127,7 @@ #: SystemParameters.php:872 msgid "Number Of Month Must Be Shown" -msgstr "El número de mes se debe demostrar" +msgstr "Cantidad de meses a mostrar" #: SystemParameters.php:873 msgid "input must be positive integer" @@ -37136,8 +37138,8 @@ "Number of month must be shown on report can be changed with this parameters " "ex: in CustomerInquiry.php " msgstr "" -"La cantidad de meses a mostrar por omisión en el informe se puede cambiar " -"con este parámetro. E.g. en CustomerInquiry.php" +"La cantidad de meses a mostrar en un informe se puede cambiar con este " +"parámetro. E.g. en CustomerInquiry.php" #: SystemParameters.php:878 msgid "The directory where images are stored" |
From: <rc...@us...> - 2016-10-23 19:27:33
|
Revision: 7652 http://sourceforge.net/p/web-erp/reponame/7652 Author: rchacon Date: 2016-10-23 19:27:31 +0000 (Sun, 23 Oct 2016) Log Message: ----------- Improve comments, and Spanish translation. Modified Paths: -------------- trunk/ConfirmDispatch_Invoice.php trunk/locale/es_ES.utf8/LC_MESSAGES/messages.mo trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po Modified: trunk/ConfirmDispatch_Invoice.php =================================================================== --- trunk/ConfirmDispatch_Invoice.php 2016-10-20 07:25:57 UTC (rev 7651) +++ trunk/ConfirmDispatch_Invoice.php 2016-10-23 19:27:31 UTC (rev 7652) @@ -1427,13 +1427,13 @@ $DisposalResult = DB_query( $SQL,$ErrMsg,$DbgMsg); $DisposalRow = DB_fetch_array($DisposalResult); - /*Need to : - * 1.) debit accum depn account with whole amount of accum depn - * 2.) credit cost account with the whole amount of the cost - * 3.) debit the disposal account with the NBV - * 4.) credit the disposal account with the sale proceeds net of discounts */ + /* Need to : + * 1.) Debit the accumulated depreciation account with whole amount of accumulated depreciation + * 2.) Credit the cost account with the whole amount of the cost + * 3.) Debit the disposal account with the NBV + * 4.) Credit the disposal account with the sale proceeds net of discounts */ - /* 1 debit accum depn */ + // 1.) Debit the accumulated depreciation account: if($DisposalRow['accumdepn']!=0) { $SQL = "INSERT INTO gltrans (type, typeno, @@ -1451,34 +1451,55 @@ '" . $_SESSION['Items'.$identifier]->DebtorNo . ' - ' . $OrderLine->StockID . ' ' . _('accumulated depreciation disposal') . "', '" . $DisposalRow['accumdepn'] . "')"; - $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The reversal of accumulated depreciation GL posting on disposal could not be inserted because'); - $DbgMsg = _('The following SQL to insert the GLTrans record was used'); - $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); - } - /* 2 credit cost */ - if($DisposalRow['cost']!=0) { - $SQL = "INSERT INTO gltrans (type, - typeno, - trandate, - periodno, - account, - narrative, - amount) - VALUES ( - 10, - '" . $InvoiceNo . "', - '" . $DefaultDispatchDate . "', - '" . $PeriodNo . "', - '" . $DisposalRow['costact'] . "', - '" . $_SESSION['Items'.$identifier]->DebtorNo . " - " . $OrderLine->StockID . ' ' . _('cost disposal') . "', - '" . -$DisposalRow['cost'] . "')"; + $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The reversal of accumulated depreciation GL posting on disposal could not be inserted because'); + $DbgMsg = _('The following SQL to insert the GLTrans record was used'); + $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); + } + // 2.) Credit the cost account: + if($DisposalRow['cost']!=0) { + $SQL = "INSERT INTO gltrans ( + type, + typeno, + trandate, + periodno, + account, + narrative, + amount + ) VALUES ( + 10,'" . + $InvoiceNo . "','" . + $DefaultDispatchDate . "','" . + $PeriodNo . "','" . + $DisposalRow['costact'] . "','" . + $_SESSION['Items'.$identifier]->DebtorNo . " - " . $OrderLine->StockID . ' ' . _('cost disposal') . "','" . + -$DisposalRow['cost'] . "')"; + $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The reversal of asset cost on disposal GL posting could not be inserted because'); + $DbgMsg = _('The following SQL to insert the GLTrans record was used'); + $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); + } + // 3.) Debit the disposal account with the NBV: + if($DisposalRow['cost']-$DisposalRow['accumdepn']!=0) { + $SQL = "INSERT INTO gltrans (type, + typeno, + trandate, + periodno, + account, + narrative, + amount ) + VALUES ( + 10, + '" . $InvoiceNo . "', + '" . $DefaultDispatchDate . "', + '" . $PeriodNo . "', + '" . $DisposalRow['disposalact'] . "', + '" . $_SESSION['Items'.$identifier]->DebtorNo . " - " . $OrderLine->StockID . ' ' . _('net book value disposal') . "', + '" . ($DisposalRow['cost']-$DisposalRow['accumdepn']) . "')"; - $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The reversal of asset cost on disposal GL posting could not be inserted because'); - $DbgMsg = _('The following SQL to insert the GLTrans record was used'); - $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); - } - //3. Debit disposal account with NBV - if($DisposalRow['cost']-$DisposalRow['accumdepn']!=0) { + $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The disposal net book value GL posting could not be inserted because'); + $DbgMsg = '<br />' ._('The following SQL to insert the GLTrans record was used'); + $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); + } + //4. Credit the disposal account with the proceeds $SQL = "INSERT INTO gltrans (type, typeno, trandate, @@ -1492,36 +1513,14 @@ '" . $DefaultDispatchDate . "', '" . $PeriodNo . "', '" . $DisposalRow['disposalact'] . "', - '" . $_SESSION['Items'.$identifier]->DebtorNo . " - " . $OrderLine->StockID . ' ' . _('net book value disposal') . "', - '" . ($DisposalRow['cost']-$DisposalRow['accumdepn']) . "')"; + '" . $_SESSION['Items'.$identifier]->DebtorNo . " - " . $OrderLine->StockID . ' ' . _('asset disposal proceeds') . "', + '" . (-$OrderLine->Price * $OrderLine->QtyDispatched* (1 - $OrderLine->DiscountPercent)/$_SESSION['CurrencyRate']) . "')"; - $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The disposal net book value GL posting could not be inserted because'); + $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The disposal proceeds GL posting could not be inserted because'); $DbgMsg = '<br />' ._('The following SQL to insert the GLTrans record was used'); $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); - } + }// End if the item being sold was an asset. - //4. Credit the disposal account with the proceeds - $SQL = "INSERT INTO gltrans (type, - typeno, - trandate, - periodno, - account, - narrative, - amount ) - VALUES ( - 10, - '" . $InvoiceNo . "', - '" . $DefaultDispatchDate . "', - '" . $PeriodNo . "', - '" . $DisposalRow['disposalact'] . "', - '" . $_SESSION['Items'.$identifier]->DebtorNo . " - " . $OrderLine->StockID . ' ' . _('asset disposal proceeds') . "', - '" . (-$OrderLine->Price * $OrderLine->QtyDispatched* (1 - $OrderLine->DiscountPercent)/$_SESSION['CurrencyRate']) . "')"; - - $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The disposal proceeds GL posting could not be inserted because'); - $DbgMsg = '<br />' ._('The following SQL to insert the GLTrans record was used'); - $Result = DB_query($SQL,$ErrMsg,$DbgMsg,true); - - } // end if the item being sold was an asset } /*end of if sales integrated with debtors */ if($IsAsset) { Modified: trunk/locale/es_ES.utf8/LC_MESSAGES/messages.mo =================================================================== (Binary files differ) Modified: trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po =================================================================== --- trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po 2016-10-20 07:25:57 UTC (rev 7651) +++ trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po 2016-10-23 19:27:31 UTC (rev 7652) @@ -8,7 +8,7 @@ "Project-Id-Version: webERP 4.12.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-05-16 21:31+1200\n" -"PO-Revision-Date: 2016-10-07 12:41-0600\n" +"PO-Revision-Date: 2016-10-23 13:23-0600\n" "Last-Translator: Rafael E. Chacón <raf...@gm...>\n" "Language-Team: TecnoSoluciones.com <web...@te...>\n" "Language: es_ES\n" @@ -5698,7 +5698,7 @@ #: ConfirmDispatch_Invoice.php:1453 msgid "accumulated depreciation disposal" -msgstr "" +msgstr "eliminación de la depreciación acumulada" #: ConfirmDispatch_Invoice.php:1456 msgid "" @@ -5710,13 +5710,15 @@ #: ConfirmDispatch_Invoice.php:1475 msgid "cost disposal" -msgstr "" +msgstr "eliminación de costos" #: ConfirmDispatch_Invoice.php:1478 msgid "" "The reversal of asset cost on disposal GL posting could not be inserted " "because" msgstr "" +"La reversión del costo de los activos mediante el asiento contable de " +"eliminación no pudo insertarse porque" #: ConfirmDispatch_Invoice.php:1497 msgid "net book value disposal" @@ -36474,7 +36476,7 @@ #: SystemParameters.php:477 msgid "Show Settled Last Month" -msgstr "Mostrar Conformes del Mes" +msgstr "Mostrar liquidado del mes pasado" #: SystemParameters.php:482 msgid "" @@ -36485,10 +36487,10 @@ "allocated" msgstr "" "Esta opción se refiere al formato de los estados de cuenta del cliente. " -"Seleccione Sí para que se muestren las facturas y las notas de crédito que " -"han sido pagadas y conformes durante el mes en curso. Seleccione No para " -"mostrar sólo las facturas pendientes, notas de crédito y pagos que no han " -"sido consignados." +"Seleccione Si para mostrar las facturas y las notas de crédito que han sido " +"pagadas y liquidadas durante el mes en curso. Seleccione No para mostrar " +"sólo las facturas pendientes, y notas de crédito y pagos que no han sido " +"consignados." #: SystemParameters.php:485 msgid "Romalpa Clause" @@ -36583,7 +36585,8 @@ #: SystemParameters.php:541 msgid "A picking note must be produced before an order can be delivered" msgstr "" -"Debe producirse una nota de Recolección para que una orden pueda despacharse" +"Se debe producir una nota de recolección para que un pedido pueda ser " +"entregado" #: SystemParameters.php:546 msgid "" @@ -36628,7 +36631,7 @@ #: SystemParameters.php:566 msgid "Format of Packing Slips" -msgstr "Formato de las Hojas de Embalaje" +msgstr "Formato de los albaranes (notas de entrega)" #: SystemParameters.php:568 msgid "Laser Printed" @@ -36640,7 +36643,8 @@ #: SystemParameters.php:571 msgid "Choose the format that packing notes should be printed by default" -msgstr "Elija el formato predeterminado al imprimir hojas de embalaje." +msgstr "" +"Elija el formato predeterminado al imprimir albaranes (notas de entrega)" #: SystemParameters.php:575 msgid "Invoice Orientation" @@ -36654,7 +36658,7 @@ #: SystemParameters.php:584 msgid "Invoice Quantity Default" -msgstr "" +msgstr "Cantidad predeterminada en la factura" #: SystemParameters.php:586 msgid "0" @@ -36708,7 +36712,7 @@ #: SystemParameters.php:614 msgid "Dispatch Cut-Off Time" -msgstr "No Despachar después de esta hora" +msgstr "Hora de cierre de los despachos" #: SystemParameters.php:619 msgid "" @@ -36854,7 +36858,7 @@ #: SystemParameters.php:730 msgid "Tax Authority Reference Name" -msgstr "Nombre de Referencia de la Autoridad Fiscal" +msgstr "Nombre de la referencia de la autoridad fiscal" #: SystemParameters.php:732 msgid "" @@ -36886,7 +36890,7 @@ #: SystemParameters.php:754 msgid "Number Of Periods Of StockUsage" -msgstr "Número de Períodos de Uso de Existencias" +msgstr "Cantidad de períodos de uso de inventario" #: SystemParameters.php:758 msgid "" @@ -36970,7 +36974,7 @@ #: SystemParameters.php:796 msgid "Purchase Order Allows Same Item Multiple Times" -msgstr "La Orden de Compra permite el mismo Artículo muchas veces" +msgstr "La orden de compra permite el mismo artículo varias veces" #: SystemParameters.php:800 msgid "" @@ -37047,7 +37051,7 @@ #: SystemParameters.php:826 msgid "Financial Year Ends On" -msgstr "El Ejercicio termina en" +msgstr "El año contable concluye en" #: SystemParameters.php:831 msgid "" @@ -37059,7 +37063,7 @@ #: SystemParameters.php:834 msgid "Report Page Length" -msgstr "Longitud de la Página del Informe" +msgstr "Longitud de la página del informe" #: SystemParameters.php:835 SystemParameters.php:859 msgid "The input should be between 1 and 999" @@ -37177,7 +37181,7 @@ #: SystemParameters.php:952 msgid "Perform Database Maintenance At Logon" -msgstr "Ejecutar Mantenimiento de la BD al Iniciar Sesión" +msgstr "Realizar el mantenimiento de la base de datos al iniciar sesión" #: SystemParameters.php:970 SystemParameters.php:972 msgid "Never" @@ -37300,7 +37304,7 @@ #: SystemParameters.php:1037 msgid "Prohibit GL Journals to Control Accounts" -msgstr "Prohibir a los Diarios Contables Controlar las Cuentas" +msgstr "Prohibir a los diarios contables el controlar las cuentas" #: SystemParameters.php:1040 SystemParameters.php:1043 msgid "Prohibited" @@ -37322,7 +37326,7 @@ #: SystemParameters.php:1050 msgid "Prohibit GL Journals to Periods Prior To" -msgstr "Prohibir a los Diarios Contables a Períodos Anteriores a" +msgstr "Prohibir a los diarios contables los períodos anteriores a" #: SystemParameters.php:1067 msgid "" @@ -37336,15 +37340,15 @@ #: SystemParameters.php:1070 msgid "Inventory Costing Method" -msgstr "Método de Cálculo del Costo del Inventario" +msgstr "Método de costeo del inventario" #: SystemParameters.php:1074 SystemParameters.php:1078 msgid "Weighted Average Costing" -msgstr "Costo Medio Ponderado" +msgstr "Costo promedio ponderado" #: SystemParameters.php:1075 SystemParameters.php:1077 msgid "Standard Costing" -msgstr "Costo Estándar" +msgstr "Costo estándar" #: SystemParameters.php:1081 msgid "" @@ -46158,7 +46162,7 @@ #: includes/MainMenuLinksArray.php:65 msgid "Sales Order Detail Or Summary Inquiries" -msgstr "Consultar Detalles/Sumario de Pedidos de Venta" +msgstr "Consultas detalladas o resumidas de órdenes de venta" #: includes/MainMenuLinksArray.php:67 msgid "Top Customers Inquiry" @@ -46279,7 +46283,7 @@ #: includes/MainMenuLinksArray.php:192 msgid "Purchase Order Detail Or Summary Inquiries" -msgstr "Consultar Detalle ó Sumario de Órdenes de Compra" +msgstr "Consultas detalladas o resumidas de órdenes de compra" #: includes/MainMenuLinksArray.php:199 msgid "Maintain Supplier Price Lists" @@ -46460,7 +46464,7 @@ #: includes/MainMenuLinksArray.php:315 msgid "Multiple Work Orders Total Cost Inquiry" -msgstr "" +msgstr "Consulta de costo total de varias ordenes de trabajo" #: includes/MainMenuLinksArray.php:337 msgid "Bills Of Material" @@ -46468,7 +46472,7 @@ #: includes/MainMenuLinksArray.php:338 msgid "Copy a Bill Of Materials Between Items" -msgstr "Copiar una Lista de Materiales entre Artículos" +msgstr "Copiar una lista de materiales entre artículos" #: includes/MainMenuLinksArray.php:339 msgid "Master Schedule" |
From: <dai...@us...> - 2016-10-20 07:25:59
|
Revision: 7651 http://sourceforge.net/p/web-erp/reponame/7651 Author: daintree Date: 2016-10-20 07:25:57 +0000 (Thu, 20 Oct 2016) Log Message: ----------- Simon Kelly fix to SelectSalesOrder.php Modified Paths: -------------- trunk/SelectSalesOrder.php Modified: trunk/SelectSalesOrder.php =================================================================== --- trunk/SelectSalesOrder.php 2016-10-19 08:29:16 UTC (rev 7650) +++ trunk/SelectSalesOrder.php 2016-10-20 07:25:57 UTC (rev 7651) @@ -934,7 +934,7 @@ <td>%s</td> <td>%s</td> <td class="number">%s</td> - <td><input type="checkbox" name="PlacePO_[]" /></td> + <td><input type="checkbox" name="PlacePO_[]" value="%s"/></td> </tr>', $ModifyPage, $myrow['orderno'], @@ -947,9 +947,7 @@ $FormatedDelDate, html_entity_decode($myrow['deliverto'],ENT_QUOTES,'UTF-8'), $FormatedOrderValue, - $i, - $i, - $myrow['orderno']); + $myrow['orderno']); } else { /*User is not authorised to create POs so don't even show the option */ printf('<td><a href="%s">%s</a></td> <td><a href="%s">' . _('Invoice') . '</a></td> |
From: <dai...@us...> - 2016-10-19 08:29:18
|
Revision: 7650 http://sourceforge.net/p/web-erp/reponame/7650 Author: daintree Date: 2016-10-19 08:29:16 +0000 (Wed, 19 Oct 2016) Log Message: ----------- S Kelly: SelectSalesOrder.php mods Modified Paths: -------------- trunk/SelectSalesOrder.php Modified: trunk/SelectSalesOrder.php =================================================================== --- trunk/SelectSalesOrder.php 2016-10-18 07:38:17 UTC (rev 7649) +++ trunk/SelectSalesOrder.php 2016-10-19 08:29:16 UTC (rev 7650) @@ -28,18 +28,16 @@ } else { unset($SelectedCustomer); } - + if (isset($_POST['PlacePO'])){ /*user hit button to place PO for selected orders */ /*Note the button would not have been displayed if the user had no authority to create purchase orders */ $OrdersToPlacePOFor = ''; for ($i=0;$i<=count($_POST['PlacePO_']);$i++){ - if (isset($_POST['PlacePO_'][$i])) { //checkboxes only set if they are checked - if ($OrdersToPlacePOFor==''){ - $OrdersToPlacePOFor .= " orderno='" . $_POST['OrderNo_PO_'][$i] . "'"; - } else { - $OrdersToPlacePOFor .= " OR orderno='" . $_POST['OrderNo_PO_'][$i] . "'"; - } + if ($OrdersToPlacePOFor==''){ + $OrdersToPlacePOFor .= " orderno='" . $_POST['PlacePO_'][$i] . "'"; + } else { + $OrdersToPlacePOFor .= " OR orderno='" . $_POST['PlacePO_'][$i] . "'"; } } if (mb_strlen($OrdersToPlacePOFor)==''){ @@ -149,6 +147,7 @@ /* We need the items to order to be in supplier order so that only a single order is created for a supplier - so need to sort the multi-dimensional array to ensure it is listed by supplier sequence. To use array_multisort we need to get arrays of supplier with the same keys as the main array of rows */ + $SupplierArray =array(); foreach ($ItemArray as $key => $row) { //to make the Supplier array with the keys of the $ItemArray $SupplierArray[$key] = $row['supplierno']; @@ -157,7 +156,9 @@ /* Use array_multisort to Sort the ItemArray with supplierno ascending Add $ItemArray as the last parameter, to sort by the common key */ - array_multisort($SupplierArray, SORT_ASC, $ItemArray); + if (count($SupplierArray)>1) { + array_multisort($SupplierArray, SORT_ASC, $ItemArray); + } if (count($ItemArray)==0){ prnMsg(_('There might be no supplier purchasing data set up for any items on the selected sales order(s). No purchase orders have been created'),'warn'); @@ -202,7 +203,7 @@ $AuthResult=DB_query($AuthSQL); $AuthRow=DB_fetch_array($AuthResult); - if ($AuthRow['authlevel']=''){ + if ($AuthRow['authlevel']==''){ $AuthRow['authlevel'] = 0; } @@ -368,7 +369,7 @@ $AuthResult=DB_query($AuthSQL); $AuthRow=DB_fetch_array($AuthResult); - if ($AuthRow['authlevel']=''){ + if ($AuthRow['authlevel']==''){ $AuthRow['authlevel'] = 0; } @@ -538,7 +539,7 @@ echo '</select> </td> <td>' . _('Due Date From') . '</td> - <td><input type="text" class="date" name="DueDateFrom" value="' . $_POST['DueDateFrom'] . '" alt="' . $_SESSION['DefaultDateFormat'] . '" size="10" /></td> + <td><input type="text" class="date" name="DueDateFrom" value="' . $_POST['DueDateFrom'] . '" alt="' . $_SESSION['DefaultDateFormat'] . '" size="10" /></td> <td>' . _('Due Date To') . '</td> <td><input type="text" class="date" name="DueDateTo" value="' . $_POST['DueDateTo'] . '" alt="' . $_SESSION['DefaultDateFormat'] . '" size="10" /></td> <td><input type="submit" name="SearchOrders" value="' . _('Search') . '" /></td> @@ -674,9 +675,9 @@ $_POST['StockLocation'] = ''; } //Harmonize the ordervalue with SUM function since webERP allowed same items appeared several times in one sales orders. If there is no sum value, this situation not inclued. - //We should separate itemdue inquiry from normal inquiry. - if (($Quotations === 0 OR $Quotations === 1) - AND (!isset($DueDateFrom) OR !is_date($DueDateFrom)) + //We should separate itemdue inquiry from normal inquiry. + if (($Quotations === 0 OR $Quotations === 1) + AND (!isset($DueDateFrom) OR !is_date($DueDateFrom)) AND (!isset($DueDateTo) OR !is_date($DueDateTo))) { $SQL = "SELECT salesorders.orderno, @@ -701,7 +702,7 @@ WHERE salesorderdetails.completed=0 "; $SQL .= $OrderDateFrom . $OrderDateTo; } else { - if ($Quotations !==0 AND $Quotations !==1) {//overdue inquiry only + if ($Quotations !==0 AND $Quotations !==1) {//overdue inquiry only $SQL = "SELECT salesorders.orderno, debtorsmaster.name, custbranch.brname, @@ -711,8 +712,8 @@ salesorders.deliverto, salesorders.printedpackingslip, salesorders.poplaced, - SUM(CASE WHEN itemdue<'" . Date('Y-m-d') . "' - THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + SUM(CASE WHEN itemdue<'" . Date('Y-m-d') . "' + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate ELSE 0 END) as ordervalue"; } elseif (isset($DueDateFrom) AND is_date($DueDateFrom) AND (!isset($DueDateTo) OR !is_date($DueDateTo))) { $SQL = "SELECT salesorders.orderno, @@ -724,7 +725,7 @@ salesorders.deliverto, salesorders.printedpackingslip, salesorders.poplaced, - SUM(CASE WHEN itemdue>='" . FormatDateFromSQL($DueDateFrom) . "' + SUM(CASE WHEN itemdue>='" . FormatDateFromSQL($DueDateFrom) . "' THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate ELSE 0 END) as ordervalue"; } elseif (isset($DueDateFrom) AND is_date($DueDateFrom) AND isset($DueDateTo) AND is_date($DueDateTo)) { @@ -738,8 +739,8 @@ salesorders.printedpackingslip, salesorders.poplaced, SUM (CASE WHEN itemdue>='" . FormatDateForSQL($DueDateFrom) . "' AND itemdue<='" . FormatDateForSQL($DueDateTo) ."' - THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate - ELSE 0 END) as ordervalue"; + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + ELSE 0 END) as ordervalue"; } elseif ((!isset($DueDateFrom) OR !is_date($DueDateFrom)) AND isset($DueDateTo) AND is_date($DueDateTo)) { $SQL = "SELECT salesorders.orderno, debtorsmaster.name, @@ -751,12 +752,12 @@ salesorders.printedpackingslip, salesorders.poplaced, SUM(CASE WHEN AND itemdue<='" . FormatDateForSQL($DueDateTo) ."' - THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate - ELSE 0 END) as ordervalue"; + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + ELSE 0 END) as ordervalue"; }//end of due date inquiry $SQL .= $OrderDateFrom . $OrderDateTo; - + $SQL .=" FROM salesorders INNER JOIN salesorderdetails ON salesorders.orderno = salesorderdetails.orderno INNER JOIN debtorsmaster @@ -779,11 +780,11 @@ $SQL .= "AND salesorders.orderno=". $OrderNumber ." AND salesorders.quotation=" .$Quotations; - + } elseif (isset($CustomerRef) AND $CustomerRef != ''){ $SQL .= "AND salesorders.customerref='" . $CustomerRef . "' AND salesorders.quotation=" . $Quotations; - + } else { /* $DateAfterCriteria = FormatDateforSQL($OrdersAfterDate); */ @@ -933,7 +934,7 @@ <td>%s</td> <td>%s</td> <td class="number">%s</td> - <td><input type="checkbox" name="PlacePO_[]" /><input type="hidden" name="OrderNo_PO_[]" value="%s" /></td> + <td><input type="checkbox" name="PlacePO_[]" /></td> </tr>', $ModifyPage, $myrow['orderno'], |
From: <dai...@us...> - 2016-10-18 07:38:19
|
Revision: 7649 http://sourceforge.net/p/web-erp/reponame/7649 Author: daintree Date: 2016-10-18 07:38:17 +0000 (Tue, 18 Oct 2016) Log Message: ----------- fix SQL in reverseGRN.php Modified Paths: -------------- trunk/ReverseGRN.php trunk/doc/Change.log Modified: trunk/ReverseGRN.php =================================================================== --- trunk/ReverseGRN.php 2016-10-18 05:13:59 UTC (rev 7648) +++ trunk/ReverseGRN.php 2016-10-18 07:38:17 UTC (rev 7649) @@ -304,7 +304,7 @@ '" . $GRN['deliverydate'] . "', '" . $PeriodNo . "', '" . $GRN['glcode'] . "', - '" . _('GRN Reversal for PO') .": " . $GRN['orderno'] . " " . $_POST['SupplierID'] . " - " . $GRN['itemcode'] . "-" . $GRN['itemdescription'] . " x " . $QtyToReverse . " @ " . locale_number_format($GRN['stdcostunit'],$_SESSION['CompanyRecord']['decimalplaces']) . "', + '" . _('GRN Reversal for PO') .": " . $GRN['orderno'] . " " . $_POST['SupplierID'] . " - " . $GRN['itemcode'] . "-" . DB_escape_string($GRN['itemdescription']) . " x " . $QtyToReverse . " @ " . locale_number_format($GRN['stdcostunit'],$_SESSION['CompanyRecord']['decimalplaces']) . "', '" . -($GRN['stdcostunit'] * $QtyToReverse) . "')"; $ErrMsg = _('CRITICAL ERROR') . '! ' . _('NOTE DOWN THIS ERROR AND SEEK ASSISTANCE') . ': ' . _('The purchase GL posting could not be inserted for the reversal of the received item because'); @@ -325,7 +325,7 @@ '" . $GRN['deliverydate'] . "', '" . $PeriodNo . "', '" . $_SESSION['CompanyRecord']['grnact'] . "', '" - . _('GRN Reversal PO') . ': ' . $GRN['orderno'] . " " . $_POST['SupplierID'] . " - " . $GRN['itemcode'] . "-" . $GRN['itemdescription'] . " x " . $QtyToReverse . " @ " . locale_number_format($GRN['stdcostunit'],$_SESSION['CompanyRecord']['decimalplaces']) . "', + . _('GRN Reversal PO') . ': ' . $GRN['orderno'] . " " . $_POST['SupplierID'] . " - " . $GRN['itemcode'] . "-" . DB_escape_string($GRN['itemdescription']) . " x " . $QtyToReverse . " @ " . locale_number_format($GRN['stdcostunit'],$_SESSION['CompanyRecord']['decimalplaces']) . "', '" . $GRN['stdcostunit'] * $QtyToReverse . "' )"; @@ -360,9 +360,9 @@ <br /> <div class="centre"> <input type="submit" name="ShowGRNS" value="' . _('Show Outstanding Goods Received') . '" /> - </div>'; - echo '</div> - </form>'; + </div> + </div> + </form>'; if (isset($_POST['ShowGRNS'])){ @@ -459,4 +459,4 @@ } } include ('includes/footer.inc'); -?> +?> \ No newline at end of file Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-10-18 05:13:59 UTC (rev 7648) +++ trunk/doc/Change.log 2016-10-18 07:38:17 UTC (rev 7649) @@ -1,5 +1,6 @@ webERP Change Log +17/10/16 Phil: Fix SQL in ReverseGRN.php as reported by Ricard/Tim 16/10/16 RChacon: Fix function convertDate(dS,dF). 05/10/16 Eatong: Format the ManualAPITutorial.html for easier reading. 05/10/16 Eatong: Add CSS rule for <pre> for easier reading. |
From: <rc...@us...> - 2016-10-18 05:14:02
|
Revision: 7648 http://sourceforge.net/p/web-erp/reponame/7648 Author: rchacon Date: 2016-10-18 05:13:59 +0000 (Tue, 18 Oct 2016) Log Message: ----------- Add comments and format. Modified Paths: -------------- trunk/css/default/default.css trunk/javascripts/MiscFunctions.js Modified: trunk/css/default/default.css =================================================================== --- trunk/css/default/default.css 2016-10-17 05:56:20 UTC (rev 7647) +++ trunk/css/default/default.css 2016-10-18 05:13:59 UTC (rev 7648) @@ -11,7 +11,7 @@ width:16px; } -body{ +body { background-color:#ccd; font-family:Arial, Verdana, Helvetica, sans-serif; font-size:10pt; @@ -19,60 +19,70 @@ padding:0; } -a{ +a { color:blue; text-decoration:none; } -a:hover{ + +a:hover { color:blue; text-decoration:underline; } -img{ +img { border:none; vertical-align:middle; } -p.good{ +p.bad { + color:red; font-weight:bold; +} + +p.good { color:green; -} -p.bad{ font-weight:bold; - color:red; } -table{ + +table { margin:0 auto; width:auto; max-width:90%; padding-bottom:5px; } -table.selection{ + +table.selection { padding-bottom:5px; } + th { background-color:#B06161; color:white; font-weight:normal; } + th.ascending { cursor: s-resize; } + th.descending { cursor: n-resize; } + th:after { content: ""; float: right; margin-top: 7px; visibility: hidden; } + th.ascending:after { border-width: 0 4px 4px; border-style: solid; border-color: #000 transparent; visibility: visible; } + th.descending:after { border-bottom: none; border-left: 4px solid transparent; @@ -80,67 +90,91 @@ border-top: 4px solid #000; visibility: visible; } + td { text-align:left; } -td.select{ + +td.select { background-color:#eee; } -div.centre{ + +td a img { + height:16px; + width:16px; + /* Icon for a link inside a table element. */ +} + +div.centre { margin:0 auto; text-align:center; padding:5px; } -input{ + +input { font-family:Arial, Verdana, Helvetica, sans-serif; } -input.number{ + +input.number { text-align:right; } -input.image{ + +input.image { border-width:0px; background-color:transparent; } + input:required, select:required, textarea:required { background-color:lightyellow; } -input:hover{ + +input:hover { } -select{ + +select { font-family:Arial, Verdana, Helvetica, sans-serif; } -textarea{ + +textarea { font-family:Arial, Verdana, Helvetica, sans-serif; } -textarea:hover{ + +textarea:hover { } -.EvenTableRows{ + +.EvenTableRows { background-color:#CCCCCC; } -.OddTableRows{ + +.OddTableRows { background-color:#EEEEEE; } -div.error{ + +div.error { background-color:#fddbdb; color:red; border:1px solid red; } -div.warn{ + +div.warn { background-color:#f5dbfd; color:maroon; border:1px solid maroon; } -div.success{ + +div.success { background-color:#b9ecb4; color:darkgreen; border:1px solid darkgreen; } -div.info{ + +div.info { background-color:#c7ccf6; color:navy; border:1px solid navy; } -DIV.page_help_text{ + +DIV.page_help_text { background:lightgrey url(images/help.png) top left no-repeat; BORDER:#a52a2a 1px solid; padding-top:2px; @@ -157,7 +191,8 @@ color:black; TEXT-ALIGN:center; } -DIV.system_check{ + +DIV.system_check { BORDER:#a52a2a 1px solid; PADDING-LEFT:3px; Z-INDEX:1; @@ -180,21 +215,24 @@ background:white; box-shadow: 3px 3px 4px #000; /* shadow on modern browsers */ } -.dpTD{ + +.dpTD { border:0; width:20px; background-color:#EEEEEE; text-align:right; cursor:pointer; } -.dpDayHighlight{ + +.dpDayHighlight { border:0; width:20px; background-color:yellow; text-align:right; cursor:pointer; } -.dpTDHover{ + +.dpTDHover { border:0; width:20px; background-color:#CCCCCC; @@ -203,42 +241,48 @@ } /* Table type is used for UI tables type 1 */ -.table1{ +.table1 { width:90%; background:#eee; border:0px 0px 2px 2px #222 solid; margin:0 auto; } + /* Table type is used for UI tables type 2 */ -/*.table2{ +/*.table2 { width:90%; background:#eee; border:0px 0px 2px 2px #222 solid; margin:0 auto; -}*/ +} -.tableheader{ +*/ + +.tableheader { font-weight:normal; background-color:#800000; color:white; } -.notavailable{ + +.notavailable { font-weight:lighter; font-style:italic; color:#555555; } -.label{ + +.label { font-weight:bold; font-style:normal; font-size:120%; color:black; background-color:#cccccc; } -.table_index{ + +.table_index { background-color:#F1FFDD; } -.header{ +.header { background-image:url(""); background-repeat:no-repeat; background-attachment:fixed; @@ -246,52 +290,58 @@ margin:0px; padding:0px; } + input.inputerror, input.error, select.error, select.selecterror, label.error { color:red; border: 2px solid red; } -textarea.texterror{ +textarea.texterror { background-color:#fddbdb; } -.OsRow{ +.OsRow { background-color:#234567; color:white; } /*** CANVAS ***/ -#CanvasDiv{ +#CanvasDiv { background:#588BB6; } /*** HEADER ***/ -#HeaderDiv{ +#HeaderDiv { color:white; /*background:#588BB6;*/ /*overflow:hidden;*/ } -#HeaderDiv a{ + +#HeaderDiv a { color:white; } -#HeaderDiv a:hover{ + +#HeaderDiv a:hover { text-decoration:underline; } -#HeaderWrapDiv{ + +#HeaderWrapDiv { } /*** HEADER - APP INFO ***/ -#AppInfoDiv{ +#AppInfoDiv { float:left; padding:0; } -#AppInfoCompanyDiv,#AppInfoUserDiv{ + +#AppInfoCompanyDiv,#AppInfoUserDiv { display:table-cell; } -#AppInfoModuleDiv{ + +#AppInfoModuleDiv { font-weight:bold; font-size:120%; padding:3px; @@ -299,13 +349,15 @@ /*** HEADER - QUICK MENU ***/ -#QuickMenuDiv{ +#QuickMenuDiv { float:right; margin-top:2px; } -#QuickMenuDiv ul{ + +#QuickMenuDiv ul { } -#QuickMenuDiv li{ + +#QuickMenuDiv li { display:inline; border-left:thin ridge #588BB6; padding:14px 12px; @@ -313,10 +365,11 @@ /*** BODY ***/ -#BodyDiv{ +#BodyDiv { clear:both; } -#BodyWrapDiv{ + +#BodyWrapDiv { background:#CCCCCC; /*border:thin solid #ccc;*/ clear:both; @@ -324,86 +377,101 @@ /*** BODY - MAIN MENU ***/ -#MainMenuDiv{ +#MainMenuDiv { float:left; width:11%; border:thin solid #000; text-align:center; white-space:nowrap; } -#MainMenuDiv ul{ + +#MainMenuDiv ul { margin:0; padding:0; } -#MainMenuDiv li{ + +#MainMenuDiv li { list-style:none; } -#MainMenuDiv li a{ +#MainMenuDiv li a { color:black; } -#MainMenuDiv li a:hover{ + +#MainMenuDiv li a:hover { color:black; text-decoration:underline; } -.main_menu_unselected{ + +.main_menu_unselected { background:#8EDE8D; padding:2px; } -.main_menu_unselected:hover{ + +.main_menu_unselected:hover { background:white; } -.main_menu_selected{ + +.main_menu_selected { background-color:white; padding:2px; } /*** BODY - SUB MENU ***/ -#SubMenuDiv{ +#SubMenuDiv { display:table; float:right; overflow:hidden; width:88.5%; } -#SubMenuDiv ul{ + +#SubMenuDiv ul { margin:0; padding:0; background:#fff; border:thin solid black; margin-left:3px; } -#SubMenuDiv li{ + +#SubMenuDiv li { list-style:none; } -#SubMenuDiv a{ + +#SubMenuDiv a { color:blue; } -#SubMenuDiv a:hover{ + +#SubMenuDiv a:hover { color:blue; text-decoration:underline; } + #TransactionsDiv, #InquiriesDiv, -#MaintenanceDiv{ +#MaintenanceDiv { display:table-cell; } -.menu_group_headers{ + +.menu_group_headers { text-align:center; color:black; background:#eee; border-bottom:thin solid black; } -.menu_group_item{ + +.menu_group_item { background-color:white; padding:2px; } -.menu_group_item p{ + +.menu_group_item p { color:#00f; /* This is the color for bullets, I like it to be the same as the anchor color, but it's up to you */ text-indent:-12px; /* this makes the bullet to appear as the li tag previously used */ margin:0 0 0 12px; /* One thing that I didn´t like of the li was that it had no left margin applied */ } -#InquiriesDiv div{ /* header for standard reports/forms, custom reports */ + +#InquiriesDiv div { /* header for standard reports/forms, custom reports */ border-top:thin solid black; border-bottom:thin solid black; background:#eee; @@ -413,47 +481,57 @@ /*** FOOTER ***/ -#FooterDiv{ +#FooterDiv { clear:both; overflow:hidden; color:#CCCCCC; padding:3px 2px; } -#FooterWrapDiv{ +#FooterWrapDiv { + } -#FooterLogoDiv{ + +#FooterLogoDiv { background:white; border-radius:7px; float:left; padding:3px; } -#FooterVersionDiv{ + +#FooterVersionDiv { float:left; margin-left:10px; margin-top:15px; } -#FooterTimeDiv{ + +#FooterTimeDiv { float:right; margin-top:15px; } + #Report { /* Division id for reports. */} + #Report table { /* Body of a report formatted with table tag. */ } + .centre { text-align:center; /* Class selector to horizontal align a text (centre) in an element. */ } + .number { text-align:right; /* Class selector to horizontal align a number (right) in an element. */ } + .text { text-align:left; /* Class selector to horizontal align a text (left) in an element. */ } + .page_title_text { color:black; font-weight:bold; @@ -461,6 +539,7 @@ text-align:center; /* Class selector for page title. */ } + /* END Style for all. ********************************************************/ @@ -477,3 +556,5 @@ @media only screen and (min-device-width:1024px) { /* Style for new browser in a device with a rendering width greater than 1024px. */ } + + Modified: trunk/javascripts/MiscFunctions.js =================================================================== --- trunk/javascripts/MiscFunctions.js 2016-10-17 05:56:20 UTC (rev 7647) +++ trunk/javascripts/MiscFunctions.js 2016-10-18 05:13:59 UTC (rev 7648) @@ -1,39 +1,39 @@ /* $Id: MiscFunctions.js 7645 2016-10-17 05:34:08Z rchacon $ */ /* Miscellaneous JavaScript functions. */ -function defaultControl(c){ +function defaultControl(c) { c.select(); c.focus(); } -function ReloadForm(fB){ +function ReloadForm(fB) { fB.click(); } -function rTN(event){ - if (window.event) k=window.event.keyCode; - else if (event) k=event.which; +function rTN(event) { + if(window.event) k=window.event.keyCode; + else if(event) k=event.which; else return true; kC=String.fromCharCode(k); - if (k==13) return false; - if ((k==null) || (k==0) || (k==8) || (k==9) || (k==13) || (k==27)) return true; - else if ((("0123456789.,- ").indexOf(kC)>-1)) return true; + if(k==13) return false; + if((k==null) || (k==0) || (k==8) || (k==9) || (k==13) || (k==27)) return true; + else if((("0123456789.,- ").indexOf(kC)>-1)) return true; else return false; } -function rTI(event){ - if (window.event) k=window.event.keyCode; - else if (event) k=event.which; +function rTI(event) { + if(window.event) k=window.event.keyCode; + else if(event) k=event.which; else return true; kC=String.fromCharCode(k); - if ((k==null) || (k==0) || (k==8) || (k==9) || (k==13) || (k==27)) return true; - else if ((("0123456789-").indexOf(kC)>-1)) return true; + if((k==null) || (k==0) || (k==8) || (k==9) || (k==13) || (k==27)) return true; + else if((("0123456789-").indexOf(kC)>-1)) return true; else return false; } -function rLocaleNumber(){ +function rLocaleNumber() { var Lang = document.getElementById('Lang').value; - switch(Lang){ + switch(Lang) { case 'US': var patt = /(?:^(-)?([1-9]{1}\d{0,2}(?:,?\d{3})*(?:\.\d{1,})?)$)|(?:^(-)?(0?\.\d{1,})$)|(?:^0$)/; break; @@ -51,26 +51,23 @@ break; default: alert('something is wrong with your language setting'); - - } - if(patt.test(this.value)){ + if(patt.test(this.value)) { this.setCustomValidity(''); return true; - - }else{ + } else { this.setCustomValidity('The number format is wrong'); return false; }; } -function assignComboToInput(c,i){ +function assignComboToInput(c, i) { i.value=c.value; } -function inArray(v,tA,m){ - for (i=0;i<tA.length;i++) { - if (v.value==tA[i].value) { +function inArray(v, tA, m) { + for(i=0;i<tA.length;i++) { + if(v.value==tA[i].value) { return true; } } @@ -78,8 +75,8 @@ return false; } -function isDate(dS,dF){ - switch (dF) { +function isDate(dS, dF) { + switch(dF) { case "d/m/Y": case "d.m.Y": case "m/d/Y": @@ -91,15 +88,15 @@ break; } - if (mA==null){ + if(mA==null) { alert("Please enter the date in the format "+dF); return false; } - if (dF=="d/m/Y"||dF=="d.m.Y"){ + if(dF=="d/m/Y"||dF=="d.m.Y") { d=mA[1]; m=mA[3]; y=mA[5]; - }else if(dF=='m/d/Y'){ + }else if(dF=='m/d/Y') { m=mA[1]; d=mA[3]; y=mA[5]; @@ -109,21 +106,21 @@ y=mA[1]; } - if (m<1 || m>12){ + if(m<1 || m>12) { alert("Month must be between 1 and 12"); return false; } - if (d<1 || d>31){ + if(d<1 || d>31) { alert("Day must be between 1 and 31"); return false; } - if ((m==4 || m==6 || m==9 || m==11) && d==31){ + if((m==4 || m==6 || m==9 || m==11) && d==31) { alert("Month "+m+" doesn`t have 31 days"); return false; } - if (m==2){ + if(m==2) { var isleap=(y%4==0); - if (d>29 || (d==29 && !isleap)){ + if(d>29 || (d==29 && !isleap)) { alert("February "+y+" doesn`t have "+d+" days"); return false; } @@ -131,88 +128,93 @@ return true; } -function eitherOr(o,t){ - if (o.value!='') t.value=''; - else if (o.value=='NaN') o.value=''; +function eitherOr(o, t) { + if(o.value!='') t.value=''; + else if(o.value=='NaN') o.value=''; } /*Renier & Louis (in...@ti...) 25.02.2007 Copyright 2004-2007 Tillcor International */ -days=new Array('Su','Mo','Tu','We','Th','Fr','Sa'); -months=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); +days=new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'); +months=new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); dateDivID="calendar"; -function Calendar(md,dF){ - iF=document.getElementsByName(md).item(0); - pB=iF; - x=pB.offsetLeft; - y=pB.offsetTop+pB.offsetHeight; - var p=pB; - while (p.offsetParent){ - p=p.offsetParent; - x+=p.offsetLeft; - y+=p.offsetTop; + +function Calendar(md, dF) { + // dF: Date format. Formats: "d/m/Y", "d.m.Y", "m/d/Y", "Y-m-d", "Y/m/d". + iF = document.getElementsByName(md).item(0); + pB = iF; + x = pB.offsetLeft; + y = pB.offsetTop+pB.offsetHeight; + var p = pB; + while(p.offsetParent) { + p = p.offsetParent; + x += p.offsetLeft; + y += p.offsetTop; } - dt=convertDate(iF.value,dF); - nN=document.createElement("div"); - nN.setAttribute("id",dateDivID); - nN.setAttribute("style","visibility:hidden;"); + dt = convertDate(iF.value, dF); + nN = document.createElement("div"); + nN.setAttribute("id", dateDivID); + nN.setAttribute("style", "visibility:hidden;"); document.body.appendChild(nN); - cD=document.getElementById(dateDivID); - cD.style.position="absolute"; - cD.style.left=x+"px"; - cD.style.top=y+"px"; - cD.style.visibility=(cD.style.visibility=="visible" ? "hidden" : "visible"); - cD.style.display=(cD.style.display=="block" ? "none" : "block"); - cD.style.zIndex=10000; - drawCalendar(md,dt.getFullYear(),dt.getMonth(),dt.getDate(),dF); + cD = document.getElementById(dateDivID); + cD.style.position = "absolute"; + cD.style.left = x + "px"; + cD.style.top = y + "px"; + cD.style.visibility = (cD.style.visibility == "visible" ? "hidden" : "visible"); + cD.style.display = (cD.style.display == "block" ? "none" : "block"); + cD.style.zIndex = 10000; + drawCalendar(md, dt.getFullYear(), dt.getMonth(), dt.getDate(), dF); } -function drawCalendar(md,y,m,d,dF){ - var tD=new Date(); - if ((m>=0) && (y>0)) tD=new Date(y,m,1); - else{ - d=tD.getDate(); +function drawCalendar(md, y, m, d, dF) { + // y: Year. Number. + // m: Month. Number. + // d: Day. Number. + // dF: Date format. Formats: "d/m/Y", "d.m.Y", "m/d/Y", "Y-m-d", "Y/m/d". + var tD = new Date(); + if((m>=0) && (y>0)) tD = new Date(y, m, 1); + else { + d = tD.getDate(); tD.setDate(1); } - TR="<tr>"; - xTR="</tr>"; - TD="<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver='this.className=\"dpTDHover\";'"; - xTD="</td>"; - html="<table class='dpTbl'>"+TR+"<th colspan=\"3\">"+months[tD.getMonth()]+" "+tD.getFullYear()+"</th>"+"<td colspan=\"2\">"+ - getButtonCode(md,tD,-1,"<",dF)+xTD+"<td colspan=\"2\">"+getButtonCode(md,tD,1,">",dF)+xTD+xTR+TR; - for(i=0;i<days.length;i++) html+="<th>"+days[i]+"</th>"; - html+=xTR+TR; - for (i=0;i<tD.getDay();i++) html+=TD+" "+xTD; - do{ - dN=tD.getDate(); - TD_onclick=" onclick=\"postDate('"+md+"','"+formatDate(tD,dF)+"');\">"; - if (dN==d) html+="<td"+TD_onclick+"<div class='dpDayHighlight'>"+dN+"</div>"+xTD; - else html+=TD+TD_onclick+dN+xTD; - if (tD.getDay()==6) html+=xTR+TR; - tD.setDate(tD.getDate()+1); - } while (tD.getDate()>1) - if (tD.getDay()>0) for (i=6;i>tD.getDay();i--) html+=TD+" "+xTD; - html+="</table>"; - document.getElementById(dateDivID).innerHTML=html; + TR = "<tr>"; + xTR = "</tr>"; + TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver='this.className=\"dpTDHover\";'"; + xTD = "</td>"; + html = "<table class='dpTbl'>" + TR + "<th colspan=\"3\">" + months[tD.getMonth()] + " " + tD.getFullYear() + "</th>" + "<td colspan=\"2\">" + getButtonCode(md, tD, -1, "<", dF) + xTD + "<td colspan=\"2\">" + getButtonCode(md, tD, 1, ">", dF) + xTD + xTR + TR; + for(i = 0; i < days.length; i++) html += "<th>" + days[i] + "</th>"; + html += xTR + TR; + for(i = 0; i < tD.getDay(); i++) html += TD + " " + xTD; + do { + dN = tD.getDate(); + TD_onclick = " onclick=\"postDate('" + md + "','" + formatDate(tD, dF) + "');\">"; + if(dN == d) html += "<td" + TD_onclick + "<div class='dpDayHighlight'>" + dN + "</div>" + xTD; + else html += TD + TD_onclick + dN + xTD; + if(tD.getDay() == 6) html += xTR + TR; + tD.setDate(tD.getDate() + 1); + } while(tD.getDate() > 1) + if(tD.getDay() > 0) for(i = 6; i > tD.getDay(); i--) html += TD + " " + xTD; + html += "</table>"; + document.getElementById(dateDivID).innerHTML = html; } -function getButtonCode(mD,dV,a,lb,dF){ - nM=(dV.getMonth()+a)%12; - nY=dV.getFullYear()+parseInt((dV.getMonth()+a)/12,10); -if (nM<0){ - nM+=12; - nY+=-1; +function getButtonCode(mD, dV, a, lb, dF) { + nM = (dV.getMonth()+a)%12; + nY = dV.getFullYear() + parseInt((dV.getMonth()+a)/12, 10); +if(nM < 0) { + nM += 12; + nY += -1; } return "<button onClick='drawCalendar(\""+mD+"\","+nY+","+nM+","+1+",\""+dF+"\");'>"+lb+"</button>"; } -function formatDate(dV,dF){ +function formatDate(dV, dF) { ds=String(dV.getDate()); ms=String(dV.getMonth()+1); - d=("0"+dV.getDate()).substring(ds.length-1,ds.length+1); - m=("0"+(dV.getMonth()+1)).substring(ms.length-1,ms.length+1); + d=("0"+dV.getDate()).substring(ds.length-1, ds.length+1); + m=("0"+(dV.getMonth()+1)).substring(ms.length-1, ms.length+1); y=dV.getFullYear(); - switch (dF) { + switch(dF) { case "d/m/Y": return d+"/"+m+"/"+y; case "d.m.Y": @@ -226,64 +228,64 @@ } } -function convertDate(dS,dF){ +function convertDate(dS, dF) { // Converts a date in DefaultDateFormat into a javascript date-object. // dS: Date to convert. // dF: Date format. Formats: "d/m/Y", "d.m.Y", "m/d/Y", "Y-m-d", "Y/m/d". - var y,m,d; - switch(dF){ - case "d/m/Y": - dA=dS.split("/"); - d=parseInt(dA[0],10); - m=parseInt(dA[1],10)-1; - y=parseInt(dA[2],10); - break; - case "d.m.Y": - dA=dS.split("."); - d=parseInt(dA[0],10); - m=parseInt(dA[1],10)-1; - y=parseInt(dA[2],10); - break; - case "m/d/Y": - dA=dS.split("/"); - m=parseInt(dA[0],10); - d=parseInt(dA[1],10)-1; - y=parseInt(dA[2],10); - break; - case "Y-m-d": - dA=dS.split("-"); - y=parseInt(dA[0],10); - m=parseInt(dA[1],10)-1; - d=parseInt(dA[2],10); - break; - case "Y/m/d": - dA=dS.split("/"); - y=parseInt(dA[0],10); - m=parseInt(dA[1],10)-1; - d=parseInt(dA[2],10); - break; - default: - alert("Unknown date format "+dF); + var y, m, d; + switch(dF) { + case "d/m/Y": + dA = dS.split("/"); + d = parseInt(dA[0], 10); + m = parseInt(dA[1], 10)-1; + y = parseInt(dA[2], 10); + break; + case "d.m.Y": + dA = dS.split("."); + d = parseInt(dA[0], 10); + m = parseInt(dA[1], 10)-1; + y = parseInt(dA[2], 10); + break; + case "m/d/Y": + dA = dS.split("/"); + m = parseInt(dA[0], 10); + d = parseInt(dA[1], 10)-1; + y = parseInt(dA[2], 10); + break; + case "Y-m-d": + dA = dS.split("-"); + y = parseInt(dA[0], 10); + m = parseInt(dA[1], 10)-1; + d = parseInt(dA[2], 10); + break; + case "Y/m/d": + dA = dS.split("/"); + y = parseInt(dA[0], 10); + m = parseInt(dA[1], 10)-1; + d = parseInt(dA[2], 10); + break; + default: + alert("Unknown date format " + dF); return false; } -return new Date(y,m,d); +return new Date(y, m, d); } -function postDate(mydate,dS){ -var iF=document.getElementsByName(mydate).item(0); -iF.value=dS; -var cD=document.getElementById(dateDivID); -cD.style.visibility="hidden"; -cD.style.display="none"; +function postDate(mydate, dS) { +var iF = document.getElementsByName(mydate).item(0); +iF.value = dS; +var cD = document.getElementById(dateDivID); +cD.style.visibility = "hidden"; +cD.style.display = "none"; iF.focus(); } -function clickDate(){ - Calendar(this.name,this.alt); +function clickDate() { + Calendar(this.name, this.alt); } -function changeDate(){ - isDate(this.value,this.alt); +function changeDate() { + isDate(this.value, this.alt); } function SortSelect() { @@ -293,10 +295,10 @@ parentElem=selElem.parentNode; table=parentElem.parentNode; row = table.rows[0]; - for (var j = 0, col; col = row.cells[j]; j++) { - if (row.cells[j].innerHTML==columnText) { + for(var j = 0, col; col = row.cells[j]; j++) { + if(row.cells[j].innerHTML==columnText) { columnNumber=j; - if (selElem.className=="ascending") { + if(selElem.className=="ascending") { selElem.className='descending'; direction="a"; } else { @@ -305,10 +307,10 @@ } } } - for (var i = 1, row; row = table.rows[i]; i++) { + for(var i = 1, row; row = table.rows[i]; i++) { var rowArray = new Array(); - for (var j = 0, col; col = row.cells[j]; j++) { - if (row.cells[j].tagName == 'TD' ) { + for(var j = 0, col; col = row.cells[j]; j++) { + if(row.cells[j].tagName == 'TD' ) { rowArray[j]=row.cells[j].innerHTML; columnClass=row.cells[columnNumber].className; } @@ -317,10 +319,10 @@ } tmpArray.sort( function(a,b) { - if (direction=="a") { - if (columnClass=="number") { + if(direction=="a") { + if(columnClass=="number") { return parseFloat(a[columnNumber].replace(/[,.]/g, '')) - parseFloat(b[columnNumber].replace(/[,.]/g, '')); - } else if (columnClass=="date") { + } else if(columnClass=="date") { da=new Date(a[columnNumber]); db=new Date(b[columnNumber]); return da>db; @@ -328,9 +330,9 @@ return a[columnNumber].localeCompare(b[columnNumber]) } } else { - if (columnClass=="number") { + if(columnClass=="number") { return parseFloat(b[columnNumber].replace(/[,.]/g, '')) - parseFloat(a[columnNumber].replace(/[,.]/g, '')); - } else if (columnClass=="date") { + } else if(columnClass=="date") { da=new Date(a[columnNumber]); db=new Date(b[columnNumber]); return da<=db; @@ -340,11 +342,11 @@ } } ); - for (var i = 0, row; row = table.rows[i+1]; i++) { + for(var i = 0, row; row = table.rows[i+1]; i++) { var rowArray = new Array(); rowArray=tmpArray[i]; - for (var j = 0, col; col = row.cells[j]; j++) { - if (row.cells[j].tagName == 'TD' ) { + for(var j = 0, col; col = row.cells[j]; j++) { + if(row.cells[j].tagName == 'TD' ) { row.cells[j].innerHTML=rowArray[j]; } } @@ -352,29 +354,29 @@ return; } -function initial(){ - if (document.getElementsByTagName){ +function initial() { + if(document.getElementsByTagName) { var as=document.getElementsByTagName("a"); - for (i=0;i<as.length;i++){ + for(i=0;i<as.length;i++) { var a=as[i]; - if (a.getAttribute("href") && + if(a.getAttribute("href") && a.getAttribute("rel")=="external") a.target="_blank"; } } var ds=document.getElementsByTagName("input"); - for (i=0;i<ds.length;i++){ - if (ds[i].className=="date"){ + for(i=0;i<ds.length;i++) { + if(ds[i].className=="date") { ds[i].onclick=clickDate; ds[i].onchange=changeDate; } if(ds[i].getAttribute("data-type") == 'no-illegal-chars') ds[i].pattern="(?!^ +$)[^?\'\u0022+.&\\\\><]*"; - if (ds[i].className=="number") ds[i].onkeypress=rTN; - if (ds[i].className=="integer") ds[i].onkeypress=rTI; - if (ds[i].className=="number"){ + if(ds[i].className=="number") ds[i].onkeypress=rTN; + if(ds[i].className=="integer") ds[i].onkeypress=rTI; + if(ds[i].className=="number") { ds[i].origonchange=ds[i].onchange; ds[i].newonchange=rLocaleNumber; - ds[i].onchange=function(){ + ds[i].onchange=function() { if(this.origonchange) this.origonchange(); this.newonchange(); @@ -382,13 +384,13 @@ } } var ds=document.getElementsByTagName("th"); - for (i=0;i<ds.length;i++){ - if (ds[i].className=="ascending") ds[i].onclick=SortSelect; + for(i=0;i<ds.length;i++) { + if(ds[i].className=="ascending") ds[i].onclick=SortSelect; } } -function AddAmount(t,Target,d) { - if (t.checked) { +function AddAmount(t, Target, d) { + if(t.checked) { document.getElementById(Target).value=Number(t.value); if(d) document.getElementById(d).required="required"; } else { |
From: <rc...@us...> - 2016-10-17 05:56:22
|
Revision: 7647 http://sourceforge.net/p/web-erp/reponame/7647 Author: rchacon Date: 2016-10-17 05:56:20 +0000 (Mon, 17 Oct 2016) Log Message: ----------- Modified Paths: -------------- trunk/javascripts/MiscFunctions.js Modified: trunk/javascripts/MiscFunctions.js =================================================================== --- trunk/javascripts/MiscFunctions.js 2016-10-17 05:51:15 UTC (rev 7646) +++ trunk/javascripts/MiscFunctions.js 2016-10-17 05:56:20 UTC (rev 7647) @@ -1,4 +1,6 @@ -/* $Id: $ */ +/* $Id: MiscFunctions.js 7645 2016-10-17 05:34:08Z rchacon $ */ +/* Miscellaneous JavaScript functions. */ + function defaultControl(c){ c.select(); c.focus(); |
From: <rc...@us...> - 2016-10-17 05:51:17
|
Revision: 7646 http://sourceforge.net/p/web-erp/reponame/7646 Author: rchacon Date: 2016-10-17 05:51:15 +0000 (Mon, 17 Oct 2016) Log Message: ----------- Modified Paths: -------------- trunk/javascripts/MiscFunctions.js Modified: trunk/javascripts/MiscFunctions.js =================================================================== --- trunk/javascripts/MiscFunctions.js 2016-10-17 05:34:08 UTC (rev 7645) +++ trunk/javascripts/MiscFunctions.js 2016-10-17 05:51:15 UTC (rev 7646) @@ -1,3 +1,4 @@ +/* $Id: $ */ function defaultControl(c){ c.select(); c.focus(); |
From: <rc...@us...> - 2016-10-17 05:34:10
|
Revision: 7645 http://sourceforge.net/p/web-erp/reponame/7645 Author: rchacon Date: 2016-10-17 05:34:08 +0000 (Mon, 17 Oct 2016) Log Message: ----------- Fix function convertDate(dS,dF). Modified Paths: -------------- trunk/doc/Change.log trunk/javascripts/MiscFunctions.js Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-10-11 15:52:19 UTC (rev 7644) +++ trunk/doc/Change.log 2016-10-17 05:34:08 UTC (rev 7645) @@ -1,5 +1,6 @@ webERP Change Log +16/10/16 RChacon: Fix function convertDate(dS,dF). 05/10/16 Eatong: Format the ManualAPITutorial.html for easier reading. 05/10/16 Eatong: Add CSS rule for <pre> for easier reading. 05/10/16 Eatong: Align field length of salesanalysis.salesperson to salesman.salesmancode. Modified: trunk/javascripts/MiscFunctions.js =================================================================== --- trunk/javascripts/MiscFunctions.js 2016-10-11 15:52:19 UTC (rev 7644) +++ trunk/javascripts/MiscFunctions.js 2016-10-17 05:34:08 UTC (rev 7645) @@ -2,9 +2,11 @@ c.select(); c.focus(); } + function ReloadForm(fB){ fB.click(); } + function rTN(event){ if (window.event) k=window.event.keyCode; else if (event) k=event.which; @@ -15,6 +17,7 @@ else if ((("0123456789.,- ").indexOf(kC)>-1)) return true; else return false; } + function rTI(event){ if (window.event) k=window.event.keyCode; else if (event) k=event.which; @@ -24,6 +27,7 @@ else if ((("0123456789-").indexOf(kC)>-1)) return true; else return false; } + function rLocaleNumber(){ var Lang = document.getElementById('Lang').value; switch(Lang){ @@ -56,9 +60,11 @@ return false; }; } + function assignComboToInput(c,i){ i.value=c.value; } + function inArray(v,tA,m){ for (i=0;i<tA.length;i++) { if (v.value==tA[i].value) { @@ -68,6 +74,7 @@ alert(m); return false; } + function isDate(dS,dF){ switch (dF) { case "d/m/Y": @@ -120,6 +127,7 @@ } return true; } + function eitherOr(o,t){ if (o.value!='') t.value=''; else if (o.value=='NaN') o.value=''; @@ -155,6 +163,7 @@ cD.style.zIndex=10000; drawCalendar(md,dt.getFullYear(),dt.getMonth(),dt.getDate(),dF); } + function drawCalendar(md,y,m,d,dF){ var tD=new Date(); if ((m>=0) && (y>0)) tD=new Date(y,m,1); @@ -183,6 +192,7 @@ html+="</table>"; document.getElementById(dateDivID).innerHTML=html; } + function getButtonCode(mD,dV,a,lb,dF){ nM=(dV.getMonth()+a)%12; nY=dV.getFullYear()+parseInt((dV.getMonth()+a)/12,10); @@ -192,6 +202,7 @@ } return "<button onClick='drawCalendar(\""+mD+"\","+nY+","+nM+","+1+",\""+dF+"\");'>"+lb+"</button>"; } + function formatDate(dV,dF){ ds=String(dV.getDate()); ms=String(dV.getMonth()+1); @@ -211,37 +222,50 @@ return m+"/"+d+"/"+y; } } + function convertDate(dS,dF){ - var d,m,y; - if (dF=="d.m.Y") - dA=dS.split("."); - else - dA=dS.split("/"); - switch (dF){ - case "d/m/Y": + // Converts a date in DefaultDateFormat into a javascript date-object. + // dS: Date to convert. + // dF: Date format. Formats: "d/m/Y", "d.m.Y", "m/d/Y", "Y-m-d", "Y/m/d". + var y,m,d; + switch(dF){ + case "d/m/Y": + dA=dS.split("/"); d=parseInt(dA[0],10); m=parseInt(dA[1],10)-1; y=parseInt(dA[2],10); - break; - case "d.m.Y": - d=parseInt(dA[0],10); - m=parseInt(dA[1],10)-1; - y=parseInt(dA[2],10); - break; - case "Y-m-d": - case "Y/m/d": - d=parseInt(dA[2],10); - m=parseInt(dA[1],10)-1; - y=parseInt(dA[0],10); - break; - default : - d=parseInt(dA[1],10); - m=parseInt(dA[0],10)-1; - y=parseInt(dA[2],10); - break; -} + break; + case "d.m.Y": + dA=dS.split("."); + d=parseInt(dA[0],10); + m=parseInt(dA[1],10)-1; + y=parseInt(dA[2],10); + break; + case "m/d/Y": + dA=dS.split("/"); + m=parseInt(dA[0],10); + d=parseInt(dA[1],10)-1; + y=parseInt(dA[2],10); + break; + case "Y-m-d": + dA=dS.split("-"); + y=parseInt(dA[0],10); + m=parseInt(dA[1],10)-1; + d=parseInt(dA[2],10); + break; + case "Y/m/d": + dA=dS.split("/"); + y=parseInt(dA[0],10); + m=parseInt(dA[1],10)-1; + d=parseInt(dA[2],10); + break; + default: + alert("Unknown date format "+dF); + return false; + } return new Date(y,m,d); } + function postDate(mydate,dS){ var iF=document.getElementsByName(mydate).item(0); iF.value=dS; @@ -250,12 +274,15 @@ cD.style.display="none"; iF.focus(); } + function clickDate(){ Calendar(this.name,this.alt); } + function changeDate(){ isDate(this.value,this.alt); } + function SortSelect() { selElem=this; var tmpArray = new Array(); @@ -321,6 +348,7 @@ } return; } + function initial(){ if (document.getElementsByTagName){ var as=document.getElementsByTagName("a"); @@ -355,6 +383,7 @@ if (ds[i].className=="ascending") ds[i].onclick=SortSelect; } } + function AddAmount(t,Target,d) { if (t.checked) { document.getElementById(Target).value=Number(t.value); |
From: <rc...@us...> - 2016-10-11 15:52:22
|
Revision: 7644 http://sourceforge.net/p/web-erp/reponame/7644 Author: rchacon Date: 2016-10-11 15:52:19 +0000 (Tue, 11 Oct 2016) Log Message: ----------- In CompanyPreferences.php, add label tag and id attribute to ease the input of CurrencyDefault. In Currencies.php, add link to the input of CurrencyDefault. In SystemParameters.php, fix link to manual. In doc/Manual/ManualCreatingNewSystem.html, fix links and content. Modified Paths: -------------- trunk/CompanyPreferences.php trunk/Currencies.php trunk/SystemParameters.php trunk/doc/Manual/ManualCreatingNewSystem.html trunk/locale/es_ES.utf8/LC_MESSAGES/messages.mo trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po trunk/sql/mysql/upgrade4.13-4.13.1.sql Modified: trunk/CompanyPreferences.php =================================================================== --- trunk/CompanyPreferences.php 2016-10-07 09:21:45 UTC (rev 7643) +++ trunk/CompanyPreferences.php 2016-10-11 15:52:19 UTC (rev 7644) @@ -1,11 +1,9 @@ <?php +/* $Id$ */ +/* Defines the settings applicable for the company, including name, address, tax authority reference, whether GL integration used etc. */ -/* $Id$*/ - include('includes/session.inc'); - $Title = _('Company Preferences'); -/* webERP manual links before header.inc */ $ViewTopic= 'CreatingNewSystem'; $BookMark = 'CompanyParameters'; include('includes/header.inc'); @@ -234,8 +232,8 @@ include('includes/CurrenciesArray.php'); // To get the currency name from the currency code. echo '<tr> - <td>' . _('Home Currency') . ':</td> - <td><select tabindex="13" name="CurrencyDefault">'; + <td><label for="CurrencyDefault">', _('Home Currency'), ':</label></td> + <td><select id="CurrencyDefault" name="CurrencyDefault" tabindex="13" >'; while ($myrow = DB_fetch_array($result)) { if ($_POST['CurrencyDefault']==$myrow['currabrev']){ Modified: trunk/Currencies.php =================================================================== --- trunk/Currencies.php 2016-10-07 09:21:45 UTC (rev 7643) +++ trunk/Currencies.php 2016-10-11 15:52:19 UTC (rev 7644) @@ -389,7 +389,7 @@ <td class="number">%s</td> <td class="number">%s</td> <td><a href="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '?&SelectedCurrency=' . urlencode($myrow['currabrev']) . '">' . _('Edit') . '</a></td> - <td colspan="2">' . _('Functional Currency') . '</td> + <td colspan="2"><a href="CompanyPreferences.php#CurrencyDefault">' . _('Functional Currency') . '</a></td> </tr>', $ImageFile, $myrow['currabrev'], Modified: trunk/SystemParameters.php =================================================================== --- trunk/SystemParameters.php 2016-10-07 09:21:45 UTC (rev 7643) +++ trunk/SystemParameters.php 2016-10-11 15:52:19 UTC (rev 7644) @@ -3,16 +3,16 @@ /* This script is for maintenance of the system parameters. */ include('includes/session.inc'); - -$Title = _('System Parameters');// Screen identificator. -$ViewTopic= 'GettingStarted';// Filename's id in ManualContents.php's TOC. -$BookMark = 'SystemConfiguration';// Anchor's id in the manual's html document. +$Title = _('System Parameters'); +$ViewTopic = 'CreatingNewSystem'; +$BookMark = 'SystemParameters'; include('includes/header.inc'); -echo '<p class="page_title_text"><img alt="" src="'.$RootPath.'/css/'.$Theme. - '/images/maintenance.png" title="' .// Title icon. - $Title . '" />' .// Icon title. - $Title . '</p>';// Page title. +echo '<p class="page_title_text"><img alt="" src="', $RootPath, '/css/', $Theme, + '/images/maintenance.png" title="', // Icon image. + $Title, '" /> ', // Icon title. + $Title, '</p>';// Page title. + include('includes/CountriesArray.php'); if (isset($_POST['submit'])) { Modified: trunk/doc/Manual/ManualCreatingNewSystem.html =================================================================== --- trunk/doc/Manual/ManualCreatingNewSystem.html 2016-10-07 09:21:45 UTC (rev 7643) +++ trunk/doc/Manual/ManualCreatingNewSystem.html 2016-10-11 15:52:19 UTC (rev 7644) @@ -60,30 +60,33 @@ For GL integration at the sales level the posting codes for sales for a specific sales type, sales area and stock category need to be defined from Setup > Sales GL Interface Postings. For Stock GL integration then the cost of sales posting codes for a specific sales type, sales area and stock catgeory also need to be set up from Setup > COGS GL Interface Postings (COGS = Cost Of Goods Sold). If appropriate GL codes are not specified the system will automatically create a new GL account number 1 for the postings to be made to. If you have this account keep appearing then this is a good sign that default posting codes are not created.</p> <!-- Help End: CompanyPreferences --> - <!-- Help Begin: SystemConfiguration --> + <!-- Help Begin: SystemParameters --> <div class="floatright"> <a class="minitext" href="#top">⬆ Top</a></div> -<h2><a id="SystemConfiguration">System Configuration</a></h2> +<h2><a id="SystemParameters">System Parameters</a></h2> <p> From the setup tab the main system configuration parameters can be set from the link "Configuration Settings". Narrative is shown alongside each parameter to give the user an idea of where the setting is used.</p> <table border="1" width="100%"> +<thead> <tr> <th style="width:20%;">Parameter</th> <th>Description</th> </tr> +</thead> +<tbody> <tr> - <td>Default Date Format (for input and to appear on reports)</td> - - <td>The default date format for entry of dates and display use d/m/Y for England/Australia/NZ or m/d/Y for US and Canada</td> + <td align="center" colspan="2"><b>General Settings</b></td> </tr> - <tr> - <td>New Users Default Theme:</td> - - <td>The default theme is used for new users who have not yet defined the display colour scheme theme of their choice</td> + <td>Default Date Format:</td> + <td>The default date format for entry of dates and display. It is for input and to appear on reports. The default date format for entry of dates and display use Y-m-d for ISO 8601, d/m/Y for England/Australia/NZ, m/d/Y for US and Canada, or else.</td> </tr> + <tr> + <td>Default Theme:</td> + <td>The default theme to use for the login screen and the setup of new users. It is used for new users who have not yet defined the display colour scheme theme of their choice. The users' theme selection will override it.</td> + </tr> <tr> <td colspan="2" align="center"><b>Accounts Receivable/Payable Settings</b></td> @@ -360,6 +363,7 @@ <p></p> </td> </tr> +</tbody> </table> <!-- Help End: SystemConfiguration --> Modified: trunk/locale/es_ES.utf8/LC_MESSAGES/messages.mo =================================================================== (Binary files differ) Modified: trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po =================================================================== --- trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po 2016-10-07 09:21:45 UTC (rev 7643) +++ trunk/locale/es_ES.utf8/LC_MESSAGES/messages.po 2016-10-11 15:52:19 UTC (rev 7644) @@ -8,8 +8,8 @@ "Project-Id-Version: webERP 4.12.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-05-16 21:31+1200\n" -"PO-Revision-Date: 2016-06-11 14:24-0600\n" -"Last-Translator: Rafael Chacon <raf...@gm...>\n" +"PO-Revision-Date: 2016-10-07 12:41-0600\n" +"Last-Translator: Rafael E. Chacón <raf...@gm...>\n" "Language-Team: TecnoSoluciones.com <web...@te...>\n" "Language: es_ES\n" "MIME-Version: 1.0\n" @@ -3877,7 +3877,7 @@ #: BOMs_SingleLevel.php:7 msgid "Bill Of Materials Maintenance" -msgstr "" +msgstr "Mantenimiento de lista de materiales" #: BOMs_SingleLevel.php:260 StockAdjustments.php:171 msgid "The quantity entered cannot be zero" @@ -11212,7 +11212,7 @@ #: DailyBankTransactions.php:182 msgid "Previous Balance" -msgstr "" +msgstr "Saldo anterior" #: DailyBankTransactions.php:198 msgid "Failed to retrieve gl narrative" @@ -11220,7 +11220,7 @@ #: DailyBankTransactions.php:238 msgid "Account Balance" -msgstr "" +msgstr "Saldo de la cuenta" #: DailyBankTransactions.php:252 GLJournalInquiry.php:142 msgid "Select Another Date" @@ -26160,7 +26160,7 @@ #: ReprintGRN.php:92 SupplierGRNAndInvoiceInquiry.php:41 #: SupplierGRNAndInvoiceInquiry.php:75 msgid "Invoice No" -msgstr "" +msgstr "Factura No." #: ReprintGRN.php:112 msgid "Reprint GRN " @@ -28433,11 +28433,11 @@ #: SelectCustomer.php:558 msgid "Latitude" -msgstr "" +msgstr "Latitud" #: SelectCustomer.php:558 msgid "Longitude" -msgstr "" +msgstr "Longitud" #: SelectCustomer.php:562 msgid "Unable to update GeoCode for CustomerID" @@ -28467,7 +28467,7 @@ #: SelectCustomer.php:681 msgid "Last Paid Date" -msgstr "" +msgstr "Última fecha de pago" #: SelectCustomer.php:687 msgid "Last Paid Amount (inc tax)" @@ -39724,7 +39724,7 @@ #: WorkOrderIssue.php:939 msgid "Lot No" -msgstr "" +msgstr "Lote No." #: WorkOrderIssue.php:952 msgid "Quantity Issued" Modified: trunk/sql/mysql/upgrade4.13-4.13.1.sql =================================================================== --- trunk/sql/mysql/upgrade4.13-4.13.1.sql 2016-10-07 09:21:45 UTC (rev 7643) +++ trunk/sql/mysql/upgrade4.13-4.13.1.sql 2016-10-11 15:52:19 UTC (rev 7644) @@ -1,15 +1,14 @@ -INSERT INTO scripts VALUES ('InternalStockRequestInquiry.php',1,'Internal Stock Request inquiry'); -ALTER table stockrequest ADD initiator varchar(20) NOT NULL DEFAULT ''; -INSERT INTO securitytokens VALUES (19,'Internal stock request fully access authority'); -INSERT INTO scripts VALUES ('PDFGLJournalCN.php',1,'Print GL Journal Chinese version'); -ALTER table custcontacts ADD statement tinyint(4) NOT NULL DEFAULT 0; -INSERT INTO scripts VALUES ('PcTabExpensesList.php', '15', 'Creates excel with all movements of tab between dates'); - +ALTER TABLE `custcontacts` ADD `statement` TINYINT(4) NOT NULL DEFAULT 0; -- 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'); -ALTER table workorders ADD remark text DEFAULT NULL; -ALTER table workorders ADD reference varchar(40) NOT NULL DEFAULT ''; +ALTER TABLE `salesanalysis` CHANGE `salesperson` `salesperson` VARCHAR(4) DEFAULT '' NOT NULL; +ALTER TABLE `stockrequest` ADD `initiator` VARCHAR(20) NOT NULL DEFAULT ''; +ALTER TABLE `supplierdiscounts` CONVERT TO CHARACTER SET utf8; +ALTER TABLE `workorders` ADD `reference` VARCHAR(40) NOT NULL DEFAULT ''; +ALTER TABLE `workorders` ADD `remark` TEXT DEFAULT NULL; +INSERT INTO `scripts` VALUES ('InternalStockRequestInquiry.php', 1, 'Internal Stock Request inquiry'); +INSERT INTO `scripts` VALUES ('PcAssignCashTabToTab.php', 12, 'Assign cash from one tab to another'); +INSERT INTO `scripts` VALUES ('PcTabExpensesList.php', '15', 'Creates excel with all movements of tab between dates'); +INSERT INTO `scripts` VALUES ('PDFGLJournalCN.php', 1, 'Print GL Journal Chinese version'); +INSERT INTO `securitytokens` VALUES (19, 'Internal stock request fully access authority'); -ALTER TABLE `salesanalysis` CHANGE `salesperson` `salesperson` VARCHAR(4) DEFAULT '' NOT NULL; |
From: <dai...@us...> - 2016-10-07 09:21:47
|
Revision: 7643 http://sourceforge.net/p/web-erp/reponame/7643 Author: daintree Date: 2016-10-07 09:21:45 +0000 (Fri, 07 Oct 2016) Log Message: ----------- Eatong: Format the ManualAPITutorial.html for easier reading Modified Paths: -------------- trunk/doc/Change.log trunk/doc/Manual/ManualAPITutorial.html trunk/doc/Manual/ManualContributors.html trunk/doc/Manual/style/manual.css trunk/sql/mysql/upgrade4.13-4.13.1.sql Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-10-06 02:13:21 UTC (rev 7642) +++ trunk/doc/Change.log 2016-10-07 09:21:45 UTC (rev 7643) @@ -1,5 +1,8 @@ webERP Change Log +05/10/16 Eatong: Format the ManualAPITutorial.html for easier reading. +05/10/16 Eatong: Add CSS rule for <pre> for easier reading. +05/10/16 Eatong: Align field length of salesanalysis.salesperson to salesman.salesmancode. 05/10/16 RChacon: Add cross.svg, next.svg, previous.svg, and tick.svg images in Scalable Vector Graphics (SVG) format for general use (any size). 04/10/16 RChacon: In class.pdf.php, fix the function addJpegFromFile() use of the functionality Image() of TCPDF class. 04/10/16 RChacon: In class.pdf.php, functions Rectangle() and RoundRectangle() use the functionalities Rect() and RoundedRectXY() of TCPDF class. @@ -10,7 +13,7 @@ 24/10/16 Simon Kelly: Fixed placing POs for sales orders using array form variable 24/09/16 waynemcdougall: Fixed missing date in Sales Price history 24/09/16 Exson: Make Justify feature workable in addTextWrap in class.pdf.php. -24/09/16 Exson: Fixed the AddTextWrap missing characters errors when there is space and make it more reliable. +24/09/16 Exson: Fixed the AddTextWrap missing characters errors when there is space and make it more reliable. 21/09/16 RChacon: In SuppWhereAlloc.php, accepts the payment multiple creditors. In CustWhereAlloc.php, accepts the receipt of multiple debtors. 18/09/16 RChacon: Add style to describe how button image should be displayed. Clean up Xenos css. 18/09/16 Exson: Add multiple items issue for non-controlled items feature to Work Orders in WorkOrderIssue.php. @@ -22,7 +25,7 @@ 04/09/16 Exson: Fixed the undefined noise in WorkOrderStatus.php. 04/09/16 Exson: Fixed the bug that work order location will be wrong when user select location which is not user's default location. 04/09/16 Dave Parrish fixed accumulated No of orders bug in SalesByTypePeriodInquiry.php. -31/08/16 Exson: Addd new feature assign cash from one tab to another. +31/08/16 Exson: Addd new feature assign cash from one tab to another. 24/08/16 Exson: Fixed the latin1 charset mixed bug in supplierdiscounts table; 24/9/16 Exson: Fixed the bug that days of payment terms in the following month over 31 days can not be handled correctly in DateFunctions.inc. 20/08/16 RChacon: In ConfirmDispatch_Invoice.php, fix table html code. Modified: trunk/doc/Manual/ManualAPITutorial.html =================================================================== --- trunk/doc/Manual/ManualAPITutorial.html 2016-10-06 02:13:21 UTC (rev 7642) +++ trunk/doc/Manual/ManualAPITutorial.html 2016-10-07 09:21:45 UTC (rev 7643) @@ -1,447 +1,430 @@ -<a id="APITutorial"><h1>Application Programming Interface</h1></a> - -<h2> API - Getting Started</h2> -<p> -webERP comes with a simple to use and flexible API that allows client programs to access webERP in a safe and secure manner. If you wish to write an application that accesses webERP, either to post transactions, or to extract information, then you should use the API, rather than try to access the webERP database directly, as the API makes sure that the integrity of the data is maintained. The API is an "<i>Application Program Interface</i>", that is intended to expose functionality to external programs. There are currently a number of low level functions it exposes to enable external applications to retrieve data and to update or insert data. However the API was structured in a manner that allows other protocols to be used very easily. All that would need to be done to use the SOAP protocol for instance would be to create an api_soap.php file with the same functions as the api_xmlrpc.php file. -</p> -The API uses the XML-RPC protocol to communicate between the client and the server. This was chosen because it is lightweight, simple, and easy to use. The API uses the XML-RPC for PHP - also called the phpxmlrpc class from Useful Inc originally developed by Edd Dumbill. This is an external library that is bundled with webERP code ready to run. Whilst the standard PHP XML-RPC extension could have been used, the extension is often not installed by default, so would add another dependency to webERP and complexity for the setup and installation of webERP. -</p> -<p>XML-RPC is a protocl to use XML to make RPC - remote procedure calls.</p> -<p> -Simply put the XML-RPC call is XML that contains the method of the remote procedure call together with any parameters and their data types and is sent over http as a POST to the XML-RPC server - the server returns an XML payload containing the results of the call. The parameters sent to the methods can contain arrays and associative arrays of data.</p> -<p> -The clever thing about XML-RPC is that it is the simplest protocol around for doing web-services. The newer and MUCH more complex SOAP - Simple Object Access Protocol - is quite involved and complicated. is founded on the KISS principle.</p> -<p> -In fact the XML-RPC "Server" in is just the script http://www.yourdomain.com//api/api_xml-rpc.php</p> -<p>There is no daemon background process running continuously to field calls to the "server" it is just a script that is http posted to by the XML-RPC call sending the XML encoded method to be run together with the necessary parameters to the API - the server script runs the API php functions exposed by the xml-rpc methods and returns the XML-RPC response as an XML payload. The phpxmlrpc class does the packaging converting the PHP variables and arrays to the XML required for the XML-RPC call and also has the functions to convert the XML response into something useable in PHP without having to write the XML parsing routines.</p> -<p>There is one hardcoded parameter that needs to be set in the api before you start to use it. The database name - the company database - to use with the api is defined in the file api/api_php.php - the variable -<blockquote><i>$api_DatabaseName="demo";</i></blockquote> -<p>should be set before attempting to use the api.</p> -<p> -It is worthwhile reading a how-to on XML-RPC with PHP which explains in more detail what is going on as a primer for the concepts.</p> -<p> -The beauty of XML-RPC is that the client calling the XML-RPC server and performing native functions can be called from any language (with XML-RPC bindings). I have used Vala, Genie and Python. Python particularly has been very straight forward as it has an xmlrpclib bundled with it. Of course a PHP client is also possible and is demonstrated below.</p> -<p> -The API help is actually produced by an xml-rpc call to the API using the system.listMethods method (this is a phpxmlrpc method - not a API method). Aother system xml-rpc method of phpxmlrpc class is used to return the details of each method"s parameters required. So the help file not only documents each of the API methods it is itself and illustration of how the API can be used!!</p> -<p>In the narrative below, the word "<i>Server</i>" is used to refer to the host webERP installation - in fact the <i>"server"</i> this is the script webERP/xml-rpc/api_xmlrpc.php</p> -<p>The API is configured by default to use the company database weberpdemo, and this is hard coded in the script api/api_php.php on line 6: -<blockquote><i> -$api_DatabaseName="weberpdemo"; -</i></blockquote> -<p>This database should be changed manually before the API can be used to the company database that you wish the API to access. Note that the API can only work on one company in a webERP installation. This is a limitation of the design.</p> -<p>Below is a simple example of how to use the API.</p> -<p>It is a simple <i>client</i> (a consumer of the API) application where the stock quantity for the item DVD-TOPGUN is retrieved from the webERP installation using the API. -<p> -<hr> -<blockquote><i> -echo "Test API"; -<br /> -<br />//the xmlrpc class can output some funny warnings so make sure notices are turned off error_reporting (E_ALL & ~E_NOTICE); -<br /> -<br />/* you need to include the phpxmlrpc class - see link above - copy the whole directory structure of the class over to your client application from the /xmlrpc directory */ -<br /> -<br />include ("xmlrpc/lib/xmlrpc.inc"); -<br /> -<br />//if your install is on a server at http://www.yourdomain.com/ -<br /> -<br />$ServerURL = "http://www.yourdomain.com//api/api_xml-rpc.php"; -<br /> -<br />$DebugLevel = 0; //Set to 0,1, or 2 with 2 being the highest level of debug info -<br /> -<br />$Parameters = array(); -<br /> -<br />/* The trap for me was that each parameter needs to be run through xmlrpcval() - to create the necessary xml required for the rpc call if one of the parameters required is an array then it needs to be processing into xml for the rpc call through php_xmlrpc_encode()*/ -<br /> -<br />$Parameters["StockID"] = new xmlrpcval("DVD-TOPGUN"); //the stockid of the item we wish to know the balance for -<br /> -<br />//assuming the demo username and password will work ! -<br /> -<br />$Parameters["Username"] = new xmlrpcval("admin"); -<br /> -<br />$Parameters["Password"] = new xmlrpcval(""); -<br /> -<br />$Msg = new xmlrpcmsg(".xmlrpc_GetStockBalance", $Parameters); -<br /> -<br />$Client = new xmlrpc_client($ServerURL); -<br /> -<br />$Client->setDebug($DebugLevel); -<br /> -<br />$Response = $Client->send($Msg); -<br /> -<br />$Answer = php_xmlrpc_decode($Response->value()); -<br /> -<br />if ($Answer[0]!=0){ //then the API returned some errors need to figure out what went wrong -<br /> -<br /><blockquote>//need to figure out how to return all the error descriptions associated with the codes</blockquote> -<br /> -<br />} else { //all went well the returned data is in $answer[1] -<br /> -<br /><blockquote>//answer will be an array of the locations and quantity on hand for DVD_TOPGUN so we need to run through the array to print out -<br /> -<br />for ($i=0; $i < sizeof($Answer[1]);$i++) { -<br /> -<br /><blockquote>echo "" . $Answer[1][$i]["loccode"] . " has " . $Answer[1][$i]["quantity"] . " on hand";</blockquote> -<br /> -<br />} -<br /></blockquote> -<br />} -</blockquote></i> -<hr /> -<p> -To create invoices in you need to use the following methods:</p> -<p> -InsertOrderHeader InsertOrderLine - potentially multiple times for all the lines on the order then InvoiceSalesOrder - to invoice sales orders directly assuming the entire order is delivered - it cannot deal with controlled stock items though. However, it does process invoices in much the same way as standard with updates to the stock quantities dispatched, GL entries and records required to record taxes and sales analysis records.</p> -<p> -To create a credit note just a sinlge API call is required:</p> -<p> -CreateCreditNote - to create a credit note from some base header data and an array of line items (as an associative array. In the same way as the InvoiceSalesOrder function this does all the same processing as a standard credit note from the interface in .</p> -<p> -There are some example scripts on the wiki showing how a number of the API XML-RPC functions are called - these scripts should be put on a web-server outside a installation - all you need to do is edit the config.inc file to give the system your username and password and the URL of your installation you wish to connect to. As always playing with the examples helps to figure out how it all works.</p> -<br /> -<h2>An Example Client</h2> -<p>For this example we will build a small PHP application that will first interrogate webERP for a full list of available stock locations, build them into an HTML drop down list and then allow a user to input a stock item code and return the quantity of stock of that item at the selected location. We will use PHP for simplicity but any language that has an xmlrpc library (just about every language) can be used to write a client.</p> -<p>Firstly we need the xmlrpc library, so we copy the xmlrpc sub-directory from webERP to this new project.</p> -<p>The basic code will look like this, and be saved into a file called index.php:</p> -<blockquote><i> -<html> - <head> - <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - </head> - <body> - <form action="index.html" method="post"> - Stock Code:<input type="text" name="StockID" /><br /> - Location:<select name="location"> - <?php // Here will go the available stock locations from webERP?> - </select><br /> - <input type="submit" name="submit" value="Submit" /> - </form> - </body> -</html> -</blockquote></i> -<p>As its name suggests, the xmlrpc function calls are made by sending an XML file with the function name and the parameters to the server, and receive an XML file back from the server.</p> -<p>To assist with this, the phpxmlrpc library that webERP uses (and we will use as well for our client) contains methods to encode our function call as XML, and to decode the XML that we receive back.</p> -<p>First off we need to include the xmlrpc library in our file, so immediately above the HTML, we need the following:</p> -<blockquote><i> -<?php - include "xmlrpc/lib/xmlrpc.inc"; - $xmlrpc_internalencoding="UTF-8"; - include "xmlrpc/lib/xmlrpcs.inc"; -?> -</blockquote></i> -<p>To populate the drop down box with the stock locations in it the API function called webERP.xmlrpc_GetLocationList() is used. This function takes two parameters, a valid userid for the webERP instance, and the password for that user. Using the demo credentials is admin/weberp. Also, the file api_php.php must have the $api_databasename set to whatever the name of the database is on your target webERP installation.</p> -<p>The function to get the inventory locations will look like this, and be at the bottom of the file, within a PHP code section (ie <?php ?>).</p> -<blockquote><i> -<br /> function GetLocations() { -<br /> -<br /> //Encode the user/password combination -<br /> $UserID = php_xmlrpc_encode("admin"); -<br /> $Password = php_xmlrpc_encode("webERP"); -<br /> -<br /> //Create a client object to use for xmlrpc call -<br /> $Client = new xmlrpc_client("http://localhost/webERP/api/api_xml-rpc.php"); -<br /> -<br /> //Create a message object, containing the parameters and the function name -<br /> $Message = new xmlrpcmsg("webERP.xmlrpc_GetLocationList", array($UserID, $Password)); -</blockquote></i> -<p>The most common error just return no authorisation with no information about why this has happened. Most webERP API/XML-RPC calls returns an array containing two elements, the first - $Response[0] containing an integer code, and the second the result of the call, if one is expected. If the integer code is zero, this indicates success. Any other code indicates an error. These are the errors and the codes that are returned to represent them: -<blockquote><i> -<br />NoAuthorisation - 1 -<br />IncorrectDebtorNumberLength - 1000 -<br />DebtorNoAlreadyExists - 1001 -<br />IncorrectDebtorNameLength - 1002 -<br />InvalidAddressLine - 1003 -<br />CurrencyCodeNotSetup - 1004 -<br />SalesTypeNotSetup - 1005 -<br />InvalidClientSinceDate - 1006 -<br />HoldReasonNotSetup - 1007 -<br />PaymentTermsNotSetup - 1008 -<br />InvalidDiscount - 1009 -<br />InvalidPaymentDiscount - 1010 -<br />InvalidLastPaid - 1011 -<br />InvalidLastPaidDate - 1012 -<br />InvalidCreditLimit - 1013 -<br />InvalidInvAddrBranch - 1014 -<br />InvalidDiscountCode - 1015 -<br />InvalidEDIInvoices - 1016 -<br />InvalidEDIOrders - 1017 -<br />InvalidEDIReference - 1018 -<br />InvalidEDITransport - 1019 -<br />InvalidEDIAddress - 1020 -<br />InvalidEDIServerUser - 1021 -<br />InvalidEDIServerPassword - 1022 -<br />InvalidTaxRef - 1023 -<br />InvalidCustomerPOLine - 1024 -<br />DatabaseUpdateFailed - 1025 -<br />NoDebtorNumber - 1026 -<br />DebtorDoesntExist - 1027 -<br />IncorrectBranchNumberLength - 1028 -<br />BranchNoAlreadyExists - 1029 -<br />IncorrectBranchNameLength - 1030 -<br />InvalidEstDeliveryDays - 1031 -<br />AreaCodeNotSetup - 1032 -<br />SalesmanCodeNotSetup - 1033 -<br />InvalidFwdDate - 1034 -<br />InvalidPhoneNumber - 1035 -<br />InvalidFaxNumber - 1036 -<br />InvalidContactName - 1037 -<br />InvalidEmailAddress - 1038 -<br />LocationCodeNotSetup - 1039 -<br />TaxGroupIdNotSetup - 1040 -<br />ShipperNotSetup - 1041 -<br />InvalidDeliverBlind - 1042 -<br />InvalidDisableTrans - 1043 -<br />InvalidSpecialInstructions - 1044 -<br />InvalidCustBranchCode - 1045 -<br />BranchNoDoesntExist - 1046 -<br />StockCodeDoesntExist - 1047 -<br />StockCategoryDoesntExist - 1048 -<br />IncorrectStockDescriptionLength - 1049 -<br />IncorrectUnitsLength - 1050 -<br />IncorrectMBFlag - 1051 -<br />InvalidCurCostDate - 1052 -<br />InvalidActualCost - 1053 -<br />InvalidLowestLevel - 1054 -<br />InvalidDiscontinued - 1055 -<br />InvalidEOQ - 1056 -<br />InvalidVolume - 1057 -<br />InvalidKgs - 1058 -<br />IncorrectBarCodeLength - 1059 -<br />IncorrectDiscountCategory - 1060 -<br />TaxCategoriesDoesntExist - 1061 -<br />InvalidSerialised - 1062 -<br />IncorrectAppendFile - 1063 -<br />InvalidPerishable - 1064 -<br />InvalidDecmalPlaces - 1065 -<br />IncorrectLongStockDescriptionLength - 1066 -<br />StockCodeAlreadyExists - 1067 -<br />TransactionNumberAlreadyExists - 1068 -<br />InvalidTranDate - 1069 -<br />InvalidSettled - 1070 -<br />IncorrectReference - 1071 -<br />IncorrectTpe - 1072 -<br />InvalidOrderNumbers - 1073 -<br />InvalidExchangeRate - 1074 -<br />InvalidOVAmount - 1075 -<br />InvalidOVGst - 1076 -<br />InvalidOVFreight - 1077 -<br />InvalidDiffOnExchange - 1078 -<br />InvalidAllocation - 1079 -<br />IncorrectInvoiceText - 1080 -<br />InvalidShipVia - 1081 -<br />InvalidEdiSent - 1082 -<br />InvalidConsignment - 1083 -<br />InvalidLastCost - 1084 -<br />InvalidMaterialCost - 1085 -<br />InvalidLabourCost - 1086 -<br />InvalidOverheadCost - 1087 -<br />InvalidCustomerRef - 1088 -<br />InvalidBuyerName - 1089 -<br />InvalidComments - 1090 -<br />InvalidOrderDate - 1091 -<br />InvalidDeliverTo - 1092 -<br />InvalidFreightCost - 1094 -<br />InvalidDeliveryDate - 1095 -<br />InvalidQuotationFlag - 1096 -<br />OrderHeaderNotSetup - 1097 -<br />InvalidUnitPrice - 1098 -<br />InvalidQuantity - 1099 -<br />InvalidDiscountPercent - 1100 -<br />InvalidNarrative - 1101 -<br />InvalidItemDueDate - 1102 -<br />InvalidPOLine - 1103 -<br />GLAccountCodeAlreadyExists - 1104 -<br />IncorrectAccountNameLength - 1105 -<br />AccountGroupDoesntExist - 1106 -<br />GLAccountSectionAlreadyExists - 1107 -<br />IncorrectSectionNameLength - 1108 -<br />GLAccountGroupAlreadyExists - 1109 -<br />GLAccountSectionDoesntExist - 1110 -<br />InvalidPandL - 1111 -<br />InvalidSequenceInTB - 1112 -<br />GLAccountGroupDoesntExist - 1113 -<br />InvalidLatitude - 1114 -<br />InvalidLongitude - 1115 -<br />CustomerTypeNotSetup - 1116 -<br />NoPricesSetup - 1117 -<br />InvalidInvoicedQuantity - 1118 -<br />InvalidActualDispatchDate - 1119 -<br />InvalidCompletedFlag - 1120 -<br />InvalidCategoryID - 1121 -<br />InvalidCategoryDescription - 1122 -<br />InvalidStockType - 1123 -<br />GLAccountCodeDoesntExists - 1124 -<br />StockCategoryAlreadyExists - 1125 -<br />SupplierNoAlreadyExists - 1126 -<br />IncorrectSupplierNameLength - 1127 -<br />InvalidSupplierSinceDate - 1128 -<br />InvalidBankAccount - 1129 -<br />InvalidBankReference - 1130 -<br />InvalidBankPartics - 1131 -<br />InvalidRemittanceFlag - 1132 -<br />FactorCompanyNotSetup - 1133 -<br />SupplierNoDoesntExists - 1134 -<br />InvalidSuppliersUOM - 1135 -<br />InvalidConversionFactor - 1136 -<br />InvalidSupplierDescription - 1137 -<br />InvalidLeadTime - 1138 -<br />InvalidPreferredFlag - 1139 -<br />StockSupplierLineDoesntExist - 1140 -<br />InvalidRequiredByDate - 1141 -<br />InvalidStartDate - 1142 -<br />InvalidCostIssued - 1143 -<br />InvalidQuantityRequired - 1144 -<br />InvalidQuantityReceived - 1145 -<br />InvalidStandardCost - 1146 -<br />IncorrectSerialNumber - 1147 -<br />WorkOrderDoesntExist - 1148 -<br />InvalidIssuedQuantity - 1149 -<br />InvalidTransactionDate - 1150 -<br />InvalidReceivedQuantity - 1151 -<br />ItemNotControlled - 1152 -<br />ItemSerialised - 1153 -<br />BatchNumberDoesntExist - 1154 -<br />BatchIsEmpty - 1155 -<br />NoSuchArea - 1156 -<br />NoSuchSalesMan - 1157 -<br />NoCompanyRecord - 1158 -<br />NoReadOrder - 1159 -<br />NoReadOrderLines - 1160 -<br />NoTaxProvince - 1161 -<br />TaxRatesFailed - 1162 -<br />NoReadCustomerBranch - 1163 -<br />NoReadItem - 1164 -<br />MustBeReceiptOrCreditNote - 1165 -<br />NoTransactionToAllocate - 1166 -</blockquote></i> - -<p>As you can see error code 1 indicates "NoAuthorisation" which will be the error returned if the user name or password is incorrect and also if the name of the database to be used in the api call is not specified correctly in the file webERP/api/api_php.php in the variable:</p> -<blockquote><i> -$api_DatabaseName="weberpdemo"; -</blockquote></i> -<p>To catch the errors we create a session variable to hold any error messages that happen, so that we can show the to the user. So the initialisation code at the top of index.php becomes:</p> - -<blockquote><i><?php -<br />include "xmlrpc/lib/xmlrpc.inc"; -<br />$xmlrpc_internalencoding="UTF-8"; -<br />include "xmlrpc/lib/xmlrpcs.inc"; -<br />$_SESSION["Errors"] = array(); -?> -</i></blockquote> -<p>and then at the bottom of the output we have a loop to output these errors:</p> -<blockquote><i> -<br />foreach ($_SESSION["Errors"] as $Error) { -<br />echo $Error; -<br />} -</i></blockquote> -<br />Now we just need to capture that error. We need to put this code at the bottom of the GetLocations() function so that it now reads: -<blockquote><i> -<br />if ($ReturnValue[0] == 0) { -<br /> return $ReturnValue[1]; -<br />} elseif ($ReturnValue[0] == 1) { -<br /> $_SESSION["Errors"][] = "Incorrect login/password credentials used"; -<br />} -</i></blockquote> -<br />Now run the index.php script again in your browser and you should get output similar to this: -<br /> -<br />We just need to put this code at the bottom of our other functions, and then they will all be able to catch this error. -<br /> -<br />Now if we put the proper password back in index.php should work as before. -<br /> -<br />Now try entering a stock code that you know doesn"t exist and see what happens. I entered a part code called "wrong" and this is what I see. -<br /> -<br />This is not very helpful output so we need catch this error. A quick look here shows that error code 1047 is "StockCodeDoesntExist" and this should be returned if the code we entered is wrong. So we need to capture error 1047 in the GetStockQuantity() function. The code at the end of this function now becomes: -<blockquote><i> -<br />} elseif ($ReturnValue[0] == 1) { -<br />$_SESSION["Errors"][] = "Incorrect login/password credentials used"; -<br />} elseif ($ReturnValue[0] == 1047) { -<br />$_SESSION["Errors"][] = "The stock code you entered does not exist"; -<br />} -</blockquote></i> -<br />So now the function is checking that the user/password is correct and also checking that the stock code is correct and providing useful feedback in the case of any problems. We could go on and check for other errors but this should be enough for now. -<br /> -<br />To do this we need a function much like the one we used to extract the array of location codes. Here is the full code: -<blockquote><i> -<br /> function LocationName($LocationCode) { -<br /> -<br />//Encode the data items -<br /> $UserID = php_xmlrpc_encode("admin"); -<br /> $Password = php_xmlrpc_encode("webERP"); -<br /> $Code = php_xmlrpc_encode($LocationCode); -<br /> -<br /> //Create a client object to use for xmlrpc call and set its debug level to zero -<br /> $Client = new xmlrpc_client("http://localhost/webERP/api/api_xml-rpc.php"); -<br /> $Client->setDebug(0); -<br /> -<br /> //Create a message object, containing the parameters and the function name -<br /> $Message = new xmlrpcmsg("webERP.xmlrpc_GetLocationDetails", array($Code, $UserID, $Password)); -<br /> -<br /> //Use the client object to send the message object to the server, returning the response -<br /> $Response = $Client->send($Message); -<br /> -<br /> //Decode the response and return the array -<br /> $ReturnValue = php_xmlrpc_decode($Response->value()); -<br /> if ($ReturnValue[0] == 0) { -<br /> return $ReturnValue[1]["locationname"]; -<br /> } -<br /> } -</blockquote></i> -<br /> -<p>The first section encodes the parameters as XML. The first two parameters are always the userid/password combination, and for this function call we need a third parameter, which is the code of the location that we require the name of. The second section is identical to the previous function and creates an instance of the XML-RPC client class. The third section then creates an instance of the message class, with the first parameter being the full name of the API function being called, in this case webERP.xmlrpc_GetLocationDetails, and then the second parameter is an array of the encoded parameters, (location code, userid, password). This message is then sent to the server, and the response decoded into an array called $ReturnValue.</p> -<p>As last time the first element of the array signifies whether the function was successful (a zero), or any other integer for an error code. The second element is an associative array of details for that location. The key of each element is the field name for that value. In our case we just want the location name, so we return the element ["locationname"]. If it was the telephone number we were interested in we would just return the ["tel"] element.</p> -<p>Changing the line in the HTML where we fill the drop down box to:</p> -<blockquote><i> -echo <option value=" . $LocationCode . "> . LocationName($LocationCode) . "</option>"; -</blockquote></i> -<p>The full name of the location appears in the drop down the list, but the value returned by the form is still just the code.</p> -<p>All that is left to complete our client, is to type a stock code in the text box, submit the form and return the amount of stock for that code at the chosen location. First we need to insert some PHP code in the HTML to handle the form being sent:</p> - -<blockquote><i> -<br /> if (isset($_POST["submit"])) { -<br /> echo "The quantity of " . $_POST["StockID"] . " at " . $_POST["location"] . " is : " . GetStockQuantity($_POST["StockID"], $_POST["location"]); -<br /> } -</blockquote></i> -<p>As you can see this calls another PHP function - GetStockQuantity() - that retrieves the stock quantity for the required item at the required location. Looking at the API function reference in the manual the API function we require is webERP.xmlrpc_GetStockBalance. However this time there is a small addition we require as this function returns an array containing the stock balances at all the locations for the given stock item.</p> -<p>The full code for the PHP function is:</p> -<blockquote><i> -<br />function GetStockQuantity($StockID, $LocationCode) { -<br /> //Encode the data items -<br /> $UserID = php_xmlrpc_encode("admin"); -<br /> $Password = php_xmlrpc_encode("webERP"); -<br /> $StockCode = php_xmlrpc_encode($StockID); -<br /> -<br /> //Create a client object to use for xmlrpc call and set its debug level to zero -<br /> $Client = new xmlrpc_client("http://localhost/webERP/api/api_xml-rpc.php"); -<br /> $Client->setDebug(0); -<br /> //Create a message object, containing the parameters and the function name -<br /> $Message = new xmlrpcmsg("webERP.xmlrpc_GetStockBalance", array($StockCode, $UserID, $Password)); -<br /> //Use the client object to send the message object to the server, returning the response -<br /> $Response = $Client->send($Message); -<br /> //Decode the response and return the array -<br /> $ReturnValue = php_xmlrpc_decode($Response->value()); -<br /> if ($ReturnValue[0] == 0) { -<br /> $Items = $ReturnValue[1]; -<br /> for ($i=0; $i<sizeOf($Items); $i++) { -<br /> if ($Items[$i]["loccode"]==$LocationCode) { -<br /> return $Items[$i]["quantity"]; -<br /> } -<br /> } -<br /> } -<br /> } -</blockquote></i> -<br /> -<p>I wont go through this in details as it is mostly the same as the previous functions. The key section is the last:</p> -<blockquote><i> -<br /> $ReturnValue = php_xmlrpc_decode($Response->value()); -<br /> if ($ReturnValue[0] == 0) { -<br /> $Items = $ReturnValue[1]; -<br /> for ($i=0; $i<sizeOf($Items); $i++) { -<br /> if ($Items[$i]["loccode"]==$LocationCode) { -<br /> return $Items[$i]["quantity"]; -<br /> } -<br /> } -<br /> } -</blockquote></i> -<br />Here the RPC returns an array of locations with the stock quantities for each location, and we filter out the location we need. -<br /> +<a id="APITutorial"><h1>Application Programming Interface</h1></a> + +<h2> API - Getting Started</h2> +<p> +webERP comes with a simple to use and flexible API that allows client programs to access webERP in a safe and secure manner. If you wish to write an application that accesses webERP, either to post transactions, or to extract information, then you should use the API, rather than try to access the webERP database directly, as the API makes sure that the integrity of the data is maintained. The API is an "<i>Application Program Interface</i>", that is intended to expose functionality to external programs. There are currently a number of low level functions it exposes to enable external applications to retrieve data and to update or insert data. However the API was structured in a manner that allows other protocols to be used very easily. All that would need to be done to use the SOAP protocol for instance would be to create an api_soap.php file with the same functions as the api_xmlrpc.php file. +</p> +<p> +The API uses the XML-RPC protocol to communicate between the client and the server. This was chosen because it is lightweight, simple, and easy to use. The API uses the XML-RPC for PHP - also called the phpxmlrpc class from Useful Inc originally developed by Edd Dumbill. This is an external library that is bundled with webERP code ready to run. Whilst the standard PHP XML-RPC extension could have been used, the extension is often not installed by default, so would add another dependency to webERP and complexity for the setup and installation of webERP. +</p> +<p>XML-RPC is a protocl to use XML to make RPC - remote procedure calls.</p> +<p> +Simply put the XML-RPC call is XML that contains the method of the remote procedure call together with any parameters and their data types and is sent over http as a POST to the XML-RPC server - the server returns an XML payload containing the results of the call. The parameters sent to the methods can contain arrays and associative arrays of data.</p> +<p> +The clever thing about XML-RPC is that it is the simplest protocol around for doing web-services. The newer and MUCH more complex SOAP - Simple Object Access Protocol - is quite involved and complicated. is founded on the KISS principle.</p> +<p> +In fact the XML-RPC "Server" in is just the script http://www.yourdomain.com//api/api_xml-rpc.php</p> +<p>There is no daemon background process running continuously to field calls to the "server" it is just a script that is http posted to by the XML-RPC call sending the XML encoded method to be run together with the necessary parameters to the API - the server script runs the API php functions exposed by the xml-rpc methods and returns the XML-RPC response as an XML payload. The phpxmlrpc class does the packaging converting the PHP variables and arrays to the XML required for the XML-RPC call and also has the functions to convert the XML response into something useable in PHP without having to write the XML parsing routines.</p> +<p>There is one hardcoded parameter that needs to be set in the api before you start to use it. The database name - the company database - to use with the api is defined in the file api/api_php.php - the variable +<blockquote><pre>$api_DatabaseName="demo";</pre></blockquote> +<p>should be set before attempting to use the api.</p> +<p> +It is worthwhile reading a how-to on XML-RPC with PHP which explains in more detail what is going on as a primer for the concepts.</p> +<p> +The beauty of XML-RPC is that the client calling the XML-RPC server and performing native functions can be called from any language (with XML-RPC bindings). I have used Vala, Genie and Python. Python particularly has been very straight forward as it has an xmlrpclib bundled with it. Of course a PHP client is also possible and is demonstrated below.</p> +<p> +The API help is actually produced by an xml-rpc call to the API using the system.listMethods method (this is a phpxmlrpc method - not a API method). Aother system xml-rpc method of phpxmlrpc class is used to return the details of each method"s parameters required. So the help file not only documents each of the API methods it is itself and illustration of how the API can be used!!</p> +<p>In the narrative below, the word "<i>Server</i>" is used to refer to the host webERP installation - in fact the <i>"server"</i> this is the script webERP/xml-rpc/api_xmlrpc.php</p> +<p>The API is configured by default to use the company database weberpdemo, and this is hard coded in the script api/api_php.php on line 6: +<blockquote><pre><pre> +$api_DatabaseName="weberpdemo"; +</pre></pre></blockquote> +<p>This database should be changed manually before the API can be used to the company database that you wish the API to access. Note that the API can only work on one company in a webERP installation. This is a limitation of the design.</p> +<p>Below is a simple example of how to use the API.</p> +<p>It is a simple <i>client</i> (a consumer of the API) application where the stock quantity for the item DVD-TOPGUN is retrieved from the webERP installation using the API. +<p> +<hr> +<blockquote><pre> +echo "Test API"; +//the xmlrpc class can output some funny warnings so make sure notices are turned off error_reporting (E_ALL & ~E_NOTICE); +/* you need to include the phpxmlrpc class - see link above - copy the whole directory structure of the class over to your client application from the /xmlrpc directory */ + +include ("xmlrpc/lib/xmlrpc.inc"); + +//if your install is on a server at http://www.yourdomain.com/ + +$ServerURL = "http://www.yourdomain.com//api/api_xml-rpc.php"; +$DebugLevel = 0; //Set to 0,1, or 2 with 2 being the highest level of debug info +$Parameters = array(); + +/* The trap for me was that each parameter needs to be run through xmlrpcval() - to create the necessary xml required for the rpc call if one of the parameters required is an array then it needs to be processing into xml for the rpc call through php_xmlrpc_encode()*/ +$Parameters["StockID"] = new xmlrpcval("DVD-TOPGUN"); //the stockid of the item we wish to know the balance for + +//assuming the demo username and password will work ! +$Parameters["Username"] = new xmlrpcval("admin"); +$Parameters["Password"] = new xmlrpcval(""); + +$Msg = new xmlrpcmsg(".xmlrpc_GetStockBalance", $Parameters); + +$Client = new xmlrpc_client($ServerURL); +$Client->setDebug($DebugLevel); +$Response = $Client->send($Msg); +$Answer = php_xmlrpc_decode($Response->value()); +if ($Answer[0]!=0){ //then the API returned some errors need to figure out what went wrong + //need to figure out how to return all the error descriptions associated with the codes +} else { //all went well the returned data is in $answer[1] + //answer will be an array of the locations and quantity on hand for DVD_TOPGUN so we need to run through the array to print out + for ($i=0; $i < sizeof($Answer[1]);$i++) { + echo "" . $Answer[1][$i]["loccode"] . " has " . $Answer[1][$i]["quantity"] . " on hand"; + } +} +</pre></blockquote> +<hr /> +<p> +To create invoices in you need to use the following methods:</p> +<p> +InsertOrderHeader InsertOrderLine - potentially multiple times for all the lines on the order then InvoiceSalesOrder - to invoice sales orders directly assuming the entire order is delivered - it cannot deal with controlled stock items though. However, it does process invoices in much the same way as standard with updates to the stock quantities dispatched, GL entries and records required to record taxes and sales analysis records.</p> +<p> +To create a credit note just a sinlge API call is required:</p> +<p> +CreateCreditNote - to create a credit note from some base header data and an array of line items (as an associative array. In the same way as the InvoiceSalesOrder function this does all the same processing as a standard credit note from the interface in .</p> +<p> +There are some example scripts on the wiki showing how a number of the API XML-RPC functions are called - these scripts should be put on a web-server outside a installation - all you need to do is edit the config.inc file to give the system your username and password and the URL of your installation you wish to connect to. As always playing with the examples helps to figure out how it all works.</p> +<br /> +<h2>An Example Client</h2> +<p>For this example we will build a small PHP application that will first interrogate webERP for a full list of available stock locations, build them into an HTML drop down list and then allow a user to input a stock item code and return the quantity of stock of that item at the selected location. We will use PHP for simplicity but any language that has an xmlrpc library (just about every language) can be used to write a client.</p> +<p>Firstly we need the xmlrpc library, so we copy the xmlrpc sub-directory from webERP to this new project.</p> +<p>The basic code will look like this, and be saved into a file called index.php:</p> +<blockquote><pre> +<html> + <head> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + </head> + <body> + <form action="index.html" method="post"> + Stock Code:<input type="text" name="StockID" /><br /> + Location:<select name="location"> + <?php // Here will go the available stock locations from webERP?> + </select><br /> + <input type="submit" name="submit" value="Submit" /> + </form> + </body> +</html> +</pre></pre></blockquote> +<p>As its name suggests, the xmlrpc function calls are made by sending an XML file with the function name and the parameters to the server, and receive an XML file back from the server.</p> +<p>To assist with this, the phpxmlrpc library that webERP uses (and we will use as well for our client) contains methods to encode our function call as XML, and to decode the XML that we receive back.</p> +<p>First off we need to include the xmlrpc library in our file, so immediately above the HTML, we need the following:</p> +<blockquote><pre> +<?php + include "xmlrpc/lib/xmlrpc.inc"; + $xmlrpc_internalencoding="UTF-8"; + include "xmlrpc/lib/xmlrpcs.inc"; +?> +</pre></blockquote> +<p>To populate the drop down box with the stock locations in it the API function called webERP.xmlrpc_GetLocationList() is used. This function takes two parameters, a valid userid for the webERP instance, and the password for that user. Using the demo credentials is admin/weberp. Also, the file api_php.php must have the $api_databasename set to whatever the name of the database is on your target webERP installation.</p> +<p>The function to get the inventory locations will look like this, and be at the bottom of the file, within a PHP code section (ie <?php ?>).</p> +<blockquote><pre> +function GetLocations() { + + //Encode the user/password combination + $UserID = php_xmlrpc_encode("admin"); + $Password = php_xmlrpc_encode("webERP"); + + //Create a client object to use for xmlrpc call + $Client = new xmlrpc_client("http://localhost/webERP/api/api_xml-rpc.php"); + + //Create a message object, containing the parameters and the function name + $Message = new xmlrpcmsg("webERP.xmlrpc_GetLocationList", array($UserID, $Password)); +</pre></blockquote> +<p>The most common error just return no authorisation with no information about why this has happened. Most webERP API/XML-RPC calls returns an array containing two elements, the first - $Response[0] containing an integer code, and the second the result of the call, if one is expected. If the integer code is zero, this indicates success. Any other code indicates an error. These are the errors and the codes that are returned to represent them: +<blockquote><pre> +NoAuthorisation - 1 +IncorrectDebtorNumberLength - 1000 +DebtorNoAlreadyExists - 1001 +IncorrectDebtorNameLength - 1002 +InvalidAddressLine - 1003 +CurrencyCodeNotSetup - 1004 +SalesTypeNotSetup - 1005 +InvalidClientSinceDate - 1006 +HoldReasonNotSetup - 1007 +PaymentTermsNotSetup - 1008 +InvalidDiscount - 1009 +InvalidPaymentDiscount - 1010 +InvalidLastPaid - 1011 +InvalidLastPaidDate - 1012 +InvalidCreditLimit - 1013 +InvalidInvAddrBranch - 1014 +InvalidDiscountCode - 1015 +InvalidEDIInvoices - 1016 +InvalidEDIOrders - 1017 +InvalidEDIReference - 1018 +InvalidEDITransport - 1019 +InvalidEDIAddress - 1020 +InvalidEDIServerUser - 1021 +InvalidEDIServerPassword - 1022 +InvalidTaxRef - 1023 +InvalidCustomerPOLine - 1024 +DatabaseUpdateFailed - 1025 +NoDebtorNumber - 1026 +DebtorDoesntExist - 1027 +IncorrectBranchNumberLength - 1028 +BranchNoAlreadyExists - 1029 +IncorrectBranchNameLength - 1030 +InvalidEstDeliveryDays - 1031 +AreaCodeNotSetup - 1032 +SalesmanCodeNotSetup - 1033 +InvalidFwdDate - 1034 +InvalidPhoneNumber - 1035 +InvalidFaxNumber - 1036 +InvalidContactName - 1037 +InvalidEmailAddress - 1038 +LocationCodeNotSetup - 1039 +TaxGroupIdNotSetup - 1040 +ShipperNotSetup - 1041 +InvalidDeliverBlind - 1042 +InvalidDisableTrans - 1043 +InvalidSpecialInstructions - 1044 +InvalidCustBranchCode - 1045 +BranchNoDoesntExist - 1046 +StockCodeDoesntExist - 1047 +StockCategoryDoesntExist - 1048 +IncorrectStockDescriptionLength - 1049 +IncorrectUnitsLength - 1050 +IncorrectMBFlag - 1051 +InvalidCurCostDate - 1052 +InvalidActualCost - 1053 +InvalidLowestLevel - 1054 +InvalidDiscontinued - 1055 +InvalidEOQ - 1056 +InvalidVolume - 1057 +InvalidKgs - 1058 +IncorrectBarCodeLength - 1059 +IncorrectDiscountCategory - 1060 +TaxCategoriesDoesntExist - 1061 +InvalidSerialised - 1062 +IncorrectAppendFile - 1063 +InvalidPerishable - 1064 +InvalidDecmalPlaces - 1065 +IncorrectLongStockDescriptionLength - 1066 +StockCodeAlreadyExists - 1067 +TransactionNumberAlreadyExists - 1068 +InvalidTranDate - 1069 +InvalidSettled - 1070 +IncorrectReference - 1071 +IncorrectTpe - 1072 +InvalidOrderNumbers - 1073 +InvalidExchangeRate - 1074 +InvalidOVAmount - 1075 +InvalidOVGst - 1076 +InvalidOVFreight - 1077 +InvalidDiffOnExchange - 1078 +InvalidAllocation - 1079 +IncorrectInvoiceText - 1080 +InvalidShipVia - 1081 +InvalidEdiSent - 1082 +InvalidConsignment - 1083 +InvalidLastCost - 1084 +InvalidMaterialCost - 1085 +InvalidLabourCost - 1086 +InvalidOverheadCost - 1087 +InvalidCustomerRef - 1088 +InvalidBuyerName - 1089 +InvalidComments - 1090 +InvalidOrderDate - 1091 +InvalidDeliverTo - 1092 +InvalidFreightCost - 1094 +InvalidDeliveryDate - 1095 +InvalidQuotationFlag - 1096 +OrderHeaderNotSetup - 1097 +InvalidUnitPrice - 1098 +InvalidQuantity - 1099 +InvalidDiscountPercent - 1100 +InvalidNarrative - 1101 +InvalidItemDueDate - 1102 +InvalidPOLine - 1103 +GLAccountCodeAlreadyExists - 1104 +IncorrectAccountNameLength - 1105 +AccountGroupDoesntExist - 1106 +GLAccountSectionAlreadyExists - 1107 +IncorrectSectionNameLength - 1108 +GLAccountGroupAlreadyExists - 1109 +GLAccountSectionDoesntExist - 1110 +InvalidPandL - 1111 +InvalidSequenceInTB - 1112 +GLAccountGroupDoesntExist - 1113 +InvalidLatitude - 1114 +InvalidLongitude - 1115 +CustomerTypeNotSetup - 1116 +NoPricesSetup - 1117 +InvalidInvoicedQuantity - 1118 +InvalidActualDispatchDate - 1119 +InvalidCompletedFlag - 1120 +InvalidCategoryID - 1121 +InvalidCategoryDescription - 1122 +InvalidStockType - 1123 +GLAccountCodeDoesntExists - 1124 +StockCategoryAlreadyExists - 1125 +SupplierNoAlreadyExists - 1126 +IncorrectSupplierNameLength - 1127 +InvalidSupplierSinceDate - 1128 +InvalidBankAccount - 1129 +InvalidBankReference - 1130 +InvalidBankPartics - 1131 +InvalidRemittanceFlag - 1132 +FactorCompanyNotSetup - 1133 +SupplierNoDoesntExists - 1134 +InvalidSuppliersUOM - 1135 +InvalidConversionFactor - 1136 +InvalidSupplierDescription - 1137 +InvalidLeadTime - 1138 +InvalidPreferredFlag - 1139 +StockSupplierLineDoesntExist - 1140 +InvalidRequiredByDate - 1141 +InvalidStartDate - 1142 +InvalidCostIssued - 1143 +InvalidQuantityRequired - 1144 +InvalidQuantityReceived - 1145 +InvalidStandardCost - 1146 +IncorrectSerialNumber - 1147 +WorkOrderDoesntExist - 1148 +InvalidIssuedQuantity - 1149 +InvalidTransactionDate - 1150 +InvalidReceivedQuantity - 1151 +ItemNotControlled - 1152 +ItemSerialised - 1153 +BatchNumberDoesntExist - 1154 +BatchIsEmpty - 1155 +NoSuchArea - 1156 +NoSuchSalesMan - 1157 +NoCompanyRecord - 1158 +NoReadOrder - 1159 +NoReadOrderLines - 1160 +NoTaxProvince - 1161 +TaxRatesFailed - 1162 +NoReadCustomerBranch - 1163 +NoReadItem - 1164 +MustBeReceiptOrCreditNote - 1165 +NoTransactionToAllocate - 1166 +</pre></blockquote> + +<p>As you can see error code 1 indicates "NoAuthorisation" which will be the error returned if the user name or password is incorrect and also if the name of the database to be used in the api call is not specified correctly in the file webERP/api/api_php.php in the variable:</p> +<blockquote><pre> +$api_DatabaseName="weberpdemo"; +</pre></blockquote> +<p>To catch the errors we create a session variable to hold any error messages that happen, so that we can show the to the user. So the initialisation code at the top of index.php becomes:</p> + +<blockquote><pre><?php +include "xmlrpc/lib/xmlrpc.inc"; +$xmlrpc_internalencoding="UTF-8"; +include "xmlrpc/lib/xmlrpcs.inc"; +$_SESSION["Errors"] = array(); +?> +</pre></blockquote> +<p>and then at the bottom of the output we have a loop to output these errors:</p> +<blockquote><pre> +foreach ($_SESSION["Errors"] as $Error) { + echo $Error; +} +</pre></blockquote> +<br />Now we just need to capture that error. We need to put this code at the bottom of the GetLocations() function so that it now reads: +<blockquote><pre> +if ($ReturnValue[0] == 0) { + return $ReturnValue[1]; +} elseif ($ReturnValue[0] == 1) { + $_SESSION["Errors"][] = "Incorrect login/password credentials used"; +} +</pre></blockquote> +<br />Now run the index.php script again in your browser and you should get output similar to this: +<br /> +<br />We just need to put this code at the bottom of our other functions, and then they will all be able to catch this error. +<br /> +<br />Now if we put the proper password back in index.php should work as before. +<br /> +<br />Now try entering a stock code that you know doesn"t exist and see what happens. I entered a part code called "wrong" and this is what I see. +<br /> +<br />This is not very helpful output so we need catch this error. A quick look here shows that error code 1047 is "StockCodeDoesntExist" and this should be returned if the code we entered is wrong. So we need to capture error 1047 in the GetStockQuantity() function. The code at the end of this function now becomes: +<blockquote><pre> +} elseif ($ReturnValue[0] == 1) { + $_SESSION["Errors"][] = "Incorrect login/password credentials used"; +} elseif ($ReturnValue[0] == 1047) { + $_SESSION["Errors"][] = "The stock code you entered does not exist"; +} +</pre></blockquote> +<br />So now the function is checking that the user/password is correct and also checking that the stock code is correct and providing useful feedback in the case of any problems. We could go on and check for other errors but this should be enough for now. +<br /> +<br />To do this we need a function much like the one we used to extract the array of location codes. Here is the full code: +<blockquote><pre> + function LocationName($LocationCode) { + +//Encode the data items + $UserID = php_xmlrpc_encode("admin"); + $Password = php_xmlrpc_encode("webERP"); + $Code = php_xmlrpc_encode($LocationCode); + + //Create a client object to use for xmlrpc call and set its debug level to zero + $Client = new xmlrpc_client("http://localhost/webERP/api/api_xml-rpc.php"); + $Client->setDebug(0); + + //Create a message object, containing the parameters and the function name + $Message = new xmlrpcmsg("webERP.xmlrpc_GetLocationDetails", array($Code, $UserID, $Password)); + + //Use the client object to send the message object to the server, returning the response + $Response = $Client->send($Message); + + //Decode the response and return the array + $ReturnValue = php_xmlrpc_decode($Response->value()); + if ($ReturnValue[0] == 0) { + return $ReturnValue[1]["locationname"]; + } + } +</pre></blockquote> +<br /> +<p>The first section encodes the parameters as XML. The first two parameters are always the userid/password combination, and for this function call we need a third parameter, which is the code of the location that we require the name of. The second section is identical to the previous function and creates an instance of the XML-RPC client class. The third section then creates an instance of the message class, with the first parameter being the full name of the API function being called, in this case webERP.xmlrpc_GetLocationDetails, and then the second parameter is an array of the encoded parameters, (location code, userid, password). This message is then sent to the server, and the response decoded into an array called $ReturnValue.</p> +<p>As last time the first element of the array signifies whether the function was successful (a zero), or any other integer for an error code. The second element is an associative array of details for that location. The key of each element is the field name for that value. In our case we just want the location name, so we return the element ["locationname"]. If it was the telephone number we were interested in we would just return the ["tel"] element.</p> +<p>Changing the line in the HTML where we fill the drop down box to:</p> +<blockquote><pre> +echo <option value=" . $LocationCode . "> . LocationName($LocationCode) . "</option>"; +</pre></blockquote> +<p>The full name of the location appears in the drop down the list, but the value returned by the form is still just the code.</p> +<p>All that is left to complete our client, is to type a stock code in the text box, submit the form and return the amount of stock for that code at the chosen location. First we need to insert some PHP code in the HTML to handle the form being sent:</p> + +<blockquote><pre> +if (isset($_POST["submit"])) { + echo "The quantity of " . $_POST["StockID"] . " at " . $_POST["location"] . " is : " . GetStockQuantity($_POST["StockID"], $_POST["location"]); +} +</pre></blockquote> +<p>As you can see this calls another PHP function - GetStockQuantity() - that retrieves the stock quantity for the required item at the required location. Looking at the API function reference in the manual the API function we require is webERP.xmlrpc_GetStockBalance. However this time there is a small addition we require as this function returns an array containing the stock balances at all the locations for the given stock item.</p> +<p>The full code for the PHP function is:</p> +<blockquote><pre> +function GetStockQuantity($StockID, $LocationCode) { + //Encode the data items + $UserID = php_xmlrpc_encode("admin"); + $Password = php_xmlrpc_encode("webERP"); + $StockCode = php_xmlrpc_encode($StockID); + + //Create a client object to use for xmlrpc call and set its debug level to zero + $Client = new xmlrpc_client("http://localhost/webERP/api/api_xml-rpc.php"); + $Client->setDebug(0); + //Create a message object, containing the parameters and the function name + $Message = new xmlrpcmsg("webERP.xmlrpc_GetStockBalance", array($StockCode, $UserID, $Password)); + //Use the client object to send the message object to the server, returning the response + $Response = $Client->send($Message); + //Decode the response and return the array + $ReturnValue = php_xmlrpc_decode($Response->value()); + if ($ReturnValue[0] == 0) { + $Items = $ReturnValue[1]; + for ($i=0; $i < sizeOf($Items); $i++) { + if ($Items[$i]["loccode"]==$LocationCode) { + return $Items[$i]["quantity"]; + } + } + } +} +</pre></blockquote> +<br /> +<p>I wont go through this in details as it is mostly the same as the previous functions. The key section is the last:</p> +<blockquote><pre> + $ReturnValue = php_xmlrpc_decode($Response->value()); + if ($ReturnValue[0] == 0) { + $Items = $ReturnValue[1]; + for ($i=0; $i < sizeOf($Items); $i++) { + if ($Items[$i]["loccode"]==$LocationCode) { + return $Items[$i]["quantity"]; + } + } + } +</pre></blockquote> +<br />Here the RPC returns an array of locations with the stock quantities for each location, and we filter out the location we need. +<br /> <br />Showing that we have returned the correct numbers. \ No newline at end of file Modified: trunk/doc/Manual/ManualContributors.html =================================================================== --- trunk/doc/Manual/ManualContributors.html 2016-10-06 02:13:21 UTC (rev 7642) +++ trunk/doc/Manual/ManualContributors.html 2016-10-07 09:21:45 UTC (rev 7643) @@ -14,6 +14,7 @@ <p>Jan Bakke</p> <p>Chris Bice</p> <p>Danie Brink</p> + <p>Aingel Carbonell</p> <p>Daffyd Crosby</p> <p>Rafael E. Chacón</p> <p>Phil Daintree</p> Modified: trunk/doc/Manual/style/manual.css =================================================================== --- trunk/doc/Manual/style/manual.css 2016-10-06 02:13:21 UTC (rev 7642) +++ trunk/doc/Manual/style/manual.css 2016-10-07 09:21:45 UTC (rev 7643) @@ -122,3 +122,6 @@ margin-left:2%; margin-right:2%; } +pre { + font-size: 1.2em; +} \ No newline at end of file Modified: trunk/sql/mysql/upgrade4.13-4.13.1.sql =================================================================== --- trunk/sql/mysql/upgrade4.13-4.13.1.sql 2016-10-06 02:13:21 UTC (rev 7642) +++ trunk/sql/mysql/upgrade4.13-4.13.1.sql 2016-10-07 09:21:45 UTC (rev 7643) @@ -11,3 +11,5 @@ INSERT INTO scripts VALUES ('PcAssignCashTabToTab.php',12,'Assign cash from one tab to another'); ALTER table workorders ADD remark text DEFAULT NULL; ALTER table workorders ADD reference varchar(40) NOT NULL DEFAULT ''; + +ALTER TABLE `salesanalysis` CHANGE `salesperson` `salesperson` VARCHAR(4) DEFAULT '' NOT NULL; |
From: <rc...@us...> - 2016-10-06 02:13:24
|
Revision: 7642 http://sourceforge.net/p/web-erp/reponame/7642 Author: rchacon Date: 2016-10-06 02:13:21 +0000 (Thu, 06 Oct 2016) Log Message: ----------- Add cross.svg, next.svg, previous.svg, and tick.svg images in Scalable Vector Graphics (SVG) format for general use (any size). Modified Paths: -------------- trunk/css/aguapop/images/return.svg trunk/css/default/images/return.svg trunk/css/fluid/images/return.svg trunk/css/fresh/images/return.svg trunk/css/gel/images/return.svg trunk/css/professional/images/return.svg trunk/css/professional-rtl/images/return.svg trunk/css/silverwolf/images/return.svg trunk/css/wood/images/return.svg trunk/css/xenos/images/return.svg trunk/doc/Change.log Added Paths: ----------- trunk/css/aguapop/images/cross.svg trunk/css/aguapop/images/next.svg trunk/css/aguapop/images/previous.svg trunk/css/aguapop/images/tick.svg trunk/css/default/images/cross.svg trunk/css/default/images/next.svg trunk/css/default/images/previous.svg trunk/css/default/images/tick.svg trunk/css/fluid/images/cross.svg trunk/css/fluid/images/next.svg trunk/css/fluid/images/previous.svg trunk/css/fluid/images/tick.svg trunk/css/fresh/images/cross.svg trunk/css/fresh/images/next.svg trunk/css/fresh/images/previous.svg trunk/css/fresh/images/tick.svg trunk/css/gel/images/cross.svg trunk/css/gel/images/next.svg trunk/css/gel/images/previous.svg trunk/css/gel/images/tick.svg trunk/css/professional/images/cross.svg trunk/css/professional/images/next.svg trunk/css/professional/images/previous.svg trunk/css/professional/images/tick.svg trunk/css/professional-rtl/images/cross.svg trunk/css/professional-rtl/images/next.svg trunk/css/professional-rtl/images/previous.svg trunk/css/professional-rtl/images/tick.svg trunk/css/silverwolf/images/cross.svg trunk/css/silverwolf/images/next.svg trunk/css/silverwolf/images/previous.svg trunk/css/silverwolf/images/tick.svg trunk/css/wood/images/cross.svg trunk/css/wood/images/next.svg trunk/css/wood/images/previous.svg trunk/css/wood/images/tick.svg trunk/css/xenos/images/cross.svg trunk/css/xenos/images/next.svg trunk/css/xenos/images/previous.svg trunk/css/xenos/images/tick.svg Added: trunk/css/aguapop/images/cross.svg =================================================================== --- trunk/css/aguapop/images/cross.svg (rev 0) +++ trunk/css/aguapop/images/cross.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3382">Cross image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Cross image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:date>2016-09-28</dc:date><dc:description>Cross image</dc:description><dc:language>en-GB</dc:language><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Cross" d="M 8,47 23,32 8,17 C 2,11 11,2 17,8 L 32,23 47,8 C 53,2 62,11 56,17 L 41,32 56,47 C 62,53 53,62 47,56 L 32,41 17,56 C 11,62 2,53 8,47 Z" /></g></svg> \ No newline at end of file Added: trunk/css/aguapop/images/next.svg =================================================================== --- trunk/css/aguapop/images/next.svg (rev 0) +++ trunk/css/aguapop/images/next.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Next image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Next image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Next image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Next" d="M 46,32 18,6 18,58 Z" /></g></svg> \ No newline at end of file Added: trunk/css/aguapop/images/previous.svg =================================================================== --- trunk/css/aguapop/images/previous.svg (rev 0) +++ trunk/css/aguapop/images/previous.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Previous image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Previous image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Previous image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Previous" d="M 18,32 46,6 46,58 Z" /></g></svg> \ No newline at end of file Modified: trunk/css/aguapop/images/return.svg =================================================================== --- trunk/css/aguapop/images/return.svg 2016-10-04 20:37:44 UTC (rev 7641) +++ trunk/css/aguapop/images/return.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -1,90 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - id="svg2" - version="1.1" - width="64" - height="64" - viewBox="0 0 64 64"> - <defs - id="defs17" /> - <title - id="title3359">Return image</title> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>Return image</dc:title> - <dc:date>2016-09-28</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:creator> - <dc:publisher> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:publisher> - <dc:description>Return image</dc:description> - <dc:language>en-GB</dc:language> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:prohibits - rdf:resource="http://creativecommons.org/ns#CommercialUse" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <filter - id="i1" - width="150%" - height="150%"> - <feOffset - result="offOut" - in="SourceAlpha" - dx="2" - dy="4" - id="feOffset6" /> - <feGaussianBlur - result="blurOut" - in="offOut" - stdDeviation="1" - id="feGaussianBlur8" /> - <feBlend - in="SourceGraphic" - in2="blurOut" - mode="normal" - id="feBlend10" /> - </filter> - <g - filter="url(#i1)" - id="g12"> - <path - id="Return" - d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" - style="fill:#000080" /> - </g> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg2" version="1.1" width="64" height="64" viewBox="0 0 64 64"><title id="title3359">Return image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Return image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Return image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter id="sh" width="150%" height="150%"><feOffset result="offOut" in="SourceAlpha" dx="2" dy="4" id="feOffset6" /><feGaussianBlur result="blurOut" in="offOut" stdDeviation="1" id="feGaussianBlur8" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" id="feBlend10" /></filter><g filter="url(#sh)" id="g12"><path id="Return" d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" style="fill:#000080" /></g></svg> \ No newline at end of file Added: trunk/css/aguapop/images/tick.svg =================================================================== --- trunk/css/aguapop/images/tick.svg (rev 0) +++ trunk/css/aguapop/images/tick.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3383">Tick image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Tick image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Tick image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#008000" id="Tick" d="M 55,17 C 59,12 49,5 46,10 19,36 27,51 19,32 15,26 5,33 9,39 30,75 23,45 55,17 Z" /></g></svg> \ No newline at end of file Added: trunk/css/default/images/cross.svg =================================================================== --- trunk/css/default/images/cross.svg (rev 0) +++ trunk/css/default/images/cross.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3382">Cross image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Cross image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:date>2016-09-28</dc:date><dc:description>Cross image</dc:description><dc:language>en-GB</dc:language><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Cross" d="M 8,47 23,32 8,17 C 2,11 11,2 17,8 L 32,23 47,8 C 53,2 62,11 56,17 L 41,32 56,47 C 62,53 53,62 47,56 L 32,41 17,56 C 11,62 2,53 8,47 Z" /></g></svg> \ No newline at end of file Added: trunk/css/default/images/next.svg =================================================================== --- trunk/css/default/images/next.svg (rev 0) +++ trunk/css/default/images/next.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Next image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Next image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Next image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Next" d="M 46,32 18,6 18,58 Z" /></g></svg> \ No newline at end of file Added: trunk/css/default/images/previous.svg =================================================================== --- trunk/css/default/images/previous.svg (rev 0) +++ trunk/css/default/images/previous.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Previous image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Previous image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Previous image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Previous" d="M 18,32 46,6 46,58 Z" /></g></svg> \ No newline at end of file Modified: trunk/css/default/images/return.svg =================================================================== --- trunk/css/default/images/return.svg 2016-10-04 20:37:44 UTC (rev 7641) +++ trunk/css/default/images/return.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -1,90 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - id="svg2" - version="1.1" - width="64" - height="64" - viewBox="0 0 64 64"> - <defs - id="defs17" /> - <title - id="title3359">Return image</title> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>Return image</dc:title> - <dc:date>2016-09-28</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:creator> - <dc:publisher> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:publisher> - <dc:description>Return image</dc:description> - <dc:language>en-GB</dc:language> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:prohibits - rdf:resource="http://creativecommons.org/ns#CommercialUse" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <filter - id="i1" - width="150%" - height="150%"> - <feOffset - result="offOut" - in="SourceAlpha" - dx="2" - dy="4" - id="feOffset6" /> - <feGaussianBlur - result="blurOut" - in="offOut" - stdDeviation="1" - id="feGaussianBlur8" /> - <feBlend - in="SourceGraphic" - in2="blurOut" - mode="normal" - id="feBlend10" /> - </filter> - <g - filter="url(#i1)" - id="g12"> - <path - id="Return" - d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" - style="fill:#000080" /> - </g> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg2" version="1.1" width="64" height="64" viewBox="0 0 64 64"><title id="title3359">Return image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Return image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Return image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter id="sh" width="150%" height="150%"><feOffset result="offOut" in="SourceAlpha" dx="2" dy="4" id="feOffset6" /><feGaussianBlur result="blurOut" in="offOut" stdDeviation="1" id="feGaussianBlur8" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" id="feBlend10" /></filter><g filter="url(#sh)" id="g12"><path id="Return" d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" style="fill:#000080" /></g></svg> \ No newline at end of file Added: trunk/css/default/images/tick.svg =================================================================== --- trunk/css/default/images/tick.svg (rev 0) +++ trunk/css/default/images/tick.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3383">Tick image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Tick image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Tick image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#008000" id="Tick" d="M 55,17 C 59,12 49,5 46,10 19,36 27,51 19,32 15,26 5,33 9,39 30,75 23,45 55,17 Z" /></g></svg> \ No newline at end of file Added: trunk/css/fluid/images/cross.svg =================================================================== --- trunk/css/fluid/images/cross.svg (rev 0) +++ trunk/css/fluid/images/cross.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3382">Cross image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Cross image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:date>2016-09-28</dc:date><dc:description>Cross image</dc:description><dc:language>en-GB</dc:language><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Cross" d="M 8,47 23,32 8,17 C 2,11 11,2 17,8 L 32,23 47,8 C 53,2 62,11 56,17 L 41,32 56,47 C 62,53 53,62 47,56 L 32,41 17,56 C 11,62 2,53 8,47 Z" /></g></svg> \ No newline at end of file Added: trunk/css/fluid/images/next.svg =================================================================== --- trunk/css/fluid/images/next.svg (rev 0) +++ trunk/css/fluid/images/next.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Next image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Next image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Next image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Next" d="M 46,32 18,6 18,58 Z" /></g></svg> \ No newline at end of file Added: trunk/css/fluid/images/previous.svg =================================================================== --- trunk/css/fluid/images/previous.svg (rev 0) +++ trunk/css/fluid/images/previous.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Previous image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Previous image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Previous image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Previous" d="M 18,32 46,6 46,58 Z" /></g></svg> \ No newline at end of file Modified: trunk/css/fluid/images/return.svg =================================================================== --- trunk/css/fluid/images/return.svg 2016-10-04 20:37:44 UTC (rev 7641) +++ trunk/css/fluid/images/return.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -1,90 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - id="svg2" - version="1.1" - width="64" - height="64" - viewBox="0 0 64 64"> - <defs - id="defs17" /> - <title - id="title3359">Return image</title> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>Return image</dc:title> - <dc:date>2016-09-28</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:creator> - <dc:publisher> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:publisher> - <dc:description>Return image</dc:description> - <dc:language>en-GB</dc:language> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:prohibits - rdf:resource="http://creativecommons.org/ns#CommercialUse" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <filter - id="i1" - width="150%" - height="150%"> - <feOffset - result="offOut" - in="SourceAlpha" - dx="2" - dy="4" - id="feOffset6" /> - <feGaussianBlur - result="blurOut" - in="offOut" - stdDeviation="1" - id="feGaussianBlur8" /> - <feBlend - in="SourceGraphic" - in2="blurOut" - mode="normal" - id="feBlend10" /> - </filter> - <g - filter="url(#i1)" - id="g12"> - <path - id="Return" - d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" - style="fill:#000080" /> - </g> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg2" version="1.1" width="64" height="64" viewBox="0 0 64 64"><title id="title3359">Return image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Return image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Return image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter id="sh" width="150%" height="150%"><feOffset result="offOut" in="SourceAlpha" dx="2" dy="4" id="feOffset6" /><feGaussianBlur result="blurOut" in="offOut" stdDeviation="1" id="feGaussianBlur8" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" id="feBlend10" /></filter><g filter="url(#sh)" id="g12"><path id="Return" d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" style="fill:#000080" /></g></svg> \ No newline at end of file Added: trunk/css/fluid/images/tick.svg =================================================================== --- trunk/css/fluid/images/tick.svg (rev 0) +++ trunk/css/fluid/images/tick.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3383">Tick image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Tick image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Tick image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#008000" id="Tick" d="M 55,17 C 59,12 49,5 46,10 19,36 27,51 19,32 15,26 5,33 9,39 30,75 23,45 55,17 Z" /></g></svg> \ No newline at end of file Added: trunk/css/fresh/images/cross.svg =================================================================== --- trunk/css/fresh/images/cross.svg (rev 0) +++ trunk/css/fresh/images/cross.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3382">Cross image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Cross image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:date>2016-09-28</dc:date><dc:description>Cross image</dc:description><dc:language>en-GB</dc:language><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Cross" d="M 8,47 23,32 8,17 C 2,11 11,2 17,8 L 32,23 47,8 C 53,2 62,11 56,17 L 41,32 56,47 C 62,53 53,62 47,56 L 32,41 17,56 C 11,62 2,53 8,47 Z" /></g></svg> \ No newline at end of file Added: trunk/css/fresh/images/next.svg =================================================================== --- trunk/css/fresh/images/next.svg (rev 0) +++ trunk/css/fresh/images/next.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Next image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Next image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Next image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Next" d="M 46,32 18,6 18,58 Z" /></g></svg> \ No newline at end of file Added: trunk/css/fresh/images/previous.svg =================================================================== --- trunk/css/fresh/images/previous.svg (rev 0) +++ trunk/css/fresh/images/previous.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3336">Previous image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Previous image</dc:title><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:date>2016-09-28</dc:date><dc:description>Previous image</dc:description><dc:language>en-GB</dc:language><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter height="150%" width="150%" id="sh"><feOffset id="feOffset6" dy="4" dx="2" in="SourceAlpha" result="offOut" /><feGaussianBlur id="feGaussianBlur8" stdDeviation="1" in="offOut" result="blurOut" /><feBlend id="feBlend10" mode="normal" in2="blurOut" in="SourceGraphic" /></filter><g id="g12" filter="url(#sh)"><path style="fill:#fc0e0c" id="Previous" d="M 18,32 46,6 46,58 Z" /></g></svg> \ No newline at end of file Modified: trunk/css/fresh/images/return.svg =================================================================== --- trunk/css/fresh/images/return.svg 2016-10-04 20:37:44 UTC (rev 7641) +++ trunk/css/fresh/images/return.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -1,90 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - id="svg2" - version="1.1" - width="64" - height="64" - viewBox="0 0 64 64"> - <defs - id="defs17" /> - <title - id="title3359">Return image</title> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>Return image</dc:title> - <dc:date>2016-09-28</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:creator> - <dc:publisher> - <cc:Agent> - <dc:title>Rafael E. Chacón</dc:title> - </cc:Agent> - </dc:publisher> - <dc:description>Return image</dc:description> - <dc:language>en-GB</dc:language> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:prohibits - rdf:resource="http://creativecommons.org/ns#CommercialUse" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <filter - id="i1" - width="150%" - height="150%"> - <feOffset - result="offOut" - in="SourceAlpha" - dx="2" - dy="4" - id="feOffset6" /> - <feGaussianBlur - result="blurOut" - in="offOut" - stdDeviation="1" - id="feGaussianBlur8" /> - <feBlend - in="SourceGraphic" - in2="blurOut" - mode="normal" - id="feBlend10" /> - </filter> - <g - filter="url(#i1)" - id="g12"> - <path - id="Return" - d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" - style="fill:#000080" /> - </g> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg2" version="1.1" width="64" height="64" viewBox="0 0 64 64"><title id="title3359">Return image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Return image</dc:title><dc:date>2016-09-28</dc:date><dc:creator><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:creator><dc:publisher><cc:Agent><dc:title>Rafael E. Chacon</dc:title></cc:Agent></dc:publisher><dc:description>Return image</dc:description><dc:language>en-GB</dc:language><cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /></cc:Work><cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"><cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><filter id="sh" width="150%" height="150%"><feOffset result="offOut" in="SourceAlpha" dx="2" dy="4" id="feOffset6" /><feGaussianBlur result="blurOut" in="offOut" stdDeviation="1" id="feGaussianBlur8" /><feBlend in="SourceGraphic" in2="blurOut" mode="normal" id="feBlend10" /></filter><g filter="url(#sh)" id="g12"><path id="Return" d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" style="fill:#000080" /></g></svg> \ No newline at end of file Added: trunk/css/fresh/images/tick.svg =================================================================== --- trunk/css/fresh/images/tick.svg (rev 0) +++ trunk/css/fresh/images/tick.svg 2016-10-06 02:13:21 UTC (rev 7642) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" height="64" width="64" version="1.1" id="svg2"><title id="title3383">Tick image</title><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="ht... [truncated message content] |
From: <rc...@us...> - 2016-10-04 20:37:47
|
Revision: 7641 http://sourceforge.net/p/web-erp/reponame/7641 Author: rchacon Date: 2016-10-04 20:37:44 +0000 (Tue, 04 Oct 2016) Log Message: ----------- In class.pdf.php, fix the function addJpegFromFile() use of the functionality Image() of TCPDF class. Modified Paths: -------------- trunk/doc/Change.log trunk/includes/class.pdf.php Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-10-04 19:32:15 UTC (rev 7640) +++ trunk/doc/Change.log 2016-10-04 20:37:44 UTC (rev 7641) @@ -1,7 +1,7 @@ webERP Change Log -04/10/16 RChacon: In class.pdf.php, functions Rectangle() and RoundRectangle() use the functionalities -Rect() and RoundedRectXY() of TCPDF class. +04/10/16 RChacon: In class.pdf.php, fix the function addJpegFromFile() use of the functionality Image() of TCPDF class. +04/10/16 RChacon: In class.pdf.php, functions Rectangle() and RoundRectangle() use the functionalities Rect() and RoundedRectXY() of TCPDF class. 04/10/16 RChacon: Add return.svg image for Return button in Scalable Vector Graphics (SVG) format. 27/09/16 RChacon: Add webERP logo in Scalable Vector Graphics format. 25/09/16 Exson: Make customer reference GET method workable in SelectCompletedOrder.php. Fixed decimalplaces missing bug in SelectOrderItems.php. Add due date, order date and customer reference option in SelectSalesOrder.php. Modified: trunk/includes/class.pdf.php =================================================================== --- trunk/includes/class.pdf.php 2016-10-04 19:32:15 UTC (rev 7640) +++ trunk/includes/class.pdf.php 2016-10-04 20:37:44 UTC (rev 7641) @@ -82,7 +82,7 @@ function addTextWrap($XPos, $YPos, $Width, $Height, $Text, $Align='full', $border=0, $fill=0) { // R&OS version 0.12.2: "addTextWrap function is no more, use addText instead". - /* Returns the balance of the string that could not fit in the width */ + // Adds text to the page and returns the balance of the string that could not fit in the width. // $XPos = cell horizontal coordinate from page left side to cell left side in dpi (72dpi = 25.4mm). // $YPos = cell vertical coordinate from page bottom side to cell bottom side in dpi (72dpi = 25.4mm). // $Width = Cell (line) width in dpi (72dpi = 25.4mm). @@ -207,8 +207,15 @@ } } - function addJpegFromFile($img,$XPos,$YPos,$Width=0,$Height=0,$Type=''){ - $this->Image($img, $x=$XPos, $y=$this->h-$YPos-$Height, $w=$Width, $h=$Height,$type=$Type); + function addJpegFromFile($file, $x, $YPos, $width=0, $height) { + // Puts an image in the page. + // $file (string) Name of the file containing the image. + // $x (float) Abscissa from left border to the upper-left corner (LTR). + // $this->h is the page height. + // $YPos Ordinate of upper-left corner. WARNING: Measured from bottom left corner! + // $width (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated. + // $height (float) Height of the image in the page. + $this->Image($file, $x, $this->h-$YPos-$height, $width, $height);// Public function Image() in ~/includes/tcpdf/tcpdf.php. } /* @@ -320,28 +327,28 @@ $this->Output($DocumentFilename,'D'); } - function Rectangle($x, $YPos, $w, $h) { + function Rectangle($x, $YPos, $width, $height) { // Draws a rectangle. // $x (float) Abscissa from left border to the upper-left corner (LTR). - // $this->h is page height. - // $YPos Ordinate of upper-left corner. WARNING: Mesured from bottom left corner! - // $w (float) Rectangle width. - // $h (float) Rectangle height. - $this->Rect($x, $this->h-$YPos, $w, $h);// Public function Rect() in ~/includes/tcpdf/tcpdf.php. + // $this->h is the page height. + // $YPos Ordinate of upper-left corner. WARNING: Measured from bottom left corner! + // $width (float) Rectangle width. + // $height (float) Rectangle height. + $this->Rect($x, $this->h-$YPos, $width, $height);// Public function Rect() in ~/includes/tcpdf/tcpdf.php. } - function RoundRectangle($x, $YPos, $w, $h, $rx, $ry) { + function RoundRectangle($x, $YPos, $width, $height, $rx, $ry) { // Draws a rounded rectangle. // $x (float) Abscissa from left border to the upper-left corner (LTR). - // $this->h is page height. - // $YPos Ordinate of upper-left corner. WARNING: Mesured from bottom left corner! - // $w (float) Rectangle width. - // $h (float) Rectangle height. + // $this->h is the page height. + // $YPos Ordinate of upper-left corner. WARNING: Measured from bottom left corner! + // $width (float) Rectangle width. + // $height (float) Rectangle height. // $rx (float) the x-axis radius of the ellipse used to round off the corners of the rectangle. // $ry (float) the y-axis radius of the ellipse used to round off the corners of the rectangle. - $this->RoundedRectXY($x, $this->h-$YPos, $w, $h, $rx, $ry);// Public function RoundedRectXY() in ~/includes/tcpdf/tcpdf.php. + $this->RoundedRectXY($x, $this->h-$YPos, $width, $height, $rx, $ry);// Public function RoundedRectXY() in ~/includes/tcpdf/tcpdf.php. } } // end of class } //end if Cpdf class exists already -?> +?> \ No newline at end of file |
From: <rc...@us...> - 2016-10-04 19:32:18
|
Revision: 7640 http://sourceforge.net/p/web-erp/reponame/7640 Author: rchacon Date: 2016-10-04 19:32:15 +0000 (Tue, 04 Oct 2016) Log Message: ----------- In class.pdf.php, functions Rectangle() and RoundRectangle() use the functionalities Rect() and RoundedRectXY() of TCPDF class. Modified Paths: -------------- trunk/doc/Change.log trunk/includes/class.pdf.php Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-10-04 18:37:47 UTC (rev 7639) +++ trunk/doc/Change.log 2016-10-04 19:32:15 UTC (rev 7640) @@ -1,6 +1,8 @@ webERP Change Log -04/10/16 RChacon: Add return.svg image for Returnbutton in Scalable Vector Graphics (SVG) format. +04/10/16 RChacon: In class.pdf.php, functions Rectangle() and RoundRectangle() use the functionalities +Rect() and RoundedRectXY() of TCPDF class. +04/10/16 RChacon: Add return.svg image for Return button in Scalable Vector Graphics (SVG) format. 27/09/16 RChacon: Add webERP logo in Scalable Vector Graphics format. 25/09/16 Exson: Make customer reference GET method workable in SelectCompletedOrder.php. Fixed decimalplaces missing bug in SelectOrderItems.php. Add due date, order date and customer reference option in SelectSalesOrder.php. 25/09/16 Exson: Make the details show immediately when the search result is one in SelectCompletedOrder.php.And add return links in OrderDetails.php. Modified: trunk/includes/class.pdf.php =================================================================== --- trunk/includes/class.pdf.php 2016-10-04 18:37:47 UTC (rev 7639) +++ trunk/includes/class.pdf.php 2016-10-04 19:32:15 UTC (rev 7640) @@ -68,7 +68,7 @@ function line($x1,$y1,$x2,$y2,$style=array()) { // Javier FPDF::line($x1, $this->h-$y1, $x2, $this->h-$y2); // Javier: width, color and style might be edited - TCPDF::Line ($x1,$this->h-$y1,$x2,$this->h-$y2,$style); + TCPDF::Line($x1,$this->h-$y1,$x2,$this->h-$y2,$style); } function addText($XPos,$YPos,$fontsize,$text/*,$angle=0,$wordSpaceAdjust=0*/) { @@ -89,7 +89,7 @@ // $Height = Font size in dpi (72dpi = 25.4mm). // $Text = Text to be split in portion to be add to the page and the remainder to be returned. // $Align = 'left', 'center', 'centre', 'full' or 'right'. - + //some special characters are html encoded //this code serves to make them appear human readable in pdf file $Text = html_entity_decode($Text, ENT_QUOTES, 'UTF-8');// Convert all HTML entities to their applicable characters. @@ -320,27 +320,26 @@ $this->Output($DocumentFilename,'D'); } - function Rectangle($XPos, $YPos, $Width, $Height) { - // $XPos, $YPos = Left top position (left line, top line). - // $Width, $Height = Size (line-to-line). - $this->line($XPos, $YPos, $XPos+$Width, $YPos);// Top side. - $this->line($XPos, $YPos-$Height, $XPos+$Width, $YPos-$Height);// Bottom side. - $this->line($XPos, $YPos, $XPos, $YPos-$Height);// Left side. - $this->line($XPos+$Width, $YPos, $XPos+$Width, $YPos-$Height);// Right side + function Rectangle($x, $YPos, $w, $h) { + // Draws a rectangle. + // $x (float) Abscissa from left border to the upper-left corner (LTR). + // $this->h is page height. + // $YPos Ordinate of upper-left corner. WARNING: Mesured from bottom left corner! + // $w (float) Rectangle width. + // $h (float) Rectangle height. + $this->Rect($x, $this->h-$YPos, $w, $h);// Public function Rect() in ~/includes/tcpdf/tcpdf.php. } - function RoundRectangle($XPos, $YPos, $Width, $Height, $RadiusX, $RadiusY) { - // $XPos, $YPos = Left top position (left line, top line). - // $Width, $Height = Size (line-to-line). - // $RadiusX, $RadiusY = corner radii (horizontal, vertical). - $this->line($XPos+$RadiusX, $YPos, $XPos+$Width-$RadiusX, $YPos);// Top side. - $this->line($XPos+$RadiusX, $YPos-$Height, $XPos+$Width-$RadiusX, $YPos-$Height);// Bottom side. - $this->line($XPos, $YPos-$RadiusY, $XPos, $YPos-$Height+$RadiusY);// Left side. - $this->line($XPos+$Width, $YPos-$RadiusY, $XPos+$Width, $YPos-$Height+$RadiusY);// Right side. - $this->partEllipse($XPos+$RadiusX, $YPos-$RadiusY, 90, 180, $RadiusX, $RadiusY);// Top left corner. - $this->partEllipse($XPos+$Width-$RadiusX, $YPos-$RadiusY, 0, 90, $RadiusX, $RadiusY);// Top right corner. - $this->partEllipse($XPos+$RadiusX, $YPos-$Height+$RadiusY, 180, 270, $RadiusX, $RadiusY);// Bottom left corner. - $this->partEllipse($XPos+$Width-$RadiusX, $YPos-$Height+$RadiusY, 270, 360, $RadiusX, $RadiusY);// Bottom right corner. + function RoundRectangle($x, $YPos, $w, $h, $rx, $ry) { + // Draws a rounded rectangle. + // $x (float) Abscissa from left border to the upper-left corner (LTR). + // $this->h is page height. + // $YPos Ordinate of upper-left corner. WARNING: Mesured from bottom left corner! + // $w (float) Rectangle width. + // $h (float) Rectangle height. + // $rx (float) the x-axis radius of the ellipse used to round off the corners of the rectangle. + // $ry (float) the y-axis radius of the ellipse used to round off the corners of the rectangle. + $this->RoundedRectXY($x, $this->h-$YPos, $w, $h, $rx, $ry);// Public function RoundedRectXY() in ~/includes/tcpdf/tcpdf.php. } } // end of class |
From: <rc...@us...> - 2016-10-04 18:37:49
|
Revision: 7639 http://sourceforge.net/p/web-erp/reponame/7639 Author: rchacon Date: 2016-10-04 18:37:47 +0000 (Tue, 04 Oct 2016) Log Message: ----------- Add return.svg image for Returnbutton in Scalable Vector Graphics (SVG) format. Modified Paths: -------------- trunk/doc/Change.log Added Paths: ----------- trunk/css/aguapop/images/return.svg trunk/css/default/images/return.svg trunk/css/fluid/images/return.svg trunk/css/fresh/images/return.svg trunk/css/gel/images/return.svg trunk/css/professional/images/return.svg trunk/css/professional-rtl/images/return.svg trunk/css/silverwolf/images/return.svg trunk/css/wood/images/return.svg trunk/css/xenos/images/return.svg Added: trunk/css/aguapop/images/return.svg =================================================================== --- trunk/css/aguapop/images/return.svg (rev 0) +++ trunk/css/aguapop/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/default/images/return.svg =================================================================== --- trunk/css/default/images/return.svg (rev 0) +++ trunk/css/default/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/fluid/images/return.svg =================================================================== --- trunk/css/fluid/images/return.svg (rev 0) +++ trunk/css/fluid/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/fresh/images/return.svg =================================================================== --- trunk/css/fresh/images/return.svg (rev 0) +++ trunk/css/fresh/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/gel/images/return.svg =================================================================== --- trunk/css/gel/images/return.svg (rev 0) +++ trunk/css/gel/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/professional/images/return.svg =================================================================== --- trunk/css/professional/images/return.svg (rev 0) +++ trunk/css/professional/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/professional-rtl/images/return.svg =================================================================== --- trunk/css/professional-rtl/images/return.svg (rev 0) +++ trunk/css/professional-rtl/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/silverwolf/images/return.svg =================================================================== --- trunk/css/silverwolf/images/return.svg (rev 0) +++ trunk/css/silverwolf/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/wood/images/return.svg =================================================================== --- trunk/css/wood/images/return.svg (rev 0) +++ trunk/css/wood/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Added: trunk/css/xenos/images/return.svg =================================================================== --- trunk/css/xenos/images/return.svg (rev 0) +++ trunk/css/xenos/images/return.svg 2016-10-04 18:37:47 UTC (rev 7639) @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg2" + version="1.1" + width="64" + height="64" + viewBox="0 0 64 64"> + <defs + id="defs17" /> + <title + id="title3359">Return image</title> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Return image</dc:title> + <dc:date>2016-09-28</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:description>Return image</dc:description> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <filter + id="i1" + width="150%" + height="150%"> + <feOffset + result="offOut" + in="SourceAlpha" + dx="2" + dy="4" + id="feOffset6" /> + <feGaussianBlur + result="blurOut" + in="offOut" + stdDeviation="1" + id="feGaussianBlur8" /> + <feBlend + in="SourceGraphic" + in2="blurOut" + mode="normal" + id="feBlend10" /> + </filter> + <g + filter="url(#i1)" + id="g12"> + <path + id="Return" + d="M 20.96875,54.658359 8.46875,43.158359 C 7.84375,42.158359 7.84375,41.158359 8.46875,40.158359 L 20.96875,29.658359 C 22.46875,28.428777 27.062502,26.158966 27,32.15864 L 27,35.15864 37.5,35.157999 C 40.5,35.157816 42.5,31.4 42.5,28.4 42.5,25.4 40.5,21.5 37.5,21.5 L 27,21.5 C 25.5,21.5 24,20 24,18.5 L 24,11 C 24,9.5 25.5,8 27,8 L 37.5,8 C 46.75,8 56,18.275 56,28.4 56,38.525 46.75,48.657684 37.5,48.657999 L 27,48.65864 27,51.65864 C 27,57.65864 22.588527,56.158359 20.96875,54.658359 Z" + style="fill:#000080" /> + </g> +</svg> Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-28 00:08:40 UTC (rev 7638) +++ trunk/doc/Change.log 2016-10-04 18:37:47 UTC (rev 7639) @@ -1,5 +1,6 @@ webERP Change Log +04/10/16 RChacon: Add return.svg image for Returnbutton in Scalable Vector Graphics (SVG) format. 27/09/16 RChacon: Add webERP logo in Scalable Vector Graphics format. 25/09/16 Exson: Make customer reference GET method workable in SelectCompletedOrder.php. Fixed decimalplaces missing bug in SelectOrderItems.php. Add due date, order date and customer reference option in SelectSalesOrder.php. 25/09/16 Exson: Make the details show immediately when the search result is one in SelectCompletedOrder.php.And add return links in OrderDetails.php. |
From: <rc...@us...> - 2016-09-28 00:08:43
|
Revision: 7638 http://sourceforge.net/p/web-erp/reponame/7638 Author: rchacon Date: 2016-09-28 00:08:40 +0000 (Wed, 28 Sep 2016) Log Message: ----------- Add webERP logo in Scalable Vector Graphics format. Modified Paths: -------------- trunk/doc/Change.log Added Paths: ----------- trunk/webERP_logo.svg Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-25 10:38:47 UTC (rev 7637) +++ trunk/doc/Change.log 2016-09-28 00:08:40 UTC (rev 7638) @@ -1,5 +1,6 @@ webERP Change Log +27/09/16 RChacon: Add webERP logo in Scalable Vector Graphics format. 25/09/16 Exson: Make customer reference GET method workable in SelectCompletedOrder.php. Fixed decimalplaces missing bug in SelectOrderItems.php. Add due date, order date and customer reference option in SelectSalesOrder.php. 25/09/16 Exson: Make the details show immediately when the search result is one in SelectCompletedOrder.php.And add return links in OrderDetails.php. 24/10/16 Simon Kelly: Fixed placing POs for sales orders using array form variable Added: trunk/webERP_logo.svg =================================================================== --- trunk/webERP_logo.svg (rev 0) +++ trunk/webERP_logo.svg 2016-09-28 00:08:40 UTC (rev 7638) @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + height="192" + width="770" + viewBox="0 0 770 192" + id="svg2" + version="1.1"> + <title + id="title3343">webERP icon</title> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>webERP icon</dc:title> + <dc:rights> + <cc:Agent> + <dc:title>weberp.org</dc:title> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title>Rafael E. Chacón</dc:title> + </cc:Agent> + </dc:publisher> + <dc:language>en-GB</dc:language> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-nc-sa/3.0/" /> + <dc:date>2016-09-10</dc:date> + <dc:description>webERP scalable icon</dc:description> + <dc:source>http://weberp.org</dc:source> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-nc-sa/3.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:prohibits + rdf:resource="http://creativecommons.org/ns#CommercialUse" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <defs + id="defs16" /> + <rect + height="192" + id="WhiteRoundedRectangle" + rx="19" + ry="19" + style="fill:#ffffff" + width="770" + x="0" + y="0" /> + <rect + height="192" + id="GrayRoundedRectangle" + rx="19" + ry="19" + style="fill:#808080" + width="385" + x="385" + y="0" /> + <path + d="M 19,53 19,139 122,139 122,53 103,53 103,122 80,122 80,53 61,53 61,122 38,122 38,53 Z" + id="W" + style="fill:#808080" /> + <path + d="M 141,53 141,139 244,139 244,120 160,120 160,87 244,87 244,105 160,105 160,72 244,72 244,53 Z" + id="E" + style="fill:#808080" /> + <path + d="M 263,19 263,139 366,139 366,53 282,53 282,19 Z M 347,72 347,120 282,120 282,72 Z" + id="B" + style="fill:#808080" /> + <path + d="M 404,53 404,139 507,139 507,120 423,120 423,87 507,87 507,105 423,105 423,72 507,72 507,53 Z" + id="E2" + style="fill:#ffffff" /> + <path + d="M 526,53 526,139 545,139 545,72 629,72 629,53 Z" + id="R" + style="fill:#ffffff" /> + <path + d="M 648,53 648,173 667,173 667,139 751,139 751,53 Z M 732,72 732,120 667,120 667,72 Z" + id="P" + style="fill:#ffffff" /> +</svg> |
From: <ex...@us...> - 2016-09-25 10:38:49
|
Revision: 7637 http://sourceforge.net/p/web-erp/reponame/7637 Author: exsonqu Date: 2016-09-25 10:38:47 +0000 (Sun, 25 Sep 2016) Log Message: ----------- 25/09/16 Exson: Make customer reference GET method workable in SelectCompletedOrder.php. Fixed decimalplaces missing bug in SelectOrderItems.php. Add due date, order date and customer reference option in SelectSalesOrder.php. Modified Paths: -------------- trunk/SelectCompletedOrder.php trunk/SelectOrderItems.php trunk/SelectSalesOrder.php trunk/doc/Change.log Modified: trunk/SelectCompletedOrder.php =================================================================== --- trunk/SelectCompletedOrder.php 2016-09-25 03:59:49 UTC (rev 7636) +++ trunk/SelectCompletedOrder.php 2016-09-25 10:38:47 UTC (rev 7637) @@ -35,6 +35,7 @@ } if (isset($_GET['CustomerRef'])){ $CustomerRef = $_GET['CustomerRef']; + $CustomerGet = 1; } elseif (isset($_POST['CustomerRef'])){ $CustomerRef = $_POST['CustomerRef']; } @@ -236,7 +237,7 @@ echo '<br />' . _('For the part') . ': ' . $SelectedStockItem . ' ' . _('and') . ' <input type="hidden" name="SelectedStockItem" value="' . $SelectedStockItem . '" />'; } } -} else if (isset($_POST['SearchOrders']) AND Is_Date($_POST['OrdersAfterDate'])==1) { +} else if ((isset($_POST['SearchOrders']) AND Is_Date($_POST['OrdersAfterDate'])==1) OR (isset($CustomerGet))) { //figure out the SQL required from the inputs available if (isset($OrderNumber)) { Modified: trunk/SelectOrderItems.php =================================================================== --- trunk/SelectOrderItems.php 2016-09-25 03:59:49 UTC (rev 7636) +++ trunk/SelectOrderItems.php 2016-09-25 10:38:47 UTC (rev 7637) @@ -1026,7 +1026,7 @@ $Price = filter_number_format($_POST['Price_' . $OrderLine->LineNumber]); if ($_POST['Discount_' . $OrderLine->LineNumber] < 100) {//to avoid divided by zero error - $_POST['GPPercent_' . $OrderLine->LineNumber] = (($Price*(1-(filter_number_format($_POST['Discount_' . $OrderLine->LineNumber])/100))) - $OrderLine->StandardCost*$ExRate)/($Price *(1-filter_number_format($_POST['Discount_' . $OrderLine->LineNumber])/100)/100); + $_POST['GPPercent_' . $OrderLine->LineNumber] = (($Price*(1-(filter_number_format($_POST['Discount_' . $OrderLine->LineNumber])/100))) - $OrderLine->StandardCost*$ExRate)/($Price *(1-filter_number_format($_POST['Discount_' . $OrderLine->LineNumber])/100)/100); } else { $_POST['GPPercent_' . $OrderLine->LineNumber] = 0; } @@ -1495,9 +1495,9 @@ // This code needs sorting out, but until then : $ImageSource = _('No Image'); // Find the quantity in stock at location - $QOHSQL = "SELECT sum(locstock.quantity) AS qoh - FROM locstock - WHERE stockid='" .$myrow['stockid'] . "' + $QOHSQL = "SELECT sum(locstock.quantity) AS qoh,decimalplaces + FROM locstock INNER JOIN stockmaster ON stockmaster.stockid=locstock.stockid + WHERE locstock.stockid='" .$myrow['stockid'] . "' AND loccode = '" . $_SESSION['Items'.$identifier]->Location . "'"; $QOHResult = DB_query($QOHSQL); $QOHRow = DB_fetch_array($QOHResult); Modified: trunk/SelectSalesOrder.php =================================================================== --- trunk/SelectSalesOrder.php 2016-09-25 03:59:49 UTC (rev 7636) +++ trunk/SelectSalesOrder.php 2016-09-25 10:38:47 UTC (rev 7637) @@ -9,6 +9,9 @@ $BookMark = "SelectSalesOrder"; include('includes/header.inc'); include('includes/SQL_CommonFunctions.inc'); +if (isset($_POST['Reset'])) { + unset($_POST); +} if (isset($_GET['SelectedStockItem'])) { $SelectedStockItem = $_GET['SelectedStockItem']; @@ -25,7 +28,7 @@ } else { unset($SelectedCustomer); } - + if (isset($_POST['PlacePO'])){ /*user hit button to place PO for selected orders */ /*Note the button would not have been displayed if the user had no authority to create purchase orders */ @@ -424,6 +427,9 @@ } else { unset($OrderNumber); } +if (isset($_POST['CustomerRef'])) { + $CustomerRef = $_POST['CustomerRef']; +} if (isset($OrderNumber) AND $OrderNumber!='') { $OrderNumber = trim($OrderNumber); @@ -503,15 +509,50 @@ if (isset($_POST['Quotations']) AND $_POST['Quotations']=='Quotes_Only'){ echo '<option selected="selected" value="Quotes_Only">' . _('Quotations Only') . '</option>'; echo '<option value="Orders_Only">' . _('Orders Only') . '</option>'; + echo '<option value="Overdue_Only">' . _('Overdue Only') . '</option>'; + } elseif (isset($_POST['Quotations']) AND $_POST['Quotations'] == 'Overdue_Only'){ + echo '<option selected="selected" value="Overdue_Only">' . _('Overdue Only') . '</option>'; + echo '<option value="Quotes_Only">' . _('Quotations Only') . '</option>'; + echo '<option value="Orders_Only">' . _('Orders Only') . '</option>'; } else { echo '<option selected="selected" value="Orders_Only">' . _('Orders Only') . '</option>'; echo '<option value="Quotes_Only">' . _('Quotations Only') . '</option>'; + echo '<option value="Overdue_Only">' . _('Overdue Only') . '</option>'; } + if (!isset($_POST['DueDateFrom'])) { + $_POST['DueDateFrom'] = ''; + } + if (!isset($_POST['DueDateTo'])) { + $_POST['DueDateTo'] = ''; + } + if (!isset($_POST['CustomerRef'])) { + $_POST['CustomerRef'] = ''; + } + if (!isset($_POST['OrderDateFrom'])) { + $_POST['OrderDateFrom'] = ''; + } + if (!isset($_POST['OrderDateTo'])) { + $_POST['OrderDateTo'] = ''; + } + echo '</select> </td> + <td>' . _('Due Date From') . '</td> + <td><input type="text" class="date" name="DueDateFrom" value="' . $_POST['DueDateFrom'] . '" alt="' . $_SESSION['DefaultDateFormat'] . '" size="10" /></td> + <td>' . _('Due Date To') . '</td> + <td><input type="text" class="date" name="DueDateTo" value="' . $_POST['DueDateTo'] . '" alt="' . $_SESSION['DefaultDateFormat'] . '" size="10" /></td> <td><input type="submit" name="SearchOrders" value="' . _('Search') . '" /></td> + <td><input type="submit" name="Reset" value="' . _('Reset') . '" /></td> <td><a href="' . $RootPath . '/SelectOrderItems.php?NewOrder=Yes">' . _('Add Sales Order') . '</a></td> </tr> + <tr> + <td>' . _('Customer Ref') . '</td> + <td><input type="text" name="CustomerRef" value="' . $_POST['CustomerRef'] . '" size="12" /></td> + <td>' . _('Order Date From') . '</td> + <td><input type="text" name="OrderDateFrom" value="' . $_POST['OrderDateFrom'] . '" size="10" class="date" alt="' . $_SESSION['DefaultDateFormat'] . '" /></td> + <td>' . _('Order Date To') . '</td> + <td><input type="text" name="OrderDateTo" value="' . $_POST['OrderDateTo'] . '" size="10" class="date" alt="' . $_SESSION['DefaultDateFormat'] . '" /></td> + </tr> </table>'; } @@ -601,13 +642,42 @@ //figure out the SQL required from the inputs available if (isset($_POST['Quotations']) AND $_POST['Quotations']=='Orders_Only'){ $Quotations = 0; + } elseif(isset($_POST['Quotations']) AND $_POST['Quotations'] == 'Quotations_Only') { + $Quotations =1; + } elseif(isset($_POST['Quotations']) AND $_POST['Quotations'] == 'Overdue_Only') { + $Quotations = "0 AND itemdue<'" . Date('Y-m-d') . "'"; } else { - $Quotations =1; + $Quotations = 0; } + if (isset($_POST['DueDateFrom']) AND is_date($_POST['DueDateFrom'])) { + $DueDateFrom = " AND itemdue>='" . FormatDateForSQL($_POST['DueDateFrom']) . "' "; + } else { + $DueDateFrom = ''; + } + if (isset($_POST['DueDateTo']) AND is_date($_POST['DueDateTo'])) { + $DueDateTo = " AND itemdue<='" . FormatDateForSQL($_POST['DueDateTo']) . "'"; + } else { + $DueDateTo = ''; + } + if (isset($_POST['OrderDateFrom']) AND is_date($_POST['OrderDateFrom'])) { + $OrderDateFrom = " AND orddate >='" . FormatDateForSQL($_POST['OrderDateFrom']) . "' "; + } else { + $OrderDateFrom = ''; + } + if (isset($_POST['OrderDateTo']) AND is_date($_POST['OrderDateTo'])) { + $OrderDateTo = " AND orddate <='" . FormatDateForSQL($_POST['OrderDateTo']) . "' "; + } else { + $OrderDateTo = ''; + } + if(!isset($_POST['StockLocation'])) { $_POST['StockLocation'] = ''; } //Harmonize the ordervalue with SUM function since webERP allowed same items appeared several times in one sales orders. If there is no sum value, this situation not inclued. + //We should separate itemdue inquiry from normal inquiry. + if (($Quotations === 0 OR $Quotations === 1) + AND (!isset($DueDateFrom) OR !is_date($DueDateFrom)) + AND (!isset($DueDateTo) OR !is_date($DueDateTo))) { $SQL = "SELECT salesorders.orderno, debtorsmaster.name, @@ -629,6 +699,76 @@ INNER JOIN currencies ON debtorsmaster.currcode = currencies.currabrev WHERE salesorderdetails.completed=0 "; + $SQL .= $OrderDateFrom . $OrderDateTo; + } else { + if ($Quotations !==0 AND $Quotations !==1) {//overdue inquiry only + $SQL = "SELECT salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverydate, + salesorders.deliverto, + salesorders.printedpackingslip, + salesorders.poplaced, + SUM(CASE WHEN itemdue<'" . Date('Y-m-d') . "' + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + ELSE 0 END) as ordervalue"; + } elseif (isset($DueDateFrom) AND is_date($DueDateFrom) AND (!isset($DueDateTo) OR !is_date($DueDateTo))) { + $SQL = "SELECT salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverydate, + salesorders.deliverto, + salesorders.printedpackingslip, + salesorders.poplaced, + SUM(CASE WHEN itemdue>='" . FormatDateFromSQL($DueDateFrom) . "' + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + ELSE 0 END) as ordervalue"; + } elseif (isset($DueDateFrom) AND is_date($DueDateFrom) AND isset($DueDateTo) AND is_date($DueDateTo)) { + $SQL = "SELECT salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverydate, + salesorders.deliverto, + salesorders.printedpackingslip, + salesorders.poplaced, + SUM (CASE WHEN itemdue>='" . FormatDateForSQL($DueDateFrom) . "' AND itemdue<='" . FormatDateForSQL($DueDateTo) ."' + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + ELSE 0 END) as ordervalue"; + } elseif ((!isset($DueDateFrom) OR !is_date($DueDateFrom)) AND isset($DueDateTo) AND is_date($DueDateTo)) { + $SQL = "SELECT salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverydate, + salesorders.deliverto, + salesorders.printedpackingslip, + salesorders.poplaced, + SUM(CASE WHEN AND itemdue<='" . FormatDateForSQL($DueDateTo) ."' + THEN salesorderdetails.unitprice*(salesorderdetails.quantity-salesorderdetails.qtyinvoiced)*(1-salesorderdetails.discountpercent)/currencies.rate + ELSE 0 END) as ordervalue"; + }//end of due date inquiry + $SQL .= $OrderDateFrom . $OrderDateTo; + + + $SQL .=" 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 "; + } + //Add salesman role control if ($_SESSION['SalesmanLogin'] != '') { $SQL .= " AND salesorders.salesperson='" . $_SESSION['SalesmanLogin'] . "'"; @@ -639,46 +779,52 @@ $SQL .= "AND salesorders.orderno=". $OrderNumber ." AND salesorders.quotation=" .$Quotations; - } else { - /* $DateAfterCriteria = FormatDateforSQL($OrdersAfterDate); */ + + } elseif (isset($CustomerRef) AND $CustomerRef != ''){ + $SQL .= "AND salesorders.customerref='" . $CustomerRef . "' + AND salesorders.quotation=" . $Quotations; + + } else { + /* $DateAfterCriteria = FormatDateforSQL($OrdersAfterDate); */ - if (isset($SelectedCustomer)) { + if (isset($SelectedCustomer)) { - if (isset($SelectedStockItem)) { - $SQL .= "AND salesorders.quotation =" .$Quotations . " - AND salesorderdetails.stkcode='". $SelectedStockItem ."' - AND salesorders.debtorno='" . $SelectedCustomer ."' - AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; + if (isset($SelectedStockItem)) { + $SQL .= "AND salesorders.quotation =" .$Quotations . " + AND salesorderdetails.stkcode='". $SelectedStockItem ."' + AND salesorders.debtorno='" . $SelectedCustomer ."' + AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; - } else { - $SQL .= "AND salesorders.quotation =" .$Quotations . " - AND salesorders.debtorno='" . $SelectedCustomer . "' - AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; + } else { + $SQL .= "AND salesorders.quotation =" .$Quotations . " + AND salesorders.debtorno='" . $SelectedCustomer . "' + AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; - } - } else { //no customer selected - if (isset($SelectedStockItem)) { - $SQL .= "AND salesorders.quotation =" .$Quotations . " - AND salesorderdetails.stkcode='". $SelectedStockItem . "' - AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; - } else { - $SQL .= "AND salesorders.quotation =" .$Quotations . " - AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; - } + } + } else { //no customer selected + if (isset($SelectedStockItem)) { + $SQL .= "AND salesorders.quotation =" .$Quotations . " + AND salesorderdetails.stkcode='". $SelectedStockItem . "' + AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; + } else { + $SQL .= "AND salesorders.quotation =" .$Quotations . " + AND salesorders.fromstkloc = '". $_POST['StockLocation'] . "'"; + } - } //end selected customer + } //end selected customer + $SQL .= $DueDateFrom . $DueDateTo; - $SQL .= ' GROUP BY salesorders.orderno, - debtorsmaster.name, - custbranch.brname, - salesorders.customerref, - salesorders.orddate, - salesorders.deliverydate, - salesorders.deliverto, - salesorders.printedpackingslip, - salesorders.poplaced - ORDER BY salesorders.orderno'; - } //end not order number selected + $SQL .= ' GROUP BY salesorders.orderno, + debtorsmaster.name, + custbranch.brname, + salesorders.customerref, + salesorders.orddate, + salesorders.deliverydate, + salesorders.deliverto, + salesorders.printedpackingslip, + salesorders.poplaced + ORDER BY salesorders.orderno'; + } //end not order number selected $ErrMsg = _('No orders or quotations were returned by the SQL because'); $SalesOrdersResult = DB_query($SQL,$ErrMsg); @@ -698,7 +844,7 @@ echo '<table cellpadding="2" width="95%" class="selection">'; - if (isset($_POST['Quotations']) AND $_POST['Quotations']=='Orders_Only'){ + if (isset($_POST['Quotations']) AND ($_POST['Quotations']=='Orders_Only' OR $_POST['Quotations'] == 'Overdue_Only')){ $TableHeader = '<tr> <th class="ascending" >' . _('Modify') . '</th> <th>' . _('Invoice') . '</th> @@ -761,6 +907,11 @@ $FormatedDelDate = ConvertSQLDate($myrow['deliverydate']); $FormatedOrderDate = ConvertSQLDate($myrow['orddate']); $FormatedOrderValue = locale_number_format($myrow['ordervalue'],$_SESSION['CompanyRecord']['decimalplaces']); + if ($myrow['customerref'] !== '') { + $CustomerRef = '<a href="' . $RootPath . '/SelectCompletedOrder.php?CustomerRef=' . $myrow['customerref'] . '" target="_blank">' . $myrow['customerref'] . '</a>'; + } else { + $CustomerRef = ''; + } if ($myrow['printedpackingslip']==0) { $PrintText = _('Print'); @@ -768,7 +919,7 @@ $PrintText = _('Reprint'); } - if ($_POST['Quotations']=='Orders_Only'){ + if ($_POST['Quotations']=='Orders_Only' OR $_POST['Quotations']=='Overdue_Only'){ /*Check authority to create POs if user has authority then show the check boxes to select sales orders to place POs for otherwise don't provide this option */ if ($AuthRow['cancreate']==0 AND $myrow['poplaced']==0){ //cancreate==0 if the user can create POs and not already placed @@ -790,7 +941,7 @@ $PrintDispatchNote, $myrow['name'], $myrow['brname'], - $myrow['customerref'], + $CustomerRef, $FormatedOrderDate, $FormatedDelDate, html_entity_decode($myrow['deliverto'],ENT_QUOTES,'UTF-8'), Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-25 03:59:49 UTC (rev 7636) +++ trunk/doc/Change.log 2016-09-25 10:38:47 UTC (rev 7637) @@ -1,5 +1,6 @@ webERP Change Log +25/09/16 Exson: Make customer reference GET method workable in SelectCompletedOrder.php. Fixed decimalplaces missing bug in SelectOrderItems.php. Add due date, order date and customer reference option in SelectSalesOrder.php. 25/09/16 Exson: Make the details show immediately when the search result is one in SelectCompletedOrder.php.And add return links in OrderDetails.php. 24/10/16 Simon Kelly: Fixed placing POs for sales orders using array form variable 24/09/16 waynemcdougall: Fixed missing date in Sales Price history |
From: <ex...@us...> - 2016-09-25 03:59:51
|
Revision: 7636 http://sourceforge.net/p/web-erp/reponame/7636 Author: exsonqu Date: 2016-09-25 03:59:49 +0000 (Sun, 25 Sep 2016) Log Message: ----------- Modified Paths: -------------- trunk/doc/Change.log Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-25 03:59:01 UTC (rev 7635) +++ trunk/doc/Change.log 2016-09-25 03:59:49 UTC (rev 7636) @@ -1,5 +1,6 @@ webERP Change Log +25/09/16 Exson: Make the details show immediately when the search result is one in SelectCompletedOrder.php.And add return links in OrderDetails.php. 24/10/16 Simon Kelly: Fixed placing POs for sales orders using array form variable 24/09/16 waynemcdougall: Fixed missing date in Sales Price history 24/09/16 Exson: Make Justify feature workable in addTextWrap in class.pdf.php. |
From: <ex...@us...> - 2016-09-25 03:59:04
|
Revision: 7635 http://sourceforge.net/p/web-erp/reponame/7635 Author: exsonqu Date: 2016-09-25 03:59:01 +0000 (Sun, 25 Sep 2016) Log Message: ----------- 25/09/16 Exson: Make the details show immediately when the search result is one in SelectCompletedOrder.php.And add return links in OrderDetails.php. Modified Paths: -------------- trunk/OrderDetails.php trunk/SelectCompletedOrder.php Modified: trunk/OrderDetails.php =================================================================== --- trunk/OrderDetails.php 2016-09-25 02:00:30 UTC (rev 7634) +++ trunk/OrderDetails.php 2016-09-25 03:59:01 UTC (rev 7635) @@ -54,7 +54,9 @@ if (DB_num_rows($GetOrdHdrResult)==1) { echo '<p class="page_title_text"> <img src="'.$RootPath.'/css/'.$Theme.'/images/supplier.png" title="' . _('Order Details') . '" alt="" />' . ' ' . $Title . ' - </p>'; + </p> + <a href="' . $RootPath . '/SelectCompletedOrder.php">' . _('Return to Sales Order Inquiry') . '</a><br/> + <a href="' . $RootPath . '/SelectCustomer.php">' . _('Return to Customer Inquiry Interface') . '</a>'; $myrow = DB_fetch_array($GetOrdHdrResult); $CurrDecimalPlaces = $myrow['decimalplaces']; Modified: trunk/SelectCompletedOrder.php =================================================================== --- trunk/SelectCompletedOrder.php 2016-09-25 02:00:30 UTC (rev 7634) +++ trunk/SelectCompletedOrder.php 2016-09-25 03:59:01 UTC (rev 7635) @@ -547,6 +547,14 @@ //end if stock search results to show If (isset($SalesOrdersResult)) { + if (DB_num_rows($SalesOrdersResult) == 1) { + if (!isset($OrderNumber)) { + $ordrow = DB_fetch_array($SalesOrdersResult); + $OrderNumber = $ordrow['orderno']; + } + header('location:' . $RootPath .'/OrderDetails.php?OrderNumber=' . $OrderNumber); + exit; + } /*show a table of the orders returned by the SQL */ |
From: <dai...@us...> - 2016-09-25 02:00:32
|
Revision: 7634 http://sourceforge.net/p/web-erp/reponame/7634 Author: daintree Date: 2016-09-25 02:00:30 +0000 (Sun, 25 Sep 2016) Log Message: ----------- Simon Kelly: fix to SelectSalesOrder.php to place POs correctly Modified Paths: -------------- trunk/SelectSalesOrder.php trunk/doc/Change.log trunk/doc/Manual/ManualContributors.html Modified: trunk/SelectSalesOrder.php =================================================================== --- trunk/SelectSalesOrder.php 2016-09-24 22:52:11 UTC (rev 7633) +++ trunk/SelectSalesOrder.php 2016-09-25 02:00:30 UTC (rev 7634) @@ -30,12 +30,12 @@ /*Note the button would not have been displayed if the user had no authority to create purchase orders */ $OrdersToPlacePOFor = ''; - for ($i=1;$i<count($_POST);$i++){ - if (isset($_POST['PlacePO_' . $i])) { //checkboxes only set if they are checked + for ($i=0;$i<=count($_POST['PlacePO_']);$i++){ + if (isset($_POST['PlacePO_'][$i])) { //checkboxes only set if they are checked if ($OrdersToPlacePOFor==''){ - $OrdersToPlacePOFor .= " orderno='" . $_POST['OrderNo_PO_'.$i] . "'"; + $OrdersToPlacePOFor .= " orderno='" . $_POST['OrderNo_PO_'][$i] . "'"; } else { - $OrdersToPlacePOFor .= " OR orderno='" . $_POST['OrderNo_PO_'.$i] . "'"; + $OrdersToPlacePOFor .= " OR orderno='" . $_POST['OrderNo_PO_'][$i] . "'"; } } } @@ -782,7 +782,7 @@ <td>%s</td> <td>%s</td> <td class="number">%s</td> - <td><input type="checkbox" name="PlacePO_%s" /><input type="hidden" name="OrderNo_PO_%s" value="%s" /></td> + <td><input type="checkbox" name="PlacePO_[]" /><input type="hidden" name="OrderNo_PO_[]" value="%s" /></td> </tr>', $ModifyPage, $myrow['orderno'], @@ -854,7 +854,11 @@ if ($_POST['Quotations']=='Orders_Only' AND $AuthRow['cancreate']==0){ //cancreate==0 means can create POs - echo '<tfoot><tr><td colspan="11" class="number"><input type="submit" name="PlacePO" value="' . _('Place') . " " . _('PO') . '" onclick="return confirm(\'' . _('This will create purchase orders for all the items on the checked sales orders above, based on the preferred supplier purchasing data held in the system. Are You Absolutely Sure?') . '\');" /></td></tr></tfoot>'; + echo '<tfoot> + <tr> + <td colspan="11" class="number"><input type="submit" name="PlacePO" value="' . _('Place') . " " . _('PO') . '" onclick="return confirm(\'' . _('This will create purchase orders for all the items on the checked sales orders above, based on the preferred supplier purchasing data held in the system. Are You Absolutely Sure?') . '\');" /></td> + </tr> + </tfoot>'; } echo '<tfoot><tr><td colspan="9" class="number">'; if ($_POST['Quotations']=='Orders_Only'){ Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-24 22:52:11 UTC (rev 7633) +++ trunk/doc/Change.log 2016-09-25 02:00:30 UTC (rev 7634) @@ -1,5 +1,6 @@ webERP Change Log +24/10/16 Simon Kelly: Fixed placing POs for sales orders using array form variable 24/09/16 waynemcdougall: Fixed missing date in Sales Price history 24/09/16 Exson: Make Justify feature workable in addTextWrap in class.pdf.php. 24/09/16 Exson: Fixed the AddTextWrap missing characters errors when there is space and make it more reliable. Modified: trunk/doc/Manual/ManualContributors.html =================================================================== --- trunk/doc/Manual/ManualContributors.html 2016-09-24 22:52:11 UTC (rev 7633) +++ trunk/doc/Manual/ManualContributors.html 2016-09-25 02:00:30 UTC (rev 7634) @@ -41,6 +41,7 @@ <p>Nico Kaiser (php-gettext)</p> <p>CQZ,KE</p> <p>Mo Kelly - due dates and customer po by sales order line</p> + <p>Simon Kelly</p> <p>Meraj Khattak - database diagram</p> <p>Steve Kitchen</p> <p>Ditesh Kumar</p> |
From: <way...@us...> - 2016-09-24 22:52:13
|
Revision: 7633 http://sourceforge.net/p/web-erp/reponame/7633 Author: waynemcdougall Date: 2016-09-24 22:52:11 +0000 (Sat, 24 Sep 2016) Log Message: ----------- Variable not renamed in r3146 - fix so date shows on Stock Price History Also correct comment spelling pirce to price Revision Links: -------------- http://sourceforge.net/p/web-erp/reponame/3146 Modified Paths: -------------- trunk/StockStatus.php trunk/doc/Change.log Modified: trunk/StockStatus.php =================================================================== --- trunk/StockStatus.php 2016-09-24 10:30:21 UTC (rev 7632) +++ trunk/StockStatus.php 2016-09-24 22:52:11 UTC (rev 7633) @@ -301,7 +301,7 @@ break; /* 10 price records is enough to display */ } if ($myrow['trandate'] < FormatDateForSQL(DateAdd(date($_SESSION['DefaultDateFormat']),'y', -1))) { - break; /* stop displaying pirce history more than a year old once we have at least one to display */ + break; /* stop displaying price history more than a year old once we have at least one to display */ } } $LastPrice = $myrow['price']; @@ -355,7 +355,7 @@ <td class="number">%s</td> <td class="number">%s%%</td> </tr>', - $ph[0], + $PreviousPrice[0], locale_number_format($PreviousPrice[1],$DecimalPlaces), locale_number_format($PreviousPrice[2],$_SESSION['CompanyRecord']['decimalplaces']), locale_number_format($PreviousPrice[3]*100,2)); Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-24 10:30:21 UTC (rev 7632) +++ trunk/doc/Change.log 2016-09-24 22:52:11 UTC (rev 7633) @@ -1,12 +1,13 @@ webERP Change Log +24/09/16 waynemcdougall: Fixed missing date in Sales Price history 24/09/16 Exson: Make Justify feature workable in addTextWrap in class.pdf.php. 24/09/16 Exson: Fixed the AddTextWrap missing characters errors when there is space and make it more reliable. 21/09/16 RChacon: In SuppWhereAlloc.php, accepts the payment multiple creditors. In CustWhereAlloc.php, accepts the receipt of multiple debtors. 18/09/16 RChacon: Add style to describe how button image should be displayed. Clean up Xenos css. 18/09/16 Exson: Add multiple items issue for non-controlled items feature to Work Orders in WorkOrderIssue.php. 14/09/16 Exson: Add narrative, transaction date data to PDFOrdersInvoiced.php. -14/09/16: Exson: Add order line narrative and invoices link to sales order inquiry in OrderDetails.php. +14/09/16 Exson: Add order line narrative and invoices link to sales order inquiry in OrderDetails.php. 12/09/16 Exson: Add a filter to avoid tons of zero valued gl transaction records generated in SQL_CommonFunctions.inc. 04/09/16 Exson: Add WO items delete constraint in WorkOrderEntry.php. Thanks for Phil's reminder. 04/09/16 Exson: Add delete Work orders Items feature in WorkOrderEntry.php. |
From: <ex...@us...> - 2016-09-24 10:30:24
|
Revision: 7632 http://sourceforge.net/p/web-erp/reponame/7632 Author: exsonqu Date: 2016-09-24 10:30:21 +0000 (Sat, 24 Sep 2016) Log Message: ----------- Modified Paths: -------------- trunk/doc/Change.log Modified: trunk/doc/Change.log =================================================================== --- trunk/doc/Change.log 2016-09-24 10:29:42 UTC (rev 7631) +++ trunk/doc/Change.log 2016-09-24 10:30:21 UTC (rev 7632) @@ -1,5 +1,6 @@ webERP Change Log +24/09/16 Exson: Make Justify feature workable in addTextWrap in class.pdf.php. 24/09/16 Exson: Fixed the AddTextWrap missing characters errors when there is space and make it more reliable. 21/09/16 RChacon: In SuppWhereAlloc.php, accepts the payment multiple creditors. In CustWhereAlloc.php, accepts the receipt of multiple debtors. 18/09/16 RChacon: Add style to describe how button image should be displayed. Clean up Xenos css. |
From: <ex...@us...> - 2016-09-24 10:29:43
|
Revision: 7631 http://sourceforge.net/p/web-erp/reponame/7631 Author: exsonqu Date: 2016-09-24 10:29:42 +0000 (Sat, 24 Sep 2016) Log Message: ----------- 24/09/16 Exson: Make Justify feature workable in addTextWrap in class.pdf.php. Modified Paths: -------------- trunk/includes/class.pdf.php Modified: trunk/includes/class.pdf.php =================================================================== --- trunk/includes/class.pdf.php 2016-09-24 10:24:36 UTC (rev 7630) +++ trunk/includes/class.pdf.php 2016-09-24 10:29:42 UTC (rev 7631) @@ -80,7 +80,7 @@ $this->Text($XPos, $this->h-$YPos, $text);// Public function Text() in ~/includes/tcpdf/tcpdf.php. } - function addTextWrap($XPos, $YPos, $Width, $Height, $Text, $Align='J', $border=0, $fill=0) { + function addTextWrap($XPos, $YPos, $Width, $Height, $Text, $Align='full', $border=0, $fill=0) { // R&OS version 0.12.2: "addTextWrap function is no more, use addText instead". /* Returns the balance of the string that could not fit in the width */ // $XPos = cell horizontal coordinate from page left side to cell left side in dpi (72dpi = 25.4mm). |