mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-26 05:32:03 +02:00
Initial commit: Hr packages
This commit is contained in:
commit
62531cd146
2820 changed files with 1432848 additions and 0 deletions
5
odoo-bringout-oca-ocb-hr_expense/hr_expense/__init__.py
Normal file
5
odoo-bringout-oca-ocb-hr_expense/hr_expense/__init__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import models
|
||||
from . import wizard
|
||||
75
odoo-bringout-oca-ocb-hr_expense/hr_expense/__manifest__.py
Normal file
75
odoo-bringout-oca-ocb-hr_expense/hr_expense/__manifest__.py
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
|
||||
{
|
||||
'name': 'Expenses',
|
||||
'version': '2.0',
|
||||
'category': 'Human Resources/Expenses',
|
||||
'sequence': 70,
|
||||
'summary': 'Submit, validate and reinvoice employee expenses',
|
||||
'description': """
|
||||
Manage expenses by Employees
|
||||
============================
|
||||
|
||||
This application allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee.
|
||||
Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers.
|
||||
|
||||
|
||||
The whole flow is implemented as:
|
||||
---------------------------------
|
||||
* Draft expense
|
||||
* Submitted by the employee to his manager
|
||||
* Approved by his manager
|
||||
* Validation by the accountant and accounting entries creation
|
||||
|
||||
This module also uses analytic accounting and is compatible with the invoice on timesheet module so that you are able to automatically re-invoice your customers' expenses if your work by project.
|
||||
""",
|
||||
'website': 'https://www.odoo.com/app/expenses',
|
||||
'depends': ['hr_contract', 'account', 'web_tour'],
|
||||
'data': [
|
||||
'security/hr_expense_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/digest_data.xml',
|
||||
'data/mail_activity_type_data.xml',
|
||||
'data/mail_alias_data.xml',
|
||||
'data/mail_message_subtype_data.xml',
|
||||
'data/mail_templates.xml',
|
||||
'data/hr_expense_sequence.xml',
|
||||
'data/hr_expense_data.xml',
|
||||
'wizard/hr_expense_refuse_reason_views.xml',
|
||||
'wizard/hr_expense_approve_duplicate_views.xml',
|
||||
'wizard/hr_expense_split_wizard_views.xml',
|
||||
'views/hr_expense_views.xml',
|
||||
'views/mail_activity_views.xml',
|
||||
'security/ir_rule.xml',
|
||||
'report/hr_expense_report.xml',
|
||||
'views/account_move_views.xml',
|
||||
'views/account_payment_views.xml',
|
||||
'views/hr_department_views.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
'views/account_journal_dashboard.xml',
|
||||
],
|
||||
'demo': ['data/hr_expense_demo.xml'],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'hr_expense/static/src/components/*.js',
|
||||
'hr_expense/static/src/components/*.xml',
|
||||
'hr_expense/static/src/mixins/*.js',
|
||||
'hr_expense/static/src/views/*.js',
|
||||
'hr_expense/static/src/views/*.xml',
|
||||
'hr_expense/static/src/scss/hr_expense.scss',
|
||||
'hr_expense/static/src/xml/**/*',
|
||||
'hr_expense/static/src/js/tours/*.js',
|
||||
],
|
||||
'web.assets_tests': [
|
||||
'hr_expense/static/tests/tours/expense_upload_tours.js',
|
||||
],
|
||||
'web.qunit_mobile_suite_tests': [
|
||||
'hr_expense/static/tests/expense_mobile_tests.js',
|
||||
],
|
||||
},
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="digest_tip_hr_expense_0" model="digest.tip">
|
||||
<field name="name">Tip: Snap pictures of your receipts with the remote app</field>
|
||||
<field name="sequence">1100</field>
|
||||
<field name="group_id" ref="base.group_user" />
|
||||
<field name="tip_description" type="html">
|
||||
<div>
|
||||
<p class="tip_title">Tip: Snap pictures of your receipts with the remote app</p>
|
||||
<p class="tip_content">Do not keep your expense tickets in your pockets any longer. Just snap a picture of your receipt and let Odoo digitalizes it for you. The OCR and Artificial Intelligence will fill the data automatically.</p>
|
||||
<img src="https://download.odoocdn.com/digests/hr_expense/static/src/img/expense.png" class="illustration_border" />
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- sgv note - icons will be replaced. Design task is ongoing -->
|
||||
<record id="expense_product_meal" model="product.product">
|
||||
<field name="name">Meals</field>
|
||||
<field name="description">Restaurants, business lunches, etc.</field>
|
||||
<field name="standard_price">0.0</field>
|
||||
<field name="type">service</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="default_code">FOOD</field>
|
||||
<field name="can_be_expensed" eval="True"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="image_1920" type="base64" file="hr_expense/static/img/food.svg"/>
|
||||
</record>
|
||||
<record id="expense_product_travel_accommodation" model="product.product">
|
||||
<field name="name">Travel & Accommodation</field>
|
||||
<field name="description">Hotel, plane ticket, taxi, etc.</field>
|
||||
<field name="standard_price">0.0</field>
|
||||
<field name="type">service</field>
|
||||
<field name="uom_id" ref="uom.product_uom_unit"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_unit"/>
|
||||
<field name="default_code">TRANS & ACC</field>
|
||||
<field name="can_be_expensed" eval="True"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="image_1920" type="base64" file="hr_expense/static/img/transport.svg"/>
|
||||
</record>
|
||||
<record id="expense_product_mileage" model="product.product">
|
||||
<field name="name">Mileage</field>
|
||||
<field name="standard_price">1.0</field>
|
||||
<field name="type">service</field>
|
||||
<field name="uom_id" ref="uom.product_uom_km"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_km"/>
|
||||
<field name="default_code">MIL</field>
|
||||
<field name="can_be_expensed" eval="True"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="image_1920" type="base64" file="hr_expense/static/img/mileage.svg"/>
|
||||
</record>
|
||||
<record id="expense_product_gift" model="product.product">
|
||||
<field name="name">Gifts</field>
|
||||
<field name="description">Gifts to customers or vendors</field>
|
||||
<field name="standard_price">0.0</field>
|
||||
<field name="type">service</field>
|
||||
<field name="uom_id" ref="uom.product_uom_km"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_km"/>
|
||||
<field name="default_code">GIFT</field>
|
||||
<field name="can_be_expensed" eval="True"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="image_1920" type="base64" file="hr_expense/static/img/gift.svg"/>
|
||||
</record>
|
||||
<record id="expense_product_communication" model="product.product">
|
||||
<field name="name">Communication</field>
|
||||
<field name="description">Phone bills, postage, etc.</field>
|
||||
<field name="standard_price">0.0</field>
|
||||
<field name="type">service</field>
|
||||
<field name="uom_id" ref="uom.product_uom_km"/>
|
||||
<field name="uom_po_id" ref="uom.product_uom_km"/>
|
||||
<field name="default_code">COMM</field>
|
||||
<field name="can_be_expensed" eval="True"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="image_1920" type="base64" file="hr_expense/static/img/communication.svg"/>
|
||||
</record>
|
||||
<record id="product_product_no_cost" model="product.product">
|
||||
<field name="name">Others</field>
|
||||
<field name="standard_price">0.0</field>
|
||||
<field name="type">service</field>
|
||||
<field name="default_code">EXP_GEN</field>
|
||||
<field name="categ_id" ref="product.cat_expense"/>
|
||||
<field name="can_be_expensed" eval="True"/>
|
||||
<field name="image_1920" type="base64" file="hr_expense/static/img/other.svg"/>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<function model="ir.config_parameter" name="set_param" eval="('hr_expense.use_mailgateway', True)"/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,230 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="hr.employee_mit" model="hr.employee">
|
||||
<field name="address_home_id" ref="base.res_partner_address_3"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_expense_account_journal" model="account.journal">
|
||||
<field name="name">Expense</field>
|
||||
<field name="code">EXP</field>
|
||||
<field name="type">purchase</field>
|
||||
<!-- avoid being selected as default journal -->
|
||||
<field name="sequence">99</field>
|
||||
<field name="alias_name">purchase_expense</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_address_fp" model="res.partner">
|
||||
<field name="name">Pieter Parter's Farm</field>
|
||||
<field name="parent_id" ref="base.partner_root"/>
|
||||
<field name="street">Chaussée de Namur, 40</field>
|
||||
<field name="zip">1367</field>
|
||||
<field name="city">Grand-Rosière-Hottomont</field>
|
||||
<field name="country_id" ref="base.be"/>
|
||||
<field name="type">private</field>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_fme" model="hr.employee">
|
||||
<field name="address_home_id" ref="res_partner_address_fp"/>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_al" model="hr.employee">
|
||||
<field name="address_home_id" ref="res_partner_address_fp"/>
|
||||
</record>
|
||||
|
||||
<!-- ++++++++++++++ Expense sheet for Admin ++++++++++++++-->
|
||||
<record id="screen_expense" model="hr.expense">
|
||||
<field name="name">Screen</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_our_super_product'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field eval="289.0" name="total_amount"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-04-03'"/>
|
||||
</record>
|
||||
|
||||
<record id="laptop_expense" model="hr.expense">
|
||||
<field name="name">Laptop</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_our_super_product'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field eval="889.0" name="total_amount"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-04-03'"/>
|
||||
</record>
|
||||
|
||||
<record id="travel_admin_by_car_expense" model="hr.expense">
|
||||
<field name="name">Travel by car</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="product_id" ref="expense_product_mileage"/>
|
||||
<field eval="108.84" name="total_amount"/>
|
||||
<field name="product_uom_id" ref="uom.product_uom_km"/>
|
||||
<field eval="320.0" name="quantity"/>
|
||||
</record>
|
||||
|
||||
<record id="breakfast_admin_expense" model="hr.expense">
|
||||
<field name="name">BreakFast</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="product_id" ref="expense_product_meal"/>
|
||||
<field eval="20" name="total_amount"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
</record>
|
||||
|
||||
<record id="travel_ny_sheet" model="hr.expense.sheet">
|
||||
<field name="name">Commercial Travel at New York</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="state">approve</field>
|
||||
</record>
|
||||
|
||||
<record id="travel_by_air_expense" model="hr.expense">
|
||||
<field name="name">Travel by Air</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_our_super_product'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_travel_accommodation"/>
|
||||
<field eval="700.0" name="total_amount"/>
|
||||
<field name="product_uom_id" ref="uom.product_uom_unit"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-12'"/>
|
||||
<field name="sheet_id" ref="travel_ny_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="hotel_bill_expense" model="hr.expense">
|
||||
<field name="name">Hotel Expenses</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_travel_accommodation"/>
|
||||
<field eval="2000.0" name="total_amount"/>
|
||||
<field name="product_uom_id" ref="uom.product_uom_unit"/>
|
||||
<field eval="5.0" name="quantity"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-17'"/>
|
||||
<field name="sheet_id" ref="travel_ny_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="lunch_customer_bill_expense" model="hr.expense">
|
||||
<field name="name">Lunch with Customer</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_meal"/>
|
||||
<field eval="152.8" name="total_amount"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-13'"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
<field name="sheet_id" ref="travel_ny_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="lunch_bill_expense" model="hr.expense">
|
||||
<field name="name">Lunch</field>
|
||||
<field name="employee_id" ref="hr.employee_admin"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_meal"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-15'"/>
|
||||
<field eval="56.8" name="total_amount"/>
|
||||
<field eval="1.0" name="quantity"/>
|
||||
<field name="sheet_id" ref="travel_ny_sheet"/>
|
||||
</record>
|
||||
|
||||
<!-- ++++++++++++++ Expense sheet for Demo ++++++++++++++-->
|
||||
<record id="customer_meeting_sheet" model="hr.expense.sheet">
|
||||
<field name="name">Customer meeting</field>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
<field name="state">submit</field>
|
||||
</record>
|
||||
|
||||
<record id="travel_demo_by_car_expense" model="hr.expense">
|
||||
<field name="name">Travel by Car</field>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_our_super_product'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_mileage"/>
|
||||
<field eval="120.85" name="total_amount"/>
|
||||
<field name="product_uom_id" ref="uom.product_uom_km"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-01-15'"/>
|
||||
<field eval="152.0" name="quantity"/>
|
||||
<field name="sheet_id" ref="customer_meeting_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="lunch_demo_customer_bill_expense" model="hr.expense">
|
||||
<field name="name">Lunch with Customer</field>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-01-15'"/>
|
||||
<field eval="152.8" name="total_amount"/>
|
||||
<field name="sheet_id" ref="customer_meeting_sheet"/>
|
||||
</record>
|
||||
|
||||
<!-- ++++++++++++++ Expense sheet for Keith Byrd ++++++++++++++-->
|
||||
<record id="team_building_sheet" model="hr.expense.sheet">
|
||||
<field name="name">Team Building</field>
|
||||
<field name="employee_id" ref="hr.employee_fme"/>
|
||||
<field name="state">submit</field>
|
||||
</record>
|
||||
|
||||
<record id="pizzas_bill_expense" model="hr.expense">
|
||||
<field name="name">Pizzas</field>
|
||||
<field name="employee_id" ref="hr.employee_fme"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_meal"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-05'"/>
|
||||
<field eval="154" name="total_amount"/>
|
||||
<field eval="12.0" name="quantity"/>
|
||||
<field name="sheet_id" ref="team_building_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="drinks_bill_expense" model="hr.expense">
|
||||
<field name="name">Drinks</field>
|
||||
<field name="employee_id" ref="hr.employee_fme"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="expense_product_meal"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-05'"/>
|
||||
<field eval="42.5" name="total_amount"/>
|
||||
<field eval="17.0" name="quantity"/>
|
||||
<field name="sheet_id" ref="team_building_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="paintball_bill_expense" model="hr.expense">
|
||||
<field name="name">Paintball</field>
|
||||
<field name="employee_id" ref="hr.employee_fme"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-05'"/>
|
||||
<field eval="25" name="total_amount"/>
|
||||
<field name="sheet_id" ref="team_building_sheet"/>
|
||||
</record>
|
||||
|
||||
<!-- ++++++++++++++ Expense sheet for Ronnie Hart ++++++++++++++-->
|
||||
<record id="office_furniture_sheet" model="hr.expense.sheet">
|
||||
<field name="name">Office furniture</field>
|
||||
<field name="employee_id" ref="hr.employee_al"/>
|
||||
<field name="state">submit</field>
|
||||
</record>
|
||||
|
||||
<record id="chair_bill_expense" model="hr.expense">
|
||||
<field name="name">Chairs</field>
|
||||
<field name="employee_id" ref="hr.employee_al"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-06-02'"/>
|
||||
<field eval="55.75" name="total_amount"/>
|
||||
<field name="sheet_id" ref="office_furniture_sheet"/>
|
||||
</record>
|
||||
|
||||
<record id="lamp_bill_expense" model="hr.expense">
|
||||
<field name="name">Lamp</field>
|
||||
<field name="employee_id" ref="hr.employee_al"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-06-02'"/>
|
||||
<field eval="28.99" name="total_amount"/>
|
||||
<field name="sheet_id" ref="office_furniture_sheet"/>
|
||||
</record>
|
||||
|
||||
<!-- ++++++++++++++ Expense for Randall Lewis ++++++++++++++-->
|
||||
<record id="afterwork_bill_expense" model="hr.expense">
|
||||
<field name="name">Car tyres</field>
|
||||
<field name="employee_id" ref="hr.employee_stw"/>
|
||||
<field name="analytic_distribution" eval="{ref('analytic.analytic_nebula'): 100}"/>
|
||||
<field name="product_id" ref="product_product_no_cost"/>
|
||||
<field name="date" eval="time.strftime('%Y')+'-03-15'"/>
|
||||
<field eval="450.58" name="total_amount"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="seq_hr_expense_invoice" model="ir.sequence">
|
||||
<field name="name">Expense invoice</field>
|
||||
<field name="code">hr.expense.invoice</field>
|
||||
<field name="prefix">EXP/</field>
|
||||
<field name="padding">3</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="mail_act_expense_approval" model="mail.activity.type">
|
||||
<field name="name">Expense Approval</field>
|
||||
<field name="icon">fa-dollar</field>
|
||||
<field name="res_model">hr.expense.sheet</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- default alias for expenses -->
|
||||
<record id="mail_alias_expense" model="mail.alias">
|
||||
<field name="alias_name">expense</field>
|
||||
<field name="alias_model_id" ref="model_hr_expense"/>
|
||||
<field name="alias_user_id" ref="base.user_admin"/>
|
||||
<field name="alias_contact">employees</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Expense-related subtypes for messaging / Chatter -->
|
||||
<record id="mt_expense_approved" model="mail.message.subtype">
|
||||
<field name="name">Approved</field>
|
||||
<field name="res_model">hr.expense.sheet</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="description">Expense report approved</field>
|
||||
</record>
|
||||
<record id="mt_expense_refused" model="mail.message.subtype">
|
||||
<field name="name">Refused</field>
|
||||
<field name="res_model">hr.expense.sheet</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="description">Expense report refused</field>
|
||||
</record>
|
||||
<record id="mt_expense_paid" model="mail.message.subtype">
|
||||
<field name="name">Paid</field>
|
||||
<field name="res_model">hr.expense.sheet</field>
|
||||
<field name="description">Expense report paid</field>
|
||||
<field name="default" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<template id="hr_expense_template_refuse_reason">
|
||||
<p>Your Expense <t t-if="is_sheet">Report </t><t t-esc="name"/> has been refused</p>
|
||||
<ul class="o_timeline_tracking_value_list">
|
||||
<li>Reason : <t t-esc="reason"/></li>
|
||||
</ul>
|
||||
</template>
|
||||
|
||||
<template id="hr_expense_template_register">
|
||||
<p>Dear <t t-esc="expense.employee_id.name"/>,</p>
|
||||
<p>
|
||||
Your expense has been successfully registered.
|
||||
<t t-if="expense.employee_id.user_id">
|
||||
You can now submit it to the manager from the following link.
|
||||
</t>
|
||||
</p>
|
||||
<p t-if="expense.product_id">
|
||||
Category: <t t-esc="expense.product_id.name"/>
|
||||
</p>
|
||||
<div t-else="">
|
||||
<p>Category: not found</p>
|
||||
<p>The first word of the email subject did not correspond to any category code. You'll have to set the category manually on the expense.</p>
|
||||
</div>
|
||||
<p>
|
||||
Price: <t t-esc="expense.unit_amount"/><t t-esc="expense.currency_id.symbol"/>
|
||||
</p>
|
||||
<p t-if="expense.employee_id.user_id">
|
||||
<br/>
|
||||
<a t-att-href="'/web#id=%s&model=hr.expense&view_type=form' % (expense.id)" style="background-color: #9E588B; margin-top: 10px; padding: 10px; text-decoration: none; color: #fff; border-radius: 5px; font-size: 16px;">View Expense</a>
|
||||
</p>
|
||||
</template>
|
||||
|
||||
<template id="hr_expense_template_register_no_user">
|
||||
<div style="background:#F0F0F0;color:#515166;padding:10px 0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;">
|
||||
<table style="width:600px;margin:5px auto;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/"><img src="/web/binary/company_logo" style="vertical-align:baseline;max-width:100px;" /></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table style="width:600px;margin:0px auto;background:white;border:1px solid #e1e1e1;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding:15px 20px 10px 20px;">
|
||||
<t t-call="hr_expense.hr_expense_template_register"/>
|
||||
<p style="color:#9E588B;">Powered by <a target="_blank" href="https://www.odoo.com">Odoo</a>.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
</data>
|
||||
</odoo>
|
||||
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/af.po
Normal file
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/af.po
Normal file
File diff suppressed because it is too large
Load diff
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/am.po
Normal file
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/am.po
Normal file
File diff suppressed because it is too large
Load diff
2498
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ar.po
Normal file
2498
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ar.po
Normal file
File diff suppressed because it is too large
Load diff
2447
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/az.po
Normal file
2447
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/az.po
Normal file
File diff suppressed because it is too large
Load diff
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/be.po
Normal file
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/be.po
Normal file
File diff suppressed because it is too large
Load diff
2469
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/bg.po
Normal file
2469
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/bg.po
Normal file
File diff suppressed because it is too large
Load diff
2442
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/bs.po
Normal file
2442
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/bs.po
Normal file
File diff suppressed because it is too large
Load diff
2561
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ca.po
Normal file
2561
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ca.po
Normal file
File diff suppressed because it is too large
Load diff
2515
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/cs.po
Normal file
2515
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/cs.po
Normal file
File diff suppressed because it is too large
Load diff
2494
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/da.po
Normal file
2494
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/da.po
Normal file
File diff suppressed because it is too large
Load diff
2550
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/de.po
Normal file
2550
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/de.po
Normal file
File diff suppressed because it is too large
Load diff
1615
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/el.po
Normal file
1615
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/el.po
Normal file
File diff suppressed because it is too large
Load diff
737
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/en_AU.po
Normal file
737
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/en_AU.po
Normal file
|
|
@ -0,0 +1,737 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_expense
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo 9.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
|
||||
"PO-Revision-Date: 2016-02-20 10:40+0000\n"
|
||||
"Last-Translator: Martin Trigaux\n"
|
||||
"Language-Team: English (Australia) (http://www.transifex.com/odoo/odoo-9/"
|
||||
"language/en_AU/)\n"
|
||||
"Language: en_AU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Currency:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Employee:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Manager:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Status:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Total</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_account_id
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.product,name:hr_expense.air_ticket
|
||||
#: model:product.template,name:hr_expense.air_ticket_product_template
|
||||
msgid "Air Flight"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_analytic_account_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_approved
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_bank_journal_id
|
||||
msgid "Bank Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_product_template_can_be_expensed
|
||||
msgid "Can be expensed"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.product,name:hr_expense.car_travel
|
||||
#: model:product.template,name:hr_expense.car_travel_product_template
|
||||
msgid "Car Travel Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Certified honest and conform,<br/>(Date and signature).<br/><br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Click here to approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.action_request_approve_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.expense_all
|
||||
msgid "Click here to create new expenses."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Click here to refuse"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:web.tip,description:hr_expense.expense_tip_2
|
||||
msgid "Click on Action to submit multiple expenses to your manager."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.hr_expense_product
|
||||
msgid "Click to create a new expense category."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,payment_mode:0
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_company_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense_configuration
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Confirmed Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Created by"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Created on"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_currency_id
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_date
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_department
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_description
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_report_hr_expense_report_expense_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Display Name"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Employee"
|
||||
msgstr "Employee"
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,payment_mode:0
|
||||
msgid "Employee (to reimburse)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_approved_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_approved
|
||||
msgid "Employee Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expense"
|
||||
msgstr "Expense"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_name
|
||||
msgid "Expense Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_journal_id
|
||||
msgid "Expense Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_product
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_product
|
||||
msgid "Expense Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_approved
|
||||
msgid "Expense approved"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_confirmed
|
||||
msgid "Expense confirmed, waiting confirmation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Expense refuse reason"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_refused
|
||||
msgid "Expense refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense_root
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
#: model:product.category,name:hr_expense.cat_expense
|
||||
msgid "Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_hr_expense_report_filtered
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_action
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_pivot
|
||||
msgid "Expenses Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_department_expense_confirmed
|
||||
msgid "Expenses To Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:209
|
||||
#, python-format
|
||||
msgid "Expenses must belong to the same Employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:212
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Expenses must have an expense journal specified to generate accounting "
|
||||
"entries."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses of Your Team Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_request_approve_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_action_from_department
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_department_expense_to_approve_count
|
||||
msgid "Expenses to Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses to Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Former Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.action_approved_expense
|
||||
msgid ""
|
||||
"From here the accountant will be able to approve as well as refuse the "
|
||||
"expenses which are verified by the HR Manager."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.server,name:hr_expense.hr_expense_entry_action_server
|
||||
msgid "Generate Accounting Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.report.xml,name:hr_expense.action_report_hr_expense
|
||||
msgid "HR Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "HR Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.product,name:hr_expense.hotel_rent
|
||||
#: model:product.template,name:hr_expense.hotel_rent_product_template
|
||||
msgid "Hotel Accommodation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense_refuse_wizard
|
||||
msgid "Hr Expense refuse Reason wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_report_hr_expense_report_expense_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_account_move_id
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense___last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard___last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_report_hr_expense_report_expense___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Last Modified on"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Last Updated by"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Last Updated on"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.expense_all
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_all
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "My Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "My Team Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "New"
|
||||
msgstr "New"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "New Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "New Mail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:276
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No Expense account found for the product %s (or for it's category), please "
|
||||
"configure one."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:244
|
||||
#, python-format
|
||||
msgid "No Home Address found for the employee %s, please configure one."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:240
|
||||
#, python-format
|
||||
msgid "No credit account found for the %s journal, please configure one."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Notes..."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_attachment_number
|
||||
msgid "Number of Attachments"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.action_request_approve_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.expense_all
|
||||
msgid ""
|
||||
"Once you have created your expense, submit it to your manager who will "
|
||||
"validate it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_payment_mode
|
||||
msgid "Payment By"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please configure Default Expense account for Product expense: "
|
||||
"`property_account_expense_categ_id`."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Post Journal Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_product_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Qty"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_quantity
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_description
|
||||
msgid "Reason"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Reason to refuse expense."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Refuse"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_refuse_wizard_action
|
||||
msgid "Refuse Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_refused
|
||||
msgid "Refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:web.tip,description:hr_expense.expense_tip_1
|
||||
msgid "Select the lines you want to submit to be reimbursed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:77
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Selected Unit of Measure does not belong to the same category as the product "
|
||||
"Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Set to Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_product_template_can_be_expensed
|
||||
msgid "Specify whether the product can be selected in an HR expense."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_state
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.server,name:hr_expense.hr_expense_submit_action_server
|
||||
msgid "Submit Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Submit to Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "Submitted"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_untaxed_amount
|
||||
msgid "Subtotal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Taxe(s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_tax_ids
|
||||
msgid "Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_journal_id
|
||||
msgid "The journal used when the expense is done."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_bank_journal_id
|
||||
msgid "The payment method used when the expense is paid by the company."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "This document must be dated and signed for reimbursement."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_to_approve
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_confirmed
|
||||
msgid "To Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "To Pay"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "To Submit"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_total_amount
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Total Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_unit_amount
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Unit Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_product_uom_id
|
||||
msgid "Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "UoM"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:web.tip,description:hr_expense.expense_tip_3
|
||||
msgid ""
|
||||
"Use the messaging tool to log a note and attach a document to the expense. "
|
||||
"(e.g. scan of the bill)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "Waiting Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_state
|
||||
msgid ""
|
||||
"When the expense request is created the status is 'To Submit'.\n"
|
||||
" It is submitted by the employee and request is sent to manager, the status "
|
||||
"is 'Submitted'. \n"
|
||||
"If the manager approve it, the status is 'Approved'.\n"
|
||||
" If the accountant genrate the accounting entries for the expense request, "
|
||||
"the status is 'Waiting Payment'."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:111
|
||||
#, python-format
|
||||
msgid "You can only delete draft or refused expenses!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:206
|
||||
#, python-format
|
||||
msgid "You can only generate accounting entry for approved expense(s)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:117
|
||||
#, python-format
|
||||
msgid "You can only submit draft expenses!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:128
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Your Expense %s has been refused.<br/><ul "
|
||||
"class=o_timeline_tracking_value_list><li>Reason<span> : </span><span "
|
||||
"class=o_timeline_tracking_value>%s</span></li></ul>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "e.g. Business lunch with X"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "or"
|
||||
msgstr "or"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_report_hr_expense_report_expense
|
||||
msgid "report.hr_expense.report_expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#. odoo-python
|
||||
#: code:addons/hr_expense/models/hr_expense.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The private address of the employee is required to post the expense report. "
|
||||
"Please add it on the employee form."
|
||||
msgstr ""
|
||||
1846
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/en_GB.po
Normal file
1846
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/en_GB.po
Normal file
File diff suppressed because it is too large
Load diff
2528
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es.po
Normal file
2528
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_BO.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_BO.po
Normal file
File diff suppressed because it is too large
Load diff
208
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_CL.po
Normal file
208
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_CL.po
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_expense
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~15.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-26 14:21+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Chile) (https://www.transifex.com/odoo/teams/41243/"
|
||||
"es_CL/)\n"
|
||||
"Language: es_CL\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Cuenta analítica"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_approve_duplicate_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_split
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__company_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__company_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__company_id
|
||||
#: model:ir.model.fields.selection,name:hr_expense.selection__hr_expense__payment_mode__company_account
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_sheet_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_search
|
||||
msgid "Company"
|
||||
msgstr "Compañía"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate__create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard__create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__currency_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__currency_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__currency_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__currency_id
|
||||
msgid "Currency"
|
||||
msgstr "Moneda"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__name
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate__display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard__display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre mostrado"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_sheet_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_search
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate__id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard__id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__id
|
||||
msgid "ID"
|
||||
msgstr "ID (identificación)"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense____last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate____last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard____last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet____last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split____last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación en"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización de"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_approve_duplicate__write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard__write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización en"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense_sheet
|
||||
msgid "Price"
|
||||
msgstr "Precio"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_product_template
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split__product_id
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense_sheet
|
||||
msgid "Qty"
|
||||
msgstr "Ctdad"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__quantity
|
||||
msgid "Quantity"
|
||||
msgstr "Cantidad"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense_reports
|
||||
msgid "Reporting"
|
||||
msgstr "Informes"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__state
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_sheet_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_search
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__total_amount_taxes
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_split_wizard__total_amount_taxes
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_split
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense_sheet
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_sheet_form
|
||||
msgid "Taxes"
|
||||
msgstr "Impuestos"
|
||||
|
||||
#. module: hr_expense
|
||||
#. odoo-python
|
||||
#: code:addons/hr_expense/models/hr_expense.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The private address of the employee is required to post the expense report. "
|
||||
"Please add it on the employee form."
|
||||
msgstr ""
|
||||
"Se requiere la dirección privada del empleado para publicar el informe de "
|
||||
"gastos. Por favor, agréguelo en el formulario de empleado."
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__untaxed_amount
|
||||
msgid "Total Untaxed Amount In Currency"
|
||||
msgstr "Total neto en la divisa"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__unit_amount
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_expenses_analysis_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense_sheet
|
||||
msgid "Unit Price"
|
||||
msgstr "Precio un."
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__product_uom_id
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unidad de medida"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_sheet__untaxed_amount
|
||||
msgid "Untaxed Amount"
|
||||
msgstr "Total neto"
|
||||
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_CO.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_CO.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_CR.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_CR.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_DO.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_DO.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_EC.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_EC.po
Normal file
File diff suppressed because it is too large
Load diff
2527
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_MX.po
Normal file
2527
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_MX.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_PE.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_PE.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_PY.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_PY.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_VE.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/es_VE.po
Normal file
File diff suppressed because it is too large
Load diff
2522
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/et.po
Normal file
2522
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/et.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/eu.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/eu.po
Normal file
File diff suppressed because it is too large
Load diff
2514
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fa.po
Normal file
2514
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fa.po
Normal file
File diff suppressed because it is too large
Load diff
2530
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fi.po
Normal file
2530
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fi.po
Normal file
File diff suppressed because it is too large
Load diff
1846
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fo.po
Normal file
1846
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fo.po
Normal file
File diff suppressed because it is too large
Load diff
2545
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fr.po
Normal file
2545
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fr.po
Normal file
File diff suppressed because it is too large
Load diff
2044
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fr_BE.po
Normal file
2044
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fr_BE.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fr_CA.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/fr_CA.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/gl.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/gl.po
Normal file
File diff suppressed because it is too large
Load diff
2445
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/gu.po
Normal file
2445
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/gu.po
Normal file
File diff suppressed because it is too large
Load diff
2471
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/he.po
Normal file
2471
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/he.po
Normal file
File diff suppressed because it is too large
Load diff
2452
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hi.po
Normal file
2452
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hi.po
Normal file
File diff suppressed because it is too large
Load diff
2474
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hr.po
Normal file
2474
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hr.po
Normal file
File diff suppressed because it is too large
Load diff
2442
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hr_expense.pot
Normal file
2442
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hr_expense.pot
Normal file
File diff suppressed because it is too large
Load diff
2463
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hu.po
Normal file
2463
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hu.po
Normal file
File diff suppressed because it is too large
Load diff
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hy.po
Normal file
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/hy.po
Normal file
File diff suppressed because it is too large
Load diff
2523
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/id.po
Normal file
2523
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/id.po
Normal file
File diff suppressed because it is too large
Load diff
2471
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/is.po
Normal file
2471
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/is.po
Normal file
File diff suppressed because it is too large
Load diff
2521
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/it.po
Normal file
2521
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/it.po
Normal file
File diff suppressed because it is too large
Load diff
2461
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ja.po
Normal file
2461
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ja.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ka.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ka.po
Normal file
File diff suppressed because it is too large
Load diff
1846
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/kab.po
Normal file
1846
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/kab.po
Normal file
File diff suppressed because it is too large
Load diff
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/km.po
Normal file
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/km.po
Normal file
File diff suppressed because it is too large
Load diff
2467
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ko.po
Normal file
2467
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ko.po
Normal file
File diff suppressed because it is too large
Load diff
1780
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lb.po
Normal file
1780
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lb.po
Normal file
File diff suppressed because it is too large
Load diff
2461
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lo.po
Normal file
2461
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lo.po
Normal file
File diff suppressed because it is too large
Load diff
2476
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lt.po
Normal file
2476
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lt.po
Normal file
File diff suppressed because it is too large
Load diff
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lv.po
Normal file
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/lv.po
Normal file
File diff suppressed because it is too large
Load diff
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/mk.po
Normal file
1847
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/mk.po
Normal file
File diff suppressed because it is too large
Load diff
2466
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ml.po
Normal file
2466
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ml.po
Normal file
File diff suppressed because it is too large
Load diff
2473
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/mn.po
Normal file
2473
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/mn.po
Normal file
File diff suppressed because it is too large
Load diff
2447
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ms.po
Normal file
2447
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ms.po
Normal file
File diff suppressed because it is too large
Load diff
2455
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/nb.po
Normal file
2455
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/nb.po
Normal file
File diff suppressed because it is too large
Load diff
1844
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ne.po
Normal file
1844
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ne.po
Normal file
File diff suppressed because it is too large
Load diff
2540
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/nl.po
Normal file
2540
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/nl.po
Normal file
File diff suppressed because it is too large
Load diff
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/no.po
Normal file
2458
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/no.po
Normal file
File diff suppressed because it is too large
Load diff
2538
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/pl.po
Normal file
2538
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/pl.po
Normal file
File diff suppressed because it is too large
Load diff
2532
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/pt.po
Normal file
2532
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/pt.po
Normal file
File diff suppressed because it is too large
Load diff
2528
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/pt_BR.po
Normal file
2528
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/pt_BR.po
Normal file
File diff suppressed because it is too large
Load diff
2526
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ro.po
Normal file
2526
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ro.po
Normal file
File diff suppressed because it is too large
Load diff
2524
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ru.po
Normal file
2524
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ru.po
Normal file
File diff suppressed because it is too large
Load diff
2469
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sk.po
Normal file
2469
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sk.po
Normal file
File diff suppressed because it is too large
Load diff
2491
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sl.po
Normal file
2491
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sl.po
Normal file
File diff suppressed because it is too large
Load diff
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sq.po
Normal file
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sq.po
Normal file
File diff suppressed because it is too large
Load diff
2493
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sr.po
Normal file
2493
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sr.po
Normal file
File diff suppressed because it is too large
Load diff
1849
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sr@latin.po
Normal file
1849
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sr@latin.po
Normal file
File diff suppressed because it is too large
Load diff
2512
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sv.po
Normal file
2512
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sv.po
Normal file
File diff suppressed because it is too large
Load diff
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sw.po
Normal file
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/sw.po
Normal file
File diff suppressed because it is too large
Load diff
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ta.po
Normal file
2387
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/ta.po
Normal file
File diff suppressed because it is too large
Load diff
743
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/te.po
Normal file
743
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/te.po
Normal file
|
|
@ -0,0 +1,743 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_expense
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo 9.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
|
||||
"PO-Revision-Date: 2016-06-08 07:10+0000\n"
|
||||
"Last-Translator: Martin Trigaux\n"
|
||||
"Language-Team: Telugu (http://www.transifex.com/odoo/odoo-9/language/te/)\n"
|
||||
"Language: te\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
#, fuzzy
|
||||
msgid "<strong>Currency:</strong>"
|
||||
msgstr "Vivarana"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Employee:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
#, fuzzy
|
||||
msgid "<strong>Manager:</strong>"
|
||||
msgstr "Moththamu"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
#, fuzzy
|
||||
msgid "<strong>Status:</strong>"
|
||||
msgstr "Moththamu"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "<strong>Total</strong>"
|
||||
msgstr "Moththamu"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_account_id
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.product,name:hr_expense.air_ticket
|
||||
#: model:product.template,name:hr_expense.air_ticket_product_template
|
||||
msgid "Air Flight"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_analytic_account_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_approved
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_bank_journal_id
|
||||
msgid "Bank Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_product_template_can_be_expensed
|
||||
msgid "Can be expensed"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.product,name:hr_expense.car_travel
|
||||
#: model:product.template,name:hr_expense.car_travel_product_template
|
||||
msgid "Car Travel Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Certified honest and conform,<br/>(Date and signature).<br/><br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Click here to approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.action_request_approve_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.expense_all
|
||||
msgid "Click here to create new expenses."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Click here to refuse"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:web.tip,description:hr_expense.expense_tip_2
|
||||
msgid "Click on Action to submit multiple expenses to your manager."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.hr_expense_product
|
||||
msgid "Click to create a new expense category."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,payment_mode:0
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_company_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Company"
|
||||
msgstr "కంపెనీ"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense_configuration
|
||||
msgid "Configuration"
|
||||
msgstr "స్వరూపణం"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Confirmed Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_create_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_create_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_currency_id
|
||||
msgid "Currency"
|
||||
msgstr "ద్రవ్యం"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_date
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Date"
|
||||
msgstr "తేదీ"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_department
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_department_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_description
|
||||
msgid "Description"
|
||||
msgstr "వివరణ"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_display_name
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_report_hr_expense_report_expense_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,payment_mode:0
|
||||
msgid "Employee (to reimburse)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_approved_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_approved
|
||||
msgid "Employee Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_name
|
||||
msgid "Expense Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_journal_id
|
||||
msgid "Expense Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_product
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_product
|
||||
msgid "Expense Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_approved
|
||||
msgid "Expense approved"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_confirmed
|
||||
msgid "Expense confirmed, waiting confirmation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Expense refuse reason"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,description:hr_expense.mt_expense_refused
|
||||
msgid "Expense refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense_root
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
#: model:product.category,name:hr_expense.cat_expense
|
||||
msgid "Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_hr_expense_report_filtered
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_action
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_view_pivot
|
||||
msgid "Expenses Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_department_expense_confirmed
|
||||
msgid "Expenses To Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses by Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:209
|
||||
#, python-format
|
||||
msgid "Expenses must belong to the same Employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:212
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Expenses must have an expense journal specified to generate accounting "
|
||||
"entries."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses of Your Team Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.action_request_approve_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_action_from_department
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_department_expense_to_approve_count
|
||||
msgid "Expenses to Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Expenses to Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Former Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.action_approved_expense
|
||||
msgid ""
|
||||
"From here the accountant will be able to approve as well as refuse the "
|
||||
"expenses which are verified by the HR Manager."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.server,name:hr_expense.hr_expense_entry_action_server
|
||||
msgid "Generate Accounting Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.report.xml,name:hr_expense.action_report_hr_expense
|
||||
msgid "HR Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "HR Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:product.product,name:hr_expense.hotel_rent
|
||||
#: model:product.template,name:hr_expense.hotel_rent_product_template
|
||||
msgid "Hotel Accommodation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_hr_expense_refuse_wizard
|
||||
msgid "Hr Expense refuse Reason wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_id
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_report_hr_expense_report_expense_id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_account_move_id
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense___last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard___last_update
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_report_hr_expense_report_expense___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_write_uid
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_write_date
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.expense_all
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_all
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "My Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "My Team Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Name"
|
||||
msgstr "పేరు"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "New Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "New Mail"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:276
|
||||
#, python-format
|
||||
msgid ""
|
||||
"No Expense account found for the product %s (or for it's category), please "
|
||||
"configure one."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:244
|
||||
#, python-format
|
||||
msgid "No Home Address found for the employee %s, please configure one."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:240
|
||||
#, python-format
|
||||
msgid "No credit account found for the %s journal, please configure one."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Notes..."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_attachment_number
|
||||
msgid "Number of Attachments"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.action_request_approve_expense
|
||||
#: model_terms:ir.actions.act_window,help:hr_expense.expense_all
|
||||
msgid ""
|
||||
"Once you have created your expense, submit it to your manager who will "
|
||||
"validate it."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_payment_mode
|
||||
msgid "Payment By"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please configure Default Expense account for Product expense: "
|
||||
"`property_account_expense_categ_id`."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Post Journal Entries"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Price"
|
||||
msgstr "ధర"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_product_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Qty"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_quantity
|
||||
msgid "Quantity"
|
||||
msgstr "పరిమాణం"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_refuse_wizard_description
|
||||
msgid "Reason"
|
||||
msgstr "సరే"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Reason to refuse expense."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "Refuse"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,name:hr_expense.hr_expense_refuse_wizard_action
|
||||
msgid "Refuse Expense"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_refused
|
||||
msgid "Refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_hr_expense
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:web.tip,description:hr_expense.expense_tip_1
|
||||
msgid "Select the lines you want to submit to be reimbursed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:77
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Selected Unit of Measure does not belong to the same category as the product "
|
||||
"Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "Set to Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_product_template_can_be_expensed
|
||||
msgid "Specify whether the product can be selected in an HR expense."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_state
|
||||
msgid "Status"
|
||||
msgstr "స్థితి"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.server,name:hr_expense.hr_expense_submit_action_server
|
||||
msgid "Submit Expenses"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Submit to Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "Submitted"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_untaxed_amount
|
||||
msgid "Subtotal"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Taxe(s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_tax_ids
|
||||
msgid "Taxes"
|
||||
msgstr "పన్నులు"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_journal_id
|
||||
msgid "The journal used when the expense is done."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_bank_journal_id
|
||||
msgid "The payment method used when the expense is paid by the company."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "This document must be dated and signed for reimbursement."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.ui.menu,name:hr_expense.menu_expense_to_approve
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
#: model:mail.message.subtype,name:hr_expense.mt_expense_confirmed
|
||||
msgid "To Approve"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_hr_expense_filter
|
||||
msgid "To Pay"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "To Submit"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_total_amount
|
||||
msgid "Total"
|
||||
msgstr "మొత్తం"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_my_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.view_expenses_tree
|
||||
msgid "Total Amount"
|
||||
msgstr "మొత్తం"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_unit_amount
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "Unit Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense_product_uom_id
|
||||
msgid "Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.report_expense
|
||||
msgid "UoM"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:web.tip,description:hr_expense.expense_tip_3
|
||||
msgid ""
|
||||
"Use the messaging tool to log a note and attach a document to the expense. "
|
||||
"(e.g. scan of the bill)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: selection:hr.expense,state:0
|
||||
msgid "Waiting Payment"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_state
|
||||
msgid ""
|
||||
"When the expense request is created the status is 'To Submit'.\n"
|
||||
" It is submitted by the employee and request is sent to manager, the status "
|
||||
"is 'Submitted'. \n"
|
||||
"If the manager approve it, the status is 'Approved'.\n"
|
||||
" If the accountant genrate the accounting entries for the expense request, "
|
||||
"the status is 'Waiting Payment'."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:111
|
||||
#, python-format
|
||||
msgid "You can only delete draft or refused expenses!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:206
|
||||
#, python-format
|
||||
msgid "You can only generate accounting entry for approved expense(s)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:117
|
||||
#, python-format
|
||||
msgid "You can only submit draft expenses!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: code:addons/hr_expense/models/hr_expense.py:128
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Your Expense %s has been refused.<br/><ul "
|
||||
"class=o_timeline_tracking_value_list><li>Reason<span> : </span><span "
|
||||
"class=o_timeline_tracking_value>%s</span></li></ul>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_form_view
|
||||
msgid "e.g. Business lunch with X"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_refuse_wizard_view_form
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model,name:hr_expense.model_report_hr_expense_report_expense
|
||||
msgid "report.hr_expense.report_expense"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Action Needed"
|
||||
#~ msgstr "Charya Avasaram"
|
||||
|
||||
#. module: hr_expense
|
||||
#. odoo-python
|
||||
#: code:addons/hr_expense/models/hr_expense.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The private address of the employee is required to post the expense report. "
|
||||
"Please add it on the employee form."
|
||||
msgstr ""
|
||||
"ఖర్చు నివేదికను పోస్ట్ చేయడానికి ఉద్యోగి యొక్క ప్రైవేట్ చిరునామా అవసరం. దయచేసి దాన్ని ఉద్యోగి ఫారమ్లో జోడించండి."
|
||||
2486
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/th.po
Normal file
2486
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/th.po
Normal file
File diff suppressed because it is too large
Load diff
2531
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/tr.po
Normal file
2531
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/tr.po
Normal file
File diff suppressed because it is too large
Load diff
2517
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/uk.po
Normal file
2517
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/uk.po
Normal file
File diff suppressed because it is too large
Load diff
2521
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/vi.po
Normal file
2521
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/vi.po
Normal file
File diff suppressed because it is too large
Load diff
2461
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/zh_CN.po
Normal file
2461
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/zh_CN.po
Normal file
File diff suppressed because it is too large
Load diff
2454
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/zh_TW.po
Normal file
2454
odoo-bringout-oca-ocb-hr_expense/hr_expense/i18n/zh_TW.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import hr_employee
|
||||
from . import account_move
|
||||
from . import account_move_line
|
||||
from . import account_payment
|
||||
from . import hr_department
|
||||
from . import hr_expense
|
||||
from . import ir_attachment
|
||||
from . import product_product
|
||||
from . import product_template
|
||||
from . import res_config_settings
|
||||
from . import account_journal_dashboard
|
||||
from . import res_company
|
||||
from . import analytic
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, models
|
||||
from odoo.tools.misc import formatLang
|
||||
from odoo.addons.account.models.account_journal_dashboard import group_by_journal
|
||||
|
||||
|
||||
class AccountJournal(models.Model):
|
||||
_inherit = "account.journal"
|
||||
|
||||
def _get_expenses_to_pay_query(self):
|
||||
"""
|
||||
Returns a tuple containing as it's first element the SQL query used to
|
||||
gather the expenses in reported state data, and the arguments
|
||||
dictionary to use to run it as it's second.
|
||||
"""
|
||||
query = """SELECT total_amount as amount_total, currency_id AS currency
|
||||
FROM hr_expense_sheet
|
||||
WHERE state IN ('approve', 'post')
|
||||
and journal_id = %(journal_id)s"""
|
||||
return (query, {'journal_id': self.id})
|
||||
|
||||
def get_journal_dashboard_datas(self):
|
||||
res = super(AccountJournal, self).get_journal_dashboard_datas()
|
||||
#add the number and sum of expenses to pay to the json defining the accounting dashboard data
|
||||
(query, query_args) = self._get_expenses_to_pay_query()
|
||||
self.env.cr.execute(query, query_args)
|
||||
query_results_to_pay = self.env.cr.dictfetchall()
|
||||
(number_to_pay, sum_to_pay) = self._count_results_and_sum_amounts(query_results_to_pay, self.company_id.currency_id)
|
||||
res['number_expenses_to_pay'] = number_to_pay
|
||||
res['sum_expenses_to_pay'] = formatLang(self.env, sum_to_pay or 0.0, currency_obj=self.currency_id or self.company_id.currency_id)
|
||||
return res
|
||||
|
||||
def _prepare_expense_sheet_data_domain(self):
|
||||
return [
|
||||
('state', '=', 'post'),
|
||||
('journal_id', 'in', self.ids),
|
||||
]
|
||||
|
||||
def _get_expense_to_pay_query(self):
|
||||
return self.env['hr.expense.sheet']._where_calc(self._prepare_expense_sheet_data_domain())
|
||||
|
||||
def _fill_sale_purchase_dashboard_data(self, dashboard_data):
|
||||
super(AccountJournal, self)._fill_sale_purchase_dashboard_data(dashboard_data)
|
||||
sale_purchase_journals = self.filtered(lambda journal: journal.type in ('sale', 'purchase'))
|
||||
if not sale_purchase_journals:
|
||||
return
|
||||
field_list = [
|
||||
"hr_expense_sheet.journal_id",
|
||||
"hr_expense_sheet.total_amount AS amount_total",
|
||||
"hr_expense_sheet.currency_id AS currency",
|
||||
]
|
||||
query, params = sale_purchase_journals._get_expense_to_pay_query().select(*field_list)
|
||||
self.env.cr.execute(query, params)
|
||||
query_results_to_pay = group_by_journal(self.env.cr.dictfetchall())
|
||||
curr_cache = {}
|
||||
for journal in sale_purchase_journals:
|
||||
currency = journal.currency_id or journal.company_id.currency_id
|
||||
(number_expenses_to_pay, sum_expenses_to_pay) = self._count_results_and_sum_amounts(query_results_to_pay[journal.id], currency, curr_cache=curr_cache)
|
||||
dashboard_data[journal.id].update({
|
||||
'number_expenses_to_pay': number_expenses_to_pay,
|
||||
'sum_expenses_to_pay': currency.format(sum_expenses_to_pay),
|
||||
})
|
||||
|
||||
def open_expenses_action(self):
|
||||
action = self.env['ir.actions.act_window']._for_xml_id('hr_expense.action_hr_expense_sheet_all_all')
|
||||
action['context'] = {
|
||||
'search_default_approved': 1,
|
||||
'search_default_to_post': 1,
|
||||
'search_default_journal_id': self.id,
|
||||
'default_journal_id': self.id,
|
||||
}
|
||||
action['view_mode'] = 'tree,form'
|
||||
action['views'] = [(k,v) for k,v in action['views'] if v in ['tree', 'form']]
|
||||
action['domain'] = self._prepare_expense_sheet_data_domain()
|
||||
return action
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.tools.misc import frozendict
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = "account.move"
|
||||
|
||||
expense_sheet_id = fields.One2many('hr.expense.sheet', 'account_move_id')
|
||||
|
||||
@api.depends('partner_id', 'expense_sheet_id', 'company_id')
|
||||
def _compute_commercial_partner_id(self):
|
||||
own_expense_moves = self.filtered(lambda move: move.sudo().expense_sheet_id.payment_mode == 'own_account')
|
||||
for move in own_expense_moves:
|
||||
if move.expense_sheet_id.payment_mode == 'own_account':
|
||||
move.commercial_partner_id = (
|
||||
move.partner_id.commercial_partner_id
|
||||
if move.partner_id.commercial_partner_id != move.company_id.partner_id
|
||||
else move.partner_id
|
||||
)
|
||||
super(AccountMove, self - own_expense_moves)._compute_commercial_partner_id()
|
||||
|
||||
def action_open_expense_report(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'name': self.expense_sheet_id.name,
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'hr.expense.sheet',
|
||||
'res_id': self.expense_sheet_id.id
|
||||
}
|
||||
|
||||
# Expenses can be written on journal other than purchase, hence don't include them in the constraint check
|
||||
def _check_journal_move_type(self):
|
||||
return super(AccountMove, self.filtered(lambda x: not x.expense_sheet_id))._check_journal_move_type()
|
||||
|
||||
def _creation_message(self):
|
||||
if self.expense_sheet_id:
|
||||
return _("Expense entry Created")
|
||||
return super()._creation_message()
|
||||
|
||||
@api.depends('expense_sheet_id.payment_mode')
|
||||
def _compute_payment_state(self):
|
||||
company_paid = self.filtered(lambda m: m.expense_sheet_id.payment_mode == 'company_account')
|
||||
for move in company_paid:
|
||||
move.payment_state = 'paid'
|
||||
super(AccountMove, self - company_paid)._compute_payment_state()
|
||||
|
||||
@api.depends('expense_sheet_id')
|
||||
def _compute_needed_terms(self):
|
||||
# EXTENDS account
|
||||
# We want to set the account destination based on the 'payment_mode'.
|
||||
super()._compute_needed_terms()
|
||||
for move in self:
|
||||
if move.expense_sheet_id and move.expense_sheet_id.payment_mode == 'company_account':
|
||||
term_lines = move.line_ids.filtered(lambda l: l.display_type != 'payment_term')
|
||||
move.needed_terms = {
|
||||
frozendict(
|
||||
{
|
||||
"move_id": move.id,
|
||||
"date_maturity": move.expense_sheet_id.accounting_date
|
||||
or fields.Date.context_today(move.expense_sheet_id),
|
||||
}
|
||||
): {
|
||||
"balance": -sum(term_lines.mapped("balance")),
|
||||
"amount_currency": -sum(term_lines.mapped("amount_currency")),
|
||||
"name": "",
|
||||
"account_id": move.expense_sheet_id.expense_line_ids[0]._get_expense_account_destination(),
|
||||
}
|
||||
}
|
||||
|
||||
def _reverse_moves(self, default_values_list=None, cancel=False):
|
||||
# Extends account
|
||||
# Reversing vendor bills that represent employee reimbursements should clear them from the expense sheet such that another
|
||||
# can be generated in place.
|
||||
own_account_moves = self.filtered(lambda move: move.expense_sheet_id.payment_mode == 'own_account')
|
||||
own_account_moves.expense_sheet_id.sudo().write({
|
||||
'state': 'approve',
|
||||
'account_move_id': False,
|
||||
})
|
||||
own_account_moves.ref = False # else, when restarting the expense flow we get duplicate issue on vendor.bill
|
||||
|
||||
return super()._reverse_moves(default_values_list=default_values_list, cancel=cancel)
|
||||
|
||||
def unlink(self):
|
||||
if self.expense_sheet_id:
|
||||
self.expense_sheet_id.write({
|
||||
'state': 'approve',
|
||||
'account_move_id': False, # cannot change to delete='set null' in stable
|
||||
})
|
||||
return super().unlink()
|
||||
|
||||
def button_draft(self):
|
||||
# EXTENDS account
|
||||
employee_expense_sheets = self.expense_sheet_id.filtered(
|
||||
lambda expense_sheet: expense_sheet.payment_mode == 'own_account'
|
||||
)
|
||||
employee_expense_sheets.state = 'post'
|
||||
return super().button_draft()
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.tools.misc import frozendict
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = "account.move.line"
|
||||
|
||||
expense_id = fields.Many2one('hr.expense', string='Expense', copy=True)
|
||||
|
||||
@api.constrains('account_id', 'display_type')
|
||||
def _check_payable_receivable(self):
|
||||
super(AccountMoveLine, self.filtered(lambda line: line.move_id.expense_sheet_id.payment_mode != 'company_account'))._check_payable_receivable()
|
||||
|
||||
def reconcile(self):
|
||||
# OVERRIDE
|
||||
not_paid_expenses = self.move_id.expense_sheet_id.expense_line_ids.filtered(lambda expense: expense.state != 'done')
|
||||
res = super().reconcile()
|
||||
# Do not update expense or expense sheet states when reversing journal entries
|
||||
not_paid_expense_sheets = not_paid_expenses.sheet_id.filtered(lambda sheet: sheet.account_move_id.payment_state != 'reversed')
|
||||
paid_expenses = not_paid_expenses.filtered(lambda expense: expense.currency_id.is_zero(expense.amount_residual))
|
||||
paid_expenses.write({'state': 'done'})
|
||||
not_paid_expense_sheets.filtered(lambda sheet: all(expense.state == 'done' for expense in sheet.expense_line_ids)).set_to_paid()
|
||||
return res
|
||||
|
||||
def _get_attachment_domains(self):
|
||||
attachment_domains = super(AccountMoveLine, self)._get_attachment_domains()
|
||||
if self.expense_id:
|
||||
attachment_domains.append([('res_model', '=', 'hr.expense'), ('res_id', '=', self.expense_id.id)])
|
||||
return attachment_domains
|
||||
|
||||
def _compute_tax_key(self):
|
||||
super()._compute_tax_key()
|
||||
for line in self:
|
||||
if line.expense_id:
|
||||
line.tax_key = frozendict(**line.tax_key, expense_id=line.expense_id.id)
|
||||
|
||||
def _compute_all_tax(self):
|
||||
expense_lines = self.filtered('expense_id')
|
||||
super(AccountMoveLine, expense_lines.with_context(force_price_include=True))._compute_all_tax()
|
||||
super(AccountMoveLine, self - expense_lines)._compute_all_tax()
|
||||
for line in expense_lines:
|
||||
for key in list(line.compute_all_tax.keys()):
|
||||
new_key = frozendict(**key, expense_id=line.expense_id.id)
|
||||
line.compute_all_tax[new_key] = line.compute_all_tax.pop(key)
|
||||
|
||||
def _compute_totals(self):
|
||||
expenses = self.filtered('expense_id')
|
||||
super(AccountMoveLine, expenses.with_context(force_price_include=True))._compute_totals()
|
||||
super(AccountMoveLine, self - expenses)._compute_totals()
|
||||
|
||||
def _convert_to_tax_base_line_dict(self):
|
||||
result = super()._convert_to_tax_base_line_dict()
|
||||
if self.expense_id:
|
||||
result.setdefault('extra_context', {})
|
||||
result['extra_context']['force_price_include'] = True
|
||||
return result
|
||||
|
||||
def _get_extra_query_base_tax_line_mapping(self):
|
||||
return ' AND (base_line.expense_id IS NULL OR account_move_line.expense_id = base_line.expense_id)'
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
class AccountPayment(models.Model):
|
||||
_inherit = "account.payment"
|
||||
|
||||
def action_cancel(self):
|
||||
# EXTENDS account
|
||||
for payment in self:
|
||||
if payment.expense_sheet_id.payment_mode != 'own_account':
|
||||
continue
|
||||
payment.with_context(skip_account_move_synchronization=True).expense_sheet_id.write({
|
||||
'state': 'approve',
|
||||
'account_move_id': False,
|
||||
})
|
||||
|
||||
return super().action_cancel()
|
||||
|
||||
def action_draft(self):
|
||||
employee_expense_sheets = self.reconciled_bill_ids.expense_sheet_id.filtered(
|
||||
lambda expense_sheet: expense_sheet.payment_mode == 'own_account'
|
||||
)
|
||||
employee_expense_sheets.state = 'post'
|
||||
return super().action_draft()
|
||||
|
||||
def action_open_expense_report(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'name': self.expense_sheet_id.name,
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'views': [(False, 'form')],
|
||||
'res_model': 'hr.expense.sheet',
|
||||
'res_id': self.expense_sheet_id.id
|
||||
}
|
||||
|
||||
def _synchronize_from_moves(self, changed_fields):
|
||||
# EXTENDS account
|
||||
if self.expense_sheet_id:
|
||||
# Constraints bypass when entry is linked to an expense.
|
||||
# Context is not enough, as we want to be able to delete
|
||||
# and update those entries later on.
|
||||
return
|
||||
return super()._synchronize_from_moves(changed_fields)
|
||||
|
||||
def _synchronize_to_moves(self, changed_fields):
|
||||
# EXTENDS account
|
||||
if self.expense_sheet_id:
|
||||
raise UserError(_("You cannot do this modification since the payment is linked to an expense report."))
|
||||
return super()._synchronize_to_moves(changed_fields)
|
||||
|
||||
def _creation_message(self):
|
||||
# EXTENDS mail
|
||||
self.ensure_one()
|
||||
if self.move_id.expense_sheet_id:
|
||||
return _("Payment created for: %s", self.move_id.expense_sheet_id._get_html_link())
|
||||
return super()._creation_message()
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class AccountAnalyticApplicability(models.Model):
|
||||
_inherit = 'account.analytic.applicability'
|
||||
_description = "Analytic Plan's Applicabilities"
|
||||
|
||||
business_domain = fields.Selection(
|
||||
selection_add=[
|
||||
('expense', 'Expense'),
|
||||
],
|
||||
ondelete={'expense': 'cascade'},
|
||||
)
|
||||
|
||||
|
||||
class AnalyticAccount(models.Model):
|
||||
_inherit = 'account.analytic.account'
|
||||
|
||||
@api.ondelete(at_uninstall=False)
|
||||
def _unlink_except_account_in_analytic_distribution(self):
|
||||
self.env.cr.execute("""
|
||||
SELECT id FROM hr_expense
|
||||
WHERE analytic_distribution::jsonb ?| array[%s]
|
||||
LIMIT 1
|
||||
""", ([str(id) for id in self.ids],))
|
||||
expense_ids = self.env.cr.fetchall()
|
||||
if expense_ids:
|
||||
raise UserError(_("You cannot delete an analytic account that is used in an expense."))
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrDepartment(models.Model):
|
||||
_inherit = 'hr.department'
|
||||
|
||||
def _compute_expense_sheets_to_approve(self):
|
||||
expense_sheet_data = self.env['hr.expense.sheet']._read_group([('department_id', 'in', self.ids), ('state', '=', 'submit')], ['department_id'], ['department_id'])
|
||||
result = dict((data['department_id'][0], data['department_id_count']) for data in expense_sheet_data)
|
||||
for department in self:
|
||||
department.expense_sheets_to_approve_count = result.get(department.id, 0)
|
||||
|
||||
expense_sheets_to_approve_count = fields.Integer(compute='_compute_expense_sheets_to_approve', string='Expenses Reports to Approve')
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models, api
|
||||
|
||||
|
||||
class Employee(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
def _group_hr_expense_user_domain(self):
|
||||
# We return the domain only if the group exists for the following reason:
|
||||
# When a group is created (at module installation), the `res.users` form view is
|
||||
# automatically modifiedto add application accesses. When modifiying the view, it
|
||||
# reads the related field `expense_manager_id` of `res.users` and retrieve its domain.
|
||||
# This is a problem because the `group_hr_expense_user` record has already been created but
|
||||
# not its associated `ir.model.data` which makes `self.env.ref(...)` fail.
|
||||
group = self.env.ref('hr_expense.group_hr_expense_team_approver', raise_if_not_found=False)
|
||||
return [('groups_id', 'in', group.ids)] if group else []
|
||||
|
||||
expense_manager_id = fields.Many2one(
|
||||
'res.users', string='Expense',
|
||||
domain=_group_hr_expense_user_domain,
|
||||
compute='_compute_expense_manager', store=True, readonly=False,
|
||||
help='Select the user responsible for approving "Expenses" of this employee.\n'
|
||||
'If empty, the approval is done by an Administrator or Approver (determined in settings/users).')
|
||||
|
||||
@api.depends('parent_id')
|
||||
def _compute_expense_manager(self):
|
||||
for employee in self:
|
||||
previous_manager = employee._origin.parent_id.user_id
|
||||
manager = employee.parent_id.user_id
|
||||
if manager and manager.has_group('hr_expense.group_hr_expense_user') and (employee.expense_manager_id == previous_manager or not employee.expense_manager_id):
|
||||
employee.expense_manager_id = manager
|
||||
elif not employee.expense_manager_id:
|
||||
employee.expense_manager_id = False
|
||||
|
||||
def _get_user_m2o_to_empty_on_archived_employees(self):
|
||||
return super()._get_user_m2o_to_empty_on_archived_employees() + ['expense_manager_id']
|
||||
|
||||
|
||||
class EmployeePublic(models.Model):
|
||||
_inherit = 'hr.employee.public'
|
||||
|
||||
expense_manager_id = fields.Many2one('res.users', readonly=True)
|
||||
|
||||
|
||||
class User(models.Model):
|
||||
_inherit = ['res.users']
|
||||
|
||||
expense_manager_id = fields.Many2one(related='employee_id.expense_manager_id', readonly=False)
|
||||
|
||||
@property
|
||||
def SELF_READABLE_FIELDS(self):
|
||||
return super().SELF_READABLE_FIELDS + ['expense_manager_id']
|
||||
1562
odoo-bringout-oca-ocb-hr_expense/hr_expense/models/hr_expense.py
Normal file
1562
odoo-bringout-oca-ocb-hr_expense/hr_expense/models/hr_expense.py
Normal file
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue