details:   https://code.openbravo.com/erp/devel/pi/rev/309ac3557a9f
changeset: 30537:309ac3557a9f
user:      Alvaro Ferraz <alvaro.ferraz <at> openbravo.com>
date:      Mon Oct 24 19:56:29 2016 +0200
summary:   Related to issue 34192: Code review improvements

Round order quantity to order uom standard precision.

diffstat:

 src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java |  29 
+++++----
 1 files changed, 16 insertions(+), 13 deletions(-)

diffs (51 lines):

diff -r c70a9fe71bff -r 309ac3557a9f 
src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java
--- a/src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java  Wed Oct 
12 16:10:28 2016 -0400
+++ b/src/org/openbravo/erpCommon/ad_forms/MaterialReceiptPending.java  Mon Oct 
24 19:56:29 2016 +0200
@@ -394,31 +394,34 @@
             if (new BigDecimal(dataLine[0].qtyordered).compareTo(new 
BigDecimal(strQtyordered)) == 0) {
               qtyorder = dataLine[0].quantityorder;
             } else {
+              UOM uom = OBDal.getInstance().get(UOM.class, dataLine[0].cUomId);
+              UOM orderUom = OBDal.getInstance().get(ProductUOM.class, 
dataLine[0].mProductUomId)
+                  .getUOM();
+              int stdPrecision = orderUom.getStandardPrecision().intValue();
+
               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()));
+              conversion.add(Restrictions.eq(UOMConversion.PROPERTY_UOM, uom));
+              conversion.add(Restrictions.eq(UOMConversion.PROPERTY_TOUOM, 
orderUom));
+              List<UOMConversion> conversionList = conversion.list();
+              Boolean useDivideRateBy = false;
 
-              Boolean useDivideRateBy = false;
               // Inverting search of UOM conversion if conversion list is empty
-              if (conversion.list().size() == 0) {
+              if (conversionList.isEmpty()) {
                 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)));
+                conversion.add(Restrictions.eq(UOMConversion.PROPERTY_UOM, 
orderUom));
+                conversion.add(Restrictions.eq(UOMConversion.PROPERTY_TOUOM, 
uom));
+                conversionList = conversion.list();
                 useDivideRateBy = true;
               }
 
-              for (UOMConversion conv : conversion.list()) {
+              for (UOMConversion conv : conversionList) {
                 if (!useDivideRateBy) {
                   qtyorder = new 
BigDecimal(strQtyordered).multiply(conv.getMultipleRateBy())
-                      .toString();
+                      .setScale(stdPrecision, 
BigDecimal.ROUND_HALF_UP).toString();
                 } else {
                   qtyorder = new 
BigDecimal(strQtyordered).multiply(conv.getDivideRateBy())
-                      .toString();
+                      .setScale(stdPrecision, 
BigDecimal.ROUND_HALF_UP).toString();
                 }
               }
             }

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