package gcom.gui.faturamento.conta;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.ContaMotivoRetificacao;
import gcom.faturamento.conta.FiltroMotivoRetificacaoConta;
import gcom.faturamento.debito.DebitoTipo;
import gcom.faturamento.debito.FiltroDebitoTipo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
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;
public class ExibirRetirarDebitoCobradoConjuntoContaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirRetirarDebitoCobradoConjuntoConta");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
RetirarDebitoCobradoActionForm retirarDebitoCobradoActionForm = (RetirarDebitoCobradoActionForm) actionForm;
Integer anoMes = null;
if(httpServletRequest.getParameter("mesAno") != null){
anoMes = Util.formatarMesAnoComBarraParaAnoMes(httpServletRequest.getParameter("mesAno"));
sessao.setAttribute("anoMes", anoMes);
}
Integer anoMesFim = null;
if(httpServletRequest.getParameter("mesAnoFim") != null){
anoMesFim = Util.formatarMesAnoComBarraParaAnoMes(httpServletRequest.getParameter("mesAnoFim"));
sessao.setAttribute("anoMesFim", anoMesFim);
}
Date dataVencimentoContaInicio = null;
Date dataVencimentoContaFim = null;
String indicadorContaPaga = null;
Integer idGrupoFaturamento = null;
if (httpServletRequest.getParameter("dataVencimentoContaInicial") != null){
dataVencimentoContaInicio = Util.converteStringParaDate(httpServletRequest.getParameter("dataVencimentoContaInicial"));
sessao.setAttribute("dataVencimentoContaInicial", dataVencimentoContaInicio);
}
if (httpServletRequest.getParameter("dataVencimentoContaFinal") != null){
dataVencimentoContaFim = Util.converteStringParaDate(httpServletRequest.getParameter("dataVencimentoContaFinal"));
sessao.setAttribute("dataVencimentoContaFinal", dataVencimentoContaFim);
}
if (httpServletRequest.getParameter("indicadorContaPaga") != null){
indicadorContaPaga = httpServletRequest.getParameter("indicadorContaPaga");
sessao.setAttribute("indicadorContaPaga", indicadorContaPaga);
}
if (httpServletRequest.getParameter("idGrupoFaturamento") != null){
idGrupoFaturamento = new Integer((String) httpServletRequest.getParameter("idGrupoFaturamento"));
sessao.setAttribute("idGrupoFaturamento", idGrupoFaturamento);
}
//Carregar: Lista dos motivos de retificacao da conta
if (sessao.getAttribute("colecaoMotivoRetificacaoConta") == null){
FiltroMotivoRetificacaoConta filtroMotivoRetificacaoConta =
new FiltroMotivoRetificacaoConta(FiltroMotivoRetificacaoConta.DESCRICAO_MOTIVO_RETIFICACAO_CONTA);
filtroMotivoRetificacaoConta.adicionarParametro(
new ParametroSimples(FiltroMotivoRetificacaoConta.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoMotivoRetificacaoConta = fachada.pesquisar(filtroMotivoRetificacaoConta,
ContaMotivoRetificacao.class.getName());
if (colecaoMotivoRetificacaoConta == null || colecaoMotivoRetificacaoConta.isEmpty()){
throw new ActionServletException(
"atencao.pesquisa.nenhum_registro_tabela", null, "MOTIVO_RETIFICACAO_CONTA");
}
// Disponibiliza a cole��o pela sess�o
sessao.setAttribute("colecaoMotivoRetificacaoConta", colecaoMotivoRetificacaoConta);
}
String tipoDebito = (String) retirarDebitoCobradoActionForm.getIdTipoDebito();
// PESQUISAR CLIENTE
if (tipoDebito != null && !tipoDebito.toString().trim().equalsIgnoreCase("")) {
this.pesquisarTipoDebito(tipoDebito, retirarDebitoCobradoActionForm, fachada, httpServletRequest);
}
if(httpServletRequest.getParameter("adicionar") != null){
Collection<DebitoTipo> debitosTipoRetirar = null;
if(sessao.getAttribute("debitosTipoRetirar") != null){
debitosTipoRetirar = (Collection)sessao.getAttribute("debitosTipoRetirar");
}else{
debitosTipoRetirar = new ArrayList();
}
this.pesquisarTipoDebito(tipoDebito, retirarDebitoCobradoActionForm, fachada, httpServletRequest);
DebitoTipo debitoTipo = new DebitoTipo();
debitoTipo.setId(Integer.parseInt(retirarDebitoCobradoActionForm.getIdTipoDebito()));
debitoTipo.setDescricao(retirarDebitoCobradoActionForm.getDescricaoDebito());
if(!debitosTipoRetirar.contains(debitoTipo)){
debitosTipoRetirar.add(debitoTipo);
sessao.setAttribute("debitosTipoRetirar", debitosTipoRetirar);
}
retirarDebitoCobradoActionForm.setIdTipoDebito("");
retirarDebitoCobradoActionForm.setDescricaoDebito("");
}
if (httpServletRequest.getParameter("tipoConsulta") != null &&
!httpServletRequest.getParameter("tipoConsulta").equals("")) {
if (httpServletRequest.getParameter("tipoConsulta").equals("tipoDebito")) {
retirarDebitoCobradoActionForm.setIdTipoDebito(
httpServletRequest.getParameter("idCampoEnviarDados"));
retirarDebitoCobradoActionForm.setDescricaoDebito(
httpServletRequest.getParameter("descricaoCampoEnviarDados"));
}
}
return retorno;
}
public void pesquisarTipoDebito(String tipoDebito, RetirarDebitoCobradoActionForm form,
Fachada fachada, HttpServletRequest httpServletRequest) {
FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo();
filtroDebitoTipo.adicionarParametro(new ParametroSimples(
FiltroDebitoTipo.ID, tipoDebito));
filtroDebitoTipo.adicionarParametro(new ParametroSimples(
FiltroDebitoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection debitoTipoEncontrado = fachada.pesquisar(filtroDebitoTipo,
DebitoTipo.class.getName());
if (debitoTipoEncontrado != null && !debitoTipoEncontrado.isEmpty()) {
// O Cliente foi encontrado
if (((DebitoTipo) ((List) debitoTipoEncontrado).get(0))
.getIndicadorUso().equals(
ConstantesSistema.INDICADOR_USO_DESATIVO)) {
throw new ActionServletException("atencao.cliente.inativo",
null, ""
+ ((DebitoTipo) ((List) debitoTipoEncontrado).get(0)).getId());
}
form.setIdTipoDebito(((DebitoTipo) ((List) debitoTipoEncontrado).get(0)).getId().toString());
form.setDescricaoDebito(((DebitoTipo) ((List) debitoTipoEncontrado).get(0)).getDescricao());
} else {
throw new ActionServletException(
"atencao.tipo_debito_inexistente");
}
}
}