[MERGE] merge sbh branch for stock planning bug fixes

bzr revid: mra@mra-laptop-20100624115832-hdgcjnpan6xlmz57
This commit is contained in:
Mustufa Rangwala
2010-06-24 17:28:32 +05:30
2 changed files with 27 additions and 21 deletions
+20 -14
View File
@@ -20,15 +20,19 @@
#
##############################################################################
from osv import fields,osv
import pooler
from tools import config
import time
import netsvc
import math
import mx.DateTime
from mx.DateTime import RelativeDateTime, now, DateTime, localtime
from osv import fields
from osv import osv
import netsvc
from tools.translate import _
import tools
from tools import config
def rounding(fl, round_value):
if not round_value:
@@ -374,16 +378,17 @@ class stock_sale_forecast(osv.osv):
return res / val.product_id.uom_id.factor, uom.rounding
def _sales_per_users(self, cr, uid, so, so_line, company, users):
cr.execute("SELECT sum(sol.product_uom_qty) FROM sale_order_line AS sol LEFT JOIN sale_order AS s ON (s.id = sol.order_id) " \
"WHERE (sol.id IN %s) AND (s.state NOT IN (\'draft\',\'cancel\')) AND (s.id IN %s) AND (s.company_id=%s) " \
"AND (s.user_id IN %s) " %(tuple(so_line), tuple(so), company, tuple(users)))
"AND (s.user_id IN %s) " ,(tuple(so_line), tuple(so), company, tuple(users)))
ret = cr.fetchone()[0] or 0.0
return ret
def _sales_per_warehouse(self, cr, uid, so, so_line, company, shops):
cr.execute("SELECT sum(sol.product_uom_qty) FROM sale_order_line AS sol LEFT JOIN sale_order AS s ON (s.id = sol.order_id) " \
"WHERE (sol.id IN %s) AND (s.state NOT IN (\'draft\',\'cancel\')) AND (s.id IN %s)AND (s.company_id=%s) " \
"AND (s.shop_id IN %s)" %(tuple(so_line), tuple(so), company, tuple(shops)))
"AND (s.shop_id IN %s)" ,(tuple(so_line), tuple(so), company, tuple(shops)))
ret = cr.fetchone()[0] or 0.0
return ret
@@ -411,8 +416,8 @@ class stock_sale_forecast(osv.osv):
dept_obj = self.pool.get('hr.department')
dept_id = obj.analyzed_dept_id.id and [obj.analyzed_dept_id.id] or []
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_set),))
# 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),))
dept_users = [x for x, in cr.fetchall()]
dept_users_set = ','.join(map(str,dept_users))
else:
@@ -420,21 +425,22 @@ class stock_sale_forecast(osv.osv):
factor, round_value = self._from_default_uom_factor(cr, uid, obj, obj.product_uom.id, context=context)
for i, period in enumerate(periods):
if period:
so_period_ids = so_obj.search(cr, uid, [('date_order','>=',period.date_start), ('date_order','<=',period.date_stop)], context = context)
so_period_ids = so_obj.search(cr, uid, [('date_order','>=',period.date_start),('date_order','<=',period.date_stop) ], context = context)
if so_period_ids:
so_period_set = ','.join(map(str,so_period_ids))
# so_period_set = ','.join(map(str,so_period_ids))
if obj.analyzed_user_id:
user_set = str(obj.analyzed_user_id.id)
sales[i][0] =self._sales_per_users(cr, uid, so_period_set, so_line_product_set, obj.company_id.id, user_set)
sales[i][0] =self._sales_per_users(cr, uid, so_period_ids, so_line_product_ids, obj.company_id.id, user_set)
sales[i][0] *=factor
if dept_users:
sales[i][1]= self._sales_per_users(cr, uid, so_period_set, so_line_product_set, obj.company_id.id, dept_users_set)
sales[i][1]= self._sales_per_users(cr, uid, so_period_ids, so_line_product_ids, obj.company_id.id, dept_users_set)
sales[i][1]*=factor
if shops:
sales[i][2]= self._sales_per_warehouse(cr, uid, so_period_set, so_line_product_set, obj.company_id.id, shops_set)
sales[i][2]= self._sales_per_warehouse(cr, uid, so_period_ids, so_line_product_ids, obj.company_id.id, shops_set)
sales[i][2]*=factor
if obj.analyze_company:
sales[i][3]= self._sales_per_company(cr, uid, so_period_set, so_line_product_set, obj.company_id.id, )
sales[i][3]= self._sales_per_company(cr, uid, so_period_ids, so_line_product_ids, obj.company_id.id, )
sales[i][3]*=factor
self.write(cr, uid, ids, {
'analyzed_period1_per_user':sales[0][0],
@@ -113,7 +113,7 @@
</record>
<record id="action_stock_sale_forecast_createlines_form" model="ir.actions.act_window">
<field name="name">Create Stock and Sales Forecasts</field>
<field name="name">Create Sales Forecasts</field>
<field name="res_model">stock.sale.forecast.createlines</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
@@ -121,9 +121,9 @@
<field name="target">new</field>
</record>
<menuitem id="menu_stock_sale_forecast" name="Stock and Sales Forecasts"
<menuitem id="menu_stock_sale_forecast" name="Sales Forecasts"
parent="base.menu_base_partner" sequence="6"/>
<menuitem id="menu_stock_sale_forecast_createlines" name="Create Stock and Sales Forecasts" parent="menu_stock_sale_forecast" action="action_stock_sale_forecast_createlines_form" sequence = "5"/>
<menuitem id="menu_stock_sale_forecast_createlines" name="Create Sales Forecasts" parent="menu_stock_sale_forecast" action="action_stock_sale_forecast_createlines_form" sequence = "5"/>
<record id="view_stock_sale_forecast_form" model="ir.ui.view">
<field name="name">stock.sale.forecast.form</field>
@@ -209,7 +209,7 @@
<field name="model">stock.sale.forecast</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Stock and Sales Forecasts" editable="bottom">
<tree string="Sales Forecasts" editable="bottom">
<field name="warehouse_id"/>
<field name ="company_id"/>
<field name="user_id"/>
@@ -241,7 +241,7 @@
<field name="model">stock.sale.forecast</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Stock and Sales Forecast">
<search string="Search Sales Forecast">
<filter icon="terp-camera_test" string="Validated" domain="[('state','=','validated')]" separator="1"/>
<field name="company_id"/>
<field name="warehouse_id" />
@@ -262,7 +262,7 @@
<record id="action_view_stock_sale_forecast_form" model="ir.actions.act_window">
<field name="name">Stock and Sales Forecast</field>
<field name="name">Sales Forecast</field>
<field name="res_model">stock.sale.forecast</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
@@ -271,7 +271,7 @@
</record>
<menuitem id="menu_stock_sale_forecast_all"
name="Stock and Sales Forecasts"
name="Sales Forecasts"
parent="menu_stock_sale_forecast"
action="action_view_stock_sale_forecast_form"/>