84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
import io
|
|
import unittest
|
|
|
|
try:
|
|
from openpyxl import load_workbook
|
|
except ImportError:
|
|
load_workbook = None
|
|
|
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
|
|
|
|
class TestPhCommon(AccountTestInvoicingCommon):
|
|
@classmethod
|
|
@AccountTestInvoicingCommon.setup_country('ph')
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
|
|
cls.company_data['company'].write({
|
|
'name': 'Test Company',
|
|
'street': '8 Super Street',
|
|
'city': 'Super City',
|
|
'zip': '8888',
|
|
'country_id': cls.env.ref('base.ph').id,
|
|
'vat': '123-456-789-123',
|
|
})
|
|
cls.partner_a.write({
|
|
'name': 'Test Partner',
|
|
'street': '9 Super Street',
|
|
'city': 'Super City',
|
|
'zip': '8888',
|
|
'country_id': cls.env.ref('base.ph').id,
|
|
'vat': '789-456-123-789',
|
|
})
|
|
cls.partner_b.write({
|
|
'name': 'Test Partner Company',
|
|
'street': '10 Super Street',
|
|
'city': 'Super City',
|
|
'zip': '8888',
|
|
'country_id': cls.env.ref('base.ph').id,
|
|
'is_company': True,
|
|
'vat': '789-456-123-456',
|
|
})
|
|
cls.partner_c = cls.env['res.partner'].create({
|
|
'name': 'Test Partner Company Member',
|
|
'first_name': 'John',
|
|
'middle_name': 'Doe',
|
|
'last_name': 'Smith',
|
|
'property_payment_term_id': cls.pay_terms_b.id,
|
|
'property_supplier_payment_term_id': cls.pay_terms_b.id,
|
|
'property_account_position_id': cls.fiscal_pos_a.id,
|
|
'property_account_receivable_id': cls.company_data['default_account_receivable'].copy().id,
|
|
'property_account_payable_id': cls.company_data['default_account_payable'].copy().id,
|
|
'street': '11 Super Street',
|
|
'city': 'Super City',
|
|
'zip': '8888',
|
|
'country_id': cls.env.ref('base.ph').id,
|
|
'vat': '789-456-123-123',
|
|
'company_id': False,
|
|
'parent_id': cls.partner_b.id,
|
|
})
|
|
|
|
def _test_xlsx_file(self, file_content, expected_values):
|
|
""" Takes in the binary content of a xlsx file and a dict of expected values.
|
|
It will then parse the file in order to compare the values with the expected ones.
|
|
The expected values dict format is:
|
|
'row_number': ['cell_1_val', 'cell_2_val', ...]
|
|
|
|
:param file_content: The binary content of the xlsx file
|
|
:param expected_values: The dict of expected values
|
|
"""
|
|
if load_workbook is None:
|
|
raise unittest.SkipTest("openpyxl not available")
|
|
|
|
report_file = io.BytesIO(file_content)
|
|
xlsx = load_workbook(filename=report_file, data_only=True)
|
|
sheet = xlsx.worksheets[0]
|
|
sheet_values = list(sheet.values)
|
|
|
|
for row, values in expected_values.items():
|
|
row_values = [v if v is not None else '' for v in sheet_values[row]]
|
|
for row_value, expected_value in zip(row_values, values):
|
|
self.assertEqual(row_value, expected_value)
|