summaryrefslogtreecommitdiff
path: root/addons/purchase/purchase.py
diff options
context:
space:
mode:
authorDenis Ledoux <dle@odoo.com>2015-04-27 12:19:43 +0200
committerDenis Ledoux <dle@odoo.com>2015-04-27 12:19:43 +0200
commitd6ae7fb7dbd2ae4eec32e4cd5bc3649feef0784e (patch)
tree59ce4e3e7cc67695b8a84c030bf428076d7c809e /addons/purchase/purchase.py
parent9323f2b4c75d61a4169efceabac08e09f03d6062 (diff)
parent3e7d3c7ee4f8838e0a9c347eca016e746175a634 (diff)
[MERGE] forward port of branch 7.0 up to 3e7d3c7
Diffstat (limited to 'addons/purchase/purchase.py')
-rw-r--r--addons/purchase/purchase.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index bd273d2779d..a5908cb78ec 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -1333,10 +1333,16 @@ class account_invoice(osv.Model):
for order in purchase_order_obj.browse(cr, uid, po_ids, context=context):
purchase_order_obj.message_post(cr, user_id, order.id, body=_("Invoice received"), context=context)
invoiced = []
+ shipped = True
+ # for invoice method manual or order, don't care about shipping state
+ # for invoices based on incoming shippment, beware of partial deliveries
+ if (order.invoice_method == 'picking' and
+ not all(picking.invoice_state in ['invoiced'] for picking in order.picking_ids)):
+ shipped = False
for po_line in order.order_line:
- if any(line.invoice_id.state not in ['draft', 'cancel'] for line in po_line.invoice_lines):
+ if all(line.invoice_id.state not in ['draft', 'cancel'] for line in po_line.invoice_lines):
invoiced.append(po_line.id)
- if invoiced:
+ if invoiced and shipped:
self.pool['purchase.order.line'].write(cr, uid, invoiced, {'invoiced': True})
workflow.trg_write(uid, 'purchase.order', order.id, cr)
return res