hr_expense_account_split/views/hr_expense_views.xml
2026-03-31 17:25:04 +07:00

77 lines
4.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Expense Line Form View -->
<record id="hr_expense_view_form_inherit_receipt" model="ir.ui.view">
<field name="name">hr.expense.view.form.receipt</field>
<field name="model">hr.expense</field>
<field name="inherit_id" ref="hr_expense.hr_expense_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='account_id']" position="after">
<field name="receipt_due_date" widget="date" invisible="not receipt_due_date"/>
<field name="receipt_received" widget="boolean_toggle" invisible="not receipt_due_date"/>
<field name="receipt_overdue" invisible="1"/>
</xpath>
<xpath expr="//sheet" position="before">
<div class="alert alert-danger mb-2" role="alert" invisible="not receipt_overdue">
This receipt is <strong>Overdue</strong>! Please submit the original receipt as soon as possible.
</div>
</xpath>
</field>
</record>
<!-- Expense Line Tree View -->
<record id="view_expenses_tree_inherit_receipt" model="ir.ui.view">
<field name="name">hr.expense.tree.receipt</field>
<field name="model">hr.expense</field>
<field name="inherit_id" ref="hr_expense.view_expenses_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='state']" position="after">
<field name="receipt_due_date" optional="show" widget="remaining_days" decoration-danger="receipt_overdue"/>
<field name="receipt_received" optional="show" widget="boolean_toggle"/>
<field name="receipt_overdue" column_invisible="True"/>
</xpath>
</field>
</record>
<!-- Expense Search View -->
<record id="hr_expense_view_search_inherit_receipt" model="ir.ui.view">
<field name="name">hr.expense.search.receipt</field>
<field name="model">hr.expense</field>
<field name="inherit_id" ref="hr_expense.hr_expense_view_search"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='no_report']" position="after">
<separator/>
<filter string="Overdue Receipts" name="filter_receipt_overdue" domain="[('receipt_overdue', '=', True), ('receipt_received', '=', False)]"/>
<filter string="Receipt Received" name="filter_receipt_received" domain="[('receipt_received', '=', True)]"/>
<filter string="Receipt Missing" name="filter_receipt_missing" domain="[('receipt_received', '=', False), ('receipt_due_date', '!=', False)]"/>
</xpath>
<xpath expr="//group" position="inside">
<filter string="Receipt Status" name="group_receipt_status" context="{'group_by': 'receipt_received'}"/>
<filter string="Receipt Due Date" name="group_receipt_due" context="{'group_by': 'receipt_due_date'}"/>
</xpath>
</field>
</record>
<!-- Report Action: Overdue Receipts -->
<record id="action_hr_expense_overdue_receipts" model="ir.actions.act_window">
<field name="name">Overdue Receipts</field>
<field name="res_model">hr.expense</field>
<field name="view_mode">list,pivot,form</field>
<field name="domain">[('receipt_overdue', '=', True), ('receipt_received', '=', False)]</field>
<field name="context">{'search_default_group_receipt_due': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No overdue receipts found!
</p><p>
This report shows all expenses that have been paid but the original receipts haven't been submitted yet.
</p>
</field>
</record>
<menuitem id="menu_hr_expense_overdue_receipts"
name="Overdue Receipts"
parent="hr_expense.menu_hr_expense_reports"
action="action_hr_expense_overdue_receipts"
sequence="20"/>
</odoo>