Compare commits

...

50 Commits

Author SHA1 Message Date
administrator d8f9a766f7 24-06-2025
Merge branch 'develop'
2025-06-24 15:24:08 +05:30
administrator 1b513a5666 Initial commit 2025-06-24 15:23:38 +05:30
administrator a7110eff7e Initial commit 2025-06-24 15:23:38 +05:30
administrator 571d7ae9c9 Initial commit 2025-06-24 15:23:38 +05:30
administrator 7026a05260 Initial commit 2025-06-24 15:23:38 +05:30
administrator 02e08b9dba Initial commit 2025-06-24 15:23:38 +05:30
administrator 728651278e Initial commit 2025-06-24 15:23:38 +05:30
administrator 2fe5c74c63 Initial commit 2025-06-24 15:23:38 +05:30
administrator aabb7e786d Initial commit 2025-06-24 15:23:38 +05:30
administrator f5e2787ce4 Initial commit 2025-06-24 15:23:38 +05:30
administrator 1d00debd40 Initial commit 2025-06-24 15:23:37 +05:30
administrator 7f7a47d2c7 Initial commit 2025-06-24 15:23:37 +05:30
administrator 01a4b67c6d Initial commit 2025-06-24 15:23:37 +05:30
administrator c97d57c679 Initial commit 2025-06-24 15:23:37 +05:30
administrator 10ec9c3f1f Initial commit 2025-06-24 15:23:37 +05:30
administrator 29231ebe69 Initial commit 2025-06-24 15:23:37 +05:30
administrator b1a021aa57 Initial commit 2025-06-24 15:23:37 +05:30
administrator 88e2bfdd57 Initial commit 2025-06-24 15:23:37 +05:30
administrator cd1d3d5f7b Initial commit 2025-06-24 15:23:37 +05:30
administrator 4583286e99 Initial commit 2025-06-24 15:23:37 +05:30
administrator 36ca8544b7 Initial commit 2025-06-24 15:23:37 +05:30
administrator de32d15005 Initial commit 2025-06-24 15:23:37 +05:30
administrator 311bf1768e pull commit 2025-06-24 15:23:37 +05:30
administrator 33112a0ab7 Initial commit 2025-06-24 15:23:37 +05:30
Pranay c36a8016be TimeOff Fix 2025-06-24 15:23:37 +05:30
Pranay 6f58131b7b time-off FIX 2025-06-24 15:23:37 +05:30
Pranay 1b1f3b9ced Recruitment Changes 2025-06-24 15:23:37 +05:30
Pranay b5e4b65936 fix whatsapp 2025-06-24 15:23:37 +05:30
Pranay 9859c253e5 update whatsapp code 2025-06-24 15:23:37 +05:30
administrator 178e052261 Initial commit 2025-06-24 15:23:37 +05:30
administrator 3a20f753c2 Initial commit 2025-06-24 15:23:37 +05:30
administrator cceabf3403 Initial commit 2025-06-24 15:23:36 +05:30
administrator 2fe0960f9c Initial commit 2025-06-24 15:23:36 +05:30
administrator 3929caa732 Initial commit 2025-06-24 15:23:36 +05:30
administrator a301468cb5 Initial commit 2025-06-24 15:23:36 +05:30
administrator b006f5fc59 Initial commit 2025-06-24 15:23:36 +05:30
administrator 97fd24d58e Initial commit 2025-06-24 15:23:36 +05:30
administrator 7da2f09165 Initial commit 2025-06-24 15:23:36 +05:30
administrator 5212ae90c4 Initial commit 2025-06-24 15:23:36 +05:30
administrator 7dda1e50b2 Initial commit 2025-06-24 15:23:36 +05:30
administrator dfed07a1db Initial commit 2025-06-24 15:23:36 +05:30
administrator 2e78e5c658 Initial commit 2025-06-24 15:23:36 +05:30
administrator 9283895246 Initial commit 2025-06-24 15:23:36 +05:30
administrator 8702da4957 Initial commit 2025-06-24 15:23:36 +05:30
administrator 6ba601d534 Initial commit 2025-06-24 15:23:36 +05:30
administrator 0e5c58c8e4 Initial commit 2025-06-24 15:23:36 +05:30
administrator 93bd39a75f Initial commit 2025-06-24 15:23:36 +05:30
administrator 9f8e5cd946 Initial commit 2025-06-24 15:23:36 +05:30
administrator db1e49c026 Initial commit 2025-06-24 15:23:36 +05:30
Pranay 95a321fd10 JOD FORM ISSUE 2025-06-24 15:20:51 +05:30
4 changed files with 371 additions and 350 deletions

View File

@ -247,17 +247,16 @@ class website_hr_recruitment_applications(http.Controller):
}) for education in education_data
]
# employer details
employer_history_data_json = post.get('employer_history_data_json', '[]')
employer_data = json.loads(employer_history_data_json) if employer_history_data_json else []
if employer_data:
applicant_data['employer_history'] = [
(0,0,{
'company_name': company.get('company_name',''),
(0, 0, {
'company_name': company.get('company_name', ''),
'designation': company.get('designation', ''),
'date_of_joining': datetime.strptime(company.get('date_of_joining'), '%Y-%m-%d').date() if company.get('date_of_joining') else '',
'last_working_day': datetime.strptime(company.get('last_working_day'), '%Y-%m-%d').date() if company.get('last_working_day') else '',
'date_of_joining': self.safe_date_parse(company.get('date_of_joining')),
'last_working_day': self.safe_date_parse(company.get('last_working_day')),
'ctc': company.get('ctc', ''),
}) for company in employer_data
]
@ -284,6 +283,11 @@ class website_hr_recruitment_applications(http.Controller):
return request.render("hr_recruitment_extended.thank_you_template")
def safe_date_parse(self,date_str):
try:
return datetime.strptime(date_str, '%Y-%m-%d').date() if date_str else None
except (ValueError, TypeError):
return None

View File

@ -7,5 +7,41 @@
<field name="type">binary</field>
</record>
<!--Skill Types-->
<record id="hr_skill_type_additional" model="hr.skill.type">
<field name="name">Others</field>
</record>
<!--Skill Levels-->
<!--Programming-->
<record id="hr_skill_level_additional_beginner" model="hr.skill.level">
<field name="name">Beginner</field>
<field name="default_level">1</field>
<field name="level_progress">15</field>
<field name="skill_type_id" ref="hr_skill_type_additional"/>
</record>
<record id="hr_skill_level_additional_elementary" model="hr.skill.level">
<field name="name">Elementary</field>
<field name="level_progress">25</field>
<field name="skill_type_id" ref="hr_skill_type_additional"/>
</record>
<record id="hr_skill_level_additional_intermediate" model="hr.skill.level">
<field name="name">Intermediate</field>
<field name="level_progress">50</field>
<field name="skill_type_id" ref="hr_skill_type_additional"/>
</record>
<record id="hr_skill_level_additional_advanced" model="hr.skill.level">
<field name="name">Advanced</field>
<field name="level_progress">80</field>
<field name="skill_type_id" ref="hr_skill_type_additional"/>
</record>
<record id="hr_skill_level_additional_expert" model="hr.skill.level">
<field name="name">Expert</field>
<field name="level_progress">100</field>
<field name="skill_type_id" ref="hr_skill_type_additional"/>
</record>
</data>
</odoo>

View File

@ -1,350 +1,316 @@
<odoo>
<!-- <template id="joining_form_custom_external_layout_standard">-->
<!-- <div t-attf-class="header">-->
<!-- </div>-->
<!-- <div t-attf-class="footer o_company_#{company.id}_layout {{report_type != 'pdf' and 'mt-auto'}}">-->
<!-- <div class="o_footer_content d-flex border-top pt-2">-->
<!-- <div class="flex-grow-1 text-start me-2" t-field="company.report_footer"/>-->
<!-- <div class="text-end text-muted">-->
<!-- <div t-if="report_type == 'pdf' and display_name_in_footer" t-out="o.name">(document name)</div>-->
<!-- <div t-if="report_type == 'pdf'">Page <span class="page"/> / <span class="topage"/></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </template>-->
<odoo>
<template id="employee_joining_form_template">
<t t-call="web.external_layout">
<main class="page"
style="margin: 0px; padding: 0px; font-size: 16px; font-family: 'Arial', sans-serif;">
<t t-foreach="docs" t-as="doc">
<!-- <template id="joining_form_custom_external_layout">-->
<!-- <t t-if="not o" t-set="o" t-value="doc"/>-->
<!-- Candidate Image -->
<t t-if="doc.candidate_id.candidate_image">
<div style="text-align: center; margin-bottom: 30px;">
<img t-attf-src="data:image/png;base64,#{doc.candidate_id.candidate_image}"
style="width: 280px; height: 400px; object-fit: cover; border: 2px solid #333; border-radius: 8px;"/>
</div>
</t>
<!-- <t t-if="not company">-->
<!-- &lt;!&ndash; Multicompany &ndash;&gt;-->
<!-- <t t-if="company_id">-->
<!-- <t t-set="company" t-value="company_id"/>-->
<!-- </t>-->
<!-- <t t-elif="o and 'company_id' in o and o.company_id.sudo()">-->
<!-- <t t-set="company" t-value="o.company_id.sudo()"/>-->
<!-- </t>-->
<!-- <t t-else="else">-->
<!-- <t t-set="company" t-value="res_company"/>-->
<!-- </t>-->
<!-- </t>-->
<!-- <t t-if="company.external_report_layout_id" t-call="{{company.external_report_layout_id.sudo().key}}"><t t-out="0"/></t>-->
<!-- <t t-else="else" t-call="hr_recruitment_extended.joining_form_custom_external_layout_standard"><t t-out="0"/></t>-->
<!-- </template>-->
<odoo>
<template id="employee_joining_form_template">
<t t-call="web.external_layout">
<main class="page" style="margin: 0px; padding: 0px; font-size: 16px; font-family: 'Arial', sans-serif;">
<t t-foreach="docs" t-as="doc">
<!-- Candidate Image -->
<t t-if="doc.candidate_id.candidate_image">
<div style="text-align: center; margin-bottom: 30px;">
<img t-attf-src="data:image/png;base64,#{doc.candidate_id.candidate_image}"
style="width: 280px; height: 400px; object-fit: cover; border: 2px solid #333; border-radius: 8px;"/>
<!-- Header -->
<div style="text-align:center; margin-bottom: 40px;">
<h1 style="margin: 0; font-size: 24px;">Welcome to FTPROTECH</h1>
<h2 style="margin: 10px 0 0;">Employee Joining Form</h2>
</div>
<!-- Reusable styles -->
<t t-set="row_style" t-value="'display: flex; margin-bottom: 12px; page-break-inside: avoid;'"/>
<t t-set="label_style" t-value="'width: 35%; font-weight: bold; color: #333;'"/>
<t t-set="value_style" t-value="'width: 65%; color: #000;'"/>
<!-- Personal Info -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 30px; color: #005580;">Personal Details</h3>
<div t-att-style="row_style">
<div t-att-style="label_style">Employee Code:</div>
<div t-att-style="value_style">
<t t-esc="doc.employee_code or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Date of Joining:</div>
<div t-att-style="value_style">
<t t-esc="doc.doj or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Full Name:</div>
<div t-att-style="value_style">
<t t-esc="doc.employee_id.name or doc.name or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Email:</div>
<div t-att-style="value_style">
<t t-esc="doc.email_from or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Mobile No:</div>
<div t-att-style="value_style">
<t t-esc="doc.partner_phone or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Alternate Mobile:</div>
<div t-att-style="value_style">
<t t-esc="doc.alternate_phone or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Gender:</div>
<div t-att-style="value_style">
<t t-esc="doc.gender or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Date of Birth:</div>
<div t-att-style="value_style">
<t t-esc="doc.birthday or ''"/>
</div>
</div>
</div>
<!-- Address -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 30px; color: #005580;">Address</h3>
<div t-att-style="row_style">
<div t-att-style="label_style">Present Address:</div>
<div t-att-style="value_style">
<t t-esc="doc.private_street or ''"/>
<t t-esc="doc.private_street2 or ''"/>,
<t t-esc="doc.private_city or ''"/>
<t t-esc="doc.private_zip or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Permanent Address:</div>
<div t-att-style="value_style">
<t t-esc="doc.permanent_street or ''"/>
<t t-esc="doc.permanent_street2 or ''"/>,
<t t-esc="doc.permanent_city or ''"/>
<t t-esc="doc.permanent_zip or ''"/>
</div>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Marital Status:</div>
<div t-att-style="value_style">
<t t-esc="doc.marital or ''"/>
</div>
</div>
<!-- Section: Family Details -->
<div style="page-break-inside: avoid;">
<t t-if="doc.family_details">
<h3 style="margin-top: 35px; color: #005580;">Family Details</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<thead style="background: #f1f1f1;">
<tr>
<th style="border: 1px solid #ccc; padding: 8px;">Name</th>
<th style="border: 1px solid #ccc; padding: 8px;">Contact</th>
<th style="border: 1px solid #ccc; padding: 8px;">Date of Birth</th>
<th style="border: 1px solid #ccc; padding: 8px;">Location</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.family_details" t-as="member">
<tr>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.name or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.contact_no or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.dob or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.location or ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
<!-- Section: Education -->
<div style="page-break-inside: avoid;">
<t t-if="doc.education_history">
<h3 style="margin-top: 35px; color: #005580;">Education Details</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<thead style="background: #f1f1f1;">
<tr>
<th style="border: 1px solid #ccc; padding: 8px;">Specialization</th>
<th style="border: 1px solid #ccc; padding: 8px;">University</th>
<th style="border: 1px solid #ccc; padding: 8px;">Start Year</th>
<th style="border: 1px solid #ccc; padding: 8px;">End Year</th>
<th style="border: 1px solid #ccc; padding: 8px;">Grade</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.education_history" t-as="edu">
<tr>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.name or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.university or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.start_year or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.end_year or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.marks_or_grade or ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
<!-- Section: Previous Employer -->
<div style="page-break-inside: avoid;">
<t t-if="doc.employer_history">
<h3 style="margin-top: 35px; color: #005580;">Previous Employment</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<thead style="background: #f1f1f1;">
<tr>
<th style="border: 1px solid #ccc; padding: 8px;">Company</th>
<th style="border: 1px solid #ccc; padding: 8px;">Designation</th>
<th style="border: 1px solid #ccc; padding: 8px;">Joining</th>
<th style="border: 1px solid #ccc; padding: 8px;">Last Working Day</th>
<th style="border: 1px solid #ccc; padding: 8px;">CTC</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.employer_history" t-as="job">
<tr>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.company_name or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.designation or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.date_of_joining or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.last_working_day or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.ctc or ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
<!-- Section: Bank Details -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 35px; color: #005580;">Bank Account Details</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<tbody>
<tr>
<th style="width: 35%; text-align: left;">Name as per Bank</th>
<td>
<t t-esc="doc.full_name_as_in_bank or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Bank Name</th>
<td>
<t t-esc="doc.bank_name or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Branch</th>
<td>
<t t-esc="doc.bank_branch or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Account No</th>
<td>
<t t-esc="doc.bank_account_no or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">IFSC Code</th>
<td>
<t t-esc="doc.bank_ifsc_code or ''"/>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Section: Identification -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 35px; color: #005580;">Identification</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<tbody>
<tr>
<th style="width: 35%; text-align: left;">PAN No</th>
<td>
<t t-esc="doc.pan_no or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Aadhar No</th>
<td>
<t t-esc="doc.identification_id or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">PF No</th>
<td>
<t t-esc="doc.previous_company_pf_no or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">UAN No</th>
<td>
<t t-esc="doc.previous_company_uan_no or ''"/>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Declaration -->
<div style="margin-top: 40px; font-style: italic; text-align: justify;">
I hereby declare that all the above information is true to the best of my knowledge.
</div>
</t>
<!-- Header -->
<div style="text-align:center; margin-bottom: 40px;">
<h1 style="margin: 0; font-size: 24px;">Welcome to FTPROTECH</h1>
<h2 style="margin: 10px 0 0;">Employee Joining Form</h2>
</div>
<!-- Reusable styles -->
<t t-set="row_style" t-value="'display: flex; margin-bottom: 12px; page-break-inside: avoid;'"/>
<t t-set="label_style" t-value="'width: 35%; font-weight: bold; color: #333;'"/>
<t t-set="value_style" t-value="'width: 65%; color: #000;'"/>
<!-- Personal Info -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 30px; color: #005580;">Personal Details</h3>
<div t-att-style="row_style">
<div t-att-style="label_style">Employee Code:</div>
<div t-att-style="value_style">
<t t-esc="doc.employee_code or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Date of Joining:</div>
<div t-att-style="value_style">
<t t-esc="doc.doj or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Full Name:</div>
<div t-att-style="value_style">
<t t-esc="doc.employee_id.name or doc.name or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Email:</div>
<div t-att-style="value_style">
<t t-esc="doc.email_from or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Mobile No:</div>
<div t-att-style="value_style">
<t t-esc="doc.partner_phone or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Alternate Mobile:</div>
<div t-att-style="value_style">
<t t-esc="doc.alternate_phone or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Gender:</div>
<div t-att-style="value_style">
<t t-esc="doc.gender or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Date of Birth:</div>
<div t-att-style="value_style">
<t t-esc="doc.birthday or ''"/>
</div>
</div>
</div>
<!-- Address -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 30px; color: #005580;">Address</h3>
<div t-att-style="row_style">
<div t-att-style="label_style">Present Address:</div>
<div t-att-style="value_style">
<t t-esc="doc.private_street or ''"/>
<t t-esc="doc.private_street2 or ''"/>,
<t t-esc="doc.private_city or ''"/>
<t t-esc="doc.private_zip or ''"/>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Permanent Address:</div>
<div t-att-style="value_style">
<t t-esc="doc.permanent_street or ''"/>
<t t-esc="doc.permanent_street2 or ''"/>,
<t t-esc="doc.permanent_city or ''"/>
<t t-esc="doc.permanent_zip or ''"/>
</div>
</div>
</div>
<div t-att-style="row_style">
<div t-att-style="label_style">Marital Status:</div>
<div t-att-style="value_style">
<t t-esc="doc.marital or ''"/>
</div>
</div>
<!-- Section: Family Details -->
<div style="page-break-inside: avoid;">
<t t-if="doc.family_details">
<h3 style="margin-top: 35px; color: #005580;">Family Details</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<thead style="background: #f1f1f1;">
<tr>
<th style="border: 1px solid #ccc; padding: 8px;">Name</th>
<th style="border: 1px solid #ccc; padding: 8px;">Contact</th>
<th style="border: 1px solid #ccc; padding: 8px;">Date of Birth</th>
<th style="border: 1px solid #ccc; padding: 8px;">Location</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.family_details" t-as="member">
<tr>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.name or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.contact_no or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.dob or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="member.location or ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
<!-- Section: Education -->
<div style="page-break-inside: avoid;">
<t t-if="doc.education_history">
<h3 style="margin-top: 35px; color: #005580;">Education Details</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<thead style="background: #f1f1f1;">
<tr>
<th style="border: 1px solid #ccc; padding: 8px;">Specialization</th>
<th style="border: 1px solid #ccc; padding: 8px;">University</th>
<th style="border: 1px solid #ccc; padding: 8px;">Start Year</th>
<th style="border: 1px solid #ccc; padding: 8px;">End Year</th>
<th style="border: 1px solid #ccc; padding: 8px;">Grade</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.education_history" t-as="edu">
<tr>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.name or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.university or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.start_year or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.end_year or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="edu.marks_or_grade or ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
<!-- Section: Previous Employer -->
<div style="page-break-inside: avoid;">
<t t-if="doc.employer_history">
<h3 style="margin-top: 35px; color: #005580;">Previous Employment</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<thead style="background: #f1f1f1;">
<tr>
<th style="border: 1px solid #ccc; padding: 8px;">Company</th>
<th style="border: 1px solid #ccc; padding: 8px;">Designation</th>
<th style="border: 1px solid #ccc; padding: 8px;">Joining</th>
<th style="border: 1px solid #ccc; padding: 8px;">Last Working Day</th>
<th style="border: 1px solid #ccc; padding: 8px;">CTC</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.employer_history" t-as="job">
<tr>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.company_name or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.designation or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.date_of_joining or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.last_working_day or ''"/>
</td>
<td style="border: 1px solid #ccc; padding: 8px;">
<t t-esc="job.ctc or ''"/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
</div>
<!-- Section: Bank Details -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 35px; color: #005580;">Bank Account Details</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<tbody>
<tr>
<th style="width: 35%; text-align: left;">Name as per Bank</th>
<td>
<t t-esc="doc.full_name_as_in_bank or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Bank Name</th>
<td>
<t t-esc="doc.bank_name or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Branch</th>
<td>
<t t-esc="doc.bank_branch or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Account No</th>
<td>
<t t-esc="doc.bank_account_no or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">IFSC Code</th>
<td>
<t t-esc="doc.bank_ifsc_code or ''"/>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Section: Identification -->
<div style="page-break-inside: avoid;">
<h3 style="margin-top: 35px; color: #005580;">Identification</h3>
<table style="width: 100%; border-collapse: collapse; font-size: 15px;">
<tbody>
<tr>
<th style="width: 35%; text-align: left;">PAN No</th>
<td>
<t t-esc="doc.pan_no or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">Aadhar No</th>
<td>
<t t-esc="doc.identification_id or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">PF No</th>
<td>
<t t-esc="doc.previous_company_pf_no or ''"/>
</td>
</tr>
<tr>
<th style="text-align: left;">UAN No</th>
<td>
<t t-esc="doc.previous_company_uan_no or ''"/>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Declaration -->
<div style="margin-top: 40px; font-style: italic; text-align: justify;">
I hereby declare that all the above information is true to the best of my knowledge.
</div>
</t>
</main>
</t>
</template>
</odoo>
</main>
</t>
</template>
</odoo>
</odoo>

View File

@ -401,6 +401,18 @@
</field>
</record>
<record id="custom_paper_format" model="report.paperformat">
<field name="name">No Margin</field>
<field name="default" eval="False"/>
<field name="format">A4</field>
<field name="margin_top">20</field>
<field name="margin_bottom">20</field>
<field name="margin_left">15</field>
<field name="margin_right">15</field>
<field name="header_line" eval="False"/>
<field name="header_spacing">0</field>
<field name="orientation">Portrait</field>
</record>
<record id="action_download_joining_form" model="ir.actions.report">
<field name="name">Download Joining Form</field>
@ -410,7 +422,10 @@
<field name="report_file">hr_recruitment_extended.employee_joining_form_template</field>
<field name="binding_model_id" ref="hr_recruitment.model_hr_applicant"/>
<field name="print_report_name">'JOD - %s' % (object.display_name)</field>
<field name="paperformat_id" ref="hr_recruitment_extended.custom_paper_format"/>
<field name="binding_type">report</field>
</record>
</odoo>