789 lines
47 KiB
XML
789 lines
47 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<openerp>
|
|
<data>
|
|
|
|
<!-- Top menu item -->
|
|
<menuitem name="Project"
|
|
id="base.menu_main_pm"
|
|
groups="group_project_manager,group_project_user"
|
|
sequence="40"/>
|
|
|
|
<menuitem id="menu_project_management" name="Project" parent="base.menu_main_pm" sequence="1"/>
|
|
<menuitem id="base.menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60"/>
|
|
|
|
<record id="view_task_search_form" model="ir.ui.view">
|
|
<field name="name">project.task.search.form</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tasks">
|
|
<field name="name" string="Tasks"/>
|
|
<field name="categ_ids"/>
|
|
<filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
|
|
<filter string="New" name="draft" domain="[('stage_id.sequence', '<=', 1)]"/>
|
|
<separator/>
|
|
<filter string="My Tasks" domain="[('user_id','=',uid)]"/>
|
|
<separator/>
|
|
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
|
|
<separator/>
|
|
<filter string="Deadlines" context="{'deadline_visible': False}" domain="[('date_deadline','<>',False)]"
|
|
help="Show only tasks having a deadline"/>
|
|
<field name="partner_id"/>
|
|
<field name="project_id"/>
|
|
<field name="user_id"/>
|
|
<field name="stage_id" domain="[]"/>
|
|
<group expand="0" string="Group By...">
|
|
<filter string="Users" name="group_user_id" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
|
<filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
|
|
<filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
|
|
<filter string="Last Stage Update" icon="terp-go-month" domain="[]" context="{'group_by':'date_last_stage_update'}"/>
|
|
<filter string="Deadline" icon="terp-gnome-cpu-frequency-applet+" domain="[]" context="{'group_by':'date_deadline'}"/>
|
|
<filter string="Start Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_start'}"/>
|
|
<filter string="End Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_end'}" groups="base.group_no_one"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="act_project_project_2_project_task_all" model="ir.actions.act_window">
|
|
<field name="name">Tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_mode">kanban,tree,form,calendar,gantt,graph</field>
|
|
<field name="context">{
|
|
'search_default_project_id': [active_id],
|
|
'default_project_id': active_id,
|
|
'active_test': False,
|
|
}</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p>
|
|
OpenERP's project management allows you to manage the pipeline
|
|
of tasks in order to get things done efficiently. You can
|
|
track progress, discuss on tasks, attach documents, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Project -->
|
|
<record id="edit_project" model="ir.ui.view">
|
|
<field name="name">project.project.form</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Project" version="7.0">
|
|
<header>
|
|
<button name="set_open" string="Re-open project" type="object" states="pending" class="oe_highlight" groups="base.group_user"/>
|
|
<button name="set_done" string="Close Project" type="object" states="open,pending" groups="base.group_user"/>
|
|
<button name="set_open" string="Re-open project" type="object" states="cancelled,close" groups="base.group_user"/>
|
|
<button name="set_pending" string="Pending" type="object" states="open" groups="base.group_user"/>
|
|
<button name="set_template" string="Set as Template" type="object" states="open" groups="base.group_user"/>
|
|
<button string="New Project Based on Template" name="duplicate_template" type="object" states="template" context="{'parent_id':parent_id}" class="oe_highlight" groups="base.group_user"/>
|
|
<button name="reset_project" string="Reset as Project" type="object" states="template" class="oe_highlight" groups="base.group_user"/>
|
|
<button name="set_cancel" string="Cancel Project" type="object" states="open,pending" groups="base.group_user"/>
|
|
<field name="state" widget="statusbar" statusbar_visible="open,close" statusbar_colors='{"pending":"blue"}' readonly="1"/>
|
|
</header>
|
|
<sheet string="Project">
|
|
<field name="analytic_account_id" invisible="1" required="0"/>
|
|
<div class="oe_title">
|
|
<label for="name" class="oe_edit_only" string="Project Name"/>
|
|
<h1>
|
|
<field name="name" string="Project Name"/>
|
|
</h1>
|
|
<div name="options_active">
|
|
<field name="use_tasks" class="oe_inline"/>
|
|
<label for="use_tasks"/>
|
|
</div>
|
|
</div>
|
|
<div class="oe_right oe_button_box" name="buttons" groups="base.group_user">
|
|
<button name="%(act_project_project_2_project_task_all)d" string="Tasks"
|
|
type="action" attrs="{'invisible':[('use_tasks','=', 0)]}"/>
|
|
<button name="attachment_tree_view" string="Documents" type="object"/>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="user_id" string="Project Manager"
|
|
attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"
|
|
context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_manager']}"/>
|
|
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
|
|
<span></span>
|
|
<p attrs="{'invisible': [('analytic_account_id','=',False)]}">
|
|
To invoice or setup invoicing and renewal options, go to the related contract:
|
|
<field name="analytic_account_id" readonly="1" required="0" class="oe_inline" nolabel="1"/>.
|
|
</p>
|
|
</group>
|
|
<group name="group_alias"
|
|
attrs="{'invisible': [('alias_domain', '=', False)]}">
|
|
<label for="alias_name" string="Email Alias"/>
|
|
<div name="alias_def">
|
|
<field name="alias_id" class="oe_read_only oe_inline"
|
|
string="Email Alias" required="0"/>
|
|
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
|
|
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
|
</div>
|
|
</div>
|
|
<label for="alias_model" string="Incoming Emails create"/>
|
|
<field name="alias_model" class="oe_inline" nolabel="1"/>
|
|
<field name="alias_contact" class="oe_inline"
|
|
string="Accept Emails From"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Team" name="team">
|
|
<field colspan="4" name="members" widget="many2many_kanban" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'group_project_user']}">
|
|
<kanban quick_create="false" create="true" delete="true">
|
|
<field name="name"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div style="position: relative">
|
|
<a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block">X</a>
|
|
<div class="oe_module_vignette">
|
|
<img t-att-src="kanban_image('res.users', 'image_small', record.id.value)" class="oe_avatar oe_kanban_avatar_smallbox"/>
|
|
<div class="oe_module_desc">
|
|
<field name="name"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</page>
|
|
<page string="Other Info">
|
|
<group string="Administration">
|
|
<field name="privacy_visibility" widget="radio"/>
|
|
<field name="planned_hours" widget="float_time"
|
|
groups="project.group_time_work_estimation_tasks"/>
|
|
<field name="effective_hours" widget="float_time"
|
|
groups="project.group_time_work_estimation_tasks"/>
|
|
<field name="resource_calendar_id"
|
|
groups="project.group_time_work_estimation_tasks"/>
|
|
</group>
|
|
<group string="Miscellaneous" name="misc">
|
|
<field name="date_start"/>
|
|
<field name="date" string="End Date"/>
|
|
<field name="priority" groups="base.group_no_one"/>
|
|
<field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
|
|
<field name="currency_id" groups="base.group_multi_currency" required="1"/>
|
|
<field name="parent_id" string="Parent" help="Append this project to another one using analytic accounts hierarchy" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}" />
|
|
</group>
|
|
</page>
|
|
<page string="Project Stages" attrs="{'invisible': [('use_tasks', '=', False)]}" name="project_stages">
|
|
<field name="type_ids"/>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_project_filter" model="ir.ui.view">
|
|
<field name="name">project.project.select</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Search Project">
|
|
<field name="name" string="Project Name"/>
|
|
<filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
|
|
<separator/>
|
|
<filter icon="terp-check" string="Open" name="Current" domain="[('state', '=','open')]" help="Open Projects"/>
|
|
<filter icon="gtk-media-pause" string="Pending" name="Pending" domain="[('state', '=','pending')]" help="Pending Projects"/>
|
|
<filter icon="gtk-media-pause" string="Template" name="Template" domain="[('state', '=','template')]" help="Templates of Projects"/>
|
|
<separator/>
|
|
<filter icon="terp-personal+" string="Member" domain="['|',('user_id', '=', uid),('members', '=', uid)]" help="Projects in which I am a member."/>
|
|
<separator/>
|
|
<filter string="Project(s) Manager" domain="[('user_id','=',uid)]" help="Projects in which I am a manager" icon="terp-personal"/>
|
|
<field name="user_id" string="Project Manager"/>
|
|
<field name="partner_id" string="Contact" filter_domain="[('partner_id', 'child_of', self)]"/>
|
|
<group expand="0" string="Group By...">
|
|
<filter string="Manager" name="Manager" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
|
<filter string="Contact" name="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
|
|
<filter string="Parent" name="Parent" help="Parent" icon="terp-folder-blue" domain = "[]" context="{'group_by':'parent_id'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project" model="ir.ui.view">
|
|
<field name="name">project.project.tree</field>
|
|
<field name="model">project.project</field>
|
|
<field name="field_parent">child_ids</field>
|
|
<field name="arch" type="xml">
|
|
<tree fonts="bold:message_unread==True" colors="red:date and (date<current_date) and (state == 'open');blue:state in ('draft','pending');grey: state in ('close','cancelled')" string="Projects">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
<field name="date" invisible="1"/>
|
|
<field name="name" string="Project Name"/>
|
|
<field name="user_id" string="Project Manager"/>
|
|
<field name="partner_id" string="Contact"/>
|
|
<field name="parent_id" string="Parent" invisible="1"/>
|
|
<field name="planned_hours" widget="float_time"/>
|
|
<field name="total_hours" widget="float_time"/>
|
|
<field name="effective_hours" widget="float_time"/>
|
|
<field name="progress_rate" widget="progressbar"/>
|
|
<field name="state"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="view_project_kanban">
|
|
<field name="name">project.project.kanban</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<kanban version="7.0" class="oe_background_grey">
|
|
<field name="effective_hours"/>
|
|
<field name="planned_hours"/>
|
|
<field name="name"/>
|
|
<field name="members"/>
|
|
<field name="use_tasks"/>
|
|
<field name="user_id"/>
|
|
<field name="date"/>
|
|
<field name="color"/>
|
|
<field name="task_count"/>
|
|
<field name="task_ids"/>
|
|
<field name="alias_id"/>
|
|
<field name="doc_count"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_global_click">
|
|
<div class="oe_dropdown_toggle oe_dropdown_kanban" groups="base.group_user">
|
|
<span class="oe_e">í</span>
|
|
<ul class="oe_dropdown_menu">
|
|
<t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Project Settings</a></li></t>
|
|
<t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
|
|
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
|
</ul>
|
|
</div>
|
|
<div class="oe_kanban_content">
|
|
<h4><field name="name"/></h4>
|
|
<div class="oe_kanban_alias" t-if="record.alias_id.value">
|
|
<span class="oe_e oe_e_alias">%%</span><small><field name="alias_id"/></small>
|
|
</div>
|
|
<div class="oe_kanban_project_list">
|
|
<a t-if="record.use_tasks.raw_value" name="%(act_project_project_2_project_task_all)d" type="action" style="margin-right: 10px">
|
|
<t t-raw="record.task_ids.raw_value.length"/>
|
|
<span t-if="record.task_ids.raw_value.length == 1">Task</span>
|
|
<span t-if="record.task_ids.raw_value.length > 1">Tasks</span>
|
|
</a>
|
|
</div>
|
|
<div class="oe_kanban_project_list">
|
|
<a t-if="record.doc_count.raw_value" name="attachment_tree_view" type="object" style="margin-right: 10px"> <field name="doc_count"/> Documents</a>
|
|
</div>
|
|
<div class="oe_kanban_footer_left">
|
|
<span groups="project.group_time_work_estimation_tasks">
|
|
<span class="oe_e">R</span>
|
|
<t t-esc="Math.round(record.effective_hours.raw_value)"/>/<t t-esc="Math.round(record.planned_hours.raw_value)"/> <field name="company_uom_id"/>
|
|
</span>
|
|
<span t-if="record.date.raw_value">
|
|
<span class="oe_e">N</span>
|
|
<field name="date"/>
|
|
</span>
|
|
</div>
|
|
<div class="oe_kanban_project_avatars">
|
|
<t t-foreach="record.members.raw_value.slice(0,11)" t-as="member">
|
|
<img t-att-src="kanban_image('res.users', 'image_small', member)" t-att-data-member_id="member"/>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_project_gantt" model="ir.ui.view">
|
|
<field name="name">project.project.gantt</field>
|
|
<field name="model">project.project</field>
|
|
<field name="arch" type="xml">
|
|
<gantt date_delay="planned_hours" date_start="date_start" progress="progress_rate" string="Projects">
|
|
</gantt>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_view_project_all" model="ir.actions.act_window">
|
|
<field name="name">Projects</field>
|
|
<field name="res_model">project.project</field>
|
|
<field name="view_type">form</field>
|
|
<field name="domain">[]</field>
|
|
<field name="view_mode">kanban,tree,form,gantt</field>
|
|
<field name="view_id" ref="view_project_kanban"/>
|
|
<field name="search_view_id" ref="view_project_project_filter"/>
|
|
<field name="context">{'search_default_Current': 1}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to start a new project.
|
|
</p><p>
|
|
Projects are used to organize your activities; plan
|
|
tasks, track issues, invoice timesheets. You can define
|
|
internal projects (R&D, Improve Sales Process),
|
|
private projects (My Todos) or customer ones.
|
|
</p><p>
|
|
You will be able collaborate with internal users on
|
|
projects or invite customers to share your activities.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_view_template_project" model="ir.actions.act_window">
|
|
<field name="name">Templates of Projects</field>
|
|
<field name="res_model">project.project</field>
|
|
<field name="view_type">form</field>
|
|
<field name="domain">[('state','=','template')]</field>
|
|
<field name="view_id" ref="view_project"/>
|
|
</record>
|
|
|
|
<record id="view_task_work_form" model="ir.ui.view">
|
|
<field name="name">project.task.work.form</field>
|
|
<field name="model">project.task.work</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Task Work" version="7.0">
|
|
<group col="4">
|
|
<field colspan="4" name="name"/>
|
|
<field name="hours" widget="float_time"/>
|
|
<field name="date"/>
|
|
<field name="user_id" options='{"no_open": True}' context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'base.group_partner_manager', 'project.group_project_user']}"/>
|
|
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_task_work_tree" model="ir.ui.view">
|
|
<field name="name">project.task.work.tree</field>
|
|
<field name="model">project.task.work</field>
|
|
<field name="arch" type="xml">
|
|
<tree editable="top" string="Task Work">
|
|
<field name="date"/>
|
|
<field name="name"/>
|
|
<field name="hours" widget="float_time"/>
|
|
<field name="user_id" context="{'default_groups_ref': ['base.group_user', 'project.group_project_user']}"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Task -->
|
|
|
|
<record id="view_task_form2" model="ir.ui.view">
|
|
<field name="name">project.task.form</field>
|
|
<field name="model">project.task</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<form string="Project" version="7.0">
|
|
<header>
|
|
<field name="stage_id" widget="statusbar" clickable="True"/>
|
|
</header>
|
|
<sheet string="Task">
|
|
<h1>
|
|
<field name="name" placeholder="Task summary..." 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>
|
|
<group>
|
|
<group>
|
|
<field name="project_id" on_change="onchange_project(project_id)" context="{'default_use_tasks':1}"/>
|
|
<field name="user_id"
|
|
options='{"no_open": True}'
|
|
context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_user']}"/>
|
|
<field name="planned_hours" widget="float_time"
|
|
groups="project.group_time_work_estimation_tasks"
|
|
on_change="onchange_planned(planned_hours, effective_hours)"/>
|
|
</group>
|
|
<group>
|
|
<field name="date_deadline"/>
|
|
<field name="categ_ids" widget="many2many_tags"/>
|
|
<field name="progress" widget="progressbar"
|
|
groups="project.group_time_work_estimation_tasks"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Description">
|
|
<field name="description" placeholder="Add a Description..."/>
|
|
<field name="work_ids" groups="project.group_tasks_work_on_tasks">
|
|
<tree string="Task Work" editable="top">
|
|
<field name="name"/>
|
|
<field name="hours" widget="float_time" sum="Spent Hours"/>
|
|
<field name="date"/>
|
|
<field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_user']}"/>
|
|
</tree>
|
|
</field>
|
|
<group>
|
|
<group class="oe_subtotal_footer oe_right" name="project_hours" groups="project.group_time_work_estimation_tasks">
|
|
<field name="effective_hours" widget="float_time"/>
|
|
<label for="remaining_hours" string="Remaining" groups="project.group_time_work_estimation_tasks"/>
|
|
<div>
|
|
<field name="remaining_hours" widget="float_time" groups="project.group_time_work_estimation_tasks"/>
|
|
</div>
|
|
<field name="total_hours" widget="float_time" class="oe_subtotal_footer_separator"/>
|
|
</group>
|
|
</group>
|
|
<div class="oe_clear"/>
|
|
</page>
|
|
<page string="Delegation" groups="project.group_delegate_task">
|
|
<button name="%(action_project_task_delegate)d" string="Delegate" type="action"
|
|
groups="project.group_delegate_task"/>
|
|
<separator string="Parent Tasks"/>
|
|
<field name="parent_ids"/>
|
|
<separator string="Delegated tasks"/>
|
|
<field name="child_ids">
|
|
<tree string="Delegated tasks">
|
|
<field name="name"/>
|
|
<field name="user_id"/>
|
|
<field name="stage_id"/>
|
|
<field name="effective_hours" widget="float_time"/>
|
|
<field name="progress" widget="progressbar"/>
|
|
<field name="remaining_hours" widget="float_time"/>
|
|
<field name="date_deadline"/>
|
|
</tree>
|
|
</field>
|
|
</page>
|
|
<page string="Extra Info">
|
|
<group col="4">
|
|
<field name="priority" groups="base.group_user"/>
|
|
<field name="sequence"/>
|
|
<field name="partner_id"/>
|
|
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
|
</group>
|
|
<group>
|
|
<group string="Gantt View">
|
|
<field name="date_start"/>
|
|
<field name="date_end"/>
|
|
</group>
|
|
<group>
|
|
<field name="date_last_stage_update" groups="base.group_no_one"/>
|
|
</group>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Project Task Kanban View -->
|
|
<record model="ir.ui.view" id="view_task_kanban">
|
|
<field name="name">project.task.kanban</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="stage_id" >
|
|
<field name="color"/>
|
|
<field name="priority"/>
|
|
<field name="stage_id"/>
|
|
<field name="user_id"/>
|
|
<field name="user_email"/>
|
|
<field name="description"/>
|
|
<field name="sequence"/>
|
|
<field name="kanban_state"/>
|
|
<field name="remaining_hours" sum="Remaining Time" groups="project.group_time_work_estimation_tasks"/>
|
|
<field name="date_deadline"/>
|
|
<field name="message_summary"/>
|
|
<field name="categ_ids"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
|
|
<div class="oe_dropdown_toggle oe_dropdown_kanban" groups="base.group_user">
|
|
<span class="oe_e">í</span>
|
|
<ul class="oe_dropdown_menu">
|
|
<t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Edit...</a></li></t>
|
|
<t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
|
|
<li>
|
|
<ul class="oe_kanban_project_times" groups="project.group_time_work_estimation_tasks">
|
|
<li><a name="set_remaining_time_1" type="object" class="oe_kanban_button">1</a></li>
|
|
<li><a name="set_remaining_time_2" type="object" class="oe_kanban_button">2</a></li>
|
|
<li><a name="set_remaining_time_5" type="object" class="oe_kanban_button">5</a></li>
|
|
<li><a name="set_remaining_time_10" type="object" class="oe_kanban_button">10</a></li>
|
|
</ul>
|
|
</li>
|
|
<br/>
|
|
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="oe_kanban_content">
|
|
<div><b><field name="name"/></b></div>
|
|
<div>
|
|
<field name="project_id"/><br/>
|
|
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
|
|
<span t-attf-class="#{red || ''}"><i><field name="date_deadline"/></i></span>
|
|
</div>
|
|
<div class="oe_kanban_bottom_right">
|
|
<t groups="base.group_user">
|
|
<a t-if="record.kanban_state.raw_value === 'normal'" type="object" string="In Progress" name="set_kanban_state_done" class="oe_kanban_status"> </a>
|
|
<a t-if="record.kanban_state.raw_value === 'done'" type="object" string="Ready for next stage" name="set_kanban_state_blocked" class="oe_kanban_status oe_kanban_status_green"> </a>
|
|
<a t-if="record.kanban_state.raw_value === 'blocked'" type="object" string="Blocked" name="set_kanban_state_normal" class="oe_kanban_status oe_kanban_status_red"> </a>
|
|
<a t-if="record.priority.raw_value > 0" type="object" string="Normal" name="set_high_priority" class="oe_e oe_star_off">7</a>
|
|
<a t-if="record.priority.raw_value == 0" type="object" string="Very Important" name="set_normal_priority" class="oe_e oe_star_on">7</a>
|
|
</t>
|
|
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
|
|
</div>
|
|
<div class="oe_kanban_footer_left">
|
|
<span groups="project.group_time_work_estimation_tasks" title="Remaining hours">
|
|
<span class="oe_e">N</span>
|
|
<t t-esc="Math.round(record.remaining_hours.raw_value)"/>
|
|
</span>
|
|
</div>
|
|
<div class="oe_kanban_footer_left" style="margin-top:5px;">
|
|
<t t-raw="record.message_summary.raw_value"/>
|
|
<field name="categ_ids"/>
|
|
</div>
|
|
</div>
|
|
<div class="oe_clear"></div>
|
|
</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 eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<tree fonts="bold:message_unread==True" colors="red:date_deadline and (date_deadline<current_date)" string="Tasks">
|
|
<field name="message_unread" invisible="1"/>
|
|
<field name="sequence" invisible="not context.get('seq_visible', False)"/>
|
|
<field name="name"/>
|
|
<field name="project_id" icon="gtk-indent" invisible="context.get('user_invisible', False)"/>
|
|
<field name="user_id" invisible="context.get('user_invisible', False)"/>
|
|
<field name="delegated_user_id" invisible="context.get('show_delegated', True)"/>
|
|
<field name="total_hours" invisible="1"/>
|
|
<field name="planned_hours" invisible="context.get('set_visible',False)" groups="project.group_time_work_estimation_tasks"/>
|
|
<field name="effective_hours" widget="float_time" sum="Spent Hours" invisible="1"/>
|
|
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" on_change="onchange_remaining(remaining_hours,planned_hours)" invisible="context.get('set_visible',False)" groups="project.group_time_work_estimation_tasks"/>
|
|
<field name="date_deadline" invisible="context.get('deadline_visible',True)"/>
|
|
<field name="stage_id" invisible="context.get('set_visible',False)"/>
|
|
<field name="date_start" groups="base.group_no_one"/>
|
|
<field name="date_end" groups="base.group_no_one"/>
|
|
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_task_calendar" model="ir.ui.view">
|
|
<field name="name">project.task.calendar</field>
|
|
<field name="model">project.task</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<calendar color="user_id" date_start="date_deadline" string="Tasks">
|
|
<field name="name"/>
|
|
<field name="project_id"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_task_gantt" model="ir.ui.view">
|
|
<field name="name">project.task.gantt</field>
|
|
<field name="model">project.task</field>
|
|
<field eval="2" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<gantt date_start="date_start" date_stop="date_end" progress="progress" string="Tasks" default_group_by="project_id">
|
|
</gantt>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_project_task_graph" model="ir.ui.view">
|
|
<field name="name">project.task.graph</field>
|
|
<field name="model">project.task</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Project Tasks" type="bar">
|
|
<field name="project_id"/>
|
|
<field name="planned_hours" operator="+"/>
|
|
<field name="delay_hours" operator="+"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="analytic_account_inherited_form" model="ir.ui.view">
|
|
<field name="name">account.analytic.account.form.inherit</field>
|
|
<field name="model">account.analytic.account</field>
|
|
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
|
<field eval="18" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr='//div[@name="project"]' position='inside'>
|
|
<field name="use_tasks"/>
|
|
<label for="use_tasks"/>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_view_task" model="ir.actions.act_window">
|
|
<field name="name">Tasks</field>
|
|
<field name="res_model">project.task</field>
|
|
<field name="view_mode">kanban,tree,form,calendar,gantt,graph</field>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
<field name="help" type="html">
|
|
<p>
|
|
OpenERP's project management allows you to manage the pipeline
|
|
of tasks in order to get things done efficiently. You can
|
|
track progress, discuss on tasks, attach documents, etc.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<record id="open_view_task_list_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="0"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="action_view_task"/>
|
|
</record>
|
|
<record id="open_view_task_list_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="act_window_id" ref="action_view_task"/>
|
|
</record>
|
|
|
|
<menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_project_management" sequence="5"/>
|
|
|
|
<record id="action_view_task_overpassed_draft" model="ir.actions.act_window">
|
|
<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,kanban</field>
|
|
<field name="domain">[('date_deadline','<',time.strftime('%Y-%m-%d'))]</field>
|
|
<field name="filter" eval="True"/>
|
|
<field name="search_view_id" ref="view_task_search_form"/>
|
|
</record>
|
|
|
|
<!-- Opening task when double clicking on project -->
|
|
<record id="dblc_proj" model="ir.actions.act_window">
|
|
<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,kanban</field>
|
|
<field name="domain">[('project_id', 'child_of', [active_id])]</field>
|
|
<field name="context">{'project_id':active_id, 'active_test':False}</field>
|
|
</record>
|
|
|
|
<record id="ir_project_task_open" model="ir.values">
|
|
<field eval="'tree_but_open'" name="key2"/>
|
|
<field eval="'project.project'" name="model"/>
|
|
<field name="name">View project's tasks</field>
|
|
<field eval="'ir.actions.act_window,'+str(dblc_proj)" name="value"/>
|
|
</record>
|
|
|
|
<!-- Task types -->
|
|
<record id="task_type_search" model="ir.ui.view">
|
|
<field name="name">project.task.type.search</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Tasks Stages">
|
|
<field name="name" string="Tasks Stages"/>
|
|
<filter icon="terp-check" string="Common" name="common" domain="[('case_default', '=', 1)]" help="Stages common to all projects"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="task_type_edit" model="ir.ui.view">
|
|
<field name="name">project.task.type.form</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Task Stage" version="7.0">
|
|
<group>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="sequence"/>
|
|
</group>
|
|
<group>
|
|
<field name="case_default"/>
|
|
<field name="fold"/>
|
|
</group>
|
|
</group>
|
|
<field name="description" placeholder="Add a description..."/>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="task_type_tree" model="ir.ui.view">
|
|
<field name="name">project.task.type.tree</field>
|
|
<field name="model">project.task.type</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Task Stage">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
<field name="fold"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_task_type_form" model="ir.actions.act_window">
|
|
<field name="name">Stages</field>
|
|
<field name="res_model">project.task.type</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_id" ref="task_type_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to add a stage in the task pipeline.
|
|
</p><p>
|
|
Define the steps that will be used in the project from the
|
|
creation of the task, up to the closing of the task or issue.
|
|
You will use these stages in order to track the progress in
|
|
solving a task or an issue.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<menuitem id="menu_tasks_config" name="GTD" parent="base.menu_definitions" sequence="1"/>
|
|
|
|
<menuitem id="base.menu_project_config_project" name="Stages" parent="base.menu_definitions" sequence="1" groups="base.group_no_one"/>
|
|
|
|
<menuitem action="open_task_type_form" name="Task Stages" id="menu_task_types_view" parent="base.menu_project_config_project" sequence="2"/>
|
|
<menuitem action="open_view_project_all" id="menu_projects" name="Projects" parent="menu_project_management" sequence="1"/>
|
|
|
|
|
|
<record id="task_company" model="ir.ui.view">
|
|
<field name="name">res.company.task.config</field>
|
|
<field name="model">res.company</field>
|
|
<field name="inherit_id" ref="base.view_company_form"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//group[@name='account_grp']" position="after">
|
|
<group name="project_grp" string="Projects">
|
|
<field name="project_time_mode_id" domain="[('category_id','=','Working Time')]"/>
|
|
</group>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- User Form -->
|
|
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}"
|
|
id="act_res_users_2_project_task_opened" name="Assigned Tasks"
|
|
res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/>
|
|
|
|
<!-- Tags -->
|
|
<record model="ir.ui.view" id="project_category_search_view">
|
|
<field name="name">Tags</field>
|
|
<field name="model">project.category</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Issue Version">
|
|
<field name="name"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
<record model="ir.ui.view" id="project_category_form_view">
|
|
<field name="name">Tags</field>
|
|
<field name="model">project.category</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Tags">
|
|
<field name="name"/>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
<record id="project_category_action" model="ir.actions.act_window">
|
|
<field name="name">Tags</field>
|
|
<field name="res_model">project.category</field>
|
|
<field name="view_type">form</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to add a new tag.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<menuitem action="project_category_action" id="menu_project_category_act" parent="base.menu_definitions" groups="base.group_no_one"/>
|
|
|
|
</data>
|
|
</openerp>
|