diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaServico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaServico.java new file mode 100644 index 000000000..6bfd3a73c --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioReceitaServico.java @@ -0,0 +1,144 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Timestamp; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.negocio.CalculoImposto; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ExceptionConfiguracao; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +public class RelatorioReceitaServico extends Relatorio { + + public RelatorioReceitaServico(Map parametros, Connection conexao) throws Exception + { + super(parametros, conexao); + + this.setCustomDataSource(new ArrayDataSource(this) { + + public void initDados() throws Exception { + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); +// String puntosVentaIds = (String) parametros.get("NUMPUNTOVENTA"); + + String sql = getSql( + (parametros.get("ORIGEN_ID") != null && parametros.get("ORIGEN_ID") != "" ) , + (parametros.get("DESTINO_ID") != null && parametros.get("DESTINO_ID") != "" ) + ); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + // stmt.setTimestamp("DATA_INICIAL", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("DATA_INICIAL")).getTime())); + // stmt.setTimestamp("DATA_FINAL", new Timestamp(DateUtil.fimFecha((Date) parametros.get("DATA_FINAL")).getTime())); + + stmt.setTimestamp("DATA_INICIAL", new Timestamp(((Date) parametros.get("DATA_INICIAL")).getTime())); + stmt.setTimestamp("DATA_FINAL", new Timestamp(((Date) parametros.get("DATA_FINAL")).getTime())); + + if (parametros.get("ORIGEN_ID") != null) + stmt.setInt("ORIGEN_ID", (Integer) parametros.get("ORIGEN_ID")); + else{} + // stmt.setNull("ORIGEN_ID", java.sql.Types.INTEGER); + + if (parametros.get("DESTINO_ID") != null) + stmt.setInt("DESTINO_ID", (Integer) parametros.get("DESTINO_ID")); + else{} + //stmt.setNull("DESTINO_ID", java.sql.Types.INTEGER); + + if (parametros.get("EMPRESA_ID") != null) + stmt.setInt("EMPRESA_ID", (Integer) parametros.get("EMPRESA_ID")); + else + stmt.setNull("EMPRESA_ID", java.sql.Types.INTEGER); + + if (parametros.get("CLASESERVICIO_ID") != null) + stmt.setInt("CLASESERVICIO_ID", (Short) parametros.get("CLASESERVICIO_ID")); + else + stmt.setNull("CLASESERVICIO_ID", java.sql.Types.INTEGER); + + ResultSet rset = stmt.executeQuery(); + + while (rset.next()) { + + Map dataResult = new HashMap(); + + dataResult.put("data", rset.getDate("data")); + dataResult.put("servico", rset.getString("servico")); + dataResult.put("empresa", rset.getString("empresa")); + dataResult.put("origem", rset.getString("origem")); + dataResult.put("destino", rset.getString("destino")); + dataResult.put("classe", rset.getString("classe")); + dataResult.put("tarifa", rset.getString("tarifa")); + dataResult.put("tut", rset.getBigDecimal("tut")); + dataResult.put("pedagio", rset.getBigDecimal("pedagio")); + dataResult.put("total", rset.getBigDecimal("total")); + dataResult.put("tipo", rset.getString("tipo")); + dataResult.put("agencia", rset.getString("agencia")); + dataResult.put("dataHoraCompra", rset.getDate("dataHoraCompra")); + dataResult.put("passageiro", rset.getString("passageiro")); + dataResult.put("nrBilhete", rset.getString("nrBilhete")); + + this.dados.add(dataResult); + } + + this.resultSet = rset; + + } + + }); + + } + + @Override + protected void processaParametros() throws Exception { + } + + private String getSql(boolean origemSelected , boolean destinoSelected) { + StringBuilder sql = new StringBuilder(); + + sql.append(" select c.feccorrida as data, "); + sql.append(" c.CORRIDA_ID as servico , "); + sql.append(" e.nombempresa as empresa, "); + sql.append(" pOrig.cveparada as origem, "); + sql.append(" pDest.cveparada as destino, "); + sql.append(" cs.descclase as classe, "); + sql.append(" cj.preciopagado as tarifa, "); + sql.append(" cj.importetaxaembarque as tut, "); + sql.append(" cj.importepedagio as pedagio, "); + sql.append(" (cj.preciopagado + cj.importetaxaembarque + cj.importepedagio ) as total, "); + sql.append(" CAT.desccategoria as tipo, "); + sql.append(" pv.nombpuntoventa as agencia, "); + sql.append(" cj.fechorventa as dataHoraCompra, "); + sql.append(" cj.nombpasajero as passageiro, "); + sql.append(" cj.NUMFOLIOPREIMPRESO as nrBilhete "); + sql.append(" from corrida c "); + sql.append(" inner join marca m on c.marca_id = m.marca_id "); + sql.append(" inner join empresa e on m.empresa_id = e.empresa_id "); + sql.append(" inner join caja cj on cj.corrida_id = c.corrida_id "); + sql.append(" inner join parada pOrig on pOrig.parada_id = cj.origen_id "); + sql.append(" inner join parada pDest on pDest.parada_id = cj.destino_id "); + sql.append(" inner join CLASE_SERVICIO cs on cs.CLASESERVICIO_ID = cj.CLASESERVICIO_ID "); + sql.append(" inner join CATEGORIA CAT on cj.usuario_id = CAT.usuario_id "); + sql.append(" inner join punto_venta pv on cj.puntoventa_id = pv.puntoventa_id "); + + sql.append(" where c.feccorrida >= :DATA_INICIAL "); + sql.append(" and c.feccorrida <= :DATA_FINAL "); + + if(origemSelected){ sql.append(" and pOrig.PARADA_ID IN (:ORIGEN_ID) "); } + else{ sql.append(" and pOrig.PARADA_ID IN ( select p.PARADA_ID from parada p ) "); } + + if(destinoSelected){ sql.append(" and pDest.PARADA_ID IN (:DESTINO_ID) "); } + else{ sql.append(" and pDest.PARADA_ID IN ( select p.PARADA_ID from parada p) "); } + + sql.append(" and e.EMPRESA_ID = :EMPRESA_ID "); + sql.append(" and CLASESERVICIO_ID = :CLASESERVICIO_ID "); + + return sql.toString(); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioReceitaServico_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioReceitaServico_es.properties new file mode 100644 index 000000000..2cdde92d3 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioReceitaServico_es.properties @@ -0,0 +1,12 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impressor por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioReceitaServico_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioReceitaServico_pt_BR.properties new file mode 100644 index 000000000..2cdde92d3 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioReceitaServico_pt_BR.properties @@ -0,0 +1,12 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impressor por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioReceitaServico.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioReceitaServico.jasper new file mode 100644 index 000000000..979f77399 Binary files /dev/null and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioReceitaServico.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioReceitaServico.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioReceitaServico.jrxml new file mode 100644 index 000000000..f4e45a4e1 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioReceitaServico.jrxml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioReceitaServicoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioReceitaServicoController.java new file mode 100644 index 000000000..a6ceacfca --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioReceitaServicoController.java @@ -0,0 +1,335 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +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.Comboitem; +import org.zkoss.zul.ComboitemRenderer; +import org.zkoss.zul.Datebox; + +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.GrupoRuta; +import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioOCDNaoResgatadaEmpresa; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioReceitaServico; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioResumoLinhas; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioResumoLinhasAnalitico; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioTaxasLinha; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.service.ClaseServicioService; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParada; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxParadaCve; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; + +@Controller("relatorioReceitaServicoController") +@Scope("prototype") +public class RelatorioReceitaServicoController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + + + private Datebox datInicial; + private Datebox datFinal; + private MyComboboxParada cmbParadaOrigem; + private MyComboboxParadaCve cmbParadaOrigemCve; + private MyComboboxParada cmbParadaDestino; + private MyComboboxParadaCve cmbParadaDestinoCve; + private List lsEmpresa; + private List lsClase; + + private MyComboboxEstandar cmbEmpresa; + private MyComboboxEstandar cmbClase; + + @Autowired + private EmpresaService empresaService; + @Autowired + private ClaseServicioService claseService; + @Autowired + private DataSource dataSourceRead; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEmpresa = empresaService.obtenerTodos(); + lsClase = claseService.obtenerTodos(); + + super.doAfterCompose(comp); + cmbParadaOrigemCve.setItemRenderer(new ComboitemRenderer() { + @Override + public void render(Comboitem cmbtm, Object o) throws Exception { + Parada parada = (Parada) o; + + cmbtm.setLabel(parada.getCveparada()); + cmbtm.setValue(parada); + } + }); + + cmbParadaDestinoCve.setItemRenderer(new ComboitemRenderer() { + @Override + public void render(Comboitem cmbtm, Object o) throws Exception { + Parada parada = (Parada) o; + + cmbtm.setLabel(parada.getCveparada()); + cmbtm.setValue(parada); + } + }); + + + } + + public void onSelect$cmbParadaOrigemCve(Event ev) { + if (cmbParadaOrigemCve.getSelectedItem() != null) { + cmbParadaOrigem.setComboItemByParada((Parada) cmbParadaOrigemCve.getSelectedItem().getValue()); + } + } + + public void onSelect$cmbParadaOrigem(Event ev) { + if (cmbParadaOrigem.getSelectedItem() != null) + cmbParadaOrigemCve.setComboItemByParada((Parada) cmbParadaOrigem.getSelectedItem().getValue()); + } + + public void onSelect$cmbParadaDestinoCve(Event ev) { + if (cmbParadaDestinoCve.getSelectedItem() != null) { + cmbParadaDestino.setComboItemByParada((Parada) cmbParadaDestinoCve.getSelectedItem().getValue()); + } + } + + public void onSelect$cmbParadaDestino(Event ev) { + if (cmbParadaDestino.getSelectedItem() != null) { + cmbParadaDestinoCve.setComboItemByParada((Parada) cmbParadaDestino.getSelectedItem().getValue()); + } + } + + + /** + * @throws Exception + * + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + private void executarRelatorio() throws Exception { + + if (datInicial != null && datFinal != null && datFinal.getValue().compareTo(datInicial.getValue()) < 0 ) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioReceitaServicoController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + }else + { + Relatorio relatorio; + + Map parametros = new HashMap(); + + StringBuilder filtro = new StringBuilder(); + + filtro.append("Início período: "); + Calendar cal = Calendar.getInstance(); + cal.setTime(datInicial.getValue()); + filtro.append(cal.get(Calendar.DATE)+"/"); + filtro.append((cal.get(Calendar.MONTH)+1)+"/"); + filtro.append(cal.get(Calendar.YEAR)+"; "); + + filtro.append("Fim período: "); + + cal.setTime(datFinal.getValue()); + filtro.append(cal.get(Calendar.DATE)+"/"); + filtro.append((cal.get(Calendar.MONTH)+1)+"/"); + filtro.append(cal.get(Calendar.YEAR)+"; "); + + + + + parametros.put("DATA_INICIAL", (java.util.Date) datInicial.getValue()); + parametros.put("DATA_FINAL", (java.util.Date) datFinal.getValue()); + + Comboitem cbiOrigem = cmbParadaOrigem.getSelectedItem(); + if (cbiOrigem != null) { + Parada origem = (Parada) cbiOrigem.getValue(); + parametros.put("ORIGEN_ID", origem.getParadaId()); + filtro.append("Origem: "+origem.getCveparada()+"; "); + //filtro.append(origem.getCveparada() + ";"); + } else { + parametros.put("ORIGEN_ID", null);// + filtro.append("Origem: Todos; "); + } + + Comboitem cbiDestino = cmbParadaDestino.getSelectedItem(); + if (cbiDestino != null) { + Parada destino = (Parada) cbiDestino.getValue(); + parametros.put("DESTINO_ID", destino.getParadaId()); + filtro.append("Destino: "+destino.getCveparada()+"; "); + //filtro.append(destino.getCveparada() + ";"); + } else { + parametros.put("DESTINO_ID", null); + filtro.append("Destino: Todos; "); + } + + Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); + if (itemEmpresa != null) { + Empresa empresa = (Empresa) itemEmpresa.getValue(); + parametros.put("EMPRESA_ID", empresa.getEmpresaId()); + filtro.append("Empresa: "+empresa.getNombempresa()+"; "); + //filtro.append(empresa.getNombempresa() + ";"); + } else { + parametros.put("EMPRESA_ID", ""); + } + + Comboitem itemClasse = cmbClase.getSelectedItem(); + if (itemClasse != null) { + ClaseServicio clase = (ClaseServicio) itemClasse.getValue(); + parametros.put("CLASESERVICIO_ID", clase.getClaseservicioId()); + filtro.append("Classe: "+clase.getDescclase()+"; "); + //filtro.append(empresa.getNombempresa() + ";"); + } else { + parametros.put("CLASESERVICIO_ID", ""); + } + + parametros.put("FILTROS", filtro.toString()); + + parametros.put("NOME_RELATORIO", Labels.getLabel("relatorioReceitaServicoController.window.title")); + parametros.put("USUARIO", UsuarioLogado.getUsuarioLogado().getUsuarioId().toString()); + + relatorio = new RelatorioReceitaServico(parametros, dataSourceRead.getConnection()); + + if(relatorio.getCustomDataSource().next()) + { + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel("relatorioReceitaServicoController.window.title"), args, MODAL); + }else + { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioReceitaServicoController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + + + + } + } + + public void onClick$btnExecutarRelatorio(Event ev) throws Exception { + executarRelatorio(); + } + + public Datebox getDatInicial() { + return datInicial; + } + + public void setDatInicial(Datebox datInicial) { + this.datInicial = datInicial; + } + + public Datebox getDatFinal() { + return datFinal; + } + + public void setDatFinal(Datebox datFinal) { + this.datFinal = datFinal; + } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public void setLsEmpresa(List lsEmpresa) { + this.lsEmpresa = lsEmpresa; + } + + public EmpresaService getEmpresaService() { + return empresaService; + } + + public void setEmpresaService(EmpresaService empresaService) { + this.empresaService = empresaService; + } + + public List getLsClase() { + return lsClase; + } + + public void setLsClase(List lsClase) { + this.lsClase = lsClase; + } + + public MyComboboxEstandar getCmbEmpresa() { + return cmbEmpresa; + } + + public void setCmbEmpresa(MyComboboxEstandar cmbEmpresa) { + this.cmbEmpresa = cmbEmpresa; + } + + public ClaseServicioService getClaseService() { + return claseService; + } + + public void setClaseService(ClaseServicioService claseService) { + this.claseService = claseService; + } + + public MyComboboxEstandar getCmbClase() { + return cmbClase; + } + + public void setCmbClase(MyComboboxEstandar cmbClase) { + this.cmbClase = cmbClase; + } + + public MyComboboxParada getCmbParadaOrigem() { + return cmbParadaOrigem; + } + + public void setCmbParadaOrigem(MyComboboxParada cmbParadaOrigem) { + this.cmbParadaOrigem = cmbParadaOrigem; + } + + public MyComboboxParadaCve getCmbParadaOrigemCve() { + return cmbParadaOrigemCve; + } + + public void setCmbParadaOrigemCve(MyComboboxParadaCve cmbParadaOrigemCve) { + this.cmbParadaOrigemCve = cmbParadaOrigemCve; + } + + public MyComboboxParada getCmbParadaDestino() { + return cmbParadaDestino; + } + + public void setCmbParadaDestino(MyComboboxParada cmbParadaDestino) { + this.cmbParadaDestino = cmbParadaDestino; + } + + public MyComboboxParadaCve getCmbParadaDestinoCve() { + return cmbParadaDestinoCve; + } + + public void setCmbParadaDestinoCve(MyComboboxParadaCve cmbParadaDestinoCve) { + this.cmbParadaDestinoCve = cmbParadaDestinoCve; + } + +}