103 lines
3.6 KiB
Python
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
|