details:   https://code.openbravo.com/erp/devel/pi/rev/28b97db8b671
changeset: 27988:28b97db8b671
user:      Nicola Cuomo <nikola.cuomo <at> cleardrop.biz>
date:      Wed Sep 02 10:19:42 2015 +0200
summary:   Fixed issue 19789: Unmatch several lines in a batch

details:   https://code.openbravo.com/erp/devel/pi/rev/01b4fb16de7b
changeset: 27989:01b4fb16de7b
user:      Víctor Martínez Romanos <victor.martinez <at> openbravo.com>
date:      Mon Nov 23 11:18:00 2015 +0100
summary:   Related to issue 19789: Code review improvements

Unmatch Selected button is only shown when the user has selected at least 1 
record already cleared.
The display logic for the Unmatch Selected button is run after manually 
matching a transaction with the search or add transaction, and when manually 
unmatching an individual transaction
Improved Unmatch Selected error/warning/sucess messages.
Translated the message title.
ob-aprm-findTransaction.js modified to avoid a regression after manually match 
a record using the search button.

diffstat:

 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml 
                                                   |   24 +
 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_REF_LIST.xml 
                                                  |   14 +-
 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_TAB.xml     
                                                   |    5 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchSelectedTransactionsActionHandler.java
 |  151 ++++++++++
 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-findTransaction.js
                               |    2 +-
 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-matchStatement.js
                                |   53 +++-
 6 files changed, 244 insertions(+), 5 deletions(-)

diffs (truncated from 354 to 300 lines):

diff -r 5f5ac0214dae -r 01b4fb16de7b 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
    Fri Nov 20 13:43:41 2015 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
    Mon Nov 23 11:18:00 2015 +0100
@@ -649,6 +649,18 @@
 <!--712C841E501642B881A998CCAC13E420-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--712C841E501642B881A998CCAC13E420--></AD_MESSAGE>
 
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4--><AD_MESSAGE>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  
<AD_MESSAGE_ID><![CDATA[76D4A0740BAD4274B8718A0AF2A1C9B4]]></AD_MESSAGE_ID>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  
<VALUE><![CDATA[APRM_ErrorOnUnmatchingRecords]]></VALUE>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  <MSGTEXT><![CDATA[%0 record(s) 
failed. Reference No.: ]]></MSGTEXT>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  <MSGTYPE><![CDATA[W]]></MSGTYPE>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--76D4A0740BAD4274B8718A0AF2A1C9B4--></AD_MESSAGE>
+
 <!--7918E1E75DF84F499AD21A51F53F9A9B--><AD_MESSAGE>
 <!--7918E1E75DF84F499AD21A51F53F9A9B-->  
<AD_MESSAGE_ID><![CDATA[7918E1E75DF84F499AD21A51F53F9A9B]]></AD_MESSAGE_ID>
 <!--7918E1E75DF84F499AD21A51F53F9A9B-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1381,6 +1393,18 @@
 <!--DF6BD33E986149C0ADE4D0CC45D7394C-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--DF6BD33E986149C0ADE4D0CC45D7394C--></AD_MESSAGE>
 
+<!--E103F874F07D44269B98F457EFCAF367--><AD_MESSAGE>
+<!--E103F874F07D44269B98F457EFCAF367-->  
<AD_MESSAGE_ID><![CDATA[E103F874F07D44269B98F457EFCAF367]]></AD_MESSAGE_ID>
+<!--E103F874F07D44269B98F457EFCAF367-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--E103F874F07D44269B98F457EFCAF367-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--E103F874F07D44269B98F457EFCAF367-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--E103F874F07D44269B98F457EFCAF367-->  
<VALUE><![CDATA[APRM_UnmatchedRecords]]></VALUE>
+<!--E103F874F07D44269B98F457EFCAF367-->  <MSGTEXT><![CDATA[%0 record(s) were 
properly unmatched.]]></MSGTEXT>
+<!--E103F874F07D44269B98F457EFCAF367-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--E103F874F07D44269B98F457EFCAF367-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
+<!--E103F874F07D44269B98F457EFCAF367-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--E103F874F07D44269B98F457EFCAF367--></AD_MESSAGE>
+
 <!--E217A4F4BDE84DC6A95ACB3F54549FDD--><AD_MESSAGE>
 <!--E217A4F4BDE84DC6A95ACB3F54549FDD-->  
<AD_MESSAGE_ID><![CDATA[E217A4F4BDE84DC6A95ACB3F54549FDD]]></AD_MESSAGE_ID>
 <!--E217A4F4BDE84DC6A95ACB3F54549FDD-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 5f5ac0214dae -r 01b4fb16de7b 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_REF_LIST.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_REF_LIST.xml
   Fri Nov 20 13:43:41 2015 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_REF_LIST.xml
   Mon Nov 23 11:18:00 2015 +0100
@@ -343,6 +343,18 @@
 <!--7AC4F4FF644247B7BD320BBF67C4F066-->  <SEQNO><![CDATA[10]]></SEQNO>
 <!--7AC4F4FF644247B7BD320BBF67C4F066--></AD_REF_LIST>
 
+<!--94334E10107D4F3C868191FF2C9AEAD0--><AD_REF_LIST>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  
<AD_REF_LIST_ID><![CDATA[94334E10107D4F3C868191FF2C9AEAD0]]></AD_REF_LIST_ID>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  <VALUE><![CDATA[UN]]></VALUE>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  <NAME><![CDATA[Unmatch 
Selected]]></NAME>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  
<AD_REFERENCE_ID><![CDATA[C20E5E22588E40E5B8CC6D80ED3015C5]]></AD_REFERENCE_ID>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
+<!--94334E10107D4F3C868191FF2C9AEAD0-->  <SEQNO><![CDATA[30]]></SEQNO>
+<!--94334E10107D4F3C868191FF2C9AEAD0--></AD_REF_LIST>
+
 <!--9AE9EBD541F34CC7AC8830B9601C52CB--><AD_REF_LIST>
 <!--9AE9EBD541F34CC7AC8830B9601C52CB-->  
<AD_REF_LIST_ID><![CDATA[9AE9EBD541F34CC7AC8830B9601C52CB]]></AD_REF_LIST_ID>
 <!--9AE9EBD541F34CC7AC8830B9601C52CB-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -466,7 +478,7 @@
 <!--C69982184F634AC79728338D1F327B76-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--C69982184F634AC79728338D1F327B76-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--C69982184F634AC79728338D1F327B76-->  <VALUE><![CDATA[RE]]></VALUE>
-<!--C69982184F634AC79728338D1F327B76-->  <NAME><![CDATA[Reconcile]]></NAME>
+<!--C69982184F634AC79728338D1F327B76-->  <NAME><![CDATA[Reconcile All]]></NAME>
 <!--C69982184F634AC79728338D1F327B76-->  
<AD_REFERENCE_ID><![CDATA[C20E5E22588E40E5B8CC6D80ED3015C5]]></AD_REFERENCE_ID>
 <!--C69982184F634AC79728338D1F327B76-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--C69982184F634AC79728338D1F327B76-->  <SEQNO><![CDATA[20]]></SEQNO>
diff -r 5f5ac0214dae -r 01b4fb16de7b 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_TAB.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_TAB.xml    
    Fri Nov 20 13:43:41 2015 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_TAB.xml    
    Mon Nov 23 11:18:00 2015 +0100
@@ -916,10 +916,11 @@
 <!--ED54A4E24196476596955286D403461E-->  
<DISABLE_PARENT_KEY_PROPERTY><![CDATA[N]]></DISABLE_PARENT_KEY_PROPERTY>
 <!--ED54A4E24196476596955286D403461E-->  
<ISREADONLYTREE><![CDATA[N]]></ISREADONLYTREE>
 <!--ED54A4E24196476596955286D403461E-->  
<ISSHOWTREENODEICONS><![CDATA[Y]]></ISSHOWTREENODEICONS>
+<!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_SELECTION><![CDATA[OB.APRM.MatchStatement.selectionChanged]]></EM_OBUIAPP_SELECTION>
 <!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_CAN_ADD><![CDATA[N]]></EM_OBUIAPP_CAN_ADD>
 <!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_CAN_DELETE><![CDATA[N]]></EM_OBUIAPP_CAN_DELETE>
-<!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_SHOW_SELECT><![CDATA[N]]></EM_OBUIAPP_SHOW_SELECT>
-<!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_SELECTION_TYPE><![CDATA[S]]></EM_OBUIAPP_SELECTION_TYPE>
+<!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_SHOW_SELECT><![CDATA[Y]]></EM_OBUIAPP_SHOW_SELECT>
+<!--ED54A4E24196476596955286D403461E-->  
<EM_OBUIAPP_SELECTION_TYPE><![CDATA[M]]></EM_OBUIAPP_SELECTION_TYPE>
 <!--ED54A4E24196476596955286D403461E--></AD_TAB>
 
 <!--F6C2283A21314407BBBB23FF14B85ED4--><AD_TAB>
diff -r 5f5ac0214dae -r 01b4fb16de7b 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchSelectedTransactionsActionHandler.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/UnMatchSelectedTransactionsActionHandler.java
 Mon Nov 23 11:18:00 2015 +0100
@@ -0,0 +1,151 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (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
+ * 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) 2015 Openbravo SLU
+ * All Rights Reserved.
+ * Contributor(s):  Cleardrop_____________________________.
+ ************************************************************************
+ */
+
+package org.openbravo.advpaymentmngt.actionHandler;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.codehaus.jettison.json.JSONArray;
+import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.advpaymentmngt.utility.APRM_MatchingUtility;
+import org.openbravo.client.kernel.BaseActionHandler;
+import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.service.OBDal;
+import org.openbravo.erpCommon.utility.OBDateUtils;
+import org.openbravo.erpCommon.utility.OBMessageUtils;
+import org.openbravo.model.financialmgmt.payment.FIN_BankStatementLine;
+import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction;
+import org.openbravo.service.db.DbUtility;
+import org.openbravo.service.json.JsonUtils;
+import org.openbravo.service.json.OBStaleObjectException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UnMatchSelectedTransactionsActionHandler extends 
BaseActionHandler {
+  private static final Logger log = LoggerFactory
+      .getLogger(UnMatchSelectedTransactionsActionHandler.class);
+
+  @Override
+  protected JSONObject execute(Map<String, Object> parameters, String data) {
+    JSONObject result = new JSONObject();
+    JSONObject errorMessage = new JSONObject();
+    try {
+      OBContext.setAdminMode(true);
+      final JSONObject jsonData = new JSONObject(data);
+      SimpleDateFormat xmlDateTimeFormat = JsonUtils.createJSTimeFormat();
+
+      List<String> errorLines = new ArrayList<String>();
+
+      final JSONArray bankStatementLineIds = 
jsonData.getJSONArray("bankStatementLineIds");
+      int bankStatementLineIdsLength = bankStatementLineIds != null ? 
bankStatementLineIds.length()
+          : 0;
+      int alreadyCleared = 0;
+      for (int i = 0; i < bankStatementLineIdsLength; i++) {
+        JSONObject bankStatementLine = bankStatementLineIds.getJSONObject(i);
+        if (!bankStatementLine.getBoolean("cleared")) {
+          log.info("Skipping " + bankStatementLine.getString("referenceNo")
+              + " line as it's not matched");
+          alreadyCleared++;
+        } else {
+          try {
+            Date date = 
xmlDateTimeFormat.parse(bankStatementLine.getString("bslUpdated"));
+            final FIN_BankStatementLine bsline = OBDal.getInstance().get(
+                FIN_BankStatementLine.class, 
bankStatementLine.getString("id"));
+            Date bbddBSLUpdated = bsline.getUpdated();
+            // Remove milis
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(OBDateUtils.convertDateToUTC(bbddBSLUpdated));
+            calendar.setLenient(true);
+            calendar.set(Calendar.MILLISECOND, 0);
+            if (date.getTime() != calendar.getTimeInMillis()) {
+              log.error("The record " + 
bankStatementLine.getString("referenceNo")
+                  + " is newer in the database. Avoid unmatching it");
+              throw new OBStaleObjectException("@APRM_StaleDate@");
+            }
+            final FIN_FinaccTransaction transaction = 
bsline.getFinancialAccountTransaction();
+            if (transaction != null) {
+              APRM_MatchingUtility.unmatch(bsline);
+            }
+          } catch (Exception e) {
+            errorLines.add(bankStatementLine.getString("referenceNo"));
+          }
+        }
+      }
+
+      /* Build Message */
+      int totalSuccess = bankStatementLineIdsLength - errorLines.size() - 
alreadyCleared;
+      String severity = "error";
+      String title = "";
+      String msg = "";
+      if (totalSuccess > 0) {
+        severity = "success";
+        title = OBMessageUtils.messageBD("Success");
+        msg = OBMessageUtils.getI18NMessage("APRM_UnmatchedRecords",
+            new String[] { String.valueOf(totalSuccess) });
+      }
+      if (!errorLines.isEmpty()) {
+        if (totalSuccess > 0) {
+          severity = "warning";
+          title = OBMessageUtils.messageBD("Warning");
+        } else {
+          severity = "error";
+          title = OBMessageUtils.messageBD("Error");
+        }
+
+        if (StringUtils.isNotBlank(msg)) {
+          msg += "<br/>";
+        }
+        msg += OBMessageUtils.getI18NMessage("APRM_ErrorOnUnmatchingRecords",
+            new String[] { String.valueOf(errorLines.size()) });
+        for (String string : errorLines) {
+          msg += string + ", ";
+        }
+        msg = msg.substring(0, msg.length() - 2);
+      }
+      errorMessage.put("severity", severity);
+      errorMessage.put("title", title);
+      errorMessage.put("text", msg);
+      result.put("message", errorMessage);
+
+    } catch (Exception e) {
+      OBDal.getInstance().rollbackAndClose();
+      log.error("Error Unmatching Transaction", e);
+      try {
+        Throwable ex = DbUtility.getUnderlyingSQLException(e);
+        String message = 
OBMessageUtils.translateError(ex.getMessage()).getMessage();
+        errorMessage = new JSONObject();
+        errorMessage.put("severity", "error");
+        errorMessage.put("title", OBMessageUtils.messageBD("Error"));
+        errorMessage.put("text", message);
+        result.put("message", errorMessage);
+      } catch (Exception e2) {
+        log.error("Message could not be built", e2);
+      }
+    } finally {
+      OBContext.restorePreviousMode();
+    }
+    return result;
+  }
+}
\ No newline at end of file
diff -r 5f5ac0214dae -r 01b4fb16de7b 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-findTransaction.js
--- 
a/modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-findTransaction.js
       Fri Nov 20 13:43:41 2015 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-findTransaction.js
       Mon Nov 23 11:18:00 2015 +0100
@@ -36,7 +36,7 @@
     if (trxSelection && trxSelection[0]) {
       var trxDepositAmt = trxSelection[0].depositAmount,
           trxPaymentAmt = trxSelection[0].paymentAmount,
-          blineAmt = 
view.callerField.view.getContextInfo().match_statement._selection[0].amount,
+          blineAmt = view.callerField.record.amount,
           trxAmt = trxDepositAmt - trxPaymentAmt,
           hideSplitConfirmation = 
OB.PropertyStore.get('APRM_MATCHSTATEMENT_HIDE_PARTIALMATCH_POPUP', 
view.windowId);
 
diff -r 5f5ac0214dae -r 01b4fb16de7b 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-matchStatement.js
--- 
a/modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-matchStatement.js
        Fri Nov 20 13:43:41 2015 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-matchStatement.js
        Mon Nov 23 11:18:00 2015 +0100
@@ -26,10 +26,37 @@
 };
 
 OB.APRM.MatchStatement.onLoad = function (view) {
-  var execute, grid = view.theForm.getItem('match_statement').canvas.viewGrid;
+  var execute, grid = view.theForm.getItem('match_statement').canvas.viewGrid,
+      buttons = view.popupButtons.members[0].members,
+      i, button, propertyButtonValue = '_buttonValue';
   view.cancelButton.hide();
   view.parentElement.parentElement.closeButton.hide();
 
+  for (i = 0; i < buttons.length; i++) {
+    button = buttons[i];
+    if (button[propertyButtonValue] === 'UN') {
+      view.unmatchButton = button;
+      button.hide();
+      break;
+    }
+  }
+
+  button.action = function () {
+    var callback = function (response, data, request) {
+        view.onRefreshFunction(view);
+        if (data && data.message && data.message.severity === 'error') {
+          view.messageBar.setMessage(isc.OBMessageBar.TYPE_ERROR, 
data.message.title, data.message.text);
+        } else if (data && data.message && data.message.severity === 
'success') {
+          view.messageBar.setMessage(isc.OBMessageBar.TYPE_SUCCESS, 
data.message.title, data.message.text);
+        } else if (data && data.message && data.message.severity === 
'warning') {
+          view.messageBar.setMessage(isc.OBMessageBar.TYPE_WARNING, 
data.message.title, data.message.text);
+        }
+        };
+    
OB.RemoteCallManager.call('org.openbravo.advpaymentmngt.actionHandler.UnMatchSelectedTransactionsActionHandler',
 {
+      bankStatementLineIds: grid.getSelectedRecords()
+    }, {}, callback);
+  };
+
   grid.dataSourceOrig = grid.dataSource;
   grid.dataSource = null;
   execute = function (ok) {
@@ -73,6 +100,24 @@

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to