[FIX] product_sale_price_from_pricelist: Actualizar tests para Odoo 18
- Cambiar parámetro qty= a quantity= en llamadas a _compute_price_rule - Eliminar type/detailed_type de product.product creates - Añadir campo name a purchase.order.line - Agregar método _compute_theoritical_price en template - Crear helpers para leer precios teóricos desde variante - Corregir variables no usadas y nombres indefinidos
This commit is contained in:
parent
fd83d31188
commit
55811d54b1
28 changed files with 1569 additions and 327 deletions
1
product_origin/tests/__init__.py
Normal file
1
product_origin/tests/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
from . import test_module
|
||||
86
product_origin/tests/test_module.py
Normal file
86
product_origin/tests/test_module.py
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop)
|
||||
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
from odoo.addons.base.tests.common import BaseCommon
|
||||
|
||||
|
||||
class TestModule(BaseCommon):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.country_us = cls.env.ref("base.us")
|
||||
cls.state_tarapaca = cls.env.ref("base.state_cl_01")
|
||||
cls.state_us = cls.env.ref("base.state_us_1")
|
||||
cls.country_chile = cls.env.ref("base.cl")
|
||||
|
||||
def test_product_product(self):
|
||||
self._test_compute_and_constrains(self.env["product.product"])
|
||||
self._test_onchange_methods(self.env["product.product"])
|
||||
|
||||
def test_product_template(self):
|
||||
self._test_compute_and_constrains(self.env["product.template"])
|
||||
self._test_onchange_methods(self.env["product.template"])
|
||||
|
||||
def _test_compute_and_constrains(self, model):
|
||||
# Set state should set country
|
||||
product = model.create({"name": "Test Name"})
|
||||
self.assertEqual(product.state_id_domain, [])
|
||||
|
||||
product.country_id = self.country_us
|
||||
self.assertEqual(
|
||||
product.state_id_domain, [("country_id", "=", self.country_us.id)]
|
||||
)
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
product.state_id = self.state_tarapaca
|
||||
|
||||
def _test_onchange_methods(self, model):
|
||||
# Test 1: onchange_country_id - When country changes,
|
||||
# mismatched state is cleared
|
||||
product = model.create({"name": "Test Onchange"})
|
||||
|
||||
# Set state first
|
||||
product.state_id = self.state_us
|
||||
# Set matching country
|
||||
product.country_id = self.country_us
|
||||
|
||||
# Create a new product with a temporary state/country combination
|
||||
# that we'll modify through onchange
|
||||
product_for_onchange = model.new(
|
||||
{
|
||||
"name": "Test Onchange Product",
|
||||
"state_id": self.state_us.id,
|
||||
"country_id": self.country_us.id,
|
||||
}
|
||||
)
|
||||
|
||||
# Verify initial state
|
||||
self.assertEqual(product_for_onchange.state_id.id, self.state_us.id)
|
||||
self.assertEqual(product_for_onchange.country_id.id, self.country_us.id)
|
||||
|
||||
# Change country and trigger onchange
|
||||
product_for_onchange.country_id = self.country_chile
|
||||
product_for_onchange.onchange_country_id()
|
||||
|
||||
# State should be cleared because it doesn't match country
|
||||
self.assertFalse(product_for_onchange.state_id)
|
||||
|
||||
# Test 2: onchange_state_id - When state changes, country should update
|
||||
product_for_state_change = model.new(
|
||||
{
|
||||
"name": "Test Onchange State",
|
||||
}
|
||||
)
|
||||
|
||||
# Initially no country
|
||||
self.assertFalse(product_for_state_change.country_id)
|
||||
|
||||
# Set state and trigger onchange
|
||||
product_for_state_change.state_id = self.state_us
|
||||
product_for_state_change.onchange_state_id()
|
||||
|
||||
# Country should be set to match state's country
|
||||
self.assertEqual(product_for_state_change.country_id.id, self.country_us.id)
|
||||
Loading…
Add table
Add a link
Reference in a new issue