Odoo18-Base/addons/l10n_ph/tests/test_bir_2307_generation.py

59 lines
2.2 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import io
import xlrd
import base64
from odoo import Command
from odoo.tests import tagged
from odoo.addons.l10n_ph.tests.common import TestPhCommon
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestBIR2307Generation(TestPhCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
# 1% Withholding Tax
vat_purchase_wc640 = cls.env.ref(f'account.{cls.company_data["company"].id}_l10n_ph_tax_purchase_wc640')
cls.invoice = cls.env['account.move'].create({
'move_type': 'in_invoice',
'invoice_date': '2020-01-15',
'partner_id': cls.partner_a.id,
'invoice_line_ids': [
Command.create({
'name': 'Test line',
'quantity': 1.0,
'price_unit': 100,
'tax_ids': vat_purchase_wc640,
})
]
})
cls.invoice.action_post()
def test_bir_2307_company(self):
""" Test the report """
wizard_action = self.invoice.action_open_l10n_ph_2307_wizard()
context = wizard_action['context']
wizard = self.env['l10n_ph_2307.wizard'].with_context(context).create({})
wizard.action_generate()
bir_2307 = base64.b64decode(wizard.xls_file)
# 2: Build the expected values
expected_values = {
# Header
0: ['Reporting_Month', 'Vendor_TIN', 'branchCode', 'companyName', 'surName', 'firstName', 'middleName', 'address', 'nature', 'ATC', 'income_payment', 'ewt_rate', 'tax_amount'],
# Row
1: ['01/15/2020', '789456123', '789', 'Test Partner', '', '', '', '9 Super Street, Super City, Philippines', 'Test line', 'WC640', 100.0, 1.0, 1.0],
}
report_file = io.BytesIO(bir_2307)
xls = xlrd.open_workbook(file_contents=report_file.read())
sheet = xls.sheet_by_index(0)
for row, values in expected_values.items():
row_values = sheet.row_values(row)
for row_value, expected_value in zip(row_values, values):
self.assertEqual(row_value, expected_value)