Search in sources :

Example 6 with PayrollLeave

use of com.axelor.apps.hr.db.PayrollLeave in project axelor-open-suite by axelor.

the class PayrollPreparationService method exportNibelis.

public void exportNibelis(PayrollPreparation payrollPreparation, List<String[]> list) throws AxelorException {
    HRConfig hrConfig = hrConfigService.getHRConfig(payrollPreparation.getCompany());
    // LEAVES
    if (payrollPreparation.getLeaveDuration().compareTo(BigDecimal.ZERO) > 0) {
        List<PayrollLeave> payrollLeaveList = fillInLeaves(payrollPreparation);
        for (PayrollLeave payrollLeave : payrollLeaveList) {
            if (payrollLeave.getLeaveReason().getPayrollPreprationExport()) {
                String[] leaveLine = createExportFileLine(payrollPreparation);
                leaveLine[3] = payrollLeave.getLeaveReason().getExportCode();
                leaveLine[4] = payrollLeave.getFromDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
                leaveLine[5] = payrollLeave.getToDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
                leaveLine[6] = payrollLeave.getDuration().toString();
                list.add(leaveLine);
            }
        }
    }
    // LUNCH VOUCHER MANAGEMENT
    if (payrollPreparation.getLunchVoucherNumber().compareTo(BigDecimal.ZERO) > 0) {
        String[] lunchVoucherLine = createExportFileLine(payrollPreparation);
        lunchVoucherLine[3] = hrConfig.getExportCodeForLunchVoucherManagement();
        lunchVoucherLine[6] = payrollPreparation.getLunchVoucherNumber().toString();
        list.add(lunchVoucherLine);
    }
    // EMPLOYEE BONUS MANAGEMENT
    if (payrollPreparation.getEmployeeBonusAmount().compareTo(BigDecimal.ZERO) > 0) {
        Map<String, BigDecimal> map = new HashMap<>();
        for (EmployeeBonusMgtLine bonus : payrollPreparation.getEmployeeBonusMgtLineList()) {
            if (bonus.getEmployeeBonusMgt().getEmployeeBonusType().getPayrollPreparationExport()) {
                if (map.containsKey(bonus.getEmployeeBonusMgt().getEmployeeBonusType().getExportCode())) {
                    map.put(bonus.getEmployeeBonusMgt().getEmployeeBonusType().getExportCode(), bonus.getAmount().add(map.get(bonus.getEmployeeBonusMgt().getEmployeeBonusType().getExportCode())));
                } else {
                    map.put(bonus.getEmployeeBonusMgt().getEmployeeBonusType().getExportCode(), bonus.getAmount());
                }
            }
        }
        for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
            String[] employeeBonusLine = createExportFileLine(payrollPreparation);
            employeeBonusLine[3] = entry.getKey();
            employeeBonusLine[6] = entry.getValue().toString();
            list.add(employeeBonusLine);
        }
    }
    // EXTRA HOURS
    if (payrollPreparation.getExtraHoursNumber().compareTo(BigDecimal.ZERO) > 0) {
        List<ExtraHoursLine> extraHourLineList = Beans.get(ExtraHoursLineRepository.class).all().filter("self.payrollPreparation.id = ?1" + " AND self.extraHoursType.payrollPreprationExport = ?2", payrollPreparation.getId(), true).fetch();
        Map<ExtraHoursType, BigDecimal> extraHourLineExportMap = extraHourLineList.stream().collect(Collectors.groupingBy(ExtraHoursLine::getExtraHoursType, Collectors.reducing(BigDecimal.ZERO, ExtraHoursLine::getQty, BigDecimal::add)));
        extraHourLineExportMap.forEach((extraHoursTypeGroup, totalHours) -> {
            String[] extraHourLine = createExportFileLine(payrollPreparation);
            extraHourLine[3] = extraHoursTypeGroup.getExportCode();
            extraHourLine[6] = totalHours.toString();
            list.add(extraHourLine);
        });
    }
}
Also used : HashMap(java.util.HashMap) ExtraHoursType(com.axelor.apps.hr.db.ExtraHoursType) ExtraHoursLine(com.axelor.apps.hr.db.ExtraHoursLine) BigDecimal(java.math.BigDecimal) HRConfig(com.axelor.apps.hr.db.HRConfig) EmployeeBonusMgtLine(com.axelor.apps.hr.db.EmployeeBonusMgtLine) ExtraHoursLineRepository(com.axelor.apps.hr.db.repo.ExtraHoursLineRepository) PayrollLeave(com.axelor.apps.hr.db.PayrollLeave) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

PayrollLeave (com.axelor.apps.hr.db.PayrollLeave)6 HRConfig (com.axelor.apps.hr.db.HRConfig)2 PayrollPreparation (com.axelor.apps.hr.db.PayrollPreparation)2 PayrollPreparationService (com.axelor.apps.hr.service.PayrollPreparationService)2 BigDecimal (java.math.BigDecimal)2 LocalDate (java.time.LocalDate)2 Employee (com.axelor.apps.hr.db.Employee)1 EmployeeBonusMgtLine (com.axelor.apps.hr.db.EmployeeBonusMgtLine)1 ExtraHoursLine (com.axelor.apps.hr.db.ExtraHoursLine)1 ExtraHoursType (com.axelor.apps.hr.db.ExtraHoursType)1 LeaveRequest (com.axelor.apps.hr.db.LeaveRequest)1 ExtraHoursLineRepository (com.axelor.apps.hr.db.repo.ExtraHoursLineRepository)1 AxelorException (com.axelor.exception.AxelorException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1