details: https://code.openbravo.com/erp/devel/pi/rev/fc4fc420b639
changeset: 15245:fc4fc420b639
user: Jon AlegrÃa <jon.alegria <at> openbravo.com>
date: Mon Jan 30 11:51:35 2012 +0100
summary: Fixes issue 0019433: Net Unit Price wrong calculated with discount
diffstat:
src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java | 30 ++++++++++-----
1 files changed, 20 insertions(+), 10 deletions(-)
diffs (67 lines):
diff -r 578ff14a16ee -r fc4fc420b639
src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java Mon Jan 30
07:43:43 2012 +0000
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java Mon Jan 30
11:51:35 2012 +0100
@@ -114,13 +114,15 @@
stockSecurity = new BigDecimal(strStockSecurity);
qtyOrdered = (strQtyOrdered.equals("") ? ZERO : new
BigDecimal(strQtyOrdered));
- priceActual = (strPriceActual.equals("") ? ZERO : (new
BigDecimal(strPriceActual)));
+ priceActual = (strPriceActual.equals("") ? ZERO : (new
BigDecimal(strPriceActual))).setScale(
+ PricePrecision, BigDecimal.ROUND_HALF_UP);
discount = (strDiscount.equals("") ? ZERO : new BigDecimal(strDiscount));
priceLimit = (strPriceLimit.equals("") ? ZERO : (new
BigDecimal(strPriceLimit))).setScale(
PricePrecision, BigDecimal.ROUND_HALF_UP);
priceList = (strPriceList.equals("") ? ZERO : (new
BigDecimal(strPriceList))).setScale(
PricePrecision, BigDecimal.ROUND_HALF_UP);
- priceStd = (strPriceStd.equals("") ? ZERO : (new BigDecimal(strPriceStd)));
+ priceStd = (strPriceStd.equals("") ? ZERO : (new
BigDecimal(strPriceStd))).setScale(
+ PricePrecision, BigDecimal.ROUND_HALF_UP);
LineNetAmt = (strLineNetAmt.equals("") ? ZERO : (new
BigDecimal(strLineNetAmt))).setScale(
PricePrecision, BigDecimal.ROUND_HALF_UP);
/*
@@ -150,17 +152,21 @@
resultado.append("new Array(\"inppricestd\", " + priceStd.toString() +
"),");
} else {
// priceStd needs to be changed?
- BigDecimal expectedPriceActual = new
BigDecimal(SLOrderAmtData.getOffersPrice(this,
+ BigDecimal expectedPriceActual = new
BigDecimal(SLOrderProductData.getOffersPrice(this,
dataOrder[0].dateordered, dataOrder[0].cBpartnerId, strProduct,
priceStd.toString(),
- strQty, dataOrder[0].mPricelistId));
+ strQty, dataOrder[0].mPricelistId, dataOrder[0].id));
+ if (expectedPriceActual.scale() > PricePrecision)
+ expectedPriceActual = expectedPriceActual.setScale(PricePrecision,
+ BigDecimal.ROUND_HALF_UP);
// To avoid rounding issues if the expected priceActual is equals to
the current
// priceActual.
// Do not do anything.
if (!priceActual.equals(expectedPriceActual)) {
- priceStd = new BigDecimal(SLOrderAmtData.getOffersStdPrice(this,
+ priceStd = new BigDecimal(SLOrderProductData.getOffersStdPrice(this,
dataOrder[0].cBpartnerId,
expectedPriceActual.toString().replace("\"", ""),
- strProduct, dataOrder[0].dateordered, strQty,
dataOrder[0].mPricelistId));
+ strProduct, dataOrder[0].dateordered, strQty,
dataOrder[0].mPricelistId,
+ dataOrder[0].id));
}
// priceList
resultado.append("new Array(\"inppricestd\", " + priceStd.toString() +
"),");
@@ -236,11 +242,15 @@
if (discount1.compareTo(discount2) != 0) // checks if rounded
// discount has changed
{
- priceStd = priceList.subtract(priceList.multiply(discount).divide(new
BigDecimal("100"),
- 12, BigDecimal.ROUND_HALF_EVEN));
- priceActual = new BigDecimal(SLOrderAmtData.getOffersPrice(this,
+ priceStd = priceList.subtract(priceList.multiply(discount).divide(new
BigDecimal("100"),
+ 12, BigDecimal.ROUND_HALF_EVEN));
+ priceActual = new BigDecimal(SLOrderProductData.getOffersPrice(this,
dataOrder[0].dateordered, dataOrder[0].cBpartnerId, strProduct,
- priceStd.toPlainString(), strQty, dataOrder[0].mPricelistId));
+ priceStd.toPlainString(), strQty, dataOrder[0].mPricelistId,
dataOrder[0].id));
+ if (priceStd.scale() > PricePrecision)
+ priceStd = priceStd.setScale(PricePrecision,
BigDecimal.ROUND_HALF_UP);
+ if (priceActual.scale() > PricePrecision)
+ priceActual = priceActual.setScale(PricePrecision,
BigDecimal.ROUND_HALF_UP);
resultado.append("new Array(\"inppriceactual\", " +
priceActual.toString() + "),");
resultado.append("new Array(\"inppricestd\", " + priceStd.toString() +
"),");
}
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits