Odoo18-Base/addons/l10n_fr_account/tests/test_fec_export.py

87 lines
5.8 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
from odoo import Command
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.tests.common import tagged
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestFECExport(AccountTestInvoicingCommon):
def test_fec_export(self):
self.init_invoice("out_invoice", self.partner_a, "2019-01-01", amounts=[1000, 2000], post=True)
self.init_invoice("out_invoice", self.partner_a, "2020-01-01", amounts=[1000, 2000], post=True)
# Create a new FEC export
fec_export = self.env['l10n_fr.fec.export.wizard'].create({
'date_from': '2020-01-01',
'date_to': '2020-12-31',
})
result = fec_export.generate_fec()
self.assertEqual(
result['file_content'].decode(),
'JournalCode|JournalLib|EcritureNum|EcritureDate|CompteNum|CompteLib|CompAuxNum|CompAuxLib|PieceRef|PieceDate|EcritureLib|Debit|Credit|EcritureLet|DateLet|ValidDate|Montantdevise|Idevise\r\n'
'OUV|Balance initiale|OUVERTURE/2020|20200101|999999|Undistributed Profits/Losses|||-|20200101|/|0,00| 000000000003000,00|||20200101||\r\n'
f'OUV|Balance initiale|OUVERTURE/2020|20200101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20200101|/| 000000000003000,00|0,00|||20200101||\r\n'
'INV|Customer Invoices|INV/2020/00001|20200101|400000|Product Sales|||-|20200101|test line|0,00| 000000000001000,00|||20200101|-000000000001000,00|USD\r\n'
'INV|Customer Invoices|INV/2020/00001|20200101|400000|Product Sales|||-|20200101|test line|0,00| 000000000002000,00|||20200101|-000000000002000,00|USD\r\n'
f'INV|Customer Invoices|INV/2020/00001|20200101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20200101|INV/2020/00001| 000000000003000,00|0,00|||20200101| 000000000003000,00|USD'
)
def test_fec_sub_companies(self):
"""When exporting FEC, data from child companies should be included"""
main_company = self.env.company
branch_a, branch_b = self.env['res.company'].create([
{
'name': 'Branch A',
'country_id': main_company.country_id.id,
'parent_id': main_company.id,
}, {
'name': 'Branch B',
'country_id': main_company.country_id.id,
'parent_id': main_company.id
}
])
branch_a1 = self.env['res.company'].create({
'name': 'Branch A1',
'country_id': main_company.country_id.id,
'parent_id': branch_a.id,
})
self.cr.precommit.run() # load the COA
all_companies = (main_company + branch_a + branch_a1 + branch_b)
for i, company in enumerate(all_companies, start=1):
self.init_invoice('out_invoice', invoice_date="2021-01-01", post=True, amounts=[i * 100], company=company)
fec_export = self.env['l10n_fr.fec.export.wizard'].create({
'date_from': '2021-01-01',
'date_to': '2021-12-31',
})
result = fec_export.generate_fec()
self.assertEqual(
result['file_content'].decode(),
"JournalCode|JournalLib|EcritureNum|EcritureDate|CompteNum|CompteLib|CompAuxNum|CompAuxLib|PieceRef|PieceDate|EcritureLib|Debit|Credit|EcritureLet|DateLet|ValidDate|Montantdevise|Idevise\r\n"
"INV|Customer Invoices|INV/2021/00001|20210101|400000|Product Sales|||-|20210101|test line|0,00| 000000000000100,00|||20210101|-000000000000100,00|USD\r\n"
f"INV|Customer Invoices|INV/2021/00001|20210101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20210101|INV/2021/00001| 000000000000100,00|0,00|||20210101| 000000000000100,00|USD\r\n"
"INV|Customer Invoices|INV/2021/00002|20210101|400000|Product Sales|||-|20210101|test line|0,00| 000000000000200,00|||20210101|-000000000000200,00|USD\r\n"
f"INV|Customer Invoices|INV/2021/00002|20210101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20210101|INV/2021/00002| 000000000000200,00|0,00|||20210101| 000000000000200,00|USD\r\n"
"INV|Customer Invoices|INV/2021/00003|20210101|400000|Product Sales|||-|20210101|test line|0,00| 000000000000300,00|||20210101|-000000000000300,00|USD\r\n"
f"INV|Customer Invoices|INV/2021/00003|20210101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20210101|INV/2021/00003| 000000000000300,00|0,00|||20210101| 000000000000300,00|USD\r\n"
"INV|Customer Invoices|INV/2021/00004|20210101|400000|Product Sales|||-|20210101|test line|0,00| 000000000000400,00|||20210101|-000000000000400,00|USD\r\n"
f"INV|Customer Invoices|INV/2021/00004|20210101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20210101|INV/2021/00004| 000000000000400,00|0,00|||20210101| 000000000000400,00|USD"
)
# Select only parent company
self.env.user.write({
'company_ids': [Command.set(main_company.ids)],
'company_id': main_company.id,
})
fec_export = self.env['l10n_fr.fec.export.wizard'].create({
'date_from': '2021-01-01',
'date_to': '2021-12-31',
})
result = fec_export.generate_fec()
self.assertEqual(
result['file_content'].decode(),
"JournalCode|JournalLib|EcritureNum|EcritureDate|CompteNum|CompteLib|CompAuxNum|CompAuxLib|PieceRef|PieceDate|EcritureLib|Debit|Credit|EcritureLet|DateLet|ValidDate|Montantdevise|Idevise\r\n"
"INV|Customer Invoices|INV/2021/00001|20210101|400000|Product Sales|||-|20210101|test line|0,00| 000000000000100,00|||20210101|-000000000000100,00|USD\r\n"
f"INV|Customer Invoices|INV/2021/00001|20210101|121000|Account Receivable|{self.partner_a.id}|partner_a|-|20210101|INV/2021/00001| 000000000000100,00|0,00|||20210101| 000000000000100,00|USD"
)