[IMP] stock_planning: Improved code to forecast stock department wise. Small code refactoring.

bzr revid: uco@tinyerp.com-20100730071920-naz8huq06okb37g9
This commit is contained in:
uco (Open ERP) 2010-07-30 12:49:20 +05:30
parent a913ec8e89
commit b2230e7244
1 changed files with 12 additions and 12 deletions

View File

@ -68,14 +68,14 @@ class stock_sale_forecast(osv.osv):
'company_id':fields.many2one('res.company', 'Company', required=True),
'create_uid': fields.many2one('res.users', 'Responsible'),
'name': fields.char('Name', size=64, readonly=True, states={'draft': [('readonly',False)]}),
'user_id': fields.many2one('res.users' , 'Created/Validated by',readonly=True, \
'user_id': fields.many2one('res.users', 'Created/Validated by',readonly=True, \
help='Shows who created this forecast, or who validated.'),
'warehouse_id': fields.many2one('stock.warehouse' , 'Warehouse', required=True, readonly=True, states={'draft': [('readonly',False)]}, \
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True, readonly=True, states={'draft': [('readonly',False)]}, \
help='Shows which warehouse this forecast concerns. '\
'If during stock planning you will need sales forecast for all warehouses choose any warehouse now.'),
'period_id': fields.many2one('stock.period' , 'Period', required=True, readonly=True, states={'draft':[('readonly',False)]}, \
'period_id': fields.many2one('stock.period', 'Period', required=True, readonly=True, states={'draft':[('readonly',False)]}, \
help = 'Shows which period this forecast concerns.'),
'product_id': fields.many2one('product.product' , 'Product', readonly=True, required=True, states={'draft':[('readonly',False)]}, \
'product_id': fields.many2one('product.product', 'Product', readonly=True, required=True, states={'draft':[('readonly',False)]}, \
help = 'Shows which product this forecast concerns.'),
'product_qty': fields.float('Product Quantity', required=True, readonly=True, states={'draft':[('readonly',False)]}, \
help= 'Forecasted quantity.'),
@ -89,13 +89,13 @@ class stock_sale_forecast(osv.osv):
# Field used in onchange_uom to check what uom was before change and recalculate quantities acording to old uom (active_uom) and new uom.
'active_uom': fields.many2one('product.uom', string = "Active UoM"),
'state': fields.selection([('draft','Draft'),('validated','Validated')],'State',readonly=True),
'analyzed_period1_id': fields.many2one('stock.period' , 'Period1', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period2_id': fields.many2one('stock.period' , 'Period2', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period3_id': fields.many2one('stock.period' , 'Period3', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period4_id': fields.many2one('stock.period' , 'Period4', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period1_id': fields.many2one('stock.period', 'Period1', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period2_id': fields.many2one('stock.period', 'Period2', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period3_id': fields.many2one('stock.period', 'Period3', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period4_id': fields.many2one('stock.period', 'Period4', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_period5_id': fields.many2one('stock.period' , 'Period5', readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_user_id': fields.many2one('res.users' , 'This User', required=False, readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_dept_id': fields.many2one('hr.department' , 'This Department', required=False, \
'analyzed_user_id': fields.many2one('res.users', 'This User', required=False, readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_dept_id': fields.many2one('hr.department', 'This Department', required=False, \
readonly=True, states={'draft':[('readonly',False)]},),
'analyzed_warehouse_id': fields.many2one('stock.warehouse' , 'This Warehouse', required=False, \
readonly=True, states={'draft':[('readonly',False)]}),
@ -200,7 +200,7 @@ class stock_sale_forecast(osv.osv):
def _to_default_uom_factor(self, cr, uid, val, uom_id, context=None):
uom_obj = self.pool.get('product.uom')
uom = uom_obj.browse(cr, uid, uom_id, context=context)
coef = uom.factor
coef = uom.factor
if uom.category_id.id <> val.product_id.uom_id.category_id.id:
coef = coef / val.product_id.uos_coeff
return val.product_id.uom_id.factor / coef
@ -253,7 +253,7 @@ class stock_sale_forecast(osv.osv):
dept_ids = dept_obj.search(cr,uid,[('parent_id','child_of',dept_id)])
# dept_ids_set = ','.join(map(str,dept_ids))
# cr.execute("SELECT user_id FROM hr_department_user_rel WHERE (department_id IN %s)" ,(tuple(dept_ids),))
cr.execute("SELECT id FROM hr_employee WHERE (department_id IN %s)" ,(tuple(dept_ids),))
cr.execute("SELECT user_id FROM resource_resource rsc, hr_employee emp WHERE (emp.resource_id = rsc.id and emp.department_id IN %s)" ,(tuple(dept_ids),))
dept_users = [x for x, in cr.fetchall()]
# dept_users_set = ','.join(map(str,dept_users))
dept_users_set = map(str,dept_users)