mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-24 12:32:04 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -16,36 +16,16 @@ pip install odoo-bringout-oca-ocb-hr_attendance
|
|||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- hr
|
||||
- barcodes
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Attendances
|
||||
- **Version**: 2.0
|
||||
- **Category**: Human Resources/Attendances
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: True
|
||||
- base_geolocalize
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `hr_attendance`.
|
||||
- Repository: https://github.com/OCA/OCB
|
||||
- Branch: 19.0
|
||||
- Path: addons/hr_attendance
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original LGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
This package preserves the original LGPL-3 license.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import controllers
|
||||
from . import models
|
||||
from . import report
|
||||
|
||||
|
||||
def post_init_hook(env):
|
||||
env['res.company']._check_hr_presence_control(True)
|
||||
|
||||
|
||||
def uninstall_hook(env):
|
||||
env['res.company']._check_hr_presence_control(False)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
|
||||
|
|
@ -16,16 +15,21 @@ Keeps account of the attendances of the employees on the basis of the
|
|||
actions(Check in/Check out) performed by them.
|
||||
""",
|
||||
'website': 'https://www.odoo.com/app/employees',
|
||||
'depends': ['hr', 'barcodes'],
|
||||
'depends': ['hr', 'barcodes', 'base_geolocalize'],
|
||||
'data': [
|
||||
'data/hr_attendance_overtime_ruleset_data.xml',
|
||||
'data/hr_attendance_overtime_rule_data.xml',
|
||||
'data/hr_attendance_data.xml',
|
||||
'security/hr_attendance_security.xml',
|
||||
'security/hr_attendance_overtime_ruleset_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'views/hr_attendance_view.xml',
|
||||
'views/hr_attendance_overtime_view.xml',
|
||||
'report/hr_attendance_report_views.xml',
|
||||
'views/hr_department_view.xml',
|
||||
'views/hr_employee_view.xml',
|
||||
'views/hr_employee_public_views.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
'views/hr_attendance_kiosk_templates.xml',
|
||||
'views/hr_attendance_overtime_rule_views.xml',
|
||||
],
|
||||
'demo': [
|
||||
'data/hr_attendance_demo.xml'
|
||||
|
|
@ -34,12 +38,62 @@ actions(Check in/Check out) performed by them.
|
|||
'application': True,
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'hr_attendance/static/src/**/*',
|
||||
'hr_attendance/static/src/xml/**/*',
|
||||
'hr_attendance/static/src/**/*.js',
|
||||
'hr_attendance/static/src/**/*.xml',
|
||||
'hr_attendance/static/src/scss/views/*.scss'
|
||||
],
|
||||
'web.qunit_suite_tests': [
|
||||
('after', 'web/static/tests/legacy/views/kanban_tests.js', 'hr_attendance/static/tests/hr_attendance_tests.js'),
|
||||
'hr_attendance/static/tests/hr_attendance_mock_server.js',
|
||||
],
|
||||
'web.assets_unit_tests': [
|
||||
'hr_attendance/static/tests/*.test.js',
|
||||
],
|
||||
'hr_attendance.assets_public_attendance': [
|
||||
# Define attendance variables (takes priority)
|
||||
'hr_attendance/static/src/scss/kiosk/primary_variables.scss',
|
||||
|
||||
# Front-end libraries
|
||||
('include', 'web._assets_helpers'),
|
||||
('include', 'web._assets_primary_variables'),
|
||||
'hr_attendance/static/src/scss/kiosk/bootstrap_overridden.scss',
|
||||
('include', 'web._assets_frontend_helpers'),
|
||||
'web/static/lib/jquery/jquery.js',
|
||||
'web/static/src/scss/pre_variables.scss',
|
||||
'web/static/lib/bootstrap/scss/_variables.scss',
|
||||
'web/static/lib/bootstrap/scss/_variables-dark.scss',
|
||||
'web/static/lib/bootstrap/scss/_maps.scss',
|
||||
('include', 'web._assets_bootstrap_frontend'),
|
||||
('include', 'web._assets_bootstrap_backend'),
|
||||
'/web/static/lib/odoo_ui_icons/*',
|
||||
'/web/static/lib/bootstrap/scss/_functions.scss',
|
||||
'/web/static/lib/bootstrap/scss/_mixins.scss',
|
||||
'/web/static/lib/bootstrap/scss/utilities/_api.scss',
|
||||
'web/static/src/libs/fontawesome/css/font-awesome.css',
|
||||
('include', 'web._assets_core'),
|
||||
|
||||
# Public Kiosk app and its components
|
||||
"hr_attendance/static/src/public_kiosk/**/*",
|
||||
'hr_attendance/static/src/components/**/*',
|
||||
('remove', 'hr_attendance/static/src/components/attendance_menu/**/*'),
|
||||
|
||||
'hr_attendance/static/src/scss/kiosk/hr_attendance.scss',
|
||||
"web/static/src/views/fields/formatters.js",
|
||||
|
||||
# document link
|
||||
"web/static/src/session.js",
|
||||
"web/static/src/views/widgets/standard_widget_props.js",
|
||||
"web/static/src/views/widgets/documentation_link/*",
|
||||
|
||||
# Barcode reader utils
|
||||
"barcodes/static/src/components/barcode_scanner.js",
|
||||
"barcodes/static/src/components/barcode_scanner.xml",
|
||||
"barcodes/static/src/components/barcode_scanner.scss",
|
||||
"barcodes/static/src/barcode_service.js",
|
||||
|
||||
]
|
||||
},
|
||||
'author': 'Odoo S.A.',
|
||||
'license': 'LGPL-3',
|
||||
'post_init_hook': 'post_init_hook',
|
||||
'uninstall_hook': 'uninstall_hook',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,252 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import http
|
||||
from odoo.service.common import exp_version
|
||||
from odoo import http, _
|
||||
from odoo.http import request
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.fields import Domain
|
||||
from odoo.tools import float_round, py_to_js_locale, SQL
|
||||
from odoo.tools.image import image_data_uri
|
||||
|
||||
import datetime
|
||||
from requests.exceptions import RequestException
|
||||
|
||||
class HrAttendance(http.Controller):
|
||||
@http.route('/hr_attendance/kiosk_keepalive', auth='user', type='json')
|
||||
@staticmethod
|
||||
def _get_company(token):
|
||||
company = request.env['res.company'].sudo().search([('attendance_kiosk_key', '=', token)])
|
||||
return company
|
||||
|
||||
@staticmethod
|
||||
def _get_user_attendance_data(employee):
|
||||
response = {}
|
||||
if employee:
|
||||
response = {
|
||||
'id': employee.id,
|
||||
'hours_today': float_round(employee.hours_today, precision_digits=2),
|
||||
'hours_previously_today': float_round(employee.hours_previously_today, precision_digits=2),
|
||||
'last_attendance_worked_hours': float_round(employee.last_attendance_worked_hours, precision_digits=2),
|
||||
'last_check_in': employee.last_check_in,
|
||||
'attendance_state': employee.attendance_state,
|
||||
'display_systray': employee.company_id.attendance_from_systray,
|
||||
'device_tracking_enabled': employee.company_id.attendance_device_tracking,
|
||||
}
|
||||
return response
|
||||
|
||||
@staticmethod
|
||||
def _get_employee_info_response(employee):
|
||||
response = {}
|
||||
if employee:
|
||||
response = {
|
||||
**HrAttendance._get_user_attendance_data(employee),
|
||||
'employee_name': employee.name,
|
||||
'employee_avatar': employee.image_256 and image_data_uri(employee.image_256),
|
||||
'total_overtime': float_round(employee.total_overtime, precision_digits=2),
|
||||
'kiosk_delay': employee.company_id.attendance_kiosk_delay * 1000,
|
||||
'attendance': {'check_in': employee.last_attendance_id.check_in,
|
||||
'check_out': employee.last_attendance_id.check_out},
|
||||
'overtime_today': sum(request.env['hr.attendance.overtime.line'].sudo().search([
|
||||
('employee_id', '=', employee.id), ('date', '=', datetime.date.today())]).mapped('duration')) or 0,
|
||||
'use_pin': employee.company_id.attendance_kiosk_use_pin,
|
||||
'display_overtime': employee.company_id.hr_attendance_display_overtime,
|
||||
'device_tracking_enabled': employee.company_id.attendance_device_tracking,
|
||||
}
|
||||
return response
|
||||
|
||||
@staticmethod
|
||||
def _get_geoip_response(mode, latitude=False, longitude=False, device_tracking_enabled=True):
|
||||
response = {'mode': mode}
|
||||
|
||||
if not device_tracking_enabled:
|
||||
return response
|
||||
try:
|
||||
location = request.env['base.geocoder']._get_localisation(latitude, longitude)
|
||||
except (UserError, RequestException):
|
||||
location = _("Unknown")
|
||||
|
||||
response.update({
|
||||
'location': location,
|
||||
'latitude': latitude or request.geoip.location.latitude or False,
|
||||
'longitude': longitude or request.geoip.location.longitude or False,
|
||||
'ip_address': request.geoip.ip,
|
||||
'browser': request.httprequest.user_agent.browser,
|
||||
})
|
||||
|
||||
return response
|
||||
|
||||
@http.route('/hr_attendance/kiosk_mode_menu/<int:company_id>', auth='user', type='http')
|
||||
def kiosk_menu_item_action(self, company_id):
|
||||
if request.env.user.has_group("hr_attendance.group_hr_attendance_user"):
|
||||
# Auto log out will prevent users from forgetting to log out of their session
|
||||
# before leaving the kiosk mode open to the public. This is a prevention security
|
||||
# measure.
|
||||
if self.has_password():
|
||||
request.session.logout(keep_db=True)
|
||||
return request.redirect(request.env['res.company'].browse(company_id).attendance_kiosk_url)
|
||||
else:
|
||||
return request.not_found()
|
||||
|
||||
@http.route('/hr_attendance/get_employees_without_badge', type='jsonrpc', auth='public')
|
||||
def get_employees_without_badge(self, token, name=None, limit=20):
|
||||
"""Fetch only employees without a badge (barcode)."""
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
domain = Domain([('barcode', '=', False), ('company_id', '=', company.id)])
|
||||
if name:
|
||||
domain = Domain.AND([domain, [('name', 'ilike', name)]])
|
||||
employee_list = request.env['hr.employee'].search_read(
|
||||
domain,
|
||||
['id', 'name'],
|
||||
limit=limit,
|
||||
)
|
||||
return {'status': 'success', 'employees': employee_list}
|
||||
return {}
|
||||
|
||||
@http.route('/hr_attendance/set_badge', type='jsonrpc', auth='public')
|
||||
def set_badge(self, employee_id, badge, token):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
employee = request.env['hr.employee'].browse(employee_id)
|
||||
if employee:
|
||||
employee.write({'barcode': badge})
|
||||
return {'status': 'success'}
|
||||
return {}
|
||||
|
||||
@http.route('/hr_attendance/create_employee', type='jsonrpc', auth='public')
|
||||
def create_employee(self, name, token):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
request.env["hr.employee"].create({
|
||||
"name": name,
|
||||
"company_id": company.id,
|
||||
})
|
||||
return True
|
||||
return False
|
||||
|
||||
@http.route('/hr_attendance/kiosk_keepalive', auth='user', type='jsonrpc')
|
||||
def kiosk_keepalive(self):
|
||||
request.session.touch()
|
||||
return {}
|
||||
|
||||
@http.route(["/hr_attendance/<token>"], type='http', auth='public', website=True, sitemap=True)
|
||||
def open_kiosk_mode(self, token, from_trial_mode=False):
|
||||
company = self._get_company(token)
|
||||
if not company:
|
||||
return request.not_found()
|
||||
else:
|
||||
department_list = [
|
||||
{"id": dep["id"], "name": dep["name"], "count": dep["total_employee"]}
|
||||
for dep in request.env["hr.department"]
|
||||
.with_context(allowed_company_ids=[company.id])
|
||||
.sudo()
|
||||
.search_read(
|
||||
domain=[("company_id", "=", company.id)],
|
||||
fields=["id", "name", "total_employee"],
|
||||
)
|
||||
]
|
||||
has_password = self.has_password()
|
||||
if not from_trial_mode and has_password:
|
||||
request.session.logout(keep_db=True)
|
||||
if (from_trial_mode or (not has_password and not request.env.user.is_public)):
|
||||
kiosk_mode = "settings"
|
||||
else:
|
||||
kiosk_mode = company.attendance_kiosk_mode
|
||||
version_info = exp_version()
|
||||
return request.render(
|
||||
'hr_attendance.public_kiosk_mode',
|
||||
{
|
||||
'kiosk_backend_info': {
|
||||
'token': token,
|
||||
'company_id': company.id,
|
||||
'company_name': company.name,
|
||||
'departments': department_list,
|
||||
'kiosk_mode': kiosk_mode,
|
||||
'from_trial_mode': from_trial_mode,
|
||||
'barcode_source': company.attendance_barcode_source,
|
||||
'device_tracking_enabled': company.attendance_device_tracking,
|
||||
'lang': py_to_js_locale(company.partner_id.lang or company.env.lang),
|
||||
'server_version_info': version_info.get('server_version_info'),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
@http.route('/hr_attendance/attendance_employee_data', type="jsonrpc", auth="public")
|
||||
def employee_attendance_data(self, token, employee_id):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
employee = request.env['hr.employee'].sudo().browse(employee_id)
|
||||
if employee.company_id == company:
|
||||
return self._get_employee_info_response(employee)
|
||||
return {}
|
||||
|
||||
@http.route('/hr_attendance/attendance_barcode_scanned', type="jsonrpc", auth="public")
|
||||
def scan_barcode(self, token, barcode):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
employee = request.env['hr.employee'].sudo().search([('barcode', '=', barcode), ('company_id', '=', company.id)], limit=1)
|
||||
if employee:
|
||||
employee._attendance_action_change(self._get_geoip_response('kiosk', device_tracking_enabled=company.attendance_device_tracking))
|
||||
return self._get_employee_info_response(employee)
|
||||
return {}
|
||||
|
||||
@http.route('/hr_attendance/manual_selection', type="jsonrpc", auth="public")
|
||||
def manual_selection(self, token, employee_id, pin_code, latitude=False, longitude=False):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
employee = request.env['hr.employee'].sudo().browse(employee_id)
|
||||
if employee.company_id == company and ((not company.attendance_kiosk_use_pin) or (employee.pin == pin_code)):
|
||||
employee.sudo()._attendance_action_change(self._get_geoip_response('kiosk', latitude=latitude, longitude=longitude, device_tracking_enabled=company.attendance_device_tracking))
|
||||
return self._get_employee_info_response(employee)
|
||||
return {}
|
||||
|
||||
@http.route('/hr_attendance/employees_infos', type="jsonrpc", auth="public")
|
||||
def employees_infos(self, token, limit, offset, domain):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
domain = Domain(domain) & Domain('company_id', '=', company.id)
|
||||
employees = request.env['hr.employee'].sudo().search_fetch(domain, ['id', 'display_name', 'job_id'],
|
||||
limit=limit, offset=offset, order="name, id")
|
||||
employees_data = [{
|
||||
'id': employee.id,
|
||||
'display_name': employee.display_name,
|
||||
'job_id': employee.job_id.name,
|
||||
'avatar': image_data_uri(employee.avatar_128),
|
||||
'status': employee.attendance_state,
|
||||
'mode': employee.last_attendance_id.in_mode
|
||||
} for employee in employees]
|
||||
return {'records': employees_data, 'length': request.env['hr.employee'].sudo().search_count(domain)}
|
||||
return []
|
||||
|
||||
@http.route('/hr_attendance/systray_check_in_out', type="jsonrpc", auth="user")
|
||||
def systray_attendance(self, latitude=False, longitude=False):
|
||||
employee = request.env.user.employee_id
|
||||
geo_ip_response = self._get_geoip_response(mode='systray',
|
||||
latitude=latitude,
|
||||
longitude=longitude,
|
||||
device_tracking_enabled=employee.company_id.attendance_device_tracking)
|
||||
employee._attendance_action_change(geo_ip_response)
|
||||
return self._get_employee_info_response(employee)
|
||||
|
||||
@http.route('/hr_attendance/attendance_user_data', type="jsonrpc", auth="user", readonly=True)
|
||||
def user_attendance_data(self):
|
||||
employee = request.env.user.employee_id
|
||||
return self._get_user_attendance_data(employee)
|
||||
|
||||
def has_password(self):
|
||||
# With this method we try to know whether it's the user is on trial mode or not.
|
||||
# We assume that in trial, people have not configured their password yet and their password should be empty.
|
||||
request.env.cr.execute(
|
||||
SQL('''
|
||||
SELECT COUNT(password)
|
||||
FROM res_users
|
||||
WHERE id=%(user_id)s
|
||||
AND password IS NOT NULL
|
||||
LIMIT 1
|
||||
''', user_id=request.env.user.id))
|
||||
return bool(request.env.cr.fetchone()[0])
|
||||
|
||||
@http.route('/hr_attendance/set_settings', type="jsonrpc", auth="public")
|
||||
def set_attendance_settings(self, token, mode):
|
||||
company = self._get_company(token)
|
||||
if company:
|
||||
request.env.user.company_id.attendance_kiosk_mode = mode
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="hr_attendance_check_out_cron" model="ir.cron">
|
||||
<field name="name">Attendance: Automatically check-out employees</field>
|
||||
<field name="model_id" ref="model_hr_attendance"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_auto_check_out()</field>
|
||||
<field name="interval_number">4</field>
|
||||
<field name="interval_type">hours</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_attendance_absence_cron" model="ir.cron">
|
||||
<field name="name">Attendance: Detect Absences for employees</field>
|
||||
<field name="model_id" ref="model_hr_attendance"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_absence_detection()</field>
|
||||
<field name="interval_number">4</field>
|
||||
<field name="interval_type">hours</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -1,20 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="True">
|
||||
<data noupdate="1">
|
||||
<record id="base.user_demo" model="res.users">
|
||||
<field name="groups_id" eval="[(4, ref('hr_attendance.group_hr_attendance_user'))]"/>
|
||||
<field name="group_ids" eval="[(3, ref('hr_attendance.group_hr_attendance_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="base.default_user_group" model="res.groups">
|
||||
<field name="implied_ids" eval="[(4, ref('hr_attendance.group_hr_attendance_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_al" model="hr.employee">
|
||||
<field name="pin">0000</field>
|
||||
<field name="barcode">123</field>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_admin" model="hr.employee">
|
||||
<field name="pin">0000</field>
|
||||
<field name="barcode">456</field>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_hne" model="hr.employee">
|
||||
<field name="attendance_manager_id" ref="base.user_demo"/>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_mit" model="hr.employee">
|
||||
<field name="attendance_manager_id" ref="base.user_demo"/>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_chs" model="hr.employee">
|
||||
<field name="attendance_manager_id" ref="base.user_demo"/>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_fme" model="hr.employee">
|
||||
<field name="attendance_manager_id" ref="base.user_demo"/>
|
||||
</record>
|
||||
|
||||
<record id="attendance_root1" model="hr.attendance">
|
||||
<field eval="(datetime.now()+relativedelta(months=-1, days=-1)).strftime('%Y-%m-%d 08:00:24')" name="check_in"/>
|
||||
<field eval="(datetime.now()+relativedelta(months=-1, days=-1)).strftime('%Y-%m-%d 12:01:33')" name="check_out"/>
|
||||
|
|
@ -86,5 +104,45 @@
|
|||
<field eval="(datetime.now()+relativedelta(months=-1)).strftime('%Y-%m-10 17:00')" name="check_out"/>
|
||||
<field name="employee_id" ref="hr.employee_qdp"/>
|
||||
</record>
|
||||
|
||||
<record id="attendance11" model="hr.attendance">
|
||||
<field eval="(datetime.now()+timedelta(hours=-4)).strftime('%Y-%m-%d %H:%M:00')" name="check_in"/>
|
||||
<field eval="(datetime.now()+timedelta(minutes=-30)).strftime('%Y-%m-%d %H:%M:00')" name="check_out"/>
|
||||
<field name="employee_id" ref="hr.employee_hne"/>
|
||||
<field name="overtime_status">to_approve</field>
|
||||
</record>
|
||||
|
||||
<record id="attendance12" model="hr.attendance">
|
||||
<field eval="(datetime.now()+timedelta(hours=-31)).strftime('%Y-%m-%d %H:%M:00')" name="check_in"/>
|
||||
<field eval="(datetime.now()+timedelta(hours=-7)).strftime('%Y-%m-%d %H:%M:00')" name="check_out"/>
|
||||
<field name="employee_id" ref="hr.employee_mit"/>
|
||||
<field name="overtime_status">refused</field>
|
||||
</record>
|
||||
|
||||
<record id="attendance12_message1" model="mail.message">
|
||||
<field name="model">hr.attendance</field>
|
||||
<field name="res_id" ref="attendance12"/>
|
||||
<field name="body">She didn't check-out.
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
</record>
|
||||
|
||||
<record id="attendance13" model="hr.attendance">
|
||||
<field eval="(datetime.now()+timedelta(hours=-7)).strftime('%Y-%m-%d %H:%M:10')" name="check_in"/>
|
||||
<field eval="(datetime.now()+timedelta(hours=-2)).strftime('%Y-%m-%d %H:%M:00')" name="check_out"/>
|
||||
<field name="employee_id" ref="hr.employee_mit"/>
|
||||
<field name="overtime_status">approved</field>
|
||||
</record>
|
||||
|
||||
<record id="attendance14" model="hr.attendance">
|
||||
<field eval="(datetime.now()+timedelta(hours=-15)).strftime('%Y-%m-%d %H:%M:00')" name="check_in"/>
|
||||
<field eval="(datetime.now()+timedelta(hours=-3)).strftime('%Y-%m-%d %H:%M:00')" name="check_out"/>
|
||||
<field name="employee_id" ref="hr.employee_chs"/>
|
||||
</record>
|
||||
<record id="attendance14" model="hr.attendance">
|
||||
<field name="validated_overtime_hours">2</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="hr_attendance_overtime_employee_schedule_rule" model="hr.attendance.overtime.rule" forcecreate="0">
|
||||
<field name="name">Employee Schedule Rule</field>
|
||||
<field name="base_off">quantity</field>
|
||||
<field name="timing_type">schedule</field>
|
||||
<field name="expected_hours_from_contract" eval="True"/>
|
||||
<field name="paid" eval="True"/>
|
||||
<field name="ruleset_id" ref="hr_attendance_default_ruleset"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_attendance_overtime_non_working_days_rule" model="hr.attendance.overtime.rule" forcecreate="0">
|
||||
<field name="name">Non Working Days Rule</field>
|
||||
<field name="base_off">timing</field>
|
||||
<field name="timing_type">non_work_days</field>
|
||||
<field name="paid" eval="True"/>
|
||||
<field name="timing_start" eval="0.0"/>
|
||||
<field name="timing_stop" eval="24.0"/>
|
||||
<field name="ruleset_id" ref="hr_attendance_default_ruleset"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="hr_attendance_default_ruleset" model="hr.attendance.overtime.ruleset">
|
||||
<field name="name">Default Ruleset</field>
|
||||
<field name="country_id" eval="False"/>
|
||||
<field name="company_id" eval="False"/>
|
||||
<field name="rate_combination_mode">max</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Calendar -->
|
||||
<record id="resource_calendar_std_38h" model="resource.calendar" forcecreate="1">
|
||||
<field name="name">Standard 32 hours/week (4 work days, friday free)</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
<field name="hours_per_day">8</field>
|
||||
<field name="attendance_ids"
|
||||
eval="[(5, 0, 0),
|
||||
(0, 0, {'name': 'Monday Morning', 'dayofweek': '0', 'hour_from': 8, 'hour_to': 12, 'day_period': 'morning'}),
|
||||
(0, 0, {'name': 'Monday Lunch', 'dayofweek': '0', 'hour_from': 12, 'hour_to': 13, 'day_period': 'lunch'}),
|
||||
(0, 0, {'name': 'Monday Afternoon', 'dayofweek': '0', 'hour_from': 13, 'hour_to': 17, 'day_period': 'afternoon'}),
|
||||
(0, 0, {'name': 'Tuesday Morning', 'dayofweek': '1', 'hour_from': 8, 'hour_to': 12, 'day_period': 'morning'}),
|
||||
(0, 0, {'name': 'Tuesday Lunch', 'dayofweek': '1', 'hour_from': 12, 'hour_to': 13, 'day_period': 'lunch'}),
|
||||
(0, 0, {'name': 'Tuesday Afternoon', 'dayofweek': '1', 'hour_from': 13, 'hour_to': 17, 'day_period': 'afternoon'}),
|
||||
(0, 0, {'name': 'Wednesday Morning', 'dayofweek': '2', 'hour_from': 8, 'hour_to': 12, 'day_period': 'morning'}),
|
||||
(0, 0, {'name': 'Wednesday Lunch', 'dayofweek': '2', 'hour_from': 12, 'hour_to': 13, 'day_period': 'lunch'}),
|
||||
(0, 0, {'name': 'Wednesday Afternoon', 'dayofweek': '2', 'hour_from': 13, 'hour_to': 17, 'day_period': 'afternoon'}),
|
||||
(0, 0, {'name': 'Thursday Morning', 'dayofweek': '3', 'hour_from': 8, 'hour_to': 12, 'day_period': 'morning'}),
|
||||
(0, 0, {'name': 'Thursday Lunch', 'dayofweek': '3', 'hour_from': 12, 'hour_to': 13, 'day_period': 'lunch'}),
|
||||
(0, 0, {'name': 'Thursday Afternoon', 'dayofweek': '3', 'hour_from': 13, 'hour_to': 17, 'day_period': 'afternoon'}),
|
||||
]"
|
||||
/>
|
||||
</record>
|
||||
|
||||
<!-- Employee -->
|
||||
<record id="hr.employee_mw" model="hr.employee" forcecreate="1">
|
||||
<field name="barcode">123</field>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_eg" model="hr.employee" forcecreate="1">
|
||||
<field name="resource_calendar_id" ref="resource_calendar_std_38h"/>
|
||||
<field name="barcode">456</field>
|
||||
</record>
|
||||
|
||||
<record id="hr.employee_sj" model="hr.employee" forcecreate="1">
|
||||
<field name="pin">789</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -1,59 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux, 2022
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 15.5alpha1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Last-Translator: Martin Trigaux, 2022\n"
|
||||
"Language-Team: Afrikaans (https://app.transifex.com/odoo/teams/41243/af/)\n"
|
||||
"Language-Team: Afrikaans (https://www.transifex.com/odoo/teams/41243/af/)\n"
|
||||
"Language: af\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: af\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -61,14 +54,6 @@ msgstr ""
|
|||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -86,9 +71,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -107,8 +90,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -140,16 +128,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -159,15 +143,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -228,14 +210,6 @@ msgstr ""
|
|||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
msgid "Back Camera"
|
||||
|
|
@ -243,8 +217,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -267,36 +240,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -317,8 +278,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -340,25 +300,11 @@ msgstr ""
|
|||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Choose how long the greeting message will be displayed."
|
||||
|
|
@ -377,8 +323,7 @@ msgstr "Maatskappy"
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -410,9 +355,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -468,22 +411,18 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -519,13 +458,6 @@ msgstr ""
|
|||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__duration
|
||||
|
|
@ -545,13 +477,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -559,8 +484,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -571,58 +495,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
|
|
@ -636,29 +536,25 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -705,26 +601,16 @@ msgstr "ID"
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
|
|
@ -736,13 +622,6 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Laas Gewysig op"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
|
|
@ -794,20 +673,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -817,26 +688,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -849,8 +704,7 @@ msgstr "Verslagdoening"
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -869,26 +723,11 @@ msgstr ""
|
|||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
|
|
@ -897,45 +736,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -960,13 +788,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -980,43 +801,30 @@ msgstr "Gebruiker"
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1039,14 +847,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1054,22 +860,3 @@ msgstr ""
|
|||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -1,55 +1,48 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 15.5alpha1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Language-Team: Amharic (https://app.transifex.com/odoo/teams/41243/am/)\n"
|
||||
"Language: am\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: am\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -57,14 +50,6 @@ msgstr ""
|
|||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -82,9 +67,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -103,8 +86,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -136,16 +124,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -155,15 +139,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -224,14 +206,6 @@ msgstr ""
|
|||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
msgid "Back Camera"
|
||||
|
|
@ -239,8 +213,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -263,36 +236,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -313,8 +274,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -336,25 +296,11 @@ msgstr ""
|
|||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Choose how long the greeting message will be displayed."
|
||||
|
|
@ -373,8 +319,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -406,9 +351,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -464,22 +407,18 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -515,13 +454,6 @@ msgstr ""
|
|||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__duration
|
||||
|
|
@ -541,13 +473,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -555,8 +480,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -567,63 +491,39 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
msgstr "በመደብ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
|
|
@ -632,29 +532,25 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -701,26 +597,16 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
|
|
@ -732,13 +618,6 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
|
|
@ -790,20 +669,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -813,26 +684,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -845,8 +700,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -865,26 +719,11 @@ msgstr ""
|
|||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
|
|
@ -893,45 +732,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -956,13 +784,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -976,43 +797,30 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1035,14 +843,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1050,22 +856,3 @@ msgstr ""
|
|||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,404 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# 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: 2015-09-07 19:21+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_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid ""
|
||||
"(*) A positive delay means that the employee worked less than recorded.<br/"
|
||||
">\n"
|
||||
"(*) A negative delay means that the employee worked more than encoded."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "<strong>Total period</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,state:0
|
||||
msgid "Absent"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.attendance,action:0
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_action
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_action_reason
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_action_desc
|
||||
msgid "Action Reason"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_action_type
|
||||
msgid "Action Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_error_max_delay
|
||||
msgid ""
|
||||
"Allowed difference in minutes between the signin/signout and the timesheet "
|
||||
"computation for one sheet. Set this to 0 for no tolerance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_error
|
||||
msgid "Analysis Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_pivot
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_access
|
||||
msgid "Attendance Access"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_error
|
||||
#: model:ir.actions.report.xml,name:hr_attendance.action_report_hrattendanceerror
|
||||
msgid "Attendance Error Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "Attendance Errors:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.open_view_attendance_reason
|
||||
msgid "Attendance Reasons"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_reason
|
||||
msgid "Attendance reasons"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.open_view_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_open_view_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_error
|
||||
msgid ""
|
||||
"Below the maximum tolerance, the attendance error will not be taken into "
|
||||
"account. Above the maximum tolerance, the error is considered to be "
|
||||
"voluntary and will be taken into account."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_error
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/attendance.js:41
|
||||
#, python-format
|
||||
msgid "Click to Sign In at %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_config
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_create_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Created by"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_create_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Created on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_name
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "Date Recorded"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "Date Signed"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.edit_attendance_reason
|
||||
msgid "Define attendance reason"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "Delay"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_report_hr_attendance_report_attendanceerrors_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Display Name"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "Employee"
|
||||
msgstr "Employee"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_who
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_end_date
|
||||
msgid "Ending Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: constraint:hr.attendance:0
|
||||
msgid "Error ! Sign in (resp. Sign out) must follow Sign out (resp. Sign in)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_report_hr_attendance_report_attendanceerrors_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason___last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error___last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_report_hr_attendance_report_attendanceerrors___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Last Modified on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_sign
|
||||
msgid "Last Sign"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Last Updated by"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_write_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_write_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Last Updated on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/attendance.js:39
|
||||
#, python-format
|
||||
msgid "Last sign in: %s,<br />%s.<br />Click to sign out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_max_delay
|
||||
msgid "Maximum Tolerance (in minutes)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "Min Delay"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "Month"
|
||||
msgstr "Month"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "My Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/wizard/hr_attendance_error.py:34
|
||||
#, python-format
|
||||
msgid "No records are found for your selection!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.report_attendanceerrors
|
||||
msgid "Operation"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,state:0
|
||||
msgid "Present"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_error
|
||||
msgid "Print"
|
||||
msgstr "Print"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_error
|
||||
msgid "Print Attendance Report Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance_error
|
||||
msgid "Print Error Attendance Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_action_reason_name
|
||||
msgid "Reason"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reports"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/hr_attendance.py:156
|
||||
#: selection:hr.attendance,action:0
|
||||
#, python-format
|
||||
msgid "Sign In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/hr_attendance.py:156
|
||||
#: selection:hr.attendance,action:0
|
||||
#, python-format
|
||||
msgid "Sign Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.action.reason,action_type:0
|
||||
msgid "Sign in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.action.reason,action_type:0
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_action_desc
|
||||
msgid "Specifies the reason for Signing In/Signing Out in case of extra hours."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_action_reason_name
|
||||
msgid "Specifies the reason for Signing In/Signing Out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_error_init_date
|
||||
msgid "Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.open_view_attendance
|
||||
msgid ""
|
||||
"The Time Tracking functionality aims to manage employee attendances from "
|
||||
"Sign in/Sign out actions. You can also link this feature to an attendance "
|
||||
"device using Odoo's web service features."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_filter
|
||||
msgid "Today"
|
||||
msgstr "Today"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/hr_attendance.py:163
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You tried to %s with a date anterior to another event !\n"
|
||||
"Try to contact the HR Manager to correct attendances."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_report_hr_attendance_report_attendanceerrors
|
||||
msgid "report.hr_attendance.report_attendanceerrors"
|
||||
msgstr ""
|
||||
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: English (United Kingdom) (https://www.transifex.com/odoo/teams/41243/en_GB/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Created by"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Created on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Display Name"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Group By"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Last Modified on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Last Updated by"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Last Updated on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Reporting"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
2532
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/es_419.po
Normal file
2532
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/es_419.po
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Bolivia) (https://www.transifex.com/odoo/teams/41243/es_BO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_BO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización de"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Informe"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Colombia) (https://www.transifex.com/odoo/teams/41243/es_CO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_CO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre Público"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última Modificación el"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Actualizado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Actualizado"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Informes"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/odoo/teams/41243/es_CR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_CR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Informes"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Dominican Republic) (https://www.transifex.com/odoo/teams/41243/es_DO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_DO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre mostrado"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID (identificación)"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización de"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Informes"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Ecuador) (https://www.transifex.com/odoo/teams/41243/es_EC/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_EC\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por:"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre a Mostrar"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Fecha de modificación"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Ultima Actualización por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Actualizado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Informe"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Peru) (https://www.transifex.com/odoo/teams/41243/es_PE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_PE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre a Mostrar"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Ultima Modificación en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Actualizado última vez por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultima Actualización"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Paraguay) (https://www.transifex.com/odoo/teams/41243/es_PY/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_PY\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Ultima actualización por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultima actualización en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Informe"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
|
|
@ -1,700 +0,0 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Spanish (Venezuela) (https://www.transifex.com/odoo/teams/41243/es_VE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es_VE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:55
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:29
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:34
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "<span class=\"o_stat_text\">Attendance</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
|
||||
#, python-format
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
|
||||
#, python-format
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
#: model:ir.model,name:hr_attendance.model_hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_ids
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_attendance_state
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_graph
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_graph_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action_employee
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_kiosk_mode
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_root
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_attendances
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_barcode
|
||||
msgid "Badge ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:85
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:72
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:98
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:108
|
||||
#, python-format
|
||||
msgid "Cannot perform check in or check out on multiple employees."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:122
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_in
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_check_out
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
|
||||
#, python-format
|
||||
msgid "Check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
|
||||
#, python-format
|
||||
msgid "Check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Check-In/Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: selection:hr.employee,attendance_state:0
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
|
||||
#, python-format
|
||||
msgid "Click to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
|
||||
#, python-format
|
||||
msgid "Click to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:12
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
#, python-format
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid ""
|
||||
"Create a few employees to be able to select an employee here and perform his"
|
||||
" check in / check out."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Current Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Mostrar nombre"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:123
|
||||
#, python-format
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:115
|
||||
#, python-format
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_employee_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.print_employee_badge
|
||||
msgid "Employee Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings_group_attendance_use_pin
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_kanban_inherit_hr_attendance
|
||||
msgid "Employee's Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_view_employees_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
|
||||
#, python-format
|
||||
msgid "Error : Could not find employee linked to user."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
|
||||
#, python-format
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
|
||||
#, python-format
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
|
||||
#, python-format
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:78
|
||||
#, python-format
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
|
||||
#, python-format
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:64
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
|
||||
#, python-format
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Agrupar por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
|
||||
#, python-format
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:111
|
||||
#, python-format
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
|
||||
#, python-format
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
|
||||
#, python-format
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_barcode
|
||||
msgid "ID used for employee identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
|
||||
#, python-format
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
|
||||
#, python-format
|
||||
msgid "Invalid request, please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Modificada por última vez"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización realizada por"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultima actualizacion en"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
|
||||
msgid "Manage Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_manual_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "Manual Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "No attendance records to display."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:72
|
||||
#, python-format
|
||||
msgid "No employee corresponding to barcode %(barcode)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_pin
|
||||
msgid "PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:62
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid ""
|
||||
"Please make sure you're using the correct filter if you expected to see any."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:82
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
|
||||
msgid "Print Badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
|
||||
#, python-format
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
|
||||
#, python-format
|
||||
msgid "Select Employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: sql_constraint:hr.employee:0
|
||||
msgid ""
|
||||
"The Badge ID must be unique, this one is already assigned to another "
|
||||
"employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:63
|
||||
#, python-format
|
||||
msgid "The PIN must be a sequence of digits."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
|
||||
#, python-format
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_manual_attendance
|
||||
msgid ""
|
||||
"The employee will have access to the \"My Attendances\" menu to check in and"
|
||||
" out from his session"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes to check in in Kiosk Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:102
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Warning! Last check in was over 12 hours ago.<br/>If this isn't right, "
|
||||
"please contact Human Resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:25
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:46
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:112
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:11
|
||||
#, python-format
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:79
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:105
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_employee_attendance_ids
|
||||
msgid "list of attendances for the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
|
||||
#, python-format
|
||||
msgid "ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. openerp-web
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:14
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "res.config.settings"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,59 +1,55 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Qaidjohar Barbhaya, 2023
|
||||
#
|
||||
# Martin Trigaux, 2018
|
||||
# Ranjit Pillai <rpi@odoo.com>, 2018
|
||||
# Turkesh Patel <turkesh4friends@gmail.com>, 2018
|
||||
# Dharmraj Jhala <dja@openerp.com>, 2018
|
||||
# Spellbound Soft Solutions <jeel.spellbound@gmail.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server saas~11.5\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Last-Translator: Qaidjohar Barbhaya, 2023\n"
|
||||
"Language-Team: Gujarati (https://app.transifex.com/odoo/teams/41243/gu/)\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2018-09-21 13:17+0000\n"
|
||||
"Last-Translator: Spellbound Soft Solutions <jeel.spellbound@gmail.com>, 2018\n"
|
||||
"Language-Team: Gujarati (https://www.transifex.com/odoo/teams/41243/gu/)\n"
|
||||
"Language: gu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: gu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -61,14 +57,6 @@ msgstr ""
|
|||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -86,9 +74,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -107,8 +93,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -140,16 +131,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -159,15 +146,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -228,14 +213,6 @@ msgstr ""
|
|||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
msgid "Back Camera"
|
||||
|
|
@ -243,8 +220,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -267,36 +243,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -317,8 +281,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -340,25 +303,11 @@ msgstr ""
|
|||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Choose how long the greeting message will be displayed."
|
||||
|
|
@ -377,8 +326,7 @@ msgstr "Company"
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -395,7 +343,7 @@ msgstr "Config Settings"
|
|||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
msgstr "રુપરેખાંકન"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__hr_attendance_overtime
|
||||
|
|
@ -410,9 +358,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -424,7 +370,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Created by"
|
||||
msgstr "બનાવનાર"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_date
|
||||
|
|
@ -451,14 +397,14 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__department_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
msgstr "વિભાગ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Display Name"
|
||||
msgstr "પ્રદર્શન નામ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -468,22 +414,18 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -496,7 +438,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
msgstr "કર્મચારી"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin
|
||||
|
|
@ -512,20 +454,13 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
msgstr "કર્મચારીઓ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__duration
|
||||
|
|
@ -545,13 +480,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -559,8 +487,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -571,58 +498,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
|
|
@ -636,29 +539,25 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -701,30 +600,20 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
msgstr "ઓળખ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
|
|
@ -736,13 +625,6 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Last Modified on"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
|
|
@ -768,7 +650,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
msgstr "સંદેશ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
|
|
@ -794,20 +676,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -817,26 +691,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -845,12 +703,11 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "Reporting"
|
||||
msgstr "અહેવાલીકરણ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -867,28 +724,13 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr "Settings"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
msgstr "સુયોજનો"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
|
|
@ -897,45 +739,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -960,13 +791,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -980,43 +804,30 @@ msgstr "User"
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Warning"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1039,14 +850,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1054,22 +863,3 @@ msgstr ""
|
|||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,55 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo 9.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Language-Team: Armenian (https://app.transifex.com/odoo/teams/41243/hy/)\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2015-09-07 19:20+0000\n"
|
||||
"Last-Translator: Martin Trigaux\n"
|
||||
"Language-Team: Armenian (http://www.transifex.com/odoo/odoo-9/language/hy/)\n"
|
||||
"Language: hy\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -57,14 +52,6 @@ msgstr ""
|
|||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -82,9 +69,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -103,8 +88,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -136,16 +126,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -155,15 +141,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -224,14 +208,6 @@ msgstr ""
|
|||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
msgid "Back Camera"
|
||||
|
|
@ -239,8 +215,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -263,36 +238,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -313,8 +276,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -336,25 +298,11 @@ msgstr ""
|
|||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Choose how long the greeting message will be displayed."
|
||||
|
|
@ -373,8 +321,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -391,7 +338,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
msgstr "Կոնֆիգուրացիա"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__hr_attendance_overtime
|
||||
|
|
@ -406,9 +353,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -464,22 +409,18 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -492,7 +433,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
msgstr "Աշհատակից"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin
|
||||
|
|
@ -515,13 +456,6 @@ msgstr ""
|
|||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__duration
|
||||
|
|
@ -541,13 +475,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -555,8 +482,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -567,58 +493,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
|
|
@ -632,29 +534,25 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -701,26 +599,16 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
|
|
@ -732,13 +620,6 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
|
|
@ -790,20 +671,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -813,26 +686,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -845,8 +702,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -865,26 +721,11 @@ msgstr ""
|
|||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
|
|
@ -893,45 +734,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -956,13 +786,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -976,43 +799,30 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1035,14 +845,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1050,22 +858,3 @@ msgstr ""
|
|||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,75 +1,55 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# jonasyngvi, 2024
|
||||
# Kristófer Arnþórsson, 2024
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 15.5alpha1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Last-Translator: Kristófer Arnþórsson, 2024\n"
|
||||
"Language-Team: Icelandic (https://app.transifex.com/odoo/teams/41243/is/)\n"
|
||||
"Language-Team: Icelandic (https://www.transifex.com/odoo/teams/41243/is/)\n"
|
||||
"Language: is\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: is\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
msgstr "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
msgstr "%(empl_name)s from %(check_in)s"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_kanban
|
||||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -87,9 +67,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -108,8 +86,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -141,16 +124,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -160,17 +139,15 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
msgstr "An apple a day keeps the doctor away"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
msgstr "Another good day's work! See you soon!"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
|
|
@ -178,13 +155,13 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__attendance_ids
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_pivot
|
||||
msgid "Attendance"
|
||||
msgstr ""
|
||||
msgstr "Attendance"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_report_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_report_action_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr ""
|
||||
msgstr "Attendance Analysis"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__attendance_kiosk_delay
|
||||
|
|
@ -227,15 +204,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
msgstr "Attendances"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
|
|
@ -244,8 +213,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -268,36 +236,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgstr ""
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -309,17 +265,16 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Check In"
|
||||
msgstr ""
|
||||
msgstr "Innstimplun"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr ""
|
||||
msgstr "Innstimplun / útstimplun"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -329,7 +284,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_res_users__last_check_out
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Check Out"
|
||||
msgstr ""
|
||||
msgstr "Útsimplun"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -339,26 +294,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_in
|
||||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
msgstr "Checked in"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
msgstr "Checked out"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -368,20 +309,19 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Fyrirtæki"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__company_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__company_id
|
||||
msgid "Company"
|
||||
msgstr "Fyrirtæki"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
msgstr "Company Logo"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -391,12 +331,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Stillingarvalkostir"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
msgstr "Uppsetning"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__hr_attendance_overtime
|
||||
|
|
@ -411,9 +351,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -431,7 +369,7 @@ msgstr "Búið til af"
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Búið til þann"
|
||||
msgstr "Stofnað þann"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__date
|
||||
|
|
@ -452,14 +390,14 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__department_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__department_id
|
||||
msgid "Department"
|
||||
msgstr ""
|
||||
msgstr "Department"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Birtingarnafn"
|
||||
msgstr "Nafn"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -469,24 +407,20 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
msgstr "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
msgstr "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
|
|
@ -497,35 +431,28 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid "Employee"
|
||||
msgstr ""
|
||||
msgstr "Starfsmaður"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin
|
||||
msgid "Employee PIN"
|
||||
msgstr ""
|
||||
msgstr "Employee PIN"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr ""
|
||||
msgstr "Employee attendances"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "Employees"
|
||||
msgstr ""
|
||||
msgstr "Starfsfólk"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
msgstr "Enable PIN use"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
|
|
@ -546,13 +473,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -560,10 +480,9 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
msgstr "First come, first served"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__front
|
||||
|
|
@ -572,63 +491,39 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
msgstr "Glad to have you back, it's been a while!"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
msgstr "Good afternoon"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
msgstr "Good evening"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
msgstr "Good morning"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
msgstr "Good night"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "Hópað eftir"
|
||||
msgstr "Hópa eftir"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
|
|
@ -637,31 +532,27 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
msgstr "Have a good afternoon"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
msgstr "Have a good day!"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
msgstr "Have a good evening"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
msgstr "Have a nice lunch!"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
|
|
@ -695,41 +586,31 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr ""
|
||||
msgstr "Hr Attendance Search"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__id
|
||||
msgid "ID"
|
||||
msgstr "Auðkenni (ID)"
|
||||
msgstr "Auðkenni"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
msgstr "If a job is worth doing, it is worth doing well!"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr ""
|
||||
msgstr "Stimpilklukkuútlit"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__last_attendance_id
|
||||
|
|
@ -737,13 +618,6 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
|
|
@ -774,12 +648,12 @@ msgstr "Skilaboð"
|
|||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr ""
|
||||
msgstr "My Attendances"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr ""
|
||||
msgstr "No Check Out"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
|
|
@ -795,20 +669,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -818,26 +684,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -846,14 +696,13 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr ""
|
||||
msgstr "Skýrslur"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
msgstr "Scan your badge"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__scanner
|
||||
|
|
@ -868,75 +717,49 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
msgstr "Stillingar"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr ""
|
||||
msgstr "The attendance records of your employees will be displayed here."
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
msgstr "The early bird catches the worm"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgstr ""
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgstr ""
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -961,13 +784,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -977,47 +793,34 @@ msgstr ""
|
|||
#: model:ir.model,name:hr_attendance.model_res_users
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "User"
|
||||
msgstr "Notandi"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "Aðvörun"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
msgstr "Welcome to"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1029,7 +832,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr ""
|
||||
msgstr "Vinnustundir"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
|
|
@ -1040,37 +843,16 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
msgstr "Wrong PIN"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
msgstr "You cannot duplicate an attendance."
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,81 +1,59 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# Samkhann Seang <seangsamkhann@gmail.com>, 2023
|
||||
# Chan Nath <channath@gmail.com>, 2023
|
||||
# Sengtha Chay <sengtha@gmail.com>, 2023
|
||||
# Lux Sok <sok.lux@gmail.com>, 2023
|
||||
#
|
||||
# Sengtha Chay <sengtha@gmail.com>, 2018
|
||||
# Chan Nath <channath@gmail.com>, 2018
|
||||
# Samkhann Seang <seangsamkhann@gmail.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server saas~11.5\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Last-Translator: Lux Sok <sok.lux@gmail.com>, 2023\n"
|
||||
"Language-Team: Khmer (https://app.transifex.com/odoo/teams/41243/km/)\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2018-09-21 13:17+0000\n"
|
||||
"Last-Translator: Samkhann Seang <seangsamkhann@gmail.com>, 2018\n"
|
||||
"Language-Team: Khmer (https://www.transifex.com/odoo/teams/41243/km/)\n"
|
||||
"Language: km\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: km\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr "ពេលវេលា \"ពិនិត្យចេញ\" មិនអាចលឿនជាងពេលវេលា \"ពិនិត្យចូល\" ទេ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr "%(empl_name)s មកពី %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr "%(empl_name)sមកពី %(check_in)sទៅ %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
msgstr ""
|
||||
"<b>ការព្រមាន! ការត្រួតពិនិត្យចុងក្រោយគឺជាង 12 "
|
||||
"ម៉ោងមុន។</b><br/>ប្រសិនបើវាមិនត្រឹមត្រូវសូមទាក់ទងបុគ្គលិកធនធានមនុស្ស។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_hr_attendance_kanban
|
||||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
|
|
@ -94,9 +72,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -115,8 +91,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -135,13 +116,11 @@ msgid ""
|
|||
"Add a few employees to be able to select an employee here and perform his check in / check out.\n"
|
||||
" To create employees go to the Employees menu."
|
||||
msgstr ""
|
||||
"បន្ថែមនិយោជិកពីរបីនាក់ដើម្បីអាចជ្រើសរើសនិយោជិកម្នាក់នៅទីនេះហើយធ្វើការឆែក / ចូល។\n"
|
||||
" ដើម្បីបង្កើតនិយោជិកសូមចូលទៅកាន់ម៉ឺនុយនិយោជិក។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__adjustment
|
||||
msgid "Adjustment"
|
||||
msgstr "ការកែតម្រូវ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
|
||||
|
|
@ -150,16 +129,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -169,17 +144,15 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr "ផ្លែប៉ោមមួយផ្លែក្នុងមួយថ្ងៃធ្វើឱ្យគ្រូពេទ្យនៅឆ្ងាយ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr "ការងារថ្ងៃល្អមួយទៀត! ជួបគ្នាឆាប់ៗ!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
|
||||
|
|
@ -187,13 +160,13 @@ msgstr "ការងារថ្ងៃល្អមួយទៀត! ជួបគ
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__attendance_ids
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_pivot
|
||||
msgid "Attendance"
|
||||
msgstr "វត្តមាន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_report_action
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_report_action_filtered
|
||||
msgid "Attendance Analysis"
|
||||
msgstr "ការវិភាគការចូលរួម"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__attendance_kiosk_delay
|
||||
|
|
@ -223,7 +196,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_public__attendance_state
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_users__attendance_state
|
||||
msgid "Attendance Status"
|
||||
msgstr "ស្ថានភាពចូលរួម"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_action
|
||||
|
|
@ -236,15 +209,7 @@ msgstr "ស្ថានភាពចូលរួម"
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_department_view_kanban
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Attendances"
|
||||
msgstr "វត្តមាន"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr "មាន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
|
|
@ -253,10 +218,9 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr "Barcode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_kiosk_mode__barcode
|
||||
|
|
@ -277,42 +241,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
"មិនអាចអនុវត្តការឆែកមើលបានទេ %(empl_name)s, "
|
||||
"ការចូលរួមរបស់អ្នកប្រហែលត្រូវបានកែប្រែដោយធនធានមនុស្ស។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -324,17 +270,16 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Check In"
|
||||
msgstr "ការកក់ទុកមុន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
|
||||
msgid "Check In / Check Out"
|
||||
msgstr "ការកក់ទុកមុន/ការចាក់ចេញ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -344,7 +289,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_res_users__last_check_out
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Check Out"
|
||||
msgstr "ការចាកចេញ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -354,26 +299,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_in
|
||||
msgid "Checked in"
|
||||
msgstr "ចុះឈ្មោះ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr "ចូលនៅ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr "ពិនិត្យចេញ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr "បានពិនិត្យនៅ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -383,20 +314,19 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "ក្រុមហ៊ុន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__company_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__company_id
|
||||
msgid "Company"
|
||||
msgstr "ក្រុមហ៊ុន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr "រូបសញ្ញាក្រុមហ៊ុន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -406,7 +336,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "កំណត់រចនាសម្ព័ន្ធ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
|
|
@ -426,15 +356,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "Create a new employee"
|
||||
msgstr "បង្កើតបុគ្គលិកថ្មី"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_uid
|
||||
|
|
@ -451,7 +379,7 @@ msgstr "បង្កើតនៅ"
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__date
|
||||
msgid "Day"
|
||||
msgstr "ថ្ងៃ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -484,26 +412,20 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
"ឆាប់គេងនិងក្រោកពីព្រលឹមធ្វើឱ្យបុរសមានសុខភាពល្អទ្រព្យសម្បត្តិនិងប្រាជ្ញា"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
"បរិភោគអាហារពេលព្រឹកជាស្តេចអាហារថ្ងៃត្រង់ក្នុងនាមជាអ្នកជំនួញនិងជាអ្នកឧបត្ថម្ភជាអ្នកសុំទាន។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee
|
||||
|
|
@ -519,30 +441,23 @@ msgstr "បុគ្គលិក"
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin
|
||||
msgid "Employee PIN"
|
||||
msgstr "លេខសម្ងាត់របស់និយោជិក"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
msgid "Employee attendances"
|
||||
msgstr "ការចូលរួមរបស់និយោជិក"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_employee_attendance_action_kanban
|
||||
msgid "Employees"
|
||||
msgstr "និយោជិក"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid "Enable PIN use"
|
||||
msgstr "បើកការប្រើកូដ PIN "
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr "កំហុស៖ មិនអាចរកឃើញបុគ្គលិកដែលត្រូវគ្នាទេ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
|
|
@ -563,13 +478,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -577,10 +485,9 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr "មកមុនបានមុនបម្រើ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__front
|
||||
|
|
@ -589,57 +496,33 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr "រីករាយដែលមានអ្នកត្រឡប់មកវិញវាបានមួយរយៈហើយ!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr "ត្រឡប់ទៅវិញ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr "ពេលរសៀល"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr "ពេលល្ងាច"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr "ពេលព្រឹក"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr "រាត្រីសួស្តី"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr "លាសិនហើយ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
|
|
@ -654,37 +537,33 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr "មានពេលរសៀលល្អ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr "សូមឱ្យមានថ្ងៃល្អ!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr "សូមឱ្យមានល្ងាចល្អ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr "មានអាហារថ្ងៃត្រង់ឆ្ងាញ់"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
msgid "Hours"
|
||||
msgstr "ម៉ោង"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__hours_last_month
|
||||
|
|
@ -712,54 +591,37 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Hr Attendance Search"
|
||||
msgstr "រូបភាពនិយោជិក"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__id
|
||||
msgid "ID"
|
||||
msgstr "អត្តសញ្ញាណ"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr "បើការងារមួយសមនឹងធ្វើវាសមនឹងធ្វើបានល្អ!"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
msgstr "ម៉ូដគីកូស"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__last_attendance_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee_public__last_attendance_id
|
||||
msgid "Last Attendance"
|
||||
msgstr "ការចូលរួមចុងក្រោយ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "កាលបរិច្ឆេតកែប្រែចុងក្រោយ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
|
|
@ -781,51 +643,43 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_ir_ui_menu
|
||||
msgid "Menu"
|
||||
msgstr "មឺនុយ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
msgid "Message"
|
||||
msgstr "សារ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "My Attendances"
|
||||
msgstr "ការចូលរួមរបស់ខ្ញុំ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "No Check Out"
|
||||
msgstr "មិនចាំបាច់ពិនិត្យទេ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
msgid "No attendance records found"
|
||||
msgstr "រកមិនឃើញកំណត់ត្រាចូលរួម។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "No attendance records to display"
|
||||
msgstr "គ្មានកំណត់ត្រាការចូលរួមដើម្បីបង្ហាញ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr "យល់ព្រម"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -835,26 +689,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr "សូមបញ្ចូលលេខសម្ងាត់របស់អ្នកទៅ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr "សូមបញ្ចូលលេខសម្ងាត់របស់អ្នកទៅ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -863,14 +701,13 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
|
||||
msgid "Reporting"
|
||||
msgstr "របាយការណ៌"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr "ស្កេនផ្លាកសញ្ញារបស់អ្នក"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__scanner
|
||||
|
|
@ -881,83 +718,53 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
|
||||
msgstr ""
|
||||
"កំណត់កូដ PIN នៅក្នុងសំណុំបែបបទលម្អិតរបស់និយោជិក "
|
||||
"(នៅក្នុងផ្ទាំងការកំណត់ធនធានមនុស្ស) ។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr "ការកំណត់"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr "ការចាកចេញ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr "ការដាក់ជាក្រុមបែបនេះមិនត្រូវបានអនុញ្ញាតទេ។ "
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
msgid "The attendance records of your employees will be displayed here."
|
||||
msgstr "កំណត់ត្រាការចូលរួមរបស់និយោជិករបស់អ្នកនឹងត្រូវបានបង្ហាញនៅទីនេះ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr "បក្សីដំបូងចាប់ដង្កូវ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
"អ្នកប្រើប្រាស់នឹងទទួលបាននូវបញ្ជីវត្តមានធនធានមនុស្សដែលអាចឱ្យគាត់អាចគ្រប់គ្រងវត្តមានរបស់គាត់បាន។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
"អ្នកប្រើប្រាស់នឹងត្រូវបញ្ចូលលេខសម្ងាត់របស់ខ្លួនដើម្បីឆែកចូលនិងចេញដោយដៃនៅអេក្រង់ក្រុមហ៊ុន។"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -982,13 +789,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -998,49 +798,36 @@ msgstr ""
|
|||
#: model:ir.model,name:hr_attendance.model_res_users
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "User"
|
||||
msgstr "អ្នកប្រើប្រាស់"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr "ចង់ពិនិត្យមើលទេ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "ព្រមាន"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr "សូមស្វាគមន៍"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr "សូមសា្វគមន៍"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr "សូមស្វាគមន៍"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_attendance_tree
|
||||
|
|
@ -1050,7 +837,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__worked_hours
|
||||
msgid "Worked Hours"
|
||||
msgstr "ម៉ោងធ្វើការ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
|
|
@ -1061,37 +848,16 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr "ខុស PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr "អ្នកមិនអាចចម្លងការចូលរួមបានទេ។"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr "ការកក់មុន"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr "ការចាកចេញ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr "ទីពីរ"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
2345
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/ku.po
Normal file
2345
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/ku.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,62 +1,51 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
# sackda chanthasombath, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# ສີສຸວັນ ສັງບົວບຸລົມ <sisouvan@gmail.com>, 2023
|
||||
# Phoxaysy Sengchanthanouvong <phoxaysy@gmail.com>, 2023
|
||||
#
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Last-Translator: Phoxaysy Sengchanthanouvong <phoxaysy@gmail.com>, 2023\n"
|
||||
"Language-Team: Lao (https://app.transifex.com/odoo/teams/41243/lo/)\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"Language-Team: Lao (https://www.transifex.com/odoo/teams/41243/lo/)\n"
|
||||
"Language: lo\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: lo\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -64,14 +53,6 @@ msgstr ""
|
|||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -89,9 +70,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -110,8 +89,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -143,16 +127,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -162,15 +142,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -231,14 +209,6 @@ msgstr ""
|
|||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
msgid "Back Camera"
|
||||
|
|
@ -246,8 +216,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -270,36 +239,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -320,8 +277,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -343,25 +299,11 @@ msgstr ""
|
|||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Choose how long the greeting message will be displayed."
|
||||
|
|
@ -370,18 +312,17 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "ບໍລິສັດ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__company_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__company_id
|
||||
msgid "Company"
|
||||
msgstr "ບໍລິສັດ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -393,12 +334,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "ການຕັ້ງຄ່າ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr "ການຕັ້ງຄ່າລະບົບ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__hr_attendance_overtime
|
||||
|
|
@ -413,9 +354,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -427,18 +366,18 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "ສ້າງໂດຍ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__create_date
|
||||
msgid "Created on"
|
||||
msgstr "ສ້າງເມື່ອ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__date
|
||||
msgid "Day"
|
||||
msgstr "ວັນ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -454,14 +393,14 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__department_id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__department_id
|
||||
msgid "Department"
|
||||
msgstr "ຫ້ອງການ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "ຊື່ເຕັມ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -471,22 +410,18 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -499,7 +434,7 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid "Employee"
|
||||
msgstr "ພະນັກງານ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin
|
||||
|
|
@ -522,13 +457,6 @@ msgstr ""
|
|||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__duration
|
||||
|
|
@ -548,13 +476,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -562,8 +483,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -574,63 +494,39 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
msgid "Group By"
|
||||
msgstr "ຈັດຂໍ້ມູນຕາມ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
|
|
@ -639,29 +535,25 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -704,30 +596,20 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__id
|
||||
msgid "ID"
|
||||
msgstr "ເລກລຳດັບ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
|
|
@ -739,24 +621,17 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "ແກ້ໄຂລ້າສຸດເມື່ອ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "ປັບປຸງລ້າສຸດໂດຍ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "ປັບປຸງລ້າສຸດເມື່ອ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_kiosk_mode__manual
|
||||
|
|
@ -766,7 +641,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_ir_ui_menu
|
||||
msgid "Menu"
|
||||
msgstr "ລາຍການຄຳສັ່ງ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
|
||||
|
|
@ -797,20 +672,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -820,26 +687,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -852,8 +703,7 @@ msgstr "ບົດລາຍງານ"
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -870,14 +720,6 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
|
||||
msgid "Settings"
|
||||
msgstr "ການກໍານົດຄ່າ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -885,13 +727,6 @@ msgstr ""
|
|||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
|
|
@ -900,45 +735,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -963,13 +787,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -979,47 +796,34 @@ msgstr ""
|
|||
#: model:ir.model,name:hr_attendance.model_res_users
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance
|
||||
msgid "User"
|
||||
msgstr "ຜູ້ໃຊ້"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr "ການແຈ້ງເຕື່ອນ"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr "ຍິນດີຕ້ອນຮັບ"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1042,14 +846,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1057,22 +859,3 @@ msgstr ""
|
|||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
2346
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/my.po
Normal file
2346
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/my.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,55 +1,50 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_attendance
|
||||
#
|
||||
# * hr_attendance
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo 9.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-02-06 13:31+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 05:46+0000\n"
|
||||
"Language-Team: Tamil (https://app.transifex.com/odoo/teams/41243/ta/)\n"
|
||||
"POT-Creation-Date: 2023-05-16 13:48+0000\n"
|
||||
"PO-Revision-Date: 2016-02-11 10:14+0000\n"
|
||||
"Last-Translator: Martin Trigaux\n"
|
||||
"Language-Team: Tamil (http://www.transifex.com/odoo/odoo-9/language/ta/)\n"
|
||||
"Language: ta\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: ta\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "\"Check Out\" time cannot be earlier than \"Check In\" time."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "%(empl_name)s from %(check_in)s to %(check_out)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "%(hours)s hours, %(minutes)s minutes"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<b>Warning! Last check in was over 12 hours ago.</b><br/>If this isn't "
|
||||
"right, please contact Human Resource staff"
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid ": Your user should be linked to an employee to use attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -57,14 +52,6 @@ msgstr ""
|
|||
msgid "<i class=\"fa fa-calendar\" aria-label=\"Period\" role=\"img\" title=\"Period\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-"
|
||||
"specific.\" role=\"img\" aria-label=\"Values set here are company-"
|
||||
"specific.\" groups=\"base.group_multi_company\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_user_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.view_employee_form_inherit_hr_attendance
|
||||
|
|
@ -82,9 +69,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_employees_view_kanban
|
||||
msgid ""
|
||||
"<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success "
|
||||
"me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgid "<span id=\"oe_hr_attendance_status\" class=\"fa fa-circle text-success me-1\" role=\"img\" aria-label=\"Available\" title=\"Available\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -103,8 +88,13 @@ msgstr ""
|
|||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"<span> Minutes</span>\n"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
" <br/>\n"
|
||||
" <br/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "<span> seconds</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -136,16 +126,12 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"counted, in benefit of the company"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be counted, in benefit of the company"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Allow a period of time (around working hours) where extra time will not be "
|
||||
"deducted, in benefit of the employee"
|
||||
msgid "Allow a period of time (around working hours) where extra time will not be deducted, in benefit of the employee"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -155,15 +141,13 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "An apple a day keeps the doctor away"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Another good day's work! See you soon!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -224,14 +208,6 @@ msgstr ""
|
|||
msgid "Attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Available"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_barcode_source__back
|
||||
msgid "Back Camera"
|
||||
|
|
@ -239,8 +215,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -263,36 +238,24 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee hasn't "
|
||||
"checked out since %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create new attendance record for %(empl_name)s, the employee was "
|
||||
"already checked in on %(datetime)s"
|
||||
msgid "Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot perform check out on %(empl_name)s, could not find corresponding "
|
||||
"check in. Your attendances have probably been modified manually by human "
|
||||
"resources."
|
||||
msgid "Cannot perform check out on %(empl_name)s, could not find corresponding check in. Your attendances have probably been modified manually by human resources."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check IN"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -313,8 +276,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/components/check_in_out/check_in_out.xml:0
|
||||
msgid "Check OUT"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -336,25 +298,11 @@ msgstr ""
|
|||
msgid "Checked in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked in at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__hr_employee__attendance_state__checked_out
|
||||
msgid "Checked out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Checked out at"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Choose how long the greeting message will be displayed."
|
||||
|
|
@ -373,8 +321,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Company Logo"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -391,7 +338,7 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_settings
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
msgstr "கட்டமைப்பு"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_res_company__hr_attendance_overtime
|
||||
|
|
@ -406,9 +353,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid ""
|
||||
"Count of extra hours is considered from this date. Potential extra hours "
|
||||
"prior to this date are not considered."
|
||||
msgid "Count of extra hours is considered from this date. Potential extra hours prior to this date are not considered."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -420,13 +365,15 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
msgstr "உருவாக்கியவர்"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__create_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
"உருவாக்கப்பட்ட \n"
|
||||
"தேதி"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__date
|
||||
|
|
@ -454,7 +401,7 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__display_name
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
msgstr "காட்சி பெயர்"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
|
|
@ -464,22 +411,18 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgid "Do not have access, user cannot edit the attendances that are not his own."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Eat breakfast as a king, lunch as a merchant and supper as a beggar"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -515,13 +458,6 @@ msgstr ""
|
|||
msgid "Enable PIN use"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Error: could not find corresponding employee."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.actions.act_window,name:hr_attendance.hr_attendance_overtime_action
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__duration
|
||||
|
|
@ -541,13 +477,6 @@ msgstr ""
|
|||
msgid "Extra Hours Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Extra hours today:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,help:hr_attendance.field_hr_attendance_overtime__duration_real
|
||||
msgid "Extra-hours including the threshold duration"
|
||||
|
|
@ -555,8 +484,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "First come, first served"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -567,58 +495,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Glad to have you back, it's been a while!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Go back"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good morning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Good night"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Goodbye"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_report_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
|
||||
|
|
@ -632,29 +536,25 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good afternoon"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good day!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a good evening"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "Have a nice lunch!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -697,30 +597,20 @@ msgstr ""
|
|||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__id
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
msgstr "ID"
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Identify Manually"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "If a job is worth doing, it is worth doing well!"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid request"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_no_user_mode
|
||||
msgid "Kiosk Mode"
|
||||
|
|
@ -732,24 +622,17 @@ msgstr ""
|
|||
msgid "Last Attendance"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime____last_update
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_report____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
msgstr "கடைசியாக புதுப்பிக்கப்பட்டது"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__write_date
|
||||
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance_overtime__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
msgstr "கடைசியாக புதுப்பிக்கப்பட்டது"
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model.fields.selection,name:hr_attendance.selection__res_company__attendance_kiosk_mode__manual
|
||||
|
|
@ -790,20 +673,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "No employee corresponding to Badge ID '%(barcode)s.'"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_user
|
||||
msgid "Officer : Manage all attendances"
|
||||
msgid "Officer: Manage all attendances"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
|
|
@ -813,26 +688,10 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please enter your PIN to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Please return to the main menu."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:ir.model,name:hr_attendance.model_hr_employee_public
|
||||
msgid "Public Employee"
|
||||
|
|
@ -845,8 +704,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Scan your badge"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -865,26 +723,11 @@ msgstr ""
|
|||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Sign out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Start from"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Such grouping is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action
|
||||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
|
||||
|
|
@ -893,45 +736,34 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/js/greeting_message.js:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/greeting_message/greeting_message.js:0
|
||||
msgid "The early bird catches the worm"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid ""
|
||||
"The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgid "The user will be able to open the kiosk mode and validate the employee PIN."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance
|
||||
msgid ""
|
||||
"The user will gain access to the human resources attendance menu, enabling "
|
||||
"him to manage his own attendance."
|
||||
msgid "The user will gain access to the human resources attendance menu, enabling him to manage his own attendance."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,comment:hr_attendance.group_hr_attendance_use_pin
|
||||
msgid ""
|
||||
"The user will have to enter his PIN to check in and out manually at the "
|
||||
"company screen."
|
||||
msgid "The user will have to enter his PIN to check in and out manually at the company screen."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"To activate Kiosk mode without pin code, you must have access right as an "
|
||||
"Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgid "To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Today's work hours:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -956,13 +788,6 @@ msgstr ""
|
|||
msgid "Total Overtime"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Total extra hours:"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "Use PIN codes (defined on the Employee's profile) to check-in."
|
||||
|
|
@ -976,43 +801,30 @@ msgstr ""
|
|||
|
||||
#. module: hr_attendance
|
||||
#: model:res.groups,name:hr_attendance.group_hr_attendance_kiosk
|
||||
msgid "User : Only kiosk mode"
|
||||
msgid "User: Only kiosk mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Want to check out?"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "Welcome"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/kiosk_mode/kiosk_mode.xml:0
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
#: code:addons/hr_attendance/static/src/client_action/my_attendances/my_attendances.xml:0
|
||||
msgid "Welcome!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1035,14 +847,12 @@ msgstr ""
|
|||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_employee.py:0
|
||||
#, python-format
|
||||
msgid "Wrong PIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-python
|
||||
#: code:addons/hr_attendance/models/hr_attendance.py:0
|
||||
#, python-format
|
||||
msgid "You cannot duplicate an attendance."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1050,22 +860,3 @@ msgstr ""
|
|||
#: model_terms:ir.actions.act_window,help:hr_attendance.hr_attendance_action_overview
|
||||
msgid "Your attendance records will be displayed here."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check in"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#. odoo-javascript
|
||||
#: code:addons/hr_attendance/static/src/xml/attendance.xml:0
|
||||
#, python-format
|
||||
msgid "check out"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_attendance
|
||||
#: model_terms:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
|
||||
msgid "seconds"
|
||||
msgstr ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
2802
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/uz.po
Normal file
2802
odoo-bringout-oca-ocb-hr_attendance/hr_attendance/i18n/uz.po
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,10 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import res_config_settings
|
||||
from . import hr_attendance
|
||||
from . import hr_attendance_overtime
|
||||
from . import hr_attendance_overtime_rule
|
||||
from . import hr_attendance_overtime_ruleset
|
||||
from . import hr_employee
|
||||
from . import hr_employee_public
|
||||
from . import ir_ui_menu
|
||||
from . import hr_version
|
||||
from . import ir_http
|
||||
from . import res_company
|
||||
from . import res_users
|
||||
|
|
|
|||
|
|
@ -1,58 +1,199 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from collections import defaultdict
|
||||
from datetime import datetime, timedelta
|
||||
from operator import itemgetter
|
||||
|
||||
import pytz
|
||||
|
||||
from calendar import monthrange
|
||||
from collections import defaultdict
|
||||
from datetime import datetime, timedelta, time
|
||||
from dateutil.rrule import rrule, DAILY
|
||||
from dateutil.relativedelta import relativedelta, MO, SU
|
||||
from itertools import chain
|
||||
from operator import itemgetter
|
||||
from pytz import timezone, utc
|
||||
from random import randint
|
||||
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
from odoo.tools import format_datetime
|
||||
from odoo.osv.expression import AND, OR
|
||||
from odoo.tools.float_utils import float_is_zero
|
||||
from odoo.exceptions import AccessError
|
||||
from odoo.fields import Domain
|
||||
from odoo.http import request
|
||||
from odoo.tools import convert, format_duration, format_time, format_datetime
|
||||
from odoo.tools.date_utils import sum_intervals
|
||||
from odoo.tools.intervals import Intervals
|
||||
|
||||
def get_google_maps_url(latitude, longitude):
|
||||
return "https://maps.google.com?q=%s,%s" % (latitude, longitude)
|
||||
|
||||
|
||||
class HrAttendance(models.Model):
|
||||
_name = "hr.attendance"
|
||||
_name = 'hr.attendance'
|
||||
_description = "Attendance"
|
||||
_order = "check_in desc"
|
||||
_inherit = ["mail.thread"]
|
||||
|
||||
def _default_employee(self):
|
||||
return self.env.user.employee_id
|
||||
if self.env.user.has_group('hr_attendance.group_hr_attendance_user'):
|
||||
return self.env.user.employee_id
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string="Employee", default=_default_employee, required=True, ondelete='cascade', index=True)
|
||||
employee_id = fields.Many2one('hr.employee', string="Employee", default=_default_employee, required=True,
|
||||
ondelete='cascade', index=True, group_expand='_read_group_employee_id')
|
||||
department_id = fields.Many2one('hr.department', string="Department", related="employee_id.department_id",
|
||||
readonly=True)
|
||||
check_in = fields.Datetime(string="Check In", default=fields.Datetime.now, required=True)
|
||||
check_out = fields.Datetime(string="Check Out")
|
||||
manager_id = fields.Many2one(comodel_name='hr.employee', related="employee_id.parent_id", readonly=True,
|
||||
export_string_translation=False)
|
||||
attendance_manager_id = fields.Many2one('res.users', related="employee_id.attendance_manager_id",
|
||||
export_string_translation=False)
|
||||
is_manager = fields.Boolean(compute="_compute_is_manager")
|
||||
check_in = fields.Datetime(string="Check In", default=fields.Datetime.now, required=True, tracking=True, index=True)
|
||||
check_out = fields.Datetime(string="Check Out", tracking=True)
|
||||
date = fields.Date(string="Date", compute='_compute_date', store=True, index=True, precompute=True, required=True)
|
||||
worked_hours = fields.Float(string='Worked Hours', compute='_compute_worked_hours', store=True, readonly=True)
|
||||
color = fields.Integer(compute='_compute_color')
|
||||
overtime_hours = fields.Float(string="Over Time", compute='_compute_overtime_hours', store=True)
|
||||
overtime_status = fields.Selection(selection=[('to_approve', "To Approve"),
|
||||
('approved', "Approved"),
|
||||
('refused', "Refused")], compute="_compute_overtime_status", store=True, tracking=True, readonly=False)
|
||||
validated_overtime_hours = fields.Float(string="Extra Hours", compute='_compute_validated_overtime_hours', tracking=True, store=True, readonly=True)
|
||||
in_latitude = fields.Float(string="Latitude", digits=(10, 7), readonly=True, aggregator=None)
|
||||
in_longitude = fields.Float(string="Longitude", digits=(10, 7), readonly=True, aggregator=None)
|
||||
in_location = fields.Char(help="Based on GPS-Coordinates if available or on IP Address")
|
||||
in_ip_address = fields.Char(string="IP Address", readonly=True)
|
||||
in_browser = fields.Char(string="Browser", readonly=True)
|
||||
in_mode = fields.Selection(string="Mode",
|
||||
selection=[('kiosk', "Kiosk"),
|
||||
('systray', "Systray"),
|
||||
('manual', "Manual"),
|
||||
('technical', 'Technical')],
|
||||
readonly=True,
|
||||
default='manual')
|
||||
out_latitude = fields.Float(digits=(10, 7), readonly=True, aggregator=None)
|
||||
out_longitude = fields.Float(digits=(10, 7), readonly=True, aggregator=None)
|
||||
out_location = fields.Char(help="Based on GPS-Coordinates if available or on IP Address")
|
||||
out_ip_address = fields.Char(readonly=True)
|
||||
out_browser = fields.Char(readonly=True)
|
||||
out_mode = fields.Selection(selection=[('kiosk', "Kiosk"),
|
||||
('systray', "Systray"),
|
||||
('manual', "Manual"),
|
||||
('technical', 'Technical'),
|
||||
('auto_check_out', 'Automatic Check-Out')],
|
||||
readonly=True,
|
||||
default='manual')
|
||||
expected_hours = fields.Float(compute="_compute_expected_hours", store=True, aggregator="sum")
|
||||
device_tracking_enabled = fields.Boolean(related="employee_id.company_id.attendance_device_tracking")
|
||||
linked_overtime_ids = fields.Many2many('hr.attendance.overtime.line', compute='_compute_linked_overtime_ids', readonly=False)
|
||||
|
||||
def name_get(self):
|
||||
result = []
|
||||
@api.depends("check_in", "employee_id")
|
||||
def _compute_date(self):
|
||||
for attendance in self:
|
||||
if not attendance.employee_id or not attendance.check_in: # weird precompute edge cases. Never after creation
|
||||
attendance.date = datetime.today()
|
||||
continue
|
||||
tz = timezone(attendance.employee_id._get_tz())
|
||||
attendance.date = utc.localize(attendance.check_in).astimezone(tz).date()
|
||||
|
||||
@api.depends("worked_hours", "overtime_hours")
|
||||
def _compute_expected_hours(self):
|
||||
for attendance in self:
|
||||
attendance.expected_hours = attendance.worked_hours - attendance.overtime_hours
|
||||
|
||||
def _compute_color(self):
|
||||
for attendance in self:
|
||||
if attendance.check_out:
|
||||
attendance.color = 1 if attendance.worked_hours > 16 or attendance.out_mode == 'technical' else 0
|
||||
else:
|
||||
attendance.color = 1 if attendance.check_in < (datetime.today() - timedelta(days=1)) else 10
|
||||
|
||||
@api.depends('check_in', 'check_out', 'employee_id')
|
||||
def _compute_overtime_status(self):
|
||||
for attendance in self:
|
||||
if not attendance.linked_overtime_ids:
|
||||
attendance.overtime_status = False
|
||||
elif all(attendance.linked_overtime_ids.mapped(lambda ot: ot.status == 'approved')):
|
||||
attendance.overtime_status = 'approved'
|
||||
elif all(attendance.linked_overtime_ids.mapped(lambda ot: ot.status == 'refused')):
|
||||
attendance.overtime_status = 'refused'
|
||||
else:
|
||||
attendance.overtime_status = 'to_approve'
|
||||
|
||||
@api.depends('check_in', 'check_out', 'employee_id')
|
||||
def _compute_overtime_hours(self):
|
||||
for attendance in self:
|
||||
attendance.overtime_hours = sum(attendance.linked_overtime_ids.mapped('manual_duration'))
|
||||
|
||||
@api.depends('check_in', 'check_out', 'employee_id')
|
||||
def _compute_validated_overtime_hours(self):
|
||||
for attendance in self:
|
||||
attendance.validated_overtime_hours = sum(attendance.linked_overtime_ids.filtered_domain([('status', '=', 'approved')]).mapped('manual_duration'))
|
||||
|
||||
@api.depends('check_in', 'check_out', 'employee_id')
|
||||
def _compute_linked_overtime_ids(self):
|
||||
overtimes_by_attendance = self._linked_overtimes().grouped(lambda ot: (ot.employee_id, ot.time_start))
|
||||
for attendance in self:
|
||||
attendance.linked_overtime_ids = overtimes_by_attendance.get((attendance.employee_id, attendance.check_in), False)
|
||||
|
||||
@api.depends('employee_id', 'check_in', 'check_out')
|
||||
def _compute_display_name(self):
|
||||
tz = request.httprequest.cookies.get('tz') if request else None
|
||||
for attendance in self:
|
||||
if not attendance.check_out:
|
||||
result.append((attendance.id, _("%(empl_name)s from %(check_in)s") % {
|
||||
'empl_name': attendance.employee_id.name,
|
||||
'check_in': format_datetime(self.env, attendance.check_in, dt_format=False),
|
||||
}))
|
||||
attendance.display_name = _(
|
||||
"From %s",
|
||||
format_time(self.env, attendance.check_in, time_format=None, tz=tz, lang_code=self.env.lang),
|
||||
)
|
||||
else:
|
||||
result.append((attendance.id, _("%(empl_name)s from %(check_in)s to %(check_out)s") % {
|
||||
'empl_name': attendance.employee_id.name,
|
||||
'check_in': format_datetime(self.env, attendance.check_in, dt_format=False),
|
||||
'check_out': format_datetime(self.env, attendance.check_out, dt_format=False),
|
||||
}))
|
||||
return result
|
||||
attendance.display_name = _(
|
||||
"%(worked_hours)s (%(check_in)s-%(check_out)s)",
|
||||
worked_hours=format_duration(attendance.worked_hours),
|
||||
check_in=format_time(self.env, attendance.check_in, time_format=None, tz=tz, lang_code=self.env.lang),
|
||||
check_out=format_time(self.env, attendance.check_out, time_format=None, tz=tz, lang_code=self.env.lang),
|
||||
)
|
||||
|
||||
@api.depends('employee_id')
|
||||
def _compute_is_manager(self):
|
||||
have_manager_right = self.env.user.has_group('hr_attendance.group_hr_attendance_user')
|
||||
have_officer_right = self.env.user.has_group('hr_attendance.group_hr_attendance_officer')
|
||||
for attendance in self:
|
||||
attendance.is_manager = have_manager_right or \
|
||||
(have_officer_right and attendance.attendance_manager_id.id == self.env.user.id)
|
||||
|
||||
def _get_employee_calendar(self):
|
||||
self.ensure_one()
|
||||
return self.employee_id.resource_calendar_id or self.employee_id.company_id.resource_calendar_id
|
||||
|
||||
@api.depends('check_in', 'check_out')
|
||||
def _compute_worked_hours(self):
|
||||
""" Computes the worked hours of the attendance record.
|
||||
The worked hours of resource with flexible calendar is computed as the difference
|
||||
between check_in and check_out, without taking into account the lunch_interval"""
|
||||
for attendance in self:
|
||||
if attendance.check_out and attendance.check_in:
|
||||
delta = attendance.check_out - attendance.check_in
|
||||
attendance.worked_hours = delta.total_seconds() / 3600.0
|
||||
if attendance.check_out and attendance.check_in and attendance.employee_id:
|
||||
attendance.worked_hours = attendance._get_worked_hours_in_range(attendance.check_in, attendance.check_out)
|
||||
else:
|
||||
attendance.worked_hours = False
|
||||
|
||||
def _get_worked_hours_in_range(self, start_dt, end_dt):
|
||||
"""Returns the amount of hours worked because of this attendance during the
|
||||
interval defined by [start_dt, end_dt]
|
||||
|
||||
:param start_dt: datetime starting the interval.
|
||||
:param end_dt: datetime ending the interval.
|
||||
:returns: float, hours worked
|
||||
"""
|
||||
self.ensure_one()
|
||||
calendar = self._get_employee_calendar()
|
||||
resource = self.employee_id.resource_id
|
||||
tz = timezone(resource.tz) if not calendar else timezone(calendar.tz)
|
||||
start_dt_tz = max(self.check_in, start_dt).astimezone(tz)
|
||||
end_dt_tz = min(self.check_out, end_dt).astimezone(tz)
|
||||
|
||||
if end_dt_tz < start_dt_tz:
|
||||
return 0.0
|
||||
|
||||
lunch_intervals = []
|
||||
if not resource._is_flexible():
|
||||
lunch_intervals = self.employee_id._employee_attendance_intervals(start_dt_tz, end_dt_tz, lunch=True)
|
||||
attendance_intervals = Intervals([(start_dt_tz, end_dt_tz, self)]) - lunch_intervals
|
||||
return sum_intervals(attendance_intervals)
|
||||
|
||||
@api.constrains('check_in', 'check_out')
|
||||
def _check_validity_check_in_check_out(self):
|
||||
""" verifies if check_in is earlier than check_out. """
|
||||
|
|
@ -76,10 +217,9 @@ class HrAttendance(models.Model):
|
|||
('id', '!=', attendance.id),
|
||||
], order='check_in desc', limit=1)
|
||||
if last_attendance_before_check_in and last_attendance_before_check_in.check_out and last_attendance_before_check_in.check_out > attendance.check_in:
|
||||
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s") % {
|
||||
'empl_name': attendance.employee_id.name,
|
||||
'datetime': format_datetime(self.env, attendance.check_in, dt_format=False),
|
||||
})
|
||||
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s",
|
||||
empl_name=attendance.employee_id.name,
|
||||
datetime=format_datetime(self.env, attendance.check_in, dt_format=False)))
|
||||
|
||||
if not attendance.check_out:
|
||||
# if our attendance is "open" (no check_out), we verify there is no other "open" attendance
|
||||
|
|
@ -89,10 +229,9 @@ class HrAttendance(models.Model):
|
|||
('id', '!=', attendance.id),
|
||||
], order='check_in desc', limit=1)
|
||||
if no_check_out_attendances:
|
||||
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s") % {
|
||||
'empl_name': attendance.employee_id.name,
|
||||
'datetime': format_datetime(self.env, no_check_out_attendances.check_in, dt_format=False),
|
||||
})
|
||||
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee hasn't checked out since %(datetime)s",
|
||||
empl_name=attendance.employee_id.name,
|
||||
datetime=format_datetime(self.env, no_check_out_attendances.check_in, dt_format=False)))
|
||||
else:
|
||||
# we verify that the latest attendance with check_in time before our check_out time
|
||||
# is the same as the one before our check_in time computed before, otherwise it overlaps
|
||||
|
|
@ -102,173 +241,77 @@ class HrAttendance(models.Model):
|
|||
('id', '!=', attendance.id),
|
||||
], order='check_in desc', limit=1)
|
||||
if last_attendance_before_check_out and last_attendance_before_check_in != last_attendance_before_check_out:
|
||||
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s") % {
|
||||
'empl_name': attendance.employee_id.name,
|
||||
'datetime': format_datetime(self.env, last_attendance_before_check_out.check_in, dt_format=False),
|
||||
})
|
||||
raise exceptions.ValidationError(_("Cannot create new attendance record for %(empl_name)s, the employee was already checked in on %(datetime)s",
|
||||
empl_name=attendance.employee_id.name,
|
||||
datetime=format_datetime(self.env, last_attendance_before_check_out.check_in, dt_format=False)))
|
||||
|
||||
@api.model
|
||||
def _get_day_start_and_day(self, employee, dt):
|
||||
#Returns a tuple containing the datetime in naive UTC of the employee's start of the day
|
||||
def _get_day_start_and_day(self, employee, dt): # TODO probably no longer need by the end
|
||||
# Returns a tuple containing the datetime in naive UTC of the employee's start of the day
|
||||
# and the date it was for that employee
|
||||
if not dt.tzinfo:
|
||||
date_employee_tz = pytz.utc.localize(dt).astimezone(pytz.timezone(employee._get_tz()))
|
||||
calendar_tz = employee._get_calendar_tz_batch(dt)[employee.id]
|
||||
date_employee_tz = pytz.utc.localize(dt).astimezone(pytz.timezone(calendar_tz))
|
||||
else:
|
||||
date_employee_tz = dt
|
||||
start_day_employee_tz = date_employee_tz.replace(hour=0, minute=0, second=0)
|
||||
return (start_day_employee_tz.astimezone(pytz.utc).replace(tzinfo=None), start_day_employee_tz.date())
|
||||
|
||||
def _get_attendances_dates(self):
|
||||
# Returns a dictionnary {employee_id: set((datetimes, dates))}
|
||||
attendances_emp = defaultdict(set)
|
||||
for attendance in self.filtered(lambda a: a.employee_id.company_id.hr_attendance_overtime and a.check_in):
|
||||
check_in_day_start = attendance._get_day_start_and_day(attendance.employee_id, attendance.check_in)
|
||||
if check_in_day_start[0] < datetime.combine(attendance.employee_id.company_id.overtime_start_date, datetime.min.time()):
|
||||
continue
|
||||
attendances_emp[attendance.employee_id].add(check_in_day_start)
|
||||
if attendance.check_out:
|
||||
check_out_day_start = attendance._get_day_start_and_day(attendance.employee_id, attendance.check_out)
|
||||
attendances_emp[attendance.employee_id].add(check_out_day_start)
|
||||
return attendances_emp
|
||||
def _get_week_date_range(self):
|
||||
assert self
|
||||
dates = self.mapped('date')
|
||||
date_start, date_end = min(dates), max(dates)
|
||||
date_start = date_start - relativedelta(days=date_start.weekday())
|
||||
date_end = date_end + relativedelta(days=6 - date_end.weekday())
|
||||
return date_start, date_end
|
||||
|
||||
def _get_overtime_leave_domain(self):
|
||||
return []
|
||||
def _get_overtimes_to_update_domain(self):
|
||||
if not self:
|
||||
return Domain.FALSE
|
||||
domain_list = [Domain.AND([
|
||||
Domain('employee_id', '=', employee.id),
|
||||
Domain('date', '<=', max(attendances.mapped('check_out')).date() + relativedelta(SU)),
|
||||
Domain('date', '>=', min(attendances.mapped('check_in')).date() + relativedelta(MO(-1))),
|
||||
]) for employee, attendances in self.filtered(lambda att: att.check_out).grouped('employee_id').items()]
|
||||
if not domain_list:
|
||||
return Domain.FALSE
|
||||
return Domain.OR(domain_list) if len(domain_list) > 1 else domain_list[0]
|
||||
|
||||
def _update_overtime(self, employee_attendance_dates=None):
|
||||
if employee_attendance_dates is None:
|
||||
employee_attendance_dates = self._get_attendances_dates()
|
||||
def _update_overtime(self, attendance_domain=None):
|
||||
if not attendance_domain:
|
||||
attendance_domain = self._get_overtimes_to_update_domain()
|
||||
self.env['hr.attendance.overtime.line'].search(attendance_domain).unlink()
|
||||
all_attendances = (self | self.env['hr.attendance'].search(attendance_domain)).filtered_domain([('check_out', '!=', False)])
|
||||
if not all_attendances:
|
||||
return
|
||||
|
||||
overtime_to_unlink = self.env['hr.attendance.overtime']
|
||||
start_check_in = min(all_attendances.mapped('check_in')).date() - relativedelta(days=1) # for timezone
|
||||
min_check_in = utc.localize(datetime.combine(start_check_in, datetime.min.time()))
|
||||
|
||||
start_check_out = max(all_attendances.mapped('check_out')).date() + relativedelta(days=1)
|
||||
max_check_out = utc.localize(datetime.combine(start_check_out, datetime.max.time())) # for timezone
|
||||
|
||||
version_periods_by_employee = all_attendances.employee_id.sudo()._get_version_periods(min_check_in, max_check_out)
|
||||
attendances_by_employee = all_attendances.grouped('employee_id')
|
||||
attendances_by_ruleset = defaultdict(lambda: self.env['hr.attendance'])
|
||||
for employee, emp_attendance in attendances_by_employee.items():
|
||||
for attendance in emp_attendance:
|
||||
version_sudo = employee.sudo()._get_version(attendance._get_localized_times()[0])
|
||||
ruleset_sudo = version_sudo.ruleset_id
|
||||
if ruleset_sudo:
|
||||
attendances_by_ruleset[ruleset_sudo] += attendance
|
||||
employees = all_attendances.employee_id
|
||||
schedules_intervals_by_employee = employees._get_schedules_by_employee_by_work_type(min_check_in, max_check_out, version_periods_by_employee)
|
||||
overtime_vals_list = []
|
||||
|
||||
for emp, attendance_dates in employee_attendance_dates.items():
|
||||
# get_attendances_dates returns the date translated from the local timezone without tzinfo,
|
||||
# and contains all the date which we need to check for overtime
|
||||
attendance_domain = []
|
||||
for attendance_date in attendance_dates:
|
||||
attendance_domain = OR([attendance_domain, [
|
||||
('check_in', '>=', attendance_date[0]), ('check_in', '<', attendance_date[0] + timedelta(hours=24)),
|
||||
]])
|
||||
attendance_domain = AND([[('employee_id', '=', emp.id)], attendance_domain])
|
||||
|
||||
# Attendances per LOCAL day
|
||||
attendances_per_day = defaultdict(lambda: self.env['hr.attendance'])
|
||||
all_attendances = self.env['hr.attendance'].search(attendance_domain)
|
||||
for attendance in all_attendances:
|
||||
check_in_day_start = attendance._get_day_start_and_day(attendance.employee_id, attendance.check_in)
|
||||
attendances_per_day[check_in_day_start[1]] += attendance
|
||||
|
||||
# As _attendance_intervals_batch and _leave_intervals_batch both take localized dates we need to localize those date
|
||||
start = pytz.utc.localize(min(attendance_dates, key=itemgetter(0))[0])
|
||||
stop = pytz.utc.localize(max(attendance_dates, key=itemgetter(0))[0] + timedelta(hours=24))
|
||||
|
||||
# Retrieve expected attendance intervals
|
||||
expected_attendances = emp._get_expected_attendances(start, stop, domain=AND([self._get_overtime_leave_domain(), [('company_id', 'in', [False, emp.company_id.id])]]))
|
||||
|
||||
# working_times = {date: [(start, stop)]}
|
||||
working_times = defaultdict(lambda: [])
|
||||
for expected_attendance in expected_attendances:
|
||||
# Exclude resource.calendar.attendance
|
||||
working_times[expected_attendance[0].date()].append(expected_attendance[:2])
|
||||
|
||||
overtimes = self.env['hr.attendance.overtime'].sudo().search([
|
||||
('employee_id', '=', emp.id),
|
||||
('date', 'in', [day_data[1] for day_data in attendance_dates]),
|
||||
('adjustment', '=', False),
|
||||
])
|
||||
|
||||
company_threshold = emp.company_id.overtime_company_threshold / 60.0
|
||||
employee_threshold = emp.company_id.overtime_employee_threshold / 60.0
|
||||
|
||||
for day_data in attendance_dates:
|
||||
attendance_date = day_data[1]
|
||||
attendances = attendances_per_day.get(attendance_date, self.browse())
|
||||
unfinished_shifts = attendances.filtered(lambda a: not a.check_out)
|
||||
overtime_duration = 0
|
||||
overtime_duration_real = 0
|
||||
# Overtime is not counted if any shift is not closed or if there are no attendances for that day,
|
||||
# this could happen when deleting attendances.
|
||||
if not unfinished_shifts and attendances:
|
||||
# The employee usually doesn't work on that day
|
||||
if not working_times[attendance_date]:
|
||||
# User does not have any resource_calendar_attendance for that day (week-end for example)
|
||||
overtime_duration = sum(attendances.mapped('worked_hours'))
|
||||
overtime_duration_real = overtime_duration
|
||||
# The employee usually work on that day
|
||||
else:
|
||||
# Compute start and end time for that day
|
||||
planned_start_dt, planned_end_dt = False, False
|
||||
planned_work_duration = 0
|
||||
for calendar_attendance in working_times[attendance_date]:
|
||||
planned_start_dt = min(planned_start_dt, calendar_attendance[0]) if planned_start_dt else calendar_attendance[0]
|
||||
planned_end_dt = max(planned_end_dt, calendar_attendance[1]) if planned_end_dt else calendar_attendance[1]
|
||||
planned_work_duration += (calendar_attendance[1] - calendar_attendance[0]).total_seconds() / 3600.0
|
||||
# Count time before, during and after 'working hours'
|
||||
pre_work_time, work_duration, post_work_time = 0, 0, 0
|
||||
|
||||
for attendance in attendances:
|
||||
# consider check_in as planned_start_dt if within threshold
|
||||
# if delta_in < 0: Checked in after supposed start of the day
|
||||
# if delta_in > 0: Checked in before supposed start of the day
|
||||
local_check_in = pytz.utc.localize(attendance.check_in)
|
||||
delta_in = (planned_start_dt - local_check_in).total_seconds() / 3600.0
|
||||
|
||||
# Started before or after planned date within the threshold interval
|
||||
if (delta_in > 0 and delta_in <= company_threshold) or\
|
||||
(delta_in < 0 and abs(delta_in) <= employee_threshold):
|
||||
local_check_in = planned_start_dt
|
||||
local_check_out = pytz.utc.localize(attendance.check_out)
|
||||
|
||||
# same for check_out as planned_end_dt
|
||||
delta_out = (local_check_out - planned_end_dt).total_seconds() / 3600.0
|
||||
# if delta_out < 0: Checked out before supposed start of the day
|
||||
# if delta_out > 0: Checked out after supposed start of the day
|
||||
|
||||
# Finised before or after planned date within the threshold interval
|
||||
if (delta_out > 0 and delta_out <= company_threshold) or\
|
||||
(delta_out < 0 and abs(delta_out) <= employee_threshold):
|
||||
local_check_out = planned_end_dt
|
||||
|
||||
# There is an overtime at the start of the day
|
||||
if local_check_in < planned_start_dt:
|
||||
pre_work_time += (min(planned_start_dt, local_check_out) - local_check_in).total_seconds() / 3600.0
|
||||
# Interval inside the working hours -> Considered as working time
|
||||
if local_check_in <= planned_end_dt and local_check_out >= planned_start_dt:
|
||||
work_duration += (min(planned_end_dt, local_check_out) - max(planned_start_dt, local_check_in)).total_seconds() / 3600.0
|
||||
# There is an overtime at the end of the day
|
||||
if local_check_out > planned_end_dt:
|
||||
post_work_time += (local_check_out - max(planned_end_dt, local_check_in)).total_seconds() / 3600.0
|
||||
|
||||
# Overtime within the planned work hours + overtime before/after work hours is > company threshold
|
||||
overtime_duration = work_duration - planned_work_duration
|
||||
if pre_work_time > company_threshold:
|
||||
overtime_duration += pre_work_time
|
||||
if post_work_time > company_threshold:
|
||||
overtime_duration += post_work_time
|
||||
# Global overtime including the thresholds
|
||||
overtime_duration_real = sum(attendances.mapped('worked_hours')) - planned_work_duration
|
||||
|
||||
overtime = overtimes.filtered(lambda o: o.date == attendance_date)
|
||||
if not float_is_zero(overtime_duration, 2) or unfinished_shifts:
|
||||
# Do not create if any attendance doesn't have a check_out, update if exists
|
||||
if unfinished_shifts:
|
||||
overtime_duration = 0
|
||||
if not overtime and overtime_duration:
|
||||
overtime_vals_list.append({
|
||||
'employee_id': emp.id,
|
||||
'date': attendance_date,
|
||||
'duration': overtime_duration,
|
||||
'duration_real': overtime_duration_real,
|
||||
})
|
||||
elif overtime:
|
||||
overtime.sudo().write({
|
||||
'duration': overtime_duration,
|
||||
'duration_real': overtime_duration
|
||||
})
|
||||
elif overtime:
|
||||
overtime_to_unlink |= overtime
|
||||
self.env['hr.attendance.overtime'].sudo().create(overtime_vals_list)
|
||||
overtime_to_unlink.sudo().unlink()
|
||||
for ruleset_sudo, ruleset_attendances in attendances_by_ruleset.items():
|
||||
attendances_dates = list(chain(*ruleset_attendances._get_dates().values()))
|
||||
overtime_vals_list.extend(
|
||||
ruleset_sudo.rule_ids._generate_overtime_vals_v2(min(attendances_dates), max(attendances_dates), ruleset_attendances, schedules_intervals_by_employee)
|
||||
)
|
||||
self.env['hr.attendance.overtime.line'].create(overtime_vals_list)
|
||||
self.env.add_to_compute(self._fields['overtime_hours'], all_attendances)
|
||||
self.env.add_to_compute(self._fields['validated_overtime_hours'], all_attendances)
|
||||
self.env.add_to_compute(self._fields['overtime_status'], all_attendances)
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
|
|
@ -279,23 +322,360 @@ class HrAttendance(models.Model):
|
|||
def write(self, vals):
|
||||
if vals.get('employee_id') and \
|
||||
vals['employee_id'] not in self.env.user.employee_ids.ids and \
|
||||
not self.env.user.has_group('hr_attendance.group_hr_attendance_user'):
|
||||
raise AccessError(_("Do not have access, user cannot edit the attendances that are not his own."))
|
||||
attendances_dates = self._get_attendances_dates()
|
||||
result = super(HrAttendance, self).write(vals)
|
||||
not self.env.user.has_group('hr_attendance.group_hr_attendance_manager') and \
|
||||
self.env['hr.employee'].sudo().browse(vals['employee_id']).attendance_manager_id.id != self.env.user.id:
|
||||
raise AccessError(_("Do not have access, user cannot edit the attendances that are not their own or if they are not the attendance manager of the employee."))
|
||||
domain_pre = self._get_overtimes_to_update_domain()
|
||||
result = super().write(vals)
|
||||
if any(field in vals for field in ['employee_id', 'check_in', 'check_out']):
|
||||
# Merge attendance dates before and after write to recompute the
|
||||
# overtime if the attendances have been moved to another day
|
||||
for emp, dates in self._get_attendances_dates().items():
|
||||
attendances_dates[emp] |= dates
|
||||
self._update_overtime(attendances_dates)
|
||||
domain_post = self._get_overtimes_to_update_domain()
|
||||
self._update_overtime(Domain.OR([domain_pre, domain_post]))
|
||||
return result
|
||||
|
||||
def unlink(self):
|
||||
attendances_dates = self._get_attendances_dates()
|
||||
super(HrAttendance, self).unlink()
|
||||
self._update_overtime(attendances_dates)
|
||||
domain = self._get_overtimes_to_update_domain()
|
||||
res = super().unlink()
|
||||
self.exists()._update_overtime(domain)
|
||||
return res
|
||||
|
||||
@api.returns('self', lambda value: value.id)
|
||||
def copy(self):
|
||||
def copy(self, default=None):
|
||||
raise exceptions.UserError(_('You cannot duplicate an attendance.'))
|
||||
|
||||
def action_in_attendance_maps(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
'url': get_google_maps_url(self.in_latitude, self.in_longitude),
|
||||
'target': 'new'
|
||||
}
|
||||
|
||||
def action_out_attendance_maps(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
'url': get_google_maps_url(self.out_latitude, self.out_longitude),
|
||||
'target': 'new'
|
||||
}
|
||||
|
||||
def get_kiosk_url(self):
|
||||
return self.get_base_url() + "/hr_attendance/" + self.env.company.attendance_kiosk_key
|
||||
|
||||
@api.model
|
||||
def has_demo_data(self):
|
||||
if not self.env.user.has_group("hr_attendance.group_hr_attendance_user"):
|
||||
return True
|
||||
# This record only exists if the scenario has been already launched
|
||||
demo_tag = self.env.ref('hr_attendance.resource_calendar_std_38h', raise_if_not_found=False)
|
||||
return bool(demo_tag) or bool(self.env['ir.module.module'].search_count([('demo', '=', True)]))
|
||||
|
||||
def _load_demo_data(self):
|
||||
if self.has_demo_data():
|
||||
return
|
||||
env_sudo = self.sudo().with_context({}).env
|
||||
env_sudo['hr.employee']._load_scenario()
|
||||
# Load employees, schedules, departments and partners
|
||||
convert.convert_file(env_sudo, 'hr_attendance', 'data/scenarios/hr_attendance_scenario.xml', None, mode='init')
|
||||
|
||||
employee_sj = self.env.ref('hr.employee_sj')
|
||||
employee_mw = self.env.ref('hr.employee_mw')
|
||||
employee_eg = self.env.ref('hr.employee_eg')
|
||||
|
||||
# Retrieve employee from xml file
|
||||
# Calculate attendances records for the previous month and the current until today
|
||||
now = datetime.now()
|
||||
previous_month_datetime = (now - relativedelta(months=1))
|
||||
date_range = now.day + monthrange(previous_month_datetime.year, previous_month_datetime.month)[1]
|
||||
city_coordinates = (50.27, 5.31)
|
||||
city_coordinates_exception = (51.01, 2.82)
|
||||
city_dict = {
|
||||
'latitude': city_coordinates_exception[0],
|
||||
'longitude': city_coordinates_exception[1],
|
||||
'city': 'Rellemstraat'
|
||||
}
|
||||
city_exception_dict = {
|
||||
'latitude': city_coordinates[0],
|
||||
'longitude': city_coordinates[1],
|
||||
'city': 'Waillet'
|
||||
}
|
||||
attendance_values = []
|
||||
for i in range(1, date_range):
|
||||
check_in_date = now.replace(hour=6, minute=0, second=randint(0, 59)) + timedelta(days=-i, minutes=randint(-2, 3))
|
||||
if check_in_date.weekday() not in range(0, 5):
|
||||
continue
|
||||
check_out_date = now.replace(hour=10, minute=0, second=randint(0, 59)) + timedelta(days=-i, minutes=randint(-2, -1))
|
||||
check_in_date_after_lunch = now.replace(hour=11, minute=0, second=randint(0, 59)) + timedelta(days=-i, minutes=randint(-2, -1))
|
||||
check_out_date_after_lunch = now.replace(hour=15, minute=0, second=randint(0, 59)) + timedelta(days=-i, minutes=randint(1, 3))
|
||||
|
||||
# employee_eg doesn't work on friday
|
||||
eg_data = []
|
||||
if check_in_date.weekday() != 4:
|
||||
# employee_eg will compensate her work's hours between weeks.
|
||||
if check_in_date.isocalendar().week % 2:
|
||||
employee_eg_hours = {
|
||||
'check_in_date': check_in_date + timedelta(hours=1),
|
||||
'check_out_date': check_out_date,
|
||||
'check_in_date_after_lunch': check_in_date_after_lunch,
|
||||
'check_out_date_after_lunch': check_out_date_after_lunch + timedelta(hours=-1),
|
||||
}
|
||||
else:
|
||||
employee_eg_hours = {
|
||||
'check_in_date': check_in_date,
|
||||
'check_out_date': check_out_date,
|
||||
'check_in_date_after_lunch': check_in_date_after_lunch,
|
||||
'check_out_date_after_lunch': check_out_date_after_lunch + timedelta(hours=1, minutes=30),
|
||||
}
|
||||
eg_data = [{
|
||||
'employee_id': employee_eg.id,
|
||||
'check_in': employee_eg_hours['check_in_date'],
|
||||
'check_out': employee_eg_hours['check_out_date'],
|
||||
'in_mode': "kiosk",
|
||||
'out_mode': "kiosk"
|
||||
}, {
|
||||
'employee_id': employee_eg.id,
|
||||
'check_in': employee_eg_hours['check_in_date_after_lunch'],
|
||||
'check_out': employee_eg_hours['check_out_date_after_lunch'],
|
||||
'in_mode': "kiosk",
|
||||
'out_mode': "kiosk",
|
||||
}]
|
||||
|
||||
# calculate GPS coordination for employee_mw (systray attendance)
|
||||
if randint(1, 10) == 1:
|
||||
city_data = city_exception_dict
|
||||
else:
|
||||
city_data = city_dict
|
||||
mw_data = [{
|
||||
'employee_id': employee_mw.id,
|
||||
'check_in': check_in_date,
|
||||
'check_out': check_out_date,
|
||||
'in_mode': "systray",
|
||||
'out_mode': "systray",
|
||||
'in_longitude': city_data['longitude'],
|
||||
'out_longitude': city_data['longitude'],
|
||||
'in_latitude': city_data['latitude'],
|
||||
'out_latitude': city_data['latitude'],
|
||||
'in_location': city_data['city'],
|
||||
'out_location': city_data['city'],
|
||||
'in_ip_address': "127.0.0.1",
|
||||
'out_ip_address': "127.0.0.1",
|
||||
'in_browser': 'chrome',
|
||||
'out_browser': 'chrome'
|
||||
}, {
|
||||
'employee_id': employee_mw.id,
|
||||
'check_in': check_in_date_after_lunch,
|
||||
'check_out': check_out_date_after_lunch,
|
||||
'in_mode': "systray",
|
||||
'out_mode': "systray",
|
||||
'in_longitude': city_data['longitude'],
|
||||
'out_longitude': city_data['longitude'],
|
||||
'in_latitude': city_data['latitude'],
|
||||
'out_latitude': city_data['latitude'],
|
||||
'in_location': city_data['city'],
|
||||
'out_location': city_data['city'],
|
||||
'in_ip_address': "127.0.0.1",
|
||||
'out_ip_address': "127.0.0.1",
|
||||
'in_browser': 'chrome',
|
||||
'out_browser': 'chrome'
|
||||
}]
|
||||
sj_data = [{
|
||||
'employee_id': employee_sj.id,
|
||||
'check_in': check_in_date + timedelta(minutes=randint(-10, -5)),
|
||||
'check_out': check_out_date,
|
||||
'in_mode': "manual",
|
||||
'out_mode': "manual"
|
||||
}, {
|
||||
'employee_id': employee_sj.id,
|
||||
'check_in': check_in_date_after_lunch,
|
||||
'check_out': check_out_date_after_lunch + timedelta(hours=1, minutes=randint(-20, 10)),
|
||||
'in_mode': "manual",
|
||||
'out_mode': "manual"
|
||||
}]
|
||||
attendance_values.extend(eg_data + mw_data + sj_data)
|
||||
self.env['hr.attendance'].create(attendance_values)
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'reload',
|
||||
}
|
||||
|
||||
def action_try_kiosk(self):
|
||||
if not self.env.user.has_group("hr_attendance.group_hr_attendance_user"):
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'display_notification',
|
||||
'params': {
|
||||
'message': _("You don't have the rights to execute that action."),
|
||||
'type': 'info',
|
||||
}
|
||||
}
|
||||
return {
|
||||
'type': 'ir.actions.act_url',
|
||||
'target': 'self',
|
||||
'url': self.env.company.attendance_kiosk_url + '?from_trial_mode=True'
|
||||
}
|
||||
|
||||
def _read_group_employee_id(self, resources, domain):
|
||||
user_domain = Domain(self.env.context.get('user_domain') or Domain.TRUE)
|
||||
employee_domain = Domain('company_id', 'in', self.env.context.get('allowed_company_ids', []))
|
||||
if not self.env.user.has_group('hr_attendance.group_hr_attendance_user'):
|
||||
employee_domain &= Domain('attendance_manager_id', '=', self.env.user.id)
|
||||
if user_domain.is_true():
|
||||
# Workaround to make it work only for list view.
|
||||
if 'gantt_start_date' in self.env.context:
|
||||
return self.env['hr.employee'].search(employee_domain)
|
||||
return resources & self.env['hr.employee'].search(employee_domain)
|
||||
else:
|
||||
employee_name_domain = Domain.OR(
|
||||
Domain('name', condition.operator, condition.value)
|
||||
for condition in user_domain.iter_conditions()
|
||||
if condition.field_expr == 'employee_id'
|
||||
)
|
||||
return resources | self.env['hr.employee'].search(employee_name_domain & employee_domain)
|
||||
|
||||
def _linked_overtimes(self):
|
||||
return self.env['hr.attendance.overtime.line'].search([
|
||||
('time_start', 'in', self.mapped('check_in')),
|
||||
('employee_id', 'in', self.employee_id.ids),
|
||||
])
|
||||
|
||||
def action_approve_overtime(self):
|
||||
self.linked_overtime_ids.action_approve()
|
||||
|
||||
def action_refuse_overtime(self):
|
||||
self.linked_overtime_ids.action_refuse()
|
||||
|
||||
def _cron_auto_check_out(self):
|
||||
def check_in_tz(attendance):
|
||||
"""Returns check-in time in calendar's timezone."""
|
||||
return attendance.check_in.astimezone(pytz.timezone(attendance.employee_id._get_tz()))
|
||||
|
||||
to_verify = self.env['hr.attendance'].search(
|
||||
[('check_out', '=', False),
|
||||
('employee_id.company_id.auto_check_out', '=', True),
|
||||
('employee_id.resource_calendar_id.flexible_hours', '=', False)]
|
||||
)
|
||||
|
||||
if not to_verify:
|
||||
return
|
||||
|
||||
to_verify_min_date = min(to_verify.mapped('check_in')).replace(hour=0, minute=0, second=0)
|
||||
previous_attendances = self.env['hr.attendance'].search([
|
||||
('employee_id', 'in', to_verify.mapped('employee_id').ids),
|
||||
('check_in', '>', to_verify_min_date),
|
||||
('check_out', '!=', False)
|
||||
])
|
||||
|
||||
mapped_previous_duration = defaultdict(lambda: defaultdict(float))
|
||||
for previous in previous_attendances:
|
||||
mapped_previous_duration[previous.employee_id][check_in_tz(previous).date()] += previous.worked_hours
|
||||
|
||||
all_companies = to_verify.employee_id.company_id
|
||||
|
||||
for company in all_companies:
|
||||
max_tol = company.auto_check_out_tolerance
|
||||
to_verify_company = to_verify.filtered(lambda a: a.employee_id.company_id.id == company.id)
|
||||
|
||||
for att in to_verify_company:
|
||||
|
||||
employee_timezone = pytz.timezone(att.employee_id._get_tz())
|
||||
check_in_datetime = check_in_tz(att)
|
||||
now_datetime = fields.Datetime.now().astimezone(employee_timezone)
|
||||
current_attendance_duration = (now_datetime - check_in_datetime).total_seconds() / 3600
|
||||
previous_attendances_duration = mapped_previous_duration[att.employee_id][check_in_datetime.date()]
|
||||
|
||||
expected_worked_hours = sum(
|
||||
att.employee_id.resource_calendar_id.attendance_ids.filtered(
|
||||
lambda a: a.dayofweek == str(check_in_datetime.weekday())
|
||||
and (not a.two_weeks_calendar or a.week_type == str(a.get_week_type(check_in_datetime.date())))
|
||||
).mapped("duration_hours")
|
||||
)
|
||||
|
||||
# Attendances where Last open attendance time + previously worked time on that day + tolerance greater than the attendances hours (including lunch) in his calendar
|
||||
if (current_attendance_duration + previous_attendances_duration - max_tol) > expected_worked_hours:
|
||||
att.check_out = att.check_in.replace(hour=23, minute=59, second=59)
|
||||
excess_hours = att.worked_hours - (expected_worked_hours + max_tol - previous_attendances_duration)
|
||||
att.write({
|
||||
"check_out": max(att.check_out - relativedelta(hours=excess_hours), att.check_in + relativedelta(seconds=1)),
|
||||
"out_mode": "auto_check_out"
|
||||
})
|
||||
att.message_post(
|
||||
body=_('This attendance was automatically checked out because the employee exceeded the allowed time for their scheduled work hours.')
|
||||
)
|
||||
|
||||
def _cron_absence_detection(self):
|
||||
"""
|
||||
Objective is to create technical attendances on absence days to have negative overtime created for that day
|
||||
"""
|
||||
yesterday = datetime.today().replace(hour=0, minute=0, second=0) - relativedelta(days=1)
|
||||
companies = self.env['res.company'].search([('absence_management', '=', True)])
|
||||
if not companies:
|
||||
return
|
||||
|
||||
checked_in_employees = self.env['hr.attendance.overtime.line'].search([('date', '=', yesterday)]).employee_id
|
||||
|
||||
technical_attendances_vals = []
|
||||
absent_employees = self.env['hr.employee'].search([
|
||||
('id', 'not in', checked_in_employees.ids),
|
||||
('company_id', 'in', companies.ids),
|
||||
('resource_calendar_id.flexible_hours', '=', False),
|
||||
('current_version_id.contract_date_start', '<=', fields.Date.today() - relativedelta(days=1))
|
||||
])
|
||||
|
||||
for emp in absent_employees:
|
||||
local_day_start = pytz.utc.localize(yesterday).astimezone(pytz.timezone(emp._get_tz()))
|
||||
technical_attendances_vals.append({
|
||||
'check_in': local_day_start.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'check_out': (local_day_start + relativedelta(seconds=1)).strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'in_mode': 'technical',
|
||||
'out_mode': 'technical',
|
||||
'employee_id': emp.id
|
||||
})
|
||||
|
||||
technical_attendances = self.env['hr.attendance'].create(technical_attendances_vals)
|
||||
to_unlink = technical_attendances.filtered(lambda a: a.overtime_hours == 0)
|
||||
|
||||
body = _('This attendance was automatically created to cover an unjustified absence on that day.')
|
||||
for technical_attendance in technical_attendances - to_unlink:
|
||||
technical_attendance.message_post(body=body)
|
||||
|
||||
to_unlink.unlink()
|
||||
|
||||
def _get_localized_times(self):
|
||||
self.ensure_one()
|
||||
tz = timezone(self.employee_id.sudo()._get_version(self.check_in.date()).tz)
|
||||
localized_start = utc.localize(self.check_in).astimezone(tz).replace(tzinfo=None)
|
||||
localized_end = utc.localize(self.check_out).astimezone(tz).replace(tzinfo=None)
|
||||
return localized_start, localized_end
|
||||
|
||||
def _get_dates(self):
|
||||
result = {}
|
||||
for attendance in self:
|
||||
localized_start, localized_end = attendance._get_localized_times()
|
||||
result[attendance] = list(rrule(DAILY, dtstart=localized_start, until=localized_end))
|
||||
return result
|
||||
|
||||
def _get_attendance_by_periods_by_employee(self):
|
||||
attendance_by_employee_by_day = defaultdict(lambda: defaultdict(lambda: Intervals([], keep_distinct=True)))
|
||||
attendance_by_employee_by_week = defaultdict(lambda: defaultdict(lambda: Intervals([], keep_distinct=True)))
|
||||
|
||||
for attendance in self.sorted('check_in'):
|
||||
employee = attendance.employee_id
|
||||
check_in, check_out = attendance._get_localized_times()
|
||||
for day in rrule(dtstart=check_in.date(), until=check_out.date(), freq=DAILY):
|
||||
week_date = day + relativedelta(days=6 - day.weekday())
|
||||
|
||||
start_datetime = datetime.combine(day, time.min)
|
||||
stop_datetime_for_day = datetime.combine(day, time.max)
|
||||
day_interval = Intervals([(start_datetime, stop_datetime_for_day, self.env['resource.calendar'])])
|
||||
|
||||
stop_datetime_for_week = datetime.combine(week_date, time.max)
|
||||
week_interval = Intervals([(start_datetime, stop_datetime_for_week, self.env['resource.calendar'])])
|
||||
|
||||
attendance_interval = Intervals([(check_in, check_out, attendance)])
|
||||
attendance_by_employee_by_day[employee][day] |= attendance_interval & day_interval
|
||||
attendance_by_employee_by_week[employee][week_date] |= attendance_interval & week_interval
|
||||
|
||||
return {
|
||||
'day': attendance_by_employee_by_day,
|
||||
'week': attendance_by_employee_by_week
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +1,108 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields
|
||||
from odoo import api, models, fields
|
||||
|
||||
|
||||
class HrAttendanceOvertime(models.Model):
|
||||
_name = "hr.attendance.overtime"
|
||||
_description = "Attendance Overtime"
|
||||
class HrAttendanceOvertimeLine(models.Model):
|
||||
_name = 'hr.attendance.overtime.line'
|
||||
_description = "Attendance Overtime Line"
|
||||
_rec_name = 'employee_id'
|
||||
_order = 'date desc'
|
||||
|
||||
def _default_employee(self):
|
||||
return self.env.user.employee_id
|
||||
_order = 'time_start'
|
||||
|
||||
employee_id = fields.Many2one(
|
||||
'hr.employee', string="Employee", default=_default_employee,
|
||||
'hr.employee', string="Employee",
|
||||
required=True, ondelete='cascade', index=True)
|
||||
company_id = fields.Many2one(related='employee_id.company_id')
|
||||
|
||||
date = fields.Date(string='Day')
|
||||
date = fields.Date(string='Day', index=True, required=True)
|
||||
status = fields.Selection([
|
||||
('to_approve', "To Approve"),
|
||||
('approved', "Approved"),
|
||||
('refused', "Refused")
|
||||
],
|
||||
compute='_compute_status',
|
||||
required=True, store=True, readonly=False, precompute=True,
|
||||
)
|
||||
duration = fields.Float(string='Extra Hours', default=0.0, required=True)
|
||||
duration_real = fields.Float(
|
||||
string='Extra Hours (Real)', default=0.0,
|
||||
help="Extra-hours including the threshold duration")
|
||||
adjustment = fields.Boolean(default=False)
|
||||
manual_duration = fields.Float( # TODO -> real_duration for easier upgrade
|
||||
string='Extra Hours (encoded)',
|
||||
compute='_compute_manual_duration',
|
||||
store=True, readonly=False,
|
||||
)
|
||||
|
||||
def init(self):
|
||||
# Allows only 1 overtime record per employee per day unless it's an adjustment
|
||||
self.env.cr.execute("""
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS hr_attendance_overtime_unique_employee_per_day
|
||||
ON %s (employee_id, date)
|
||||
WHERE adjustment is false""" % (self._table))
|
||||
time_start = fields.Datetime(string='Start') # time_start will be equal to attendance.check_in
|
||||
time_stop = fields.Datetime(string='Stop') # time_stop will be equal to attendance.check_out
|
||||
amount_rate = fields.Float("Overtime pay rate", required=True, default=1.0)
|
||||
|
||||
is_manager = fields.Boolean(compute="_compute_is_manager")
|
||||
|
||||
rule_ids = fields.Many2many("hr.attendance.overtime.rule", string="Applied Rules")
|
||||
|
||||
# in payroll: rate, work_entry_type
|
||||
# in time_off: convertible_to_time_off
|
||||
|
||||
# Check no overlapping overtimes for the same employee.
|
||||
# Technical explanation: Exclude constraints compares the given expression on rows 2 by 2 using the given operator; && on tsrange is the intersection.
|
||||
# cf: https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-EXCLUSION
|
||||
# for employee_id we compare [employee_id -> employee_id] ranges bc raw integer is not supported (?)
|
||||
# _overtime_no_overlap_same_employee = models.Constraint("""
|
||||
# EXCLUDE USING GIST (
|
||||
# tsrange(time_start, time_stop, '()') WITH &&,
|
||||
# int4range(employee_id, employee_id, '[]') WITH =
|
||||
# )
|
||||
# """,
|
||||
# "Employee cannot have overlapping overtimes",
|
||||
# )
|
||||
_overtime_start_before_end = models.Constraint(
|
||||
'CHECK (time_stop > time_start)',
|
||||
'Starting time should be before end time.',
|
||||
)
|
||||
|
||||
@api.depends('employee_id')
|
||||
def _compute_status(self):
|
||||
for overtime in self:
|
||||
if not overtime.status:
|
||||
overtime.status = 'to_approve' if overtime.employee_id.company_id.attendance_overtime_validation == 'by_manager' else 'approved'
|
||||
|
||||
@api.depends('duration')
|
||||
def _compute_manual_duration(self):
|
||||
for overtime in self:
|
||||
overtime.manual_duration = overtime.duration
|
||||
|
||||
@api.depends('employee_id')
|
||||
def _compute_is_manager(self):
|
||||
has_manager_right = self.env.user.has_group('hr_attendance.group_hr_attendance_manager')
|
||||
has_officer_right = self.env.user.has_group('hr_attendance.group_hr_attendance_officer')
|
||||
for overtime in self:
|
||||
overtime.is_manager = (
|
||||
has_manager_right or
|
||||
(
|
||||
has_officer_right
|
||||
and overtime.employee_id.attendance_manager_id == self.env.user
|
||||
)
|
||||
)
|
||||
|
||||
def action_approve(self):
|
||||
self.write({'status': 'approved'})
|
||||
|
||||
def action_refuse(self):
|
||||
self.write({'status': 'refused'})
|
||||
|
||||
def _linked_attendances(self):
|
||||
return self.env['hr.attendance'].search([
|
||||
('check_in', 'in', self.mapped('time_start')),
|
||||
('employee_id', 'in', self.employee_id.ids),
|
||||
])
|
||||
|
||||
def write(self, vals):
|
||||
if any(key in vals for key in ['status', 'manual_duration']):
|
||||
attendances = self._linked_attendances()
|
||||
self.env.add_to_compute(
|
||||
attendances._fields['overtime_status'],
|
||||
attendances
|
||||
)
|
||||
self.env.add_to_compute(
|
||||
attendances._fields['validated_overtime_hours'],
|
||||
attendances
|
||||
)
|
||||
return super().write(vals)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,756 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from collections import defaultdict
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from dateutil.rrule import rrule, DAILY
|
||||
from pytz import timezone, utc
|
||||
|
||||
from odoo import api, models, fields
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tools.date_utils import sum_intervals, float_to_time
|
||||
from odoo.tools.float_utils import float_compare
|
||||
from odoo.tools.intervals import _boundaries, Intervals, invert_intervals
|
||||
|
||||
|
||||
def _naive_utc(dt):
|
||||
return dt.astimezone(utc).replace(tzinfo=None)
|
||||
|
||||
|
||||
def _midnight(date):
|
||||
return datetime.combine(date, datetime.min.time())
|
||||
|
||||
|
||||
def _replace_interval_records(intervals, records):
|
||||
return Intervals((start, end, records) for (start, end, _) in intervals)
|
||||
|
||||
|
||||
def _record_overlap_intervals(intervals):
|
||||
boundaries = sorted(_boundaries(intervals, 'start', 'stop'))
|
||||
counts = {}
|
||||
interval_vals = []
|
||||
ids = set()
|
||||
start = None
|
||||
for (time, flag, records) in boundaries:
|
||||
for record in records:
|
||||
if (
|
||||
new_count := counts.get(record.id, 0) + {'start': 1, 'stop': -1}[flag]
|
||||
):
|
||||
counts[record.id] = new_count
|
||||
else:
|
||||
del counts[record.id]
|
||||
new_ids = set(counts.keys())
|
||||
if ids != new_ids:
|
||||
if ids and start is not None:
|
||||
interval_vals.append((start, time, records.browse(ids)))
|
||||
if new_ids:
|
||||
start = time
|
||||
ids = new_ids
|
||||
return Intervals(interval_vals, keep_distinct=True)
|
||||
|
||||
|
||||
def _time_delta_hours(td):
|
||||
return td.total_seconds() / 3600
|
||||
|
||||
|
||||
def _last_hours_as_intervals(starting_intervals, hours):
|
||||
last_hours_intervals = []
|
||||
for (start, stop, record) in reversed(starting_intervals):
|
||||
duration = _time_delta_hours(stop - start)
|
||||
if hours >= duration:
|
||||
last_hours_intervals.append((start, stop, record))
|
||||
hours -= duration
|
||||
elif hours > 0:
|
||||
last_hours_intervals.append((stop - relativedelta(hours=hours), stop, record))
|
||||
break
|
||||
else:
|
||||
break
|
||||
return Intervals(last_hours_intervals)
|
||||
|
||||
|
||||
class HrAttendanceOvertimeRule(models.Model):
|
||||
_name = 'hr.attendance.overtime.rule'
|
||||
_description = "Overtime Rule"
|
||||
|
||||
name = fields.Char(required=True)
|
||||
description = fields.Html()
|
||||
base_off = fields.Selection([
|
||||
('quantity', "Quantity"),
|
||||
('timing', "Timing"),
|
||||
],
|
||||
string="Based Off",
|
||||
required=True,
|
||||
default='quantity',
|
||||
help=(
|
||||
"Base for overtime calculation.\n"
|
||||
"Use 'Quantity' when overtime hours are those in excess of a certain amount per day/week.\n"
|
||||
"Use 'Timing' when overtime hours happen on specific days or at specific times"
|
||||
),
|
||||
)
|
||||
|
||||
timing_type = fields.Selection([
|
||||
('work_days', "On any working day"),
|
||||
('non_work_days', "On any non-working day"),
|
||||
('leave', "When employee is off"),
|
||||
('schedule', "Outside of a specific schedule"),
|
||||
# ('employee', "Outside the employee's working schedule"),
|
||||
# ('off_time', "When employee is off"), # TODO in ..._holidays
|
||||
# ('public_leave', "On a holiday"), ......
|
||||
], default='work_days')
|
||||
timing_start = fields.Float("From", default=0)
|
||||
timing_stop = fields.Float("To", default=24)
|
||||
expected_hours_from_contract = fields.Boolean(
|
||||
"Hours from employee schedule",
|
||||
default=True,
|
||||
help="The attendance can go into negative extra hours to represent the missing hours compared to what is expected if the Absence Management setting is enabled.",
|
||||
)
|
||||
|
||||
resource_calendar_id = fields.Many2one(
|
||||
'resource.calendar',
|
||||
string="Schedule",
|
||||
domain=[('flexible_hours', '=', False)],
|
||||
)
|
||||
|
||||
expected_hours = fields.Float(string="Usual work hours")
|
||||
quantity_period = fields.Selection([
|
||||
('day', 'Day'),
|
||||
('week', 'Week')
|
||||
],
|
||||
default='day',
|
||||
)
|
||||
sequence = fields.Integer(default=10)
|
||||
|
||||
ruleset_id = fields.Many2one('hr.attendance.overtime.ruleset', required=True, index=True)
|
||||
company_id = fields.Many2one(related='ruleset_id.company_id')
|
||||
|
||||
paid = fields.Boolean("Pay Extra Hours")
|
||||
amount_rate = fields.Float("Rate", default=1.0)
|
||||
|
||||
employee_tolerance = fields.Float()
|
||||
employer_tolerance = fields.Float()
|
||||
|
||||
information_display = fields.Char("Information", compute='_compute_information_display')
|
||||
|
||||
_timing_start_is_hour = models.Constraint(
|
||||
'CHECK(0 <= timing_start AND timing_start < 24)',
|
||||
"Timing Start is an hour of the day",
|
||||
)
|
||||
_timing_stop_is_hour = models.Constraint(
|
||||
'CHECK(0 <= timing_stop AND timing_stop <= 24)',
|
||||
"Timing Stop is an hour of the day",
|
||||
)
|
||||
|
||||
# Quantity rule well defined
|
||||
@api.constrains('base_off', 'expected_hours', 'quantity_period')
|
||||
def _check_expected_hours(self):
|
||||
for rule in self:
|
||||
if (
|
||||
rule.base_off == 'quantity'
|
||||
and not rule.expected_hours_from_contract
|
||||
and not rule.expected_hours
|
||||
):
|
||||
raise ValidationError(self.env._("Rule '%(name)s' is based off quantity, but the usual amount of work hours is not specified", name=rule.name))
|
||||
|
||||
if rule.base_off == 'quantity' and not rule.quantity_period:
|
||||
raise ValidationError(self.env._("Rule '%(name)s' is based off quantity, but the period is not specified", name=rule.name))
|
||||
|
||||
# Timing rule well defined
|
||||
@api.constrains('base_off', 'timing_type', 'resource_calendar_id')
|
||||
def _check_work_schedule(self):
|
||||
for rule in self:
|
||||
if (
|
||||
rule.base_off == 'timing'
|
||||
and rule.timing_type == 'schedule'
|
||||
and not rule.resource_calendar_id
|
||||
):
|
||||
raise ValidationError(self.env._("Rule '%(name)s' is based off timing, but the work schedule is not specified", name=rule.name))
|
||||
|
||||
def _get_local_time_start(self, date, tz):
|
||||
self.ensure_one()
|
||||
ret = _midnight(date) + relativedelta(hours=self.timing_start)
|
||||
return _naive_utc(tz.localize(ret))
|
||||
|
||||
def _get_local_time_stop(self, date, tz):
|
||||
self.ensure_one()
|
||||
if self.timing_stop == 24:
|
||||
ret = datetime.combine(date, datetime.max.time())
|
||||
return _naive_utc(tz.localize(ret))
|
||||
ret = _midnight(date) + relativedelta(hours=self.timing_stop)
|
||||
return _naive_utc(tz.localize(ret))
|
||||
|
||||
def _get1_timing_overtime_intervals(self, attendances, version_map):
|
||||
self.ensure_one()
|
||||
attendances.employee_id.ensure_one()
|
||||
assert self.base_off == 'timing'
|
||||
|
||||
employee = attendances.employee_id
|
||||
start_dt = min(attendances.mapped('check_in'))
|
||||
end_dt = max(attendances.mapped('check_out'))
|
||||
|
||||
if self.timing_type in ['work_days', 'non_work_days']:
|
||||
company = self.company_id or employee.company_id
|
||||
unusual_days = company.resource_calendar_id._get_unusual_days(start_dt, end_dt, company_id=company)
|
||||
|
||||
attendance_intervals = []
|
||||
for date, day_attendances in attendances.filtered(
|
||||
lambda att: unusual_days.get(att.date.strftime('%Y-%m-%d'), None) == (self.timing_type == 'non_work_days')
|
||||
).grouped('date').items():
|
||||
tz = timezone(version_map[employee][date]._get_tz())
|
||||
time_start = self._get_local_time_start(date, tz)
|
||||
time_stop = self._get_local_time_stop(date, tz)
|
||||
|
||||
attendance_intervals.extend([(
|
||||
max(time_start, attendance.check_in),
|
||||
min(time_stop, attendance.check_out),
|
||||
attendance,
|
||||
) for attendance in day_attendances
|
||||
if time_start <= attendance.check_out and attendance.check_in <= time_stop
|
||||
])
|
||||
|
||||
overtime_intervals = Intervals(attendance_intervals, keep_distinct=True)
|
||||
else:
|
||||
attendance_intervals = [
|
||||
(att.check_in, att.check_out, att)
|
||||
for att in attendances
|
||||
]
|
||||
resource = attendances.employee_id.resource_id
|
||||
# Just use last version for now
|
||||
last_version = version_map[employee][max(attendances.mapped('date'))]
|
||||
tz = timezone(last_version._get_tz())
|
||||
if self.timing_type == 'schedule':
|
||||
work_schedule = self.resource_calendar_id
|
||||
work_intervals = Intervals()
|
||||
for lunch in [False, True]:
|
||||
work_intervals |= Intervals(
|
||||
(_naive_utc(start), _naive_utc(end), records)
|
||||
for (start, end, records)
|
||||
in work_schedule._attendance_intervals_batch(
|
||||
utc.localize(start_dt),
|
||||
utc.localize(end_dt),
|
||||
resource,
|
||||
tz=tz,
|
||||
lunch=lunch,
|
||||
)[resource.id]
|
||||
)
|
||||
overtime_intervals = Intervals(attendance_intervals, keep_distinct=True) - work_intervals
|
||||
elif self.timing_type == 'leave':
|
||||
# TODO: completely untested
|
||||
leave_intervals = last_version.resource_calendar_id._leave_intervals_batch(
|
||||
utc.localize(start_dt),
|
||||
utc.localize(end_dt),
|
||||
resource,
|
||||
tz=tz,
|
||||
)[resource.id]
|
||||
overtime_intervals = Intervals(attendance_intervals, keep_distinct=True) & leave_intervals
|
||||
|
||||
if self.employer_tolerance:
|
||||
overtime_intervals = Intervals((
|
||||
ot for ot in overtime_intervals
|
||||
if _time_delta_hours(ot[1] - ot[0]) >= self.employer_tolerance
|
||||
),
|
||||
keep_distinct=True,
|
||||
)
|
||||
return overtime_intervals
|
||||
|
||||
@api.model
|
||||
def _get_periods(self):
|
||||
return [name for (name, _) in self._fields['quantity_period'].selection]
|
||||
|
||||
@api.model
|
||||
def _get_period_keys(self, date):
|
||||
return {
|
||||
'day': date,
|
||||
# use sunday as key for whole week;
|
||||
# also determines which version we use for the whole week
|
||||
'week': date + relativedelta(days=6 - date.weekday()),
|
||||
}
|
||||
|
||||
def _get_expected_hours_from_contract(self, date, version, period='day'):
|
||||
# todo : improve performance with batch on mapped versions
|
||||
date_start = date
|
||||
date_end = date
|
||||
if period == 'week':
|
||||
date_start = date_start - relativedelta(days=date_start.weekday()) # Set to Monday
|
||||
date_end = date_start + relativedelta(days=6) # Set to Sunday
|
||||
date_start = datetime.combine(date_start, datetime.min.time())
|
||||
date_end = datetime.combine(date_end, datetime.max.time())
|
||||
expected_work_time = version.employee_id._employee_attendance_intervals(
|
||||
utc.localize(date_start),
|
||||
utc.localize(date_end)
|
||||
)
|
||||
delta = sum((i[1] - i[0]).total_seconds() for i in expected_work_time)
|
||||
expected_hours = delta / 3600.0
|
||||
|
||||
return expected_hours
|
||||
|
||||
def _get_daterange_overtime_intervals_for_quantity_rule(self, start, stop, attendance_intervals, schedule): # TODO: TO REMOVE IN MASTER
|
||||
overtime_intervals, _ = self._get_daterange_overtime_undertime_intervals_for_quantity_rule(start, stop, attendance_intervals, schedule)
|
||||
return overtime_intervals
|
||||
|
||||
def _get_daterange_overtime_undertime_intervals_for_quantity_rule(self, start, stop, attendance_intervals, schedule):
|
||||
self.ensure_one()
|
||||
expected_duration = self.expected_hours
|
||||
attendances_interval_without_lunch = []
|
||||
intervals_attendance_by_attendance = defaultdict(Intervals)
|
||||
attendances = self.env['hr.attendance']
|
||||
for (a_start, a_stop, attendance) in attendance_intervals:
|
||||
attendances += attendance
|
||||
intervals_attendance_by_attendance[attendance] = (Intervals([(a_start, a_stop, self.env['resource.calendar'])]) - (schedule['lunch'] - schedule['leave'])) &\
|
||||
Intervals([(start, stop, self.env['resource.calendar'])])
|
||||
attendances_interval_without_lunch.extend(intervals_attendance_by_attendance[attendance]._items)
|
||||
|
||||
if self.expected_hours_from_contract:
|
||||
period_schedule = (schedule['work'] - schedule['leave']) & Intervals([(start, stop, self.env['resource.calendar'])])
|
||||
expected_duration = sum_intervals(period_schedule)
|
||||
|
||||
overtime_amount = sum_intervals(Intervals(attendances_interval_without_lunch)) - expected_duration
|
||||
employee = attendances.employee_id
|
||||
company = self.company_id or employee.company_id
|
||||
if company.absence_management and float_compare(overtime_amount, -self.employee_tolerance, 5) == -1:
|
||||
last_attendance = sorted(intervals_attendance_by_attendance.keys(), key=lambda att: att.check_out)[-1]
|
||||
return {}, {last_attendance: [(overtime_amount, self)]}
|
||||
|
||||
if float_compare(overtime_amount, self.employer_tolerance, 5) != 1:
|
||||
return {}, {}
|
||||
|
||||
overtime_intervals = defaultdict(list)
|
||||
remaining_duration = expected_duration
|
||||
remanining_overtime_amount = overtime_amount
|
||||
# Attendances are sorted by check_in asc
|
||||
for attendance in attendances.sorted('check_in'):
|
||||
for start, stop, _cal in intervals_attendance_by_attendance[attendance]:
|
||||
interval_duration = (stop - start).total_seconds() / 3600
|
||||
if remaining_duration >= interval_duration:
|
||||
remaining_duration -= interval_duration
|
||||
continue
|
||||
interval_overtime_duration = interval_duration
|
||||
if remaining_duration != 0:
|
||||
interval_overtime_duration = interval_duration - remaining_duration
|
||||
new_start = stop - timedelta(hours=interval_overtime_duration)
|
||||
remaining_duration = 0
|
||||
overtime_intervals[attendance].append((new_start, stop, self))
|
||||
remanining_overtime_amount = remanining_overtime_amount - interval_overtime_duration
|
||||
if remanining_overtime_amount <= 0:
|
||||
return overtime_intervals, {}
|
||||
return overtime_intervals, {}
|
||||
|
||||
def _get_all_overtime_intervals_for_quantity_rule(self, attendances_by_periods_by_employee, schedule_by_employee): # TODO: TO REMOVE IN MASTER
|
||||
overtime_by_employee_by_attendance, _ = self._get_all_overtime_undertime_intervals_for_quantity_rule(attendances_by_periods_by_employee, schedule_by_employee)
|
||||
return overtime_by_employee_by_attendance
|
||||
|
||||
def _get_all_overtime_undertime_intervals_for_quantity_rule(self, attendances_by_periods_by_employee, schedule_by_employee):
|
||||
def _merge_overtime_dict(d1, d2):
|
||||
for attendance, overtime_list in d2.items():
|
||||
d1[attendance].extend(overtime_list)
|
||||
|
||||
overtime_by_employee_by_attendance = defaultdict(lambda: defaultdict(list))
|
||||
undertime_by_employee_by_attendance = defaultdict(lambda: defaultdict(list))
|
||||
for employee, duration_and_amount_by_periods in attendances_by_periods_by_employee.items():
|
||||
schedule = schedule_by_employee['schedule'][employee]
|
||||
schedule['leave'] = schedule_by_employee['leave'][employee]
|
||||
fully_flex_schedule = schedule_by_employee['fully_flexible'][employee]
|
||||
for day, attendance_interval in duration_and_amount_by_periods.items():
|
||||
for rule in self:
|
||||
start = datetime.combine(day, datetime.min.time())
|
||||
if rule.quantity_period == 'week':
|
||||
start -= relativedelta(days=6)
|
||||
stop = datetime.combine(day, datetime.max.time())
|
||||
if not (Intervals([(start, stop, self.env['resource.calendar'])]) - fully_flex_schedule): # employee is fully flexible
|
||||
continue
|
||||
rule_overtime_list_by_attendance, rule_undertime_list_by_attendance = rule._get_daterange_overtime_undertime_intervals_for_quantity_rule(start, stop, attendance_interval, schedule)
|
||||
_merge_overtime_dict(overtime_by_employee_by_attendance[employee], rule_overtime_list_by_attendance)
|
||||
_merge_overtime_dict(undertime_by_employee_by_attendance[employee], rule_undertime_list_by_attendance)
|
||||
return overtime_by_employee_by_attendance, undertime_by_employee_by_attendance
|
||||
|
||||
def _get_rules_intervals_by_timing_type(self, min_check_in, max_check_out, employees, schedules_intervals_by_employee):
|
||||
|
||||
def _generate_days_intervals(intervals):
|
||||
days_intervals = []
|
||||
dates = set()
|
||||
for interval in intervals:
|
||||
start_datetime = interval[0]
|
||||
if start_datetime.time() == datetime.max.time():
|
||||
start_datetime += relativedelta(days=1)
|
||||
start_day = start_datetime.date()
|
||||
stop_datetime = interval[1]
|
||||
if stop_datetime.time() == datetime.min.time():
|
||||
stop_datetime -= relativedelta(days=1)
|
||||
stop_day = stop_datetime.date()
|
||||
if stop_day < start_day:
|
||||
continue
|
||||
start = datetime.combine(start_day, datetime.min.time())
|
||||
stop = datetime.combine(stop_day, datetime.max.time())
|
||||
for day in rrule(freq=DAILY, dtstart=start, until=stop):
|
||||
dates.add(day.date())
|
||||
for date in dates:
|
||||
days_intervals.append(
|
||||
(
|
||||
datetime.combine(date, datetime.min.time()),
|
||||
datetime.combine(date, datetime.max.time()),
|
||||
self.env['resource.calendar']
|
||||
)
|
||||
)
|
||||
return Intervals(days_intervals, keep_distinct=True)
|
||||
|
||||
def _invert_intervals(intervals, first_start, last_stop):
|
||||
# Redefintion of the method to return an interval
|
||||
items = []
|
||||
prev_stop = first_start
|
||||
if not intervals:
|
||||
return Intervals([(first_start, last_stop, self.env['resource.calendar'])])
|
||||
for start, stop, record in sorted(intervals):
|
||||
if prev_stop and prev_stop < start and (float_compare((last_stop - start).total_seconds(), 0, precision_digits=1) >= 0):
|
||||
items.append((prev_stop, start, record))
|
||||
prev_stop = max(prev_stop, stop)
|
||||
if last_stop and prev_stop < last_stop:
|
||||
items.append((prev_stop, last_stop, record))
|
||||
return Intervals(items, keep_distinct=True)
|
||||
|
||||
timing_rule_by_timing_type = self.grouped('timing_type')
|
||||
timing_type_set = set(timing_rule_by_timing_type.keys())
|
||||
|
||||
intervals_by_timing_type = {
|
||||
'leave': schedules_intervals_by_employee['leave'],
|
||||
'schedule': defaultdict(lambda: defaultdict(Intervals)),
|
||||
'work_days': defaultdict(),
|
||||
'non_work_days': defaultdict()
|
||||
}
|
||||
|
||||
for employee in employees:
|
||||
if {'work_days', 'non_work_days'} & timing_type_set:
|
||||
intervals_by_timing_type['work_days'][employee] = _generate_days_intervals(
|
||||
schedules_intervals_by_employee['schedule'][employee]['work'] - schedules_intervals_by_employee['leave'][employee]
|
||||
)
|
||||
if 'non_work_days' in timing_type_set:
|
||||
intervals_by_timing_type['non_work_days'][employee] = _generate_days_intervals(
|
||||
_invert_intervals(
|
||||
intervals_by_timing_type['work_days'][employee],
|
||||
datetime.combine(min_check_in, datetime.min.time()),
|
||||
datetime.combine(max_check_out, datetime.max.time())
|
||||
)
|
||||
)
|
||||
if 'schedule' in timing_type_set:
|
||||
for calendar in timing_rule_by_timing_type['schedule'].resource_calendar_id:
|
||||
start_datetime = utc.localize(datetime.combine(min_check_in, datetime.min.time())) - relativedelta(days=1) # to avoid timezone shift
|
||||
stop_datetime = utc.localize(datetime.combine(max_check_out, datetime.max.time())) + relativedelta(days=1) # to avoid timezone shift
|
||||
interval = calendar._attendance_intervals_batch(start_datetime, stop_datetime, lunch=True)[False]
|
||||
interval |= calendar._attendance_intervals_batch(start_datetime, stop_datetime)[False]
|
||||
naive_interval = Intervals([(
|
||||
i_start.replace(tzinfo=None),
|
||||
i_stop.replace(tzinfo=None),
|
||||
i_model
|
||||
) for i_start, i_stop, i_model in interval._items])
|
||||
calendar_intervals = _invert_intervals(
|
||||
naive_interval,
|
||||
start_datetime.replace(tzinfo=None),
|
||||
stop_datetime.replace(tzinfo=None)
|
||||
)
|
||||
intervals_by_timing_type['schedule'][calendar.id].update(
|
||||
{employee: calendar_intervals for employee in employees}
|
||||
)
|
||||
return intervals_by_timing_type
|
||||
|
||||
def _get_all_overtime_intervals_for_timing_rule(self, min_check_in, max_check_out, attendances, schedules_intervals_by_employee):
|
||||
|
||||
def _fill_overtime(employees, rules, intervals, attendances_intervals):
|
||||
if not intervals:
|
||||
return
|
||||
for employee in employees:
|
||||
intersetion_interval_for_attendance = attendances_intervals[employee] & intervals[employee]
|
||||
overtime_interval_list = defaultdict(list)
|
||||
for (start, stop, attendance) in intersetion_interval_for_attendance:
|
||||
overtime_interval_list[attendance].append((start, stop, rules))
|
||||
for attendance, attendance_intervals_list in overtime_interval_list.items():
|
||||
overtime_by_employee_by_attendance[employee][attendance] |= Intervals(attendance_intervals_list)
|
||||
|
||||
def _build_day_rule_intervals(employees, rule, intervals):
|
||||
timing_intervals_by_employee = defaultdict(Intervals)
|
||||
start = min(rule.timing_start, rule.timing_stop)
|
||||
stop = max(rule.timing_start, rule.timing_stop)
|
||||
for employee in employees:
|
||||
for interval in intervals[employee]:
|
||||
start_datetime = datetime.combine(interval[0].date(), float_to_time(start))
|
||||
stop_datetime = datetime.combine(interval[0].date(), float_to_time(stop))
|
||||
timing_intervals = Intervals([(start_datetime, stop_datetime, self.env['resource.calendar'])])
|
||||
if rule.timing_start > rule.timing_stop:
|
||||
day_start = datetime.combine(interval[0].date(), datetime.min.time())
|
||||
day_end = datetime.combine(interval[0].date(), datetime.max.time())
|
||||
timing_intervals = Intervals([
|
||||
(i_start, i_stop, self.env['resource.calendar'])
|
||||
for i_start, i_stop in invert_intervals([(start_datetime, stop_datetime)], day_start, day_end)])
|
||||
timing_intervals_by_employee[employee] |= timing_intervals
|
||||
return timing_intervals_by_employee
|
||||
|
||||
employees = attendances.employee_id
|
||||
intervals_by_timing_type = self._get_rules_intervals_by_timing_type(
|
||||
min_check_in,
|
||||
max_check_out,
|
||||
employees,
|
||||
schedules_intervals_by_employee
|
||||
)
|
||||
attendances_intervals_by_employee = defaultdict()
|
||||
overtime_by_employee_by_attendance = defaultdict(lambda: defaultdict(Intervals))
|
||||
|
||||
attendances_by_employee = attendances.grouped('employee_id')
|
||||
for employee, emp_attendance in attendances_by_employee.items():
|
||||
attendances_intervals_by_employee[employee] = Intervals([
|
||||
(*(attendance._get_localized_times()), attendance)
|
||||
for attendance in emp_attendance], keep_distinct=True)
|
||||
|
||||
for timing_type, rules in self.grouped('timing_type').items():
|
||||
if timing_type == 'leave':
|
||||
_fill_overtime(employees, rules, intervals_by_timing_type['leave'], attendances_intervals_by_employee)
|
||||
|
||||
elif timing_type == 'schedule':
|
||||
for calendar, rules in rules.grouped('resource_calendar_id').items():
|
||||
outside_calendar_intervals = intervals_by_timing_type['schedule'][calendar.id]
|
||||
_fill_overtime(employees, rules, outside_calendar_intervals, attendances_intervals_by_employee)
|
||||
else:
|
||||
for rule in rules:
|
||||
timing_intervals_by_employee = _build_day_rule_intervals(employees, rule, intervals_by_timing_type[timing_type])
|
||||
_fill_overtime(employees, rule, timing_intervals_by_employee, attendances_intervals_by_employee)
|
||||
return overtime_by_employee_by_attendance
|
||||
|
||||
def _get_overtime_intervals_by_employee_by_attendance(self, min_check_in, max_check_out, attendances, schedules_intervals_by_employee): # TODO: TO REMOVE IN MASTER
|
||||
overtime_by_employee_by_attendance, _ = self._get_overtime_undertime_intervals_by_employee_by_attendance(
|
||||
min_check_in, max_check_out, attendances, schedules_intervals_by_employee)
|
||||
return overtime_by_employee_by_attendance
|
||||
|
||||
def _get_overtime_undertime_intervals_by_employee_by_attendance(self, min_check_in, max_check_out, attendances, schedules_intervals_by_employee):
|
||||
|
||||
def _merge_overtime_dict(d1, d2):
|
||||
for employee, overtime_interval_list in d2.items():
|
||||
for attendance, overtime_list in overtime_interval_list.items():
|
||||
d1[employee][attendance].extend(overtime_list)
|
||||
|
||||
overtime_by_employee_by_attendance = defaultdict(lambda: defaultdict(list))
|
||||
undertime_by_employee_by_attendance = defaultdict(lambda: defaultdict(list))
|
||||
|
||||
quantity_rules = self.filtered_domain([('base_off', '=', 'quantity')])
|
||||
if quantity_rules:
|
||||
attendances_by_periods_by_employee = attendances._get_attendance_by_periods_by_employee()
|
||||
quantity_rule_by_periods = quantity_rules.grouped('quantity_period')
|
||||
for period, rules in quantity_rule_by_periods.items():
|
||||
quantity_overtime_by_employee_by_attendance, quantity_undertime_by_employee_by_attendance = rules._get_all_overtime_undertime_intervals_for_quantity_rule(attendances_by_periods_by_employee[period], schedules_intervals_by_employee)
|
||||
_merge_overtime_dict(overtime_by_employee_by_attendance, quantity_overtime_by_employee_by_attendance)
|
||||
_merge_overtime_dict(undertime_by_employee_by_attendance, quantity_undertime_by_employee_by_attendance)
|
||||
|
||||
timing_rules = (self - quantity_rules)
|
||||
if not timing_rules:
|
||||
return overtime_by_employee_by_attendance, undertime_by_employee_by_attendance
|
||||
|
||||
_merge_overtime_dict(
|
||||
overtime_by_employee_by_attendance,
|
||||
timing_rules._get_all_overtime_intervals_for_timing_rule(
|
||||
min_check_in,
|
||||
max_check_out,
|
||||
attendances,
|
||||
schedules_intervals_by_employee
|
||||
)
|
||||
)
|
||||
return overtime_by_employee_by_attendance, undertime_by_employee_by_attendance
|
||||
|
||||
def _get_overtime_intervals_by_date(self, attendances, version_map): # TO REMOVE IN MASTER
|
||||
""" return all overtime over the attendances (all of the SAME employee)
|
||||
as a list of `Intervals` sets with the rule as the recordset
|
||||
generated by `timing` rules in self
|
||||
"""
|
||||
attendances.employee_id.ensure_one()
|
||||
employee = attendances.employee_id
|
||||
if not attendances:
|
||||
return [Intervals(keep_distinct=True)]
|
||||
|
||||
# Timing based
|
||||
timing_intervals_by_date = defaultdict(list)
|
||||
all_timing_overtime_intervals = Intervals(keep_distinct=True)
|
||||
for rule in self.filtered(lambda r: r.base_off == 'timing'):
|
||||
new_intervals = rule._get1_timing_overtime_intervals(attendances, version_map)
|
||||
all_timing_overtime_intervals |= new_intervals
|
||||
for start, end, attendance in new_intervals:
|
||||
timing_intervals_by_date[attendance.date].append((start, end, rule))
|
||||
# timing_intervals_list.append(
|
||||
# Intervals((start, end, (rule, attendance.date)) for (start, end, attendance) in intervals)
|
||||
# )
|
||||
# timing_intervals_list.append(
|
||||
# _replace_interval_records(new_intervals, rule)
|
||||
# )
|
||||
|
||||
# Quantity Based
|
||||
periods = self._get_periods()
|
||||
|
||||
work_hours_by = {period: defaultdict(lambda: 0) for period in periods}
|
||||
attendances_by = {period: defaultdict(list) for period in periods}
|
||||
overtime_hours_by = {period: defaultdict(lambda: 0) for period in periods}
|
||||
overtimes_by = {period: defaultdict(list) for period in periods}
|
||||
for attendance in attendances:
|
||||
for period, key_date in self._get_period_keys(attendance.date).items():
|
||||
work_hours_by[period][key_date] += attendance.worked_hours
|
||||
attendances_by[period][key_date].append(
|
||||
(attendance.check_in, attendance.check_out, attendance)
|
||||
)
|
||||
for start, end, attendance in all_timing_overtime_intervals:
|
||||
for period, key_date in self._get_period_keys(attendance.date).items():
|
||||
overtime_hours_by[period][key_date] += _time_delta_hours(end - start)
|
||||
overtimes_by[period][key_date].append((start, end, attendance))
|
||||
|
||||
# list -> Intervals
|
||||
for period in periods:
|
||||
overtimes_by[period] = defaultdict(
|
||||
lambda: Intervals(keep_distinct=True),
|
||||
{
|
||||
date: Intervals(ots, keep_distinct=True)
|
||||
for date, ots in overtimes_by[period].items()
|
||||
}
|
||||
)
|
||||
# non overtime attendances
|
||||
attendances_by[period] = defaultdict(
|
||||
lambda: Intervals(keep_distinct=True),
|
||||
{
|
||||
date: Intervals(atts, keep_distinct=True) - overtimes_by[period][date]
|
||||
for date, atts in attendances_by[period].items()
|
||||
}
|
||||
)
|
||||
|
||||
quantity_intervals_by_date = defaultdict(list)
|
||||
for rule in self.filtered(lambda r: r.base_off == 'quantity').sorted(
|
||||
lambda r: {p: i for i, p in enumerate(periods)}[r.quantity_period]
|
||||
):
|
||||
period = rule.quantity_period
|
||||
for date in attendances_by[period]:
|
||||
if rule.expected_hours_from_contract:
|
||||
expected_hours = self._get_expected_hours_from_contract(date, version_map[employee][date], period)
|
||||
else:
|
||||
expected_hours = rule.expected_hours
|
||||
|
||||
overtime_quantity = work_hours_by[period][date] - expected_hours
|
||||
# if overtime_quantity <= -rule.employee_tolerance and rule.undertime: make negative adjustment
|
||||
if overtime_quantity <= 0 or overtime_quantity <= rule.employer_tolerance:
|
||||
continue
|
||||
if overtime_quantity < overtime_hours_by[period][date]:
|
||||
for start, end, attendance in _last_hours_as_intervals(
|
||||
starting_intervals=overtimes_by[period][date],
|
||||
hours=overtime_quantity,
|
||||
):
|
||||
quantity_intervals_by_date[attendance.date].append((start, end, rule))
|
||||
else:
|
||||
new_intervals = _last_hours_as_intervals(
|
||||
starting_intervals=attendances_by[period][date],
|
||||
hours=overtime_quantity - overtime_hours_by[period][date],
|
||||
)
|
||||
|
||||
# Uncommenting this changes the logic of how rules for different periods will interact.
|
||||
# Would make it so weekly overtimes try to overlap daily overtimes as much as possible
|
||||
# for outer_period, key_date in self._get_period_keys(date).items():
|
||||
# overtimes_by[outer_period][key_date] |= new_intervals
|
||||
# attendances_by[outer_period][key_date] -= new_intervals
|
||||
# overtime_hours_by[outer_period][key_date] += sum(
|
||||
# (end - start).seconds / 3600
|
||||
# for (start, end, _) in new_intervals
|
||||
# )
|
||||
|
||||
for start, end, attendance in (
|
||||
new_intervals | overtimes_by[period][date]
|
||||
):
|
||||
date = attendance[0].date
|
||||
quantity_intervals_by_date[date].append((start, end, rule))
|
||||
intervals_by_date = {}
|
||||
for date in quantity_intervals_by_date.keys() | timing_intervals_by_date.keys():
|
||||
intervals_by_date[date] = _record_overlap_intervals([
|
||||
*timing_intervals_by_date[date],
|
||||
*quantity_intervals_by_date[date],
|
||||
])
|
||||
return intervals_by_date
|
||||
|
||||
def _generate_overtime_vals(self, employee, attendances, version_map): # TO REMOVE IN MASTER
|
||||
vals = []
|
||||
for date, intervals in self._get_overtime_intervals_by_date(attendances, version_map).items():
|
||||
vals.extend([
|
||||
{
|
||||
'time_start': start,
|
||||
'time_stop': stop,
|
||||
'duration': _time_delta_hours(stop - start),
|
||||
'employee_id': employee.id,
|
||||
'date': date,
|
||||
'rule_ids': rules.ids,
|
||||
**rules._extra_overtime_vals(),
|
||||
}
|
||||
for start, stop, rules in intervals
|
||||
])
|
||||
return vals
|
||||
|
||||
def _generate_overtime_vals_v2(self, min_check_in, max_check_out, attendances, schedules_intervals_by_employee): # SHOULD BE RENAME IN MASTER
|
||||
vals = []
|
||||
|
||||
def _add_overtime_val(attendance, duration_by_day_by_rules):
|
||||
for day, duration_by_rules in duration_by_day_by_rules.items():
|
||||
for rules, duration in duration_by_rules.items():
|
||||
vals.append({
|
||||
'time_start': attendance.check_in,
|
||||
'time_stop': attendance.check_out,
|
||||
'duration': round(duration, 3),
|
||||
'employee_id': employee.id,
|
||||
'date': day,
|
||||
'rule_ids': rules.ids,
|
||||
**rules._extra_overtime_vals(),
|
||||
})
|
||||
|
||||
overtimes, undertimes = self._get_overtime_undertime_intervals_by_employee_by_attendance(min_check_in, max_check_out, attendances, schedules_intervals_by_employee)
|
||||
for employee, intervals_by_attendance in overtimes.items():
|
||||
tz = timezone(employee.sudo()._get_tz())
|
||||
for attendance, intervals in intervals_by_attendance.items():
|
||||
duration_by_day_by_rules = defaultdict(lambda: defaultdict(float))
|
||||
record_overlap_intervals = _record_overlap_intervals(intervals)
|
||||
for start, stop, rules in record_overlap_intervals:
|
||||
date = start.astimezone(tz).date()
|
||||
duration_by_day_by_rules[date][rules] += (stop - start).total_seconds() / 3600
|
||||
_add_overtime_val(attendance, duration_by_day_by_rules)
|
||||
|
||||
for employee, intervals_by_attendance in undertimes.items():
|
||||
tz = timezone(employee.sudo()._get_tz())
|
||||
for attendance, intervals in intervals_by_attendance.items():
|
||||
date = attendance.check_in.astimezone(tz).date()
|
||||
duration_by_day_by_rules = defaultdict(lambda: defaultdict(float))
|
||||
min_duration_tuple = max(intervals, key=lambda x: x[0])
|
||||
duration, rules = min_duration_tuple
|
||||
duration_by_day_by_rules[date][rules] += duration
|
||||
_add_overtime_val(attendance, duration_by_day_by_rules)
|
||||
return vals
|
||||
|
||||
def _extra_overtime_vals(self):
|
||||
paid_rules = self.filtered('paid')
|
||||
if not paid_rules:
|
||||
return {'amount_rate': 0.0}
|
||||
|
||||
max_rate_rule = max(paid_rules, key=lambda r: (r.amount_rate, r.sequence))
|
||||
if self.ruleset_id.rate_combination_mode == 'max':
|
||||
combined_rate = max_rate_rule.amount_rate
|
||||
if self.ruleset_id.rate_combination_mode == 'sum':
|
||||
combined_rate = sum((r.amount_rate - 1. for r in paid_rules), start=1.)
|
||||
|
||||
return {
|
||||
'amount_rate': combined_rate,
|
||||
}
|
||||
|
||||
def _compute_information_display(self):
|
||||
timing_types = dict(self._fields['timing_type'].selection)
|
||||
for rule in self:
|
||||
if rule.base_off == 'quantity':
|
||||
if rule.expected_hours_from_contract:
|
||||
rule.information_display = self.env._("From Employee")
|
||||
continue
|
||||
rule.information_display = self.env._(
|
||||
"%(nb_hours)d h / %(period)s",
|
||||
nb_hours=rule.expected_hours,
|
||||
period={
|
||||
'day': self.env._('day'),
|
||||
'week': self.env._('week'),
|
||||
}[rule.quantity_period],
|
||||
)
|
||||
else:
|
||||
if rule.timing_type == 'schedule':
|
||||
rule.information_display = self.env._(
|
||||
"Outside Schedule: %(schedule_name)s",
|
||||
schedule_name=rule.resource_calendar_id.name,
|
||||
)
|
||||
continue
|
||||
rule.information_display = timing_types[rule.timing_type]
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
|
||||
class HrAttendanceOvertimeRuleset(models.Model):
|
||||
_name = 'hr.attendance.overtime.ruleset'
|
||||
_description = "Overtime Ruleset"
|
||||
|
||||
name = fields.Char(required=True)
|
||||
description = fields.Html()
|
||||
rule_ids = fields.One2many('hr.attendance.overtime.rule', 'ruleset_id')
|
||||
company_id = fields.Many2one('res.company', "Company", default=lambda self: self.env.company)
|
||||
country_id = fields.Many2one(
|
||||
'res.country',
|
||||
default=lambda self: self.env.company.country_id,
|
||||
)
|
||||
rate_combination_mode = fields.Selection([
|
||||
('max', "Maximum Rate"),
|
||||
('sum', "Sum of all rates"),
|
||||
],
|
||||
required=True,
|
||||
default='max',
|
||||
string="Rate Combination Mode",
|
||||
help=(
|
||||
"Controls how the rates from the different rules that apply are combined.\n"
|
||||
" Max: use the highest rate. (e.g.: combined for 150% and 120 = 150%)\n"
|
||||
" Sum: sum the *extra* pay (i.e. above 100%).\n"
|
||||
" e.g.: combined rate for 150% & 120% = 100% (baseline) + (150-100)% + (120-100)% = 170%\n"
|
||||
),
|
||||
)
|
||||
rules_count = fields.Integer(compute='_compute_rules_count')
|
||||
active = fields.Boolean(default=True, readonly=False)
|
||||
|
||||
def _compute_rules_count(self):
|
||||
for ruleset in self:
|
||||
ruleset.rules_count = len(ruleset.rule_ids)
|
||||
|
||||
def _attendances_to_regenerate_for(self):
|
||||
self.ensure_one()
|
||||
elligible_version = self.env['hr.version'].search([('ruleset_id', '=', self.id)])
|
||||
if not elligible_version:
|
||||
return self.env['hr.attendance']
|
||||
elligible_attendances = self.env['hr.attendance'].search([
|
||||
('employee_id', 'in', elligible_version.employee_id.ids),
|
||||
('date', '>=', min(elligible_version.mapped('date_version'))),
|
||||
])
|
||||
return elligible_attendances
|
||||
|
||||
def action_regenerate_overtimes(self):
|
||||
self._attendances_to_regenerate_for()._update_overtime()
|
||||
|
|
@ -1,96 +1,126 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import pytz
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from collections import defaultdict
|
||||
from odoo.tools.intervals import Intervals
|
||||
from odoo import models, fields, api, exceptions, _
|
||||
from odoo.tools import float_round
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = "hr.employee"
|
||||
|
||||
attendance_manager_id = fields.Many2one(
|
||||
'res.users', store=True, readonly=False,
|
||||
string="Attendance Approver",
|
||||
domain="[('share', '=', False), ('company_ids', 'in', company_id)]",
|
||||
groups="hr_attendance.group_hr_attendance_officer",
|
||||
help="The user set in Attendance will access the attendance of the employee through the dedicated app and will be able to edit them.")
|
||||
attendance_ids = fields.One2many(
|
||||
'hr.attendance', 'employee_id', groups="hr_attendance.group_hr_attendance_user,hr.group_hr_user")
|
||||
'hr.attendance', 'employee_id', groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
last_attendance_id = fields.Many2one(
|
||||
'hr.attendance', compute='_compute_last_attendance_id', store=True,
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user")
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
last_check_in = fields.Datetime(
|
||||
related='last_attendance_id.check_in', store=True,
|
||||
groups="hr_attendance.group_hr_attendance_user,hr.group_hr_user")
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user", tracking=False)
|
||||
last_check_out = fields.Datetime(
|
||||
related='last_attendance_id.check_out', store=True,
|
||||
groups="hr_attendance.group_hr_attendance_user,hr.group_hr_user")
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user", tracking=False)
|
||||
attendance_state = fields.Selection(
|
||||
string="Attendance Status", compute='_compute_attendance_state',
|
||||
selection=[('checked_out', "Checked out"), ('checked_in', "Checked in")],
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user")
|
||||
hours_last_month = fields.Float(
|
||||
compute='_compute_hours_last_month', groups="hr_attendance.group_hr_attendance_user,hr.group_hr_user")
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
hours_last_month = fields.Float(compute='_compute_hours_last_month')
|
||||
hours_last_month_overtime = fields.Float(compute='_compute_hours_last_month')
|
||||
hours_today = fields.Float(
|
||||
compute='_compute_hours_today',
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user")
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
hours_previously_today = fields.Float(
|
||||
compute='_compute_hours_today',
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
last_attendance_worked_hours = fields.Float(
|
||||
compute='_compute_hours_today',
|
||||
groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
hours_last_month_display = fields.Char(
|
||||
compute='_compute_hours_last_month', groups="hr_attendance.group_hr_attendance_user,hr.group_hr_user")
|
||||
compute='_compute_hours_last_month', groups="hr.group_hr_user")
|
||||
overtime_ids = fields.One2many(
|
||||
'hr.attendance.overtime', 'employee_id', groups="hr_attendance.group_hr_attendance_user,hr.group_hr_user")
|
||||
total_overtime = fields.Float(
|
||||
compute='_compute_total_overtime', compute_sudo=True,
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance,hr.group_hr_user")
|
||||
'hr.attendance.overtime.line', 'employee_id', groups="hr_attendance.group_hr_attendance_officer,hr.group_hr_user")
|
||||
total_overtime = fields.Float(compute='_compute_total_overtime', compute_sudo=True)
|
||||
display_extra_hours = fields.Boolean(related='company_id.hr_attendance_display_overtime')
|
||||
|
||||
@api.depends('overtime_ids.duration', 'attendance_ids')
|
||||
ruleset_id = fields.Many2one(readonly=False, related="version_id.ruleset_id", inherited=True, groups="hr.group_hr_manager")
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
officer_group = self.env.ref('hr_attendance.group_hr_attendance_officer', raise_if_not_found=False)
|
||||
group_updates = []
|
||||
for vals in vals_list:
|
||||
if officer_group and vals.get('attendance_manager_id'):
|
||||
group_updates.append((4, vals['attendance_manager_id']))
|
||||
if group_updates:
|
||||
officer_group.sudo().write({'user_ids': group_updates})
|
||||
return super().create(vals_list)
|
||||
|
||||
def write(self, vals):
|
||||
old_officers = self.env['res.users']
|
||||
if 'attendance_manager_id' in vals:
|
||||
old_officers = self.attendance_manager_id
|
||||
# Officer was added
|
||||
if vals['attendance_manager_id']:
|
||||
officer = self.env['res.users'].browse(vals['attendance_manager_id'])
|
||||
officers_group = self.env.ref('hr_attendance.group_hr_attendance_officer', raise_if_not_found=False)
|
||||
if officers_group and not officer.has_group('hr_attendance.group_hr_attendance_officer'):
|
||||
officer.sudo().write({'group_ids': [(4, officers_group.id)]})
|
||||
|
||||
res = super().write(vals)
|
||||
old_officers.sudo()._clean_attendance_officers()
|
||||
|
||||
return res
|
||||
|
||||
@api.depends('overtime_ids.manual_duration', 'overtime_ids', 'overtime_ids.status')
|
||||
def _compute_total_overtime(self):
|
||||
for employee in self:
|
||||
if employee.company_id.hr_attendance_overtime:
|
||||
employee.total_overtime = float_round(sum(employee.overtime_ids.mapped('duration')), 2)
|
||||
else:
|
||||
employee.total_overtime = 0
|
||||
mapped_validated_overtimes = dict(
|
||||
self.env['hr.attendance.overtime.line']._read_group(
|
||||
domain=[('status', '=', 'approved')],
|
||||
groupby=['employee_id'],
|
||||
aggregates=['manual_duration:sum']
|
||||
))
|
||||
|
||||
@api.depends('user_id.im_status', 'attendance_state')
|
||||
def _compute_presence_state(self):
|
||||
"""
|
||||
Override to include checkin/checkout in the presence state
|
||||
Attendance has the second highest priority after login
|
||||
"""
|
||||
super()._compute_presence_state()
|
||||
employees = self.filtered(lambda e: e.hr_presence_state != 'present')
|
||||
employee_to_check_working = self.filtered(lambda e: e.attendance_state == 'checked_out'
|
||||
and e.hr_presence_state == 'to_define')
|
||||
working_now_list = employee_to_check_working._get_employee_working_now()
|
||||
for employee in employees:
|
||||
if employee.attendance_state == 'checked_out' and employee.hr_presence_state == 'to_define' and \
|
||||
employee.id not in working_now_list:
|
||||
employee.hr_presence_state = 'absent'
|
||||
elif employee.attendance_state == 'checked_in':
|
||||
employee.hr_presence_state = 'present'
|
||||
for employee in self:
|
||||
employee.total_overtime = mapped_validated_overtimes.get(employee, 0)
|
||||
|
||||
def _compute_hours_last_month(self):
|
||||
"""
|
||||
Compute hours and overtime hours in the current month, if we are the 15th of october, will compute from 1 oct to 15 oct
|
||||
"""
|
||||
now = fields.Datetime.now()
|
||||
now_utc = pytz.utc.localize(now)
|
||||
for employee in self:
|
||||
tz = pytz.timezone(employee.tz or 'UTC')
|
||||
now_tz = now_utc.astimezone(tz)
|
||||
start_tz = now_tz + relativedelta(months=-1, day=1, hour=0, minute=0, second=0, microsecond=0)
|
||||
start_tz = now_tz.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
|
||||
start_naive = start_tz.astimezone(pytz.utc).replace(tzinfo=None)
|
||||
end_tz = now_tz + relativedelta(day=1, hour=0, minute=0, second=0, microsecond=0)
|
||||
end_tz = now_tz
|
||||
end_naive = end_tz.astimezone(pytz.utc).replace(tzinfo=None)
|
||||
|
||||
attendances = self.env['hr.attendance'].search([
|
||||
('employee_id', '=', employee.id),
|
||||
'&',
|
||||
('check_in', '<=', end_naive),
|
||||
('check_out', '>=', start_naive),
|
||||
])
|
||||
|
||||
current_month_attendances = employee.attendance_ids.filtered(
|
||||
lambda att: att.check_in >= start_naive and att.check_out and att.check_out <= end_naive
|
||||
)
|
||||
hours = 0
|
||||
for attendance in attendances:
|
||||
check_in = max(attendance.check_in, start_naive)
|
||||
check_out = min(attendance.check_out, end_naive)
|
||||
hours += (check_out - check_in).total_seconds() / 3600.0
|
||||
|
||||
overtime_hours = 0
|
||||
for att in current_month_attendances:
|
||||
hours += att.worked_hours or 0
|
||||
overtime_hours += att.validated_overtime_hours or 0
|
||||
employee.hours_last_month = round(hours, 2)
|
||||
employee.hours_last_month_display = "%g" % employee.hours_last_month
|
||||
# overtime_adjustments = sum(
|
||||
# ot.duration or 0
|
||||
# for ot in employee.overtime_ids.filtered(
|
||||
# lambda ot: ot.date >= start_tz.date() and ot.date <= end_tz.date() and ot.adjustment
|
||||
# )
|
||||
# )
|
||||
employee.hours_last_month_overtime = round(overtime_hours, 2)
|
||||
|
||||
def _compute_hours_today(self):
|
||||
now = fields.Datetime.now()
|
||||
|
|
@ -103,23 +133,31 @@ class HrEmployee(models.Model):
|
|||
start_naive = start_tz.astimezone(pytz.utc).replace(tzinfo=None)
|
||||
|
||||
attendances = self.env['hr.attendance'].search([
|
||||
('employee_id', '=', employee.id),
|
||||
('employee_id', 'in', employee.ids),
|
||||
('check_in', '<=', now),
|
||||
'|', ('check_out', '>=', start_naive), ('check_out', '=', False),
|
||||
])
|
||||
|
||||
], order='check_in asc')
|
||||
hours_previously_today = 0
|
||||
worked_hours = 0
|
||||
attendance_worked_hours = 0
|
||||
for attendance in attendances:
|
||||
delta = (attendance.check_out or now) - max(attendance.check_in, start_naive)
|
||||
worked_hours += delta.total_seconds() / 3600.0
|
||||
attendance_worked_hours = delta.total_seconds() / 3600.0
|
||||
worked_hours += attendance_worked_hours
|
||||
hours_previously_today += attendance_worked_hours
|
||||
employee.last_attendance_worked_hours = attendance_worked_hours
|
||||
hours_previously_today -= attendance_worked_hours
|
||||
employee.hours_previously_today = hours_previously_today
|
||||
employee.hours_today = worked_hours
|
||||
|
||||
@api.depends('attendance_ids')
|
||||
def _compute_last_attendance_id(self):
|
||||
current_datetime = fields.Datetime.now()
|
||||
for employee in self:
|
||||
employee.last_attendance_id = self.env['hr.attendance'].search([
|
||||
('employee_id', '=', employee.id),
|
||||
], limit=1)
|
||||
('employee_id', 'in', employee.ids),
|
||||
('check_in', '<=', current_datetime),
|
||||
], order="check_in desc", limit=1)
|
||||
|
||||
@api.depends('last_attendance_id.check_in', 'last_attendance_id.check_out', 'last_attendance_id')
|
||||
def _compute_attendance_state(self):
|
||||
|
|
@ -127,56 +165,7 @@ class HrEmployee(models.Model):
|
|||
att = employee.last_attendance_id.sudo()
|
||||
employee.attendance_state = att and not att.check_out and 'checked_in' or 'checked_out'
|
||||
|
||||
@api.model
|
||||
def attendance_scan(self, barcode):
|
||||
""" Receive a barcode scanned from the Kiosk Mode and change the attendances of corresponding employee.
|
||||
Returns either an action or a warning.
|
||||
"""
|
||||
employee = self.sudo().search([('barcode', '=', barcode)], limit=1)
|
||||
if employee:
|
||||
return employee._attendance_action('hr_attendance.hr_attendance_action_kiosk_mode')
|
||||
return {'warning': _("No employee corresponding to Badge ID '%(barcode)s.'") % {'barcode': barcode}}
|
||||
|
||||
def attendance_manual(self, next_action, entered_pin=None):
|
||||
self.ensure_one()
|
||||
attendance_user_and_no_pin = self.user_has_groups(
|
||||
'hr_attendance.group_hr_attendance_user,'
|
||||
'!hr_attendance.group_hr_attendance_use_pin')
|
||||
can_check_without_pin = attendance_user_and_no_pin or (self.user_id == self.env.user and entered_pin is None)
|
||||
if can_check_without_pin or entered_pin is not None and entered_pin == self.sudo().pin:
|
||||
return self._attendance_action(next_action)
|
||||
if not self.user_has_groups('hr_attendance.group_hr_attendance_user'):
|
||||
return {'warning': _('To activate Kiosk mode without pin code, you must have access right as an Officer or above in the Attendance app. Please contact your administrator.')}
|
||||
return {'warning': _('Wrong PIN')}
|
||||
|
||||
def _attendance_action(self, next_action):
|
||||
""" Changes the attendance of the employee.
|
||||
Returns an action to the check in/out message,
|
||||
next_action defines which menu the check in/out message should return to. ("My Attendances" or "Kiosk Mode")
|
||||
"""
|
||||
self.ensure_one()
|
||||
employee = self.sudo()
|
||||
action_message = self.env["ir.actions.actions"]._for_xml_id("hr_attendance.hr_attendance_action_greeting_message")
|
||||
action_message['previous_attendance_change_date'] = employee.last_attendance_id and (employee.last_attendance_id.check_out or employee.last_attendance_id.check_in) or False
|
||||
action_message['employee_name'] = employee.name
|
||||
action_message['barcode'] = employee.barcode
|
||||
action_message['next_action'] = next_action
|
||||
action_message['hours_today'] = employee.hours_today
|
||||
action_message['kiosk_delay'] = employee.company_id.attendance_kiosk_delay * 1000
|
||||
|
||||
if employee.user_id:
|
||||
modified_attendance = employee.with_user(employee.user_id).sudo()._attendance_action_change()
|
||||
else:
|
||||
modified_attendance = employee._attendance_action_change()
|
||||
action_message['attendance'] = modified_attendance.read()[0]
|
||||
action_message['show_total_overtime'] = employee.company_id.hr_attendance_overtime
|
||||
action_message['total_overtime'] = employee.total_overtime
|
||||
# Overtime have an unique constraint on the day, no need for limit=1
|
||||
action_message['overtime_today'] = self.env['hr.attendance.overtime'].sudo().search([
|
||||
('employee_id', '=', employee.id), ('date', '=', fields.Date.context_today(self)), ('adjustment', '=', False)]).duration or 0
|
||||
return {'action': action_message}
|
||||
|
||||
def _attendance_action_change(self):
|
||||
def _attendance_action_change(self, geo_information=None):
|
||||
""" Check In/Check Out action
|
||||
Check In: create a new attendance record
|
||||
Check Out: modify check_out field of appropriate attendance record
|
||||
|
|
@ -185,27 +174,164 @@ class HrEmployee(models.Model):
|
|||
action_date = fields.Datetime.now()
|
||||
|
||||
if self.attendance_state != 'checked_in':
|
||||
vals = {
|
||||
'employee_id': self.id,
|
||||
'check_in': action_date,
|
||||
}
|
||||
if geo_information:
|
||||
vals = {
|
||||
'employee_id': self.id,
|
||||
'check_in': action_date,
|
||||
**{'in_%s' % key: geo_information[key] for key in geo_information}
|
||||
}
|
||||
else:
|
||||
vals = {
|
||||
'employee_id': self.id,
|
||||
'check_in': action_date,
|
||||
}
|
||||
return self.env['hr.attendance'].create(vals)
|
||||
attendance = self.env['hr.attendance'].search([('employee_id', '=', self.id), ('check_out', '=', False)], limit=1)
|
||||
if attendance:
|
||||
attendance.check_out = action_date
|
||||
if geo_information:
|
||||
attendance.write({
|
||||
'check_out': action_date,
|
||||
**{'out_%s' % key: geo_information[key] for key in geo_information}
|
||||
})
|
||||
else:
|
||||
attendance.write({
|
||||
'check_out': action_date
|
||||
})
|
||||
else:
|
||||
raise exceptions.UserError(_('Cannot perform check out on %(empl_name)s, could not find corresponding check in. '
|
||||
'Your attendances have probably been modified manually by human resources.') % {'empl_name': self.sudo().name, })
|
||||
raise exceptions.UserError(_(
|
||||
'Cannot perform check out on %(empl_name)s, could not find corresponding check in. '
|
||||
'Your attendances have probably been modified manually by human resources.',
|
||||
empl_name=self.sudo().name))
|
||||
return attendance
|
||||
|
||||
@api.model
|
||||
def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True):
|
||||
if 'pin' in groupby or 'pin' in self.env.context.get('group_by', '') or self.env.context.get('no_group_by'):
|
||||
raise exceptions.UserError(_('Such grouping is not allowed.'))
|
||||
return super(HrEmployee, self).read_group(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
|
||||
def get_overtime_data(self, domain=None, employee_id=None):
|
||||
domain = [] if domain is None else domain
|
||||
validated_overtime = {
|
||||
attendance[0].id: attendance[1]
|
||||
for attendance in self.env["hr.attendance"]._read_group(
|
||||
domain=domain,
|
||||
groupby=['employee_id'],
|
||||
aggregates=['validated_overtime_hours:sum']
|
||||
)
|
||||
}
|
||||
return {"validated_overtime": validated_overtime, "overtime_adjustments": {}}
|
||||
|
||||
def action_open_last_month_attendances(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"name": _("Attendances This Month"),
|
||||
"res_model": "hr.attendance",
|
||||
"views": [[self.env.ref('hr_attendance.hr_attendance_employee_simple_tree_view').id, "list"]],
|
||||
"context": {
|
||||
"create": 0,
|
||||
"search_default_check_in_filter": 1,
|
||||
"employee_id": self.id,
|
||||
"display_extra_hours": self.display_extra_hours,
|
||||
},
|
||||
"domain": [('employee_id', '=', self.id)]
|
||||
}
|
||||
|
||||
@api.depends("user_id.im_status", "attendance_state")
|
||||
def _compute_presence_state(self):
|
||||
"""
|
||||
Override to include checkin/checkout in the presence state
|
||||
Attendance has the second highest priority after login
|
||||
"""
|
||||
super()._compute_presence_state()
|
||||
employees = self.filtered(lambda e: e.hr_presence_state != "present")
|
||||
employee_to_check_working = self.filtered(lambda e: e.sudo().attendance_state == "checked_out"
|
||||
and e.hr_presence_state == "out_of_working_hour")
|
||||
working_now_list = employee_to_check_working._get_employee_working_now()
|
||||
for employee in employees:
|
||||
if employee.sudo().attendance_state == "checked_out" and employee.hr_presence_state == "out_of_working_hour" and \
|
||||
employee.id in working_now_list:
|
||||
employee.hr_presence_state = "absent"
|
||||
elif employee.sudo().attendance_state == "checked_in":
|
||||
employee.hr_presence_state = "present"
|
||||
|
||||
def _compute_presence_icon(self):
|
||||
res = super()._compute_presence_icon()
|
||||
# All employee must chek in or check out. Everybody must have an icon
|
||||
self.filtered(lambda employee: not employee.show_hr_icon_display).show_hr_icon_display = True
|
||||
for employee in self:
|
||||
employee.show_hr_icon_display = employee.company_id.hr_presence_control_attendance or bool(employee.user_id)
|
||||
return res
|
||||
|
||||
def open_barcode_scanner(self):
|
||||
return {
|
||||
"type": "ir.actions.client",
|
||||
"tag": "employee_barcode_scanner",
|
||||
"name": "Badge Scanner"
|
||||
}
|
||||
|
||||
def _get_schedules_by_employee_by_work_type(self, start, stop, version_periods_by_employee):
|
||||
employees_by_calendar = defaultdict(lambda: self.env['hr.employee'])
|
||||
leave_intervals_by_cal_by_resource = defaultdict(lambda: defaultdict(Intervals))
|
||||
attendance_intervals_by_cal = defaultdict(Intervals)
|
||||
lunch_intervals_by_cal = defaultdict(Intervals)
|
||||
|
||||
for employee, intervals in version_periods_by_employee.items():
|
||||
for (_start, _stop, version) in intervals:
|
||||
employees_by_calendar[version.resource_calendar_id] |= employee
|
||||
|
||||
for cal, employees in employees_by_calendar.items():
|
||||
if not cal: # employees are fully flex
|
||||
continue
|
||||
cal_leave_intervals_by_resource = cal._leave_intervals_batch(
|
||||
start,
|
||||
stop,
|
||||
resources=employees.resource_id,
|
||||
)
|
||||
for resource, leave_intervals in cal_leave_intervals_by_resource.items():
|
||||
naive_leave_intervals = Intervals([(
|
||||
i_start.replace(tzinfo=None),
|
||||
i_stop.replace(tzinfo=None),
|
||||
i_model
|
||||
) for (i_start, i_stop, i_model) in leave_intervals])
|
||||
leave_intervals_by_cal_by_resource[cal][resource] = naive_leave_intervals
|
||||
|
||||
cal_attendance_intervals = cal._attendance_intervals_batch(
|
||||
start,
|
||||
stop,
|
||||
)[False]
|
||||
attendance_intervals_by_cal[cal] = Intervals([(
|
||||
i_start.replace(tzinfo=None),
|
||||
i_stop.replace(tzinfo=None),
|
||||
i_model
|
||||
) for (i_start, i_stop, i_model) in cal_attendance_intervals])
|
||||
|
||||
cal_lunch_intervals = cal._attendance_intervals_batch(
|
||||
start,
|
||||
stop,
|
||||
lunch=True
|
||||
)[False]
|
||||
lunch_intervals_by_cal[cal] = Intervals([(
|
||||
i_start.replace(tzinfo=None),
|
||||
i_stop.replace(tzinfo=None),
|
||||
i_model
|
||||
) for (i_start, i_stop, i_model) in cal_lunch_intervals])
|
||||
|
||||
full_schedule_by_employee = {
|
||||
'leave': defaultdict(Intervals),
|
||||
'schedule': defaultdict(lambda: {
|
||||
'work': Intervals([]),
|
||||
'lunch': Intervals([]),
|
||||
}),
|
||||
'fully_flexible': defaultdict(Intervals)
|
||||
}
|
||||
for employee, intervals in version_periods_by_employee.items():
|
||||
for (p_start, p_stop, version) in intervals:
|
||||
interval = Intervals([(p_start.replace(tzinfo=None), p_stop.replace(tzinfo=None), self.env['resource.calendar'])])
|
||||
calendar = version.resource_calendar_id
|
||||
if not calendar:
|
||||
full_schedule_by_employee['fully_flexible'][employee] |= interval
|
||||
continue
|
||||
employee_leaves = leave_intervals_by_cal_by_resource[calendar][employee.resource_id.id]
|
||||
full_schedule_by_employee['leave'][employee] |= employee_leaves & interval
|
||||
employee_attendances = attendance_intervals_by_cal[calendar]
|
||||
full_schedule_by_employee['schedule'][employee]['work'] |= employee_attendances & interval
|
||||
employee_lunches = lunch_intervals_by_cal[calendar]
|
||||
full_schedule_by_employee['schedule'][employee]['lunch'] |= employee_lunches & interval
|
||||
|
||||
return full_schedule_by_employee
|
||||
|
|
|
|||
|
|
@ -3,27 +3,29 @@
|
|||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrEmployeePublic(models.Model):
|
||||
_inherit = 'hr.employee.public'
|
||||
|
||||
# These are required for manual attendance
|
||||
attendance_state = fields.Selection(related='employee_id.attendance_state', readonly=True,
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance")
|
||||
groups="hr_attendance.group_hr_attendance_officer")
|
||||
hours_today = fields.Float(related='employee_id.hours_today', readonly=True,
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance")
|
||||
groups="hr_attendance.group_hr_attendance_officer")
|
||||
hours_last_month = fields.Float(related='employee_id.hours_last_month')
|
||||
hours_last_month_overtime = fields.Float(related='employee_id.hours_last_month_overtime')
|
||||
last_attendance_id = fields.Many2one(related='employee_id.last_attendance_id', readonly=True,
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance")
|
||||
total_overtime = fields.Float(related='employee_id.total_overtime', readonly=True,
|
||||
groups="hr_attendance.group_hr_attendance_kiosk,hr_attendance.group_hr_attendance")
|
||||
groups="hr_attendance.group_hr_attendance_officer")
|
||||
total_overtime = fields.Float(related='employee_id.total_overtime', readonly=True)
|
||||
attendance_manager_id = fields.Many2one(related='employee_id.attendance_manager_id',
|
||||
groups="hr_attendance.group_hr_attendance_officer")
|
||||
last_check_in = fields.Datetime(related='employee_id.last_check_in',
|
||||
groups="hr_attendance.group_hr_attendance_officer")
|
||||
last_check_out = fields.Datetime(related='employee_id.last_check_out',
|
||||
groups="hr_attendance.group_hr_attendance_officer")
|
||||
display_extra_hours = fields.Boolean(related='company_id.hr_attendance_display_overtime')
|
||||
|
||||
def action_employee_kiosk_confirm(self):
|
||||
def action_open_last_month_attendances(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'name': 'Confirm',
|
||||
'tag': 'hr_attendance_kiosk_confirm',
|
||||
'employee_id': self.id,
|
||||
'employee_name': self.name,
|
||||
'employee_state': self.attendance_state,
|
||||
'employee_hours_today': self.hours_today,
|
||||
}
|
||||
if self.is_user:
|
||||
return self.employee_id.action_open_last_month_attendances()
|
||||
|
|
|
|||
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