<?xml version="1.0"?>
<data><xpath expr="//field[@name='user_ids']" position="after">
                    <field name="is_project_map_empty" invisible="1" groups="hr_timesheet.group_hr_timesheet_user"/>
                    <field name="has_multi_sol" invisible="1" groups="hr_timesheet.group_hr_timesheet_user"/>
                </xpath>
                 <xpath expr="//field[@name='partner_id']" position="after">
                    <field name="pricing_type" invisible="1" groups="hr_timesheet.group_hr_timesheet_user"/>
                </xpath>
                <xpath expr="//field[@name='timesheet_ids']/list" position="inside">
                    <!-- <field name="timesheet_ids"/> is already inside a block groups="hr_timesheet.group_hr_timesheet_user"  -->
                    <field name="is_so_line_edited" column_invisible="True"/>
                </xpath>
                <xpath expr="//field[@name='timesheet_ids']/list/field[@name='unit_amount']" position="before">
                    <!-- <field name="timesheet_ids"/> is already inside a block groups="hr_timesheet.group_hr_timesheet_user"  -->
                    <field name="timesheet_invoice_id" column_invisible="True"/>
                    <field name="so_line" widget="so_line_field" groups="!sales_team.group_sale_salesman" column_invisible="not parent.allow_billable" readonly="readonly_timesheet" context="{'with_remaining_hours': True, 'with_price_unit': True}" options="{'no_create': True, 'no_open': True}" domain="[('is_service', '=', True), ('order_partner_id.commercial_partner_id.id', 'parent_of', parent.partner_id), ('is_expense', '=', False), ('state', '=', 'sale'), ('is_downpayment', '=', False)]" optional="hide"/>
                    <field name="so_line" widget="so_line_field" groups="sales_team.group_sale_salesman" column_invisible="not parent.allow_billable" readonly="readonly_timesheet" context="{'with_remaining_hours': True, 'with_price_unit': True}" options="{'no_create': True, 'no_open': True}" domain="[('is_service', '=', True), ('order_partner_id.commercial_partner_id.id', 'parent_of', parent.partner_id), ('is_expense', '=', False), ('state', '=', 'sale'), ('is_downpayment', '=', False)]" optional="hide"/>
                </xpath>
                <xpath expr="//field[@name='timesheet_ids']/form//field[@name='unit_amount']" position="after">
                    <field name="timesheet_invoice_id" invisible="1"/>
                    <field name="so_line" widget="so_line_field" groups="!sales_team.group_sale_salesman" invisible="not parent.allow_billable" readonly="readonly_timesheet" context="{'with_remaining_hours': True, 'with_price_unit': True}" options="{'no_create': True, 'no_open': True}" domain="[('is_service', '=', True), ('order_partner_id', 'child_of', parent.partner_id), ('is_expense', '=', False), ('state', '=', 'sale')]" placeholder="Non-billable" optional="hide"/>
                    <field name="so_line" widget="so_line_field" groups="sales_team.group_sale_salesman" options="{'no_create': True, 'no_open': True}" context="{'create': False, 'edit': False, 'delete': False, 'with_price_unit': True}" invisible="not parent.allow_billable" domain="[('is_service', '=', True), ('order_partner_id', 'child_of', parent.partner_id), ('is_expense', '=', False), ('state', '=', 'sale')]" readonly="readonly_timesheet" placeholder="Non-billable"/>
                </xpath>
                <xpath expr="//field[@name='remaining_hours']" position="after">
                    <t groups="hr_timesheet.group_hr_timesheet_user">
                        <field name="sale_order_id" invisible="1"/>
                        <field name="remaining_hours_available" invisible="1"/>
                        <span id="remaining_hours_so_label" invisible="not allow_billable or not sale_order_id or not partner_id or not sale_line_id or not remaining_hours_available" class="o_td_label float-start">
                            <label class="fw-bold" for="remaining_hours_so" invisible="remaining_hours_so &lt; 0"/>
                            <label class="fw-bold text-danger" for="remaining_hours_so" invisible="remaining_hours_so &gt;= 0"/>
                        </span>
                        <field name="remaining_hours_so" nolabel="1" widget="timesheet_uom" invisible="not allow_billable or not sale_order_id or not partner_id or not sale_line_id or not remaining_hours_available" decoration-danger="remaining_hours_so &lt; 0"/>
                    </t>
                </xpath>
            </data>