details:   https://code.openbravo.com/erp/devel/pi/rev/2aed37b14eb3
changeset: 30502:2aed37b14eb3
user:      Unai Martirena <unai.martirena <at> openbravo.com>
date:      Fri Oct 21 08:34:49 2016 +0200
summary:   Fixes Issue 34234: Add Preupdate and Predelete actions for C&R in 
Order Line tab

diffstat:

 src-db/database/sourcedata/AD_MESSAGE.xml                                      
   |  12 +
 
src/org/openbravo/common/actionhandler/CancelAndReplaceGetCancelledOrderLine.java
 |  17 ++-
 web/js/cancelAndReplace.js                                                     
   |  62 ++++++++-
 3 files changed, 80 insertions(+), 11 deletions(-)

diffs (152 lines):

diff -r ae110fab1bff -r 2aed37b14eb3 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Wed Oct 19 15:41:26 2016 +0200
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Fri Oct 21 08:34:49 2016 +0200
@@ -25575,6 +25575,18 @@
 <!--CE436C734491444CAAF5FFEE073AE2E1-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--CE436C734491444CAAF5FFEE073AE2E1--></AD_MESSAGE>
 
+<!--CE6DD7C2090C4CD1AD17BA1597918C31--><AD_MESSAGE>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  
<AD_MESSAGE_ID><![CDATA[CE6DD7C2090C4CD1AD17BA1597918C31]]></AD_MESSAGE_ID>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  
<VALUE><![CDATA[CannotDeleteLineWithDeliveredQtyInReplacementLine]]></VALUE>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  <MSGTEXT><![CDATA[The line cannot be 
deleted because it is replacing a line that is delivered. Line no: %0, Product: 
%1]]></MSGTEXT>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31-->  
<ISINCLUDEINI18N><![CDATA[Y]]></ISINCLUDEINI18N>
+<!--CE6DD7C2090C4CD1AD17BA1597918C31--></AD_MESSAGE>
+
 <!--CEF696AFAED34A0A916D825BEA97C2B5--><AD_MESSAGE>
 <!--CEF696AFAED34A0A916D825BEA97C2B5-->  
<AD_MESSAGE_ID><![CDATA[CEF696AFAED34A0A916D825BEA97C2B5]]></AD_MESSAGE_ID>
 <!--CEF696AFAED34A0A916D825BEA97C2B5-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ae110fab1bff -r 2aed37b14eb3 
src/org/openbravo/common/actionhandler/CancelAndReplaceGetCancelledOrderLine.java
--- 
a/src/org/openbravo/common/actionhandler/CancelAndReplaceGetCancelledOrderLine.java
 Wed Oct 19 15:41:26 2016 +0200
+++ 
b/src/org/openbravo/common/actionhandler/CancelAndReplaceGetCancelledOrderLine.java
 Fri Oct 21 08:34:49 2016 +0200
@@ -21,6 +21,7 @@
 import java.util.Map;
 
 import org.apache.log4j.Logger;
+import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.client.kernel.BaseActionHandler;
 import org.openbravo.dal.service.OBDal;
@@ -32,12 +33,20 @@
   @Override
   protected JSONObject execute(Map<String, Object> parameters, String data) {
     JSONObject result = new JSONObject();
+    JSONObject resultOrderLine = new JSONObject();
+    JSONArray resultJSONArray = new JSONArray();
     String orderLineId = "";
     try {
-      final JSONObject jsonData = new JSONObject(data);
-      orderLineId = jsonData.getString("orderLineId");
-      OrderLine orderLine = OBDal.getInstance().get(OrderLine.class, 
orderLineId);
-      result.put("deliveredQuantity", orderLine.getDeliveredQuantity());
+      final JSONArray jsonArray = new JSONObject(data).getJSONArray("records");
+      for (int i = 0, size = jsonArray.length(); i < size; i++) {
+        JSONObject jsonOrderLine = jsonArray.getJSONObject(i);
+        orderLineId = jsonOrderLine.getString("replacedorderline");
+        OrderLine orderLine = OBDal.getInstance().get(OrderLine.class, 
orderLineId);
+        resultOrderLine.put("deliveredQuantity", 
orderLine.getDeliveredQuantity());
+        resultOrderLine.put("record", jsonOrderLine);
+        resultJSONArray.put(resultOrderLine);
+      }
+      result.put("result", resultJSONArray);
     } catch (Exception e) {
       log.error("Error retrieving OrderLine with id {}", e);
     }
diff -r ae110fab1bff -r 2aed37b14eb3 web/js/cancelAndReplace.js
--- a/web/js/cancelAndReplace.js        Wed Oct 19 15:41:26 2016 +0200
+++ b/web/js/cancelAndReplace.js        Fri Oct 21 08:34:49 2016 +0200
@@ -18,17 +18,19 @@
  */
 
 OB.CancelAndReplace = {};
-OB.CancelAndReplace.ClientSideEventHandlers = {};
+OB.CancelAndReplace.ClientSideEventHandlersPreSaveUpdate = {};
+OB.CancelAndReplace.ClientSideEventHandlersPreDelete = {};
 OB.CancelAndReplace.SALES_ORDERLINES_TAB = '187';
 
-OB.CancelAndReplace.ClientSideEventHandlers.showMessage = function (view, 
form, grid, extraParameters, actions) {
+OB.CancelAndReplace.ClientSideEventHandlersPreSaveUpdate.showMessage = 
function (view, form, grid, extraParameters, actions) {
   var data = extraParameters.data,
-      newOrderedQuantity = data.orderedQuantity;
+      newOrderedQuantity = data.orderedQuantity,
+      replacementRecords = [];
 
   view.messageBar.keepOnAutomaticRefresh = true;
 
   callback = function (response, cdata, request) {
-    if (cdata && cdata.deliveredQuantity && cdata.deliveredQuantity > 
newOrderedQuantity) {
+    if (cdata && cdata.result.length && cdata.result[0].deliveredQuantity > 
newOrderedQuantity) {
       // Update flow
       view.messageBar.setMessage(isc.OBMessageBar.TYPE_ERROR, null, 
OB.I18N.getLabel('CannotOrderLessThanDeliveredInCancelReplace'));
       return;
@@ -36,10 +38,11 @@
     OB.EventHandlerRegistry.callbackExecutor(view, form, grid, 
extraParameters, actions);
   }
 
-  if (data.replacedorderline && !extraParameters.isNewRecord) {
+  if (data.replacedorderline && !extraParameters.isNewRecord && 
view.getParentRecord().documentStatus === 'TMP') {
+    replacementRecords.push(data);
     // Calling action handler
     
OB.RemoteCallManager.call('org.openbravo.common.actionhandler.CancelAndReplaceGetCancelledOrderLine',
 {
-      orderLineId: data.replacedorderline
+      records: replacementRecords
     }, {}, callback);
   } else {
     OB.EventHandlerRegistry.callbackExecutor(view, form, grid, 
extraParameters, actions);
@@ -47,4 +50,49 @@
 
 };
 
-OB.EventHandlerRegistry.register(OB.CancelAndReplace.SALES_ORDERLINES_TAB, 
OB.EventHandlerRegistry.PRESAVE, 
OB.CancelAndReplace.ClientSideEventHandlers.showMessage, 
'OBCancelAndReplace_ShowMessage');
\ No newline at end of file
+OB.EventHandlerRegistry.register(OB.CancelAndReplace.SALES_ORDERLINES_TAB, 
OB.EventHandlerRegistry.PRESAVE, 
OB.CancelAndReplace.ClientSideEventHandlersPreSaveUpdate.showMessage, 
'OBCancelAndReplace_ShowMessage');
+
+OB.CancelAndReplace.ClientSideEventHandlersPreDelete.showMessage = function 
(view, form, grid, extraParameters, actions) {
+  var selectedRecords = extraParameters.selectedRecords,
+      record, replacementRecords = [],
+      record, deliveredQuantity;
+
+  view.messageBar.keepOnAutomaticRefresh = true;
+
+  callback = function (response, cdata, request) {
+    for (i = 0; i < cdata.result.length; i++) {
+      record = cdata.result[i].record;
+      deliveredQuantity = cdata.result[i].deliveredQuantity;
+      if (deliveredQuantity !== 0) {
+        var msgInfo = [];
+        msgInfo.push(record.lineNo);
+        msgInfo.push(record.product$_identifier);
+        view.messageBar.setMessage(isc.OBMessageBar.TYPE_ERROR, null, 
OB.I18N.getLabel('CannotDeleteLineWithDeliveredQtyInReplacementLine', msgInfo));
+        return;
+      }
+    }
+    OB.EventHandlerRegistry.callbackExecutor(view, form, grid, 
extraParameters, actions);
+  };
+
+  if (view.getParentRecord().documentStatus === 'TMP') {
+    for (i = 0; i < selectedRecords.length; i++) {
+      record = selectedRecords[i];
+      if (record.replacedorderline) {
+        replacementRecords.push(record);
+      }
+    }
+
+    if (replacementRecords.length) {
+      //Calling action handler
+      
OB.RemoteCallManager.call('org.openbravo.common.actionhandler.CancelAndReplaceGetCancelledOrderLine',
 {
+        records: replacementRecords
+      }, {}, callback);
+    } else {
+      OB.EventHandlerRegistry.callbackExecutor(view, form, grid, 
extraParameters, actions);
+    }
+  } else {
+    OB.EventHandlerRegistry.callbackExecutor(view, form, grid, 
extraParameters, actions);
+  }
+};
+
+OB.EventHandlerRegistry.register(OB.CancelAndReplace.SALES_ORDERLINES_TAB, 
OB.EventHandlerRegistry.PREDELETE, 
OB.CancelAndReplace.ClientSideEventHandlersPreDelete.showMessage, 
'OBCancelAndReplace_ShowMessage');
\ No newline at end of file

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to