use of com.axelor.apps.base.db.Period in project axelor-open-suite by axelor.
the class PeriodController method adjust.
public void adjust(ActionRequest request, ActionResponse response) {
Period period = request.getContext().asType(Period.class);
period = Beans.get(PeriodRepository.class).find(period.getId());
try {
Beans.get(PeriodService.class).adjust(period);
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.base.db.Period in project axelor-open-suite by axelor.
the class ExpenseServiceImpl method getOrCreateExpense.
@Override
public Expense getOrCreateExpense(User user) {
Expense expense = Beans.get(ExpenseRepository.class).all().filter("self.statusSelect = ?1 AND self.user.id = ?2", ExpenseRepository.STATUS_DRAFT, user.getId()).order("-id").fetchOne();
if (expense == null) {
expense = new Expense();
expense.setUser(user);
Company company = null;
if (user.getEmployee() != null && user.getEmployee().getMainEmploymentContract() != null) {
company = user.getEmployee().getMainEmploymentContract().getPayCompany();
} else {
company = user.getActiveCompany();
}
Period period = Beans.get(PeriodRepository.class).all().filter("self.fromDate <= ?1 AND self.toDate >= ?1 AND self.allowExpenseCreation = true AND self.year.company = ?2 AND self.year.typeSelect = ?3", Beans.get(AppBaseService.class).getTodayDate(company), company, YearBaseRepository.STATUS_OPENED).fetchOne();
expense.setCompany(company);
expense.setPeriod(period);
expense.setStatusSelect(ExpenseRepository.STATUS_DRAFT);
}
return expense;
}
use of com.axelor.apps.base.db.Period in project axelor-open-suite by axelor.
the class PeriodController method searchPeriodMoves.
public void searchPeriodMoves(ActionRequest request, ActionResponse response) {
try {
Period period = request.getContext().asType(Period.class);
period = Beans.get(PeriodRepository.class).find(period.getId());
Long moveCount = Beans.get(PeriodServiceAccount.class).getMoveListToValidateQuery(period).count();
if (moveCount > 0) {
response.setView(ActionView.define("Moves to validate").model(Period.class.getName()).add("form", "period-moves-to-validate-form").param("popup", "reload").param("show-toolbar", "false").param("show-confirm", "false").param("popup-save", "false").context("_showRecord", period.getId()).map());
} else {
Beans.get(PeriodService.class).close(period);
response.setReload(true);
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.base.db.Period in project axelor-open-suite by axelor.
the class PayrollPreparationService method closePayPeriodIfExported.
/**
* If each employee's payroll preparation has been exported, close the pay period.
*
* @param payrollPreparation
*/
@Transactional
public void closePayPeriodIfExported(PayrollPreparation payrollPreparation) {
Company company = payrollPreparation.getCompany();
Period payPeriod = payrollPreparation.getPeriod();
long nbNotExportedPayroll = Beans.get(PayrollPreparationRepository.class).all().filter("self.company = :_company AND self.exported = false " + "AND self.period = :_period").bind("_company", company).bind("_period", payPeriod).count();
if (nbNotExportedPayroll == 0) {
payPeriod.setStatusSelect(PeriodRepository.STATUS_CLOSED);
payPeriod.setClosureDateTime(Beans.get(AppBaseService.class).getTodayDateTime().toLocalDateTime());
}
Beans.get(PeriodRepository.class).save(payPeriod);
}
use of com.axelor.apps.base.db.Period in project axelor-open-suite by axelor.
the class BatchPayrollPreparationGeneration method createPayrollPreparation.
@Transactional(rollbackOn = { Exception.class })
public void createPayrollPreparation(Employee employee) throws AxelorException {
if (employee == null || EmployeeHRRepository.isEmployeeFormerNewOrArchived(employee)) {
return;
}
String filter = "self.period = ?1 AND self.employee = ?2";
String companyFilter = filter + " AND self.company = ?3";
List<PayrollPreparation> payrollPreparationList = payrollPreparationRepository.all().filter((company != null) ? companyFilter : filter, hrBatch.getPeriod(), employee, company).fetch();
log.debug("list : " + payrollPreparationList);
if (!payrollPreparationList.isEmpty()) {
throw new AxelorException(employee, TraceBackRepository.CATEGORY_NO_UNIQUE_KEY, I18n.get(IExceptionMessage.PAYROLL_PREPARATION_DUPLICATE), employee.getName(), (company != null) ? hrBatch.getCompany().getName() : null, hrBatch.getPeriod().getName());
}
PayrollPreparation payrollPreparation = new PayrollPreparation();
if (company != null) {
Company currentCompany = companyRepository.find(company.getId());
payrollPreparation.setCompany(currentCompany);
} else {
payrollPreparation.setCompany(employee.getMainEmploymentContract().getPayCompany());
}
Period period = periodRepository.find(hrBatch.getPeriod().getId());
payrollPreparation.setEmployee(employee);
payrollPreparation.setEmploymentContract(employee.getMainEmploymentContract());
payrollPreparation.setPeriod(period);
payrollPreparationService.fillInPayrollPreparation(payrollPreparation);
payrollPreparationRepository.save(payrollPreparation);
updateEmployee(employee);
}
Aggregations