package gcom.gui.arrecadacao;
import gcom.arrecadacao.FiltroGuiaDevolucao;
import gcom.arrecadacao.GuiaDevolucao;
import gcom.cadastro.cliente.ClienteEndereco;
import gcom.cadastro.cliente.ClienteFone;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteEndereco;
import gcom.cadastro.cliente.FiltroClienteFone;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.Intervalo;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.List;
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;
/**
* Description of the Class
*
* @author Fernanda Paiva
* @create 02/03/2006
*
*/
public class PesquisarGuiaDevolucaoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria sessao
HttpSession sessao = httpServletRequest.getSession(false);
PesquisarGuiaDevolucaoActionForm pesquisarGuiaDevolucaoActionForm = (PesquisarGuiaDevolucaoActionForm) actionForm;
String codigoImovel = pesquisarGuiaDevolucaoActionForm
.getCodigoImovel();
String codigoCliente = pesquisarGuiaDevolucaoActionForm
.getCodigoCliente();
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
ActionForward retorno;
if (codigoImovel != null && !codigoImovel.equals("")) {
retorno = actionMapping
.findForward("pesquisarGuiaDevolucaoResultadoImovel");
} else {
retorno = actionMapping
.findForward("pesquisarGuiaDevolucaoResultadoCliente");
}
String dataEmissaoGuiaInicio = pesquisarGuiaDevolucaoActionForm
.getDataEmissaoGuiaInicio();
String dataEmissaoGuiaFim = pesquisarGuiaDevolucaoActionForm
.getDataEmissaoGuiaFim();
String dataValidadeGuiaInicio = pesquisarGuiaDevolucaoActionForm
.getDataValidadeGuiaInicio();
String dataValidadeGuiaFim = pesquisarGuiaDevolucaoActionForm
.getDataValidadeGuiaFim();
String[] idsSituacaoGuia = pesquisarGuiaDevolucaoActionForm
.getSituacaoGuia();
String[] idsTipoCredito = pesquisarGuiaDevolucaoActionForm
.getTipoCredito();
String[] idsTipoDocumento = pesquisarGuiaDevolucaoActionForm
.getTipoDocumento();
// Validando datas dos campos dataEmissaoGuia Inicio e Fim
if ((dataEmissaoGuiaInicio.trim().length() == 10)
&& (dataEmissaoGuiaFim.trim().length() == 10)) {
Calendar calendarInicio = new GregorianCalendar();
Calendar calendarFim = new GregorianCalendar();
calendarInicio.set(Calendar.DAY_OF_MONTH, new Integer(
dataEmissaoGuiaInicio.substring(0, 2)).intValue());
calendarInicio.set(Calendar.MONTH, new Integer(
dataEmissaoGuiaInicio.substring(3, 5)).intValue());
calendarInicio.set(Calendar.YEAR, new Integer(dataEmissaoGuiaInicio
.substring(6, 10)).intValue());
calendarFim.set(Calendar.DAY_OF_MONTH, new Integer(
dataEmissaoGuiaFim.substring(0, 2)).intValue());
calendarFim.set(Calendar.MONTH, new Integer(dataEmissaoGuiaFim
.substring(3, 5)).intValue());
calendarFim.set(Calendar.YEAR, new Integer(dataEmissaoGuiaFim
.substring(6, 10)).intValue());
// joga exess�o
if (calendarFim.compareTo(calendarInicio) < 0) {
throw new ActionServletException(
"atencao.data_fim_menor_inicio");
}
}
// Validando datas dos campos dataValidadeGuia Inicio e Fim
if ((dataValidadeGuiaInicio.trim().length() == 10)
&& (dataValidadeGuiaFim.trim().length() == 10)) {
Calendar calendarInicio = new GregorianCalendar();
Calendar calendarFim = new GregorianCalendar();
calendarInicio.set(Calendar.DAY_OF_MONTH, new Integer(
dataValidadeGuiaInicio.substring(0, 2)).intValue());
calendarInicio.set(Calendar.MONTH, new Integer(
dataValidadeGuiaInicio.substring(3, 5)).intValue());
calendarInicio.set(Calendar.YEAR, new Integer(
dataValidadeGuiaInicio.substring(6, 10)).intValue());
calendarFim.set(Calendar.DAY_OF_MONTH, new Integer(
dataValidadeGuiaFim.substring(0, 2)).intValue());
calendarFim.set(Calendar.MONTH, new Integer(dataValidadeGuiaFim
.substring(3, 5)).intValue());
calendarFim.set(Calendar.YEAR, new Integer(dataValidadeGuiaFim
.substring(6, 10)).intValue());
// joga exess�o
if (calendarFim.compareTo(calendarInicio) < 0) {
throw new ActionServletException(
"atencao.data_fim_menor_inicio");
}
}
FiltroGuiaDevolucao filtroGuiaDevolucao = new FiltroGuiaDevolucao();
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
// Passando os Parametros pros filtros...
if ((codigoImovel != null) && (!codigoImovel.trim().equals(""))) {
// para filtrar os dados da guia do imovel
filtroGuiaDevolucao.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.IMOVEL_ID, codigoImovel));
// para filtrar os dados do imovel
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, codigoImovel));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO,
ClienteRelacaoTipo.USUARIO));
filtroClienteImovel.adicionarParametro(new ParametroNulo(
FiltroClienteImovel.DATA_FIM_RELACAO));
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.setorComercial.municipio.unidadeFederacao");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroBairro.bairro");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.cep");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoAguaSituacao");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoEsgotoSituacao");
} else if ((codigoCliente != null)
&& (!codigoCliente.trim().equals(""))) {
// para filtrar os dados da guia do cliente
filtroGuiaDevolucao.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.CLIENTE_ID, codigoCliente));
// para filtrar os dados do cliente
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_ID, codigoCliente));
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente.clienteTipo");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente.profissao");
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente.ramoAtividade");
// Verifica se o c�digo do cliente foi digitado
if (pesquisarGuiaDevolucaoActionForm.getEnderecoCliente() == null
|| pesquisarGuiaDevolucaoActionForm.getEnderecoCliente().equalsIgnoreCase(""))
{
FiltroClienteEndereco filtroClienteEndereco = new FiltroClienteEndereco();
filtroClienteEndereco.adicionarParametro(new ParametroSimples(
FiltroClienteEndereco.CLIENTE_ID, codigoCliente));
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoTipo");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("cliente.clienteTipo");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("cliente.profissao");
filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("cliente.ramoAtividade");
Collection<ClienteEndereco> clienteEncontrado = fachada.pesquisar(filtroClienteEndereco,
ClienteEndereco.class.getName());
if (clienteEncontrado != null && !clienteEncontrado.isEmpty()) {
ClienteEndereco clienteEndereco =((List<ClienteEndereco>) clienteEncontrado).get(0);
// O endere�o do cliente foi encontrado
if (clienteEndereco.getCliente().getClienteTipo().getIndicadorPessoaFisicaJuridica() == 1 ){
if (clienteEndereco.getCliente().getCpfFormatado() != null)
{
pesquisarGuiaDevolucaoActionForm.setCpfCnpj(""
+ clienteEndereco.getCliente().getCpfFormatado());
}
}
else
{
if (clienteEndereco.getCliente().getCnpjFormatado() != null)
{
pesquisarGuiaDevolucaoActionForm.setCpfCnpj(""
+ clienteEndereco.getCliente().getCnpjFormatado());
}
}
if (clienteEndereco.getCliente().getProfissao() != null)
{
pesquisarGuiaDevolucaoActionForm.setProfissao(""
+ clienteEndereco.getCliente().getProfissao().getDescricao());
}
if (clienteEndereco.getCliente().getRamoAtividade() != null)
{
pesquisarGuiaDevolucaoActionForm.setRamoAtividade(""
+ clienteEndereco.getCliente().getRamoAtividade().getDescricao());
}
pesquisarGuiaDevolucaoActionForm.setEnderecoCliente(""
+ ((List<ClienteEndereco>) clienteEncontrado).get(0).getEnderecoFormatado());
if (pesquisarGuiaDevolucaoActionForm.getClienteFone() == null
|| pesquisarGuiaDevolucaoActionForm.getClienteFone().equalsIgnoreCase(""))
{
FiltroClienteFone filtroClienteFone = new FiltroClienteFone();
filtroClienteFone.adicionarParametro(new ParametroSimples(
FiltroClienteFone.CLIENTE_ID, codigoCliente));
Collection<ClienteFone> colecaoClienteFone = fachada.pesquisar(
filtroClienteFone, ClienteFone.class.getName());
if (colecaoClienteFone != null
&& !colecaoClienteFone.isEmpty()) {
// O telefone foi encontrado
pesquisarGuiaDevolucaoActionForm.setClienteFone(""
+ (((List<ClienteFone>) colecaoClienteFone).get(0)).getTelefone());
}
}
}
}
}
if (dataEmissaoGuiaFim.trim().equals(""))
{
dataEmissaoGuiaFim = dataEmissaoGuiaInicio;
}
if (dataValidadeGuiaFim.trim().equals(""))
{
dataValidadeGuiaFim = dataValidadeGuiaInicio;
}
if ((dataEmissaoGuiaInicio != null)
&& (!dataEmissaoGuiaInicio.trim().equals(""))) {
filtroGuiaDevolucao.adicionarParametro(new Intervalo(
FiltroGuiaDevolucao.DATA_EMISSAO, dataEmissaoGuiaInicio,
dataEmissaoGuiaFim));
}
if ((dataValidadeGuiaInicio != null)
&& (!dataValidadeGuiaInicio.trim().equals(""))) {
filtroGuiaDevolucao.adicionarParametro(new Intervalo(
FiltroGuiaDevolucao.DATA_VALIDADE, dataValidadeGuiaInicio,
dataValidadeGuiaFim));
}
int i = 0;
if (idsTipoCredito != null) {
while (i < idsTipoCredito.length) {
if (!idsTipoCredito[i].equals("")
&& new Integer(idsTipoCredito[i]) != ConstantesSistema.NUMERO_NAO_INFORMADO) {
if (i + 1 < idsTipoCredito.length) {
filtroGuiaDevolucao
.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.CREDITO_TIPO_ID,
idsTipoCredito[i],
ParametroSimples.CONECTOR_OR,
idsTipoCredito.length));
} else {
filtroGuiaDevolucao
.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.CREDITO_TIPO_ID,
idsTipoCredito[i]));
}
}
i++;
}
}
i = 0;
if (idsTipoDocumento != null) {
while (i < idsTipoDocumento.length) {
if (!idsTipoDocumento[i].equals("")
&& new Integer(idsTipoDocumento[i]) != ConstantesSistema.NUMERO_NAO_INFORMADO) {
if (i + 1 < idsTipoDocumento.length) {
filtroGuiaDevolucao
.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.DOCUMENTO_TIPO_ID,
idsTipoDocumento[i],
ParametroSimples.CONECTOR_OR,
idsTipoDocumento.length));
} else {
filtroGuiaDevolucao
.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.DOCUMENTO_TIPO_ID,
idsTipoDocumento[i]));
}
}
i++;
}
}
i = 0;
if (idsSituacaoGuia != null) {
while (i < idsSituacaoGuia.length) {
if (!idsSituacaoGuia[i].equals("")
&& new Integer(idsSituacaoGuia[i]) != ConstantesSistema.NUMERO_NAO_INFORMADO) {
if (i + 1 < idsSituacaoGuia.length) {
filtroGuiaDevolucao
.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.DEBITO_CREDITO_SITUACAO_ATUAL_ID,
idsSituacaoGuia[i],
ParametroSimples.CONECTOR_OR,
idsSituacaoGuia.length));
} else {
filtroGuiaDevolucao
.adicionarParametro(new ParametroSimples(
FiltroGuiaDevolucao.DEBITO_CREDITO_SITUACAO_ATUAL_ID,
idsSituacaoGuia[i]));
}
}
i++;
}
}
// adicionando caminho para o filtro da guia
filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("creditoTipo");
filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("documentoTipo");
filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual");
filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior");
// Filtrando os dados...
Collection<GuiaDevolucao> colecaoGuiaDevolucao = null;//fachada.pesquisar(filtroGuiaDevolucao, GuiaDevolucao.class.getName());
Map<String,Object> resultado = controlarPaginacao(httpServletRequest, retorno,
filtroGuiaDevolucao, GuiaDevolucao.class.getName());
colecaoGuiaDevolucao = (Collection<GuiaDevolucao>) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
// valida se a colecao esta vazia
if (colecaoGuiaDevolucao == null) {
throw new ActionServletException("atencao.colecao_vazia");
}
if (!colecaoGuiaDevolucao.isEmpty()) {
// adicionando caminho para os dados do cliente/imovel
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("cliente");
// Filtrando os dados...
Collection<ClienteImovel> colecaoClienteImovel = fachada
.pesquisar(filtroClienteImovel, ClienteImovel.class
.getName());
ClienteImovel dadosClienteImovel =((List<ClienteImovel>) colecaoClienteImovel).get(0);
if ((codigoImovel != null) && (!codigoImovel.trim().equals(""))) {
if (dadosClienteImovel.getImovel().getId() != null
&& !dadosClienteImovel.getImovel().getId().equals(
"")) {
pesquisarGuiaDevolucaoActionForm.setCodigoImovel(""
+ dadosClienteImovel.getImovel().getId());
}
pesquisarGuiaDevolucaoActionForm.setInscricao(""
+ fachada.pesquisarInscricaoImovel(new Integer(codigoImovel)));
if (dadosClienteImovel.getImovel().getLigacaoAguaSituacao() != null) {
pesquisarGuiaDevolucaoActionForm.setSituacaoAgua(""
+ dadosClienteImovel.getImovel()
.getLigacaoAguaSituacao()
.getDescricao());
}
if (dadosClienteImovel.getImovel()
.getLigacaoEsgotoSituacao() != null) {
pesquisarGuiaDevolucaoActionForm.setSituacaoEsgoto(""
+ dadosClienteImovel.getImovel()
.getLigacaoEsgotoSituacao()
.getDescricao());
}
}
if ((codigoCliente != null)
&& (!codigoCliente.trim().equals(""))) {
if (dadosClienteImovel.getCliente() != null) {
pesquisarGuiaDevolucaoActionForm.setNomeCliente(""
+ dadosClienteImovel.getCliente().getNome());
pesquisarGuiaDevolucaoActionForm.setCodigoCliente(""
+ dadosClienteImovel.getCliente().getId());
}
if (dadosClienteImovel.getCliente().getClienteTipo()
.getIndicadorPessoaFisicaJuridica() == 1) {
if (dadosClienteImovel.getCliente().getCpfFormatado() != null) {
pesquisarGuiaDevolucaoActionForm.setCpfCnpj(""
+ dadosClienteImovel.getCliente()
.getCpfFormatado());
}
} else {
if (dadosClienteImovel.getCliente().getCnpjFormatado() != null) {
pesquisarGuiaDevolucaoActionForm.setCpfCnpj(""
+ dadosClienteImovel.getCliente()
.getCnpjFormatado());
}
}
if (dadosClienteImovel.getCliente().getProfissao() != null) {
pesquisarGuiaDevolucaoActionForm.setProfissao(""
+ dadosClienteImovel.getCliente()
.getProfissao().getDescricao());
}
if (dadosClienteImovel.getCliente().getRamoAtividade() != null) {
pesquisarGuiaDevolucaoActionForm.setRamoAtividade(""
+ dadosClienteImovel.getCliente()
.getRamoAtividade().getDescricao());
}
}
if (dadosClienteImovel.getCliente() != null) {
pesquisarGuiaDevolucaoActionForm.setNomeCliente(""
+ dadosClienteImovel.getCliente().getNome());
}
// joga a colecao da Guia na sess�o
sessao.setAttribute("colecaoGuiaDevolucao",
colecaoGuiaDevolucao);
} else {
throw new ActionServletException("atencao.colecao_vazia");
}
return retorno;
}
}