details:   /erp/devel/main/rev/4babac33682f
changeset: 8532:4babac33682f
user:      Ben Sommerville <ben.sommerville <at> eintel.com.au>
date:      Wed Oct 13 15:07:54 2010 +1100
summary:   Fixes issue 14860: Handle new payment method when creating AP 
expense invoice

details:   /erp/devel/main/rev/20e4a87e4b12
changeset: 8533:20e4a87e4b12
user:      Ben Sommerville <ben.sommerville <at> eintel.com.au>
date:      Wed Oct 13 15:22:41 2010 +1100
summary:   Re issue 14860: Fix missing import statement

details:   /erp/devel/main/rev/caed682227f1
changeset: 8534:caed682227f1
user:      Valery Lezhebokov <valery.lezhebokov <at> gmail.com>
date:      Sun Sep 26 14:17:20 2010 +0200
summary:   Fixes issue 12623: Module details window show license code instead 
of license name

details:   /erp/devel/main/rev/f08d0c74961b
changeset: 8535:f08d0c74961b
user:      Valery Lezhebokov <valery.lezhebokov <at> gmail.com>
date:      Wed Oct 06 11:55:39 2010 +0200
summary:   merge

details:   /erp/devel/main/rev/be6414a07ece
changeset: 8536:be6414a07ece
user:      Valery Lezhebokov <valery.lezhebokov <at> gmail.com>
date:      Sun Oct 03 17:02:37 2010 +0200
summary:   Fixes issue 12623: Module details window show license code instead 
of license name

details:   /erp/devel/main/rev/c8cc677ecd99
changeset: 8537:c8cc677ecd99
user:      Valery Lezhebokov <valery.lezhebokov <at> gmail.com>
date:      Wed Oct 06 12:03:47 2010 +0200
summary:   Fixes issue 14270: When changing the Settings from General 
Availabity to Test and the other way around an error is shown

details:   /erp/devel/main/rev/a5e39d059f84
changeset: 8538:a5e39d059f84
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Wed Oct 13 09:05:53 2010 +0200
summary:   merge

details:   /erp/devel/main/rev/48933d28a14f
changeset: 8539:48933d28a14f
user:      David Alsasua <david.alsasua <at> openbravo.com>
date:      Fri Oct 08 16:27:42 2010 +0200
summary:   Fixes issue 13999: invoice post does not work when exists debt 
payment

details:   /erp/devel/main/rev/488f3922c1fa
changeset: 8540:488f3922c1fa
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Wed Oct 13 11:33:36 2010 +0200
summary:   Fixes bug 0014845: Wrong accounting workflow

details:   /erp/devel/main/rev/c2ed75573ccc
changeset: 8541:c2ed75573ccc
user:      Ben Sommerville <ben.sommerville <at> eintel.com.au>
date:      Wed Oct 13 21:30:23 2010 +1100
summary:   Remove wildcard import to match Openbravo code standards

details:   /erp/devel/main/rev/4c5f366a38e6
changeset: 8542:4c5f366a38e6
user:      Harikrishnan Raja <harikrishnan.raja <at> openbravo.com>
date:      Wed Oct 13 16:41:09 2010 +0530
summary:   Fixes Issue 14353: ArrayOutOfBoundsException in 
SL_Requisition_BPartner

details:   /erp/devel/main/rev/ccc7ff65f31a
changeset: 8543:ccc7ff65f31a
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Wed Oct 13 16:43:32 2010 +0200
summary:   Fixes issue 0014322. Fields hidden when APRM is installed as not 
required

details:   /erp/devel/main/rev/c531f0a7334b
changeset: 8544:c531f0a7334b
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Wed Oct 13 21:38:25 2010 +0000
summary:   CI: promote changesets from pi to main

diffstat:

 src-db/database/model/functions/C_INVOICE_POST.xml                   |   1 -
 src-db/database/sourcedata/AD_FIELD.xml                              |   4 +-
 src-db/database/sourcedata/AD_MESSAGE.xml                            |  11 +
 src-db/database/sourcedata/AD_MODULE.xml                             |   4 +-
 src/org/openbravo/erpCommon/ad_callouts/SL_Requisition_BPartner.java |  12 +-
 src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java    |   8 +-
 src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java           |  45 
++++++-
 src/org/openbravo/erpCommon/ad_forms/ModuleManagementInstalled.html  |  12 +
 src/org/openbravo/erpCommon/ad_forms/ModuleManagement_data.xsql      |  10 +-
 src/org/openbravo/erpCommon/ad_process/ExpenseAPInvoice.java         |  68 
+++++++--
 src/org/openbravo/erpCommon/ad_process/ExpenseAPInvoice_data.xsql    |  24 ++-
 11 files changed, 165 insertions(+), 34 deletions(-)

diffs (truncated from 472 to 300 lines):

diff -r fc2b40560e15 -r c531f0a7334b 
src-db/database/model/functions/C_INVOICE_POST.xml
--- a/src-db/database/model/functions/C_INVOICE_POST.xml        Wed Oct 13 
14:23:12 2010 +1100
+++ b/src-db/database/model/functions/C_INVOICE_POST.xml        Wed Oct 13 
21:38:25 2010 +0000
@@ -1560,7 +1560,6 @@
                 AND C_SETTLEMENT_GENERATE_ID IS NOT NULL
                 AND Ad_Isorgincluded(v_Org_id, dp.ad_org_id,v_Client_ID) != -1
                 AND ad_client_id = v_Client_ID
-                AND C_INVOICE_ID=v_Record_ID
                 AND EXISTS (SELECT 1
                             FROM C_SETTLEMENT S
                             WHERE DP.C_SETTLEMENT_GENERATE_ID = 
S.C_Settlement_ID
diff -r fc2b40560e15 -r c531f0a7334b src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml   Wed Oct 13 14:23:12 2010 +1100
+++ b/src-db/database/sourcedata/AD_FIELD.xml   Wed Oct 13 21:38:25 2010 +0000
@@ -34896,7 +34896,7 @@
 <!--3048-->  <AD_TAB_ID><![CDATA[132]]></AD_TAB_ID>
 <!--3048-->  <AD_COLUMN_ID><![CDATA[3898]]></AD_COLUMN_ID>
 <!--3048-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--3048-->  <DISPLAYLOGIC><![cda...@elementtype@='A' & 
@isbankacco...@='Y']]></DISPLAYLOGIC>
+<!--3048-->  <DISPLAYLOGIC><![cda...@elementtype@='A' & @isbankacco...@='Y' & 
@financialmanagem...@='']]></DISPLAYLOGIC>
 <!--3048-->  <DISPLAYLENGTH><![CDATA[44]]></DISPLAYLENGTH>
 <!--3048-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--3048-->  <SEQNO><![CDATA[180]]></SEQNO>
@@ -34920,7 +34920,7 @@
 <!--3049-->  <AD_TAB_ID><![CDATA[132]]></AD_TAB_ID>
 <!--3049-->  <AD_COLUMN_ID><![CDATA[3897]]></AD_COLUMN_ID>
 <!--3049-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--3049-->  <DISPLAYLOGIC><![cda...@elementtype@='A']]></DISPLAYLOGIC>
+<!--3049-->  <DISPLAYLOGIC><![cda...@elementtype@='A' & 
@financialmanagem...@='']]></DISPLAYLOGIC>
 <!--3049-->  <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
 <!--3049-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--3049-->  <SEQNO><![CDATA[170]]></SEQNO>
diff -r fc2b40560e15 -r c531f0a7334b src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Wed Oct 13 14:23:12 2010 +1100
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Wed Oct 13 21:38:25 2010 +0000
@@ -32589,6 +32589,17 @@
 <!--B5B771C2ACC04FE4A75C39249BFAD2EC-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--B5B771C2ACC04FE4A75C39249BFAD2EC--></AD_MESSAGE>
 
+<!--B782432DAF61408CBFE037F717CD6B11--><AD_MESSAGE>
+<!--B782432DAF61408CBFE037F717CD6B11-->  
<AD_MESSAGE_ID><![CDATA[B782432DAF61408CBFE037F717CD6B11]]></AD_MESSAGE_ID>
+<!--B782432DAF61408CBFE037F717CD6B11-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--B782432DAF61408CBFE037F717CD6B11-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--B782432DAF61408CBFE037F717CD6B11-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--B782432DAF61408CBFE037F717CD6B11-->  
<VALUE><![CDATA[ModuleUpdatesRemoved]]></VALUE>
+<!--B782432DAF61408CBFE037F717CD6B11-->  <MSGTEXT><![CDATA[The update 
information for the installed modules has been erased due to the settings 
changes.]]></MSGTEXT>
+<!--B782432DAF61408CBFE037F717CD6B11-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--B782432DAF61408CBFE037F717CD6B11-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--B782432DAF61408CBFE037F717CD6B11--></AD_MESSAGE>
+
 <!--B785B8EF16CB412DB2E0FE32F55E9869--><AD_MESSAGE>
 <!--B785B8EF16CB412DB2E0FE32F55E9869-->  
<AD_MESSAGE_ID><![CDATA[B785B8EF16CB412DB2E0FE32F55E9869]]></AD_MESSAGE_ID>
 <!--B785B8EF16CB412DB2E0FE32F55E9869-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r fc2b40560e15 -r c531f0a7334b src-db/database/sourcedata/AD_MODULE.xml
--- a/src-db/database/sourcedata/AD_MODULE.xml  Wed Oct 13 14:23:12 2010 +1100
+++ b/src-db/database/sourcedata/AD_MODULE.xml  Wed Oct 13 21:38:25 2010 +0000
@@ -6,7 +6,7 @@
 <!--0-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--0-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--0-->  <NAME><![CDATA[Core]]></NAME>
-<!--0-->  <VERSION><![CDATA[2.50.18452]]></VERSION>
+<!--0-->  <VERSION><![CDATA[2.50.18543]]></VERSION>
 <!--0-->  <DESCRIPTION><![CDATA[Core module is the base one]]></DESCRIPTION>
 <!--0-->  <HELP><![CDATA[Core module is the base one, all developments in core 
are included as part of the standard Openbravo ERP.]]></HELP>
 <!--0-->  <URL><![CDATA[www.openbravo.com]]></URL>
@@ -22,7 +22,7 @@
 <!--0-->  <ISTRANSLATIONMODULE><![CDATA[N]]></ISTRANSLATIONMODULE>
 <!--0-->  <HASREFERENCEDATA><![CDATA[Y]]></HASREFERENCEDATA>
 <!--0-->  <REFERENCEDATAINFO><![CDATA[Standard document types for orders, 
invoices, etc. and settings]]></REFERENCEDATAINFO>
-<!--0-->  <VERSION_LABEL><![CDATA[dev]]></VERSION_LABEL>
+<!--0-->  <VERSION_LABEL><![CDATA[CI]]></VERSION_LABEL>
 <!--0-->  <ISCOMMERCIAL><![CDATA[N]]></ISCOMMERCIAL>
 <!--0--></AD_MODULE>
 
diff -r fc2b40560e15 -r c531f0a7334b 
src/org/openbravo/erpCommon/ad_callouts/SL_Requisition_BPartner.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_Requisition_BPartner.java      
Wed Oct 13 14:23:12 2010 +1100
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Requisition_BPartner.java      
Wed Oct 13 21:38:25 2010 +0000
@@ -60,19 +60,23 @@
       String strWindowId) throws IOException, ServletException {
     if (log4j.isDebugEnabled())
       log4j.debug("Output: dataSheet");
-
+    String strPriceList = "";
+    String strCurrency = "";
     if (strBPartner.equals(""))
       vars.removeSessionValue(strWindowId + "|C_BPartner_ID");
 
     XmlDocument xmlDocument = xmlEngine.readXmlTemplate(
         "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument();
     SLRequisitionBPartnerData[] data = SLRequisitionBPartnerData.select(this, 
strBPartner);
-
+    if (data.length != 0) {
+      strPriceList = data[0].poPricelistId;
+      strCurrency = data[0].cCurrencyId;
+    }
     StringBuffer resultado = new StringBuffer();
     resultado.append("var calloutName='SL_Requisition_BPartner';\n\n");
     resultado.append("var respuesta = new Array(");
-    resultado.append("new Array(\"inpmPricelistId\", \"" + 
data[0].poPricelistId + "\"),");
-    resultado.append("new Array(\"inpcCurrencyId\", \"" + data[0].cCurrencyId 
+ "\")");
+    resultado.append("new Array(\"inpmPricelistId\", \"" + strPriceList + 
"\"),");
+    resultado.append("new Array(\"inpcCurrencyId\", \"" + strCurrency + "\")");
     resultado.append(");");
     xmlDocument.setParameter("array", resultado.toString());
     xmlDocument.setParameter("frameName", "appFrame");
diff -r fc2b40560e15 -r c531f0a7334b 
src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Wed Oct 
13 14:23:12 2010 +1100
+++ b/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Wed Oct 
13 21:38:25 2010 +0000
@@ -358,9 +358,11 @@
               .getFinPayment().getAmount().toString() : "", 
Fact_Acct_Group_ID, nextSeqNo(SeqNo),
           DocumentType, conn);
     }
-    fact.createLine(null, getWithdrawalAccount(as, null, 
transaction.getAccount(), conn),
-        C_Currency_ID, transaction.getDepositAmount().toString(), 
transaction.getPaymentAmount()
-            .toString(), Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, 
conn);
+    fact.createLine(null,
+        getAccountUponDepositWithdrawal(conn, 
transaction.getFinPayment().getPaymentMethod(),
+            transaction.getAccount(), as, 
transaction.getFinPayment().isReceipt()), C_Currency_ID,
+        transaction.getDepositAmount().toString(), 
transaction.getPaymentAmount().toString(),
+        Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
 
     SeqNo = "0";
     return fact;
diff -r fc2b40560e15 -r c531f0a7334b 
src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java
--- a/src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java        Wed Oct 
13 14:23:12 2010 +1100
+++ b/src/org/openbravo/erpCommon/ad_forms/ModuleManagement.java        Wed Oct 
13 21:38:25 2010 +0000
@@ -499,7 +499,8 @@
       xmlDocument.setParameter("urlLink", getLink(url));
       xmlDocument.setParameter("url", url);
     }
-    xmlDocument.setParameter("license", module.getLicenseType());
+    xmlDocument.setParameter("license", Utility.getListValueName("License 
Type", module
+        .getLicenseType(), vars.getLanguage()));
 
     if (dependencies != null && dependencies.length > 0) {
       xmlDocument.setData("dependencies", formatDeps4Display(dependencies, 
vars, this));
@@ -1445,6 +1446,9 @@
     if (log4j.isDebugEnabled())
       log4j.debug("Output: ajaxreponse");
 
+    // clean module updates if there are any
+    cleanModulesUpdates();
+
     final HashMap<String, String> updates = ImportModule.scanForUpdates(this, 
vars);
     String up = "";
     for (final String node : updates.keySet())
@@ -1493,6 +1497,17 @@
               mod.setMaturityUpdate(null);
             }
             OBDal.getInstance().flush();
+            OBDal.getInstance().commitAndClose();
+
+            // clean module updates if there are any
+            boolean isCleaned = cleanModulesUpdates();
+            if (isCleaned) {
+              myMessage = new OBError();
+              myMessage.setType("Info");
+              myMessage.setMessage(Utility.messageBD(this, 
"ModuleUpdatesRemoved", vars
+                  .getLanguage()));
+            }
+
           } finally {
             OBInterceptor.setPreventUpdateInfoChange(false);
           }
@@ -1500,6 +1515,7 @@
           log4j.error("Module does not exists ID:" + moduleId);
         }
       } else if (vars.commandIn("SETTINGS_SAVE")) {
+
         // Save global maturity levels
         sysInfo.setMaturitySearch(vars.getStringParameter("inpSearchLevel"));
         sysInfo.setMaturityUpdate(vars.getStringParameter("inpScanLevel"));
@@ -1558,6 +1574,20 @@
               .getLanguage())
               + warnMsg);
         }
+
+        // clean module updates if there are any
+        boolean isCleaned = cleanModulesUpdates();
+        if (isCleaned) {
+          if (myMessage == null) {
+            myMessage = new OBError();
+            myMessage.setType("Info");
+            myMessage.setMessage(Utility
+                .messageBD(this, "ModuleUpdatesRemoved", vars.getLanguage()));
+          } else {
+            myMessage.setMessage(myMessage.getMessage() + "<br/>"
+                + Utility.messageBD(this, "ModuleUpdatesRemoved", 
vars.getLanguage()));
+          }
+        }
       }
 
       // Possible maturity levels are obtained from CR, obtain them once per 
session and store
@@ -1743,6 +1773,19 @@
   }
 
   /**
+   * Checks whether there are any updates available for the installed modules 
and cleans the update
+   * info if so.
+   */
+  private boolean cleanModulesUpdates() throws ServletException {
+    if (ModuleManagementData.selectUpdateable(this).length > 0) {
+      // cleaning modules updates
+      ModuleManagementData.cleanModulesUpdates(this);
+      return true;
+    }
+    return false;
+  }
+
+  /**
    * Obtains the combo used for enforcement, showing which is the default 
setting.
    */
   private FieldProvider[] 
getEnforcementCombo(org.openbravo.model.ad.module.ModuleDependency dep,
diff -r fc2b40560e15 -r c531f0a7334b 
src/org/openbravo/erpCommon/ad_forms/ModuleManagementInstalled.html
--- a/src/org/openbravo/erpCommon/ad_forms/ModuleManagementInstalled.html       
Wed Oct 13 14:23:12 2010 +1100
+++ b/src/org/openbravo/erpCommon/ad_forms/ModuleManagementInstalled.html       
Wed Oct 13 21:38:25 2010 +0000
@@ -96,6 +96,18 @@
         if (XMLHttpRequestObj.responseText) {
           strText = XMLHttpRequestObj.responseText;
 
+          // revert all tree item icons to default state
+          var treeItems = document.getElementsByClassName('Tree_Row');
+          for (var i=1;i<treeItems.length;i++) {
+              var treeItemChildren = treeItems[i].childNodes;
+
+              for (var j=1;j<treeItemChildren.length;j++) {
+                  if(treeItemChildren[j].id == "icon"){
+                         
treeItemChildren[j].childNodes[1].setAttribute("class","");
+                  }
+              }
+          }
+          
           var elements = strText.split("|");
           document.getElementById('notifications').innerHTML=elements[0];
           for (var i=1;i<elements.length;i++) {
diff -r fc2b40560e15 -r c531f0a7334b 
src/org/openbravo/erpCommon/ad_forms/ModuleManagement_data.xsql
--- a/src/org/openbravo/erpCommon/ad_forms/ModuleManagement_data.xsql   Wed Oct 
13 14:23:12 2010 +1100
+++ b/src/org/openbravo/erpCommon/ad_forms/ModuleManagement_data.xsql   Wed Oct 
13 21:38:25 2010 +0000
@@ -101,5 +101,13 @@
       </Sql>
    </SqlMethod>
    
-  
+    <SqlMethod name="cleanModulesUpdates" type="preparedStatement" 
return="rowcount">
+      <SqlMethodComment></SqlMethodComment>
+      <Sql>
+        UPDATE  AD_MODULE 
+            SET update_available=null, 
+                update_ver_id=null      
+      </Sql>
+   </SqlMethod>
+   
 </SqlClass>
diff -r fc2b40560e15 -r c531f0a7334b 
src/org/openbravo/erpCommon/ad_process/ExpenseAPInvoice.java
--- a/src/org/openbravo/erpCommon/ad_process/ExpenseAPInvoice.java      Wed Oct 
13 14:23:12 2010 +1100
+++ b/src/org/openbravo/erpCommon/ad_process/ExpenseAPInvoice.java      Wed Oct 
13 21:38:25 2010 +0000
@@ -4,15 +4,15 @@
  * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
  * Version 1.1  with a permitted attribution clause; you may not  use this
  * file except in compliance with the License. You  may  obtain  a copy of
- * the License at http://www.openbravo.com/legal/license.html 
+ * the License at http://www.openbravo.com/legal/license.html
  * Software distributed under the License  is  distributed  on  an "AS IS"
  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  * License for the specific  language  governing  rights  and  limitations
- * under the License. 
- * The Original Code is Openbravo ERP. 
- * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2001-2009 Openbravo SLU 
- * All Rights Reserved. 
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo SLU
+ * All portions are Copyright (C) 2001-2009 Openbravo SLU
+ * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
  */
@@ -31,7 +31,9 @@
 import org.apache.log4j.Logger;
 import org.openbravo.base.secureApp.HttpSecureAppServlet;
 import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.dal.core.OBContext;
 import org.openbravo.erpCommon.ad_actionButton.ActionButtonDefaultData;
+import org.openbravo.erpCommon.businessUtility.Preferences;
 import org.openbravo.erpCommon.businessUtility.Tax;
 import org.openbravo.erpCommon.businessUtility.WindowTabs;
 import org.openbravo.erpCommon.utility.ComboTableData;
@@ -39,6 +41,8 @@
 import org.openbravo.erpCommon.utility.LeftTabsBar;
 import org.openbravo.erpCommon.utility.NavigationBar;
 import org.openbravo.erpCommon.utility.OBError;
+import org.openbravo.erpCommon.utility.PropertyException;
+import org.openbravo.erpCommon.utility.PropertyNotFoundException;
 import org.openbravo.erpCommon.utility.SequenceIdData;
 import org.openbravo.erpCommon.utility.ToolBar;
 import org.openbravo.erpCommon.utility.Utility;
@@ -102,6 +106,7 @@
     String strPricelist = "";
     String strSalesrepId = "";

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to