Search in sources :

Example 6 with Period

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);
    }
}
Also used : Period(com.axelor.apps.base.db.Period) PeriodService(com.axelor.apps.base.service.PeriodService)

Example 7 with Period

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;
}
Also used : Company(com.axelor.apps.base.db.Company) Expense(com.axelor.apps.hr.db.Expense) AppBaseService(com.axelor.apps.base.service.app.AppBaseService) PeriodRepository(com.axelor.apps.base.db.repo.PeriodRepository) Period(com.axelor.apps.base.db.Period)

Example 8 with Period

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);
    }
}
Also used : Period(com.axelor.apps.base.db.Period) PeriodService(com.axelor.apps.base.service.PeriodService)

Example 9 with Period

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);
}
Also used : Company(com.axelor.apps.base.db.Company) PayrollPreparationRepository(com.axelor.apps.hr.db.repo.PayrollPreparationRepository) AppBaseService(com.axelor.apps.base.service.app.AppBaseService) PeriodRepository(com.axelor.apps.base.db.repo.PeriodRepository) Period(com.axelor.apps.base.db.Period) Transactional(com.google.inject.persist.Transactional)

Example 10 with Period

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);
}
Also used : AxelorException(com.axelor.exception.AxelorException) Company(com.axelor.apps.base.db.Company) Period(com.axelor.apps.base.db.Period) PayrollPreparation(com.axelor.apps.hr.db.PayrollPreparation) Transactional(com.google.inject.persist.Transactional)

Aggregations

Period (com.axelor.apps.base.db.Period)17 AxelorException (com.axelor.exception.AxelorException)8 Company (com.axelor.apps.base.db.Company)5 ArrayList (java.util.ArrayList)5 PeriodService (com.axelor.apps.base.service.PeriodService)4 PeriodRepository (com.axelor.apps.base.db.repo.PeriodRepository)3 Transactional (com.google.inject.persist.Transactional)3 AppBaseService (com.axelor.apps.base.service.app.AppBaseService)2 StockMoveLine (com.axelor.apps.stock.db.StockMoveLine)2 IOException (java.io.IOException)2 BigDecimal (java.math.BigDecimal)2 Path (java.nio.file.Path)2 LocalDate (java.time.LocalDate)2 AccountingSituation (com.axelor.apps.account.db.AccountingSituation)1 AnalyticMoveLine (com.axelor.apps.account.db.AnalyticMoveLine)1 Move (com.axelor.apps.account.db.Move)1 MoveLine (com.axelor.apps.account.db.MoveLine)1 AdjustHistory (com.axelor.apps.base.db.AdjustHistory)1 Partner (com.axelor.apps.base.db.Partner)1 Year (com.axelor.apps.base.db.Year)1