package gcom.gui.cobranca;
import gcom.cadastro.sistemaparametro.NacionalFeriado;
import gcom.cobranca.CobrancaAcao;
import gcom.cobranca.CobrancaAtividade;
import gcom.cobranca.CobrancaGrupo;
import gcom.cobranca.FiltroCobrancaAcao;
import gcom.cobranca.FiltroCobrancaAtividade;
import gcom.cobranca.FiltroCobrancaGrupo;
import gcom.cobranca.bean.AcaoEAtividadeCobrancaHelper;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* < <Descri��o da Classe>>
*
* @author Fernanda Paiva
*/
public class ExibirInserirCronogramaCobrancaAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta a a��o de retorno
ActionForward retorno = actionMapping
.findForward("inserirCronogramaCobranca");
Fachada fachada = Fachada.getInstancia();
//Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
CobrancaActionForm cobrancaActionForm = (CobrancaActionForm) actionForm;
FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo();
filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO);
Collection gruposCobranca = fachada.pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName());
sessao.setAttribute("gruposCobranca", gruposCobranca);
FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao();
filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoPredecessora");
filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_CRONOGRAMA,CobrancaAcao.INDICADOR_CRONOGRAMA_ATIVO));
filtroCobrancaAcao.setCampoOrderBy(FiltroCobrancaAcao.ORDEM_REALIZACAO);
Collection acoesCobranca = fachada.pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName());
sessao.setAttribute("acoesCobranca", acoesCobranca);
FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade();
// Collection atividadesCobranca = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName());
//-------------------------------------------------------------------------
//RM93 - adicionado por Vivianne Sousa - analista:Rosana Carvalho
String limparForm = httpServletRequest.getParameter("limparForm");
if(limparForm != null && limparForm.equals("1")){
cobrancaActionForm.setIdGrupoCobranca(null);
cobrancaActionForm.setDataInicio("");
cobrancaActionForm.setMesAno("");
}
String exibirDataInicio = "2";
if(cobrancaActionForm.getIdGrupoCobranca() != null &&
!cobrancaActionForm.getIdGrupoCobranca().equals(ConstantesSistema.NUMERO_NAO_INFORMADO)
&& verificarExecucaoAutomaticaGrupo(cobrancaActionForm.getIdGrupoCobranca())){
exibirDataInicio = "1";
String calcularDataPrevista = httpServletRequest.getParameter("calcularDataPrevista");
if(calcularDataPrevista != null && calcularDataPrevista.equals("1")){
if(cobrancaActionForm.getDataInicio() == null){
throw new ActionServletException("atencao.campo.informada", null, "Data de In�cio");
}
Iterator iterAcoesCobranca = acoesCobranca.iterator();
Collection colecaoAcaoEAtividadeCobranca = new ArrayList();
boolean primeiraVez = true;
Map dataPrevistaPredecessora = new HashMap();
Date dataAcaoCobrancaAnterior = null;
Date dataAtividadeCobrancaEncerrarAnterior = null;
//FERIADO NACIONAL
Collection<NacionalFeriado> colecaoFeriadosNacionais = fachada.pesquisarFeriadosNacionais();
while (iterAcoesCobranca.hasNext()) {
CobrancaAcao cobrancaAcao = (CobrancaAcao) iterAcoesCobranca.next();
AcaoEAtividadeCobrancaHelper helper = new AcaoEAtividadeCobrancaHelper();
helper.setAcaoCobranca(cobrancaAcao);
Date dataTeste = Util.converteStringParaDate(cobrancaActionForm.getDataInicio());
if(!primeiraVez){
if(cobrancaAcao.getCobrancaAcaoPredecessora() != null){
dataTeste = (Date)dataPrevistaPredecessora.get(cobrancaAcao.getCobrancaAcaoPredecessora().getId());
if(cobrancaAcao.getNumeroDiasMinimoAcaoPrecedente() != null){
dataTeste = Util.adicionarNumeroDiasUteisDeUmaData(dataTeste, cobrancaAcao.getNumeroDiasMinimoAcaoPrecedente(),colecaoFeriadosNacionais,null);
}
}else if(dataAcaoCobrancaAnterior != null){
dataTeste = dataAcaoCobrancaAnterior;
if(cobrancaAcao.getNumeroDiasMinimoAcaoPrecedente() != null){
dataTeste = Util.adicionarNumeroDiasUteisDeUmaData(dataTeste, cobrancaAcao.getNumeroDiasMinimoAcaoPrecedente(),colecaoFeriadosNacionais,null);
}
}
}
primeiraVez = true;
filtroCobrancaAtividade = new FiltroCobrancaAtividade();
filtroCobrancaAtividade.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividadePredecessora");
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA));
filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO);
filtroCobrancaAtividade.adicionarParametro(new ParametroNulo(FiltroCobrancaAtividade.ID_COBRANCA_ACAO));
Collection atividadesCobranca = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName());
//pesquisa cobran�a atividade especifica da cobran�a a��o
filtroCobrancaAtividade = new FiltroCobrancaAtividade();
filtroCobrancaAtividade.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividadePredecessora");
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA));
filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO);
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(
FiltroCobrancaAtividade.ID_COBRANCA_ACAO, cobrancaAcao.getId()));
Collection atividadesCobrancaEspecifica = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName());
Iterator iterAtividadesCobranca = null;
if(atividadesCobrancaEspecifica != null && !atividadesCobrancaEspecifica.isEmpty()){
atividadesCobranca.addAll(atividadesCobrancaEspecifica);
}
iterAtividadesCobranca = atividadesCobranca.iterator();
while (iterAtividadesCobranca.hasNext()) {
CobrancaAtividade cobrancaAtividade = (CobrancaAtividade) iterAtividadesCobranca.next();
if(primeiraVez){
//guarda a data da a��o de cobran�a
primeiraVez = false;
if(dataAtividadeCobrancaEncerrarAnterior != null){
dataPrevistaPredecessora.put(cobrancaAcao.getId(),dataAtividadeCobrancaEncerrarAnterior);
dataAcaoCobrancaAnterior = dataAtividadeCobrancaEncerrarAnterior;
dataTeste = dataAcaoCobrancaAnterior;
}else{
dataPrevistaPredecessora.put(cobrancaAcao.getId(),dataTeste);
dataAcaoCobrancaAnterior = dataTeste;
}
}else{
//calcula a data da atividade de cobran�a
Integer numeroDiasExecucao = 0;
//cobrancaAtividade.getNumeroDiasExecucao();
// if(numeroDiasExecucao != null){
if(cobrancaAtividade.getId().equals(CobrancaAtividade.ENCERRAR_OS)){
if(cobrancaAcao.getNumerodiasEncerrarOSAtividade() != null){
numeroDiasExecucao = cobrancaAcao.getNumerodiasEncerrarOSAtividade();
}
}else{
if(cobrancaAcao.getNumerodiasEncerrarAtividade() != null){
numeroDiasExecucao = cobrancaAcao.getNumerodiasEncerrarAtividade();
}
}
dataTeste = Util.adicionarNumeroDiasUteisDeUmaData(dataTeste,numeroDiasExecucao,colecaoFeriadosNacionais,null);
// }
}
cobrancaAtividade.setDataPrevista(dataTeste);
if(cobrancaAtividade.getId().equals(CobrancaAtividade.ENCERRAR)){
dataAtividadeCobrancaEncerrarAnterior = dataTeste;
}
}
helper.setAtividadesCobranca(atividadesCobranca);
colecaoAcaoEAtividadeCobranca.add(helper);
}
sessao.setAttribute("colecaoAcaoEAtividadeCobranca",colecaoAcaoEAtividadeCobranca);
}
}else{
Iterator iterAcoesCobranca = acoesCobranca.iterator();
Collection colecaoAcaoEAtividadeCobranca = new ArrayList();
while (iterAcoesCobranca.hasNext()) {
CobrancaAcao cobrancaAcao = (CobrancaAcao) iterAcoesCobranca.next();
AcaoEAtividadeCobrancaHelper helper = new AcaoEAtividadeCobrancaHelper();
helper.setAcaoCobranca(cobrancaAcao);
filtroCobrancaAtividade = new FiltroCobrancaAtividade();
filtroCobrancaAtividade.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividadePredecessora");
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA));
filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO);
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(
FiltroCobrancaAtividade.ID_COBRANCA_ACAO, cobrancaAcao.getId()));
Collection atividadesCobranca = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName());
if(atividadesCobranca == null || atividadesCobranca.isEmpty()){
filtroCobrancaAtividade = new FiltroCobrancaAtividade();
filtroCobrancaAtividade.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividadePredecessora");
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA));
filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO);
filtroCobrancaAtividade.adicionarParametro(new ParametroNulo(FiltroCobrancaAtividade.ID_COBRANCA_ACAO));
atividadesCobranca = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName());
}
helper.setAtividadesCobranca(atividadesCobranca);
colecaoAcaoEAtividadeCobranca.add(helper);
}
sessao.setAttribute("colecaoAcaoEAtividadeCobranca",colecaoAcaoEAtividadeCobranca);
}
httpServletRequest.setAttribute("exibirDataInicio",exibirDataInicio);
//-------------------------------------------------------------------------
// sessao.setAttribute("atividadesCobranca", atividadesCobranca);
filtroCobrancaAtividade = new FiltroCobrancaAtividade();
filtroCobrancaAtividade.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividadePredecessora");
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_CRONOGRAMA, CobrancaAtividade.ATIVO_CRONOGRAMA));
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_OBRIGATORIEDADE, CobrancaAtividade.INDICADOR_OBRIGATORIEDADE_ATIVO));
filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.ORDEM_REALIZACAO);
Collection atividadesCobrancaObrigatoriedadeAtivo = fachada.pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName());
sessao.setAttribute("atividadesCobrancaObrigatoriedadeAtivo", atividadesCobrancaObrigatoriedadeAtivo);
return retorno;
}
private boolean verificarExecucaoAutomaticaGrupo(String grupoCobranca){
boolean retorno = false;
if(grupoCobranca != null && !grupoCobranca.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){
FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo();
filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, new Integer(grupoCobranca)));
Collection gruposCobranca = getFachada().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName());
CobrancaGrupo cobrancaGrupo = (CobrancaGrupo)Util.retonarObjetoDeColecao(gruposCobranca);
if(cobrancaGrupo.getIndicadorExecucaoAutomatica().equals(ConstantesSistema.SIM)){
retorno = true;
}
}
return retorno;
}
}