From cbda3639d9b0036b267827d82ee619b7d5afe9a9 Mon Sep 17 00:00:00 2001 From: wilian Date: Wed, 20 Apr 2016 18:12:03 +0000 Subject: [PATCH] fixes bug #7370 fixes bug #7374 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@55147 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioAnaliticoVoucher.java | 163 +++++---- .../RelatorioAnaliticoVoucher.jasper | Bin 45614 -> 35289 bytes .../templates/RelatorioAnaliticoVoucher.jrxml | 331 +++++++----------- .../BusquedaImportacionFiscalController.java | 40 ++- .../ItemMenuFiscalRelatorioVoucher.java | 1 + web/WEB-INF/i3-label_es_MX.label | 1 + web/WEB-INF/i3-label_pt_BR.label | 1 + .../busquedaImportacionFiscal.zul | 11 +- 8 files changed, 280 insertions(+), 268 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAnaliticoVoucher.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAnaliticoVoucher.java index d2dcdf9bf..6396e3900 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAnaliticoVoucher.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAnaliticoVoucher.java @@ -1,13 +1,10 @@ package com.rjconsultores.ventaboletos.relatorios.impl; -import java.math.BigDecimal; import java.sql.Connection; -import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -18,7 +15,7 @@ import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemRelatorioVoucher; -import com.rjconsultores.ventaboletos.vo.impressaofiscal.TotalRelatorioVoucher; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; @@ -57,82 +54,120 @@ public class RelatorioAnaliticoVoucher extends Relatorio { inicio = DateUtil.inicioFecha(inicio); fim = DateUtil.fimFecha(fim); - StringBuilder sql = new StringBuilder(); - sql.append("select "); - sql.append(" TO_CHAR(b.fechorventa, 'dd-MM-yyyy') as dataVendaVoucher, "); - sql.append(" TO_CHAR(impres.fechorventa, 'dd-MM-yyyy') as dataEmissao, "); - sql.append(" e.nombempresa as empresa, "); - sql.append(" fr4.coo as numDocFiscal, "); - sql.append(" coalesce(b.numfoliosistema, impres.numfoliosistema) as bilhete, "); - sql.append(" b.boleto_id as boletoVoucher, "); - sql.append(" impres.boleto_id as boletoImpresso, "); - sql.append(" tv.desctipoventa as tipoVenda, "); - sql.append(" case when b.motivocancelacion_id in (31, 32) then b.preciopagado * -1 else b.preciopagado end as tarifa, "); - sql.append(" case when b.motivocancelacion_id in (31, 32) then b.importepedagio * -1 else b.importepedagio end as pedagio, "); - sql.append(" case when b.motivocancelacion_id in (31, 32) then b.importetaxaembarque * -1 else b.importetaxaembarque end as embarque, "); - sql.append(" case when b.motivocancelacion_id in (31, 32) then b.importeseguro * -1 else b.importeseguro end as seguro, "); - sql.append(" case when mc.descmotivo is null then 'VOUCHER' else mc.descmotivo end as status "); - sql.append(" from boleto b "); - sql.append(" join empresa e on b.marca_id = e.empresa_id "); - sql.append(" left join boleto impres on b.boleto_id = impres.boletooriginal_id "); - sql.append(" left join fiscal_r4 fr4 on impres.boleto_id = fr4.boleto_id "); - sql.append(" left join tipo_venta tv on tv.tipoventa_id = coalesce(b.tipoventa_id, impres.tipoventa_id) "); - sql.append(" left join motivo_cancelacion mc on mc.motivocancelacion_id = coalesce(b.motivocancelacion_id, impres.motivocancelacion_id) "); - sql.append(" where b.tipoventa_id in (5,12,18) "); - sql.append(" and b.fechorventa between ? and ? "); - sql.append(" and b.marca_id = ? "); - sql.append(" order by dataVendaVoucher, dataEmissao desc "); - - PreparedStatement stmt = getConexao().prepareStatement(sql.toString()); - stmt.setTimestamp(1, new java.sql.Timestamp(inicio.getTime())); - stmt.setTimestamp(2, new java.sql.Timestamp(fim.getTime())); - stmt.setInt(3, empresaId); + NamedParameterStatement stmt = new NamedParameterStatement(getConexao(), getSql()); + + stmt.setTimestamp("dataInicial", new java.sql.Timestamp(inicio.getTime())); + stmt.setTimestamp("dataFinal", new java.sql.Timestamp(fim.getTime())); + stmt.setInt("empresaId", empresaId); ResultSet rset = stmt.executeQuery(); List list = new ArrayList(); - Map totais = new HashMap(); while (rset.next()) { ItemRelatorioVoucher item = new ItemRelatorioVoucher(); - item.setDataVendaVoucher(rset.getString("dataVendaVoucher")); - item.setDataEmissao(rset.getString("dataEmissao")); - item.setEmpresa(rset.getString("empresa")); - item.setNumDocFiscal(rset.getString("numDocFiscal")); - item.setBilhete(rset.getString("bilhete")); - item.setBoletoVoucher(rset.getLong("boletoVoucher")); - item.setBoletoImpresso(rset.getLong("boletoImpresso")); - item.setTipoVenda(rset.getString("tipoVenda")); - item.setTarifa(rset.getBigDecimal("tarifa")); - item.setPedagio(rset.getBigDecimal("pedagio")); - item.setEmbarque(rset.getBigDecimal("embarque")); - item.setSeguro(rset.getBigDecimal("seguro")); - item.setStatus(rset.getString("status")); + item.setSituacao(rset.getString("SITUACAO")); + item.setCompetenciaEntrega(rset.getString("COMPETENCIA_ENTREGA")); + item.setCompetenciaVenda(rset.getString("COMPETENCIA_VENDA")); + item.setTarifa(rset.getBigDecimal("TARIFA")); + item.setPedagio(rset.getBigDecimal("PEDAGIO")); + item.setEmbarque(rset.getBigDecimal("TAXA_EMBARQUE")); + item.setSeguro(rset.getBigDecimal("SEGURO")); + item.setQtde(rset.getInt("QTDE")); - TotalRelatorioVoucher total = null; - if(totais.containsKey(item.getStatus())) { - total = totais.get(item.getStatus()); - } else { - total = new TotalRelatorioVoucher(); - } - - total.setStatus(item.getStatus()); - total.setTarifa(total.getTarifa().add(item.getTarifa().intValue() < 0 ? item.getTarifa().multiply(new BigDecimal(-1)) : item.getTarifa())); - total.setPedagio(total.getPedagio().add(item.getPedagio().intValue() < 0 ? item.getPedagio().multiply(new BigDecimal(-1)) : item.getPedagio())); - total.setEmbarque(total.getEmbarque().add(item.getEmbarque().intValue() < 0 ? item.getEmbarque().multiply(new BigDecimal(-1)) : item.getEmbarque())); - total.setSeguro(total.getSeguro().add(item.getSeguro().intValue() < 0 ? item.getSeguro().multiply(new BigDecimal(-1)) : item.getSeguro())); - totais.put(item.getStatus(), total); - list.add(item); } - parametros.put("totais", totais.values()); - if (!getConexao().isClosed()) getConexao().close(); return list; } + private String getSql() { + StringBuilder sQuery = new StringBuilder(); + + /* VENDIDO E IMPRESSO NA MESMA COMPETENCIA */ + sQuery.append("SELECT 'VENDIDO E ENTREGUE MESMA COMPETÊNCIA' AS SITUACAO, ") + .append("TO_CHAR(BE.FECHORVENTA,'MM/YYYY') AS COMPETENCIA_ENTREGA, ") + .append("TO_CHAR(B.FECHORVENTA,'MM/YYYY') AS COMPETENCIA_VENDA, ") + .append("SUM(B.PRECIOPAGADO) AS TARIFA, ") + .append("SUM(B.IMPORTEPEDAGIO) AS PEDAGIO, ") + .append("SUM(B.IMPORTESEGURO) AS SEGURO, ") + .append("SUM(B.IMPORTETAXAEMBARQUE) AS TAXA_EMBARQUE, ") + .append("COUNT(B.BOLETO_ID) AS QTDE ") + .append("FROM BOLETO B ") + .append("JOIN BOLETO BE ON B.BOLETO_ID = BE.BOLETOORIGINAL_ID ") + .append(" AND BE.FECHORVENTA BETWEEN :dataInicial AND :dataFinal ") + .append("JOIN FISCAL_R4 R4 ON BE.BOLETO_ID = R4.BOLETO_ID ") + .append("WHERE B.TIPOVENTA_ID IN (5,12,18) ") + .append("AND B.FECHORVENTA BETWEEN :dataInicial AND :dataFinal ") + .append("AND B.EMPRESACORRIDA_ID = :empresaId ") + .append("AND B.INDSTATUSBOLETO = 'V' ") + .append("AND B.MOTIVOCANCELACION_ID = 16 ") + .append("AND BE.INDSTATUSBOLETO = 'E' ") + .append("AND TO_CHAR(B.FECHORVENTA,'MM/YYYY') = TO_CHAR(BE.FECHORVENTA,'MM/YYYY') ") + .append("GROUP BY 'VENDIDO E ENTREGUE MESMA COMPETÊNCIA', ") + .append(" TO_CHAR(B.FECHORVENTA,'MM/YYYY'), ") + .append(" TO_CHAR(BE.FECHORVENTA,'MM/YYYY') "); + + sQuery.append("UNION "); + + /*VENDIDO EM COMPETÊNCIA ANTERIOR*/ + sQuery.append("SELECT 'VENDIDO EM COMPETÊNCIA ANTERIOR' AS SITUACAO, ") + .append("TO_CHAR(BE.FECHORVENTA,'MM/YYYY') AS COMPETENCIA_ENTREGA, ") + .append("TO_CHAR(B.FECHORVENTA,'MM/YYYY') AS COMPETENCIA_VENDA, ") + .append("SUM(B.PRECIOPAGADO) AS TARIFA, ") + .append("SUM(B.IMPORTEPEDAGIO) AS PEDAGIO, ") + .append("SUM(B.IMPORTESEGURO) AS SEGURO, ") + .append("SUM(B.IMPORTETAXAEMBARQUE) AS TAXA_EMBARQUE, ") + .append("COUNT(B.BOLETO_ID) AS QTDE ") + .append("FROM BOLETO B ") + .append("JOIN BOLETO BE ON B.BOLETO_ID = BE.BOLETOORIGINAL_ID ") + .append("JOIN FISCAL_R4 R4 ON BE.BOLETO_ID = R4.BOLETO_ID ") + .append("WHERE B.TIPOVENTA_ID IN (5,12,18) ") + .append("AND BE.FECHORVENTA BETWEEN :dataInicial AND :dataFinal ") + .append("AND BE.EMPRESACORRIDA_ID = :empresaId ") + .append("AND B.INDSTATUSBOLETO = 'V' ") + .append("AND B.MOTIVOCANCELACION_ID = 16 ") + .append("AND BE.INDSTATUSBOLETO = 'E' ") + .append("AND TO_CHAR(B.FECHORVENTA,'MM/YYYY') < TO_CHAR(BE.FECHORVENTA,'MM/YYYY') ") + .append("GROUP BY 'VENDIDO EM COMPETÊNCIA ANTERIOR', ") + .append(" TO_CHAR(B.FECHORVENTA,'MM/YYYY'), ") + .append(" TO_CHAR(BE.FECHORVENTA,'MM/YYYY') "); + + + sQuery.append("UNION "); + + /*VENDIDO E NÃO ENTREGUE NA COMPETÊNCIA*/ + sQuery.append("SELECT 'VENDIDO E NÃO ENTREGUE NA COMPETÊNCIA' AS SITUACAO, ") + .append("'' AS COMPETENCIA_ENTREGA, ") + .append("TO_CHAR(B.FECHORVENTA,'MM/YYYY') AS COMPETENCIA_VENDA, ") + .append("SUM(B.PRECIOPAGADO) AS TARIFA, ") + .append("SUM(B.IMPORTEPEDAGIO) AS PEDAGIO, ") + .append("SUM(B.IMPORTESEGURO) AS SEGURO, ") + .append("SUM(B.IMPORTETAXAEMBARQUE) AS TAXA_EMBARQUE, ") + .append("COUNT(B.BOLETO_ID) AS QTDE ") + .append("FROM BOLETO B ") + .append("LEFT JOIN BOLETO BE ON B.BOLETO_ID = BE.BOLETOORIGINAL_ID ") + .append("WHERE B.TIPOVENTA_ID IN (5,12,18) ") + .append("AND B.FECHORVENTA BETWEEN :dataInicial AND :dataFinal ") + .append("AND B.EMPRESACORRIDA_ID = :empresaId ") + .append("AND B.INDSTATUSBOLETO = 'V' ") + .append("AND (B.MOTIVOCANCELACION_ID IS NULL OR ") + .append(" ( ") + .append(" B.MOTIVOCANCELACION_ID = 16 ") + .append(" AND BE.INDSTATUSBOLETO = 'E' ") + .append(" AND TO_CHAR(BE.FECHORVENTA,'MM/YYYY') > TO_CHAR(B.FECHORVENTA,'MM/YYYY') ") + .append(" ) ") + .append(" ) ") + .append("GROUP BY 'VENDIDO E NÃO ENTREGUE NA COMPETÊNCIA', ") + .append(" TO_CHAR(B.FECHORVENTA,'MM/YYYY') "); + + sQuery.append("ORDER BY SITUACAO, COMPETENCIA_ENTREGA, COMPETENCIA_VENDA"); + + return sQuery.toString(); + } + @Override protected void processaParametros() throws Exception { } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jasper index 16ec8f5c64c9a4661a54cdc8bf032952e56c9f44..8c10d261a2f0943ed6a7beeebf7b7d0c9dc87711 100644 GIT binary patch literal 35289 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 U9TT+OTbi)T)I)2ZSa6K}ANnF=mjD0& literal 45614 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ÚHkkKgFSx%dp-htJ_dXK4)%OT*9!|aViw&ga$uJE=zamSM+~7K zis5im<{$)=w17P)gFS6v zPY~=0fjy^yJzZc=80?9HJu$GS7wkC$?0Eq-7uHj64?L3DWkeIMv)zy4Q21;5c0c}4 z^g6mcXy}Av6}*?v&9z+L)BR=dPLBRZ-23M00B7K*bmc=$vG#hA(?j<1;h7!fbgs)G z@r+_Q|9=BlrpuG-wVeUFOYt24&+&DRQtn4~%)2-2{HM7+_0E0hN~;(3M-~22?NNn)RC`q6AJraJ_(!!z75-7}QH6h0dsN{c)gD#&N3};4{!#5w zg@06gRN)`h9#uFg#wgz^{G(&l8T_NLW!X~-|L8b%2LI^6>J0u-bTgT{mOZNStj&)O zr#xH7zEyeF&c0Q7b_)AeQx^-kAm9{;(hSNx*HT9{RGm%O`UE{ zeDqU1tD6!Zy(F;jj=le>kA80Wmw&<1B3GgK=$A;w@GrmmMf}UJLGBa$%daQ-mw%h! zU;bT^fBCI{mVfyjZ~yWE$G==m@8zPu^?oM)W>NFvQe$ z!zVlI#g`%<&dj{%Ezc(X#H zolX&3X@j^Bp067*wq>y;t^`C3)*}OZk*TM2rk;j#6hm!@dDe&tBIY?GW<6qFFk(W8 z`LPkR0WmKcF+5=M|BRS0Vt!`CY(&h+cN5Qky} zVjjG)OE3b_Oj`lusQ~gc0J#l7ZU>O314!0==#A*Q=N>ZowSLL|-L#(-&Gh`=7%`_J z<_#le8)DuxVopcQ?~NFja#BshxybB!$n5#Z>;=f|g~;qh$j%?YT?>ACHDvNGE9$Hh z)sTsGs2Vb{cr29vCgNugi!d0E;P(uEFX8t(e(&PKPnKp zIQ+0c_;GloK;+?Ye}Nc=!@UI}ABQ^�VU2L7J_0KIn2>g`KOjanFRTv|>4r4^uV~pr#`X1eaN^l3H<(p_A?t;YJjSqs{3#s`ow99>voF8C_ z<3UKzL-ZcTjy}fN(WjWAkprJNjA=;HGh!rqIAiDq3|YJgiTbISif+nGdRfe(UqP~7 z6^rO~NY`&f1-%IgdkcQ|w;^Tkh(>x3lJ-7)?tg`}eINq#2_)`s&|04hOz;w6ku9Py zmp8#I-YRm%HjyXJgzbA44BSh^2=R5;lQ+QbyjhGFcZ&&PhnOfH6qCd*ak$tkrif?7 z4DphfDP9({#c#zN@urw3-WNxSzu=RbpNoZ-C62d-h!SgMB`UVKM1itmY);y*;QxL>RhJ4HY|EP|*l?P53T+vBKjPolm(h5Gg^>f4V{ z-}a%t{TOfme|XzVsBgc(8(u+u`!(v@Yp8F(MSXh%Df}Mw?GJeBUEFm5_3clf{2BG_ zL)5pAP~Sd9efztG3TF*LILsPoO|D4 zX-%Z>S(E5K>u`F+nnJs+8T5=blb*9?(@WMIdfA#suUkja8`c7P*IG#LS;y1IRtbG- zRfrs`Qsi1oMZUF6jI`>+7^_~4vzo+YYq^+etr9b>W--fJBNkXKVv*Gq_x;>soPxb)C4`x=Gw^-7I!kw~Gg@JH#&Q+hVVEmw49NAzrfX z6)#)g7r(Xc6K`4%i1)1r#b2yP#OKzdsA*52zU@JM+l%_P5A|&lYyfogvA)@JwM#7Z SK2y%Rprx2m-KtmbME*ZYpc^az diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jrxml index 1cd15e6b5..4c732cded 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jrxml @@ -3,28 +3,35 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33,10 +40,10 @@ - + - + @@ -54,7 +61,7 @@ - + @@ -64,21 +71,9 @@ - - - - - - - - - - - - - + - + @@ -88,60 +83,53 @@ - - + + - + - - + + - + - - + + - + - - + + - + - - - - - - - - - + + - - + + - - + + @@ -150,15 +138,15 @@ - - + + - + - - + + @@ -168,71 +156,64 @@ - - + + - + - - + + - + - - + + - + - - + + - + - - - + + + - + - - - - - - - - - - + + + - - - + + + - - - + + + - - - + + + @@ -246,111 +227,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaImportacionFiscalController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaImportacionFiscalController.java index 433973102..4f2d6ccd2 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaImportacionFiscalController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaImportacionFiscalController.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.sql.SQLException; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -25,6 +26,8 @@ import org.zkoss.zul.Checkbox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.Datebox; import org.zkoss.zul.Filedownload; +import org.zkoss.zul.Messagebox; +import org.zkoss.zul.Textbox; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioAnaliticoFinanceiro; @@ -33,6 +36,7 @@ import com.rjconsultores.ventaboletos.service.EmpresaService; import com.rjconsultores.ventaboletos.service.FiscalService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.ZipUtil; +import com.rjconsultores.ventaboletos.web.utilerias.MaskUtil; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @@ -65,6 +69,9 @@ public class BusquedaImportacionFiscalController extends MyGenericForwardCompose private Button btnExeRelatorioVoucher; private Boolean isExibirTipoGeracaoArquivo; + private Boolean isExibirCompetencia; + private boolean isExibirDatas; + private Textbox txtCompetencia; @Override public void doAfterCompose(Component comp) throws Exception { @@ -72,6 +79,7 @@ public class BusquedaImportacionFiscalController extends MyGenericForwardCompose super.doAfterCompose(comp); defineImportacao(); + aplicarMascara(); } private void defineImportacao() { @@ -126,6 +134,8 @@ public class BusquedaImportacionFiscalController extends MyGenericForwardCompose } isExibirTipoGeracaoArquivo = (Boolean) Executions.getCurrent().getArg().get("ExibirTipoGeracaoArquivo"); + isExibirCompetencia = (Boolean) Executions.getCurrent().getArg().get("ExibirCompetencia"); + isExibirDatas = isExibirCompetencia != null ? !isExibirCompetencia : true; } @@ -307,11 +317,25 @@ public class BusquedaImportacionFiscalController extends MyGenericForwardCompose if (itemEmpresa != null) { empresa = (Empresa) itemEmpresa.getValue(); } + + txtCompetencia.getValue(); + if(!DateUtil.isCompetenciaValida(txtCompetencia.getValue())) { + Messagebox.show(Labels.getLabel("MSG.Error.invalida.competencia"), + Labels.getLabel("busquedaImportacionFiscalRelatorioVoucherController.window.title"), + Messagebox.OK, Messagebox.ERROR); + + return; + } + + Date dataInicial = DateUtil.getDataInicialCompetencia(txtCompetencia.getValue()); + Date dataFinal = DateUtil.getDataFinalCompetencia(txtCompetencia.getValue()); Map parametros = new HashMap(); - parametros.put("inicio", datInicial.getValue()); - parametros.put("fim", datFinal.getValue()); + parametros.put("competencia", txtCompetencia.getValue()); + parametros.put("inicio", dataInicial); + parametros.put("fim", dataFinal); parametros.put("empresa", empresa); + parametros.put("nombempresa", empresa.getNombempresa()); RelatorioAnaliticoVoucher relatorio = new RelatorioAnaliticoVoucher(parametros, dataSourceRead.getConnection()); @@ -352,4 +376,16 @@ public class BusquedaImportacionFiscalController extends MyGenericForwardCompose return isExibirTipoGeracaoArquivo; } + public Boolean isExibirCompetencia() { + return isExibirCompetencia; + } + + public Boolean isExibirDatas() { + return isExibirDatas; + } + + public void aplicarMascara() { + MaskUtil.aplicarMascara(txtCompetencia.getUuid(), "99/9999"); + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/relatorios/ItemMenuFiscalRelatorioVoucher.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/relatorios/ItemMenuFiscalRelatorioVoucher.java index d3f4bbc13..1728ff272 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/relatorios/ItemMenuFiscalRelatorioVoucher.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/relatorios/ItemMenuFiscalRelatorioVoucher.java @@ -25,6 +25,7 @@ public class ItemMenuFiscalRelatorioVoucher extends DefaultItemMenuSistema { @SuppressWarnings("unchecked") HashMap map = TipoImportacaoFiscal.selecionaTipoImportacao(TipoImportacao.RELATORIO_VOUCHER, (HashMap) getArgs()); + map.put("ExibirCompetencia", true); PantallaUtileria.openWindow("/gui/impressaofiscal/busquedaImportacionFiscal.zul", Labels.getLabel("busquedaImportacionFiscalRelatorioVoucherController.window.title"), map, desktop); diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 304080e99..68113d76b 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -6018,6 +6018,7 @@ busquedaImportacionFiscalController.lbDataFin.value = Data Final busquedaImportacionFiscalController.lbGerarArquivo.value = Gerar Arquivo busquedaImportacionFiscalController.lbArquivoTxt.value = Importação Texto busquedaImportacionFiscalController.lbArquivoXls.value = Consolidado Excel +busquedaImportacionFiscalController.lbCompetencia.label = Competência busquedaImportacionFiscalController.btnExe.label = Executar Importação #busquedaImportacionFiscalController.btnExe.label = Importação Fiscal ECF #busquedaImportacionFiscalController.btnExeManual.label = Importação Fiscal Manual diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index cfedc22c0..3b98dea12 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -6024,6 +6024,7 @@ busquedaImportacionFiscalController.lbDataFin.value = Data Final busquedaImportacionFiscalController.lbGerarArquivo.value = Gerar Arquivo busquedaImportacionFiscalController.lbArquivoTxt.value = Importação Texto busquedaImportacionFiscalController.lbArquivoXls.value = Consolidado Excel +busquedaImportacionFiscalController.lbCompetencia.label = Competência busquedaImportacionFiscalController.btnExe.label = Executar Importação #busquedaImportacionFiscalController.btnExe.label = Importação Fiscal ECF #busquedaImportacionFiscalController.btnExeManual.label = Importação Fiscal Manual diff --git a/web/gui/impressaofiscal/busquedaImportacionFiscal.zul b/web/gui/impressaofiscal/busquedaImportacionFiscal.zul index 83e0ded27..80e75e8df 100644 --- a/web/gui/impressaofiscal/busquedaImportacionFiscal.zul +++ b/web/gui/impressaofiscal/busquedaImportacionFiscal.zul @@ -18,7 +18,7 @@ - + + +