bug#11600

dev: julio
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@85857 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2018-10-03 14:45:47 +00:00
parent d0a40511d3
commit f86fdd9f81
2 changed files with 112 additions and 37 deletions

View File

@ -13,7 +13,6 @@ import com.rjconsultores.ventaboletos.entidad.Aidf;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioDocumentosFiscaisBean;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
@ -43,8 +42,14 @@ public class RelatorioDocumentosFiscais extends Relatorio {
String tipoLinha = (String) parametros.get("TIPO_LINHA");
Aidf aidf = (Aidf) parametros.get("AIDF");
Boolean somenteCancelado = (Boolean) parametros.get("SOMENTE_CANCELADO");
String especie = (String) parametros.get("ESPECIE");
String sql = getSql(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId);
String sql = null;
if (especie.equals("Bilhetes BPR")) {
sql = getSqlBPR(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId);
} else {
sql = getSqlExcessoBagagem(empresaId, agencia, somenteCancelado, tipoLinha, aidf, estadoId);
}
NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql);
@ -71,7 +76,9 @@ public class RelatorioDocumentosFiscais extends Relatorio {
bean.setFormInicial((String) rset.getObject("formInicial"));
bean.setFormFinal((String) rset.getObject("formFinal"));
bean.setSerie((String) rset.getObject("serie"));
bean.setSubSerie((String) rset.getObject("subSerie"));
// datamov
// bean.setSubSerie((String) rset.getObject("subSerie"));
bean.setValorContabil((BigDecimal) rset.getObject("valorContabil"));
bean.setValorBaseCalculo((BigDecimal) rset.getObject("valorBaseCalculo"));
bean.setValorAliquiotaICMS((BigDecimal) rset.getObject("valorAliquiotaICMS"));
@ -125,38 +132,42 @@ public class RelatorioDocumentosFiscais extends Relatorio {
this.lsDadosRelatorio = lsDadosRelatorio;
}
private String getSql(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf, Integer estadoId) {
private String getSqlBPR(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf, Integer estadoId) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT coalesce(tabela.numAidf, '') AS numAidf, ");
sql.append(" tabela.formInicial AS formInicial, ");
sql.append(" tabela.formFinal AS formFinal, ");
sql.append("SELECT ");
// sql.append(" tabela.datamov, ");
sql.append(" coalesce(tabela.numAidf, '') AS numAidf, ");
sql.append(" min(tabela.folio) AS formInicial, ");
sql.append(" max(tabela.folio) AS formFinal, ");
sql.append(" tabela.serie AS serie, ");
sql.append(" tabela.subSerie AS subSerie, ");
sql.append(" tabela.nomeEstado AS nomeEstado, ");
sql.append(" coalesce(sum(tabela.valorContabil),0) AS valorContabil, ");
sql.append(" sum(valorBaseCalculo) AS valorBaseCalculo, ");
sql.append(" tabela.valorAliquiotaICMS AS valorAliquiotaICMS, ");
sql.append(" sum(tabela.valorICMS) AS valorICMS, ");
sql.append(" coalesce(sum(tabela.valorCancelado),0) AS valorCancelado, ");
sql.append(" coalesce(sum(tabela.valorCancelado),0) AS valorCancelado, ");
sql.append(" sum(tabela.outras) AS outras ");
sql.append("FROM ");
sql.append(" (SELECT a.ACFISCAL AS numAidf, ");
sql.append(" a.FORMINICIAL AS formInicial, ");
sql.append(" a.FORMFINAL AS formFinal, ");
sql.append(" a.SERIE AS serie, ");
sql.append(" a.SUBSERIE AS subSerie, ");
sql.append(" (SELECT DISTINCT ");
sql.append(" c.caja_id, ");
// sql.append(" TRUNC(c.feccreacion) as datamov, ");
sql.append(" a.ACFISCAL AS numAidf, ");
sql.append(" c.NUMFOLIOPREIMPRESO as folio, ");
sql.append(" c.NUMSERIEPREIMPRESA as serie, ");
sql.append(" c.MOTIVOCANCELACION_ID AS motivoCancelacion, ");
sql.append(" c.PRECIOBASE AS tarifa, ");
sql.append(" ed.ICMS AS valorAliquiotaICMS, ");
sql.append(" ei.ICMS AS valorAliquiotaICMS, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorContabil, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NOT NULL THEN c.PRECIOPAGADO ELSE 0 END AS valorCancelado, ");
sql.append(" coalesce(ei.PORCREDBASEICMS / 100,0) AS redBaseCalcIcms, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0)) ELSE 0 END AS valorBaseCalculo, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN ((c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0))) * ed.ICMS) / 100 ELSE 0 END AS valorICMS, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO - (c.PRECIOPAGADO * coalesce(ei.PORCREDBASEICMS / 100,0))) ELSE 0 END AS outras, ");
sql.append(" eo.estado_id AS estadoId, eo.NOMBESTADO AS nomeEstado, po.DESCPARADA AS origem, pd.DESCPARADA AS destino, ");
sql.append(" (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) AS redBaseCalcIcms, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO * (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) ) ELSE 0 END AS valorBaseCalculo, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN ((c.PRECIOPAGADO - (c.PRECIOPAGADO * (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) )) * ed.ICMS) / 100 ELSE 0 END AS valorICMS, ");
sql.append(" CASE WHEN c.MOTIVOCANCELACION_ID IS NULL THEN c.PRECIOPAGADO - (c.PRECIOPAGADO - (c.PRECIOPAGADO * (coalesce(ei.PORCREDBASEICMS, 0) / 100.0) )) ELSE 0 END AS outras, ");
sql.append(" coalesce(eos.estado_id, eo.estado_id) AS estadoId, ");
sql.append(" coalesce(eos.NOMBESTADO, eo.NOMBESTADO) AS nomeEstado, ");
sql.append(" coalesce(pos.DESCPARADA, po.DESCPARADA) AS origem, ");
sql.append(" coalesce(pds.DESCPARADA, pd.DESCPARADA) AS destino, ");
sql.append(" CASE WHEN((coalesce(eos.cveestado, eo.cveestado)) = (coalesce(eds.cveestado, ed.cveestado))) THEN 0 ELSE 1 END AS isInterEstadual ");
sql.append(" FROM caja c ");
sql.append(" INNER JOIN aidf a ON a.aidf_id = c.aidf_id ");
@ -168,11 +179,8 @@ public class RelatorioDocumentosFiscais extends Relatorio {
sql.append(" JOIN parada pd ON pd.parada_id = c.destino_id ");
sql.append(" JOIN ciudad cd ON cd.ciudad_id = pd.ciudad_id ");
sql.append(" JOIN estado ed ON ed.estado_id = cd.estado_id ");
sql.append(" LEFT JOIN alias_servico s ON s.origen_id = c.origen_id ");
sql.append(" AND s.destino_id = c.destino_id ");
sql.append(" AND (s.corrida_id = c.corrida_id ");
sql.append(" OR s.corrida_id IS NULL) ");
sql.append(" AND s.ruta_id = c.ruta_id ");
sql.append(" LEFT JOIN alias_servico s ON s.origen_id = c.origen_id AND s.destino_id = c.destino_id ");
sql.append(" AND (s.corrida_id = c.corrida_id OR s.corrida_id IS NULL) AND s.ruta_id = c.ruta_id AND s.activo = 1 ");
sql.append(" LEFT JOIN parada pos ON pos.parada_id = s.aliasorigen_id ");
sql.append(" LEFT JOIN ciudad cos ON cos.ciudad_id = pos.ciudad_id ");
sql.append(" LEFT JOIN estado eos ON eos.estado_id = cos.estado_id ");
@ -180,17 +188,83 @@ public class RelatorioDocumentosFiscais extends Relatorio {
sql.append(" LEFT JOIN ciudad cds ON cds.ciudad_id = pds.ciudad_id ");
sql.append(" LEFT JOIN estado eds ON eds.estado_id = cds.estado_id ");
sql.append(" INNER JOIN empresa_imposto ei ON ei.empresa_id = e.empresa_id ");
sql.append(" and ei.estado_id = coalesce(eos.estado_id, eo.estado_id) and ei.activo = 1 ");
sql.append(" WHERE c.feccreacion between :DATA_INICIAL and :DATA_FINAL ");
sql.append("AND c.EMPRESACORRIDA_ID =" + empresaId + " ");
sql.append("AND e.empresa_id = " + empresaId + " ");
sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " ");
sql.append(aidf != null ? " AND a.AIDF_ID = " + aidf.getAidfId() + " " : " ");
sql.append("AND coalesce(eos.estado_id, eo.estado_id) IN (" + estadoId + ") ");
sql.append(")tabela ");
sql.append(" )tabela ");
sql.append(tipoLinha.equals("INTERMUNICIPAL") ? " where tabela.isInterEstadual = 1" : tipoLinha.equals("INTERESTADUAL") ? " where tabela.isInterEstadual = 0" : " ");
sql.append("GROUP BY tabela.numAidf,tabela.formInicial, ");
sql.append(" tabela.formFinal,tabela.serie, tabela.subSerie,tabela.nomeEstado, ");
sql.append("GROUP BY tabela.numAidf, ");
// sql.append(" tabela.datamov, ");
sql.append(" tabela.serie, ");
sql.append(" tabela.nomeEstado, ");
sql.append(" tabela.valorAliquiotaICMS ");
sql.append("ORDER BY tabela.nomeEstado");
sql.append("ORDER BY tabela.nomeEstado, tabela.numAidf ");
return sql.toString();
}
private String getSqlExcessoBagagem(Integer empresaId, String agencia, Boolean somenteCancelado, String tipoLinha, Aidf aidf, Integer estadoId) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT coalesce(tabela.numAidf, '') AS numAidf, ");
// sql.append(" tabela.datamov, ");
sql.append(" min(tabela.folio) AS formInicial, ");
sql.append(" max(tabela.folio) AS formFinal, ");
sql.append(" tabela.serie AS serie, ");
sql.append(" tabela.nomeEstado AS nomeEstado, ");
sql.append(" coalesce(sum(tabela.valorContabil),0) AS valorContabil, ");
sql.append(" sum(valorBaseCalculo) AS valorBaseCalculo, ");
sql.append(" tabela.valorAliquiotaICMS AS valorAliquiotaICMS, ");
sql.append(" sum(tabela.valorICMS) AS valorICMS, ");
sql.append(" coalesce(sum(tabela.valorCancelado),0) AS valorCancelado, ");
sql.append(" sum(tabela.outras) AS outras ");
sql.append("FROM ");
sql.append(" (SELECT DISTINCT ");
sql.append(" coalesce(cdv.NUMSERIEPREIMPRESA, 'X') AS numAidf, ");
sql.append(" coalesce(cdv.NUMFOLIOPREIMPRESO, '0') AS folio, ");
sql.append(" coalesce(cdv.NUMSERIEPREIMPRESA, 'X') AS serie, ");
// sql.append(" trunc(ee.fechoringreso) as datamov, ");
sql.append(" case when cdv.precio < 0 then 31 else null end AS motivoCancelacion, ");
sql.append(" cdv.precio AS tarifa, ");
sql.append(" cdv.precio as valor, ");
sql.append(" ed.ICMS AS valorAliquiotaICMS, ");
sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio ELSE 0 END AS valorContabil, ");
sql.append(" CASE WHEN cdv.precio < 0 THEN cdv.precio ELSE 0 END AS valorCancelado, ");
sql.append(" COALESCE(ed.PORCREDBASEICMS / 100,0) AS redBaseCalcIcms, ");
sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio - (cdv.precio * COALESCE(ed.PORCREDBASEICMS / 100,0)) ELSE 0 END AS valorBaseCalculo, ");
sql.append(" CASE WHEN cdv.precio >= 0 THEN (cdv.precio - (cdv.precio * COALESCE(ed.PORCREDBASEICMS / 100,0)) * ed.ICMS) / 100ELSE 0 END AS valorICMS, ");
sql.append(" CASE WHEN cdv.precio >= 0 THEN cdv.precio - (cdv.precio - (cdv.precio * COALESCE(ed.PORCREDBASEICMS / 100,0))) ELSE 0 END AS outras, ");
sql.append(" es.estado_id AS estadoId, ");
sql.append(" es.NOMBESTADO AS nomeEstado, ");
sql.append(" '' AS origem, ");
sql.append(" '' AS destino, ");
sql.append(" 0 AS isInterEstadual ");
sql.append("from evento_extra ee ");
sql.append(" join caja_diversos cdv on cdv.eventoextra_id = ee.eventoextra_id ");
sql.append(" join punto_venta pv on pv.puntoventa_id = cdv.puntoventa_id ");
sql.append(" join parada pp on pp.parada_id = pv.parada_id ");
sql.append(" join ciudad cc on cc.ciudad_id = pp.ciudad_id ");
sql.append(" join estado es on es.estado_id = cc.estado_id ");
sql.append(" join empresa_imposto ed ON ed.empresa_id = ee.empresa_id and es.estado_id = ed.estado_id and ed.activo = 1 ");
sql.append("where ee.tipoeventoextra_id in (1,81,82) ");
sql.append(" and ee.fechoringreso between :DATA_INICIAL and :DATA_FINAL ");
sql.append(" and ee.empresa_id = " + empresaId + " ");
sql.append(" and es.estado_id IN (" + estadoId + ") ");
// sql.append(somenteCancelado == true ? " AND c.INDCANCELACION = 1" : " ");
// sql.append(aidf != null ? " AND a.AIDF_ID = " + aidf.getAidfId() + " " : " ");
sql.append(" ");
sql.append(" )tabela ");
// sql.append(tipoLinha.equals("INTERMUNICIPAL") ? " where tabela.isInterEstadual = 1" : tipoLinha.equals("INTERESTADUAL") ? " where tabela.isInterEstadual = 0" : " ");
sql.append("GROUP BY tabela.numAidf, ");
// sql.append(" tabela.datamov, ");
sql.append(" tabela.serie, ");
sql.append(" tabela.nomeEstado, ");
sql.append(" tabela.valorAliquiotaICMS ");
sql.append("ORDER BY tabela.nomeEstado, tabela.numAidf ");
return sql.toString();
}

View File

@ -1,4 +1,4 @@
package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios;
package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios;
import java.sql.Timestamp;
import java.util.HashMap;
@ -43,8 +43,8 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos
*
*/
private static final long serialVersionUID = 1L;
private static final String TODOS_VALUE = new Integer(-1).toString();
private static final String TODOS = "TODAS";
// private static final String TODOS_VALUE = new Integer(-1).toString();
// private static final String TODOS = "TODAS";
@Autowired
private EmpresaService empresaService;
@Autowired
@ -62,6 +62,7 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos
private Checkbox ckbSomenteCancelado;
private Radiogroup rdgInterestadualMunicial;
private Radiogroup rdTipoAgrupamento;
private Radiogroup rdEspecie;
@Autowired
private AidfService aidfService;
private List<Aidf> lsAidf;
@ -88,7 +89,7 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos
Empresa empresa = (Empresa) cmbEmpresa.getSelectedItem().getValue();
Estado estado = (Estado) cmbEstado.getSelectedItem().getValue();
Aidf aidf = null;
if( cmbAidf.getSelectedItem() != null){
if (cmbAidf.getSelectedItem() != null) {
aidf = (Aidf) cmbAidf.getSelectedItem().getValue();
}
Boolean somenteCancelado = ckbSomenteCancelado.isChecked();
@ -103,9 +104,9 @@ public class RelatorioDocumentosFiscaisController extends MyGenericForwardCompos
tipoLinha = "TODOS";
}
Radio rdEspecie = rdgInterestadualMunicial.getSelectedItem();
Radio rdEsp = rdEspecie.getSelectedItem();
String especie;
if (rdEspecie.getValue().equals("0")) {
if (rdEsp.getValue().equals("0")) {
especie = "Bilhetes BPR";
} else {
especie = "Excesso de Bagagem(EB)";