details: https://code.openbravo.com/erp/devel/pi/rev/f16dac5c4cf5 changeset: 23511:f16dac5c4cf5 user: Atul Gaware <atul.gaware <at> openbravo.com> date: Thu Jun 19 09:56:39 2014 +0530 summary: Fixes Issue 26559:Copy From Order process sets proper BOM Parent
details: https://code.openbravo.com/erp/devel/pi/rev/bca4e0f2c265 changeset: 23512:bca4e0f2c265 user: Atul Gaware <atul.gaware <at> openbravo.com> date: Thu Jun 19 11:53:52 2014 +0530 summary: Fixes Issue 26163:GoodShipment with Product & MovementQty 0 can't be completed diffstat: src-db/database/model/functions/M_INOUT_POST.xml | 18 ++ src-db/database/sourcedata/AD_MESSAGE.xml | 12 + src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder.java | 86 +++++++-- src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder_data.xsql | 6 +- 4 files changed, 95 insertions(+), 27 deletions(-) diffs (242 lines): diff -r 31caeb8872f0 -r bca4e0f2c265 src-db/database/model/functions/M_INOUT_POST.xml --- a/src-db/database/model/functions/M_INOUT_POST.xml Thu Jun 19 09:04:41 2014 +0200 +++ b/src-db/database/model/functions/M_INOUT_POST.xml Thu Jun 19 11:53:52 2014 +0530 @@ -203,6 +203,24 @@ RAISE_APPLICATION_ERROR(-20000, '@Inline@ '||v_Message_product||' '||'@ProductNullAndMovementQtyGreaterZero@') ; end if ; End ; + Declare + v_Message_Qty VARCHAR(2000) :=''; + BEGIN + FOR Cur_Lines IN ( + SELECT M.line + FROM M_InOut I, + M_InOutLine M + WHERE I.M_InOut_ID=M.M_InOut_ID + AND I.M_INOUT_ID=v_Record_ID + AND (M.M_PRODUCT_ID IS NOT NULL AND M.MOVEMENTQTY = 0) + ORDER BY M.line + ) LOOP + v_Message_Qty:=v_Message_Qty||Cur_Lines.line||', '; + END LOOP; + IF v_Message_Qty != '' THEN + RAISE_APPLICATION_ERROR(-20000, '@Inline@ '||v_Message_Qty||' '||'@ProductNotNullAndMovementQtyZero@') ; + END IF; + End ; if(v_isreturndoctype = 'N' AND v_isSoTrx = 'Y' and v_DocAction<>'RC') then v_message := null; for Cur_OrderLine in ( diff -r 31caeb8872f0 -r bca4e0f2c265 src-db/database/sourcedata/AD_MESSAGE.xml --- a/src-db/database/sourcedata/AD_MESSAGE.xml Thu Jun 19 09:04:41 2014 +0200 +++ b/src-db/database/sourcedata/AD_MESSAGE.xml Thu Jun 19 11:53:52 2014 +0530 @@ -15730,6 +15730,18 @@ <!--020F6EC9AA674B7A9D785EBEAF51C631--> <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N> <!--020F6EC9AA674B7A9D785EBEAF51C631--></AD_MESSAGE> +<!--02451773AE644BCBA0DA0C288A86F762--><AD_MESSAGE> +<!--02451773AE644BCBA0DA0C288A86F762--> <AD_MESSAGE_ID><![CDATA[02451773AE644BCBA0DA0C288A86F762]]></AD_MESSAGE_ID> +<!--02451773AE644BCBA0DA0C288A86F762--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--02451773AE644BCBA0DA0C288A86F762--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--02451773AE644BCBA0DA0C288A86F762--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--02451773AE644BCBA0DA0C288A86F762--> <VALUE><![CDATA[ProductNotNullAndMovementQtyZero]]></VALUE> +<!--02451773AE644BCBA0DA0C288A86F762--> <MSGTEXT><![CDATA[When Product is not blank then Movement Quantity should not be zero.]]></MSGTEXT> +<!--02451773AE644BCBA0DA0C288A86F762--> <MSGTYPE><![CDATA[E]]></MSGTYPE> +<!--02451773AE644BCBA0DA0C288A86F762--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--02451773AE644BCBA0DA0C288A86F762--> <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N> +<!--02451773AE644BCBA0DA0C288A86F762--></AD_MESSAGE> + <!--025158CC9AF94113ADAAD3A22DF1B2B7--><AD_MESSAGE> <!--025158CC9AF94113ADAAD3A22DF1B2B7--> <AD_MESSAGE_ID><![CDATA[025158CC9AF94113ADAAD3A22DF1B2B7]]></AD_MESSAGE_ID> <!--025158CC9AF94113ADAAD3A22DF1B2B7--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r 31caeb8872f0 -r bca4e0f2c265 src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder.java --- a/src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder.java Thu Jun 19 09:04:41 2014 +0200 +++ b/src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder.java Thu Jun 19 11:53:52 2014 +0530 @@ -11,7 +11,7 @@ * 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-2013 Openbravo SLU + * All portions are Copyright (C) 2001-2014 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -22,23 +22,30 @@ import java.io.PrintWriter; import java.math.BigDecimal; import java.sql.Connection; +import java.util.ArrayList; +import java.util.List; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.openbravo.base.exception.OBException; import org.openbravo.base.secureApp.HttpSecureAppServlet; import org.openbravo.base.secureApp.VariablesSecureApp; import org.openbravo.dal.core.OBContext; import org.openbravo.dal.service.OBDal; import org.openbravo.erpCommon.businessUtility.Tax; +import org.openbravo.erpCommon.reference.PInstanceProcessData; import org.openbravo.erpCommon.utility.DateTimeData; import org.openbravo.erpCommon.utility.OBError; import org.openbravo.erpCommon.utility.SequenceIdData; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.financial.FinancialUtils; +import org.openbravo.model.ad.process.ProcessInstance; import org.openbravo.model.common.order.Order; +import org.openbravo.service.db.CallProcess; +import org.openbravo.service.db.DalConnectionProvider; import org.openbravo.xmlEngine.XmlDocument; public class CopyFromPOOrder extends HttpSecureAppServlet { @@ -91,6 +98,8 @@ String strGrossAmount = "0"; String strNetPriceList = "0"; String strGrossPriceList = "0"; + // String strOrderLine = ""; + List<String> strOrderLineList = new ArrayList<String>(); Connection conn = null; try { conn = getTransactionConnection(); @@ -106,7 +115,7 @@ } finally { OBContext.restorePreviousMode(); } - + int lineCount = 0; for (i = 0; data != null && i < data.length; i++) { CopyFromPOOrderData[] data3 = CopyFromPOOrderData.selectPriceForProduct(this, data[i].mProductId, @@ -187,7 +196,7 @@ } int line = Integer.valueOf(orderData[0].line.equals("") ? "0" : orderData[0].line) - .intValue() + ((i + 1) * 10); + .intValue() + ((lineCount + 1) * 10); String strCOrderlineID = SequenceIdData.getUUID(); try { String isInstance = CopyFromPOOrderData.getIsInstanceValue(conn, this, @@ -200,26 +209,33 @@ vars.getUser(), vars.getUser(), data[i].mAttributesetinstanceId); data[i].mAttributesetinstanceId = strMAttributesetinstanceID; } - CopyFromPOOrderData.insertCOrderline( - conn, - this, - strCOrderlineID, - orderData[0].adClientId, - orderData[0].adOrgId, - vars.getUser(), - strKey, - Integer.toString(line), - orderData[0].cBpartnerId, - orderData[0].cBpartnerLocationId.equals("") ? ExpenseSOrderData.cBPartnerLocationId( - this, orderData[0].cBpartnerId) : orderData[0].cBpartnerLocationId, - orderData[0].dateordered, orderData[0].datepromised, data[i].description, - data[i].mProductId, orderData[0].mWarehouseId.equals("") ? vars.getWarehouse() - : orderData[0].mWarehouseId, data[i].cUomId, data[i].qtyordered, - data[i].quantityorder, data[i].cCurrencyId, strNetPriceList, strPriceActual, - strPriceLimit, strCTaxID, strDiscount, data[i].mProductUomId, data[i].orderline, - data[i].mAttributesetinstanceId, strGrossPriceList, strGrossUnitPrice, - strGrossAmount, strGrossBaseUnitPrice, data[i].cProjectId, data[i].user1Id, - data[i].user2Id, data[i].cCostcenterId, data[i].aAssetId); + if (data[i].bomParentId == null || data[i].bomParentId.equals("")) { + CopyFromPOOrderData.insertCOrderline( + conn, + this, + strCOrderlineID, + orderData[0].adClientId, + orderData[0].adOrgId, + vars.getUser(), + strKey, + Integer.toString(line), + orderData[0].cBpartnerId, + orderData[0].cBpartnerLocationId.equals("") ? ExpenseSOrderData + .cBPartnerLocationId(this, orderData[0].cBpartnerId) + : orderData[0].cBpartnerLocationId, orderData[0].dateordered, + orderData[0].datepromised, data[i].description, data[i].mProductId, + orderData[0].mWarehouseId.equals("") ? vars.getWarehouse() + : orderData[0].mWarehouseId, data[i].cUomId, data[i].qtyordered, + data[i].quantityorder, data[i].cCurrencyId, strNetPriceList, strPriceActual, + strPriceLimit, strCTaxID, strDiscount, data[i].mProductUomId, data[i].orderline, + data[i].mAttributesetinstanceId, strGrossPriceList, strGrossUnitPrice, + strGrossAmount, strGrossBaseUnitPrice, data[i].cProjectId, data[i].user1Id, + data[i].user2Id, data[i].cCostcenterId, data[i].aAssetId); + lineCount++; + if (data[i].explode.equals("Y")) { + strOrderLineList.add(strCOrderlineID); + } + } } catch (ServletException ex) { myError = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); @@ -232,7 +248,7 @@ myError = new OBError(); myError.setType("Success"); myError.setTitle(Utility.messageBD(this, "Success", vars.getLanguage())); - myError.setMessage(Utility.messageBD(this, "RecordsCopied", vars.getLanguage()) + i); + myError.setMessage(Utility.messageBD(this, "RecordsCopied", vars.getLanguage()) + lineCount); } catch (Exception e) { try { releaseRollbackConnection(conn); @@ -242,6 +258,28 @@ log4j.warn("Rollback in transaction"); myError = Utility.translateError(this, vars, vars.getLanguage(), "ProcessRunError"); } + try { + for (String strOrderLine : strOrderLineList) { + OBContext.setAdminMode(true); + org.openbravo.model.ad.ui.Process process = OBDal.getInstance().get( + org.openbravo.model.ad.ui.Process.class, "DFC78024B1F54CBB95DC73425BA6687F"); + + final ProcessInstance pInstance = CallProcess.getInstance().call(process, strOrderLine, + null); + + if (pInstance.getResult() == 0) { + // error processing + OBError myMessage = Utility.getProcessInstanceMessage(this, vars, + PInstanceProcessData.select(new DalConnectionProvider(), pInstance.getId())); + throw new OBException(myMessage.getMessage()); + } + } + } catch (ServletException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + OBContext.restorePreviousMode(); + } return myError; } diff -r 31caeb8872f0 -r bca4e0f2c265 src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder_data.xsql --- a/src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder_data.xsql Thu Jun 19 09:04:41 2014 +0200 +++ b/src/org/openbravo/erpCommon/ad_actionButton/CopyFromPOOrder_data.xsql Thu Jun 19 11:53:52 2014 +0530 @@ -12,7 +12,7 @@ * 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-2012 Openbravo SLU + * All portions are Copyright (C) 2001-2014 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -30,7 +30,7 @@ '' as stdprecision, '' as priceprecision, '' as enforcepricelimit, '' as pricelist, '' as pricelimit, '' as validfrom, '' AS DESCRIPTION, '' AS PRICESTD, '' AS M_OFFER_ID, '' as orderline, O.DATEPROMISED AS DATEPROMISED, O.DATEORDERED AS DATEORDERED, O.ISSOTRX AS ISSOTRX, '' AS M_ATTRIBUTESETINSTANCE_ID, '' as USER1_ID, '' as USER2_ID, - '' as C_COSTCENTER_ID, '' as A_ASSET_ID + '' as C_COSTCENTER_ID, '' as A_ASSET_ID, '' AS EXPLODE, '' AS BOM_PARENT_ID FROM C_ORDER O LEFT JOIN C_ORDERLINE OL ON O.C_ORDER_ID = OL.C_ORDER_ID WHERE O.C_ORDER_ID = ? GROUP BY O.C_BPARTNER_ID, O.C_BPARTNER_LOCATION_ID, O.M_WAREHOUSE_ID, O.C_CURRENCY_ID, O.C_PROJECT_ID, @@ -50,7 +50,7 @@ COALESCE(OL.USER1_ID, O.USER1_ID) AS USER1_ID, COALESCE(OL.USER2_ID, O.USER2_ID) AS USER2_ID, COALESCE(OL.C_COSTCENTER_ID, O.C_COSTCENTER_ID) AS C_COSTCENTER_ID, - COALESCE(OL.A_ASSET_ID, O.A_ASSET_ID) AS A_ASSET_ID + COALESCE(OL.A_ASSET_ID, O.A_ASSET_ID) AS A_ASSET_ID, OL.EXPLODE, OL.BOM_PARENT_ID FROM C_ORDERLINE OL, C_ORDER O WHERE OL.C_ORDER_ID = ? AND OL.C_ORDER_ID = O.C_ORDER_ID ------------------------------------------------------------------------------ HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions Find What Matters Most in Your Big Data with HPCC Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. Leverages Graph Analysis for Fast Processing & Easy Data Exploration http://p.sf.net/sfu/hpccsystems _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
