initial commit

This commit is contained in:
devapp
2021-11-29 11:56:30 +01:00
parent 016e45a01c
commit 5b67068faa
4285 changed files with 927085 additions and 2 deletions

View File

@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="appraisal-grid" title="Appraisals" model="com.axelor.apps.talent.db.Appraisal">
<field name="employee" />
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
<field name="appraisalType" />
<field name="toDate" />
<field name="reviewerEmployee" />
<field name="statusSelect" />
</grid>
<grid name="appraisal-template-grid" title="Appraisal templates" model="com.axelor.apps.talent.db.Appraisal">
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
<field name="appraisalType" />
<field name="toDate" />
<field name="reviewerEmployee" />
</grid>
<form name="appraisal-form" title="Appraisal" model="com.axelor.apps.talent.db.Appraisal" width="large">
<panel name="actionPanel">
<field name="statusSelect" colSpan="8" widget="NavSelect" showTitle="false" />
<panel name="subActionPanel" colSpan="4" stacked="true">
<button name="sendAppraisalBtn" title="Send" showIf="statusSelect == 0" onClick="save,action-appraisal-method-send-appraisal"/>
<button name="realizeAppraisalBtn" title="Realize" showIf="statusSelect == 1" css="btn-success" onClick="save,action-appraisal-method-realize-appraisal"/>
<button name="cancelAppraisalBtn" title="Cancel" showIf="statusSelect &lt; 2" css="btn-danger" onClick="save,action-appraisal-method-cancel-appraisal"/>
<button name="draftAppraisalBtn" title="Draft" showIf="statusSelect == 3" onClick="save,action-appraisal-method-draft-appraisal"/>
</panel>
</panel>
<panel name="detailPanel">
<field name="employee" required="true" canView="false" onChange="action-appraisal-record-set-company-employee-onchange"/>
<field name="company" canEdit="false" canNew="false"/>
<field name="appraisalType" canEdit="false" canNew="false"/>
<field name="toDate" />
<field name="reviewerEmployee" canEdit="false" canNew="false"/>
<field name="description" colSpan="12" widget="html"/>
<field name="attrs" colSpan="12"/>
</panel>
<panel-mail name="mailPanel">
<mail-messages limit="4" />
<mail-followers />
</panel-mail>
</form>
<form name="appraisal-template-form" title="Appraisal template" model="com.axelor.apps.talent.db.Appraisal" width="large" onNew="action-appraisal-template-defaults">
<panel name="mainPanel">
<field name="company" />
<field name="appraisalType" />
<field name="toDate" />
<field name="reviewerEmployee" />
<field name="description" colSpan="12" widget="html"/>
<field name="attrs" colSpan="12"/>
<button name="openEmployeeSelectBtn" title="Create Appraisals" onClick="save,action-appraisal-template-open-employee-selection" colSpan="3" />
<field name="isTemplate" hidden="true" />
</panel>
</form>
<form name="appraisal-employee-select-form" title="Create Appraisals(Select Employees)" model="com.axelor.apps.talent.db.Appraisal"
onNew="action-appraisal-employee-select-default" width="large">
<panel name="mainPanel">
<field name="$employeeSet" type="many-to-many" colSpan="12" target="com.axelor.apps.hr.db.Employee" title="Employees"/>
<field name="sendAppraisals" type="boolean" title="Send" colSpan="2"/>
<button name="createAppraisalsBtn" title="Create" onClick="action-appraisal-template-method-create-appraisals" showIf="$employeeSet.length > 0" colSpan="3"/>
<field name="templateId" type="long" hidden="true" />
</panel>
</form>
<calendar name="appraisal-calendar" model="com.axelor.apps.talent.db.Appraisal" eventStart="toDate" title="Appraisals" colorBy="statusSelect">
<field name="employee"/>
</calendar>
<action-method name="action-appraisal-method-send-appraisal">
<call class="com.axelor.apps.talent.web.AppraisalController" method="send"/>
</action-method>
<action-method name="action-appraisal-method-realize-appraisal">
<call class="com.axelor.apps.talent.web.AppraisalController" method="realize"/>
</action-method>
<action-method name="action-appraisal-method-cancel-appraisal">
<call class="com.axelor.apps.talent.web.AppraisalController" method="cancel"/>
</action-method>
<action-method name="action-appraisal-method-draft-appraisal">
<call class="com.axelor.apps.talent.web.AppraisalController" method="draft"/>
</action-method>
<action-view name="action-appraisal-template-open-employee-selection" model="com.axelor.apps.talent.db.Appraisal" title="Create Appraisal(Select Employees)">
<view type="form" name="appraisal-employee-select-form"/>
<view-param name="popup" value="reload"/>
<view-param name="popup-save" value="false"/>
<view-param name="show-toolbar" value="false" />
<view-param name="show-confirm" value="false"/>
<context name="_templateId" expr="eval:id"/>
</action-view>
<action-method name="action-appraisal-template-method-create-appraisals">
<call class="com.axelor.apps.talent.web.AppraisalController" method="createAppraisals" />
</action-method>
<action-record name="action-appraisal-employee-select-default" model="com.axelor.apps.talent.db.Appraisal">
<field name="templateId" expr="eval:_templateId"/>
</action-record>
<action-record name="action-appraisal-template-defaults" model="com.axelor.apps.talent.db.Appraisal">
<field name="isTemplate" expr="eval:true"/>
</action-record>
<action-record name="action-appraisal-record-set-company-employee-onchange" model="com.axelor.apps.talent.db.Appraisal">
<field name="company" expr="eval:employee?.mainEmploymentContract?.payCompany"/>
</action-record>
<search-filters name="appraisal-fitlers" model="com.axelor.apps.talent.db.Appraisal" title="Appraisal filters">
<filter title="New appraisal">
<domain>self.isTemplate = false and self.statusSelect = 0</domain>
</filter>
<filter title="Upcoming appraisal">
<domain>self.isTemplate = false and self.statusSelect = 1</domain>
</filter>
<filter title="My upcoming appraisal">
<domain>self.employee.user.id = :_userId and self.isTemplate = false and self.statusSelect = 1</domain>
</filter>
<filter title="My completed appraisals">
<domain>self.employee.user.id = :_userId and self.isTemplate = false and self.statusSelect = 2</domain>
</filter>
<filter title="Upcoming appraisals of all employees of a team">
<domain>self.employee.user.id in :_teamUserIds and self.isTemplate = false and self.statusSelect = 1</domain>
</filter>
<filter title="Completed trainings of all employees of a team">
<domain>self.employee.user.id in :_teamUserIds and self.isTemplate = false and self.statusSelect = 2</domain>
</filter>
</search-filters>
</object-views>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="appraisal-type-grid" title="Appraisal types" model="com.axelor.apps.talent.db.AppraisalType">
<field name="name" />
</grid>
<form name="appraisal-type-form" title="Appraisal type" model="com.axelor.apps.talent.db.AppraisalType" width="large">
<panel name="namePanel">
<field name="name" />
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<chart name="chart.employee.training.per.category" title="Training per category">
<dataset type="jpql"><![CDATA[
SELECT
COUNT(*) AS _total,
self.training.category.name AS _category,
YEAR(self.fromDate) as _year
FROM
TrainingRegister self
WHERE
YEAR(self.fromDate) >= (YEAR(CURRENT_DATE)-3)
AND self.employee =:id
GROUP BY
self.training.category.name,
YEAR(self.fromDate)
ORDER BY
YEAR(self.fromDate)
]]></dataset>
<category key="_category" type="text" title="Training"/>
<series key="_total" type="bar" title="Total" groupBy="_year" />
</chart>
<chart name="chart.nb.hours.per.category" title="Nb. hours per category" onInit="action-training-chart-set-default-from-to-dates">
<search-fields>
<field name="fromDate" title="From" type="date" required="true" />
<field name="toDate" title="To" type="date" required="true" />
</search-fields>
<dataset type="jpql"><![CDATA[
SELECT
SUM(self.duration) AS _nbHours,
self.training.category.name AS _category
FROM
TrainingSession self
WHERE
self.fromDate >= :fromDate AND self.toDate <= :toDate
AND self.statusSelect = 2
GROUP BY
self.training.category.name
]]></dataset>
<category key="_category" type="text" title="Category"/>
<series key="_nbHours" type="bar" title="Nb Hours"/>
</chart>
<chart name="chart.nb.hours.per.training" title="Nb. hours per training" onInit="action-training-chart-set-default-from-to-dates">
<search-fields>
<field name="fromDate" title="From" type="date" required="true" />
<field name="toDate" title="To" type="date" required="true" />
</search-fields>
<dataset type="jpql"><![CDATA[
SELECT
SUM(self.duration) AS _nbHours,
self.training.name AS _training
FROM
TrainingSession self
WHERE
self.fromDate >= :fromDate AND self.toDate <= :toDate
AND self.statusSelect = 2
GROUP BY
self.training.name
]]></dataset>
<category key="_training" type="text" title="Training"/>
<series key="_nbHours" type="bar" title="Nb Hours" />
</chart>
<chart name="chart.nb.trained.employee.per.category" title="Nb. of trained employee per category" onInit="action-training-chart-set-default-from-to-dates">
<search-fields>
<field name="fromDate" title="From" type="date" required="true" />
<field name="toDate" title="To" type="date" required="true" />
</search-fields>
<dataset type="jpql"><![CDATA[
SELECT
COUNT(*) AS _nbEmployee,
self.training.category.name AS _category
FROM
TrainingRegister self
WHERE
self.fromDate >= :fromDate AND self.toDate <= :toDate
AND self.statusSelect = 2
GROUP BY
self.training.category.name,
self.employee
]]></dataset>
<category key="_category" type="text" title="Category"/>
<series key="_nbEmployee" type="bar" title="Nb Employee" />
</chart>
<chart name="chart.nb.training.hours.per.month" title="Nb of training hours per month" onInit="action-training-chart-set-3-month-from-to-dates">
<search-fields>
<field name="fromDate" title="From" type="date" required="true" />
<field name="toDate" title="To" type="date" required="true" />
</search-fields>
<dataset type="jpql"><![CDATA[
SELECT
SUM(self.duration) AS _nbHours,
CONCAT(MONTH(self.fromDate),'-',YEAR(self.fromDate)) AS _month
FROM
TrainingSession self
WHERE
self.fromDate >= :fromDate AND self.toDate <= :toDate
AND self.statusSelect = 2
GROUP BY
CONCAT(MONTH(self.fromDate),'-',YEAR(self.fromDate))
ORDER BY
CONCAT(MONTH(self.fromDate),'-',YEAR(self.fromDate))
]]></dataset>
<category key="_month" type="text" title="Month"/>
<series key="_nbHours" type="bar" title="Nb Hours" />
</chart>
<action-attrs name="action-training-chart-set-default-from-to-dates">
<attribute name="value" for="fromDate" expr="eval:__date__.withDayOfMonth(1)"/>
<attribute name="value" for="toDate" expr="eval:__date__"/>
</action-attrs>
<action-attrs name="action-training-chart-set-3-month-from-to-dates">
<attribute name="value" for="fromDate" expr="eval:__date__.minusMonths(3)"/>
<attribute name="value" for="toDate" expr="eval:__date__"/>
</action-attrs>
</object-views>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<!-- Dashboard Manager -->
<dashboard title="Dashboard" name="training.dashboard" >
<dashlet action="chart:chart.nb.hours.per.category" height="350" />
<dashlet action="chart:chart.nb.hours.per.training" height="350" />
<dashlet action="chart:chart.nb.trained.employee.per.category" height="350" />
<dashlet action="chart:chart.nb.training.hours.per.month" height="350" />
</dashboard>
</object-views>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="education-level-grid" title="Education level" model="com.axelor.apps.talent.db.EducationLevel">
<field name="name" />
</grid>
<form name="education-level-form" title="Education level" model="com.axelor.apps.talent.db.EducationLevel" width="large">
<panel name="namePanel">
<field name="name" />
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<form name="talent-employee-form" title="Employee" model="com.axelor.apps.hr.db.Employee">
<panel name="skillsPanel" title="Skills" if="__config__.app.isApp('training')">
<field name="trainingSkillSet" colSpan="12"/>
<field name="experienceSkillSet" colSpan="12"/>
<field name="skillSet" colSpan="12"/>
</panel>
<panel name="trainingPanel" title="Training" if="__config__.app.isApp('training')">
<panel-dashlet name="employeeTrainingRegisterPanel" action="action-dashlet-employee-training-register" colSpan="12"/>
<panel-dashlet name="employeeTrainingPerCategoryPanel" action="chart:chart.employee.training.per.category" colSpan="12"/>
</panel>
<panel name="appraisalPanel" title="Appraisal" if="__config__.app.isApp('appraisal')">
<panel-dashlet name="employeeAppraisalSentPanel" action="action-dashlet-employee-appraisal-sent" colSpan="12"/>
</panel>
</form>
<action-view name="action-dashlet-employee-training-register" title="Training Register" model="com.axelor.apps.talent.db.TrainingRegister">
<view type="grid" name="training-register-grid"/>
<view type="form" name="training-register-form"/>
<domain>self.employee = :__self__</domain>
</action-view>
<action-view name="action-dashlet-employee-appraisal-sent" title="Appraisals" model="com.axelor.apps.talent.db.Appraisal">
<view type="grid" name="appraisal-grid"/>
<view type="form" name="appraisal-form"/>
<domain>self.employee = :__self__</domain>
</action-view>
</object-views>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="hiring-stage-grid" title="Hiring Stage" model="com.axelor.apps.talent.db.HiringStage" canMove="true" orderBy="sequence" >
<field name="sequence" />
<field name="name" />
</grid>
<form name="hiring-stage-form" title="Hiring Stage" model="com.axelor.apps.talent.db.HiringStage" width="large">
<panel name="mainPanel">
<field name="sequence" />
<field name="name" />
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,155 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="job-application-grid" title="Job applications" model="com.axelor.apps.talent.db.JobApplication">
<field name="lastName" />
<field name="firstName" />
<field name="emailAddress" />
<field name="fixedPhone" />
<field name="mobilePhone" />
<field name="jobPosition" />
<field name="statusSelect" />
</grid>
<form name="job-application-form" title="Job application" model="com.axelor.apps.talent.db.JobApplication" width="large"
onNew="action-job-application-defaults" onLoad="action-talent-method-set-social-network-url">
<menubar>
<menu name="jobApplicationToolsMenu" title="Tools" icon="fa-wrench" showTitle="true">
<item name="scheduleEventItem" title="Schedule Event" action="save,action-job-application-schedule-event" readonlyIf="id == null"/>
</menu>
</menubar>
<panel name="mainPanel" readonlyIf="statusSelect == 3">
<field name="statusSelect" widget="NavSelect" showTitle="false" colSpan="8" readonly="true"/>
<field name="hiringStage" colSpan="4" widget="SuggestBox" canEdit="false"/>
<panel name="imagePanel" colSpan="4">
<field name="picture" widget="Image" colSpan="12" showTitle="false">
<viewer>
<![CDATA[
<img ng-show="record.picture" ng-src="{{$image('picture', 'content')}}" />
<img ng-show="!record.picture" src="img/partner-default.png" />
]]>
</viewer>
</field>
</panel>
<panel name="namePanel" colSpan="8">
<field name="titleSelect" selection-in="[1,2]"/>
<spacer/>
<field name="firstName" onChange="action-talent-method-set-social-network-url"/>
<field name="lastName" required="true" onChange="action-talent-method-set-social-network-url"/>
<field name="employee" showIf="statusSelect == 1" />
</panel>
</panel>
<panel sidebar="true" name="actionsPanel">
<button name="openBtn" title="Open" onClick="save,action-job-application-status-open,save" colSpan="12" hideIf="statusSelect == 0"/>
<button name="rejectBtn" title="Rejected" onClick="save,action-job-application-status-reject,save" colSpan="12" showIf="statusSelect == 0"/>
<button name="hireBtn" title="Hire" onClick="save,action-job-application-confirmation,action-job-application-method-hire" colSpan="12" showIf="statusSelect == 0"/>
<button name="cancelBtn" title="Cancel" onClick="save,action-job-application-status-cancel,save" colSpan="12" icon="fa-times-circle" css="btn-danger" hideIf="statusSelect == 1 || statusSelect == 3"/>
</panel>
<panel sidebar="true" name="JobOfferInformationPanel" title="Job Offer Information" readonlyIf="statusSelect == 3">
<field name="jobPosition" colSpan="6" canEdit="false"/>
<field name="jobPosition.statusSelect" colSpan="6"/>
<field name="responsible" colSpan="6" canEdit="false"/>
<field name="jobPosition.companyDepartment" colSpan="6"/>
<field name="jobPosition.publicationDate" colSpan="6"/>
</panel>
<panel sidebar="true" name="applicationInformationPanel" title="Application Information" readonlyIf="statusSelect == 3">
<field name="educationLevel" colSpan="6"/>
<field name="experienceSelect" colSpan="6"/>
<field name="industrySectorSet" widget="TagSelect" colSpan="6"/>
<field name="talentSource" title="Source" colSpan="6"/>
<field name="skillSet" widget="TagSelect" colSpan="6"/>
<field name="referredBy" colSpan="6"/>
<field name="creationDate" colSpan="6"/>
<field name="appreciation" widget="SelectProgress" colSpan="6"/>
</panel>
<panel-tabs name="mainPanelTab" readonlyIf="statusSelect == 3">
<panel name="descriptionPanel" title="Description">
<field name="description" widget="html" colSpan="12" />
</panel>
<panel name="contactPanel" title="Contact" colSpan="12">
<panel name="contactDetailsPanel" title="Contact details" colSpan="12">
<field name="mobilePhone" colSpan="3"/>
<field name="emailAddress" canRemove="false" canSelect="false" canSuggest="false" colSpan="3" canNew="true" canEdit="true">
<editor x-show-titles="false">
<field name="address" colSpan="12" pattern="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@+[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$" widget="Email" placeholder="user@mydomain.com"/>
</editor>
</field>
<field name="fixedPhone" colSpan="3"/>
<field name="fax" colSpan="3"/>
<field name="linkedInProfile" colSpan="3" widget="url"/>
<label name="linkedinLabel" title="&lt;a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' /&gt;" colSpan="2"/>
</panel>
<panel name="primaryAddressPanel" title="Primary Address" colSpan="12">
<field name="employeeAddress" colSpan="12" form-view="address-form" grid-view="address-grid" canNew="true" canEdit="false"/>
</panel>
<field name="fullName" hidden="true" />
</panel>
<panel name="contractPanel" title="Contract" colSpan="12">
<field name="jobPosition.contractType" />
<field name="expectedSalary" />
<field name="proposedSalary" />
<field name="availabilityFrom" />
</panel>
<panel-dashlet name="eventsPanel" title="Events" action="action-job-application-events" colSpan="12" />
<panel name="reasonNotHiredPanel" title="Reason not hired">
<field name="reasonNotHired" colSpan="12" showTitle="false"/>
</panel>
</panel-tabs>
<panel-mail name="mailPanel">
<mail-messages limit="4" />
<mail-followers />
</panel-mail>
</form>
<action-view name="action-job-application-schedule-event" title="Schedule Event" model="com.axelor.apps.crm.db.Event">
<view type="form" name="event-form"/>
<context name="_relatedToSelect" expr="eval:'com.axelor.apps.talent.db.JobApplication'" />
<context name="_relatedToSelectId" expr="eval:id" />
</action-view>
<action-view name="action-job-application-events" model="com.axelor.apps.crm.db.Event" title="Events">
<view type="grid" name="event-grid"/>
<view type="form" name="event-form"/>
<domain>self.relatedToSelect = 'com.axelor.apps.talent.db.JobApplication' and self.relatedToSelectId = :id</domain>
</action-view>
<action-record name="action-job-application-defaults" model="com.axelor.apps.talent.db.JobApplication">
<field name="jobPosition" expr="eval:__repo__(JobPosition).find(_jobPositionId)"/>
<field name="responsible" expr="eval:__repo__(Employee).find(_responsibleId)" />
</action-record>
<action-method name="action-job-application-method-hire">
<call class="com.axelor.apps.talent.web.JobApplicationController" method="hire"/>
</action-method>
<action-attrs name="action-job-application-status-cancel">
<attribute name="value" for="statusSelect" expr="eval: 3"/>
</action-attrs>
<action-attrs name="action-job-application-status-open">
<attribute name="value" for="statusSelect" expr="eval: 0"/>
</action-attrs>
<action-attrs name="action-job-application-status-reject">
<attribute name="value" for="statusSelect" expr="eval: 2"/>
</action-attrs>
<action-validate name="action-job-application-confirmation">
<alert message="A new employee form will be created. Do you confirm the creation ?"/>
</action-validate>
<action-method name="action-talent-method-set-social-network-url">
<call class="com.axelor.apps.talent.web.JobApplicationController" method="setSocialNetworkUrl"/>
</action-method>
<search-filters name="job-application-filters" model="com.axelor.apps.talent.db.JobApplication" title="Job Application Filters">
<filter title="Current applications">
<domain>self.statusSelect = 0</domain>
</filter>
</search-filters>
</object-views>

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="job-position-grid" title="Job positions" model="com.axelor.apps.talent.db.JobPosition">
<field name="jobReference" width="120"/>
<field name="jobTitle" />
<field name="companyDepartment" />
<field name="employee" />
<field name="contractType" />
<field name="statusSelect" />
</grid>
<form name="job-position-form" title="Job position" model="com.axelor.apps.talent.db.JobPosition" width="large">
<toolbar>
<button name="createJobApplicationBtn" title="Create a job application" colSpan="3" onClick="save,action-job-position-create-application"/>
</toolbar>
<panel name="mainPanel" readonlyIf="statusSelect == 4">
<field name="statusSelect" widget="NavSelect" readonly="true" colSpan="12" showTitle="false"/>
<field name="jobReference" colSpan="4" showTitle="false"/>
<field name="jobTitle" colSpan="12" showTitle="false" css="label-bold bold large" placeholder="Job title"/>
<spacer name="jobTitleSpacer"/>
<field name="company" />
<field name="location" />
<field name="companyDepartment" />
<field name="employee" />
<field name="nbOpenJob" />
<field name="nbPeopleHired" />
<field name="mailAccount" domain="self.isValid = true and self.serverTypeSelect &gt; 1" />
<field name="publicationDate" colSpan="6"/>
<field name="jobDescription" widget="html" colSpan="6" />
<field name="profileWanted" widget="html" colSpan="6" />
<spacer name="profileWantedSpacer" />
<panel-dashlet name="allApplicationsPanel" action="action-job-position-all-applications" colSpan="12" title="All applications"/>
</panel>
<panel name="buttonPanel" sidebar="true">
<button name="statusDraftBtn" title="Draft" onClick="save,action-job-position-record-status-draft,save" showIf="statusSelect == 4" colSpan="12"/>
<button name="statusOpenBtn" title="Open" onClick="save,action-job-position-record-status-open,save" showIf="statusSelect == 0" colSpan="12"/>
<button name="statusOnHoldBtn" title="On hold" onClick="save,action-job-position-record-status-onhold,save" showIf="statusSelect == 1" colSpan="12"/>
<button name="statusClosedBtn" title="Close" onClick="save,action-job-position-record-status-closed,save" showIf="statusSelect == 1 || statusSelect == 2" colSpan="12"/>
<button name="cancelBtn" title="Cancel" onClick="save,action-job-position-record-status-cancel,save" hideIf="statusSelect == 4" colSpan="12" icon="fa-times-circle" css="btn-danger"/>
</panel>
<panel name="otherDetailPanel" sidebar="true" readonlyIf="statusSelect == 4">
<field name="contractType" colSpan="6"/>
<field name="positionStatusSelect" colSpan="6"/>
<field name="experienceSelect" colSpan="6"/>
<field name="salary" colSpan="6"/>
<field name="startingDate" colSpan="6"/>
</panel>
</form>
<cards name="job-position-cards" model="com.axelor.apps.talent.db.JobPosition" title="Job positions">
<field name="jobTitle" />
<field name="jobReference" />
<template><![CDATA[
<div>
<div class="span12">
<span><strong>{{jobTitle}}</strong></span>
<br/>
<span><strong>{{jobReference}}</strong></span>
</div>
</div>
]]>
</template>
</cards>
<action-view name="action-job-position-all-applications" title="All applications" model="com.axelor.apps.talent.db.JobApplication">
<view type="grid" name="job-application-grid"/>
<view type="form" name="job-application-form"/>
<domain>self.jobPosition.id = :_jobPositionId</domain>
<context name="_jobPositionId" expr="eval:id"/>
</action-view>
<action-view name="action-job-position-create-application" title="Job Application" model="com.axelor.apps.talent.db.JobApplication">
<view type="form" name="job-application-form"/>
<view type="grid" name="job-application-grid"/>
<domain>self.jobPosition.id = :_jobPositionId</domain>
<context name="_jobPositionId" expr="eval:id"/>
<context name="_responsibleId" expr="eval:employee.id"/>
</action-view>
<action-record name="action-job-position-record-status-draft" model="com.axelor.apps.talent.db.JobPosition">
<field name="statusSelect" expr="eval: 0"/>
</action-record>
<action-record name="action-job-position-record-status-open" model="com.axelor.apps.talent.db.JobPosition">
<field name="statusSelect" expr="eval: 1"/>
</action-record>
<action-record name="action-job-position-record-status-onhold" model="com.axelor.apps.talent.db.JobPosition">
<field name="statusSelect" expr="eval: 2"/>
</action-record>
<action-record name="action-job-position-record-status-closed" model="com.axelor.apps.talent.db.JobPosition">
<field name="statusSelect" expr="eval: 3"/>
</action-record>
<action-record name="action-job-position-record-status-cancel" model="com.axelor.apps.talent.db.JobPosition">
<field name="statusSelect" expr="eval: 4"/>
</action-record>
<search-filters name="job-position-filters" model="com.axelor.apps.talent.db.JobPosition" title="Job Position Filters">
<filter title="Current job offers">
<domain>self.statusSelect &lt; 3</domain>
</filter>
<filter title="Closed job offers">
<domain>self.statusSelect &gt; 2</domain>
</filter>
</search-filters>
</object-views>

View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<!-- Recruitment menus -->
<menuitem name="recruitment-root" parent="hr-root" if="__config__.app.isApp('recruitment')" title="Recruitment" icon="fa-handshake-o" icon-background="#84429f" />
<menuitem name="recruitment-job-position-open" parent="recruitment-root" title="Job positions" action="recruitment.job.position.open" />
<action-view name="recruitment.job.position.open" model="com.axelor.apps.talent.db.JobPosition" title="Job positions">
<view name="job-position-cards" type="cards" />
<view name="job-position-grid" type="grid" />
<view name="job-position-form" type="form" />
<view-param name="search-filters" value="job-position-filters"/>
</action-view>
<menuitem name="recruitment-job-application-all" parent="recruitment-root" title="Applications" action="recruitment.job.application.all" />
<action-view name="recruitment.job.application.all" model="com.axelor.apps.talent.db.JobApplication" title="Applications">
<view name="job-application-grid" type="grid" />
<view name="job-application-form" type="form" />
<view-param name="search-filters" value="job-application-filters"/>
</action-view>
<menuitem name="recruitment-config" parent="recruitment-root" title="Configuration" icon="fa-cog"/>
<menuitem name="recruitment-config-education-level" parent="recruitment-config" title="Level of education" action="recruitment.config.education.level" />
<action-view name="recruitment.config.education.level" model="com.axelor.apps.talent.db.EducationLevel" title="Level of education">
<view name="education-level-grid" type="grid" />
<view name="education-level-form" type="form" />
</action-view>
<menuitem name="recruitment-config-hiring-stage" parent="recruitment-config" title="Hiring Stage" action="recruitment.config.hiringStage" />
<action-view name="recruitment.config.hiringStage" model="com.axelor.apps.talent.db.HiringStage" title="Hiring Stage">
<view name="hiring-stage-grid" type="grid" />
<view name="hiring-stage-form" type="form" />
</action-view>
<menuitem name="recruitment-config-source" parent="recruitment-config" title="Source" action="recruitment.config.source" />
<action-view name="recruitment.config.source" model="com.axelor.apps.talent.db.TalentSource" title="Source">
<view name="talent-source-grid" type="grid" />
<view name="talent-source-form" type="form" />
</action-view>
<menuitem name="recruitment-config-skill" parent="recruitment-config" title="Skills" action="recruitment.config.skill"/>
<action-view name="recruitment.config.skill" title="Skills" model="com.axelor.apps.talent.db.Skill">
<view type="grid" name="tag-skill-grid"/>
<view type="form" name="tag-skill-form"/>
</action-view>
<!-- Training menus -->
<menuitem name="training-root" parent="hr-root" if="__config__.app.isApp('training')" title="Training" icon="fa-graduation-cap" icon-background="#84429f"/>
<menuitem name="training-register-all" parent="training-root" title="All trainings" action="training.register.all" />
<action-view name="training.register.all" model="com.axelor.apps.talent.db.TrainingRegister" title="All trainings">
<view name="training-register-grid" type="grid" />
<view name="training-register-form" type="form" />
<view-param name="search-filters" value="my-training-register-fitlers"/>
<context name="_employeeId" expr="eval:__user__.employee?.id" />
<context name="_employeeList" expr="eval:([0] + __user__.teamSet.members.employee.id).flatten()" />
</action-view>
<menuitem name="training-dashboard" parent="training-root" title="Training dashboard" action="training.dashboard" />
<action-view name="training.dashboard" title="Training dashboard">
<view type="dashboard" name="training.dashboard"/>
</action-view>
<menuitem name="training-conf" parent="training-root" title="Configuration" icon="fa-cog"/>
<menuitem name="training-category-all" parent="training-conf" title="Categories" action="training.category.all" />
<action-view name="training.category.all" model="com.axelor.apps.talent.db.TrainingCategory" title="Categories">
<view name="training-category-grid" type="grid" />
<view name="training-category-form" type="form" />
</action-view>
<menuitem name="training-training-all" parent="training-conf" title="Trainings" action="training.training.all" />
<action-view name="training.training.all" model="com.axelor.apps.talent.db.Training" title="Trainings">
<view name="training-grid" type="grid" />
<view name="training-form" type="form" />
</action-view>
<menuitem name="training-session-all" parent="training-conf" title="Training sessions" action="training.session.all" />
<action-view name="training.session.all" model="com.axelor.apps.talent.db.TrainingSession" title="Training sessions">
<view name="training-session-grid" type="grid" />
<view name="training-session-form" type="form" />
</action-view>
<!-- Appraisal menus-->
<menuitem name="appraisal-root" parent="hr-root" title="Appraisals" if="__config__.app.isApp('appraisal')" icon="fa-comments-o" icon-background="#84429f"/>
<menuitem name="appraisal-all-appraisals" title="Appraisals" action="appraisal.all.appraisals" parent="appraisal-root" />
<action-view name="appraisal.all.appraisals"
model="com.axelor.apps.talent.db.Appraisal" title="Appraisals">
<view name="appraisal-grid" type="grid" />
<view name="appraisal-form" type="form" />
<view-param name="search-filters" value="appraisal-fitlers" />
<domain>self.isTemplate = false</domain>
<context name="_userId" expr="eval:__user__.id" />
<context name="_teamUserIds" expr="eval:([0] + __user__.teamSet.members.id).flatten()" />
</action-view>
<menuitem name="appraisal-config" title="Configuration" parent="appraisal-root" icon="fa-cog"/>
<menuitem name="appraisal-template-appraisals" title="Appraisal templates" action="appraisal.template.appraisals" parent="appraisal-config" />
<action-view name="appraisal.template.appraisals" title="Appraisal template" model="com.axelor.apps.talent.db.Appraisal">
<view type="grid" name="appraisal-template-grid"/>
<view type="form" name="appraisal-template-form"/>
<domain>self.isTemplate = true</domain>
</action-view>
<menuitem name="appraisal-config-appraisal-type" title="Appraisal types" action="appraisal.config.appraisal.type" parent="appraisal-config" />
<action-view name="appraisal.config.appraisal.type" title="Appraisal types" model="com.axelor.apps.talent.db.AppraisalType">
<view type="grid" name="appraisal-type-grid"/>
<view type="form" name="appraisal-type-form"/>
</action-view>
</object-views>

View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<selection name="training.register.rating.select">
<option value="0">0 %</option>
<option value="10">10 %</option>
<option value="20">20 %</option>
<option value="30">30 %</option>
<option value="40">40 %</option>
<option value="50">50 %</option>
<option value="60">60 %</option>
<option value="70">70 %</option>
<option value="80">80 %</option>
<option value="90">90 %</option>
<option value="100">100 %</option>
</selection>
<selection name="training.register.status.select">
<option value="0">Requested</option>
<option value="1">Planned</option>
<option value="2">Completed</option>
<option value="3">Canceled</option>
</selection>
<selection name="training.session.status.select">
<option value="1">Planned</option>
<option value="2">Completed</option>
<option value="3">Canceled</option>
</selection>
<selection name="job.position.experience.select">
<option value="0">0-2 years</option>
<option value="1">2-5 years</option>
<option value="2">5-10 years</option>
<option value="3">+10 years</option>
</selection>
<selection name="job.position.status.select">
<option value="0">Draft</option>
<option value="1">Open</option>
<option value="2">On hold</option>
<option value="3">Closed</option>
<option value="4">Cancel</option>
</selection>
<selection name="job.application.status.select">
<option value="0">Opened</option>
<option value="1">Hired</option>
<option value="2">Rejected</option>
<option value="3">Cancelled</option>
</selection>
<selection name="crm.event.related.to.select" id="talent.crm.event.related.to.select">
<option value="com.axelor.apps.talent.db.JobApplication">Job Application</option>
<option value="com.axelor.apps.talent.db.TrainingRegister">Training Register</option>
</selection>
<selection name="appraisal.status.selected">
<option value="0">Draft</option>
<option value="1">Sent</option>
<option value="2">Completed</option>
<option value="3">Canceled</option>
</selection>
<selection name="job.position.position.status">
<option value="0">Cadre</option>
<option value="1">Technicien</option>
</selection>
</object-views>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="tag-skill-grid" title="Tag skills" model="com.axelor.apps.talent.db.Skill">
<field name="name" />
</grid>
<form name="tag-skill-form" title="Tag skill" model="com.axelor.apps.talent.db.Skill" width="large">
<panel name="namePanel">
<field name="name" />
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="talent-source-grid" title="Source" model="com.axelor.apps.talent.db.TalentSource">
<field name="code" x-bind="{{code|unaccent|uppercase}}" />
<field name="name" />
</grid>
<form name="talent-source-form" title="Source" model="com.axelor.apps.talent.db.TalentSource" width="large">
<panel name="mainPanel">
<field name="code" x-bind="{{code|unaccent|uppercase}}" />
<field name="name" />
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="training-grid" title="Trainings" model="com.axelor.apps.talent.db.Training">
<field name="name" />
<field name="category" />
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
<field name="duration" />
<field name="mandatoryTraining" />
</grid>
<form name="training-form" title="Training" model="com.axelor.apps.talent.db.Training" width="large"
onNew="action-training-set-default" readonlyIf="$popup()" >
<panel name="mainPanel">
<field name="name" />
<field name="category" />
<field name="company" />
<field name="duration" />
<field name="mandatoryTraining" colSpan="4" />
<field name="skillSet" colSpan="8" widget="tag-select" />
<field name="requiredTrainingSet" colSpan="12" />
<field name="description" colSpan="12" />
<field name="program" colSpan="12" widget="html" />
<field name="objectives" colSpan="12" />
<button name="registerTrainingBtn" title="Register training" onClick="action-training-register-training" colSpan="4" />
<field name="rating" widget="progress" readonly="true" colSpan="8" />
</panel>
</form>
<action-record name="action-training-set-default" model="com.axelor.apps.talent.db.Training">
<field name="company" expr="eval:__user__.activeCompany"/>
</action-record>
<action-view name="action-training-register-training" title="Register training" model="com.axelor.apps.talent.db.TrainingRegister">
<view type="form" name="training-register-form"/>
<view type="grid" name="training-register-grid"/>
<context name="_training" expr="eval:__self__"/>
</action-view>
</object-views>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="training-category-grid" title="Training Categories" model="com.axelor.apps.talent.db.TrainingCategory">
<field name="name" />
</grid>
<form name="training-category-form" title="Training Category" model="com.axelor.apps.talent.db.TrainingCategory" width="large">
<panel name="namePanel">
<field name="name" />
</panel>
</form>
</object-views>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="training-register-grid" title="Training registers" model="com.axelor.apps.talent.db.TrainingRegister">
<field name="training" />
<field name="trainingSession" />
<field name="employee" />
<field name="fromDate" />
<field name="toDate" />
<field name="statusSelect" />
<field name="ratingSelect" widget="SelectProgress"/>
</grid>
<form name="training-register-form" title="Training register" model="com.axelor.apps.talent.db.TrainingRegister" width="large"
onNew="action-training-register-default" onSave="action-group-training-register-save-click">
<panel name="statusPanel" title="Status">
<field name="statusSelect" widget="NavSelect" readonly="true" colSpan="12" showTitle="false"/>
</panel>
<panel name="detailPanel">
<field name="training" />
<field name="trainingSession" onChange="action-training-session-change" onSelect="action-training-register-training-session-domain"/>
<field name="employee" />
<spacer name="employeeSpacer"/>
<field name="fromDate" />
<field name="toDate" />
</panel>
<panel name="actionPanel" itemSpan="12" sidebar="true">
<button name="planBtn" title="Accept/plan" showIf="statusSelect == 0" onClick="save,action-training-register-method-plan"/>
<button name="completeBtn" title="Training completed" showIf="statusSelect == 1" onClick="save,action-training-register-method-complete"/>
<button name="cancelBtn" title="Cancel" onClick="save,action-training-register-method-cancel"/>
<field name="ratingSelect" widget="SelectProgress"/>
<field name="calendar"/>
</panel>
</form>
<calendar name="training-register-calendar" model="com.axelor.apps.talent.db.TrainingRegister" eventStart="fromDate" eventStop="toDate" title="Training register" colorBy="statusSelect">
<field name="training"/>
<field name="statusSelect"/>
<field name="ratingSelect" />
</calendar>
<action-record name="action-training-session-change" model="com.axelor.apps.talent.db.TrainingRegister">
<field name="training" expr="eval:trainingSession.training" if="training == null"/>
<field name="fromDate" expr="eval:trainingSession?.fromDate" if="trainingSession != null"/>
<field name="toDate" expr="eval:trainingSession?.toDate" if="trainingSession != null"/>
</action-record>
<action-record name="action-training-register-default" model="com.axelor.apps.talent.db.TrainingRegister">
<field name="training" expr="eval:_training" />
<field name="employee" expr="eval:__user__.employee" />
<field name="trainingSession" expr="eval:_trainingSession" />
<field name="fromDate" expr="eval:_fromDate"/>
<field name="toDate" expr="eval:_toDate"/>
</action-record>
<action-attrs name="action-training-register-training-session-domain">
<attribute name="domain" for="trainingSession" expr="eval:&quot;self.training.id = ${training.id}&quot;" if="training != null"/>
<attribute name="domain" for="trainingSession" expr="eval:null" if="training == null"/>
</action-attrs>
<action-method name="action-training-register-method-plan">
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="plan"/>
</action-method>
<action-method name="action-training-register-method-update-event-calendar">
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="updateEventCalendar"/>
</action-method>
<action-method name="action-training-register-method-complete">
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="complete"/>
</action-method>
<action-method name="action-training-register-method-cancel">
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="cancel"/>
</action-method>
<action-method name="action-training-register-update-old-rating">
<call class="com.axelor.apps.talent.web.TrainingRegisterController" method="updateOldRating"/>
</action-method>
<search-filters name="my-training-register-fitlers" model="com.axelor.apps.talent.db.Appraisal" title="My traning filters">
<filter title="My upcoming trainings">
<domain>self.employee.id = :_employeeId and self.statusSelect = 1</domain>
</filter>
<filter title="My completed trainings">
<domain>self.employee.id = :_employeeId and self.statusSelect = 2</domain>
</filter>
<filter title="Upcoming trainings of all employees of a team">
<domain>self.employee.id in :_employeeList and self.statusSelect = 1</domain>
</filter>
<filter title="Completed trainings of all employees of a team">
<domain>self.employee.id in :_employeeList and self.statusSelect = 2</domain>
</filter>
</search-filters>
<action-group name="action-group-training-register-save-click">
<action name="action-training-register-update-old-rating"/>
<action if="__this__.calendar != null &amp;&amp; __this__.calendar != __self__?.calendar" name="action-training-register-method-update-event-calendar"/>
</action-group>
</object-views>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object-views xmlns="http://axelor.com/xml/ns/object-views"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
<grid name="training-session-grid" title="Training sessions" model="com.axelor.apps.talent.db.TrainingSession">
<field name="training" />
<field name="fromDate" />
<field name="toDate" />
<field name="statusSelect" />
<field name="nbrRegistered" />
<field name="location" />
<field name="rating" widget="progress"/>
</grid>
<form name="training-session-form" title="Training session" model="com.axelor.apps.talent.db.TrainingSession" width="large" readonlyIf="$popup()">
<panel name="statusPanel" title="Status">
<field name="statusSelect" colSpan="12" widget="NavSelect" showTitle="false" />
</panel>
<panel name="detailPanel">
<field name="training" onChange="action-training-session-training-change" />
<field name="location" />
<field name="fromDate" />
<field name="toDate" />
<field name="duration" />
<panel-dashlet name="employeeRegisteredPanel" action="action-dashlet-training-session-employee-registered" colSpan="12"/>
</panel>
<panel name="actionPanel" itemSpan="12" sidebar="true">
<button name="registerTrainingBtn" title="Register training" onClick="save,action-training-session-register-training" showIf="statusSelect == 1"/>
<button name="closeSessionBtn" title="Close session" onClick="save,action-training-session-method-close-session" showIf="statusSelect != 3" />
<field name="nbrRegistered" readonly="true"/>
<field name="rating" widget="progress" readonly="true" />
</panel>
</form>
<action-record name="action-training-session-training-change" model="com.axelor.apps.talent.db.TrainingSession">
<field name="duration" expr="eval:training.duration" if="training != null"/>
</action-record>
<action-view name="action-dashlet-training-session-employee-registered" title="Employee registred" model="com.axelor.apps.hr.db.Employee">
<view type="grid" name="employee-grid"/>
<view type="form" name="employee-form"/>
<view-param name="search-filters" value="employee-filters"/>
<domain>self.id in (:_employeeIds)</domain>
<context name="_employeeIds" expr="eval:[0] + __repo__(TrainingRegister).all().filter('self.trainingSession.id = ' + id).fetch().collect{it->it.employee?.id}"/>
</action-view>
<action-view name="action-training-session-register-training" title="Register training" model="com.axelor.apps.talent.db.TrainingRegister">
<view type="form" name="training-register-form"/>
<view type="grid" name="training-register-grid"/>
<context name="_trainingSession" expr="eval:__self__"/>
<context name="_training" expr="eval:__self__.training"/>
<context name="_fromDate" expr="eval:__self__.fromDate"/>
<context name="_toDate" expr="eval:__self__.toDate"/>
</action-view>
<action-method name="action-training-session-method-close-session">
<call class="com.axelor.apps.talent.web.TrainingSessionController" method="closeSession"/>
</action-method>
</object-views>