Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0032364Openbravo ERP09. Financial managementpublic2016-02-26 13:572016-03-17 10:56
ngarcia 
AtulOpenbravo 
immediateminoralways
closedfixed 
5
 
3.0PR16Q2 
aferraz
Core
Production - Confirmed Stable
2014-09-02
3.0PR14Q4
https://code.openbravo.com/erp/devel/pi/rev/69108bf7103b [^]
No
0032364: NullPointerException when posting a Physical Inventory with a line without an associated transaction (not stocked product)
NullPointerException when posting a Physical Inventory with a line without an associated transaction (not stocked product)
In an instance without the following issue solved:

https://issues.openbravo.com/view.php?id=31835 [^]

As group admin role:
   Create a new product and set is as Stocked = 'Y'
   Create a goods receipt to increase its stock
   Create a goods shipment to leave its stock to 0
   Set it as Stocked = 'N' (it will not possible after the fix of 31835)
   Create a Physical inventory for the same warehouse the stock was received in
   Launch the Create Inventory Count with the option of Inventory Quantity empty
   Check the product is not inserted
   Launch the Create Inventory Count with the option of Inventory Quantity = 0
   Check the product is inserted and it shouldn't
   Process the inventory
   Try to post it and check the following error message is shown:
      Process failed during execution
   The logs shows:
      WARN org.openbravo.erpCommon.ad_forms.AcctServer - Accounting process failed. RecordID: 0E718DFD7B384111B2D2112722FCFF8B - TableId: 321
java.lang.NullPointerException
    at org.openbravo.erpCommon.ad_forms.DocInventory.createFact(DocInventory.java:183)
    at org.openbravo.erpCommon.ad_forms.AcctServer.postLogic(AcctServer.java:1111)
    at org.openbravo.erpCommon.ad_forms.AcctServer.post(AcctServer.java:804)
    at org.openbravo.erpCommon.ad_forms.AcctServer.post(AcctServer.java:719)
    at org.openbravo.erpCommon.ad_actionButton.Posted.processButton(Posted.java:273)
    at org.openbravo.erpCommon.ad_actionButton.Posted.doPost(Posted.java:104)
The problem is in the following code:

      if ("NC".equals(line.transaction.getCostingStatus())) {
        setStatus(STATUS_NotCalculatedCost);
      }

but it will also fail in the following:

      if (line.transaction.getTransactionCost() != null
          && line.transaction.getTransactionCost().compareTo(ZERO) == 0) {
        countInvLinesWithTrnCostZero++;
      }

as line.transaction is null

Apart from that, the Create Inventory Count process should avoid inserting not stocked products (check the solution of the 30697 issue)
No tags attached.
related to defect 0030697 closed AtulOpenbravo Create Inventory Count List inserts inactive products 
related to defect 00318353.0PR16Q2 closed aferraz Not possible to change the product definition to Stocked under some circumstancies 
depends on backport 00323723.0PR16Q1 closed AtulOpenbravo NullPointerException when posting a Physical Inventory with a line without an associated transaction (not stocked product) 
depends on backport 00323733.0PR15Q4.5 closed AtulOpenbravo NullPointerException when posting a Physical Inventory with a line without an associated transaction (not stocked product) 
Issue History
2016-02-26 13:57ngarciaNew Issue
2016-02-26 13:57ngarciaAssigned To => Triage Finance
2016-02-26 13:57ngarciaModules => Core
2016-02-26 13:57ngarciaResolution time => 1459461600
2016-02-26 13:57ngarciaTriggers an Emergency Pack => No
2016-02-26 13:57ngarciaIssue Monitored: networkb
2016-02-26 13:57ngarciaRelationship addedrelated to 0030697
2016-02-26 13:59ngarciaRelationship addedrelated to 0031385
2016-02-26 14:00ngarciaProposed Solution updated
2016-02-26 14:00ngarciaRelationship deletedrelated to 0031385
2016-02-26 14:00ngarciaRelationship addedrelated to 0031835
2016-02-26 14:15vmromanosNote Added: 0084570
2016-02-26 14:17vmromanosNote Added: 0084572
2016-02-26 14:17vmromanosSeveritymajor => minor
2016-02-29 08:58AtulOpenbravoAssigned ToTriage Finance => AtulOpenbravo
2016-02-29 13:18psanjuanSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=11271#r11271
2016-02-29 14:01AtulOpenbravoStatusnew => scheduled
2016-02-29 14:22AtulOpenbravoNote Added: 0084593
2016-02-29 14:42AtulOpenbravoRegression date => 2014-09-02
2016-02-29 14:42AtulOpenbravoRegression introduced in release => 3.0PR14Q4
2016-02-29 14:42AtulOpenbravoRegression introduced by commit => https://code.openbravo.com/erp/devel/pi/rev/69108bf7103b [^]
2016-02-29 15:43psanjuanNote Added: 0084600
2016-02-29 15:46psanjuanNote Edited: 0084600bug_revision_view_page.php?bugnote_id=0084600#r11275
2016-02-29 15:46psanjuanNote Edited: 0084600bug_revision_view_page.php?bugnote_id=0084600#r11276
2016-02-29 15:46psanjuanNote Edited: 0084600bug_revision_view_page.php?bugnote_id=0084600#r11277
2016-03-01 12:16psanjuanNote Edited: 0084593bug_revision_view_page.php?bugnote_id=0084593#r11285
2016-03-01 12:23psanjuanNote Edited: 0084593bug_revision_view_page.php?bugnote_id=0084593#r11286
2016-03-01 12:29psanjuanNote Edited: 0084593bug_revision_view_page.php?bugnote_id=0084593#r11287
2016-03-01 12:29psanjuanNote Added: 0084616
2016-03-01 12:34psanjuanNote Edited: 0084593bug_revision_view_page.php?bugnote_id=0084593#r11288
2016-03-01 13:53aferrazRegression level => Production - Confirmed Stable
2016-03-01 18:29hgbotCheckin
2016-03-01 18:29hgbotNote Added: 0084640
2016-03-01 18:29hgbotStatusscheduled => resolved
2016-03-01 18:29hgbotResolutionopen => fixed
2016-03-01 18:29hgbotFixed in SCM revision => http://code.openbravo.com/erp/devel/pi/rev/e86c0df009cf91238c0eec3f6d44c8a5c194629d [^]
2016-03-01 18:29hgbotCheckin
2016-03-01 18:29hgbotNote Added: 0084641
2016-03-01 18:30aferrazReview Assigned To => aferraz
2016-03-01 18:30aferrazNote Added: 0084642
2016-03-01 18:30aferrazStatusresolved => closed
2016-03-01 18:30aferrazFixed in Version => 3.0PR16Q2
2016-03-17 10:56hudsonbotCheckin
2016-03-17 10:56hudsonbotNote Added: 0085175
2016-03-17 10:56hudsonbotCheckin
2016-03-17 10:56hudsonbotNote Added: 0085176

Notes
(0084570)
vmromanos   
2016-02-26 14:15   
Proposed solution:

 for (int i = 0; i < p_lines.length; i++) {
      DocLine_Material line = (DocLine_Material) p_lines[i];
      if (line.transaction != null && "NC".equals(line.transaction.getCostingStatus())) {
        setStatus(STATUS_NotCalculatedCost);
      }

      if (line.transaction == null
          || (line.transaction != null && line.transaction.getTransactionCost() != null && line.transaction
              .getTransactionCost().compareTo(ZERO) == 0)) {
        countInvLinesWithTrnCostZero++;
      }
    }


M_INVENTORY_LISTCREATE -> Avoid to insert non-stocked products
(0084572)
vmromanos   
2016-02-26 14:17   
Decreased to minor as this is not a common scenario, but a consequence of another issue
(0084593)
AtulOpenbravo   
2016-02-29 14:22   
(edited on: 2016-03-01 12:34)
Test Plan I
- In an instance prior to fix for issue 31835.
- Login as Group Admin role:
- Create a new product and set is as Stocked = 'Y'
- Create a goods receipt to increase its stock
- Create a goods shipment to leave its stock to 0
- Set it as Stocked = 'N'.
- Create a Physical inventory for the same warehouse the stock was received in.
- Launch the Create Inventory Count with the option of Inventory Quantity empty.
- Check the product is NOT inserted.
- Remove all lines
- Launch the Create Inventory Count with the option of Inventory Quantity = 0.
- Check that product is NOT inserted.
- Remove all lines
- Launch the Create Inventory Count for rest of the options and check that the product is NOT inserted.
- Change the Quantity Count for any of the products included in any physical inventory. Process and Post it, once the cost of the product for which quantity count has changed has been calculated. Check that it is possible to process and post physical inventory without any problem.Book

Test Plan I
- In an instance prior to fix for issue 31835.
- Login as Group Admin role:
- Create a new product and set is as Stocked = 'Y'
- Create a goods receipt to increase its stock
- Create a goods shipment to leave its stock to 0
- Create a Physical inventory for the same warehouse the stock was received in.
- Launch the Create Inventory Count with the option of Inventory Quantity empty.
- Check the product is inserted.
- Remove all lines
- Launch the Create Inventory Count with the option of Inventory Quantity = 0.
- Check that product is inserted.
- Remove all lines
- Launch the Create Inventory Count with the option < 0, and check that the product is not inserted.
- Remove all lines
- Launch the Create Inventory Count with the option > 0, and check that the product is not inserted.
- Remove all lines
- Launch the Create Inventory Count with the option not 0, and check that the product is not inserted.
- Change the Quantity Count for any of the products included in any physical inventory. Process it and Post it, once the cost of the product for which quantity count has changed has been calculated. Check that it is possible to process and post physical inventory without any problem.

Verified also issue related 30697 for products set as "Inactive".

(0084600)
psanjuan   
2016-02-29 15:43   
(edited on: 2016-02-29 15:46)
Issue verified if improving repro steps as described below:

As group admin role:
   Create a new product and set is as Stocked = 'Y'.
   Select a Purchase Price List.
   Create a goods receipt to increase its stock
   Create a goods shipment to leave its stock to 0
   Set it as Stocked = 'N'
   Create a Physical inventory for the same warehouse the stock was received in
   Launch the Create Inventory Count with the option of Inventory Quantity empty
   Check that the product is inserted, while it should not.
   Launch the Create Inventory Count with the option of Inventory Quantity = 0
   Check that the product is inserted and it shouldn't
   Remove all lines but the one related to the product.
   Change Quantity Count to 1, therefore physical inventory is suitable to be post to the ledger.
   Process the inventory
   Try to post it and check the following error message is shown:
      Process failed during execution
   The logs shows:
      WARN org.openbravo.erpCommon.ad_forms.AcctServer - Accounting process failed. RecordID: 0E718DFD7B384111B2D2112722FCFF8B - TableId: 321
java.lang.NullPointerException
    at org.openbravo.erpCommon.ad_forms.DocInventory.createFact(DocInventory.java:183)
    at org.openbravo.erpCommon.ad_forms.AcctServer.postLogic(AcctServer.java:1111)
    at org.openbravo.erpCommon.ad_forms.AcctServer.post(AcctServer.java:804)
    at org.openbravo.erpCommon.ad_forms.AcctServer.post(AcctServer.java:720)
    at org.openbravo.erpCommon.ad_actionButton.Posted.processButton(Posted.java:273)
    at org.openbravo.erpCommon.ad_actionButton.Posted.doPost(Posted.java:104)

(0084616)
psanjuan   
2016-03-01 12:29   
Test Plan above verified.

Issue can be code reviewed and closed.
(0084640)
hgbot   
2016-03-01 18:29   
Repository: erp/devel/pi
Changeset: e86c0df009cf91238c0eec3f6d44c8a5c194629d
Author: Atul Gaware <atul.gaware <at> openbravo.com>
Date: Mon Feb 29 17:00:12 2016 +0530
URL: http://code.openbravo.com/erp/devel/pi/rev/e86c0df009cf91238c0eec3f6d44c8a5c194629d [^]

Fixes Issue 32364:NullPointerException when posting a Physical Inventory
with a line without an associated transaction (not stocked product)

- Avoid insertion of zero quantity products in inventory line having
stocked flag as No.
- Code improvement to handle line with null transaction.

---
M src-db/database/model/functions/M_INVENTORY_LISTCREATE.xml
M src/org/openbravo/erpCommon/ad_forms/DocInventory.java
---
(0084641)
hgbot   
2016-03-01 18:29   
Repository: erp/devel/pi
Changeset: 88faf8e87290b8b87f07cdb382e06930e30321fd
Author: Alvaro Ferraz <alvaro.ferraz <at> openbravo.com>
Date: Tue Mar 01 18:02:57 2016 +0100
URL: http://code.openbravo.com/erp/devel/pi/rev/88faf8e87290b8b87f07cdb382e06930e30321fd [^]

Related to issue 32364: Code review improvements

Call line.getProductCosts only when line.transaction != null in DocInventory.java.

---
M src/org/openbravo/erpCommon/ad_forms/DocInventory.java
---
(0084642)
aferraz   
2016-03-01 18:30   
Code review OK
(0085175)
hudsonbot   
2016-03-17 10:56   
A changeset related to this issue has been promoted main and to the
Central Repository, after passing a series of tests.

Promotion changeset: https://code.openbravo.com/erp/devel/main/rev/b22fb0500156 [^]
Maturity status: Test
(0085176)
hudsonbot   
2016-03-17 10:56   
A changeset related to this issue has been promoted main and to the
Central Repository, after passing a series of tests.

Promotion changeset: https://code.openbravo.com/erp/devel/main/rev/b22fb0500156 [^]
Maturity status: Test