mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-24 14:12:07 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -10,7 +10,6 @@ pip install odoo-bringout-oca-ocb-hr_recruitment
|
|||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- hr
|
||||
- calendar
|
||||
- utm
|
||||
|
|
@ -18,32 +17,12 @@ This addon depends on:
|
|||
- web_tour
|
||||
- digest
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Recruitment
|
||||
- **Version**: 1.1
|
||||
- **Category**: Human Resources/Recruitment
|
||||
- **License**: LGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `hr_recruitment`.
|
||||
- Repository: https://github.com/OCA/OCB
|
||||
- Branch: 19.0
|
||||
- Path: addons/hr_recruitment
|
||||
|
||||
## 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.
|
||||
|
|
|
|||
|
|
@ -20,19 +20,30 @@
|
|||
'security/hr_recruitment_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/digest_data.xml',
|
||||
'data/mail_alias_data.xml',
|
||||
'data/mail_message_subtype_data.xml',
|
||||
'data/mail_template_data.xml',
|
||||
'data/mail_templates.xml',
|
||||
'data/hr_recruitment_data.xml',
|
||||
'views/hr_recruitment_views.xml',
|
||||
'data/hr_recruitment_tour.xml',
|
||||
'views/hr_recruitment_degree_views.xml',
|
||||
'views/hr_recruitment_source_views.xml',
|
||||
'views/hr_recruitment_stage_views.xml',
|
||||
'views/ir_attachment_views.xml',
|
||||
'views/hr_applicant_category_views.xml',
|
||||
'views/hr_applicant_refuse_reason_views.xml',
|
||||
'views/hr_applicant_views.xml',
|
||||
'views/hr_talent_pool_views.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
'views/hr_department_views.xml',
|
||||
'views/hr_job_views.xml',
|
||||
'views/mail_activity_views.xml',
|
||||
'views/mail_activity_plan_views.xml',
|
||||
'views/digest_views.xml',
|
||||
'wizard/applicant_refuse_reason_views.xml',
|
||||
'wizard/applicant_send_mail_views.xml',
|
||||
'wizard/talent_pool_add_applicants_views.xml',
|
||||
'wizard/job_add_applicants_views.xml',
|
||||
'views/menuitems.xml',
|
||||
],
|
||||
'demo': [
|
||||
'data/hr_recruitment_demo.xml',
|
||||
|
|
@ -46,6 +57,10 @@
|
|||
'hr_recruitment/static/src/**/*.xml',
|
||||
'hr_recruitment/static/src/js/tours/hr_recruitment.js',
|
||||
],
|
||||
'web.assets_unit_tests': [
|
||||
'hr_recruitment/static/tests/**/*',
|
||||
],
|
||||
},
|
||||
'author': 'Odoo S.A.',
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
<p class="tip_content">
|
||||
By setting an alias to a job position, emails sent to this address create applications automatically. You can even use multiple trackers to get statistics according to the source of the application: LinkedIn, Monster, Indeed, etc.
|
||||
<t t-set="record" t-value="object.env['hr.job'].search([('alias_name', '!=', False)], limit=1)" />
|
||||
<t t-if="record and record.alias_domain">
|
||||
<a t-attf-href="mailto:{{record.alias_id.display_name}}" target="_blank" style="color: #875a7b; text-decoration: none;">Try sending an email</a>
|
||||
<t t-if="record.alias_email">
|
||||
<a t-attf-href="mailto:{{record.alias_email}}" target="_blank" style="color: #714B67; text-decoration: none;">Try sending an email</a>
|
||||
</t>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,26 +2,25 @@
|
|||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Meeting Types (for interview meetings) -->
|
||||
<record model="calendar.event.type" id="categ_meet_interview">
|
||||
<field name="name">Interview</field>
|
||||
</record>
|
||||
|
||||
<record model="hr.recruitment.degree" id="degree_graduate">
|
||||
<field name="name">Graduate</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="score">0.50</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.degree" id="degree_bachelor">
|
||||
<field name="name">Bachelor Degree</field>
|
||||
<field name="sequence">2</field>
|
||||
<field name="score">0.70</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.degree" id="degree_licenced">
|
||||
<field name="name">Master Degree</field>
|
||||
<field name="sequence">3</field>
|
||||
<field name="score">0.90</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.degree" id="degree_bac5">
|
||||
<field name="name">Doctoral Degree</field>
|
||||
<field name="sequence">4</field>
|
||||
<field name="score">1.00</field>
|
||||
</record>
|
||||
|
||||
<!-- Applicant Categories(Tag) -->
|
||||
|
|
@ -41,14 +40,18 @@
|
|||
<field name="name">Job Campaign</field>
|
||||
</record>
|
||||
|
||||
<record model="hr.recruitment.stage" id="stage_job0">
|
||||
<field name="name">New</field>
|
||||
<field name="sequence">0</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_congratulations"/>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job1">
|
||||
<field name="name">Initial Qualification</field>
|
||||
<field name="name">Qualification</field>
|
||||
<field name="sequence">1</field>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job2">
|
||||
<field name="name">First Interview</field>
|
||||
<field name="sequence">2</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_congratulations"/>
|
||||
</record>
|
||||
<record model="hr.recruitment.stage" id="stage_job3">
|
||||
<field name="name">Second Interview</field>
|
||||
|
|
@ -66,38 +69,53 @@
|
|||
</record>
|
||||
|
||||
<!-- applicant refuse reason -->
|
||||
<record id="refuse_reason_1" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Doesn't fit the job requirements</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
</record>
|
||||
<record id="refuse_reason_2" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Refused by Applicant: don't like job</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_not_interested"/>
|
||||
</record>
|
||||
<record id="refuse_reason_3" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Refused by Applicant: better offer</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_not_interested"/>
|
||||
</record>
|
||||
<record id="refuse_reason_4" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Language issues</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
</record>
|
||||
<record id="refuse_reason_5" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Role already fulfilled</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
</record>
|
||||
<record id="refuse_reason_6" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Duplicate</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
</record>
|
||||
<record id="refuse_reason_7" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Spam</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
</record>
|
||||
<record id="refuse_reason_8" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Refused by Applicant: salary</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_not_interested"/>
|
||||
</record>
|
||||
<record id="refuse_reason_1" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Does not fit the job requirements</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
<field name="sequence">12</field>
|
||||
</record>
|
||||
<record id="refuse_reason_2" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Refused by applicant: job fit</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_not_interested"/>
|
||||
<field name="sequence">11</field>
|
||||
</record>
|
||||
<record id="refuse_reason_5" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Job already fulfilled</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
<field name="sequence">13</field>
|
||||
</record>
|
||||
<record id="refuse_reason_6" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Duplicate</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
<field name="sequence">14</field>
|
||||
</record>
|
||||
<record id="refuse_reason_7" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Spam</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_refuse"/>
|
||||
<field name="sequence">15</field>
|
||||
</record>
|
||||
<record id="refuse_reason_8" model="hr.applicant.refuse.reason">
|
||||
<field name="name">Refused by applicant: salary</field>
|
||||
<field name="template_id" ref="email_template_data_applicant_not_interested"/>
|
||||
<field name="sequence">10</field>
|
||||
</record>
|
||||
|
||||
<record id="linkedin_job_platform" model="hr.job.platform">
|
||||
<field name="name">Linkedin</field>
|
||||
<field name="email">jobs-listings@linkedin.com</field>
|
||||
<field name="regex">New application:.*from (.*)</field>
|
||||
</record>
|
||||
|
||||
<record id="jobsdb_job_platform" model="hr.job.platform">
|
||||
<field name="name">Jobsdb</field>
|
||||
<field name="email">cs@jobsdb.com</field>
|
||||
<field name="regex">from (.+?) for</field>
|
||||
</record>
|
||||
|
||||
<record id="indeed_job_platform" model="hr.job.platform">
|
||||
<field name="name">Indeed</field>
|
||||
<field name="email">no-reply@indeed.com</field>
|
||||
<field name="regex">^([^ ]+ [^ ]+)</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -1,35 +1,40 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo noupdate="1">
|
||||
<record id="base.user_demo" model="res.users">
|
||||
<field name="groups_id" eval="[(4, ref('hr_recruitment.group_hr_recruitment_user'))]"/>
|
||||
<field name="group_ids" eval="[
|
||||
(3, ref('hr_recruitment.group_hr_recruitment_interviewer')),
|
||||
(3, ref('hr_recruitment.group_hr_recruitment_user')),
|
||||
(3, ref('hr_recruitment.group_hr_recruitment_manager')),
|
||||
]"/>
|
||||
</record>
|
||||
|
||||
<record id="base.default_user_group" model="res.groups">
|
||||
<field name="implied_ids" eval="[(4, ref('hr_recruitment.group_hr_recruitment_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<!--Manage the job_id to get in hr.applicant-->
|
||||
<record id="hr.job_developer" model="hr.job">
|
||||
<field name="no_of_recruitment">4</field>
|
||||
<field name="no_of_hired_employee">56</field>
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
</record>
|
||||
<record id="hr.job_ceo" model="hr.job">
|
||||
<field name="no_of_hired_employee">1</field>
|
||||
<field name="expected_degree" ref="degree_graduate"/>
|
||||
</record>
|
||||
<record id="hr.job_cto" model="hr.job">
|
||||
<field name="no_of_hired_employee">1</field>
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
<field name="expected_degree" ref="degree_licenced"/>
|
||||
</record>
|
||||
<record id="hr.job_consultant" model="hr.job">
|
||||
<field name="no_of_recruitment">1</field>
|
||||
<field name="no_of_hired_employee">17</field>
|
||||
<field name="user_id" ref="base.user_demo" />
|
||||
<field name="expected_degree" ref="degree_bachelor"/>
|
||||
</record>
|
||||
<record id="hr.job_hrm" model="hr.job">
|
||||
<field name="no_of_recruitment">1</field>
|
||||
<field name="no_of_hired_employee">5</field>
|
||||
<field name="expected_degree" ref="degree_graduate"/>
|
||||
</record>
|
||||
<record id="hr.job_marketing" model="hr.job">
|
||||
<field name="no_of_recruitment">3</field>
|
||||
<field name="no_of_hired_employee">2</field>
|
||||
<field name="user_id" ref="base.user_demo" />
|
||||
</record>
|
||||
<record id="hr.job_trainee" model="hr.job">
|
||||
<field name="no_of_recruitment">6</field>
|
||||
|
|
@ -40,11 +45,6 @@
|
|||
<field name="job_id" ref="hr.job_developer"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_recruitment_linkedin_ceo" model="hr.recruitment.source">
|
||||
<field name="source_id" ref="utm.utm_source_linkedin"/>
|
||||
<field name="job_id" ref="hr.job_ceo"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_recruitment_linkedin_cto" model="hr.recruitment.source">
|
||||
<field name="source_id" ref="utm.utm_source_linkedin"/>
|
||||
<field name="job_id" ref="hr.job_cto"/>
|
||||
|
|
@ -71,264 +71,649 @@
|
|||
</record>
|
||||
|
||||
<record id="hr_case_salesman0" model="hr.applicant">
|
||||
<field name="name">Sales Manager</field>
|
||||
<field name="email_from">enrique.jones152@gmail.example.com</field>
|
||||
<field name="partner_phone">9963214587</field>
|
||||
<field name="partner_name">Enrique Jones</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="medium_id" ref="utm.utm_medium_direct"/>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_sales')])]"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="partner_name">Enrique Jones</field>
|
||||
<field name="email_from">enrique.jones152@gmail.example.com</field>
|
||||
<field name="partner_mobile">9963214587</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=29)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=27)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_salesman1" model="hr.applicant">
|
||||
<field name="name">Sales</field>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="partner_name">Meldona Thang</field>
|
||||
<field name="email_from">meldona.thang@example.com</field>
|
||||
<field name="partner_phone">998655451</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="partner_name">Meldona Thang</field>
|
||||
<field name="email_from">thing.thang.thong@gmail.example.com</field>
|
||||
<field name="partner_mobile">998655451</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
<record id="hr_case_dev0" model="hr.applicant">
|
||||
<field name="name">Developer PHP</field>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
|
||||
<!-- applicant -->
|
||||
<record id="hr_case_cto1" model="hr.applicant">
|
||||
<field name="partner_name">Emily Brooks</field>
|
||||
<field name="email_from">emily.brooks@example.com</field>
|
||||
<field name="partner_phone">6965545</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_manager')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_cto"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="medium_id" ref="utm.utm_medium_email"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_cto2" model="hr.applicant">
|
||||
<field name="partner_name">Alex Parker</field>
|
||||
<field name="email_from">alex.parker@example.com</field>
|
||||
<field name="partner_phone">9817891</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_manager')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_cto"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="medium_id" ref="utm.utm_medium_email"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_8"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_cto3" model="hr.applicant">
|
||||
<field name="partner_name">Natalie Foster</field>
|
||||
<field name="email_from">natalie.foster@example.com</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_manager')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_cto"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="stage_id" ref="stage_job4"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_dev0" model="hr.applicant">
|
||||
<field name="partner_name">Johan Duck</field>
|
||||
<field name="email_from">coincoin@gmail.example.com</field>
|
||||
<field name="partner_mobile">8955545</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
<record id="hr_case_dev1" model="hr.applicant">
|
||||
<field name="name">Developer Fullstack</field>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="partner_phone">8955545</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="partner_name">Kelly Wallant</field>
|
||||
<field name="email_from">kelly@wallant.example.com</field>
|
||||
<field name="partner_mobile">879895515</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
<record id="hr_case_dev2" model="hr.applicant">
|
||||
<field name="name">Developer Python</field>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="medium_id" ref="utm.utm_medium_email"/>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="partner_name">Cécile Donth</field>
|
||||
<field name="email_from">c-cile72@msn.example.com</field>
|
||||
<field name="partner_mobile">98765411</field>
|
||||
<field name="priority">3</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
<record id="hr_case_dev3" model="hr.applicant">
|
||||
<field name="name">Developer C/C++</field>
|
||||
|
||||
<record id="hr_case_dev1" model="hr.applicant">
|
||||
<field name="partner_name">Kelly Wallant</field>
|
||||
<field name="email_from">kelly@wallant.example.com</field>
|
||||
<field name="partner_phone">879895515</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="partner_name">Ohen Rizome</field>
|
||||
<field name="email_from">0h3n-rijaune@yahoo.example.com</field>
|
||||
<field name="partner_mobile">654687987654</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
</record>
|
||||
<record id="hr_case_traineemca0" model="hr.applicant">
|
||||
<field name="name">Trainee - MCA</field>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
|
||||
<record id="hr_case_dev2" model="hr.applicant">
|
||||
<field name="partner_name">Cécile Donth</field>
|
||||
<field name="email_from">c-cile72@msn.example.com</field>
|
||||
<field name="partner_phone">98765411</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">2</field>
|
||||
<field name="medium_id" ref="utm.utm_medium_email"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_dev3" model="hr.applicant">
|
||||
<field name="partner_name">Ohen Rizome</field>
|
||||
<field name="email_from">ohen@yahoo.example.com</field>
|
||||
<field name="partner_phone">654687987654</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_6"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_traineemca0" model="hr.applicant">
|
||||
<field name="partner_name">Marie Justine</field>
|
||||
<field name="email_from">justinemarie@outlook.example.com</field>
|
||||
<field name="partner_mobile">9988774455</field>
|
||||
<field name="partner_phone">9988774455</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">2</field>
|
||||
<field name="stage_id" ref="stage_job4"/>
|
||||
<field name="partner_phone">6633225</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=17)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=7)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
<record id="hr_case_fresher0" model="hr.applicant">
|
||||
<field name="name">Fresher</field>
|
||||
|
||||
<record id="hr_case_traineemca1" model="hr.applicant">
|
||||
<field name="partner_name">Lucas Anderson</field>
|
||||
<field name="email_from">lucas.anderson@example.com</field>
|
||||
<field name="partner_phone">99855</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="type_id" ref="degree_bachelor"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="priority">2</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
<field name="partner_phone">6633225</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=17)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=7)).strftime('%Y-%m-%d')"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_1"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_fresher0" model="hr.applicant">
|
||||
<field name="partner_name">Jose</field>
|
||||
<field name="email_from">the.jose@gmail.example.com</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
<field name="partner_phone">999666735</field>
|
||||
<field name="type_id" ref="degree_bachelor"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_fresher1" model="hr.applicant">
|
||||
<field name="partner_name">Daniel Parker</field>
|
||||
<field name="email_from">daniel.parker@example.com</field>
|
||||
<field name="partner_phone">996735</field>
|
||||
<field name="type_id" ref="degree_bachelor"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_7"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_fresher2" model="hr.applicant">
|
||||
<field name="partner_name">Lily Patterson</field>
|
||||
<field name="email_from">lilly.patterson@example.com</field>
|
||||
<field name="partner_phone">996711135</field>
|
||||
<field name="type_id" ref="degree_bachelor"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_7"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_fresher3" model="hr.applicant">
|
||||
<field name="partner_name">Jordan Ellis</field>
|
||||
<field name="email_from">jordan.ellis@example.com</field>
|
||||
<field name="partner_phone">99673455</field>
|
||||
<field name="type_id" ref="degree_bachelor"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_7"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_mkt0" model="hr.applicant">
|
||||
<field name="name">Marketing</field>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="partner_name">Yin Lee</field>
|
||||
<field name="email_from">yin.lee@wechat.example.com</field>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
<record id="hr_case_mkt1" model="hr.applicant">
|
||||
<field name="name">Marketing 2 Year Experience</field>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_mkt1" model="hr.applicant">
|
||||
<field name="partner_name">Hubert Blank</field>
|
||||
<field name="email_from">st-hubertus@gmail.example.com</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="stage_id" ref="stage_job3"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_mkt2" model="hr.applicant">
|
||||
<field name="partner_name">Natalie Foster</field>
|
||||
<field name="email_from">natalie.foster@example.com</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_manager')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="stage_id" ref="stage_job0"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_5"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_mkt3" model="hr.applicant">
|
||||
<field name="partner_name">Daniel Parker</field>
|
||||
<field name="email_from">daniel.parker@example.com</field>
|
||||
<field name="partner_phone">996735</field>
|
||||
<field name="type_id" ref="degree_bachelor"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_it')])]"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="stage_id" ref="stage_job0"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_7"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_yrsexperienceinphp0" model="hr.applicant">
|
||||
<field name="name">Marketing Job</field>
|
||||
<field name="partner_name">John Bruno</field>
|
||||
<field name="email_from">johnnyboy@gmail.example.com</field>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field eval="(datetime.now()+relativedelta(months=-2)).strftime('%Y-%m-03 01:00:00')" name="create_date"/>
|
||||
<field name="job_id" ref="hr.job_marketing"/>
|
||||
<field name="department_id" ref="hr.dep_sales"/>
|
||||
<field name="type_id" ref="degree_graduate"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_manager')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="partner_name">John Bruno</field>
|
||||
<field name="email_from">johnnyboy@gmail.example.com</field>
|
||||
<field name="stage_id" ref="stage_job5"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=61)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=37)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_marketingjob0" model="hr.applicant">
|
||||
<field name="name">More than 5 yrs Experience in PHP</field>
|
||||
<field name="partner_name">Sandra Elvis</field>
|
||||
<field name="email_from">sandra.elvis.the.king25@gmail.example.com</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_reserve')])]"/>
|
||||
<field eval="(datetime.now()+relativedelta(months=-1)).strftime('%Y-%m-08 01:00:00')" name="create_date"/>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_reserve')])]"/>
|
||||
<field name="user_id" ref="base.user_demo"/>
|
||||
<field name="partner_name">Sandra Elvis</field>
|
||||
<field name="email_from">sandra.elvis.the.king25@gmail.example.com</field>
|
||||
<field name="stage_id" ref="stage_job5"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=34)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=7)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_financejob0" model="hr.applicant">
|
||||
<field name="name">Finance Manager</field>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_reserve')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="partner_name">David Armstrong</field>
|
||||
<field name="email_from">david.strongarm@gmail.example.com</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="partner_phone">33968745</field>
|
||||
</record>
|
||||
<record id="hr_case_financejob1" model="hr.applicant">
|
||||
<field name="name">Finance</field>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_reserve')])]"/>
|
||||
<field name="partner_phone">33968745</field>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_financejob1" model="hr.applicant">
|
||||
<field name="partner_name">Joren Jacob</field>
|
||||
<field name="email_from">joren.jacob@outlook.example.com</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_reserve')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=3)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
<record id="hr_case_traineemca1" model="hr.applicant">
|
||||
<field name="name">Trainee - MCA</field>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
|
||||
<record id="hr_case_financejob2" model="hr.applicant">
|
||||
<field name="partner_name">Mitchel Armstrong</field>
|
||||
<field name="email_from">mitchel.armstrong@example.com</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_sales')])]"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_reserve')])]"/>
|
||||
<field name="partner_phone">339745</field>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_1"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_financejob3" model="hr.applicant">
|
||||
<field name="partner_name">Elijah Thompson</field>
|
||||
<field name="email_from">elijah.thompson@example.com</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_reserve')])]"/>
|
||||
<field name="partner_phone">339745</field>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_financejob4" model="hr.applicant">
|
||||
<field name="partner_name">Scarlett Rivera</field>
|
||||
<field name="email_from">scarlett.rivera@example.com</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_reserve')])]"/>
|
||||
<field name="partner_phone">33974325</field>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_hrm"/>
|
||||
<field name="department_id" ref="hr.dep_administration"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">2</field>
|
||||
<field name="stage_id" ref="stage_job0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_traineemca1" model="hr.applicant">
|
||||
<field name="partner_name">Tina Augustie</field>
|
||||
<field name="email_from">tina.turner@gmail.example.com</field>
|
||||
<field name="partner_mobile">9898745745</field>
|
||||
<field name="partner_phone">9898745745</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_sales')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="stage_id" ref="stage_job4"/>
|
||||
<field name="partner_phone">6630125</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=67)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=45)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
<record id="hr_case_programmer" model="hr.applicant">
|
||||
<field name="name">Programmer</field>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
|
||||
<record id="hr_case_traineemca2" model="hr.applicant">
|
||||
<field name="partner_name">Sebastian Carter</field>
|
||||
<field name="email_from">sebastian.carter@gmail.example.com</field>
|
||||
<field name="partner_phone">8643244</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="stage_id" ref="stage_job0"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=67)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=45)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_traineemca3" model="hr.applicant">
|
||||
<field name="partner_name">Vincent Harris</field>
|
||||
<field name="email_from">vincent.harris@example.com</field>
|
||||
<field name="partner_phone">845242</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="job_id" ref="hr.job_trainee"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=67)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=45)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_programmer" model="hr.applicant">
|
||||
<field name="partner_name">Shane Williams</field>
|
||||
<field name="email_from">the.real.shane@gmail.example.com</field>
|
||||
<field name="partner_mobile">9812398524</field>
|
||||
<field name="partner_phone">9812398524</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_developer"/>
|
||||
<field name="department_id" ref="hr.dep_rd"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job4"/>
|
||||
<field name="partner_phone">6630125</field>
|
||||
<field name="salary_expected">11000.0</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=13)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=4)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_advertisement" model="hr.applicant">
|
||||
<field name="name">Advertisement</field>
|
||||
<field name="job_id" ref="hr.job_consultant"/>
|
||||
<field name="department_id" ref="hr.dep_ps"/>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="partner_name">David Billy</field>
|
||||
<field name="email_from">billy.boy12@gmail.example.com</field>
|
||||
<field name="partner_mobile">9988774455</field>
|
||||
<field name="partner_phone">9988774455</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[(6,0,[ref('tag_applicant_it')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_consultant"/>
|
||||
<field name="department_id" ref="hr.dep_ps"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="salary_expected">11000.0</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=4)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_advertisement2" model="hr.applicant">
|
||||
<field name="partner_name">Dakota Lane</field>
|
||||
<field name="email_from">dakota.lane@example.com</field>
|
||||
<field name="partner_phone">9981214455</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_consultant"/>
|
||||
<field name="department_id" ref="hr.dep_ps"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job2"/>
|
||||
<field name="salary_expected">21000.0</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=4)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_advertisement3" model="hr.applicant">
|
||||
<field name="partner_name">Abigail Carter</field>
|
||||
<field name="email_from">abigail.carter@example.com</field>
|
||||
<field name="partner_phone">8299291</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_consultant"/>
|
||||
<field name="department_id" ref="hr.dep_ps"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job1"/>
|
||||
<field name="salary_expected">51000.0</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=4)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_advertisement4" model="hr.applicant">
|
||||
<field name="partner_name">Hunter Reynolds</field>
|
||||
<field name="email_from">hunter.reynolds@example.com</field>
|
||||
<field name="partner_phone">8921231</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_consultant"/>
|
||||
<field name="department_id" ref="hr.dep_ps"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job4"/>
|
||||
<field name="salary_expected">71000.0</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=4)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d')"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_advertisement5" model="hr.applicant">
|
||||
<field name="partner_name">Eren Yeager</field>
|
||||
<field name="email_from">eren.yeager@example.com</field>
|
||||
<field name="partner_phone">8911101</field>
|
||||
<field name="type_id" ref="degree_licenced"/>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_sales')])]"/>
|
||||
<field name="availability" eval="(DateTime.today() + relativedelta(months=3)).strftime('%Y-%m-%d')"/>
|
||||
<field name="job_id" ref="hr.job_consultant"/>
|
||||
<field name="department_id" ref="hr.dep_ps"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="stage_id" ref="stage_job4"/>
|
||||
<field name="salary_expected">51123.0</field>
|
||||
<field name="create_date" eval="DateTime.now() - relativedelta(days=4)"/>
|
||||
<field name="date_last_stage_update" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d')"/>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_8"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_dev2_cv" model="ir.attachment">
|
||||
<field name="name">Cecile_Donth_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Cecile_Donth_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_dev2"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_financejob0_cv" model="ir.attachment">
|
||||
<field name="name">David_Armstrong_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/David_Armstrong_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_financejob0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_advertisement_cv" model="ir.attachment">
|
||||
<field name="name">David_Billy_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/David_Billy_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_advertisement"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_salesman0_cv" model="ir.attachment">
|
||||
<field name="name">Jones_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/data/hr_recruitment_demo_jones_cv.pdf"></field>
|
||||
<field name="name">Enrique_Jones_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Enrique_Jones_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_salesman0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_mkt1_cv" model="ir.attachment">
|
||||
<field name="name">Hubert_Blank_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Hubert_Blank_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_mkt1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_dev0_cv" model="ir.attachment">
|
||||
<field name="name">Johan_Duck_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Johan_Duck_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_dev0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_yrsexperienceinphp0_cv" model="ir.attachment">
|
||||
<field name="name">John_Bruno_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/John_Bruno_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_yrsexperienceinphp0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_financejob1_cv" model="ir.attachment">
|
||||
<field name="name">Joren_Jacob_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Joren_Jacob_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_financejob1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_fresher0_cv" model="ir.attachment">
|
||||
<field name="name">Jose_CV.txt</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/data/hr_recruitment_demo_jose_cv.txt"></field>
|
||||
<field name="name">Jose_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Jose_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_fresher0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_dev1_cv" model="ir.attachment">
|
||||
<field name="name">Kelly_Wallant_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Kelly_Wallant_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_dev1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_traineemca0_cv" model="ir.attachment">
|
||||
<field name="name">Marie_Justine_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Marie_Justine_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_traineemca0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_salesman1_cv" model="ir.attachment">
|
||||
<field name="name">Meldona_Thang_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Meldona_Thang_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_salesman1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_dev3_cv" model="ir.attachment">
|
||||
<field name="name">Owen_James_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Ohen_Rizome_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_dev3"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_marketingjob0_cv" model="ir.attachment">
|
||||
<field name="name">Sandra_Elvis_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Sandra_Elvis_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_marketingjob0"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_programmer_cv" model="ir.attachment">
|
||||
<field name="name">Williams_CV.doc</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/data/hr_recruitment_demo_williams_cv.doc"></field>
|
||||
<field name="name">Shane_Williams_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Shane_Williams_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_programmer"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_traineemca1_cv" model="ir.attachment">
|
||||
<field name="name">Tina_Augustie_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Tina_Augustie_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_traineemca1"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_case_mkt0_cv" model="ir.attachment">
|
||||
<field name="name">Yin_Lee_CV.pdf</field>
|
||||
<field name="datas" type="base64" file="hr_recruitment/static/applicant_cvs/Yin_Lee_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_mkt0"/>
|
||||
</record>
|
||||
|
||||
<record id="message_application_demo" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_advertisement"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_advertisement"/>
|
||||
<field name="body">Please do refer to this application for sure.</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="author_id" ref="base.res_partner_2"/>
|
||||
|
|
@ -336,7 +721,7 @@
|
|||
<record id="msg_case18_aplicant" model="mail.message">
|
||||
<field name="subject">Regarding reference</field>
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_advertisement"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_advertisement"/>
|
||||
<field name="date" eval="DateTime.now() - relativedelta(days=3)"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello!<br />
|
||||
|
|
@ -354,7 +739,7 @@
|
|||
<record id="msg_case_salesman0_aplicant" model="mail.message">
|
||||
<field name="subject">Refuse Application</field>
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_salesman0"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_salesman0"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello,</p>
|
||||
<p>I have checked this application but it does not match with our requirements. We don't need to proceed further and we should refuse this application.</p>
|
||||
|
|
@ -365,9 +750,9 @@
|
|||
<field name="author_id" ref="base.partner_demo"/>
|
||||
</record>
|
||||
<record id="msg_case_dev0_aplicant" model="mail.message">
|
||||
<field name="subject">Refuse Application</field>
|
||||
<field name="subject">Great Application</field>
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_dev0"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_dev0"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello,</p>
|
||||
<p>This applicant has excellent skills and would greatly fit in the RD Team!</p>
|
||||
|
|
@ -379,7 +764,7 @@
|
|||
</record>
|
||||
<record id="msg_case_fresher0_aplicant" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_fresher0"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_fresher0"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello,</p>
|
||||
<p>We should move further for this application as early as possible.</p>
|
||||
|
|
@ -389,9 +774,9 @@
|
|||
<field name="subtype_id" ref="mail.mt_comment"/>
|
||||
<field name="author_id" ref="base.partner_demo"/>
|
||||
</record>
|
||||
<record id="msg_case_advertisement_aplicant" model="mail.message">
|
||||
<record id="msg_case_case_aplicant" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_advertisement"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_advertisement"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello,</p>
|
||||
<p>The first interview was good. Skilled and open minded applicant.</p>
|
||||
|
|
@ -404,7 +789,7 @@
|
|||
</record>
|
||||
<record id="msg_case_mkt1_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_mkt1"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_mkt1"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello,</p>
|
||||
<p>The first interview was good. I will propose a second interview</p>
|
||||
|
|
@ -416,7 +801,7 @@
|
|||
</record>
|
||||
<record id="msg_case_mkt1_2" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_case_mkt1"/>
|
||||
<field name="res_id" ref="hr_recruitment.hr_case_mkt1"/>
|
||||
<field name="body" type="html">
|
||||
<p>Hello,</p>
|
||||
<p>After the second interview, I think we should consider hiring him.</p>
|
||||
|
|
@ -489,4 +874,75 @@
|
|||
<field name="create_uid" ref="base.user_admin"/>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
</record>
|
||||
<record id="talent_pool_0" model="hr.talent.pool">
|
||||
<field name="name">Developer</field>
|
||||
<field name="categ_ids" eval="[Command.set([ref('tag_applicant_it')])]"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_talent_dev_1" model="hr.applicant">
|
||||
<field name="partner_name">Cameron Ellis</field>
|
||||
<field name="email_from">cameron.ellis@example.com</field>
|
||||
<field name="partner_phone">654687987</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">0</field>
|
||||
<field name="talent_pool_ids" eval="[Command.link(ref('talent_pool_0'))]"></field>
|
||||
</record>
|
||||
|
||||
<record id="hr_talent_dev_1" model="hr.applicant">
|
||||
<field name="pool_applicant_id" ref="hr_talent_dev_1" />
|
||||
</record>
|
||||
|
||||
<record id="hr_create_dev_applicant_from_talent_2" model="job.add.applicants">
|
||||
<field name="applicant_ids" eval="[Command.link(ref('hr_talent_dev_1'))]"/>
|
||||
<field name="job_ids" eval="[Command.link(ref('hr.job_developer')), Command.link(ref('hr.job_cto'))]"/>
|
||||
</record>
|
||||
|
||||
<function model="job.add.applicants" name="action_add_applicants_to_job">
|
||||
<value eval="[ref('hr_create_dev_applicant_from_talent_2')]"/>
|
||||
</function>
|
||||
|
||||
<record id="hr_talent_cto_2" model="hr.applicant">
|
||||
<field name="partner_name">Ethan Carter</field>
|
||||
<field name="email_from">ethan.carter@example.com</field>
|
||||
<field name="partner_phone">987891</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">1</field>
|
||||
<field name="talent_pool_ids" eval="[Command.link(ref('talent_pool_0'))]"></field>
|
||||
</record>
|
||||
|
||||
<record id="hr_talent_cto_2" model="hr.applicant">
|
||||
<field name="pool_applicant_id" ref="hr_talent_cto_2" />
|
||||
</record>
|
||||
|
||||
<record id="hr_create_cto_applicant_from_talent_1" model="job.add.applicants">
|
||||
<field name="applicant_ids" eval="[Command.link(ref('hr_talent_cto_2'))]"/>
|
||||
<field name="job_ids" eval="[Command.link(ref('hr.job_cto'))]"/>
|
||||
</record>
|
||||
|
||||
<function model="job.add.applicants" name="action_add_applicants_to_job">
|
||||
<value eval="[ref('hr_create_cto_applicant_from_talent_1')]"/>
|
||||
</function>
|
||||
|
||||
<record id="hr_talent_cto_3" model="hr.applicant">
|
||||
<field name="partner_name">Noah Bennett</field>
|
||||
<field name="email_from">noah.bennett@example.com</field>
|
||||
<field name="partner_phone">8951245111</field>
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="priority">3</field>
|
||||
<field name="talent_pool_ids" eval="[Command.link(ref('talent_pool_0'))]"></field>
|
||||
</record>
|
||||
|
||||
<record id="hr_talent_cto_3" model="hr.applicant">
|
||||
<field name="pool_applicant_id" ref="hr_talent_cto_3" />
|
||||
</record>
|
||||
|
||||
<record id="hr_create_cto_applicant_from_talent_2" model="job.add.applicants">
|
||||
<field name="applicant_ids" eval="[Command.link(ref('hr_talent_cto_3'))]"/>
|
||||
<field name="job_ids" eval="[Command.link(ref('hr.job_cto'))]"/>
|
||||
</record>
|
||||
|
||||
<function model="job.add.applicants" name="action_add_applicants_to_job">
|
||||
<value eval="[ref('hr_create_cto_applicant_from_talent_2')]"/>
|
||||
</function>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="hr_recruitment_tour" model="web_tour.tour">
|
||||
<field name="name">hr_recruitment_tour</field>
|
||||
<field name="sequence">230</field>
|
||||
<field name="rainbow_man_message"><![CDATA[
|
||||
<div>Great job! You hired a new colleague!</div><div>Try the Website app to publish job offers online.</div>
|
||||
]]></field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="mail_alias_jobs" model="mail.alias">
|
||||
<field name="alias_name">jobs</field>
|
||||
<field name="alias_model_id" ref="model_hr_applicant"/>
|
||||
<field name="alias_user_id" ref="base.user_admin"/>
|
||||
<field name="alias_parent_model_id" ref="model_hr_job"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -19,7 +19,14 @@
|
|||
<field name="name">Applicant Hired</field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="description">Applicant hired</field>
|
||||
</record>
|
||||
|
||||
<!-- Talent-related subtypes for messaging / Chatter -->
|
||||
<record id="mt_talent_new" model="mail.message.subtype">
|
||||
<field name="name">New Talent</field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Talent created</field>
|
||||
</record>
|
||||
|
||||
<!-- Job-related subtypes for messaging / Chatter -->
|
||||
|
|
@ -28,6 +35,7 @@
|
|||
<field name="res_model">hr.job</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="hidden" eval="True"/>
|
||||
<field name="description">Job Position created</field>
|
||||
</record>
|
||||
<record id="mt_job_applicant_stage_changed" model="mail.message.subtype">
|
||||
<field name="name">Applicant Stage Changed</field>
|
||||
|
|
@ -56,8 +64,8 @@
|
|||
<field name="name">Job Position Created</field>
|
||||
<field name="res_model">hr.department</field>
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="parent_id" ref="mt_job_new"/>
|
||||
<field name="relation_field">department_id</field>
|
||||
<field name="default">False</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
|
|||
|
|
@ -6,266 +6,248 @@
|
|||
<field name="name">Recruitment: Refuse</field>
|
||||
<field name="model_id" ref="hr_recruitment.model_hr_applicant"/>
|
||||
<field name="subject">Your Job Application: {{ object.job_id.name }}</field>
|
||||
<field name="email_to">{{ (not object.partner_id and object.email_from or '') }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id or '' }}</field>
|
||||
<field name="email_to" eval="False"/>
|
||||
<field name="partner_to" eval="False"/>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="description">When you refuse an application, you can choose this template</field>
|
||||
<field name="body_html" type="html">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
Hello,<br/><br/>
|
||||
Thank you for your interest in joining the
|
||||
<b><t t-out="object.company_id.name or ''">YourCompany</t></b> team. We
|
||||
wanted to let you know that, although your resume is
|
||||
competitive, our hiring team reviewed your application
|
||||
and <b>did not select it for further consideration</b>.
|
||||
<br/><br/>
|
||||
Please note that recruiting is hard, and we can make
|
||||
mistakes. Do not hesitate to reply to this email if you
|
||||
think we made a mistake, or if you want more information
|
||||
about our decision.
|
||||
<br/><br/>
|
||||
We will, however, keep your resume on record and get in
|
||||
touch with you about future opportunities that may be a
|
||||
better fit for your skills and experience.
|
||||
<br/><br/>
|
||||
We wish you all the best in your job search and hope we
|
||||
will have the chance to consider you for another role
|
||||
in the future.
|
||||
<br/><br/>
|
||||
Thank you,
|
||||
<div style="font-size: 11px; color: grey;">
|
||||
<t t-if="object.user_id">
|
||||
-- <br/>
|
||||
<strong t-out="object.user_id.name or ''">Mitchell Admin</strong><br/>
|
||||
Email: <t t-out="object.user_id.email or ''">admin@yourcompany.example.com</t><br/>
|
||||
Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t>
|
||||
</t>
|
||||
<t t-else="">
|
||||
-- <br/>
|
||||
<t t-out="object.company_id.name or ''">YourCompany</t><br/>
|
||||
The HR Team
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
Hello,<br/><br/>
|
||||
Thank you for your interest in joining the
|
||||
<b><t t-out="object.company_id.name or ''">YourCompany</t></b> team. We
|
||||
wanted to let you know that, although your resume is
|
||||
competitive, our hiring team reviewed your application
|
||||
and <b>did not select it for further consideration</b>.
|
||||
<br/><br/>
|
||||
Please note that recruiting is hard, and we can make
|
||||
mistakes. Do not hesitate to reply to this email if you
|
||||
think we made a mistake, or if you want more information
|
||||
about our decision.
|
||||
<br/><br/>
|
||||
We will, however, keep your resume on record and get in
|
||||
touch with you about future opportunities that may be a
|
||||
better fit for your skills and experience.
|
||||
<br/><br/>
|
||||
We wish you all the best in your job search and hope we
|
||||
will have the chance to consider you for another role
|
||||
in the future.
|
||||
<br/><br/>
|
||||
Thank you,
|
||||
<div style="font-size: 11px; color: grey;">
|
||||
<t t-if="object.user_id">
|
||||
-- <br/>
|
||||
<strong t-out="object.user_id.name or ''">Mitchell Admin</strong><br/>
|
||||
Email: <t t-out="object.user_id.email or ''">admin@yourcompany.example.com</t><br/>
|
||||
Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t>
|
||||
</t>
|
||||
<t t-else="">
|
||||
-- <br/>
|
||||
<t t-out="object.company_id.name or ''">YourCompany</t><br/>
|
||||
The HR Team
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="lang">{{ object.partner_id.lang or '' }}</field>
|
||||
</record>
|
||||
|
||||
<record id="email_template_data_applicant_interest" model="mail.template">
|
||||
<field name="name">Recruitment: Interest</field>
|
||||
<field name="model_id" ref="hr_recruitment.model_hr_applicant"/>
|
||||
<field name="subject">Your Job Application: {{ object.job_id.name }}</field>
|
||||
<field name="email_to">{{ (not object.partner_id and object.email_from or '') }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id or '' }}</field>
|
||||
<field name="email_to" eval="False"/>
|
||||
<field name="partner_to" eval="False"/>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="description">Set this template to a recruitment stage to send it when applications reach that stage</field>
|
||||
<field name="body_html" type="html">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" style="background-color: white; border-collapse: collapse; margin-left: 20px;">
|
||||
<tr>
|
||||
<td valign="top" style="padding: 0px 10px;">
|
||||
<div style="text-align: center">
|
||||
<h2>Congratulations!</h2>
|
||||
<div style="color:grey;">Your resume has been positively reviewed.</div>
|
||||
</div>
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
We just reviewed your resume, and it caught our
|
||||
attention. As we think you might be great for the
|
||||
position, your application has been short listed for a
|
||||
call or an interview.
|
||||
<br/><br/>
|
||||
<div t-if="'website_url' in object.job_id and object.job_id.website_url" style="padding: 16px 8px 16px 8px;">
|
||||
<a t-att-href="object.job_id.website_url"
|
||||
style="background-color: #875a7b; text-decoration: none; color: #fff; padding: 8px 16px 8px 16px; border-radius: 5px;">Job Description</a>
|
||||
</div>
|
||||
<div style="margin: 0px; padding: 0px;">
|
||||
<div style="text-align: center">
|
||||
<h2>Congratulations!</h2>
|
||||
<div style="color:grey;">Your resume has been positively reviewed.</div>
|
||||
</div>
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
We just reviewed your resume, and it caught our
|
||||
attention. As we think you might be great for the
|
||||
position, your application has been short listed for a
|
||||
call or an interview.
|
||||
<br/><br/>
|
||||
<div t-if="'website_url' in object.job_id and object.job_id.website_url" style="padding: 16px 8px 16px 8px;">
|
||||
<a t-att-href="object.job_id.website_url"
|
||||
t-attf-style="background-color: {{object.company_id.email_secondary_color or '#875A7B'}}; text-decoration: none; color: {{object.company_id.email_primary_color or '#FFFFFF'}}; padding: 8px 16px 8px 16px; border-radius: 5px;">Job Description</a>
|
||||
</div>
|
||||
|
||||
<t t-if="object.user_id">
|
||||
You will soon be contacted by:<br/>
|
||||
<strong t-out="object.user_id.name or ''">Mitchell Admin</strong><br/>
|
||||
<span>Email: <t t-out="object.user_id.email or ''">admin@yourcompany.example.com</t></span><br/>
|
||||
<span>Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t></span>
|
||||
<br/><br/>
|
||||
</t>
|
||||
See you soon,
|
||||
<div style="font-size: 11px; color: grey;">
|
||||
-- <br/>
|
||||
The HR Team
|
||||
<t t-if="'website_url' in object.job_id and hasattr(object.job_id, 'website_url') and object.job_id.website_url">
|
||||
Discover <a href="/jobs" style="text-decoration:none;color:#717188;">all our jobs</a>.<br/>
|
||||
</t>
|
||||
</div>
|
||||
<t t-if="object.user_id">
|
||||
You will soon be contacted by:<br/>
|
||||
<strong t-out="object.user_id.name or ''">Mitchell Admin</strong><br/>
|
||||
<span>Email: <t t-out="object.user_id.email or ''">admin@yourcompany.example.com</t></span><br/>
|
||||
<span>Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t></span>
|
||||
<br/><br/>
|
||||
</t>
|
||||
See you soon,
|
||||
<div style="font-size: 11px; color: grey;">
|
||||
-- <br/>
|
||||
The HR Team
|
||||
<t t-if="'website_url' in object.job_id and hasattr(object.job_id, 'website_url') and object.job_id.website_url">
|
||||
Discover <a href="/jobs" style="text-decoration:none;color:#717188;">all our jobs</a>.<br/>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 0px;"/>
|
||||
<h3 style="color:#9A6C8E;"><strong>What is the next step?</strong></h3>
|
||||
We usually <strong>answer applications within a few days</strong>.
|
||||
<br/><br/>
|
||||
The next step is either a call or a meeting in our offices.
|
||||
<br/>
|
||||
Feel free to <strong>contact us if you want a faster
|
||||
feedback</strong> or if you don't get news from us
|
||||
quickly enough (just reply to this email).
|
||||
<br/>
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 0px;"/>
|
||||
<h3 style="color:#9A6C8E;"><strong>What is the next step?</strong></h3>
|
||||
We usually <strong>answer applications within a few days</strong>.
|
||||
<br/><br/>
|
||||
The next step is either a call or a meeting in our offices.
|
||||
<br/>
|
||||
Feel free to <strong>contact us if you want a faster
|
||||
feedback</strong> or if you don't get news from us
|
||||
quickly enough (just reply to this email).
|
||||
<br/>
|
||||
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 17px 0px 16px 0px;"/>
|
||||
<t t-set="location" t-value="''"/>
|
||||
<t t-if="object.job_id.address_id.name">
|
||||
<strong t-out="object.job_id.address_id.name or ''">Teksa SpA</strong><br/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street">
|
||||
<t t-out="object.job_id.address_id.street or ''">Puerto Madero 9710</t><br/>
|
||||
<t t-set="location" t-value="object.job_id.address_id.street"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street2">
|
||||
<t t-out="object.job_id.address_id.street2 or ''">Of A15, Santiago (RM)</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.street2)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.city">
|
||||
<t t-out="object.job_id.address_id.city or ''">Pudahuel</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.city)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.state_id.name">
|
||||
<t t-out="object.job_id.address_id.state_id.name or ''">C1</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.state_id.name)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.zip">
|
||||
<t t-out="object.job_id.address_id.zip or ''">98450</t>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.zip)"/>
|
||||
</t>
|
||||
<br/>
|
||||
<t t-if="object.job_id.address_id.country_id.name">
|
||||
<t t-out="object.job_id.address_id.country_id.name or ''">Argentina</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.country_id.name)"/>
|
||||
</t>
|
||||
<br/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table></field>
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 17px 0px 16px 0px;"/>
|
||||
<t t-set="location" t-value="''"/>
|
||||
<t t-if="object.job_id.address_id.name">
|
||||
<strong t-out="object.job_id.address_id.name or ''">Teksa SpA</strong><br/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street">
|
||||
<t t-out="object.job_id.address_id.street or ''">Puerto Madero 9710</t><br/>
|
||||
<t t-set="location" t-value="object.job_id.address_id.street"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street2">
|
||||
<t t-out="object.job_id.address_id.street2 or ''">Of A15, Santiago (RM)</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.street2)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.city">
|
||||
<t t-out="object.job_id.address_id.city or ''">Pudahuel</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.city)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.state_id.name">
|
||||
<t t-out="object.job_id.address_id.state_id.name or ''">C1</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.state_id.name)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.zip">
|
||||
<t t-out="object.job_id.address_id.zip or ''">98450</t>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.zip)"/>
|
||||
</t>
|
||||
<br/>
|
||||
<t t-if="object.job_id.address_id.country_id.name">
|
||||
<t t-out="object.job_id.address_id.country_id.name or ''">Argentina</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.country_id.name)"/>
|
||||
</t>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="lang">{{ object.partner_id.lang or '' }}</field>
|
||||
</record>
|
||||
|
||||
<record id="email_template_data_applicant_congratulations" model="mail.template">
|
||||
<field name="name">Recruitment: Application Acknowledgement</field>
|
||||
<field name="model_id" ref="hr_recruitment.model_hr_applicant"/>
|
||||
<field name="subject">Your Job Application: {{ object.job_id.name }}</field>
|
||||
<field name="email_to">{{ (not object.partner_id and object.email_from or '') }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id or '' }}</field>
|
||||
<field name="email_to" eval="False"/>
|
||||
<field name="partner_to" eval="False"/>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="description">Confirmation email sent to all new job applications</field>
|
||||
<field name="body_html" type="html">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" style="background-color: white; border-collapse: collapse; margin-left: 20px;">
|
||||
<tr>
|
||||
<td valign="top" style="padding: 0px 10px;">
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
Hello,
|
||||
<br/><br/>
|
||||
We confirm we successfully received your application for the job
|
||||
"<a t-att-href="hasattr(object.job_id, 'website_url') and object.job_id.website_url or ''" style="color:#9A6C8E;"><strong t-out="object.job_id.name or ''">Experienced Developer</strong></a>" at <strong t-out="object.company_id.name or ''">YourCompany</strong>.
|
||||
<br/><br/>
|
||||
We will come back to you shortly.
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
Hello,
|
||||
<br/><br/>
|
||||
We confirm we successfully received your application for the job
|
||||
"<a t-att-href="hasattr(object.job_id, 'website_url') and object.job_id.website_url or ''" style="color:#9A6C8E;"><strong t-out="object.job_id.name or ''">Experienced Developer</strong></a>" at <strong t-out="object.company_id.name or ''">YourCompany</strong>.
|
||||
<br/><br/>
|
||||
We will come back to you shortly.
|
||||
|
||||
<div t-if="'website_url' in object.job_id and object.job_id.website_url" style="padding: 16px 8px 16px 8px;">
|
||||
<a t-att-href="object.job_id.website_url"
|
||||
style="background-color: #875a7b; text-decoration: none; color: #fff; padding: 8px 16px 8px 16px; border-radius: 5px;">Job Description</a>
|
||||
</div>
|
||||
<div t-if="'website_url' in object.job_id and object.job_id.website_url" style="padding: 16px 8px 16px 8px;">
|
||||
<a t-att-href="object.job_id.website_url"
|
||||
t-attf-style="background-color: {{object.company_id.email_secondary_color or '#875A7B'}}; text-decoration: none; color: {{object.company_id.email_primary_color or '#FFFFFF'}}; padding: 8px 16px 8px 16px; border-radius: 5px;">Job Description</a>
|
||||
</div>
|
||||
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 0px;"/>
|
||||
<t t-if="object.user_id">
|
||||
<h3 style="color:#9A6C8E;"><strong>Your Contact:</strong></h3>
|
||||
<p>
|
||||
<strong t-out="object.user_id.name or ''">Mitchell Admin</strong><br/>
|
||||
<span>Email: <t t-out="object.user_id.email or ''">admin@yourcompany.example.com</t></span><br/>
|
||||
<span>Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t></span>
|
||||
</p>
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 0px;"/>
|
||||
</t>
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 0px;"/>
|
||||
<t t-if="object.user_id">
|
||||
<h3 style="color:#9A6C8E;"><strong>Your Contact:</strong></h3>
|
||||
<p>
|
||||
<strong t-out="object.user_id.name or ''">Mitchell Admin</strong><br/>
|
||||
<span>Email: <t t-out="object.user_id.email or ''">admin@yourcompany.example.com</t></span><br/>
|
||||
<span>Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t></span>
|
||||
</p>
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 16px 0px 16px 0px;"/>
|
||||
</t>
|
||||
|
||||
<h3 style="color:#9A6C8E;"><strong>What is the next step?</strong></h3>
|
||||
We usually <strong>answer applications within a few days.</strong><br/><br/>
|
||||
Feel free to <strong>contact us if you want a faster
|
||||
feedback</strong> or if you don't get news from us
|
||||
quickly enough (just reply to this email).
|
||||
<h3 style="color:#9A6C8E;"><strong>What is the next step?</strong></h3>
|
||||
We usually <strong>answer applications within a few days.</strong><br/><br/>
|
||||
Feel free to <strong>contact us if you want a faster
|
||||
feedback</strong> or if you don't get news from us
|
||||
quickly enough (just reply to this email).
|
||||
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 17px 0px 16px 0px;"/>
|
||||
<t t-set="location" t-value="''" />
|
||||
<t t-if="object.job_id.address_id.name">
|
||||
<strong t-out="object.job_id.address_id.name or ''">Teksa SpA</strong><br/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street">
|
||||
<t t-out="object.job_id.address_id.street or ''">Puerto Madero 9710</t><br/>
|
||||
<t t-set="location" t-value="object.job_id.address_id.street"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street2">
|
||||
<t t-out="object.job_id.address_id.street2 or ''">Of A15, Santiago (RM)</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.street2)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.city">
|
||||
<t t-out="object.job_id.address_id.city or ''">Pudahuel</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.city)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.state_id.name">
|
||||
<t t-out="object.job_id.address_id.state_id.name or ''">C1</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.state_id.name)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.zip">
|
||||
<t t-out="object.job_id.address_id.zip or ''">98450</t>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.zip)"/>
|
||||
</t>
|
||||
<br/>
|
||||
<t t-if="object.job_id.address_id.country_id.name">
|
||||
<t t-out="object.job_id.address_id.country_id.name or ''">Argentina</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.country_id.name)"/>
|
||||
</t>
|
||||
<br/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table></field>
|
||||
<hr width="97%" style="background-color: rgb(204,204,204); border: medium none; clear: both; display: block; font-size: 0px; min-height: 1px; line-height: 0; margin: 17px 0px 16px 0px;"/>
|
||||
<t t-set="location" t-value="''" />
|
||||
<t t-if="object.job_id.address_id.name">
|
||||
<strong t-out="object.job_id.address_id.name or ''">Teksa SpA</strong><br/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street">
|
||||
<t t-out="object.job_id.address_id.street or ''">Puerto Madero 9710</t><br/>
|
||||
<t t-set="location" t-value="object.job_id.address_id.street"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.street2">
|
||||
<t t-out="object.job_id.address_id.street2 or ''">Of A15, Santiago (RM)</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.street2)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.city">
|
||||
<t t-out="object.job_id.address_id.city or ''">Pudahuel</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.city)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.state_id.name">
|
||||
<t t-out="object.job_id.address_id.state_id.name or ''">C1</t>,
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.state_id.name)"/>
|
||||
</t>
|
||||
<t t-if="object.job_id.address_id.zip">
|
||||
<t t-out="object.job_id.address_id.zip or ''">98450</t>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.zip)"/>
|
||||
</t>
|
||||
<br/>
|
||||
<t t-if="object.job_id.address_id.country_id.name">
|
||||
<t t-out="object.job_id.address_id.country_id.name or ''">Argentina</t><br/>
|
||||
<t t-set="location" t-value="'%s, %s' % (location, object.job_id.address_id.country_id.name)"/>
|
||||
</t>
|
||||
<br/>
|
||||
</div>
|
||||
</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="lang">{{ object.partner_id.lang or '' }}</field>
|
||||
</record>
|
||||
|
||||
<record id="email_template_data_applicant_not_interested" model="mail.template">
|
||||
<field name="name">Recruitment: Not interested anymore</field>
|
||||
<field name="model_id" ref="hr_recruitment.model_hr_applicant"/>
|
||||
<field name="subject">Your Job Application: {{ object.job_id.name }}</field>
|
||||
<field name="email_to">{{ (not object.partner_id and object.email_from or '') }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id or '' }}</field>
|
||||
<field name="email_to" eval="False"/>
|
||||
<field name="partner_to" eval="False"/>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="description">When you refuse an application, you can choose this template</field>
|
||||
<field name="body_html" type="html">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
Dear,<br/><br/>
|
||||
We would like to thank you for your interest and your time.<br/>
|
||||
We wish you all the best in your future endeavors.
|
||||
<br/><br/>
|
||||
Best<br/>
|
||||
<div style="font-size: 11px; color: grey;">
|
||||
<t t-if="object.user_id">
|
||||
-- <br/>
|
||||
<strong t-out="object.user_id.name or ''">Marc Demo</strong><br/>
|
||||
Email: <t t-out="object.user_id.email or ''">mark.brown23@example.com</t><br/>
|
||||
Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t>
|
||||
</t>
|
||||
<t t-else="">
|
||||
-- <br/>
|
||||
<t t-out="object.company_id.name or ''">YourCompany</t><br/>
|
||||
The HR Team<br/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="margin: 0px; padding: 0px;">
|
||||
<div style="font-size: 13px; margin: 0px; padding: 0px;">
|
||||
Dear,<br/><br/>
|
||||
We would like to thank you for your interest and your time.<br/>
|
||||
We wish you all the best in your future endeavors.
|
||||
<br/><br/>
|
||||
Best<br/>
|
||||
<div style="font-size: 11px; color: grey;">
|
||||
<t t-if="object.user_id">
|
||||
-- <br/>
|
||||
<strong t-out="object.user_id.name or ''">Marc Demo</strong><br/>
|
||||
Email: <t t-out="object.user_id.email or ''">mark.brown23@example.com</t><br/>
|
||||
Phone: <t t-out="object.user_id.phone or ''">+1 650-123-4567</t>
|
||||
</t>
|
||||
<t t-else="">
|
||||
-- <br/>
|
||||
<t t-out="object.company_id.name or ''">YourCompany</t><br/>
|
||||
The HR Team<br/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="lang">{{ object.partner_id.lang or '' }}</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
|
|
|
|||
|
|
@ -2,10 +2,13 @@
|
|||
<odoo><data noupdate="1">
|
||||
|
||||
<template id="applicant_hired_template">
|
||||
Applicant hired<br/>
|
||||
<ul>
|
||||
<li>Employee: <a href="#" t-att-data-oe-id="applicant.emp_id.id" data-oe-model="hr.employee"><t t-esc="applicant.emp_id.name"/></a></li>
|
||||
</ul>
|
||||
Employee created: <a href="#" t-att-data-oe-id="applicant.employee_id.id" data-oe-model="hr.employee"><t t-esc="applicant.employee_id.name"/></a>
|
||||
</template>
|
||||
|
||||
<template id="mail_notification_light_without_background" inherit_id="mail.mail_notification_light">
|
||||
<xpath expr="//t//table[@role='presentation']" position="attributes">
|
||||
<attribute name="style" add="background-color: white;" separator=" "/>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</data></odoo>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,596 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- -->
|
||||
<!-- Department -->
|
||||
<!-- -->
|
||||
<record id="dep_management" model="hr.department">
|
||||
<field name="name">Management</field>
|
||||
<field name="color" eval="1" />
|
||||
</record>
|
||||
|
||||
<record id="dep_rd" model="hr.department">
|
||||
<field name="name">Research and development</field>
|
||||
<field name="color" eval="2" />
|
||||
</record>
|
||||
|
||||
<record id="dep_marketing" model="hr.department">
|
||||
<field name="name">Marketing manager</field>
|
||||
<field name="parent_id" ref="dep_management" />
|
||||
<field name="color" eval="3" />
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<!-- Applicant tags -->
|
||||
<!-- -->
|
||||
<record id="tag_applicant_demo" model="hr.applicant.category">
|
||||
<field name="name">Demo</field>
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<!-- Jobs -->
|
||||
<!-- -->
|
||||
<record id="job_marketing" model="hr.job">
|
||||
<field name="name">Marketing and Community Manager</field>
|
||||
<field name="department_id" ref="dep_marketing" />
|
||||
<field name="no_of_recruitment">2</field>
|
||||
<field name="description">
|
||||
The Marketing Manager outlines the medium to long-term marketing strategies for
|
||||
global
|
||||
market segments they oversee.
|
||||
They work closely with Sales to create and manage the yearly budget.
|
||||
Additionally, they shape the product and customer portfolio aligned with the
|
||||
marketing
|
||||
strategy.
|
||||
Success in this role hinges on effective teamwork with Technical Services and Sales
|
||||
teams.
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="job_full_stack_dev" model="hr.job">
|
||||
<field name="name">Full Stack Developer</field>
|
||||
<field name="department_id" ref="dep_rd" />
|
||||
<field name="no_of_recruitment">3</field>
|
||||
<field name="description">
|
||||
We are seeking a Full Stack Developer to join our dynamic team, bringing expertise
|
||||
in
|
||||
both front-end and back-end technologies.
|
||||
The ideal candidate will have a proven track record in developing scalable web
|
||||
applications, ensuring robust functionality,
|
||||
and delivering engaging user experiences. With a strong foundation in HTML, CSS,
|
||||
JavaScript, and server-side languages,
|
||||
alongside a keen eye for UI/UX design, this role offers the opportunity to play a
|
||||
pivotal part in shaping our
|
||||
digital presence and driving our organization's growth.
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<!-- Applicants -->
|
||||
<!-- -->
|
||||
<record id="scenario_applicant_macm_helen" model="hr.applicant">
|
||||
<field name="email_from">helenlee@exampe.email.com</field>
|
||||
<field name="partner_name">Helen Lee</field>
|
||||
<field name="type_id" ref="degree_bac5" />
|
||||
<field name="categ_ids"
|
||||
eval="[Command.set([ref('tag_applicant_sales'), ref('tag_applicant_manager'), ref('tag_applicant_demo')])]" />
|
||||
<field name="availability"
|
||||
eval="DateTime.today()" />
|
||||
<field name="priority">2</field>
|
||||
<field name="linkedin_profile">www.example.linkedin.com/in/helen.lee</field>
|
||||
<field name="job_id" ref="job_marketing" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
<field name="medium_id" ref="utm.utm_medium_direct" />
|
||||
<field name="department_id" ref="dep_marketing" />
|
||||
<field name="salary_expected">3100</field>
|
||||
<field name="salary_proposed">3100</field>
|
||||
<field name="stage_id" ref="stage_job5" />
|
||||
|
||||
<field name="create_date" eval="DateTime.today() - relativedelta(days=20)" />
|
||||
<field name="write_date" eval="DateTime.today() - relativedelta(days=20)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_enrique" model="hr.applicant">
|
||||
<field name="email_from">enrique.jones152@gmail.example.com</field>
|
||||
<field name="partner_name">Enrique Jones</field>
|
||||
<field name="type_id" ref="degree_bachelor" />
|
||||
<field name="categ_ids"
|
||||
eval="[Command.set([ref('tag_applicant_sales'), ref('tag_applicant_demo')])]" />
|
||||
<field name="availability"
|
||||
eval="DateTime.today() + relativedelta(days=10)" />
|
||||
<field name="priority">2</field>
|
||||
<field name="linkedin_profile">www.example.linkedin.com/in/enrique.jones</field>
|
||||
<field name="job_id" ref="job_marketing" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
<field name="medium_id" ref="utm.utm_medium_direct" />
|
||||
<field name="department_id" ref="dep_marketing" />
|
||||
<field name="salary_expected">2900</field>
|
||||
<field name="stage_id" ref="stage_job3" />
|
||||
|
||||
<field name="create_date" eval="DateTime.today() - relativedelta(months=2)" />
|
||||
<field name="date_last_stage_update"
|
||||
eval="DateTime.today() - relativedelta(days=1)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_hannah" model="hr.applicant">
|
||||
<field name="email_from">hannah.glover@exampe.email.com</field>
|
||||
<field name="partner_name">Hannah Glover</field>
|
||||
<field name="type_id" ref="degree_licenced" />
|
||||
<field name="categ_ids"
|
||||
eval="[Command.set([ref('tag_applicant_it'), ref('tag_applicant_manager'), ref('tag_applicant_demo')])]" />
|
||||
<field name="availability"
|
||||
eval="DateTime.today() + relativedelta(months=1)" />
|
||||
<field name="priority">3</field>
|
||||
<field name="linkedin_profile">www.example.linkedin.com/in/hannah.glover</field>
|
||||
<field name="job_id" ref="job_full_stack_dev" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
<field name="medium_id" ref="utm.utm_medium_direct" />
|
||||
|
||||
<field name="department_id" ref="dep_rd" />
|
||||
<field name="salary_expected">3800</field>
|
||||
<field name="stage_id" ref="stage_job1" />
|
||||
|
||||
<field name="create_date" eval="DateTime.today() - relativedelta(days=5)" />
|
||||
<field name="date_last_stage_update"
|
||||
eval="DateTime.today() - relativedelta(days=5)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_simon" model="hr.applicant">
|
||||
<field name="email_from">simon.jones@exampe.email.com</field>
|
||||
<field name="partner_name">Simon Jones</field>
|
||||
<field name="type_id" ref="degree_graduate" />
|
||||
<field name="categ_ids"
|
||||
eval="[Command.set([ref('tag_applicant_demo')])]" />
|
||||
<field name="availability"
|
||||
eval="DateTime.today()" />
|
||||
<field name="priority">0</field>
|
||||
<field name="linkedin_profile">www.example.linkedin.com/in/simon.jones</field>
|
||||
<field name="job_id" ref="job_full_stack_dev" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
<field name="medium_id" ref="utm.utm_medium_direct" />
|
||||
<field name="department_id" ref="dep_rd" />
|
||||
<field name="salary_expected">3000</field>
|
||||
<field name="stage_id" ref="stage_job1" />
|
||||
<field name="active">False</field>
|
||||
<field name="application_status">refused</field>
|
||||
<field name="refuse_reason_id" ref="refuse_reason_1"></field>
|
||||
|
||||
<field name="create_date"
|
||||
eval="DateTime.today() - relativedelta(days=1)" />
|
||||
<field name="date_last_stage_update"
|
||||
eval="DateTime.today() - relativedelta(days=3)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_maria" model="hr.applicant">
|
||||
<field name="email_from">maria.rodriguez@example.email.com</field>
|
||||
<field name="partner_name">Maria Rodriguez</field>
|
||||
<field name="type_id" ref="degree_graduate" />
|
||||
<field name="categ_ids"
|
||||
eval="[Command.set([ref('tag_applicant_demo')])]" />
|
||||
<field name="availability"
|
||||
eval="(DateTime.today()).strftime('%Y-%m-%d')" />
|
||||
<field name="priority">0</field>
|
||||
<field name="linkedin_profile">www.example.linkedin.com/in/maria.rodriguez</field>
|
||||
<field name="job_id" ref="job_full_stack_dev" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
<field name="medium_id" ref="utm.utm_medium_direct" />
|
||||
<field name="department_id" ref="dep_rd" />
|
||||
<field name="stage_id" ref="stage_job0" />
|
||||
<field name="applicant_notes">
|
||||
I had a discussion with Maria during the last networking event we organized. I was
|
||||
impressed by her enthusiasm for the company and I suggested to her that she should
|
||||
apply. Hopefully she is a good fit for the company🤞.
|
||||
</field>
|
||||
|
||||
<field name="create_date" eval="DateTime.today()" />
|
||||
<field name="date_last_stage_update"
|
||||
eval="DateTime.today()" />
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<!-- Résumés -->
|
||||
<!-- -->
|
||||
<record id="scenario_applicant_macm_enrique_cv" model="ir.attachment">
|
||||
<field name="name">Enrique_Jones_CV.pdf</field>
|
||||
<field name="datas" type="base64"
|
||||
file="hr_recruitment/static/applicant_cvs/Enrique_Jones_CV.pdf"></field>
|
||||
<field name="res_model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
</record>
|
||||
|
||||
<!-- Set the main attachment to avoid automatic sending to the OCR-->
|
||||
<record id="scenario_applicant_macm_enrique" model="hr.applicant">
|
||||
<field name="message_main_attachment_id" ref="hr_recruitment.scenario_applicant_macm_enrique_cv" />
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<!-- Activities -->
|
||||
<!-- -->
|
||||
<record id="scenario_applicant_macm_enrique_activity" model="mail.activity">
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="res_model_id" ref="model_hr_applicant" />
|
||||
<field name="activity_type_id" ref="mail.mail_activity_data_email" />
|
||||
<field name="date_deadline"
|
||||
eval="DateTime.today() + relativedelta(days=1)" />
|
||||
<field name="summary">Send an email with a contract propsal.</field>
|
||||
<field name="create_uid" ref="base.user_admin" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_hannah_activity" model="mail.activity">
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_fsd_hannah" />
|
||||
<field name="res_model_id" ref="model_hr_applicant" />
|
||||
<field name="activity_type_id" ref="mail.mail_activity_data_todo" />
|
||||
<field name="date_deadline"
|
||||
eval="DateTime.today()" />
|
||||
<field name="summary">Reach out to schedule the first interview.</field>
|
||||
<field name="create_uid" ref="base.user_admin" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_maria_activity" model="mail.activity">
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_fsd_maria" />
|
||||
<field name="res_model_id" ref="model_hr_applicant" />
|
||||
<field name="activity_type_id" ref="mail.mail_activity_data_todo" />
|
||||
<field name="date_deadline"
|
||||
eval="DateTime.today() + relativedelta(days=5)" />
|
||||
<field name="summary">Evaluate Maria's application</field>
|
||||
<field name="create_uid" ref="base.user_admin" />
|
||||
<field name="user_id" ref="base.user_admin" />
|
||||
</record>
|
||||
|
||||
<!-- -->
|
||||
<!-- Messages -->
|
||||
<!-- -->
|
||||
|
||||
<!-- APPLICANT HELEN -->
|
||||
<!-- it's missing the initial email that acknowledges the application (subject: your Job
|
||||
Application) -->
|
||||
<record id="scenario_applicant_macm_helen_mm_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=17)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_helen_mtv_1" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">New</field>
|
||||
<field name="new_value_char">Qualification</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job0')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job1')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_helen_mm_1" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_helen_mm_c_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
This candidate look very promising, I will schedule an interview with her soon
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=17)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_helen_mm_2" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=15)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_helen_mtv_2" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">Qualification</field>
|
||||
<field name="new_value_char">First Interview</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job1')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job2')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_helen_mm_2" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_helen_mm_c_2" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
I had the first interview with this candidate and was thoroughly impressed
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=14)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_helen_mm_3" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=10)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_helen_mtv_3" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">First Interview</field>
|
||||
<field name="new_value_char">Second Interview</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job2')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job3')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_helen_mm_3" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_helen_mm_c_3" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
I conducted the second interview and somehow managed to be even more impressed.
|
||||
I think this candidate is a perfect fit for the company. We should offer her a
|
||||
position with the salary she is expecting.
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=9)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_helen_mm_4" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=7)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_helen_mtv_4" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">Second Interview</field>
|
||||
<field name="new_value_char">Contract Proposal</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job3')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job4')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_helen_mm_4" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_helen_mm_c_4" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
I sent her a contract proposal, hopefully she will accept it.
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=7)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_helen_mm_5" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_helen" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=2)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_helen_mtv_5" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">Contract Proposal</field>
|
||||
<field name="new_value_char">Contract Signed</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job4')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job5')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_helen_mm_5" />
|
||||
</record>
|
||||
|
||||
<!-- APPLICANT ENRIQUE -->
|
||||
<!-- it's missing the initial email that acknowledges the application (subject: your Job
|
||||
Application) -->
|
||||
<record id="scenario_applicant_macm_enrique_mm_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(months=1, days=17)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_enrique_mtv_1" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">New</field>
|
||||
<field name="new_value_char">Qualification</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job0')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job1')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_enrique_mm_1" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_enrique_mm_c_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
Please review Enrique's application materials carefully. He has a strong
|
||||
background
|
||||
in sales and a proven track record. His experience aligns well with our current
|
||||
needs.
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(months=1, days=17)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_enrique_mm_2" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(months=1, days=10)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_enrique_mtv_2" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">Qualification</field>
|
||||
<field name="new_value_char">First Interview</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job1')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job2')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_enrique_mm_2" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_enrique_mm_c_2" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
The first interview went smoothly. He demonstrated excellent problem-solving
|
||||
skills
|
||||
and a deep understanding of our industry. Let's discuss how we can proceed based
|
||||
on
|
||||
his performance
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(months=1, days=9)" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_macm_enrique_mm_3" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=20)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_macm_enrique_mtv_3" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">First Interview</field>
|
||||
<field name="new_value_char">Second Interview</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job2')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job3')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_macm_enrique_mm_3" />
|
||||
</record>
|
||||
|
||||
<record id="msg_scenario_applicant_macm_enrique_mm_c_3" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_macm_enrique" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear colleagues,</p>
|
||||
<p>
|
||||
After the second interview, it's clear that Enrique would be a valuable addition
|
||||
to
|
||||
our team. His insights during the discussion were impressive, and he showed
|
||||
great
|
||||
enthusiasm for the role. I suggest we propose him a contract with the salary he
|
||||
indicated he wanted.
|
||||
</p>
|
||||
<p>Kind regards,</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=15)" />
|
||||
</record>
|
||||
|
||||
<!-- APPLICANT HANNAH GLOVER -->
|
||||
<!-- it's missing the initial email that acknowledges the application (subject: your Job
|
||||
Application) -->
|
||||
<record id="scenario_applicant_fsd_hannah_mm_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_fsd_hannah" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=17)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_fsd_hannah_mtv_1" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">New</field>
|
||||
<field name="new_value_char">Qualification</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job0')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job1')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_fsd_hannah_mm_1" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_hannah_mm_c_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_fsd_hannah" />
|
||||
<field name="body" type="html">
|
||||
<p>Dear team,</p>
|
||||
<p>
|
||||
I wanted to share my initial impressions of Hannah Glover after reading through
|
||||
her
|
||||
CV and portfolio website. Her portfolio and experience have truly caught my
|
||||
attention, showcasing a deep understanding of both front-end and back-end
|
||||
technologies. I'm particularly impressed by her ability to solve complex
|
||||
problems
|
||||
and her enthusiasm for learning new technologies. I believe she would be a
|
||||
valuable
|
||||
addition to our team. We should schedule an interview with her ASAP!
|
||||
</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=2)" />
|
||||
</record>
|
||||
|
||||
<!-- APPLICANT SIMON JONES -->
|
||||
<!-- it's missing the initial email that acknowledges the application (subject: your Job
|
||||
Application) -->
|
||||
<record id="scenario_applicant_fsd_simon_mm_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_fsd_simon" />
|
||||
<field name="message_type">notification</field>
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=17)" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="subtype_id" ref="hr_recruitment.mt_applicant_stage_changed" />
|
||||
</record>
|
||||
<record id="scenario_applicant_fsd_simon_mtv_1" model="mail.tracking.value">
|
||||
<field name="field_id" ref="hr_recruitment.field_hr_applicant__stage_id" />
|
||||
<field name="old_value_char">New</field>
|
||||
<field name="new_value_char">Qualification</field>
|
||||
<field name="old_value_integer" eval="ref('hr_recruitment.stage_job0')" />
|
||||
<field name="new_value_integer" eval="ref('hr_recruitment.stage_job1')" />
|
||||
<field name="mail_message_id" ref="scenario_applicant_fsd_simon_mm_1" />
|
||||
</record>
|
||||
|
||||
<record id="scenario_applicant_fsd_simon_mm_c_1" model="mail.message">
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="res_id" ref="hr_recruitment.scenario_applicant_fsd_simon" />
|
||||
<field name="body" type="html">
|
||||
<p>
|
||||
After reviewing Simon's application, it appears that his skill set is not
|
||||
sufficiently advanced, and he has minimal experience. Should we place him on our
|
||||
reserve list, if by any chance we require a junior developer in the near future?
|
||||
</p>
|
||||
</field>
|
||||
<field name="message_type">comment</field>
|
||||
<field name="subtype_id" ref="mail.mt_note" />
|
||||
<field name="author_id" ref="base.partner_admin" />
|
||||
<field name="date" eval="DateTime.today() - relativedelta(days=2)" />
|
||||
</record>
|
||||
<!-- It's missing the refusal email -->
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
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
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
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
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
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
4663
odoo-bringout-oca-ocb-hr_recruitment/hr_recruitment/i18n/uz.po
Normal file
4663
odoo-bringout-oca-ocb-hr_recruitment/hr_recruitment/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,11 +1,24 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import hr_department
|
||||
from . import hr_recruitment
|
||||
from . import hr_applicant
|
||||
from . import hr_applicant_category
|
||||
from . import hr_applicant_refuse_reason
|
||||
from . import hr_recruitment_degree
|
||||
from . import hr_recruitment_source
|
||||
from . import hr_recruitment_stage
|
||||
from . import hr_employee
|
||||
from . import hr_job
|
||||
from . import hr_talent_pool
|
||||
from . import res_config_settings
|
||||
from . import calendar
|
||||
from . import digest
|
||||
from . import utm_campaign
|
||||
from . import utm_source
|
||||
from . import res_company
|
||||
from . import res_partner
|
||||
from . import res_users
|
||||
from . import ir_attachment
|
||||
from . import ir_ui_menu
|
||||
from . import mail_activity_plan
|
||||
from . import hr_job_platform
|
||||
|
|
|
|||
|
|
@ -5,37 +5,57 @@ from odoo import api, fields, models
|
|||
|
||||
|
||||
class CalendarEvent(models.Model):
|
||||
""" Model for Calendar Event """
|
||||
_inherit = 'calendar.event'
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
self_ctx = self
|
||||
if self.env.context.get('default_applicant_id'):
|
||||
self = self.with_context(
|
||||
default_res_model='hr.applicant', #res_model seems to be lost without this
|
||||
self_ctx = self.with_context(
|
||||
default_res_model='hr.applicant', # res_model seems to be lost without this
|
||||
default_res_model_id=self.env.ref('hr_recruitment.model_hr_applicant').id,
|
||||
default_res_id=self.env.context.get('default_applicant_id'),
|
||||
default_partner_ids=self.env.context.get('default_partner_ids'),
|
||||
default_name=self.env.context.get('default_name')
|
||||
)
|
||||
|
||||
defaults = super(CalendarEvent, self).default_get(fields)
|
||||
defaults = super(CalendarEvent, self_ctx).default_get(fields)
|
||||
|
||||
# sync res_model / res_id to opportunity id (aka creating meeting from lead chatter)
|
||||
if 'applicant_id' not in defaults:
|
||||
res_model = defaults.get('res_model', False) or self.env.context.get('default_res_model')
|
||||
res_model_id = defaults.get('res_model_id', False) or self.env.context.get('default_res_model_id')
|
||||
if (res_model and res_model == 'hr.applicant') or (res_model_id and self.env['ir.model'].sudo().browse(res_model_id).model == 'hr.applicant'):
|
||||
defaults['applicant_id'] = defaults.get('res_id', False) or self.env.context.get('default_res_id', False)
|
||||
res_model = defaults.get('res_model', False) or self_ctx.env.context.get('default_res_model')
|
||||
res_model_id = defaults.get('res_model_id', False) or self_ctx.env.context.get('default_res_model_id')
|
||||
if (res_model and res_model == 'hr.applicant') or (res_model_id and self_ctx.env['ir.model'].sudo().browse(res_model_id).model == 'hr.applicant'):
|
||||
defaults['applicant_id'] = defaults.get('res_id', False) or self_ctx.env.context.get('default_res_id', False)
|
||||
|
||||
return defaults
|
||||
|
||||
applicant_id = fields.Many2one('hr.applicant', string="Applicant", index='btree_not_null', ondelete='set null')
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
events = super().create(vals_list)
|
||||
if not self.env['hr.applicant'].has_access('read'):
|
||||
return events
|
||||
|
||||
attachments = False
|
||||
if "default_applicant_id" in self.env.context:
|
||||
attachments = self.env['hr.applicant'].browse(self.env.context['default_applicant_id']).attachment_ids
|
||||
|
||||
if attachments:
|
||||
self.env['ir.attachment'].create([{
|
||||
'name': att.name,
|
||||
'type': 'binary',
|
||||
'datas': att.datas,
|
||||
'res_model': event._name,
|
||||
'res_id': event.id
|
||||
} for event in events for att in attachments])
|
||||
return events
|
||||
|
||||
def _compute_is_highlighted(self):
|
||||
super(CalendarEvent, self)._compute_is_highlighted()
|
||||
super()._compute_is_highlighted()
|
||||
applicant_id = self.env.context.get('active_id')
|
||||
if self.env.context.get('active_model') == 'hr.applicant' and applicant_id:
|
||||
for event in self:
|
||||
if event.applicant_id.id == applicant_id:
|
||||
event.is_highlighted = True
|
||||
|
||||
applicant_id = fields.Many2one('hr.applicant', string="Applicant", index='btree_not_null', ondelete='set null')
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from odoo import fields, models, _
|
|||
from odoo.exceptions import AccessError
|
||||
|
||||
|
||||
class Digest(models.Model):
|
||||
class DigestDigest(models.Model):
|
||||
_inherit = 'digest.digest'
|
||||
|
||||
kpi_hr_recruitment_new_colleagues = fields.Boolean('New Employees')
|
||||
|
|
@ -14,16 +14,13 @@ class Digest(models.Model):
|
|||
def _compute_kpi_hr_recruitment_new_colleagues_value(self):
|
||||
if not self.env.user.has_group('hr_recruitment.group_hr_recruitment_user'):
|
||||
raise AccessError(_("Do not have access, skip this data for user's digest email"))
|
||||
for record in self:
|
||||
start, end, company = record._get_kpi_compute_parameters()
|
||||
new_colleagues = self.env['hr.employee'].search_count([
|
||||
('create_date', '>=', start),
|
||||
('create_date', '<', end),
|
||||
('company_id', '=', company.id)
|
||||
])
|
||||
record.kpi_hr_recruitment_new_colleagues_value = new_colleagues
|
||||
|
||||
self._calculate_company_based_kpi(
|
||||
'hr.employee',
|
||||
'kpi_hr_recruitment_new_colleagues_value',
|
||||
)
|
||||
|
||||
def _compute_kpis_actions(self, company, user):
|
||||
res = super(Digest, self)._compute_kpis_actions(company, user)
|
||||
res['kpi_hr_recruitment_new_colleagues'] = 'hr.open_view_employee_list_my&menu_id=%s' % self.env.ref('hr.menu_hr_root').id
|
||||
res = super()._compute_kpis_actions(company, user)
|
||||
res['kpi_hr_recruitment_new_colleagues'] = f"hr.open_view_employee_list_my?menu_id={self.env.ref('hr.menu_hr_root').id}"
|
||||
return res
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,22 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from random import randint
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrApplicantCategory(models.Model):
|
||||
_name = 'hr.applicant.category'
|
||||
_description = "Category of applicant"
|
||||
|
||||
def _get_default_color(self):
|
||||
return randint(1, 11)
|
||||
|
||||
name = fields.Char("Tag Name", required=True)
|
||||
color = fields.Integer(string='Color Index', default=_get_default_color)
|
||||
|
||||
_name_uniq = models.Constraint(
|
||||
'unique (name)',
|
||||
'Tag name already exists!',
|
||||
)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrApplicantRefuseReason(models.Model):
|
||||
_name = 'hr.applicant.refuse.reason'
|
||||
_description = 'Refuse Reason of Applicant'
|
||||
_order = 'sequence'
|
||||
|
||||
sequence = fields.Integer(copy=False, default=10)
|
||||
name = fields.Char('Description', required=True, translate=True)
|
||||
template_id = fields.Many2one('mail.template', string='Email Template', domain="[('model', '=', 'hr.applicant')]")
|
||||
active = fields.Boolean('Active', default=True)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class HrDepartment(models.Model):
|
||||
|
|
@ -17,8 +17,8 @@ class HrDepartment(models.Model):
|
|||
if self.env.user.has_group('hr_recruitment.group_hr_recruitment_interviewer'):
|
||||
applicant_data = self.env['hr.applicant']._read_group(
|
||||
[('department_id', 'in', self.ids), ('stage_id.sequence', '<=', '1')],
|
||||
['department_id'], ['department_id'])
|
||||
result = dict((data['department_id'][0], data['department_id_count']) for data in applicant_data)
|
||||
['department_id'], ['__count'])
|
||||
result = {department.id: count for department, count in applicant_data}
|
||||
for department in self:
|
||||
department.new_applicant_count = result.get(department.id, 0)
|
||||
else:
|
||||
|
|
@ -27,9 +27,9 @@ class HrDepartment(models.Model):
|
|||
def _compute_recruitment_stats(self):
|
||||
job_data = self.env['hr.job']._read_group(
|
||||
[('department_id', 'in', self.ids)],
|
||||
['no_of_hired_employee', 'no_of_recruitment', 'department_id'], ['department_id'])
|
||||
new_emp = dict((data['department_id'][0], data['no_of_hired_employee']) for data in job_data)
|
||||
expected_emp = dict((data['department_id'][0], data['no_of_recruitment']) for data in job_data)
|
||||
['department_id'], ['no_of_hired_employee:sum', 'no_of_recruitment:sum'])
|
||||
new_emp = {department.id: nb_employee for department, nb_employee, __ in job_data}
|
||||
expected_emp = {department.id: nb_recruitment for department, __, nb_recruitment in job_data}
|
||||
for department in self:
|
||||
department.new_hired_employee = new_emp.get(department.id, 0)
|
||||
department.expected_employee = expected_emp.get(department.id, 0)
|
||||
|
|
|
|||
|
|
@ -1,35 +1,27 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.tools.translate import _
|
||||
from datetime import timedelta
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = "hr.employee"
|
||||
|
||||
newly_hired_employee = fields.Boolean('Newly hired employee', compute='_compute_newly_hired_employee',
|
||||
search='_search_newly_hired_employee')
|
||||
applicant_id = fields.One2many('hr.applicant', 'emp_id', 'Applicant')
|
||||
applicant_ids = fields.One2many('hr.applicant', 'employee_id', 'Applicants', groups="hr.group_hr_user")
|
||||
|
||||
def _compute_newly_hired_employee(self):
|
||||
now = fields.Datetime.now()
|
||||
for employee in self:
|
||||
employee.newly_hired_employee = bool(employee.create_date > (now - timedelta(days=90)))
|
||||
def _get_partner_count_depends(self):
|
||||
return super()._get_partner_count_depends() + ['applicant_ids']
|
||||
|
||||
def _search_newly_hired_employee(self, operator, value):
|
||||
employees = self.env['hr.employee'].search([
|
||||
('create_date', '>', fields.Datetime.now() - timedelta(days=90))
|
||||
])
|
||||
return [('id', 'in', employees.ids)]
|
||||
def _get_related_partners(self):
|
||||
partners = super()._get_related_partners()
|
||||
return partners | self.sudo().applicant_ids.partner_id
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
employees = super().create(vals_list)
|
||||
for employee in employees:
|
||||
if employee.applicant_id:
|
||||
employee.applicant_id._message_log_with_view(
|
||||
for employee_sudo in employees.sudo():
|
||||
if employee_sudo.applicant_ids:
|
||||
employee_sudo.applicant_ids._message_log_with_view(
|
||||
'hr_recruitment.applicant_hired_template',
|
||||
values={'applicant': employee.applicant_id},
|
||||
subtype_id=self.env.ref("hr_recruitment.mt_applicant_hired").id)
|
||||
render_values={'applicant': employee_sudo.applicant_ids}
|
||||
)
|
||||
return employees
|
||||
|
|
|
|||
|
|
@ -3,12 +3,15 @@
|
|||
import ast
|
||||
from collections import defaultdict
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from odoo import api, fields, models, SUPERUSER_ID, _
|
||||
from odoo.tools import SQL
|
||||
from odoo.tools.convert import convert_file
|
||||
|
||||
|
||||
class Job(models.Model):
|
||||
_name = "hr.job"
|
||||
_inherit = ["mail.alias.mixin", "hr.job"]
|
||||
class HrJob(models.Model):
|
||||
_name = 'hr.job'
|
||||
_inherit = ["mail.alias.mixin", "hr.job", "mail.activity.mixin"]
|
||||
_order = "sequence, name asc"
|
||||
|
||||
@api.model
|
||||
|
|
@ -27,69 +30,102 @@ class Job(models.Model):
|
|||
def _get_default_favorite_user_ids(self):
|
||||
return [(6, 0, [self.env.uid])]
|
||||
|
||||
expected_employees = fields.Integer(groups="hr_recruitment.group_hr_recruitment_interviewer,hr.group_hr_user")
|
||||
no_of_employee = fields.Integer(groups="hr_recruitment.group_hr_recruitment_interviewer,hr.group_hr_user")
|
||||
requirements = fields.Text(groups="hr_recruitment.group_hr_recruitment_interviewer,hr.group_hr_user")
|
||||
user_id = fields.Many2one(groups="hr_recruitment.group_hr_recruitment_interviewer,hr.group_hr_user")
|
||||
|
||||
address_id = fields.Many2one(
|
||||
'res.partner', "Job Location", default=_default_address_id,
|
||||
domain=lambda self: self._address_id_domain(),
|
||||
help="Address where employees are working")
|
||||
application_ids = fields.One2many('hr.applicant', 'job_id', "Job Applications")
|
||||
application_count = fields.Integer(compute='_compute_application_count', string="Application Count")
|
||||
all_application_count = fields.Integer(compute='_compute_all_application_count', string="All Application Count")
|
||||
domain=lambda self: self._address_id_domain(), tracking=True,
|
||||
help="Select the location where the applicant will work. Addresses listed here are defined on the company's contact information.")
|
||||
application_ids = fields.One2many('hr.applicant', 'job_id', "Job Applications", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
application_count = fields.Integer(compute='_compute_application_count', string="Application Count", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
open_application_count = fields.Integer(compute='_compute_open_application_count', string="Open Application Count",
|
||||
groups="hr_recruitment.group_hr_recruitment_interviewer", help="Number of applications that are still ongoing (not hired or refused)")
|
||||
all_application_count = fields.Integer(compute='_compute_all_application_count', string="All Application Count",
|
||||
groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
new_application_count = fields.Integer(
|
||||
compute='_compute_new_application_count', string="New Application",
|
||||
compute='_compute_new_application_count', string="New Application", groups="hr_recruitment.group_hr_recruitment_interviewer",
|
||||
help="Number of applications that are new in the flow (typically at first step of the flow)")
|
||||
old_application_count = fields.Integer(
|
||||
compute='_compute_old_application_count', string="Old Application")
|
||||
applicant_hired = fields.Integer(compute='_compute_applicant_hired', string="Applicants Hired")
|
||||
compute='_compute_old_application_count', string="Old Application", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
applicant_hired = fields.Integer(compute='_compute_applicant_hired', string="Applicants Hired", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
manager_id = fields.Many2one(
|
||||
'hr.employee', related='department_id.manager_id', string="Department Manager",
|
||||
readonly=True, store=True)
|
||||
user_id = fields.Many2one('res.users', "Recruiter", domain="[('share', '=', False), ('company_ids', 'in', company_id)]", tracking=True, help="The Recruiter will be the default value for all Applicants Recruiter's field in this job position. The Recruiter is automatically added to all meetings with the Applicant.")
|
||||
hr_responsible_id = fields.Many2one(
|
||||
'res.users', "HR Responsible", tracking=True,
|
||||
help="Person responsible of validating the employee's contracts.")
|
||||
document_ids = fields.One2many('ir.attachment', compute='_compute_document_ids', string="Documents", readonly=True)
|
||||
documents_count = fields.Integer(compute='_compute_document_ids', string="Document Count")
|
||||
alias_id = fields.Many2one(
|
||||
'mail.alias', "Alias", ondelete="restrict", required=True,
|
||||
help="Email alias for this job position. New emails will automatically create new applicants for this job position.")
|
||||
readonly=True, store=True, groups="hr_recruitment.group_hr_recruitment_interviewer,hr.group_hr_user")
|
||||
document_ids = fields.One2many('ir.attachment', compute='_compute_document_ids', string="Documents", readonly=True, groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
documents_count = fields.Integer(compute='_compute_document_ids', string="Document Count", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
employee_count = fields.Integer(compute='_compute_employee_count')
|
||||
alias_id = fields.Many2one(help="Email alias for this job position. New emails will automatically create new applicants for this job position.", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
color = fields.Integer("Color Index")
|
||||
is_favorite = fields.Boolean(compute='_compute_is_favorite', inverse='_inverse_is_favorite')
|
||||
favorite_user_ids = fields.Many2many('res.users', 'job_favorite_user_rel', 'job_id', 'user_id', default=_get_default_favorite_user_ids)
|
||||
interviewer_ids = fields.Many2many('res.users', string='Interviewers', domain="[('share', '=', False), ('company_ids', 'in', company_id)]", help="The Interviewers set on the job position can see all Applicants in it. They have access to the information, the attachments, the meeting management and they can refuse him. You don't need to have Recruitment rights to be set as an interviewer.")
|
||||
extended_interviewer_ids = fields.Many2many('res.users', 'hr_job_extended_interviewer_res_users', compute='_compute_extended_interviewer_ids', store=True)
|
||||
interviewer_ids = fields.Many2many(
|
||||
"res.users",
|
||||
domain="[('share', '=', False), ('company_ids', '=?', company_id)]",
|
||||
string="Interviewers",
|
||||
groups="hr_recruitment.group_hr_recruitment_interviewer",
|
||||
help="The Interviewers set on the job position can see all Applicants in it. They have access to the information, the attachments, the meeting management and they can refuse him. You don't need to have Recruitment rights to be set as an interviewer.",
|
||||
)
|
||||
extended_interviewer_ids = fields.Many2many('res.users', 'hr_job_extended_interviewer_res_users', compute='_compute_extended_interviewer_ids', store=True, groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
industry_id = fields.Many2one('res.partner.industry', 'Industry', tracking=True, groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
expected_degree = fields.Many2one("hr.recruitment.degree", groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
|
||||
activities_overdue = fields.Integer(compute='_compute_activities')
|
||||
activities_today = fields.Integer(compute='_compute_activities')
|
||||
activity_count = fields.Integer(compute='_compute_activities', groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
|
||||
job_properties = fields.Properties('Properties', definition='company_id.job_properties_definition', groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
|
||||
applicant_properties_definition = fields.PropertiesDefinition('Applicant Properties', groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
no_of_hired_employee = fields.Integer(
|
||||
compute='_compute_no_of_hired_employee',
|
||||
string='Hired', copy=False, groups="hr_recruitment.group_hr_recruitment_interviewer",
|
||||
help='Number of hired employees for this job position during recruitment phase.',
|
||||
store=True)
|
||||
|
||||
job_source_ids = fields.One2many('hr.recruitment.source', 'job_id', groups="hr_recruitment.group_hr_recruitment_interviewer")
|
||||
|
||||
@api.depends('application_ids.date_closed')
|
||||
def _compute_no_of_hired_employee(self):
|
||||
counts = dict(self.env['hr.applicant']._read_group(
|
||||
domain=[
|
||||
('job_id', 'in', self.ids),
|
||||
('date_closed', '!=', False),
|
||||
'|',
|
||||
('active', '=', False),
|
||||
('active', '=', True),
|
||||
],
|
||||
groupby=['job_id'],
|
||||
aggregates=['__count']))
|
||||
for job in self:
|
||||
job.no_of_hired_employee = counts.get(job, 0)
|
||||
|
||||
@api.depends_context('uid')
|
||||
def _compute_activities(self):
|
||||
self.env.cr.execute("""
|
||||
SELECT
|
||||
app.job_id,
|
||||
COUNT(*) AS act_count,
|
||||
CASE
|
||||
WHEN %(today)s::date - act.date_deadline::date = 0 THEN 'today'
|
||||
WHEN %(today)s::date - act.date_deadline::date > 0 THEN 'overdue'
|
||||
END AS act_state
|
||||
COUNT(*) AS act_count
|
||||
FROM mail_activity act
|
||||
JOIN hr_applicant app ON app.id = act.res_id
|
||||
JOIN hr_recruitment_stage sta ON app.stage_id = sta.id
|
||||
WHERE act.user_id = %(user_id)s AND act.res_model = 'hr.applicant'
|
||||
AND act.date_deadline <= %(today)s::date AND app.active
|
||||
AND app.active
|
||||
AND app.job_id IN %(job_ids)s
|
||||
AND sta.hired_stage IS NOT TRUE
|
||||
GROUP BY app.job_id, act_state
|
||||
AND COALESCE(act.active, TRUE) = TRUE
|
||||
GROUP BY app.job_id
|
||||
""", {
|
||||
'today': fields.Date.context_today(self),
|
||||
'user_id': self.env.uid,
|
||||
'job_ids': tuple(self.ids),
|
||||
'job_ids': tuple(self.ids or [0]),
|
||||
# or [0] is used in case we only have newIds (web studio)
|
||||
})
|
||||
job_activities = defaultdict(dict)
|
||||
for activity in self.env.cr.dictfetchall():
|
||||
job_activities[activity['job_id']][activity['act_state']] = activity['act_count']
|
||||
job_activities[activity['job_id']] = activity['act_count']
|
||||
for job in self:
|
||||
job.activities_overdue = job_activities[job.id].get('overdue', 0)
|
||||
job.activities_today = job_activities[job.id].get('today', 0)
|
||||
job.activity_count = job_activities[job.id]
|
||||
|
||||
@api.depends('application_ids.interviewer_ids')
|
||||
def _compute_extended_interviewer_ids(self):
|
||||
|
|
@ -119,7 +155,7 @@ class Job(models.Model):
|
|||
unfavorited_jobs.write({'favorite_user_ids': [(3, self.env.uid)]})
|
||||
|
||||
def _compute_document_ids(self):
|
||||
applicants = self.mapped('application_ids').filtered(lambda self: not self.emp_id)
|
||||
applicants = self.mapped('application_ids').filtered(lambda self: not self.employee_id)
|
||||
app_to_job = dict((applicant.id, applicant.job_id.id) for applicant in applicants)
|
||||
attachments = self.env['ir.attachment'].search([
|
||||
'|',
|
||||
|
|
@ -143,17 +179,41 @@ class Job(models.Model):
|
|||
('active', '=', True),
|
||||
'&',
|
||||
('active', '=', False), ('refuse_reason_id', '!=', False),
|
||||
], ['job_id'], ['job_id'])
|
||||
result = dict((data['job_id'][0], data['job_id_count']) for data in read_group_result)
|
||||
], ['job_id'], ['__count'])
|
||||
result = {job.id: count for job, count in read_group_result}
|
||||
for job in self:
|
||||
job.all_application_count = result.get(job.id, 0)
|
||||
|
||||
def _compute_application_count(self):
|
||||
read_group_result = self.env['hr.applicant']._read_group([('job_id', 'in', self.ids)], ['job_id'], ['job_id'])
|
||||
result = dict((data['job_id'][0], data['job_id_count']) for data in read_group_result)
|
||||
read_group_result = self.env['hr.applicant']._read_group([('job_id', 'in', self.ids)], ['job_id'], ['__count'])
|
||||
result = {job.id: count for job, count in read_group_result}
|
||||
for job in self:
|
||||
job.application_count = result.get(job.id, 0)
|
||||
|
||||
def _compute_open_application_count(self):
|
||||
hired_stages = self.env['hr.recruitment.stage'].search([('hired_stage', '=', True)])
|
||||
result = dict(self.env['hr.applicant']._read_group([
|
||||
('job_id', 'in', self.ids),
|
||||
('stage_id', 'not in', hired_stages.ids),
|
||||
], ['job_id'], ['__count']))
|
||||
for job in self:
|
||||
job.open_application_count = result.get(job, 0)
|
||||
|
||||
def _compute_employee_count(self):
|
||||
res = {
|
||||
job.id: count
|
||||
for job, count in self.env['hr.employee'].sudo()._read_group(
|
||||
domain=[
|
||||
('job_id', 'in', self.ids),
|
||||
('company_id', 'in', self.env.companies.ids),
|
||||
],
|
||||
groupby=['job_id'],
|
||||
aggregates=['__count'],
|
||||
)
|
||||
}
|
||||
for job in self:
|
||||
job.employee_count = res.get(job.id, 0)
|
||||
|
||||
def _get_first_stage(self):
|
||||
self.ensure_one()
|
||||
return self.env['hr.recruitment.stage'].search([
|
||||
|
|
@ -185,9 +245,11 @@ class Job(models.Model):
|
|||
ON s.job_id = a.job_id
|
||||
AND a.stage_id = s.stage_id
|
||||
AND a.active IS TRUE
|
||||
WHERE a.company_id in %s
|
||||
WHERE a.company_id in %s
|
||||
OR a.company_id is NULL
|
||||
GROUP BY s.job_id
|
||||
""", [tuple(self.ids), tuple(self.env.companies.ids)]
|
||||
""", [tuple(self.ids or [0]), tuple(self.env.companies.ids)]
|
||||
# or [0] is used in case we only have newIds (web studio)
|
||||
)
|
||||
|
||||
new_applicant_count = dict(self.env.cr.fetchall())
|
||||
|
|
@ -199,8 +261,8 @@ class Job(models.Model):
|
|||
hired_data = self.env['hr.applicant']._read_group([
|
||||
('job_id', 'in', self.ids),
|
||||
('stage_id', 'in', hired_stages.ids),
|
||||
], ['job_id'], ['job_id'])
|
||||
job_hires = {data['job_id'][0]: data['job_id_count'] for data in hired_data}
|
||||
], ['job_id'], ['__count'])
|
||||
job_hires = {job.id: count for job, count in hired_data}
|
||||
for job in self:
|
||||
job.applicant_hired = job_hires.get(job.id, 0)
|
||||
|
||||
|
|
@ -210,14 +272,14 @@ class Job(models.Model):
|
|||
job.old_application_count = job.application_count - job.new_application_count
|
||||
|
||||
def _alias_get_creation_values(self):
|
||||
values = super(Job, self)._alias_get_creation_values()
|
||||
values = super()._alias_get_creation_values()
|
||||
values['alias_model_id'] = self.env['ir.model']._get('hr.applicant').id
|
||||
if self.id:
|
||||
values['alias_defaults'] = defaults = ast.literal_eval(self.alias_defaults or "{}")
|
||||
defaults.update({
|
||||
'job_id': self.id,
|
||||
'department_id': self.department_id.id,
|
||||
'company_id': self.department_id.company_id.id if self.department_id else self.company_id.id,
|
||||
'company_id': self.department_id.company_id.id or self.company_id.id,
|
||||
'user_id': self.user_id.id,
|
||||
})
|
||||
return values
|
||||
|
|
@ -225,22 +287,18 @@ class Job(models.Model):
|
|||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
vals['favorite_user_ids'] = vals.get('favorite_user_ids', []) + [(4, self.env.uid)]
|
||||
if vals.get('alias_name'):
|
||||
vals['alias_user_id'] = False
|
||||
vals["favorite_user_ids"] = vals.get("favorite_user_ids", [])
|
||||
jobs = super().create(vals_list)
|
||||
utm_linkedin = self.env.ref("utm.utm_source_linkedin", raise_if_not_found=False)
|
||||
if utm_linkedin:
|
||||
source_vals = [{
|
||||
'source_id': utm_linkedin.id,
|
||||
'job_id': job.id,
|
||||
} for job in jobs]
|
||||
self.env['hr.recruitment.source'].create(source_vals)
|
||||
jobs.sudo().interviewer_ids._create_recruitment_interviewers()
|
||||
return jobs
|
||||
|
||||
def write(self, vals):
|
||||
old_interviewers = self.interviewer_ids
|
||||
old_managers = {}
|
||||
old_recruiters = {}
|
||||
for job in self:
|
||||
old_managers[job] = job.manager_id
|
||||
old_recruiters[job] = job.user_id
|
||||
if 'active' in vals and not vals['active']:
|
||||
self.application_ids.active = False
|
||||
res = super().write(vals)
|
||||
|
|
@ -249,6 +307,24 @@ class Job(models.Model):
|
|||
interviewers_to_clean._remove_recruitment_interviewers()
|
||||
self.sudo().interviewer_ids._create_recruitment_interviewers()
|
||||
|
||||
# Subscribe the recruiter if it has changed.
|
||||
if "user_id" in vals:
|
||||
for job in self:
|
||||
to_unsubscribe = [
|
||||
partner
|
||||
for partner in old_recruiters[job].partner_id.ids
|
||||
if partner not in job.manager_id._get_related_partners().ids
|
||||
]
|
||||
job.message_unsubscribe(to_unsubscribe)
|
||||
application_ids = job.application_ids.filtered(
|
||||
lambda x:
|
||||
x.user_id == old_recruiters[job] and
|
||||
x.application_status == 'ongoing'
|
||||
)
|
||||
if application_ids:
|
||||
application_ids.message_unsubscribe(to_unsubscribe)
|
||||
application_ids.with_context(mail_auto_subscribe_no_notify=True).user_id = job.user_id
|
||||
|
||||
# Since the alias is created upon record creation, the default values do not reflect the current values unless
|
||||
# specifically rewritten
|
||||
# List of fields to keep synched with the alias
|
||||
|
|
@ -259,6 +335,16 @@ class Job(models.Model):
|
|||
job.alias_defaults = alias_default_vals
|
||||
return res
|
||||
|
||||
def _order_field_to_sql(self, alias, field_name, direction, nulls, query):
|
||||
if field_name == 'is_favorite':
|
||||
sql_field = SQL(
|
||||
"%s IN (SELECT job_id FROM job_favorite_user_rel WHERE user_id = %s)",
|
||||
SQL.identifier(alias, 'id'), self.env.uid,
|
||||
)
|
||||
return SQL("%s %s %s", sql_field, direction, nulls)
|
||||
|
||||
return super()._order_field_to_sql(alias, field_name, direction, nulls, query)
|
||||
|
||||
def _creation_subtype(self):
|
||||
return self.env.ref('hr_recruitment.mt_job_new')
|
||||
|
||||
|
|
@ -272,9 +358,9 @@ class Job(models.Model):
|
|||
'default_res_id': self.ids[0],
|
||||
'show_partner_name': 1,
|
||||
},
|
||||
'view_mode': 'tree',
|
||||
'view_mode': 'list',
|
||||
'views': [
|
||||
(self.env.ref('hr_recruitment.ir_attachment_hr_recruitment_list_view').id, 'tree')
|
||||
(self.env.ref('hr_recruitment.ir_attachment_hr_recruitment_list_view').id, 'list')
|
||||
],
|
||||
'search_view_id': self.env.ref('hr_recruitment.ir_attachment_view_search_inherit_hr_recruitment').ids,
|
||||
'domain': ['|',
|
||||
|
|
@ -288,37 +374,47 @@ class Job(models.Model):
|
|||
views = ['activity'] + [view for view in action['view_mode'].split(',') if view != 'activity']
|
||||
action['view_mode'] = ','.join(views)
|
||||
action['views'] = [(False, view) for view in views]
|
||||
return action
|
||||
|
||||
def action_open_late_activities(self):
|
||||
action = self.action_open_activities()
|
||||
action['context'] = {
|
||||
'default_job_id': self.id,
|
||||
'search_default_job_id': self.id,
|
||||
'search_default_activities_overdue': True,
|
||||
'search_default_running_applicant_activities': True,
|
||||
}
|
||||
return action
|
||||
|
||||
def action_open_today_activities(self):
|
||||
action = self.action_open_activities()
|
||||
action['context'] = {
|
||||
'default_job_id': self.id,
|
||||
'search_default_job_id': self.id,
|
||||
'search_default_activities_today': True,
|
||||
}
|
||||
return action
|
||||
@api.model
|
||||
def _action_load_recruitment_scenario(self):
|
||||
|
||||
def close_dialog(self):
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
convert_file(
|
||||
self.sudo().env,
|
||||
"hr_recruitment",
|
||||
"data/scenarios/hr_recruitment_scenario.xml",
|
||||
None,
|
||||
mode="init",
|
||||
)
|
||||
|
||||
def edit_dialog(self):
|
||||
form_view = self.env.ref('hr.view_hr_job_form')
|
||||
return {
|
||||
'name': _('Job'),
|
||||
'res_model': 'hr.job',
|
||||
'res_id': self.id,
|
||||
'views': [(form_view.id, 'form'),],
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'inline'
|
||||
"type": "ir.actions.client",
|
||||
"tag": "reload",
|
||||
}
|
||||
|
||||
def action_open_employees(self):
|
||||
self.ensure_one()
|
||||
if self.env['hr.employee'].has_access('read'):
|
||||
res_model = "hr.employee"
|
||||
else:
|
||||
res_model = "hr.employee.public"
|
||||
|
||||
return {
|
||||
'name': _("Related Employees"),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': res_model,
|
||||
'view_mode': 'list,kanban,form',
|
||||
'views': [(False, 'list'), (False, 'kanban'), (False, 'form')],
|
||||
'domain': [('company_id', 'in', self.env.companies.ids)],
|
||||
'context': {
|
||||
'default_job_id': self.id,
|
||||
'search_default_group_job': 1,
|
||||
'search_default_job_id': self.id,
|
||||
'expand': 1
|
||||
},
|
||||
}
|
||||
|
|
|
|||
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