Odoo18-Base/addons/l10n_it_edi/tests/test_edi_pa.py
2025-01-06 10:57:38 +07:00

66 lines
2.7 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import datetime
from odoo.addons.l10n_it_edi.tests.common import TestItEdi
from odoo.tests.common import tagged
from odoo import Command
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestItEdiPa(TestItEdi):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.Move = cls.env['account.move'].with_company(cls.company)
journal_code = cls.company_data_2['default_journal_sale'].code
cls.split_payment_tax = cls.env['account.tax'].with_company(cls.company).search([('name', '=', '22% SP')])
cls.split_payment_line_data = {
'name': 'standard_line',
'quantity': 1,
'price_unit': 800.40,
'tax_ids': [Command.set(cls.split_payment_tax.ids)],
}
cls.pa_partner_invoice_data = {
'move_type': 'out_invoice',
'invoice_date': datetime.date(2022, 3, 24),
'invoice_date_due': datetime.date(2022, 3, 24),
'partner_id': cls.italian_partner_b.id,
'partner_bank_id': cls.test_bank.id,
'invoice_line_ids': [
Command.create(cls.split_payment_line_data),
],
'l10n_it_origin_document_type': 'purchase_order',
'l10n_it_origin_document_date': datetime.date(2022, 3, 23),
'l10n_it_origin_document_name': f"{journal_code}/2022/0001",
'l10n_it_cup': '0123456789',
'l10n_it_cig': '0987654321'
}
cls.pa_partner_invoice = cls.Move.create(cls.pa_partner_invoice_data)
cls.pa_partner_invoice_2 = cls.Move.create({
**cls.pa_partner_invoice_data,
'l10n_it_origin_document_type': False,
})
cls.pa_partner_invoice._post()
def test_send_pa_partner(self):
""" ImportoTotaleDocumento must include VAT
ImportoPagamento must be without VAT
EsigibilitaIva of the Split payment tax must be 'S'
The orgin_document fields must appear in the XML.
Use reference validator: https://fex-app.com/servizi/inizia
"""
self._assert_export_invoice(self.pa_partner_invoice, 'split_payment.xml')
credit_note_wizard = self.env['account.move.reversal'] \
.with_context(active_model='account.move', active_ids=self.pa_partner_invoice.ids) \
.create({
'date': datetime.date(2022, 3, 25),
'journal_id': self.pa_partner_invoice.journal_id.id,
})
action = credit_note_wizard.reverse_moves()
credit_note = self.env['account.move'].browse(action['res_id'])
credit_note.action_post()
self._assert_export_invoice(credit_note, 'split_payment_cn.xml')