details: https://code.openbravo.com/erp/devel/pi/rev/4aefc5f4d063
changeset: 13609:4aefc5f4d063
user: Jon AlegrÃa <jon.alegria <at> openbravo.com>
date: Mon Aug 29 10:04:30 2011 +0200
summary: Fixes issue 0018346: Is not possible to apply Discount=10% at sales
order line
as discount field is recalculated
diffstat:
src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java | 30 +++------
src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt_data.xsql | 24 ++++++++
2 files changed, 34 insertions(+), 20 deletions(-)
diffs (99 lines):
diff -r 882b86f4810f -r 4aefc5f4d063
src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java Fri Aug 26
19:40:40 2011 +0200
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java Mon Aug 29
10:04:30 2011 +0200
@@ -114,15 +114,13 @@
stockSecurity = new BigDecimal(strStockSecurity);
qtyOrdered = (strQtyOrdered.equals("") ? ZERO : new
BigDecimal(strQtyOrdered));
- priceActual = (strPriceActual.equals("") ? ZERO : (new
BigDecimal(strPriceActual))).setScale(
- PricePrecision, BigDecimal.ROUND_HALF_UP);
+ priceActual = (strPriceActual.equals("") ? ZERO : (new
BigDecimal(strPriceActual)));
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))).setScale(
- PricePrecision, BigDecimal.ROUND_HALF_UP);
+ priceStd = (strPriceStd.equals("") ? ZERO : (new BigDecimal(strPriceStd)));
LineNetAmt = (strLineNetAmt.equals("") ? ZERO : (new
BigDecimal(strLineNetAmt))).setScale(
PricePrecision, BigDecimal.ROUND_HALF_UP);
/*
@@ -152,21 +150,17 @@
resultado.append("new Array(\"inppricestd\", " + priceStd.toString() +
"),");
} else {
// priceStd needs to be changed?
- BigDecimal expectedPriceActual = new
BigDecimal(SLOrderProductData.getOffersPrice(this,
+ BigDecimal expectedPriceActual = new
BigDecimal(SLOrderAmtData.getOffersPrice(this,
dataOrder[0].dateordered, dataOrder[0].cBpartnerId, strProduct,
priceStd.toString(),
- strQty, dataOrder[0].mPricelistId, dataOrder[0].id));
- if (expectedPriceActual.scale() > PricePrecision)
- expectedPriceActual = expectedPriceActual.setScale(PricePrecision,
- BigDecimal.ROUND_HALF_UP);
+ strQty, dataOrder[0].mPricelistId));
// 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(SLOrderProductData.getOffersStdPrice(this,
+ priceStd = new BigDecimal(SLOrderAmtData.getOffersStdPrice(this,
dataOrder[0].cBpartnerId,
expectedPriceActual.toString().replace("\"", ""),
- strProduct, dataOrder[0].dateordered, strQty,
dataOrder[0].mPricelistId,
- dataOrder[0].id));
+ strProduct, dataOrder[0].dateordered, strQty,
dataOrder[0].mPricelistId));
}
// priceList
resultado.append("new Array(\"inppricestd\", " + priceStd.toString() +
"),");
@@ -242,15 +236,11 @@
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(SLOrderProductData.getOffersPrice(this,
+ priceStd = priceList.subtract(priceList.multiply(discount).divide(new
BigDecimal("100"),
+ 12, BigDecimal.ROUND_HALF_EVEN));
+ priceActual = new BigDecimal(SLOrderAmtData.getOffersPrice(this,
dataOrder[0].dateordered, dataOrder[0].cBpartnerId, strProduct,
- 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);
+ priceStd.toPlainString(), strQty, dataOrder[0].mPricelistId));
resultado.append("new Array(\"inppriceactual\", " +
priceActual.toString() + "),");
resultado.append("new Array(\"inppricestd\", " + priceStd.toString() +
"),");
}
diff -r 882b86f4810f -r 4aefc5f4d063
src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt_data.xsql
--- a/src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt_data.xsql Fri Aug
26 19:40:40 2011 +0200
+++ b/src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt_data.xsql Mon Aug
29 10:04:30 2011 +0200
@@ -52,4 +52,28 @@
<Parameter name="mPricelistVersionId"/>
<Parameter name="mProductId"/>
</SqlMethod>
+ <SqlMethod name="getOffersPrice" type="preparedStatement" return="String"
default="0">
+ <SqlMethodComment></SqlMethodComment>
+ <Sql>
+ SELECT M_GET_OFFERS_PRICE(TO_DATE(?),?,?,TO_NUMBER(?), TO_NUMBER(?), ?)
AS TOTAL FROM DUAL
+ </Sql>
+ <Parameter name="dateordered"/>
+ <Parameter name="cBpartnerId"/>
+ <Parameter name="mProductId"/>
+ <Parameter name="pricestd"/>
+ <Parameter name="qty"/>
+ <Parameter name="pricelist"/>
+ </SqlMethod>
+ <SqlMethod name="getOffersStdPrice" type="preparedStatement" return="String"
default="0">
+ <SqlMethodComment></SqlMethodComment>
+ <Sql>
+ SELECT M_GET_OFFERS_STD_PRICE(?,TO_NUMBER(?),?,TO_DATE(?),
TO_NUMBER(?), ?) as TOTAL FROM DUAL
+ </Sql>
+ <Parameter name="cBpartnerId"/>
+ <Parameter name="pricestd"/>
+ <Parameter name="mProductId"/>
+ <Parameter name="dateordered"/>
+ <Parameter name="qty"/>
+ <Parameter name="priclist"/>
+ </SqlMethod>
</SqlClass>
------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management
Up to 160% more powerful than alternatives and 25% more efficient.
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits