# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-import mrp
+import project_procurement
import project_mrp
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+++ /dev/null
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
-#
-# 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 <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-
-from osv import fields, osv, orm
-
-import tools
-
-class procurement_order(osv.osv):
- _name = "procurement.order"
- _inherit = "procurement.order"
- _columns = {
- 'task_id': fields.many2one('project.task', 'Task')
- }
-
- def action_produce_assign_service(self, cr, uid, ids, context=None):
- if context is None:
- context = {}
- for procurement in self.browse(cr, uid, ids):
- sline = self.pool.get('sale.order.line')
- product_obj=self.pool.get('product.product')
- content = ''
- sale_order = self.pool.get('sale.order')
- so_ref = procurement.name.split(':')[0]
- order_ids = sale_order.search(cr, uid, [('name', '=', so_ref)], context)
-
- if order_ids:
- sale_ids = sale_order.read(cr, uid, order_ids[0], ['order_line'], context=context)['order_line']
- else:
- so_ref = procurement.origin.split(':')[0]
- sale_ids = sline.search(cr, uid, [('procurement_id', '=',procurement.id)], context)
- l = None
- project_id = None
- analytic_account_id = False
- partner_id = False
-
- for line in sline.browse(cr, uid, sale_ids, context=context):
- content += (line.notes or '')
- l = line
- partner_id = line.order_id.partner_id.id
- if line.order_id.project_id:
- analytic_account_id = line.order_id.project_id.id
- partner_id = line.order_id.partner_id.id
- content+="\n\n"+line.order_id.project_id.complete_name
- break
-
- # Creating a project for task.Project is created from Procurement.
- project_obj = self.pool.get('project.project')
- proj_name = tools.ustr(so_ref)
- product_project_id =procurement.product_id.project_id and procurement.product_id.project_id.id or False
- proj_exist_id = project_obj.search(cr, uid, [('name', '=', proj_name)], context=context)
- if not proj_exist_id:
- project_id = project_obj.create(cr, uid, {'name': proj_name, 'partner_id': partner_id,'parent_id':product_project_id})
- else:
- project_id = proj_exist_id[0]
-
- self.write(cr, uid, [procurement.id], {'state': 'running'})
-
- name_task = ('','')
- planned_hours=0.0
- if procurement.product_id.type == 'service':
- proc_name = procurement.name
- if procurement.origin == proc_name:
- proc_name = procurement.product_id.name
-
- name_task = (procurement.origin, proc_name or '')
- else:
- name_task = (procurement.product_id.name or procurement.origin, procurement.name or '')
- planned_hours= procurement.product_id.sale_delay +procurement.product_id. produce_delay
- task_id = self.pool.get('project.task').create(cr, uid, {
- 'name': '%s:%s' % name_task,
- 'date_deadline': procurement.date_planned,
- 'planned_hours':planned_hours,
- 'remaining_hours': planned_hours,
- 'user_id': procurement.product_id.product_manager.id,
- 'notes': "b"+(l and l.order_id.note or ''),
- 'procurement_id': procurement.id,
- 'description': content,
- 'date_deadline': procurement.date_planned,
- 'state': 'draft',
- 'partner_id': l and l.order_id.partner_id.id or False,
- 'company_id': procurement.company_id.id,
- 'project_id': project_id,
- },context=context)
- self.write(cr, uid, [procurement.id],{'task_id':task_id})
- product_obj.write(cr,uid,[procurement.product_id.id],{'project_id':project_id})
- return task_id
-
-procurement_order()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
--- /dev/null
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# 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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import fields, osv, orm
+
+import tools
+
+class procurement_order(osv.osv):
+ _name = "procurement.order"
+ _inherit = "procurement.order"
+ _columns = {
+ 'task_id': fields.many2one('project.task', 'Task')
+ }
+
+ def action_produce_assign_service(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
+ for procurement in self.browse(cr, uid, ids):
+ sline = self.pool.get('sale.order.line')
+ product_obj=self.pool.get('product.product')
+ content = ''
+ sale_order = self.pool.get('sale.order')
+ so_ref = procurement.name.split(':')[0]
+ order_ids = sale_order.search(cr, uid, [('name', '=', so_ref)], context)
+
+ if order_ids:
+ sale_ids = sale_order.read(cr, uid, order_ids[0], ['order_line'], context=context)['order_line']
+ else:
+ so_ref = procurement.origin.split(':')[0]
+ sale_ids = sline.search(cr, uid, [('procurement_id', '=',procurement.id)], context)
+ l = None
+ project_id = None
+ analytic_account_id = False
+ partner_id = False
+
+ for line in sline.browse(cr, uid, sale_ids, context=context):
+ content += (line.notes or '')
+ l = line
+ partner_id = line.order_id.partner_id.id
+ if line.order_id.project_id:
+ analytic_account_id = line.order_id.project_id.id
+ partner_id = line.order_id.partner_id.id
+ content+="\n\n"+line.order_id.project_id.complete_name
+ break
+
+ # Creating a project for task.Project is created from Procurement.
+ project_obj = self.pool.get('project.project')
+ proj_name = tools.ustr(so_ref)
+ product_project_id =procurement.product_id.project_id and procurement.product_id.project_id.id or False
+ proj_exist_id = project_obj.search(cr, uid, [('name', '=', proj_name)], context=context)
+ if not proj_exist_id:
+ project_id = project_obj.create(cr, uid, {'name': proj_name, 'partner_id': partner_id,'parent_id':product_project_id})
+ else:
+ project_id = proj_exist_id[0]
+
+ self.write(cr, uid, [procurement.id], {'state': 'running'})
+
+ name_task = ('','')
+ planned_hours=0.0
+ if procurement.product_id.type == 'service':
+ proc_name = procurement.name
+ if procurement.origin == proc_name:
+ proc_name = procurement.product_id.name
+
+ name_task = (procurement.origin, proc_name or '')
+ else:
+ name_task = (procurement.product_id.name or procurement.origin, procurement.name or '')
+ planned_hours= procurement.product_id.sale_delay +procurement.product_id. produce_delay
+ task_id = self.pool.get('project.task').create(cr, uid, {
+ 'name': '%s:%s' % name_task,
+ 'date_deadline': procurement.date_planned,
+ 'planned_hours':planned_hours,
+ 'remaining_hours': planned_hours,
+ 'user_id': procurement.product_id.product_manager.id,
+ 'notes': "b"+(l and l.order_id.note or ''),
+ 'procurement_id': procurement.id,
+ 'description': content,
+ 'date_deadline': procurement.date_planned,
+ 'state': 'draft',
+ 'partner_id': l and l.order_id.partner_id.id or False,
+ 'company_id': procurement.company_id.id,
+ 'project_id': project_id,
+ },context=context)
+ self.write(cr, uid, [procurement.id],{'task_id':task_id})
+ product_obj.write(cr,uid,[procurement.product_id.id],{'project_id':project_id})
+ return task_id
+
+procurement_order()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
'test/purchase_from_order.yml',
'test/purchase_from_manual.yml',
# 'test/purchase_from_picking.yml',
- 'purchase_unit_test.xml'
+ 'purchase_unit_test.xml',
+ 'test/procurement_buy.yml',
],
'demo': ['purchase_demo.xml'],
'installable': True,