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

Reply via email to