# Copyright 2022-2024 Tecnativa - Víctor Martínez # Copyright 2024 Tecnativa - Carolina Fernandez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) from odoo import fields from odoo.tests import Form, common, new_test_user, tagged from odoo.tests.common import users from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT @tagged("-at_install", "post_install") class TestAccountMove(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) if not cls.env.company.chart_template_id: # Load a CoA if there's none in current company coa = cls.env.ref("l10n_generic_coa.configurable_chart_template", False) if not coa: # Load the first available CoA coa = cls.env["account.chart.template"].search( [("visible", "=", True)], limit=1 ) coa.try_loading(company=cls.env.company, install_demo=False) new_test_user( cls.env, login="test-account-user", groups="account.group_account_invoice" ) cls.categ = cls.env["product.category"].create({"name": "Test category"}) cls.product_a = cls.env["product.product"].create( {"name": "Test product A", "maintenance_ok": True, "categ_id": cls.categ.id} ) cls.product_b = cls.env["product.product"].create( {"name": "Test product B", "categ_id": cls.categ.id} ) cls.account_payable = cls.env["account.account"].create( { "name": "Test Account", "code": "TEST", "account_type": "liability_payable", "reconcile": True, } ) cls.account_expense = cls.env["account.account"].create( { "name": "Test Account", "code": "ACC", "account_type": "expense", } ) cls.journal = cls.env["account.journal"].create( { "name": "Test purchase journal", "type": "purchase", "code": "TEST-PURCHASE", } ) cls.partner = cls.env["res.partner"].create( { "name": "Test partner", } ) def _create_invoice(self, move_type="in_invoice"): move_form = Form( self.env["account.move"].with_context(default_move_type=move_type) ) move_form.partner_id = self.partner move_form.ref = "SUPPLIE-REF" move_form.invoice_date = fields.Date.from_string("2000-01-01") with move_form.invoice_line_ids.new() as line_form: line_form.product_id = self.product_a line_form.name = "Product A\nTest description product A\nB" line_form.quantity = 2 with move_form.invoice_line_ids.new() as line_form: line_form.product_id = self.product_b line_form.quantity = 2 invoice = move_form.save() return invoice @users("test-account-user") def test_invoice_out_invoice_action_post_equipment_1(self): invoice = self._create_invoice("out_invoice") line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) self.assertFalse(line_a.equipment_category_id) self.assertFalse(line_b.equipment_category_id) invoice.action_post() equipments = invoice.mapped("line_ids.equipment_ids") self.assertEqual(len(equipments), 0) @users("test-account-user") def test_invoice_action_post_equipment_1(self): invoice = self._create_invoice() line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) self.assertFalse(line_a.equipment_category_id) self.assertFalse(line_b.equipment_category_id) invoice.action_post() equipments = invoice.mapped("line_ids.equipment_ids") self.assertEqual(len(equipments), 2) self.assertTrue(line_a.equipment_category_id) self.assertEqual(len(line_a.equipment_ids), 2) self.assertEqual(len(line_b.equipment_ids), 0) equipment = fields.first(equipments) self.assertEqual(equipment.name, "Product A") self.assertEqual(equipment.note, "
Test description product A
B