package com.fp.viaticos.rules.save.acumulados; import java.math.BigDecimal; import java.sql.Date; import java.util.Calendar; import java.util.List; import com.fp.common.helper.Constant; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.pviaticos.param.ViaDiasAcumulados; import com.fp.persistence.pviaticos.param.ViaDiasAcumuladosKey; import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; import com.fp.viaticos.rules.enums.EnumCodigos; /** * Clase que se encarga de completar información para acumulacion de dias en la solicitud de viaticos. * * @author WPA. * @version 2.1 */ public class DiasAcumulados extends TransactionRule { private static final long serialVersionUID = 1L; @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") == null) { return pSaveRequest; } String solicitud = (String)pSaveRequest.get("csolicitud"); ViaSolicitud informe = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, EnumCodigos.INFORME.getCodigo())); if(informe == null){ return pSaveRequest; } ViaDiasAcumuladosKey key = new ViaDiasAcumuladosKey(); key.setCod_destino(informe.getCod_destino()); key.setCod_ejercicio(this.getYear(informe.getFec_creacion())); key.setCod_empleado(informe.getCod_empleado()); ViaDiasAcumulados acumulado = ViaDiasAcumulados.find(PersistenceHelper.getEntityManager(), key); if(acumulado!=null){ BigDecimal dias = acumulado.getNum_dias().add(informe.getNum_dias()); acumulado.setNum_dias(dias); }else{ acumulado = new ViaDiasAcumulados(); acumulado.setPk(key); acumulado.setNum_dias(informe.getNum_dias()); PersistenceHelper.saveOrUpdate(acumulado); } return pSaveRequest; } @Override public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { return pSaveRequest; } /** * Entrega el anio * @param date Fecha * @return year */ private Integer getYear(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.YEAR); } }