59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
|
# 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)
|