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.
 
 
 
 
 

38 lines
1.5 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()