[MERGE] trunk-kanban-ysa (manually because of uncommit in trunk)

bzr revid: al@openerp.com-20110913162907-4gvjesa21nvf8v95
This commit is contained in:
Antony Lesuisse 2011-09-13 18:29:07 +02:00
parent c7c2b5846d
commit ea2e8b64c4
3 changed files with 133 additions and 51 deletions

View File

@ -186,6 +186,12 @@ class crm_lead(crm_case, osv.osv):
'date_action': fields.date('Next Action Date'),
'title_action': fields.char('Next Action', size=64),
'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_ids', '=', section_id)]"),
'color': fields.integer('Color Index'),
'partner_address_name': fields.related('partner_address_id', 'name', type='char', string='Partner Contact Name', readonly=True),
'company_currency': fields.related('company_id', 'currency_id', 'symbol', type='char', string='Company Currency', readonly=True),
'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True),
'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),
}
_defaults = {
@ -197,6 +203,7 @@ class crm_lead(crm_case, osv.osv):
'section_id': crm_case._get_section,
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c),
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
'color': 0,
#'stage_id': _get_stage_id,
}
@ -312,6 +319,21 @@ class crm_lead(crm_case, osv.osv):
self.log(cr, uid, l.id, message)
return res
def set_priority(self, cr, uid, ids, priority):
"""Set lead priority
"""
return self.write(cr, uid, ids, {'priority' : priority})
def set_high_priority(self, cr, uid, ids, *args):
"""Set lead priority to high
"""
return self.set_priority(cr, uid, ids, '1')
def set_normal_priority(self, cr, uid, ids, *args):
"""Set lead priority to normal
"""
return self.set_priority(cr, uid, ids, '3')
def convert_opportunity(self, cr, uid, ids, context=None):
""" Precomputation for converting lead to opportunity
"""

View File

@ -298,60 +298,63 @@
<field name="model">crm.lead</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban>
<kanban default_group_by="stage_id">
<field name="state"/>
<field name="color"/>
<field name="priority"/>
<field name="planned_revenue"/>
<field name="user_email"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_box oe_kanban_color_border #{__kanban_color(state.raw_value)}">
<div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
<h6 class="oe_kanban_left"><field name="name"/></h6>
<h5 class="oe_kanban_right" style="vertical-align: top">
<field name="planned_revenue"/>
<img src="http://www.gravatar.com/avatar/2eb60ad22dadcf4dc456b28390a80268.png" style="border-radius: 2px" width="20" height="20"/>
</h5>
<br class="oe_kanban_clear"/>
</div>
<t t-set="color" t-value="kanban_color(record.color.raw_value || record.state.raw_value)"/>
<div t-att-class="color + (record.priority.raw_value == 1 ? ' oe_kanban_color_alert' : '')">
<div class="oe_kanban_box oe_kanban_color_border">
<table class="oe_kanban_table oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
<tr>
<td class="oe_kanban_title3" align="left" valign="middle">
<a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
<a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.6; filter:alpha(opacity=60);"/>
<field name="partner_id"/>
</td>
<td class="oe_kanban_title2" align="right" valign="middle" t-if="record.planned_revenue.raw_value" nowrap="nowrap">
<t t-esc="Math.round(record.planned_revenue.value)"/> <field name="company_currency"/>
</td>
<td valign="top" width="22"><img t-att-src="kanban_gravatar(record.user_email.value, 22)" class="oe_kanban_gravatar"/></td>
</tr>
</table>
<div class="oe_kanban_box_content oe_kanban_color_bglight">
<div class="oe_kanban_right oe_kanban_small">
<field name="user_id"/>
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
<div class="oe_kanban_right oe_kanban_small">
<field name="user_login"/>
</div>
<div>
<b><field name="partner_address_name"/></b>
</div>
<div>
<field name="name"/>
</div>
<div style="padding-left: 0.5em">
<i><field name="date_action"/><t t-if="record.date_action.raw_value"> : </t><field name="title_action"/></i>
</div>
</div>
<br class="oe_kanban_clear"/>
<b><field name="partner_address_id"/></b><br/>
<field name="description"/><br/>
<field name="date_action"/><t t-if="date_action.raw_value">: </t><field name="title_action"/>
</div>
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Send New Email" class="oe_kanban_color_border"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
<a string="Schedule/Log Call" class="oe_kanban_color_border"
name="%(opportunity2phonecall_act)d"
icon="terp-call-start" type="action"/>
<a string="Add Internal Note" class="oe_kanban_color_border"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action"/>
<a name="action_makeMeeting" type="object" class="oe_kanban_color_border"
string="Schedule Meeting" icon="gtk-redo" />
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Edit" icon="gtk-edit" type="edit"/>
<a string="Delete" icon="gtk-close" type="delete"/>
<a string="Change Color" icon="color-picker" type="color" name="color"/>
<a string="Send New Email" name="%(crm.action_crm_send_mail)d" context="{'mail':'new', 'model': 'crm.lead'}" icon="terp-mail-message-new" type="action"/>
<a string="Schedule/Log Call" name="%(opportunity2phonecall_act)d" icon="terp-call-start" type="action"/>
<a string="Add Internal Note" name="%(crm.action_crm_add_note)d" context="{'model': 'crm.lead' }" icon="terp-document-new" type="action"/>
<a name="action_makeMeeting" type="object" string="Schedule Meeting" icon="gtk-redo" />
</div>
<div class="oe_kanban_right">
<a name="case_pending" string="Pending" states="draft,open" type="object" icon="lead-stage-pending" />
<a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="lead-stage-won" />
<a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="lead-stage-lost" />
</div>
<br class="oe_kanban_clear"/>
</div>
<div class="oe_kanban_right">
<a name="case_cancel" string="Cancel" states="draft" type="object" icon="gtk-cancel" />
<a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="gtk-cancel" />
<a name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert" />
<a name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward" />
<a name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause" />
<a name="case_escalate" string="Escalate" states="open,pending" type="object" icon="gtk-go-up" />
<a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="gtk-apply" />
</div>
<br class="oe_kanban_clear"/>
</div>
</div>
</t>

View File

@ -297,7 +297,7 @@
<field name="create_date"/>
</group>
<separator string="Miscelleanous" colspan="4"/>
<field name="partner_id"/>
<field name="partner_id" />
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<group col="4" colspan="2">
<field name="type_id" widget="selection" readonly="1"/>
@ -312,6 +312,63 @@
</field>
</record>
<record id="view_task_kanban" model="ir.ui.view">
<field name="name">project.task.kanban</field>
<field name="model">project.task</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban>
<field name="state"/>
<templates>
<t t-name="kanban-box">
<t t-set="color">#fff</t>
<t t-if="state.raw_value == 'done'" t-set="color">#dfd</t>
<t t-if="state.raw_value == 'open'" t-set="color">lightcyan</t>
<t t-if="state.raw_value == 'cancel' and total_hours.raw_value gt 0" t-set="color">red</t>
<div t-attf-style="background: #{color}">
<table>
<tr>
<td>Title :</td>
<td><field name="name"/></td>
</tr>
<tr>
<td>Progress :</td>
<td><field name="progress"/></td>
</tr>
<tr>
<td><button data-type="action" data-name="%(action_project_task_reevaluate)d">Reevaluate</button><button data-type="edit" >Edit</button></td>
<td><button data-type="object" data-name="prev_type">Previous phase</button></td>
</tr>
<tr>
<td>Project name:</td>
<td colspan="2"><field name="project_id"/></td>
</tr>
<tr>
<td>Phase</td>
<td colspan="2"><field name="type_id"/></td>
</tr>
<tr>
<td>Remain Time :</td>
<td colspan="2"><field name="remaining_hours"/></td>
</tr>
<tr>
<td>Spent Time :</td>
<td colspan="2"><field name="remaining_hours"/></td>
</tr>
<tr>
<td>Remain Time :</td>
<td colspan="2"><field name="remaining_hours"/></td>
</tr>
</table>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_task_tree2" model="ir.ui.view">
<field name="name">project.task.tree</field>
<field name="model">project.task</field>
@ -437,7 +494,7 @@
<field name="name">Tasks</field>
<field name="res_model">project.task</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,gantt,graph</field>
<field name="view_mode">tree,form,calendar,gantt,graph,kanban</field>
<field eval="False" name="filter"/>
<field name="view_id" ref="view_task_tree2"/>
<field name="context">{"search_default_user_id":uid, "search_default_current": 1}</field>
@ -450,7 +507,7 @@
<field name="name">Overpassed Tasks</field>
<field name="res_model">project.task</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="view_mode">tree,form,calendar,graph,kanban</field>
<field name="domain">[('date_deadline','&lt;',time.strftime('%Y-%m-%d')),('state','in',('draft','pending','open'))]</field>
<field name="filter" eval="True"/>
<field name="search_view_id" ref="view_task_search_form"/>
@ -461,7 +518,7 @@
<field name="res_model">project.task</field>
<field name="name">Project's tasks</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph,gantt</field>
<field name="view_mode">tree,form,calendar,graph,gantt,kanban</field>
<field name="domain">[('project_id', 'child_of', [active_id])]</field>
<field name="context">{'project_id':active_id, 'active_test':False}</field>
</record>