attendance report + login by identity edits

This commit is contained in:
Esraa-Exp 2025-04-24 22:48:20 +02:00
parent b40be89585
commit 9572ea4313
8 changed files with 86 additions and 23 deletions

View File

@ -2265,3 +2265,24 @@ msgstr "غير متواجـد"
msgid "Departments"
msgstr "الأقسام"
#. module: attendances
#: model_terms:ir.ui.view,arch_db:attendances.employee_lateness_absense_overtime_form_view
msgid "Attendance Date From"
msgstr "تاريخ الحضور من"
#. module: attendances
#: model_terms:ir.ui.view,arch_db:attendances.employee_lateness_absense_overtime_form_view
msgid "Attendance Date To"
msgstr "تاريخ الحضور إلى"
#. module: attendances
#: model_terms:ir.ui.view,arch_db:attendances.employee_lateness_absense_overtime_form_view
msgid "Deduction Date From"
msgstr "تاريخ الخصم من"
#. module: attendances
#: model_terms:ir.ui.view,arch_db:attendances.employee_lateness_absense_overtime_form_view
msgid "Deduction Date To"
msgstr "تاريخ الخصم إلى"

View File

@ -108,6 +108,7 @@
<tree decoration-success="state=='approved'" decoration-danger="state == 'refused'" decoration-info="state == 'draft'" >
<field name="date_from"/>
<field name="date_to"/>
<field name="calendar_ids" widget="many2many_tags"/>
<field name="department_ids" widget="many2many_tags"/>
<field name="state"/>
</tree>

View File

@ -4766,10 +4766,6 @@ msgstr "<span class=\"fa fa-circle-o text-success\" role=\"img\" aria-label=\"Pr
msgid "Attendance Zone"
msgstr "منطقة الحضور"
#. module: hr_base
#: model:ir.model.fields,field_description:hr_base.field_res_config_settings__employee_login
msgid "Login Option"
msgstr "تسجيل الدخول الافتراضي"
#. module: hr_base
#: model:ir.model.fields.selection,name:hr_base.selection__res_config_settings__employee_login__email
@ -4781,3 +4777,29 @@ msgstr "الايميل"
msgid "By dentity"
msgstr "الهوية"
#. module: hr_base
#: model_terms:ir.ui.view,arch_db:hr_base.inherit_res_config_settings_view_form
msgid ""
"Choose whether employees log in by Email or\n"
" Identity number."
msgstr "اختيار تسجيل الدخول بالايميل او رقم الهوية"
#. module: hr_base
#: model:ir.model.fields,field_description:hr_base.field_res_config_settings__employee_login
#: model_terms:ir.ui.view,arch_db:hr_base.inherit_res_config_settings_view_form
msgid "Login Option"
msgstr "تسجيل الدخول الافتراضي"
#. module: hr_base
#: code:addons/hr_base/models/hr_base.py:0
#, python-format
msgid "Email Address"
msgstr "عنوان البريد الإلكتروني"
#. module: hr_base
#: code:addons/hr_base/models/hr_base.py:0
#, python-format
msgid "Identity Number"
msgstr "رقم الهوية"

View File

@ -3,6 +3,7 @@
from . import dependent
from . import certification
from . import insurance
from . import res_config_settings
from . import hr_base
from . import application_dependent
from . import category_info
@ -30,4 +31,3 @@ from . import assets_document
from . import hr_department
from . import res_partner
from . import res_users
from . import res_config_settings

View File

@ -3,7 +3,7 @@ from datetime import datetime, timedelta, date
from dateutil import relativedelta
from hijri_converter import convert
from num2words import num2words
from odoo import api, exceptions, fields, models
from odoo import api, exceptions, fields, models, _
from odoo.exceptions import ValidationError, Warning
from odoo.tools.translate import _
@ -596,10 +596,10 @@ class HrEmployee(models.Model):
login_option = config.get_param('hr_base.employee_login')
if login_option == 'identity':
login = self.iqama_number.iqama_id or self.saudi_number.saudi_id
login_label = _('Identity Number')
else:
login = self.work_email
login_label = _('Email Address')
if self.user_id:
raise ValidationError(_("This employee already has an user."))
@ -616,6 +616,7 @@ class HrEmployee(models.Model):
'default_phone': self.work_phone,
'default_mobile': self.mobile_phone,
'default_login': login,
'default_login_label': login_label,
}
}

View File

@ -7,6 +7,7 @@ class ResUsers(models.Model):
create_employee = fields.Boolean(store=False, default=True, copy=False, string="Technical field, whether to create an employee")
create_employee_id = fields.Many2one('hr.employee', store=False, copy=False, string="Technical field, bind user to this employee on create")
login_label = fields.Char()
@api.model_create_multi
@ -36,4 +37,7 @@ class ResUsers(models.Model):
res.password = res.login
return res
return res

View File

@ -468,7 +468,19 @@
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_simple_form"/>
<field name="arch" type="xml">
<xpath expr="//label[@for='login']" position="replace">
<!-- Remove static label and show nothing -->
</xpath>
<xpath expr="//field[@name='login']" position="before">
<div class="o_form_label">
<strong>
<field name="login_label" readonly="1"/>
</strong>
</div>
</xpath>
<xpath expr="//field[@name='mobile']" position="after">
<field name="login_label" invisible="1"/>
<field name="create_employee_id" force_save="1" invisible="1"/>
<field name="create_employee" force_save="1" string="Create Employee" invisible="not context.get('allow_create_employee', True)" attrs="{'invisible': [('create_employee_id', '>', 0)]}"/>
</xpath>

View File

@ -151,21 +151,23 @@
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="hr.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='employee_rights_setting_container']" position="before">
<xpath expr="//div[@name='employee_rights_setting_container']" position="before">
<div class="row mt16 o_settings_container" name="employee_login_option_container">
<div class="col-12 col-lg-6 o_setting_box" title="Choose how employees log in.">
<div class="o_setting_left_pane">
<field name="employee_login" widget="radio"/>
</div>
<div class="o_setting_right_pane">
<label for="employee_login"/>
</div>
</div>
</div>
</xpath>
<div class="row mt16 o_settings_container" name="employee_login_option_container">
<div class="col-12 col-lg-6 o_setting_box" title="Choose how employees log in.">
<div class="o_setting_left_pane">
<span class="fa fa-user-lock" aria-hidden="true"/>
</div>
<div class="o_setting_right_pane">
<div class="text-muted">Login Option</div>
<field name="employee_login" widget="radio"/>
<div class="text-muted o_field_help">Choose whether employees log in by Email or
Identity number.
</div>
</div>
</div>
</div>
</xpath>
<xpath expr="//field[@name='resource_calendar_id']" position="after">
<h2>Saudi Percentage %</h2>
<div class="row">