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
