mirror of
https://github.com/bringout/oca-ocb-accounting.git
synced 2026-04-22 12:22:09 +02:00
134 lines
5.8 KiB
Python
134 lines
5.8 KiB
Python
from odoo import Command
|
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
from odoo.tests import tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestAccountSectionAndSubsection(AccountTestInvoicingCommon):
|
|
|
|
def test_get_child_lines_with_one_taxes(self):
|
|
move = self.init_invoice('out_invoice')
|
|
move.invoice_line_ids = [
|
|
Command.create({
|
|
'name': "Section 1",
|
|
'display_type': 'line_section',
|
|
'collapse_prices': True,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_a.id,
|
|
'price_unit': 100,
|
|
'tax_ids': self.tax_sale_a.ids,
|
|
}),
|
|
Command.create({
|
|
'name': "Subsection 1.1",
|
|
'display_type': 'line_subsection',
|
|
'collapse_composition': True,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_a.id,
|
|
'price_unit': 200,
|
|
'tax_ids': self.tax_sale_a.ids,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_b.id,
|
|
'price_unit': 100,
|
|
'tax_ids': self.tax_sale_a.ids,
|
|
}),
|
|
]
|
|
section_lines = move.invoice_line_ids[0]._get_child_lines()
|
|
expected_values = [
|
|
{'display_type': 'line_section', 'name': 'Section 1', 'price_subtotal': 400.0, 'taxes': ['15%']},
|
|
{'display_type': 'product', 'name': 'product_a', 'price_subtotal': 100.0, 'taxes': []},
|
|
{'display_type': 'product', 'name': 'Subsection 1.1', 'price_subtotal': 300.0, 'taxes': ['15%']},
|
|
]
|
|
for expected_value, line_value in zip(expected_values, section_lines):
|
|
for key, value in expected_value.items():
|
|
self.assertEqual(line_value[key], value)
|
|
|
|
def test_get_child_lines_with_multiple_taxes(self):
|
|
move = self.init_invoice('out_invoice')
|
|
move.invoice_line_ids = [
|
|
Command.create({
|
|
'name': "Section 1",
|
|
'display_type': 'line_section',
|
|
'collapse_prices': True,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_a.id,
|
|
'price_unit': 100,
|
|
'tax_ids': self.tax_sale_a.ids,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_a.id,
|
|
'price_unit': 100,
|
|
'tax_ids': self.tax_sale_b.ids,
|
|
}),
|
|
Command.create({
|
|
'name': "Subsection 1.1",
|
|
'display_type': 'line_subsection',
|
|
'collapse_composition': True,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_b.id,
|
|
'price_unit': 200,
|
|
'tax_ids': self.tax_sale_a.ids,
|
|
}),
|
|
Command.create({
|
|
'product_id': self.product_b.id,
|
|
'price_unit': 200,
|
|
'tax_ids': self.tax_sale_b.ids,
|
|
}),
|
|
]
|
|
section_lines = move.invoice_line_ids[0]._get_child_lines()
|
|
expected_values = [
|
|
{'display_type': 'line_section', 'name': 'Section 1', 'price_subtotal': 600.0, 'taxes': ['15%', '15% (copy)']},
|
|
{'display_type': 'product', 'name': 'product_a', 'price_subtotal': 100.0, 'taxes': []},
|
|
{'display_type': 'product', 'name': 'product_a', 'price_subtotal': 100.0, 'taxes': []},
|
|
{'display_type': 'product', 'name': 'Subsection 1.1', 'price_subtotal': 200.0, 'taxes': ['15%']},
|
|
{'display_type': 'product', 'name': 'Subsection 1.1', 'price_subtotal': 200.0, 'taxes': ['15% (copy)']},
|
|
]
|
|
for expected_value, line_value in zip(expected_values, section_lines):
|
|
for key, value in expected_value.items():
|
|
self.assertEqual(line_value[key], value)
|
|
|
|
def test_get_child_lines_with_products_in_subsections(self):
|
|
move = self._create_invoice(
|
|
invoice_line_ids=[Command.create(vals) for vals in [
|
|
{
|
|
'name': "Section 1",
|
|
'display_type': 'line_section',
|
|
'collapse_prices': True,
|
|
},
|
|
{
|
|
'name': "Subsection 1.1",
|
|
'display_type': 'line_subsection',
|
|
'collapse_composition': False,
|
|
},
|
|
{
|
|
'product_id': self.product_a.id,
|
|
'price_unit': 200,
|
|
'tax_ids': self.tax_sale_a.ids,
|
|
},
|
|
{
|
|
'name': "Subsection 1.2",
|
|
'display_type': 'line_subsection',
|
|
'collapse_composition': False,
|
|
},
|
|
{
|
|
'product_id': self.product_b.id,
|
|
'price_unit': 200,
|
|
'tax_ids': self.tax_sale_b.ids,
|
|
},
|
|
]]
|
|
)
|
|
section_lines = move.invoice_line_ids[0]._get_child_lines()
|
|
expected_values = [
|
|
{'display_type': 'line_section', 'name': 'Section 1', 'price_subtotal': 400.0, 'taxes': ['15%', '15% (copy)']},
|
|
{'display_type': 'line_subsection', 'name': 'Subsection 1.1', 'price_subtotal': 200.0, 'taxes': ['15%']},
|
|
{'display_type': 'product', 'name': 'product_a', 'price_subtotal': 200.0, 'taxes': []},
|
|
{'display_type': 'line_subsection', 'name': 'Subsection 1.2', 'price_subtotal': 200.0, 'taxes': ['15% (copy)']},
|
|
{'display_type': 'product', 'name': 'product_b', 'price_subtotal': 200.0, 'taxes': []},
|
|
]
|
|
for expected_value, line_value in zip(expected_values, section_lines):
|
|
for key, value in expected_value.items():
|
|
self.assertEqual(line_value[key], value)
|