37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import api, fields, models
|
||
|
|
||
|
|
||
|
class MakeInvoice(models.TransientModel):
|
||
|
_name = 'mrp.repair.make_invoice'
|
||
|
_description = 'Make Invoice'
|
||
|
|
||
|
group = fields.Boolean('Group by partner invoice address')
|
||
|
|
||
|
@api.multi
|
||
|
def make_invoices(self):
|
||
|
if not self._context.get('active_ids'):
|
||
|
return {'type': 'ir.actions.act_window_close'}
|
||
|
new_invoice = {}
|
||
|
for wizard in self:
|
||
|
repairs = self.env['mrp.repair'].browse(self._context['active_ids'])
|
||
|
new_invoice = repairs.action_invoice_create(group=wizard.group)
|
||
|
|
||
|
# We have to udpate the state of the given repairs, otherwise they remain 'to be invoiced'.
|
||
|
# Note that this will trigger another call to the method 'action_invoice_create',
|
||
|
# but that second call will not do anything, since the repairs are already invoiced.
|
||
|
repairs.action_repair_invoice_create()
|
||
|
return {
|
||
|
'domain': [('id', 'in', new_invoice.values())],
|
||
|
'name': 'Invoices',
|
||
|
'view_type': 'form',
|
||
|
'view_mode': 'tree,form',
|
||
|
'res_model': 'account.invoice',
|
||
|
'view_id': False,
|
||
|
'views': [(self.env.ref('account.invoice_tree').id, 'tree'), (self.env.ref('account.invoice_form').id, 'form')],
|
||
|
'context': "{'type':'out_invoice'}",
|
||
|
'type': 'ir.actions.act_window'
|
||
|
}
|