From 0456d9b7e4c1f15cc4735a41df5bbc2f953411f0 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Fri, 8 Jun 2018 10:37:04 +0200 Subject: [PATCH] [11.0][MIG] multi_level_mrp: rework procurement wizard --- multi_level_mrp/README.rst | 3 +- multi_level_mrp/__manifest__.py | 3 +- multi_level_mrp/models/mrp_forecast.py | 4 +- multi_level_mrp/models/mrp_inventory.py | 48 +++++-- .../security/multi_level_mrp_security.xml | 10 ++ multi_level_mrp/views/mrp_inventory_view.xml | 7 +- multi_level_mrp/wizards/__init__.py | 2 +- .../mrp_inventory_create_procurement.py | 69 --------- .../mrp_inventory_create_procurement_view.xml | 42 ------ .../wizards/mrp_inventory_procure.py | 133 ++++++++++++++++++ .../wizards/mrp_inventory_procure_view.xml | 59 ++++++++ multi_level_mrp/wizards/multi_level_mrp.py | 5 +- 12 files changed, 252 insertions(+), 133 deletions(-) create mode 100644 multi_level_mrp/security/multi_level_mrp_security.xml delete mode 100644 multi_level_mrp/wizards/mrp_inventory_create_procurement.py delete mode 100644 multi_level_mrp/wizards/mrp_inventory_create_procurement_view.xml create mode 100644 multi_level_mrp/wizards/mrp_inventory_procure.py create mode 100644 multi_level_mrp/wizards/mrp_inventory_procure_view.xml diff --git a/multi_level_mrp/README.rst b/multi_level_mrp/README.rst index 0706853f5..2ff008382 100644 --- a/multi_level_mrp/README.rst +++ b/multi_level_mrp/README.rst @@ -1,5 +1,5 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 =============== @@ -57,6 +57,7 @@ Contributors * Wim Audenaert * Jordi Ballester +* Lois Rilo Maintainer diff --git a/multi_level_mrp/__manifest__.py b/multi_level_mrp/__manifest__.py index 12f269ba2..02199d1fb 100644 --- a/multi_level_mrp/__manifest__.py +++ b/multi_level_mrp/__manifest__.py @@ -16,13 +16,14 @@ 'purchase', ], 'data': [ + 'security/multi_level_mrp_security.xml', 'security/ir.model.access.csv', 'views/mrp_forecast_view.xml', 'views/mrp_area_view.xml', 'views/product_view.xml', 'views/stock_location_view.xml', 'views/mrp_product_view.xml', - 'wizards/mrp_inventory_create_procurement_view.xml', + 'wizards/mrp_inventory_procure_view.xml', 'views/mrp_inventory_view.xml', 'wizards/multi_level_mrp_view.xml', 'wizards/mrp_move_create_po_view.xml', diff --git a/multi_level_mrp/models/mrp_forecast.py b/multi_level_mrp/models/mrp_forecast.py index f33413615..3bb9b0fd6 100644 --- a/multi_level_mrp/models/mrp_forecast.py +++ b/multi_level_mrp/models/mrp_forecast.py @@ -9,18 +9,18 @@ from datetime import date, datetime class MrpForecastForecast(models.Model): _name = 'mrp.forecast.forecast' + _order = 'forecast_product_id, date' date = fields.Date('Date') forecast_product_id = fields.Many2one('mrp.forecast.product', 'Product', select=True) name = fields.Char('Description') qty_forecast = fields.Float('Quantity') - - _order = 'forecast_product_id, date' class MrpForecastProduct(models.Model): _name = 'mrp.forecast.product' + # TODO: adapt to demand_estimate?? or at least to date_range?? @api.one @api.depends('product_id') diff --git a/multi_level_mrp/models/mrp_inventory.py b/multi_level_mrp/models/mrp_inventory.py index dbd4d3857..29029a6d3 100644 --- a/multi_level_mrp/models/mrp_inventory.py +++ b/multi_level_mrp/models/mrp_inventory.py @@ -1,23 +1,43 @@ # © 2016 Ucamco - Wim Audenaert -# © 2016 Eficent Business and IT Consulting Services S.L. +# Copyright 2016-18 Eficent Business and IT Consulting Services S.L. # - Jordi Ballester Alomar # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import fields, models +from odoo import api, fields, models class MrpInventory(models.Model): _name = 'mrp.inventory' - - mrp_area_id = fields.Many2one('mrp.area', 'MRP Area', - related='mrp_product_id.mrp_area_id') - mrp_product_id = fields.Many2one('mrp.product', 'Product', - select=True) - date = fields.Date('Date') - demand_qty = fields.Float('Demand') - supply_qty = fields.Float('Supply') - initial_on_hand_qty = fields.Float('Starting Inventory') - final_on_hand_qty = fields.Float('Forecasted Inventory') - to_procure = fields.Float('To procure') - _order = 'mrp_product_id, date' + _description = 'MRP inventory projections' + _rec_name = 'mrp_product_id' + + # TODO: uom?? + # TODO: name to pass to procurements? + # TODO: compute procurement_date to pass to the wizard? not needed for PO at least. Check for MO and moves + # TODO: substract qty already procured. + # TODO: show a LT based on the procure method? + + mrp_area_id = fields.Many2one( + comodel_name='mrp.area', string='MRP Area', + related='mrp_product_id.mrp_area_id', + ) + mrp_product_id = fields.Many2one( + comodel_name='mrp.product', string='Product', + select=True, + ) + uom_id = fields.Many2one( + comodel_name='product.uom', string='Product UoM', + compute='_compute_uom_id', + ) + date = fields.Date(string='Date') + demand_qty = fields.Float(string='Demand') + supply_qty = fields.Float(string='Supply') + initial_on_hand_qty = fields.Float(string='Starting Inventory') + final_on_hand_qty = fields.Float(string='Forecasted Inventory') + to_procure = fields.Float(string='To procure') + + @api.multi + def _compute_uom_id(self): + for rec in self: + rec.uom_id = rec.mrp_product_id.product_id.uom_id diff --git a/multi_level_mrp/security/multi_level_mrp_security.xml b/multi_level_mrp/security/multi_level_mrp_security.xml new file mode 100644 index 000000000..13a2bedb7 --- /dev/null +++ b/multi_level_mrp/security/multi_level_mrp_security.xml @@ -0,0 +1,10 @@ + + + + + Change procure quantity in MRP + + + + + diff --git a/multi_level_mrp/views/mrp_inventory_view.xml b/multi_level_mrp/views/mrp_inventory_view.xml index 04f430e4a..175f6ce5a 100644 --- a/multi_level_mrp/views/mrp_inventory_view.xml +++ b/multi_level_mrp/views/mrp_inventory_view.xml @@ -35,9 +35,10 @@ +