diff options
| author | Vidhin Mehta <vme@tinyerp.com> | 2013-08-23 10:36:02 +0530 |
|---|---|---|
| committer | Vidhin Mehta <vme@tinyerp.com> | 2013-08-23 10:36:02 +0530 |
| commit | 75ddd5ccbec73c4a671b6a74efaa3d41dc2ea2db (patch) | |
| tree | 50ed3620df15e8533760f5d47e754a1d39c1e856 /addons/project_mrp | |
| parent | 42f27a15275effd9c43dfe99e32c395ca6b3fd8a (diff) | |
| parent | a7f4b6aaa0359d12046e81183417c24f093cd7c3 (diff) | |
[MERGE]Trunk.
bzr revid: vme@tinyerp.com-20130823050602-33bqv07e7g8dhv7x
Diffstat (limited to 'addons/project_mrp')
| -rw-r--r-- | addons/project_mrp/project_mrp.py | 43 | ||||
| -rw-r--r-- | addons/project_mrp/project_mrp_demo.xml | 4 | ||||
| -rw-r--r-- | addons/project_mrp/project_mrp_view.xml | 12 | ||||
| -rw-r--r-- | addons/project_mrp/project_procurement.py | 4 | ||||
| -rw-r--r-- | addons/project_mrp/test/project_task_procurement.yml | 4 |
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 |
