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

Reply via email to