[MERGE] MErged from main branch
bzr revid: vra@tinyerp.com-20100524111507-2txcs1l0tr135pux
This commit is contained in:
@@ -32,7 +32,7 @@ class report_project_task_user(osv.osv):
|
||||
'year': fields.char('Year',size=64,required=False, readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'Assigned To', readonly=True),
|
||||
'date_start': fields.date('Starting Date',readonly=True),
|
||||
'no_of_days': fields.integer('#Days', size=128, readonly=True),
|
||||
'no_of_days': fields.integer('# of Days', size=128, readonly=True),
|
||||
'description': fields.text('Description',readonly=True),
|
||||
'date_end': fields.date('Ending Date',readonly=True),
|
||||
'date_deadline': fields.date('Deadline',readonly=True),
|
||||
@@ -40,10 +40,13 @@ class report_project_task_user(osv.osv):
|
||||
'hours_planned': fields.float('Planned Hours', readonly=True),
|
||||
'hours_effective': fields.float('Effective Hours', readonly=True),
|
||||
'hours_delay': fields.float('Avg. Plan.-Eff.', readonly=True),
|
||||
'closing_days': fields.float('Avg Closing Delay', digits=(16,2), readonly=True, group_operator="avg",
|
||||
'remaining_hours': fields.float('Remaining Hours', readonly=True),
|
||||
'total_hours': fields.float('Total Hours', readonly=True),
|
||||
'closing_days': fields.float('Days to Close', digits=(16,2), readonly=True, group_operator="avg",
|
||||
help="Number of Days to close the task"),
|
||||
|
||||
'nbr': fields.integer('#Number of tasks', readonly=True),
|
||||
'opening_days': fields.float('Days to Open', digits=(16,2), readonly=True, group_operator="avg",
|
||||
help="Number of Days to Open the task"),
|
||||
'nbr': fields.integer('# of tasks', readonly=True),
|
||||
'priority' : fields.selection([('4','Very Low'),
|
||||
('3','Low'),
|
||||
('2','Medium'),
|
||||
@@ -87,8 +90,11 @@ class report_project_task_user(osv.osv):
|
||||
t.company_id,
|
||||
t.partner_id,
|
||||
t.type,
|
||||
sum(remaining_hours) as remaining_hours,
|
||||
sum(total_hours) as total_hours,
|
||||
sum(planned_hours) as hours_planned,
|
||||
avg(extract('epoch' from (t.date_end-t.create_date)))/(3600*24) as closing_days,
|
||||
avg(extract('epoch' from (t.date_start-t.create_date)))/(3600*24) as opening_days,
|
||||
sum(w.hours) as hours_effective,
|
||||
((sum(planned_hours)-sum(w.hours))/count(distinct t.id))::decimal(16,2) as hours_delay
|
||||
from project_task t
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
<field name="model">report.project.task.user</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Tasks">
|
||||
<field name="name" />
|
||||
<tree string="Tasks Analysis">
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="project_id" invisible="1"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="date_deadline" invisible="1"/>
|
||||
@@ -22,12 +22,15 @@
|
||||
<field name="day" invisible="1"/>
|
||||
<field name="month" invisible="1"/>
|
||||
<field name="year" invisible="1"/>
|
||||
<field name="nbr" sum='#Number of tasks'/>
|
||||
<field name="no_of_days" sum="#Days"/>
|
||||
<field name="nbr" sum='# of tasks'/>
|
||||
<field name="no_of_days" sum="# of Days"/>
|
||||
<field name="total_hours" sum='Total Hours'/>
|
||||
<field name="hours_planned" sum='Planned Hours'/>
|
||||
<field name="remaining_hours" sum='Remaining Hours'/>
|
||||
<field name="hours_effective" sum='Effective Hours'/>
|
||||
<field name="hours_delay" sum='Avg. Plan.-Eff.'/>
|
||||
<field name="closing_days" sum='Avg Closing Delay'/>
|
||||
<field name="opening_days" sum='Days to Open'/>
|
||||
<field name="closing_days" sum='Days to Close'/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -37,7 +40,7 @@
|
||||
<field name="model">report.project.task.user</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Tasks" type="bar">
|
||||
<graph string="Tasks Analysis" type="bar">
|
||||
<field name="name"/>
|
||||
<field name="state" group="True"/>
|
||||
<field name="no_of_days" operator="+"/>
|
||||
@@ -50,7 +53,7 @@
|
||||
<field name="model">report.project.task.user</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Tasks">
|
||||
<search string="Tasks Analysis">
|
||||
<group>
|
||||
<filter icon="terp-project" string="Last 365 Days"
|
||||
domain="[('date_start','<=', time.strftime('%%Y-%%m-%%d')),('date_start','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%%Y-%%m-%%d'))]"
|
||||
@@ -82,6 +85,7 @@
|
||||
name="done"
|
||||
domain="[('state','=','done')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="partner_id" />
|
||||
<field name="user_id" widget="selection">
|
||||
<filter icon="terp-project"
|
||||
string="My Task"
|
||||
@@ -102,26 +106,22 @@
|
||||
help ="Non assigned tasks to projects"
|
||||
domain="[('project_id','=',False"/>
|
||||
</field>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Extended options..." colspan="10" col="12">
|
||||
<field name="type" widget="selection"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="date_start"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="date_deadline"/>
|
||||
<newline/>
|
||||
<field name="date_deadline"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="priority"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="date_end"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="partner_id" />
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Group By..." colspan="10" col="11">
|
||||
<filter string="User" name="User" icon="terp-project" context="{'group_by':'user_id'}" />
|
||||
<filter string="Project" icon="terp-project" context="{'group_by':'project_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Partner" icon="terp-project" context="{'group_by':'partner_id'}" />
|
||||
<filter string="Task" icon="terp-project" context="{'group_by':'name'}" />
|
||||
<separator orientation="vertical"/>
|
||||
@@ -138,7 +138,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_project_task_user_tree" model="ir.actions.act_window">
|
||||
<field name="name">Tasks</field>
|
||||
<field name="name">Tasks Analysis</field>
|
||||
<field name="res_model">report.project.task.user</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,graph</field>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
import netsvc
|
||||
|
||||
class sale_order_line_make_invoice(osv.osv_memory):
|
||||
_name = "sale.order.line.make.invoice"
|
||||
|
||||
@@ -19,9 +19,7 @@
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from service import web_services
|
||||
from tools.translate import _
|
||||
import ir
|
||||
import netsvc
|
||||
|
||||
class sale_make_invoice(osv.osv_memory):
|
||||
@@ -37,13 +35,13 @@ class sale_make_invoice(osv.osv_memory):
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
record_id = context and context.get('active_id', False)
|
||||
order = self.pool.get('sale.order').browse(cr, uid, record_id)
|
||||
if order.state=='draft':
|
||||
if order.state == 'draft':
|
||||
raise osv.except_osv(_('Warning !'),'You can not create invoice when sale order is not confirmed.')
|
||||
return False
|
||||
def make_invoices(self, cr, uid, ids, context={}):
|
||||
order_obj = self.pool.get('sale.order')
|
||||
newinv = []
|
||||
data=self.read(cr,uid,ids)[0]
|
||||
data = self.read(cr,uid,ids)[0]
|
||||
order_obj.action_invoice_create(cr, uid, context.get(('active_ids'),[]), data['grouped'],date_inv = data['invoice_date'])
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for id in context.get(('active_ids'),[]):
|
||||
|
||||
@@ -1187,7 +1187,7 @@ class stock_move(osv.osv):
|
||||
|
||||
def _check_product_lot(self, cr, uid, ids):
|
||||
for move in self.browse(cr, uid, ids):
|
||||
if move.prodlot_id and (move.prodlot_id.product_id.id != move.product_id.id):
|
||||
if move.prodlot_id and move.state == 'done' and (move.prodlot_id.product_id.id != move.product_id.id):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user