forked from Mapan/odoo17e
76 lines
3.5 KiB
Python
76 lines
3.5 KiB
Python
from odoo.tests.common import tagged
|
|
from .common import TestAccountAvataxCommon
|
|
|
|
|
|
@tagged("-at_install", "post_install")
|
|
class TestAccountAvalaraRefunds(TestAccountAvataxCommon):
|
|
"""https://developer.avalara.com/certification/avatax/refunds-credit-memos-badge/"""
|
|
|
|
@classmethod
|
|
def setUpClass(cls, chart_template_ref=None):
|
|
res = super().setUpClass(chart_template_ref)
|
|
cls.product = cls.env["product.product"].create({
|
|
'name': "Product",
|
|
'list_price': 15.00,
|
|
'standard_price': 15.00,
|
|
'supplier_taxes_id': None,
|
|
'avatax_category_id': cls.env.ref('account_avatax.DC010000').id,
|
|
})
|
|
|
|
with cls._capture_request(return_value={'lines': [], 'summary': []}) as capture:
|
|
cls.invoice = cls.env['account.move'].create({
|
|
'move_type': 'out_invoice',
|
|
'partner_id': cls.partner.id,
|
|
'fiscal_position_id': cls.fp_avatax.id,
|
|
'invoice_date': '2020-01-01',
|
|
'invoice_line_ids': [
|
|
(0, 0, {
|
|
'product_id': cls.product.id,
|
|
'price_unit': cls.product.list_price,
|
|
})
|
|
]
|
|
})
|
|
cls.invoice.button_external_tax_calculation()
|
|
cls.invoice_captured_arguments = capture.val['json']['createTransactionModel']
|
|
with cls._capture_request(return_value={'lines': [], 'summary': []}) as capture:
|
|
cls.invoice.action_post()
|
|
|
|
with cls._capture_request(return_value={'lines': [], 'summary': []}) as capture:
|
|
move_reversal = cls.env['account.move.reversal'].with_context(
|
|
active_model="account.move",
|
|
active_ids=cls.invoice.ids
|
|
).create({
|
|
'date': '2020-02-01',
|
|
'reason': 'no reason',
|
|
'journal_id': cls.invoice.journal_id.id,
|
|
})
|
|
reversal = move_reversal.refund_moves()
|
|
reverse_move = cls.env['account.move'].browse(reversal['res_id'])
|
|
reverse_move.button_external_tax_calculation()
|
|
cls.refund_captured_arguments = capture.val['json']['createTransactionModel']
|
|
|
|
with cls._capture_request(return_value={'lines': [], 'summary': []}) as capture:
|
|
reverse_move.action_post()
|
|
cls.refund_commit_captured_arguments = capture.val['json']['createTransactionModel']
|
|
return res
|
|
|
|
def test_post_tax_credit_memento(self):
|
|
"""Ensure that returns are committed/posted for reporting appropriately."""
|
|
self.assertEqual(self.refund_captured_arguments['type'], 'ReturnInvoice')
|
|
self.assertTrue(self.refund_commit_captured_arguments['commit'])
|
|
|
|
def test_original_invoice_date(self):
|
|
"""Send original invoice date as tax calculation date for return orders/credit memos."""
|
|
self.assertTrue('taxOverride' not in self.invoice_captured_arguments)
|
|
self.assertEqual(self.invoice_captured_arguments['date'], '2020-01-01')
|
|
|
|
self.assertEqual(
|
|
self.refund_captured_arguments['taxOverride']['taxDate'], '2020-01-01',
|
|
'Refund date should be overridden to match the tax calculation date of the original invoice.'
|
|
)
|
|
|
|
def test_current_transaction_date(self):
|
|
"""Send current transaction date as document date for return orders/credit memos"""
|
|
self.assertEqual(self.invoice_captured_arguments['date'], '2020-01-01')
|
|
self.assertEqual(self.refund_captured_arguments['date'], '2020-02-01')
|