From a105d3a887a269d9ecceebc161833d706c257898 Mon Sep 17 00:00:00 2001 From: emerson Date: Tue, 10 Jul 2018 14:02:47 +0000 Subject: [PATCH] fixes bug#0011329 dev: emerson qua: jose git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@83240 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../RelatorioDiferencasTransferencias.java | 161 ++++++---- .../RelatorioDiferencasTransferencias.jasper | Bin 29619 -> 37365 bytes .../RelatorioDiferencasTransferencias.jrxml | 171 +++++++++-- .../RelatorioDescontosController.java | 7 +- ...rioDiferencasTransferenciasController.java | 274 +++++++++++++++--- .../render/RenderPuntoVentaSimple.java | 5 - .../RenderRelatorioDescontosEmpresasSel.java | 27 -- ...> RenderRelatorioGenericoEmpresasSel.java} | 2 +- web/WEB-INF/i3-label_es_MX.label | 11 +- web/WEB-INF/i3-label_pt_BR.label | 11 +- ...iltroRelatorioDiferencasTransferencias.zul | 113 +++++++- 11 files changed, 590 insertions(+), 192 deletions(-) delete mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontosEmpresasSel.java rename src/java/com/rjconsultores/ventaboletos/web/utilerias/render/{RenderRelatorioDescontos.java => RenderRelatorioGenericoEmpresasSel.java} (83%) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDiferencasTransferencias.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDiferencasTransferencias.java index 16cd9bad9..244687742 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDiferencasTransferencias.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDiferencasTransferencias.java @@ -14,82 +14,115 @@ import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; public class RelatorioDiferencasTransferencias extends Relatorio { - public RelatorioDiferencasTransferencias(Map parametros, Connection conexao) throws Exception - { + public RelatorioDiferencasTransferencias(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 sql = getSql(); - - 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())); - - ResultSet rset = stmt.executeQuery(); - - while (rset.next()) { - - Map dataResult = new HashMap(); - - dataResult.put("classe_original", rset.getString("classe_original")); - dataResult.put("total_pago_original", rset.getBigDecimal("total_pago_original")); - dataResult.put("classe_novo", rset.getString("classe_novo")); - dataResult.put("diferença_preço", rset.getBigDecimal("diferença_preço")); - - this.dados.add(dataResult); - } - - this.resultSet = rset; - } - }); + this.setCustomDataSource(new ArrayDataSourceTransferencia(this)); } @Override protected void processaParametros() throws Exception { } - private String getSql() { - StringBuilder sql = new StringBuilder(); + private final class ArrayDataSourceTransferencia extends ArrayDataSource { + + private static final String FIELD_VALOR_DIFERENCA = "valor_diferenca"; + private static final String FIELD_DATA_FINAL = "DATA_FINAL"; + private static final String FIELD_DATA_INICIAL = "DATA_INICIAL"; + private static final String FIELD_TOTAL_TRANSF = "total_transf"; + private static final String FIELD_CLASSE_TRANSF = "classe_transf"; + private static final String FIELD_TOTAL_ORIGINAL = "total_original"; + private static final String FIELD_CLASSE_ORIGINAL = "classe_original"; + private static final String FIELD_DESTINO = "destino"; + private static final String FIELD_ORIGEM = "origem"; + private static final String FIELD_BILHETE = "bilhete"; + private static final String FIELD_AGENCIA_TRANSF = "agencia_transf"; + private static final String FIELD_EMPRESA = "empresa"; - sql.append(" SELECT CS_ORIG.DESCCLASE AS classe_original, "); - sql.append(" (COALESCE(B_ORIG.PRECIOPAGADO, 0) + COALESCE(B_ORIG.IMPORTETAXAEMBARQUE, 0) + COALESCE(B_ORIG.IMPORTEPEDAGIO, 0) + COALESCE(B_ORIG.IMPORTEOUTROS, 0) + COALESCE(B_ORIG.IMPORTESEGURO, 0) ) AS total_pago_original, "); - sql.append(" CS_NOVO.DESCCLASE AS classe_novo, "); - sql.append(" (CASE WHEN TEE.DESCTIPOEVENTO LIKE 'Dif. Maior' THEN ( -1 * (COALESCE(ee.IMPINGRESO, 0)) ) ELSE (COALESCE(ee.IMPINGRESO, 0)) END) AS diferença_preço "); - sql.append(" FROM BOLETO B_NOVO "); + private ArrayDataSourceTransferencia(Relatorio relatorio) throws Exception { + super(relatorio); + } - sql.append(" INNER JOIN CAJA_DIVERSOS CD "); - sql.append(" ON CD.NUMOPERACION = B_NOVO.NUMOPERACION"); - sql.append(" INNER JOIN EVENTO_EXTRA EE "); - sql.append(" ON EE.EVENTOEXTRA_ID = CD.EVENTOEXTRA_ID "); - sql.append(" INNER JOIN TIPO_EVENTO_EXTRA TEE "); - sql.append(" ON TEE.TIPOEVENTOEXTRA_ID = EE.TIPOEVENTOEXTRA_ID "); - sql.append(" AND (TEE.DESCTIPOEVENTO LIKE 'Dif. Menor' OR TEE.DESCTIPOEVENTO LIKE 'Dif. Maior') "); - sql.append(" INNER JOIN BOLETO B_ORIG "); - sql.append(" ON B_ORIG.BOLETO_ID = B_NOVO.BOLETOORIGINAL_ID "); - sql.append(" INNER JOIN CLASE_SERVICIO CS_NOVO "); - sql.append(" ON CS_NOVO.CLASESERVICIO_ID = B_NOVO.CLASESERVICIO_ID "); - sql.append(" INNER JOIN CLASE_SERVICIO CS_ORIG "); - sql.append(" ON CS_ORIG.CLASESERVICIO_ID = B_ORIG.CLASESERVICIO_ID "); + public void initDados() throws Exception { + Connection conexao = this.relatorio.getConexao(); + Map parametros = this.relatorio.getParametros(); - sql.append("WHERE B_NOVO.INDSTATUSBOLETO LIKE 'T' "); - sql.append(" AND B_NOVO.FECHORVENTA >= :DATA_INICIAL "); - sql.append(" AND B_NOVO.FECHORVENTA <= :DATA_FINAL "); - sql.append(" AND B_NOVO.BOLETOORIGINAL_ID IS NOT NULL "); - sql.append(" ORDER BY "); - sql.append(" CASE "); - sql.append(" WHEN cs_orig.DESCCLASE = cs_novo.DESCCLASE THEN 1 "); - sql.append(" WHEN cs_orig.DESCCLASE <> cs_novo.DESCCLASE THEN 2 "); - sql.append(" ELSE 3 "); - sql.append(" END asc, "); - sql.append(" cs_orig.DESCCLASE "); + String sql = getSql(parametros); - return sql.toString(); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); + + stmt.setTimestamp(FIELD_DATA_INICIAL, new Timestamp(DateUtil.inicioFecha((Date) parametros.get(FIELD_DATA_INICIAL)).getTime())); + stmt.setTimestamp(FIELD_DATA_FINAL, new Timestamp(DateUtil.fimFecha((Date) parametros.get(FIELD_DATA_FINAL)).getTime())); + + ResultSet rset = stmt.executeQuery(); + + while (rset.next()) { + + Map dataResult = new HashMap(); + + dataResult.put(FIELD_EMPRESA, rset.getString(FIELD_EMPRESA)); + dataResult.put(FIELD_AGENCIA_TRANSF, rset.getString(FIELD_AGENCIA_TRANSF)); + dataResult.put(FIELD_BILHETE, rset.getString(FIELD_BILHETE)); + dataResult.put(FIELD_ORIGEM, rset.getString(FIELD_ORIGEM)); + dataResult.put(FIELD_DESTINO, rset.getString(FIELD_DESTINO)); + dataResult.put(FIELD_CLASSE_ORIGINAL, rset.getString(FIELD_CLASSE_ORIGINAL)); + dataResult.put(FIELD_TOTAL_ORIGINAL, rset.getBigDecimal(FIELD_TOTAL_ORIGINAL)); + dataResult.put(FIELD_CLASSE_TRANSF, rset.getString(FIELD_CLASSE_TRANSF)); + dataResult.put(FIELD_TOTAL_TRANSF, rset.getBigDecimal(FIELD_TOTAL_TRANSF)); + dataResult.put(FIELD_VALOR_DIFERENCA, rset.getBigDecimal(FIELD_TOTAL_TRANSF).subtract(rset.getBigDecimal(FIELD_TOTAL_ORIGINAL))); + + this.dados.add(dataResult); + } + + this.resultSet = rset; + } + + private String getSql(Map parametros) { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT E.NOMBEMPRESA EMPRESA, PV.NOMBPUNTOVENTA AGENCIA_TRANSF, B.NUMFOLIOSISTEMA BILHETE, "); + sql.append(" PO.DESCPARADA ORIGEM, PD.DESCPARADA DESTINO, CSO.DESCCLASE CLASSE_ORIGINAL, "); + sql.append(" COALESCE(BO.PRECIOPAGADO,0) + COALESCE(BO.IMPORTEOUTROS,0) + "); + sql.append(" COALESCE(BO.IMPORTEPEDAGIO,0) + COALESCE(BO.IMPORTESEGURO,0) + "); + sql.append(" COALESCE(BO.IMPORTETAXAEMBARQUE,0) TOTAL_ORIGINAL, "); + sql.append(" CS.DESCCLASE CLASSE_TRANSF, "); + sql.append(" COALESCE(B.PRECIOPAGADO,0) + COALESCE(B.IMPORTEOUTROS,0) + "); + sql.append(" COALESCE(B.IMPORTEPEDAGIO,0) + COALESCE(B.IMPORTESEGURO,0) + "); + sql.append(" COALESCE(B.IMPORTETAXAEMBARQUE,0) TOTAL_TRANSF "); + sql.append(" FROM BOLETO B "); + sql.append(" INNER JOIN MARCA M ON B.MARCA_ID = M.MARCA_ID "); + sql.append(" INNER JOIN EMPRESA E ON M.EMPRESA_ID = E.EMPRESA_ID "); + sql.append(" INNER JOIN PUNTO_VENTA PV ON B.PUNTOVENTA_ID = PV.PUNTOVENTA_ID "); + sql.append(" INNER JOIN BOLETO BO ON BO.BOLETO_ID = B.BOLETOORIGINAL_ID "); + sql.append(" LEFT JOIN CLASE_SERVICIO CS ON CS.CLASESERVICIO_ID = B.CLASESERVICIO_ID "); + sql.append(" LEFT JOIN CLASE_SERVICIO CSO ON CSO.CLASESERVICIO_ID = BO.CLASESERVICIO_ID "); + sql.append(" LEFT JOIN PARADA PO ON PO.PARADA_ID = B.ORIGEN_ID "); + sql.append(" LEFT JOIN PARADA PD ON PD.PARADA_ID = B.DESTINO_ID "); + sql.append(" WHERE B.TIPOVENTA_ID = 81 "); + sql.append(" AND B.FECHORVENTA >= :DATA_INICIAL "); + sql.append(" AND B.FECHORVENTA <= :DATA_FINAL "); + if ((String)parametros.get("EMPRESA_ID") != null + && !filtrarTodos("EMPRESA_ID")) { + sql.append(" AND M.EMPRESA_ID IN ("+parametros.get("EMPRESA_ID")+")"); + } + if ((String)parametros.get("PUNTOVENTA_ID") != null + && !filtrarTodos("PUNTOVENTA_ID")) { + sql.append(" AND B.PUNTOVENTA_ID IN ("+parametros.get("PUNTOVENTA_ID")+")"); + } + + sql.append(" ORDER BY E.NOMBEMPRESA, PV.NOMBPUNTOVENTA "); + + return sql.toString(); + } + + private boolean filtrarTodos(String parametro) { + String ids = (String)parametros.get(parametro); + for (int i = 0; i < ids.split(", ").length; i++) { + if ("-1".equals(ids.split(", ")[i])) { + return true; + } + } + return false; + } } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDiferencasTransferencias.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDiferencasTransferencias.jasper index e60c031f3a7fd21b2c17d5497081cf9147333683..cd374a1cd4bc9a6a893faa15549716ee36cbdc3d 100644 GIT binary patch literal 37365 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

M*!J$8;b)0>-MUVLJLzLikEJ{s*! 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 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDiferencasTransferencias.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDiferencasTransferencias.jrxml index ea4e05361..b3953354e 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDiferencasTransferencias.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDiferencasTransferencias.jrxml @@ -1,17 +1,34 @@ - + + + + + + + + - - - + + + + + + + + + + + + + @@ -114,69 +131,169 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

- + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDescontosController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDescontosController.java index 644459b3f..e6c8133c7 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDescontosController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDescontosController.java @@ -29,8 +29,7 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioDescontos; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioDescontosEmpresasSel; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioGenericoEmpresasSel; @Controller("relatorioDescontosController") @Scope("prototype") @@ -56,8 +55,8 @@ public class RelatorioDescontosController extends MyGenericForwardComposer { @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - empresaList.setItemRenderer(new RenderRelatorioDescontos()); - empresaSelList.setItemRenderer(new RenderRelatorioDescontosEmpresasSel()); + empresaList.setItemRenderer(new RenderRelatorioGenericoEmpresasSel()); + empresaSelList.setItemRenderer(new RenderRelatorioGenericoEmpresasSel()); } public void onClick$btnExecutarRelatorio(Event ev) throws Exception { diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDiferencasTransferenciasController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDiferencasTransferenciasController.java index afd88561c..d4f9957b1 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDiferencasTransferenciasController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioDiferencasTransferenciasController.java @@ -1,7 +1,10 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.sql.DataSource; @@ -13,65 +16,131 @@ 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 org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; -import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; -import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioDiferencasTransferencias; -import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioReceitaServico; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPuntoVentaSimple; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioGenericoEmpresasSel; +import com.trg.search.Filter; @Controller("relatorioDiferencasTransferenciasController") @Scope("prototype") public class RelatorioDiferencasTransferenciasController extends MyGenericForwardComposer { + private static final String LIKE = "%"; + private static final long serialVersionUID = 1L; private Datebox datInicial; private Datebox datFinal; + private Textbox txtNombreEmpresa; + private Paging pagingEmpresa; + private Paging pagingEmpresaSel; + private MyListbox empresaList; + private MyListbox empresaSelList; + private MyListbox puntoVentaList; + private MyListbox puntoVentaSelectedList; + private Textbox txtNomeAgencia; + private Paging pagingPuntoVenta; @Autowired - private DataSource dataSourceRead; - - 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; - } + private DataSource dataSourceRead; + + @Autowired + private transient PagedListWrapper plwEmpresa; + + @Autowired + private transient PagedListWrapper plwPuntoVenta; @Override public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); + empresaList.setItemRenderer(new RenderRelatorioGenericoEmpresasSel()); + empresaSelList.setItemRenderer(new RenderRelatorioGenericoEmpresasSel()); + puntoVentaList.setItemRenderer(new RenderPuntoVentaSimple()); + puntoVentaSelectedList.setItemRenderer(new RenderPuntoVentaSimple()); } public void onClick$btnExecutarRelatorio(Event ev) throws Exception { executarRelatorio(); } + + public void onClick$btnPesquisaEmpresa(Event ev) { + HibernateSearchObject empresaBusqueda = + new HibernateSearchObject(Empresa.class, pagingEmpresa.getPageSize()); + + empresaBusqueda.addFilterILike("nombempresa", obtemFiltroLike(txtNombreEmpresa)); + empresaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + empresaBusqueda.addSortAsc("nombempresa"); + + plwEmpresa.init(empresaBusqueda, empresaList, pagingEmpresa); + + validaPesquisaSemRegistro(empresaList); + } + + public void onClick$btnLimparEmpresa(Event ev) { + empresaList.setData(new ArrayList()); + txtNombreEmpresa.setText(""); + } + + public void onDoubleClick$empresaList(Event ev) { + Empresa empresa = (Empresa) empresaList.getSelected(); + if (!Arrays.asList(empresaSelList.getData()).contains(empresa)) { + empresaSelList.addItemNovo(empresa); + } + } + + public void onDoubleClick$empresaSelList(Event ev) { + Empresa empresa = (Empresa) empresaSelList.getSelected(); + empresaSelList.removeItem(empresa); + } + + public void onClick$btnPesquisaAgencia(Event ev) { + HibernateSearchObject puntoVentaBusqueda = + new HibernateSearchObject(PuntoVenta.class, pagingPuntoVenta.getPageSize()); + + puntoVentaBusqueda.addFilterOr(Filter.like("nombpuntoventa", obtemFiltroLike(txtNomeAgencia)), + Filter.like("numPuntoVenta", obtemFiltroLike(txtNomeAgencia))); + puntoVentaBusqueda.addSortAsc("nombpuntoventa"); + puntoVentaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + plwPuntoVenta.init(puntoVentaBusqueda, puntoVentaList, pagingPuntoVenta); + + validaPesquisaSemRegistro(puntoVentaList); + + } + + public void onClick$btnLimparAgencia(Event ev) { + puntoVentaList.setData(new ArrayList()); + txtNomeAgencia.setText(""); + } + + public void onDoubleClick$puntoVentaList(Event ev) { + PuntoVenta puntoVenta = (PuntoVenta) puntoVentaList.getSelected(); + if (!Arrays.asList(puntoVentaSelectedList.getData()).contains(puntoVenta)) { + puntoVentaSelectedList.addItemNovo(puntoVenta); + } + } + + public void onDoubleClick$puntoVentaSelectedList(Event ev) { + PuntoVenta puntoVentaSel = (PuntoVenta) puntoVentaSelectedList.getSelected(); + puntoVentaSelectedList.removeItem(puntoVentaSel); + } - /** - * @throws Exception - * - */ @SuppressWarnings({ "rawtypes", "unchecked" }) private void executarRelatorio() throws Exception { - - if (datInicial != null && datFinal != null && datFinal.getValue().compareTo(datInicial.getValue()) < 0) { + if (!isPeriodoValido()) { try { Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), Labels.getLabel("relatorioDiferencasTransferenciasController.window.title"), @@ -79,29 +148,27 @@ public class RelatorioDiferencasTransferenciasController extends MyGenericForwar } catch (InterruptedException ex) { ex.printStackTrace(); } - } else - { + } 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) + "; "); + configuraFiltro(filtro, datInicial, "Início período: "); + configuraFiltro(filtro, datFinal, "Fim período: "); parametros.put("DATA_INICIAL", (java.util.Date) datInicial.getValue()); parametros.put("DATA_FINAL", (java.util.Date) datFinal.getValue()); + + List listaEmpresa = Arrays.asList(empresaSelList.getData()); + if (!listaEmpresa.isEmpty()) { + parametros.put("EMPRESA_ID", getIdsEmpresa(listaEmpresa)); + } + + List listaPontosVenda = Arrays.asList(puntoVentaSelectedList.getData()); + if (!listaPontosVenda.isEmpty()) { + parametros.put("PUNTOVENTA_ID", getIdsPontoVenda(listaPontosVenda)); + } parametros.put("FILTROS", filtro.toString()); @@ -117,4 +184,123 @@ public class RelatorioDiferencasTransferenciasController extends MyGenericForwar Labels.getLabel("relatorioDiferencasTransferenciasController.window.title"), args, MODAL); } } + + private String getIdsEmpresa(List listaEmpresa) { + String ids = ""; + for (Object empresa : listaEmpresa) { + ids += ((Empresa)empresa).getEmpresaId() +", "; + } + return ids.substring(0, ids.length()-2); + } + + private String getIdsPontoVenda(List listaPontosVenda) { + String ids = ""; + for (Object pontoVenda : listaPontosVenda) { + ids += ((PuntoVenta)pontoVenda).getPuntoventaId() +", "; + } + return ids.substring(0, ids.length()-2); + } + + private StringBuilder configuraFiltro(StringBuilder filtro, Datebox campoData, String labelCampo) { + filtro.append(labelCampo); + Calendar cal = Calendar.getInstance(); + cal.setTime(campoData.getValue()); + filtro.append(cal.get(Calendar.DATE) + "/"); + filtro.append((cal.get(Calendar.MONTH) + 1) + "/"); + filtro.append(cal.get(Calendar.YEAR) + "; "); + return filtro; + } + + private boolean isPeriodoValido() { + return datFinal.getValue().compareTo(datInicial.getValue()) >= 0; + } + + private void validaPesquisaSemRegistro(MyListbox listBox) { + if (listBox.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioDiferencasTransferenciasController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + } + + private String obtemFiltroLike(Textbox filtro) { + return LIKE.concat(filtro.getText().trim().toUpperCase().concat(LIKE)) ; + } + + public Datebox getDatInicial() { + return datInicial; + } + + public void setDatInicial(Datebox datInicial) { + this.datInicial = datInicial; + } + + public Textbox getTxtNombreEmpresa() { + return txtNombreEmpresa; + } + + public void setTxtNombreEmpresa(Textbox txtNombreEmpresa) { + this.txtNombreEmpresa = txtNombreEmpresa; + } + + public Paging getPagingEmpresa() { + return pagingEmpresa; + } + + public void setPagingEmpresa(Paging pagingEmpresa) { + this.pagingEmpresa = pagingEmpresa; + } + + public Paging getPagingEmpresaSel() { + return pagingEmpresaSel; + } + + public void setPagingEmpresaSel(Paging pagingEmpresaSel) { + this.pagingEmpresaSel = pagingEmpresaSel; + } + + public MyListbox getEmpresaList() { + return empresaList; + } + + public void setEmpresaList(MyListbox empresaList) { + this.empresaList = empresaList; + } + + public MyListbox getEmpresaSelList() { + return empresaSelList; + } + + public void setEmpresaSelList(MyListbox empresaSelList) { + this.empresaSelList = empresaSelList; + } + + public Datebox getDatFinal() { + return datFinal; + } + + public void setDatFinal(Datebox datFinal) { + this.datFinal = datFinal; + } + + public MyListbox getPuntoVentaList() { + return puntoVentaList; + } + + public void setPuntoVentaList(MyListbox puntoVentaList) { + this.puntoVentaList = puntoVentaList; + } + + public MyListbox getPuntoVentaSelectedList() { + return puntoVentaSelectedList; + } + + public void setPuntoVentaSelectedList(MyListbox puntoVentaSelectedList) { + this.puntoVentaSelectedList = puntoVentaSelectedList; + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPuntoVentaSimple.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPuntoVentaSimple.java index dce7eb695..3186d4640 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPuntoVentaSimple.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPuntoVentaSimple.java @@ -11,8 +11,6 @@ import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; -import com.rjconsultores.ventaboletos.entidad.Empresa; -import com.rjconsultores.ventaboletos.entidad.EmpresaImposto; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; @@ -27,13 +25,10 @@ public class RenderPuntoVentaSimple implements ListitemRenderer { Listcell lc = new Listcell(puntoVenta.getNumPuntoVenta()); lc.setParent(lstm); - - lc = new Listcell(puntoVenta.getNombpuntoventa()); lc.setParent(lstm); - Button btn = new Button(); lc = new Listcell(); diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontosEmpresasSel.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontosEmpresasSel.java deleted file mode 100644 index 5cc3b34ec..000000000 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontosEmpresasSel.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * - */ -package com.rjconsultores.ventaboletos.web.utilerias.render; - -import org.zkoss.zul.Listcell; -import org.zkoss.zul.Listitem; -import org.zkoss.zul.ListitemRenderer; - -import com.rjconsultores.ventaboletos.entidad.Empresa; - -public class RenderRelatorioDescontosEmpresasSel implements ListitemRenderer { - - @Override - public void render(Listitem lstm, Object o) throws Exception { - Empresa empresa = (Empresa) o; - - Listcell lc = new Listcell(empresa.getEmpresaId().toString()); - lc.setParent(lstm); - - lc = new Listcell(empresa.getNombempresa()); - lc.setParent(lstm); - - lstm.setAttribute("data", empresa); - } - -} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontos.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioGenericoEmpresasSel.java similarity index 83% rename from src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontos.java rename to src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioGenericoEmpresasSel.java index 9716df81c..f95267e0d 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioDescontos.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioGenericoEmpresasSel.java @@ -9,7 +9,7 @@ import org.zkoss.zul.ListitemRenderer; import com.rjconsultores.ventaboletos.entidad.Empresa; -public class RenderRelatorioDescontos implements ListitemRenderer { +public class RenderRelatorioGenericoEmpresasSel implements ListitemRenderer { @Override public void render(Listitem lstm, Object o) throws Exception { diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 6897f44cf..79b637f64 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -662,8 +662,15 @@ relatorioReceitaServicoController.lbServico.value = N. Servicio #Relatorio de Diferencas de Transferencias relatorioDiferencasTransferenciasController.window.title = Reporte de diferencias en transferencias -relatorioDiferencasTransferenciasController.lbDePeriodoTransferencia.value = Período de transferencia -relatorioDiferencasTransferenciasController.lbAtePeriodoTransferencia.value = Hasta +relatorioDiferencasTransferenciasController.lbDePeriodoTransferencia.value = Fecha inicial +relatorioDiferencasTransferenciasController.lbAtePeriodoTransferencia.value = Fecha final +relatorioDiferencasTransferenciasController.lbEmpresa.value = Empresa +relatorioDiferencasTransferenciasController.btnPesquisa.label = Búsqueda +relatorioDiferencasTransferenciasController.btnLimpar.label = Limpiar +relatorioDiferencasTransferenciasController.lbIdEmpresa.value = Id +relatorioDiferencasTransferenciasController.puntoVentaSelectedList.codigo = Código +relatorioDiferencasTransferenciasController.puntoVentaSelectedList.nome = Nome +relatorioDiferencasTransferenciasController.lbAgencia.value = Agencia # Relatorio Sisdap relatorioSisdapController.window.title=Reporte SISDAP diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 82a11817f..10c76f9ca 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -706,8 +706,15 @@ relatorioReceitaServicoController.lbServico.value = N. Serviço #Relatorio de Diferencas de Transferencias relatorioDiferencasTransferenciasController.window.title = Relatório de Diferenças em Transferências -relatorioDiferencasTransferenciasController.lbDePeriodoTransferencia.value = Período de Transferência -relatorioDiferencasTransferenciasController.lbAtePeriodoTransferencia.value = até +relatorioDiferencasTransferenciasController.lbDePeriodoTransferencia.value = Data inicial +relatorioDiferencasTransferenciasController.lbAtePeriodoTransferencia.value = Data final +relatorioDiferencasTransferenciasController.lbEmpresa.value = Empresa +relatorioDiferencasTransferenciasController.btnPesquisa.label = Buscar +relatorioDiferencasTransferenciasController.btnLimpar.label = Limpar +relatorioDiferencasTransferenciasController.lbIdEmpresa.value = Id +relatorioDiferencasTransferenciasController.puntoVentaSelectedList.codigo = Código +relatorioDiferencasTransferenciasController.puntoVentaSelectedList.nome = Nome +relatorioDiferencasTransferenciasController.lbAgencia.value = Agência # Relatorio Sisdap relatorioSisdapController.window.title=Relatório SISDAP diff --git a/web/gui/relatorios/filtroRelatorioDiferencasTransferencias.zul b/web/gui/relatorios/filtroRelatorioDiferencasTransferencias.zul index 8f60e3db1..394d35f9a 100644 --- a/web/gui/relatorios/filtroRelatorioDiferencasTransferencias.zul +++ b/web/gui/relatorios/filtroRelatorioDiferencasTransferencias.zul @@ -7,27 +7,108 @@ + height="460px" width="570px" border="normal"> - - - - + + - + + + +