Merge lp:~openerp-dev/openobject-addons/7.0-opw-600767-han into lp:openobject-addons/7.0

Proposed by Hardik Ansodariya (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/7.0-opw-600767-han
Merge into: lp:openobject-addons/7.0
Diff against target: 24 lines (+9/-2)
1 file modified
account_anglo_saxon/invoice.py (+9/-2)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/7.0-opw-600767-han
Reviewer Review Type Date Requested Status
Naresh(OpenERP) Pending
Review via email: mp+200490@code.launchpad.net

Description of the change

Hello,

Fixed the issue of price difference calculation is incorrect when validating supplier invoice.

Steps to reproduce:

create and validate purchase order for part with cost $13
receive part into inventory from incoming shipment
Debit Inventory Value: $13
Credit Goods Received: $13

New average part price (standard_price) = $8
create supplier invoice from incoming shipment
part cost = $14
validate supplier invoice

RESULT:
Credit Accounts Payable: $14
Debit Price Difference:$6
Debit Goods Received:$8

EXPECTED
Credit Accounts Payable: $14
Debit Price Difference:$1
Debit Goods Received:$13

To post a comment you must log in.

Unmerged revisions

9732. By Hardik Ansodariya (OpenERP)

[FIXED] anglo_saxon: stock anglo - wrong calculation of price difference(Maintenance case:600767)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'account_anglo_saxon/invoice.py'
2--- account_anglo_saxon/invoice.py 2013-01-25 06:32:13 +0000
3+++ account_anglo_saxon/invoice.py 2014-01-06 05:20:14 +0000
4@@ -115,11 +115,18 @@
5 diff_res = []
6 # calculate and write down the possible price difference between invoice price and product price
7 for line in res:
8- if a == line['account_id'] and i_line.product_id.id == line['product_id']:
9+ if a == line['account_id'] and i_line.product_id.id == line['product_id'] and acc:
10 uom = i_line.product_id.uos_id or i_line.product_id.uom_id
11 standard_price = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, i_line.product_id.standard_price, i_line.uos_id.id)
12+ price_diff = i_line.price_unit - standard_price
13+ purchase_id = self.pool.get('purchase.order').search(cr, uid, [('invoice_ids.id', '=', invoice_id)], context=context)
14+ if purchase_id:
15+ purchase = self.pool.get('purchase.order').browse(cr, uid, purchase_id[0], context=context)
16+ for purchase_line in purchase.order_line:
17+ if i_line.id == [linee.id for linee in purchase_line.invoice_lines][0]:
18+ standard_price = purchase_line.price_unit
19+ price_diff = i_line.price_unit - standard_price
20 if standard_price != i_line.price_unit and line['price_unit'] == i_line.price_unit and acc:
21- price_diff = i_line.price_unit - standard_price
22 line.update({'price':standard_price * line['quantity']})
23 diff_res.append({
24 'type':'src',