details:   https://code.openbravo.com/erp/devel/pi/rev/1d388346f060
changeset: 25227:1d388346f060
user:      Unai Martirena <unai.martirena <at> openbravo.com>
date:      Thu Nov 13 12:46:25 2014 +0100
summary:   Related to Issue 28115: Fix recal of trxPrice in M_Costing

details:   https://code.openbravo.com/erp/devel/pi/rev/f007a86ec722
changeset: 25228:f007a86ec722
user:      Unai Martirena <unai.martirena <at> openbravo.com>
date:      Thu Nov 13 12:48:51 2014 +0100
summary:   Related to Issue 28115: Set isPermanent true when Costing is 
permanent

diffstat:

 src/org/openbravo/costing/AverageCostAdjustment.java |  30 +++++++++++--------
 1 files changed, 17 insertions(+), 13 deletions(-)

diffs (98 lines):

diff -r 539fa37a226a -r f007a86ec722 
src/org/openbravo/costing/AverageCostAdjustment.java
--- a/src/org/openbravo/costing/AverageCostAdjustment.java      Wed Nov 12 
13:14:57 2014 +0100
+++ b/src/org/openbravo/costing/AverageCostAdjustment.java      Thu Nov 13 
12:48:51 2014 +0100
@@ -129,7 +129,7 @@
     log.debug("Starting average cost {}", cost == null ? "not cost" : 
cost.toPlainString());
     if (cost != null && (AverageAlgorithm.modifiesAverage(trxType) || 
!baseCAL.isBackdatedTrx())) {
       BigDecimal trxCost = CostAdjustmentUtils.getTrxCost(basetrx, false, 
getCostCurrency());
-      BigDecimal trxPrice = trxCost.add(adjustmentBalance).divide(
+      BigDecimal trxPrice = 
trxCost.add(adjustmentBalance.multiply(signMultiplier)).divide(
           basetrx.getMovementQuantity().abs(), costCurPrecission, 
RoundingMode.HALF_UP);
       if (checkNegativeStockCorrection && 
currentStock.compareTo(basetrx.getMovementQuantity()) < 0
           && cost.compareTo(trxPrice) != 0 && 
!baseCAL.isNegativeStockCorrection()
@@ -143,8 +143,8 @@
         adjustmentBalance = 
adjustmentBalance.add(negCorrAmt.multiply(trxSignMultiplier));
         // If there is a difference insert a cost adjustment line.
         CostAdjustmentLine newCAL = insertCostAdjustmentLine(basetrx, 
negCorrAmt, null);
-        newCAL.setNegativeStockCorrection(true);
-        newCAL.setRelatedTransactionAdjusted(true);
+        newCAL.setNegativeStockCorrection(Boolean.TRUE);
+        newCAL.setRelatedTransactionAdjusted(Boolean.TRUE);
         newCAL.setUnitCost(Boolean.FALSE);
         OBDal.getInstance().save(newCAL);
         cost = trxPrice;
@@ -173,10 +173,10 @@
         }
         newCosting.setQuantity(basetrx.getMovementQuantity());
         newCosting.setTotalMovementQuantity(currentStock);
-        newCosting.setPrice(cost);
+        newCosting.setPrice(trxPrice);
         newCosting.setCostType("AVA");
-        newCosting.setManual(false);
-        newCosting.setPermanent(true);
+        newCosting.setManual(Boolean.FALSE);
+        newCosting.setPermanent(Boolean.TRUE);
         newCosting.setProduction(trxType == TrxType.ManufacturingProduced);
         newCosting.setWarehouse((Warehouse) 
getCostDimensions().get(CostDimension.Warehouse));
         OBDal.getInstance().save(newCosting);
@@ -192,7 +192,7 @@
             curCosting.setOriginalCost(curCosting.getCost());
           }
           curCosting.setCost(cost);
-          curCosting.setPrice(cost);
+          curCosting.setPrice(trxPrice);
           curCosting.setPermanent(Boolean.TRUE);
           OBDal.getInstance().flush();
           OBDal.getInstance().save(curCosting);
@@ -295,8 +295,8 @@
             trxAdjAmt = trxAdjAmt.add(negCorrAmt.multiply(trxSignMultiplier));
             // If there is a difference insert a cost adjustment line.
             CostAdjustmentLine newCAL = insertCostAdjustmentLine(trx, 
negCorrAmt, null);
-            newCAL.setNegativeStockCorrection(true);
-            newCAL.setRelatedTransactionAdjusted(true);
+            newCAL.setNegativeStockCorrection(Boolean.TRUE);
+            newCAL.setRelatedTransactionAdjusted(Boolean.TRUE);
             newCAL.setUnitCost(Boolean.FALSE);
             OBDal.getInstance().save(newCAL);
             cost = trxPrice;
@@ -342,7 +342,7 @@
               // If there is a difference insert a cost adjustment line.
               CostAdjustmentLine newCAL = insertCostAdjustmentLine(trx,
                   expectedCost.subtract(unitCost), null);
-              newCAL.setRelatedTransactionAdjusted(true);
+              newCAL.setRelatedTransactionAdjusted(Boolean.TRUE);
               OBDal.getInstance().save(newCAL);
               log.debug("Adjustment added. Amount {}.", 
expectedCost.subtract(unitCost)
                   .toPlainString());
@@ -354,6 +354,9 @@
               cost = 
currentValueAmt.add(adjustmentBalance).divide(currentStock, costCurPrecission,
                   RoundingMode.HALF_UP);
             }
+            BigDecimal trxPrice = 
curCosting.getPrice().multiply(trx.getMovementQuantity().abs())
+                .add(trxAdjAmt)
+                .divide(trx.getMovementQuantity().abs(), costCurPrecission, 
RoundingMode.HALF_UP);
             if (curCosting.getCost().compareTo(cost) != 0) {
               curCosting.setPermanent(Boolean.FALSE);
               OBDal.getInstance().save(curCosting);
@@ -361,8 +364,9 @@
               if (curCosting.getOriginalCost() == null) {
                 curCosting.setOriginalCost(curCosting.getCost());
               }
-              curCosting.setPrice(cost);
+              curCosting.setPrice(trxPrice);
               curCosting.setCost(cost);
+              curCosting.setPermanent(Boolean.TRUE);
               OBDal.getInstance().save(curCosting);
             }
           }
@@ -404,8 +408,8 @@
         newCosting.setTotalMovementQuantity(currentStock);
         newCosting.setPrice(cost);
         newCosting.setCostType("AVA");
-        newCosting.setManual(false);
-        newCosting.setPermanent(true);
+        newCosting.setManual(Boolean.FALSE);
+        newCosting.setPermanent(Boolean.TRUE);
         newCosting.setProduction(trxType == TrxType.ManufacturingProduced);
         newCosting.setWarehouse((Warehouse) 
getCostDimensions().get(CostDimension.Warehouse));
         OBDal.getInstance().save(newCosting);

------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to