fixes bug#22494

dev: Celio
qua:



git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@108592 d1611594-4594-4d17-8e1d-87c2c4800839
master
fabio 2021-09-02 18:18:07 +00:00
parent 7ff9536037
commit 8c47a2c247
3 changed files with 180 additions and 0 deletions

View File

@ -17,6 +17,8 @@ public interface RemessaCNABBancosDAO extends GenericDAO<FechamentoBoleto, Long>
public ArquivoRemessa remessaSicoob(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaCaixa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaMercantil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;

View File

@ -34,6 +34,9 @@ import com.rjconsultores.ventaboletos.blocos.bancobrasil.RodapeRemessaLoteBancoB
import com.rjconsultores.ventaboletos.blocos.bradesco.ArquivoRemessaBradesco;
import com.rjconsultores.ventaboletos.blocos.bradesco.CabecalhoRemessaBradesco;
import com.rjconsultores.ventaboletos.blocos.bradesco.DetalheObrigatorioBradesco;
import com.rjconsultores.ventaboletos.blocos.caixa.ArquivoRemessaCaixa;
import com.rjconsultores.ventaboletos.blocos.caixa.CabecalhoRemessaCaixa;
import com.rjconsultores.ventaboletos.blocos.caixa.DetalheObrigatorioCaixa;
import com.rjconsultores.ventaboletos.blocos.itau.ArquivoRemessaItau;
import com.rjconsultores.ventaboletos.blocos.itau.CabecalhoRemessaItau;
import com.rjconsultores.ventaboletos.blocos.itau.DetalheObrigatorioItau;
@ -1318,6 +1321,178 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
return arquivoRemessa;
}
@Override
public ArquivoRemessa remessaCaixa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception {
StringBuilder sb = new StringBuilder();
sb.append("SELECT ");
sb.append("fb.FECHAMENTOBOLETO_ID AS \"id\", ");
sb.append("(NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", ");
sb.append("fp.COD_EMP_BANCO AS \"codEmpresaBanco\", ");
sb.append("emp.CNPJ AS \"cnpj\", ");
sb.append("emp.NOMBEMPRESA AS \"nomeEmpresa\", ");
sb.append("fp.BOLETO_BANCO_AGENCIA AS \"agencia\", ");
sb.append("fb.NOSSONUMERO AS \"nossoNumero\", ");
sb.append("fb.FECVENCIMENTO AS \"vencimento\", ");
sb.append("fb.VALORDOCUMENTO AS \"valor\", ");
sb.append("fb.FECDOCUMENTO AS \"dataEmissao\", ");
sb.append("fb.MORA AS \"valorAtraso\", ");
sb.append("fb.DESCONTOS AS \"valorDesconto\", ");
sb.append("fb.DEDUCOES AS \"valorAbatimento\", ");
sb.append("'cnpj' as \"tipoInscricaoPagador\", ");
sb.append("pv.NUMDOCPUNTOVENTA AS \"numeroInscricaoPagador\", ");
sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", ");
sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO AS \"logradouroPagador\", ");
sb.append("pl.NOMBPLAZA AS \"bairroPagador\", ");
sb.append("pv.CODPOSTAL AS \"cepPagador\", ");
sb.append("ci.NOMBCIUDAD AS \"cidadePagador\", ");
sb.append("es.NOMBESTADO AS \"estadoPagador\" ");
writeFROMClause(sb, dataDe != null && dataAte != null, reenviar);
Query query = getSession().createSQLQuery(sb.toString());
query.setInteger("empresaId", empresa.getEmpresaId());
if(dataDe != null && dataAte != null){
query.setDate("dataDe", dataDe);
query.setDate("dataAte", dataAte);
}
List<Object[]> list = query.list();
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.CAIXA_400_Envio);
String nomeArquivo = "CEF" + new SimpleDateFormat("ddMM").format(new Date());
int variavel = 0;
int seqRegistro = 0;
int qtdeTitulos = 0;
ArquivoRemessaItem arquivoRemessaItem = null;
CabecalhoRemessaCaixa cabecalhoRemessaCaixa = null;
RodapeRemessaPadrao rodape = null;
for(Object[] tupla : list){
Integer idRemessa = Integer.valueOf(tupla[1].toString());
variavel = idRemessa;
String codEmpresaBanco = tupla[2] == null ? "" : ((BigDecimal) tupla[2]).toString();
String versao = codEmpresaBanco.length() >6 ?"007":"";
codEmpresaBanco = StringUtils.right("0000000" + codEmpresaBanco, 7);
String nomeEmpresa = tupla[4].toString();
BigDecimal valor = new BigDecimal(tupla[8].toString().replaceAll(",", "."));
qtdeTitulos++;
if(cabecalhoRemessaCaixa == null ){
cabecalhoRemessaCaixa = new CabecalhoRemessaCaixa();
cabecalhoRemessaCaixa.setAgenciaBeneficiario(tupla[5].toString());
cabecalhoRemessaCaixa.setCodigoEmpresa(codEmpresaBanco);
cabecalhoRemessaCaixa.setNomeEmpresa(nomeEmpresa);
cabecalhoRemessaCaixa.setDataGravacao(new Date());
cabecalhoRemessaCaixa.setNumeroSequencialRemessa(idRemessa);
cabecalhoRemessaCaixa.setVersaoLayout(versao);
arquivoRemessaItem = new ArquivoRemessaCaixa();
arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaCaixa);
arquivoRemessa.addItem(arquivoRemessaItem);
}
DetalheObrigatorioCaixa titulosCaixa = new DetalheObrigatorioCaixa();
titulosCaixa.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString()));
titulosCaixa.setNumeroSequencialRegistro( seqRegistro++ );
titulosCaixa.setNossoNumero(tupla[6].toString());
titulosCaixa.setNumeroDoDocumento(tupla[0].toString());
titulosCaixa.setVencimento((Date) tupla[7]);
titulosCaixa.setValor( valor );
titulosCaixa.setEmissao((Date) tupla[9]);
try{
titulosCaixa.setValorAtraso(new BigDecimal(tupla[10].toString().replaceAll(",", ".")));
}catch(NullPointerException e){
titulosCaixa.setValorAtraso(BigDecimal.ZERO);
}
try{
titulosCaixa.setDataLimiteDesconto((Date) tupla[7]);
titulosCaixa.setValorDesconto(new BigDecimal(tupla[11].toString().replaceAll(",", ".")));
}catch(NullPointerException e){
titulosCaixa.setDataLimiteDesconto((Date) tupla[7]);
titulosCaixa.setValorDesconto(BigDecimal.ZERO);
}
titulosCaixa.setValorIOF(BigDecimal.ZERO);
try{
titulosCaixa.setValorAbatimentoConcedido(new BigDecimal(tupla[12].toString().replaceAll(",", ".")));
}catch(NullPointerException e){
titulosCaixa.setValorAbatimentoConcedido(BigDecimal.ZERO);
}
titulosCaixa.setNomeSacado(tupla[15].toString());
titulosCaixa.setTipoInscricaoPagador(TipoInscricaoPagador.CNPJ);
try{
titulosCaixa.setNumeroInscricao(tupla[3].toString().replaceAll("[^0-9]+", ""));
}catch(Exception e){
throw new RuntimeException("O CNPJ do ponto de venda "+tupla[15]+" está fora do padrão, favor corrigir");
}
String cep = "";
try{
cep = StringUtils.right("00000000" + tupla[18].toString(), 8);
}catch(Exception e){
cep = "00000000";
}
titulosCaixa.setCepSacado(cep);
try{
titulosCaixa.setNumeroInscricaoSacado(tupla[14].toString());
}catch(Exception e){
throw new RuntimeException("O CNPJ do ponto de venda "+tupla[15]+" está fora do padrão, favor corrigir");
}
try{
titulosCaixa.setEnderecoSacado(tupla[16].toString());
}catch(Exception e){
throw new RuntimeException("O Logradouro do ponto de venda "+tupla[15]+" está fora do padrão, favor corrigir");
}
try{
titulosCaixa.setBairroSacado(tupla[17].toString());
}catch(Exception e){
throw new RuntimeException("O Bairro do ponto de venda "+tupla[15]+" está fora do padrão, favor corrigir");
}
try{
titulosCaixa.setCidade(tupla[19].toString());
}catch(Exception e){
throw new RuntimeException("A cidade do ponto de venda "+tupla[15]+" está fora do padrão, favor corrigir");
}
try{
titulosCaixa.setEstado(tupla[20].toString());
}catch(Exception e){
throw new RuntimeException("O Estado do ponto de venda "+tupla[15]+" está fora do padrão, favor corrigir");
}
titulosCaixa.setSacadorAvalista("");
arquivoRemessaItem.addTitulo(titulosCaixa);
}
if(rodape == null){
rodape = new RodapeRemessaPadrao();
rodape.setNumeroSequencialRegistro(qtdeTitulos);
arquivoRemessaItem.setRodapeRemessa(rodape);
}
nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM";
arquivoRemessa.setNomeArquivo(nomeArquivo);
return arquivoRemessa;
}
private void writeFROMClause(StringBuilder sb, boolean hasDate, Boolean reenviar) {
sb.append(" FROM ");
sb.append(" FECHAMENTO_BOLETO fb ");

View File

@ -78,7 +78,10 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
return remessaCNABBancosDAO.remessaBancoBrasil(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.SICOOB_240_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaSicoob(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.CAIXA_400_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaCaixa(empresa, dataDe, dataAte, reenviar);
}
}catch(RuntimeException re){
throw re;
}catch(Exception e){