package gcom.gui.cobranca.cobrancaporresultado;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import gcom.cadastro.empresa.EmpresaCobrancaFaixa;
import gcom.cadastro.empresa.EmpresaContratoCobranca;
import gcom.cadastro.empresa.FiltroEmpresaCobrancaFaixa;
import gcom.cadastro.empresa.FiltroEmpresaContratoCobranca;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroImovelPerfil;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroQuadra;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.Quadra;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cobranca.ComandoEmpresaCobrancaConta;
import gcom.cobranca.FiltroComandoEmpresaCobrancaConta;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.StatusWizard;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesIn;
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;
/**
* [UC1169] Movimentar Ordens de Servi�o de Cobran�a por Resultado
*
* Action respons�vel por exibir a p�gina de Emitir OS do processo
* de movimentar ordem de servi�o de cobran�a por resultado.
*
* @author Mariana Victor
* @date 10/05/2011
*/
public class ExibirMovimentarOrdemServicoEmitirOSAction extends GcomAction {
/**
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno para a tela de Emitir OS
ActionForward retorno = actionMapping.findForward("movimentarOrdemServicoEmitirOS");
MovimentarOrdemServicoActionForm form = (MovimentarOrdemServicoActionForm) actionForm;
pesquisarCamposEnter(httpServletRequest,form, this.getFachada(), this.getSessao(httpServletRequest));
if (httpServletRequest.getParameter("confirmado") != null
&& httpServletRequest.getParameter("confirmado").equalsIgnoreCase("ok")) {
httpServletRequest.setAttribute("confirmacao", "true");
retorno = actionMapping.findForward("emitirOSAction");
return retorno;
}
if (httpServletRequest.getParameter("limparTotalizacao") != null
&& httpServletRequest.getParameter("limparTotalizacao").equalsIgnoreCase("SIM")) {
form.setQtdContas("");
form.setQtdClientes("");
form.setValorTotalDivida("");
form.setQtdeTotalClientes("");
form.setTotalSelecionado(null);
form.setColecaoInformada(null);
this.getSessao(httpServletRequest).removeAttribute("colecaoQuantidadeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoFaixa");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeClientes");
this.getSessao(httpServletRequest).removeAttribute("colecaoValorTotalDivida");
}
//1� div
if (httpServletRequest.getParameter("pesquisarQtdContas") != null
&& form.getIdEmpresa() != null
&& !form.getIdEmpresa().equals("")) {
MovimentarOrdemServicoEmitirOSHelper movimentarOrdemServicoEmitirOSHelper = this.retornaQtdContas(form);
Integer idEmpresaContratoCobranca = new Integer(form.getIdEmpresa());
if (movimentarOrdemServicoEmitirOSHelper != null) {
this.getSessao(httpServletRequest).setAttribute("movimentarOrdemServicoEmitirOSHelper", movimentarOrdemServicoEmitirOSHelper);
boolean agruparPorImovel = true;
FiltroEmpresaContratoCobranca filtroEmpresaContratoCobranca = new FiltroEmpresaContratoCobranca();
filtroEmpresaContratoCobranca.adicionarParametro(new ParametroSimples(
FiltroEmpresaContratoCobranca.EMPRESA_ID, idEmpresaContratoCobranca));
Collection colecaoEmpresaContratoCobranca = Fachada.getInstancia().pesquisar(
filtroEmpresaContratoCobranca, EmpresaContratoCobranca.class.getName());
if (colecaoEmpresaContratoCobranca != null && !colecaoEmpresaContratoCobranca.isEmpty()) {
EmpresaContratoCobranca empresaContratoCobranca = (EmpresaContratoCobranca)
Util.retonarObjetoDeColecao(colecaoEmpresaContratoCobranca);
idEmpresaContratoCobranca = empresaContratoCobranca.getId();
if (empresaContratoCobranca.getPercentualContratoCobranca() != null
&& empresaContratoCobranca.getPercentualContratoCobranca().compareTo(BigDecimal.ZERO) != 0) {
agruparPorImovel = false;
}
}
if (agruparPorImovel) {
Collection<Object[]> colecaoDados = this.getFachada()
.pesquisarQuantidadeContasComandoAgrupandoPorImovel(movimentarOrdemServicoEmitirOSHelper);
if (colecaoDados != null && !colecaoDados.isEmpty()) {
Collection<String> colecaoFaixa = new ArrayList();
Collection<Integer> colecaoQtdeContas = new ArrayList();
Collection<Integer> colecaoQtdeClientes = new ArrayList();
Collection<BigDecimal> colecaoValorTotalDivida= new ArrayList();
Integer qtdeTotalClientes = 0;
FiltroEmpresaCobrancaFaixa filtroEmpresaCobrancaFaixa = new FiltroEmpresaCobrancaFaixa();
filtroEmpresaCobrancaFaixa.adicionarParametro(new ParametroSimples(
FiltroEmpresaCobrancaFaixa.EMPRESA_CONTRATO_COBRANCA_ID, idEmpresaContratoCobranca));
filtroEmpresaCobrancaFaixa.setCampoOrderBy(FiltroEmpresaCobrancaFaixa.NUMERO_MAXIMO_CONTAS_FAIXA);
List<EmpresaCobrancaFaixa> colecaoEmpresaCobrancaFaixa = (List<EmpresaCobrancaFaixa>)Fachada.getInstancia().pesquisar(
filtroEmpresaCobrancaFaixa, EmpresaCobrancaFaixa.class.getName());
if (colecaoEmpresaCobrancaFaixa != null && !colecaoEmpresaCobrancaFaixa.isEmpty()) {
EmpresaCobrancaFaixa empresaCobrancaFaixa = (EmpresaCobrancaFaixa) colecaoEmpresaCobrancaFaixa.get(0);
Integer numeroMinimoContas = null;
Integer numeroMaximoContas = empresaCobrancaFaixa.getNumeroMinimoContasFaixa() - 1;
Integer qtdeContas = 0;
Integer qtdeClientes = 0;
BigDecimal valorTotalDivida = new BigDecimal(0.0);
Iterator iteratorColecaoDados = colecaoDados.iterator();
for (int i = 0; i < colecaoEmpresaCobrancaFaixa.size(); i++) {
empresaCobrancaFaixa = (EmpresaCobrancaFaixa) colecaoEmpresaCobrancaFaixa.get(i);
numeroMinimoContas = empresaCobrancaFaixa.getNumeroMinimoContasFaixa();
numeroMaximoContas = null;
if (i < (colecaoEmpresaCobrancaFaixa.size() - 1)) {
numeroMaximoContas = ((EmpresaCobrancaFaixa) colecaoEmpresaCobrancaFaixa.get(i + 1)).getNumeroMinimoContasFaixa() - 1;
}
qtdeContas = 0;
qtdeClientes = 0;
valorTotalDivida = new BigDecimal(0.0);
iteratorColecaoDados = colecaoDados.iterator();
while (iteratorColecaoDados.hasNext()) {
Object[] dados = (Object[]) iteratorColecaoDados.next();
if (dados[0] != null){
Integer qnt = (Integer) dados[0];
if (qnt >= numeroMinimoContas
&& (numeroMaximoContas == null || qnt <= numeroMaximoContas)) {
qtdeContas += qnt;
if(dados[1] !=null ){
qtdeClientes += (Integer) dados[1];
qtdeTotalClientes += (Integer) dados[1];
}
if(dados[2] !=null ){
valorTotalDivida = valorTotalDivida.add((BigDecimal) dados[2]);
}
}
}
}
if (i < (colecaoEmpresaCobrancaFaixa.size() - 1)) {
colecaoFaixa.add(numeroMinimoContas + " a " + numeroMaximoContas);
} else {
colecaoFaixa.add("Mais de " + numeroMinimoContas);
}
colecaoQtdeContas.add(qtdeContas);
colecaoQtdeClientes.add(qtdeClientes);
colecaoValorTotalDivida.add(valorTotalDivida);
}
if (!colecaoQtdeContas.isEmpty()
&& !colecaoQtdeClientes.isEmpty()
&& !colecaoValorTotalDivida.isEmpty()) {
form.setColecaoInformada("sim");
form.setQtdeTotalClientes(qtdeTotalClientes.toString());
this.getSessao(httpServletRequest).setAttribute("colecaoQuantidadeContas", true);
this.getSessao(httpServletRequest).setAttribute("tamanho", colecaoFaixa.size());
this.getSessao(httpServletRequest).setAttribute("colecaoFaixa", colecaoFaixa);
this.getSessao(httpServletRequest).setAttribute("colecaoQtdeContas", colecaoQtdeContas);
this.getSessao(httpServletRequest).setAttribute("colecaoQtdeClientes", colecaoQtdeClientes);
this.getSessao(httpServletRequest).setAttribute("colecaoValorTotalDivida", colecaoValorTotalDivida);
} else {
form.setQtdContas("0");
form.setQtdClientes("0");
form.setValorTotalDivida(Util.formatarMoedaReal(BigDecimal.ZERO));
form.setQtdeTotalClientes("0");
form.setColecaoInformada(null);
this.getSessao(httpServletRequest).removeAttribute("colecaoQuantidadeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoFaixa");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeClientes");
this.getSessao(httpServletRequest).removeAttribute("colecaoValorTotalDivida");
}
} else {
form.setQtdContas("0");
form.setQtdClientes("0");
form.setValorTotalDivida(Util.formatarMoedaReal(BigDecimal.ZERO));
form.setQtdeTotalClientes("0");
form.setColecaoInformada(null);
this.getSessao(httpServletRequest).removeAttribute("colecaoQuantidadeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoFaixa");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeClientes");
this.getSessao(httpServletRequest).removeAttribute("colecaoValorTotalDivida");
}
} else {
form.setQtdContas("0");
form.setQtdClientes("0");
form.setValorTotalDivida(Util.formatarMoedaReal(BigDecimal.ZERO));
form.setQtdeTotalClientes("0");
form.setColecaoInformada(null);
this.getSessao(httpServletRequest).removeAttribute("colecaoQuantidadeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoFaixa");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeClientes");
this.getSessao(httpServletRequest).removeAttribute("colecaoValorTotalDivida");
}
} else {
Object[] dados = this.getFachada().pesquisarQuantidadeContasComando(movimentarOrdemServicoEmitirOSHelper);
form.setColecaoInformada(null);
this.getSessao(httpServletRequest).removeAttribute("colecaoQuantidadeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoFaixa");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeContas");
this.getSessao(httpServletRequest).removeAttribute("colecaoQtdeClientes");
this.getSessao(httpServletRequest).removeAttribute("colecaoValorTotalDivida");
if (dados != null) {
Integer qtdeContas = null;
Integer qtdeClientes = null;
BigDecimal valorTotalDivida = new BigDecimal(0.0);
if(dados[0] !=null ){
qtdeContas = (Integer) dados[0];
}
if(dados[1] !=null ){
qtdeClientes = (Integer) dados[1];
}
if(dados[2] !=null ){
valorTotalDivida = (BigDecimal) dados[2];
}
form.setQtdContas(qtdeContas.toString());
form.setQtdClientes(qtdeClientes.toString());
form.setValorTotalDivida(Util.formatarMoedaReal(valorTotalDivida));
form.setQtdeTotalClientes(qtdeClientes.toString());
}
}
form.setTotalSelecionado("sim");
this.getSessao(httpServletRequest).setAttribute("habilitaCamposCiclo", true);
} else {
this.getSessao(httpServletRequest).removeAttribute("habilitaCamposCiclo");
this.getSessao(httpServletRequest).removeAttribute("movimentarOrdemServicoEmitirOSHelper");
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
}
//2� div
if (httpServletRequest.getParameter("pesquisarOSEmpresaCobranca") != null
&& httpServletRequest.getParameter("pesquisarOSEmpresaCobranca").equalsIgnoreCase("SIM")) {
Integer idTipoServico = null;
if (form.getIdTipoServico() != null && !form.getIdTipoServico().equals("")) {
idTipoServico = new Integer(form.getIdTipoServico());
}
Collection<Object[]> colecaoDados = Fachada.getInstancia().
pesquisarDadosOSGeradasPelaEmpresa(new Integer(form.getIdComandoContaCobranca()),
idTipoServico);
if (colecaoDados != null && !colecaoDados.isEmpty()) {
Collection<OrdemServicoGeradaEmpresaCobrancaHelper> colecaoOSEmpresaCobranca = new ArrayList();
Iterator iterator = colecaoDados.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
OrdemServicoGeradaEmpresaCobrancaHelper helper = new OrdemServicoGeradaEmpresaCobrancaHelper();
if (dados[0] != null) {
helper.setNumeroOS(((Integer)dados[0]).toString());
}
if (dados[1] != null) {
helper.setTipoServico((String)dados[1]);
}
if (dados[2] != null) {
helper.setMatriculaImovel(((Integer)dados[2]).toString());
}
if (dados[3] != null) {
helper.setCliente((String)dados[3]);
}
colecaoOSEmpresaCobranca.add(helper);
}
this.getSessao(httpServletRequest).setAttribute("colecaoOSEmpresaCobranca", colecaoOSEmpresaCobranca);
} else {
this.getSessao(httpServletRequest).removeAttribute("colecaoOSEmpresaCobranca");
}
}
//3� div
if (httpServletRequest.getParameter("pesquisarOSRA") != null
&& httpServletRequest.getParameter("pesquisarOSRA").equalsIgnoreCase("SIM")) {
Integer idTipoServico = null;
if (form.getIdTipoServicoRA() != null && !form.getIdTipoServicoRA().equals("")) {
idTipoServico = new Integer(form.getIdTipoServicoRA());
}
Collection<Object[]> colecaoDados = Fachada.getInstancia().
pesquisarDadosOSRegistroAtendimento(new Integer(form.getIdComandoContaCobranca()),
idTipoServico);
if (colecaoDados != null && !colecaoDados.isEmpty()) {
Collection<OrdemServicoGeradaEmpresaCobrancaHelper> colecaoOSRegistroAtendimento = new ArrayList();
Iterator iterator = colecaoDados.iterator();
while(iterator.hasNext()) {
Object[] dados = (Object[]) iterator.next();
OrdemServicoGeradaEmpresaCobrancaHelper helper = new OrdemServicoGeradaEmpresaCobrancaHelper();
if (dados[0] != null) {
helper.setNumeroOS(((Integer)dados[0]).toString());
}
if (dados[1] != null) {
helper.setTipoServico((String)dados[1]);
}
if (dados[2] != null) {
helper.setMatriculaImovel(((Integer)dados[2]).toString());
}
if (dados[3] != null) {
helper.setCliente((String)dados[3]);
}
colecaoOSRegistroAtendimento.add(helper);
}
this.getSessao(httpServletRequest).setAttribute("colecaoOSRegistroAtendimento", colecaoOSRegistroAtendimento);
} else {
this.getSessao(httpServletRequest).removeAttribute("colecaoOSRegistroAtendimento");
}
}
if (this.getSessao(httpServletRequest).getAttribute("statusWizard") != null) {
//Monta o Status do Wizard
StatusWizard statusWizard = (StatusWizard) this.getSessao(httpServletRequest).getAttribute("statusWizard");
statusWizard.setNomeBotaoConcluir("Emitir OS");
//manda o statusWizard para a sess�o
this.getSessao(httpServletRequest).setAttribute("statusWizard", statusWizard);
}
//Retorna o mapemaneto na vari�vel "retorno"
return retorno;
}
private void pesquisarCamposEnter(
HttpServletRequest httpServletRequest,
MovimentarOrdemServicoActionForm form,
Fachada fachada, HttpSession sessao) {
String idLocalidadeOrigem = form
.getIdLocalidadeOrigem();
// Pesquisa a localidade inicial
if (idLocalidadeOrigem != null
&& !idLocalidadeOrigem.trim().equals("")
&& httpServletRequest.getParameter("tipoPesquisa") != null
&& (httpServletRequest.getParameter("tipoPesquisa").equals("localidadeOrigem")
|| httpServletRequest.getParameter("tipoPesquisa").equals("setorComercialOrigem")
|| httpServletRequest.getParameter("tipoPesquisa").equals("quadraInicial"))) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idLocalidadeOrigem));
Collection<Localidade> colecaoLocalidade = fachada.pesquisar(
filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoLocalidade);
form
.setIdLocalidadeOrigem(localidade.getId().toString());
form
.setNomeLocalidadeOrigem(localidade.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"codigoSetorComercialOrigem");
if (httpServletRequest.getParameter("tipoPesquisa").equals("localidadeOrigem")) {
form
.setIdLocalidadeDestino(localidade.getId().toString());
form
.setNomeLocalidadeDestino(localidade.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"codigoSetorComercialDestino");
}
String codigoSetorComercialOrigem = form
.getCodigoSetorComercialOrigem();
// Pesquisa o setor comercial inicial
if (codigoSetorComercialOrigem != null
&& !codigoSetorComercialOrigem.trim().equals("")) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE,
localidade.getId()));
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
codigoSetorComercialOrigem));
Collection<SetorComercial> colecaoSetorComercial = fachada
.pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (colecaoSetorComercial != null
&& !colecaoSetorComercial.isEmpty()) {
SetorComercial setorComercial = (SetorComercial) Util
.retonarObjetoDeColecao(colecaoSetorComercial);
form
.setIdSetorComercialOrigem(""
+ setorComercial.getId());
form
.setCodigoSetorComercialOrigem(""
+ setorComercial.getCodigo());
form
.setDescricaoSetorComercialOrigem(setorComercial
.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"idLocalidadeDestino");
if (httpServletRequest.getParameter("tipoPesquisa").equals("setorComercialOrigem")) {
form
.setIdSetorComercialDestino(""
+ setorComercial.getId());
form
.setCodigoSetorComercialDestino(""
+ setorComercial.getCodigo());
form
.setDescricaoSetorComercialDestino(setorComercial
.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"idLocalidadeDestino");
}
String codigoQuadraInicial = form
.getCodigoQuadraInicial();
// Pesquisa a quadra inicial
if (codigoQuadraInicial != null
&& !codigoQuadraInicial.trim().equals("")) {
FiltroQuadra filtroQuadra = new FiltroQuadra();
filtroQuadra
.adicionarParametro(new ParametroSimples(
FiltroQuadra.ID_SETORCOMERCIAL,
setorComercial.getId()));
filtroQuadra
.adicionarParametro(new ParametroSimples(
FiltroQuadra.NUMERO_QUADRA,
codigoQuadraInicial));
Collection<Quadra> colecaoQuadra = fachada
.pesquisar(filtroQuadra,
Quadra.class.getName());
if (colecaoQuadra != null
&& !colecaoQuadra.isEmpty()) {
Quadra quadra = (Quadra) Util
.retonarObjetoDeColecao(colecaoQuadra);
form
.setCodigoQuadraInicial(""
+ quadra.getNumeroQuadra());
form
.setDescricaoQuadraInicial(quadra
.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"codigoQuadraInicial");
if (httpServletRequest.getParameter("tipoPesquisa").equals("quadraInicial")) {
form
.setCodigoQuadraFinal(""
+ quadra.getNumeroQuadra());
form
.setDescricaoQuadraFinal(quadra
.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"codigoQuadraInicial");
}
sessao.removeAttribute(
"quadraInicialInexistente");
} else {
form
.setCodigoQuadraInicial("");
form
.setDescricaoQuadraInicial("QUADRA INEXISTENTE");
sessao.setAttribute(
"quadraInicialInexistente", true);
httpServletRequest.setAttribute("nomeCampo",
"codigoQuadraInicial");
}
}
sessao.removeAttribute(
"setorComercialOrigemInexistente");
} else {
form
.setIdSetorComercialOrigem("");
form
.setCodigoSetorComercialOrigem("");
form
.setDescricaoSetorComercialOrigem("SETOR COMERCIAL INEXISTENTE");
form
.setIdSetorComercialDestino("");
form
.setCodigoSetorComercialDestino("");
form
.setDescricaoSetorComercialDestino("");
sessao.setAttribute(
"setorComercialOrigemInexistente", true);
httpServletRequest.setAttribute("nomeCampo",
"codigoSetorComercialOrigem");
}
}
sessao.removeAttribute(
"localidadeOrigemInexistente");
} else {
form.setIdLocalidadeOrigem("");
form.setNomeLocalidadeOrigem("LOCALIDADE INEXISTENTE");
httpServletRequest.setAttribute("localidadeOrigemInexistente",
true);
form.setIdLocalidadeDestino("");
form.setNomeLocalidadeDestino("");
sessao.setAttribute("localidadeOrigemInexistente",
true);
httpServletRequest.setAttribute("nomeCampo",
"idLocalidadeOrigem");
}
}
String idLocalidadeDestino = form
.getIdLocalidadeDestino();
// Pesquisa a localidade final
if (idLocalidadeDestino != null
&& !idLocalidadeDestino.trim().equals("")
&& httpServletRequest.getParameter("tipoPesquisa") != null
&& (httpServletRequest.getParameter("tipoPesquisa").equals("localidadeDestino")
|| httpServletRequest.getParameter("tipoPesquisa").equals("setorComercialDestino")
|| httpServletRequest.getParameter("tipoPesquisa").equals("quadraFinal"))) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idLocalidadeDestino));
Collection<Localidade> colecaoLocalidade = fachada.pesquisar(
filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoLocalidade);
form
.setIdLocalidadeDestino(localidade.getId().toString());
form
.setNomeLocalidadeDestino(localidade.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"codigoSetorComercialDestino");
String codigoSetorComercialDestino = form
.getCodigoSetorComercialDestino();
// Pesquisa o setor comercial inicial
if (codigoSetorComercialDestino != null
&& !codigoSetorComercialDestino.trim().equals("")) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE,
localidade.getId()));
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
codigoSetorComercialDestino));
Collection<SetorComercial> colecaoSetorComercial = fachada
.pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (colecaoSetorComercial != null
&& !colecaoSetorComercial.isEmpty()) {
SetorComercial setorComercial = (SetorComercial) Util
.retonarObjetoDeColecao(colecaoSetorComercial);
form
.setIdSetorComercialDestino(""
+ setorComercial.getId());
form
.setCodigoSetorComercialDestino(""
+ setorComercial.getCodigo());
form
.setDescricaoSetorComercialDestino(setorComercial
.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"referenciaInicial");
String codigoQuadraFinal = form
.getCodigoQuadraFinal();
// Pesquisa a quadra final
if (codigoQuadraFinal != null
&& !codigoQuadraFinal.trim().equals("")) {
if (form.getCodigoQuadraInicial() != null
&& !form.getCodigoQuadraInicial().trim().equals("")) {
Integer codQuadraFinal = new Integer(codigoQuadraFinal);
Integer codQuadraInicial = new Integer(form.getCodigoQuadraInicial());
if (codQuadraFinal.compareTo(codQuadraInicial) < 0) {
throw new ActionServletException("atencao.quadraInicial.maior.que.quadraFinal");
}
}
FiltroQuadra filtroQuadra = new FiltroQuadra();
filtroQuadra
.adicionarParametro(new ParametroSimples(
FiltroQuadra.ID_SETORCOMERCIAL,
setorComercial.getId()));
filtroQuadra
.adicionarParametro(new ParametroSimples(
FiltroQuadra.NUMERO_QUADRA,
codigoQuadraFinal));
Collection<Quadra> colecaoQuadra = fachada
.pesquisar(filtroQuadra,
Quadra.class.getName());
if (colecaoQuadra != null
&& !colecaoQuadra.isEmpty()) {
Quadra quadra = (Quadra) Util
.retonarObjetoDeColecao(colecaoQuadra);
form
.setCodigoQuadraFinal(""
+ quadra.getNumeroQuadra());
form
.setDescricaoQuadraFinal(quadra
.getDescricao());
httpServletRequest.setAttribute("nomeCampo",
"codigoQuadraFinal");
sessao.removeAttribute(
"quadraFinalInexistente");
} else {
form
.setCodigoQuadraFinal("");
form
.setDescricaoQuadraFinal("QUADRA INEXISTENTE");
sessao.setAttribute(
"quadraFinalInexistente", true);
httpServletRequest.setAttribute("nomeCampo",
"codigoQuadraFinal");
}
}
sessao.removeAttribute(
"setorComercialDestinoInexistente");
} else {
form
.setIdSetorComercialDestino("");
form
.setCodigoSetorComercialDestino("");
form
.setDescricaoSetorComercialDestino("SETOR COMERCIAL INEXISTENTE");
sessao.setAttribute(
"setorComercialDestinoInexistente", true);
httpServletRequest.setAttribute("nomeCampo",
"codigoSetorComercialDestino");
}
}
sessao.removeAttribute(
"localidadeDestinoInexistente");
} else {
form.setIdLocalidadeDestino("");
form
.setNomeLocalidadeDestino("LOCALIDADE INEXISTENTE");
sessao.setAttribute("localidadeDestinoInexistente",
true);
httpServletRequest.setAttribute("nomeCampo",
"idLocalidadeDestino");
}
}
}
private MovimentarOrdemServicoEmitirOSHelper retornaQtdContas(MovimentarOrdemServicoActionForm form) {
ComandoEmpresaCobrancaConta comandoEmpresaCobrancaConta = new ComandoEmpresaCobrancaConta();
FiltroComandoEmpresaCobrancaConta filtroComandoEmpresaCobrancaConta = new FiltroComandoEmpresaCobrancaConta();
filtroComandoEmpresaCobrancaConta.adicionarParametro(
new ParametroSimples(FiltroComandoEmpresaCobrancaConta.ID, form.getIdComandoContaCobranca()));
filtroComandoEmpresaCobrancaConta.adicionarCaminhoParaCarregamentoEntidade(FiltroComandoEmpresaCobrancaConta.EMPRESA);
Collection<ComandoEmpresaCobrancaConta> colecaoComando =
this.getFachada().pesquisar(filtroComandoEmpresaCobrancaConta, ComandoEmpresaCobrancaConta.class.getName());
if (colecaoComando != null || !colecaoComando.isEmpty()) {
comandoEmpresaCobrancaConta = (ComandoEmpresaCobrancaConta) Util.retonarObjetoDeColecao(colecaoComando);
}
comandoEmpresaCobrancaConta.setId(new Integer(form.getIdComandoContaCobranca()));
boolean algumParametroInformado = false;
String numeroOSInicial = null;
String numeroOSFinal = null;
// Intervalo de OS
if (form.getNumeroOSInicial() != null
&& !form.getNumeroOSInicial().equals("")
&& form.getNumeroOSFinal() != null
&& !form.getNumeroOSFinal().equals("")) {
algumParametroInformado = true;
numeroOSInicial = form.getNumeroOSInicial();
numeroOSFinal = form.getNumeroOSFinal();
}
// Localidade Inicial
if (form.getIdLocalidadeOrigem() != null &&
!form.getIdLocalidadeOrigem().equals("")) {
algumParametroInformado = true;
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(
new ParametroSimples(
FiltroLocalidade.ID,
form.getIdLocalidadeOrigem()));
Collection colecaoLocalidade =
this.getFachada().pesquisar(filtroLocalidade,Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidadeInicial = new Localidade();
localidadeInicial.setId(
new Integer(form.getIdLocalidadeOrigem()));
comandoEmpresaCobrancaConta.setLocalidadeInicial(localidadeInicial);
} else {
throw new ActionServletException(
"atencao.pesquisa.localidade_inicial_inexistente");
}
}
// Localidade Final
if (form.getIdLocalidadeDestino() != null &&
!form.getIdLocalidadeDestino().equals("")) {
algumParametroInformado = true;
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(
new ParametroSimples(
FiltroLocalidade.ID,
form.getIdLocalidadeDestino()));
Collection colecaoLocalidade =
this.getFachada().pesquisar(filtroLocalidade,Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidadeFinal = new Localidade();
localidadeFinal.setId(
new Integer(form.getIdLocalidadeDestino()));
comandoEmpresaCobrancaConta.setLocalidadeFinal(localidadeFinal);
} else {
throw new ActionServletException("atencao.pesquisa.localidade_final_inexistente");
}
}
// Setor Comercial Inicial
if (form.getCodigoSetorComercialOrigem() != null
&& !form.getCodigoSetorComercialOrigem().equals("")) {
algumParametroInformado = true;
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE,
form.getIdLocalidadeOrigem()));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
form.getCodigoSetorComercialOrigem()));
Collection colecaoSetorComercial = this.getFachada().pesquisar(
filtroSetorComercial, SetorComercial.class.getName());
if (colecaoSetorComercial != null
&& !colecaoSetorComercial.isEmpty()) {
SetorComercial setorComercialInicial = (SetorComercial) colecaoSetorComercial
.iterator().next();
setorComercialInicial.setCodigo(new Integer(
form.getCodigoSetorComercialOrigem()));
comandoEmpresaCobrancaConta
.setCodigoSetorComercialInicial(setorComercialInicial
.getCodigo());
} else {
throw new ActionServletException(
"atencao.pesquisa.setor_inicial_inexistente");
}
}
// Setor Comercial Final
if (form.getCodigoSetorComercialDestino() != null
&& !form.getCodigoSetorComercialDestino().equals("")) {
algumParametroInformado = true;
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE,
form.getIdLocalidadeDestino()));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
form.getCodigoSetorComercialDestino()));
Collection colecaoSetorComercial = this.getFachada().pesquisar(
filtroSetorComercial, SetorComercial.class.getName());
if (colecaoSetorComercial != null
&& !colecaoSetorComercial.isEmpty()) {
SetorComercial setorComercialFinal = (SetorComercial) colecaoSetorComercial
.iterator().next();
setorComercialFinal.setCodigo(new Integer(
form.getCodigoSetorComercialOrigem()));
comandoEmpresaCobrancaConta
.setCodigoSetorComercialFinal(setorComercialFinal
.getCodigo());
} else {
throw new ActionServletException(
"atencao.pesquisa.setor_final_inexistente");
}
}
// Quadra Inicial
if (form.getCodigoQuadraInicial() != null
&& !form.getCodigoQuadraInicial().equals("")) {
algumParametroInformado = true;
FiltroQuadra filtroQuadra = new FiltroQuadra();
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.ID_SETORCOMERCIAL,
form.getIdSetorComercialOrigem()));
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.NUMERO_QUADRA,
form.getCodigoQuadraInicial()));
Collection colecaoQuadra = this.getFachada().pesquisar(
filtroQuadra, Quadra.class.getName());
if (colecaoQuadra != null
&& !colecaoQuadra.isEmpty()) {
Quadra quadraInicial = (Quadra) colecaoQuadra
.iterator().next();
quadraInicial.setNumeroQuadra(new Integer(
form.getCodigoQuadraInicial()));
comandoEmpresaCobrancaConta
.setQuadraInicial(quadraInicial);
} else {
throw new ActionServletException(
"atencao.pesquisa.quadra_inicial_inexistente");
}
}
// Quadra Final
if (form.getCodigoQuadraInicial() != null
&& !form.getCodigoQuadraInicial().equals("")) {
algumParametroInformado = true;
FiltroQuadra filtroQuadra = new FiltroQuadra();
filtroQuadra
.adicionarParametro(new ParametroSimples(
FiltroQuadra.ID_SETORCOMERCIAL,
form.getIdSetorComercialDestino()));
filtroQuadra.adicionarParametro(new ParametroSimples(
FiltroQuadra.NUMERO_QUADRA,
form.getCodigoQuadraFinal()));
Collection colecaoQuadra = this.getFachada().pesquisar(
filtroQuadra, Quadra.class.getName());
if (colecaoQuadra != null
&& !colecaoQuadra.isEmpty()) {
Quadra quadra = (Quadra) colecaoQuadra
.iterator().next();
quadra.setNumeroQuadra(new Integer(
form.getCodigoQuadraFinal()));
comandoEmpresaCobrancaConta
.setQuadraFinal(quadra);
} else {
throw new ActionServletException(
"atencao.pesquisa.quadra_final_inexistente");
}
}
if (form.getIdsCategoria() != null) {
String[] idsCategoria = form.getIdsCategoria();
for (int i = 0; i < idsCategoria.length; i++) {
if (idsCategoria[i].equals(Categoria.COMERCIAL.toString())) {
comandoEmpresaCobrancaConta.setIndicadorComercial(ConstantesSistema.SIM.intValue());
} else if (idsCategoria[i].equals(Categoria.INDUSTRIAL.toString())) {
comandoEmpresaCobrancaConta.setIndicadorIndustrial(ConstantesSistema.SIM.intValue());
} else if (idsCategoria[i].equals(Categoria.RESIDENCIAL.toString())) {
comandoEmpresaCobrancaConta.setIndicadorResidencial(ConstantesSistema.SIM.intValue());
} else if (idsCategoria[i].equals(Categoria.PUBLICO.toString())) {
comandoEmpresaCobrancaConta.setIndicadorPublico(ConstantesSistema.SIM.intValue());
}
}
}
Collection colecaoUnidadeNegocio = null;
// Unidade Negocio
if (form.getIdsUnidadeNegocio() != null
&& form.getIdsUnidadeNegocio().length > 0) {
String[] idsUnidadeNegocio = form.getIdsUnidadeNegocio();
Collection<String> colecaoIdsUnidadeNegocio = new ArrayList();
boolean unidadeInformada = true;
for (int i = 0; i < idsUnidadeNegocio.length; i++) {
if (idsUnidadeNegocio[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
unidadeInformada = false;
break;
}
colecaoIdsUnidadeNegocio.add(idsUnidadeNegocio[i]);
}
if (unidadeInformada) {
algumParametroInformado = true;
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(new ParametroSimplesIn(
FiltroUnidadeNegocio.ID, colecaoIdsUnidadeNegocio));
colecaoUnidadeNegocio = this.getFachada().pesquisar(
filtroUnidadeNegocio, UnidadeNegocio.class.getName());
if (colecaoUnidadeNegocio != null
&& !colecaoUnidadeNegocio.isEmpty()) {
if (colecaoUnidadeNegocio.size() == 1) {
UnidadeNegocio unidadeNegocio = (UnidadeNegocio) colecaoUnidadeNegocio
.iterator().next();
comandoEmpresaCobrancaConta.setUnidadeNegocio(unidadeNegocio);
}
} else {
throw new ActionServletException(
"atencao.unidade_negocio.inexistente");
}
}
}
Collection colecaoGerenciaRegional = null;
// Ger�ncia Regional
if (form.getIdsGerenciaRegional() != null
&& form.getIdsGerenciaRegional().length > 0) {
String[] idsGerenciaRegional = form.getIdsGerenciaRegional();
Collection<String> colecaoIdsGerenciaRegional = new ArrayList();
boolean gerenciaRegionalInformada = true;
for (int i = 0; i < idsGerenciaRegional.length; i++) {
if (idsGerenciaRegional[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
gerenciaRegionalInformada = false;
break;
}
colecaoIdsGerenciaRegional.add(idsGerenciaRegional[i]);
}
if (gerenciaRegionalInformada) {
algumParametroInformado = true;
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.adicionarParametro(new ParametroSimplesIn(
FiltroGerenciaRegional.ID, colecaoIdsGerenciaRegional));
colecaoGerenciaRegional = this.getFachada().pesquisar(
filtroGerenciaRegional, GerenciaRegional.class.getName());
if (colecaoGerenciaRegional != null
&& !colecaoGerenciaRegional.isEmpty()) {
if (colecaoGerenciaRegional.size() == 1) {
GerenciaRegional gerenciaRegional = (GerenciaRegional) colecaoGerenciaRegional
.iterator().next();
comandoEmpresaCobrancaConta.setGerenciaRegional(gerenciaRegional);
}
} else {
throw new ActionServletException(
"atencao.unidade_negocio.inexistente");
}
}
}
Collection colecaoImovelPerfil = null;
// Imovel Perfil
if (form.getIdsImovelPerfil() != null
&& form.getIdsImovelPerfil().length > 0) {
String[] idsImovelPerfil = form.getIdsImovelPerfil();
Collection<String> colecaoIdsImovelPerfil = new ArrayList();
boolean imovelPerfilInformada = true;
for (int i = 0; i < idsImovelPerfil.length; i++) {
if (idsImovelPerfil[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
imovelPerfilInformada = false;
break;
}
colecaoIdsImovelPerfil.add(idsImovelPerfil[i]);
}
if (imovelPerfilInformada) {
algumParametroInformado = true;
FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil();
filtroImovelPerfil.adicionarParametro(new ParametroSimplesIn(
FiltroImovelPerfil.ID, colecaoIdsImovelPerfil));
colecaoImovelPerfil = this.getFachada().pesquisar(
filtroImovelPerfil, ImovelPerfil.class.getName());
if (colecaoImovelPerfil != null
&& !colecaoImovelPerfil.isEmpty()) {
if (colecaoImovelPerfil.size() == 1) {
ImovelPerfil imovelPerfil = (ImovelPerfil) colecaoImovelPerfil
.iterator().next();
comandoEmpresaCobrancaConta.setImovelPerfil(imovelPerfil);
}
} else {
throw new ActionServletException(
"atencao.unidade_negocio.inexistente");
}
}
}
// Valor Conta inicial
if (form.getValorMinimo() != null
&& !form.getValorMinimo().equals(
"")) {
algumParametroInformado = true;
comandoEmpresaCobrancaConta.setValorMinimoConta(Util
.formatarMoedaRealparaBigDecimal(form.getValorMinimo()));
}
// Valor Conta Final
if (form.getValorMaximo() != null
&& !form.getValorMaximo().equals("")) {
algumParametroInformado = true;
comandoEmpresaCobrancaConta.setValorMaximoConta(Util
.formatarMoedaRealparaBigDecimal(form.getValorMaximo()));
}
if (algumParametroInformado) {
MovimentarOrdemServicoEmitirOSHelper movimentarOrdemServicoEmitirOSHelper = new MovimentarOrdemServicoEmitirOSHelper();
movimentarOrdemServicoEmitirOSHelper.setComandoEmpresaCobrancaConta(comandoEmpresaCobrancaConta);
movimentarOrdemServicoEmitirOSHelper.setColecaoUnidadeNegocio(colecaoUnidadeNegocio);
movimentarOrdemServicoEmitirOSHelper.setColecaoGerenciaRegional(colecaoGerenciaRegional);
movimentarOrdemServicoEmitirOSHelper.setColecaoImovelPerfil(colecaoImovelPerfil);
movimentarOrdemServicoEmitirOSHelper.setNumeroOSInicial(numeroOSInicial);
movimentarOrdemServicoEmitirOSHelper.setNumeroOSFinal(numeroOSFinal);
return movimentarOrdemServicoEmitirOSHelper;
} else {
return null;
}
}
}