← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 688493] Re: Stock wizard_partial_picking Average price computation doesnt work as expectet

 

** Also affects: openobject-addons/5.0
   Importance: Undecided
       Status: New

** Also affects: openobject-addons/trunk
   Importance: Medium
     Assignee: OpenERP R&D Addons Team 2 (openerp-dev-addons2)
       Status: Fix Committed

** Changed in: openobject-addons/5.0
       Status: New => Confirmed

** Changed in: openobject-addons/5.0
   Importance: Undecided => Medium

** Changed in: openobject-addons/5.0
     Assignee: (unassigned) => JMA(Open ERP) (jma-openerp)

** Changed in: openobject-addons/5.0
    Milestone: None => 5.0.16

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/688493

Title:
  Stock wizard_partial_picking Average price computation doesn't work as expected

Status in OpenObject Addons Modules:
  Fix Committed
Status in OpenObject Addons 5.0 series:
  In Progress
Status in OpenObject Addons trunk series:
  Fix Committed

Bug description:
  In the wizard_partial_picking.py in line 146 the new standard_price of a product (cost_method = average) is calculated:
new_std_price = ((product.standard_price * product.qty_available) + (new_price * qty))/(product.qty_available + qty)

I've a product with a standard_price of 1500 and an available qty of 2, now i purchase 2 additional product with a unit price of 1000:

if ive one move_line with qty:2 price 1000 the calculation works fine:

((1500 * 2) + (1000 * 2)) / (2 + 2) = 1250 

but if i split the the line in 2 lines each with a qty of 1 and a price of 1000 the product_qty_available will not be taken in count wich causes this problem:

((1500 * 2) + (1000 * 1)) / (2 + 1) = 1333,33 
after calculating the new cost_price for the first line the new price is written in the product but the qty_available doesnt change
as the workflow action that ends the move is called later in the method.
((1333,33 * 2) + (1000 * 1)) / (2 + 1) = 1222,22 
This average price is wrong, the right one would take the additional qty of the first line in count :
((1333,33 * 3) + (1000 * 1)) / (2 + 1) = 1250





References