You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.4 KiB
29 lines
1.4 KiB
from odoo import api, fields, models, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class AccountInvoice(models.Model):
|
|
_inherit = "account.invoice"
|
|
|
|
@api.multi
|
|
def action_invoice_open(self):
|
|
if self.user_has_groups(
|
|
'beesdoo_account.'
|
|
'group_validate_invoice_negative_total_amount'):
|
|
return self.action_invoice_negative_amount_open()
|
|
return super(AccountInvoice, self).action_invoice_open()
|
|
|
|
@api.multi
|
|
def action_invoice_negative_amount_open(self):
|
|
"""Identical to action_invoice_open without UserError on an invoice with a negative total amount"""
|
|
to_open_invoices = self.filtered(lambda inv: inv.state != 'open')
|
|
if to_open_invoices.filtered(lambda inv: not inv.partner_id):
|
|
raise UserError(_("The field Vendor is required, please complete it to validate the Vendor Bill."))
|
|
if to_open_invoices.filtered(lambda inv: inv.state != 'draft'):
|
|
raise UserError(_("Invoice must be in draft state in order to validate it."))
|
|
if to_open_invoices.filtered(lambda inv: not inv.account_id):
|
|
raise UserError(
|
|
_('No account was found to create the invoice, be sure you have installed a chart of account.'))
|
|
to_open_invoices.action_date_assign()
|
|
to_open_invoices.action_move_create()
|
|
return to_open_invoices.invoice_validate()
|