From 23c064d9b840c9aa455a18023d9e0fe421887925 Mon Sep 17 00:00:00 2001 From: fabio Date: Tue, 9 Apr 2019 12:29:40 +0000 Subject: [PATCH] fixes bug#13826 dev: Ramires qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@91708 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioOperacionalFinanceiro.java | 234 +++++++++++ ...latorioOperacionalFinanceiro_es.properties | 30 ++ ...orioOperacionalFinanceiro_pt_BR.properties | 30 ++ .../RelatorioOperacionalFinanceiro.jasper | Bin 0 -> 40710 bytes .../RelatorioOperacionalFinanceiro.jrxml | 367 ++++++++++++++++++ .../RelatorioOperacionalFinanceiroBean.java | 107 +++++ ...atorioOperacionalFinanceiroController.java | 301 ++++++++++++++ ...temMenuRelatorioOperacionalFinanceiro.java | 25 ++ .../utilerias/menu/menu_original.properties | 1 + .../web/utilerias/render/RenderTramoDesc.java | 47 +++ web/WEB-INF/i3-label_es_MX.label | 23 ++ web/WEB-INF/i3-label_pt_BR.label | 25 ++ .../filtroRelatorioOperacionalFinanceiro.zul | 190 +++++++++ 13 files changed, 1380 insertions(+) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOperacionalFinanceiro.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOperacionalFinanceiroBean.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOperacionalFinanceiroController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioOperacionalFinanceiro.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTramoDesc.java create mode 100644 web/gui/relatorios/filtroRelatorioOperacionalFinanceiro.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOperacionalFinanceiro.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOperacionalFinanceiro.java new file mode 100644 index 000000000..a9d79b142 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOperacionalFinanceiro.java @@ -0,0 +1,234 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioOperacionalFinanceiroBean; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioOperacionalFinanceiro extends Relatorio { + + private List lsDadosRelatorio; + private static Logger log = Logger.getLogger(RelatorioOperacionalFinanceiro.class); + + public RelatorioOperacionalFinanceiro(Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + + @Override + public void initDados() throws Exception { + try { + Connection conexao = this.relatorio.getConexao(); + + Map parametros = this.relatorio.getParametros(); + + String fecInicioVenda = null; + if (parametros.get("fecInicioVenda") != null) { + fecInicioVenda = parametros.get("fecInicioVenda").toString() + " 00:00:00"; + } + String fecFinalVenda = null; + if (parametros.get("fecFinalVenda") != null) { + fecFinalVenda = parametros.get("fecFinalVenda").toString() + " 23:59:59"; + } + + String tramoIds = parametros.get("tramoIds").toString(); + String linhaIds = parametros.get("linhaIds").toString(); + String empresa = parametros.get("empresa") != null ? parametros.get("empresa").toString() : ""; + + String sql = getSql(fecInicioVenda, fecFinalVenda, linhaIds, tramoIds, empresa); + + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + if (fecInicioVenda != null) { + stmt.setTimestamp("fecInicioVenda", new java.sql.Timestamp(sdf.parse(fecInicioVenda).getTime())); + } + + if (fecFinalVenda != null) { + stmt.setTimestamp("fecFinalVenda", new java.sql.Timestamp(sdf.parse(fecFinalVenda).getTime())); + } + + if (empresa != null && !empresa.equals("")) { + stmt.setInt("empresa_id", Integer.parseInt(empresa)); + } + + ResultSet rset = null; + + rset = stmt.executeQuery(); + + lsDadosRelatorio = new ArrayList(); + + while (rset.next()) { + RelatorioOperacionalFinanceiroBean bean = new RelatorioOperacionalFinanceiroBean(); + + bean.setDescRuta( rset.getString("descRuta")); + bean.setDescTramo( rset.getString("descTramo")); + bean.setOutros( rset.getBigDecimal("outros")); + bean.setPedagio( rset.getBigDecimal("pedagio")); + bean.setQtde( rset.getString("qtde")); + bean.setSeguro( rset.getBigDecimal("seguro")); + bean.setSentido( rset.getString("sentido")); + bean.setTarifa( rset.getBigDecimal("tarifa")); + bean.setTaxaembarque( rset.getBigDecimal("taxaembarque")); + bean.setTipo( rset.getString("tipo")); + bean.setTramoID( rset.getString("tramoID")); + + lsDadosRelatorio.add(bean); + } + + log.info("TAMANHO == null ? " + lsDadosRelatorio == null); + + if (lsDadosRelatorio.size() > 0) { + log.info("TAMANHO DA LISTA: " + lsDadosRelatorio.size()); + setLsDadosRelatorio(lsDadosRelatorio); + } + + } catch (Exception e) { + log.error("Erro na geração do relatorio Operacional Financeiro: \n" + e); + e.printStackTrace(); + throw e; + } + } + }); + } + + public void setLsDadosRelatorio(List lsDadosRelatorio) { + log.info("Setando dados do relatorio Operacional Financeiro "); + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + log.info("depois de Setar dados do relatorio Operacional Financeiro "); + } + + @Override + protected void processaParametros() throws Exception { + } + + private String getSql(String fecInicioVenda, String fecFinalVenda, String linha, String tramo, String empresa) { + + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT "); + sql.append(" tramoId, "); + sql.append(" DESCTRAMO, "); + sql.append(" DESCRUTA, "); + sql.append(" count(caja_id) as qtde, "); + sql.append(" SUM(tarifa) as tarifa, "); + sql.append(" SUM(taxaembarque) as taxaembarque, "); + sql.append(" SUM(pedagio) as pedagio, "); + sql.append(" SUM(outros) as outros, "); + sql.append(" SUM(seguro) as seguro, "); + sql.append(" sentido, "); + sql.append(" tipo "); + sql.append(" from ( "); + sql.append(" SELECT "); + sql.append(" "); + sql.append(" t.TRAMO_ID as tramoId, "); + sql.append(" t.DESCTRAMO, "); + sql.append(" r.DESCRUTA, "); + sql.append(" c.TIPOVENTA_ID as tipoVenda, "); + sql.append(" c.caja_id, "); + sql.append(" COALESCE(c.PRECIOPAGADO, 0) as tarifa, "); + sql.append(" COALESCE(c.IMPORTETAXAEMBARQUE, 0) as taxaembarque, "); + sql.append(" COALESCE(c.IMPORTEPEDAGIO, 0) as pedagio, "); + sql.append(" COALESCE(c.IMPORTEOUTROS, 0) as outros, "); + sql.append(" COALESCE(c.IMPORTESEGURO, 0) as seguro, "); + sql.append(" (case "); + sql.append(" when (r.INDSENTIDOIDA = 1) "); + sql.append(" then 'I' "); + sql.append(" else 'V' "); + sql.append(" end) as sentido, "); + sql.append(" ( "); + sql.append(" ( "); + sql.append(" CASE "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND c.FECVENTADIGITA IS NULL "); + sql.append(" AND ( c.PORCCATEGORIA <> 100 OR c.PORCCATEGORIA IS NULL ) "); + sql.append(" AND (c.INDREMOTOINVERSO IS NULL "); + sql.append(" OR c.INDREMOTOINVERSO =0) "); + sql.append(" AND (c.INDSTATUSBOLETO <> 'E' AND c.TIPOVENTA_ID not in (5,12,18)) "); + sql.append(" THEN 'VENDA NORMAL' "); + sql.append(" "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND c.FECVENTADIGITA IS NOT NULL "); + sql.append(" AND ( c.PORCCATEGORIA <> 100 OR c.PORCCATEGORIA IS NULL ) "); + sql.append(" AND (c.INDREMOTOINVERSO IS NULL "); + sql.append(" OR c.INDREMOTOINVERSO =0) "); + sql.append(" AND (c.INDSTATUSBOLETO <> 'E' AND c.TIPOVENTA_ID not in (5,12,18)) "); + sql.append(" THEN 'VENDA TRANSITO' "); + sql.append(" "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND c.FECVENTADIGITA IS NULL "); + sql.append(" AND c.PORCCATEGORIA = 100 "); + sql.append(" AND (c.INDREMOTOINVERSO IS NULL "); + sql.append(" OR c.INDREMOTOINVERSO =0) "); + sql.append(" AND (c.INDSTATUSBOLETO <> 'E' AND c.TIPOVENTA_ID not in (5,12,18)) "); + sql.append(" THEN 'BENEFICIO 100%' "); + sql.append(" "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND c.FECVENTADIGITA IS NOT NULL "); + sql.append(" AND ( c.PORCCATEGORIA <> 100 OR c.PORCCATEGORIA IS NULL ) "); + sql.append(" AND (c.INDREMOTOINVERSO IS NULL "); + sql.append(" OR c.INDREMOTOINVERSO =0) "); + sql.append(" AND (c.INDSTATUSBOLETO <> 'E' AND c.TIPOVENTA_ID in (9,39)) "); + sql.append(" THEN 'VENDA ANTECIPADA' "); + sql.append(" "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND (c.INDSTATUSBOLETO = 'E' OR c.TIPOVENTA_ID in (5,18)) "); + sql.append(" THEN 'IMPRESSAO POSTERIOR' "); + sql.append(" "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" AND c.TIPOVENTA_ID = 12 "); + sql.append(" THEN 'VENDA INTERNET' "); + sql.append(" "); + sql.append(" WHEN c.MOTIVOCANCELACION_ID IS NOT NULL "); +// utilizar para separar cancelado / estornado +// sql.append(" AND c.MOTIVOCANCELACION_ID <> 31 "); + sql.append(" THEN 'CANCELADO' "); + sql.append(" END) "); + sql.append(" ) AS tipo "); + sql.append("FROM caja c "); + sql.append(" INNER JOIN MARCA ma on c.marca_id = ma.marca_id "); + sql.append(" INNER JOIN EMPRESA emp on ma.empresa_id = emp.empresa_id "); + sql.append(" LEFT JOIN TIPO_VENTA tv ON tv.TIPOVENTA_ID = c.TIPOVENTA_ID "); + sql.append(" LEFT JOIN RUTA r ON r.RUTA_ID = c.RUTA_ID and r.ACTIVO = 1 "); + sql.append(" LEFT JOIN CORRIDA cor ON c.CORRIDA_ID = cor.CORRIDA_ID and cor.FECCORRIDA = c.FECCORRIDA and cor.ACTIVO = 1 "); + sql.append(" LEFT JOIN CORRIDA_TRAMO ct ON ct.CORRIDA_ID = cor.CORRIDA_ID and ct.FECCORRIDA = cor.FECCORRIDA and ct.ACTIVO = 1 "); + sql.append(" LEFT JOIN TRAMO t ON t.TRAMO_ID = ct.TRAMO_ID and t.ACTIVO = 1 "); + sql.append(" where c.ACTIVO = 1 "); + sql.append(" AND c.FECHORVENTA BETWEEN :fecInicioVenda AND :fecFinalVenda "); + + if (tramo != null && !tramo.equals("Todas") ) { + sql.append(" AND t.TRAMO_ID in (").append(tramo).append(") "); + } + + if (linha != null && !linha.equals("Todas")) { + sql.append(" AND r.ruta_id in (").append(linha).append(") "); + } + + if (!empresa.isEmpty()) { + sql.append("AND c.empresacorrida_id = :empresa_id "); + } + + sql.append(" ) dados "); + sql.append(" GROUP BY "); + sql.append(" tramoId, "); + sql.append(" DESCTRAMO, "); + sql.append(" DESCRUTA, "); + sql.append(" sentido, "); + sql.append(" tipo "); + sql.append(" ORDER BY DESCRUTA, DESCTRAMO, tipo "); + + return sql.toString(); + } +} \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_es.properties new file mode 100644 index 000000000..754367492 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_es.properties @@ -0,0 +1,30 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.periodo=Período: +header.data.hora=Data/Hora\: +header.pagina=Página\: +header.filtro=Filtro\: +header.filtro.servico=Serviço\: +header.filtro.linha=Linha\: +header.trecho=Trecho: +header.filtro.grupo=Grupo de Linhas\: +header.empresa=Empresa\: +header.periodo.viagem=Período Viagem\: +header.periodo.venda=Período Venda\: +header.tipopassagem=Tipo Passagem\: + +#Labels detail + +detail.linha=Linha: +detail.trecho=Tramo: +detail.tipo=Tipo +detail.quantidade=Quantidade +detail.tarifa=Tarifa +detail.pedagio=Pedágio +detail.seguro=Seguro +detail.taxaembarque=Taxa Embarque +detail.outros=Outros +detail.valortotal=Valor Total diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_pt_BR.properties new file mode 100644 index 000000000..739b1d663 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOperacionalFinanceiro_pt_BR.properties @@ -0,0 +1,30 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. +msg.a=à + +#Labels header +header.periodo=Período: +header.data.hora=Data/Hora\: +header.pagina=Página\: +header.filtro=Filtro\: +header.filtro.servico=Serviço\: +header.filtro.linha=Linha\: +header.trecho=Trecho: +header.filtro.grupo=Grupo de Linhas\: +header.empresa=Empresa\: +header.periodo.viagem=Período Viagem\: +header.periodo.venda=Período Venda\: +header.tipopassagem=Tipo Passagem\: + +#Labels detail + +detail.linha=Linha: +detail.trecho=Trecho: +detail.tipo=Tipo +detail.quantidade=Quantidade +detail.tarifa=Tarifa +detail.pedagio=Pedágio +detail.seguro=Seguro +detail.taxaembarque=Taxa Embarque +detail.outros=Outros +detail.valortotal=Valor Total \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jasper new file mode 100644 index 0000000000000000000000000000000000000000..d00f52740eb6fabf244d68adf0757668414ca81e GIT binary patch literal 40710 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOperacionalFinanceiroBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOperacionalFinanceiroBean.java new file mode 100644 index 000000000..cddb92c86 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOperacionalFinanceiroBean.java @@ -0,0 +1,107 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; + +public class RelatorioOperacionalFinanceiroBean { + + private String tramoID; + private String descTramo; + private String descRuta; + private String qtde; + private BigDecimal tarifa; + private BigDecimal taxaembarque; + private BigDecimal pedagio; + private BigDecimal outros; + private BigDecimal seguro; + private String sentido; + private String tipo; + + public String getTramoID() { + return tramoID; + } + + public void setTramoID(String tramoID) { + this.tramoID = tramoID; + } + + public String getDescTramo() { + return descTramo; + } + + public void setDescTramo(String descTramo) { + this.descTramo = descTramo; + } + + public String getDescRuta() { + return descRuta; + } + + public void setDescRuta(String descRuta) { + this.descRuta = descRuta; + } + + public String getQtde() { + return qtde; + } + + public void setQtde(String qtde) { + this.qtde = qtde; + } + + public BigDecimal getTarifa() { + return tarifa; + } + + public void setTarifa(BigDecimal tarifa) { + this.tarifa = tarifa; + } + + public BigDecimal getTaxaembarque() { + return taxaembarque; + } + + public void setTaxaembarque(BigDecimal taxaembarque) { + this.taxaembarque = taxaembarque; + } + + public BigDecimal getPedagio() { + return pedagio; + } + + public void setPedagio(BigDecimal pedagio) { + this.pedagio = pedagio; + } + + public BigDecimal getOutros() { + return outros; + } + + public void setOutros(BigDecimal outros) { + this.outros = outros; + } + + public BigDecimal getSeguro() { + return seguro; + } + + public void setSeguro(BigDecimal seguro) { + this.seguro = seguro; + } + + public String getSentido() { + return sentido; + } + + public void setSentido(String sentido) { + this.sentido = sentido; + } + + public String getTipo() { + return tipo; + } + + public void setTipo(String tipo) { + this.tipo = tipo; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOperacionalFinanceiroController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOperacionalFinanceiroController.java new file mode 100644 index 000000000..a87fd07db --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOperacionalFinanceiroController.java @@ -0,0 +1,301 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Textbox; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.entidad.Tramo; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioOperacionalFinanceiro; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.service.RutaService; +import com.rjconsultores.ventaboletos.service.TramoService; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioLinhaHorario; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderTramoDesc; + +@Controller("relatorioOperacionalFinanceiroController") +@Scope("prototype") +public class RelatorioOperacionalFinanceiroController extends MyGenericForwardComposer { + private static final long serialVersionUID = 1L; + + @Autowired + private DataSource dataSourceRead; + @Autowired + private EmpresaService empresaService; + @Autowired + private RutaService rutaService; + @Autowired + private TramoService tramoService; + + private Datebox datInicialVenda; + private Datebox datFinalVenda; + private MyComboboxEstandar cmbEmpresa; + private MyComboboxParada cmbParadaOrigem; + private MyComboboxParada cmbParadaDestino; + + private List lsEmpresas; + + private Textbox txtPalavraPesquisaLinha; + + private MyListbox linhaList; + private MyListbox linhaListSelList; + private MyListbox tramoList; + private MyListbox tramoListSelList; + + private static Logger log = Logger.getLogger(RelatorioOperacionalFinanceiroController.class); + + public void onClick$btnPesquisaLinha(Event ev) { + executarPesquisaLinha(); + } + + public void onClick$btnLimparLinha(Event ev) { + linhaList.clearSelection(); + linhaListSelList.setData(new ArrayList()); + + linhaList.setItemRenderer(new RenderRelatorioLinhaHorario()); + linhaListSelList.setItemRenderer(new RenderRelatorioLinhaHorario()); + } + + public void onDoubleClick$linhaList(Event ev) { + linhaListSelList.addItemNovo(linhaList.getSelected()); + } + + public void onDoubleClick$tramoList(Event ev) { + tramoListSelList.addItemNovo(tramoList.getSelected()); + } + + public void onClick$btnPesquisaTramo(Event ev) { + executarPesquisaTramo(); + } + + public void onClick$btnLimparTramo(Event ev) { + tramoList.clearSelection(); + tramoListSelList.setData(new ArrayList()); + + tramoList.setItemRenderer(new RenderTramoDesc()); + tramoListSelList.setItemRenderer(new RenderTramoDesc()); + } + + + + private void executarPesquisaLinha() { + + String palavraPesquisaRuta = txtPalavraPesquisaLinha.getText(); + linhaList.setData(rutaService.buscaRuta(palavraPesquisaRuta)); + + if (linhaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioLinhasHorarioController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + private void executarPesquisaTramo() { + + if( cmbParadaOrigem.getSelectedItem() == null || cmbParadaDestino.getSelectedItem() == null ) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioOperacionalFinaceiroController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + return; + } + + Parada origem = (Parada)cmbParadaOrigem.getSelectedItem().getValue(); + Parada destino = (Parada)cmbParadaDestino.getSelectedItem().getValue(); + tramoList.setData( tramoService.obtenerListPorOrigemDestino(origem, destino) ); + + if (tramoList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioOperacionalFinaceiroController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + private void executarRelatorio() throws Exception { + + log.info("EXECUTANDO RELATORIO OPERACION"); + Map parametros = new HashMap(); + + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + if (this.datInicialVenda.getValue() != null) { + parametros.put("fecInicioVenda", sdf.format(this.datInicialVenda.getValue())); + } + + if (this.datFinalVenda.getValue() != null) { + parametros.put("fecFinalVenda", sdf.format(this.datFinalVenda.getValue())); + } + + if (parametros.get("fecInicioVenda") == null && parametros.get("datFinalVenda") == null) { + Messagebox.show(Labels.getLabel("relatorioOperacionalFinanceiroController.data.obrigatoria"), + Labels.getLabel("relatorioGratuidadeController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + return; + } + + StringBuilder tramo = new StringBuilder(); + StringBuilder tramoIds = new StringBuilder(); + + if (tramoListSelList.getListData().isEmpty()) { + tramo.append("Todas"); + tramoIds.append("Todas"); + }else { + for (Object obj : tramoListSelList.getListData()) { + Tramo tramos = (Tramo) obj; + tramo.append(tramos.getDesctramo()).append(","); + tramoIds.append(tramos.getTramoId()).append(","); + } + + // removendo ultima virgula + tramoIds = tramoIds.delete(tramoIds.length() - 1, tramoIds.length()); + tramo = tramo.delete(tramo.length() - 1, tramo.length()); + + } + + parametros.put("tramos", tramo.append(";").toString()); + parametros.put("tramoIds", tramoIds.toString()); + + StringBuilder linhas = new StringBuilder(); + StringBuilder linhaIds = new StringBuilder(); + + if (linhaListSelList.getListData().isEmpty()) { + linhas.append("Todas"); + linhaIds.append("Todas"); + } else { + for (Object obj : linhaListSelList.getListData()) { + Ruta ruta = (Ruta) obj; + linhas.append(ruta.getDescruta()).append(","); + linhaIds.append(ruta.getRutaId()).append(","); + } + + // removendo ultima virgula + linhaIds = linhaIds.delete(linhaIds.length() - 1, linhaIds.length()); + linhas = linhas.delete(linhas.length() - 1, linhas.length()); + } + + parametros.put("linhas", linhas.append(";").toString()); + parametros.put("linhaIds", linhaIds.toString()); + + if (cmbEmpresa.getSelectedIndex() != -1) { + parametros.put("empresa", ((Empresa) cmbEmpresa.getSelectedItem().getValue()).getEmpresaId()); + parametros.put("nomb_empresa", ((Empresa) cmbEmpresa.getSelectedItem().getValue()).getNombempresa()); + } else { + parametros.put("nomb_empresa", "Todas"); + } + + parametros.put("TITULO", Labels.getLabel("relatorioOperacionalFinanceiroController.window.title")); + + Relatorio relatorio = new RelatorioOperacionalFinanceiro(parametros, dataSourceRead.getConnection()); + + log.info("RELATORIO == NULL ? = " + relatorio == null); + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + log.info("ANTES DE ABRIR A TELA DO RELATORIO"); + openWindow("/component/reportView.zul", + Labels.getLabel("relatorioOperacionalFinanceiroController.window.title"), args, MODAL); + + } + + public void onClick$btnExecutarRelatorio(Event ev) throws Exception { + executarRelatorio(); + } + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + lsEmpresas = empresaService.obtenerTodos(); + + linhaList.setItemRenderer(new RenderRelatorioLinhaHorario()); + linhaListSelList.setItemRenderer(new RenderRelatorioLinhaHorario()); + + tramoList.setItemRenderer(new RenderTramoDesc()); + tramoListSelList.setItemRenderer(new RenderTramoDesc()); + } + + public Datebox getDatInicialVenda() { + return datInicialVenda; + } + + public void setDatInicialVenda(Datebox datInicialVenda) { + this.datInicialVenda = datInicialVenda; + } + + public Datebox getDatFinalVenda() { + return datFinalVenda; + } + + public void setDatFinalVenda(Datebox datFinalVenda) { + this.datFinalVenda = datFinalVenda; + } + + public MyListbox getLinhaListSelList() { + return linhaListSelList; + } + + public void setLinhaListSelList(MyListbox linhaListSelList) { + this.linhaListSelList = linhaListSelList; + } + + public Textbox getTxtPalavraPesquisaLinha() { + return txtPalavraPesquisaLinha; + } + + public void setTxtPalavraPesquisaLinha(Textbox txtPalavraPesquisaLinha) { + this.txtPalavraPesquisaLinha = txtPalavraPesquisaLinha; + } + + public List getLsEmpresas() { + return lsEmpresas; + } + + public void setLsEmpresas(List lsEmpresas) { + this.lsEmpresas = lsEmpresas; + } + + public MyComboboxParada getCmbParadaOrigem() { + return cmbParadaOrigem; + } + + public void setCmbParadaOrigem(MyComboboxParada cmbParadaOrigem) { + this.cmbParadaOrigem = cmbParadaOrigem; + } + + public MyComboboxParada getCmbParadaDestino() { + return cmbParadaDestino; + } + + public void setCmbParadaDestino(MyComboboxParada cmbParadaDestino) { + this.cmbParadaDestino = cmbParadaDestino; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioOperacionalFinanceiro.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioOperacionalFinanceiro.java new file mode 100644 index 000000000..212dd90f5 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioOperacionalFinanceiro.java @@ -0,0 +1,25 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioOperacionalFinanceiro extends DefaultItemMenuSistema { + + public ItemMenuRelatorioOperacionalFinanceiro() { + super("indexController.mniRelatorioOperacionalFinanceiro.label"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.MENU.RELATORIOOPERACIONALFINANCEIRO"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/relatorios/filtroRelatorioOperacionalFinanceiro.zul", + Labels.getLabel("relatorioOperacionalFinanceiroController.window.title"), getArgs() ,desktop); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties index 7f05106a9..56d94e10d 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties @@ -186,6 +186,7 @@ analitico.gerenciais.financeiro.vendasComissao=com.rjconsultores.ventaboletos.we analitico.gerenciais.financeiro.bilhetesVendidos=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioBilhetesVendidos analitico.gerenciais.financeiro.devolucaoBilhetes=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioDevolucaoBilhetes analitico.gerenciais.financeiro.movimentosAtraso=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioMovimentosAtraso +analitico.gerenciais.financeiro.relatorioOperacionalFinanceiro=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioOperacionalFinanceiro analitico.gerenciais.financeiro.conferenciaMovimento=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioObservacaoConferenciaMovimento analitico.gerenciais.financeiro.eventos=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioObservacaoEventosFinanceiros analitico.gerenciais.financeiro.observacaoBilhetes=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioObservacaoBilhetes diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTramoDesc.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTramoDesc.java new file mode 100644 index 000000000..af7f4c7d6 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderTramoDesc.java @@ -0,0 +1,47 @@ + +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Button; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.Tramo; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; + +public class RenderTramoDesc implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + Tramo tramo = (Tramo) o; + + Listcell lc = new Listcell(tramo.getTramoId().toString()); + lc.setParent(lstm); + + lc = new Listcell(tramo.getDesctramo()); + lc.setParent(lstm); + + Button btn = new Button(); + + lc = new Listcell(); + lc.setParent(lstm); + + btn.setWidth("16"); + btn.setHeight("16"); + btn.setImage("/gui/img/remove.png"); + + btn.addEventListener("onClick", new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + MyListbox listBox = (MyListbox) event.getTarget().getParent().getParent().getParent(); + Listitem listItem = (Listitem) event.getTarget().getParent().getParent(); + listBox.removeItem((Tramo) listItem.getAttribute("data")); + } + }); + + lc.appendChild(btn); + + lstm.setAttribute("data", tramo); + } +} diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 9f7ea66b3..f658f0329 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -7828,6 +7828,29 @@ editarEmpresaController.exibeComissaoZeradaAgencia.ajuda = Exibir no Relatório editarEmpresaController.permiteReativacaoPassagemBpeEstacaoNaoBpe.ajuda = Permite Reativação de Passagem BP-e em Estação Não BP-e, para ativação desse parâmetro a opção: "Emite BP-e na Venda de Bilhete com Impressão Posterior" deve estar marcada editarEmpresaController.realizaCalculoComissaoPeriodo.ajuda = Realiza o calculo da comissão por período +# Reporte Operacional Financeiro +relatorioOperacionalFinanceiroController.window.title = Reporte Operacional Financiero +relatorioOperacionalFinanceiroController.data.obrigatoria = Es necesario rellenar la fecha inicial y final +relatorioOperacionalFinanceiroController.tipo.obrigatoria = Tipo de pasaje es obligatorio +relatorioOperacionalFinanceiroController.lbEmpresa.value = Empresa +relatorioOperacionalFinanceiroController.lbAgencia.value = Punto Venta +relatorioOperacionalFinanceiroController.lbLinhas.value = Ruta +relatorioOperacionalFinanceiroController.lbOrigem.value = Origen +relatorioOperacionalFinanceiroController.lbDestino.value = Destino +relatorioOperacionalFinanceiroController.lbTramo.value = Tramo +relatorioOperacionalFinanceiroController.lbNumTramo.value = Num. Tramo +relatorioOperacionalFinanceiroController.lbTipoGratuidade.value = Tipos de Pasajes +relatorioOperacionalFinanceiroController.btnPesquisa.value = Buscar +relatorioOperacionalFinanceiroController.btnLimpar.value = Limpiar +relatorioOperacionalFinanceiroController.lbNumRuta.value = Num. linea +relatorioOperacionalFinanceiroController.lbPrefixo.value = Prefijo +relatorioOperacionalFinanceiroController.lbTipoGratuidade.value = Tipo de alojamiento +relatorioOperacionalFinanceiroController.lbDataIni.value = Fecha Inicio +relatorioOperacionalFinanceiroController.lbDataFin.value = Fecha Final +relatorioOperacionalFinanceiroController.labelOrigen.value = Origem +relatorioOperacionalFinanceiroController.labelDestino.value = Destino +relatorioOperacionalFinanceiroController.lbOrgao.value = Instituición concedente + #Relatorio Movimentacao Estoque relatorioMovimentacaoEstoqueController.window.title = Reporte del Movimientos del Stock relatorioMovimentacaoEstoqueController.lb.puntoventaEnv = Punto Venta Envio diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index d8d359d26..ac5560f12 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -287,6 +287,7 @@ indexController.mniRelatorioGratuidade.label = Relatório Tipo Passagem indexController.mniRelatorioGratuidadeANTT.label = Relatório Gratuidades ANTT indexController.mniRelatorioGratuidadeARTESP.label = Relatório Gratuidade ARTESP indexController.mniRelatorioGratuidadeAGER.label = Relatório Gratuidade AGER +indexController.mniRelatorioOperacionalFinanceiro.label = Relatório Operacional Financeiro indexController.mniRelatorioBilhetesVendidos.label = Bilhetes Vendidos indexController.mniRelatorioGratuidadeIdosoDeficiente.label = Gratuidades Idoso/Deficiente indexController.mniRelatorioVendasBilheteiro.label = Vendas por Bilheteiro @@ -8327,6 +8328,30 @@ editarEmpresaController.realizaCalculoComissaoPeriodo.ajuda = Realiza o calculo editarEmpresaController.imprimTipoBPeDeAcordoComASefaz=Troca ECF p/ BPe imprime Tipo de substituição de acordo com a SEFAZ. editarEmpresaController.imprimTipoBPeDeAcordoComASefaz.ajuda=Quando há uma troca de ECF para BPe o DABPe e Cupom de Embarque apresentam como uma substituição, mesmo ele não sendo na SEFAZ. Marcando essa configuração o tipo BPe é apresentado conforme está na SEFAZ. +# Relatório Exportacao Operacional Financeiro +relatorioOperacionalFinanceiroController.window.title = Relatório Operacional Financeiro +relatorioOperacionalFinanceiroController.data.obrigatoria = Data inicial e Final são obrigatórias +relatorioOperacionalFinanceiroController.orgaoConcedente.obrigatorio = Orgão Concedente é obrigatório +relatorioOperacionalFinanceiroController.tipo.obrigatoria = Tipo de passagens é obrigatório +relatorioOperacionalFinanceiroController.lbEmpresa.value = Empresa +relatorioOperacionalFinanceiroController.lbAgencia.value = Agência +relatorioOperacionalFinanceiroController.lbLinha.value = Linha +relatorioOperacionalFinanceiroController.lbOrigem.value = Origem +relatorioOperacionalFinanceiroController.lbDestino.value = Destino +relatorioOperacionalFinanceiroController.lbTramo.value = Trecho +relatorioOperacionalFinanceiroController.lbNumTramo.value = Num. Trecho +relatorioOperacionalFinanceiroController.lbTipoGratuidade.value = Tipos de Passagens +relatorioOperacionalFinanceiroController.lbDataIniVenda.value = Data Inicio +relatorioOperacionalFinanceiroController.lbDataFinVenda.value = Data Final +relatorioOperacionalFinanceiroController.btnPesquisa.value = Pesquisar +relatorioOperacionalFinanceiroController.btnLimpar.value = Limpar +relatorioOperacionalFinanceiroController.lbNumRuta.value = Num. Linha +relatorioOperacionalFinanceiroController.lbPrefixo.value = Prefixo +relatorioOperacionalFinanceiroController.lvVenda = Venda +relatorioOperacionalFinanceiroController.labelOrigen.value = Origem +relatorioOperacionalFinanceiroController.labelDestino.value = Destino +relatorioOperacionalFinanceiroController.lbOrgao.value = Orgão Concedente + # Relatório Exportacao Idoso ARTESP relatorioGratuidadeARTESPController.window.title = Relatório Gratuidade ARTESP relatorioGratuidadeARTESPController.data.obrigatoria = Data inicial e Final são obrigatórias diff --git a/web/gui/relatorios/filtroRelatorioOperacionalFinanceiro.zul b/web/gui/relatorios/filtroRelatorioOperacionalFinanceiro.zul new file mode 100644 index 000000000..7acac2f4b --- /dev/null +++ b/web/gui/relatorios/filtroRelatorioOperacionalFinanceiro.zul @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +