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

103 lines
3.6 KiB
Python

from datetime import datetime
from pytz import timezone
from odoo.fields import Command
from odoo.tests import tagged
from odoo.addons.account_edi.tests.common import AccountEdiTestCommon
class TestEGEdiCommon(AccountEdiTestCommon):
@classmethod
@AccountEdiTestCommon.setup_edi_format('l10n_eg_edi_eta.edi_eg_eta')
@AccountEdiTestCommon.setup_country('eg')
def setUpClass(cls):
super().setUpClass()
cls.frozen_today = datetime(year=2022, month=3, day=15, hour=0, minute=0, second=0, tzinfo=timezone('utc'))
cls.currency_aed_id = cls.setup_other_currency('AED', rates=[('2022-03-15', 0.198117095128)])
# Allow to see the full result of AssertionError.
cls.maxDiff = None
cls.company_data['company'].write({
'l10n_eg_client_identifier': 'ahuh1pojnbakKK',
'l10n_eg_client_secret': '1ashiqwhejmasn197',
'vat': '123-456-789',
})
# ==== Business ====
cls.partner_a.write({
'vat': 'BE0477472701',
'country_id': cls.env.ref('base.eg').id,
'city': 'Iswan',
'state_id': cls.env.ref('base.state_eg_c').id,
'l10n_eg_building_no': '12',
'street': '12th dec. street',
'is_company': True,
})
cls.partner_b.write({
'vat': 'ESF35999705',
'country_id': cls.env.ref('base.us').id,
'city': 'New York City',
'state_id': cls.env.ref('base.state_us_27').id,
'l10n_eg_building_no': '12',
'street': '5th avenue street',
'is_company': True,
})
cls.partner_c = cls.env['res.partner'].create({
'name': 'عميل 1',
'vat': '123-456-789',
'country_id': cls.env.ref('base.eg').id,
'city': 'Iswan',
'state_id': cls.env.ref('base.state_eg_c').id,
'l10n_eg_building_no': '12',
'street': '12th dec. street',
'is_company': True,
})
cls.product_a.write({'barcode': '1KGS1TEST', })
cls.product_b.write({
'barcode': 'EG-EGS-TEST',
'uom_id': cls.env.ref('uom.product_uom_cm').id,
})
cls.company_branch = cls.env['res.partner'].create({
'name': 'branch partner',
'vat': '456-789-123',
'country_id': cls.env.ref('base.eg').id,
'city': 'Iswan',
'state_id': cls.env.ref('base.state_eg_c').id,
'l10n_eg_building_no': '10',
'street': '12th dec. street',
'is_company': True,
})
cls.company_data['default_journal_sale'].write({
'l10n_eg_branch_id': cls.company_branch.id,
'l10n_eg_branch_identifier': '0',
'l10n_eg_activity_type_id': cls.env.ref('l10n_eg_edi_eta.l10n_eg_activity_type_8121').id,
})
@classmethod
def _get_tax_by_xml_id(cls, trailing_xml_id):
return cls.env.ref(f'account.{cls.env.company.id}_account_tax_template_{trailing_xml_id}')
@classmethod
def create_invoice(cls, **kwargs):
invoice = (
cls.env['account.move']
.with_context(edi_test_mode=True)
.create({
'move_type': 'out_invoice',
'partner_id': cls.partner_a.id,
'invoice_date': '2022-03-15',
'date': '2022-03-15',
**kwargs,
'invoice_line_ids': [Command.create({**line_vals, }) for line_vals in kwargs.get('invoice_line_ids', [])]
})
)
# this fixes rounding issues in cache
cls.env.invalidate_all()
return invoice