forked from Mapan/odoo17e
45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
from odoo import models, fields
|
|
|
|
|
|
class AccountMove(models.Model):
|
|
_name = 'account.move'
|
|
_inherit = ['account.avatax.unique.code', 'account.move']
|
|
|
|
avatax_tax_date = fields.Date(
|
|
string="Avatax Date",
|
|
help="Avatax will use this date to calculate the tax on this invoice. "
|
|
"If not specified it will use the Invoice Date.",
|
|
)
|
|
|
|
def _post(self, soft=True):
|
|
res = super()._post(soft=soft)
|
|
self.filtered(
|
|
lambda move: move.is_avatax and move.move_type in ('out_invoice', 'out_refund') and not move._is_downpayment()
|
|
)._commit_avatax_taxes()
|
|
return res
|
|
|
|
def _get_avatax_dates(self):
|
|
external_tax_date = self._get_date_for_external_taxes()
|
|
if self.reversed_entry_id:
|
|
reversed_override_date = self.reversed_entry_id.avatax_tax_date or self.reversed_entry_id._get_date_for_external_taxes()
|
|
return external_tax_date, reversed_override_date
|
|
return external_tax_date, self.avatax_tax_date
|
|
|
|
def _get_avatax_document_type(self):
|
|
return {
|
|
'out_invoice': 'SalesInvoice',
|
|
'out_refund': 'ReturnInvoice',
|
|
'in_invoice': 'PurchaseInvoice',
|
|
'in_refund': 'ReturnInvoice',
|
|
'entry': 'Any',
|
|
}[self.move_type]
|
|
|
|
def _get_avatax_description(self):
|
|
return 'Journal Entry'
|
|
|
|
def _perform_address_validation(self):
|
|
# Payments inherit account.move and will end up with a fiscal position.
|
|
# Even if an auto-applied Avatax fiscal position is set don't validate the address.
|
|
moves = self.filtered(lambda m: m.move_type in ('out_invoice', 'out_refund'))
|
|
return super(AccountMove, moves)._perform_address_validation() and not moves.payment_id
|