diff --git a/mrp_multi_level/models/mrp_inventory.py b/mrp_multi_level/models/mrp_inventory.py
index d0bf1be91..3115b6e29 100644
--- a/mrp_multi_level/models/mrp_inventory.py
+++ b/mrp_multi_level/models/mrp_inventory.py
@@ -5,6 +5,8 @@
from odoo import api, fields, models
+from datetime import timedelta, date
+
class MrpInventory(models.Model):
_name = 'mrp.inventory'
@@ -12,16 +14,14 @@ class MrpInventory(models.Model):
_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?
- # TODO: add to_procure_date
mrp_area_id = fields.Many2one(
comodel_name='mrp.area', string='MRP Area',
- related='mrp_product_id.mrp_area_id',
+ related='mrp_product_id.mrp_area_id', store=True,
)
mrp_product_id = fields.Many2one(
comodel_name='mrp.product', string='Product',
@@ -37,8 +37,31 @@ class MrpInventory(models.Model):
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')
+ date_to_procure = fields.Date(
+ string="Date to Procure",
+ compute="_compute_date_to_procure",
+ store=True,
+ )
@api.multi
def _compute_uom_id(self):
for rec in self:
rec.uom_id = rec.mrp_product_id.product_id.uom_id
+
+ @api.multi
+ @api.depends('mrp_product_id', 'mrp_product_id.main_supplierinfo_id',
+ 'mrp_product_id.mrp_lead_time')
+ def _compute_date_to_procure(self):
+ today = date.today()
+ for rec in self.filtered(lambda r: r.date):
+ delay = 0
+ if rec.mrp_product_id.supply_method == 'buy':
+ delay = rec.mrp_product_id.main_supplierinfo_id.delay
+ elif rec.mrp_product_id.supply_method == 'manufacture':
+ delay = rec.mrp_product_id.mrp_lead_time
+ # TODO: 'move' supply method
+ date_to_procure = fields.Date.from_string(
+ rec.date) - timedelta(days=delay)
+ if date_to_procure < today:
+ date_to_procure = today
+ rec.date_to_procure = date_to_procure
diff --git a/mrp_multi_level/models/mrp_product.py b/mrp_multi_level/models/mrp_product.py
index 3572c6608..69ffd7d03 100644
--- a/mrp_multi_level/models/mrp_product.py
+++ b/mrp_multi_level/models/mrp_product.py
@@ -20,6 +20,10 @@ class MrpProduct(models.Model):
compute='_compute_main_supplier', store=True,
index=True,
)
+ main_supplierinfo_id = fields.Many2one(
+ comodel_name='product.supplierinfo', string='Supplier Info',
+ compute='_compute_main_supplier', store=True,
+ )
mrp_inspection_delay = fields.Integer(
string='Inspection Delay', related='product_id.mrp_inspection_delay')
mrp_lead_time = fields.Float(
@@ -101,6 +105,7 @@ class MrpProduct(models.Model):
lambda r: (not r.product_id or r.product_id == rec.product_id))
if not suppliers:
continue
+ rec.main_supplierinfo_id = suppliers[0]
rec.main_supplier_id = suppliers[0].name
@api.multi
diff --git a/mrp_multi_level/views/mrp_inventory_view.xml b/mrp_multi_level/views/mrp_inventory_view.xml
index b536e831a..852f55c36 100644
--- a/mrp_multi_level/views/mrp_inventory_view.xml
+++ b/mrp_multi_level/views/mrp_inventory_view.xml
@@ -6,17 +6,23 @@
mrp.inventory
form
-
@@ -24,9 +30,9 @@
mrp.inventory.tree
mrp.inventory
- form
+ tree
-
+
@@ -35,7 +41,7 @@
-
+
+
+ mrp.inventory.pivot
+ mrp.inventory
+
+
+
+
+
+
+
+
+
+
+
+ mrp.inventory.graph
+ mrp.inventory
+
+
+
+
+
+
+
+
+
mrp.inventory.search
mrp.inventory
@@ -51,8 +82,8 @@
-
-
+
+
+
+
+
-
MRP Inventory
mrp.inventory
ir.actions.act_window
form
- tree,form
+ tree,form,pivot,graph
-
-
-
-
-
-
- form
-
-
-
-
-
- tree
-
-
diff --git a/mrp_multi_level/wizards/mrp_multi_level.py b/mrp_multi_level/wizards/mrp_multi_level.py
index 1f450564a..68c4134da 100644
--- a/mrp_multi_level/wizards/mrp_multi_level.py
+++ b/mrp_multi_level/wizards/mrp_multi_level.py
@@ -36,7 +36,7 @@ class MultiLevelMrp(models.TransientModel):
'product_id': product.id,
'mrp_qty_available': product.qty_available,
'mrp_llc': product.llc,
- 'name': product.name,
+ 'name': '[%s] %s' % (mrp_area.name, product.display_name),
}
@api.model