Files
enterprise-addons/l10n_ph_check_printing/tests/test_print_check.py
T

131 lines
4.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from odoo import Command
from odoo.tests import tagged
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
@tagged('post_install', 'post_install_l10n', '-at_install')
class TestPrintCheck(AccountTestInvoicingCommon):
@classmethod
@AccountTestInvoicingCommon.setup_country('PH')
def setUpClass(cls):
super().setUpClass()
cls.company_data['company'].account_check_printing_layout = 'l10n_ph_check_printing.action_print_check'
bank_journal = cls.company_data['default_journal_bank']
cls.payment_method_line_check = bank_journal.outbound_payment_method_line_ids\
.filtered(lambda l: l.code == 'check_printing')
cls.outstanding_account = cls.env['account.account'].create({
'name': "Outstanding Payments",
'code': 'OSTP420',
'reconcile': False, # On purpose for testing.
'account_type': 'asset_current',
})
cls.partner_a.write({
'vat': '123-456-789-001',
'branch_code': '001',
'name': 'JMC Company',
'street': "250 Amorsolo Street",
'city': "Manila",
'country_id': cls.env.ref('base.ph').id,
'zip': "+900–1-096",
'is_company': True,
})
def test_check_with_withholding_tax(self):
withholding_tax = self.env['account.chart.template'].ref('l10n_ph_tax_purchase_10_wi011')
withholding_tax.is_withholding_tax_on_payment = True
invoice = self.env['account.move'].create({
'move_type': 'in_invoice',
'partner_id': self.partner_a.id,
'date': '2026-01-01',
'invoice_date': '2026-01-01',
'invoice_line_ids': [Command.create({
'product_id': self.product_a.id,
'price_unit': 3000.0,
'tax_ids': [withholding_tax.id],
})]
})
invoice.action_post()
payment_register = self.env['account.payment.register'].with_context(
lang='en_US',
active_model='account.move',
active_ids=invoice.ids,
).create({
'payment_method_line_id': self.payment_method_line_check.id,
'withholding_outstanding_account_id': self.outstanding_account.id,
})
payment_register.withholding_line_ids[0].name = "1"
payment = payment_register._create_payments()
check_page_info = payment._check_get_pages()[0]
self.assertEqual(check_page_info['amount_no_currency'], "2,700.00")
self.assertEqual(check_page_info['amount_in_word'], "Two Thousand Seven Hundred ONLY")
def test_check_printing_only(self):
""" Test that if the amount does not contain decimals,
The amount in words on the check contains the keyword 'ONLY'
"""
vendor_bill = self.init_invoice(
move_type='in_invoice',
partner=self.partner_a,
amounts=[91490],
post=True,
)
payment = self.env['account.payment.register'].with_context(
active_model='account.move', active_ids=vendor_bill.ids, lang='en_US'
).create({
'payment_method_line_id': self.payment_method_line_check.id,
})._create_payments()
self.assertEqual(payment.check_amount_in_words, 'Ninety-One Thousand Four Hundred Ninety ONLY')
def test_check_printing_rounding(self):
""" Test that the amount in words on the check is rounded to 2 decimals,
And does not contain the keyword 'ONLY'
"""
vendor_bill = self.init_invoice(
move_type='in_invoice',
partner=self.partner_a,
amounts=[91490.15],
post=True,
)
payment = self.env['account.payment.register'].with_context(
active_model='account.move', active_ids=vendor_bill.ids, lang='en_US'
).create({
'payment_method_line_id': self.payment_method_line_check.id,
})._create_payments()
self.assertEqual(payment.check_amount_in_words, 'Ninety-One Thousand Four Hundred Ninety and 15/100')
def test_check_printing_rounding_two_decimals(self):
""" Test that even with a different rounding factor,
The amount in words on the check is still rounded to 2 decimals
"""
self.env.ref('product.decimal_price').digits = 4
self.env.company.currency_id.rounding = 0.0001
vendor_bill = self.init_invoice(
move_type='in_invoice',
partner=self.partner_a,
amounts=[91490.1579],
post=True,
)
payment = self.env['account.payment.register'].with_context(
active_model='account.move', active_ids=vendor_bill.ids, lang='en_US'
).create({
'payment_method_line_id': self.payment_method_line_check.id,
})._create_payments()
self.assertEqual(payment.check_amount_in_words, 'Ninety-One Thousand Four Hundred Ninety and 16/100')