From b782d1cf00ced3abaeb522a85d95ee2fa0e4651b Mon Sep 17 00:00:00 2001 From: julio Date: Tue, 22 Aug 2017 01:45:34 +0000 Subject: [PATCH] bug #9389 - Relatorio Finaceiro Sintetico git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@72779 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioFinanceiroSintetico.java | 283 ++++++ ...RelatorioFinanceiroSintetico_es.properties | 2 + ...atorioFinanceiroSintetico_pt_BR.properties | 2 + .../RelatorioFinanceiroSintetico.jasper | Bin 0 -> 69706 bytes .../RelatorioFinanceiroSintetico.jrxml | 834 ++++++++++++++++++ ...BusquedaRelatorioFinanceiroController.java | 203 +++++ .../ItemMenuRelatorioFinanceiro.java | 24 + web/WEB-INF/i3-label_es_MX.label | 21 +- web/WEB-INF/i3-label_pt_BR.label | 16 + .../busquedaRelatorioFinanceiro.zul | 122 +++ 10 files changed, 1506 insertions(+), 1 deletion(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioFinanceiroController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioFinanceiro.java create mode 100644 web/gui/impressaofiscal/busquedaRelatorioFinanceiro.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java new file mode 100644 index 000000000..72b45ee71 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroSintetico.java @@ -0,0 +1,283 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.log4j.Logger; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.FinanceiroSintetico; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioFinanceiroSintetico extends Relatorio { + + private static Logger log = Logger.getLogger(RelatorioFolioRmd.class); + List listdata = null; + + @SuppressWarnings("unchecked") + public RelatorioFinanceiroSintetico(final Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + @Override + public void initDados() throws Exception { + try { + Date inicio = (Date) parametros.get("inicio"); + Date fim = (Date) parametros.get("fim"); + Empresa empresa = (Empresa) parametros.get("empresa"); + TipoPuntoVenta tipoPuntoVenta = (TipoPuntoVenta) parametros.get("tipoPuntoVenta"); + + List estados = (List) parametros.get("estados"); + String ufs = null; + for (Estado estado : estados) { + if (ufs == null) + ufs = estado.getEstadoId().toString(); + else + ufs = ufs + "," + estado.getEstadoId().toString(); + } + + List agencias = (List) parametros.get("agencias"); + String pdvs = null; + for (PuntoVenta pv : agencias) { + if (pdvs == null) + pdvs = pv.getPuntoventaId().toString(); + else + pdvs = pdvs + "," + pv.getPuntoventaId().toString(); + } + + NamedParameterStatement stmt = new NamedParameterStatement(getConexao(), getSql(ufs, pdvs, tipoPuntoVenta == null ? -1 : tipoPuntoVenta.getTipoptovtaId().intValue())); + stmt.setInt("EMPRESA_ID", empresa.getEmpresaId()); + stmt.setTimestamp("DATE_INICIO", new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); + stmt.setTimestamp("DATE_FIM", new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); + + listdata = new ArrayList(); + ResultSet rset = stmt.executeQuery(); + while (rset.next()) { + FinanceiroSintetico fs = new FinanceiroSintetico(); + fs.setUf(rset.getString("uf")); + fs.setCodigoAgencia(rset.getString("codigo")); + + fs.setReceitaBPR(getBigDecimal(rset, "receita_bpr")); + fs.setGapVenda(getBigDecimal(rset, "receita_gap")); + fs.setGapImpressa(getBigDecimal(rset, "entrega_gap")); + + BigDecimal totalVendaPassagens = fs.getReceitaBPR().add(fs.getGapVenda()).add(fs.getGapImpressa()); + fs.setTotalVendaPassagens(totalVendaPassagens); + + fs.setReceitaEb(getBigDecimal(rset, "receita_eb")); + fs.setMultaComp(getBigDecimal(rset, "receita_multa")); + fs.setDifTrocaOCD(getBigDecimal(rset, "receita_dif_troca_ocd")); + fs.setDifTarifaMaior(getBigDecimal(rset, "receita_dif_dif_tarifa_maior")); + + BigDecimal totalOutrasReceitas = fs.getReceitaEb().add(fs.getMultaComp()).add(fs.getDifTrocaOCD()).add(fs.getDifTarifaMaior()); + fs.setTotalOutrasReceitas(totalOutrasReceitas); + + fs.setTxEmb(getBigDecimal(rset, "taxaEmbarque")); + fs.setPedagio(getBigDecimal(rset, "pedagio")); + fs.setSegFacult(getBigDecimal(rset, "seguro")); + + BigDecimal totalTerceiros = fs.getTxEmb().add(fs.getPedagio()).add(fs.getSegFacult()); + fs.setTotalTerceiros(totalTerceiros); + + BigDecimal receitaBruta = totalVendaPassagens.add(totalOutrasReceitas).add(totalTerceiros); + fs.setReceitaBruta(receitaBruta); + + fs.setDevolBPR(getBigDecimal(rset, "receita_devol_bpr")); + fs.setDevolGAP(getBigDecimal(rset, "receita_devol_gap")); + + BigDecimal totalDevolucao = fs.getDevolBPR().add(fs.getDevolGAP()); + BigDecimal receitaLiquida = receitaBruta.subtract(totalDevolucao); + fs.setReceitaLiquida(receitaLiquida); + + fs.setDespesas(getBigDecimal(rset, "despesas")); + fs.setPgOCD(getBigDecimal(rset, "receita_ocd_deb")); + fs.setDifTarifaMenor(getBigDecimal(rset, "receita_dif_dif_tarifa_menor")); + fs.setCartaoCredito(getBigDecimal(rset, "cartao_credito")); + fs.setCartaoDebito(getBigDecimal(rset, "cartao_debito")); + fs.setBoletoBancario(getBigDecimal(rset, "boleto_bnc")); + fs.setDeposito(getBigDecimal(rset, "deposito")); + + BigDecimal totalDetalhamento = fs.getDespesas().add(fs.getPgOCD()).add(fs.getDifTarifaMenor()) + .add(fs.getCartaoCredito()).add(fs.getCartaoDebito()).add(fs.getBoletoBancario()) + .add(fs.getDeposito()); + fs.setTotalDetalhamento(totalDetalhamento); + + BigDecimal saldo = totalDetalhamento.subtract(receitaLiquida); + fs.setSaldo(saldo); + + listdata.add(fs); + } + + if (!getConexao().isClosed()) + getConexao().close(); + + Collections.sort(listdata); + + } catch (SQLException e) { + log.error("", e); + } + } + + }); + + this.setCollectionDataSource(new JRBeanCollectionDataSource(listdata)); + } + + static public BigDecimal getBigDecimal(ResultSet rs, String strColName) throws SQLException { + BigDecimal nValue = rs.getBigDecimal(strColName); + return rs.wasNull() ? BigDecimal.ZERO : nValue; + } + + @Override + protected void processaParametros() throws Exception { + } + + private String getSql(String ufs, String pdvs, Integer tipoptovtaId) { + + StringBuilder sql = new StringBuilder(); + sql.append("select * from "); + sql.append(" "); + sql.append("(select "); + sql.append(" cd.estadoOrigem as uf, "); + sql.append(" cd.estadoId, "); + sql.append(" cd.codigo, "); + sql.append(" cd.puntoventaId, "); + sql.append(" cd.empresaId, "); + sql.append(" sum(case when cd.venda = 1 then cd.taxaEmbarque else 0 end) as taxaEmbarque, "); + sql.append(" sum(case when cd.venda = 1 then cd.pedagio else 0 end) as pedagio, "); + sql.append(" sum(case when cd.venda = 1 then cd.seguro else 0 end) as seguro, "); + sql.append(" sum(case when (cd.venda = 1 and cd.bpr = 1) then cd.tarifa else 0 end) as receita_bpr, "); + sql.append(" sum(case when (cd.venda = 1 and cd.gap = 1) then cd.valorpago else 0 end) as receita_gap, "); + sql.append(" sum(case when (cd.entrega_gap = 1) then cd.valorpago else 0 end) as entrega_gap, "); + sql.append(" sum(case when (cd.indcancelacion = 1 and cd.bpr = 1) then cd.valorpago else 0 end) as receita_devol_bpr, "); + sql.append(" sum(case when (cd.indcancelacion = 1 and cd.gap = 1) then cd.valorpago else 0 end) as receita_devol_gap, "); + sql.append(" sum(case when (cd.venda = 1 and cd.pagamento_credito = 1) then cd.valorpago else 0 end) as cartao_credito, "); + sql.append(" sum(case when (cd.venda = 1 and cd.pagamento_debito = 1) then cd.valorpago else 0 end) as cartao_debito, "); + sql.append(" sum(case when (cd.indcancelacion = 1 and cd.ocd_deb = 1) then cd.valorpago else 0 end) as receita_ocd_deb, "); + sql.append(" sum(case when (cd.ocd_cred = 1) then cd.valorpago else 0 end) as receita_ocd_cred "); + sql.append(" "); + sql.append("from ( "); + sql.append(" select "); + sql.append(" c.caja_id as cajaid, "); + sql.append(" e.empresa_id as empresaId, "); + sql.append(" pv.puntoventa_id as puntoventaId, "); + sql.append(" pv.numpuntoventa as codigo, "); + sql.append(" eo.estado_id as estadoId, "); + sql.append(" eo.cveestado as estadoOrigem, "); + sql.append(" c.indstatusboleto, "); + sql.append(" c.indreimpresion, "); + sql.append(" c.indcancelacion, "); + sql.append(" case when c.indstatusboleto = 'V' and c.indcancelacion = 0 and c.indreimpresion = 0 then 1 else 0 end as venda, "); + sql.append(" case when c.tipoventa_id not in (5,12,18,49) then 1 else 0 end as bpr, "); + sql.append(" case when c.tipoventa_id in (5,12,18,49) then 1 else 0 end as gap, "); + sql.append(" case when c.motivocancelacion_id in (35) then 1 else 0 end as ocd_deb, "); + sql.append(" coalesce(cfp.importe, 0) as valorpago, "); + sql.append(" coalesce(c.preciobase, 0) as precobase, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(c.importeseguro, 0) as seguro, "); + sql.append(" coalesce(c.importeoutros, 0) as outros, "); + sql.append(" cfp.formapago_id, "); + sql.append(" c.motivocancelacion_id as motivocancelacion_id, "); + sql.append(" c.tipoventa_id as tipoventa_id, "); + sql.append(" case when (c.tipoventa_id in (5,12,18,49) and indstatusboleto = 'E') then 1 else 0 end as entrega_gap, "); + sql.append(" case when c.indreimpresion = 1 and indstatusboleto = 'T' then 1 else 0 end as nao_entra_no_caixa, "); + sql.append(" case when cfp.formapago_id = 1 then 1 else 0 end as pagamento_dinheiro, "); + sql.append(" case when cfp.formapago_id in (3,26) then 1 else 0 end as pagamento_debito, "); + sql.append(" case when cfp.formapago_id in (2,25) then 1 else 0 end as pagamento_credito, "); + sql.append(" case when cfp.formapago_id not in (1,2,3,25,26) then 1 else 0 end as pagamento_outro, "); + sql.append(" case when c.motivocancelacion_id in (99) then 1 else 0 end as ocd_cred "); + sql.append(" from caja c "); + sql.append(" inner join caja_formapago cfp on cfp.caja_id = c.caja_id "); + sql.append(" inner join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); + sql.append(" inner join forma_pago fp on cfp.formapago_id = fp.formapago_id "); + sql.append(" inner join marca m on c.marca_id = m.marca_id "); + sql.append(" inner join empresa e on e.empresa_id = m.empresa_id "); + sql.append(" inner join parada po on po.parada_id = c.origen_id "); + sql.append(" inner join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" inner join estado eo on eo.estado_id = co.estado_id "); + sql.append(" where c.fechorventa between :DATE_INICIO and :DATE_FIM "); + sql.append(" and e.empresa_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + // sql.append(" order by e.empresa_id, eo.estado_id) cd "); + sql.append(" ) cd "); + sql.append(" where cd.nao_entra_no_caixa = 0 "); + sql.append(" group by cd.estadoOrigem, cd.estadoId, cd.codigo, cd.puntoventaId, cd.empresaId ) agrc "); + sql.append("left join ( "); + sql.append(" select ed.puntoventaId, ed.estadoId, ed.empresaId, "); + sql.append(" sum(case when tipoeventoextra_id = 82 and indtipo = 1 then impingreso else 0 end) as receita_eb, "); + sql.append(" sum(case when tipoeventoextra_id in (102,42) and indtipo = 1 then impingreso else 0 end) as receita_multa, "); + sql.append(" sum(case when tipoeventoextra_id in (103,99978,99999) and indtipo = 1 then impingreso else 0 end) as receita_dif_troca_ocd, "); + sql.append(" sum(case when tipoeventoextra_id in (43) and indtipo = 1 then impingreso else 0 end) as receita_dif_dif_tarifa_maior, "); + sql.append(" sum(case when tipoeventoextra_id in (44) and indtipo = 0 then impingreso else 0 end) as receita_dif_dif_tarifa_menor, "); + sql.append(" sum(case when tipoeventoextra_id not in (44) and indtipo = 0 then impingreso else 0 end) as despesas "); + sql.append(" from ( "); + sql.append(" select ee.tipoeventoextra_id, ee.impingreso, tee.indtipo, pv.puntoventa_id as puntoventaId, eo.estado_id as estadoId, ee.empresa_id as empresaId "); + sql.append(" from evento_extra ee "); + sql.append(" join tipo_evento_extra tee on ee.tipoeventoextra_id = tee.tipoeventoextra_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = ee.puntoventa_id "); + sql.append(" join parada po on po.parada_id = pv.parada_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + sql.append(" where ee.activo = 1 and ee.empresa_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + sql.append(" and ee.fechoringreso between :DATE_INICIO and :DATE_FIM "); + sql.append(" ) ed "); + sql.append(" group by ed.puntoventaId, ed.estadoId, ed.empresaId "); + sql.append(" ) eed on agrc.empresaId = eed.empresaId and agrc.puntoventaId = eed.puntoventaId and agrc.estadoId = eed.estadoId "); + sql.append("left join ( "); + sql.append(" select coalesce(sum(fd.valor), 0) as deposito, pv.puntoventa_id as puntoventaId, fcc.empresa_id as empresaId, eo.estado_id as estadoId "); + sql.append(" from fechamento_cntcorrente fcc "); + sql.append(" join fechamento_cct_deposito fcd on fcd.fechamentocntcorrente_id = fcc.fechamentocntcorrente_id "); + sql.append(" join fechamento_deposito fd on fd.fechamentocntcorrente_id = fcd.fechamentocntcorrente_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = fcc.puntoventa_id "); + sql.append(" join parada po on po.parada_id = pv.parada_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + sql.append(" where fcc.activo = 1 and fcc.empresa_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + sql.append(" and fd.feccreacion between :DATE_INICIO and :DATE_FIM "); + sql.append(" group by pv.puntoventa_id, fcc.empresa_id, eo.estado_id "); + sql.append(" ) depd on agrc.empresaId = depd.empresaId and agrc.puntoventaId = depd.puntoventaId and agrc.estadoId = depd.estadoId "); + sql.append("left join ( "); + sql.append(" select coalesce(sum(fb.valordocumento), 0) as boleto_bnc , pv.puntoventa_id as puntoventaId, fcc.empresa_id as empresaId, eo.estado_id as estadoId "); + sql.append(" from fechamento_cntcorrente fcc "); + sql.append(" join fechamento_boleto fb on fb.fechamentocntcorrente_id = fcc.fechamentocntcorrente_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = fcc.puntoventa_id "); + sql.append(" join parada po on po.parada_id = pv.parada_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + sql.append(" where fcc.activo = 1 and fcc.empresa_id = :EMPRESA_ID "); + sql.append(ufs == null ? "" : "and eo.estado_id in ( " + ufs + " ) "); + sql.append(pdvs == null ? "" : "and pv.puntoventa_id in ( " + pdvs + " ) "); + sql.append(tipoptovtaId == -1 ? "" : "and pv.tipoptovta_id = " + tipoptovtaId); + sql.append(" and fb.fecmodif between :DATE_INICIO and :DATE_FIM "); + sql.append(" group by pv.puntoventa_id, fcc.empresa_id, eo.estado_id "); + sql.append(" ) bold on agrc.empresaId = bold.empresaId and agrc.puntoventaId = bold.puntoventaId and agrc.estadoId = bold.estadoId "); + + return sql.toString(); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_es.properties new file mode 100644 index 000000000..57daa3700 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_es.properties @@ -0,0 +1,2 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_pt_BR.properties new file mode 100644 index 000000000..57daa3700 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroSintetico_pt_BR.properties @@ -0,0 +1,2 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jasper new file mode 100644 index 0000000000000000000000000000000000000000..d9dd967f8989b05b43ecc7cbf460a506cab6b092 GIT binary patch literal 69706 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 literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jrxml new file mode 100644 index 000000000..aee9aa7df --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroSintetico.jrxml @@ -0,0 +1,834 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioFinanceiroController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioFinanceiroController.java new file mode 100644 index 000000000..a1680563a --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioFinanceiroController.java @@ -0,0 +1,203 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.impressaofiscal; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioFinanceiroSintetico; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.service.EstadoService; +import com.rjconsultores.ventaboletos.service.TipoPuntoVentaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +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.RenderEstadoUf; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPuntoVentaSimple; +import com.trg.search.Filter; + +@Controller("busquedaRelatorioFinanceiroController") +@Scope("prototype") +public class BusquedaRelatorioFinanceiroController extends MyGenericForwardComposer { + private static final long serialVersionUID = 1L; + + private static Logger log = Logger.getLogger(BusquedaRelatorioFinanceiroController.class); + + @Autowired + private DataSource dataSourceRead; + + @Autowired + private EmpresaService empresaService; + + @Autowired + private EstadoService estadoService; + + @Autowired + private TipoPuntoVentaService tipoPuntoVentaService; + + @Autowired + private transient PagedListWrapper plwPuntoVenta; + + private List lsEmpresa; + private List lsEstado; + + private Datebox datInicial; + private Datebox datFinal; + + private MyComboboxEstandar cmbEmpresa; + + private List lsTipoPuntoVenta; + private Combobox cmbTipoPuntoVenta; + + private MyListbox estadoList; + private MyListbox puntoVentaList; + + private Textbox txtPalavraPesquisa; + private MyListbox puntoVentaSelList; + private Paging pagingPuntoVenta; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEmpresa = empresaService.obtenerTodos(); + lsEstado = estadoService.obtenerTodos(); + lsTipoPuntoVenta = tipoPuntoVentaService.obtenerTodos(); + + super.doAfterCompose(comp); + + estadoList.setItemRenderer(new RenderEstadoUf()); + estadoList.setData(lsEstado); + puntoVentaList.setItemRenderer(new RenderPuntoVentaSimple()); + puntoVentaSelList.setItemRenderer(new RenderPuntoVentaSimple()); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private void executar() throws InterruptedException { + + try { + Empresa empresa = cmbEmpresa == null ? null : (cmbEmpresa.getSelectedItem() == null ? null : (Empresa) cmbEmpresa.getSelectedItem().getValue()); + TipoPuntoVenta tipoPuntoVenta = cmbTipoPuntoVenta == null ? null : (cmbTipoPuntoVenta.getSelectedItem() == null ? null : (TipoPuntoVenta) cmbTipoPuntoVenta.getSelectedItem().getValue()); + List agencias = new ArrayList(Arrays.asList(puntoVentaSelList.getData())); + + List estados = new ArrayList(); + for (Object ob : estadoList.getSelectedItemsByIndex()) { + estados.add((Estado) ob); + } + + Map parametros = new HashMap(); + parametros.put("empresa", empresa); + parametros.put("nombempresa", empresa.getNombempresa()); + parametros.put("tipoPuntoVenta", tipoPuntoVenta); + parametros.put("agencias", agencias); + parametros.put("estados", estados); + parametros.put("inicio", datInicial.getValue()); + parametros.put("fim", datFinal.getValue()); + parametros.put("usuario", UsuarioLogado.getUsuarioLogado().getClaveUsuario()); + + Relatorio relatorio = new RelatorioFinanceiroSintetico(parametros, dataSourceRead.getConnection()); + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel("indexController.mnRelatorioRDI.label"), args, MODAL); + + } catch (Exception e) { + log.error("", e); + Messagebox.show(e.getMessage(), + Labels.getLabel("indexController.mnImpressaoRMD.label"), + Messagebox.OK, Messagebox.INFORMATION); + } + } + + private void executarPesquisa() { + HibernateSearchObject puntoVentaBusqueda = new HibernateSearchObject(PuntoVenta.class, + pagingPuntoVenta.getPageSize()); + + puntoVentaBusqueda.addFilterOr(Filter.like("nombpuntoventa", "%" + txtPalavraPesquisa.getText().trim().toUpperCase().concat("%")), Filter.like("numPuntoVenta", "%" + txtPalavraPesquisa.getText().trim().toUpperCase().concat("%"))); + + puntoVentaBusqueda.addSortAsc("nombpuntoventa"); + + puntoVentaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + plwPuntoVenta.init(puntoVentaBusqueda, puntoVentaList, pagingPuntoVenta); + + if (puntoVentaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioReceitaDiariaAgenciaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + public void onClick$btnLimparPtv(Event ev) { + limparPesquisaAgencia(); + } + + private void limparPesquisaAgencia() { + puntoVentaSelList.setData(new ArrayList()); + } + + public void onClick$btnPesquisaPtv(Event ev) { + executarPesquisa(); + } + + public void onDoubleClick$puntoVentaList(Event ev) { + PuntoVenta puntoVentaSel = (PuntoVenta) puntoVentaList.getSelected(); + puntoVentaSelList.addItemNovo(puntoVentaSel); + } + + public void onDoubleClick$puntoVentaSelList(Event ev) { + PuntoVenta puntoVentaSel = (PuntoVenta) puntoVentaSelList.getSelected(); + puntoVentaSelList.removeItem(puntoVentaSel); + } + + public void onClick$btnSintetico(Event ev) throws InterruptedException { + executar(); + } + +// public void onClick$btnAnalitico(Event ev) throws InterruptedException { +// executar(); +// } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public List getLsEstado() { + return lsEstado; + } + + public List getLsTipoPuntoVenta() { + return lsTipoPuntoVenta; + } + + public MyListbox getPuntoVentaSelList() { + return puntoVentaSelList; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioFinanceiro.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioFinanceiro.java new file mode 100644 index 000000000..9375815a9 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioFinanceiro.java @@ -0,0 +1,24 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.impressaofiscal; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioFinanceiro extends DefaultItemMenuSistema { + + public ItemMenuRelatorioFinanceiro() { + super("indexController.mnRelatoriosFinanceiros.label"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.RELATORIOSFINANCEIROS"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/impressaofiscal/busquedaRelatorioFinanceiro.zul", + Labels.getLabel("indexController.mnRelatoriosFinanceiros.label"), getArgs(), desktop); + } +} \ No newline at end of file diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 9e18a2289..96c2cff9e 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -310,6 +310,11 @@ indexController.mnSubMenuExportacaoFiscal.label=Exportación Fiscal indexController.mniExportacaoFiscalECF.label=ECF indexController.mniExportacaoFiscalRMD.label=RMD +indexController.mnImpressaoRMD.label=Impressão RMD +indexController.mnRelatorioRDI.label=Relatório RDI + +indexController.mnRelatoriosFinanceiros.label=Relatórios Financeiros + indexController.mniSubMenuClientePacote.label=Paquete indexController.mniManutencaoPacote.label=Mantenimiento Paquete @@ -6504,7 +6509,21 @@ busquedaImportacionFiscalController.lbGerarArquivo.value = Gerar Archivo busquedaImportacionFiscalController.lbArquivoTxt.value = Importación Texto busquedaImportacionFiscalController.lbArquivoXls.value = Consolidado Excel busquedaImportacionFiscalController.lbCompetencia.label = Competencia -busquedaImportacionFiscalController.btnExe.label = Ejecutar Importación +busquedaImportacionFiscalController.btnExe.label = Ejecutar Importación + +busquedaRelatorioFinanceiroController.lbDataIni.value = Data Inicio +busquedaRelatorioFinanceiroController.lbDataFin.value = Data Final +busquedaRelatorioFinanceiroController.lbEmpresa.value = Empresa +busquedaRelatorioFinanceiroController.estado.label = Estado +busquedaRelatorioFinanceiroController.lbTpoPtoVta.value = Canal de Venda +busquedaRelatorioFinanceiroController.btnSintetico.label = Relatório Sintético +busquedaRelatorioFinanceiroController.btnAnalitico.label = Relatório Analítico +busquedaRelatorioFinanceiroController.lbPuntoVenta.value = Agência +busquedaRelatorioFinanceiroController.puntoVentaSelList.codigo = Código +busquedaRelatorioFinanceiroController.puntoVentaSelList.nome = Nome +busquedaRelatorioFinanceiroController.btnPesquisa.label = Pesquisar +busquedaRelatorioFinanceiroController.btnLimpar.label = Limpar +busquedaRelatorioFinanceiroController.lbPuntoVentaSel.value = Agências Selecionadas #busquedaImportacionFiscalController.btnExe.label = Importación Fiscal ECF #busquedaImportacionFiscalController.btnExeManual.label = Importación Fiscal Manual diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 01a59bc1d..a39d04f29 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -330,6 +330,8 @@ indexController.mniExportacaoFiscalRMD.label=RMD indexController.mnImpressaoRMD.label=Impressão RMD indexController.mnRelatorioRDI.label=Relatório RDI +indexController.mnRelatoriosFinanceiros.label=Relatórios Financeiros + indexController.mniSubMenuClientePacote.label=Pacote indexController.mniManutencaoPacote.label=Manutenção Pacote @@ -6757,6 +6759,20 @@ busquedaImportacionFiscalController.lbArquivoXls.value = Consolidado Excel busquedaImportacionFiscalController.lbCompetencia.label = Competência busquedaImportacionFiscalController.btnExe.label = Executar Importação +busquedaRelatorioFinanceiroController.lbDataIni.value = Data Inicio +busquedaRelatorioFinanceiroController.lbDataFin.value = Data Final +busquedaRelatorioFinanceiroController.lbEmpresa.value = Empresa +busquedaRelatorioFinanceiroController.estado.label = Estado +busquedaRelatorioFinanceiroController.lbTpoPtoVta.value = Canal de Venda +busquedaRelatorioFinanceiroController.btnSintetico.label = Relatório Sintético +busquedaRelatorioFinanceiroController.btnAnalitico.label = Relatório Analítico +busquedaRelatorioFinanceiroController.lbPuntoVenta.value = Agência +busquedaRelatorioFinanceiroController.puntoVentaSelList.codigo = Código +busquedaRelatorioFinanceiroController.puntoVentaSelList.nome = Nome +busquedaRelatorioFinanceiroController.btnPesquisa.label = Pesquisar +busquedaRelatorioFinanceiroController.btnLimpar.label = Limpar +busquedaRelatorioFinanceiroController.lbPuntoVentaSel.value = Agências Selecionadas + #busquedaImportacionFiscalController.btnExe.label = Importação Fiscal ECF #busquedaImportacionFiscalController.btnExeManual.label = Importação Fiscal Manual #busquedaImportacionFiscalController.btnExeNaoFiscal.label = Importação Não Fiscal diff --git a/web/gui/impressaofiscal/busquedaRelatorioFinanceiro.zul b/web/gui/impressaofiscal/busquedaRelatorioFinanceiro.zul new file mode 100644 index 000000000..8d04419d6 --- /dev/null +++ b/web/gui/impressaofiscal/busquedaRelatorioFinanceiro.zul @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +