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