summaryrefslogtreecommitdiff
path: root/addons/project_mrp
diff options
context:
space:
mode:
authorVidhin Mehta <vme@tinyerp.com>2013-08-23 10:36:02 +0530
committerVidhin Mehta <vme@tinyerp.com>2013-08-23 10:36:02 +0530
commit75ddd5ccbec73c4a671b6a74efaa3d41dc2ea2db (patch)
tree50ed3620df15e8533760f5d47e754a1d39c1e856 /addons/project_mrp
parent42f27a15275effd9c43dfe99e32c395ca6b3fd8a (diff)
parenta7f4b6aaa0359d12046e81183417c24f093cd7c3 (diff)
[MERGE]Trunk.
bzr revid: vme@tinyerp.com-20130823050602-33bqv07e7g8dhv7x
Diffstat (limited to 'addons/project_mrp')
-rw-r--r--addons/project_mrp/project_mrp.py43
-rw-r--r--addons/project_mrp/project_mrp_demo.xml4
-rw-r--r--addons/project_mrp/project_mrp_view.xml12
-rw-r--r--addons/project_mrp/project_procurement.py4
-rw-r--r--addons/project_mrp/test/project_task_procurement.yml4
5 files changed, 49 insertions, 18 deletions
diff --git a/addons/project_mrp/project_mrp.py b/addons/project_mrp/project_mrp.py
index bb25b4aae24..d5ed55a8d31 100644
--- a/addons/project_mrp/project_mrp.py
+++ b/addons/project_mrp/project_mrp.py
@@ -22,6 +22,23 @@
from openerp.osv import fields, osv
from openerp import netsvc
+
+class ProjectTaskStageMrp(osv.Model):
+ """ Override project.task.type model to add a 'closed' boolean field allowing
+ to know that tasks in this stage are considered as closed. Indeed since
+ OpenERP 8.0 status is not present on tasks anymore, only stage_id. """
+ _name = 'project.task.type'
+ _inherit = 'project.task.type'
+
+ _columns = {
+ 'closed': fields.boolean('Close', help="Tasks in this stage are considered as closed."),
+ }
+
+ _defaults = {
+ 'closed': False,
+ }
+
+
class project_task(osv.osv):
_name = "project.task"
_inherit = "project.task"
@@ -30,21 +47,21 @@ class project_task(osv.osv):
'sale_line_id': fields.related('procurement_id', 'sale_line_id', type='many2one', relation='sale.order.line', store=True, string='Sales Order Line'),
}
- def _validate_subflows(self, cr, uid, ids):
+ def _validate_subflows(self, cr, uid, ids, context=None):
wf_service = netsvc.LocalService("workflow")
for task in self.browse(cr, uid, ids):
if task.procurement_id:
wf_service.trg_write(uid, 'procurement.order', task.procurement_id.id, cr)
- def do_close(self, cr, uid, ids, *args, **kwargs):
- res = super(project_task, self).do_close(cr, uid, ids, *args, **kwargs)
- self._validate_subflows(cr, uid, ids)
+ def write(self, cr, uid, ids, values, context=None):
+ """ When closing tasks, validate subflows. """
+ res = super(project_task, self).write(cr, uid, ids, values, context=context)
+ if values.get('stage_id'):
+ stage = self.pool.get('project.task.type').browse(cr, uid, values.get('stage_id'), context=context)
+ if stage.closed:
+ self._validate_subflows(cr, uid, ids, context=context)
return res
- def do_cancel(self, cr, uid, ids, *args, **kwargs):
- res = super(project_task, self).do_cancel(cr, uid, ids, *args, **kwargs)
- self._validate_subflows(cr, uid, ids)
- return res
class product_product(osv.osv):
_inherit = "product.product"
@@ -52,8 +69,9 @@ class product_product(osv.osv):
'project_id': fields.many2one('project.project', 'Project', ondelete='set null',)
}
+
class sale_order(osv.osv):
- _inherit ='sale.order'
+ _inherit = 'sale.order'
def _prepare_order_line_procurement(self, cr, uid, order, line, move_id, date_planned, context=None):
proc_data = super(sale_order, self)._prepare_order_line_procurement(cr,
@@ -66,11 +84,12 @@ class sale_order(osv.osv):
return {}
res_sale = {}
res = super(sale_order, self)._picked_rate(cr, uid, ids, name, arg, context=context)
- cr.execute('''select sol.order_id as sale_id, t.state as task_state ,
+ cr.execute('''select sol.order_id as sale_id, stage.closed as task_closed ,
t.id as task_id, sum(sol.product_uom_qty) as total
from project_task as t
left join sale_order_line as sol on sol.id = t.sale_line_id
- where sol.order_id in %s group by sol.order_id,t.state,t.id ''',(tuple(ids),))
+ left join project_task_type as stage on stage.id = t.stage_id
+ where sol.order_id in %s group by sol.order_id,stage.closed,t.id ''',(tuple(ids),))
sale_task_data = cr.dictfetchall()
if not sale_task_data:
@@ -90,7 +109,7 @@ class sale_order(osv.osv):
for item in sale_task_data:
res_sale[item['sale_id']]['total_no_task'] += item['total']
- if item['task_state'] == 'done':
+ if item['task_closed']:
res_sale[item['sale_id']]['number_of_done'] += item['total']
for sale in self.browse(cr, uid, ids, context=context):
diff --git a/addons/project_mrp/project_mrp_demo.xml b/addons/project_mrp/project_mrp_demo.xml
index 30d4cfba7ef..a840c0166e7 100644
--- a/addons/project_mrp/project_mrp_demo.xml
+++ b/addons/project_mrp/project_mrp_demo.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
-
<!--Resource: sale.order.line for services type product-->
<record id="line_services" model="sale.order.line">
@@ -14,5 +13,8 @@
<field name="type">make_to_order</field>
</record>
+ <record id="project.project_tt_deployment" model="project.task.type">
+ <field name="closed" eval="True"/>
+ </record>
</data>
</openerp>
diff --git a/addons/project_mrp/project_mrp_view.xml b/addons/project_mrp/project_mrp_view.xml
index 881ed9b6b29..f724a3c76b6 100644
--- a/addons/project_mrp/project_mrp_view.xml
+++ b/addons/project_mrp/project_mrp_view.xml
@@ -21,12 +21,22 @@
</field>
</field>
</record>
+ <record id="task_type_edit_mrp_inherit" model="ir.ui.view">
+ <field name="name">project.task.type.mrp.inherit</field>
+ <field name="model">project.task.type</field>
+ <field name="inherit_id" ref="project.task_type_edit"/>
+ <field name="arch" type="xml">
+ <field name="case_default" position="after">
+ <field name="closed"/>
+ </field>
+ </field>
+ </record>
<record id="view_project_mrp_inherit_form2" model="ir.ui.view">
<field name="name">project.mrp.form.view.inherit</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
- <field name="state" position="after">
+ <field name="company_id" position="before">
<field name="sale_line_id" string="Order Line"/>
</field>
</field>
diff --git a/addons/project_mrp/project_procurement.py b/addons/project_mrp/project_procurement.py
index f4b4a28db46..8a6dc811d9a 100644
--- a/addons/project_mrp/project_procurement.py
+++ b/addons/project_mrp/project_procurement.py
@@ -33,13 +33,13 @@ class procurement_order(osv.osv):
def action_check_finished(self, cr, uid, ids):
res = super(procurement_order, self).action_check_finished(cr, uid, ids)
return res and self.check_task_done(cr, uid, ids)
-
+
def check_task_done(self, cr, uid, ids, context=None):
""" Checks if task is done or not.
@return: True or False.
"""
for p in self.browse(cr, uid, ids, context=context):
- if (p.product_id.type=='service') and (p.procure_method=='make_to_order') and p.task_id and (p.task_id.state not in ('done', 'cancelled')):
+ if (p.product_id.type == 'service') and (p.procure_method == 'make_to_order') and p.task_id and (p.task_id.stage_id and not p.task_id.stage_id.closed):
return False
return True
diff --git a/addons/project_mrp/test/project_task_procurement.yml b/addons/project_mrp/test/project_task_procurement.yml
index 967461ca30a..b16cce7590d 100644
--- a/addons/project_mrp/test/project_task_procurement.yml
+++ b/addons/project_mrp/test/project_task_procurement.yml
@@ -36,7 +36,7 @@
!python {model: project.task}: |
task_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
assert task_ids, "Task is not generated for Service Order Line."
- self.do_close(cr, uid, task_ids, context=context)
+ self.write(cr, uid, task_ids, {'stage_id': ref('project.project_tt_deployment')}, context=context)
-
I check procurement of Service Order Line after closed task.
-
@@ -44,4 +44,4 @@
procurement_ids = self.search(cr, uid, [('sale_line_id', '=', ref('line_services'))])
assert procurement_ids, "Procurement is not generated for Service Order Line."
procurement = self.browse(cr, uid, procurement_ids[0], context=context)
- assert procurement.state == 'done' , "Procurement should be closed."
+ assert procurement.state == 'done' , "Procurement should be closed." \ No newline at end of file