changes done in project.py, project_view.xml, project_wizard.xml
bzr revid: solanki.priyesh@gmail.com-20080902124253-hubs1f03nectzvvj
This commit is contained in:
@@ -125,16 +125,15 @@ class project(osv.osv):
|
||||
('hour', 'By Hour'),
|
||||
('effective', 'By Effective Hour')
|
||||
], 'Price setting mode'),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'contact_id': fields.many2one('res.partner.address', 'Contact'),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist'),
|
||||
'tax_ids': fields.many2many('account.tax', 'project_account_tax_rel', 'project_id','tax_id', 'Applicable taxes'),
|
||||
'warn_customer': fields.boolean('Warn customer'),
|
||||
'warn_header': fields.text('Mail header'),
|
||||
'warn_footer': fields.text('Mail footer'),
|
||||
'notes': fields.text('Notes'),
|
||||
'timesheet_id': fields.many2one('hr.timesheet.group', 'Working hours'),
|
||||
'state': fields.selection([('open', 'Open'),('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'Status', required=True),
|
||||
'state': fields.selection([('template', 'Template'), ('open', 'Open'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', required=True, readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
@@ -151,10 +150,21 @@ class project(osv.osv):
|
||||
]
|
||||
|
||||
# toggle activity of projects, their sub projects and their tasks
|
||||
def toggleActive(self, cr, uid, ids, context={}):
|
||||
for proj in self.browse(cr, uid, ids, context):
|
||||
self.setActive(cr, uid, proj.id, not proj.active, context)
|
||||
return True
|
||||
def settemplate(self, cr, uid, ids, context={}):
|
||||
b_obj = self.browse(cr, uid, ids)[0]
|
||||
task_data = self.pool.get('project.task').search(cr, uid, [('project_id','in',ids)])
|
||||
for id in task_data:
|
||||
self.pool.get('project.task').write(cr, uid, id, {'active':False})
|
||||
return self.write(cr, uid, ids, {'state':'template'})
|
||||
|
||||
def resetproject(self, cr, uid, ids, context={}):
|
||||
cr.execute('select id from project_task where project_id in ('+','.join(map(str, ids))+')')
|
||||
for id in cr.fetchall():
|
||||
self.pool.get('project.task').write(cr, uid, id[0], {'active':True})
|
||||
return self.write(cr, uid, ids, {'state':'open'})
|
||||
|
||||
def duplicatetemplate(self, cr, uid, ids, context={}):
|
||||
return self.pool.get('project.project').copy(cr, uid, ids[0], context=context)
|
||||
|
||||
# set active value for a project, its sub projects and its tasks
|
||||
def setActive(self, cr, uid, id, value, context={}):
|
||||
@@ -244,8 +254,6 @@ class task(osv.osv):
|
||||
'effective_hours': fields.function(_hours_effect, method=True, string='Eff. Hours'),
|
||||
'progress_rate': fields.function(_progress_rate, method=True, string='Progress', type='float'),
|
||||
'progress': fields.integer('Progress (0-100)'),
|
||||
'billable': fields.boolean('To be invoiced'),
|
||||
'invoice_id': fields.many2one('account.invoice','Generated Invoice'),
|
||||
'user_id': fields.many2one('res.users', 'Assigned to'),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||
'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'),
|
||||
|
||||
@@ -14,10 +14,6 @@
|
||||
<notebook>
|
||||
<page string="Administration">
|
||||
<field name="name" select="1"/>
|
||||
<group col="3" colspan="2">
|
||||
<field name="active" select="2"/>
|
||||
<button name="toggleActive" string="Toggle activity" type="object"/>
|
||||
</group>
|
||||
<field name="manager" select="1"/>
|
||||
<field name="warn_manager"/>
|
||||
<newline/>
|
||||
@@ -29,14 +25,20 @@
|
||||
<field name="effective_hours" widget="float_time"/>
|
||||
<field name="timesheet_id"/>
|
||||
<field name="state"/>
|
||||
<field name="active" select="2"/>
|
||||
<separator colspan="4" string="Project's members"/>
|
||||
<field colspan="4" name="members" nolabel="1"/>
|
||||
<group col="6" colspan="8">
|
||||
<field name="state"/>
|
||||
<button name="settemplate" string="set as template" type="object" states="open"/>
|
||||
<button name="resetproject" string="reset as project" type="object" states="template"/>
|
||||
<button name="duplicatetemplate" string="duplicate template" type="object" states="template"/>
|
||||
</group>
|
||||
</page>
|
||||
<page groups="base.group_extended" string="Partner Info">
|
||||
<field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id)" select="1"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="contact_id" select="2"/>
|
||||
<field name="category_id" select="2"/>
|
||||
<field name="pricelist_id"/>
|
||||
<field name="warn_customer"/>
|
||||
<field name="mode"/>
|
||||
<field name="tariff"/>
|
||||
@@ -54,76 +56,6 @@
|
||||
<separator colspan="4" string="Taxes"/>
|
||||
<field colspan="4" name="tax_ids" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Tasks">
|
||||
<field colspan="4" name="tasks" nolabel="1" widget="one2many_list">
|
||||
<form string="Task edition">
|
||||
<notebook>
|
||||
<page string="Task definition">
|
||||
<separator colspan="4" string="Task Information"/>
|
||||
<field name="name" select="1"/>
|
||||
<field name="active" select="1"/>
|
||||
<field name="sequence"/>
|
||||
<field name="priority" select="1"/>
|
||||
<field name="user_id" select="1"/>
|
||||
<field name="date_deadline" select="1"/>
|
||||
<field name="date_start" select="1"/>
|
||||
<field name="date_close" select="1"/>
|
||||
<field name="progress"/>
|
||||
<newline/>
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
<field name="effective_hours" widget="float_time"/>
|
||||
<separator colspan="4" string="Description"/>
|
||||
<field colspan="4" name="description" nolabel="1"/>
|
||||
|
||||
<group col="11" colspan="4">
|
||||
<field name="state" select="1"/>
|
||||
<button name="do_draft" states="open" string="Set Draft" type="object"/>
|
||||
<button name="do_open" states="pending,draft" string="Open task" type="object"/>
|
||||
<button name="do_reopen" states="done,cancelled" string="Re-open" type="object"/>
|
||||
<button name="do_pending" states="open" string="Set pending" type="object"/>
|
||||
<button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action"/>
|
||||
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open" string="Delegate" type="action"/>
|
||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Work done">
|
||||
<separator colspan="4" string="Work done"/>
|
||||
<field colspan="4" name="work_ids" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Others">
|
||||
<separator colspan="4" string="Notes"/>
|
||||
<field colspan="4" name="invoice_id" readonly="True"/>
|
||||
<field colspan="4" name="notes" nolabel="1"/>
|
||||
<newline/>
|
||||
<field name="type"/>
|
||||
<field name="billable" select="1"/>
|
||||
<field name="start_sequence"/>
|
||||
<field colspan="4" name="child_ids" nolabel="1">
|
||||
<tree string="Delegated tasks">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
<field name="effective_hours" widget="float_time"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field colspan="4" name="parent_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
<tree colors="red:date_deadline<current_date and state=='draft';blue:date_deadline==current_date and state=='draft';grey:state=='cancel' or state=='close'" string="All tasks">
|
||||
<field name="sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="date_deadline"/>
|
||||
<field name="progress_rate" widget="progressbar"/>
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
<field name="effective_hours" widget="float_time"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field colspan="4" name="notes" nolabel="1"/>
|
||||
</page>
|
||||
@@ -327,8 +259,6 @@
|
||||
<field name="start_sequence"/>
|
||||
<field name="partner_id" select="2"/>
|
||||
<newline/>
|
||||
<field name="invoice_id"/>
|
||||
<field name="billable" select="2"/>
|
||||
<separator colspan="4" string="Notes"/>
|
||||
<field colspan="4" name="notes" nolabel="1"/>
|
||||
</page>
|
||||
@@ -379,26 +309,6 @@
|
||||
</record>
|
||||
<menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_main"/>
|
||||
|
||||
<record id="action_view_task2" model="ir.actions.act_window">
|
||||
<field name="name">Unbilled closed tasks</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('state','=','done'), ('billable','=',True), ('invoice_id','=',False)]</field>
|
||||
</record>
|
||||
<menuitem groups="base.group_extended" id="menu_action_billable" name="Billable Tasks" parent="project.menu_action_view_task"/>
|
||||
|
||||
<menuitem action="action_view_task2" id="menu_action_view_task2" parent="project.menu_action_billable"/>
|
||||
|
||||
<record id="action_view_task3" model="ir.actions.act_window">
|
||||
<field name="name">Unbilled open tasks</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('state','=','open'), ('billable','=',True), ('invoice_id','=',False)]</field>
|
||||
</record>
|
||||
<menuitem action="action_view_task3" id="menu_action_view_task3" parent="project.menu_action_billable"/>
|
||||
|
||||
<record id="action_view_task4" model="ir.actions.act_window">
|
||||
<field name="name">My Tasks</field>
|
||||
<field name="res_model">project.task</field>
|
||||
@@ -520,6 +430,8 @@
|
||||
|
||||
<act_window domain="[('project_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]" id="act_project_project_2_project_task_opened" name="Opened tasks" res_model="project.task" src_model="project.project" view_mode="tree,form" view_type="form"/>
|
||||
|
||||
<act_window id="act_project_project_2_project_task_all" name="All tasks" res_model="project.task" src_model="project.project" view_mode="tree,form" view_type="form"/>
|
||||
|
||||
<act_window domain="[('user_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned tasks" res_model="project.task" src_model="res.users" view_mode="tree,form" view_type="form"/>
|
||||
|
||||
<act_window domain="[('user_id', '=', active_id),('date', '>=', time.strftime('%Y-%m-01'))]" id="act_res_users_2_project_task_work_month" name="Month works" res_model="project.task.work" src_model="res.users" view_mode="tree,form" view_type="form"/>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<terp>
|
||||
<data>
|
||||
<wizard id="wizard_billing" model="project.task" name="project.wiz_bill" string="Bill tasks"/>
|
||||
<wizard id="wizard_close_task" menu="False" model="project.task" name="project.task.close" string="Close Task"/>
|
||||
<wizard id="wizard_delegate_task" menu="False" model="project.task" name="project.task.delegate" string="Delegate Task"/>
|
||||
</data>
|
||||
</terp>
|
||||
</terp>
|
||||
|
||||
Reference in New Issue
Block a user