Merge lp:~openerp-dev/openobject-addons/6.1-opw-579152-ado into lp:openobject-addons/6.1

Proposed by Amit Dodiya (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/6.1-opw-579152-ado
Merge into: lp:openobject-addons/6.1
Diff against target: 29 lines (+7/-2)
2 files modified
product/product.py (+4/-1)
purchase/purchase.py (+3/-1)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/6.1-opw-579152-ado
Reviewer Review Type Date Requested Status
Xavier ALT Pending
Naresh(OpenERP) Pending
Review via email: mp+131849@code.launchpad.net

Description of the change

Hello,

"[FIX] while we have box to purchase instead of pce the quantity is wrongly rounded(If you have 100 qnty = 1 box and you purchase 101 qnty so it should take 2 box instead of 1 box)"

Steps:
1.) Create a new product, stockable, MTO, Buy
2.) Define 2 units from the same category (PCE = 1, BOX = 100)
3.) Assign the 'PCE' as the 'Default Unit Of Measure' and 'BOX' as the 'Purchase Unit of Measure'
4.) Define a supplier
After above configuration try following scenario :
Create a 'Procurement request' for 149 PCE : Got a purchase.order for 1 BOX
Create a 'Procurement request' for 150 PCE : Got a purchase.order for 2 BOX

Result should like following data:
Request for 100 : Purchase for 1 BOX
Request for 101 : Purchase for 2 BOX
Request for 200 : Purchase for 2 BOX
Request for 201 : Purchase for 3 BOX

Regards,
Amit

To post a comment you must log in.

Unmerged revisions

7049. By Amit Dodiya<email address hidden>

[FIX] while we have box to purchase instead of pce the quantity is wrongly rounded(If you have 100 qnty = 1 box and you purchase 101 qnty so it should take 2 box instead of 1 box)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'product/product.py'
2--- product/product.py 2012-04-03 13:05:28 +0000
3+++ product/product.py 2012-10-29 10:25:31 +0000
4@@ -145,7 +145,10 @@
5 return qty
6 amount = qty / from_unit.factor
7 if to_unit:
8- amount = rounding(amount * to_unit.factor, to_unit.rounding)
9+ if context.get('unit'):
10+ amount = math.ceil(amount * to_unit.factor)
11+ else:
12+ amount = rounding(amount * to_unit.factor, to_unit.rounding)
13 return amount
14
15 def _compute_price(self, cr, uid, from_uom_id, price, to_uom_id=False):
16
17=== modified file 'purchase/purchase.py'
18--- purchase/purchase.py 2012-10-09 12:16:14 +0000
19+++ purchase/purchase.py 2012-10-29 10:25:31 +0000
20@@ -897,7 +897,9 @@
21 warehouse_id = warehouse_obj.search(cr, uid, [('company_id', '=', procurement.company_id.id or company.id)], context=context)
22 uom_id = procurement.product_id.uom_po_id.id
23
24- qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)
25+ if procurement.product_id.uom_po_id.rounding == 1.0:
26+ context.update(unit=True)
27+ qty = uom_obj._compute_qty_obj(cr, uid, procurement.product_uom, procurement.product_qty, procurement.product_id.uom_po_id, context=context)
28 if seller_qty:
29 qty = max(qty,seller_qty)
30