diff --git a/sale_stock_usability/sale_stock.py b/sale_stock_usability/sale_stock.py
index 47cb712..5f89046 100644
--- a/sale_stock_usability/sale_stock.py
+++ b/sale_stock_usability/sale_stock.py
@@ -40,3 +40,13 @@ class SaleOrderLine(models.Model):
product_tmpl_id = fields.Many2one(
'product.template', related='product_id.product_tmpl_id',
string='Product Template', readonly=True)
+
+
+class ProcurementGroup(models.Model):
+ _inherit = 'procurement.group'
+
+ sale_ids = fields.One2many(
+ 'sale.order', 'procurement_group_id', string='Sale Orders',
+ readonly=True)
+ picking_ids = fields.One2many(
+ 'stock.picking', 'group_id', string='Pickings', readonly=True)
diff --git a/sale_stock_usability/sale_stock_view.xml b/sale_stock_usability/sale_stock_view.xml
index 181b8e0..3930596 100644
--- a/sale_stock_usability/sale_stock_view.xml
+++ b/sale_stock_usability/sale_stock_view.xml
@@ -34,5 +34,22 @@
+
+
+ sale_stock_usability.procurement.group.form
+ procurement.group
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/stock_usability/__init__.py b/stock_usability/__init__.py
index b857415..2e4abfb 100644
--- a/stock_usability/__init__.py
+++ b/stock_usability/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from . import stock
+from . import procurement
diff --git a/stock_usability/__openerp__.py b/stock_usability/__openerp__.py
index f1eb2dd..d9b1ce3 100644
--- a/stock_usability/__openerp__.py
+++ b/stock_usability/__openerp__.py
@@ -43,6 +43,10 @@ This module has been written by Alexis de Lattre from Akretion
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from openerp import models, fields
+from datetime import datetime
+import logging
+
+logger = logging.getLogger(__name__)
+
+
+class ProcurementOrder(models.Model):
+ _inherit = 'procurement.order'
+
+ def _procure_orderpoint_confirm(
+ self, cr, uid, use_new_cursor=False, company_id=False,
+ context=None):
+ logger.info(
+ 'procurement scheduler: START to create procurements from '
+ 'orderpoints')
+ res = super(ProcurementOrder, self)._procure_orderpoint_confirm(
+ cr, uid, use_new_cursor=use_new_cursor, company_id=company_id,
+ context=context)
+ logger.info(
+ 'procurement scheduler: END creation of procurements from '
+ 'orderpoints')
+ return res
+
+ # Why is this code in stock_usability and not in procurement_usability ?
+ # For a very good reason
+ # The stock module inherits run_scheduler(). So, if we want to have the START and
+ # END log message and a good end date for procurement.scheduler.log
+ # the method below must be called first, so we must be "above" all
+ # modules that call run_scheduler()
+ def run_scheduler(
+ self, cr, uid, use_new_cursor=False, company_id=False,
+ context=None):
+ '''Inherit to add info logs'''
+ logger.info(
+ 'START procurement scheduler '
+ '(company ID=%d, uid=%d, use_new_cursor=%s)',
+ company_id, uid, use_new_cursor)
+ start_datetime = datetime.now()
+ res = super(ProcurementOrder, self).run_scheduler(
+ cr, uid, use_new_cursor=use_new_cursor, company_id=company_id,
+ context=context)
+ logger.info(
+ 'END procurement scheduler '
+ '(company ID=%d, uid=%d, use_new_cursor=%s)',
+ company_id, uid, use_new_cursor)
+ try:
+ # I put it in a try/except, to be sure that, even if the user
+ # the execute the scheduler doesn't have create right on
+ # procurement.scheduler.log
+ self.pool['procurement.scheduler.log'].create(
+ cr, uid, {
+ 'company_id': company_id,
+ 'start_datetime': start_datetime,
+ }, context=context)
+ # If I don't do an explicit cr.commit(), it doesn't create
+ # the procurement.scheduler.log... I don't know why
+ cr.commit()
+ except:
+ logger.warning('Could not create procurement.scheduler.log')
+ return res
+
+
+class ProcurementSchedulerLog(models.Model):
+ _name = 'procurement.scheduler.log'
+ _description = 'Logs of the Procurement Scheduler'
+ _order = 'create_date desc'
+
+ company_id = fields.Many2one(
+ 'res.company', string='Company', readonly=True)
+ start_datetime = fields.Datetime(string='Start Date', readonly=True)
diff --git a/stock_usability/procurement_view.xml b/stock_usability/procurement_view.xml
new file mode 100644
index 0000000..46d96ba
--- /dev/null
+++ b/stock_usability/procurement_view.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+ stock_usability.procurement.group.form
+ procurement.group
+
+
+
+
+
+
+
+
+
+ procurement_usability.procurement.order.form
+ procurement.order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ procurement_scheduler_log_tree
+ procurement.scheduler.log
+
+
+
+
+
+
+
+
+
+
+
+ Scheduler Logs
+ procurement.scheduler.log
+ tree
+
+
+
+
+
+
diff --git a/stock_usability/security/ir.model.access.csv b/stock_usability/security/ir.model.access.csv
new file mode 100644
index 0000000..5e34784
--- /dev/null
+++ b/stock_usability/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_procurement_scheduler_log_full,Full access on procurement.scheduler.log to System group,model_procurement_scheduler_log,base.group_system,1,1,1,1
+access_procurement_scheduler_log_read,Read access on procurement.scheduler.log to Employee,model_procurement_scheduler_log,base.group_user,1,0,0,0
diff --git a/stock_usability/stock.py b/stock_usability/stock.py
index 441ce2f..3a745aa 100644
--- a/stock_usability/stock.py
+++ b/stock_usability/stock.py
@@ -103,21 +103,3 @@ class StockMove(models.Model):
name = name + ' ' + fields.Date.to_string(date_expec_dt)
res.append((line.id, name))
return res
-
-
-class ProcurementOrder(models.Model):
- _inherit = "procurement.order"
-
- def _procure_orderpoint_confirm(
- self, cr, uid, use_new_cursor=False, company_id=False,
- context=None):
- logger.info(
- 'procurement scheduler: START to create procurements from '
- 'orderpoints')
- res = super(ProcurementOrder, self)._procure_orderpoint_confirm(
- cr, uid, use_new_cursor=use_new_cursor, company_id=company_id,
- context=context)
- logger.info(
- 'procurement scheduler: END creation of procurements from '
- 'orderpoints')
- return res