19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:32:12 +01:00
parent 79f83631d5
commit 73afc09215
6267 changed files with 1534193 additions and 1130106 deletions

View file

@ -7,8 +7,7 @@
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_search"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='task_id']" position="after">
<field name="order_id" string="Sales Order" groups="sales_team.group_sale_salesman"/>
<field name="so_line" groups="sales_team.group_sale_salesman"/>
<field name="order_id" string="Sales Order" filter_domain="['|', ('so_line', 'ilike', self), ('order_id', 'ilike', self)]"/>
</xpath>
<xpath expr="//filter[@name='month']" position="before">
<filter name="billable_fixed" string="Billed at a Fixed Price" domain="[('timesheet_invoice_type', '=', 'billable_fixed')]"
@ -24,8 +23,6 @@
<separator/>
</xpath>
<xpath expr="//filter[@name='groupby_employee']" position="after">
<filter string="Sales Order" name="groupby_sale_order" domain="[]" context="{'group_by': 'order_id'}"
groups="sales_team.group_sale_salesman"/>
<filter string="Sales Order Item" name="groupby_sale_order_item" domain="[]" context="{'group_by': 'so_line'}"
groups="sales_team.group_sale_salesman"/>
<filter string="Invoice" name="groupby_invoice" domain="[]" context="{'group_by': 'timesheet_invoice_id'}"
@ -37,14 +34,15 @@
</record>
<record id="hr_timesheet_line_tree_inherit" model="ir.ui.view">
<field name="name">account.analytic.line.tree.inherit</field>
<field name="name">account.analytic.line.list.inherit</field>
<field name="model">account.analytic.line</field>
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_tree"/>
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='name']" position="after">
<field name="commercial_partner_id" invisible="1" groups="sales_team.group_sale_salesman"/>
<field name="is_so_line_edited" invisible="1" groups="sales_team.group_sale_salesman"/>
<field name="so_line" widget="so_line_field" optional="hide" options="{'no_create': True}" context="{'create': False, 'edit': False, 'delete': False}" groups="sales_team.group_sale_salesman"/>
<xpath expr="//list/field[@name='name']" position="after">
<field name="commercial_partner_id" column_invisible="True" groups="sales_team.group_sale_salesman"/>
<field name="is_so_line_edited" column_invisible="True" groups="sales_team.group_sale_salesman"/>
<field name="allow_billable" column_invisible="True" groups="sales_team.group_sale_salesman"/>
<field name="so_line" widget="so_line_field" optional="show" options="{'no_create': True, 'no_open': True}" context="{'create': False, 'edit': False, 'delete': False}" invisible="not allow_billable" readonly="readonly_timesheet" column_invisible="context.get('hide_so_line')" placeholder="Non-billable" groups="sales_team.group_sale_salesman"/>
</xpath>
</field>
</record>
@ -57,7 +55,35 @@
<xpath expr="//field[@name='task_id']" position="after">
<field name="commercial_partner_id" invisible="1" groups="sales_team.group_sale_salesman"/>
<field name="is_so_line_edited" invisible="1" groups="sales_team.group_sale_salesman"/>
<field name="so_line" widget="so_line_field" options='{"no_create": True}' context="{'create': False, 'edit': False, 'delete': False}" groups="sales_team.group_sale_salesman"/>
<field name="allow_billable" invisible="1" groups="sales_team.group_sale_salesman"/>
<field name="sale_order_state" invisible="1"/>
<label for="so_line" invisible="not allow_billable" groups="sales_team.group_sale_salesman"/>
<div class="o_row" invisible="not allow_billable" groups="sales_team.group_sale_salesman">
<field name="so_line" widget="so_line_field" options='{"no_create": True}' context="{'create': False, 'edit': False, 'delete': False, 'with_price_unit': True}" readonly="readonly_timesheet" placeholder="Non-billable"/>
<span
class="fa fa-exclamation-triangle text-warning"
title="The sales order associated with this timesheet entry has been cancelled."
invisible="sale_order_state != 'cancel'"
/>
</div>
</xpath>
<xpath expr="//group" position="before">
<t groups="sales_team.group_sale_salesman">
<field name="order_id" invisible="1"/>
<field name="timesheet_invoice_id" invisible="1"/>
<div class="oe_button_box" name="button_box">
<button name="action_sale_order_from_timesheet" type="object" class="oe_stat_button" icon="fa-dollar" invisible="not order_id">
<div class="o_stat_info">
<span class="o_stat_text">Sales Order</span>
</div>
</button>
<button name="action_invoice_from_timesheet" type="object" class="oe_stat_button" icon="fa-pencil-square-o" invisible="not timesheet_invoice_id">
<div class="o_stat_info">
<span class="o_stat_text">Invoice</span>
</div>
</button>
</div>
</t>
</xpath>
</field>
</record>
@ -69,7 +95,7 @@
<pivot string="Timesheets" sample="1">
<field name="date" interval="month" type="row"/>
<field name="timesheet_invoice_type" type="col"/>
<field name="unit_amount" type="measure" widget="timesheet_uom"/>
<field name="unit_amount" string="Time Spent" type="measure" widget="timesheet_uom"/>
<field name="amount" string="Timesheet Costs"/>
</pivot>
</field>
@ -83,11 +109,35 @@
<field name="date" interval="month" />
<field name="employee_id"/>
<field name="amount" type="measure" string="Timesheet Costs"/>
<field name="unit_amount" type="measure" widget="timesheet_uom"/>
<field name="unit_amount" string="Time Spent" type="measure" widget="timesheet_uom"/>
</graph>
</field>
</record>
<record id="view_hr_timesheet_line_graph_invoice_employee" model="ir.ui.view">
<field name="name">account.analytic.line.graph.invoice.employee</field>
<field name="model">account.analytic.line</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="view_hr_timesheet_line_graph_employee_per_date"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='date']" position="replace">
<field name="timesheet_invoice_id"/>
</xpath>
</field>
</record>
<record id="view_hr_timesheet_line_pivot_inherited" model="ir.ui.view">
<field name="name">account.analytic.line.pivot</field>
<field name="model">account.analytic.line</field>
<field name="mode">primary</field>
<field name="inherit_id" ref="hr_timesheet.view_hr_timesheet_line_pivot"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='amount']" position="attributes">
<attribute name="type">measure</attribute>
</xpath>
</field>
</record>
<!--
Timesheet from Sales Order
-->
@ -103,7 +153,7 @@
<record id="timesheet_action_from_sales_order_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="4"/>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="hr_timesheet.timesheet_view_tree_user"/>
<field name="act_window_id" ref="timesheet_action_from_sales_order"/>
</record>
@ -130,17 +180,17 @@
}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No timesheets found. Let's create one!
No activities found. Let's start a new one!
</p>
<p>
Keep track of your working hours by project every day and bill your customers for that time.
Track your working hours by projects every day and invoice this time to your customers.
</p>
</field>
</record>
<record id="timesheet_action_from_sales_order_item_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="10"/>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="hr_timesheet.timesheet_view_tree_user"/>
<field name="act_window_id" ref="timesheet_action_from_sales_order_item"/>
</record>
@ -155,7 +205,7 @@
<record id="timesheet_action_from_sales_order_item_pivot" model="ir.actions.act_window.view">
<field name="sequence" eval="30"/>
<field name="view_mode">pivot</field>
<field name="view_id" ref="hr_timesheet.view_hr_timesheet_line_pivot"/>
<field name="view_id" ref="view_hr_timesheet_line_pivot_inherited"/>
<field name="act_window_id" ref="timesheet_action_from_sales_order_item"/>
</record>
@ -179,7 +229,7 @@
<record id="timesheet_action_plan_pivot" model="ir.actions.act_window">
<field name="name">Timesheet</field>
<field name="res_model">account.analytic.line</field>
<field name="view_mode">pivot,tree,form</field>
<field name="view_mode">pivot,list,form</field>
<field name="domain">[('project_id', '!=', False)]</field>
<field name="context">{
"is_timesheet": 1,
@ -190,7 +240,7 @@
<record id="timesheet_action_from_plan" model="ir.actions.act_window">
<field name="name">Timesheet</field>
<field name="res_model">account.analytic.line</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="domain">[('project_id', '!=', False)]</field>
<field name="context">{
"is_timesheet": 1,
@ -198,4 +248,27 @@
<field name="search_view_id" ref="hr_timesheet.hr_timesheet_line_search"/>
</record>
<record id="view_calendar_account_analytic_line" model="ir.ui.view">
<field name="name">account.analytic.line.calendar</field>
<field name="model">account.analytic.line</field>
<field name="inherit_id" ref="hr_timesheet.view_calendar_account_analytic_line"/>
<field name="arch" type="xml">
<field name="name" position="before">
<field name="so_line" invisible="not so_line"/>
</field>
</field>
</record>
<record id="view_calendar_account_analytic_line_multi_create" model="ir.ui.view">
<field name="name">account.analytic.line.calendar.multi_create</field>
<field name="model">account.analytic.line</field>
<field name="inherit_id" ref="hr_timesheet.view_calendar_account_analytic_line_multi_create"/>
<field name="arch" type="xml">
<field name="unit_amount" position="before">
<field name="allow_billable" invisible="1" groups="sales_team.group_sale_salesman"/>
<field name="so_line" groups="sales_team.group_sale_salesman" options='{"no_create": True}' context="{'create': False, 'edit': False, 'delete': False, 'with_price_unit': True}" invisible="not allow_billable" placeholder="Non-billable"/>
</field>
</field>
</record>
</odoo>