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