First commit waiting for Budget Alert
This commit is contained in:
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.db.repo;
|
||||
|
||||
import com.axelor.apps.talent.db.JobApplication;
|
||||
import com.axelor.apps.talent.service.JobApplicationService;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
public class JobApplicationTalentRepository extends JobApplicationRepository {
|
||||
|
||||
@Inject private JobApplicationService jobApplicationService;
|
||||
|
||||
@Override
|
||||
public JobApplication save(JobApplication entity) {
|
||||
|
||||
entity.setFullName(jobApplicationService.computeFullName(entity));
|
||||
|
||||
return super.save(entity);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.db.repo;
|
||||
|
||||
import com.axelor.apps.base.db.repo.SequenceRepository;
|
||||
import com.axelor.apps.base.service.administration.SequenceService;
|
||||
import com.axelor.apps.talent.db.JobPosition;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
public class JobPositionTalentRepository extends JobPositionRepository {
|
||||
|
||||
@Inject private SequenceService sequenceService;
|
||||
|
||||
@Override
|
||||
public JobPosition save(JobPosition jobPosition) {
|
||||
|
||||
if (jobPosition.getStatusSelect() > 0 && jobPosition.getJobReference() == null) {
|
||||
jobPosition.setJobReference(
|
||||
sequenceService.getSequenceNumber(SequenceRepository.JOB_POSITION));
|
||||
}
|
||||
|
||||
return super.save(jobPosition);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.db.repo;
|
||||
|
||||
import com.axelor.apps.talent.db.Training;
|
||||
import com.axelor.apps.talent.db.TrainingRegister;
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
import com.axelor.apps.talent.exception.IExceptionMessage;
|
||||
import com.axelor.apps.talent.service.TrainingRegisterService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.google.inject.Inject;
|
||||
import javax.validation.ValidationException;
|
||||
|
||||
public class TrainingRegisterTalentRepository extends TrainingRegisterRepository {
|
||||
|
||||
@Inject private TrainingRegisterService trainingRegisterService;
|
||||
|
||||
@Override
|
||||
public TrainingRegister save(TrainingRegister trainingRegister) {
|
||||
|
||||
if (trainingRegister.getFromDate().isAfter(trainingRegister.getToDate())) {
|
||||
throw new ValidationException(I18n.get(IExceptionMessage.INVALID_DATE_RANGE));
|
||||
}
|
||||
|
||||
TrainingSession trainingSession = trainingRegister.getTrainingSession();
|
||||
if (trainingSession != null
|
||||
&& (trainingSession.getFromDate().isAfter(trainingRegister.getFromDate())
|
||||
|| trainingSession.getToDate().isBefore(trainingRegister.getToDate()))) {
|
||||
|
||||
throw new ValidationException(I18n.get(IExceptionMessage.INVALID_TR_DATE));
|
||||
}
|
||||
|
||||
trainingRegister.setFullName(trainingRegisterService.computeFullName(trainingRegister));
|
||||
|
||||
trainingRegister = super.save(trainingRegister);
|
||||
|
||||
trainingRegisterService.updateTrainingRating(trainingRegister.getTraining(), null);
|
||||
|
||||
if (trainingRegister.getTrainingSession() != null) {
|
||||
trainingRegisterService.updateSessionRating(trainingRegister.getTrainingSession(), null);
|
||||
}
|
||||
|
||||
refresh(trainingRegister);
|
||||
|
||||
return trainingRegister;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(TrainingRegister trainingRegister) {
|
||||
|
||||
Training training = trainingRegister.getTraining();
|
||||
TrainingSession session = trainingRegister.getTrainingSession();
|
||||
|
||||
super.remove(trainingRegister);
|
||||
|
||||
trainingRegisterService.updateTrainingRating(training, null);
|
||||
|
||||
if (session != null) {
|
||||
trainingRegisterService.updateSessionRating(session, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.db.repo;
|
||||
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
import com.axelor.apps.talent.exception.IExceptionMessage;
|
||||
import com.axelor.apps.talent.service.TrainingSessionService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.google.inject.Inject;
|
||||
import javax.validation.ValidationException;
|
||||
|
||||
public class TrainingSessionTalentRepository extends TrainingSessionRepository {
|
||||
|
||||
@Inject private TrainingSessionService trainingSessionService;
|
||||
|
||||
@Override
|
||||
public TrainingSession save(TrainingSession trainingSession) {
|
||||
|
||||
if (trainingSession.getFromDate().isAfter(trainingSession.getToDate())) {
|
||||
throw new ValidationException(I18n.get(IExceptionMessage.INVALID_DATE_RANGE));
|
||||
}
|
||||
|
||||
trainingSession.setFullName(trainingSessionService.computeFullName(trainingSession));
|
||||
|
||||
return super.save(trainingSession);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.exception;
|
||||
|
||||
public interface IExceptionMessage {
|
||||
|
||||
public static final String INVALID_DATE_RANGE = /*$$(*/
|
||||
"Invalid dates. From date must be before to date." /*)*/;
|
||||
|
||||
public static final String INVALID_TR_DATE = /*$$(*/
|
||||
"Training dates must be under training session date range." /*)*/;
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.module;
|
||||
|
||||
import com.axelor.app.AxelorModule;
|
||||
import com.axelor.apps.base.service.message.MailAccountServiceBaseImpl;
|
||||
import com.axelor.apps.talent.db.repo.JobApplicationRepository;
|
||||
import com.axelor.apps.talent.db.repo.JobApplicationTalentRepository;
|
||||
import com.axelor.apps.talent.db.repo.JobPositionRepository;
|
||||
import com.axelor.apps.talent.db.repo.JobPositionTalentRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingRegisterRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingRegisterTalentRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingSessionRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingSessionTalentRepository;
|
||||
import com.axelor.apps.talent.service.AppraisalService;
|
||||
import com.axelor.apps.talent.service.AppraisalServiceImpl;
|
||||
import com.axelor.apps.talent.service.JobApplicationService;
|
||||
import com.axelor.apps.talent.service.JobApplicationServiceImpl;
|
||||
import com.axelor.apps.talent.service.JobPositionService;
|
||||
import com.axelor.apps.talent.service.JobPositionServiceImpl;
|
||||
import com.axelor.apps.talent.service.MailAccountServiceTalentImpl;
|
||||
import com.axelor.apps.talent.service.TrainingRegisterService;
|
||||
import com.axelor.apps.talent.service.TrainingRegisterServiceImpl;
|
||||
import com.axelor.apps.talent.service.TrainingSessionService;
|
||||
import com.axelor.apps.talent.service.TrainingSessionServiceImpl;
|
||||
|
||||
public class TalentModule extends AxelorModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
|
||||
bind(TrainingRegisterRepository.class).to(TrainingRegisterTalentRepository.class);
|
||||
bind(TrainingRegisterService.class).to(TrainingRegisterServiceImpl.class);
|
||||
bind(TrainingSessionService.class).to(TrainingSessionServiceImpl.class);
|
||||
bind(TrainingSessionRepository.class).to(TrainingSessionTalentRepository.class);
|
||||
bind(JobPositionRepository.class).to(JobPositionTalentRepository.class);
|
||||
bind(JobApplicationService.class).to(JobApplicationServiceImpl.class);
|
||||
bind(JobApplicationRepository.class).to(JobApplicationTalentRepository.class);
|
||||
bind(MailAccountServiceBaseImpl.class).to(MailAccountServiceTalentImpl.class);
|
||||
bind(JobPositionService.class).to(JobPositionServiceImpl.class);
|
||||
bind(AppraisalService.class).to(AppraisalServiceImpl.class);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.hr.db.Employee;
|
||||
import com.axelor.apps.talent.db.Appraisal;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
public interface AppraisalService {
|
||||
|
||||
public void send(Appraisal appraisal)
|
||||
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
|
||||
AxelorException, IOException, MessagingException;
|
||||
|
||||
public void realize(Appraisal appraisal);
|
||||
|
||||
public void cancel(Appraisal appraisal);
|
||||
|
||||
public void draft(Appraisal appraisal);
|
||||
|
||||
public Set<Long> createAppraisals(
|
||||
Appraisal appraisalTemplate, Set<Employee> employees, Boolean send)
|
||||
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
|
||||
AxelorException, IOException, MessagingException;
|
||||
}
|
||||
@ -0,0 +1,146 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.hr.db.Employee;
|
||||
import com.axelor.apps.hr.db.EmploymentContract;
|
||||
import com.axelor.apps.message.db.EmailAddress;
|
||||
import com.axelor.apps.message.db.Message;
|
||||
import com.axelor.apps.message.db.Template;
|
||||
import com.axelor.apps.message.db.repo.TemplateRepository;
|
||||
import com.axelor.apps.message.service.MessageService;
|
||||
import com.axelor.apps.message.service.TemplateMessageService;
|
||||
import com.axelor.apps.talent.db.Appraisal;
|
||||
import com.axelor.apps.talent.db.repo.AppraisalRepository;
|
||||
import com.axelor.auth.db.User;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.mail.db.repo.MailFollowerRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
public class AppraisalServiceImpl implements AppraisalService {
|
||||
|
||||
@Inject private AppraisalRepository appraisalRepo;
|
||||
|
||||
@Inject private MailFollowerRepository mailFollowerRepo;
|
||||
|
||||
@Inject private TemplateRepository templateRepo;
|
||||
|
||||
@Inject private TemplateMessageService templateMessageService;
|
||||
|
||||
@Inject private MessageService messageService;
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
@Override
|
||||
public void send(Appraisal appraisal)
|
||||
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
|
||||
AxelorException, IOException, MessagingException {
|
||||
|
||||
Employee employee = appraisal.getEmployee();
|
||||
|
||||
User user = employee.getUser();
|
||||
if (user != null) {
|
||||
mailFollowerRepo.follow(appraisal, user);
|
||||
}
|
||||
|
||||
Template template =
|
||||
templateRepo
|
||||
.all()
|
||||
.filter("self.metaModel.fullName = ?1", Appraisal.class.getName())
|
||||
.fetchOne();
|
||||
|
||||
EmailAddress email = null;
|
||||
if (employee.getContactPartner() != null) {
|
||||
email = employee.getContactPartner().getEmailAddress();
|
||||
}
|
||||
|
||||
if (template != null && email != null) {
|
||||
Message message = templateMessageService.generateMessage(appraisal, template);
|
||||
message.addToEmailAddressSetItem(email);
|
||||
messageService.sendByEmail(message);
|
||||
}
|
||||
|
||||
appraisal.setStatusSelect(AppraisalRepository.STATUS_SENT);
|
||||
|
||||
appraisalRepo.save(appraisal);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void realize(Appraisal appraisal) {
|
||||
|
||||
appraisal.setStatusSelect(AppraisalRepository.STATUS_COMPLETED);
|
||||
|
||||
appraisalRepo.save(appraisal);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void cancel(Appraisal appraisal) {
|
||||
|
||||
appraisal.setStatusSelect(AppraisalRepository.STATUS_CANCELED);
|
||||
|
||||
appraisalRepo.save(appraisal);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void draft(Appraisal appraisal) {
|
||||
|
||||
appraisal.setStatusSelect(AppraisalRepository.STATUS_DRAFT);
|
||||
|
||||
appraisalRepo.save(appraisal);
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
@Override
|
||||
public Set<Long> createAppraisals(
|
||||
Appraisal appraisalTemplate, Set<Employee> employees, Boolean send)
|
||||
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
|
||||
AxelorException, IOException, MessagingException {
|
||||
|
||||
Set<Long> appraisalIds = new HashSet<Long>();
|
||||
|
||||
if (appraisalTemplate == null) {
|
||||
return appraisalIds;
|
||||
}
|
||||
|
||||
for (Employee employee : employees) {
|
||||
Appraisal appraisal = appraisalRepo.copy(appraisalTemplate, false);
|
||||
appraisal.setEmployee(employee);
|
||||
if (appraisal.getCompany() == null) {
|
||||
EmploymentContract employmentContract = employee.getMainEmploymentContract();
|
||||
if (employmentContract != null) {
|
||||
appraisal.setCompany(employmentContract.getPayCompany());
|
||||
}
|
||||
}
|
||||
appraisal.setIsTemplate(false);
|
||||
appraisal = appraisalRepo.save(appraisal);
|
||||
if (send != null && send) {
|
||||
send(appraisal);
|
||||
}
|
||||
appraisalIds.add(appraisal.getId());
|
||||
}
|
||||
|
||||
return appraisalIds;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.hr.db.Employee;
|
||||
import com.axelor.apps.talent.db.JobApplication;
|
||||
|
||||
public interface JobApplicationService {
|
||||
|
||||
public Employee hire(JobApplication jobApplication);
|
||||
|
||||
public String computeFullName(JobApplication jobApplication);
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.service.PartnerService;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.hr.db.Employee;
|
||||
import com.axelor.apps.talent.db.JobApplication;
|
||||
import com.axelor.apps.talent.db.Skill;
|
||||
import com.axelor.apps.talent.db.repo.JobApplicationRepository;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.meta.MetaFiles;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class JobApplicationServiceImpl implements JobApplicationService {
|
||||
|
||||
@Inject protected JobApplicationRepository jobApplicationRepo;
|
||||
|
||||
@Inject protected AppBaseService appBaseService;
|
||||
|
||||
@Inject protected PartnerService partnerService;
|
||||
|
||||
@Inject private MetaFiles metaFiles;
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Employee hire(JobApplication jobApplication) {
|
||||
|
||||
Employee employee = createEmployee(jobApplication);
|
||||
|
||||
jobApplication.setStatusSelect(JobApplicationRepository.STATUS_HIRED);
|
||||
jobApplication.setEmployee(employee);
|
||||
if (jobApplication.getJobPosition() != null) {
|
||||
int nbPeopleHired = jobApplication.getJobPosition().getNbPeopleHired();
|
||||
nbPeopleHired += 1;
|
||||
jobApplication.getJobPosition().setNbPeopleHired(nbPeopleHired);
|
||||
}
|
||||
|
||||
jobApplicationRepo.save(jobApplication);
|
||||
|
||||
return employee;
|
||||
}
|
||||
|
||||
protected Employee createEmployee(JobApplication jobApplication) {
|
||||
|
||||
Employee employee = new Employee();
|
||||
employee.setDateOfHire(appBaseService.getTodayDate());
|
||||
employee.setContactPartner(createContact(jobApplication));
|
||||
Set<Skill> tagSkillSet = new HashSet<Skill>();
|
||||
tagSkillSet.addAll(jobApplication.getSkillSet());
|
||||
employee.setSkillSet(tagSkillSet);
|
||||
if (employee.getMainEmploymentContract() != null)
|
||||
employee
|
||||
.getMainEmploymentContract()
|
||||
.setCompanyDepartment(jobApplication.getJobPosition().getCompanyDepartment());
|
||||
employee.setName(employee.getContactPartner().getName());
|
||||
|
||||
return employee;
|
||||
}
|
||||
|
||||
protected Partner createContact(JobApplication jobApplication) {
|
||||
|
||||
Partner contact = new Partner();
|
||||
contact.setPartnerTypeSelect(2);
|
||||
contact.setFirstName(jobApplication.getFirstName());
|
||||
contact.setName(jobApplication.getLastName());
|
||||
contact.setIsContact(true);
|
||||
contact.setIsEmployee(true);
|
||||
contact.setFixedPhone(jobApplication.getFixedPhone());
|
||||
contact.setMobilePhone(jobApplication.getMobilePhone());
|
||||
contact.setEmailAddress(jobApplication.getEmailAddress());
|
||||
if (jobApplication.getPicture() != null) {
|
||||
File file = MetaFiles.getPath(jobApplication.getPicture()).toFile();
|
||||
try {
|
||||
contact.setPicture(metaFiles.upload(file));
|
||||
} catch (IOException e) {
|
||||
TraceBackService.trace(e);
|
||||
}
|
||||
}
|
||||
partnerService.setPartnerFullName(contact);
|
||||
|
||||
return contact;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String computeFullName(JobApplication jobApplication) {
|
||||
|
||||
String fullName = null;
|
||||
|
||||
if (jobApplication.getFirstName() != null) {
|
||||
fullName = jobApplication.getFirstName();
|
||||
}
|
||||
if (fullName == null) {
|
||||
fullName = jobApplication.getLastName();
|
||||
} else {
|
||||
fullName += " " + jobApplication.getLastName();
|
||||
}
|
||||
|
||||
return fullName;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.message.db.Message;
|
||||
|
||||
public interface JobPositionService {
|
||||
|
||||
public void createJobApplication(Message message);
|
||||
}
|
||||
@ -0,0 +1,132 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.base.db.AppRecruitment;
|
||||
import com.axelor.apps.base.db.repo.AppRecruitmentRepository;
|
||||
import com.axelor.apps.message.db.Message;
|
||||
import com.axelor.apps.talent.db.JobApplication;
|
||||
import com.axelor.apps.talent.db.JobPosition;
|
||||
import com.axelor.apps.talent.db.repo.JobApplicationRepository;
|
||||
import com.axelor.apps.talent.db.repo.JobPositionRepository;
|
||||
import com.axelor.meta.MetaFiles;
|
||||
import com.axelor.meta.db.MetaAttachment;
|
||||
import com.axelor.meta.db.MetaFile;
|
||||
import com.axelor.meta.db.repo.MetaAttachmentRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public class JobPositionServiceImpl implements JobPositionService {
|
||||
|
||||
@Inject private JobPositionRepository jobPositionRepo;
|
||||
|
||||
@Inject private JobApplicationRepository jobApplicationRepo;
|
||||
|
||||
@Inject private AppRecruitmentRepository appRecruitmentRepo;
|
||||
|
||||
@Inject private MetaFiles metaFiles;
|
||||
|
||||
@Inject private MetaAttachmentRepository metaAttachmentRepo;
|
||||
|
||||
@Override
|
||||
public void createJobApplication(Message message) {
|
||||
|
||||
List<JobPosition> jobPositions =
|
||||
jobPositionRepo.all().filter("self.mailAccount = ?1", message.getMailAccount()).fetch();
|
||||
|
||||
if (jobPositions.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jobPositions.size() > 1) {
|
||||
boolean positionFound = false;
|
||||
for (JobPosition position : jobPositions) {
|
||||
if (position.getJobReference() != null
|
||||
&& message.getSubject().contains(position.getJobReference())) {
|
||||
createApplication(position, message);
|
||||
positionFound = true;
|
||||
}
|
||||
}
|
||||
if (!positionFound) {
|
||||
createApplication(null, message);
|
||||
}
|
||||
} else {
|
||||
createApplication(jobPositions.get(0), message);
|
||||
}
|
||||
|
||||
updateLastEmailId(message);
|
||||
}
|
||||
|
||||
private void createApplication(JobPosition position, Message message) {
|
||||
|
||||
JobApplication application = new JobApplication();
|
||||
|
||||
if (position != null) {
|
||||
application.setJobPosition(position);
|
||||
application.setResponsible(position.getEmployee());
|
||||
}
|
||||
|
||||
application.setEmailAddress(message.getFromEmailAddress());
|
||||
application.setDescription(message.getContent());
|
||||
|
||||
application = saveApplication(application);
|
||||
|
||||
try {
|
||||
copyAttachments(application, message);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public JobApplication saveApplication(JobApplication application) {
|
||||
if (application != null) {
|
||||
application = jobApplicationRepo.save(application);
|
||||
}
|
||||
|
||||
return application;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateLastEmailId(Message message) {
|
||||
|
||||
AppRecruitment appRecruitment = appRecruitmentRepo.all().fetchOne();
|
||||
appRecruitment.setLastEmailId(message.getId().toString());
|
||||
|
||||
appRecruitmentRepo.save(appRecruitment);
|
||||
}
|
||||
|
||||
private void copyAttachments(JobApplication application, Message message) throws IOException {
|
||||
|
||||
List<MetaAttachment> attachments =
|
||||
metaAttachmentRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.objectId = ?1 and self.objectName = ?2",
|
||||
message.getId(),
|
||||
Message.class.getName())
|
||||
.fetch();
|
||||
|
||||
for (MetaAttachment attachment : attachments) {
|
||||
MetaFile file = attachment.getMetaFile();
|
||||
metaFiles.attach(file, file.getFileName(), application);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.base.db.AppRecruitment;
|
||||
import com.axelor.apps.base.db.repo.AppRecruitmentRepository;
|
||||
import com.axelor.apps.base.service.message.MailAccountServiceBaseImpl;
|
||||
import com.axelor.apps.base.service.user.UserService;
|
||||
import com.axelor.apps.message.db.EmailAccount;
|
||||
import com.axelor.apps.message.db.Message;
|
||||
import com.axelor.mail.MailParser;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.util.Date;
|
||||
import javax.mail.MessagingException;
|
||||
|
||||
public class MailAccountServiceTalentImpl extends MailAccountServiceBaseImpl {
|
||||
|
||||
@Inject
|
||||
public MailAccountServiceTalentImpl(UserService userService) {
|
||||
super(userService);
|
||||
}
|
||||
|
||||
@Inject private AppRecruitmentRepository appRecruitmentRepo;
|
||||
|
||||
@Inject private JobPositionService jobPositionService;
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
@Override
|
||||
public Message createMessage(EmailAccount mailAccount, MailParser parser, Date date)
|
||||
throws MessagingException {
|
||||
|
||||
Message message = super.createMessage(mailAccount, parser, date);
|
||||
|
||||
AppRecruitment appRecruitment = appRecruitmentRepo.all().fetchOne();
|
||||
|
||||
if (appRecruitment != null
|
||||
&& appRecruitment.getActive()
|
||||
&& message.getMailAccount() != null
|
||||
&& message.getMailAccount().getServerTypeSelect() > 1) {
|
||||
|
||||
String lastEmailId = appRecruitment.getLastEmailId();
|
||||
if (lastEmailId == null || message.getId() > Long.parseLong(lastEmailId)) {
|
||||
jobPositionService.createJobApplication(message);
|
||||
}
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.talent.db.Training;
|
||||
import com.axelor.apps.talent.db.TrainingRegister;
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
|
||||
public interface TrainingRegisterService {
|
||||
|
||||
public Event plan(TrainingRegister trainingRegister);
|
||||
|
||||
public void complete(TrainingRegister trainingRegister);
|
||||
|
||||
public void cancel(TrainingRegister trainingRegister);
|
||||
|
||||
public Training updateTrainingRating(Training training, Long excludeId);
|
||||
|
||||
public TrainingSession updateSessionRating(TrainingSession trainingSession, Long excludeId);
|
||||
|
||||
public void updateEventCalendar(TrainingRegister trainingRegister);
|
||||
|
||||
public String computeFullName(TrainingRegister trainingRegister);
|
||||
}
|
||||
@ -0,0 +1,188 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.crm.db.repo.EventRepository;
|
||||
import com.axelor.apps.talent.db.Training;
|
||||
import com.axelor.apps.talent.db.TrainingRegister;
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
import com.axelor.apps.talent.db.repo.TrainingRegisterRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingSessionRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class TrainingRegisterServiceImpl implements TrainingRegisterService {
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(TrainingRegisterService.class);
|
||||
|
||||
@Inject protected TrainingRegisterRepository trainingRegisterRepo;
|
||||
|
||||
@Inject protected EventRepository eventRepo;
|
||||
|
||||
@Inject protected TrainingRepository trainingRepo;
|
||||
|
||||
@Inject protected TrainingSessionRepository trainingSessionRepo;
|
||||
public static final String RELATED_TO_TRAINING_REGISTER =
|
||||
"com.axelor.apps.talent.db.TrainingRegister";
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Event plan(TrainingRegister trainingRegister) {
|
||||
|
||||
trainingRegister.setStatusSelect(1);
|
||||
|
||||
trainingRegisterRepo.save(trainingRegister);
|
||||
|
||||
Event event = generateMeeting(trainingRegister);
|
||||
|
||||
return eventRepo.save(event);
|
||||
}
|
||||
|
||||
protected Event generateMeeting(TrainingRegister trainingRegister) {
|
||||
|
||||
Event event = new Event();
|
||||
event.setTypeSelect(EventRepository.TYPE_MEETING);
|
||||
event.setStartDateTime(trainingRegister.getFromDate());
|
||||
event.setEndDateTime(trainingRegister.getToDate());
|
||||
event.setSubject(trainingRegister.getTraining().getName());
|
||||
event.setUser(trainingRegister.getEmployee().getUser());
|
||||
event.setCalendar(trainingRegister.getCalendar());
|
||||
event.setRelatedToSelect(RELATED_TO_TRAINING_REGISTER);
|
||||
event.setRelatedToSelectId(trainingRegister.getId());
|
||||
if (trainingRegister.getTrainingSession() != null) {
|
||||
event.setLocation(trainingRegister.getTrainingSession().getLocation());
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void complete(TrainingRegister trainingRegister) {
|
||||
|
||||
trainingRegister.setStatusSelect(2);
|
||||
|
||||
trainingRegister
|
||||
.getEmployee()
|
||||
.getSkillSet()
|
||||
.addAll(trainingRegister.getTraining().getSkillSet());
|
||||
|
||||
trainingRegisterRepo.save(trainingRegister);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Training updateTrainingRating(Training training, Long excludeId) {
|
||||
|
||||
String query = "self.training = ?1";
|
||||
|
||||
if (excludeId != null) {
|
||||
query += " AND self.id != " + excludeId;
|
||||
}
|
||||
|
||||
List<TrainingRegister> trainingTrs = trainingRegisterRepo.all().filter(query, training).fetch();
|
||||
|
||||
long totalTrainingsRating = trainingTrs.stream().mapToLong(tr -> tr.getRatingSelect()).sum();
|
||||
int totalTrainingSize = trainingTrs.size();
|
||||
|
||||
log.debug("Training: {}", training.getName());
|
||||
log.debug("Total trainings TR: {}", totalTrainingSize);
|
||||
log.debug("Total ratings:: training: {}", totalTrainingsRating);
|
||||
|
||||
double avgRating = totalTrainingSize == 0 ? 0 : totalTrainingsRating / totalTrainingSize;
|
||||
|
||||
log.debug("Avg training rating : {}", avgRating);
|
||||
|
||||
training.setRating(new BigDecimal(avgRating));
|
||||
|
||||
return trainingRepo.save(training);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public TrainingSession updateSessionRating(TrainingSession session, Long excludeId) {
|
||||
|
||||
String query = "self.trainingSession = ?1";
|
||||
if (excludeId != null) {
|
||||
query += " AND self.id != " + excludeId;
|
||||
}
|
||||
|
||||
List<TrainingRegister> sessionTrs = trainingRegisterRepo.all().filter(query, session).fetch();
|
||||
|
||||
long totalSessionsRating = sessionTrs.stream().mapToLong(tr -> tr.getRatingSelect()).sum();
|
||||
int totalSessionSize = sessionTrs.size();
|
||||
|
||||
double avgRating = totalSessionSize == 0 ? 0 : totalSessionsRating / totalSessionSize;
|
||||
|
||||
log.debug("Avg session rating : {}", avgRating);
|
||||
|
||||
session.setRating(new BigDecimal(avgRating));
|
||||
session.setNbrRegistered(totalSessionSize);
|
||||
|
||||
return trainingSessionRepo.save(session);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void cancel(TrainingRegister trainingRegister) {
|
||||
|
||||
trainingRegister.setStatusSelect(3);
|
||||
|
||||
trainingRegisterRepo.save(trainingRegister);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void updateEventCalendar(TrainingRegister trainingRegister) {
|
||||
|
||||
Event event =
|
||||
eventRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.relatedToSelect = ?1 AND self.relatedToSelectId = ?2",
|
||||
RELATED_TO_TRAINING_REGISTER,
|
||||
trainingRegister.getId())
|
||||
.fetchOne();
|
||||
|
||||
if (event != null) {
|
||||
|
||||
event.setCalendar(trainingRegister.getCalendar());
|
||||
eventRepo.save(event);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String computeFullName(TrainingRegister trainingRegister) {
|
||||
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyyyHHmm");
|
||||
|
||||
return trainingRegister.getTraining().getName()
|
||||
+ "-"
|
||||
+ trainingRegister.getEmployee().getName()
|
||||
+ "-"
|
||||
+ trainingRegister.getFromDate().format(formatter)
|
||||
+ "-"
|
||||
+ trainingRegister.getToDate().format(formatter);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
|
||||
public interface TrainingSessionService {
|
||||
|
||||
public void closeSession(TrainingSession trainingSession);
|
||||
|
||||
public String computeFullName(TrainingSession trainingSession);
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.service;
|
||||
|
||||
import com.axelor.apps.talent.db.TrainingRegister;
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
import com.axelor.apps.talent.db.repo.TrainingRegisterRepository;
|
||||
import com.axelor.apps.talent.db.repo.TrainingSessionRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
public class TrainingSessionServiceImpl implements TrainingSessionService {
|
||||
|
||||
@Inject private TrainingSessionRepository trainingSessionRepo;
|
||||
|
||||
@Inject private TrainingRegisterService trainingRegisterService;
|
||||
|
||||
@Inject private TrainingRegisterRepository trainingRegisterRepo;
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void closeSession(TrainingSession trainingSession) {
|
||||
|
||||
trainingSession.setStatusSelect(2);
|
||||
|
||||
List<TrainingRegister> trainingRegisters =
|
||||
trainingRegisterRepo.all().filter("self.trainingSession = ?1", trainingSession).fetch();
|
||||
|
||||
for (TrainingRegister trainingRegister : trainingRegisters) {
|
||||
trainingRegisterService.complete(trainingRegister);
|
||||
}
|
||||
|
||||
trainingSessionRepo.save(trainingSession);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String computeFullName(TrainingSession trainingSession) {
|
||||
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
|
||||
|
||||
return trainingSession.getFromDate().format(formatter)
|
||||
+ " - "
|
||||
+ trainingSession.getToDate().format(formatter);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.translation;
|
||||
|
||||
public interface ITranslation {
|
||||
|
||||
public static final String TRAINING_APP_NAME = /*$$(*/ "value:Training"; /*)*/
|
||||
public static final String RECRUITMENT_APP_NAME = /*$$(*/ "value:Recruitment"; /*)*/
|
||||
public static final String APPRAISAL_APP_NAME = /*$$(*/ "value:Appraisal"; /*)*/
|
||||
}
|
||||
@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.web;
|
||||
|
||||
import com.axelor.apps.hr.db.Employee;
|
||||
import com.axelor.apps.hr.db.repo.EmployeeRepository;
|
||||
import com.axelor.apps.talent.db.Appraisal;
|
||||
import com.axelor.apps.talent.db.repo.AppraisalRepository;
|
||||
import com.axelor.apps.talent.service.AppraisalService;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.axelor.rpc.Context;
|
||||
import com.google.inject.Singleton;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@Singleton
|
||||
public class AppraisalController {
|
||||
|
||||
public void send(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Appraisal appraisal = request.getContext().asType(Appraisal.class);
|
||||
|
||||
try {
|
||||
appraisal = Beans.get(AppraisalRepository.class).find(appraisal.getId());
|
||||
|
||||
Beans.get(AppraisalService.class).send(appraisal);
|
||||
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void realize(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Appraisal appraisal = request.getContext().asType(Appraisal.class);
|
||||
|
||||
try {
|
||||
appraisal = Beans.get(AppraisalRepository.class).find(appraisal.getId());
|
||||
|
||||
Beans.get(AppraisalService.class).realize(appraisal);
|
||||
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void cancel(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Appraisal appraisal = request.getContext().asType(Appraisal.class);
|
||||
|
||||
try {
|
||||
appraisal = Beans.get(AppraisalRepository.class).find(appraisal.getId());
|
||||
|
||||
Beans.get(AppraisalService.class).cancel(appraisal);
|
||||
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void draft(ActionRequest request, ActionResponse response) {
|
||||
|
||||
Appraisal appraisal = request.getContext().asType(Appraisal.class);
|
||||
|
||||
try {
|
||||
appraisal = Beans.get(AppraisalRepository.class).find(appraisal.getId());
|
||||
|
||||
Beans.get(AppraisalService.class).draft(appraisal);
|
||||
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void createAppraisals(ActionRequest request, ActionResponse response) {
|
||||
|
||||
try {
|
||||
Context context = request.getContext();
|
||||
|
||||
Set<Map<String, Object>> employeeSet = new HashSet<Map<String, Object>>();
|
||||
|
||||
employeeSet.addAll((Collection<? extends Map<String, Object>>) context.get("employeeSet"));
|
||||
|
||||
Set<Employee> employees = new HashSet<Employee>();
|
||||
|
||||
EmployeeRepository employeeRepo = Beans.get(EmployeeRepository.class);
|
||||
|
||||
for (Map<String, Object> emp : employeeSet) {
|
||||
Long empId = Long.parseLong(emp.get("id").toString());
|
||||
employees.add(employeeRepo.find(empId));
|
||||
}
|
||||
|
||||
Long templateId = Long.parseLong(context.get("templateId").toString());
|
||||
|
||||
Appraisal appraisalTemplate = Beans.get(AppraisalRepository.class).find(templateId);
|
||||
|
||||
Boolean send = (Boolean) context.get("sendAppraisals");
|
||||
|
||||
Set<Long> createdIds =
|
||||
Beans.get(AppraisalService.class).createAppraisals(appraisalTemplate, employees, send);
|
||||
|
||||
response.setView(
|
||||
ActionView.define("Appraisal")
|
||||
.model(Appraisal.class.getName())
|
||||
.add("grid", "appraisal-grid")
|
||||
.add("form", "appraisal-form")
|
||||
.domain("self.id in :createdIds")
|
||||
.context("createdIds", createdIds)
|
||||
.map());
|
||||
|
||||
response.setCanClose(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.web;
|
||||
|
||||
import com.axelor.apps.base.service.PartnerService;
|
||||
import com.axelor.apps.hr.db.Employee;
|
||||
import com.axelor.apps.talent.db.JobApplication;
|
||||
import com.axelor.apps.talent.db.repo.JobApplicationRepository;
|
||||
import com.axelor.apps.talent.service.JobApplicationService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
import java.util.Map;
|
||||
|
||||
@Singleton
|
||||
public class JobApplicationController {
|
||||
|
||||
public void hire(ActionRequest request, ActionResponse response) {
|
||||
|
||||
JobApplication jobApplication = request.getContext().asType(JobApplication.class);
|
||||
|
||||
jobApplication = Beans.get(JobApplicationRepository.class).find(jobApplication.getId());
|
||||
|
||||
Employee employee = Beans.get(JobApplicationService.class).hire(jobApplication);
|
||||
|
||||
response.setReload(true);
|
||||
|
||||
response.setView(
|
||||
ActionView.define(I18n.get("Employee"))
|
||||
.model(Employee.class.getName())
|
||||
.add("grid", "employee-grid")
|
||||
.add("form", "employee-form")
|
||||
.param("search-filters", "employee-filters")
|
||||
.context("_showRecord", employee.getId())
|
||||
.map());
|
||||
}
|
||||
|
||||
public void setSocialNetworkUrl(ActionRequest request, ActionResponse response) {
|
||||
|
||||
JobApplication application = request.getContext().asType(JobApplication.class);
|
||||
Map<String, String> urlMap =
|
||||
Beans.get(PartnerService.class)
|
||||
.getSocialNetworkUrl(application.getFirstName(), application.getLastName(), 2);
|
||||
response.setAttr("linkedinLabel", "title", urlMap.get("linkedin"));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.web;
|
||||
|
||||
import com.axelor.apps.crm.db.Event;
|
||||
import com.axelor.apps.talent.db.Training;
|
||||
import com.axelor.apps.talent.db.TrainingRegister;
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
import com.axelor.apps.talent.db.repo.TrainingRegisterRepository;
|
||||
import com.axelor.apps.talent.service.TrainingRegisterService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class TrainingRegisterController {
|
||||
|
||||
public void plan(ActionRequest request, ActionResponse response) {
|
||||
|
||||
TrainingRegister trainingRegister = request.getContext().asType(TrainingRegister.class);
|
||||
trainingRegister = Beans.get(TrainingRegisterRepository.class).find(trainingRegister.getId());
|
||||
Event event = Beans.get(TrainingRegisterService.class).plan(trainingRegister);
|
||||
|
||||
response.setReload(true);
|
||||
|
||||
response.setView(
|
||||
ActionView.define("Meeting")
|
||||
.model(Event.class.getCanonicalName())
|
||||
.add("form", "event-form")
|
||||
.add("grid", "event-grid")
|
||||
.context("_showRecord", event.getId())
|
||||
.context("_user", trainingRegister.getEmployee().getUser())
|
||||
.map());
|
||||
}
|
||||
|
||||
public void updateEventCalendar(ActionRequest request, ActionResponse response) {
|
||||
|
||||
TrainingRegister trainingRegister = request.getContext().asType(TrainingRegister.class);
|
||||
|
||||
Beans.get(TrainingRegisterService.class).updateEventCalendar(trainingRegister);
|
||||
}
|
||||
|
||||
public void complete(ActionRequest request, ActionResponse response) {
|
||||
|
||||
TrainingRegister trainingRegister = request.getContext().asType(TrainingRegister.class);
|
||||
trainingRegister = Beans.get(TrainingRegisterRepository.class).find(trainingRegister.getId());
|
||||
|
||||
Beans.get(TrainingRegisterService.class).complete(trainingRegister);
|
||||
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void cancel(ActionRequest request, ActionResponse response) {
|
||||
|
||||
TrainingRegister trainingRegister = request.getContext().asType(TrainingRegister.class);
|
||||
trainingRegister = Beans.get(TrainingRegisterRepository.class).find(trainingRegister.getId());
|
||||
|
||||
Beans.get(TrainingRegisterService.class).cancel(trainingRegister);
|
||||
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void updateOldRating(ActionRequest request, ActionResponse response) {
|
||||
|
||||
TrainingRegister trainingRegister = request.getContext().asType(TrainingRegister.class);
|
||||
TrainingRegisterService trainingRegisterService = Beans.get(TrainingRegisterService.class);
|
||||
|
||||
Training trainingSaved = null;
|
||||
TrainingSession trainingSessionSaved = null;
|
||||
if (trainingRegister.getId() != null) {
|
||||
TrainingRegister trainingRegisterSaved =
|
||||
Beans.get(TrainingRegisterRepository.class).find(trainingRegister.getId());
|
||||
trainingSessionSaved = trainingRegisterSaved.getTrainingSession();
|
||||
trainingSaved = trainingRegisterSaved.getTraining();
|
||||
}
|
||||
|
||||
if (trainingSaved != null && trainingSaved.getId() != trainingRegister.getTraining().getId()) {
|
||||
trainingRegisterService.updateTrainingRating(trainingSaved, trainingRegister.getId());
|
||||
}
|
||||
|
||||
if (trainingSessionSaved != null) {
|
||||
if (trainingRegister.getTrainingSession() == null
|
||||
|| trainingRegister.getTrainingSession().getId() != trainingSessionSaved.getId()) {
|
||||
trainingRegisterService.updateSessionRating(trainingSessionSaved, trainingRegister.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 Axelor (<http://axelor.com>).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.axelor.apps.talent.web;
|
||||
|
||||
import com.axelor.apps.talent.db.TrainingSession;
|
||||
import com.axelor.apps.talent.db.repo.TrainingSessionRepository;
|
||||
import com.axelor.apps.talent.service.TrainingSessionService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class TrainingSessionController {
|
||||
|
||||
public void closeSession(ActionRequest request, ActionResponse response) {
|
||||
|
||||
TrainingSession trainingSession = request.getContext().asType(TrainingSession.class);
|
||||
trainingSession = Beans.get(TrainingSessionRepository.class).find(trainingSession.getId());
|
||||
|
||||
Beans.get(TrainingSessionService.class).closeSession(trainingSession);
|
||||
|
||||
response.setReload(true);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="base_sequence.csv" separator=";" type="com.axelor.apps.base.db.Sequence" search="self.code = :code" call="com.axelor.csv.script.SequenceScript:computeFullname">
|
||||
<bind to="yearlyResetOk" column="yearlyResetOk" eval="yearlyResetOk == '1' ? true : false"/>
|
||||
<bind to="nextNum" column="nextNum" eval="nextNum?.empty ? '1' : nextNum"/>
|
||||
<bind to="padding" column="padding" eval="padding?.empty ? '1' : padding"/>
|
||||
<bind to="toBeAdded" column="toBeAdded" eval="toBeAdded?.empty ? '1' : toBeAdded"/>
|
||||
<bind to="resetDate" eval="call:com.axelor.apps.base.service.app.AppBaseService:getTodayDate()" />
|
||||
</input>
|
||||
|
||||
<input file="message_template.csv" separator=";" type="com.axelor.apps.message.db.Template" search="self.name = :name" >
|
||||
<bind to="language" search="self.code = :languageCode"/>
|
||||
</input>
|
||||
|
||||
<input file="talent_hiringStage.csv" separator=";" type="com.axelor.apps.talent.db.HiringStage" search="self.name = :name" />
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,2 @@
|
||||
code;name;nextNum;padding;prefixe;suffixe;toBeAdded;yearlyResetOk;company.importId;journal.importId
|
||||
jobPosition;Job position;1;4;JOB;;1;0;1;
|
||||
|
@ -0,0 +1,2 @@
|
||||
name;metaModel.name;languageCode;target;birtTemplate.name;filePath;isDefault;templateContext;subject;content;toRecipients;ccRecipients;bccRecipients;mediaTypeSelect
|
||||
Appraisal;Appraisal;en;;;;true;;Appraisal;"<p>Hello</p><p>$Appraisal.employee.name$</p><p>Here is details of your appraisal </p>";;;;2
|
||||
|
@ -0,0 +1,8 @@
|
||||
"name";"sequence"
|
||||
"Received";1
|
||||
"Interviews";2
|
||||
"Offered";3
|
||||
"Hired";4
|
||||
"Application rejected";5
|
||||
"Offer rejected";6
|
||||
"Cancel";7
|
||||
|
@ -0,0 +1,2 @@
|
||||
code;name;nextNum;padding;prefixe;suffixe;toBeAdded;yearlyResetOk;company.importId;journal.importId
|
||||
jobPosition;Job position;1;4;JOB;;1;0;1;
|
||||
|
@ -0,0 +1,2 @@
|
||||
name;metaModel.name;languageCode;target;birtTemplate.name;filePath;isDefault;templateContext;subject;content;toRecipients;ccRecipients;bccRecipients;mediaTypeSelect
|
||||
Appraisal;Appraisal;fr;;;;true;;Appraisal;"<p>Hello</p><p>$Appraisal.employee.name$</p><p>Here is details of your appraisal </p>";;;;2
|
||||
|
@ -0,0 +1,8 @@
|
||||
"name";"sequence"
|
||||
"Reçu";1
|
||||
"Entretiens";2
|
||||
"Offre";3
|
||||
"Embauché";4
|
||||
"Candidature rejetée";5
|
||||
"Offre rejetée";6
|
||||
"Annulé";7
|
||||
|
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="auth_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="base_appTraining.csv" separator=";" type="com.axelor.apps.base.db.AppTraining" call="com.axelor.csv.script.ImportApp:importApp">
|
||||
<bind column="dependsOn" to="dependsOnSet" search="self.code in :dependsOn" eval="dependsOn.split(',') as List"/>
|
||||
</input>
|
||||
|
||||
<input file="base_appRecruitment.csv" separator=";" type="com.axelor.apps.base.db.AppRecruitment" call="com.axelor.csv.script.ImportApp:importApp">
|
||||
<bind column="dependsOn" to="dependsOnSet" search="self.code in :dependsOn" eval="dependsOn.split(',') as List"/>
|
||||
</input>
|
||||
|
||||
<input file="base_appAppraisal.csv" separator=";" type="com.axelor.apps.base.db.AppAppraisal" call="com.axelor.csv.script.ImportApp:importApp">
|
||||
<bind column="dependsOn" to="dependsOnSet" search="self.code in :dependsOn" eval="dependsOn.split(',') as List"/>
|
||||
</input>
|
||||
|
||||
<input file="meta_helpEN.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'en'" />
|
||||
<bind to="type" eval="'tooltip'" />
|
||||
<bind to="model" eval="com.axelor.inject.Beans.get(com.axelor.meta.db.repo.MetaModelRepository.class).findByName(object)?.getFullName()" column="object" />
|
||||
</input>
|
||||
|
||||
<input file="meta_helpFR.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'fr'" />
|
||||
<bind to="type" eval="'tooltip'" />
|
||||
<bind to="model" eval="com.axelor.inject.Beans.get(com.axelor.meta.db.repo.MetaModelRepository.class).findByName(object)?.getFullName()" column="object" />
|
||||
</input>
|
||||
|
||||
<input file="meta_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true" />
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,2 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.talent.all";"com.axelor.apps.talent.db.*";"x";"x";"x";"x";"x";;;"Admin"
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"code";"installOrder";"description";"imagePath";"modules";"dependsOn";"sequence"
|
||||
"Appraisal";"appraisal";22;"Appraisal";"app-appraisal.png";"axelor-talent";"employee";24
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"code";"installOrder";"description";"imagePath";"modules";"dependsOn";"sequence"
|
||||
"Recruitment";"recruitment";22;"Recruitment";"app-recruitment.png";"axelor-talent";"employee";22
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"code";"installOrder";"description";"imagePath";"modules";"dependsOn";"sequence"
|
||||
"Training";"training";20;"Training";"app-training.png";"axelor-talent";"employee";23
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,4 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-talent";"JobPosition";"job-position-form";"contractType";"Type of employment contract : permanent contract, temporary contract, internship...They are configured in the configurations of the ""Employee Management"" app."
|
||||
"axelor-talent";"JobPosition";"job-position-form";"mailAccount";"The management of the candidatures can be automated by filling the field ""Job email"" when creating a job offer. It must be an email account already configured in the application. You must include this email address in your job offer in order to automatically import applicants' information and attachments into the application. Each email sent to this address will create a new application."
|
||||
"axelor-talent";"JobPosition";"job-position-form";"nbOpenJob";"Indicates the number of open positions for this job offer."
|
||||
|
@ -0,0 +1,4 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-talent";"JobPosition";"job-position-form";"contractType";"Type de contrat de travail : CDI, CDD, stage... Ils se configurent dans les configurations de l'app ""Gestions des employés""."
|
||||
"axelor-talent";"JobPosition";"job-position-form";"mailAccount";"La création des candidatures peut être automatisée en remplissant le champ ""Email de réponse à l'offre d'emploi"" lors de la création d'une offre d'emploi. Il doit s'agir d'un compte email déjà configuré dans l'application. Vous devez indiquez cette adresse email dans votre offre d'emploi afin d'importer automatiquement dans l'application les informations et pièces jointes des candidats. Chaque email envoyé à cette adresse créera une nouvelle candidature."
|
||||
"axelor-talent";"JobPosition";"job-position-form";"nbOpenJob";"Indique le nombre de postes ouverts pour cette offre d'emploi."
|
||||
|
@ -0,0 +1,20 @@
|
||||
"name";"roles.name"
|
||||
"recruitment-root";"Admin"
|
||||
"recruitment-job-position-open";"Admin"
|
||||
"recruitment-job-application-all";"Admin"
|
||||
"recruitment-config";"Admin"
|
||||
"recruitment-config-education-level";"Admin"
|
||||
"recruitment-config-hiring-stage";"Admin"
|
||||
"recruitment-config-source";"Admin"
|
||||
"training-root";"Admin"
|
||||
"training-register-all";"Admin"
|
||||
"training-dashboard";"Admin"
|
||||
"training-conf";"Admin"
|
||||
"training-category-all";"Admin"
|
||||
"training-training-all";"Admin"
|
||||
"training-session-all";"Admin"
|
||||
"appraisal-root";"Admin"
|
||||
"appraisal-all-appraisals";"Admin"
|
||||
"appraisal-template-appraisals";"Admin"
|
||||
"appraisal-config";"Admin"
|
||||
"appraisal-config-appraisal-type";"Admin"
|
||||
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="AppAppraisal" lang="java" cacheable="true" extends="App" />
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="AppRecruitment" lang="java" extends="App">
|
||||
<string name="lastEmailId" title="Last email sync id"/>
|
||||
|
||||
<track>
|
||||
<field name="lastEmailId" on="UPDATE"/>
|
||||
</track>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="AppTraining" lang="java" cacheable="true" extends="App" />
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="Appraisal" lang="java" cacheable="true">
|
||||
<many-to-one name="employee" ref="com.axelor.apps.hr.db.Employee" title="Employee" />
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" title="Company" />
|
||||
<many-to-one name="appraisalType" ref="AppraisalType" title="Type of appraisal" required="true"/>
|
||||
<date name="toDate" title="Deadline" />
|
||||
<many-to-one name="reviewerEmployee" ref="com.axelor.apps.hr.db.Employee" title="Reviewer" />
|
||||
<string name="description" title="Description" large="true" />
|
||||
<integer name="statusSelect" title="Status" selection="appraisal.status.selected" readonly="true"/>
|
||||
<boolean name="isTemplate" title="Is template" />
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
// TYPE SELECT
|
||||
public static final int STATUS_DRAFT = 0;
|
||||
public static final int STATUS_SENT = 1;
|
||||
public static final int STATUS_COMPLETED = 2;
|
||||
public static final int STATUS_CANCELED = 3;
|
||||
|
||||
]]></extra-code>
|
||||
|
||||
<track>
|
||||
<field name="employee"/>
|
||||
<field name="company"/>
|
||||
<field name="appraisalType"/>
|
||||
<field name="toDate"/>
|
||||
<field name="reviewerEmployee"/>
|
||||
<field name="attrs"/>
|
||||
<field name="description"/>
|
||||
<field name="statusSelect" on="UPDATE"/>
|
||||
<field name="isTemplate"/>
|
||||
<message if="statusSelect == 1" on="UPDATE">Appraisal sent</message>
|
||||
<message if="statusSelect == 2" on="UPDATE">Appraisal realized</message>
|
||||
<message if="statusSelect == 3" on="UPDATE">Appraisal cancelled</message>
|
||||
<message if="statusSelect == 0" on="UPDATE">Appraisal draft</message>
|
||||
</track>
|
||||
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="AppraisalType" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="EducationLevel" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="human-resource" package="com.axelor.apps.hr.db"/>
|
||||
|
||||
<entity name="Employee" cacheable="true">
|
||||
<many-to-many name="trainingSkillSet" ref="com.axelor.apps.talent.db.Skill" title="Training skills"/>
|
||||
<many-to-many name="experienceSkillSet" ref="com.axelor.apps.talent.db.Skill" title="Experience skills"/>
|
||||
<many-to-many name="skillSet" ref="com.axelor.apps.talent.db.Skill" title="Other skills" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="HiringStage" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true" />
|
||||
<integer name="sequence" title="Sequence" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="JobApplication" lang="java" cacheable="true">
|
||||
<string name="lastName" title="Last name" />
|
||||
<string name="firstName" title="First name" />
|
||||
<string name="fullName" title="Full name" namecolumn="true" />
|
||||
<one-to-one name="emailAddress" ref="com.axelor.apps.message.db.EmailAddress" title="Email" />
|
||||
<string name="fixedPhone" title="Fixed phone" />
|
||||
<string name="mobilePhone" title="Mobile phone" />
|
||||
<many-to-one name="educationLevel" ref="EducationLevel" title="Level of education" />
|
||||
<integer name="experienceSelect" title="Work experience" selection="job.position.experience.select" />
|
||||
<many-to-many name="industrySectorSet" title="Business sectors" ref="com.axelor.apps.base.db.IndustrySector"/>
|
||||
<string name="linkedInProfile" title="LinkedIn profile" />
|
||||
<many-to-one name="talentSource" ref="com.axelor.apps.talent.db.TalentSource" title="Source" />
|
||||
<string name="referredBy" title="Referred by" />
|
||||
<integer name="appreciation" title="Appreciation" selection="training.register.rating.select" />
|
||||
<many-to-one name="jobPosition" ref="JobPosition" title="Applied job" required="true" />
|
||||
<many-to-one name="responsible" ref="com.axelor.apps.hr.db.Employee" title="Responsible" />
|
||||
<many-to-one name="employee" ref="com.axelor.apps.hr.db.Employee" title="Employee hired" />
|
||||
<string name="expectedSalary" title="Expected salary" />
|
||||
<string name="proposedSalary" title="Proposed salary" />
|
||||
<date name="availabilityFrom" title="Availability from" />
|
||||
<string name="description" title="Description" large="true"/>
|
||||
<integer name="statusSelect" title="Status" selection="job.application.status.select" />
|
||||
<many-to-one name="hiringStage" ref="com.axelor.apps.talent.db.HiringStage" title="Hiring stage"/>
|
||||
<string name="reasonNotHired" title="Reason not hired" large="true"/>
|
||||
<many-to-many name="skillSet" title="Skills tag" ref="Skill"/>
|
||||
<many-to-one name="picture" ref="com.axelor.meta.db.MetaFile" title="Photo" initParam="true"/>
|
||||
<date name="creationDate" title="Date of application"/>
|
||||
<integer name="titleSelect" title="Title" selection="partner.title.type.select"/>
|
||||
<string name="fax" title="Fax"/>
|
||||
<many-to-one name="employeeAddress" title="Address" ref="com.axelor.apps.base.db.Address"/>
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
public static final Integer STATUS_OPEN = 0;
|
||||
public static final Integer STATUS_HIRED = 1;
|
||||
public static final Integer STATUS_REJECTED = 2;
|
||||
public static final Integer STATUS_CANCELLED = 3;
|
||||
]]>
|
||||
</extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="JobPosition" lang="java" cacheable="true">
|
||||
<string name="jobTitle" title="Job title" required="true" namecolumn="true"/>
|
||||
<string name="jobReference" title="Job reference" readonly="true"/>
|
||||
<many-to-one name="companyDepartment" ref="com.axelor.apps.base.db.CompanyDepartment" title="Department" />
|
||||
<many-to-one name="employee" ref="com.axelor.apps.hr.db.Employee" title="Responsible" />
|
||||
<many-to-one name="contractType" ref="com.axelor.apps.hr.db.EmploymentContractType" title="Contract type" />
|
||||
<integer name="experienceSelect" title="Experience" selection="job.position.experience.select" />
|
||||
<string name="salary" title="Salary" />
|
||||
<string name="location" title="Location" />
|
||||
<string name="jobDescription" title="Job description" large="true"/>
|
||||
<many-to-one name="mailAccount" ref="com.axelor.apps.message.db.EmailAccount" title="Job email" />
|
||||
<integer name="statusSelect" title="Status" selection="job.position.status.select" />
|
||||
<integer name="nbOpenJob" title="Nb of open jobs" />
|
||||
<integer name="nbPeopleHired" title="Nb of people hired" readonly="true" />
|
||||
<date name="publicationDate" title="Publication Date"/>
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" title="Company"/>
|
||||
<string name="positionStatusSelect" title="Position Status" selection="job.position.position.status"/>
|
||||
<date name="startingDate" title="Starting date"/>
|
||||
<string name="profileWanted" title="Profile wanted"/>
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
public static final Integer STATUS_DRAFT = 0;
|
||||
public static final Integer STATUS_OPEN = 1;
|
||||
public static final Integer STATUS_ON_HOLD = 2;
|
||||
public static final Integer STATUS_CLOSED = 3;
|
||||
public static final Integer STATUS_CANCELED = 3;
|
||||
|
||||
]]>
|
||||
</extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="Sequence" lang="java">
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
//SEQUENCE SELECT
|
||||
public static final String JOB_POSITION = "jobPosition";
|
||||
|
||||
]]></extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="Skill" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="TalentSource" lang="java" cacheable="true">
|
||||
<string name="code" title="Code" required="true"/>
|
||||
<string name="name" title="Name" required="true"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="Training" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true" />
|
||||
<many-to-one name="category" ref="com.axelor.apps.talent.db.TrainingCategory" title="Category" />
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" title="Company" />
|
||||
<many-to-many name="skillSet" ref="com.axelor.apps.talent.db.Skill" title="Skill" />
|
||||
<many-to-many name="requiredTrainingSet" ref="com.axelor.apps.talent.db.Training" title="Required training"/>
|
||||
<string name="description" title="Description" large="true" />
|
||||
<string name="program" title="Program" large="true" />
|
||||
<string name="objectives" title="Objectives" large="true" />
|
||||
<decimal name="duration" title="Number of hours" />
|
||||
<boolean name="mandatoryTraining" title="Mandatory training"/>
|
||||
<decimal name="rating" title="Rating" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="TrainingCategory" lang="java" cacheable="true">
|
||||
<string name="name" title="Name" required="true" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="TrainingRegister" lang="java" cacheable="true">
|
||||
<many-to-one name="trainingSession" ref="com.axelor.apps.talent.db.TrainingSession" title="Session"/>
|
||||
<many-to-one name="training" ref="com.axelor.apps.talent.db.Training" title="Training" required="true"/>
|
||||
<many-to-one name="employee" ref="com.axelor.apps.hr.db.Employee" title="Employee" required="true"/>
|
||||
<datetime name="fromDate" title="From date" required="true"/>
|
||||
<datetime name="toDate" title="To date" required="true"/>
|
||||
<integer name="ratingSelect" title="Rating" selection="training.register.rating.select"/>
|
||||
<integer name="statusSelect" title="Status" selection="training.register.status.select" />
|
||||
<many-to-one name="calendar" ref="com.axelor.apps.base.db.ICalendar" title="Calendar"/>
|
||||
<string name="fullName" namecolumn="true"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="talent" package="com.axelor.apps.talent.db"/>
|
||||
|
||||
<entity name="TrainingSession" lang="java" cacheable="true">
|
||||
<integer name="statusSelect" title="Status" selection="training.session.status.select" default="1" />
|
||||
<many-to-one name="training" ref="com.axelor.apps.talent.db.Training" title="Training" required="true" />
|
||||
<datetime name="fromDate" title="From date" required="true" />
|
||||
<datetime name="toDate" title="To date" required="true"/>
|
||||
<integer name="nbrRegistered" title="Number of registredred to the session" />
|
||||
<decimal name="duration" title="Number of hours" />
|
||||
<decimal name="rating" title="Rating" />
|
||||
<string name="fullName" title="Full name" namecolumn="true" />
|
||||
<string name="location" title="Location" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years",,,
|
||||
"0 %",,,
|
||||
"0-2 years",,,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years",,,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years",,,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,,
|
||||
"A new employee form will be created. Do you confirm the creation ?",,,
|
||||
"Accept/plan",,,
|
||||
"Address",,,
|
||||
"All applications",,,
|
||||
"All trainings",,,
|
||||
"Application Information",,,
|
||||
"Applications",,,
|
||||
"Applied job",,,
|
||||
"Appraisal",,,
|
||||
"Appraisal cancelled",,,
|
||||
"Appraisal draft",,,
|
||||
"Appraisal filters",,,
|
||||
"Appraisal realized",,,
|
||||
"Appraisal sent",,,
|
||||
"Appraisal template",,,
|
||||
"Appraisal templates",,,
|
||||
"Appraisal type",,,
|
||||
"Appraisal types",,,
|
||||
"Appraisals",,,
|
||||
"Appreciation",,,
|
||||
"Availability from",,,
|
||||
"Business sectors",,,
|
||||
"Cadre",,,
|
||||
"Calendar",,,
|
||||
"Cancel",,,
|
||||
"Canceled",,,
|
||||
"Cancelled",,,
|
||||
"Categories",,,
|
||||
"Category",,,
|
||||
"Close",,,
|
||||
"Close session",,,
|
||||
"Closed",,,
|
||||
"Closed job offers",,,
|
||||
"Code",,,
|
||||
"Company",,,
|
||||
"Completed",,,
|
||||
"Completed trainings of all employees of a team",,,
|
||||
"Configuration",,,
|
||||
"Contact",,,
|
||||
"Contact details",,,
|
||||
"Contract",,,
|
||||
"Contract type",,,
|
||||
"Create",,,
|
||||
"Create Appraisal(Select Employees)",,,
|
||||
"Create Appraisals",,,
|
||||
"Create Appraisals(Select Employees)",,,
|
||||
"Create a job application",,,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard",,,
|
||||
"Date of application",,,
|
||||
"Deadline",,,
|
||||
"Department",,,
|
||||
"Description",,,
|
||||
"Draft",,,
|
||||
"Education level",,,
|
||||
"Email",,,
|
||||
"Employee",,,
|
||||
"Employee hired",,,
|
||||
"Employee registred",,,
|
||||
"Employees",,,
|
||||
"Events",,,
|
||||
"Expected salary",,,
|
||||
"Experience",,,
|
||||
"Experience skills",,,
|
||||
"Fax",,,
|
||||
"First name",,,
|
||||
"Fixed phone",,,
|
||||
"From",,,
|
||||
"From date",,,
|
||||
"Full name",,,
|
||||
"Hire",,,
|
||||
"Hired",,,
|
||||
"Hiring Stage",,,
|
||||
"Hiring stage",,,
|
||||
"Invalid dates. From date must be before to date.",,,
|
||||
"Is template",,,
|
||||
"Job Application",,,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information",,,
|
||||
"Job Position Filters",,,
|
||||
"Job application",,,
|
||||
"Job applications",,,
|
||||
"Job description",,,
|
||||
"Job email",,,
|
||||
"Job position",,,
|
||||
"Job positions",,,
|
||||
"Job reference",,,
|
||||
"Job title",,,
|
||||
"Last email sync id",,,
|
||||
"Last name",,,
|
||||
"Level of education",,,
|
||||
"LinkedIn profile",,,
|
||||
"Location",,,
|
||||
"Mandatory training",,,
|
||||
"Mobile phone",,,
|
||||
"Month",,,
|
||||
"My completed appraisals",,,
|
||||
"My completed trainings",,,
|
||||
"My traning filters",,,
|
||||
"My upcoming appraisal",,,
|
||||
"My upcoming trainings",,,
|
||||
"Name",,,
|
||||
"Nb Employee",,,
|
||||
"Nb Hours",,,
|
||||
"Nb of open jobs",,,
|
||||
"Nb of people hired",,,
|
||||
"Nb of training hours per month",,,
|
||||
"Nb. hours per category",,,
|
||||
"Nb. hours per training",,,
|
||||
"Nb. of trained employee per category",,,
|
||||
"New appraisal",,,
|
||||
"Number of hours",,,
|
||||
"Number of registredred to the session",,,
|
||||
"Objectives",,,
|
||||
"On hold",,,
|
||||
"Open",,,
|
||||
"Opened",,,
|
||||
"Other skills",,,
|
||||
"Photo",,,
|
||||
"Planned",,,
|
||||
"Position Status",,,
|
||||
"Primary Address",,,
|
||||
"Profile wanted",,,
|
||||
"Program",,,
|
||||
"Proposed salary",,,
|
||||
"Publication Date",,,
|
||||
"Rating",,,
|
||||
"Realize",,,
|
||||
"Reason not hired",,,
|
||||
"Recruitment",,,
|
||||
"Referred by",,,
|
||||
"Register training",,,
|
||||
"Rejected",,,
|
||||
"Requested",,,
|
||||
"Required training",,,
|
||||
"Responsible",,,
|
||||
"Reviewer",,,
|
||||
"Salary",,,
|
||||
"Schedule Event",,,
|
||||
"Send",,,
|
||||
"Sent",,,
|
||||
"Sequence",,,
|
||||
"Session",,,
|
||||
"Skill",,,
|
||||
"Skills",,,
|
||||
"Skills tag",,,
|
||||
"Source",,,
|
||||
"Starting date",,,
|
||||
"Status",,,
|
||||
"Tag skill",,,
|
||||
"Tag skills",,,
|
||||
"Technicien",,,
|
||||
"Title",,,
|
||||
"To",,,
|
||||
"To date",,,
|
||||
"Tools",,,
|
||||
"Total",,,
|
||||
"Training",,,
|
||||
"Training Categories",,,
|
||||
"Training Category",,,
|
||||
"Training Register",,,
|
||||
"Training completed",,,
|
||||
"Training dashboard",,,
|
||||
"Training dates must be under training session date range.",,,
|
||||
"Training per category",,,
|
||||
"Training register",,,
|
||||
"Training registers",,,
|
||||
"Training session",,,
|
||||
"Training sessions",,,
|
||||
"Training skills",,,
|
||||
"Trainings",,,
|
||||
"Type of appraisal",,,
|
||||
"Upcoming appraisal",,,
|
||||
"Upcoming appraisals of all employees of a team",,,
|
||||
"Upcoming trainings of all employees of a team",,,
|
||||
"Work experience",,,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal",,,
|
||||
"value:Recruitment",,,
|
||||
"value:Training",,,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 Jahre",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 Jahre",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 Jahre",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 Jahre",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Es wird ein neues Mitarbeiterformular erstellt. Bestätigen Sie die Erstellung?",,
|
||||
"Accept/plan","Akzeptieren/Planen",,
|
||||
"Address","Adresse",,
|
||||
"All applications","Alle Anwendungen",,
|
||||
"All trainings","Alle Schulungen",,
|
||||
"Application Information","Anwendungsinformationen",,
|
||||
"Applications",,,
|
||||
"Applied job","Angewandter Job",,
|
||||
"Appraisal","Bewertung",,
|
||||
"Appraisal cancelled","Beurteilung abgebrochen",,
|
||||
"Appraisal draft","Entwurf des Gutachtens",,
|
||||
"Appraisal filters","Beurteilungsfilter",,
|
||||
"Appraisal realized","Bewertung durchgeführt",,
|
||||
"Appraisal sent","Beurteilung gesendet",,
|
||||
"Appraisal template","Beurteilungsformular",,
|
||||
"Appraisal templates","Beurteilungsvorlagen",,
|
||||
"Appraisal type","Beurteilungsart",,
|
||||
"Appraisal types","Beurteilungsarten",,
|
||||
"Appraisals","Gutachten",,
|
||||
"Appreciation","Wertschätzung",,
|
||||
"Availability from","Verfügbarkeit ab",,
|
||||
"Business sectors","Unternehmensbereiche",,
|
||||
"Cadre","Kader",,
|
||||
"Calendar",,,
|
||||
"Cancel","Abbrechen",,
|
||||
"Canceled","Abgesagt",,
|
||||
"Cancelled","Storniert",,
|
||||
"Categories","Kategorien",,
|
||||
"Category","Kategorie",,
|
||||
"Close",,,
|
||||
"Close session","Sitzung schließen",,
|
||||
"Closed","Geschlossen",,
|
||||
"Closed job offers",,,
|
||||
"Code","Code",,
|
||||
"Company","Unternehmen",,
|
||||
"Completed","Abgeschlossen",,
|
||||
"Completed trainings of all employees of a team","Abgeschlossene Schulungen aller Mitarbeiter eines Teams",,
|
||||
"Configuration","Konfiguration",,
|
||||
"Contact","Kontakt",,
|
||||
"Contact details","Kontaktdaten",,
|
||||
"Contract","Vertrag",,
|
||||
"Contract type","Vertragsart",,
|
||||
"Create","Erstellen",,
|
||||
"Create Appraisal(Select Employees)","Beurteilung anlegen (Mitarbeiter auswählen)",,
|
||||
"Create Appraisals","Beurteilungen anlegen",,
|
||||
"Create Appraisals(Select Employees)","Beurteilungen erstellen (Mitarbeiter auswählen)",,
|
||||
"Create a job application","Erstellen einer Bewerbung",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Dashboard",,
|
||||
"Date of application","Datum der Anwendung",,
|
||||
"Deadline","Deadline",,
|
||||
"Department","Abteilung",,
|
||||
"Description","Beschreibung",,
|
||||
"Draft","Entwurf",,
|
||||
"Education level","Bildungsniveau",,
|
||||
"Email","E-Mail",,
|
||||
"Employee","Mitarbeiter",,
|
||||
"Employee hired","Angestellter eingestellt",,
|
||||
"Employee registred","Registrierter Mitarbeiter",,
|
||||
"Employees","Mitarbeiter",,
|
||||
"Events","Events",,
|
||||
"Expected salary","Gehaltsvorstellung",,
|
||||
"Experience","Erfahrung",,
|
||||
"Experience skills","Erleben Sie Fähigkeiten",,
|
||||
"Fax","Fax",,
|
||||
"First name","Vorname",,
|
||||
"Fixed phone","Festnetztelefon",,
|
||||
"From","Von",,
|
||||
"From date","Von-Datum",,
|
||||
"Full name","Vollständiger Name",,
|
||||
"Hire","Mieten",,
|
||||
"Hired","Angeheuert",,
|
||||
"Hiring Stage","Einstellungsphase",,
|
||||
"Hiring stage","Einstellungsphase",,
|
||||
"Invalid dates. From date must be before to date.","Ungültige Daten. Das Von-Datum muss vor dem Datum liegen.",,
|
||||
"Is template","Ist Vorlage",,
|
||||
"Job Application","Stellenbewerbung",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Informationen zum Stellenangebot",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Stellenbewerbung",,
|
||||
"Job applications","Stellenbewerbungen",,
|
||||
"Job description","Stellenbeschreibung",,
|
||||
"Job email","Job-E-Mail",,
|
||||
"Job position","Stellenangebot",,
|
||||
"Job positions","Stellenangebote",,
|
||||
"Job reference","Arbeitszeugnis",,
|
||||
"Job title","Berufsbezeichnung",,
|
||||
"Last email sync id","Letzte E-Mail-Synchronisierungs-ID",,
|
||||
"Last name","Nachname",,
|
||||
"Level of education","Bildungsniveau",,
|
||||
"LinkedIn profile","LinkedIn-Profil",,
|
||||
"Location","Ort",,
|
||||
"Mandatory training","Obligatorisches Training",,
|
||||
"Mobile phone","Handy",,
|
||||
"Month","Monat",,
|
||||
"My completed appraisals","Meine abgeschlossenen Gutachten",,
|
||||
"My completed trainings","Meine abgeschlossenen Schulungen",,
|
||||
"My traning filters","Meine Trainingsfilter",,
|
||||
"My upcoming appraisal","Meine bevorstehende Begutachtung",,
|
||||
"My upcoming trainings","Meine bevorstehenden Schulungen",,
|
||||
"Name","Name",,
|
||||
"Nb Employee","Nb Mitarbeiter",,
|
||||
"Nb Hours","Nb Stunden",,
|
||||
"Nb of open jobs","Anzahl der offenen Stellen",,
|
||||
"Nb of people hired","Anzahl der eingestellten Personen",,
|
||||
"Nb of training hours per month","Anzahl der Trainingsstunden pro Monat",,
|
||||
"Nb. hours per category","Anzahl der Stunden pro Kategorie",,
|
||||
"Nb. hours per training","Anzahl der Stunden pro Training",,
|
||||
"Nb. of trained employee per category","Anzahl der geschulten Mitarbeiter pro Kategorie",,
|
||||
"New appraisal","Neues Gutachten",,
|
||||
"Number of hours","Anzahl der Stunden",,
|
||||
"Number of registredred to the session","Anzahl der für die Sitzung angemeldeten Personen",,
|
||||
"Objectives","Ziele",,
|
||||
"On hold","In der Warteschleife",,
|
||||
"Open","Offen",,
|
||||
"Opened","Geöffnet",,
|
||||
"Other skills","Sonstige Fähigkeiten",,
|
||||
"Photo","Foto",,
|
||||
"Planned","Geplant",,
|
||||
"Position Status","Positionsstatus",,
|
||||
"Primary Address","Primäre Adresse",,
|
||||
"Profile wanted","Profil gesucht",,
|
||||
"Program","Programm",,
|
||||
"Proposed salary","Gehaltsvorstellung",,
|
||||
"Publication Date","Veröffentlichungsdatum",,
|
||||
"Rating","Bewertung",,
|
||||
"Realize","Verwirklichen",,
|
||||
"Reason not hired","Grund nicht eingestellt",,
|
||||
"Recruitment","Rekrutierung",,
|
||||
"Referred by","Verwiesen von",,
|
||||
"Register training","Registrieren Sie die Schulung",,
|
||||
"Rejected","Abgelehnt",,
|
||||
"Requested","Angefordert",,
|
||||
"Required training","Erforderliche Schulung",,
|
||||
"Responsible","Verantwortlich",,
|
||||
"Reviewer","Prüfer",,
|
||||
"Salary","Gehalt",,
|
||||
"Schedule Event","Veranstaltung planen",,
|
||||
"Send","Senden",,
|
||||
"Sent","Gesendet",,
|
||||
"Sequence","Sequenz",,
|
||||
"Session","Sitzung",,
|
||||
"Skill","Fertigkeiten",,
|
||||
"Skills","Fähigkeiten",,
|
||||
"Skills tag","Skills-Tag",,
|
||||
"Source","Quelle",,
|
||||
"Starting date","Startdatum",,
|
||||
"Status","Status",,
|
||||
"Tag skill","Tag-Fähigkeit",,
|
||||
"Tag skills","Tag-Fähigkeiten",,
|
||||
"Technicien","Techniker",,
|
||||
"Title","Titel",,
|
||||
"To","An",,
|
||||
"To date","Bis heute",,
|
||||
"Tools","Werkzeuge",,
|
||||
"Total","Gesamt",,
|
||||
"Training","Training",,
|
||||
"Training Categories","Trainingskategorien",,
|
||||
"Training Category","Trainingskategorie",,
|
||||
"Training Register","Schulungsregister",,
|
||||
"Training completed","Ausbildung abgeschlossen",,
|
||||
"Training dashboard","Dashboard für Schulungen",,
|
||||
"Training dates must be under training session date range.","Die Schulungstermine müssen im Zeitraum der Schulung liegen.",,
|
||||
"Training per category","Training pro Kategorie",,
|
||||
"Training register","Schulungsregister",,
|
||||
"Training registers","Trainingsregister",,
|
||||
"Training session","Trainingseinheit",,
|
||||
"Training sessions","Trainingseinheiten",,
|
||||
"Training skills","Trainingsfähigkeiten",,
|
||||
"Trainings","Schulungen",,
|
||||
"Type of appraisal","Art der Beurteilung",,
|
||||
"Upcoming appraisal","Bevorstehende Bewertung",,
|
||||
"Upcoming appraisals of all employees of a team","Bevorstehende Beurteilungen aller Mitarbeiter eines Teams",,
|
||||
"Upcoming trainings of all employees of a team","Bevorstehende Schulungen aller Mitarbeiter eines Teams",,
|
||||
"Work experience","Berufserfahrung",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","Wert:Bewertung",,
|
||||
"value:Recruitment","Wert:Rekrutierung",,
|
||||
"value:Training","Wert:Training",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years",,,
|
||||
"0 %",,,
|
||||
"0-2 years",,,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years",,,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years",,,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,,
|
||||
"A new employee form will be created. Do you confirm the creation ?",,,
|
||||
"Accept/plan",,,
|
||||
"Address",,,
|
||||
"All applications",,,
|
||||
"All trainings",,,
|
||||
"Application Information",,,
|
||||
"Applications",,,
|
||||
"Applied job",,,
|
||||
"Appraisal",,,
|
||||
"Appraisal cancelled",,,
|
||||
"Appraisal draft",,,
|
||||
"Appraisal filters",,,
|
||||
"Appraisal realized",,,
|
||||
"Appraisal sent",,,
|
||||
"Appraisal template",,,
|
||||
"Appraisal templates",,,
|
||||
"Appraisal type",,,
|
||||
"Appraisal types",,,
|
||||
"Appraisals",,,
|
||||
"Appreciation",,,
|
||||
"Availability from",,,
|
||||
"Business sectors",,,
|
||||
"Cadre",,,
|
||||
"Calendar",,,
|
||||
"Cancel",,,
|
||||
"Canceled",,,
|
||||
"Cancelled",,,
|
||||
"Categories",,,
|
||||
"Category",,,
|
||||
"Close",,,
|
||||
"Close session",,,
|
||||
"Closed",,,
|
||||
"Closed job offers",,,
|
||||
"Code",,,
|
||||
"Company",,,
|
||||
"Completed",,,
|
||||
"Completed trainings of all employees of a team",,,
|
||||
"Configuration",,,
|
||||
"Contact",,,
|
||||
"Contact details",,,
|
||||
"Contract",,,
|
||||
"Contract type",,,
|
||||
"Create",,,
|
||||
"Create Appraisal(Select Employees)",,,
|
||||
"Create Appraisals",,,
|
||||
"Create Appraisals(Select Employees)",,,
|
||||
"Create a job application",,,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard",,,
|
||||
"Date of application",,,
|
||||
"Deadline",,,
|
||||
"Department",,,
|
||||
"Description",,,
|
||||
"Draft",,,
|
||||
"Education level",,,
|
||||
"Email",,,
|
||||
"Employee",,,
|
||||
"Employee hired",,,
|
||||
"Employee registred",,,
|
||||
"Employees",,,
|
||||
"Events",,,
|
||||
"Expected salary",,,
|
||||
"Experience",,,
|
||||
"Experience skills",,,
|
||||
"Fax",,,
|
||||
"First name",,,
|
||||
"Fixed phone",,,
|
||||
"From",,,
|
||||
"From date",,,
|
||||
"Full name",,,
|
||||
"Hire",,,
|
||||
"Hired",,,
|
||||
"Hiring Stage",,,
|
||||
"Hiring stage",,,
|
||||
"Invalid dates. From date must be before to date.",,,
|
||||
"Is template",,,
|
||||
"Job Application",,,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information",,,
|
||||
"Job Position Filters",,,
|
||||
"Job application",,,
|
||||
"Job applications",,,
|
||||
"Job description",,,
|
||||
"Job email",,,
|
||||
"Job position",,,
|
||||
"Job positions",,,
|
||||
"Job reference",,,
|
||||
"Job title",,,
|
||||
"Last email sync id",,,
|
||||
"Last name",,,
|
||||
"Level of education",,,
|
||||
"LinkedIn profile",,,
|
||||
"Location",,,
|
||||
"Mandatory training",,,
|
||||
"Mobile phone",,,
|
||||
"Month",,,
|
||||
"My completed appraisals",,,
|
||||
"My completed trainings",,,
|
||||
"My traning filters",,,
|
||||
"My upcoming appraisal",,,
|
||||
"My upcoming trainings",,,
|
||||
"Name",,,
|
||||
"Nb Employee",,,
|
||||
"Nb Hours",,,
|
||||
"Nb of open jobs",,,
|
||||
"Nb of people hired",,,
|
||||
"Nb of training hours per month",,,
|
||||
"Nb. hours per category",,,
|
||||
"Nb. hours per training",,,
|
||||
"Nb. of trained employee per category",,,
|
||||
"New appraisal",,,
|
||||
"Number of hours",,,
|
||||
"Number of registredred to the session",,,
|
||||
"Objectives",,,
|
||||
"On hold",,,
|
||||
"Open",,,
|
||||
"Opened",,,
|
||||
"Other skills",,,
|
||||
"Photo",,,
|
||||
"Planned",,,
|
||||
"Position Status",,,
|
||||
"Primary Address",,,
|
||||
"Profile wanted",,,
|
||||
"Program",,,
|
||||
"Proposed salary",,,
|
||||
"Publication Date",,,
|
||||
"Rating",,,
|
||||
"Realize",,,
|
||||
"Reason not hired",,,
|
||||
"Recruitment",,,
|
||||
"Referred by",,,
|
||||
"Register training",,,
|
||||
"Rejected",,,
|
||||
"Requested",,,
|
||||
"Required training",,,
|
||||
"Responsible",,,
|
||||
"Reviewer",,,
|
||||
"Salary",,,
|
||||
"Schedule Event",,,
|
||||
"Send",,,
|
||||
"Sent",,,
|
||||
"Sequence",,,
|
||||
"Session",,,
|
||||
"Skill",,,
|
||||
"Skills",,,
|
||||
"Skills tag",,,
|
||||
"Source",,,
|
||||
"Starting date",,,
|
||||
"Status",,,
|
||||
"Tag skill",,,
|
||||
"Tag skills",,,
|
||||
"Technicien",,,
|
||||
"Title",,,
|
||||
"To",,,
|
||||
"To date",,,
|
||||
"Tools",,,
|
||||
"Total",,,
|
||||
"Training",,,
|
||||
"Training Categories",,,
|
||||
"Training Category",,,
|
||||
"Training Register",,,
|
||||
"Training completed",,,
|
||||
"Training dashboard",,,
|
||||
"Training dates must be under training session date range.",,,
|
||||
"Training per category",,,
|
||||
"Training register",,,
|
||||
"Training registers",,,
|
||||
"Training session",,,
|
||||
"Training sessions",,,
|
||||
"Training skills",,,
|
||||
"Trainings",,,
|
||||
"Type of appraisal",,,
|
||||
"Upcoming appraisal",,,
|
||||
"Upcoming appraisals of all employees of a team",,,
|
||||
"Upcoming trainings of all employees of a team",,,
|
||||
"Work experience",,,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal",,,
|
||||
"value:Recruitment",,,
|
||||
"value:Training",,,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 años",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 años",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 años",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 años",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Se creará un nuevo formulario de empleado. ¿Confirma la creación?",,
|
||||
"Accept/plan","Aceptar/planificar",,
|
||||
"Address","Dirección",,
|
||||
"All applications","Todas las aplicaciones",,
|
||||
"All trainings","Todos los entrenamientos",,
|
||||
"Application Information","Información sobre la solicitud",,
|
||||
"Applications",,,
|
||||
"Applied job","Trabajo solicitado",,
|
||||
"Appraisal","Apreciación",,
|
||||
"Appraisal cancelled","Calificación cancelada",,
|
||||
"Appraisal draft","Borrador de calificación",,
|
||||
"Appraisal filters","Filtros de calificación",,
|
||||
"Appraisal realized","Valoración realizada",,
|
||||
"Appraisal sent","Peritaje enviado",,
|
||||
"Appraisal template","Modelo de calificación",,
|
||||
"Appraisal templates","Modelos de calificación",,
|
||||
"Appraisal type","Clase de calificación",,
|
||||
"Appraisal types","Clases de calificación",,
|
||||
"Appraisals","Calificaciones",,
|
||||
"Appreciation","Apreciación",,
|
||||
"Availability from","Disponibilidad desde",,
|
||||
"Business sectors","Sectores de actividad",,
|
||||
"Cadre","Cuadro",,
|
||||
"Calendar",,,
|
||||
"Cancel","Cancelar",,
|
||||
"Canceled","Cancelado",,
|
||||
"Cancelled","Cancelado",,
|
||||
"Categories","Categorías",,
|
||||
"Category","Categoría",,
|
||||
"Close",,,
|
||||
"Close session","Cerrar sesión",,
|
||||
"Closed","Cerrado",,
|
||||
"Closed job offers",,,
|
||||
"Code","Código",,
|
||||
"Company","Empresa",,
|
||||
"Completed","Concluido",,
|
||||
"Completed trainings of all employees of a team","Formación completa de todos los empleados de un equipo",,
|
||||
"Configuration","Configuración",,
|
||||
"Contact","Contacto",,
|
||||
"Contact details","Datos de contacto",,
|
||||
"Contract","Contrato",,
|
||||
"Contract type","Tipo de contrato",,
|
||||
"Create","Crear",,
|
||||
"Create Appraisal(Select Employees)","Crear calificación (Seleccionar empleados)",,
|
||||
"Create Appraisals","Crear calificaciones",,
|
||||
"Create Appraisals(Select Employees)","Crear calificaciones (Seleccionar empleados)",,
|
||||
"Create a job application","Crear una solicitud de empleo",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Tablero de mandos",,
|
||||
"Date of application","Fecha de aplicación",,
|
||||
"Deadline","Fecha límite",,
|
||||
"Department","Departamento",,
|
||||
"Description","Descripción",,
|
||||
"Draft","Proyecto de",,
|
||||
"Education level","Nivel de educación",,
|
||||
"Email","Correo electrónico",,
|
||||
"Employee","Empleado",,
|
||||
"Employee hired","Empleado contratado",,
|
||||
"Employee registred","Empleado registrado",,
|
||||
"Employees","Empleados",,
|
||||
"Events","Eventos",,
|
||||
"Expected salary","Sueldo esperado",,
|
||||
"Experience","Experiencia",,
|
||||
"Experience skills","Habilidades de experiencia",,
|
||||
"Fax","Fax",,
|
||||
"First name","Nombre de pila",,
|
||||
"Fixed phone","Teléfono fijo",,
|
||||
"From","Desde",,
|
||||
"From date","Desde la fecha",,
|
||||
"Full name","Nombre completo",,
|
||||
"Hire","Contratar",,
|
||||
"Hired","Contratado",,
|
||||
"Hiring Stage","Etapa de contratación",,
|
||||
"Hiring stage","Etapa de contratación",,
|
||||
"Invalid dates. From date must be before to date.","Fechas no válidas. Desde la fecha debe ser anterior a la fecha.",,
|
||||
"Is template","Es plantilla",,
|
||||
"Job Application","Solicitud de empleo",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Información sobre la oferta de trabajo",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Solicitud de empleo",,
|
||||
"Job applications","Solicitudes de empleo",,
|
||||
"Job description","Descripción del puesto",,
|
||||
"Job email","Correo electrónico del trabajo",,
|
||||
"Job position","Puesto de trabajo",,
|
||||
"Job positions","Puestos de trabajo",,
|
||||
"Job reference","Referencia del trabajo",,
|
||||
"Job title","Título del puesto",,
|
||||
"Last email sync id","Último ID de sincronización de correo electrónico",,
|
||||
"Last name","Apellido",,
|
||||
"Level of education","Nivel de educación",,
|
||||
"LinkedIn profile","Perfil de LinkedIn",,
|
||||
"Location","Ubicación",,
|
||||
"Mandatory training","Formación obligatoria",,
|
||||
"Mobile phone","Teléfono móvil",,
|
||||
"Month","Mes",,
|
||||
"My completed appraisals","Mis tasaciones completadas",,
|
||||
"My completed trainings","Mis entrenamientos completados",,
|
||||
"My traning filters","Mis filtros de entrenamiento",,
|
||||
"My upcoming appraisal","Mi próxima evaluación",,
|
||||
"My upcoming trainings","Mis próximos entrenamientos",,
|
||||
"Name","Nombre",,
|
||||
"Nb Employee","N.B. Empleado",,
|
||||
"Nb Hours","Nb Horas",,
|
||||
"Nb of open jobs","Número de puestos vacantes",,
|
||||
"Nb of people hired","Número de personas contratadas",,
|
||||
"Nb of training hours per month","Número de horas de formación al mes",,
|
||||
"Nb. hours per category","Nb. horas por categoría",,
|
||||
"Nb. hours per training","Nb. horas por formación",,
|
||||
"Nb. of trained employee per category","Nº de empleados formados por categoría",,
|
||||
"New appraisal","Nueva calificación",,
|
||||
"Number of hours","Cantidad de horas",,
|
||||
"Number of registredred to the session","Número de inscritos a la sesión",,
|
||||
"Objectives","Objetivos",,
|
||||
"On hold","En espera",,
|
||||
"Open","Abrir",,
|
||||
"Opened","Abierto",,
|
||||
"Other skills","Otras habilidades",,
|
||||
"Photo","Foto",,
|
||||
"Planned","Planeado",,
|
||||
"Position Status","Posición Estado",,
|
||||
"Primary Address","Dirección principal",,
|
||||
"Profile wanted","Se busca perfil",,
|
||||
"Program","Programa",,
|
||||
"Proposed salary","Sueldo propuesto",,
|
||||
"Publication Date","Fecha de publicación",,
|
||||
"Rating","Calificación",,
|
||||
"Realize","Darse cuenta",,
|
||||
"Reason not hired","Motivo no contratado",,
|
||||
"Recruitment","Contratación de personal",,
|
||||
"Referred by","Referido por",,
|
||||
"Register training","Registro de la formación",,
|
||||
"Rejected","Rechazado",,
|
||||
"Requested","Solicitado",,
|
||||
"Required training","Formación necesaria",,
|
||||
"Responsible","Responsable",,
|
||||
"Reviewer","Revisor",,
|
||||
"Salary","Salario",,
|
||||
"Schedule Event","Programar Evento",,
|
||||
"Send","Enviar",,
|
||||
"Sent","Enviado",,
|
||||
"Sequence","Secuencia",,
|
||||
"Session","Sesión",,
|
||||
"Skill","Habilidad",,
|
||||
"Skills","Habilidades",,
|
||||
"Skills tag","Etiqueta de habilidades",,
|
||||
"Source","Fuente",,
|
||||
"Starting date","Fecha de inicio",,
|
||||
"Status","Estado",,
|
||||
"Tag skill","Etiquetar habilidad",,
|
||||
"Tag skills","Etiquetar habilidades",,
|
||||
"Technicien","Técnicos",,
|
||||
"Title","Título",,
|
||||
"To","Para",,
|
||||
"To date","Hasta la fecha",,
|
||||
"Tools","Herramientas",,
|
||||
"Total","Total",,
|
||||
"Training","Entrenamiento",,
|
||||
"Training Categories","Categorías de formación",,
|
||||
"Training Category","Categoría de formación",,
|
||||
"Training Register","Registro de formación",,
|
||||
"Training completed","Formación completada",,
|
||||
"Training dashboard","Cuadro de mando de la formación",,
|
||||
"Training dates must be under training session date range.","Las fechas de entrenamiento deben estar dentro del rango de fechas de las sesiones de entrenamiento.",,
|
||||
"Training per category","Formación por categoría",,
|
||||
"Training register","Registro de formación",,
|
||||
"Training registers","Registros de formación",,
|
||||
"Training session","Sesión de formación",,
|
||||
"Training sessions","Sesiones de formación",,
|
||||
"Training skills","Habilidades de formación",,
|
||||
"Trainings","Entrenamientos",,
|
||||
"Type of appraisal","Clase de calificación",,
|
||||
"Upcoming appraisal","Próxima evaluación",,
|
||||
"Upcoming appraisals of all employees of a team","Próximas evaluaciones de todos los empleados de un equipo",,
|
||||
"Upcoming trainings of all employees of a team","Próximos entrenamientos de todos los empleados de un equipo",,
|
||||
"Work experience","Experiencia laboral",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","valor:Tasación",,
|
||||
"value:Recruitment","value:Contratación de personal",,
|
||||
"value:Training","value:Formación",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years",,,
|
||||
"0 %",,,
|
||||
"0-2 years",,,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years",,,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years",,,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Une nouvelle fiche employé va être créée. Confirmez-vous la création ?",,
|
||||
"Accept/plan","Accepter/planifier",,
|
||||
"Address",,,
|
||||
"All applications","Toutes les candidatures",,
|
||||
"All trainings","Toutes les formations",,
|
||||
"Application Information","Information de la candidature",,
|
||||
"Applications","Candidature",,
|
||||
"Applied job","Offre d'emploi",,
|
||||
"Appraisal","Évaluation",,
|
||||
"Appraisal cancelled",,,
|
||||
"Appraisal draft",,,
|
||||
"Appraisal filters",,,
|
||||
"Appraisal realized",,,
|
||||
"Appraisal sent",,,
|
||||
"Appraisal template","Modèle d'évaluation",,
|
||||
"Appraisal templates","Modèles d'évaluations",,
|
||||
"Appraisal type","Type d'évaluation",,
|
||||
"Appraisal types","Type d'évaluations",,
|
||||
"Appraisals","Evaluations",,
|
||||
"Appreciation","Appréciation",,
|
||||
"Availability from","Disponibilité",,
|
||||
"Business sectors","Secteurs d'activité",,
|
||||
"Cadre",,,
|
||||
"Calendar",,,
|
||||
"Cancel","Annuler",,
|
||||
"Canceled","Annulé",,
|
||||
"Cancelled",,,
|
||||
"Categories","Catégories","Training's categories (for ex. Technical, functional trainings...)",
|
||||
"Category","Catégorie",,
|
||||
"Close","Fermer",,
|
||||
"Close session","Fermer la session",,
|
||||
"Closed",,,
|
||||
"Closed job offers","Offres d'emplois fermées",,
|
||||
"Code",,,
|
||||
"Company","Société",,
|
||||
"Completed","Réalisé",,
|
||||
"Completed trainings of all employees of a team","Les évaluations terminées de mon équipe",,
|
||||
"Configuration","Configuration",,
|
||||
"Contact",,,
|
||||
"Contact details","Coordonnées",,
|
||||
"Contract","Contrat",,
|
||||
"Contract type","Type de contrat",,
|
||||
"Create","Créer",,
|
||||
"Create Appraisal(Select Employees)",,,
|
||||
"Create Appraisals","Créer les évaluations",,
|
||||
"Create Appraisals(Select Employees)","Créer évaluations (Sélectionner les employés)",,
|
||||
"Create a job application","Créer une candidature",,
|
||||
"Current applications","Candidatures en cours",,
|
||||
"Current job offers","Offres d'emploi en cours",,
|
||||
"Dashboard",,,
|
||||
"Date of application","Date de la candidature",,
|
||||
"Deadline",,,
|
||||
"Department","Département",,
|
||||
"Description","Description",,
|
||||
"Draft",,,
|
||||
"Education level",,,
|
||||
"Email",,,
|
||||
"Employee","Employé",,
|
||||
"Employee hired","Employé embauché",,
|
||||
"Employee registred","Personnes inscrites",,
|
||||
"Employees",,,
|
||||
"Events",,,
|
||||
"Expected salary","Salaire souhaité",,
|
||||
"Experience","Expérience",,
|
||||
"Experience skills","Compétences profesionnelles",,
|
||||
"Fax",,,
|
||||
"First name",,,
|
||||
"Fixed phone",,,
|
||||
"From","De",,
|
||||
"From date","Date de début",,
|
||||
"Full name",,,
|
||||
"Hire","Embauché",,
|
||||
"Hired","Embauché(e)",,
|
||||
"Hiring Stage","Etape de recrutement",,
|
||||
"Hiring stage","Etape de recrutement",,
|
||||
"Invalid dates. From date must be before to date.",,,
|
||||
"Is template",,,
|
||||
"Job Application",,,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Informations de l'offre d'emploi",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Candidature",,
|
||||
"Job applications",,,
|
||||
"Job description","Description de l'offre",,
|
||||
"Job email","Email de réponse à l'offre d'emploi",,
|
||||
"Job position","Offre d'emploi",,
|
||||
"Job positions","Offres d'emplois",,
|
||||
"Job reference","Référence de l'offre d'emploi",,
|
||||
"Job title","Nom de l'offre",,
|
||||
"Last email sync id",,,
|
||||
"Last name",,,
|
||||
"Level of education","Niveau de diplôme",,
|
||||
"LinkedIn profile","LinkedIn",,
|
||||
"Location","Emplacement",,
|
||||
"Mandatory training","Formation obligatoire",,
|
||||
"Mobile phone","N° Mobile",,
|
||||
"Month",,,
|
||||
"My completed appraisals","Mes évaluations terminées",,
|
||||
"My completed trainings","Mes formations terminées",,
|
||||
"My traning filters",,,
|
||||
"My upcoming appraisal","Mes évaluations à venir",,
|
||||
"My upcoming trainings","Mes formations à venir",,
|
||||
"Name","Nom",,
|
||||
"Nb Employee",,,
|
||||
"Nb Hours",,,
|
||||
"Nb of open jobs","Nb de postes ouverts",,
|
||||
"Nb of people hired","Nb de personnes embauchées",,
|
||||
"Nb of training hours per month","Nb d'heures de formation par mois",,
|
||||
"Nb. hours per category","Nb d'heures par catégorie",,
|
||||
"Nb. hours per training","Nb d'heures par formation",,
|
||||
"Nb. of trained employee per category","Nb d'employés formés par catégorie",,
|
||||
"New appraisal","Nouvelles évaluations",,
|
||||
"Number of hours","Nombre d'heures",,
|
||||
"Number of registredred to the session","Nombre d'inscrits à la session",,
|
||||
"Objectives","Objectifs",,
|
||||
"On hold","En attente",,
|
||||
"Open","Ouvrir",,
|
||||
"Opened",,,
|
||||
"Other skills","Autres compétences",,
|
||||
"Photo",,,
|
||||
"Planned","Planifié",,
|
||||
"Position Status","Statut du poste",,
|
||||
"Primary Address","Adresse principale",,
|
||||
"Profile wanted","Profil recherché",,
|
||||
"Program","Programme",,
|
||||
"Proposed salary","Salaire proposé",,
|
||||
"Publication Date","Date de publication",,
|
||||
"Rating","Note",,
|
||||
"Realize",,,
|
||||
"Reason not hired","Raison de non embauche",,
|
||||
"Recruitment","Recrutement",,
|
||||
"Referred by","Référent",,
|
||||
"Register training","Inscription à la formation",,
|
||||
"Rejected","Rejeté",,
|
||||
"Requested","Demandé",,
|
||||
"Required training","Formations requises",,
|
||||
"Responsible","Responsable du recrutement",,
|
||||
"Reviewer","Responsable de l'évaluation",,
|
||||
"Salary","Salaire",,
|
||||
"Schedule Event",,,
|
||||
"Send","Envoyer",,
|
||||
"Sent",,,
|
||||
"Sequence",,,
|
||||
"Session",,,
|
||||
"Skill","Compétences",,
|
||||
"Skills","Compétences",,
|
||||
"Skills tag","Compétences",,
|
||||
"Source","Provenance",,
|
||||
"Starting date","Prise de poste",,
|
||||
"Status","Statut",,
|
||||
"Tag skill","Compétences",,
|
||||
"Tag skills","Compétences",,
|
||||
"Technicien",,,
|
||||
"Title","Titre",,
|
||||
"To","À",,
|
||||
"To date","Date de fin",,
|
||||
"Tools",,,
|
||||
"Total",,,
|
||||
"Training","Formations","Parent menu for training App (sub app)",
|
||||
"Training Categories",,,
|
||||
"Training Category",,,
|
||||
"Training Register","Inscriptions aux formations",,
|
||||
"Training completed","Formation réalisée",,
|
||||
"Training dashboard","Tableau de bord de la formation",,
|
||||
"Training dates must be under training session date range.",,,
|
||||
"Training per category","Formations par catégories",,
|
||||
"Training register","Inscription formation",,
|
||||
"Training registers","Inscriptions aux formations",,
|
||||
"Training session","Sessions de formation",,
|
||||
"Training sessions","Sessions de formation",,
|
||||
"Training skills","Compétences formations",,
|
||||
"Trainings","Formations","To create trainings ""template"" with a name, a description, a program, skills... ",
|
||||
"Type of appraisal","Type d'évaluation",,
|
||||
"Upcoming appraisal","Evaluations à venir",,
|
||||
"Upcoming appraisals of all employees of a team","Les évaluations à venir de mon équipe",,
|
||||
"Upcoming trainings of all employees of a team","Les formations à venir de mon équipe",,
|
||||
"Work experience","Expérience professionnelle",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","Évaluation",,
|
||||
"value:Recruitment","Recrutement",,
|
||||
"value:Training","Formations",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 anni",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 anni",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 anni",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 anni",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Verrà creato un nuovo modulo per i dipendenti. Conferma la creazione ?",,
|
||||
"Accept/plan","Accettare/pianificare",,
|
||||
"Address","Indirizzo",,
|
||||
"All applications","Tutte le applicazioni",,
|
||||
"All trainings","Tutti i corsi di formazione",,
|
||||
"Application Information","Informazioni sull'applicazione",,
|
||||
"Applications",,,
|
||||
"Applied job","Lavoro applicato",,
|
||||
"Appraisal","Valutazione",,
|
||||
"Appraisal cancelled","Valutazione annullata",,
|
||||
"Appraisal draft","Bozza di valutazione",,
|
||||
"Appraisal filters","Filtri di valutazione",,
|
||||
"Appraisal realized","Valutazione realizzata",,
|
||||
"Appraisal sent","Invio della valutazione",,
|
||||
"Appraisal template","Modello di valutazione",,
|
||||
"Appraisal templates","Modelli di valutazione",,
|
||||
"Appraisal type","Tipo di valutazione",,
|
||||
"Appraisal types","Tipi di valutazione",,
|
||||
"Appraisals","Valutazioni",,
|
||||
"Appreciation","Apprezzamento",,
|
||||
"Availability from","Disponibilità da",,
|
||||
"Business sectors","Settori",,
|
||||
"Cadre","Quadri",,
|
||||
"Calendar",,,
|
||||
"Cancel","Annulla",,
|
||||
"Canceled","Annullato",,
|
||||
"Cancelled","Annullato",,
|
||||
"Categories","Categorie",,
|
||||
"Category","Categoria",,
|
||||
"Close",,,
|
||||
"Close session","Chiudi sessione",,
|
||||
"Closed","Chiuso",,
|
||||
"Closed job offers",,,
|
||||
"Code","Codice",,
|
||||
"Company","L'azienda",,
|
||||
"Completed","Completato",,
|
||||
"Completed trainings of all employees of a team","Formazione completa di tutti i dipendenti di una squadra",,
|
||||
"Configuration","Configurazione",,
|
||||
"Contact","Contatto",,
|
||||
"Contact details","Dati di contatto",,
|
||||
"Contract","Contratto",,
|
||||
"Contract type","Tipo di contratto",,
|
||||
"Create","Creare",,
|
||||
"Create Appraisal(Select Employees)","Crea valutazione (Seleziona dipendenti)",,
|
||||
"Create Appraisals","Creare valutazioni",,
|
||||
"Create Appraisals(Select Employees)","Creare valutazioni (selezionare i dipendenti)",,
|
||||
"Create a job application","Creare una domanda di lavoro",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Cruscotto",,
|
||||
"Date of application","Data di applicazione",,
|
||||
"Deadline","Scadenza",,
|
||||
"Department","Reparto",,
|
||||
"Description","Descrizione",,
|
||||
"Draft","Bozza",,
|
||||
"Education level","Livello di istruzione",,
|
||||
"Email","Email eMail",,
|
||||
"Employee","Dipendente",,
|
||||
"Employee hired","Dipendente assunto",,
|
||||
"Employee registred","Dipendente registrato",,
|
||||
"Employees","Dipendenti",,
|
||||
"Events","Eventi",,
|
||||
"Expected salary","Stipendio atteso",,
|
||||
"Experience","L'esperienza",,
|
||||
"Experience skills","Esperienza",,
|
||||
"Fax","Fax",,
|
||||
"First name","Nome",,
|
||||
"Fixed phone","Telefono fisso",,
|
||||
"From","Da",,
|
||||
"From date","Dalla data",,
|
||||
"Full name","Nome e cognome",,
|
||||
"Hire","Noleggio",,
|
||||
"Hired","Assunto",,
|
||||
"Hiring Stage","Fase di assunzione",,
|
||||
"Hiring stage","Fase di noleggio",,
|
||||
"Invalid dates. From date must be before to date.","Date non valide. Dalla data deve essere anteriore alla data.",,
|
||||
"Is template","È modello",,
|
||||
"Job Application","Candidatura",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Informazioni sull'offerta di lavoro",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Domanda di lavoro",,
|
||||
"Job applications","Domande di lavoro",,
|
||||
"Job description","Descrizione del lavoro",,
|
||||
"Job email","Email di lavoro",,
|
||||
"Job position","Posizione",,
|
||||
"Job positions","Posizioni",,
|
||||
"Job reference","Riferimento di lavoro",,
|
||||
"Job title","Titolo",,
|
||||
"Last email sync id","ID di sincronizzazione dell'ultima e-mail",,
|
||||
"Last name","Cognome",,
|
||||
"Level of education","Livello di istruzione",,
|
||||
"LinkedIn profile","Profilo LinkedIn",,
|
||||
"Location","Posizione",,
|
||||
"Mandatory training","Formazione obbligatoria",,
|
||||
"Mobile phone","Telefono cellulare",,
|
||||
"Month","Mese",,
|
||||
"My completed appraisals","Le mie valutazioni completate",,
|
||||
"My completed trainings","I miei corsi di formazione completati",,
|
||||
"My traning filters","I miei filtri di traning",,
|
||||
"My upcoming appraisal","La mia prossima valutazione",,
|
||||
"My upcoming trainings","I miei prossimi allenamenti",,
|
||||
"Name","Nome",,
|
||||
"Nb Employee","Nb Dipendente",,
|
||||
"Nb Hours","Nb Ore",,
|
||||
"Nb of open jobs","Nb di posti di lavoro aperti",,
|
||||
"Nb of people hired","Numero di persone assunte",,
|
||||
"Nb of training hours per month","Nb di ore di formazione al mese",,
|
||||
"Nb. hours per category","N. ore per categoria",,
|
||||
"Nb. hours per training","Nb. ore per allenamento",,
|
||||
"Nb. of trained employee per category","Numero di dipendenti formati per categoria",,
|
||||
"New appraisal","Nuova valutazione",,
|
||||
"Number of hours","Numero di ore",,
|
||||
"Number of registredred to the session","Numero di iscritti alla sessione",,
|
||||
"Objectives","Obiettivi",,
|
||||
"On hold","In attesa",,
|
||||
"Open","Aperto",,
|
||||
"Opened","Aperto",,
|
||||
"Other skills","Altre competenze",,
|
||||
"Photo","Foto",,
|
||||
"Planned","Pianificato",,
|
||||
"Position Status","Posizione Stato",,
|
||||
"Primary Address","Indirizzo primario",,
|
||||
"Profile wanted","Profilo desiderato",,
|
||||
"Program","Programma",,
|
||||
"Proposed salary","Stipendio proposto",,
|
||||
"Publication Date","Data di pubblicazione",,
|
||||
"Rating","Valutazione",,
|
||||
"Realize","Realizzare",,
|
||||
"Reason not hired","Motivo non assunto",,
|
||||
"Recruitment","Il reclutamento",,
|
||||
"Referred by","Riferito da",,
|
||||
"Register training","Registrare la formazione",,
|
||||
"Rejected","Rifiutato",,
|
||||
"Requested","Richiesto",,
|
||||
"Required training","Formazione richiesta",,
|
||||
"Responsible","Responsabile",,
|
||||
"Reviewer","Revisore",,
|
||||
"Salary","Stipendio",,
|
||||
"Schedule Event","Pianificare l'evento",,
|
||||
"Send","Inviare",,
|
||||
"Sent","Inviato",,
|
||||
"Sequence","Sequenza",,
|
||||
"Session","Sessione",,
|
||||
"Skill","Abilità",,
|
||||
"Skills","Competenze",,
|
||||
"Skills tag","Etichetta delle abilità",,
|
||||
"Source","Fonte",,
|
||||
"Starting date","Data di inizio",,
|
||||
"Status","Stato",,
|
||||
"Tag skill","Abilità dei tag",,
|
||||
"Tag skills","Abilità dei tag",,
|
||||
"Technicien","Tecnica",,
|
||||
"Title","Titolo",,
|
||||
"To","A",,
|
||||
"To date","Ad oggi",,
|
||||
"Tools","Strumenti",,
|
||||
"Total","Totale",,
|
||||
"Training","Formazione",,
|
||||
"Training Categories","Categorie di formazione",,
|
||||
"Training Category","Categoria di formazione",,
|
||||
"Training Register","Registro della formazione",,
|
||||
"Training completed","Formazione completata",,
|
||||
"Training dashboard","Cruscotto di formazione",,
|
||||
"Training dates must be under training session date range.","Le date di formazione devono essere nell'intervallo di date delle sessioni di formazione.",,
|
||||
"Training per category","Formazione per categoria",,
|
||||
"Training register","Registro della formazione",,
|
||||
"Training registers","Registri della formazione",,
|
||||
"Training session","Sessione di formazione",,
|
||||
"Training sessions","Sessioni di formazione",,
|
||||
"Training skills","Competenze formative",,
|
||||
"Trainings","Formazione",,
|
||||
"Type of appraisal","Tipo di valutazione",,
|
||||
"Upcoming appraisal","Prossima valutazione",,
|
||||
"Upcoming appraisals of all employees of a team","Prossime valutazioni di tutti i dipendenti di una squadra",,
|
||||
"Upcoming trainings of all employees of a team","Prossimi corsi di formazione di tutti i dipendenti di una squadra",,
|
||||
"Work experience","Esperienza lavorativa",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","valore:Valutazione",,
|
||||
"value:Recruitment","valore:Reclutamento",,
|
||||
"value:Training","valore:Formazione",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 jaar",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 jaar",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 jaar",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 jaar",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Er wordt een nieuw medewerkersformulier aangemaakt. Bevestigt u de creatie ?",,
|
||||
"Accept/plan","Accepteer/plan",,
|
||||
"Address","Adres",,
|
||||
"All applications","Alle toepassingen",,
|
||||
"All trainings","Alle opleidingen",,
|
||||
"Application Information","Informatie over de toepassing",,
|
||||
"Applications",,,
|
||||
"Applied job","Toegepaste functie",,
|
||||
"Appraisal","Beoordeling",,
|
||||
"Appraisal cancelled","Beoordeling geannuleerd",,
|
||||
"Appraisal draft","Beoordelingsontwerp",,
|
||||
"Appraisal filters","Beoordelingsfilters",,
|
||||
"Appraisal realized","Beoordeling gerealiseerd",,
|
||||
"Appraisal sent","Beoordeling verzonden",,
|
||||
"Appraisal template","Beoordelingssjabloon",,
|
||||
"Appraisal templates","Beoordeling sjablonen",,
|
||||
"Appraisal type","Beoordelingstype",,
|
||||
"Appraisal types","Beoordelingstypes",,
|
||||
"Appraisals","Taxaties",,
|
||||
"Appreciation","Waardering",,
|
||||
"Availability from","Beschikbaarheid van",,
|
||||
"Business sectors","Bedrijfstakken",,
|
||||
"Cadre","Kadaster",,
|
||||
"Calendar",,,
|
||||
"Cancel","Annuleren",,
|
||||
"Canceled","Geannuleerd",,
|
||||
"Cancelled","Geannuleerd",,
|
||||
"Categories","Categorieën",,
|
||||
"Category","Categorie",,
|
||||
"Close",,,
|
||||
"Close session","Sessie sluiten",,
|
||||
"Closed","Gesloten",,
|
||||
"Closed job offers",,,
|
||||
"Code","Code",,
|
||||
"Company","Bedrijf",,
|
||||
"Completed","Voltooid",,
|
||||
"Completed trainings of all employees of a team","Voltooide trainingen van alle medewerkers van een team",,
|
||||
"Configuration","Configuratie",,
|
||||
"Contact","Contact",,
|
||||
"Contact details","Contactgegevens",,
|
||||
"Contract","Contract",,
|
||||
"Contract type","Soort contract",,
|
||||
"Create","Creëer",,
|
||||
"Create Appraisal(Select Employees)","Beoordeling maken (Selecteer medewerkers)",,
|
||||
"Create Appraisals","Beoordelingen maken",,
|
||||
"Create Appraisals(Select Employees)","Beoordelingen maken (Selecteer Medewerkers)",,
|
||||
"Create a job application","Creëer een sollicitatie",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Dashboard",,
|
||||
"Date of application","Datum van toepassing",,
|
||||
"Deadline","Uiterste datum",,
|
||||
"Department","Afdeling",,
|
||||
"Description","Beschrijving",,
|
||||
"Draft","Ontwerp",,
|
||||
"Education level","Opleidingsniveau",,
|
||||
"Email","E-mail",,
|
||||
"Employee","Werknemer",,
|
||||
"Employee hired","Werknemer aangenomen",,
|
||||
"Employee registred","Werknemer geregistreerd",,
|
||||
"Employees","Medewerkers",,
|
||||
"Events","Evenementen",,
|
||||
"Expected salary","Verwacht salaris",,
|
||||
"Experience","Ervaring",,
|
||||
"Experience skills","Ervaring",,
|
||||
"Fax","Fax",,
|
||||
"First name","Voornaam",,
|
||||
"Fixed phone","Vaste telefoon",,
|
||||
"From","Van",,
|
||||
"From date","Vanaf datum",,
|
||||
"Full name","Volledige naam",,
|
||||
"Hire","Verhuur",,
|
||||
"Hired","Ingehuurd",,
|
||||
"Hiring Stage","Verhuur Stadium",,
|
||||
"Hiring stage","Verhuur fase",,
|
||||
"Invalid dates. From date must be before to date.","Ongeldige data. Van datum moet voor tot datum zijn.",,
|
||||
"Is template","Is sjabloon",,
|
||||
"Job Application","Sollicitatie",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Vacature-informatie",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Sollicitatie",,
|
||||
"Job applications","Sollicitaties",,
|
||||
"Job description","Functiebeschrijving",,
|
||||
"Job email","Vacature e-mail",,
|
||||
"Job position","Functie",,
|
||||
"Job positions","Vacatures",,
|
||||
"Job reference","Functiebeschrijving",,
|
||||
"Job title","Functie",,
|
||||
"Last email sync id","Laatste e-mail sync-id",,
|
||||
"Last name","Achternaam",,
|
||||
"Level of education","Opleidingsniveau",,
|
||||
"LinkedIn profile","LinkedIn profiel",,
|
||||
"Location","Ligging",,
|
||||
"Mandatory training","Verplichte opleiding",,
|
||||
"Mobile phone","Mobiele telefoon",,
|
||||
"Month","Maand",,
|
||||
"My completed appraisals","Mijn ingevulde beoordelingen",,
|
||||
"My completed trainings","Mijn afgeronde trainingen",,
|
||||
"My traning filters","Mijn traning filters",,
|
||||
"My upcoming appraisal","Mijn komende beoordeling",,
|
||||
"My upcoming trainings","Mijn komende trainingen",,
|
||||
"Name","Naam",,
|
||||
"Nb Employee","Nb Werknemer",,
|
||||
"Nb Hours","Aantal uren",,
|
||||
"Nb of open jobs","Aantal openstaande banen",,
|
||||
"Nb of people hired","Aantal ingehuurde personen",,
|
||||
"Nb of training hours per month","Aantal opleidingsuren per maand",,
|
||||
"Nb. hours per category","Aantal uren per categorie",,
|
||||
"Nb. hours per training","Aantal uren per training",,
|
||||
"Nb. of trained employee per category","Aantal opgeleide medewerkers per categorie",,
|
||||
"New appraisal","Nieuwe beoordeling",,
|
||||
"Number of hours","Aantal uren",,
|
||||
"Number of registredred to the session","Aantal ingeschrevenen voor de sessie",,
|
||||
"Objectives","Doelstellingen",,
|
||||
"On hold","In de wachtstand",,
|
||||
"Open","Open",,
|
||||
"Opened","Geopend",,
|
||||
"Other skills","Andere vaardigheden",,
|
||||
"Photo","Foto",,
|
||||
"Planned","Gepland",,
|
||||
"Position Status","Positie Status",,
|
||||
"Primary Address","Primair adres",,
|
||||
"Profile wanted","Profiel gezocht",,
|
||||
"Program","Programma",,
|
||||
"Proposed salary","Voorgesteld salaris",,
|
||||
"Publication Date","Publicatie Datum",,
|
||||
"Rating","Waardering",,
|
||||
"Realize","Realiseren",,
|
||||
"Reason not hired","Reden niet gehuurd",,
|
||||
"Recruitment","Rekrutering",,
|
||||
"Referred by","Verwezen door",,
|
||||
"Register training","Inschrijftraining",,
|
||||
"Rejected","Afgewezen",,
|
||||
"Requested","Gevraagd",,
|
||||
"Required training","Vereiste opleiding",,
|
||||
"Responsible","Verantwoordelijk",,
|
||||
"Reviewer","Reviewer",,
|
||||
"Salary","Salaris",,
|
||||
"Schedule Event","Evenement plannen",,
|
||||
"Send","Verzenden",,
|
||||
"Sent","Verzonden",,
|
||||
"Sequence","Volgorde",,
|
||||
"Session","Sessie",,
|
||||
"Skill","Behendigheid",,
|
||||
"Skills","Vaardigheden",,
|
||||
"Skills tag","Vaardigheden tag",,
|
||||
"Source","Bron",,
|
||||
"Starting date","Startdatum",,
|
||||
"Status","Status",,
|
||||
"Tag skill","Tag vaardigheid",,
|
||||
"Tag skills","Tag vaardigheden",,
|
||||
"Technicien","Technicien",,
|
||||
"Title","Titel",,
|
||||
"To","Naar",,
|
||||
"To date","Tot op heden",,
|
||||
"Tools","Gereedschap",,
|
||||
"Total","Totaal",,
|
||||
"Training","Opleiding",,
|
||||
"Training Categories","Opleiding Categorieën",,
|
||||
"Training Category","Categorie Opleiding",,
|
||||
"Training Register","Opleidingsregister",,
|
||||
"Training completed","Opleiding voltooid",,
|
||||
"Training dashboard","Opleiding dashboard",,
|
||||
"Training dates must be under training session date range.","Trainingsdata moeten binnen het bereik van de datum van de trainingssessie vallen.",,
|
||||
"Training per category","Opleiding per categorie",,
|
||||
"Training register","Opleidingsregister",,
|
||||
"Training registers","Opleidingsregisters",,
|
||||
"Training session","Opleidingssessie",,
|
||||
"Training sessions","Opleidingen",,
|
||||
"Training skills","Opleidingsvaardigheden",,
|
||||
"Trainings","Opleidingen",,
|
||||
"Type of appraisal","Soort beoordeling",,
|
||||
"Upcoming appraisal","Komende beoordeling",,
|
||||
"Upcoming appraisals of all employees of a team","Komende evaluaties van alle medewerkers van een team",,
|
||||
"Upcoming trainings of all employees of a team","Komende trainingen van alle medewerkers van een team",,
|
||||
"Work experience","Werkervaring",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","waarde: Beoordeling",,
|
||||
"value:Recruitment","waarde: Rekrutering",,
|
||||
"value:Training","waarde:Opleiding",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 lat",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 lat",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 lat",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 lat",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Zostanie utworzony nowy formularz pracowniczy. Czy potwierdzasz utworzenie?",,
|
||||
"Accept/plan","Akceptacja/plan",,
|
||||
"Address","Adres",,
|
||||
"All applications","Wszystkie zastosowania",,
|
||||
"All trainings","Wszystkie szkolenia",,
|
||||
"Application Information","Informacje dotyczące aplikacji",,
|
||||
"Applications",,,
|
||||
"Applied job","Praca stosowana",,
|
||||
"Appraisal","Ocena",,
|
||||
"Appraisal cancelled","Wycena anulowana",,
|
||||
"Appraisal draft","Projekt oceny",,
|
||||
"Appraisal filters","Filtry oceniające",,
|
||||
"Appraisal realized","Ocena zrealizowana",,
|
||||
"Appraisal sent","Przesłana ocena",,
|
||||
"Appraisal template","Wzór oceny",,
|
||||
"Appraisal templates","Szablony oceny",,
|
||||
"Appraisal type","Typ oceny",,
|
||||
"Appraisal types","Rodzaje ocen",,
|
||||
"Appraisals","Oceny",,
|
||||
"Appreciation","Ocena",,
|
||||
"Availability from","Dostępność od",,
|
||||
"Business sectors","Sektory gospodarki",,
|
||||
"Cadre","Kadr",,
|
||||
"Calendar",,,
|
||||
"Cancel","Anulowanie",,
|
||||
"Canceled","Anulowany",,
|
||||
"Cancelled","Anulowane",,
|
||||
"Categories","Kategorie",,
|
||||
"Category","Kategoria",,
|
||||
"Close",,,
|
||||
"Close session","Sesja zamknięta",,
|
||||
"Closed","Zamknięta",,
|
||||
"Closed job offers",,,
|
||||
"Code","Kod",,
|
||||
"Company","Firma",,
|
||||
"Completed","Wypełnione",,
|
||||
"Completed trainings of all employees of a team","Ukończone szkolenia wszystkich pracowników zespołu",,
|
||||
"Configuration","Konfiguracja",,
|
||||
"Contact","Kontakt",,
|
||||
"Contact details","Dane kontaktowe",,
|
||||
"Contract","Kontrakt",,
|
||||
"Contract type","Rodzaj umowy",,
|
||||
"Create","Utworzyć",,
|
||||
"Create Appraisal(Select Employees)","Utwórz ocenę (wybierz pracowników)",,
|
||||
"Create Appraisals","Tworzenie ocen",,
|
||||
"Create Appraisals(Select Employees)","Tworzenie ocen (wybór pracowników)",,
|
||||
"Create a job application","Utwórz podanie o pracę",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Tablica rozdzielcza",,
|
||||
"Date of application","Data rozpoczęcia stosowania",,
|
||||
"Deadline","Ostateczny termin",,
|
||||
"Department","Departament",,
|
||||
"Description","Opis",,
|
||||
"Draft","Wstępny projekt",,
|
||||
"Education level","Poziom wykształcenia",,
|
||||
"Email","Poczta elektroniczna",,
|
||||
"Employee","Pracownik",,
|
||||
"Employee hired","Zatrudniony pracownik",,
|
||||
"Employee registred","Pracownik zarejestrowany",,
|
||||
"Employees","Pracownicy",,
|
||||
"Events","Wydarzenia",,
|
||||
"Expected salary","Przewidywane wynagrodzenie",,
|
||||
"Experience","Doświadczenie",,
|
||||
"Experience skills","Doświadczenie zawodowe",,
|
||||
"Fax","Faks",,
|
||||
"First name","Imię i nazwisko",,
|
||||
"Fixed phone","Telefon stacjonarny",,
|
||||
"From","Od",,
|
||||
"From date","Od daty",,
|
||||
"Full name","Pełne imię i nazwisko",,
|
||||
"Hire","Wynajem",,
|
||||
"Hired","Wynajęty",,
|
||||
"Hiring Stage","Etap wynajmu",,
|
||||
"Hiring stage","Etap zatrudniania",,
|
||||
"Invalid dates. From date must be before to date.","Nieważne daty. Od daty musi być wcześniejsza niż do daty.",,
|
||||
"Is template","Czy szablon jest szablonowy?",,
|
||||
"Job Application","Aplikacja pracy",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Informacje o ofercie pracy",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Aplikacja pracy",,
|
||||
"Job applications","Zastosowania w pracy",,
|
||||
"Job description","Opis stanowiska pracy",,
|
||||
"Job email","Wiadomość e-mail z informacją o pracy",,
|
||||
"Job position","Pozycja stanowiska pracy",,
|
||||
"Job positions","Stanowiska pracy",,
|
||||
"Job reference","Referencje do pracy",,
|
||||
"Job title","Tytuł pracy",,
|
||||
"Last email sync id","Ostatnia synchronizacja poczty elektronicznej",,
|
||||
"Last name","Nazwisko",,
|
||||
"Level of education","Poziom wykształcenia",,
|
||||
"LinkedIn profile","Profil LinkedIn",,
|
||||
"Location","Lokalizacja",,
|
||||
"Mandatory training","Obowiązkowe szkolenie",,
|
||||
"Mobile phone","Telefon komórkowy",,
|
||||
"Month","Miesiąc",,
|
||||
"My completed appraisals","Moje ukończone oceny",,
|
||||
"My completed trainings","Moje ukończone szkolenia",,
|
||||
"My traning filters","Moje filtry traningowe",,
|
||||
"My upcoming appraisal","Moja nadchodząca ocena",,
|
||||
"My upcoming trainings","Moje najbliższe szkolenia",,
|
||||
"Name","Nazwa",,
|
||||
"Nb Employee","Nb Pracownik",,
|
||||
"Nb Hours","Godziny Nb",,
|
||||
"Nb of open jobs","Nb otwartych miejsc pracy",,
|
||||
"Nb of people hired","Liczba zatrudnionych osób",,
|
||||
"Nb of training hours per month","Nb godzin szkoleniowych miesięcznie",,
|
||||
"Nb. hours per category","Nb. godziny dla każdej kategorii",,
|
||||
"Nb. hours per training","Nb. godzin na szkolenie",,
|
||||
"Nb. of trained employee per category","Nb. wyszkolonego pracownika według kategorii",,
|
||||
"New appraisal","Nowa ocena",,
|
||||
"Number of hours","Liczba godzin",,
|
||||
"Number of registredred to the session","Liczba zarejestrowanych uczestników sesji",,
|
||||
"Objectives","Cele",,
|
||||
"On hold","W stanie wstrzymania",,
|
||||
"Open","Otwarte",,
|
||||
"Opened","Otwarte",,
|
||||
"Other skills","Inne umiejętności",,
|
||||
"Photo","Zdjęcie",,
|
||||
"Planned","Planowane",,
|
||||
"Position Status","Położenie Status pozycji",,
|
||||
"Primary Address","Adres podstawowy",,
|
||||
"Profile wanted","Profil poszukiwany",,
|
||||
"Program","Program",,
|
||||
"Proposed salary","Proponowane wynagrodzenie",,
|
||||
"Publication Date","Publikacja Data publikacji",,
|
||||
"Rating","Klasyfikacja",,
|
||||
"Realize","Zrozumieć",,
|
||||
"Reason not hired","Powód nie zatrudniony",,
|
||||
"Recruitment","Rekrutacja",,
|
||||
"Referred by","Odsyłany przez",,
|
||||
"Register training","Zarejestruj szkolenie",,
|
||||
"Rejected","Odrzucony",,
|
||||
"Requested","Wnioskowany",,
|
||||
"Required training","Wymagane szkolenie",,
|
||||
"Responsible","Odpowiedzialny",,
|
||||
"Reviewer","Recenzent",,
|
||||
"Salary","Wynagrodzenie",,
|
||||
"Schedule Event","Harmonogram zdarzeń",,
|
||||
"Send","Wyślij",,
|
||||
"Sent","Wysłane",,
|
||||
"Sequence","Kolejność",,
|
||||
"Session","Sesja",,
|
||||
"Skill","Umiejętności",,
|
||||
"Skills","Umiejętności",,
|
||||
"Skills tag","Znacznik umiejętności",,
|
||||
"Source","Źródło: Opracowanie własne.",,
|
||||
"Starting date","Data początkowa",,
|
||||
"Status","Status",,
|
||||
"Tag skill","Umiejętności oznaczania",,
|
||||
"Tag skills","Umiejętności oznaczania",,
|
||||
"Technicien","Technika",,
|
||||
"Title","Tytuł",,
|
||||
"To","Do",,
|
||||
"To date","Do dnia dzisiejszego",,
|
||||
"Tools","Narzędzia",,
|
||||
"Total","Ogółem",,
|
||||
"Training","Szkolenia",,
|
||||
"Training Categories","Kategorie szkoleń",,
|
||||
"Training Category","Kategoria szkolenia",,
|
||||
"Training Register","Rejestr szkoleń",,
|
||||
"Training completed","Ukończone szkolenie",,
|
||||
"Training dashboard","Szkoleniowa deska rozdzielcza",,
|
||||
"Training dates must be under training session date range.","Daty szkoleń muszą być podane w zakresie dat sesji szkoleniowych.",,
|
||||
"Training per category","Szkolenie według kategorii",,
|
||||
"Training register","Rejestr szkoleń",,
|
||||
"Training registers","Rejestry szkoleń",,
|
||||
"Training session","Sesja szkoleniowa",,
|
||||
"Training sessions","Sesje szkoleniowe",,
|
||||
"Training skills","Umiejętności szkoleniowe",,
|
||||
"Trainings","Szkolenia",,
|
||||
"Type of appraisal","Rodzaj oceny",,
|
||||
"Upcoming appraisal","Zbliżająca się ocena",,
|
||||
"Upcoming appraisals of all employees of a team","Zbliżające się oceny wszystkich pracowników zespołu",,
|
||||
"Upcoming trainings of all employees of a team","Nadchodzące szkolenia wszystkich pracowników zespołu",,
|
||||
"Work experience","Doświadczenie zawodowe",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","wartość: ocena",,
|
||||
"value:Recruitment","wartość: Rekrutacja",,
|
||||
"value:Training","wartość: Szkolenie",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 anos",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 anos",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 anos",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 anos",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkingin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Um novo formulário de empregado será criado. Você confirma a criação?",,
|
||||
"Accept/plan","Aceitar/planejar",,
|
||||
"Address","Morada",,
|
||||
"All applications","Todas as aplicações",,
|
||||
"All trainings","Todos os treinamentos",,
|
||||
"Application Information","Informações sobre a aplicação",,
|
||||
"Applications",,,
|
||||
"Applied job","Emprego aplicado",,
|
||||
"Appraisal","Avaliação",,
|
||||
"Appraisal cancelled","Avaliação cancelada",,
|
||||
"Appraisal draft","Esboço de avaliação",,
|
||||
"Appraisal filters","Filtros de avaliação",,
|
||||
"Appraisal realized","Avaliação realizada",,
|
||||
"Appraisal sent","Avaliação enviada",,
|
||||
"Appraisal template","Modelo de avaliação",,
|
||||
"Appraisal templates","Modelos de avaliação",,
|
||||
"Appraisal type","Tipo de avaliação",,
|
||||
"Appraisal types","Tipos de avaliação",,
|
||||
"Appraisals","Avaliações",,
|
||||
"Appreciation","Apreciação",,
|
||||
"Availability from","Disponibilidade de",,
|
||||
"Business sectors","Sectores de actividade",,
|
||||
"Cadre","Cadre",,
|
||||
"Calendar",,,
|
||||
"Cancel","Cancelar",,
|
||||
"Canceled","Cancelado",,
|
||||
"Cancelled","Cancelado",,
|
||||
"Categories","Categorias",,
|
||||
"Category","Categoria: Categoria",,
|
||||
"Close",,,
|
||||
"Close session","Fechar sessão",,
|
||||
"Closed","Fechado",,
|
||||
"Closed job offers",,,
|
||||
"Code","Código",,
|
||||
"Company","Empresa",,
|
||||
"Completed","Concluído",,
|
||||
"Completed trainings of all employees of a team","Treinamentos completos de todos os funcionários de uma equipe",,
|
||||
"Configuration","Configuração",,
|
||||
"Contact","Contato",,
|
||||
"Contact details","Detalhes de contato",,
|
||||
"Contract","Contrato",,
|
||||
"Contract type","Tipo de contrato",,
|
||||
"Create","Criar",,
|
||||
"Create Appraisal(Select Employees)","Criar avaliação (selecionar empregados)",,
|
||||
"Create Appraisals","Criar avaliações",,
|
||||
"Create Appraisals(Select Employees)","Criação de avaliações (selecionar empregados)",,
|
||||
"Create a job application","Criar uma candidatura a um emprego",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Painel de instrumentos",,
|
||||
"Date of application","Data de aplicação",,
|
||||
"Deadline","Prazo de entrega",,
|
||||
"Department","Departamento",,
|
||||
"Description","Descrição do produto",,
|
||||
"Draft","Rascunho",,
|
||||
"Education level","Nível de instrução",,
|
||||
"Email","Email",,
|
||||
"Employee","Empregado",,
|
||||
"Employee hired","Empregado contratado",,
|
||||
"Employee registred","Empregado cadastrado",,
|
||||
"Employees","Empregados",,
|
||||
"Events","Eventos",,
|
||||
"Expected salary","Salário esperado",,
|
||||
"Experience","Experiência",,
|
||||
"Experience skills","Experiência",,
|
||||
"Fax","Fax",,
|
||||
"First name","Nome próprio",,
|
||||
"Fixed phone","Telefone fixo",,
|
||||
"From","De",,
|
||||
"From date","Data de início",,
|
||||
"Full name","Nome completo",,
|
||||
"Hire","Contratar",,
|
||||
"Hired","Contratados",,
|
||||
"Hiring Stage","Fase de Contratação",,
|
||||
"Hiring stage","Fase de contratação",,
|
||||
"Invalid dates. From date must be before to date.","Datas inválidas. A data de início deve ser anterior à data.",,
|
||||
"Is template","É modelo",,
|
||||
"Job Application","Candidatura de emprego",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Informações sobre ofertas de emprego",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Pedido de emprego",,
|
||||
"Job applications","Pedidos de emprego",,
|
||||
"Job description","Descrição do trabalho",,
|
||||
"Job email","E-mail do emprego",,
|
||||
"Job position","Cargo",,
|
||||
"Job positions","Posições de trabalho",,
|
||||
"Job reference","Referência do emprego",,
|
||||
"Job title","Cargo",,
|
||||
"Last email sync id","Último email id de sincronização",,
|
||||
"Last name","Sobrenome",,
|
||||
"Level of education","Nível de educação",,
|
||||
"LinkedIn profile","Perfil LinkedIn",,
|
||||
"Location","Localização",,
|
||||
"Mandatory training","Formação obrigatória",,
|
||||
"Mobile phone","Telemóvel",,
|
||||
"Month","Mês",,
|
||||
"My completed appraisals","Minhas avaliações concluídas",,
|
||||
"My completed trainings","Meus treinamentos concluídos",,
|
||||
"My traning filters","Meus filtros de traning",,
|
||||
"My upcoming appraisal","Minha próxima avaliação",,
|
||||
"My upcoming trainings","Meus próximos treinamentos",,
|
||||
"Name","Nome e Sobrenome",,
|
||||
"Nb Employee","Nb Empregado",,
|
||||
"Nb Hours","Nb Horas",,
|
||||
"Nb of open jobs","Nb de empregos abertos",,
|
||||
"Nb of people hired","Nb de pessoas contratadas",,
|
||||
"Nb of training hours per month","Nb de horas de treinamento por mês",,
|
||||
"Nb. hours per category","Nb. horas por categoria",,
|
||||
"Nb. hours per training","Nb. horas por formação",,
|
||||
"Nb. of trained employee per category","Nb. de empregado treinado por categoria",,
|
||||
"New appraisal","Nova avaliação",,
|
||||
"Number of hours","Número de horas",,
|
||||
"Number of registredred to the session","Número de inscritos na sessão",,
|
||||
"Objectives","Objetivos",,
|
||||
"On hold","Em espera",,
|
||||
"Open","Aberto",,
|
||||
"Opened","Aberto",,
|
||||
"Other skills","Outras competências",,
|
||||
"Photo","Fotos",,
|
||||
"Planned","Planejado",,
|
||||
"Position Status","Status da posição",,
|
||||
"Primary Address","Endereço principal",,
|
||||
"Profile wanted","Perfil desejado",,
|
||||
"Program","Programação",,
|
||||
"Proposed salary","Salário proposto",,
|
||||
"Publication Date","Data de Publicação",,
|
||||
"Rating","Classificação",,
|
||||
"Realize","Realizar",,
|
||||
"Reason not hired","Motivo não contratado",,
|
||||
"Recruitment","Recrutamento",,
|
||||
"Referred by","Referido por",,
|
||||
"Register training","Registrar treinamento",,
|
||||
"Rejected","Rejeitado",,
|
||||
"Requested","Solicitado",,
|
||||
"Required training","Formação necessária",,
|
||||
"Responsible","Responsável",,
|
||||
"Reviewer","Revisor",,
|
||||
"Salary","Salário",,
|
||||
"Schedule Event","Agendar Evento",,
|
||||
"Send","Enviar",,
|
||||
"Sent","Enviado",,
|
||||
"Sequence","Seqüência",,
|
||||
"Session","Sessão",,
|
||||
"Skill","Habilidade",,
|
||||
"Skills","Competências",,
|
||||
"Skills tag","Etiqueta de competências",,
|
||||
"Source","Origem",,
|
||||
"Starting date","Data de início",,
|
||||
"Status","Estado",,
|
||||
"Tag skill","Marcar habilidade",,
|
||||
"Tag skills","Competências de tags",,
|
||||
"Technicien","Técnico",,
|
||||
"Title","Título",,
|
||||
"To","Para",,
|
||||
"To date","Até à data",,
|
||||
"Tools","Ferramentas",,
|
||||
"Total","Total",,
|
||||
"Training","Treinamentos",,
|
||||
"Training Categories","Categorias de Treinamento",,
|
||||
"Training Category","Categoria de treinamento",,
|
||||
"Training Register","Registro de Treinamento",,
|
||||
"Training completed","Formação concluída",,
|
||||
"Training dashboard","Painel de treino",,
|
||||
"Training dates must be under training session date range.","As datas de treinamento devem estar dentro do intervalo de datas da sessão de treinamento.",,
|
||||
"Training per category","Formação por categoria",,
|
||||
"Training register","Registro de treinamento",,
|
||||
"Training registers","Registos de formação",,
|
||||
"Training session","Sessão de treinamento",,
|
||||
"Training sessions","Sessões de treinamento",,
|
||||
"Training skills","Competências de formação",,
|
||||
"Trainings","Treinamentos",,
|
||||
"Type of appraisal","Tipo de avaliação",,
|
||||
"Upcoming appraisal","Próxima avaliação",,
|
||||
"Upcoming appraisals of all employees of a team","Próximas avaliações de todos os funcionários de uma equipe",,
|
||||
"Upcoming trainings of all employees of a team","Próximos treinamentos de todos os funcionários de uma equipe",,
|
||||
"Work experience","Experiência de trabalho",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","valor:Avaliação",,
|
||||
"value:Recruitment","valor:Recrutamento",,
|
||||
"value:Training","valor:Formação",,
|
||||
|
@ -0,0 +1,198 @@
|
||||
"key","message","comment","context"
|
||||
"+10 years","+10 лет",,
|
||||
"0 %",,,
|
||||
"0-2 years","0-2 года",,
|
||||
"10 %",,,
|
||||
"100 %",,,
|
||||
"2-5 years","2-5 лет",,
|
||||
"20 %",,,
|
||||
"30 %",,,
|
||||
"40 %",,,
|
||||
"5-10 years","5-10 лет",,
|
||||
"50 %",,,
|
||||
"60 %",,,
|
||||
"70 %",,,
|
||||
"80 %",,,
|
||||
"90 %",,,
|
||||
"<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />","<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />",,
|
||||
"A new employee form will be created. Do you confirm the creation ?","Будет создана новая форма работника. Вы подтверждаете создание?",,
|
||||
"Accept/plan","Принять/планировать",,
|
||||
"Address","Адрес",,
|
||||
"All applications","Все приложения",,
|
||||
"All trainings","Все тренинги",,
|
||||
"Application Information","Информация о применении",,
|
||||
"Applications",,,
|
||||
"Applied job","Прикладная работа",,
|
||||
"Appraisal","Оценка",,
|
||||
"Appraisal cancelled","Отмена оценки",,
|
||||
"Appraisal draft","Оценочный проект",,
|
||||
"Appraisal filters","Оценочные фильтры",,
|
||||
"Appraisal realized","Оценка выполнена",,
|
||||
"Appraisal sent","Отправлено оценочное письмо",,
|
||||
"Appraisal template","Шаблон оценки",,
|
||||
"Appraisal templates","Шаблоны оценки",,
|
||||
"Appraisal type","Тип оценки",,
|
||||
"Appraisal types","Виды оценки",,
|
||||
"Appraisals","Оценки",,
|
||||
"Appreciation","Признательность",,
|
||||
"Availability from","Доступность по адресу",,
|
||||
"Business sectors","Бизнес-секторы",,
|
||||
"Cadre","Кадр",,
|
||||
"Calendar",,,
|
||||
"Cancel","Отмена",,
|
||||
"Canceled","Отмена",,
|
||||
"Cancelled","Отменяется",,
|
||||
"Categories","Категории",,
|
||||
"Category","Категория",,
|
||||
"Close",,,
|
||||
"Close session","Закрытое заседание",,
|
||||
"Closed","Закрытый",,
|
||||
"Closed job offers",,,
|
||||
"Code","Код",,
|
||||
"Company","Компания",,
|
||||
"Completed","Завершено",,
|
||||
"Completed trainings of all employees of a team","Проведенные тренинги для всех сотрудников команды",,
|
||||
"Configuration","Конфигурация",,
|
||||
"Contact","Контакт",,
|
||||
"Contact details","Контактная информация",,
|
||||
"Contract","Контракт",,
|
||||
"Contract type","Тип контракта",,
|
||||
"Create","Создать",,
|
||||
"Create Appraisal(Select Employees)","Создать аттестацию (Отбор сотрудников)",,
|
||||
"Create Appraisals","Создать Оценки",,
|
||||
"Create Appraisals(Select Employees)","Создать аттестацию (отдельные сотрудники)",,
|
||||
"Create a job application","Создать приложение для создания рабочих мест",,
|
||||
"Current applications",,,
|
||||
"Current job offers",,,
|
||||
"Dashboard","Приборная панель",,
|
||||
"Date of application","Дата подачи заявки",,
|
||||
"Deadline","Крайний срок",,
|
||||
"Department","Департамент",,
|
||||
"Description","Описание",,
|
||||
"Draft","Проект",,
|
||||
"Education level","Уровень образования",,
|
||||
"Email","Электронная почта",,
|
||||
"Employee","Сотрудник",,
|
||||
"Employee hired","Наемный работник",,
|
||||
"Employee registred","Зарегистрированный сотрудник",,
|
||||
"Employees","Сотрудники",,
|
||||
"Events","События",,
|
||||
"Expected salary","Ожидаемая зарплата",,
|
||||
"Experience","Опыт",,
|
||||
"Experience skills","Опыт работы",,
|
||||
"Fax","Факс",,
|
||||
"First name","Имя",,
|
||||
"Fixed phone","Стационарный телефон",,
|
||||
"From","От",,
|
||||
"From date","С даты",,
|
||||
"Full name","Полное имя",,
|
||||
"Hire","Прокат",,
|
||||
"Hired","Нанятый",,
|
||||
"Hiring Stage","Этап найма",,
|
||||
"Hiring stage","Стадия найма",,
|
||||
"Invalid dates. From date must be before to date.","Недействительные даты. С даты должно быть до сегодняшнего дня.",,
|
||||
"Is template","это шаблон",,
|
||||
"Job Application","Заявление на работу",,
|
||||
"Job Application Filters",,,
|
||||
"Job Offer Information","Информация о предложении работы",,
|
||||
"Job Position Filters",,,
|
||||
"Job application","Заявление на работу",,
|
||||
"Job applications","Заявления о приеме на работу",,
|
||||
"Job description","Описание должности",,
|
||||
"Job email","Электронная почта с вакансии",,
|
||||
"Job position","Должность",,
|
||||
"Job positions","Вакансии",,
|
||||
"Job reference","Информация о работе",,
|
||||
"Job title","Должность",,
|
||||
"Last email sync id","Последний идентификатор синхронизации электронной почты",,
|
||||
"Last name","Фамилия",,
|
||||
"Level of education","Уровень образования",,
|
||||
"LinkedIn profile","Профиль LinkedIn",,
|
||||
"Location","Местоположение",,
|
||||
"Mandatory training","Обязательное обучение",,
|
||||
"Mobile phone","Мобильный телефон",,
|
||||
"Month","Месяц",,
|
||||
"My completed appraisals","Мои завершенные оценки",,
|
||||
"My completed trainings","Мои завершенные тренинги",,
|
||||
"My traning filters","Мои фильтры для трансляции",,
|
||||
"My upcoming appraisal","Моя предстоящая оценка",,
|
||||
"My upcoming trainings","Мои предстоящие тренировки",,
|
||||
"Name","Имя",,
|
||||
"Nb Employee","Nb Работник",,
|
||||
"Nb Hours","НБ Часы",,
|
||||
"Nb of open jobs","Nb открытых вакансий",,
|
||||
"Nb of people hired","Nb людей, нанятых на работу.",,
|
||||
"Nb of training hours per month","Nb часов обучения в месяц",,
|
||||
"Nb. hours per category","Кол-во часов по категориям",,
|
||||
"Nb. hours per training","Нб. часов на тренинг",,
|
||||
"Nb. of trained employee per category","Количество обученных сотрудников в штуках по категориям",,
|
||||
"New appraisal","Новая оценка",,
|
||||
"Number of hours","Количество часов",,
|
||||
"Number of registredred to the session","Число зарегистрированных участников сессии",,
|
||||
"Objectives","Цели",,
|
||||
"On hold","На линии ожидания",,
|
||||
"Open","Открыть",,
|
||||
"Opened","Открыт",,
|
||||
"Other skills","Другие навыки",,
|
||||
"Photo","Фото",,
|
||||
"Planned","Запланированный",,
|
||||
"Position Status","Статус позиции",,
|
||||
"Primary Address","Основной адрес",,
|
||||
"Profile wanted","Профиль разыскивается",,
|
||||
"Program","Программа",,
|
||||
"Proposed salary","Предлагаемая зарплата",,
|
||||
"Publication Date","Дата публикации",,
|
||||
"Rating","Рейтинг",,
|
||||
"Realize","Понять.",,
|
||||
"Reason not hired","Причина, по которой не нанята.",,
|
||||
"Recruitment","Набор персонала",,
|
||||
"Referred by","Ссылаясь на",,
|
||||
"Register training","Зарегистрироваться на тренинг",,
|
||||
"Rejected","Отклонено",,
|
||||
"Requested","Запрошенный",,
|
||||
"Required training","Необходимая подготовка",,
|
||||
"Responsible","Ответственный",,
|
||||
"Reviewer","Рецензент",,
|
||||
"Salary","Зарплата",,
|
||||
"Schedule Event","Расписание Событие",,
|
||||
"Send","Отправить",,
|
||||
"Sent","Отправлено",,
|
||||
"Sequence","Последовательность",,
|
||||
"Session","Заседание",,
|
||||
"Skill","Умение",,
|
||||
"Skills","Навыки",,
|
||||
"Skills tag","Метка навыков",,
|
||||
"Source","Источник",,
|
||||
"Starting date","Дата начала",,
|
||||
"Status","Статус",,
|
||||
"Tag skill","Тег навык",,
|
||||
"Tag skills","Теги навыков",,
|
||||
"Technicien","Техничиен",,
|
||||
"Title","Название",,
|
||||
"To","К",,
|
||||
"To date","На сегодняшний день",,
|
||||
"Tools","Инструменты",,
|
||||
"Total","Всего",,
|
||||
"Training","Обучение",,
|
||||
"Training Categories","Категории обучения",,
|
||||
"Training Category","Категория обучения",,
|
||||
"Training Register","Учебный реестр",,
|
||||
"Training completed","Обучение завершено",,
|
||||
"Training dashboard","Приборная панель для тренировок",,
|
||||
"Training dates must be under training session date range.","Даты проведения тренинга должны находиться в пределах диапазона дат проведения тренинга.",,
|
||||
"Training per category","Обучение по категориям",,
|
||||
"Training register","Учебный регистр",,
|
||||
"Training registers","Учебные реестры",,
|
||||
"Training session","Учебная сессия",,
|
||||
"Training sessions","Учебные занятия",,
|
||||
"Training skills","Учебные навыки",,
|
||||
"Trainings","Тренинги",,
|
||||
"Type of appraisal","Тип оценки",,
|
||||
"Upcoming appraisal","Предстоящая оценка",,
|
||||
"Upcoming appraisals of all employees of a team","Предстоящие аттестации всех сотрудников команды",,
|
||||
"Upcoming trainings of all employees of a team","Предстоящие тренинги для всех сотрудников команды",,
|
||||
"Work experience","Опыт работы",,
|
||||
"user@mydomain.com",,,
|
||||
"value:Appraisal","Стоимость:Оценка",,
|
||||
"value:Recruitment","стоимость:Вербовка",,
|
||||
"value:Training","Ценность:Обучение",,
|
||||
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="appraisal_role.csv" separator=";" type="com.axelor.auth.db.Role" search="self.name = :name"/>
|
||||
|
||||
<input file="appraisal_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="appraisal_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true">
|
||||
<bind column="roles" to="roles" search="self.name in :roles" eval="roles.split('\\|') as List"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,7 @@
|
||||
"name";"roles"
|
||||
"hr-root";"Appraisal Manager|Appraisal User|Appraisal Read"
|
||||
"appraisal-root";"Appraisal Manager|Appraisal User|Appraisal Read"
|
||||
"appraisal-all-appraisals";"Appraisal Manager|Appraisal User|Appraisal Read"
|
||||
"appraisal-template-appraisals";"Appraisal Manager|Appraisal User|Appraisal Read"
|
||||
"appraisal-config";"Appraisal Manager"
|
||||
"appraisal-config-appraisal-type";"Appraisal Manager"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.talent.Appraisal.r";"com.axelor.apps.talent.db.Appraisal";"x";;;;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Appraisal Read"
|
||||
"perm.talent.AppraisalType.r";"com.axelor.apps.talent.db.AppraisalType";"x";;;;;;;"Appraisal Read"
|
||||
"perm.talent.Appraisal.rwc";"com.axelor.apps.talent.db.Appraisal";"x";"x";"x";;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Appraisal User"
|
||||
"perm.talent.AppraisalType.rwc";"com.axelor.apps.talent.db.AppraisalType";"x";"x";"x";;;;;"Appraisal User"
|
||||
"perm.talent.Appraisal.rwcde";"com.axelor.apps.talent.db.Appraisal";"x";"x";"x";"x";"x";"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Appraisal Manager"
|
||||
"perm.talent.AppraisalType.rwcde";"com.axelor.apps.talent.db.AppraisalType";"x";"x";"x";"x";"x";;;"Appraisal Manager"
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"description"
|
||||
"Appraisal Read";
|
||||
"Appraisal User";
|
||||
"Appraisal Manager";
|
||||
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="recruitment_role.csv" separator=";" type="com.axelor.auth.db.Role" search="self.name = :name"/>
|
||||
|
||||
<input file="recruitment_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="recruitment_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true">
|
||||
<bind column="roles" to="roles" search="self.name in :roles" eval="roles.split('\\|') as List"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,9 @@
|
||||
"name";"roles"
|
||||
"hr-root";"Recruitment Manager|Recruitment User|Recruitment Read"
|
||||
"recruitment-root";"Recruitment Manager|Recruitment User|Recruitment Read"
|
||||
"recruitment-job-position-open";"Recruitment Manager|Recruitment User|Recruitment Read"
|
||||
"recruitment-job-application-all";"Recruitment Manager|Recruitment User|Recruitment Read"
|
||||
"recruitment-config";"Recruitment Manager"
|
||||
"recruitment-config-education-level";"Recruitment Manager"
|
||||
"recruitment-config-hiring-stage";"Recruitment Manager"
|
||||
"recruitment-config-source";"Recruitment Manager"
|
||||
|
@ -0,0 +1,19 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.talent.EducationLevel.r";"com.axelor.apps.talent.db.EducationLevel";"x";;;;;;;"Recruitment Read"
|
||||
"perm.talent.HiringStage.r";"com.axelor.apps.talent.db.HiringStage";"x";;;;;;;"Recruitment Read"
|
||||
"perm.talent.Skill.r";"com.axelor.apps.talent.db.Skill";"x";;;;;;;"Recruitment Read"
|
||||
"perm.talent.JobApplication.r";"com.axelor.apps.talent.db.JobApplication";"x";;;;;;;"Recruitment Read"
|
||||
"perm.talent.JobPosition.r";"com.axelor.apps.talent.db.JobPosition";"x";;;;;;;"Recruitment Read"
|
||||
"perm.talent.TalentSource.r";"com.axelor.apps.talent.db.TalentSource";"x";;;;;;;"Recruitment Read"
|
||||
"perm.talent.EducationLevel.rwc";"com.axelor.apps.talent.db.EducationLevel";"x";"x";"x";;;;;"Recruitment User"
|
||||
"perm.talent.HiringStage.rwc";"com.axelor.apps.talent.db.HiringStage";"x";"x";"x";;;;;"Recruitment User"
|
||||
"perm.talent.Skill.rwc";"com.axelor.apps.talent.db.Skill";"x";"x";"x";;;;;"Recruitment User"
|
||||
"perm.talent.JobApplication.rwc";"com.axelor.apps.talent.db.JobApplication";"x";"x";"x";;;;;"Recruitment User"
|
||||
"perm.talent.JobPosition.rwc";"com.axelor.apps.talent.db.JobPosition";"x";"x";"x";;;;;"Recruitment User"
|
||||
"perm.talent.TalentSource.rwc";"com.axelor.apps.talent.db.TalentSource";"x";"x";"x";;;;;"Recruitment User"
|
||||
"perm.talent.EducationLevel.rwcde";"com.axelor.apps.talent.db.EducationLevel";"x";"x";"x";"x";"x";;;"Recruitment Manager"
|
||||
"perm.talent.HiringStage.rwcde";"com.axelor.apps.talent.db.HiringStage";"x";"x";"x";"x";"x";;;"Recruitment Manager"
|
||||
"perm.talent.Skill.rwcde";"com.axelor.apps.talent.db.Skill";"x";"x";"x";"x";"x";;;"Recruitment Manager"
|
||||
"perm.talent.JobApplication.rwcde";"com.axelor.apps.talent.db.JobApplication";"x";"x";"x";"x";"x";;;"Recruitment Manager"
|
||||
"perm.talent.JobPosition.rwcde";"com.axelor.apps.talent.db.JobPosition";"x";"x";"x";"x";"x";;;"Recruitment Manager"
|
||||
"perm.talent.TalentSource.rwcde";"com.axelor.apps.talent.db.TalentSource";"x";"x";"x";"x";"x";;;"Recruitment Manager"
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"description"
|
||||
"Recruitment Read";
|
||||
"Recruitment User";
|
||||
"Recruitment Manager";
|
||||
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="training_role.csv" separator=";" type="com.axelor.auth.db.Role" search="self.name = :name"/>
|
||||
|
||||
<input file="training_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="training_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true">
|
||||
<bind column="roles" to="roles" search="self.name in :roles" eval="roles.split('\\|') as List"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,9 @@
|
||||
"name";"roles"
|
||||
"hr-root";"Training Manager|Training User|Training Read"
|
||||
"training-root";"Training Manager|Training User|Training Read"
|
||||
"training-register-all";"Training Manager|Training User|Training Read"
|
||||
"training-dashboard";"Training Manager|Training User|Training Read"
|
||||
"training-conf";"Training Manager"
|
||||
"training-category-all";"Training Manager"
|
||||
"training-training-all";"Training Manager"
|
||||
"training-session-all";"Training Manager"
|
||||
|
@ -0,0 +1,16 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.talent.TrainingCategory.r";"com.axelor.apps.talent.db.TrainingCategory";"x";;;;;;;"Training Read"
|
||||
"perm.talent.Training.r";"com.axelor.apps.talent.db.Training";"x";;;;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Training Read"
|
||||
"perm.talent.TrainingSession.r";"com.axelor.apps.talent.db.TrainingSession";"x";;;;;;;"Training Read"
|
||||
"perm.talent.Skill.r";"com.axelor.apps.talent.db.Skill";"x";;;;;;;"Training Read"
|
||||
"perm.talent.TalentSource.r";"com.axelor.apps.talent.db.TalentSource";"x";;;;;;;"Training Read"
|
||||
"perm.talent.TrainingCategory.rwc";"com.axelor.apps.talent.db.TrainingCategory";"x";"x";"x";;;;;"Training User"
|
||||
"perm.talent.Training.rwc";"com.axelor.apps.talent.db.Training";"x";"x";"x";;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Training User"
|
||||
"perm.talent.TrainingSession.rwc";"com.axelor.apps.talent.db.TrainingSession";"x";"x";"x";;;;;"Training User"
|
||||
"perm.talent.Skill.rwc";"com.axelor.apps.talent.db.Skill";"x";"x";"x";;;;;"Training User"
|
||||
"perm.talent.TrainingRegister.rwc";"com.axelor.apps.talent.db.TrainingRegister";"x";"x";"x";;;;;"Training User"
|
||||
"perm.talent.TrainingCategory.rwcde";"com.axelor.apps.talent.db.TrainingCategory";"x";"x";"x";"x";"x";;;"Training Manager"
|
||||
"perm.talent.Training.rwcde";"com.axelor.apps.talent.db.Training";"x";"x";"x";"x";"x";"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Training Manager"
|
||||
"perm.talent.TrainingSession.rwcde";"com.axelor.apps.talent.db.TrainingSession";"x";"x";"x";"x";"x";;;"Training Manager"
|
||||
"perm.talent.Skill.rwcde";"com.axelor.apps.talent.db.Skill";"x";"x";"x";"x";"x";;;"Training Manager"
|
||||
"perm.talent.TrainingRegister.rwcde";"com.axelor.apps.talent.db.TrainingRegister";"x";"x";"x";"x";"x";;;"Training Manager"
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"description"
|
||||
"Training Read";
|
||||
"Training User";
|
||||
"Training Manager";
|
||||
|
@ -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 < 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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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="<a class='fa fa-linkedin' href='http://www.linkedin.com' target='_blank' />" 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>
|
||||
@ -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 > 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 < 3</domain>
|
||||
</filter>
|
||||
<filter title="Closed job offers">
|
||||
<domain>self.statusSelect > 2</domain>
|
||||
</filter>
|
||||
</search-filters>
|
||||
|
||||
</object-views>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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:"self.training.id = ${training.id}"" 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 && __this__.calendar != __self__?.calendar" name="action-training-register-method-update-event-calendar"/>
|
||||
</action-group>
|
||||
|
||||
</object-views>
|
||||
@ -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>
|
||||
Reference in New Issue
Block a user