details: https://code.openbravo.com/erp/devel/pi/rev/c6159ccd2e9c changeset: 20521:c6159ccd2e9c user: David Miguelez <david.miguelez <at> openbravo.com> date: Thu Jun 06 17:34:05 2013 +0200 summary: Fixes Issue 23911. Fixes division by zero.
details: https://code.openbravo.com/erp/devel/pi/rev/406cf618b59a changeset: 20522:406cf618b59a user: David Miguelez <david.miguelez <at> openbravo.com> date: Thu Jun 06 17:34:38 2013 +0200 summary: Fixes Issue 23620: In Costing Migration Process fixes issue with negative Inventories. diffstat: src/org/openbravo/costing/CostingMigrationProcess.java | 7 ++++- src/org/openbravo/costing/CostingRuleProcess.java | 22 ++++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diffs (49 lines): diff -r 581ac6b95048 -r 406cf618b59a src/org/openbravo/costing/CostingMigrationProcess.java --- a/src/org/openbravo/costing/CostingMigrationProcess.java Thu Jun 06 14:51:21 2013 +0200 +++ b/src/org/openbravo/costing/CostingMigrationProcess.java Thu Jun 06 17:34:38 2013 +0200 @@ -412,8 +412,11 @@ trx.setCostingStatus("CC"); OBDal.getInstance().save(trx); Currency legalEntityCur = FinancialUtils.getLegalEntityCurrency(trx.getOrganization()); - BigDecimal cost = trxCost.divide(trx.getMovementQuantity().abs(), costPrecision, - BigDecimal.ROUND_HALF_UP); + BigDecimal cost = BigDecimal.ZERO; + if (BigDecimal.ZERO.compareTo(trx.getMovementQuantity()) != 0) { + cost = trxCost.divide(trx.getMovementQuantity().abs(), costPrecision, + BigDecimal.ROUND_HALF_UP); + } if (!legalEntityCur.equals(cur)) { cost = FinancialUtils.getConvertedAmount(cost, cur, legalEntityCur, new Date(), icl.getOrganization(), FinancialUtils.PRECISION_COSTING); diff -r 581ac6b95048 -r 406cf618b59a src/org/openbravo/costing/CostingRuleProcess.java --- a/src/org/openbravo/costing/CostingRuleProcess.java Thu Jun 06 14:51:21 2013 +0200 +++ b/src/org/openbravo/costing/CostingRuleProcess.java Thu Jun 06 17:34:38 2013 +0200 @@ -309,10 +309,24 @@ Long lineNo = (maxLineNumbers.get(criId) == null ? 0L : maxLineNumbers.get(criId)) + 10L; maxLineNumbers.put(criId, lineNo); - insertInventoryLine(cri.getCloseInventory(), productId, attrSetInsId, uomId, orderUOMId, - locatorId, BigDecimal.ZERO, qty, BigDecimal.ZERO, orderQty, lineNo); - insertInventoryLine(cri.getInitInventory(), productId, attrSetInsId, uomId, orderUOMId, - locatorId, qty, BigDecimal.ZERO, orderQty, BigDecimal.ZERO, lineNo); + if (BigDecimal.ZERO.compareTo(qty) < 0) { + // Do not insert negative values in Inventory lines, instead reverse the Quantity Count + // and the Book Quantity. For example: + // Instead of CountQty=0 and BookQty=-5 insert CountQty=5 and BookQty=0 + // By doing so the difference between both quantities remains the same and no negative + // values have been inserted. + insertInventoryLine(cri.getCloseInventory(), productId, attrSetInsId, uomId, orderUOMId, + locatorId, qty == null ? null : qty.abs(), BigDecimal.ZERO, orderQty == null ? null + : orderQty.abs(), BigDecimal.ZERO, lineNo); + insertInventoryLine(cri.getInitInventory(), productId, attrSetInsId, uomId, orderUOMId, + locatorId, BigDecimal.ZERO, qty.abs(), BigDecimal.ZERO, orderQty == null ? null + : orderQty.abs(), lineNo); + } else { + insertInventoryLine(cri.getCloseInventory(), productId, attrSetInsId, uomId, orderUOMId, + locatorId, BigDecimal.ZERO, qty, BigDecimal.ZERO, orderQty, lineNo); + insertInventoryLine(cri.getInitInventory(), productId, attrSetInsId, uomId, orderUOMId, + locatorId, qty, BigDecimal.ZERO, orderQty, BigDecimal.ZERO, lineNo); + } if ((i % 100) == 0) { OBDal.getInstance().flush(); ------------------------------------------------------------------------------ How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits