19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:30:27 +01:00
parent d1963a3c3a
commit 2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<menuitem id="menu_resource_config" name="Resource"
parent="base.menu_custom"
sequence="30"/>
<menuitem id="menu_resource_calendar"
parent="menu_resource_config"
action="action_resource_calendar_form"
sequence="1"/>
<menuitem id="menu_view_resource_calendar_leaves_search"
parent="menu_resource_config"
action="action_resource_calendar_leave_tree"
sequence="2"/>
<menuitem id="menu_resource_resource"
parent="menu_resource_config"
action="action_resource_resource_tree"
sequence="3"/>
</odoo>

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_resource_calendar_attendance_tree" model="ir.ui.view">
<field name="name">resource.calendar.attendance.list</field>
<field name="model">resource.calendar.attendance</field>
<field name="arch" type="xml">
<list string="Working Time" editable="bottom" default_order="sequence, week_type, dayofweek, hour_from">
<field name="sequence" widget="handle"/>
<field name="display_type" column_invisible="True"/>
<field name="display_name" width="1" string=" " invisible="display_type != 'line_section'"/>
<field name="name" invisible="display_type == 'line_section'"/>
<field name="dayofweek"/>
<field name="day_period"/>
<field name="duration_hours" force_save="1" column_invisible="not parent.duration_based"/>
<field name="hour_from" widget="float_time" column_invisible="parent.duration_based"/>
<field name="hour_to" widget="float_time" column_invisible="parent.duration_based"/>
<field name="duration_days" optional="show" readonly="1"/>
<field name="week_type" readonly="1" force_save="1" optional="hide"/>
</list>
</field>
</record>
<record id="view_resource_calendar_attendance_form" model="ir.ui.view">
<field name="name">resource.calendar.attendance.form</field>
<field name="model">resource.calendar.attendance</field>
<field name="arch" type="xml">
<form string="Working Time">
<sheet>
<group>
<field name="name"/>
<field name="dayofweek"/>
<label for="hour_from" string="Hours"/>
<div class="o_row">
<field name="hour_from" widget="float_time"/> -
<field name="hour_to" widget="float_time"/>
</div>
<field name="day_period"/>
<field name="duration_days"/>
</group>
</sheet>
</form>
</field>
</record>
</odoo>

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_resource_calendar_leaves_search" model="ir.ui.view">
<field name="name">resource.calendar.leaves.search</field>
<field name="model">resource.calendar.leaves</field>
<field name="arch" type="xml">
<search string="Search Working Period Time Off">
<field name="name"/>
<field name="resource_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="calendar_id"/>
<filter name="filter_date" date="date_from" default_period="year" string="Period"/>
<group>
<filter string="Resource" name="resource" domain="[]" context="{'group_by':'resource_id'}"/>
<filter string="Company" name="company" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Date" name="leave_month" domain="[]" context="{'group_by':'date_from'}" help="Starting Date of Time Off"/>
</group>
</search>
</field>
</record>
<record id="view_resource_calendar" model="ir.ui.view">
<field name="name">resource.calendar.leaves.calendar</field>
<field name="model">resource.calendar.leaves</field>
<field name="arch" type="xml">
<calendar date_start="date_from" date_stop="date_to" mode="month" string="Resource" color="resource_id" event_limit="5">
<field name="resource_id" avatar_field="image_128" filters="1"/>
<field name="company_id"/>
<field name="name"/>
</calendar>
</field>
</record>
<record id="resource_calendar_leave_form" model="ir.ui.view">
<field name="name">resource.calendar.leaves.form</field>
<field name="model">resource.calendar.leaves</field>
<field name="arch" type="xml">
<form string="Time Off Detail">
<field name="company_id" invisible="1"/>
<sheet>
<group>
<group name="leave_details">
<field name="name" string="Reason"/>
<field name="calendar_id"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company" invisible="not calendar_id"/>
<field name="resource_id"/>
</group>
<group name="leave_dates">
<field name="date_from"/>
<field name="date_to"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="resource_calendar_leave_tree" model="ir.ui.view">
<field name="name">resource.calendar.leaves.list</field>
<field name="model">resource.calendar.leaves</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<list string="Time Off Detail">
<field name="name" string="Reason"/>
<field name="resource_id" />
<field name="company_id" groups="base.group_multi_company" optional="hide"/>
<field name="calendar_id"/>
<field name="date_from" />
<field name="date_to" />
</list>
</field>
</record>
<record id="action_resource_calendar_leave_tree" model="ir.actions.act_window">
<field name="name">Resource Time Off</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">list,form,calendar</field>
<field name="search_view_id" ref="view_resource_calendar_leaves_search"/>
</record>
<record id="resource_calendar_leaves_action_from_calendar" model="ir.actions.act_window">
<field name="name">Resource Time Off</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">list,form,calendar</field>
<field name="context">{
'default_calendar_id': active_id,
'search_default_calendar_id': active_id}</field>
<field name="search_view_id" ref="view_resource_calendar_leaves_search"/>
</record>
<record id="resource_calendar_closing_days" model="ir.actions.act_window">
<field name="name">Closing Days</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">calendar,list,form</field>
<field name="domain">[('calendar_id','=',active_id), ('resource_id','=',False)]</field>
<field name="context">{'default_calendar_id': active_id}</field>
<field name="binding_model_id" ref="model_resource_calendar"/>
<field name="binding_view_types">form</field>
</record>
<record id="resource_calendar_resources_leaves" model="ir.actions.act_window">
<field name="name">Resources Time Off</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">calendar,list,form</field>
<field name="domain">[('calendar_id','=',active_id), ('resource_id','!=',False)]</field>
<field name="context">{'default_calendar_id': active_id}</field>
<field name="binding_model_id" ref="model_resource_calendar"/>
<field name="binding_view_types">form</field>
</record>
</odoo>

View file

@ -0,0 +1,203 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_resource_calendar_search" model="ir.ui.view">
<field name="name">resource.calendar.search</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<search string="Search Working Time">
<field name="name" string="Working Time"/>
<field name="company_id" groups="base.group_multi_company"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
<filter string="Partial working schedules" name="partial_working_schedules" domain="[('work_time_rate', '&lt;', 100)]"/>
<group>
<filter string="Flexible" name="groupby_flexible_hours" context="{'group_by': 'flexible_hours'}"/>
<filter name="groupby_company" context="{'group_by': 'company_id'}"/>
</group>
</search>
</field>
</record>
<record id="resource_calendar_form" model="ir.ui.view">
<field name="name">resource.calendar.form</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<form string="Working Time">
<header>
</header>
<sheet string="Working Time">
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<div class="oe_button_box" name="button_box">
<button name="%(resource_calendar_leaves_action_from_calendar)d" type="action"
icon="fa-plane"
class="oe_stat_button"
groups="base.group_no_one">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Time Off</span>
</div>
</button>
<button name="%(resource_resource_action_from_calendar)d" type="action"
icon="fa-cogs"
class="oe_stat_button"
groups="base.group_user">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">
<field name="work_resources_count" string="Work Resources" widget="statinfo"/>
</span>
</div>
</button>
</div>
<div class="oe_title">
<h1><field name="name"/></h1>
</div>
<group name="resource_details" col="2">
<group name="resource_working_hours">
<field name="schedule_type" widget="radio"/>
<label for="switch_based_on_duration" string="Define Amount of Hours per day" invisible="flexible_hours" class="o_form_label"/>
<button name="switch_based_on_duration" invisible="duration_based or flexible_hours" type="object"
icon="fa-square-o" title="Switch to Duration based attendance" class="btn p-0"
confirm="If checked, the working schedule will be based on an amount of hours (defined for each day) and not a start &amp; end time anymore.Do you confirm ?"
confirm-label="Confirm"/>
<button name="switch_based_on_duration" invisible="not duration_based or flexible_hours" type="object"
icon="fa-check-square" title="Switch to fixed attendance" class="btn p-0"
confirm="If unchecked, the working schedule will be based on a defined start and end hours.Do you confirm ?"
confirm-label="Confirm"/>
<label for="full_time_required_hours" invisible="not company_id"/>
<label for="full_time_required_hours" string="Required Full Time" invisible="company_id"/>
<div>
<field name="full_time_required_hours" style="width: 6ch;" widget="float_time" readonly="company_id"/>
<span>hours/week</span>
</div>
<label for="work_time_rate" string="Work Time Rate"/>
<div>
<field name="work_time_rate" nolabel="1" style="width: 6ch;"/>
<span class="ms-1">%</span>
</div>
</group>
<group>
<group name="resource_company" colspan="2">
<field name="company_id" placeholder="Visible to all"/>
<field name="tz" widget="timezone_mismatch" options="{'tz_offset_field': 'tz_offset', 'mismatch_title': 'Timezone Mismatch : This timezone is different from that of your browser.\nPlease, be mindful of this when setting the working hours or the time off.'}" />
<field name="tz_offset" invisible="1"/> <!-- Computed field needed for timezone_mismatch widget -->
</group>
<group name="flex_details" invisible="not flexible_hours" colspan="2">
<label for="hours_per_day" string="Avg"/>
<div class="d-flex">
<field name="hours_per_day" nolabel="1" style="width: 6ch;" widget="float_time"/>
<span class="ms-2">hours/day</span>
</div>
<label for="hours_per_week" string="Total"/>
<div class="d-flex">
<field name="hours_per_week" nolabel="1" style="width: 6ch;" widget="float_time"/>
<span class="ms-2">hours/week</span>
</div>
</group>
<group name="switch_calendar" invisible="flexible_hours">
<label for="switch_calendar_type" string="2 Week's Calendar" class="o_form_label"/>
<button name="switch_calendar_type" invisible="two_weeks_calendar" type="object"
icon="fa-square-o" title="Switch to 2-weeks calendar" class="btn p-0"
confirm="Are you sure you want to switch to a 2-week calendar? All work entries will be lost."
confirm-label="Switch"/>
<button name="switch_calendar_type" invisible="not two_weeks_calendar" type="object"
icon="fa-check-square" title="Switch to 1-week calendar" class="btn p-0"
confirm="Are you sure you want to switch to a 1-week calendar? All work entries will be lost."
confirm-label="Switch"/>
</group>
</group>
</group>
<notebook>
<page string="Working Hours" name="working_hours" invisible="flexible_hours or two_weeks_calendar">
<group>
<group>
<label for="hours_per_day" string="Avg"/>
<div class="d-flex">
<field name="hours_per_day" nolabel="1" style="width: 6ch;" widget="float_time" readonly="1"/>
<span class="ms-2">hours/day</span>
</div>
</group>
<group>
<label for="hours_per_week" string="Total"/>
<div class="d-flex">
<field name="hours_per_week" nolabel="1" style="width: 6ch;" widget="float_time" readonly="1"/>
<span class="ms-2">hours/week</span>
</div>
</group>
</group>
<field name="attendance_ids" widget="section_one2many"/>
</page>
<page string="Week 1 Working Hours" name="working_hours" invisible="flexible_hours or not two_weeks_calendar">
<field name="two_weeks_explanation"/>
<group>
<group>
<label for="hours_per_day" string="Avg"/>
<div class="d-flex">
<field name="hours_per_day" nolabel="1" style="width: 6ch;" widget="float_time" readonly="1"/>
<span class="ms-2">hours/day</span>
</div>
</group>
<group>
<label for="hours_per_week" string="Total"/>
<div class="d-flex">
<field name="hours_per_week" nolabel="1" style="width: 6ch;" widget="float_time" readonly="1"/>
<span class="ms-2">hours/week</span>
</div>
</group>
</group>
<field name="attendance_ids_1st_week" widget="section_one2many" context="{'default_week_type':'0'}"/>
</page>
<page string="Week 2 Working Hours" name="working_hours" invisible="flexible_hours or not two_weeks_calendar">
<field name="two_weeks_explanation"/>
<group>
<group>
<label for="hours_per_day" string="Avg"/>
<div class="d-flex">
<field name="hours_per_day" nolabel="1" style="width: 6ch;" widget="float_time" readonly="1"/>
<span class="ms-2">hours/day</span>
</div>
</group>
<group>
<label for="hours_per_week" string="Total"/>
<div class="d-flex">
<field name="hours_per_week" nolabel="1" style="width: 6ch;" widget="float_time" readonly="1"/>
<span class="ms-2">hours/week</span>
</div>
</group>
</group>
<field name="attendance_ids_2nd_week" widget="section_one2many" context="{'default_week_type':'1'}"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_resource_calendar_tree" model="ir.ui.view">
<field name="name">resource.calendar.list</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<list string="Working Time">
<field name="name" string="Working Time"/>
<field name="hours_per_week" string="Schedule Total Time" optional="hide"/>
<field name="work_time_rate"/>
<field name="schedule_type"/>
<field name="full_time_required_hours" widget="float_time" optional="hide"/>
<field name="work_resources_count" string="# Work Resources" optional="hide"/>
<field name="company_id" groups="base.group_multi_company" optional="hide"/>
</list>
</field>
</record>
<record id="action_resource_calendar_form" model="ir.actions.act_window">
<field name="name">Working Schedules</field>
<field name="res_model">resource.calendar</field>
<field name="view_mode">list,form</field>
<field name="domain">['|', ('company_id', '=', False), ('company_id', 'in', allowed_company_ids)]</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_resource_calendar_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define working hours and time table that could be scheduled to your project members
</p>
</field>
</record>
</odoo>

View file

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- RESOURCE.RESOURCE -->
<record id="view_resource_resource_search" model="ir.ui.view">
<field name="name">resource.resource.search</field>
<field name="model">resource.resource</field>
<field name="arch" type="xml">
<search string="Search Resource">
<field name="name" />
<field name="resource_type"/>
<field name="user_id"/>
<field name="calendar_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<filter string="Human" name="human" domain="[('resource_type','=', 'user')]"/>
<filter string="Material" name="material" domain="[('resource_type','=', 'material')]"/>
<separator />
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group>
<filter string="User" name="user" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Type" name="type" domain="[]" context="{'group_by':'resource_type'}"/>
<filter string="Company" name="company" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Working Time" name="working_period" domain="[]" context="{'group_by':'calendar_id'}"/>
</group>
</search>
</field>
</record>
<record id="resource_resource_form" model="ir.ui.view">
<field name="name">resource.resource.form</field>
<field name="model">resource.resource</field>
<field name="arch" type="xml">
<form string="Resource">
<sheet>
<field name="active" invisible="1" />
<field name="company_id" invisible="1"/>
<widget name="web_ribbon" title="Archived" bg_color="text-bg-danger" invisible="active"/>
<group>
<group name="user_details">
<field name="name"/>
<field name="user_id" invisible="resource_type == 'material'" required="resource_type == 'user'"/>
<field name="resource_type" />
</group>
<group name="resource_details">
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company" placeholder="Visible to all"/>
<field name="calendar_id" placeholder="Fully Flexible"/>
<field name="tz"/>
<field name="time_efficiency"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="resource_resource_tree" model="ir.ui.view">
<field name="name">resource.resource.list</field>
<field name="model">resource.resource</field>
<field name="arch" type="xml">
<list string="Resources" multi_edit="1" default_order="name">
<field name="company_id" column_invisible="True"/>
<field name="name" />
<field name="user_id" />
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}" optional="show"/>
<field name="calendar_id" optional="show" />
<field name="tz" optional="hide" />
<field name="resource_type" optional="show" />
<field name="time_efficiency"/>
</list>
</field>
</record>
<record id="action_resource_resource_tree" model="ir.actions.act_window">
<field name="name">Resources</field>
<field name="res_model">resource.resource</field>
<field name="view_mode">list,form</field>
<field name="context">{}</field>
<field name="search_view_id" ref="view_resource_resource_search"/>
<field name="help">Resources allow you to create and manage resources that should be involved in a specific project phase. You can also set their efficiency level and workload based on their weekly working hours.</field>
</record>
<record id="resource_resource_action_from_calendar" model="ir.actions.act_window">
<field name="name">Resources</field>
<field name="res_model">resource.resource</field>
<field name="view_mode">list,form</field>
<field name="context">{
'default_calendar_id': active_id,
'search_default_calendar_id': active_id}</field>
<field name="search_view_id" ref="view_resource_resource_search"/>
<field name="help">Resources allow you to create and manage resources that should be involved in a specific project phase. You can also set their efficiency level and workload based on their weekly working hours.</field>
</record>
</odoo>

View file

@ -1,345 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- RESOURCE.RESOURCE -->
<record id="view_resource_resource_search" model="ir.ui.view">
<field name="name">resource.resource.search</field>
<field name="model">resource.resource</field>
<field name="arch" type="xml">
<search string="Search Resource">
<field name="name" />
<field name="resource_type"/>
<field name="user_id"/>
<field name="calendar_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<filter string="Human" name="human" domain="[('resource_type','=', 'user')]"/>
<filter string="Material" name="material" domain="[('resource_type','=', 'material')]"/>
<separator />
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group expand="0" string="Group By">
<filter string="User" name="user" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Type" name="type" domain="[]" context="{'group_by':'resource_type'}"/>
<filter string="Company" name="company" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Working Time" name="working_period" domain="[]" context="{'group_by':'calendar_id'}"/>
</group>
</search>
</field>
</record>
<record id="resource_resource_form" model="ir.ui.view">
<field name="name">resource.resource.form</field>
<field name="model">resource.resource</field>
<field name="arch" type="xml">
<form string="Resource">
<sheet>
<field name="active" invisible="1" />
<field name="company_id" invisible="1"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<group>
<group name="user_details">
<field name="name"/>
<field name="user_id" attrs="{'required':[('resource_type','=','user')], 'invisible': [('resource_type','=','material')]}"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<field name="resource_type" />
</group>
<group name="resource_details">
<field name="calendar_id"/>
<field name="tz"/>
<field name="time_efficiency"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="resource_resource_tree" model="ir.ui.view">
<field name="name">resource.resource.tree</field>
<field name="model">resource.resource</field>
<field name="arch" type="xml">
<tree string="Resources" multi_edit="1" default_order="name">
<field name="company_id" invisible="1"/>
<field name="name" />
<field name="user_id" />
<field name="company_id" groups="base.group_multi_company" optional="show"/>
<field name="calendar_id" optional="show" />
<field name="tz" optional="hide" />
<field name="resource_type" optional="show" />
<field name="time_efficiency"/>
</tree>
</field>
</record>
<record id="action_resource_resource_tree" model="ir.actions.act_window">
<field name="name">Resources</field>
<field name="res_model">resource.resource</field>
<field name="view_mode">tree,form</field>
<field name="context">{}</field>
<field name="search_view_id" ref="view_resource_resource_search"/>
<field name="help">Resources allow you to create and manage resources that should be involved in a specific project phase. You can also set their efficiency level and workload based on their weekly working hours.</field>
</record>
<record id="resource_resource_action_from_calendar" model="ir.actions.act_window">
<field name="name">Resources</field>
<field name="res_model">resource.resource</field>
<field name="view_mode">tree,form</field>
<field name="context">{
'default_calendar_id': active_id,
'search_default_calendar_id': active_id}</field>
<field name="search_view_id" ref="view_resource_resource_search"/>
<field name="help">Resources allow you to create and manage resources that should be involved in a specific project phase. You can also set their efficiency level and workload based on their weekly working hours.</field>
</record>
<!-- RESOURCE.CALENDAR.LEAVES -->
<record id="view_resource_calendar_leaves_search" model="ir.ui.view">
<field name="name">resource.calendar.leaves.search</field>
<field name="model">resource.calendar.leaves</field>
<field name="arch" type="xml">
<search string="Search Working Period Time Off">
<field name="name"/>
<field name="resource_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="calendar_id"/>
<filter name="filter_date" date="date_from" default_period="this_year" string="Period"/>
<group expand="0" string="Group By">
<filter string="Resource" name="resource" domain="[]" context="{'group_by':'resource_id'}"/>
<filter string="Company" name="company" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Leave Date" name="leave_month" domain="[]" context="{'group_by':'date_from'}" help="Starting Date of Leave"/>
</group>
</search>
</field>
</record>
<record id="view_resource_calendar" model="ir.ui.view">
<field name="name">resource.calendar.leaves.calendar</field>
<field name="model">resource.calendar.leaves</field>
<field name="arch" type="xml">
<calendar date_start="date_from" date_stop="date_to" mode="month" string="Resource" color="resource_id" event_limit="5">
<field name="resource_id" avatar_field="image_128" filters="1"/>
<field name="company_id"/>
<field name="name"/>
</calendar>
</field>
</record>
<record id="resource_calendar_leave_form" model="ir.ui.view">
<field name="name">resource.calendar.leaves.form</field>
<field name="model">resource.calendar.leaves</field>
<field name="arch" type="xml">
<form string="Leave Detail">
<field name="company_id" invisible="1"/>
<sheet>
<group>
<group name="leave_details">
<field name="name" string="Reason"/>
<field name="calendar_id"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company" attrs="{'invisible':[('calendar_id','=',False)]}"/>
<field name="resource_id"/>
</group>
<group name="leave_dates">
<field name="date_from"/>
<field name="date_to"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="resource_calendar_leave_tree" model="ir.ui.view">
<field name="name">resource.calendar.leaves.tree</field>
<field name="model">resource.calendar.leaves</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<tree string="Leave Detail">
<field name="name" string="Reason"/>
<field name="resource_id" />
<field name="company_id" groups="base.group_multi_company"/>
<field name="calendar_id"/>
<field name="date_from" />
<field name="date_to" />
</tree>
</field>
</record>
<record id="action_resource_calendar_leave_tree" model="ir.actions.act_window">
<field name="name">Resource Time Off</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">tree,form,calendar</field>
<field name="search_view_id" ref="view_resource_calendar_leaves_search"/>
</record>
<record id="resource_calendar_leaves_action_from_calendar" model="ir.actions.act_window">
<field name="name">Resource Time Off</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">tree,form,calendar</field>
<field name="context">{
'default_calendar_id': active_id,
'search_default_calendar_id': active_id}</field>
<field name="search_view_id" ref="view_resource_calendar_leaves_search"/>
</record>
<record id="resource_calendar_closing_days" model="ir.actions.act_window">
<field name="name">Closing Days</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">calendar,tree,form</field>
<field name="domain">[('calendar_id','=',active_id), ('resource_id','=',False)]</field>
<field name="context">{'default_calendar_id': active_id}</field>
<field name="binding_model_id" ref="model_resource_calendar"/>
<field name="binding_view_types">form</field>
</record>
<record id="resource_calendar_resources_leaves" model="ir.actions.act_window">
<field name="name">Resources Time Off</field>
<field name="res_model">resource.calendar.leaves</field>
<field name="view_mode">calendar,tree,form</field>
<field name="domain">[('calendar_id','=',active_id), ('resource_id','!=',False)]</field>
<field name="context">{'default_calendar_id': active_id}</field>
<field name="binding_model_id" ref="model_resource_calendar"/>
<field name="binding_view_types">form</field>
</record>
<!-- RESOURCE.CALENDAR.ATTENDANCE -->
<record id="view_resource_calendar_attendance_tree" model="ir.ui.view">
<field name="name">resource.calendar.attendance.tree</field>
<field name="model">resource.calendar.attendance</field>
<field name="arch" type="xml">
<tree string="Working Time" editable="top">
<field name="sequence" widget="handle"/>
<field name="display_type" invisible="1"/>
<field name="display_name" width="1" string=" " attrs="{'invisible': [('display_type', '!=', 'line_section')]}"/>
<field name="name" attrs="{'invisible': [('display_type', '=', 'line_section')]}"/>
<field name="dayofweek"/>
<field name="day_period"/>
<field name="hour_from" widget="float_time"/>
<field name="hour_to" widget="float_time"/>
<field name="date_from" optional="hide"/>
<field name="date_to" optional="hide"/>
<field name="week_type" readonly="1" force_save="1" groups="base.group_no_one"/>
</tree>
</field>
</record>
<record id="view_resource_calendar_attendance_form" model="ir.ui.view">
<field name="name">resource.calendar.attendance.form</field>
<field name="model">resource.calendar.attendance</field>
<field name="arch" type="xml">
<form string="Working Time">
<sheet>
<group>
<field name="name"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="dayofweek"/>
<label for="hour_from" string="Hours"/>
<div class="o_row">
<field name="hour_from" widget="float_time"/> -
<field name="hour_to" widget="float_time"/>
</div>
<field name="day_period"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- RESOURCE.CALENDAR -->
<record id="view_resource_calendar_search" model="ir.ui.view">
<field name="name">resource.calendar.search</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<search string="Search Working Time">
<field name="name" string="Working Time"/>
<field name="company_id" groups="base.group_multi_company"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
</search>
</field>
</record>
<record id="resource_calendar_form" model="ir.ui.view">
<field name="name">resource.calendar.form</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<form string="Working Time">
<field name="two_weeks_calendar" invisible="1"/>
<header>
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', True)]}" string="Switch to 2 weeks calendar" type="object" confirm="Are you sure you want to switch this calendar to 2 weeks calendar ? All entries will be lost"/>
<button name="switch_calendar_type" attrs="{'invisible':[('two_weeks_calendar', '=', False)]}" string="Switch to 1 week calendar" type="object" confirm="Are you sure you want to switch this calendar to 1 week calendar ? All entries will be lost"/>
</header>
<sheet string="Working Time">
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_button_box" name="button_box">
<button name="%(resource_calendar_leaves_action_from_calendar)d" type="action"
string="Time Off" icon="fa-plane"
class="oe_stat_button"
groups="base.group_no_one"/>
<button name="%(resource_resource_action_from_calendar)d" type="action"
string="Work Resources" icon="fa-cogs"
class="oe_stat_button"
groups="base.group_user"/>
</div>
<h1>
<field name="name"/>
</h1>
<group name="resource_details">
<group>
<field name="active" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="hours_per_day" widget="float_time"/>
<field name="tz" widget="timezone_mismatch" options="{'tz_offset_field': 'tz_offset', 'mismatch_title': 'Timezone Mismatch : This timezone is different from that of your browser.\nPlease, be mindful of this when setting the working hours or the time off.'}" />
<field name="tz_offset" invisible="1"/>
</group>
</group>
<notebook>
<page string="Working Hours" name="working_hours">
<field name="two_weeks_explanation" attrs="{'invisible':[('two_weeks_calendar', '=', False)]}"/>
<field name="attendance_ids" widget="section_one2many"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_resource_calendar_tree" model="ir.ui.view">
<field name="name">resource.calendar.tree</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<tree string="Working Time">
<field name="name" string="Working Time"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="action_resource_calendar_form" model="ir.actions.act_window">
<field name="name">Working Times</field>
<field name="res_model">resource.calendar</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_resource_calendar_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define working hours and time table that could be scheduled to your project members
</p>
</field>
</record>
<!-- MENU ITEMS -->
<menuitem id="menu_resource_config" name="Resource"
parent="base.menu_custom"
sequence="30"/>
<menuitem id="menu_resource_calendar"
parent="menu_resource_config"
action="action_resource_calendar_form"
sequence="1"/>
<menuitem id="menu_view_resource_calendar_leaves_search"
parent="menu_resource_config"
action="action_resource_calendar_leave_tree"
sequence="2"/>
<menuitem id="menu_resource_resource"
parent="menu_resource_config"
action="action_resource_resource_tree"
sequence="3"/>
</odoo>