[IMP] hr: Add signature in reports

This commit is contained in:
younes 2025-10-23 08:10:54 +01:00
parent f666b72333
commit 09ae939129
8 changed files with 194 additions and 68 deletions

View File

@ -8,7 +8,7 @@ on:
- dev_odex25_base - dev_odex25_base
- dev_odex25_dms - dev_odex25_dms
- dev_odex25_fleet - dev_odex25_fleet
- dev_odex25_ENSAN - dev_odex25_helpdesk
- dev_odex25_hr - dev_odex25_hr
- dev_odex25_inventory - dev_odex25_inventory
- dev_odex25_maintenance - dev_odex25_maintenance
@ -23,12 +23,13 @@ on:
- dev_odex25_website - dev_odex25_website
- dev_openeducat_erp-14.0.1.0 - dev_openeducat_erp-14.0.1.0
- dev_odex25_ensan - dev_odex25_ensan
- dev_odex25_donation
- preprod_odex-event - preprod_odex-event
- preprod_odex25_accounting - preprod_odex25_accounting
- preprod_odex25_base - preprod_odex25_base
- preprod_odex25_dms - preprod_odex25_dms
- preprod_odex25_fleet - preprod_odex25_fleet
- preprod_odex25_ENSAN - preprod_odex25_helpdesk
- preprod_odex25_hr - preprod_odex25_hr
- preprod_odex25_inventory - preprod_odex25_inventory
- preprod_odex25_maintenance - preprod_odex25_maintenance
@ -43,6 +44,7 @@ on:
- preprod_odex25_website - preprod_odex25_website
- preprod_openeducat_erp-14.0.1.0 - preprod_openeducat_erp-14.0.1.0
- preprod_odex25_ensan - preprod_odex25_ensan
- preprod_odex25_donation
workflow_dispatch: workflow_dispatch:
inputs: inputs:
@ -60,7 +62,29 @@ jobs:
deploy_preprod_server: deploy_preprod_server:
name: Deploy to Preprod Servers name: Deploy to Preprod Servers
runs-on: app-sever-project-runner runs-on: app-sever-project-runner
if: (github.ref == 'refs/heads/preprod_odex-event' || github.ref == 'refs/heads/preprod_odex25_accounting' || github.ref == 'refs/heads/preprod_odex25_base' || github.ref == 'refs/heads/preprod_odex25_dms' || github.ref == 'refs/heads/preprod_odex25_fleet' || github.ref == 'refs/heads/preprod_odex25_ENSAN' || github.ref == 'refs/heads/preprod_odex25_hr' || github.ref == 'refs/heads/preprod_odex25_inventory' || github.ref == 'refs/heads/preprod_odex25_maintenance' || github.ref == 'refs/heads/preprod_odex25_mobile' || github.ref == 'refs/heads/preprod_odex25_pos' || github.ref == 'refs/heads/preprod_odex25_project' || github.ref == 'refs/heads/preprod_odex25_purchase' || github.ref == 'refs/heads/preprod_odex25_realstate' || github.ref == 'refs/heads/preprod_odex25_sales' || github.ref == 'refs/heads/preprod_odex25_survey' || github.ref == 'refs/heads/preprod_odex25_transactions' || github.ref == 'refs/heads/preprod_odex25_website' || github.ref == 'refs/heads/preprod_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/preprod_odex25_ensan') || (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'preprod') if: |
(github.ref == 'refs/heads/preprod_odex-event' ||
github.ref == 'refs/heads/preprod_odex25_accounting' ||
github.ref == 'refs/heads/preprod_odex25_base' ||
github.ref == 'refs/heads/preprod_odex25_dms' ||
github.ref == 'refs/heads/preprod_odex25_fleet' ||
github.ref == 'refs/heads/preprod_odex25_helpdesk' ||
github.ref == 'refs/heads/preprod_odex25_hr' ||
github.ref == 'refs/heads/preprod_odex25_inventory' ||
github.ref == 'refs/heads/preprod_odex25_maintenance' ||
github.ref == 'refs/heads/preprod_odex25_mobile' ||
github.ref == 'refs/heads/preprod_odex25_pos' ||
github.ref == 'refs/heads/preprod_odex25_project' ||
github.ref == 'refs/heads/preprod_odex25_purchase' ||
github.ref == 'refs/heads/preprod_odex25_realstate' ||
github.ref == 'refs/heads/preprod_odex25_sales' ||
github.ref == 'refs/heads/preprod_odex25_survey' ||
github.ref == 'refs/heads/preprod_odex25_transactions' ||
github.ref == 'refs/heads/preprod_odex25_website' ||
github.ref == 'refs/heads/preprod_openeducat_erp-14.0.1.0' ||
github.ref == 'refs/heads/preprod_odex25_ensan' ||
github.ref == 'refs/heads/preprod_odex25_donation')
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'preprod')
steps: steps:
- name: Checkout And Restart Project - name: Checkout And Restart Project
run: | run: |
@ -76,7 +100,29 @@ jobs:
deploy_test_server: deploy_test_server:
name: Deploy to Dev Servers name: Deploy to Dev Servers
runs-on: app-sever-project-runner runs-on: app-sever-project-runner
if: (github.ref == 'refs/heads/dev_odex-event' || github.ref == 'refs/heads/dev_odex25_accounting' || github.ref == 'refs/heads/dev_odex25_base' || github.ref == 'refs/heads/dev_odex25_dms' || github.ref == 'refs/heads/dev_odex25_fleet' || github.ref == 'refs/heads/dev_odex25_ENSAN' || github.ref == 'refs/heads/dev_odex25_hr' || github.ref == 'refs/heads/dev_odex25_inventory' || github.ref == 'refs/heads/dev_odex25_maintenance' || github.ref == 'refs/heads/dev_odex25_mobile' || github.ref == 'refs/heads/dev_odex25_pos' || github.ref == 'refs/heads/dev_odex25_project' || github.ref == 'refs/heads/dev_odex25_purchase' || github.ref == 'refs/heads/dev_odex25_realstate' || github.ref == 'refs/heads/dev_odex25_sales' || github.ref == 'refs/heads/dev_odex25_survey' || github.ref == 'refs/heads/dev_odex25_transactions' || github.ref == 'refs/heads/dev_odex25_website' || github.ref == 'refs/heads/dev_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/dev_odex25_ensan') || (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'dev') if: |
(github.ref == 'refs/heads/dev_odex-event' ||
github.ref == 'refs/heads/dev_odex25_accounting' ||
github.ref == 'refs/heads/dev_odex25_base' ||
github.ref == 'refs/heads/dev_odex25_dms' ||
github.ref == 'refs/heads/dev_odex25_fleet' ||
github.ref == 'refs/heads/dev_odex25_helpdesk' ||
github.ref == 'refs/heads/dev_odex25_hr' ||
github.ref == 'refs/heads/dev_odex25_inventory' ||
github.ref == 'refs/heads/dev_odex25_maintenance' ||
github.ref == 'refs/heads/dev_odex25_mobile' ||
github.ref == 'refs/heads/dev_odex25_pos' ||
github.ref == 'refs/heads/dev_odex25_project' ||
github.ref == 'refs/heads/dev_odex25_purchase' ||
github.ref == 'refs/heads/dev_odex25_realstate' ||
github.ref == 'refs/heads/dev_odex25_sales' ||
github.ref == 'refs/heads/dev_odex25_survey' ||
github.ref == 'refs/heads/dev_odex25_transactions' ||
github.ref == 'refs/heads/dev_odex25_website' ||
github.ref == 'refs/heads/dev_openeducat_erp-14.0.1.0' ||
github.ref == 'refs/heads/dev_odex25_ensan' ||
github.ref == 'refs/heads/dev_odex25_donation')
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'dev')
steps: steps:
- name: Checkout And Restart Project - name: Checkout And Restart Project
run: | run: |
@ -92,7 +138,29 @@ jobs:
ensan_vpn_stage_server: ensan_vpn_stage_server:
name: Deploy to Ensan Stage name: Deploy to Ensan Stage
runs-on: new-ensan-vpn-client-server-runner runs-on: new-ensan-vpn-client-server-runner
if: (github.ref == 'refs/heads/preprod_odex-event' || github.ref == 'refs/heads/preprod_odex25_accounting' || github.ref == 'refs/heads/preprod_odex25_base' || github.ref == 'refs/heads/preprod_odex25_dms' || github.ref == 'refs/heads/preprod_odex25_fleet' || github.ref == 'refs/heads/preprod_odex25_ENSAN' || github.ref == 'refs/heads/preprod_odex25_hr' || github.ref == 'refs/heads/preprod_odex25_inventory' || github.ref == 'refs/heads/preprod_odex25_maintenance' || github.ref == 'refs/heads/preprod_odex25_mobile' || github.ref == 'refs/heads/preprod_odex25_pos' || github.ref == 'refs/heads/preprod_odex25_project' || github.ref == 'refs/heads/preprod_odex25_purchase' || github.ref == 'refs/heads/preprod_odex25_realstate' || github.ref == 'refs/heads/preprod_odex25_sales' || github.ref == 'refs/heads/preprod_odex25_survey' || github.ref == 'refs/heads/preprod_odex25_transactions' || github.ref == 'refs/heads/preprod_odex25_website' || github.ref == 'refs/heads/preprod_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/preprod_odex25_ensan') || (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'preprod') if: |
(github.ref == 'refs/heads/preprod_odex-event' ||
github.ref == 'refs/heads/preprod_odex25_accounting' ||
github.ref == 'refs/heads/preprod_odex25_base' ||
github.ref == 'refs/heads/preprod_odex25_dms' ||
github.ref == 'refs/heads/preprod_odex25_fleet' ||
github.ref == 'refs/heads/preprod_odex25_helpdesk' ||
github.ref == 'refs/heads/preprod_odex25_hr' ||
github.ref == 'refs/heads/preprod_odex25_inventory' ||
github.ref == 'refs/heads/preprod_odex25_maintenance' ||
github.ref == 'refs/heads/preprod_odex25_mobile' ||
github.ref == 'refs/heads/preprod_odex25_pos' ||
github.ref == 'refs/heads/preprod_odex25_project' ||
github.ref == 'refs/heads/preprod_odex25_purchase' ||
github.ref == 'refs/heads/preprod_odex25_realstate' ||
github.ref == 'refs/heads/preprod_odex25_sales' ||
github.ref == 'refs/heads/preprod_odex25_survey' ||
github.ref == 'refs/heads/preprod_odex25_transactions' ||
github.ref == 'refs/heads/preprod_odex25_website' ||
github.ref == 'refs/heads/preprod_openeducat_erp-14.0.1.0' ||
github.ref == 'refs/heads/preprod_odex25_ensan' ||
github.ref == 'refs/heads/preprod_odex25_donation')
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'preprod')
steps: steps:
- name: Checkout And Restart Project - name: Checkout And Restart Project
run: | run: |

View File

@ -195,15 +195,31 @@
<!-- </div>--> <!-- </div>-->
<br/> <br/>
<br/> <br/>
<table style="width:100%; margin-top:60px; border:0;" dir="ltr">
<tr>
<td style="text-align:center; vertical-align:top;">
<div style="text-align:center;">
<t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature">
<img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature)"
style="max-height: 5cm; max-width: 10cm"/>
</t>
<div style="margin-top:8px;font-size: 12pt;">
<span style="font-weight:bold;"
t-esc="env.user.sudo().company_id.authorized_position"/>
<br/> <br/>
<h4 style="text-align: center; font-size: 12pt;"> <span style="font-weight:bold;"
<span>رئيس قسم الموارد البشرية</span> t-esc="env.user.sudo().company_id.authorized_signatory_id.name"/>
<br/> </div>
<span>Director of Human Resource</span> </div>
<br/> </td>
<span t-esc="env.user.sudo().company_id.hr_manager_id.name"/> <td style="text-align:center; vertical-align:top;">
<t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials">
</h4> <img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials)"
style="max-height: 12cm; max-width: 12cm"/>
</t>
</td>
</tr>
</table>
</div> </div>
</t> </t>

View File

@ -173,28 +173,34 @@
</table> </table>
</center> </center>
</div> </div>
<br/> <br/>
<br/> <br/>
<br/> <br/>
<table style="width:100%; margin-top:60px; border:0;" dir="ltr">
<tr>
<td style="text-align:center; vertical-align:top;">
<div style="text-align:center;">
<t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature">
<img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature)"
style="max-height: 5cm; max-width: 10cm"/>
</t>
<div style="margin-top:8px;font-size: 14pt;">
<span style="font-weight:bold;"
t-esc="env.user.sudo().company_id.authorized_position"/>
<br/> <br/>
<!-- todo start --> <span style="font-weight:bold;"
<!-- <div class="">--> t-esc="env.user.sudo().company_id.authorized_signatory_id.name"/>
<!-- <div style="float:left;margin-left:15px;" class="left">--> </div>
<!-- <span t-field="env.user.sudo().company_id.hr_manager_id.user_id.sign_signature" t-options="{&quot;widget&quot;: &quot;image&quot;,&quot;style&quot;:&quot;width: 90px;height:90px;&quot;}"/>--> </div>
<!-- </div>--> </td>
<!-- <div style="float:right" class="signature right">--> <td style="text-align:center; vertical-align:top;">
<!-- <span t-field="env.user.sudo().company_id.hr_manager_id.user_id.sign_initials" t-options="{&quot;widget&quot;: &quot;image&quot;,&quot;style&quot;:&quot;width: 200px;height:70px;&quot;}"/>--> <t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials">
<!-- </div>--> <img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials)"
<!-- </div>--> style="max-height: 12cm; max-width: 12cm"/>
<!-- todo end --> </t>
<h4 style="text-align: center; font-size: 14pt; margin-top: 10px;"> </td>
<span>مدير إدارة الموارد البشرية</span> </tr>
<br/> </table>
<span>Director of Human Resource</span>
<br/>
<span t-esc="env.user.sudo().company_id.hr_manager_id.name"/>
</h4>
<!-- <div class="column">--> <!-- <div class="column">-->
<!-- <div align="center">--> <!-- <div align="center">-->
<!-- <span t-field="env.user.sudo().company_id.hr_manager_id.user_id.sign_signature"--> <!-- <span t-field="env.user.sudo().company_id.hr_manager_id.user_id.sign_signature"-->

View File

@ -168,28 +168,34 @@
</center> </center>
</div> </div>
<br/> <br/>
<br/> <br/>
<br/> <br/>
<table style="width:100%; margin-top:60px; border:0;" dir="ltr">
<tr>
<td style="text-align:center; vertical-align:top;">
<div style="text-align:center;">
<t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature">
<img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature)"
style="max-height: 5cm; max-width: 10cm"/>
</t>
<div style="margin-top:8px;font-size: 14pt;">
<span style="font-weight:bold;"
t-esc="env.user.sudo().company_id.authorized_position"/>
<br/> <br/>
<!-- todo start --> <span style="font-weight:bold;"
<!-- <div class="">--> t-esc="env.user.sudo().company_id.authorized_signatory_id.name"/>
<!-- <div style='float:left;margin-left:15px;' class="left">--> </div>
<!-- <span t-field="env.user.sudo().company_id.hr_manager_id.user_id.sign_signature" t-options='{"widget": "image","style":"width: 90px;height:90px;"}'/>--> </div>
<!-- </div>--> </td>
<!-- <div style='float:right' class="signature right">--> <td style="text-align:center; vertical-align:top;">
<!-- <span t-field="env.user.sudo().company_id.hr_manager_id.user_id.sign_initials" t-options='{"widget": "image","style":"width: 200px;height:70px;"}'/>--> <t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials">
<!-- </div>--> <img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials)"
<!-- </div>--> style="max-height: 12cm; max-width: 12cm"/>
<!-- todo end --> </t>
<h4 style="text-align: center; font-size: 14pt; margin-top: 10px;"> </td>
<span>مدير إدارة الموارد البشرية</span> </tr>
<br/> </table>
<span>Director of Human Resource</span>
<br/>
<span t-esc="env.user.sudo().company_id.hr_manager_id.name"/>
</h4>
<!--div class="row" style="font-family: 'Sakkal Majalla'!important;"> <!--div class="row" style="font-family: 'Sakkal Majalla'!important;">
<div class="col-xs-5"> <div class="col-xs-5">
<p style="direction: ltr;">* <span>Any Alteration or erasures will void this form</span></p> <p style="direction: ltr;">* <span>Any Alteration or erasures will void this form</span></p>

View File

@ -67,12 +67,14 @@
بأن بأن
الأستاذ/ة الأستاذ/ة
<span t-field="o.employee_id.name"/> <span t-field="o.employee_id.name"/>
رقم الهوية (<t t-if="o.employee_id.country_id.name == 'Saudi Arabia' or o.employee_id.country_id.name == 'المملكة العربية السعودية'"> رقم الهوية (
<t t-if="o.employee_id.country_id.name == 'Saudi Arabia' or o.employee_id.country_id.name == 'المملكة العربية السعودية'">
<span t-field="o.employee_id.saudi_number.saudi_id"/> <span t-field="o.employee_id.saudi_number.saudi_id"/>
</t> </t>
<t t-else=""> <t t-else="">
<span t-field="o.employee_id.iqama_number.iqama_id"/> <span t-field="o.employee_id.iqama_number.iqama_id"/>
</t>) </t>
)
يعمل لدينا بوظيفة (<span t-field="o.employee_id.job_id.name"/>) من تاريخ يعمل لدينا بوظيفة (<span t-field="o.employee_id.job_id.name"/>) من تاريخ
<span t-esc="o.employee_id.contract_id.date_start"/> <span t-esc="o.employee_id.contract_id.date_start"/>
ويتقاضى/تتقاضى راتب اساسي وقدره (<span t-field="o.employee_id.contract_id.salary"/>) ويتقاضى/تتقاضى راتب اساسي وقدره (<span t-field="o.employee_id.contract_id.salary"/>)
@ -86,21 +88,37 @@
من تحويـل راتبه إلـى حسـابه من تحويـل راتبه إلـى حسـابه
(<span t-esc="o.employee_id.bank_account_id.acc_number"/>) لدى (<span t-esc="o.employee_id.bank_account_id.acc_number"/>) لدى
<span t-esc="o.employee_id.bank_code"/> <span t-esc="o.employee_id.bank_code"/>
كما نتعهد بإبلاغكم في حالة فصله عن العمل أو إنتهاء خدماته لدينا لأي سبب وكما نتعهد بتحويل مكافأة نهاية خدمته وتعويضاته إلى الحساب المذكور أعلاه حتى يردنا إخلاء طرف من قبلكم. كما نتعهد بإبلاغكم في حالة فصله عن العمل أو إنتهاء خدماته لدينا لأي سبب وكما نتعهد
بتحويل مكافأة نهاية خدمته وتعويضاته إلى الحساب المذكور أعلاه حتى يردنا إخلاء طرف من
قبلكم.
</p> </p>
<br/> <br/>
<h4 style="text-align: center;">
<span>مدير إدارة الموارد البشرية</span>
</h4>
<h4 style="text-align: center;">
<span>Director of Human Resource</span>
<br/> <br/>
<table style="width:100%; margin-top:60px; border:0;" dir="ltr">
<tr>
<td style="text-align:center; vertical-align:top;">
<div style="text-align:center;">
<t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature">
<img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_signature)"
style="max-height: 5cm; max-width: 10cm"/>
</t>
<div style="margin-top:8px;">
<span style="font-weight:bold;"
t-esc="env.user.sudo().company_id.authorized_position"/>
<br/> <br/>
<span t-esc="env.user.sudo().company_id.hr_manager_id.name"/> <span style="font-weight:bold;"
</h4> t-esc="env.user.sudo().company_id.authorized_signatory_id.name"/>
<br/> </div>
</div>
</td>
<td style="text-align:center; vertical-align:top;">
<t t-if="env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials">
<img t-att-src="image_data_uri(env.user.sudo().company_id.authorized_signatory_id.user_id.sign_initials)"
style="max-height: 12cm; max-width: 12cm"/>
</t>
</td>
</tr>
</table>
</t> </t>
</div> </div>
</t> </t>

View File

@ -4885,4 +4885,12 @@ msgstr "تاريخ اشتراك التأمينات الاجتماعية يجب
msgid "The Gosi subscription date Must Be Less Than Today" msgid "The Gosi subscription date Must Be Less Than Today"
msgstr "تاريخ إشتراك التأمينات الإجتماعية يجب أن يكون أقل من تاريخ اليوم" msgstr "تاريخ إشتراك التأمينات الإجتماعية يجب أن يكون أقل من تاريخ اليوم"
#. module: hr_base
#: model:ir.model.fields,field_description:hr_base.field_res_company__authorized_position
msgid "Authorized Position"
msgstr "المسمي الوظيفي للموفوض"
#. module: hr_base
#: model:ir.model.fields,field_description:hr_base.field_res_company__authorized_signatory_id
msgid "Authorized Signatory"
msgstr "الموظف المفوض بالتوقيع"

View File

@ -19,6 +19,8 @@ class ResCompanyExt(models.Model):
sponsor_link = fields.One2many('res.sponsor', 'sponsor_tree', string="Sponsors") sponsor_link = fields.One2many('res.sponsor', 'sponsor_tree', string="Sponsors")
hr_email = fields.Char(string='HR Email') hr_email = fields.Char(string='HR Email')
hr_manager_id = fields.Many2one('hr.employee', string='HR Manager') hr_manager_id = fields.Many2one('hr.employee', string='HR Manager')
authorized_signatory_id = fields.Many2one('hr.employee',string="Authorized Signatory")
authorized_position = fields.Char(string="Authorized Position")
saudi_percentage = fields.Integer(string='Saudi Percentage %') saudi_percentage = fields.Integer(string='Saudi Percentage %')
contract_end_reminder = fields.Integer(string='Contract End Reminder',default=60) contract_end_reminder = fields.Integer(string='Contract End Reminder',default=60)

View File

@ -112,6 +112,8 @@
<field name="it_manager_id"/> <field name="it_manager_id"/>
<field name="cyber_security_id"/> <field name="cyber_security_id"/>
<field name="admin_manager_id"/> <field name="admin_manager_id"/>
<field name="authorized_signatory_id"/>
<field name="authorized_position"/>
<field name="gosi_active_date" required="1"/> <field name="gosi_active_date" required="1"/>
</group> </group>
</page> </page>