package gcom.gui.relatorio.financeiro; import gcom.cadastro.geografico.FiltroMunicipio; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.Localidade; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.relatorio.financeiro.RelatorioVolumesConsumidosNaoFaturados; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaRelatorio; import gcom.util.ConstantesSistema; import gcom.util.filtro.ParametroSimples; import java.io.OutputStream; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * [UC0822] Gerar Relat�rio do Valor Referente a Volumes Consumidos e N�o Faturados * * @see gcom.gui.relatorio.financeiro.ExibirGerarRelatorioVolumesConsumidosNaoFaturadosAction * @see gcom.gui.relatorio.financeiro.GerarRelatorioVolumesConsumidosNaoFaturadosActionForm * * @author Victor Cisneiros * @date 09/07/2008 */ public class GerarRelatorioVolumesConsumidosNaoFaturadosAction extends GcomAction { @Override public ActionForward execute( ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { Fachada fachada = Fachada.getInstancia(); Usuario usuario = (Usuario) request.getSession(false).getAttribute("usuarioLogado"); GerarRelatorioVolumesConsumidosNaoFaturadosActionForm form = (GerarRelatorioVolumesConsumidosNaoFaturadosActionForm) actionForm; // parametros Integer mesAno = null; String opcaoTotalizacao = null; Integer idEntidade = null; // ------------------------------ // -- Mes/Ano // ------------------------------ if (form.getMesAno() != null && !form.getMesAno().trim().equals("")) { mesAno = Integer.parseInt(form.getMesAno().substring(3, 7) + form.getMesAno().substring(0, 2)); } else { throw new ActionServletException("atencao.required", null, "M�s/Ano do Faturamento"); } // ------------------------------ // -- Opcao de Totalizacao // ------------------------------ if (form.getOpcaoTotalizacao() != null && !form.getOpcaoTotalizacao().trim().equals("")) { opcaoTotalizacao = form.getOpcaoTotalizacao(); } else { throw new ActionServletException("atencao.required", null, "Op��o de Totaliza��o"); } // ------------------------------ // -- Gerencia Regional // ------------------------------ if (form.getOpcaoTotalizacao().equals("gerenciaRegional")) { String id = form.getGerenciaRegionalId(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Ger�ncia Regional"); } idEntidade = new Integer(id); } // ------------------------------ // -- Gerencia Regional por Unidade de Negocio // ------------------------------ if (form.getOpcaoTotalizacao().equals("gerenciaRegionalPorUnidadeNegocio")) { String id = form.getGerenciaRegionalPorUnidadeId(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Ger�ncia Regional por Unidade de Neg�cio"); } idEntidade = new Integer(id); } // ------------------------------ // -- Gerencia Regional por Localidade // ------------------------------ if (form.getOpcaoTotalizacao().equals("gerenciaRegionalPorLocalidade")) { String id = form.getGerenciaRegionalPorLocalidadeId(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Ger�ncia Regional por Localidade"); } idEntidade = new Integer(id); } // ------------------------------ // -- Unidade de Negocio // ------------------------------ if (form.getOpcaoTotalizacao().equals("unidadeNegocio")) { String id = form.getUnidadeNegocioId(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Unidade Neg�cio"); } idEntidade = new Integer(id); } // ------------------------------ // -- Unidade de Negocio por Localidade // ------------------------------ if (form.getOpcaoTotalizacao().equals("unidadeNegocioPorLocalidade")) { String id = form.getUnidadeNegocioPorLocalidadeId(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Unidade Neg�cio por Localidade"); } idEntidade = new Integer(id); } // ------------------------------ // -- Localidade // ------------------------------ if (form.getOpcaoTotalizacao().equals("localidade")) { String id = form.getCodigoLocalidade(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Localidade"); } FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, id)); Collection pesquisa = fachada.pesquisar(filtroLocalidade, Localidade.class.getName()); if (pesquisa == null || pesquisa.isEmpty()) { throw new ActionServletException("atencao.pesquisa_inexistente", null, "Localidade"); } idEntidade = new Integer(id); } // ------------------------------ // -- Municipio // ------------------------------ if (form.getOpcaoTotalizacao().equals("municipio")) { String id = form.getCodigoMunicipio(); if (id == null || id.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) { throw new ActionServletException("atencao.required", null, "Munic�pio"); } FiltroMunicipio filtroMunicipio = new FiltroMunicipio(); filtroMunicipio.adicionarParametro(new ParametroSimples(FiltroMunicipio.ID, id)); Collection pesquisa = fachada.pesquisar(filtroMunicipio, Municipio.class.getName()); if (pesquisa == null || pesquisa.isEmpty()) { throw new ActionServletException("atencao.pesquisa_inexistente", null, "Munic�pio"); } idEntidade = new Integer(id); } // ------------------------------ // -- Tipo do Relatorio // ------------------------------ int tipoRelatorio = TarefaRelatorio.TIPO_PDF; try { tipoRelatorio = Integer.parseInt(request.getParameter("tipoRelatorio")); } catch (NumberFormatException e) { } // ------------------------------ // -- Geracao do Relatorio // ------------------------------ RelatorioVolumesConsumidosNaoFaturados relatorio = new RelatorioVolumesConsumidosNaoFaturados(usuario); relatorio.addParametro("tipoRelatorio", tipoRelatorio); relatorio.addParametro("mesAno", mesAno); relatorio.addParametro("opcaoTotalizacao", opcaoTotalizacao); relatorio.addParametro("idEntidade", idEntidade); byte[] bytes = (byte[]) relatorio.executar(); if (tipoRelatorio == TarefaRelatorio.TIPO_PDF) { response.addHeader("Content-Disposition", "attachment; filename=relatorio.pdf"); response.setContentType("application/pdf"); } else if (tipoRelatorio == TarefaRelatorio.TIPO_RTF) { response.addHeader("Content-Disposition", "attachment; filename=relatorio.rtf"); response.setContentType("application/rtf"); } else if (tipoRelatorio == TarefaRelatorio.TIPO_XLS) { response.addHeader("Content-Disposition", "attachment; filename=relatorio.xls"); response.setContentType("application/vnd.ms-excel"); } else if (tipoRelatorio == TarefaRelatorio.TIPO_HTML) { response.addHeader("Content-Disposition", "attachment; filename=relatorio.zip"); response.setContentType("application/zip"); } OutputStream out = response.getOutputStream(); out.write(bytes); out.flush(); out.close(); return null; } }