[MERGE] trunk-kanban-ysa (manually because of uncommit in trunk)
authorAntony Lesuisse <al@openerp.com>
Tue, 13 Sep 2011 16:29:07 +0000 (18:29 +0200)
committerAntony Lesuisse <al@openerp.com>
Tue, 13 Sep 2011 16:29:07 +0000 (18:29 +0200)
bzr revid: al@openerp.com-20110913162907-4gvjesa21nvf8v95

addons/crm/crm_lead.py
addons/crm/crm_lead_view.xml
addons/project/project_view.xml

index c409ce2..d09e0bf 100644 (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
         """
index f76d32b..c00b1f3 100644 (file)
         <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>
-
-                            <div class="oe_kanban_box_content oe_kanban_color_bglight">
-                                <div class="oe_kanban_right oe_kanban_small">
-                                    <field name="user_id"/>
+                        <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 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>
-                                <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 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>
-                                <br class="oe_kanban_clear"/>
                             </div>
                         </div>
                     </t>
index a84423a..0f0c4a9 100644 (file)
                                 <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"/>
             </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>
             <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>
             <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"/>
             <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>