<field name="arch" type="xml">
<form string="Issue" version="7.0">
<header>
- <button name="case_close" string="Done" type="object"
- states="open" groups="base.group_user"/>
- <button name="case_close" string="Done" type="object"
- states="draft,pending" groups="base.group_user"/>
- <button name="case_cancel" string="Cancel Issue" type="object"
- states="draft,open,pending" groups="base.group_user"/>
- <field name="stage_id" widget="statusbar" clickable="True"/>
+ <field name="stage_id" widget="statusbar" clickable="True"
+ options="{'fold_field': 'fold'}"/>
</header>
<sheet string="Issue">
<label for="name" class="oe_edit_only"/>
- <h1><field name="name"/></h1>
+ <h1>
+ <field name="name" class="oe_inline"/>
+ <field name="kanban_state" invisible='1'/>
+ <button name="set_kanban_state_done" help="In Progress" attrs="{'invisible': [('kanban_state', 'in', ['done','blocked'])]}" type="object" icon="gtk-normal" class="oe_link oe_right"/>
+ <button name="set_kanban_state_blocked" help="Ready for Next Stage" attrs="{'invisible': [('kanban_state', 'in', ['normal','blocked'])]}" type="object" icon="gtk-yes" class="oe_link oe_right"/>
+ <button name="set_kanban_state_normal" help="Blocked" attrs="{'invisible': [('kanban_state', 'in', ['done','normal'])]}" type="object" icon="gtk-no" class="oe_link oe_right"/>
+ </h1>
<label for="categ_ids" class="oe_edit_only"/>
<field name="categ_ids" widget="many2many_tags"/>
<group>
- <group groups="base.group_user">
- <field name="user_id"/>
- <field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)"/>
+ <group>
+ <field name="user_id"
+ context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_user']}"/>
+ <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
<field name="email_from"/>
- <label for="project_id" groups="base.group_user"/>
- <div groups="base.group_user">
+ <label for="project_id"/>
+ <div>
<field name="project_id" on_change="on_change_project(project_id)" class="oe_inline" context="{'default_use_issues':1}"/>
- <button name="case_escalate" string="⇒ Escalate" type="object" states="draft,open,pending" class="oe_link"/>
+ <button name="case_escalate" string="⇒ Escalate" type="object" class="oe_link"
+ groups="base.group_user"/>
</div>
</group>
<group>
<page string="Description">
<field name="description" placeholder="Add an internal note..." groups="base.group_user"/>
</page>
- <page string="Extra Info" groups="project.group_project_manager">
+ <page string="Extra Info" groups="project.group_project_manager,project.group_project_user">
<group string="Statistics">
<field name="day_open"/>
<field name="day_close"/>
</group>
<group string="Status" groups="base.group_no_one">
<field name="active"/>
- <field name="state" string="Status"/>
</group>
</page>
</notebook>
<field name="name">Project Issue Tracker Tree</field>
<field name="model">project.issue</field>
<field name="arch" type="xml">
- <tree string="Issue Tracker Tree" fonts="bold:message_unread==True" colors="black:state=='open';blue:state=='pending';grey:state in ('cancel', 'done')">
+ <tree string="Issue Tracker Tree" fonts="bold:message_unread==True">
<field name="message_unread" invisible="1"/>
<field name="id"/>
<field name="name"/>
<field name="user_id"/>
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
<field name="stage_id" widget="selection" readonly="1"/>
- <field name="state" invisible="1"/>
<field name="categ_ids" invisible="1"/>
<field name="task_id" invisible="1"/>
</tree>
<field name="model">project.issue</field>
<field name="arch" type="xml">
<search string="Issue Tracker Search">
- <field name="name" string="Issue" filter_domain="['|', '|',('partner_id','child_of',self),('email_from','ilike',self),('name','ilike',self)]"/>
+ <field name="name" string="Issue" filter_domain="['|', '|', '|', ('partner_id','child_of',self), ('description','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<field name="id"/>
- <filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
+ <field name="partner_id" operator="child_of"/>
+ <filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
+ <filter string="New" name="draft" domain="[('stage_id.sequence', '=', 1)]"/>
<separator/>
- <filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/>
- <filter string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/>
+ <filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
<separator/>
- <filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-"/>
<field name="user_id"/>
<field name="project_id"/>
<field name="categ_ids"/>
- <field name="partner_id" operator="child_of"/>
+ <field name="stage_id" domain="[]"/>
<group expand="0" string="Group By..." >
- <filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
- <filter string="Contact" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
- <filter string="Project" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
- <filter string="Version" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'version_id'}"/>
- <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}"/>
- <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
- <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" help="Creation Month"/>
+ <filter string="Responsible" name="group_user_id" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
+ <filter string="Contact" name="group_partner_id" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
+ <filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
+ <filter string="Version" name="group_version" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'version_id'}"/>
+ <filter string="Priority" name="group_priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}"/>
+ <filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
+ <filter string="Creation Month" name="group_create_date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}"/>
</group>
</search>
</field>
<field name="name">Project Issue- Feature Tracker Tree</field>
<field name="model">project.issue</field>
<field name="arch" type="xml">
- <tree string="Feature Tracker Tree" fonts="bold:message_unread==True" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
+ <tree string="Feature Tracker Tree" fonts="bold:message_unread==True">
<field name="id"/>
<field name="message_unread" invisible="1"/>
<field name="name" string="Feature description"/>
<field name="version_id"/>
<field name="user_id"/>
<field name="stage_id" widget="selection" readonly="1"/>
- <field name="state" groups="base.group_no_one"/>
</tree>
</field>
</record>
- <record id="view_project_feature_filter" model="ir.ui.view">
- <field name="name">Project Issue - Feature Tracker Search</field>
- <field name="model">project.issue</field>
- <field name="arch" type="xml">
- <search string="Feature Tracker Search">
- <field name="name" string="Feature description"/>
- <field name="date"/>
- <field name="state" groups="base.group_no_one"/>
- <filter icon="terp-check" domain="[('state','in',('open','draft'))]" help="Current Features" name="current_feature"/>
- <filter icon="terp-camera_test" domain="[('state','=','open')]" help="Open Features"/>
- <field name="user_id"/>
- <field name="project_id" string="Project"/>
- </search>
- </field>
- </record>
-
<record id="act_project_project_2_project_issue_all" model="ir.actions.act_window">
<field name="res_model">project.issue</field>
<field name="view_type">form</field>
<field name="name">Issues</field>
<field name="view_mode">kanban,tree,form,calendar,graph</field>
- <field name="context">{'search_default_project_id': [active_id], 'default_project_id': active_id}</field>
+ <field name="context">{
+ 'search_default_project_id': [active_id],
+ 'default_project_id': active_id,
+ }
+ </field>
+ <field name="help" type="html">
+ <p>
+ The OpenERP issues tacker allows you to efficiantly manage things
+ like internal requests, software development bugs, customer
+ complaints, project troubles, material breakdowns, etc.
+ </p>
+ </field>
</record>
<!-- Project -->
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<xpath expr='//div[@name="options_active"]' position='inside'>
- <field name="use_issues" class="oe_inline"/>
+ <field name="use_issues" class="oe_inline"
+ on_change="on_change_use_tasks_or_issues(use_tasks, use_issues)"/>
<label for="use_issues"/>
</xpath>
<xpath expr='//div[@name="buttons"]' position='inside'>
<xpath expr='//page[@name="project_stages"]' position="attributes">
<attribute name="attrs">{'invisible': [('use_tasks', '=', False),('use_issues','=',False)]}</attribute>
</xpath>
- <field name="priority" position="before">
+ <xpath expr='//field[@name="use_tasks"]' position="attributes">
+ <attribute name="attrs">{'on_change': 'on_change_use_tasks_or_issues(use_tasks, use_issues)'}</attribute>
+ </xpath>
+ <field name="sequence" position="before">
<field name="project_escalation_id"/>
</field>
- <field name="alias_domain" position="after">
- <label for="alias_model" class="oe_edit_only" string="creates"/><field name="alias_model" class="oe_edit_only oe_inline"/>
- </field>
</field>
</record>
<field name="arch" type="xml">
<field name="use_tasks" position="after">
<field name="use_issues"/>
- <field name="issue_count" invisible="1"/>
+ <field name="issue_ids" invisible="1"/>
</field>
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]" position="inside">
<a t-if="record.use_issues.raw_value" style="margin-right: 10px"
name="%(act_project_project_2_project_issue_all)d" type="action">
- <span t-if="record.issue_count.raw_value gt 1"><field name="issue_count"/> Issues</span>
- <span t-if="record.issue_count.raw_value lt 2"><field name="issue_count"/> Issue</span>
+ <t t-raw="record.issue_ids.raw_value.length"/>
+ <span t-if="record.issue_ids.raw_value.length == 1">Issue</span>
+ <span t-if="record.issue_ids.raw_value.length > 1">Issues</span>
</a>
</xpath>
</field>
</field>
</record>
+ <record id="action_view_issues" model="ir.actions.act_window">
+ <field name="res_model">project.issue</field>
+ <field name="view_type">form</field>
+ <field name="name">Issues</field>
+ <field name="view_mode">kanban,tree,form,calendar,graph</field>
+ <field name="help" type="html">
+ <p>
+ The OpenERP issues tacker allows you to efficiantly manage things
+ like internal requests, software development bugs, customer
+ complaints, project troubles, material breakdowns, etc.
+ </p>
+ </field>
+ </record>
+
+ <!-- res.partner -->
+ <record model="ir.ui.view" id="res_partner_issues_button_view">
+ <field name="name">res.partner.issues.button.view</field>
+ <field name="model">res.partner</field>
+ <field name="inherit_id" ref="base.view_partner_form" />
+ <field name="priority" eval="50"/>
+ <field name="arch" type="xml">
+ <xpath expr="//div[@name='buttons']" position="inside">
+ <button class="oe_inline" type="action" string="Issues"
+ attrs="{'invisible': [('customer', '=', False)]}"
+ name="%(action_view_issues)d"
+ context="{'search_default_partner_id': active_id, 'default_partner_id': active_id}"
+ groups="project.group_project_user"/>
+ </xpath>
+ </field>
+ </record>
+
</data>
</openerp>