Merge lp:~openerp-dev/openobject-addons/7.0-fix_purchase_invoiced-dle into lp:openobject-addons/7.0

Proposed by Denis Ledoux (OpenERP)
Status: Work in progress
Proposed branch: lp:~openerp-dev/openobject-addons/7.0-fix_purchase_invoiced-dle
Merge into: lp:openobject-addons/7.0
Diff against target: 54 lines (+10/-8)
2 files modified
purchase/purchase.py (+10/-7)
purchase/stock.py (+0/-1)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/7.0-fix_purchase_invoiced-dle
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+215820@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

9981. By Denis Ledoux (OpenERP)

[FIX] purchase: invoiced based on invoiced bool of purchase order line, instead of rate

invoiced bool of purchase order line is set to true on invoice validation, not on invoice creation

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'purchase/purchase.py'
2--- purchase/purchase.py 2014-03-18 15:14:56 +0000
3+++ purchase/purchase.py 2014-04-15 08:01:30 +0000
4@@ -134,10 +134,7 @@
5 def _invoiced(self, cursor, user, ids, name, arg, context=None):
6 res = {}
7 for purchase in self.browse(cursor, user, ids, context=context):
8- invoiced = False
9- if purchase.invoiced_rate == 100.00:
10- invoiced = True
11- res[purchase.id] = invoiced
12+ res[purchase.id] = all(line.invoiced for line in purchase.order_line)
13 return res
14
15 def _get_journal(self, cr, uid, context=None):
16@@ -544,7 +541,7 @@
17 inv_line_id = inv_line_obj.create(cr, uid, inv_line_data, context=context)
18 inv_lines.append(inv_line_id)
19
20- po_line.write({'invoiced': True, 'invoice_lines': [(4, inv_line_id)]}, context=context)
21+ po_line.write({'invoice_lines': [(4, inv_line_id)]}, context=context)
22
23 # get invoice data and create invoice
24 inv_data = {
25@@ -1290,9 +1287,15 @@
26 user_id = uid
27 po_ids = purchase_order_obj.search(cr, user_id, [('invoice_ids', 'in', ids)], context=context)
28 wf_service = netsvc.LocalService("workflow")
29- for po_id in po_ids:
30+ for order in purchase_order_obj.browse(cr, uid, po_ids, context=context):
31 # Signal purchase order workflow that an invoice has been validated.
32- wf_service.trg_write(uid, 'purchase.order', po_id, cr)
33+ invoiced = []
34+ for po_line in order.order_line:
35+ if any(line.invoice_id.state not in ['draft', 'cancel'] for line in po_line.invoice_lines):
36+ invoiced.append(po_line.id)
37+ if invoiced:
38+ self.pool['purchase.order.line'].write(cr, uid, invoiced, {'invoiced': True})
39+ wf_service.trg_write(uid, 'purchase.order', order.id, cr)
40 return res
41
42 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
43
44=== modified file 'purchase/stock.py'
45--- purchase/stock.py 2013-12-10 16:56:27 +0000
46+++ purchase/stock.py 2014-04-15 08:01:30 +0000
47@@ -111,7 +111,6 @@
48 invoice_line_obj = self.pool.get('account.invoice.line')
49 purchase_line_obj = self.pool.get('purchase.order.line')
50 purchase_line_obj.write(cursor, user, [move_line.purchase_line_id.id], {
51- 'invoiced': True,
52 'invoice_lines': [(4, invoice_line_id)],
53 })
54 return super(stock_picking, self)._invoice_line_hook(cursor, user, move_line, invoice_line_id)