From ed27c13c383db052b9df10a46a114e7bdf92b512 Mon Sep 17 00:00:00 2001 From: thiago Date: Fri, 10 Jun 2016 19:03:46 +0000 Subject: [PATCH] =?UTF-8?q?fixed=20bug=20#7423=20-=20Altera=C3=A7=C3=A3o?= =?UTF-8?q?=20em=20tela=20de=20cadastro=20de=20parametro=20de=20OCD=20incl?= =?UTF-8?q?us=C3=A3o=20de=20campo=20para=20definir=20se=20haver=C3=A1=20OC?= =?UTF-8?q?D=20para=20formas=20de=20pagamento=20diferentes=20de=20cart?= =?UTF-8?q?=C3=A3o=20de=20cr=C3=A9dito.=20Altera=C3=A7=C3=A3o=20de=20Relat?= =?UTF-8?q?=C3=B3rios=20adequando=20=C3=A0=20demanda.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@56876 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../RelatorioCancelamentoVendaCartao.java | 52 +++------ .../impl/RelatorioOCDNaoResgatadaEmpresa.java | 35 +++++- ...atorioOCDNaoResgatadaEmpresa_es.properties | 4 + ...rioOCDNaoResgatadaEmpresa_pt_BR.properties | 4 + .../RelatorioOCDNaoResgatadaEmpresa.jasper | Bin 36401 -> 39516 bytes .../RelatorioOCDNaoResgatadaEmpresa.jrxml | 105 +++++++++++++----- .../relatorios/utilitarios/IndOrdenacion.java | 16 +++ .../utilitarios/RelatorioOCDBean.java | 52 +++++++++ .../catalogos/BusquedaOCDParamController.java | 1 + .../catalogos/EditarOCDParamController.java | 6 + .../relatorios/RelatorioOCDController.java | 19 ++++ web/WEB-INF/i3-label_es_MX.label | 6 +- web/WEB-INF/i3-label_pt_BR.label | 10 ++ web/gui/catalogos/editarOCDParam.zul | 9 ++ web/gui/relatorios/filtroRelatorioOCD.zul | 10 ++ 15 files changed, 258 insertions(+), 71 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/IndOrdenacion.java diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java index 672b204ca..0f756e7f0 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioCancelamentoVendaCartao.java @@ -68,9 +68,9 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { StringBuilder sql = new StringBuilder(); /* Boletos apenas com venda e cancelamento direto com corrida */ - sql.append("SELECT DISTINCT C.CAJA_ID, B.BOLETO_ID, P.NOMBPUNTOVENTA, CTJ.NUMTARJETA, C.FECHORVENTA, PTOVTA.NUMSITEF, ") - .append("'OCD' AS DESCMOTIVO, CTJ.NUMAUTORIZACION, CTJ.NSU, B.NUMFOLIOSISTEMA, O.FECINC AS DATADEVOLUCAO, C.NUMOPERACION, ") - .append("(COALESCE(C.PRECIOPAGADO,0) + COALESCE(C.IMPORTEOUTROS,0)+ COALESCE(C.IMPORTEPEDAGIO,0)+ COALESCE(C.IMPORTESEGURO,0) + COALESCE(C.IMPORTETAXAEMBARQUE,0)) AS VALOR_VENDA, ") + sql.append("SELECT DISTINCT B.BOLETO_ID, P.NOMBPUNTOVENTA, O.NUMTARJETA, B.FECHORVENTA, PTOVTA.NUMSITEF, ") + .append("'OCD' AS DESCMOTIVO, O.NUMAUTORIZACION, O.NSU, B.NUMFOLIOSISTEMA, O.FECINC AS DATADEVOLUCAO, O.NUMOPERACION, ") + .append("(COALESCE(B.PRECIOPAGADO,0) + COALESCE(B.IMPORTEOUTROS,0)+ COALESCE(B.IMPORTEPEDAGIO,0)+ COALESCE(B.IMPORTESEGURO,0) + COALESCE(B.IMPORTETAXAEMBARQUE,0)) AS VALOR_VENDA, ") .append("CASE WHEN O.VALOR_TARJETA > 0 ") .append("THEN TO_CHAR(COALESCE(O.VALOR_TARJETA,0),'FM9999999.90') ") @@ -87,16 +87,8 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { .append(" AND B.BOLETOORIGINAL_ID IS NULL ") .append(" AND B.CORRIDA_ID IS NOT NULL ") .append(" AND B.FECCORRIDA IS NOT NULL ") - .append("INNER JOIN CAJA C ON C.NUMOPERACION = B.NUMOPERACION ") - .append(" AND B.NUMASIENTO = C.NUMASIENTO ") - .append(" AND B.ORIGEN_ID = C.ORIGEN_ID ") - .append(" AND B.DESTINO_ID = C.DESTINO_ID ") - .append(" AND B.CATEGORIA_ID = C.CATEGORIA_ID ") - .append(" AND B.CLASESERVICIO_ID = C.CLASESERVICIO_ID ") - .append(" AND B.CORRIDA_ID = C.CORRIDA_ID ") - .append(" AND B.FECCORRIDA = C.FECCORRIDA ") - .append("INNER JOIN CAJA_DET_PAGO CDT ON CDT.CAJA_ID = C.CAJA_ID AND CDT.FORMAPAGO_ID = :formaPago1 ") - .append("INNER JOIN CAJA_TARJETA CTJ ON CDT.CAJADETPAGO_ID = CTJ.CAJADETPAGO_ID ") + .append("INNER JOIN BOLETO_FORMAPAGO BFP ON BFP.BOLETO_ID = B.BOLETO_ID ") + .append("AND BFP.FORMAPAGO_ID = :formaPago1 ") .append("INNER JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = B.PUNTOVENTA_ID ") .append("INNER JOIN PTOVTA_EMPRESA PTOVTA ON B.PUNTOVENTA_ID = PTOVTA.PUNTOVENTA_ID ") .append("INNER JOIN MARCA M ON M.MARCA_ID = B.MARCA_ID AND M.EMPRESA_ID = PTOVTA.EMPRESA_ID ") @@ -112,9 +104,9 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append("UNION ALL "); /* Boletos com entrega/transferencia/troca antes do cancelamento com corrida */ - sql.append("SELECT DISTINCT C.CAJA_ID, B.BOLETO_ID, P.NOMBPUNTOVENTA, CTJ.NUMTARJETA, C.FECHORVENTA, PTOVTA.NUMSITEF, ") - .append("'OCD' AS DESCMOTIVO, CTJ.NUMAUTORIZACION, CTJ.NSU, B.NUMFOLIOSISTEMA, O.FECINC AS DATADEVOLUCAO, C.NUMOPERACION, ") - .append("(COALESCE(C.PRECIOPAGADO,0) + COALESCE(C.IMPORTEOUTROS,0)+ COALESCE(C.IMPORTEPEDAGIO,0)+ COALESCE(C.IMPORTESEGURO,0) + COALESCE(C.IMPORTETAXAEMBARQUE,0)) AS VALOR_VENDA, ") + sql.append("SELECT DISTINCT B.BOLETO_ID, P.NOMBPUNTOVENTA, O.NUMTARJETA, B.FECHORVENTA, PTOVTA.NUMSITEF, ") + .append("'OCD' AS DESCMOTIVO, O.NUMAUTORIZACION, O.NSU, B.NUMFOLIOSISTEMA, O.FECINC AS DATADEVOLUCAO, O.NUMOPERACION, ") + .append("(COALESCE(B.PRECIOPAGADO,0) + COALESCE(B.IMPORTEOUTROS,0)+ COALESCE(B.IMPORTEPEDAGIO,0)+ COALESCE(B.IMPORTESEGURO,0) + COALESCE(B.IMPORTETAXAEMBARQUE,0)) AS VALOR_VENDA, ") .append("CASE WHEN O.VALOR_TARJETA > 0 ") .append("THEN TO_CHAR(COALESCE(O.VALOR_TARJETA,0),'FM9999999.90') ") @@ -131,16 +123,8 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { .append("INNER JOIN BOLETO BR ON BR.BOLETO_ID = B.BOLETOORIGINAL_ID ") .append(" AND BR.CORRIDA_ID IS NOT NULL ") .append(" AND BR.FECCORRIDA IS NOT NULL ") - .append("INNER JOIN CAJA C ON BR.NUMOPERACION = C.NUMOPERACION ") - .append(" AND BR.NUMASIENTO = C.NUMASIENTO ") - .append(" AND BR.ORIGEN_ID = C.ORIGEN_ID ") - .append(" AND BR.DESTINO_ID = C.DESTINO_ID ") - .append(" AND BR.CATEGORIA_ID = C.CATEGORIA_ID ") - .append(" AND BR.CLASESERVICIO_ID = C.CLASESERVICIO_ID ") - .append(" AND BR.CORRIDA_ID = C.CORRIDA_ID ") - .append(" AND BR.FECCORRIDA = C.FECCORRIDA ") - .append("INNER JOIN CAJA_DET_PAGO CDT ON CDT.CAJA_ID = C.CAJA_ID AND CDT.FORMAPAGO_ID = :formaPago1 ") - .append("INNER JOIN CAJA_TARJETA CTJ ON CDT.CAJADETPAGO_ID = CTJ.CAJADETPAGO_ID ") + .append("INNER JOIN BOLETO_FORMAPAGO BFP ON BFP.BOLETO_ID = B.BOLETO_ID ") + .append("AND BFP.FORMAPAGO_ID = :formaPago1 ") .append("INNER JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = BR.PUNTOVENTA_ID ") .append("INNER JOIN PTOVTA_EMPRESA PTOVTA ON BR.PUNTOVENTA_ID = PTOVTA.PUNTOVENTA_ID ") .append("INNER JOIN MARCA M ON M.MARCA_ID = BR.MARCA_ID AND M.EMPRESA_ID = PTOVTA.EMPRESA_ID ") @@ -156,9 +140,9 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { sql.append("UNION ALL "); /* Boletos apenas com venda e cancelamento direto sem corrida */ - sql.append("SELECT DISTINCT C.CAJA_ID, B.BOLETO_ID, P.NOMBPUNTOVENTA, CTJ.NUMTARJETA, C.FECHORVENTA, PTOVTA.NUMSITEF, ") - .append("'OCD' AS DESCMOTIVO, CTJ.NUMAUTORIZACION, CTJ.NSU, B.NUMFOLIOSISTEMA, O.FECINC AS DATADEVOLUCAO, C.NUMOPERACION, ") - .append("(COALESCE(C.PRECIOPAGADO,0) + COALESCE(C.IMPORTEOUTROS,0)+ COALESCE(C.IMPORTEPEDAGIO,0)+ COALESCE(C.IMPORTESEGURO,0) + COALESCE(C.IMPORTETAXAEMBARQUE,0)) AS VALOR_VENDA, ") + sql.append("SELECT DISTINCT B.BOLETO_ID, P.NOMBPUNTOVENTA, O.NUMTARJETA, B.FECHORVENTA, PTOVTA.NUMSITEF, ") + .append("'OCD' AS DESCMOTIVO, O.NUMAUTORIZACION, O.NSU, B.NUMFOLIOSISTEMA, O.FECINC AS DATADEVOLUCAO, O.NUMOPERACION, ") + .append("(COALESCE(B.PRECIOPAGADO,0) + COALESCE(B.IMPORTEOUTROS,0)+ COALESCE(B.IMPORTEPEDAGIO,0)+ COALESCE(B.IMPORTESEGURO,0) + COALESCE(B.IMPORTETAXAEMBARQUE,0)) AS VALOR_VENDA, ") .append("CASE WHEN O.VALOR_TARJETA > 0 ") .append("THEN TO_CHAR(COALESCE(O.VALOR_TARJETA,0),'FM9999999.90') ") @@ -175,14 +159,8 @@ public class RelatorioCancelamentoVendaCartao extends Relatorio { .append(" AND B.BOLETOORIGINAL_ID IS NULL ") .append(" AND B.CORRIDA_ID IS NULL ") .append(" AND B.FECCORRIDA IS NULL ") - .append("INNER JOIN CAJA C ON C.NUMOPERACION = B.NUMOPERACION ") - .append(" AND B.NUMFOLIOSISTEMA = C.NUMFOLIOSISTEMA ") - .append(" AND B.ORIGEN_ID = C.ORIGEN_ID ") - .append(" AND B.DESTINO_ID = C.DESTINO_ID ") - .append(" AND B.CATEGORIA_ID = C.CATEGORIA_ID ") - .append(" AND B.CLASESERVICIO_ID = C.CLASESERVICIO_ID ") - .append("INNER JOIN CAJA_DET_PAGO CDT ON CDT.CAJA_ID = C.CAJA_ID AND CDT.FORMAPAGO_ID = :formaPago1 ") - .append("INNER JOIN CAJA_TARJETA CTJ ON CDT.CAJADETPAGO_ID = CTJ.CAJADETPAGO_ID ") + .append("INNER JOIN BOLETO_FORMAPAGO BFP ON BFP.BOLETO_ID = B.BOLETO_ID ") + .append("AND BFP.FORMAPAGO_ID = :formaPago1 ") .append("INNER JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = B.PUNTOVENTA_ID ") .append("INNER JOIN PTOVTA_EMPRESA PTOVTA ON B.PUNTOVENTA_ID = PTOVTA.PUNTOVENTA_ID ") .append("INNER JOIN MARCA M ON M.MARCA_ID = B.MARCA_ID AND M.EMPRESA_ID = PTOVTA.EMPRESA_ID ") diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOCDNaoResgatadaEmpresa.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOCDNaoResgatadaEmpresa.java index 4ed9caad2..379c25a94 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOCDNaoResgatadaEmpresa.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOCDNaoResgatadaEmpresa.java @@ -10,6 +10,7 @@ import java.util.Map; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.IndOrdenacion; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioOCDBean; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; @@ -34,8 +35,9 @@ public class RelatorioOCDNaoResgatadaEmpresa extends Relatorio { Integer empresaId = parametros.get("empresa") != null ? Integer.parseInt(parametros.get("empresa").toString()) : null; boolean statusPendente = (Boolean) parametros.get("statusPendente"); boolean statusPago = (Boolean) parametros.get("statusPago"); + IndOrdenacion ordenacion = (IndOrdenacion) parametros.get("ordenacion"); - String sql = getSql(fecInicio, fecFinal, empresaId, statusPendente, statusPago); + String sql = getSql(fecInicio, fecFinal, empresaId, statusPendente, statusPago,ordenacion); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; @@ -54,6 +56,15 @@ public class RelatorioOCDNaoResgatadaEmpresa extends Relatorio { while (rset.next()) { RelatorioOCDBean ocdBean = new RelatorioOCDBean(); ocdBean.setBoletoId(rset.getLong("boleto_Id")); + if(!lsDadosRelatorio.contains(ocdBean)){ + ocdBean.setFormaPago1(rset.getString("formaPago")); + }else if(lsDadosRelatorio.contains(ocdBean) && (ocdBean.getFormaPago2()==null ||ocdBean.getFormaPago2().isEmpty())){ + lsDadosRelatorio.get(lsDadosRelatorio.indexOf(ocdBean)).setFormaPago2(rset.getString("formaPago")); + continue; + }else{ + lsDadosRelatorio.get(lsDadosRelatorio.indexOf(ocdBean)).setFormaPago3(rset.getString("formaPago")); + continue; + } ocdBean.setFecinc(rset.getDate("fecinc")); ocdBean.setFecpagar(rset.getDate("fecpagar")); ocdBean.setFecpago(rset.getDate("fecpago")); @@ -89,14 +100,17 @@ public class RelatorioOCDNaoResgatadaEmpresa extends Relatorio { } private String getSql(String fecInicio, String fecFinal, Integer empresaId, - boolean statusPendente, boolean statusPago) { + boolean statusPendente, boolean statusPago, IndOrdenacion ordenacion) { StringBuffer sql = new StringBuffer(); sql.append("select nombempresa, o.*, ui.nombusuario nombusuarioinc, "); sql.append("up.nombusuario nombusuariopago, u.nombusuario nombusuario, "); - sql.append("p.nombpuntoventa nombpuntoventa, pp.nombpuntoventa nombpuntoventapago "); + sql.append("p.nombpuntoventa nombpuntoventa, pp.nombpuntoventa nombpuntoventapago, "); + sql.append(" f.cvepago formaPago "); sql.append("from ocd o "); sql.append("join boleto b on b.boleto_id = o.boleto_id "); + sql.append("join boleto_formapago bfp on b.boleto_id = bfp.boleto_id "); + sql.append("join forma_pago f on f.formapago_id = bfp.formapago_id "); sql.append("join marca m on m.marca_id = b.marca_id "); sql.append("join empresa e on m.empresa_id = e.empresa_id "); sql.append("join usuario u on u.usuario_id = o.usuario_id "); @@ -114,6 +128,21 @@ public class RelatorioOCDNaoResgatadaEmpresa extends Relatorio { if (empresaId != null) { sql.append("and e.empresa_id = :empresaId "); } + sql.append(" order by "); + switch (ordenacion) { + case NUM_OPERACION: + sql.append(" o.numoperacion "); + break; + case FECHA_CREACION: + sql.append(" b.feccreacion "); + break; + case FECHA_PAGAMENTO: + sql.append(" b.feccorte "); + break; + default: + sql.append(" o.boleto_id "); + break; + } return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_es.properties index 478c33fea..a8920485a 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_es.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_es.properties @@ -27,6 +27,10 @@ detail.nombusuario=Usu detail.nombusuariopago=Usuário Pagar detail.nombpuntoventapago=Punto Venta Pagar +detail.formaPago1=FP1 +detail.formaPago2=FP2 +detail.formaPago3=FP3 + linhas=Líneas diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_pt_BR.properties index 3b2bef5bf..fe1a1c87d 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioOCDNaoResgatadaEmpresa_pt_BR.properties @@ -27,6 +27,10 @@ detail.nombusuario=Usu detail.nombusuariopago=Usuário Pag. detail.nombpuntoventapago=Ponto Venda Pag. +detail.formaPago1=FP1 +detail.formaPago2=FP2 +detail.formaPago3=FP3 + linhas=Linhas diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOCDNaoResgatadaEmpresa.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOCDNaoResgatadaEmpresa.jasper index 8f2ea2bda71f20589c11bc66ddfb8e5fa2527767..62f4bba818ff19cd7699c0afc19d50a04c2be03c 100644 GIT binary patch literal 39516 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 delta 11688 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 U>V%1{_RiEbe2RYr&)XCJFG05jqW}N^ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOCDNaoResgatadaEmpresa.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOCDNaoResgatadaEmpresa.jrxml index 1f410ad49..167784568 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOCDNaoResgatadaEmpresa.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOCDNaoResgatadaEmpresa.jrxml @@ -1,7 +1,7 @@ - + @@ -23,6 +23,9 @@ + + + @@ -35,42 +38,42 @@ - + - - + + - + - + - - + + - + @@ -97,26 +100,47 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + @@ -183,40 +207,33 @@ - + - - + + - + - - + + - - - - - - - @@ -224,34 +241,62 @@ - - + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/IndOrdenacion.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/IndOrdenacion.java new file mode 100644 index 000000000..828c2c9ca --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/IndOrdenacion.java @@ -0,0 +1,16 @@ +/** + * + */ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +/** + * @author Thiago + * + */ +public enum IndOrdenacion { + + BOLETO,NUM_OPERACION,FECHA_CREACION,FECHA_PAGAMENTO; + + + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOCDBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOCDBean.java index 80bc8e841..b25639690 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOCDBean.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOCDBean.java @@ -26,6 +26,9 @@ public class RelatorioOCDBean { private String nombusuariopago; private String nombpuntoventa; private String nombpuntoventapago; + private String formaPago1; + private String formaPago2; + private String formaPago3; public Long getOcdId() { return ocdId; @@ -117,4 +120,53 @@ public class RelatorioOCDBean { public void setNombpuntoventapago(String nombpuntoventapago) { this.nombpuntoventapago = nombpuntoventapago; } + public String getFormaPago1() { + return formaPago1; + } + public void setFormaPago1(String formapago1) { + this.formaPago1 = formapago1; + } + public String getFormaPago2() { + return formaPago2; + } + public void setFormaPago2(String formapago2) { + this.formaPago2 = formapago2; + } + public String getFormaPago3() { + return formaPago3; + } + public void setFormaPago3(String formapago3) { + this.formaPago3 = formapago3; + } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((boletoId == null) ? 0 : boletoId.hashCode()); + result = prime * result + ((ocdId == null) ? 0 : ocdId.hashCode()); + return result; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + RelatorioOCDBean other = (RelatorioOCDBean) obj; + if (boletoId == null) { + if (other.boletoId != null) + return false; + } else if (!boletoId.equals(other.boletoId)) + return false; + if (ocdId == null) { + if (other.ocdId != null) + return false; + } else if (!ocdId.equals(other.ocdId)) + return false; + return true; + } + + } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOCDParamController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOCDParamController.java index 7ab076baf..ba6c9509a 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOCDParamController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOCDParamController.java @@ -74,6 +74,7 @@ public class BusquedaOCDParamController extends MyGenericForwardComposer { Map args = new HashMap(); if(_param.getIndPenalizacionOCD() == null) { _param.setIndPenalizacionOCD(Boolean.TRUE); + _param.setIndOcdDinheiro(Boolean.TRUE); } args.put("ocdParamCorrente", _param); args.put("ocdParamList", ocdParamList); diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOCDParamController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOCDParamController.java index e0c06245f..debdd2bf0 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOCDParamController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOCDParamController.java @@ -53,6 +53,9 @@ public class EditarOCDParamController extends MyGenericForwardComposer { private Checkbox chkOCDTroca; private Radio rdPenalizacionOCD; private Radio rdPenalizacionOrgaoConcedente; + + private Radio rdSomenteCartao; + private Radio rdTodasFormasPagamento; private static Logger log = Logger.getLogger(EditarOCDParamController.class); @@ -100,6 +103,8 @@ public class EditarOCDParamController extends MyGenericForwardComposer { private void initRadios(Boolean indPenalizacionOCD) { rdPenalizacionOCD.setChecked(ocdParamCorrente.getIndPenalizacionOCD()); rdPenalizacionOrgaoConcedente.setChecked(!ocdParamCorrente.getIndPenalizacionOCD()); + rdSomenteCartao.setChecked(!ocdParamCorrente.getIndOcdDinheiro()); + rdTodasFormasPagamento.setChecked(ocdParamCorrente.getIndOcdDinheiro()); } public void onClick$btnApagar(Event ev) throws InterruptedException { @@ -152,6 +157,7 @@ public class EditarOCDParamController extends MyGenericForwardComposer { ocdParamCorrente.setIndOCDDefault(chkOCDDefault.isChecked()); ocdParamCorrente.setIndOCDTroca(chkOCDTroca.isChecked()); ocdParamCorrente.setIndPenalizacionOCD(rdPenalizacionOCD.isChecked()); + ocdParamCorrente.setIndOcdDinheiro(rdTodasFormasPagamento.isChecked()); if (ocdParamCorrente.getOcdparamId() == null){ isSuscribir = true; diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOCDController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOCDController.java index 5f4c3c945..4080b66ab 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOCDController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOCDController.java @@ -19,6 +19,7 @@ import org.zkoss.zul.Radio; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioOCDNaoResgatadaEmpresa; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.IndOrdenacion; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.EmpresaService; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; @@ -39,8 +40,14 @@ public class RelatorioOCDController extends MyGenericForwardComposer { private Radio radPendente; private Radio radPagos; private Radio radTodos; + + private Radio radBoleto; + private Radio radNumOperacao; + private Radio radFecInclusao; private Combobox cmbEmpresa; private List lsEmpresas; + + private IndOrdenacion ordenacion; private void executarRelatorio() throws Exception { @@ -53,6 +60,18 @@ public class RelatorioOCDController extends MyGenericForwardComposer { parametros.put("statusPendente", radPendente.isChecked()); parametros.put("statusPago", radPagos.isChecked()); parametros.put("statusTodos", radTodos.isChecked()); + + if(radBoleto.isChecked()){ + ordenacion = IndOrdenacion.BOLETO; + }else if(radNumOperacao.isChecked()){ + ordenacion = IndOrdenacion.NUM_OPERACION; + }else if(radFecInclusao.isChecked()){ + ordenacion = IndOrdenacion.FECHA_CREACION; + }else{ + ordenacion = IndOrdenacion.FECHA_PAGAMENTO; + } + + parametros.put("ordenacion",ordenacion); if (cmbEmpresa.getSelectedIndex() != -1) { parametros.put("empresa", ((Empresa) cmbEmpresa.getSelectedItem().getValue()).getEmpresaId()); diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 8be24b6d4..a8cf0f1bb 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -6462,4 +6462,8 @@ busquedaOCDParamController.ocdDefault.label = OCD como padrão busquedaOCDParamController.ocdTroca.label = OCD Troca busquedaOCDParamController.tipopenalizacion.label = Penalização por busquedaOCDParamController.parametroOCD.label = Parametros OCD -busquedaOCDParamController.orgaoconcedente.label = Orgão Concedente \ No newline at end of file +busquedaOCDParamController.orgaoconcedente.label = Orgão Concedente + +busquedaOCDParamController.FormaPagamentoOCD.label = Formas de pagamento para geração OCD +busquedaOCDParamController.SomenteCartao.label = Somente cartão +busquedaOCDParamController.TodasFormasPagamento.label = Todas as formas de pagamento \ No newline at end of file diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 31bb78bcd..e43ab4e02 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -412,6 +412,12 @@ relatorioOCDController.radPendente.value=Pendentes relatorioOCDController.radPagos.value=Pagos relatorioOCDController.radTodos.value=Todos +relatorioOCDController.indOrdenacao.value=Ordenação +relatorioOCDController.radBoleto.value=Bilhete +relatorioOCDController.radNumOperacao.value=Num.Operação +relatorioOCDController.radFecInclusao.value=Data Inclusão +relatorioOCDController.radFecPagamento.value=Data Pagamento + #Relatorio Linhas Horario relatorioLinhasHorarioController.lbDataIni.value = Data Inicial relatorioLinhasHorarioController.lbDataFin.value = Data Final @@ -5925,6 +5931,10 @@ busquedaOCDParamController.tipopenalizacion.label = Penalização por busquedaOCDParamController.parametroOCD.label = Parametros OCD busquedaOCDParamController.orgaoconcedente.label = Orgão Concedente +busquedaOCDParamController.FormaPagamentoOCD.label = Formas de pagamento para geração OCD +busquedaOCDParamController.SomenteCartao.label = Somente cartão +busquedaOCDParamController.TodasFormasPagamento.label = Todas as formas de pagamento + #complejidad contrasena complejidadContrasena.CANT_MIN_CARACTER=A senha deve ter um tamanho mínimo de {0} caracteres complejidadContrasena.CANT_MIN_LETRA=A senha deve ter ao menos {0} letra diff --git a/web/gui/catalogos/editarOCDParam.zul b/web/gui/catalogos/editarOCDParam.zul index 6ce56a018..a40a9ed13 100644 --- a/web/gui/catalogos/editarOCDParam.zul +++ b/web/gui/catalogos/editarOCDParam.zul @@ -56,6 +56,15 @@ + + + + +