Merge branch 'dev_odex25_hr' of https://github.com/expsa/odex25-standard-modules into bakry_hr3
This commit is contained in:
commit
4321905e84
|
|
@ -0,0 +1,292 @@
|
|||
# Author: Ahmad Samir <a.atta@exp-sa.com>
|
||||
name: Prevent Invalid Merges
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- dev_odex-event
|
||||
- dev_odex25_accounting
|
||||
- dev_odex25_base
|
||||
- dev_odex25_dms
|
||||
- dev_odex25_fleet
|
||||
- dev_odex25_hr
|
||||
- dev_odex25_inventory
|
||||
- dev_odex25_maintenance
|
||||
- dev_odex25_mobile
|
||||
- dev_odex25_pos
|
||||
- dev_odex25_project
|
||||
- dev_odex25_purchase
|
||||
- dev_odex25_realstate
|
||||
- dev_odex25_sales
|
||||
- dev_odex25_survey
|
||||
- dev_odex25_transactions
|
||||
- dev_odex25_website
|
||||
- dev_openeducat_erp-14.0.1.0
|
||||
- dev_odex25_ensan
|
||||
- dev_odex25_helpdesk
|
||||
|
||||
- preprod_odex-event
|
||||
- preprod_odex25_accounting
|
||||
- preprod_odex25_base
|
||||
- preprod_odex25_dms
|
||||
- preprod_odex25_fleet
|
||||
- preprod_odex25_hr
|
||||
- preprod_odex25_inventory
|
||||
- preprod_odex25_maintenance
|
||||
- preprod_odex25_mobile
|
||||
- preprod_odex25_pos
|
||||
- preprod_odex25_project
|
||||
- preprod_odex25_purchase
|
||||
- preprod_odex25_realstate
|
||||
- preprod_odex25_sales
|
||||
- preprod_odex25_survey
|
||||
- preprod_odex25_transactions
|
||||
- preprod_odex25_website
|
||||
- preprod_openeducat_erp-14.0.1.0
|
||||
- preprod_odex25_ensan
|
||||
- preprod_odex25_helpdesk
|
||||
|
||||
- master_odex-event
|
||||
- master_odex25_accounting
|
||||
- master_odex25_base
|
||||
- master_odex25_dms
|
||||
- master_odex25_fleet
|
||||
- master_odex25_hr
|
||||
- master_odex25_inventory
|
||||
- master_odex25_maintenance
|
||||
- master_odex25_mobile
|
||||
- master_odex25_pos
|
||||
- master_odex25_project
|
||||
- master_odex25_purchase
|
||||
- master_odex25_realstate
|
||||
- master_odex25_sales
|
||||
- master_odex25_survey
|
||||
- master_odex25_transactions
|
||||
- master_odex25_website
|
||||
- master_openeducat_erp-14.0.1.0
|
||||
- master_odex25_ensan
|
||||
- master_odex25_helpdesk
|
||||
|
||||
|
||||
|
||||
|
||||
jobs:
|
||||
validate-merge-source:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check source branch for merge
|
||||
run: |
|
||||
echo "Base branch: ${{ github.base_ref }}"
|
||||
echo "Head branch: ${{ github.head_ref }}"
|
||||
|
||||
|
||||
# ✅ Preprod Branches
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex-event" && "${{ github.head_ref }}" != "dev_odex-event" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex-event' from 'dev_odex-event' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_accounting" && "${{ github.head_ref }}" != "dev_odex25_accounting" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_accounting' from 'dev_odex25_accounting' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_base" && "${{ github.head_ref }}" != "dev_odex25_base" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_base' from 'dev_odex25_base' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_dms" && "${{ github.head_ref }}" != "dev_odex25_dms" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_dms' from 'dev_odex25_dms' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_fleet" && "${{ github.head_ref }}" != "dev_odex25_fleet" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_fleet' from 'dev_odex25_fleet' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_hr" && "${{ github.head_ref }}" != "dev_odex25_hr" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_hr' from 'dev_odex25_hr' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_inventory" && "${{ github.head_ref }}" != "dev_odex25_inventory" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_inventory' from 'dev_odex25_inventory' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_maintenance" && "${{ github.head_ref }}" != "dev_odex25_maintenance" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_maintenance' from 'dev_odex25_maintenance' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_mobile" && "${{ github.head_ref }}" != "dev_odex25_mobile" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_mobile' from 'dev_odex25_mobile' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_pos" && "${{ github.head_ref }}" != "dev_odex25_pos" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_pos' from 'dev_odex25_pos' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_project" && "${{ github.head_ref }}" != "dev_odex25_project" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_project' from 'dev_odex25_project' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_purchase" && "${{ github.head_ref }}" != "dev_odex25_purchase" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_purchase' from 'dev_odex25_purchase' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_realstate" && "${{ github.head_ref }}" != "dev_odex25_realstate" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_realstate' from 'dev_odex25_realstate' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_sales" && "${{ github.head_ref }}" != "dev_odex25_sales" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_sales' from 'dev_odex25_sales' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_survey" && "${{ github.head_ref }}" != "dev_odex25_survey" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_survey' from 'dev_odex25_survey' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_transactions" && "${{ github.head_ref }}" != "dev_odex25_transactions" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_transactions' from 'dev_odex25_transactions' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_website" && "${{ github.head_ref }}" != "dev_odex25_website" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_website' from 'dev_odex25_website' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_openeducat_erp-14.0.1.0" && "${{ github.head_ref }}" != "dev_openeducat_erp-14.0.1.0" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_openeducat_erp-14.0.1.0' from 'dev_openeducat_erp-14.0.1.0' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_ensan" && "${{ github.head_ref }}" != "dev_odex25_ensan" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_ensan' from 'dev_odex25_ensan' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_helpdesk" && "${{ github.head_ref }}" != "dev_odex25_helpdesk" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_helpdesk' from 'dev_odex25_helpdesk' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ✅ Master Branches
|
||||
if [[ "${{ github.base_ref }}" == "master_odex-event" && "${{ github.head_ref }}" != "preprod_odex-event" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex-event' from 'preprod_odex-event' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_accounting" && "${{ github.head_ref }}" != "preprod_odex25_accounting" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_accounting' from 'preprod_odex25_accounting' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_base" && "${{ github.head_ref }}" != "preprod_odex25_base" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_base' from 'preprod_odex25_base' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_dms" && "${{ github.head_ref }}" != "preprod_odex25_dms" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_dms' from 'preprod_odex25_dms' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_fleet" && "${{ github.head_ref }}" != "preprod_odex25_fleet" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_fleet' from 'preprod_odex25_fleet' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_hr" && "${{ github.head_ref }}" != "preprod_odex25_hr" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_hr' from 'preprod_odex25_hr' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_inventory" && "${{ github.head_ref }}" != "preprod_odex25_inventory" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_inventory' from 'preprod_odex25_inventory' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_maintenance" && "${{ github.head_ref }}" != "preprod_odex25_maintenance" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_maintenance' from 'preprod_odex25_maintenance' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_mobile" && "${{ github.head_ref }}" != "preprod_odex25_mobile" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_mobile' from 'preprod_odex25_mobile' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_pos" && "${{ github.head_ref }}" != "preprod_odex25_pos" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_pos' from 'preprod_odex25_pos' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_project" && "${{ github.head_ref }}" != "preprod_odex25_project" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_project' from 'preprod_odex25_project' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_purchase" && "${{ github.head_ref }}" != "preprod_odex25_purchase" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_purchase' from 'preprod_odex25_purchase' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_realstate" && "${{ github.head_ref }}" != "preprod_odex25_realstate" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_realstate' from 'preprod_odex25_realstate' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_sales" && "${{ github.head_ref }}" != "preprod_odex25_sales" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_sales' from 'preprod_odex25_sales' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_survey" && "${{ github.head_ref }}" != "preprod_odex25_survey" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_survey' from 'preprod_odex25_survey' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_transactions" && "${{ github.head_ref }}" != "preprod_odex25_transactions" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_transactions' from 'preprod_odex25_transactions' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_website" && "${{ github.head_ref }}" != "preprod_odex25_website" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_website' from 'preprod_odex25_website' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_openeducat_erp-14.0.1.0" && "${{ github.head_ref }}" != "preprod_openeducat_erp-14.0.1.0" ]]; then
|
||||
echo "::error ::You can only merge to 'master_openeducat_erp-14.0.1.0' from 'preprod_openeducat_erp-14.0.1.0' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_ensan" && "${{ github.head_ref }}" != "preprod_odex25_ensan" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_ensan' from 'preprod_odex25_ensan' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_helpdesk" && "${{ github.head_ref }}" != "preprod_odex25_helpdesk" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_helpdesk' from 'preprod_odex25_helpdesk' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# ❌ Block ALL merges to 'master'
|
||||
if [[ "${{ github.base_ref }}" == "master" ]]; then
|
||||
echo "::error ::Merging to 'master' branch is not allowed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Merge validation passed."
|
||||
|
|
@ -93,17 +93,12 @@ class EmployeeOtherRequest(models.Model):
|
|||
if item.request_type == 'dependent':
|
||||
if not item.employee_dependant:
|
||||
raise exceptions.Warning(_('Please The dependents were not Included'))
|
||||
#if item.employee_id.contract_id.contract_status == 'single':
|
||||
#raise exceptions.Warning(_('You can not Add Fimaly record Because Employee is Single'))
|
||||
# if item.employee_id.contract_id.contract_status == 'single':
|
||||
# raise exceptions.Warning(_('You can not Add Fimaly record Because Employee is Single'))
|
||||
else:
|
||||
for rec in item.employee_dependant:
|
||||
if not rec.attachment:
|
||||
raise exceptions.Warning(_('Please Insert dependents Attachments Files Below!'))
|
||||
|
||||
|
||||
item.state = "submit"
|
||||
|
||||
|
||||
if not rec.attachment:
|
||||
raise exceptions.Warning(_('Please Insert dependents Attachments Files Below!'))
|
||||
|
||||
if item.request_type == 'qualification':
|
||||
if not item.qualification_employee:
|
||||
|
|
@ -111,22 +106,18 @@ class EmployeeOtherRequest(models.Model):
|
|||
for rec in item.qualification_employee:
|
||||
if not rec.attachment:
|
||||
raise exceptions.Warning(_('Please Insert Attachments Files Below!'))
|
||||
else:
|
||||
item.state = "submit"
|
||||
|
||||
if item.request_type == 'certification':
|
||||
if not item.certification_employee:
|
||||
raise exceptions.Warning(_('Please The qualification or certification were not Insert Below!'))
|
||||
for rec in item.certification_employee:
|
||||
if not rec.attachment:
|
||||
raise exceptions.Warning(_('Please Insert Attachments Files Below!'))
|
||||
else:
|
||||
item.state = "submit"
|
||||
|
||||
if item.request_type in ['suggestion', 'complaint']:
|
||||
item.state = "submit"
|
||||
else:
|
||||
if item.request_type in ['suggestion', 'complaint']:
|
||||
item.state = "submit"
|
||||
else:
|
||||
item.state = "confirm"
|
||||
item.state = "confirm"
|
||||
|
||||
def confirm(self):
|
||||
#self.state = 'confirm'
|
||||
|
|
@ -267,5 +258,5 @@ class HrCclassification(models.Model):
|
|||
_name = 'hr.classification'
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char(string='Name') # Translatable
|
||||
active = fields.Boolean(default=True, string='Active')
|
||||
name = fields.Char(string='الاسم') # Translatable
|
||||
active = fields.Boolean(default=True, string='نشط')
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<field name="model">employee.overtime.request</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<header>f
|
||||
<button name="submit" string="Submit" class="oe_highlight" type="object"
|
||||
states="draft" groups="base.group_user"/>
|
||||
|
||||
|
|
|
|||
|
|
@ -269,11 +269,11 @@
|
|||
<field name="name">hr.classification.form</field>
|
||||
<field name="model">hr.classification</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="HR Classification">
|
||||
<form string="تصنيفات المقترحات والشكاوي">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" string="الاسم"/>
|
||||
<field name="active" string="الحالة"/>
|
||||
<field name="active" string="نشط"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
|
|
@ -281,14 +281,14 @@
|
|||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="employee_hr_classification_actionn">
|
||||
<field name="name">HR Classifications</field>
|
||||
<field name="name">تصنيفات المقترحات والشكاوي</field>
|
||||
<field name="res_model">hr.classification</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<menuitem name="التصنيف " id="hr_classification_menu_item"
|
||||
<menuitem name="اعداد التصنيف " id="hr_classification_menu_item"
|
||||
parent="hr.hr_menu_configuration"
|
||||
action="employee_hr_classification_actionn"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -257,56 +257,60 @@ class StandardAppraisalLines(models.Model):
|
|||
_name = 'standard.appraisal.line'
|
||||
_rec_name = 'greed'
|
||||
_description = 'Standard Appraisal line'
|
||||
standard_appraisal_employee_line = fields.Many2one('hr.employee.appraisal')
|
||||
|
||||
greed = fields.Float()
|
||||
accrued_greed = fields.Float()
|
||||
question = fields.Char()
|
||||
great_level = fields.Float()
|
||||
priority = fields.Selection(
|
||||
[
|
||||
[ ('0', '0'),
|
||||
('1', '1'),
|
||||
('2', '2'),
|
||||
('3', '3'),
|
||||
('4', '4'),
|
||||
('5', '5'),
|
||||
('6', '6'),
|
||||
],
|
||||
string='Priority',
|
||||
compute='_compute_priority',
|
||||
inverse='_inverse_priority',
|
||||
store=True
|
||||
)
|
||||
from_greed = fields.Boolean(default=False)
|
||||
from_priority = fields.Boolean(default=False)
|
||||
|
||||
standard_appraisal_employee_line = fields.Many2one('hr.employee.appraisal')
|
||||
|
||||
@api.depends('greed', 'great_level')
|
||||
@api.onchange('greed', 'great_level')
|
||||
def _compute_priority(self):
|
||||
for rec in self:
|
||||
if rec.from_priority:
|
||||
# Reset and skip to avoid circular trigger
|
||||
rec.from_priority = False
|
||||
continue
|
||||
rec.from_greed = True
|
||||
if rec.great_level:
|
||||
value = rec.greed / (rec.great_level / 5)
|
||||
# 3.5
|
||||
if 1 <= value <= 2:
|
||||
if 1 <= value < 2:
|
||||
rec.priority = '1'
|
||||
elif 2 < value <= 3:
|
||||
elif 2 <= value < 3:
|
||||
rec.priority = '2'
|
||||
# 3.5
|
||||
elif 3 < value <= 4:
|
||||
elif 3 <= value < 4:
|
||||
rec.priority = '3'
|
||||
# 4
|
||||
elif 4 < value <= 5:
|
||||
elif 4 <= value < 5:
|
||||
rec.priority = '4'
|
||||
elif value > 5:
|
||||
elif value >= 5:
|
||||
rec.priority = '5'
|
||||
else:
|
||||
rec.priority = '0' # fallback
|
||||
rec.priority = '0'
|
||||
else:
|
||||
rec.priority = '0'
|
||||
|
||||
@api.onchange('priority')
|
||||
def _inverse_priority(self):
|
||||
for rec in self:
|
||||
if rec.from_greed:
|
||||
# Reset and skip to avoid circular trigger
|
||||
rec.from_greed = False
|
||||
continue
|
||||
rec.from_priority = True
|
||||
if rec.great_level and rec.priority:
|
||||
# 3*2
|
||||
# 2*4
|
||||
rec.greed = int(rec.priority) * (rec.great_level / 5)
|
||||
|
||||
@api.constrains('greed', 'great_level')
|
||||
|
|
|
|||
|
|
@ -566,6 +566,7 @@ class HrPayslipInput(models.Model):
|
|||
class HrPayslipRun(models.Model):
|
||||
_name = 'hr.payslip.run'
|
||||
_description = 'Payslip Batches'
|
||||
_order = 'date_start desc'
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
|
||||
name = fields.Char(required=True, readonly=True, states={'draft': [('readonly', False)]})
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
decoration-muted="state == 'cancel'" string="Payslips">
|
||||
<field name="number"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="name"/>
|
||||
<!-- <field name="name"/>-->
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
<field name="state"/>
|
||||
|
|
@ -201,25 +201,25 @@
|
|||
</group>
|
||||
</form>
|
||||
</field>
|
||||
<separator string="Other Inputs"/>
|
||||
<field name="input_line_ids" colspan="4" nolabel="1">
|
||||
<tree string="Input Data" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="amount"/>
|
||||
<field name="contract_id"/>
|
||||
<field name="sequence" invisible="True"/>
|
||||
</tree>
|
||||
<form string="Payslip Line">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="sequence"/>
|
||||
<field name="amount"/>
|
||||
<field name="contract_id"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
<!-- <separator string="Other Inputs"/>-->
|
||||
<!-- <field name="input_line_ids" colspan="4" nolabel="1">-->
|
||||
<!-- <tree string="Input Data" editable="bottom">-->
|
||||
<!-- <field name="name"/>-->
|
||||
<!-- <field name="code"/>-->
|
||||
<!-- <field name="amount"/>-->
|
||||
<!-- <field name="contract_id"/>-->
|
||||
<!-- <field name="sequence" invisible="True"/>-->
|
||||
<!-- </tree>-->
|
||||
<!-- <form string="Payslip Line">-->
|
||||
<!-- <group col="4">-->
|
||||
<!-- <field name="name"/>-->
|
||||
<!-- <field name="code"/>-->
|
||||
<!-- <field name="sequence"/>-->
|
||||
<!-- <field name="amount"/>-->
|
||||
<!-- <field name="contract_id"/>-->
|
||||
<!-- </group>-->
|
||||
<!-- </form>-->
|
||||
<!-- </field>-->
|
||||
</page>
|
||||
<page string="Salary Computation">
|
||||
<field name="line_ids" colspan="4" nolabel="1">
|
||||
|
|
@ -296,6 +296,7 @@
|
|||
<filter string="Draft" name="draft" domain="[('state','=','draft')]" help="Draft Slip"/>
|
||||
<filter string="Done" name="done" domain="[('state','=','done')]" help="Done Slip"/>
|
||||
<field name="employee_id"/>
|
||||
|
||||
<field name="payslip_run_id"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="Employees" name="employee_id" context="{'group_by':'employee_id'}"/>
|
||||
|
|
@ -444,7 +445,12 @@
|
|||
|
||||
<menuitem id="menu_hr_payslip_run"
|
||||
action="action_hr_payslip_run_tree"
|
||||
parent="menu_hr_payroll_root"/>
|
||||
parent="menu_hr_payroll_root"
|
||||
groups=
|
||||
"hr_base.group_executive_manager,
|
||||
hr_base.group_general_manager,
|
||||
exp_hr_payroll.group_hr_payroll_user"
|
||||
/>
|
||||
|
||||
<!-- Shortcuts -->
|
||||
|
||||
|
|
|
|||
|
|
@ -389,7 +389,6 @@ msgstr "مؤتمر"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__consultation
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__consultation
|
||||
#, python-format
|
||||
|
|
@ -488,8 +487,6 @@ msgstr "الفترة"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "Date Form Must Be Less than Date To"
|
||||
msgstr "تاريخ البداية يجب ان يكون قبل او يساوي تاريخ النهاية"
|
||||
|
|
@ -585,7 +582,6 @@ msgstr "الأيام"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__delegate
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__delegate
|
||||
#, python-format
|
||||
|
|
@ -613,7 +609,6 @@ msgstr "تصديق مدير الادارة"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__depute
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__depute
|
||||
#, python-format
|
||||
|
|
@ -687,16 +682,6 @@ msgstr "المدة بالايــام"
|
|||
msgid "Duration Hours"
|
||||
msgstr "المدة بالساعات"
|
||||
|
||||
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_especially_hours_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_tree_view
|
||||
|
||||
msgid "Total Hours"
|
||||
msgstr "مجموع الساعات"
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission__duration_type
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission_type__duration_type
|
||||
|
|
@ -717,7 +702,6 @@ msgstr "زمن خروج مبكر"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__emission
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__emission
|
||||
#, python-format
|
||||
|
|
@ -1021,7 +1005,6 @@ msgstr ""
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__work
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__work
|
||||
#, python-format
|
||||
|
|
@ -1113,7 +1096,6 @@ msgstr ""
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__legation
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__legation
|
||||
#, python-format
|
||||
|
|
@ -1376,8 +1358,6 @@ msgstr ""
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "Number of hours to must be greater than hours from"
|
||||
msgstr "ساعة البداية يجب ان تكون قبل ساعة النهاية"
|
||||
|
|
@ -1578,7 +1558,6 @@ msgstr ""
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__secondment
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__secondment
|
||||
#, python-format
|
||||
|
|
@ -1734,7 +1713,6 @@ msgstr "الحد الأعلى لعدد الموظفين يجب ان يكون ا
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "There is no total for rule : %s"
|
||||
msgstr " %s :ليس ههنالك قيمة للاستحقاق"
|
||||
|
|
@ -1810,7 +1788,6 @@ msgstr "نوع طلب التذكرة"
|
|||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_tree_view
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.hr_employees_training_lines_form
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_tree_view
|
||||
msgid "Total Hours"
|
||||
msgstr "مجموع الساعات"
|
||||
|
||||
|
|
@ -1836,9 +1813,6 @@ msgstr ""
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_group_employee_appraisal__mission_id
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.view_employee_training_inherit
|
||||
#, python-format
|
||||
|
|
@ -1986,25 +1960,18 @@ msgstr "ورشة عمل"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "Wrong Time Format.!"
|
||||
msgstr "صيغة الوقت خطآ.!"
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "Wrong percentage base or quantity defined for salary rule %s (%s)."
|
||||
msgstr " %s (%s)خطأ التاكد نسبة قاعده الرواتب "
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "Wrong quantity defined for salary rule %s (%s)."
|
||||
msgstr " %s (%s)خطأ التاكد من تعريف قاعده الرواتب "
|
||||
|
|
@ -2047,7 +2014,6 @@ msgstr "لايمكن حذف فئة التذكرة وهناك عقد موظف م
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "You can not delete record in state not in draft"
|
||||
msgstr "لا يمكن حذف السجل اذا كان في حالة غير مبدئي"
|
||||
|
|
@ -2150,9 +2116,6 @@ msgstr "الاسم"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#, python-format
|
||||
msgid "Company working calendar is not configured."
|
||||
msgstr "لم يتم ضبط تقويم عمل الشركة."
|
||||
|
|
@ -2164,7 +2127,6 @@ msgstr "أيام عمل فقط"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_employee__work_state__others
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_type__work_state__others
|
||||
#, python-format
|
||||
|
|
@ -2523,7 +2485,6 @@ msgstr "الحالة"
|
|||
|
||||
#. module: exp_official_mission
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: code:addons/exp_official_mission/models/hr_official_mission.py:0
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission__state__draft
|
||||
#: model:ir.model.fields.selection,name:exp_official_mission.selection__hr_official_mission_employee__status__draft
|
||||
#, python-format
|
||||
|
|
@ -2633,22 +2594,16 @@ msgid "Training Details"
|
|||
msgstr "تفاصيل الدورة التدريبية"
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission__training_details
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission_employee__training_details
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_form_view
|
||||
msgid "Training Table"
|
||||
msgstr "جدول الدورة"
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission__training_details
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission_employee__training_details
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_form_view
|
||||
msgid "Description"
|
||||
msgstr "وصف"
|
||||
|
||||
#. module: exp_official_mission
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission__training_details
|
||||
#: model:ir.model.fields,field_description:exp_official_mission.field_hr_official_mission_employee__training_details
|
||||
#: model_terms:ir.ui.view,arch_db:exp_official_mission.employee_training_form_view
|
||||
msgid "Trainer"
|
||||
msgstr "المدرب"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ class EmployeeAppraisal(models.Model):
|
|||
_inherit= 'hr.employee.appraisal'
|
||||
|
||||
mission_id = fields.Many2one('hr.official.mission', string="Training Course",domain=[("mission_type.work_state", "=", "training")])
|
||||
course_name = fields.Many2one(related='mission_id.course_name',string="Course Name")
|
||||
course_name = fields.Many2one(related='mission_id.course_name',string="Course Name",store=True)
|
||||
|
||||
@api.onchange('department_id', 'mission_id', 'appraisal_type')
|
||||
def employee_ids_domain(self):
|
||||
|
|
|
|||
|
|
@ -49,7 +49,12 @@
|
|||
<field name="model_id" ref="model_hr_payslip"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('exp_payroll_custom.group_hr_payroll_contributor')),
|
||||
(4, ref('hr.group_hr_user')),(4, ref('hr.group_hr_manager'))]"/>
|
||||
(4, ref('hr.group_hr_user')),(4, ref('hr.group_hr_manager')),
|
||||
(4, ref('hr_base.group_general_manager')),
|
||||
(4, ref('exp_hr_payroll.group_hr_payroll_user')),
|
||||
(4, ref('hr_base.group_executive_manager')),
|
||||
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_payslip_rule_comp_rule" model="ir.rule">
|
||||
|
|
|
|||
|
|
@ -98,7 +98,9 @@
|
|||
|
||||
<menuitem id="employee_advantage_menu" name="Employee Allowances and Deductions"
|
||||
parent="exp_hr_payroll.menu_hr_payroll_root" action="employee_advantage_list_action" sequence="10"
|
||||
groups="hr.group_hr_user,hr.group_hr_manager"/>
|
||||
groups="hr.group_hr_user,hr.group_hr_manager,hr_base.group_executive_manager,hr_base.group_general_manager,exp_hr_payroll.group_hr_payroll_user"
|
||||
|
||||
/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,15 @@
|
|||
</record>
|
||||
|
||||
<menuitem id="employee_reward_menu" name="Employee Reward and Allowances"
|
||||
parent="exp_hr_payroll.menu_hr_payroll_root" action="employee_reward_list_action" sequence="10"
|
||||
groups="hr.group_hr_user,hr_base.group_department_manager,hr_base.group_division_manager,hr_base.group_general_manager"/>
|
||||
parent="exp_hr_payroll.menu_hr_payroll_root"
|
||||
action="employee_reward_list_action" sequence="10"
|
||||
groups=
|
||||
"hr_base.group_executive_manager,
|
||||
hr.group_hr_user,
|
||||
hr_base.group_department_manager,
|
||||
hr_base.group_division_manager,
|
||||
hr_base.group_general_manager,
|
||||
exp_hr_payroll.group_hr_payroll_user"/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree position="replace">
|
||||
<tree decoration-success="state=='transfered'" decoration-info="state == 'draft'">
|
||||
<field name="name"/>
|
||||
<!-- <field name="name"/>-->
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="credit_note" invisible="1"/>
|
||||
|
|
@ -289,7 +289,7 @@
|
|||
<!--field name="number"/-->
|
||||
<field name="employee_no" string="Employee Number"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="name"/>
|
||||
<!-- <field name="name"/>-->
|
||||
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue