diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 4a436db16d1..dea08e5c375 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -108,7 +108,7 @@ class account_invoice(osv.osv): 'date_invoice': fields.date('Date Invoiced', required=True, states={'open':[('readonly',True)],'close':[('readonly',True)]}), 'date_due': fields.date('Due Date', states={'open':[('readonly',True)],'close':[('readonly',True)]}), - 'partner_id': fields.many2one('res.partner', 'Partner', change_default=True, readonly=True, required=True, states={'draft':[('readonly',False)]}, relate=True), + 'partner_id': fields.many2one('res.partner', 'Partner', change_default=True, readonly=True, required=True, states={'draft':[('readonly',False)]}, relate=False), 'partner_bank_id': fields.many2one('res.partner.bank', 'Partner bank'), 'address_contact_id': fields.many2one('res.partner.address', 'Contact Address', readonly=True, states={'draft':[('readonly',False)]}), 'address_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft':[('readonly',False)]}), diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 052a5648865..caae77b9d9d 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -250,6 +250,12 @@ class sale_order(osv.osv): if created_lines: invoices.setdefault(o.partner_id.id, []).append((o, created_lines)) + if not invoices: + for o in self.browse(cr, uid, ids): + for i in o.invoice_ids: + if i.state == 'draft': + return i.id + for val in invoices.values(): if grouped: res = make_invoice(val[0][0], reduce(lambda x,y: x + y, [l for o,l in val], [])) diff --git a/addons/sale/wizard/make_invoice.py b/addons/sale/wizard/make_invoice.py index 270235194e4..f55cf142db1 100644 --- a/addons/sale/wizard/make_invoice.py +++ b/addons/sale/wizard/make_invoice.py @@ -51,10 +51,7 @@ ack_fields = {} def _makeInvoices(self, cr, uid, data, context): order_obj = pooler.get_pool(cr.dbname).get('sale.order') - invoices = {} - for o in order_obj.browse(cr, uid, data['ids'], context): - for i in o.invoice_ids: - invoices[i.id] = False + newinv = [] order_obj.action_invoice_create(cr, uid, data['ids'], data['form']['grouped']) for id in data['ids']: @@ -63,12 +60,7 @@ def _makeInvoices(self, cr, uid, data, context): for o in order_obj.browse(cr, uid, data['ids'], context): for i in o.invoice_ids: - invoices.setdefault(i.id, True) - - newinv = [] - for key,val in invoices.items(): - # if val: - newinv.append(key) + newinv.append(i.id) return { 'domain': "[('id','in', ["+','.join(map(str,newinv))+"])]", 'name': 'Invoices',