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

Reply via email to