diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0cb9d348..4f163ad1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -46,7 +46,7 @@ repos: - --remove-duplicate-keys - --remove-unused-variables - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black - repo: https://github.com/pre-commit/mirrors-prettier diff --git a/rma/models/product.py b/rma/models/product.py index 418e6860..c4055c5b 100644 --- a/rma/models/product.py +++ b/rma/models/product.py @@ -8,10 +8,14 @@ class ProductTemplate(models.Model): _inherit = "product.template" rma_customer_operation_id = fields.Many2one( - comodel_name="rma.operation", string="Default RMA Customer Operation" + company_dependent=True, + comodel_name="rma.operation", + string="Default RMA Customer Operation", ) rma_supplier_operation_id = fields.Many2one( - comodel_name="rma.operation", string="Default RMA Supplier Operation" + company_dependent=True, + comodel_name="rma.operation", + string="Default RMA Supplier Operation", ) rma_approval_policy = fields.Selection( related="categ_id.rma_approval_policy", readonly=True diff --git a/rma/models/product_category.py b/rma/models/product_category.py index b528731c..db832c2e 100644 --- a/rma/models/product_category.py +++ b/rma/models/product_category.py @@ -19,8 +19,12 @@ class ProductCategory(models.Model): "this policy will request the RMA manager approval.", ) rma_customer_operation_id = fields.Many2one( - comodel_name="rma.operation", string="Default RMA Customer Operation" + company_dependent=True, + comodel_name="rma.operation", + string="Default RMA Customer Operation", ) rma_supplier_operation_id = fields.Many2one( - comodel_name="rma.operation", string="Default RMA Supplier Operation" + company_dependent=True, + comodel_name="rma.operation", + string="Default RMA Supplier Operation", ) diff --git a/rma/models/rma_order.py b/rma/models/rma_order.py index 2dbc46ad..b543bf69 100644 --- a/rma/models/rma_order.py +++ b/rma/models/rma_order.py @@ -194,8 +194,7 @@ class RmaOrder(models.Model): return self._view_shipments(result, shipments) def _get_valid_lines(self): - """:return: A recordset of rma lines. - """ + """:return: A recordset of rma lines.""" self.ensure_one() return self.rma_line_ids diff --git a/rma/tests/test_rma.py b/rma/tests/test_rma.py index fd28ead1..018146a2 100644 --- a/rma/tests/test_rma.py +++ b/rma/tests/test_rma.py @@ -6,7 +6,7 @@ from odoo.tests import common class TestRma(common.SavepointCase): - """ Test the routes and the quantities """ + """Test the routes and the quantities""" @classmethod def setUpClass(cls): @@ -425,7 +425,9 @@ class TestRma(common.SavepointCase): sum(lines.mapped("in_shipment_count")), 3, "Incorrect In Shipment Count" ) self.assertEqual( - sum(lines.mapped("out_shipment_count")), 3, "Incorrect Out Shipment Count", + sum(lines.mapped("out_shipment_count")), + 3, + "Incorrect Out Shipment Count", ) self.assertEqual( self.rma_customer_id.in_shipment_count, 1, "Incorrect In Shipment Count" @@ -840,4 +842,41 @@ class TestRma(common.SavepointCase): ) for line in self.rma_supplier_id.rma_line_ids: line.action_rma_done() - self.assertEqual(line.mapped("state"), ["done"], "Wrong State") + self.assertEquals(line.state, "done", "Wrong State") + + def test_05_rma_order_line(self): + """Property rma_customer_operation_id on product or product category + correctly handled inside _onchange_product_id() + """ + rma_operation = self.env["rma.operation"].search([], limit=1) + self.assertTrue(rma_operation) + + # Case of product template + self.rma_customer_id.rma_line_ids.mapped("product_id").write( + {"rma_customer_operation_id": rma_operation.id} + ) + for line in self.rma_customer_id.rma_line_ids: + data = {"product_id": line.product_id.id} + new_line = self.rma_line.new(data) + self.assertFalse(new_line.operation_id) + self.assertTrue(new_line.product_id.rma_customer_operation_id) + self.assertTrue(new_line.product_id.categ_id.rma_customer_operation_id) + new_line._onchange_product_id() + self.assertEqual(new_line.operation_id, rma_operation) + + # Case of product category + self.rma_customer_id.rma_line_ids.mapped("product_id").write( + {"rma_customer_operation_id": False} + ) + self.rma_customer_id.rma_line_ids.mapped("product_id.categ_id").write( + {"rma_customer_operation_id": rma_operation.id} + ) + + for line in self.rma_customer_id.rma_line_ids: + data = {"product_id": line.product_id.id} + new_line = self.rma_line.new(data) + self.assertFalse(new_line.operation_id) + self.assertFalse(new_line.product_id.rma_customer_operation_id) + self.assertTrue(new_line.product_id.categ_id.rma_customer_operation_id) + new_line._onchange_product_id() + self.assertEqual(new_line.operation_id, rma_operation) diff --git a/rma/wizards/rma_add_stock_move.py b/rma/wizards/rma_add_stock_move.py index 0352a1f3..68a012cc 100644 --- a/rma/wizards/rma_add_stock_move.py +++ b/rma/wizards/rma_add_stock_move.py @@ -37,7 +37,8 @@ class RmaAddStockMove(models.TransientModel): domain="[('state', '=', 'done')]", ) show_lot_filter = fields.Boolean( - string="Show lot filter?", compute="_compute_lot_domain", + string="Show lot filter?", + compute="_compute_lot_domain", ) lot_domain_ids = fields.Many2many( comodel_name="stock.production.lot", diff --git a/rma_purchase/models/purchase_order_line.py b/rma_purchase/models/purchase_order_line.py index c43d42ce..70444eee 100644 --- a/rma_purchase/models/purchase_order_line.py +++ b/rma_purchase/models/purchase_order_line.py @@ -7,7 +7,10 @@ from odoo import api, fields, models class PurchaseOrderLine(models.Model): _inherit = "purchase.order.line" - rma_line_id = fields.Many2one(comodel_name="rma.order.line", string="RMA",) + rma_line_id = fields.Many2one( + comodel_name="rma.order.line", + string="RMA", + ) @api.model def name_search(self, name="", args=None, operator="ilike", limit=100): diff --git a/rma_purchase/models/rma_order_line.py b/rma_purchase/models/rma_order_line.py index b0242b6a..c6ea0c0a 100644 --- a/rma_purchase/models/rma_order_line.py +++ b/rma_purchase/models/rma_order_line.py @@ -37,7 +37,8 @@ class RmaOrderLine(models.Model): rec.qty_to_purchase = 0.0 purchase_count = fields.Integer( - compute="_compute_purchase_count", string="# of Purchases", + compute="_compute_purchase_count", + string="# of Purchases", ) purchase_order_line_id = fields.Many2one( comodel_name="purchase.order.line", diff --git a/rma_sale/wizards/rma_add_sale.py b/rma_sale/wizards/rma_add_sale.py index eda14eae..c1b9f32a 100644 --- a/rma_sale/wizards/rma_add_sale.py +++ b/rma_sale/wizards/rma_add_sale.py @@ -42,7 +42,8 @@ class RmaAddSale(models.TransientModel): string="Sale Lines", ) show_lot_filter = fields.Boolean( - string="Show lot filter?", compute="_compute_lot_domain", + string="Show lot filter?", + compute="_compute_lot_domain", ) lot_domain_ids = fields.Many2many( comodel_name="stock.production.lot", @@ -50,7 +51,9 @@ class RmaAddSale(models.TransientModel): compute="_compute_lot_domain", ) - @api.depends("sale_line_ids.move_ids.move_line_ids.lot_id",) + @api.depends( + "sale_line_ids.move_ids.move_line_ids.lot_id", + ) def _compute_lot_domain(self): for rec in self: rec.lot_domain_ids = (