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 16ec8f5c6..8c10d261a 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAnaliticoVoucher.jasper differ 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 @@ - + + +