package br.com.centralit.citcorpore.ajaxForms;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.ControleRendimentoDTO;
import br.com.centralit.citcorpore.bean.ControleRendimentoExecucaoDTO;
import br.com.centralit.citcorpore.bean.ControleRendimentoGrupoDTO;
import br.com.centralit.citcorpore.bean.ControleRendimentoUsuarioDTO;
import br.com.centralit.citcorpore.negocio.ControleRendimentoGrupoService;
import br.com.centralit.citcorpore.negocio.ControleRendimentoService;
import br.com.centralit.citcorpore.negocio.ControleRendimentoUsuarioService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
public class ControleRendimento extends AjaxFormAction{
@Override
public void load(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
}
@Override
public Class getBeanClass() {
return ControleRendimentoDTO.class;
}
public void carregaCombos(DocumentHTML document, HttpServletRequest request) throws Exception{
Calendar dataAtual = Calendar.getInstance();
String anoAtual = (dataAtual.get(GregorianCalendar.YEAR)) + "";
//carrega informa��es da aba Apurar M�s
((HTMLSelect) document.getSelectById("comboMes")).removeAllOptions();
((HTMLSelect) document.getSelectById("comboMes")).addOption("1", UtilI18N.internacionaliza(request, "controle.mesJaneiro"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("2", UtilI18N.internacionaliza(request, "controle.mesFevereiro"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("3", UtilI18N.internacionaliza(request, "controle.mesMarco"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("4", UtilI18N.internacionaliza(request, "controle.mesAbril"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("5", UtilI18N.internacionaliza(request, "controle.mesMaio"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("6", UtilI18N.internacionaliza(request, "controle.mesJunho"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("7", UtilI18N.internacionaliza(request, "controle.mesJulho"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("8", UtilI18N.internacionaliza(request, "controle.mesAgosto"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("9", UtilI18N.internacionaliza(request, "controle.mesSetembro"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("10", UtilI18N.internacionaliza(request, "controle.mesOutubro"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("11", UtilI18N.internacionaliza(request, "controle.mesNovembro"));
((HTMLSelect) document.getSelectById("comboMes")).addOption("12", UtilI18N.internacionaliza(request, "controle.mesDezembro"));
((HTMLSelect) document.getSelectById("comboAno")).removeAllOptions();
int i = 2005;
while (i < 2040){
((HTMLSelect) document.getSelectById("comboAno")).addOption(i + "", i + "");
i++;
}
((HTMLSelect) document.getSelectById("comboAno")).setValue(anoAtual);
//carrega informa��es da aba Relat�rios
((HTMLSelect) document.getSelectById("comboMesRelatorio")).removeAllOptions();
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("1", UtilI18N.internacionaliza(request, "controle.mesJaneiro"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("2", UtilI18N.internacionaliza(request, "controle.mesFevereiro"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("3", UtilI18N.internacionaliza(request, "controle.mesMarco"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("4", UtilI18N.internacionaliza(request, "controle.mesAbril"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("5", UtilI18N.internacionaliza(request, "controle.mesMaio"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("6", UtilI18N.internacionaliza(request, "controle.mesJunho"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("7", UtilI18N.internacionaliza(request, "controle.mesJulho"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("8", UtilI18N.internacionaliza(request, "controle.mesAgosto"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("9", UtilI18N.internacionaliza(request, "controle.mesSetembro"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("10", UtilI18N.internacionaliza(request, "controle.mesOutubro"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("11", UtilI18N.internacionaliza(request, "controle.mesNovembro"));
((HTMLSelect) document.getSelectById("comboMesRelatorio")).addOption("12", UtilI18N.internacionaliza(request, "controle.mesDezembro"));
((HTMLSelect) document.getSelectById("comboAnoRelatorio")).removeAllOptions();
int j = 2005;
while (j < 2040){
((HTMLSelect) document.getSelectById("comboAnoRelatorio")).addOption(j + "", j + "");
j++;
}
((HTMLSelect) document.getSelectById("comboAnoRelatorio")).setValue(anoAtual);
}
public void fecharMes(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, Collection<ControleRendimentoExecucaoDTO> colecaoPessoas) throws ServiceException, Exception{
ControleRendimentoExecucaoDTO controleExecucaoDto = (ControleRendimentoExecucaoDTO) document.getBean();
ControleRendimentoService controleRendimentoService = (ControleRendimentoService) ServiceLocator.getInstance().getService(ControleRendimentoService.class, WebUtil.getUsuarioSistema(request));
//confere se m�s j� acabou
Calendar dataAtual = Calendar.getInstance();
Integer anoAtual = (dataAtual.get(GregorianCalendar.YEAR));
Integer mesAtual = (dataAtual.get(GregorianCalendar.MONTH) + 1); // tem que somar um porque os meses do Calendar v�o de 0 a 11
Integer diaAtual = (dataAtual.get(GregorianCalendar.DAY_OF_MONTH));
String anoControle = controleExecucaoDto.getAno();
String mesControle = controleExecucaoDto.getMes();
if(Integer.parseInt(anoControle) == anoAtual){
if(Integer.parseInt(mesControle) == mesAtual){
if(!diaAtual.equals(confereQualUltimoDiaDoMes(controleExecucaoDto))){
document.alert(UtilI18N.internacionaliza(request, "controle.aguardeAteOFimDoMes") + " " + diaAtual);
return;
}
}
}
//verifica se o m�s ainda n�o chegou
if(Integer.parseInt(anoControle) == anoAtual){
if(Integer.parseInt(mesControle) > mesAtual){
document.alert(UtilI18N.internacionaliza(request, "controle.mesAindaNaoChegou"));
return;
}
}
//verifica se o mes j� foi fechado
Collection<ControleRendimentoDTO> listaConfereSeMesJaFoiFechado = (Collection<ControleRendimentoDTO>) controleRendimentoService.findByMesAno(controleExecucaoDto.getMes(), controleExecucaoDto.getAno(), controleExecucaoDto.getIdGrupo());
if(listaConfereSeMesJaFoiFechado != null){
document.alert(UtilI18N.internacionaliza(request, "controle.mesJaFechado"));
return;
}
//gravar o registro relacionado ao grupo
ControleRendimentoDTO controleRendimentoDto = new ControleRendimentoDTO();
controleRendimentoDto.setAnoApuracao(controleExecucaoDto.getAno());
controleRendimentoDto.setMesApuracao(controleExecucaoDto.getMes());
controleRendimentoDto.setIdGrupo(controleExecucaoDto.getIdGrupo());
controleRendimentoDto.setMediaRelativa(controleExecucaoDto.getMediaRelativa());
controleRendimentoDto.setQtdPontos(Double.parseDouble(controleExecucaoDto.getQtdTotalPontos()));
controleRendimentoDto.setQtdPontosPositivos(Integer.parseInt(controleExecucaoDto.getQtdPontosPositivos()));
controleRendimentoDto.setQtdPontosNegativos(Integer.parseInt(controleExecucaoDto.getQtdPontosNegativos()));
controleRendimentoDto.setQtdSolicitacoes(Integer.parseInt(controleExecucaoDto.getQtdSolicitacoes()));
controleRendimentoDto.setDataHoraExecucao(UtilDatas.getDataHoraAtual());
//transforma a m�dia relativa em double de volta
String mediaRelativa = controleRendimentoDto.getMediaRelativa();
mediaRelativa = mediaRelativa.replace(",", ".");
controleRendimentoDto.setMediaRelativa(mediaRelativa);
if(Double.parseDouble(mediaRelativa) > Double.parseDouble(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.NIVEL_EXCELENCIA_EXIGIDO, "90"))){
controleRendimentoDto.setAprovado("S");
} else {
controleRendimentoDto.setAprovado("N");
}
controleRendimentoService.create(controleRendimentoDto);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
ControleRendimentoGrupoService controleRendimentoGrupoService = (ControleRendimentoGrupoService) ServiceLocator.getInstance().getService(ControleRendimentoGrupoService.class, WebUtil.getUsuarioSistema(request));
ControleRendimentoGrupoDTO controleRendimentoGrupoDto = new ControleRendimentoGrupoDTO();
controleRendimentoGrupoDto.setIdControleRendimento(controleRendimentoDto.getIdControleRendimento());
controleRendimentoGrupoDto.setIdGrupo(controleRendimentoDto.getIdGrupo());
controleRendimentoGrupoService.create(controleRendimentoGrupoDto);
//gravar o registro relacionado as pessoas
ControleRendimentoUsuarioService controleRendimentoUsuarioService = (ControleRendimentoUsuarioService) ServiceLocator.getInstance().getService(ControleRendimentoUsuarioService.class, WebUtil.getUsuarioSistema(request));
for (ControleRendimentoExecucaoDTO controleRendimentoExecucaoDTO : colecaoPessoas) {
ControleRendimentoUsuarioDTO controleRendimentoUsuario = new ControleRendimentoUsuarioDTO();
controleRendimentoUsuario.setIdControleRendimento(controleRendimentoDto.getIdControleRendimento());
controleRendimentoUsuario.setIdGrupo(controleRendimentoDto.getIdGrupo());
controleRendimentoUsuario.setIdUsuario(controleRendimentoExecucaoDTO.getIdPessoa());
controleRendimentoUsuario.setQtdTotalPontos(Double.parseDouble(controleRendimentoExecucaoDTO.getQtdTotalPontos()));
controleRendimentoUsuario.setAprovacao(controleRendimentoExecucaoDTO.getAprovacao());
controleRendimentoUsuario.setAno(controleRendimentoDto.getAnoApuracao());
controleRendimentoUsuario.setMes(controleRendimentoDto.getMesApuracao());
controleRendimentoUsuario.setQtdPontosPositivos(controleRendimentoExecucaoDTO.getQtdPontosPositivos());
controleRendimentoUsuario.setQtdPontosNegativos(controleRendimentoExecucaoDTO.getQtdPontosNegativos());
controleRendimentoUsuario.setQtdItensEntregues(controleRendimentoExecucaoDTO.getQtdItensEntregues());
controleRendimentoUsuario.setQtdItensRetornados(controleRendimentoExecucaoDTO.getQtdItensRetornados());
controleRendimentoUsuarioService.create(controleRendimentoUsuario);
}
}
public static Integer confereQualUltimoDiaDoMes(ControleRendimentoExecucaoDTO controleExecucaoDto){
Integer ultimoDia = 0;
Integer mes = Integer.parseInt(controleExecucaoDto.getMes());
if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12){
ultimoDia = 31;
}
else if(mes == 2){
ultimoDia = 28;
}
else {
ultimoDia = 30;
}
return ultimoDia;
}
}