783 lines
44 KiB
XML
783 lines
44 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<record id="view_expenses_tree" model="ir.ui.view">
|
|
<field name="name">hr.expense.tree</field>
|
|
<field name="model">hr.expense</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Expenses" decoration-bf="message_unread == True">
|
|
<field name="currency_id" invisible="True"/>
|
|
<field name="attachment_number" invisible="True"/>
|
|
<field name="date"/>
|
|
<field name="name"/>
|
|
<field name="employee_id"/>
|
|
<field name="sheet_id" invisible="not context.get('show_report', False)"/>
|
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
|
<field name="total_amount" sum="Total Amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
|
<field name="state"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
<button name="action_get_attachment_view" string="View Attached Documents" type="object" icon="fa-paperclip" attrs="{'invisible': [('attachment_number', '=', 0)]}"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_form_view" model="ir.ui.view">
|
|
<field name="name">hr.expense.form</field>
|
|
<field name="model">hr.expense</field>
|
|
<field eval="25" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<form string="Expenses">
|
|
<header invisible="context.get('expense_adding_line')">
|
|
<button name="submit_expenses" states="draft" string="Submit to Manager" type="object" class="oe_highlight o_expense_submit"/>
|
|
<field name="state" widget="statusbar" statusbar_visible="draft,reported,done"/>
|
|
<button name="view_sheet" type="object" string="View Report" class="oe_highlight" attrs="{'invisible': [('state', '=','draft')]}"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="oe_button_box" invisible="context.get('expense_adding_line')">
|
|
<button name="action_get_attachment_view"
|
|
class="oe_stat_button"
|
|
icon="fa-book"
|
|
type="object">
|
|
<field name="attachment_number" widget="statinfo" string="Documents"/>
|
|
</button>
|
|
</div>
|
|
<div class="oe_title">
|
|
<label for="name"/>
|
|
<h1>
|
|
<field name="name" placeholder="e.g. Lunch with Customer"/>
|
|
</h1>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="product_id" context="{'default_can_be_expensed': 1}"/>
|
|
<field name="unit_amount" required="1" widget="monetary" options="{'currency_field': 'currency_id'}"/>
|
|
<label for="quantity"/>
|
|
<div>
|
|
<field name="quantity" class="oe_inline"/>
|
|
<field name="product_uom_id" widget="selection" class="oe_inline" groups="product.group_uom"/>
|
|
</div>
|
|
<field name="tax_ids" domain="[('type_tax_use', '=', 'purchase')]" widget="many2many_tags" groups="base.group_no_one"/>
|
|
</group><group>
|
|
<field name="reference"/>
|
|
<field name="date"/>
|
|
<field name="account_id" domain="[('internal_type', '=', 'other')]"/>
|
|
<field name="employee_id"/>
|
|
<field name="sheet_id" invisible="1"/>
|
|
<field name="currency_id" groups="base.group_multi_currency"/>
|
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</group><group>
|
|
<field name="total_amount" widget='monetary' options="{'currency_field': 'currency_id'}"/>
|
|
<label for="payment_mode"/>
|
|
<div>
|
|
<field name="payment_mode" widget="radio"/>
|
|
</div>
|
|
</group>
|
|
|
|
</group>
|
|
<div>
|
|
<field name="description" placeholder="Notes..."/>
|
|
</div>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_kanban_view" model="ir.ui.view">
|
|
<field name="name">hr.expense.kanban</field>
|
|
<field name="model">hr.expense</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="o_kanban_mobile">
|
|
<field name="name"/>
|
|
<field name="employee_id"/>
|
|
<field name="total_amount"/>
|
|
<field name="date"/>
|
|
<field name="state"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
|
|
<div class="row">
|
|
<div class="col-xs-6">
|
|
<strong><span><t t-esc="record.name.value"/></span></strong>
|
|
</div>
|
|
<div class="col-xs-6">
|
|
<strong><span class="pull-right text-right"><t t-esc="record.total_amount.value"/></span></strong>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-6 text-muted">
|
|
<span><t t-esc="record.employee_id.value"/> <t t-esc="record.date.value"/></span>
|
|
</div>
|
|
<div class="col-xs-6">
|
|
<span class="pull-right text-right">
|
|
<field name="state" widget="kanban_label_selection" options="{'classes': {'draft': 'default', 'submit': 'default', 'cancel': 'danger', 'post': 'warning',
|
|
'done': 'success'}}"/>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_view_pivot" model="ir.ui.view">
|
|
<field name="name">hr.expense.pivot</field>
|
|
<field name="model">hr.expense</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Expenses Analysis">
|
|
<field name="employee_id" type="row"/>
|
|
<field name="create_date" interval="month" type="col"/>
|
|
<field name="total_amount" type="measure"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_view_graph" model="ir.ui.view">
|
|
<field name="name">hr.expense.graph</field>
|
|
<field name="model">hr.expense</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Expenses Analysis">
|
|
<field name="employee_id" type="col"/>
|
|
<field name="create_date" interval="month" type="row"/>
|
|
<field name="total_amount" type="measure"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_hr_expense_filter" model="ir.ui.view">
|
|
<field name="name">hr.expense.filter</field>
|
|
<field name="model">hr.expense</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Expense">
|
|
<field name="name" string="Expenses"/>
|
|
<field name="date"/>
|
|
<field name="employee_id"/>
|
|
<field name="product_id"/>
|
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
|
<separator />
|
|
<filter domain="[('state', '=', 'draft')]" string="To Submit" name="to_report" help="New Expense"/>
|
|
<filter domain="[('state', '=', 'reported')]" string="Reported" name="submitted" help="Confirmed Expenses"/>
|
|
<filter domain="[('state', '=', 'refused')]" string="Refused" name="refused" help="Refused Expenses"/>
|
|
<filter domain="[('state', '!=', 'refused')]" string="Not Refused" name="uncancelled" help="Actual expense sheets, not the refused ones"/>
|
|
<separator />
|
|
<filter string="My Team Expenses" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr_expense.group_hr_expense_manager" help="Expenses of Your Team Member"/>
|
|
<filter string="My Expenses" domain="[('employee_id.user_id', '=', uid)]"/>
|
|
<separator />
|
|
<filter string="New Mail" name="message_unread" domain="[('message_unread', '=', True)]"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Report" domain="[]" context="{'group_by': 'sheet_id'}"/>
|
|
<filter string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
|
|
<filter string="Company" domain="[]" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
|
|
<filter string="Product" domain="[]" context="{'group_by': 'product_id'}"/>
|
|
<filter string="Analytic Account" domain="[]" context="{'group_by': 'analytic_account_id'}" groups="analytic.group_analytic_accounting"/>
|
|
<filter string="Expenses Month" domain="[]" context="{'group_by': 'date'}" help="Expenses by Month"/>
|
|
<filter string="Status" domain="[]" context="{'group_by': 'state'}"/>
|
|
</group>
|
|
<separator />
|
|
<filter domain="[('employee_id.active', '=', False)]" string="Former Employees" name="inactive" groups="hr_expense.group_hr_expense_user,hr_expense.group_hr_expense_manager"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_actions_all" model="ir.actions.act_window">
|
|
<field name="name">All Expenses</field>
|
|
<field name="res_model">hr.expense</field>
|
|
<field name="view_mode">pivot,graph,tree,kanban,form</field>
|
|
<field name="search_view_id" ref="view_hr_expense_filter"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Create a new expense.<br/>
|
|
<!-- Or send receipts to .... -->
|
|
</p><p>
|
|
Expenses will go through these steps:
|
|
</p><ol>
|
|
<li>You record expenses</li>
|
|
<li>Periodically, you submit expenses report to your manager,</li>
|
|
<li>Once approved, your expenses report goes to the accounting,</li>
|
|
<li>The accountant validates journal entries and reimburse you.</li>
|
|
</ol>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_actions_my_unsubmitted" model="ir.actions.act_window">
|
|
<field name="name">My Expenses to Submit</field>
|
|
<field name="res_model">hr.expense</field>
|
|
<field name="view_mode">tree,kanban,form,graph,pivot</field>
|
|
<field name="search_view_id" ref="view_hr_expense_filter"/>
|
|
<field name="domain">[('employee_id.user_id', '=', uid)]</field>
|
|
<field name="context">{'search_default_to_report': 1}</field>
|
|
<field name="help" type="html">
|
|
<p>
|
|
The steps to process expenses are:
|
|
<ol>
|
|
<li>You record expenses,</li>
|
|
<li>Periodically, you submit expenses report to your manager,</li>
|
|
<li>Once approved, your expense report, goes to the accounting,</li>
|
|
<li>The accountant validates entries and reimburse you.</li>
|
|
</ol>
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_refused_expenses" model="ir.actions.act_window">
|
|
<field name="name">Refused Expenses</field>
|
|
<field name="res_model">hr.expense</field>
|
|
<field name="view_mode">tree,kanban,form,graph,pivot</field>
|
|
<field name="search_view_id" ref="view_hr_expense_filter"/>
|
|
<field name="domain">[('employee_id.user_id', '=', uid)]</field>
|
|
<field name="context">{'search_default_refused': 1}</field>
|
|
<field name="help" type="html">
|
|
<p>
|
|
The steps to process expenses are:
|
|
<ol>
|
|
<li>You record expenses,</li>
|
|
<li>Periodically, you submit expenses report to your manager,</li>
|
|
<li>Once approved, your expense report, goes to the accounting,</li>
|
|
<li>The accountant validates entries and reimburse you.</li>
|
|
</ol>
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_product_hr_expense_form" model="ir.ui.view">
|
|
<field name="name">product.template.expense.form</field>
|
|
<field name="model">product.template</field>
|
|
<field name="inherit_id" ref="product.product_template_form_view"/>
|
|
<field name="arch" type="xml">
|
|
<div name="options" position="inside">
|
|
<div>
|
|
<field name="can_be_expensed"/>
|
|
<label for="can_be_expensed"/>
|
|
</div>
|
|
</div>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="product_product_expense_form_view" model="ir.ui.view">
|
|
<field name="name">product.product.expense.form</field>
|
|
<field name="model">product.product</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Expense Products">
|
|
<sheet>
|
|
<field name='product_variant_count' invisible='1'/>
|
|
<field name="id" invisible="True"/>
|
|
<div class="oe_button_box" name="button_box">
|
|
<button name="toggle_active" type="object"
|
|
class="oe_stat_button" icon="fa-archive">
|
|
<field name="active" widget="boolean_button"
|
|
options='{"terminology": "archive"}'/>
|
|
</button>
|
|
</div>
|
|
<field name="image_medium" widget="image" class="oe_avatar"/>
|
|
<div class="oe_title">
|
|
<label class="oe_edit_only" for="name" string="Product Name"/>
|
|
<h1><field name="name" placeholder="e.g. Lunch"/></h1>
|
|
<div name="options" groups="base.group_user" invisible="1">
|
|
<div>
|
|
<field name="can_be_expensed"/>
|
|
<label for="can_be_expensed"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<group>
|
|
<group string="General Information">
|
|
<field name="type"/>
|
|
<field name="standard_price"/>
|
|
<field name="uom_id" groups="product.group_uom" options="{'no_create': True}"/>
|
|
<field name="uom_po_id" invisible="1"/>
|
|
<label for="default_code"/>
|
|
<div>
|
|
<field name="default_code"/>
|
|
<i class="text-muted oe_edit_only">Use [Reference] as a subject prefix for incoming receipts</i>
|
|
</div>
|
|
</group>
|
|
<group string="Accounting">
|
|
<field name="property_account_expense_id"/>
|
|
<field name="supplier_taxes_id" widget="many2many_tags"/>
|
|
</group>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_product" model="ir.actions.act_window">
|
|
<field name="name">Expense Products</field>
|
|
<field name="res_model">product.product</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">kanban,tree,form</field>
|
|
<field name="context">{"default_can_be_expensed": 1, 'default_type': 'service'}</field>
|
|
<field name="domain">[('can_be_expensed', '=', True)]</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click to create a new expense category.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_product_tree" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="2"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="act_window_id" ref="hr_expense_product"/>
|
|
</record>
|
|
|
|
<record id="hr_expense_product_kanban" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="act_window_id" ref="hr_expense_product"/>
|
|
</record>
|
|
|
|
<record id="hr_expense_product_form" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="3"/>
|
|
<field name="view_mode">form</field>
|
|
<field name="view_id" ref="product_product_expense_form_view"/>
|
|
<field name="act_window_id" ref="hr_expense_product"/>
|
|
</record>
|
|
|
|
|
|
|
|
<record id="action_approved_expense" model="ir.actions.act_window">
|
|
<field name="name">Employee Expenses</field>
|
|
<field name="res_model">hr.expense</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="view_id" ref="view_expenses_tree"/>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{"search_default_approved": 1}</field>
|
|
<field name="help" type="html">
|
|
<p>
|
|
From here the accountant will be able to approve as well as refuse the expenses which are verified by the HR Manager.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_approved_expense" model="ir.actions.act_window">
|
|
<field name="name">Unreported Expenses</field>
|
|
<field name="res_model">hr.expense</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="view_id" ref="view_expenses_tree"/>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{"search_default_unsubmitted": 1}</field>
|
|
<field name="help" type="html">
|
|
<p>
|
|
From here the accountant will be able to approve as well as refuse the expenses which are verified by the HR Manager.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_action" model="ir.actions.act_window">
|
|
<field name="name">Expenses Analysis</field>
|
|
<field name="res_model">hr.expense</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">pivot,graph</field>
|
|
<field name="context">{
|
|
'search_default_uncancelled': 1,
|
|
}
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_hr_expense_sheet_tree" model="ir.ui.view">
|
|
<field name="name">hr.expense.sheet.tree</field>
|
|
<field name="model">hr.expense.sheet</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Expense Reports" decoration-warning="state=='draft'" decoration-bf="message_unread == True">
|
|
<field name="name" string="Expense Sheet"/>
|
|
<field name="accounting_date"/>
|
|
<field name="employee_id"/>
|
|
<field name="currency_id" invisible="1"/>
|
|
<field name="total_amount" sum="Total Amount"/>
|
|
<field name="state"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_hr_expense_sheet_form" model="ir.ui.view">
|
|
<field name="name">hr.expense.sheet.form</field>
|
|
<field name="model">hr.expense.sheet</field>
|
|
<field eval="25" name="priority"/>
|
|
<field name="arch" type="xml">
|
|
<form string="Expense Reports" class="o_expense_sheet">
|
|
<header>
|
|
<button name="approve_expense_sheets" states="submit" string="Approve" type="object" groups="hr_expense.group_hr_expense_user" class="oe_highlight o_expense_sheet_approve"/>
|
|
<button name="action_sheet_move_create" states="approve" string="Post Journal Entries" type="object" groups="account.group_account_user" class="oe_highlight o_expense_sheet_post"/>
|
|
<button name="%(hr_expense.hr_expense_register_payment_wizard_action)d" type="action" string="Register Payment" class="oe_highlight o_expense_sheet_pay" attrs="{'invisible': [('state', '!=', 'post')]}" context="{'default_amount': total_amount, 'partner_id': address_id}" groups="account.group_account_user"/>
|
|
<button name="reset_expense_sheets" states="cancel" string="Resubmit" type="object"/>
|
|
<button name="%(hr_expense.hr_expense_refuse_wizard_action)d" states="submit" string="Refuse" type="action" groups="hr_expense.group_hr_expense_user" />
|
|
<button name="%(hr_expense.hr_expense_refuse_wizard_action)d" states="approve" string="Refuse" type="action" groups="account.group_account_user"/>
|
|
<field name="state" widget="statusbar" statusbar_visible="draft,submit,approve,post,done"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="oe_button_box">
|
|
<button name="action_get_attachment_view"
|
|
class="oe_stat_button"
|
|
icon="fa-book"
|
|
type="object">
|
|
<field name="attachment_number" widget="statinfo" string="Documents"/>
|
|
</button>
|
|
<button name="action_open_journal_entries"
|
|
class="oe_stat_button"
|
|
icon="fa-book"
|
|
string="Accounting Entries"
|
|
attrs="{'invisible': [('account_move_id', '=', False)]}"
|
|
type="object">
|
|
</button>
|
|
</div>
|
|
<div class="oe_title">
|
|
<label for="name" class="oe_edit_only"/>
|
|
<h1>
|
|
<field name="name" placeholder="e.g. Trip to NY"/>
|
|
</h1>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="employee_id"/>
|
|
<field name="payment_mode"/>
|
|
<field name="responsible_id" invisible="1"/>
|
|
<field name="total_amount" invisible="1"/>
|
|
<field name="currency_id" invisible="1"/>
|
|
<field name="address_id" invisible="1"/>
|
|
<field name="department_id" invisible="1"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</group>
|
|
<group>
|
|
<field name="journal_id" domain="[('type', '=', 'purchase')]" groups="account.group_account_user" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('payment_mode', '!=', 'own_account')]}"/>
|
|
<field name="bank_journal_id" groups="account.group_account_user" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('payment_mode', '!=', 'company_account')]}" domain="[('type', 'in', ['cash', 'bank'])]"/>
|
|
<field name="accounting_date" groups="account.group_account_user" attrs="{'invisible': [('state', 'not in', ['approve', 'post', 'done'])]}"/>
|
|
<field name="account_move_id" invisible="1"/>
|
|
</group>
|
|
</group>
|
|
<field name="expense_line_ids" nolabel="1" widget="many2many" domain="[('state', '=', 'draft')]" options="{'not_delete': True}" context="{'expense_adding_line': True}">
|
|
<tree>
|
|
<field name="date"/>
|
|
<field name="name"/>
|
|
<field name="state" invisible="1"/>
|
|
<field name="currency_id" invisible="1"/>
|
|
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
|
|
<field name="message_unread" invisible="1"/>
|
|
<field name="attachment_number" string=" "/>
|
|
<button name="action_get_attachment_view" string="View Attachments" type="object" icon="fa-paperclip"/>
|
|
<field name="tax_ids" widget="many2many_tags"/>
|
|
<field name="total_amount" widget="monetary"/>
|
|
</tree>
|
|
</field>
|
|
<group>
|
|
<group class="oe_subtotal_footer oe_right" colspan="2" name="expense_total">
|
|
<field name="total_amount" widget='monetary' options="{'currency_field': 'currency_id'}"/>
|
|
</group>
|
|
</group>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids" widget="mail_followers"/>
|
|
<field name="message_ids" widget="mail_thread"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_hr_expense_sheet_kanban" model="ir.ui.view">
|
|
<field name="name">hr.expense.sheet.kanban</field>
|
|
<field name="model">hr.expense.sheet</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="o_kanban_mobile">
|
|
<field name="name"/>
|
|
<field name="employee_id"/>
|
|
<field name="total_amount"/>
|
|
<field name="accounting_date"/>
|
|
<field name="state"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
|
|
<div class="row">
|
|
<div class="col-xs-6">
|
|
<strong><span><t t-esc="record.name.value"/></span></strong>
|
|
</div>
|
|
<div class="col-xs-6">
|
|
<strong><span class="pull-right text-right"><t t-esc="record.total_amount.value"/></span></strong>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xs-6 text-muted">
|
|
<span><t t-esc="record.employee_id.value"/> <t t-esc="record.accounting_date.value"/></span>
|
|
</div>
|
|
<div class="col-xs-6">
|
|
<span class="pull-right text-right">
|
|
<field name="state" widget="kanban_label_selection" options="{'classes': {'draft': 'default', 'submit': 'default', 'cancel': 'danger', 'post': 'warning',
|
|
'done': 'success'}}"/>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_hr_expense_sheet_pivot" model="ir.ui.view">
|
|
<field name="name">hr.expense.sheet.pivot</field>
|
|
<field name="model">hr.expense.sheet</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Expenses Analysis" disable_linking="True">
|
|
<field name="employee_id" type="row"/>
|
|
<field name="accounting_date" interval="month" type="col"/>
|
|
<field name="total_amount" type="measure"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_hr_expense_sheet_graph" model="ir.ui.view">
|
|
<field name="name">hr.expense.sheet.graph</field>
|
|
<field name="model">hr.expense.sheet</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Expenses Analysis">
|
|
<field name="employee_id" type="col"/>
|
|
<field name="accounting_date" interval="month" type="row"/>
|
|
<field name="total_amount" type="measure"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
|
|
<record id="view_hr_expense_sheet_filter" model="ir.ui.view">
|
|
<field name="name">hr.expense.sheet.filter</field>
|
|
<field name="model">hr.expense.sheet</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Expense">
|
|
<field name="name" string="Expenses"/>
|
|
<field name="accounting_date"/>
|
|
<field name="state"/>
|
|
<field name="employee_id"/>
|
|
<field name="department_id" string="Department"/>
|
|
<separator />
|
|
<filter domain="[('state', '=', 'submit')]" string="To Approve" name="submitted" help="Confirmed Expenses"/>
|
|
<filter domain="[('state', '=', 'approve')]" string="To Post" name="to_post" help="Approved Expenses"/>
|
|
<filter domain="['|', ('state', '=', 'approve'), ('state', '=', 'post')]" string="To Pay" name="approved" help="Expenses to Invoice"/>
|
|
<separator/>
|
|
<filter string="My Team Reports" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr_expense.group_hr_expense_manager" help="Expenses of Your Team Member"/>
|
|
<filter string="My Reports" domain="[('employee_id.user_id', '=', uid)]"/>
|
|
<separator />
|
|
<filter string="New Mail" name="message_unread" domain="[('message_unread', '=', True)]"/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Employee" domain="[]" context="{'group_by': 'employee_id'}"/>
|
|
<filter string="Department" domain="[]" context="{'group_by': 'department_id'}"/>
|
|
<filter string="Company" domain="[]" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
|
|
<filter string="Expenses Month" domain="[]" context="{'group_by': 'accounting_date'}" help="Expenses by Month"/>
|
|
<filter string="State" domain="[]" context="{'group_by': 'state'}" name="state"/>
|
|
</group>
|
|
<separator />
|
|
<filter domain="[('employee_id.active', '=', False)]" string="Former Employees" name="inactive" groups="hr_expense.group_hr_expense_user,hr_expense.group_hr_expense_manager"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_my_all" model="ir.actions.act_window">
|
|
<field name="name">My Reports</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="domain">[('employee_id.user_id', '=', uid)]</field>
|
|
<field name="context">{}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create a new expense report.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_all_to_approve" model="ir.actions.act_window">
|
|
<field name="name">Expense Reports to Approve</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{'search_default_submitted': 1}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create a new expense report.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_all_to_post" model="ir.actions.act_window">
|
|
<field name="name">Expense Reports To Post</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{'search_default_to_post': 1}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create a new expense report.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_all_to_pay" model="ir.actions.act_window">
|
|
<field name="name">Expense Reports To Pay</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{'search_default_approved': 1}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create a new expense report.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_all_all" model="ir.actions.act_window">
|
|
<field name="name">All Expense Reports</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_mode">pivot,graph,tree,kanban,form</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{}</field>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create a new expense report.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_request_approve_expense_sheet" model="ir.actions.act_window">
|
|
<field name="name">Reports to Approve</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="context">{'search_default_submitted': 1, 'needaction_menu_ref': 'hr_expense.menu_hr_expense_all'}</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create new expenses.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_request_to_post_expense_sheet" model="ir.actions.act_window">
|
|
<field name="name">Reports to Post</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="context">{'search_default_to_post': 1, 'needaction_menu_ref': 'hr_expense.menu_hr_expense_all'}</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create new expenses.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_request_to_pay_expense_sheet" model="ir.actions.act_window">
|
|
<field name="name">Reports to Pay</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="context">{'search_default_approved': 1, 'needaction_menu_ref': 'hr_expense.menu_hr_expense_all'}</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="oe_view_nocontent_create">
|
|
Click here to create new expenses.
|
|
</p><p>
|
|
Once you have created your expense, submit it to your manager who will validate it.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_department_to_approve" model="ir.actions.act_window">
|
|
<field name="name">Expense Reports to Approve</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
|
<field name="search_view_id" ref="view_hr_expense_sheet_filter"/>
|
|
<field name="context">{
|
|
'search_default_submitted': 1,
|
|
'search_default_department_id': [active_id],
|
|
'default_department_id': active_id
|
|
}
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_sheet_department_filtered" model="ir.actions.act_window">
|
|
<field name="name">Expense Reports Analysis</field>
|
|
<field name="res_model">hr.expense.sheet</field>
|
|
<field name="view_type">form</field>
|
|
<field name="view_mode">pivot,graph</field>
|
|
<field name="context">{
|
|
'search_default_department_id': [active_id],
|
|
'default_department_id': active_id}
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_expense_submit_action_server" model="ir.actions.server">
|
|
<field name="name">Submit To Manager</field>
|
|
<field name="type">ir.actions.server</field>
|
|
<field name="model_id" ref="model_hr_expense"/>
|
|
<field name="state">code</field>
|
|
<field name="code">
|
|
if records:
|
|
action = records.submit_expenses()
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_expense_submit" model="ir.values">
|
|
<field name="name">Submit To Manager</field>
|
|
<field name="model_id" ref="model_hr_expense"/>
|
|
<field name="model">hr.expense</field>
|
|
<field name="key2">client_action_multi</field>
|
|
<field eval="'ir.actions.server,%d'%hr_expense_submit_action_server" name="value"/>
|
|
</record>
|
|
|
|
<menuitem id="menu_hr_expense_root" name="Expenses" sequence="100" web_icon="hr_expense,static/description/icon.png"/>
|
|
|
|
<menuitem id="menu_hr_expense_my_expenses" name="My Expenses" sequence="1" parent="menu_hr_expense_root" groups="base.group_user"/>
|
|
<menuitem id="menu_hr_expense_my_expenses_to_submit" name="Expenses to Submit" sequence="1" parent="menu_hr_expense_my_expenses" action="hr_expense_actions_my_unsubmitted"/>
|
|
<menuitem id="menu_hr_expense_my_expenses_refused" name="Refused Expenses" sequence="2" parent="menu_hr_expense_my_expenses" action="action_hr_expense_refused_expenses"/>
|
|
<menuitem id="menu_hr_expense_sheet_my_reports" name="Expense Reports" sequence="3" parent="menu_hr_expense_my_expenses" action="action_hr_expense_sheet_my_all" load_xmlid="True"/>
|
|
|
|
<menuitem id="menu_hr_expense_to_approve" name="To Approve" sequence="2" parent="menu_hr_expense_root" groups="hr_expense.group_hr_expense_user"/>
|
|
<menuitem id="menu_hr_expense_sheet_all_to_approve" name="Expense Reports To Approve" sequence="1" parent="menu_hr_expense_to_approve"
|
|
action="action_hr_expense_sheet_all_to_approve"/>
|
|
|
|
<menuitem id="menu_hr_expense_accountant" name="Accountant" sequence="3" parent="menu_hr_expense_root" groups="hr_expense.group_hr_expense_manager"/>
|
|
<menuitem id="menu_hr_expense_sheet_all_to_post" name="Expense Reports To Post" sequence="2" parent="menu_hr_expense_accountant"
|
|
action="action_hr_expense_sheet_all_to_post"/>
|
|
<menuitem id="menu_hr_expense_sheet_all_to_pay" name="Expense Reports To Pay" sequence="3" parent="menu_hr_expense_accountant"
|
|
action="action_hr_expense_sheet_all_to_pay"/>
|
|
|
|
<menuitem id="menu_hr_expense_reports" name="Reports" sequence="4" parent="menu_hr_expense_root" groups="hr_expense.group_hr_expense_manager"/>
|
|
<menuitem id="menu_hr_expense_all_expenses" name="All Expenses" sequence="0" parent="menu_hr_expense_reports" action="hr_expense_actions_all"/>
|
|
<menuitem id="menu_hr_expense_sheet_all_all" name="All Expense Reports" sequence="4" parent="menu_hr_expense_reports"
|
|
action="action_hr_expense_sheet_all_all" groups="hr_expense.group_hr_expense_manager"/>
|
|
|
|
<menuitem id="menu_hr_expense_configuration" name="Configuration" parent="menu_hr_expense_root"
|
|
sequence="100"/>
|
|
<menuitem id="menu_hr_product" name="Expense Products" parent="menu_hr_expense_configuration"
|
|
action="hr_expense_product" groups="hr_expense.group_hr_expense_manager" sequence="10"/>
|
|
</odoo>
|