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 000000000..d00f52740 Binary files /dev/null and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jrxml new file mode 100644 index 000000000..fe06a36cd --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOperacionalFinanceiro.jrxml @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +