diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java new file mode 100644 index 000000000..d6252f355 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioHistoricoCompras.java @@ -0,0 +1,142 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.utils.FormataUtil; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +public class RelatorioHistoricoCompras extends Relatorio { + + public RelatorioHistoricoCompras(Map parametros, Connection conexao) { + super(parametros, conexao); + } + + @Override + protected void processaParametros() throws Exception { + setCustomDataSource(new ArrayCustomDataSource(this)); + } + + private final class ArrayCustomDataSource extends ArrayDataSource { + private ArrayCustomDataSource(Relatorio relatorio) throws Exception { + super(relatorio); + } + + @Override + public void initDados() throws Exception { + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); + + String sql = getSql(parametros); + + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + setParametrosConsultaSql(parametros, stmt); + + ResultSet rset = stmt.executeQuery(); + + while (rset.next()) { + + Map dataResult = new HashMap(); + + dataResult.put("venda", FormataUtil.formataDataToString((Date)rset.getTimestamp("venda"), "", "dd/MM/yyyy hh:mm")); + dataResult.put("bilhete", rset.getString("bilhete")); + dataResult.put("servico", rset.getString("servico")); + dataResult.put("origem", rset.getString("origem")); + dataResult.put("destino", rset.getString("destino")); + dataResult.put("operador", rset.getString("operador")); + dataResult.put("valor", rset.getBigDecimal("valor")); + dataResult.put("viagem", FormataUtil.formataDataToString((Date)rset.getTimestamp("viagem"), "", "dd/MM/yyyy hh:mm")); + dataResult.put("poltrona", rset.getString("poltrona")); + dataResult.put("agencia", rset.getString("agencia")); + dataResult.put("celular", rset.getString("celular")); + dataResult.put("telefone", rset.getString("telefone")); + dataResult.put("comercial", rset.getString("comercial")); + dataResult.put("nome", rset.getString("nome")); + dataResult.put("cpf", rset.getString("cpf")); + + this.dados.add(dataResult); + } + + this.resultSet = rset; + } + + private void setParametrosConsultaSql(Map parametros, NamedParameterStatement stmt) throws SQLException { + if (parametros.get("dtVendaInicial") != null) { + stmt.setTimestamp("dt_venda_inicio", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("dtVendaInicial")).getTime())); + stmt.setTimestamp("dt_venda_fim", new Timestamp(DateUtil.fimFecha((Date) parametros.get("dtVendaFinal")).getTime())); + } + + if (parametros.get("dtEmbarqueInicial") != null) { + stmt.setTimestamp("dt_embarque_inicio", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("dtEmbarqueInicial")).getTime())); + stmt.setTimestamp("dt_embarque_fim", new Timestamp(DateUtil.fimFecha((Date) parametros.get("dtEmbarqueFinal")).getTime())); + } + } + + private String getSql(Map parametros) { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT "); + sql.append(" ca.fechorventa_h venda, "); + sql.append(" ca.numfoliosistema bilhete, "); + sql.append(" ca.corrida_id servico, "); + sql.append(" o.descparada origem, "); + sql.append(" d.descparada destino, "); + sql.append(" u.nombusuario operador, "); + sql.append(" ca.preciopagado valor, "); + sql.append(" ca.fechorviaje viagem, "); + sql.append(" ca.numasiento poltrona, "); + sql.append(" pv.nombpuntoventa agencia, "); + sql.append(" cli.numtelefonodos celular, "); + sql.append(" cli.numtelefono telefone, "); + sql.append(" cli.numfax comercial, "); + sql.append(" cli.nombcliente nome, "); + sql.append(" CASE "); + sql.append(" WHEN cli.tipoidentificauno_id = 2 THEN cli.numidentificauno "); + sql.append(" WHEN cli.tipoidentificados_id = 2 THEN cli.numidentificados "); + sql.append(" ELSE NULL "); + sql.append(" END "); + sql.append(" cpf "); + sql.append(" FROM "); + sql.append(" caja ca "); + sql.append(" INNER JOIN cliente cli ON ca.cliente_id = cli.cliente_id "); + sql.append(" INNER JOIN usuario u ON ca.usuario_id = u.usuario_id "); + sql.append(" INNER JOIN punto_venta pv ON ca.puntoventa_id = pv.puntoventa_id "); + sql.append(" INNER JOIN corrida co ON ca.corrida_id = co.corrida_id "); + sql.append(" AND ca.feccorrida = co.feccorrida "); + sql.append(" LEFT JOIN parada o ON co.origen_id = o.parada_id "); + sql.append(" LEFT JOIN parada d ON co.destino_id = d.parada_id "); + + if (parametros.get("dtVendaInicial") != null + && parametros.get("dtEmbarqueInicial") != null) { + sql.append(" WHERE ca.fechorventa_h BETWEEN :dt_venda_inicio and :dt_venda_fim "); + sql.append(" and ca.fechorviaje BETWEEN :dt_embarque_inicio and :dt_embarque_fim "); + } else if (parametros.get("dtVendaInicial") != null) { + sql.append(" WHERE ca.fechorventa_h BETWEEN :dt_venda_inicio and :dt_venda_fim "); + } else { + sql.append(" WHERE ca.fechorviaje BETWEEN :dt_embarque_inicio and :dt_embarque_fim "); + + } + + if (parametros.get("puntoVentaId") != null) { + sql.append(" and pv.puntoventa_id in("+parametros.get("puntoVentaId")+") "); + } + if (parametros.get("rutaId") != null) { + sql.append(" and ca.ruta_id in("+parametros.get("rutaId")+") "); + } + if (parametros.get("clienteId") != null) { + sql.append(" and cli.cliente_id in("+parametros.get("clienteId")+") "); + } + sql.append("order by ca.fechorventa_h"); + return sql.toString(); + } + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioHistoricoCompras_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioHistoricoCompras_es.properties new file mode 100644 index 000000000..0888fae98 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioHistoricoCompras_es.properties @@ -0,0 +1,12 @@ +#geral +msg.noData=No fue posible obtener datos con los 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/RelatorioHistoricoCompras_pt.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioHistoricoCompras_pt.properties new file mode 100644 index 000000000..8ac4bd1a6 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioHistoricoCompras_pt.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=Impresso 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/RelatorioHistoricoCompras.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioHistoricoCompras.jasper new file mode 100644 index 000000000..4f033ebe4 Binary files /dev/null and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioHistoricoCompras.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioHistoricoCompras.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioHistoricoCompras.jrxml new file mode 100644 index 000000000..1f1ce2775 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioHistoricoCompras.jrxml @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListCliente.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListCliente.java new file mode 100644 index 000000000..d77f30864 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListCliente.java @@ -0,0 +1,32 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import org.zkoss.zul.Paging; + +import com.rjconsultores.ventaboletos.entidad.Cliente; +import com.rjconsultores.ventaboletos.entidad.TipoIdentificacion; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.trg.search.Filter; + +public class PagedListCliente extends PagedListGenerico { + + private static final int TIPO_DOCUMENTO_CPF = 2; + + public PagedListCliente(MyListbox listBox, MyTextbox txtPesquisa, Paging paging) { + super(listBox, txtPesquisa, paging); + super.setHibernateSearchObject(new HibernateSearchObject(Cliente.class, getPaging().getPageSize())); + } + + @Override + protected void personalizarBusca() { + HibernateSearchObject clienteSearch = getHibernateSearchObject(); + TipoIdentificacion tipoIdentificacion = new TipoIdentificacion(); + tipoIdentificacion.setTipoIdentificacionId(TIPO_DOCUMENTO_CPF); + clienteSearch.addFilterAnd(Filter.or( + Filter.and(Filter.ilike("numIdentificaUno", "%" + getTxtPesquisa().getValue() + "%"), Filter.equal("tipoIdentificacionUno", tipoIdentificacion)), + Filter.and(Filter.ilike("numIdentificaDos", "%" + getTxtPesquisa().getValue() + "%"), Filter.equal("tipoIdentificacionDos", tipoIdentificacion)))); + clienteSearch.addFilterEqual("activo", true); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListGenerico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListGenerico.java new file mode 100644 index 000000000..4ccc6c57d --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListGenerico.java @@ -0,0 +1,91 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.util.ArrayList; + +import org.zkoss.zul.Paging; + +import com.rjconsultores.ventaboletos.web.utilerias.MensagensUtils; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; + +public abstract class PagedListGenerico { + + private static final String MSG_NENHUM_REGISTRO = "MSG.ningunRegistro"; + + private Paging paging; + private MyListbox listBox; + private MyTextbox txtPesquisa; + private HibernateSearchObject hibernateSearchObject; + + public PagedListGenerico(MyListbox listBox, MyTextbox txtPesquisa, Paging paging) { + this.listBox = listBox; + this.txtPesquisa = txtPesquisa; + this.paging = paging; + } + + public void buscarDadosPagedList(PagedListWrapper pagedList) { + buscarDados(pagedList); + } + + private void buscarDados(PagedListWrapper pagedList) { + personalizarBusca(); + + pagedList.init(getHibernateSearchObject(), getListBox(), getPaging()); + } + + protected abstract void personalizarBusca(); + + public void limparPesquisaListBox() { + limparPesquisaListBox(listBox, txtPesquisa); + } + + public static void limparPesquisaListBox(MyListbox listBox, MyTextbox txtPesquisa) { + listBox.setData(new ArrayList()); + txtPesquisa.setText(""); + } + + public void validarPagedListSemRegistro(String tituloRelatorio) { + validarPagedListSemRegistro(listBox, tituloRelatorio); + } + + public static void validarPagedListSemRegistro(MyListbox listBox, String tituloRelatorio) { + if (listBox.getData().length == 0) { + MensagensUtils.showMessageInformation(MSG_NENHUM_REGISTRO, tituloRelatorio); + } + } + + public Paging getPaging() { + return paging; + } + + public void setPaging(Paging paging) { + this.paging = paging; + } + + public MyListbox getListBox() { + return listBox; + } + + public void setListBox(MyListbox listBox) { + this.listBox = listBox; + } + + public MyTextbox getTxtPesquisa() { + return txtPesquisa; + } + + public void setTxtPesquisa(MyTextbox txtPesquisa) { + this.txtPesquisa = txtPesquisa; + } + + public HibernateSearchObject getHibernateSearchObject() { + return hibernateSearchObject; + } + + public void setHibernateSearchObject(HibernateSearchObject hibernateSearchObject) { + this.hibernateSearchObject = hibernateSearchObject; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListPuntoVenta.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListPuntoVenta.java new file mode 100644 index 000000000..73b50163f --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/PagedListPuntoVenta.java @@ -0,0 +1,25 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import org.zkoss.zul.Paging; + +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; + +public class PagedListPuntoVenta extends PagedListGenerico { + + public PagedListPuntoVenta(MyListbox listBox, MyTextbox txtPesquisa, Paging paging) { + super(listBox, txtPesquisa, paging); + super.setHibernateSearchObject(new HibernateSearchObject(PuntoVenta.class, getPaging().getPageSize())); + } + + @Override + protected void personalizarBusca() { + HibernateSearchObject puntoVentaBusqueda = getHibernateSearchObject(); + puntoVentaBusqueda.addFilterILike("nombpuntoventa", "%" + getTxtPesquisa().getValue() + "%"); + puntoVentaBusqueda.addFilterEqual("activo", true); + puntoVentaBusqueda.addFilterNotEqual("puntoventaId", -1); + puntoVentaBusqueda.addSortAsc("nombpuntoventa"); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ValidarDatas.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ValidarDatas.java new file mode 100644 index 000000000..6f6f361a5 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/ValidarDatas.java @@ -0,0 +1,70 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import org.zkoss.zul.Datebox; + +import com.rjconsultores.ventaboletos.web.utilerias.MensagensUtils; + +public class ValidarDatas { + + private Datebox dataInicial; + private Datebox dataFinal; + + public ValidarDatas(Datebox dataInicial, Datebox dataFinal) { + this.dataInicial = dataInicial; + this.dataFinal = dataFinal; + } + + public boolean isPeriodoNaoInformado() { + return isPeriodoInicialNaoInformado() + && isPeriodoFinalNaoInformado(); + } + + public boolean isPeriodoParcialmenteInformado() { + return (!isPeriodoInicialNaoInformado() && isPeriodoFinalNaoInformado()) + || (isPeriodoInicialNaoInformado() && !isPeriodoFinalNaoInformado()); + } + + public boolean isPeriodoFinalNaoInformado() { + return dataFinal.getValue() == null; + } + + public boolean isPeriodoInicialNaoInformado() { + return dataInicial.getValue() == null; + } + + public boolean possuiDataInicioMaiorQueTermino() { + return dataInicial.getValue().after(dataFinal.getValue()); + } + + public boolean validarPeriodoNaoInformado(String labelMensagem, String tituloMenssagem) { + if (isPeriodoNaoInformado()) { + MensagensUtils.showMessageInformation(labelMensagem, tituloMenssagem); + return true; + } + return false; + } + + public boolean validarPeriodoInicialNaoInformado(String labelMensagem, String tituloMenssagem) { + if (isPeriodoInicialNaoInformado()) { + MensagensUtils.showMessageInformation(labelMensagem, tituloMenssagem); + return true; + } + return false; + } + + public boolean validarPeriodoFinalNaoInformado(String labelMensagem, String tituloMenssagem) { + if (isPeriodoFinalNaoInformado()) { + MensagensUtils.showMessageInformation(labelMensagem, tituloMenssagem); + return true; + } + return false; + } + + public boolean validarDataInicioMaiorQueTermino(String labelMensagem, String tituloMenssagem) { + if (possuiDataInicioMaiorQueTermino()) { + MensagensUtils.showMessageInformation(labelMensagem, tituloMenssagem); + return true; + } + return false; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java index c3aea7d7c..2f563886e 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarEmpresaController.java @@ -33,7 +33,7 @@ import org.zkoss.zul.Radio; import org.zkoss.zul.Row; import org.zkoss.zul.Textbox; -import com.rjconsultores.ventaboletos.constantes.Constantes; +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; import com.rjconsultores.ventaboletos.entidad.Categoria; import com.rjconsultores.ventaboletos.entidad.Ciudad; import com.rjconsultores.ventaboletos.entidad.ComEmpCategoria; @@ -1265,7 +1265,7 @@ public class EditarEmpresaController extends MyGenericForwardComposer { } public Boolean getGeneraNumfoliosistemaVtaInternetImp() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_GENERA_FOLIOSISTEMA_VTA_INT_IMP_POSTERIOR); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_GENERA_FOLIOSISTEMA_VTA_INT_IMP_POSTERIOR); } public Checkbox getChkHabilitarFidelidade() { @@ -1304,7 +1304,7 @@ public class EditarEmpresaController extends MyGenericForwardComposer { public Boolean isPermissaoVendaSemReducaoZ() { - return !UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_EDITAR_VENDA_SEM_REDUCAO_Z); + return !UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_EDITAR_VENDA_SEM_REDUCAO_Z); } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaComissaoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaComissaoController.java index 315df7f70..59ceea674 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaComissaoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaComissaoController.java @@ -25,11 +25,9 @@ import org.zkoss.zul.Messagebox; import org.zkoss.zul.Paging; import org.zkoss.zul.Tab; -import com.rjconsultores.ventaboletos.constantes.Constantes; -import com.rjconsultores.ventaboletos.entidad.ContaCorrentePtoVta; +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; import com.rjconsultores.ventaboletos.entidad.ContaMD; import com.rjconsultores.ventaboletos.entidad.DescontoComissao; -import com.rjconsultores.ventaboletos.entidad.FechamentoParamptovta; import com.rjconsultores.ventaboletos.entidad.ItemDesconto; import com.rjconsultores.ventaboletos.entidad.PtovtaComissao; import com.rjconsultores.ventaboletos.entidad.PtovtaContaMD; @@ -39,7 +37,6 @@ import com.rjconsultores.ventaboletos.service.ItemDescontoService; import com.rjconsultores.ventaboletos.service.PtovtaComissaoService; import com.rjconsultores.ventaboletos.service.PtovtaContaMDService; import com.rjconsultores.ventaboletos.service.PuntoVentaService; -import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @@ -436,11 +433,11 @@ public class EditarPuntoVentaComissaoController extends MyGenericForwardComposer } public Boolean isPermissaoEditarComissao() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_EDITAR_COMISSAO); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_EDITAR_COMISSAO); } public Boolean isPermissaoEditarPorcentagem() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_EXIBIR_TAB_COMISSAO_CONTA); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_EXIBIR_TAB_COMISSAO_CONTA); } public List getLsItemDesconto() { diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaController.java index 7dbab0c87..73567b449 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarPuntoVentaController.java @@ -67,6 +67,7 @@ import org.zkoss.zul.Textbox; import org.zkoss.zul.api.Timebox; import com.rjconsultores.ventaboletos.constantes.Constantes; +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; import com.rjconsultores.ventaboletos.entidad.Categoria; import com.rjconsultores.ventaboletos.entidad.CategoriaBloqueioImpPosterior; import com.rjconsultores.ventaboletos.entidad.Ciudad; @@ -3413,7 +3414,7 @@ public class EditarPuntoVentaController extends MyGenericForwardComposer { } public Boolean isPermissaoEditarComissao() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_EDITAR_COMISSAO); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_EDITAR_COMISSAO); } public List getLsEmpresaContaBancarias() { diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/BusquedaRetencaoDiariaComissaoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/BusquedaRetencaoDiariaComissaoController.java index 7ec1b9a93..fde76f021 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/BusquedaRetencaoDiariaComissaoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/BusquedaRetencaoDiariaComissaoController.java @@ -21,6 +21,7 @@ import org.zkoss.zul.Datebox; import org.zkoss.zul.Messagebox; import com.rjconsultores.ventaboletos.constantes.Constantes; +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; import com.rjconsultores.ventaboletos.entidad.Constante; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; @@ -217,7 +218,7 @@ public class BusquedaRetencaoDiariaComissaoController extends MyGenericForwardCo } public Boolean isPermissaoCalculoDiarioComissaoTodasAsAgencias() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_CALCULODIARIOCOMISSAO_AUTORIZACAOCALCULOTODASAGENCIAS); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_CALCULODIARIOCOMISSAO_AUTORIZACAOCALCULOTODASAGENCIAS); } } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/ConferenciaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/ConferenciaController.java index df354b080..f98fb8ce1 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/ConferenciaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/comissao/ConferenciaController.java @@ -30,7 +30,7 @@ import org.zkoss.zul.Radio; import org.zkoss.zul.Row; import org.zkoss.zul.Tab; -import com.rjconsultores.ventaboletos.constantes.Constantes; +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; import com.rjconsultores.ventaboletos.entidad.Conferencia; import com.rjconsultores.ventaboletos.entidad.ConferenciaPendencia; import com.rjconsultores.ventaboletos.entidad.Empresa; @@ -1442,11 +1442,11 @@ public class ConferenciaController extends MyGenericForwardComposer { } public Boolean isPermissaoEncerrarMovimento() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_ENCERRAR_MOVIMENTODIARIO); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_ENCERRAR_MOVIMENTODIARIO); } public Boolean isPermissaoReabrirMovimento() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_REABRIR_MOVIMENTODIARIO); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_REABRIR_MOVIMENTODIARIO); } public Boolean isExibirBotaoReabrirMovimento() { diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarMotivoCancelacionController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarMotivoCancelacionController.java index a3f078b6d..5a5c18eff 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarMotivoCancelacionController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarMotivoCancelacionController.java @@ -23,6 +23,7 @@ import org.zkoss.zul.Messagebox; import org.zkoss.zul.Textbox; import com.rjconsultores.ventaboletos.constantes.Constantes; +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; import com.rjconsultores.ventaboletos.entidad.MotivoCancelacion; import com.rjconsultores.ventaboletos.service.MotivoCancelacionService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @@ -200,7 +201,7 @@ public class EditarMotivoCancelacionController extends MyGenericForwardComposer } public Boolean isPermissaoAlteraExibecancel() { - return UsuarioLogado.getUsuarioLogado().isPermisoClave(Constantes.CLAVE_EDITAR_ALTERA_EXIBECANCEL); + return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_EDITAR_ALTERA_EXIBECANCEL); } } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java new file mode 100644 index 000000000..e083b2917 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/EspecializaLista.java @@ -0,0 +1,50 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; + +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.List; + +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; + +public class EspecializaLista { + + private Class classe; + private MyListbox listBox; + private String nomeMetodoPk; + + public EspecializaLista(Class classe, MyListbox listBox, String nomeMetodoPk) { + this.classe = classe; + this.listBox = listBox; + this.nomeMetodoPk = nomeMetodoPk; + } + + public List getLista() { + return (List)(Object)Arrays.asList(listBox.getData()); + } + + public String obtemIds() { + StringBuilder ids = new StringBuilder(); + for (T objeto : getLista()) { + try { + String valorPk = classe.getMethod(nomeMetodoPk).invoke(objeto).toString(); + ids.append(valorPk); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + ids.append(", "); + } + return removeUltimoCaratere(ids); + } + + public static String removeUltimoCaratere(StringBuilder ids) { + return ids.substring(0, ids.length()-2); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioHistoricoComprasController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioHistoricoComprasController.java new file mode 100644 index 000000000..5ffe1ea96 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioHistoricoComprasController.java @@ -0,0 +1,242 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; + +import java.util.Arrays; +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.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Paging; + +import com.rjconsultores.ventaboletos.entidad.Cliente; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioHistoricoCompras; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListCliente; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListGenerico; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.PagedListPuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.ValidarDatas; +import com.rjconsultores.ventaboletos.service.RutaService; +import com.rjconsultores.ventaboletos.web.utilerias.MensagensUtils; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPersonalizado; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioLinhaHorario; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioVendasBilheteiro; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioVendasBilheteiroSelecionados; + +@Controller("relatorioHistoricoComprasController") +@Scope("prototype") +public class RelatorioHistoricoComprasController extends MyGenericForwardComposer { + + private static final String MSG_DATA_INICIAL_EMBARQUE_MAIOR_FINAL = "relatorioHistoricoComprasController.MSG.dataInicialEmbarqueMaiorFinal"; + private static final String MSG_DATA_INICIAL_VENDA_MAIOR_FINAL = "relatorioHistoricoComprasController.MSG.dataInicialVendaMaiorFinal"; + private static final String MSG_PERIODO_VENDA_INCOMPLETO = "relatorioHistoricoComprasController.MSG.informarDataVenda"; + private static final String MSG_PERIODO_EMBARQUE_INCOMPLETO = "relatorioHistoricoComprasController.MSG.informarDataEmbarque"; + private static final String TITULO_RELATORIO = "relatorioHistoricoComprasController.window.title"; + private static final String MSG_FILTRO_SEM_PERIODO = "relatorioHistoricoComprasController.MSG.informarFiltroData"; + + private static final long serialVersionUID = 1L; + + private Datebox dtVendaInicial; + private Datebox dtVendaFinal; + private Datebox dtEmbarqueInicial; + private Datebox dtEmbarqueFinal; + + private MyTextbox txtNombrePuntoVenta; + private MyListbox puntoVentaList; + private MyListbox puntoVentaSelList; + private Paging pagingPuntoVenta; + + private MyListbox linhaList; + private MyListbox linhaSelList; + private MyTextbox txtPalavraPesquisaLinha; + + private MyListbox cpfList; + private MyListbox cpfSelList; + private MyTextbox txtCpfPesquisa; + private Paging pagingCpfCliente; + + @Autowired + private transient PagedListWrapper pagedListPuntoVenta; + @Autowired + private transient PagedListWrapper pagedListCliente; + @Autowired + private RutaService rutaService; + @Autowired + private DataSource dataSource; + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + + configuraRenders(); + } + + private void configuraRenders() { + puntoVentaList.setItemRenderer(new RenderRelatorioVendasBilheteiro()); + puntoVentaSelList.setItemRenderer(new RenderRelatorioVendasBilheteiroSelecionados()); + + linhaList.setItemRenderer(new RenderRelatorioLinhaHorario()); + linhaSelList.setItemRenderer(new RenderRelatorioLinhaHorario()); + + List colunasClienteRender = Arrays.asList("numIdentificaUno", "nombcliente"); + cpfList.setItemRenderer(new RenderPersonalizado(colunasClienteRender)); + cpfSelList.setItemRenderer(new RenderPersonalizado(colunasClienteRender).comBotaoExcluir(true)); + } + + public void onClick$btnPesquisaPuntoVenta(Event ev) throws Exception { + PagedListPuntoVenta pageList = new PagedListPuntoVenta(puntoVentaList, txtNombrePuntoVenta, pagingPuntoVenta); + pageList.buscarDadosPagedList(pagedListPuntoVenta); + + pageList.validarPagedListSemRegistro(TITULO_RELATORIO); + } + + public void onClick$btnLimpar(Event ev) { + PagedListGenerico.limparPesquisaListBox(puntoVentaList, txtNombrePuntoVenta); + } + + public void onDoubleClick$puntoVentaSelList(Event ev) { + puntoVentaSelList.removeItem((PuntoVenta) puntoVentaSelList.getSelected()); + } + + public void onDoubleClick$puntoVentaList(Event ev) { + validarInclusaoLista((PuntoVenta) puntoVentaList.getSelected(), puntoVentaSelList); + } + + public void onClick$btnPesquisaLinha(Event ev) { + linhaList.setData(rutaService.buscaRuta(txtPalavraPesquisaLinha.getText())); + PagedListGenerico.validarPagedListSemRegistro(linhaList, TITULO_RELATORIO); + } + + public void onClick$btnLimparLinha(Event ev) { + PagedListGenerico.limparPesquisaListBox(linhaList, txtPalavraPesquisaLinha); + } + + public void onDoubleClick$linhaSelList(Event ev) { + linhaSelList.removeItem((Ruta) linhaSelList.getSelected()); + } + + public void onDoubleClick$linhaList(Event ev) { + validarInclusaoLista((Ruta) linhaList.getSelected(), linhaSelList); + } + + public void onClick$btnPesquisaCpf(Event ev) { + PagedListCliente pageListCliente = new PagedListCliente(cpfList, txtCpfPesquisa, pagingCpfCliente); + pageListCliente.buscarDadosPagedList(pagedListCliente); + pageListCliente.validarPagedListSemRegistro(TITULO_RELATORIO); + } + + public void onClick$btnLimparCpf(Event ev) { + PagedListCliente.limparPesquisaListBox(cpfList, txtCpfPesquisa); + } + + public void onDoubleClick$cpfSelList(Event ev) { + cpfSelList.removeItem((Cliente) cpfSelList.getSelected()); + } + + public void onDoubleClick$cpfList(Event ev) { + validarInclusaoLista((Cliente) cpfList.getSelected(), cpfSelList); + } + + public void onClick$btnExecutarRelatorio(Event ev) throws Exception { + if (isDatasValidas()) { + Relatorio relatorio = new RelatorioHistoricoCompras(getParametros(), dataSource.getConnection()); + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel(TITULO_RELATORIO), args, MODAL); + } + } + + private Map getParametros() { + Map parametros = new HashMap(); + + parametros.put("NOME_RELATORIO", Labels.getLabel(TITULO_RELATORIO)); + parametros.put("dtVendaInicial", dtVendaInicial.getValue()); + parametros.put("dtVendaFinal", dtVendaFinal.getValue()); + parametros.put("dtEmbarqueInicial", dtEmbarqueInicial.getValue()); + parametros.put("dtEmbarqueFinal", dtEmbarqueFinal.getValue()); + getParametroPuntoVenta(parametros); + getParametroLinha(parametros); + getParametroCliente(parametros); + + return parametros; + } + + private void getParametroCliente(Map parametros) { + EspecializaLista especializaLista = new EspecializaLista(Cliente.class, cpfSelList, "getClienteId"); + if (!especializaLista.getLista().isEmpty()) { + parametros.put("clienteId", especializaLista.obtemIds()); + } + } + + private void getParametroLinha(Map parametros) { + EspecializaLista especializaLista = new EspecializaLista(Ruta.class, linhaSelList, "getRutaId"); + if (!especializaLista.getLista().isEmpty()) { + parametros.put("rutaId", especializaLista.obtemIds()); + } + } + + private void getParametroPuntoVenta(Map parametros) { + EspecializaLista especializaLista = new EspecializaLista(PuntoVenta.class, puntoVentaSelList, "getPuntoventaId"); + if (!especializaLista.getLista().isEmpty()) { + parametros.put("puntoVentaId", especializaLista.obtemIds()); + } + } + + private void validarInclusaoLista(Object objeto, MyListbox listBox) { + if (objeto != null && + !Arrays.asList(listBox.getData()).contains(objeto)) { + listBox.addItemNovo(objeto); + } + } + + private boolean isDatasValidas() { + ValidarDatas validarDtVenda = new ValidarDatas(dtVendaInicial, dtVendaFinal); + ValidarDatas validarDtEmbarque = new ValidarDatas(dtEmbarqueInicial, dtEmbarqueFinal); + + if (isDatasPeriodosNaoInformados(validarDtVenda, validarDtEmbarque)) { + MensagensUtils.showMessageInformation(MSG_FILTRO_SEM_PERIODO, TITULO_RELATORIO); + return false; + } + + if (validarDtVenda.isPeriodoParcialmenteInformado()) { + MensagensUtils.showMessageInformation(MSG_PERIODO_VENDA_INCOMPLETO, TITULO_RELATORIO); + return false; + } + + if (validarDtEmbarque.isPeriodoParcialmenteInformado()) { + MensagensUtils.showMessageInformation(MSG_PERIODO_EMBARQUE_INCOMPLETO, TITULO_RELATORIO); + return false; + } + + if (!validarDtVenda.isPeriodoInicialNaoInformado() + && validarDtVenda.validarDataInicioMaiorQueTermino(MSG_DATA_INICIAL_VENDA_MAIOR_FINAL, TITULO_RELATORIO)) { + return false; + } + + if (!validarDtEmbarque.isPeriodoNaoInformado()) { + return !validarDtEmbarque.validarDataInicioMaiorQueTermino(MSG_DATA_INICIAL_EMBARQUE_MAIOR_FINAL, TITULO_RELATORIO); + } + + return true; + } + + private boolean isDatasPeriodosNaoInformados(ValidarDatas validarDtVenda, ValidarDatas validarDtEmbarque) { + return validarDtVenda.isPeriodoNaoInformado() && validarDtEmbarque.isPeriodoNaoInformado(); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/MensagensUtils.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MensagensUtils.java new file mode 100644 index 000000000..c6428aea7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/MensagensUtils.java @@ -0,0 +1,21 @@ +package com.rjconsultores.ventaboletos.web.utilerias; + +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; + +public class MensagensUtils { + + private MensagensUtils() { + } + + public static void showMessageInformation(String labelMensagem, String tituloMenssagem) { + try { + Messagebox.show( + Labels.getLabel(labelMensagem), + Labels.getLabel(tituloMenssagem), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioHistoricoCompras.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioHistoricoCompras.java new file mode 100644 index 000000000..8497fa5c7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioHistoricoCompras.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioHistoricoCompras extends DefaultItemMenuSistema { + + public ItemMenuRelatorioHistoricoCompras() { + super("indexController.mniRelatorioHistoricoCompras.label"); + } + + @Override + public String getClaveMenu() { + return ConstantesFuncionSistema.CLAVE_HISTORICO_COMPRAS; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/relatorios/filtroRelatorioHistoricoCompras.zul", + Labels.getLabel("relatorioHistoricoComprasController.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 df343fc68..1124c98b1 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 @@ -139,6 +139,7 @@ analitico.gerenciais.remDev=com.rjconsultores.ventaboletos.web.utilerias.menu.it analitico.gerenciais.tabPreco=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioTabelaPreco analitico.gerenciais.trip=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemRelatorioTripulacao analitico.gerenciais.relatorioImpressaoPosterior=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioImpressaoPosterior +analitico.gerenciais.relatorioHistoricoCompras=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioHistoricoCompras analitico.gerenciais.operacionais=com.rjconsultores.ventaboletos.web.utilerias.menu.item.analitico.gerenciais.operacionais.SubMenuRelatorioOperacionais analitico.gerenciais.operacionais.aproveitamento=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioAproveitamento analitico.gerenciais.operacionais.resumoLinhas=com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.ItemMenuRelatorioResumoLinhas diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java new file mode 100644 index 000000000..3ce18713b --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPersonalizado.java @@ -0,0 +1,92 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +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.web.utilerias.MyListbox; + +/** + * @author emerson + * + * Este render exibirá as colunas que forem informadas no construtor. + * O nome das colunas deverão ter o mesmo nome do campo da classe. + * + */ +public class RenderPersonalizado implements ListitemRenderer { + + List colunas = new ArrayList(); + Boolean addBotaoExcluir = false; + + public RenderPersonalizado(List colunas) { + this.colunas = colunas; + } + + public RenderPersonalizado comBotaoExcluir(Boolean addBotaoExcluir) { + this.addBotaoExcluir = addBotaoExcluir; + return this; + } + + @Override + public void render(Listitem item, Object objeto) throws Exception { + incluirColunasRender(item, objeto); + + if (addBotaoExcluir) { + Listcell lc = new Listcell(); + lc.setParent(item); + lc.appendChild(criaBotaoExcluir()); + } + + item.setAttribute("data", (T)objeto); + } + + protected void incluirColunasRender(Listitem item, Object objeto) throws IllegalAccessException, InvocationTargetException { + incluirColunasSelecionadas(item, objeto); + } + + private void incluirColunasSelecionadas(Listitem item, Object objeto) throws IllegalAccessException, InvocationTargetException { + Method[] methods = objeto.getClass().getDeclaredMethods(); + for (String coluna : colunas) { + String nomeMetodo = obtemMetodoGet(coluna); + for (Method method : methods) { + if (method.getName().equals(nomeMetodo)) { + Listcell lc = new Listcell(method.invoke((T)objeto).toString()); + lc.setParent(item); + break; + } + } + } + } + + private Button criaBotaoExcluir() { + Button botaoExcluir = new Button(); + botaoExcluir.setWidth("16"); + botaoExcluir.setHeight("16"); + botaoExcluir.setImage("/gui/img/remove.png"); + + botaoExcluir.addEventListener("onClick", new EventListenerExcluirRegistroRender()); + return botaoExcluir; + } + + private String obtemMetodoGet(String coluna) { + return "get".concat(coluna.substring(0, 1).toUpperCase().concat(coluna.substring(1))); + } + + private final class EventListenerExcluirRegistroRender implements 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(listItem.getAttribute("data")); + } + } + +} diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index cb52423b6..edc1b80bd 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -305,6 +305,7 @@ indexController.mniRelatorioImpressaoPosterior.label=Impresión posterior indexController.mniRelatorioServicoBloqueadoVendaInternet.label = Corrida bloqueada en venta internet indexController.mniRelatorioDocumentosFiscais.label = Report Documentos Fiscais indexController.mniRelatorioVendasConexao.label = Reporte Ventas Conexion +indexController.mniRelatorioHistoricoCompras.label = Reporte Histórico de Compras indexController.mniRelatorioRemessaCNAB.label = Remessa de Lote (CNAB 400) @@ -816,6 +817,29 @@ relatorioServicoBloqueadoVendaInternetController.lbDatFinal.value = Fecha final relatorioServicoBloqueadoVendaInternetController.lbEmpresa.value = Empresa relatorioServicoBloqueadoVendaInternetController.lbAgencia.value = Agencia +#Relatorio Historico Compras +relatorioHistoricoComprasController.window.title = Reporte Histórico de Compras +relatorioHistoricoComprasController.lblDataVendaIni.value = Data Venda Inicial +relatorioHistoricoComprasController.lblDataVendaFin.value = Data Venda Final +relatorioHistoricoComprasController.lblDataEmbarqueIni.value = Data Embarque Inicial +relatorioHistoricoComprasController.lblDataEmbarqueFin.value = Data Embarque Final +relatorioHistoricoComprasController.lbPuntoVenta.value = Agência +relatorioHistoricoComprasController.lbEmpresa.value = Empresa +relatorioHistoricoComprasController.lbNumero.value = Número Agência +relatorioHistoricoComprasController.lbLinha.label = Linha +relatorioHistoricoComprasController.lbNumRuta.label = Num. Linha +relatorioHistoricoComprasController.lbPrefixo.label = Prefixo +relatorioHistoricoComprasController.lbOrgao.label = Orgão Concedente +relatorioHistoricoComprasController.lbCpf.label = CPF Cliente +relatorioHistoricoComprasController.nomeCliente.value = Cliente +relatorioHistoricoComprasController.MSG.informarDataVenda = Favor informar o período completo de venda. +relatorioHistoricoComprasController.MSG.informarDataEmbarque = Favor informar o período completo de embarque. +relatorioHistoricoComprasController.MSG.informarFiltroData = Favor informar um filtro de data. +relatorioHistoricoComprasController.MSG.dataInicialVendaMaiorFinal = Data inicial da venda maior que final. +relatorioHistoricoComprasController.MSG.dataInicialEmbarqueMaiorFinal = Data inicial do embarque maior que final. +relatorioHistoricoComprasController.btnPesquisa.label = Pesquisar +relatorioHistoricoComprasController.btnLimpar.label = Limpar + #Relatório Documentos Fiscais relatorioDocumentosFiscaisController.window.title = Reporte Documentos Fiscais relatorioDocumentosFiscaisController.lbDatInicial.value = Fecha Inicial diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index d19dba752..11f8bcf76 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -323,6 +323,7 @@ indexController.mniRelatorioImpressaoPosterior.label=Impressão Posterior indexController.mniRelatorioServicoBloqueadoVendaInternet.label = Serviço Bloqueado na Venda Internet indexController.mniRelatorioDocumentosFiscais.label = Relatório Documentos Fiscais indexController.mniRelatorioVendasConexao.label = Relatório Vendas de Conexão +indexController.mniRelatorioHistoricoCompras.label = Relatório Histórico de Compras indexController.mnSubMenuImpressaoFiscal.label=Impressão Fiscal indexController.mnSubMenuRelatorioImpressaoFiscal.label=Importação Fiscal @@ -915,6 +916,29 @@ relatorioServicoBloqueadoVendaInternetController.lbDatFinal.value = Data Final relatorioServicoBloqueadoVendaInternetController.lbEmpresa.value = Empresa relatorioServicoBloqueadoVendaInternetController.lbAgencia.value = Agência +#Relatorio Historico Compras +relatorioHistoricoComprasController.window.title = Relatório Histórico de Compras +relatorioHistoricoComprasController.lblDataVendaIni.value = Data Venda Inicial +relatorioHistoricoComprasController.lblDataVendaFin.value = Data Venda Final +relatorioHistoricoComprasController.lblDataEmbarqueIni.value = Data Embarque Inicial +relatorioHistoricoComprasController.lblDataEmbarqueFin.value = Data Embarque Final +relatorioHistoricoComprasController.lbPuntoVenta.value = Agência +relatorioHistoricoComprasController.lbEmpresa.value = Empresa +relatorioHistoricoComprasController.lbNumero.value = Número Agência +relatorioHistoricoComprasController.lbLinha.label = Linha +relatorioHistoricoComprasController.lbNumRuta.label = Num. Linha +relatorioHistoricoComprasController.lbPrefixo.label = Prefixo +relatorioHistoricoComprasController.lbOrgao.label = Orgão Concedente +relatorioHistoricoComprasController.lbCpf.label = CPF Cliente +relatorioHistoricoComprasController.nomeCliente.value = Cliente +relatorioHistoricoComprasController.MSG.informarDataVenda = Favor informar o período completo de venda. +relatorioHistoricoComprasController.MSG.informarDataEmbarque = Favor informar o período completo de embarque. +relatorioHistoricoComprasController.MSG.informarFiltroData = Favor informar um filtro de data. +relatorioHistoricoComprasController.MSG.dataInicialVendaMaiorFinal = Data inicial da venda maior que final. +relatorioHistoricoComprasController.MSG.dataInicialEmbarqueMaiorFinal = Data inicial do embarque maior que final. +relatorioHistoricoComprasController.btnPesquisa.label = Pesquisar +relatorioHistoricoComprasController.btnLimpar.label = Limpar + # Pantalla Editar Classe editarClaseServicioController.window.title = Tipo de Classe editarClaseServicioController.btnApagar.tooltiptext = Eliminar diff --git a/web/gui/relatorios/filtroRelatorioHistoricoCompras.zul b/web/gui/relatorios/filtroRelatorioHistoricoCompras.zul new file mode 100644 index 000000000..2a0827ac4 --- /dev/null +++ b/web/gui/relatorios/filtroRelatorioHistoricoCompras.zul @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + +