38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
|
from .common import AccountTestInvoicingCommon
|
||
|
from odoo.tests.common import Form, tagged, new_test_user
|
||
|
from odoo import Command
|
||
|
|
||
|
|
||
|
@tagged("post_install", "-at_install")
|
||
|
class AccountProductCase(AccountTestInvoicingCommon):
|
||
|
@classmethod
|
||
|
def setUpClass(cls, chart_template_ref=None):
|
||
|
super().setUpClass(chart_template_ref)
|
||
|
cls.internal_user = new_test_user(
|
||
|
cls.env, login="internal_user", groups="base.group_user"
|
||
|
)
|
||
|
|
||
|
def test_internal_user_can_read_product_with_tax_and_tags(self):
|
||
|
"""Internal users need read access to products, no matter their taxes."""
|
||
|
# Add a tag to product_a's default tax
|
||
|
self.company_data["company"].country_id = self.env.ref("base.us")
|
||
|
tax_line_tag = self.env["account.account.tag"].create(
|
||
|
{
|
||
|
"name": "Tax tag",
|
||
|
"applicability": "taxes",
|
||
|
"country_id": self.company_data["company"].country_id.id,
|
||
|
}
|
||
|
)
|
||
|
repartition_lines = (
|
||
|
self.product_a.taxes_id.invoice_repartition_line_ids
|
||
|
| self.product_a.taxes_id.refund_repartition_line_ids
|
||
|
).filtered_domain([("repartition_type", "=", "tax")])
|
||
|
repartition_lines.write({"tag_ids": [Command.link(tax_line_tag.id)]})
|
||
|
# Check that internal user can read product_a
|
||
|
with Form(
|
||
|
self.product_a.with_user(self.internal_user).with_context(lang="en_US")
|
||
|
) as form_a:
|
||
|
# The tax string itself is not very important here; we just check
|
||
|
# it has a value and we can read it, so there were no access errors
|
||
|
self.assertTrue(form_a.tax_string)
|