package gcom.gui.cobranca.cobrancaporresultado;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.atendimentopublico.RelatorioOrdemServico;
import gcom.relatorio.cobranca.cobrancaporresultado.RelatorioDocumentoVisitaCobranca;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import java.util.Collection;
import java.util.StringTokenizer;
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;
/**
* Action respons�vel por validar os dados informados na 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 MovimentarOrdemServicoEmitirOSAction extends ExibidorProcessamentoTarefaRelatorio {
/**
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
//Cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
MovimentarOrdemServicoActionForm form = (MovimentarOrdemServicoActionForm) actionForm;
if (httpServletRequest.getParameter("confirmado") != null
&& httpServletRequest.getParameter("confirmado").equalsIgnoreCase("ok")) {
httpServletRequest.setAttribute("concluir", "true");
}
if ((httpServletRequest.getParameter("concluir") != null
&& (httpServletRequest.getParameter("concluir")).toString().equalsIgnoreCase("true"))
|| (httpServletRequest.getAttribute("concluir") != null
&& (httpServletRequest.getAttribute("concluir")).toString().equalsIgnoreCase("true"))) {
//Se clicou no bot�o de "Emitir"
//Se selecionou a div "O.S. Gerada Tipo Visita para Cobran�a"
if (form.getTipoDivEscolhida() != null
&& form.getTipoDivEscolhida().equalsIgnoreCase("1")) {
String mensagem = validarFormEmitirOSComando(form);
if (mensagem != null && !mensagem.equals("")) {
throw new ActionServletException(
mensagem);
}
MovimentarOrdemServicoEmitirOSHelper movimentarOrdemServicoEmitirOSHelper =
(MovimentarOrdemServicoEmitirOSHelper) sessao.getAttribute("movimentarOrdemServicoEmitirOSHelper");
Collection<Integer[]> idsImovel = Fachada.getInstancia().pesquisarOSComandoSelecionado(movimentarOrdemServicoEmitirOSHelper);
if (idsImovel == null || idsImovel.isEmpty()){
throw new ActionServletException(
"atencao.ordens_servico.inexistente");
} else {
TarefaRelatorio relatorio = new RelatorioDocumentoVisitaCobranca(
(Usuario) (httpServletRequest.getSession(false))
.getAttribute("usuarioLogado"));
relatorio.addParametro("idsImovel", idsImovel);
relatorio.addParametro("tipoFormatoRelatorio", TarefaRelatorio.TIPO_PDF);
sessao.setAttribute("tipoRelatorio",TarefaRelatorio.TIPO_PDF + "");
if (httpServletRequest.getAttribute("concluir") == null
|| !httpServletRequest.getAttribute("concluir").toString().equalsIgnoreCase("true")) {
httpServletRequest.setAttribute("telaSucessoRelatorio",true);
}
retorno = processarExibicaoRelatorio(relatorio, TarefaRelatorio.TIPO_PDF,
httpServletRequest, httpServletResponse, actionMapping);
if (httpServletRequest.getAttribute("concluir") == null
|| !httpServletRequest.getAttribute("concluir").toString().equalsIgnoreCase("true")) {
httpServletRequest.removeAttribute("confirmacaoNormal");
httpServletRequest.setAttribute("nomeBotao1", "Confirmar");
sessao.setAttribute("nomeBotao1", "Confirmar");
httpServletRequest.setAttribute("caminhoConfirmacao", "movimentarOrdemServicoEmitirOSAction");
}
//StatusWizard statusWizard = (StatusWizard) this.getSessao(httpServletRequest).getAttribute("statusWizard");
//this.getSessao(httpServletRequest).setAttribute("statusWizard", statusWizard);
// devolve o mapeamento contido na vari�vel retorno
return retorno;
}
} else if (form.getTipoDivEscolhida() != null
&& form.getTipoDivEscolhida().equalsIgnoreCase("2")) {
String mensagem = validarFormEmitirOSEmpresa(form);
if (mensagem != null && !mensagem.equals("")) {
throw new ActionServletException(
mensagem);
}
String[] idsOS = form.getNumerosOSEmpresaCobranca();
String chave = "";
for (int j=0; j< idsOS.length; j++) {
chave = chave+"$"+idsOS[j];
}
StringTokenizer idsOrdemServico = null;
idsOrdemServico = new StringTokenizer(chave, "$");
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioOrdemServico relatorioOrdemServico = new RelatorioOrdemServico(
(Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioOrdemServico.addParametro("idsOrdemServico", idsOrdemServico);
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioOrdemServico.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
retorno = processarExibicaoRelatorio(relatorioOrdemServico,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
// devolve o mapeamento contido na vari�vel retorno
return retorno;
} else if (form.getTipoDivEscolhida() != null
&& form.getTipoDivEscolhida().equalsIgnoreCase("3")) {
String mensagem = validarFormEmitirOSRA(form);
if (mensagem != null && !mensagem.equals("")) {
throw new ActionServletException(
mensagem);
}
String[] idsOS = form.getNumerosOSRegistroAtendimento();
String chave = "";
for (int j=0; j< idsOS.length; j++) {
chave = chave+"$"+idsOS[j];
}
StringTokenizer idsOrdemServico = null;
idsOrdemServico = new StringTokenizer(chave, "$");
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioOrdemServico relatorioOrdemServico = new RelatorioOrdemServico(
(Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioOrdemServico.addParametro("idsOrdemServico", idsOrdemServico);
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioOrdemServico.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
retorno = processarExibicaoRelatorio(relatorioOrdemServico,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
// devolve o mapeamento contido na vari�vel retorno
return retorno;
} else {
throw new ActionServletException(
"atencao.selecione.um_tipo.emissao.ordem_servico");
}
}
// Monta p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Ordem(ns) de Servi�o emitida(s) com sucesso!",
"Voltar",
"exibirMovimentarOrdemServicoAction.do?comando=" + form.getIdComandoContaCobranca());
//Retorna o mapemaneto na vari�vel "retorno"
return retorno;
}
public String validarFormEmitirOSComando(MovimentarOrdemServicoActionForm form) {
if (form.getNumeroOSInicial() != null && !form.getNumeroOSInicial().equals("")
&& form.getNumeroOSFinal() != null && !form.getNumeroOSFinal().equals("")
&& (new Integer(form.getNumeroOSInicial())).compareTo(new Integer(form.getNumeroOSFinal())) > 0){
return "atencao.numero_ordem_servico_final.maior.inicial";
}
String retorno = validarLocalidade(form);
if (retorno != null) {
return retorno;
} else {
retorno = validarSetorComercial(form);
if (retorno != null) {
return retorno;
}
}
//return "Nenhum filtro selecionado.";
if (form.getColecaoInformada() == null || form.getColecaoInformada().equals("")) {
return "atencao.selecione.ordem_servido.gerada.visita_cobranca";
}
return null;
}
public String validarFormEmitirOSEmpresa(MovimentarOrdemServicoActionForm form) {
if (form.getNumerosOSEmpresaCobranca() == null
|| form.getNumerosOSEmpresaCobranca().length == 0) {
return "atencao.selecione.alguma.ordens_servico";
}
return null;
}
public String validarFormEmitirOSRA(MovimentarOrdemServicoActionForm form) {
if (form.getNumerosOSRegistroAtendimento() == null
|| form.getNumerosOSRegistroAtendimento().length == 0) {
return "atencao.selecione.alguma.ordens_servico";
}
return null;
}
public String validarLocalidade(MovimentarOrdemServicoActionForm form) {
String retorno = null;
if(form.getIdLocalidadeOrigem() != null && !form.getIdLocalidadeOrigem().equals("")
&& (form.getIdLocalidadeDestino() == null || form.getIdLocalidadeDestino().equals(""))){
retorno = "atencao.informe.localidade_final";
}
return retorno;
}
public String validarSetorComercial(MovimentarOrdemServicoActionForm form) {
String retorno = null;
if(form.getCodigoSetorComercialOrigem() != null && !form.getCodigoSetorComercialOrigem().equals("")
&& (form.getCodigoSetorComercialDestino() == null || form.getCodigoSetorComercialDestino().equals(""))){
retorno = "atencao.informe.setor_comercial_final";
}
return retorno;
}
}