From f3fe2d50d99698eb0261c2309bd63f9f64b3d703 Mon Sep 17 00:00:00 2001 From: William Henrotin Date: Wed, 20 Oct 2021 14:39:42 +0000 Subject: [PATCH] [REF] *: rename `name` into `partner_id` on supplierinfo Task: 2673000 Part-of: odoo/odoo#78732 --- .../l10n_it_edi/models/account_edi_format.py | 2 +- .../data/mrp_subcontracting_demo.xml | 2 +- addons/mrp_subcontracting/models/product.py | 6 +-- .../report/mrp_report_bom_structure.py | 4 +- .../tests/test_subcontracting.py | 4 +- .../views/supplier_info_views.xml | 2 +- .../tests/test_subcontracting_account.py | 4 +- .../tests/test_purchase_subcontracting.py | 8 +-- addons/product/data/product_demo.xml | 52 +++++++++---------- addons/product/models/product.py | 17 +++--- addons/product/populate/product.py | 4 +- .../product/tests/test_product_pricelist.py | 8 +-- addons/product/tests/test_seller.py | 10 ++-- addons/product/views/product_views.xml | 12 ++--- addons/purchase/models/product.py | 6 +-- addons/purchase/models/purchase.py | 8 +-- addons/purchase/views/product_views.xml | 2 +- .../tests/test_purchase_mrp_flow.py | 2 +- .../models/purchase_requisition.py | 4 +- .../tests/test_purchase_requisition.py | 12 ++--- .../tests/test_purchase_requisition_stock.py | 6 +-- addons/purchase_stock/models/product.py | 4 +- addons/purchase_stock/models/stock.py | 2 +- addons/purchase_stock/models/stock_rule.py | 8 +-- addons/purchase_stock/tests/common.py | 6 +-- .../tests/test_create_picking.py | 8 +-- .../tests/test_move_cancel_propagation.py | 4 +- .../tests/test_onchange_product.py | 2 +- .../tests/test_product_template.py | 2 +- .../tests/test_purchase_lead_time.py | 10 ++-- .../tests/test_purchase_order.py | 8 +-- .../tests/test_reordering_rule.py | 18 +++---- .../tests/test_replenish_wizard.py | 22 ++++---- addons/sale/tests/test_onchange.py | 1 - addons/sale_purchase/models/sale_order.py | 4 +- addons/sale_purchase/tests/common.py | 4 +- .../sale_purchase/tests/test_sale_purchase.py | 12 ++--- addons/stock/tests/test_packing_neg.py | 2 +- .../tests/test_crossdock.py | 2 +- .../stock_dropshipping/tests/test_dropship.py | 4 +- .../tests/test_procurement_exception.py | 2 +- .../tests/test_stockvaluation.py | 2 +- .../static/tests/tours/main_flow.js | 10 ++-- 43 files changed, 156 insertions(+), 156 deletions(-) diff --git a/addons/l10n_it_edi/models/account_edi_format.py b/addons/l10n_it_edi/models/account_edi_format.py index 7f16d802787..764048b2a60 100644 --- a/addons/l10n_it_edi/models/account_edi_format.py +++ b/addons/l10n_it_edi/models/account_edi_format.py @@ -466,7 +466,7 @@ class AccountEdiFormat(models.Model): invoice_line_form.product_id = product break if partner: - product_supplier = self.env['product.supplierinfo'].search([('name', '=', partner.id), ('product_code', '=', code.text)]) + product_supplier = self.env['product.supplierinfo'].search([('partner_id', '=', partner.id), ('product_code', '=', code.text)]) if product_supplier and product_supplier.product_id: invoice_line_form.product_id = product_supplier.product_id break diff --git a/addons/mrp_subcontracting/data/mrp_subcontracting_demo.xml b/addons/mrp_subcontracting/data/mrp_subcontracting_demo.xml index fa792c076e6..fc5f25a9b12 100644 --- a/addons/mrp_subcontracting/data/mrp_subcontracting_demo.xml +++ b/addons/mrp_subcontracting/data/mrp_subcontracting_demo.xml @@ -17,7 +17,7 @@ - + 1 1 1 diff --git a/addons/mrp_subcontracting/models/product.py b/addons/mrp_subcontracting/models/product.py index b9cedbc224e..2dc0ecf580a 100644 --- a/addons/mrp_subcontracting/models/product.py +++ b/addons/mrp_subcontracting/models/product.py @@ -9,12 +9,12 @@ class SupplierInfo(models.Model): is_subcontractor = fields.Boolean('Subcontracted', compute='_compute_is_subcontractor', help="Choose a vendor of type subcontractor if you want to subcontract the product") - @api.depends('name', 'product_id', 'product_tmpl_id') + @api.depends('partner_id', 'product_id', 'product_tmpl_id') def _compute_is_subcontractor(self): for supplier in self: boms = supplier.product_id.variant_bom_ids boms |= supplier.product_tmpl_id.bom_ids.filtered(lambda b: not b.product_id or b.product_id in (supplier.product_id or supplier.product_tmpl_id.product_variant_ids)) - supplier.is_subcontractor = supplier.name in boms.subcontractor_ids + supplier.is_subcontractor = supplier.partner_id in boms.subcontractor_ids class ProductProduct(models.Model): @@ -22,5 +22,5 @@ class ProductProduct(models.Model): def _prepare_sellers(self, params=False): if params and params.get('subcontractor_ids'): - return super()._prepare_sellers(params=params).filtered(lambda s: s.name in params.get('subcontractor_ids')) + return super()._prepare_sellers(params=params).filtered(lambda s: s.partner_id in params.get('subcontractor_ids')) return super()._prepare_sellers(params=params) diff --git a/addons/mrp_subcontracting/report/mrp_report_bom_structure.py b/addons/mrp_subcontracting/report/mrp_report_bom_structure.py index de7830ce322..2edfa115e66 100644 --- a/addons/mrp_subcontracting/report/mrp_report_bom_structure.py +++ b/addons/mrp_subcontracting/report/mrp_report_bom_structure.py @@ -10,8 +10,8 @@ class ReportBomStructure(models.AbstractModel): def _get_subcontracting_line(self, bom, seller, level, bom_quantity): ratio_uom_seller = seller.product_uom.ratio / bom.product_uom_id.ratio return { - 'name': seller.name.display_name, - 'partner_id': seller.name.id, + 'name': seller.partner_id.display_name, + 'partner_id': seller.partner_id.id, 'quantity': bom_quantity, 'uom': bom.product_uom_id.name, 'prod_cost': seller.price / ratio_uom_seller, diff --git a/addons/mrp_subcontracting/tests/test_subcontracting.py b/addons/mrp_subcontracting/tests/test_subcontracting.py index 29e916f8deb..25c0d69b2c4 100644 --- a/addons/mrp_subcontracting/tests/test_subcontracting.py +++ b/addons/mrp_subcontracting/tests/test_subcontracting.py @@ -574,12 +574,12 @@ class TestSubcontractingFlows(TestMrpSubcontractingCommon): self.comp2_bom.write({'type': 'subcontract', 'subcontractor_ids': [Command.link(self.subcontractor_partner1.id)]}) self.env['product.supplierinfo'].create({ 'product_tmpl_id': self.finished.product_tmpl_id.id, - 'name': self.subcontractor_partner1.id, + 'partner_id': self.subcontractor_partner1.id, 'price': 10, }) supplier = self.env['product.supplierinfo'].create({ 'product_tmpl_id': self.comp2.product_tmpl_id.id, - 'name': self.subcontractor_partner1.id, + 'partner_id': self.subcontractor_partner1.id, 'price': 5, }) self.assertTrue(supplier.is_subcontractor) diff --git a/addons/mrp_subcontracting/views/supplier_info_views.xml b/addons/mrp_subcontracting/views/supplier_info_views.xml index 796f4a41d98..e140e79f5b9 100644 --- a/addons/mrp_subcontracting/views/supplier_info_views.xml +++ b/addons/mrp_subcontracting/views/supplier_info_views.xml @@ -5,7 +5,7 @@ product.supplierinfo - + diff --git a/addons/mrp_subcontracting_account/tests/test_subcontracting_account.py b/addons/mrp_subcontracting_account/tests/test_subcontracting_account.py index f0906cd54b5..081225e929d 100644 --- a/addons/mrp_subcontracting_account/tests/test_subcontracting_account.py +++ b/addons/mrp_subcontracting_account/tests/test_subcontracting_account.py @@ -151,11 +151,11 @@ class TestBomPriceSubcontracting(TestBomPrice): }) suppliers = self.env['product.supplierinfo'].create([ { - 'name': partner.id, + 'partner_id': partner.id, 'product_tmpl_id': self.dining_table.product_tmpl_id.id, 'price': 150.0, }, { - 'name': partner.id, + 'partner_id': partner.id, 'product_tmpl_id': self.table_head.product_tmpl_id.id, 'price': 120.0, # 10 by Unit because uom_po_id is in dozen } diff --git a/addons/mrp_subcontracting_dropshipping/tests/test_purchase_subcontracting.py b/addons/mrp_subcontracting_dropshipping/tests/test_purchase_subcontracting.py index 594ae1be712..cbbc0de4098 100644 --- a/addons/mrp_subcontracting_dropshipping/tests/test_purchase_subcontracting.py +++ b/addons/mrp_subcontracting_dropshipping/tests/test_purchase_subcontracting.py @@ -31,7 +31,7 @@ class TestSubcontractingDropshippingFlows(TestMrpSubcontractingCommon): self.env['product.supplierinfo'].create({ 'product_tmpl_id': self.finished.product_tmpl_id.id, - 'name': self.subcontractor_partner1.id + 'partner_id': self.subcontractor_partner1.id }) partner = self.env['res.partner'].create({ @@ -39,7 +39,7 @@ class TestSubcontractingDropshippingFlows(TestMrpSubcontractingCommon): }) self.env['product.supplierinfo'].create({ 'product_tmpl_id': self.comp2.product_tmpl_id.id, - 'name': partner.id + 'partner_id': partner.id }) # Create a receipt picking from the subcontractor @@ -91,10 +91,10 @@ class TestSubcontractingDropshippingFlows(TestMrpSubcontractingCommon): # Create a supplier and set it to component vendor = self.env['res.partner'].create({'name': 'AAA', 'email': 'from.test@example.com'}) self.env['product.supplierinfo'].create({ - 'name': vendor.id, + 'partner_id': vendor.id, 'price': 50, }) - self.comp1.write({'seller_ids': [(0, 0, {'name': vendor.id, 'product_code': 'COMP1'})]}) + self.comp1.write({'seller_ids': [(0, 0, {'partner_id': vendor.id, 'product_code': 'COMP1'})]}) # Purchase 1 BOM to the subcontractor po = Form(self.env['purchase.order']) po.partner_id = self.subcontractor_partner1 diff --git a/addons/product/data/product_demo.xml b/addons/product/data/product_demo.xml index 92c5aa2943f..2eb262169e7 100644 --- a/addons/product/data/product_demo.xml +++ b/addons/product/data/product_demo.xml @@ -559,7 +559,7 @@ - + 3 1 750 @@ -568,7 +568,7 @@ - + 3 1 790 @@ -577,7 +577,7 @@ - + 3 3 785 @@ -586,7 +586,7 @@ - + 3 1 13.0 @@ -595,7 +595,7 @@ - + 3 1 14.4 @@ -604,7 +604,7 @@ - + 2 5 1299 @@ -613,7 +613,7 @@ - + 4 1 1399 @@ -622,7 +622,7 @@ - + 2 1 120.50 @@ -631,7 +631,7 @@ - + 2 1 28 @@ -640,7 +640,7 @@ - + 5 1 78 @@ -649,7 +649,7 @@ - + 1 1 20 @@ -658,7 +658,7 @@ - + 3 1 1700 @@ -667,7 +667,7 @@ - + 4 5 1720 @@ -676,7 +676,7 @@ - + 3 1 2010 @@ -685,7 +685,7 @@ - + 3 1 876 @@ -694,7 +694,7 @@ - + 8 1 287 @@ -703,7 +703,7 @@ - + 4 1 390 @@ -712,7 +712,7 @@ - + 2 12 90 @@ -721,7 +721,7 @@ - + 4 1 66 @@ -730,7 +730,7 @@ - + 5 1 35 @@ -739,7 +739,7 @@ - + 7 1 55 @@ -748,7 +748,7 @@ - + 4 0 10 @@ -757,7 +757,7 @@ - + 10 0 95.50 @@ -766,7 +766,7 @@ - + 3 0 120.50 @@ -775,7 +775,7 @@ - + 2 0 130.50 @@ -784,7 +784,7 @@ - + 1 0 145 diff --git a/addons/product/models/product.py b/addons/product/models/product.py index d3680c4f1e5..576f4cb481c 100644 --- a/addons/product/models/product.py +++ b/addons/product/models/product.py @@ -306,7 +306,7 @@ class ProductProduct(models.Model): def _compute_product_code(self): for product in self: for supplier_info in product.seller_ids: - if supplier_info.name.id == product._context.get('partner_id'): + if supplier_info.partner_id.id == product._context.get('partner_id'): product.code = supplier_info.product_code or product.default_code break else: @@ -316,7 +316,7 @@ class ProductProduct(models.Model): def _compute_partner_ref(self): for product in self: for supplier_info in product.seller_ids: - if supplier_info.name.id == product._context.get('partner_id'): + if supplier_info.partner_id.id == product._context.get('partner_id'): product_name = supplier_info.product_name or product.default_code or product.name product.partner_ref = '%s%s' % (product.code and '[%s] ' % product.code or '', product_name) break @@ -501,7 +501,7 @@ class ProductProduct(models.Model): if partner_ids: supplier_info = self.env['product.supplierinfo'].sudo().search([ ('product_tmpl_id', 'in', product_template_ids), - ('name', 'in', partner_ids), + ('partner_id', 'in', partner_ids), ]) # Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields # Use `load=False` to not call `name_get` for the `product_tmpl_id` and `product_id` @@ -583,7 +583,7 @@ class ProductProduct(models.Model): # still no results, partner in context: search on supplier info as last hope to find something if not product_ids and self._context.get('partner_id'): suppliers_ids = self.env['product.supplierinfo']._search([ - ('name', '=', self._context.get('partner_id')), + ('partner_id', '=', self._context.get('partner_id')), '|', ('product_code', operator, name), ('product_name', operator, name)], access_rights_uid=name_get_uid) @@ -636,7 +636,7 @@ class ProductProduct(models.Model): 'target': 'new'} def _prepare_sellers(self, params=False): - return self.seller_ids.filtered(lambda s: s.name.active).sorted(lambda s: (s.sequence, -s.min_qty, s.price, s.id)) + return self.seller_ids.filtered(lambda s: s.partner_id.active).sorted(lambda s: (s.sequence, -s.min_qty, s.price, s.id)) def _select_seller(self, partner_id=False, quantity=0.0, date=None, uom_id=False, params=False): self.ensure_one() @@ -657,13 +657,13 @@ class ProductProduct(models.Model): continue if seller.date_end and seller.date_end < date: continue - if partner_id and seller.name not in [partner_id, partner_id.parent_id]: + if partner_id and seller.partner_id not in [partner_id, partner_id.parent_id]: continue if quantity is not None and float_compare(quantity_uom_seller, seller.min_qty, precision_digits=precision) == -1: continue if seller.product_id and seller.product_id != self: continue - if not res or res.name == seller.name: + if not res or res.partner_id == seller.partner_id: res |= seller return res.sorted('price')[:1] @@ -813,8 +813,9 @@ class SupplierInfo(models.Model): _name = "product.supplierinfo" _description = "Supplier Pricelist" _order = 'sequence, min_qty DESC, price, id' + _rec_name = 'partner_id' - name = fields.Many2one( + partner_id = fields.Many2one( 'res.partner', 'Vendor', ondelete='cascade', required=True, help="Vendor of this product", check_company=True) diff --git a/addons/product/populate/product.py b/addons/product/populate/product.py index 2be746228ae..953587d2500 100644 --- a/addons/product/populate/product.py +++ b/addons/product/populate/product.py @@ -93,7 +93,7 @@ class SupplierInfo(models.Model): product_templates_ids = random.sample(product_templates_ids, int(len(product_templates_ids) * 0.95)) def get_company_id(values, counter, random): - partner = self.env['res.partner'].browse(values['name']) + partner = self.env['res.partner'].browse(values['partner_id']) if partner.company_id: return partner.company_id.id return random.choice(company_ids) @@ -105,7 +105,7 @@ class SupplierInfo(models.Model): return random.randint(1, 10) return [ - ('name', populate.randomize(partner_ids)), + ('partner_id', populate.randomize(partner_ids)), ('company_id', populate.compute(get_company_id)), ('product_tmpl_id', populate.iterate(product_templates_ids)), ('product_name', populate.constant("SI-{counter}")), diff --git a/addons/product/tests/test_product_pricelist.py b/addons/product/tests/test_product_pricelist.py index 0cb23565ffb..657928357b1 100644 --- a/addons/product/tests/test_product_pricelist.py +++ b/addons/product/tests/test_product_pricelist.py @@ -42,25 +42,25 @@ class TestProductPricelist(TransactionCase): self.env['product.supplierinfo'].create([ { - 'name': self.res_partner_1.id, + 'partner_id': self.res_partner_1.id, 'product_tmpl_id': self.ipad_mini.product_tmpl_id.id, 'delay': 3, 'min_qty': 1, 'price': 750, }, { - 'name': self.res_partner_4.id, + 'partner_id': self.res_partner_4.id, 'product_tmpl_id': self.ipad_mini.product_tmpl_id.id, 'delay': 3, 'min_qty': 1, 'price': 790, }, { - 'name': self.res_partner_4.id, + 'partner_id': self.res_partner_4.id, 'product_tmpl_id': self.ipad_mini.product_tmpl_id.id, 'delay': 3, 'min_qty': 3, 'price': 785, }, { - 'name': self.res_partner_4.id, + 'partner_id': self.res_partner_4.id, 'product_tmpl_id': self.monitor.product_tmpl_id.id, 'delay': 3, 'min_qty': 3, diff --git a/addons/product/tests/test_seller.py b/addons/product/tests/test_seller.py index e8e92afbf84..7e21e9de623 100644 --- a/addons/product/tests/test_seller.py +++ b/addons/product/tests/test_seller.py @@ -22,8 +22,8 @@ class TestSeller(TransactionCase): def test_10_sellers(self): self.product_service.write({'seller_ids': [ - (0, 0, {'name': self.asustec.id, 'product_code': 'ASUCODE'}), - (0, 0, {'name': self.camptocamp.id, 'product_code': 'C2CCODE'}), + (0, 0, {'partner_id': self.asustec.id, 'product_code': 'ASUCODE'}), + (0, 0, {'partner_id': self.camptocamp.id, 'product_code': 'C2CCODE'}), ]}) default_code = self.product_service.code @@ -40,9 +40,9 @@ class TestSeller(TransactionCase): 'name': 'Saucisson Inc.', }) self.product_consu.write({'seller_ids': [ - (0, 0, {'name': self.asustec.id, 'product_code': 'A', 'company_id': company_a.id}), - (0, 0, {'name': self.asustec.id, 'product_code': 'B', 'company_id': company_b.id}), - (0, 0, {'name': self.asustec.id, 'product_code': 'NO', 'company_id': False}), + (0, 0, {'partner_id': self.asustec.id, 'product_code': 'A', 'company_id': company_a.id}), + (0, 0, {'partner_id': self.asustec.id, 'product_code': 'B', 'company_id': company_b.id}), + (0, 0, {'partner_id': self.asustec.id, 'product_code': 'NO', 'company_id': False}), ]}) names = self.product_consu.with_context( diff --git a/addons/product/views/product_views.xml b/addons/product/views/product_views.xml index fc5327aba2e..fe0d849da51 100644 --- a/addons/product/views/product_views.xml +++ b/addons/product/views/product_views.xml @@ -603,7 +603,7 @@ - +