diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py index 8a583b79383..02b046edfcf 100644 --- a/addons/account/wizard/account_invoice_refund.py +++ b/addons/account/wizard/account_invoice_refund.py @@ -165,7 +165,7 @@ class account_invoice_refund(osv.osv_memory): to_reconcile_ids = {} for line in movelines: if line.account_id.id == inv.account_id.id: - to_reconcile_ids[line.account_id.id] = [line.id] + to_reconcile_ids.setdefault(line.account_id.id, []).append(line.id) if line.reconcile_id: line.reconcile_id.unlink() inv_obj.signal_invoice_open(cr, uid, [refund.id]) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 6c090e3cf5d..6d9c37cf043 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -133,10 +133,7 @@ class purchase_order(osv.osv): def _invoiced(self, cursor, user, ids, name, arg, context=None): res = {} for purchase in self.browse(cursor, user, ids, context=context): - invoiced = False - if purchase.invoiced_rate == 100.00: - invoiced = True - res[purchase.id] = invoiced + res[purchase.id] = all(line.invoiced for line in purchase.order_line) return res def _get_journal(self, cr, uid, context=None): @@ -547,7 +544,7 @@ class purchase_order(osv.osv): inv_line_id = inv_line_obj.create(cr, uid, inv_line_data, context=context) inv_lines.append(inv_line_id) - po_line.write({'invoiced': True, 'invoice_lines': [(4, inv_line_id)]}, context=context) + po_line.write({'invoice_lines': [(4, inv_line_id)]}, context=context) # get invoice data and create invoice inv_data = { @@ -1295,9 +1292,15 @@ class account_invoice(osv.Model): else: user_id = uid po_ids = purchase_order_obj.search(cr, user_id, [('invoice_ids', 'in', ids)], context=context) - for po_id in po_ids: - purchase_order_obj.message_post(cr, user_id, po_id, body=_("Invoice received"), context=context) - workflow.trg_write(uid, 'purchase.order', po_id, cr) + 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 = [] + for po_line in order.order_line: + if any(line.invoice_id.state not in ['draft', 'cancel'] for line in po_line.invoice_lines): + invoiced.append(po_line.id) + if invoiced: + self.pool['purchase.order.line'].write(cr, uid, invoiced, {'invoiced': True}) + workflow.trg_write(uid, 'purchase.order', order.id, cr) return res def confirm_paid(self, cr, uid, ids, context=None): diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index 7671c4b3d86..2d5dea89d35 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -110,7 +110,6 @@ class stock_picking(osv.osv): invoice_line_obj = self.pool.get('account.invoice.line') purchase_line_obj = self.pool.get('purchase.order.line') purchase_line_obj.write(cursor, user, [move_line.purchase_line_id.id], { - 'invoiced': True, 'invoice_lines': [(4, invoice_line_id)], }) return super(stock_picking, self)._invoice_line_hook(cursor, user, move_line, invoice_line_id) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 382de7e0059..471f39fdd80 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -631,6 +631,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }); } return $.when(); + }).fail(function() { + self.save_list.pop(); + return $.when(); }); } return iterate(); diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index dea09b75651..5509459830d 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -160,7 +160,7 @@ padding: 0px; background: white; } -.openerp .oe_kanban_view .oe_kanban_column, .openerp .oe_kanban_view .oe_kanban_column_cards { +.openerp .oe_kanban_view .oe_kanban_column { height: 100%; } .openerp .oe_kanban_view .oe_kanban_aggregates { diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 77533c1182e..7c9e8719629 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -179,7 +179,7 @@ padding: 0px background: #ffffff - .oe_kanban_column, .oe_kanban_column_cards + .oe_kanban_column height: 100% .oe_kanban_aggregates padding: 0