78 lines
2.4 KiB
Plaintext
Executable File
78 lines
2.4 KiB
Plaintext
Executable File
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);
|
|
}
|
|
|
|
}
|