88 lines
3.3 KiB
Python
88 lines
3.3 KiB
Python
from odoo import Command
|
|
from odoo.addons.l10n_account_edi_ubl_cii_tests.tests.common import TestUBLCommon
|
|
from odoo.tests import tagged
|
|
from odoo.tools import misc
|
|
|
|
|
|
@tagged('post_install_l10n', 'post_install', '-at_install')
|
|
class TestUBLRS(TestUBLCommon):
|
|
|
|
@classmethod
|
|
def setUpClass(cls, chart_template_ref="rs"):
|
|
super().setUpClass(chart_template_ref=chart_template_ref)
|
|
cls.company_data['company'].write({
|
|
'country_id': cls.env.ref('base.rs').id,
|
|
'currency_id': cls.env.ref('base.RSD').id,
|
|
'name': 'Test RS Company',
|
|
'city': 'Niš',
|
|
'zip': '12000',
|
|
'vat': 'RS101134702',
|
|
'phone': '+381 23 456 78 91',
|
|
'street': 'Nikole Pašića 30a',
|
|
'invoice_is_ubl_cii': True,
|
|
})
|
|
cls.company_data['company'].partner_id.l10n_rs_edi_registration_number = '87654321'
|
|
|
|
cls.env['res.partner.bank'].create({
|
|
'acc_type': 'iban',
|
|
'partner_id': cls.company_data['company'].partner_id.id,
|
|
'acc_number': 'RS1234123456123456123456',
|
|
})
|
|
|
|
cls.partner_a = cls.env['res.partner'].create({
|
|
'country_id': cls.env.ref('base.rs').id,
|
|
'name': 'Serbian Customer',
|
|
'city': 'Belgrade',
|
|
'street': 'Balkanska ulica, 21',
|
|
'zip': '101801',
|
|
'phone': '+381 98 765 43 21',
|
|
'vat': 'RS111032440',
|
|
'bank_ids': [Command.create({'acc_number': 'RS1234567891234567892345'})],
|
|
'l10n_rs_edi_registration_number': '12345678',
|
|
})
|
|
|
|
def create_invoice(self, move_type, **invoice_kwargs):
|
|
return self._generate_move(
|
|
self.env.company.partner_id,
|
|
self.partner_a,
|
|
send=False,
|
|
move_type=move_type,
|
|
currency_id=self.env.company.currency_id.id,
|
|
invoice_line_ids=[
|
|
{
|
|
'product_id': self.product_a.id,
|
|
'price_unit': 500.0,
|
|
'tax_ids': [Command.set(self.company_data['default_tax_sale'].ids)],
|
|
},
|
|
{
|
|
'product_id': self.product_b.id,
|
|
'price_unit': 1000.0,
|
|
'tax_ids': [Command.set(self.company_data['default_tax_sale'].ids)],
|
|
},
|
|
],
|
|
**invoice_kwargs,
|
|
)
|
|
|
|
def _read_xml_test_file(self, file_name):
|
|
with misc.file_open(f'{self.test_module}/tests/test_files/{file_name}.xml', 'rb') as file:
|
|
xml_file = file.read()
|
|
return xml_file
|
|
|
|
def test_export_invoice(self):
|
|
invoice = self.create_invoice("out_invoice")
|
|
invoice_xml, _ = self.env['account.edi.xml.ubl.rs']._export_invoice(invoice)
|
|
expected_xml = self._read_xml_test_file('export_invoice')
|
|
self.assertXmlTreeEqual(
|
|
self.get_xml_tree_from_string(invoice_xml),
|
|
self.get_xml_tree_from_string(expected_xml)
|
|
)
|
|
|
|
def test_export_credit_note(self):
|
|
refund = self.create_invoice("out_refund")
|
|
refund_xml, _ = self.env['account.edi.xml.ubl.rs']._export_invoice(refund)
|
|
expected_xml = self._read_xml_test_file('export_credit_note')
|
|
self.assertXmlTreeEqual(
|
|
self.get_xml_tree_from_string(refund_xml),
|
|
self.get_xml_tree_from_string(expected_xml)
|
|
)
|