From 2966d4faedb2817039ed608dff48acfda418109e Mon Sep 17 00:00:00 2001 From: XavierDo Date: Wed, 14 Feb 2018 14:08:51 +0100 Subject: [PATCH] [IMP] product: rename product.uom into uom.uom Also rename product.uom.categ into uom.category to give it a decent name. --- .../account/models/account_analytic_line.py | 2 +- addons/account/models/account_invoice.py | 2 +- addons/account/models/account_move.py | 2 +- .../account/report/account_invoice_report.py | 6 +-- addons/delivery/models/stock_picking.py | 2 +- addons/hr_expense/data/hr_expense_data.xml | 17 ++++++- addons/hr_expense/models/hr_expense.py | 4 +- .../hr_expense/security/ir.model.access.csv | 2 +- .../hr_timesheet/security/ir.model.access.csv | 2 +- addons/mrp/models/mrp_bom.py | 8 +-- addons/mrp/models/mrp_production.py | 2 +- addons/mrp/models/mrp_unbuild.py | 2 +- addons/mrp/models/mrp_workorder.py | 2 +- addons/mrp/security/ir.model.access.csv | 8 +-- addons/mrp/wizard/mrp_product_produce.py | 4 +- addons/mrp_byproduct/models/mrp_subproduct.py | 2 +- .../wizard/change_production_qty.py | 2 +- .../point_of_sale/data/point_of_sale_data.xml | 2 +- addons/point_of_sale/models/product.py | 8 +-- .../point_of_sale/report/pos_order_report.py | 2 +- .../security/ir.model.access.csv | 2 +- addons/point_of_sale/static/src/js/models.js | 2 +- addons/point_of_sale/views/product_view.xml | 4 +- .../report/report_all_channels_sales.py | 2 +- addons/product/data/product_data.xml | 1 - addons/product/models/product.py | 10 ++-- addons/product/models/product_pricelist.py | 4 +- addons/product/models/product_template.py | 12 ++--- addons/product/tests/common.py | 2 +- addons/project/models/analytic.py | 2 +- addons/project/models/res_company.py | 2 +- addons/project/models/res_config_settings.py | 2 +- addons/purchase/models/purchase.py | 2 +- addons/purchase/report/purchase_report.py | 6 +-- addons/purchase/security/ir.model.access.csv | 4 +- addons/purchase/tests/test_create_picking.py | 4 +- .../purchase/tests/test_onchange_product.py | 2 +- .../models/purchase_requisition.py | 2 +- .../tests/test_purchase_requisition.py | 2 +- addons/repair/models/repair.py | 6 +-- .../report/report_intrastat_report.py | 4 +- addons/sale/models/sale.py | 4 +- .../sale/report/report_all_channels_sales.py | 4 +- addons/sale/report/sale_report.py | 6 +-- addons/sale/security/ir.model.access.csv | 6 +-- addons/sale/tests/test_product_id_change.py | 2 +- addons/sale_margin/models/sale_order.py | 2 +- addons/sale_mrp/models/sale_mrp.py | 2 +- addons/sale_mrp/tests/test_sale_mrp_flow.py | 10 ++-- addons/sale_stock/tests/test_sale_stock.py | 4 +- addons/stock/models/product.py | 2 +- addons/stock/models/stock_inventory.py | 2 +- addons/stock/models/stock_move.py | 2 +- addons/stock/models/stock_move_line.py | 2 +- addons/stock/models/stock_production_lot.py | 2 +- addons/stock/models/stock_quant.py | 2 +- addons/stock/models/stock_scrap.py | 2 +- addons/stock/models/stock_warehouse.py | 2 +- addons/stock/security/ir.model.access.csv | 4 +- addons/stock/tests/common.py | 2 +- addons/stock/tests/test_move2.py | 6 +-- addons/stock/wizard/stock_picking_return.py | 2 +- .../tests/test_stock_landed_costs_rounding.py | 2 +- addons/uom/data/uom_data.xml | 50 +++++++++---------- addons/uom/models/__init__.py | 3 +- addons/uom/models/uom_uom.py | 16 +++--- addons/uom/security/ir.model.access.csv | 4 +- addons/uom/tests/test_uom.py | 2 +- addons/uom/views/uom_uom_views.xml | 16 +++--- addons/website_quote/models/sale_order.py | 2 +- addons/website_quote/models/sale_quote.py | 4 +- 71 files changed, 170 insertions(+), 157 deletions(-) diff --git a/addons/account/models/account_analytic_line.py b/addons/account/models/account_analytic_line.py index feca837b5b7..b8756ac06ce 100644 --- a/addons/account/models/account_analytic_line.py +++ b/addons/account/models/account_analytic_line.py @@ -9,7 +9,7 @@ class AccountAnalyticLine(models.Model): _description = 'Analytic Line' _order = 'date desc' - product_uom_id = fields.Many2one('product.uom', string='Unit of Measure') + product_uom_id = fields.Many2one('uom.uom', string='Unit of Measure') product_id = fields.Many2one('product.product', string='Product') general_account_id = fields.Many2one('account.account', string='Financial Account', ondelete='restrict', readonly=True, related='move_id.account_id', store=True, domain=[('deprecated', '=', False)]) diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index fe6b7659b4d..e1e3dfa0499 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -1527,7 +1527,7 @@ class AccountInvoiceLine(models.Model): help="Gives the sequence of this line when displaying the invoice.") invoice_id = fields.Many2one('account.invoice', string='Invoice Reference', ondelete='cascade', index=True) - uom_id = fields.Many2one('product.uom', string='Unit of Measure', + uom_id = fields.Many2one('uom.uom', string='Unit of Measure', ondelete='set null', index=True, oldname='uos_id') product_id = fields.Many2one('product.product', string='Product', ondelete='restrict', index=True) diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 8d0c8d27bcd..af06ac28bea 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -424,7 +424,7 @@ class AccountMoveLine(models.Model): name = fields.Char(string="Label") quantity = fields.Float(digits=dp.get_precision('Product Unit of Measure'), help="The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very useful for some reports.") - product_uom_id = fields.Many2one('product.uom', string='Unit of Measure') + product_uom_id = fields.Many2one('uom.uom', string='Unit of Measure') product_id = fields.Many2one('product.product', string='Product') debit = fields.Monetary(default=0.0, currency_field='company_currency_id') credit = fields.Monetary(default=0.0, currency_field='company_currency_id') diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index 9ef150f2eba..624a60bab11 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -83,7 +83,7 @@ class AccountInvoiceReport(models.Model): ], 'product.product': ['product_tmpl_id'], 'product.template': ['categ_id'], - 'product.uom': ['category_id', 'factor', 'name', 'uom_type'], + 'uom.uom': ['category_id', 'factor', 'name', 'uom_type'], 'res.currency.rate': ['currency_id', 'name'], 'res.partner': ['country_id'], } @@ -130,8 +130,8 @@ class AccountInvoiceReport(models.Model): JOIN res_partner partner ON ai.commercial_partner_id = partner.id LEFT JOIN product_product pr ON pr.id = ail.product_id left JOIN product_template pt ON pt.id = pr.product_tmpl_id - LEFT JOIN product_uom u ON u.id = ail.uom_id - LEFT JOIN product_uom u2 ON u2.id = pt.uom_id + LEFT JOIN uom_uom u ON u.id = ail.uom_id + LEFT JOIN uom_uom u2 ON u2.id = pt.uom_id JOIN ( -- Temporary table to decide if the qty should be added or retrieved (Invoice vs Credit Note) SELECT id,(CASE diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py index 5b993bc68a1..395ca2f753a 100644 --- a/addons/delivery/models/stock_picking.py +++ b/addons/delivery/models/stock_picking.py @@ -83,7 +83,7 @@ class StockPicking(models.Model): weight = fields.Float(compute='_cal_weight', digits=dp.get_precision('Stock Weight'), store=True) carrier_tracking_ref = fields.Char(string='Tracking Reference', copy=False) carrier_tracking_url = fields.Char(string='Tracking URL', compute='_compute_carrier_tracking_url') - weight_uom_id = fields.Many2one('product.uom', string='Unit of Measure', compute='_compute_weight_uom_id', help="Unit of measurement for Weight") + weight_uom_id = fields.Many2one('uom.uom', string='Unit of Measure', compute='_compute_weight_uom_id', help="Unit of measurement for Weight") package_ids = fields.Many2many('stock.quant.package', compute='_compute_packages', string='Packages') weight_bulk = fields.Float('Bulk Weight', compute='_compute_bulk_weight') shipping_weight = fields.Float("Weight for Shipping", compute='_compute_shipping_weight') diff --git a/addons/hr_expense/data/hr_expense_data.xml b/addons/hr_expense/data/hr_expense_data.xml index ff184837ccc..6a52987ee40 100644 --- a/addons/hr_expense/data/hr_expense_data.xml +++ b/addons/hr_expense/data/hr_expense_data.xml @@ -1,7 +1,22 @@ - + + + + expense + + + employees + + + + + + + Expenses + + Expenses 0.0 diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index d8366a9ed12..60b308dc36e 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -23,7 +23,7 @@ class HrExpense(models.Model): @api.model def _default_product_uom_id(self): - return self.env['product.uom'].search([], limit=1, order='id') + return self.env['uom.uom'].search([], limit=1, order='id') @api.model def _default_account_id(self): @@ -33,7 +33,7 @@ class HrExpense(models.Model): date = fields.Date(readonly=True, states={'draft': [('readonly', False)], 'reported': [('readonly', False)], 'refused': [('readonly', False)]}, default=fields.Date.context_today, string="Date") employee_id = fields.Many2one('hr.employee', string="Employee", required=True, readonly=True, states={'draft': [('readonly', False)], 'reported': [('readonly', False)], 'refused': [('readonly', False)]}, default=_default_employee_id) product_id = fields.Many2one('product.product', string='Product', readonly=True, states={'draft': [('readonly', False)], 'reported': [('readonly', False)], 'refused': [('readonly', False)]}, domain=[('can_be_expensed', '=', True)], required=True) - product_uom_id = fields.Many2one('product.uom', string='Unit of Measure', required=True, readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=_default_product_uom_id) + product_uom_id = fields.Many2one('uom.uom', string='Unit of Measure', required=True, readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=_default_product_uom_id) unit_amount = fields.Float("Unit Price", readonly=True, required=True, states={'draft': [('readonly', False)], 'reported': [('readonly', False)], 'refused': [('readonly', False)]}, digits=dp.get_precision('Product Price')) quantity = fields.Float(required=True, readonly=True, states={'draft': [('readonly', False)], 'reported': [('readonly', False)], 'refused': [('readonly', False)]}, digits=dp.get_precision('Product Unit of Measure'), default=1) tax_ids = fields.Many2many('account.tax', 'expense_tax', 'expense_id', 'tax_id', string='Taxes', states={'done': [('readonly', True)], 'post': [('readonly', True)]}) diff --git a/addons/hr_expense/security/ir.model.access.csv b/addons/hr_expense/security/ir.model.access.csv index c046e4ad52d..10ccbc4d729 100644 --- a/addons/hr_expense/security/ir.model.access.csv +++ b/addons/hr_expense/security/ir.model.access.csv @@ -6,7 +6,7 @@ access_hr_expense_sheet_user,hr.expense.sheet.user,model_hr_expense_sheet,hr_exp access_hr_expense_sheet_employee,hr.expense.sheet.employee,model_hr_expense_sheet,base.group_user,1,1,1,1 access_product_product_hr_expense_user,product.product.hr.expense.user,product.model_product_product,hr_expense.group_hr_expense_user,1,1,1,1 access_product_template_hr_expense_user,product.template.hr.expense.user,product.model_product_template,hr_expense.group_hr_expense_user,1,1,1,1 -access_product_uom_hr_expense_user,product.uom.hr.expense.user,uom.model_product_uom,hr_expense.group_hr_expense_user,1,1,1,1 +access_uom_uom_hr_expense_user,uom.uom.hr.expense.user,uom.model_uom_uom,hr_expense.group_hr_expense_user,1,1,1,1 access_account_journal_user,account.journal.user,account.model_account_journal,hr_expense.group_hr_expense_user,1,1,1,1 access_account_journal_employee,account.journal.employee,account.model_account_journal,base.group_user,1,0,0,0 access_account_invoice_user,account.invoice.user,account.model_account_invoice,hr_expense.group_hr_expense_user,1,1,1,1 diff --git a/addons/hr_timesheet/security/ir.model.access.csv b/addons/hr_timesheet/security/ir.model.access.csv index bdf5cbe520d..87656c6ef0c 100644 --- a/addons/hr_timesheet/security/ir.model.access.csv +++ b/addons/hr_timesheet/security/ir.model.access.csv @@ -4,6 +4,6 @@ access_account_analytic_line_portal,access_timesheets_portal,analytic.model_acco access_account_analytic_user,analytic.account.analytic.timesheet.user,analytic.model_account_analytic_account,hr_timesheet.group_hr_timesheet_user,1,1,0,0 access_product_product_user,product.product.timesheet.user,product.model_product_product,hr_timesheet.group_hr_timesheet_user,1,1,1,0 access_product_template_timesheet_user,product.template.timesheet.user,product.model_product_template,hr_timesheet.group_hr_timesheet_user,1,1,1,0 -access_product_uom_hr_timesheet,product.uom.timesheet.user,uom.model_product_uom,hr_timesheet.group_hr_timesheet_user,1,0,0,0 +access_uom_uom_hr_timesheet,uom.uom.timesheet.user,uom.model_uom_uom,hr_timesheet.group_hr_timesheet_user,1,0,0,0 access_project_project,project.project.timesheet.user,model_project_project,hr_timesheet.group_hr_timesheet_user,1,0,0,0 access_project_task,project.task.timesheet.user,model_project_task,hr_timesheet.group_hr_timesheet_user,1,1,0,0 diff --git a/addons/mrp/models/mrp_bom.py b/addons/mrp/models/mrp_bom.py index 5cdd1eace62..41cf4fcddc7 100644 --- a/addons/mrp/models/mrp_bom.py +++ b/addons/mrp/models/mrp_bom.py @@ -16,7 +16,7 @@ class MrpBom(models.Model): _order = "sequence" def _get_default_product_uom_id(self): - return self.env['product.uom'].search([], limit=1, order='id').id + return self.env['uom.uom'].search([], limit=1, order='id').id code = fields.Char('Reference') active = fields.Boolean( @@ -38,7 +38,7 @@ class MrpBom(models.Model): 'Quantity', default=1.0, digits=dp.get_precision('Unit of Measure'), required=True) product_uom_id = fields.Many2one( - 'product.uom', 'Product Unit of Measure', + 'uom.uom', 'Product Unit of Measure', default=_get_default_product_uom_id, oldname='product_uom', required=True, help="Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control") sequence = fields.Integer('Sequence', help="Gives the sequence order when displaying a list of bills of material.") @@ -180,7 +180,7 @@ class MrpBomLine(models.Model): _rec_name = "product_id" def _get_default_product_uom_id(self): - return self.env['product.uom'].search([], limit=1, order='id').id + return self.env['uom.uom'].search([], limit=1, order='id').id product_id = fields.Many2one( 'product.product', 'Product', required=True) @@ -188,7 +188,7 @@ class MrpBomLine(models.Model): 'Product Quantity', default=1.0, digits=dp.get_precision('Product Unit of Measure'), required=True) product_uom_id = fields.Many2one( - 'product.uom', 'Product Unit of Measure', + 'uom.uom', 'Product Unit of Measure', default=_get_default_product_uom_id, oldname='product_uom', required=True, help="Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control") diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index ae6e40ddbcd..97922186eb9 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -60,7 +60,7 @@ class MrpProduction(models.Model): readonly=True, required=True, track_visibility='onchange', states={'confirmed': [('readonly', False)]}) product_uom_id = fields.Many2one( - 'product.uom', 'Product Unit of Measure', + 'uom.uom', 'Product Unit of Measure', oldname='product_uom', readonly=True, required=True, states={'confirmed': [('readonly', False)]}) picking_type_id = fields.Many2one( diff --git a/addons/mrp/models/mrp_unbuild.py b/addons/mrp/models/mrp_unbuild.py index 0ff3db0a337..099f53e2a89 100644 --- a/addons/mrp/models/mrp_unbuild.py +++ b/addons/mrp/models/mrp_unbuild.py @@ -26,7 +26,7 @@ class MrpUnbuild(models.Model): 'Quantity', required=True, states={'done': [('readonly', True)]}) product_uom_id = fields.Many2one( - 'product.uom', 'Unit of Measure', + 'uom.uom', 'Unit of Measure', required=True, states={'done': [('readonly', True)]}) bom_id = fields.Many2one( 'mrp.bom', 'Bill of Material', diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index 6a6f154594c..8bac597e6a9 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -35,7 +35,7 @@ class MrpWorkorder(models.Model): related='production_id.product_id', readonly=True, help='Technical: used in views only.', store=True) product_uom_id = fields.Many2one( - 'product.uom', 'Unit of Measure', + 'uom.uom', 'Unit of Measure', related='production_id.product_uom_id', readonly=True, help='Technical: used in views only.') production_availability = fields.Selection( diff --git a/addons/mrp/security/ir.model.access.csv b/addons/mrp/security/ir.model.access.csv index da0c8235e69..ed54b330b87 100644 --- a/addons/mrp/security/ir.model.access.csv +++ b/addons/mrp/security/ir.model.access.csv @@ -22,7 +22,7 @@ access_mrp_production_stock_worker,mrp.production stock_worker,model_mrp_product access_product_product_user,product.product user,product.model_product_product,mrp.group_mrp_user,1,0,0,0 access_product_template_user,product.template user,product.model_product_template,mrp.group_mrp_user,1,0,0,0 access_product_price_history_mrp_manager,product.price.history.mrp.manager,product.model_product_price_history,mrp.group_mrp_manager,1,1,1,1 -access_product_uom_user,product.uom user,uom.model_product_uom,mrp.group_mrp_user,1,0,0,0 +access_uom_uom_user,uom.uom user,uom.model_uom_uom,mrp.group_mrp_user,1,0,0,0 access_product_supplierinfo_user,product.supplierinfo user,product.model_product_supplierinfo,mrp.group_mrp_user,1,1,1,1 access_res_partner,res.partner,base.model_res_partner,mrp.group_mrp_user,1,0,0,0 access_mrp_workorder_mrp_user,mrp.workorder.user,model_mrp_workorder,mrp.group_mrp_user,1,1,1,1 @@ -31,7 +31,7 @@ access_resource_calendar_leaves_user,mrp.resource.calendar.leaves.user,resource. access_resource_calendar_leaves_manager,mrp.resource.calendar.leaves.manager,resource.model_resource_calendar_leaves,mrp.group_mrp_manager,1,0,0,0 access_resource_calendar_attendance_mrp_user,mrp.resource.calendar.attendance.mrp.user,resource.model_resource_calendar_attendance,mrp.group_mrp_user,1,1,1,1 access_resource_calendar_attendance_manager,mrp.resource.calendar.attendance.manager,resource.model_resource_calendar_attendance,mrp.group_mrp_manager,1,1,1,1 -access_product_puom_categ,product.uom.categ,uom.model_product_uom_categ,mrp.group_mrp_user,1,0,0,0 +access_uom_category,uom.category,uom.model_uom_category,mrp.group_mrp_user,1,0,0,0 access_resource_resource,resource.resource,resource.model_resource_resource,mrp.group_mrp_user,1,0,0,0 access_resource_resource_manager,resource.resource.manager,resource.model_resource_resource,mrp.group_mrp_manager,1,1,1,1 access_product_supplierinfo_manager,product.supplierinfo user,product.model_product_supplierinfo,mrp.group_mrp_manager,1,0,0,0 @@ -42,8 +42,8 @@ access_stock_warehouse_orderpoint_user,stock.warehouse.orderpoint,stock.model_st access_stock_picking_mrp_manager,stock.picking mrp_manager,stock.model_stock_picking,mrp.group_mrp_manager,1,0,0,0 access_mrp_bom_stockuser,mrp.bom,model_mrp_bom,stock.group_stock_user,1,0,0,0 access_mrp_bom_line_stockuser,mrp.bom.line,model_mrp_bom_line,stock.group_stock_user,1,0,0,0 -access_product_uom_categ_mrp_manager,product.uom.categ mrp_manager,uom.model_product_uom_categ,mrp.group_mrp_manager,1,1,1,1 -access_product_uom_mrp_manager,product.uom mrp_manager,uom.model_product_uom,mrp.group_mrp_manager,1,1,1,1 +access_uom_category_mrp_manager,uom.category mrp_manager,uom.model_uom_category,mrp.group_mrp_manager,1,1,1,1 +access_uom_uom_mrp_manager,uom.uom mrp_manager,uom.model_uom_uom,mrp.group_mrp_manager,1,1,1,1 access_product_category_mrp_manager,product.category mrp_manager,product.model_product_category,mrp.group_mrp_manager,1,1,1,1 access_product_template_mrp_manager,product.template mrp_manager,product.model_product_template,mrp.group_mrp_manager,1,1,1,1 access_product_product_mrp_manager,product.product mrp_manager,product.model_product_product,mrp.group_mrp_manager,1,1,1,1 diff --git a/addons/mrp/wizard/mrp_product_produce.py b/addons/mrp/wizard/mrp_product_produce.py index 15c1684561e..b2705050636 100644 --- a/addons/mrp/wizard/mrp_product_produce.py +++ b/addons/mrp/wizard/mrp_product_produce.py @@ -81,7 +81,7 @@ class MrpProductProduce(models.TransientModel): production_id = fields.Many2one('mrp.production', 'Production') product_id = fields.Many2one('product.product', 'Product') product_qty = fields.Float(string='Quantity', digits=dp.get_precision('Product Unit of Measure'), required=True) - product_uom_id = fields.Many2one('product.uom', 'Unit of Measure') + product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure') lot_id = fields.Many2one('stock.production.lot', string='Lot') produce_line_ids = fields.One2many('mrp.product.produce.line', 'product_produce_id', string='Product to Track') product_tracking = fields.Selection(related="product_id.tracking") @@ -177,7 +177,7 @@ class MrpProductProduceLine(models.TransientModel): product_id = fields.Many2one('product.product', 'Product') lot_id = fields.Many2one('stock.production.lot', 'Lot') qty_to_consume = fields.Float('To Consume') - product_uom_id = fields.Many2one('product.uom', 'Unit of Measure') + product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure') qty_done = fields.Float('Done') move_id = fields.Many2one('stock.move') diff --git a/addons/mrp_byproduct/models/mrp_subproduct.py b/addons/mrp_byproduct/models/mrp_subproduct.py index 18b7fbb4733..7d8ab5e792a 100644 --- a/addons/mrp_byproduct/models/mrp_subproduct.py +++ b/addons/mrp_byproduct/models/mrp_subproduct.py @@ -13,7 +13,7 @@ class MrpSubProduct(models.Model): product_qty = fields.Float( 'Product Qty', default=1.0, digits=dp.get_precision('Product Unit of Measure'), required=True) - product_uom_id = fields.Many2one('product.uom', 'Unit of Measure', required=True) + product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure', required=True) bom_id = fields.Many2one('mrp.bom', 'BoM', ondelete='cascade') operation_id = fields.Many2one('mrp.routing.workcenter', 'Produced at Operation') diff --git a/addons/mrp_byproduct/wizard/change_production_qty.py b/addons/mrp_byproduct/wizard/change_production_qty.py index aaec431c6f3..0749c06d44e 100644 --- a/addons/mrp_byproduct/wizard/change_production_qty.py +++ b/addons/mrp_byproduct/wizard/change_production_qty.py @@ -11,7 +11,7 @@ class ChangeProductionQty(models.TransientModel): def _update_product_to_produce(self, prod, qty): super(ChangeProductionQty, self)._update_product_to_produce(prod, qty) Production = self.env['mrp.production'] - UoM = self.env['product.uom'] + UoM = self.env['uom.uom'] for sub_product_line in prod.bom_id.sub_products: move = prod.move_finished_ids.filtered(lambda x: x.subproduct_id == sub_product_line and x.state not in ('done', 'cancel')) if move: diff --git a/addons/point_of_sale/data/point_of_sale_data.xml b/addons/point_of_sale/data/point_of_sale_data.xml index bd1632b9acd..22ec60dbd4e 100644 --- a/addons/point_of_sale/data/point_of_sale_data.xml +++ b/addons/point_of_sale/data/point_of_sale_data.xml @@ -54,7 +54,7 @@ 20 - + True diff --git a/addons/point_of_sale/models/product.py b/addons/point_of_sale/models/product.py index e1a85cd7c4a..9c9af81000d 100644 --- a/addons/point_of_sale/models/product.py +++ b/addons/point_of_sale/models/product.py @@ -22,14 +22,14 @@ class ProductTemplate(models.Model): return super(ProductTemplate, self).unlink() -class ProductUomCateg(models.Model): - _inherit = 'product.uom.categ' +class UomCateg(models.Model): + _inherit = 'uom.category' is_pos_groupable = fields.Boolean(string='Group Products in POS', help="Check if you want to group products of this category in point of sale orders") -class ProductUom(models.Model): - _inherit = 'product.uom' +class Uom(models.Model): + _inherit = 'uom.uom' is_pos_groupable = fields.Boolean(related='category_id.is_pos_groupable') diff --git a/addons/point_of_sale/report/pos_order_report.py b/addons/point_of_sale/report/pos_order_report.py index d4ad5a0bdf4..abddc6a4005 100644 --- a/addons/point_of_sale/report/pos_order_report.py +++ b/addons/point_of_sale/report/pos_order_report.py @@ -74,7 +74,7 @@ class PosOrderReport(models.Model): LEFT JOIN pos_order s ON (s.id=l.order_id) LEFT JOIN product_product p ON (l.product_id=p.id) LEFT JOIN product_template pt ON (p.product_tmpl_id=pt.id) - LEFT JOIN product_uom u ON (u.id=pt.uom_id) + LEFT JOIN uom_uom u ON (u.id=pt.uom_id) LEFT JOIN pos_session ps ON (s.session_id=ps.id) LEFT JOIN pos_config pc ON (ps.config_id=pc.id) """ diff --git a/addons/point_of_sale/security/ir.model.access.csv b/addons/point_of_sale/security/ir.model.access.csv index 15a855c44f7..1a3a506b90e 100644 --- a/addons/point_of_sale/security/ir.model.access.csv +++ b/addons/point_of_sale/security/ir.model.access.csv @@ -22,7 +22,7 @@ access_product_product_supplierinfo_user,product.supplierinfo user,product.model access_product_product_packaging_user,product.packaging user,product.model_product_packaging,group_pos_user,1,0,0,0 access_stock_warehouse_manager,stock.warehouse manager,stock.model_stock_warehouse,group_pos_manager,1,0,0,0 access_stock_location_manager,stock.location manager,stock.model_stock_location,group_pos_manager,1,0,0,0 -access_product_uom_manager,product.uom manager,uom.model_product_uom,group_pos_manager,1,1,1,1 +access_uom_uom_manager,uom.uom manager,uom.model_uom_uom,group_pos_manager,1,1,1,1 access_product_category_manager,product.category manager,product.model_product_category,group_pos_manager,1,1,1,1 access_product_pricelist_manager,product.pricelist manager,product.model_product_pricelist,group_pos_manager,1,1,1,1 access_product_pricelist_user,product.pricelist user,product.model_product_pricelist,group_pos_user,1,0,0,0 diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 920d703506d..dba6b7fb0c9 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -172,7 +172,7 @@ exports.PosModel = Backbone.Model.extend({ } }, },{ - model: 'product.uom', + model: 'uom.uom', fields: [], domain: null, context: function(self){ return { active_test: false }; }, diff --git a/addons/point_of_sale/views/product_view.xml b/addons/point_of_sale/views/product_view.xml index c3901616c5b..084aa11efeb 100644 --- a/addons/point_of_sale/views/product_view.xml +++ b/addons/point_of_sale/views/product_view.xml @@ -83,8 +83,8 @@ sequence="20"/> - product.uom.categ.form.inherit - product.uom.categ + uom.category.form.inherit + uom.category diff --git a/addons/pos_sale/report/report_all_channels_sales.py b/addons/pos_sale/report/report_all_channels_sales.py index 1baf9caab89..5683f68a8ab 100644 --- a/addons/pos_sale/report/report_all_channels_sales.py +++ b/addons/pos_sale/report/report_all_channels_sales.py @@ -36,7 +36,7 @@ class PosSaleReport(models.Model): LEFT JOIN product_category AS pc ON (pt.categ_id = pc.id) LEFT JOIN res_company AS rc ON (pos.company_id = rc.id) LEFT JOIN res_partner rp ON (rc.partner_id = rp.id) - LEFT JOIN product_uom u ON (u.id=pt.uom_id) + LEFT JOIN uom_uom u ON (u.id=pt.uom_id) """ return pos_str diff --git a/addons/product/data/product_data.xml b/addons/product/data/product_data.xml index 68e64b39e89..803deddfa28 100644 --- a/addons/product/data/product_data.xml +++ b/addons/product/data/product_data.xml @@ -16,7 +16,6 @@ - Product Price 2 diff --git a/addons/product/models/product.py b/addons/product/models/product.py index 59a5d45523b..e9944afe5f7 100644 --- a/addons/product/models/product.py +++ b/addons/product/models/product.py @@ -176,7 +176,7 @@ class ProductProduct(models.Model): def _set_product_price(self): for product in self: if self._context.get('uom'): - value = self.env['product.uom'].browse(self._context['uom'])._compute_price(product.price, product.uom_id) + value = self.env['uom.uom'].browse(self._context['uom'])._compute_price(product.price, product.uom_id) else: value = product.price value -= product.price_extra @@ -185,7 +185,7 @@ class ProductProduct(models.Model): def _set_product_lst_price(self): for product in self: if self._context.get('uom'): - value = self.env['product.uom'].browse(self._context['uom'])._compute_price(product.lst_price, product.uom_id) + value = self.env['uom.uom'].browse(self._context['uom'])._compute_price(product.lst_price, product.uom_id) else: value = product.lst_price value -= product.price_extra @@ -205,7 +205,7 @@ class ProductProduct(models.Model): def _compute_product_lst_price(self): to_uom = None if 'uom' in self._context: - to_uom = self.env['product.uom'].browse([self._context['uom']]) + to_uom = self.env['uom.uom'].browse([self._context['uom']]) for product in self: if to_uom: @@ -502,7 +502,7 @@ class ProductProduct(models.Model): # TDE FIXME: delegate to template or not ? fields are reencoded here ... # compatibility about context keys used a bit everywhere in the code if not uom and self._context.get('uom'): - uom = self.env['product.uom'].browse(self._context['uom']) + uom = self.env['uom.uom'].browse(self._context['uom']) if not currency and self._context.get('currency'): currency = self.env['res.currency'].browse(self._context['currency']) @@ -592,7 +592,7 @@ class SupplierInfo(models.Model): sequence = fields.Integer( 'Sequence', default=1, help="Assigns the priority to the list of product vendor.") product_uom = fields.Many2one( - 'product.uom', 'Vendor Unit of Measure', + 'uom.uom', 'Vendor Unit of Measure', readonly="1", related='product_tmpl_id.uom_po_id', help="This comes from the product form.") min_qty = fields.Float( diff --git a/addons/product/models/product_pricelist.py b/addons/product/models/product_pricelist.py index 3df96254141..7c260b98408 100644 --- a/addons/product/models/product_pricelist.py +++ b/addons/product/models/product_pricelist.py @@ -170,7 +170,7 @@ class Pricelist(models.Model): qty_in_product_uom = qty if qty_uom_id != product.uom_id.id: try: - qty_in_product_uom = self.env['product.uom'].browse([self._context['uom']])._compute_quantity(qty, product.uom_id) + qty_in_product_uom = self.env['uom.uom'].browse([self._context['uom']])._compute_quantity(qty, product.uom_id) except UserError: # Ignored - incompatible UoM in context, use default product UoM pass @@ -179,7 +179,7 @@ class Pricelist(models.Model): # TDE SURPRISE: product can actually be a template price = product.price_compute('list_price')[product.id] - price_uom = self.env['product.uom'].browse([qty_uom_id]) + price_uom = self.env['uom.uom'].browse([qty_uom_id]) for rule in items: if rule.min_quantity and qty_in_product_uom < rule.min_quantity: continue diff --git a/addons/product/models/product_template.py b/addons/product/models/product_template.py index 7fac535ccc1..b4ec38f05db 100644 --- a/addons/product/models/product_template.py +++ b/addons/product/models/product_template.py @@ -31,7 +31,7 @@ class ProductTemplate(models.Model): raise RedirectWarning(err_msg, self.env.ref('product.product_category_action_form').id, redir_msg) def _get_default_uom_id(self): - return self.env["product.uom"].search([], limit=1, order='id').id + return self.env["uom.uom"].search([], limit=1, order='id').id name = fields.Char('Name', index=True, required=True, translate=True) sequence = fields.Integer('Sequence', default=1, help='Gives the sequence order when displaying a product list') @@ -89,7 +89,7 @@ class ProductTemplate(models.Model): 'Weight', compute='_compute_weight', digits=dp.get_precision('Stock Weight'), inverse='_set_weight', store=True, help="The weight of the contents in Kg, not including any packaging, etc.") - weight_uom_id = fields.Many2one('product.uom', string='Weight Unit of Measure', compute='_compute_weight_uom_id') + weight_uom_id = fields.Many2one('uom.uom', string='Weight Unit of Measure', compute='_compute_weight_uom_id') weight_uom_name = fields.Char(string='Weight unit of measure label', related='weight_uom_id.name', readonly=True) sale_ok = fields.Boolean( @@ -100,11 +100,11 @@ class ProductTemplate(models.Model): 'product.pricelist', 'Pricelist', store=False, help='Technical field. Used for searching on pricelists, not stored in database.') uom_id = fields.Many2one( - 'product.uom', 'Unit of Measure', + 'uom.uom', 'Unit of Measure', default=_get_default_uom_id, required=True, help="Default Unit of Measure used for all stock operation.") uom_po_id = fields.Many2one( - 'product.uom', 'Purchase Unit of Measure', + 'uom.uom', 'Purchase Unit of Measure', default=_get_default_uom_id, required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure.") company_id = fields.Many2one( @@ -193,7 +193,7 @@ class ProductTemplate(models.Model): def _set_template_price(self): if self._context.get('uom'): for template in self: - value = self.env['product.uom'].browse(self._context['uom'])._compute_price(template.price, template.uom_id) + value = self.env['uom.uom'].browse(self._context['uom'])._compute_price(template.price, template.uom_id) template.write({'list_price': value}) else: self.write({'list_price': self.price}) @@ -379,7 +379,7 @@ class ProductTemplate(models.Model): # TDE FIXME: delegate to template or not ? fields are reencoded here ... # compatibility about context keys used a bit everywhere in the code if not uom and self._context.get('uom'): - uom = self.env['product.uom'].browse(self._context['uom']) + uom = self.env['uom.uom'].browse(self._context['uom']) if not currency and self._context.get('currency'): currency = self.env['res.currency'].browse(self._context['currency']) diff --git a/addons/product/tests/common.py b/addons/product/tests/common.py index ff4eddaf5c1..cc812db81a2 100644 --- a/addons/product/tests/common.py +++ b/addons/product/tests/common.py @@ -16,7 +16,7 @@ class TestProductCommon(common.SavepointCase): }) # Product environment related data - Uom = cls.env['product.uom'] + Uom = cls.env['uom.uom'] cls.uom_unit = cls.env.ref('uom.product_uom_unit') cls.uom_dozen = cls.env.ref('uom.product_uom_dozen') cls.uom_dunit = Uom.create({ diff --git a/addons/project/models/analytic.py b/addons/project/models/analytic.py index a1e41eae55e..9cb748e1bac 100644 --- a/addons/project/models/analytic.py +++ b/addons/project/models/analytic.py @@ -9,7 +9,7 @@ class AccountAnalyticAccount(models.Model): _inherit = 'account.analytic.account' _description = 'Analytic Account' - company_uom_id = fields.Many2one('product.uom', related='company_id.project_time_mode_id', string="Company UOM") + company_uom_id = fields.Many2one('uom.uom', related='company_id.project_time_mode_id', string="Company UOM") project_ids = fields.One2many('project.project', 'analytic_account_id', string='Projects') project_count = fields.Integer("Project Count", compute='_compute_project_count') diff --git a/addons/project/models/res_company.py b/addons/project/models/res_company.py index ebbb58e4039..550bff5ad53 100644 --- a/addons/project/models/res_company.py +++ b/addons/project/models/res_company.py @@ -7,7 +7,7 @@ from odoo import fields, models class ResCompany(models.Model): _inherit = 'res.company' - project_time_mode_id = fields.Many2one('product.uom', string='Project Time Unit', + project_time_mode_id = fields.Many2one('uom.uom', string='Project Time Unit', default=lambda s: s.env.ref('uom.product_uom_hour', raise_if_not_found=False), help="This will set the unit of measure used in projects and tasks.\n" "If you use the timesheet linked to projects, don't " diff --git a/addons/project/models/res_config_settings.py b/addons/project/models/res_config_settings.py index 657a75ff6a1..a7ea5f8a198 100644 --- a/addons/project/models/res_config_settings.py +++ b/addons/project/models/res_config_settings.py @@ -12,7 +12,7 @@ class ResConfigSettings(models.TransientModel): group_subtask_project = fields.Boolean("Sub-tasks", implied_group="project.group_subtask_project") group_project_rating = fields.Boolean("Use Rating on Project", implied_group='project.group_project_rating') project_time_mode_id = fields.Many2one( - 'product.uom', related='company_id.project_time_mode_id', string='Project Time Unit', + 'uom.uom', related='company_id.project_time_mode_id', string='Project Time Unit', help="This will set the unit of measure used in projects and tasks.\n" "If you use the timesheet linked to projects, don't " "forget to setup the right unit of measure in your employees.") diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py index 4c15c920acc..2942428e3af 100644 --- a/addons/purchase/models/purchase.py +++ b/addons/purchase/models/purchase.py @@ -642,7 +642,7 @@ class PurchaseOrderLine(models.Model): product_qty = fields.Float(string='Quantity', digits=dp.get_precision('Product Unit of Measure'), required=True) date_planned = fields.Datetime(string='Scheduled Date', required=True, index=True) taxes_id = fields.Many2many('account.tax', string='Taxes', domain=['|', ('active', '=', False), ('active', '=', True)]) - product_uom = fields.Many2one('product.uom', string='Product Unit of Measure', required=True) + product_uom = fields.Many2one('uom.uom', string='Product Unit of Measure', required=True) product_id = fields.Many2one('product.product', string='Product', domain=[('purchase_ok', '=', True)], change_default=True, required=True) product_image = fields.Binary( 'Product Image', related="product_id.image", diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py index 95ddfe49bc5..4f72b3ceaf5 100644 --- a/addons/purchase/report/purchase_report.py +++ b/addons/purchase/report/purchase_report.py @@ -27,7 +27,7 @@ class PurchaseReport(models.Model): picking_type_id = fields.Many2one('stock.warehouse', 'Warehouse', readonly=True) partner_id = fields.Many2one('res.partner', 'Vendor', readonly=True) date_approve = fields.Date('Date Approved', readonly=True) - product_uom = fields.Many2one('product.uom', 'Reference Unit of Measure', required=True) + product_uom = fields.Many2one('uom.uom', 'Reference Unit of Measure', required=True) company_id = fields.Many2one('res.company', 'Company', readonly=True) currency_id = fields.Many2one('res.currency', 'Currency', readonly=True) user_id = fields.Many2one('res.users', 'Purchase Representative', readonly=True) @@ -89,8 +89,8 @@ class PurchaseReport(models.Model): left join product_product p on (l.product_id=p.id) left join product_template t on (p.product_tmpl_id=t.id) LEFT JOIN ir_property ip ON (ip.name='standard_price' AND ip.res_id=CONCAT('product.template,',t.id) AND ip.company_id=s.company_id) - left join product_uom u on (u.id=l.product_uom) - left join product_uom u2 on (u2.id=t.uom_id) + left join uom_uom u on (u.id=l.product_uom) + left join uom_uom u2 on (u2.id=t.uom_id) left join stock_picking_type spt on (spt.id=s.picking_type_id) left join account_analytic_account analytic_account on (l.account_analytic_id = analytic_account.id) left join currency_rate cr on (cr.currency_id = s.currency_id and diff --git a/addons/purchase/security/ir.model.access.csv b/addons/purchase/security/ir.model.access.csv index eef333c73cb..1740c592902 100644 --- a/addons/purchase/security/ir.model.access.csv +++ b/addons/purchase/security/ir.model.access.csv @@ -37,8 +37,8 @@ access_account_move,account.move,account.model_account_move,group_purchase_user, access_account_move_line,account.move.line,account.model_account_move_line,group_purchase_user,1,0,0,0 access_account_analytic_line,account.analytic.line,account.model_account_analytic_line,group_purchase_user,1,0,0,0 access_res_partner_purchase_manager,res.partner.purchase.manager,base.model_res_partner,group_purchase_manager,1,1,1,0 -access_product_uom_categ_purchase_manager,product.uom.categ purchase_manager,uom.model_product_uom_categ,purchase.group_purchase_manager,1,1,1,1 -access_product_uom_purchase_manager,product.uom purchase_manager,uom.model_product_uom,purchase.group_purchase_manager,1,1,1,1 +access_uom_category_purchase_manager,uom.category purchase_manager,uom.model_uom_category,purchase.group_purchase_manager,1,1,1,1 +access_uom_uom_purchase_manager,uom.uom purchase_manager,uom.model_uom_uom,purchase.group_purchase_manager,1,1,1,1 access_product_category_purchase_manager,product.category purchase_manager,product.model_product_category,purchase.group_purchase_manager,1,1,1,1 access_product_template_purchase_manager,product.template purchase_manager,product.model_product_template,purchase.group_purchase_manager,1,1,1,1 access_product_packaging_purchase_manager,product.packaging purchase_manager,product.model_product_packaging,purchase.group_purchase_manager,1,1,1,1 diff --git a/addons/purchase/tests/test_create_picking.py b/addons/purchase/tests/test_create_picking.py index 9cdfe0fb4fd..49711eb32a9 100644 --- a/addons/purchase/tests/test_create_picking.py +++ b/addons/purchase/tests/test_create_picking.py @@ -182,8 +182,8 @@ class TestCreatePicking(common.TestProductCommon): updated on the moves. Edit the ir.config_parameter to propagate the uom of the purchase order lines to the moves and edit a last time the ordered quantities. Receive, check the quantities. """ - uom_unit = self.env.ref('product.product_uom_unit') - uom_dozen = self.env.ref('product.product_uom_dozen') + uom_unit = self.env.ref('uom.product_uom_unit') + uom_dozen = self.env.ref('uom.product_uom_dozen') self.assertEqual(self.product_id_1.uom_po_id.id, uom_unit.id) diff --git a/addons/purchase/tests/test_onchange_product.py b/addons/purchase/tests/test_onchange_product.py index 5a838fdbbdd..82e359c7625 100644 --- a/addons/purchase/tests/test_onchange_product.py +++ b/addons/purchase/tests/test_onchange_product.py @@ -20,7 +20,7 @@ class TestOnchangeProductId(TransactionCase): self.res_partner_model = self.env['res.partner'] self.product_tmpl_model = self.env['product.template'] self.product_model = self.env['product.product'] - self.product_uom_model = self.env['product.uom'] + self.product_uom_model = self.env['uom.uom'] self.supplierinfo_model = self.env["product.supplierinfo"] def test_onchange_product_id(self): diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py index 722facea3f7..4b03b15fb3f 100644 --- a/addons/purchase_requisition/models/purchase_requisition.py +++ b/addons/purchase_requisition/models/purchase_requisition.py @@ -194,7 +194,7 @@ class PurchaseRequisitionLine(models.Model): _rec_name = 'product_id' product_id = fields.Many2one('product.product', string='Product', domain=[('purchase_ok', '=', True)], required=True) - product_uom_id = fields.Many2one('product.uom', string='Product Unit of Measure') + product_uom_id = fields.Many2one('uom.uom', string='Product Unit of Measure') product_qty = fields.Float(string='Quantity', digits=dp.get_precision('Product Unit of Measure')) price_unit = fields.Float(string='Unit Price', digits=dp.get_precision('Product Price')) qty_ordered = fields.Float(compute='_compute_ordered_qty', string='Ordered Quantities') diff --git a/addons/purchase_requisition/tests/test_purchase_requisition.py b/addons/purchase_requisition/tests/test_purchase_requisition.py index f3dd228d5fb..1b4ff7c1da0 100644 --- a/addons/purchase_requisition/tests/test_purchase_requisition.py +++ b/addons/purchase_requisition/tests/test_purchase_requisition.py @@ -50,7 +50,7 @@ class TestPurchaseRequisition(common.TransactionCase): warehouse = self.env['stock.warehouse'].browse(self.ref('stock.warehouse0')) product = self.env['product.product'].browse(self.product_13_id) product.write({'route_ids': [(4, self.ref('purchase.route_warehouse0_buy'))]}) - self.env['procurement.group'].run(product, 14, self.env['product.uom'].browse(self.ref('uom.product_uom_unit')), warehouse.lot_stock_id, '/', '/', + self.env['procurement.group'].run(product, 14, self.env['uom.uom'].browse(self.ref('uom.product_uom_unit')), warehouse.lot_stock_id, '/', '/', { 'warehouse_id': warehouse, 'date_planned': date_planned, diff --git a/addons/repair/models/repair.py b/addons/repair/models/repair.py index dd7c7ddf5f2..807f2b91117 100644 --- a/addons/repair/models/repair.py +++ b/addons/repair/models/repair.py @@ -41,7 +41,7 @@ class Repair(models.Model): default=1.0, digits=dp.get_precision('Product Unit of Measure'), readonly=True, required=True, states={'draft': [('readonly', False)]}) product_uom = fields.Many2one( - 'product.uom', 'Product Unit of Measure', + 'uom.uom', 'Product Unit of Measure', readonly=True, required=True, states={'draft': [('readonly', False)]}) partner_id = fields.Many2one( 'res.partner', 'Customer', @@ -504,7 +504,7 @@ class RepairLine(models.Model): 'Quantity', default=1.0, digits=dp.get_precision('Product Unit of Measure'), required=True) product_uom = fields.Many2one( - 'product.uom', 'Product Unit of Measure', + 'uom.uom', 'Product Unit of Measure', required=True) invoice_line_id = fields.Many2one( 'account.invoice.line', 'Invoice Line', @@ -608,7 +608,7 @@ class RepairFee(models.Model): product_id = fields.Many2one('product.product', 'Product') product_uom_qty = fields.Float('Quantity', digits=dp.get_precision('Product Unit of Measure'), required=True, default=1.0) price_unit = fields.Float('Unit Price', required=True) - product_uom = fields.Many2one('product.uom', 'Product Unit of Measure', required=True) + product_uom = fields.Many2one('uom.uom', 'Product Unit of Measure', required=True) price_subtotal = fields.Float('Subtotal', compute='_compute_price_subtotal', store=True, digits=0) tax_id = fields.Many2many('account.tax', 'repair_fee_line_tax', 'repair_fee_line_id', 'tax_id', 'Taxes') invoice_line_id = fields.Many2one('account.invoice.line', 'Invoice Line', copy=False, readonly=True) diff --git a/addons/report_intrastat/report/report_intrastat_report.py b/addons/report_intrastat/report/report_intrastat_report.py index 40dd21df0a8..d873c9d3551 100644 --- a/addons/report_intrastat/report/report_intrastat_report.py +++ b/addons/report_intrastat/report/report_intrastat_report.py @@ -61,8 +61,8 @@ class ReportIntrastat(models.Model): left join (product_template pt left join product_product pp on (pp.product_tmpl_id = pt.id)) on (inv_line.product_id = pp.id) - left join product_uom uom on uom.id=inv_line.uom_id - left join product_uom puom on puom.id = pt.uom_id + left join uom_uom uom on uom.id=inv_line.uom_id + left join uom_uom puom on puom.id = pt.uom_id left join report_intrastat_code intrastat on pt.intrastat_id = intrastat.id left join (res_partner inv_address left join res_country inv_country on (inv_country.id = inv_address.country_id)) diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 09a387c9b43..134bb737614 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -868,7 +868,7 @@ class SaleOrderLine(models.Model): product_id = fields.Many2one('product.product', string='Product', domain=[('sale_ok', '=', True)], change_default=True, ondelete='restrict', required=True) product_updatable = fields.Boolean(compute='_compute_product_updatable', string='Can Edit Product', readonly=True, default=True) product_uom_qty = fields.Float(string='Ordered Quantity', digits=dp.get_precision('Product Unit of Measure'), required=True, default=1.0) - product_uom = fields.Many2one('product.uom', string='Unit of Measure', required=True) + product_uom = fields.Many2one('uom.uom', string='Unit of Measure', required=True) # Non-stored related field to allow portal user to see the image of the product he has ordered product_image = fields.Binary('Product Image', related="product_id.image", store=False) @@ -974,7 +974,7 @@ class SaleOrderLine(models.Model): # browse so lines and product uoms here to make them share the same prefetch lines_map = {line.id: line for line in self} product_uom_ids = [item['product_uom_id'][0] for item in data if item['product_uom_id']] - product_uom_map = {uom.id: uom for uom in self.env['product.uom'].browse(product_uom_ids)} + product_uom_map = {uom.id: uom for uom in self.env['uom.uom'].browse(product_uom_ids)} for item in data: if not item['product_uom_id']: continue diff --git a/addons/sale/report/report_all_channels_sales.py b/addons/sale/report/report_all_channels_sales.py index 5e1f9eca28b..50498c8825b 100644 --- a/addons/sale/report/report_all_channels_sales.py +++ b/addons/sale/report/report_all_channels_sales.py @@ -55,8 +55,8 @@ class PosSaleReport(models.Model): cr.company_id = so.company_id AND cr.date_start <= COALESCE(so.date_order, now()) AND (cr.date_end IS NULL OR cr.date_end > COALESCE(so.date_order, now()))) - LEFT JOIN product_uom u on (u.id=sol.product_uom) - LEFT JOIN product_uom u2 on (u2.id=pt.uom_id) + LEFT JOIN uom_uom u on (u.id=sol.product_uom) + LEFT JOIN uom_uom u2 on (u2.id=pt.uom_id) """ % self.env['res.currency']._select_companies_rates() return so_str diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index e1992dcca8e..6728d893bf7 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -16,7 +16,7 @@ class SaleReport(models.Model): date = fields.Datetime('Date Order', readonly=True) confirmation_date = fields.Datetime('Confirmation Date', readonly=True) product_id = fields.Many2one('product.product', 'Product', readonly=True) - product_uom = fields.Many2one('product.uom', 'Unit of Measure', readonly=True) + product_uom = fields.Many2one('uom.uom', 'Unit of Measure', readonly=True) product_uom_qty = fields.Float('Qty Ordered', readonly=True) qty_delivered = fields.Float('Qty Delivered', readonly=True) qty_to_invoice = fields.Float('Qty To Invoice', readonly=True) @@ -88,8 +88,8 @@ class SaleReport(models.Model): join res_partner partner on s.partner_id = partner.id left join product_product p on (l.product_id=p.id) left join product_template t on (p.product_tmpl_id=t.id) - left join product_uom u on (u.id=l.product_uom) - left join product_uom u2 on (u2.id=t.uom_id) + left join uom_uom u on (u.id=l.product_uom) + left join uom_uom u2 on (u2.id=t.uom_id) left join product_pricelist pp on (s.pricelist_id = pp.id) left join currency_rate cr on (cr.currency_id = pp.currency_id and cr.company_id = s.company_id and diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv index 2c3d1bc2833..1a559ba8f4c 100644 --- a/addons/sale/security/ir.model.access.csv +++ b/addons/sale/security/ir.model.access.csv @@ -22,11 +22,11 @@ access_res_partner_sale_manager,res.partner.sale.manager,base.model_res_partner, access_product_template_sale_user,product.template sale use,product.model_product_template,sales_team.group_sale_salesman,1,0,0,0 access_product_product_sale_user,product.product sale use,product.model_product_product,sales_team.group_sale_salesman,1,0,0,0 access_account_tax_user,account.tax.user,account.model_account_tax,sales_team.group_sale_salesman,1,0,0,0 -access_product_uom_user,product.uom.user,uom.model_product_uom,sales_team.group_sale_salesman,1,0,0,0 +access_uom_uom_user,uom.uom.user,uom.model_uom_uom,sales_team.group_sale_salesman,1,0,0,0 access_product_pricelist_sale_user,product.pricelist.sale.user,product.model_product_pricelist,sales_team.group_sale_salesman,1,0,0,0 access_account_account_salesman,account_account salesman,account.model_account_account,sales_team.group_sale_salesman,1,0,0,0 -access_product_uom_categ_sale_manager,product.uom.categ salemanager,uom.model_product_uom_categ,sales_team.group_sale_manager,1,1,1,1 -access_product_uom_sale_manager,product.uom salemanager,uom.model_product_uom,sales_team.group_sale_manager,1,1,1,1 +access_uom_category_sale_manager,uom.category salemanager,uom.model_uom_category,sales_team.group_sale_manager,1,1,1,1 +access_uom_uom_sale_manager,uom.uom salemanager,uom.model_uom_uom,sales_team.group_sale_manager,1,1,1,1 access_product_category_sale_manager,product.category salemanager,product.model_product_category,sales_team.group_sale_manager,1,1,1,1 access_product_supplierinfo_user,product.supplierinfo.user,product.model_product_supplierinfo,sales_team.group_sale_salesman,1,0,0,0 access_product_supplierinfo_sale_manager,product.supplierinfo salemanager,product.model_product_supplierinfo,sales_team.group_sale_manager,1,1,1,1 diff --git a/addons/sale/tests/test_product_id_change.py b/addons/sale/tests/test_product_id_change.py index bf61c8d644f..7bc43e00ef0 100644 --- a/addons/sale/tests/test_product_id_change.py +++ b/addons/sale/tests/test_product_id_change.py @@ -19,7 +19,7 @@ class TestOnchangeProductId(TransactionCase): self.res_partner_model = self.env['res.partner'] self.product_tmpl_model = self.env['product.template'] self.product_model = self.env['product.product'] - self.product_uom_model = self.env['product.uom'] + self.product_uom_model = self.env['uom.uom'] self.supplierinfo_model = self.env["product.supplierinfo"] self.pricelist_model = self.env['product.pricelist'] diff --git a/addons/sale_margin/models/sale_order.py b/addons/sale_margin/models/sale_order.py index 2aac5cb9936..57988de2ab9 100644 --- a/addons/sale_margin/models/sale_order.py +++ b/addons/sale_margin/models/sale_order.py @@ -49,7 +49,7 @@ class SaleOrderLine(models.Model): if 'purchase_price' not in vals: order_id = self.env['sale.order'].browse(vals['order_id']) product_id = self.env['product.product'].browse(vals['product_id']) - product_uom_id = self.env['product.uom'].browse(vals['product_uom']) + product_uom_id = self.env['uom.uom'].browse(vals['product_uom']) vals['purchase_price'] = self._compute_margin(order_id, product_id, product_uom_id) diff --git a/addons/sale_mrp/models/sale_mrp.py b/addons/sale_mrp/models/sale_mrp.py index 596fbba50ec..7e5b3cb6291 100644 --- a/addons/sale_mrp/models/sale_mrp.py +++ b/addons/sale_mrp/models/sale_mrp.py @@ -36,7 +36,7 @@ class SaleOrderLine(models.Model): if components.get(product, False): if uom.id != components[product]['uom']: from_uom = uom - to_uom = self.env['product.uom'].browse(components[product]['uom']) + to_uom = self.env['uom.uom'].browse(components[product]['uom']) qty = from_uom._compute_quantity(qty, to_uom) components[product]['qty'] += qty else: diff --git a/addons/sale_mrp/tests/test_sale_mrp_flow.py b/addons/sale_mrp/tests/test_sale_mrp_flow.py index ee2a5c8c12e..8c6fde71db9 100644 --- a/addons/sale_mrp/tests/test_sale_mrp_flow.py +++ b/addons/sale_mrp/tests/test_sale_mrp_flow.py @@ -13,7 +13,7 @@ class TestSaleMrpFlow(common.TransactionCase): super(TestSaleMrpFlow, self).setUp() # Useful models self.StockMove = self.env['stock.move'] - self.ProductUom = self.env['product.uom'] + self.UoM = self.env['uom.uom'] self.MrpProduction = self.env['mrp.production'] self.Inventory = self.env['stock.inventory'] self.InventoryLine = self.env['stock.inventory.line'] @@ -37,26 +37,26 @@ class TestSaleMrpFlow(common.TransactionCase): p.route_ids.add(r) return p.save() - self.uom_kg = self.ProductUom.create({ + self.uom_kg = self.UoM.create({ 'name': 'Test-KG', 'category_id': self.categ_kgm.id, 'factor_inv': 1, 'factor': 1, 'uom_type': 'reference', 'rounding': 0.000001}) - self.uom_gm = self.ProductUom.create({ + self.uom_gm = self.UoM.create({ 'name': 'Test-G', 'category_id': self.categ_kgm.id, 'uom_type': 'smaller', 'factor': 1000.0, 'rounding': 0.001}) - self.uom_unit = self.ProductUom.create({ + self.uom_unit = self.UoM.create({ 'name': 'Test-Unit', 'category_id': self.categ_unit.id, 'factor': 1, 'uom_type': 'reference', 'rounding': 1.0}) - self.uom_dozen = self.ProductUom.create({ + self.uom_dozen = self.UoM.create({ 'name': 'Test-DozenA', 'category_id': self.categ_unit.id, 'factor_inv': 12, diff --git a/addons/sale_stock/tests/test_sale_stock.py b/addons/sale_stock/tests/test_sale_stock.py index 42c3ca84a98..399a6be021c 100644 --- a/addons/sale_stock/tests/test_sale_stock.py +++ b/addons/sale_stock/tests/test_sale_stock.py @@ -374,8 +374,8 @@ class TestSaleStock(TestSale): lines to the moves and edit a last time the ordered quantities. Deliver, check the quantities. """ - uom_unit = self.env.ref('product.product_uom_unit') - uom_dozen = self.env.ref('product.product_uom_dozen') + uom_unit = self.env.ref('uom.product_uom_unit') + uom_dozen = self.env.ref('uom.product_uom_dozen') item1 = self.products['prod_order'] self.assertEqual(item1.uom_id.id, uom_unit.id) diff --git a/addons/stock/models/product.py b/addons/stock/models/product.py index 786dc3b3a56..5e474a5ba01 100644 --- a/addons/stock/models/product.py +++ b/addons/stock/models/product.py @@ -503,7 +503,7 @@ class ProductTemplate(models.Model): def write(self, vals): if 'uom_id' in vals: - new_uom = self.env['product.uom'].browse(vals['uom_id']) + new_uom = self.env['uom.uom'].browse(vals['uom_id']) updated = self.filtered(lambda template: template.uom_id != new_uom) done_moves = self.env['stock.move'].search([('product_id', 'in', updated.mapped('product_variant_ids').ids)], limit=1) if done_moves: diff --git a/addons/stock/models/stock_inventory.py b/addons/stock/models/stock_inventory.py index c195af66497..5e1aa3f5d3b 100644 --- a/addons/stock/models/stock_inventory.py +++ b/addons/stock/models/stock_inventory.py @@ -301,7 +301,7 @@ class InventoryLine(models.Model): domain=[('type', '=', 'product')], index=True, required=True) product_uom_id = fields.Many2one( - 'product.uom', 'Product Unit of Measure', + 'uom.uom', 'Product Unit of Measure', required=True, default=lambda self: self.env.ref('uom.product_uom_unit', raise_if_not_found=True)) product_qty = fields.Float( diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index bc171f67d58..043c4d3e80c 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -62,7 +62,7 @@ class StockMove(models.Model): "be moved. Lowering this quantity does not generate a " "backorder. Changing this quantity on assigned moves affects " "the product reservation, and should be done with care.") - product_uom = fields.Many2one('product.uom', 'Unit of Measure', required=True) + product_uom = fields.Many2one('uom.uom', 'Unit of Measure', required=True) # TDE FIXME: make it stored, otherwise group will not work product_tmpl_id = fields.Many2one( 'product.template', 'Product Template', diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py index e9614cfc531..a66391b0427 100644 --- a/addons/stock/models/stock_move_line.py +++ b/addons/stock/models/stock_move_line.py @@ -23,7 +23,7 @@ class StockMoveLine(models.Model): 'stock.move', 'Stock Move', help="Change to a better name") product_id = fields.Many2one('product.product', 'Product', ondelete="cascade") - product_uom_id = fields.Many2one('product.uom', 'Unit of Measure', required=True) + product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure', required=True) product_qty = fields.Float( 'Real Reserved Quantity', digits=0, compute='_compute_product_qty', inverse='_set_product_qty', store=True) diff --git a/addons/stock/models/stock_production_lot.py b/addons/stock/models/stock_production_lot.py index 4fc1092839d..f3ce7896b70 100644 --- a/addons/stock/models/stock_production_lot.py +++ b/addons/stock/models/stock_production_lot.py @@ -18,7 +18,7 @@ class ProductionLot(models.Model): 'product.product', 'Product', domain=[('type', 'in', ['product', 'consu'])], required=True) product_uom_id = fields.Many2one( - 'product.uom', 'Unit of Measure', + 'uom.uom', 'Unit of Measure', related='product_id.uom_id', store=True) quant_ids = fields.One2many('stock.quant', 'lot_id', 'Quants', readonly=True) create_date = fields.Datetime('Creation Date') diff --git a/addons/stock/models/stock_quant.py b/addons/stock/models/stock_quant.py index 3b1c27d9eb2..438d726dd95 100644 --- a/addons/stock/models/stock_quant.py +++ b/addons/stock/models/stock_quant.py @@ -26,7 +26,7 @@ class StockQuant(models.Model): 'product.template', string='Product Template', related='product_id.product_tmpl_id') product_uom_id = fields.Many2one( - 'product.uom', 'Unit of Measure', + 'uom.uom', 'Unit of Measure', readonly=True, related='product_id.uom_id') company_id = fields.Many2one(related='location_id.company_id', string='Company', store=True, readonly=True) diff --git a/addons/stock/models/stock_scrap.py b/addons/stock/models/stock_scrap.py index af4f9bcb950..d9281233803 100644 --- a/addons/stock/models/stock_scrap.py +++ b/addons/stock/models/stock_scrap.py @@ -25,7 +25,7 @@ class StockScrap(models.Model): 'product.product', 'Product', required=True, states={'done': [('readonly', True)]}) product_uom_id = fields.Many2one( - 'product.uom', 'Unit of Measure', + 'uom.uom', 'Unit of Measure', required=True, states={'done': [('readonly', True)]}) tracking = fields.Selection('Product Tracking', readonly=True, related="product_id.tracking") lot_id = fields.Many2one( diff --git a/addons/stock/models/stock_warehouse.py b/addons/stock/models/stock_warehouse.py index 73368db6ad4..005b89be02d 100644 --- a/addons/stock/models/stock_warehouse.py +++ b/addons/stock/models/stock_warehouse.py @@ -753,7 +753,7 @@ class Orderpoint(models.Model): 'product.product', 'Product', domain=[('type', '=', 'product')], ondelete='cascade', required=True) product_uom = fields.Many2one( - 'product.uom', 'Product Unit of Measure', related='product_id.uom_id', + 'uom.uom', 'Product Unit of Measure', related='product_id.uom_id', readonly=True, required=True, default=lambda self: self._context.get('product_uom', False)) product_min_qty = fields.Float( diff --git a/addons/stock/security/ir.model.access.csv b/addons/stock/security/ir.model.access.csv index 0aebf4f9dfd..f938f82f2ab 100644 --- a/addons/stock/security/ir.model.access.csv +++ b/addons/stock/security/ir.model.access.csv @@ -26,8 +26,8 @@ access_stock_inventory_line_manager,stock.inventory.line manager,model_stock_inv access_stock_location_stock_manager,stock.location stock manager,model_stock_location,stock.group_stock_manager,1,0,0,0 access_product_product_stock_user,product_product_stock_user,product.model_product_product,stock.group_stock_user,1,0,0,0 access_product_template_stock_user,product.template stock user,product.model_product_template,stock.group_stock_user,1,0,0,0 -access_product_uom_categ_stock_manager,product.uom.categ stock_manager,uom.model_product_uom_categ,stock.group_stock_manager,1,1,1,1 -access_product_uom_stock_manager,product.uom stock_manager,uom.model_product_uom,stock.group_stock_manager,1,1,1,1 +access_uom_category_stock_manager,uom.category stock_manager,uom.model_uom_category,stock.group_stock_manager,1,1,1,1 +access_uom_uom_stock_manager,uom.uom stock_manager,uom.model_uom_uom,stock.group_stock_manager,1,1,1,1 access_product_category_stock_manager,product.category stock_manager,product.model_product_category,stock.group_stock_manager,1,1,1,1 access_product_template_stock_manager,product.template stock_manager,product.model_product_template,stock.group_stock_manager,1,1,1,1 access_product_product_stock_manager,product.product stock_manager,product.model_product_product,stock.group_stock_manager,1,1,1,1 diff --git a/addons/stock/tests/common.py b/addons/stock/tests/common.py index 9a46d451d71..ea8434c7f6e 100644 --- a/addons/stock/tests/common.py +++ b/addons/stock/tests/common.py @@ -9,7 +9,7 @@ class TestStockCommon(common.TransactionCase): super(TestStockCommon, self).setUp() self.ProductObj = self.env['product.product'] - self.UomObj = self.env['product.uom'] + self.UomObj = self.env['uom.uom'] self.PartnerObj = self.env['res.partner'] self.ModelDataObj = self.env['ir.model.data'] self.StockPackObj = self.env['stock.move.line'] diff --git a/addons/stock/tests/test_move2.py b/addons/stock/tests/test_move2.py index 9ab4b6cd796..78835d1db9a 100644 --- a/addons/stock/tests/test_move2.py +++ b/addons/stock/tests/test_move2.py @@ -1711,15 +1711,15 @@ class TestStockUOM(TestStockCommon): def test_pickings_transfer_with_different_uom_and_back_orders(self): """ Picking transfer with diffrent unit of meassure. """ # weight category - categ_test = self.env['product.uom.categ'].create({'name': 'Bigger than tons'}) + categ_test = self.env['uom.category'].create({'name': 'Bigger than tons'}) - T_LBS = self.env['product.uom'].create({ + T_LBS = self.env['uom.uom'].create({ 'name': 'T-LBS', 'category_id': categ_test.id, 'uom_type': 'reference', 'rounding': 0.01 }) - T_GT = self.env['product.uom'].create({ + T_GT = self.env['uom.uom'].create({ 'name': 'T-GT', 'category_id': categ_test.id, 'uom_type': 'bigger', diff --git a/addons/stock/wizard/stock_picking_return.py b/addons/stock/wizard/stock_picking_return.py index 37daae4ba1a..715b6308d82 100644 --- a/addons/stock/wizard/stock_picking_return.py +++ b/addons/stock/wizard/stock_picking_return.py @@ -13,7 +13,7 @@ class ReturnPickingLine(models.TransientModel): product_id = fields.Many2one('product.product', string="Product", required=True, domain="[('id', '=', product_id)]") quantity = fields.Float("Quantity", digits=dp.get_precision('Product Unit of Measure'), required=True) - uom_id = fields.Many2one('product.uom', string='Unit of Measure', related='move_id.product_uom') + uom_id = fields.Many2one('uom.uom', string='Unit of Measure', related='move_id.product_uom') wizard_id = fields.Many2one('stock.return.picking', string="Wizard") move_id = fields.Many2one('stock.move', "Move") diff --git a/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py b/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py index bc06db4c215..082d5069ca9 100644 --- a/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py +++ b/addons/stock_landed_costs/tests/test_stock_landed_costs_rounding.py @@ -15,7 +15,7 @@ class TestStockLandedCostsRounding(TestStockLandedCostsCommon): self._load('stock_account', 'test', 'stock_valuation_account.xml') # Define undivisible units - product_uom_unit_round_1 = self.env['product.uom'].create({ + product_uom_unit_round_1 = self.env['uom.uom'].create({ 'category_id': self.ref('uom.product_uom_categ_unit'), 'name': 'Undivisible Unit(s)', 'factor': 1.0, diff --git a/addons/uom/data/uom_data.xml b/addons/uom/data/uom_data.xml index 1f7f18482ec..f929564b1e4 100644 --- a/addons/uom/data/uom_data.xml +++ b/addons/uom/data/uom_data.xml @@ -2,62 +2,62 @@ - + Unit - + Weight - + Working Time - + Length / Distance - + Volume - + Unit(s) - + Dozen(s) bigger - + kg - + g smaller - + Hour(s) smaller - + Day(s) - + @@ -65,73 +65,73 @@ bigger - + m - + km bigger - + cm smaller - + Liter(s) 1.0 - + lb(s) 2.20462 smaller - + oz(s) 35.274 smaller - + inch(es) 39.3701 smaller - + foot(ft) 3.28084 smaller - + mile(s) bigger - + fl oz 33.814 smaller - + qt 1.05669 smaller - + gal(s) diff --git a/addons/uom/models/__init__.py b/addons/uom/models/__init__.py index 238537db2e6..357b0410c00 100644 --- a/addons/uom/models/__init__.py +++ b/addons/uom/models/__init__.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -# flake8: noqa: F401 -from . import uom_uom \ No newline at end of file +from . import uom_uom diff --git a/addons/uom/models/uom_uom.py b/addons/uom/models/uom_uom.py index 9606a51dfca..2c01624b5c6 100644 --- a/addons/uom/models/uom_uom.py +++ b/addons/uom/models/uom_uom.py @@ -5,21 +5,21 @@ from odoo import api, fields, tools, models, _ from odoo.exceptions import UserError -class ProductUoMCategory(models.Model): - _name = 'product.uom.categ' +class UoMCategory(models.Model): + _name = 'uom.category' _description = 'Product UoM Categories' name = fields.Char('Name', required=True, translate=True) -class ProductUoM(models.Model): - _name = 'product.uom' +class UoM(models.Model): + _name = 'uom.uom' _description = 'Product Unit of Measure' _order = "name" name = fields.Char('Unit of Measure', required=True, translate=True) category_id = fields.Many2one( - 'product.uom.categ', 'Category', required=True, ondelete='cascade', + 'uom.category', 'Category', required=True, ondelete='cascade', help="Conversion between Units of Measure can only occur if they belong to the same category. The conversion will be made based on the ratios.") factor = fields.Float( 'Ratio', default=1.0, digits=0, required=True, # force NUMERIC with unlimited precision @@ -59,14 +59,14 @@ class ProductUoM(models.Model): if 'factor_inv' in values: factor_inv = values.pop('factor_inv') values['factor'] = factor_inv and (1.0 / factor_inv) or 0.0 - return super(ProductUoM, self).create(values) + return super(UoM, self).create(values) @api.multi def write(self, values): if 'factor_inv' in values: factor_inv = values.pop('factor_inv') values['factor'] = factor_inv and (1.0 / factor_inv) or 0.0 - return super(ProductUoM, self).write(values) + return super(UoM, self).write(values) @api.model def name_create(self, name): @@ -79,7 +79,7 @@ class ProductUoM(models.Model): # look for the category based on the english name, i.e. no context on purpose! # TODO: should find a way to have it translated but not created until actually used if not self._context.get('default_category_id'): - EnglishUoMCateg = self.env['product.uom.categ'].with_context({}) + EnglishUoMCateg = self.env['uom.category'].with_context({}) misc_category = EnglishUoMCateg.search([('name', '=', 'Unsorted/Imported Units')]) if misc_category: values['category_id'] = misc_category.id diff --git a/addons/uom/security/ir.model.access.csv b/addons/uom/security/ir.model.access.csv index 9fb9379cbfd..30b789f6859 100644 --- a/addons/uom/security/ir.model.access.csv +++ b/addons/uom/security/ir.model.access.csv @@ -1,3 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_product_uom_categ_user,product.uom.categ.user,model_product_uom_categ,base.group_user,1,0,0,0 -access_product_uom_user,product.uom.user,model_product_uom,base.group_user,1,0,0,0 +access_uom_category_user,uom.category.user,model_uom_category,base.group_user,1,0,0,0 +access_uom_uom_user,uom.uom.user,model_uom_uom,base.group_user,1,0,0,0 diff --git a/addons/uom/tests/test_uom.py b/addons/uom/tests/test_uom.py index 9d583cf399f..e2bb332754c 100644 --- a/addons/uom/tests/test_uom.py +++ b/addons/uom/tests/test_uom.py @@ -37,7 +37,7 @@ class TestUom(TransactionCase): self.assertEquals(qty, 1.234, "Converted quantity does not correspond.") def test_20_rounding(self): - product_uom = self.env['product.uom'].create({ + product_uom = self.env['uom.uom'].create({ 'name': 'Score', 'factor_inv': 20, 'uom_type': 'bigger', diff --git a/addons/uom/views/uom_uom_views.xml b/addons/uom/views/uom_uom_views.xml index 149f48d4ce8..582ae8174c2 100644 --- a/addons/uom/views/uom_uom_views.xml +++ b/addons/uom/views/uom_uom_views.xml @@ -1,8 +1,8 @@ - product.uom.tree - product.uom + uom.uom.tree + uom.uom @@ -13,8 +13,8 @@ - product.uom.form - product.uom + uom.uom.form + uom.uom
@@ -48,7 +48,7 @@ Units of Measure ir.actions.act_window - product.uom + uom.uom form @@ -62,8 +62,8 @@ - product.uom.categ.form - product.uom.categ + uom.category.form + uom.category @@ -75,7 +75,7 @@ Unit of Measure Categories ir.actions.act_window - product.uom.categ + uom.category form tree,form diff --git a/addons/website_quote/models/sale_order.py b/addons/website_quote/models/sale_order.py index 96117734872..cce60910618 100644 --- a/addons/website_quote/models/sale_order.py +++ b/addons/website_quote/models/sale_order.py @@ -239,7 +239,7 @@ class SaleOrderOption(models.Model): website_description = fields.Html('Line Description', sanitize_attributes=False, translate=html_translate) price_unit = fields.Float('Unit Price', required=True, digits=dp.get_precision('Product Price')) discount = fields.Float('Discount (%)', digits=dp.get_precision('Discount')) - uom_id = fields.Many2one('product.uom', 'Unit of Measure ', required=True) + uom_id = fields.Many2one('uom.uom', 'Unit of Measure ', required=True) quantity = fields.Float('Quantity', required=True, digits=dp.get_precision('Product UoS'), default=1) sequence = fields.Integer('Sequence', help="Gives the sequence order when displaying a list of suggested product.") diff --git a/addons/website_quote/models/sale_quote.py b/addons/website_quote/models/sale_quote.py index 08c2f19b779..820c9ac8f24 100644 --- a/addons/website_quote/models/sale_quote.py +++ b/addons/website_quote/models/sale_quote.py @@ -56,7 +56,7 @@ class SaleQuoteLine(models.Model): price_unit = fields.Float('Unit Price', required=True, digits=dp.get_precision('Product Price')) discount = fields.Float('Discount (%)', digits=dp.get_precision('Discount'), default=0.0) product_uom_qty = fields.Float('Quantity', required=True, digits=dp.get_precision('Product UoS'), default=1) - product_uom_id = fields.Many2one('product.uom', 'Unit of Measure ', required=True) + product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure ', required=True) @api.onchange('product_id') def _onchange_product_id(self): @@ -107,7 +107,7 @@ class SaleQuoteOption(models.Model): website_description = fields.Html('Option Description', translate=html_translate, sanitize_attributes=False) price_unit = fields.Float('Unit Price', required=True, digits=dp.get_precision('Product Price')) discount = fields.Float('Discount (%)', digits=dp.get_precision('Discount')) - uom_id = fields.Many2one('product.uom', 'Unit of Measure ', required=True) + uom_id = fields.Many2one('uom.uom', 'Unit of Measure ', required=True) quantity = fields.Float('Quantity', required=True, digits=dp.get_precision('Product UoS'), default=1) @api.onchange('product_id')