details:   https://code.openbravo.com/erp/devel/pi/rev/c70a9fe71bff
changeset: 30536:c70a9fe71bff
user:      Mark <markmm82 <at> gmail.com>
date:      Wed Oct 12 16:10:28 2016 -0400
summary:   Fixes issue 34192: Qty in second UOM does match in PO and goods 
receipt lines

Only recalculate the second UOM if user changes the quantity of the first UOM 
when process the purchase order.

diffstat:

 src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java |  52 
+++++----
 1 files changed, 28 insertions(+), 24 deletions(-)

diffs (67 lines):

diff -r 5d06e1c0ac69 -r c70a9fe71bff 
src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java
--- a/src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java  Tue Oct 
18 16:54:14 2016 +0530
+++ b/src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java  Wed Oct 
12 16:10:28 2016 -0400
@@ -389,35 +389,39 @@
           String qtyorder = null;
           MaterialReceiptPendingLinesData[] dataLine = 
MaterialReceiptPendingLinesData.select(this,
               strOrderlineId);
+          // Recalculate quantityorder only if qtyordered has been updated
           if (dataLine[0].quantityorder != "") {
-            OBCriteria<UOMConversion> conversion = 
OBDal.getInstance().createCriteria(
-                UOMConversion.class);
-            conversion.add(Restrictions.eq(UOMConversion.PROPERTY_UOM,
-                OBDal.getInstance().get(UOM.class, dataLine[0].cUomId)));
-            conversion.add(Restrictions.eq(UOMConversion.PROPERTY_TOUOM,
-                OBDal.getInstance().get(ProductUOM.class, 
dataLine[0].mProductUomId).getUOM()));
+            if (new BigDecimal(dataLine[0].qtyordered).compareTo(new 
BigDecimal(strQtyordered)) == 0) {
+              qtyorder = dataLine[0].quantityorder;
+            } else {
+              OBCriteria<UOMConversion> conversion = 
OBDal.getInstance().createCriteria(
+                  UOMConversion.class);
+              conversion.add(Restrictions.eq(UOMConversion.PROPERTY_UOM,
+                  OBDal.getInstance().get(UOM.class, dataLine[0].cUomId)));
+              conversion.add(Restrictions.eq(UOMConversion.PROPERTY_TOUOM,
+                  OBDal.getInstance().get(ProductUOM.class, 
dataLine[0].mProductUomId).getUOM()));
 
-            Boolean useDivideRateBy = false;
-            // Inverting search of UOM conversion if conversion list is empty
-            if (conversion.list().size() == 0) {
-              conversion = 
OBDal.getInstance().createCriteria(UOMConversion.class);
-              conversion.add(Restrictions.eq(UOMConversion.PROPERTY_UOM,
-                  OBDal.getInstance().get(ProductUOM.class, 
dataLine[0].mProductUomId).getUOM()));
-              conversion.add(Restrictions.eq(UOMConversion.PROPERTY_TOUOM,
-                  OBDal.getInstance().get(UOM.class, dataLine[0].cUomId)));
-              useDivideRateBy = true;
-            }
+              Boolean useDivideRateBy = false;
+              // Inverting search of UOM conversion if conversion list is empty
+              if (conversion.list().size() == 0) {
+                conversion = 
OBDal.getInstance().createCriteria(UOMConversion.class);
+                conversion.add(Restrictions.eq(UOMConversion.PROPERTY_UOM,
+                    OBDal.getInstance().get(ProductUOM.class, 
dataLine[0].mProductUomId).getUOM()));
+                conversion.add(Restrictions.eq(UOMConversion.PROPERTY_TOUOM, 
OBDal.getInstance()
+                    .get(UOM.class, dataLine[0].cUomId)));
+                useDivideRateBy = true;
+              }
 
-            for (UOMConversion conv : conversion.list()) {
-              if (!useDivideRateBy) {
-                qtyorder = new 
BigDecimal(strQtyordered).multiply(conv.getMultipleRateBy())
-                    .toString();
-              } else {
-                qtyorder = new 
BigDecimal(strQtyordered).multiply(conv.getDivideRateBy())
-                    .toString();
+              for (UOMConversion conv : conversion.list()) {
+                if (!useDivideRateBy) {
+                  qtyorder = new 
BigDecimal(strQtyordered).multiply(conv.getMultipleRateBy())
+                      .toString();
+                } else {
+                  qtyorder = new 
BigDecimal(strQtyordered).multiply(conv.getDivideRateBy())
+                      .toString();
+                }
               }
             }
-
           }
           try {
             MaterialReceiptPendingLinesData.insert(conn, this, 
strSequenceLine, vars.getClient(),

------------------------------------------------------------------------------
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