com.github.braully.boleto.LayoutsSuportados Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bpp-cobranca Show documentation
Show all versions of bpp-cobranca Show documentation
This is a fork and merge from JRimum ( http://www.jrimum.org ),
- Bopepo: https://github.com/jrimum/bopepo
- Texgit: https://github.com/jrimum/texgit
- Valia: https://github.com/jrimum/vallia
- Utilix: https://github.com/jrimum/utilix
- Domkee: https://github.com/jrimum/domkee
For Brazillian Boleto Payment Method. So much thanks for original authors:
Gilmar P. S. L, Misael Barreto and Rômulo Augusto.
The newest version!
/*
* Copyright 2019 Projeto JRimum.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.braully.boleto;
import static com.github.braully.boleto.CNAB.*;
import static com.github.braully.boleto.LayoutFebraban._LAYOUT_FEBRABAN_CNAB240;
import static com.github.braully.boleto.TagLayout.TagCreator.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.jrimum.texgit.Fillers;
/**
*
* @author Braully Rocha da Silva
*/
//TODO: Revisar layout de terceiros que vieram via pull request
public class LayoutsSuportados {
static final TagLayout _LAYOUT_CAIXA_CNAB240_REMESSA = flatfile(
layout(nome("Layout Padrão Caixa Econômica Federal CNAB240 Remessa"),
cnab(CNAB_240),
banco("104"),
tag("url").value("http://www.caixa.gov.br/Downloads/cobranca-caixa/Manual_de_Leiaute_de_Arquivo_Eletronico_CNAB_240.pdf"),
versao("17")
),
cabecalho(
fbancoCodigo().length(3).value("104"),
flote().value(0),
fcodigoRegistro().length(1).value("0"),
fbranco().length(9),
ftipoInscricao().length(1).value("2"),
fcedenteCnpj().length(14).filler(Fillers.ZERO_LEFT),
fzero().length(20),
fagencia().length(6),
fconvenio().length(7).filler(Fillers.ZERO_LEFT),
fzero().length(7),
fcedenteNome().length(30).filler(Fillers.WHITE_SPACE_RIGHT),
fbancoNome().length(30).filler(Fillers.WHITE_SPACE_RIGHT),
fbranco().length(10),
fcodigoArquivo().length(1),
fdataGeracao().length(8),
field("horaGeracao").length(6).format(new SimpleDateFormat("hhmmss")),
fsequencialArquivo().length(6),
field("versaoLayoutArquivo").length(3).value("107"),
field("densidadeArquivo").length(5).filler(Fillers.ZERO_LEFT).value("0"),
fbranco().length(20),
field("situacaoArquivo").length(20).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fbranco().length(4),
fbranco().length(25)
),
cabecalhoLote(
fbancoCodigo().length(3).value("104"),
flote().value(1),
fcodigoRegistro().length(1).value("1"),
foperacao().length(1),
fservico().length(2),
fzero().length(2),
field("versaoLayoutLote").length(3).value("067"),
fbranco().length(1),
ftipoInscricao().length(1).value("2"),
fcedenteCnpj().length(15).filler(Fillers.ZERO_LEFT),
fconvenio().length(7).filler(Fillers.ZERO_LEFT),
fzero().length(13),
fagencia().length(6),
field("codigoBeneficiario").length(6).filler(Fillers.ZERO_LEFT).value(0),
fzero().length(7),
fzero().length(1),
fcedenteNome().length(30),
field("mensagem1").length(40).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
field("mensagem2").length(40).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fsequencialArquivo().length(8).filler(Fillers.ZERO_LEFT).value("0"),
fdataGeracao().length(8),
fzero().length(8),
fbranco().length(33)
),
detalheSegmentoP(
fbancoCodigo().length(3).value("104"),
flote().value(1),
fcodigoRegistro().length(1).value("3"),
fsequencialRegistro().length(5),
fsegmento().id(true).value("P"),
fbranco().length(1),
fmovimentoCodigo().length(2).value("01"),
fagencia().length(6).filler(Fillers.ZERO_LEFT),
fconvenio().length(7).filler(Fillers.ZERO_LEFT),
fzero().length(7),
fzero().length(2),
fzero().length(1),
field("modalidadeCarteira").length(2),
fnossoNumero().length(15),
fcodigoCarteira().length(1).value("1"),
field("formaCadastroTitulo").length(1).value("1"),
ftipoDocumento().length(1).value("2"),
field("formaEmissaoTitulo").length(1).value("2"),
field("formaEntregaTitulo").length(1).value("0"),
fnumeroDocumento().length(11),
fbranco().length(4),
fdataVencimento().length(8),
fvalor().length(15),
field("agenciaCobradora").length(6).filler(Fillers.ZERO_LEFT).value("0"),
fespecieTitulo().length(2).value("02"),
faceite().length(1).value("N"),
fdataGeracao().length(8),
fcodigoAcrescimo().length(1).value("3"),
fdataAcrescimo().length(8).filler(Fillers.ZERO_LEFT).value("0"),
fvalorAcrescimo().length(15).filler(Fillers.ZERO_LEFT).value("0"),
fcodigoDesconto().length(1).value("0"),
fdataDesconto().length(8).filler(Fillers.ZERO_LEFT).value("0"),
fvalorDesconto().length(15).filler(Fillers.ZERO_LEFT).value("0"),
fvalorIOF().length(15).filler(Fillers.ZERO_LEFT).value("0"),
fvalorAbatimento().length(15).filler(Fillers.ZERO_LEFT).value("0"),
fnumeroDocumento().nome("numeroDocumentoEmpresa").length(25).filler(Fillers.ZERO_LEFT).value("0"),
fcodigoProtesto().length(1).value("3"),
field("numeroDiasProtesto").length(2).value("00"),
fcodigoBaixa().length(1).value("1"),
field("numeroDiasBaixa").length(3).value("000"),
fcodigoMoeda().length(2).value("09"),
fzero().length(10),
fbranco().length(1)
),
detalheSegmentoQ(
fbancoCodigo().length(3).value("104"),
flote().value(1),
fcodigoRegistro().length(1).value("3"),
fsequencialRegistro().length(5),
fsegmento().id(true).value("Q"),
fbranco().length(1),
fmovimentoCodigo().length(2).value("01"),
ftipoInscricao().length(1).value("1"),
fsacadoCpf().length(15).filler(Fillers.ZERO_LEFT),
fsacadoNome().length(40).filler(Fillers.WHITE_SPACE_RIGHT),
fendereco().length(40).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fbairro().length(15).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fcep().length(8).value("0"),
fcidade().truncate(true).length(15).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fuf().length(2).value(""),
field("tipoInscricaoAvalista").length(1).value("0"),
field("numeroInscricaoAvalista").length(15).filler(Fillers.ZERO_LEFT).value("0"),
field("nomeAvalista").length(40).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fbancoCodigo().nome("codigoBancoCorrespondente").length(3).filler(Fillers.ZERO_LEFT).value("0"),
field("nossoNumeroBancoCorrespondente").length(20).filler(Fillers.WHITE_SPACE_RIGHT).value(""),
fbranco().length(8)
),
rodapeLote(
fbancoCodigo().length(3).value("104"),
flote().value(1),
fcodigoRegistro().length(1).value("5"),
fbranco().length(9),
fquantidadeRegistros().length(6).filler(Fillers.ZERO_LEFT).value("0"),
field("quantidadeTitulosCobranca").length(6).filler(Fillers.ZERO_LEFT).value("0"),
fvalorTotalRegistros().length(17).filler(Fillers.ZERO_LEFT).value("0"),
field("quantidadeTitulosCobrancaCaucionada").length(6).filler(Fillers.ZERO_LEFT).value("0"),
field("valorTotalTitulosCarteiraCaucionada").length(17).filler(Fillers.ZERO_LEFT).value("0"),
field("quantidadeTitulosCobrancaDescontada").length(6).filler(Fillers.ZERO_LEFT).value("0"),
field("quantidadeTitulosCarteiraDescontada").length(17).filler(Fillers.ZERO_LEFT).value("0"),
fbranco().length(31),
fbranco().length(117)
),
rodape(
fbancoCodigo().length(3).value("104"),
flote().length(4).value("9999"),
fcodigoRegistro().length(1).value("9"),
fbranco().length(9),
field("quantidadeLotesArquivo").length(6).value("000001"),
fquantidadeRegistros().length(6).filler(Fillers.ZERO_LEFT).value("0"),
fbranco().length(6),
fbranco().length(205)
)
);
static final TagLayout _LAYOUT_CAIXA_CNAB240_RETORNO = flatfile(
layout(nome("Layout Padrão Caixa Econômica Federal CNAB240 Retorno"),
cnab(CNAB_240),
banco("104"),
tag("url").value("http://www.caixa.gov.br/Downloads/cobranca-caixa/Manual_de_Leiaute_de_Arquivo_Eletronico_CNAB_240.pdf"),
versao("17")
),
cabecalho(
fbancoCodigo(),
flote(),
fcodigoRegistro().length(1).value("0"),
fbranco().length(9),
ftipoInscricao().length(1),
fcedenteCnpj().length(14),
fzero().length(20),
fagencia().length(6),
fconvenio().length(7),
fzero().length(7),
fcedenteNome().length(30),
fbancoNome().length(30),
fbranco().length(10),
fcodigoArquivo().length(1),
fdataGeracao().length(8),
field("horaGeracao").length(6),
fsequencialArquivo().length(6),
field("versaoLayoutArquivo").length(3),
field("densidadeArquivo").length(5),
fbranco().length(20),
field("situacaoArquivo").length(20),
fbranco().length(4),
fbranco().length(10),
fzero().length(3),
fbranco().length(12)
),
cabecalhoLote(
fbancoCodigo(),
flote(),
fcodigoRegistro().length(1).value("1"),
foperacao().length(1),
fservico().length(2),
fzero().length(2),
field("versaoLayoutLote").length(3),
fbranco().length(1),
ftipoInscricao().length(1),
fcedenteCnpj().length(15),
fconvenio().length(7),
fzero().length(13),
fagencia().length(6),
fzero().length(6),
fzero().length(7),
fzero().length(1),
fcedenteNome().length(30),
field("mensagem1").length(40),
field("mensagem2").length(40),
fsequencialArquivo().length(8),
fdataGeracao().length(8),
field("dataCredito").length(8),
fzero().length(2),
fbranco().length(26),
fzero().length(2),
fbranco().length(3)
),
detalheSegmentoT(
fbancoCodigo(),
flote(),
fcodigoRegistro().value("3"),
fsequencialRegistro(),
fsegmento().id(true).value("T"),
fbranco().length(1),
fmovimentoCodigo(),
fzero().length(6),
fconvenio().length(7),
fzero().length(2),
field("numeroBancoPagadores").length(3),
fzero().length(1),
fbranco().length(2),
field("modalidadeCarteiraSINCO").length(1),
field("modalidadeCarteiraSIGCB").length(2),
fnossoNumero().length(15),
field("digitoVerificadorNossoNumero").length(1),
fcodigoCarteira(),
fnumeroDocumento().length(11),
fbranco().length(4),
fdataVencimento(),
fvalor().length(15),
field("bancoCobrador").length(3),
field("agenciaCobradora").length(5),
field("digitoAgenciaCobradora").length(1),
field("identificacaoTituloEmpresa").length(25),
fcodigoMoeda(),
ftipoInscricao().value(1),
fsacadoCpf().length(15),
fsacadoNome().length(40),
fbranco().length(10),
fvalorTarifaCustas().length(15),
field("motivoOcorrencia").length(10),
fbranco().length(17)
),
detalheSegmentoU(
fbancoCodigo(),
flote(),
fcodigoRegistro().value("3"),
fsequencialRegistro(),
fsegmento().id(true).value("U"),
fbranco().length(1),
fmovimentoCodigo(),
fvalorAcrescimo().length(15),
fvalorDesconto().length(15),
fvalorAbatimento().length(15),
fvalorIOF().length(15),
fvalorPagamento().length(15),
fvalorLiquido().length(15),
fvalorOutrasDespesas(),
fvalorOutrasReceitas(),
fdataOcorrencia(),
fdataCredito(),
fzero().length(4),
field("dataDebitoTarifa").length(8),
field("codigoPagador").length(15),
fzero().length(30),
field("codigoBancoCompensacao").length(3),
field("nossoNumeroBancoCorrespondente").length(20),
fbranco().length(7)
),
rodapeLote(
fbancoCodigo(),
flote(),
fcodigoRegistro().value("5"),
fbranco().length(9),
fquantidadeRegistros().length(6),
field("quantidadeTitulosCobrancaSimples").length(6),
field("valorTotalTitulosCarteiraCobrancaSimples").length(17),
field("quantidadeTitulosCobrancaCaucionadas").length(6),
field("valorTotalTitulosCarteiraCaucionadas").length(17),
field("quantidadeTitulosCobrancaDescontada").length(6),
field("quantidadeTitulosCarteiraDescontada").length(17),
fzero().length(31),
fbranco().length(117)
),
rodape(
fbancoCodigo(),
flote(),
fcodigoRegistro().length(1).value("9"),
fbranco().length(9),
field("quantidadeLotesArquivo").length(6),
fquantidadeRegistros().length(6),
fbranco().length(211)
)
);
static final TagLayout _LAYOUT_BRADESCO_CNAB400_REMESSA = flatfile(
layout(nome("Layout Padrão Bradesco CNAB400 Remessa"),
cnab(CNAB_400),
banco("237"),
tag("url").value("https://banco.bradesco/assets/pessoajuridica/pdf/4008-524-0121-layout-cobranca-versao-portugues.pdf"),
versao("15")
),
cabecalho(
fcodigoRegistro().length(1).value("0"),
fcodigoArquivo().length(1).value("1"),
fliteralRemessa().length(7).value("REMESSA"),
fservico().length(2),
fliteralServico().length(15).value("COBRANCA"),
fconvenio().length(20),
fcedenteNome().length(30),
fbancoCodigo().length(3).value("237"),
fbancoNome().length(15).value("BRADESCO"),
fdataGeracao().length(6).format(new SimpleDateFormat("ddMMyy")),
fbranco().length(8),
field("identificacaoSistema").length(2).value("MX"),
fsequencialArquivo().length(7).filler(Fillers.ZERO_LEFT),
fbranco().length(277),
fsequencialRegistro().length(6)
),
detalhe(
fcodigoRegistro().length(1).value("1"),
field("agenciaDebito").length(5).filler(Fillers.ZERO_LEFT).value(0),
field("digitoAgenciaDebito").length(1).value(0),
field("razaoContaCorrente").length(5).filler(Fillers.ZERO_LEFT).value(0),
field("contaCorrente").length(7).filler(Fillers.ZERO_LEFT).value(0),
field("digitoContaCorrente").length(1).value(0),
fzero().length(1),
fcarteira().length(3).filler(Fillers.ZERO_LEFT),
fagencia().length(5).filler(Fillers.ZERO_LEFT),
fconta().length(8).filler(Fillers.ZERO_LEFT),
field("numeroControleParticipante").length(25).filler(Fillers.ZERO_LEFT).value(0),
fbancoCodigo().length(3).value("237"),
field("campoMulta").length(1).value(0),
field("percentualMulta").length(4).filler(Fillers.ZERO_LEFT).value(0),
fnossoNumero().length(11).filler(Fillers.ZERO_LEFT),
field("digitoNossoNumero").length(1),
field("descontoBonificacaoDia").length(10).filler(Fillers.ZERO_LEFT).value(0),
field("codicaoEmissaoPapeladaCobranca").length(1).value(2),
field("identificacaoBoletoDebito").length(1).value("N"),
fbranco().length(10),
field("rateioCredito").length(1).value(" "),
field("avisoDebitoAutomatico").length(1).value(2),
field("quantidadePagamentos").length(2).filler(Fillers.WHITE_SPACE_RIGHT).value(" "),
fcodigoOcorrencia().length(2).value("01"),
fnumeroDocumento().length(10).filler(Fillers.ZERO_LEFT),
fdataVencimento().length(6).format(new SimpleDateFormat("ddMMyy")),
fvalor().length(13).filler(Fillers.ZERO_LEFT),
fzero().length(3),
fzero().length(5),
fespecieTitulo().length(2).value("01"),
field("identificacao").length(1).value("N"),
fdataGeracao().length(6).format(new SimpleDateFormat("ddMMyy")),
field("instrucao1").length(2).filler(Fillers.ZERO_LEFT).value(0),
field("instrucao2").length(2).filler(Fillers.ZERO_LEFT).value(0),
field("moraDiaria").length(13).filler(Fillers.ZERO_LEFT).value(0),
fdataDesconto().length(6).format(new SimpleDateFormat("ddMMyy")).value(0),
fvalorDesconto().length(13).filler(Fillers.ZERO_LEFT).value(0),
fvalorIOF().length(13).filler(Fillers.ZERO_LEFT).value(0),
fvalorAbatimento().length(13).filler(Fillers.ZERO_LEFT).value(0),
ftipoInscricao().length(2).value("01"),
fsacadoCpf().length(14).filler(Fillers.ZERO_LEFT),
fsacadoNome().length(40).filler(Fillers.WHITE_SPACE_RIGHT),
fendereco().length(40).filler(Fillers.WHITE_SPACE_RIGHT),
field("mensagem1").length(12).filler(Fillers.WHITE_SPACE_RIGHT).value(" "),
field("sacadoCep").length(8),
field("mensagem2").length(60).filler(Fillers.WHITE_SPACE_RIGHT).value(" "),
fsequencialRegistro().length(6).filler(Fillers.ZERO_LEFT)
),
rodape(
fcodigoRegistro().length(1).value("9"),
fbranco().length(393),
fsequencialRegistro().length(6).filler(Fillers.ZERO_LEFT)
)
);
static final TagLayout _LAYOUT_BRADESCO_CNAB400_RETORNO = flatfile(
layout(nome("Layout Padrão Bradesco CNAB400 Retorno"),
cnab(CNAB_400),
banco("237"),
tag("url").value("https://banco.bradesco/assets/pessoajuridica/pdf/4008-524-0121-layout-cobranca-versao-portugues.pdf"),
versao("15")
),
cabecalho(
fcodigoRegistro().value("0"),
fcodigoArquivo(),
fliteralRetorno().length(7),
fservico().length(2),
fliteralServico().length(15),
fconvenio().length(20),
fcedenteNome().length(30),
fbancoCodigo(),
fbancoNome().length(15),
fdataGeracao().length(6),
field("densidadeArquivo").length(8),
field("numeroAvisoBancario").length(5),
fbranco().length(266),
fdataCredito().length(6),
fbranco().length(9),
fsequencialRegistro().length(6)
),
detalhe(
fcodigoRegistro().value("1"),
ftipoInscricaoCedente().length(2),
fcedenteCnpj().length(14),
fzero().length(3),
fzero().length(1),
fcarteira().length(3),
fagencia().length(5),
fconta().length(8),
field("numeroControleParticipante").length(25),
fzero().length(8),
fnossoNumero().length(11),
field("digitoNossoNumero").length(1),
fzero().length(22),
field("rateioCredito").length(1),
field("quantidadePagamentos").length(2),
fcodigoCarteira().length(1),
fmovimentoCodigo().length(2),
fdataOcorrencia().length(6),
fnumeroDocumento().length(10),
field("identificacaoTituloBanco").length(20),
fdataVencimento().length(6),
fvalor().length(13),
field("bancoCobrador").length(3),
field("agenciaCobradora").length(5),
fespecieTitulo().length(2),
fvalorTarifaCustas().length(13),
fvalorOutrasDespesas().length(13),
field("jurosOperacaoAtraso").length(13),
fvalorIOF().length(13),
fvalorAbatimento().length(13),
fvalorDesconto().length(13),
fvalorPagamento().length(13),
fvalorAcrescimo().length(13),
fvalorOutrasReceitas().length(13),
fbranco().length(2),
field("codigoOcorrenciaProtesto").length(1),
fdataCredito().length(6),
field("origemPagamento").length(3),
fbranco().length(10),
field("codigoBanco").length(4),
field("motivoRejeicao").length(10),
fbranco().length(40),
field("numeroCartorio").length(2),
field("numeroProtocolo").length(10),
fbranco().length(14),
fsequencialRegistro().length(6)
),
rodape(
fcodigoRegistro().value("9"),
fcodigoArquivo(),
field("identificacaoTipoRegistro").length(2),
fbancoCodigo(),
fbranco().length(10),
field("quantidadeTitulosCobranca").length(8),
field("valorTotalCobranca").length(14),
field("numeroAvisoBancario").length(8),
fbranco().length(10),
field("quantidadeRegistrosEntradaConfirmada").length(5),
field("valorRegistrosEntradaConfirmada").length(12),
field("valorRegistrosLiquidacao").length(12),
field("quantidadeRegistrosLiquidacao").length(5),
field("valorRegistrosLiquidacao").length(12),
field("quantidadeRegistrosBaixados").length(5),
field("valorRegistrosBaixados").length(12),
field("quantidadeRegistrosAbatimentoCancelado").length(5),
field("valorRegistrosAbatimentoCancelado").length(12),
field("quantidadeRegistrosVencimentoAlterado").length(5),
field("valorRegistrosVencimentoAlterado").length(12),
field("quantidadeRegistrosAbatimentoConcedido").length(5),
field("valorRegistrosAbatimentoConcedido").length(12),
field("quantidadeRegistrosConfirmacaoProtesto").length(5),
field("valorRegistrosConfirmacaoProtesto").length(12),
fbranco().length(174),
field("valorTotalRateios").length(15),
field("quantidadeRateios").length(8),
fbranco().length(9),
fsequencialRegistro().length(6)
)
);
static final TagLayout _LAYOUT_SICREDI_CNAB240 = _LAYOUT_FEBRABAN_CNAB240.clone();
static {
//Layout
TagLayout layout = _LAYOUT_SICREDI_CNAB240.get(layout());
layout.get("nome").value("Layout Padrão SICREDI CNAB240");
layout.get("banco").value("748");
layout.get("url").value("https://www.sicredi.com.br/html/para-sua-empresa/recebimentos/cobranca/");
}
/**
* Particularidades BB CNAB 240 2019
* https://www.bb.com.br/docs/pub/emp/empl/dwn/CNAB240SegPQRSTY.pdf
*/
static final TagLayout _LAYOUT_BB_CNAB240 = _LAYOUT_FEBRABAN_CNAB240.clone();
static {
//Layout
TagLayout layout = _LAYOUT_BB_CNAB240.get(layout());
TagLayout tnome = layout.get("nome");
tnome.withValue("Layout Padrão Banco do Brasil CNAB240");
layout.get("banco").withValue("001");
layout.get("url").withValue("https://www.bb.com.br/docs/pub/emp/empl/dwn/CbrVer04BB.pdf");
//Cabeçalho
TagLayout cabecalho = _LAYOUT_BB_CNAB240.get(cabecalho());
//07.0 BB1 Nùmero do convênio de cobrança, 9 digitos,
//Numérico Informar o número do convênio de cobrança, alinhado à direita com zeros à esquerda.
TagLayout fconvenioCabecalho = cabecalho.get(fconvenio()).length(9);
/* 07.0 BB2 Cobrança Cedente BB 42 45 4 Numérico Informar 0014 para cobrança cedente
07.0 BB3 Número da carteira de cobrança BB 46 47 2 Numérico Informar o número da carteira de cobrança
07.0 BB4 Número da variação da carteira de 48 50 3 Numérico Informar o número da variação da carteira de cobrança cobrança BB
07.0 BB5 Campo reservado BB 51 52 2 Alfanumérico Informar brancos.
*/
cabecalho.insertAfter(fconvenioCabecalho,
field("cobrancaCedente").valLen("0014"),
field("carteira").length(2),
field("variacao").length(3).filler(Fillers.ZERO_LEFT),
fbranco().length(2));
TagLayout cabecalhoLote = _LAYOUT_BB_CNAB240.get(cabecalhoLote());
TagLayout fconvenioCabecalhoLote = cabecalhoLote.get(fconvenio()).length(9);
/*
11.1 BB1 Nùmero do convênio de cobrança BB 34 42 9 Numérico Informar o número do convênio de cobrança, alinhado à direita com zeros à esquerda.
11.1 BB2 Cobrança Cedente BB 43 46 4 Numérico Informar 0014 para cobrança cedente
11.1 BB3 Número da carteira de cobrança BB 47 48 2 Numérico Informar o número da carteira de cobrança
11.1 BB4 Número da variação da carteira de 49 51 3 Numérico Informar o número da variação da carteira de cobrança
*/
cabecalhoLote.insertAfter(fconvenioCabecalhoLote,
field("cobrancaCedente").valLen("0014"),
field("carteira").length(2),
field("variacao").length(3).filler(Fillers.ZERO_LEFT),
/*informar brancos; ou para tratamento de arquivo teste:
cliente, antes de realizar os procedimentos abaixo,entre em contato
com sua agência, pois a situação de seu intercâmbio eletrônico de
dados deverá ser alterado de ATIVO para TESTE.
11.1 BB5 Campo que identifica remessa de testes 52 53 2 Alfanumérico Importante que nesse caso não deverá ser enviado arquivos para a produção, pois sua condição foi alterada para TESTE.
Obs.: Caso a empresa queira efetuar TESTE pelo sistema, com
geração
de arquivo retorno TESTE pelo Gerenciador Financeiro, basta
substituir os espaços em branco (posições 52 e 53) por "TS".
Caso não queira realizar os testes, informe brancos*/
fbranco().length(2));
TagLayout detalheSegmentoP = _LAYOUT_BB_CNAB240.get(detalheSegmentoP());
//Importante:todos os "nosso número" devem ser alinhados à esquerda com brancos à direita.
TagLayout fnossoNumeroDetalhe = detalheSegmentoP.get(fnossoNumero());
fnossoNumeroDetalhe.filler(Fillers.WHITE_SPACE_RIGHT);
// fnossoNumeroDetalhe.length(11);
// detalheSegmentoP.insertBefore(fnossoNumeroDetalhe, fconvenio().length(9));
//System.out.println(detalheSegmentoP);
//System.out.println(fnossoNumeroDetalhe);
}
static final TagLayout _LAYOUT_SANTANDER_CNAB240 = _LAYOUT_FEBRABAN_CNAB240.clone();
static {
//TODO: Fazer personalizações Santander
}
static final TagLayout _LAYOUT_ITAU_CNAB240 = _LAYOUT_FEBRABAN_CNAB240.clone();
static {
//TODO: Fazer personalizações Itau
}
public static final TagLayout LAYOUT_FEBRABAN_CNAB240
= _LAYOUT_FEBRABAN_CNAB240.cloneReadonly();
public static final TagLayout LAYOUT_SICREDI_CNAB240
= _LAYOUT_SICREDI_CNAB240.cloneReadonly();
public static final TagLayout LAYOUT_BB_CNAB240
= _LAYOUT_BB_CNAB240.cloneReadonly();
public static final TagLayout LAYOUT_SANTANDER_CNAB240
= _LAYOUT_SANTANDER_CNAB240.cloneReadonly();
public static final TagLayout LAYOUT_ITAU_CNAB240
= _LAYOUT_ITAU_CNAB240.cloneReadonly();
static final TagLayout _LAYOUT_FEBRABAN_CNAB240_COBRANCA_REMESSA
= _LAYOUT_FEBRABAN_CNAB240.clone();
static final TagLayout _LAYOUT_SICREDI_CNAB240_COBRANCA_REMESSA
= _LAYOUT_SICREDI_CNAB240.clone();
static final TagLayout _LAYOUT_BB_CNAB240_COBRANCA_REMESSA
= _LAYOUT_BB_CNAB240.clone();
static final TagLayout _LAYOUT_SANTANDER_CNAB240_COBRANCA_REMESSA
= _LAYOUT_SANTANDER_CNAB240.clone();
static final TagLayout _LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA
= _LAYOUT_ITAU_CNAB240.clone();
static final TagLayout _LAYOUT_CAIXA_CNAB240_COBRANCA_REMESSA
= _LAYOUT_CAIXA_CNAB240_REMESSA.clone();
static final TagLayout _LAYOUT_BRADESCO_CNAB400_COBRANCA_REMESSA
= _LAYOUT_BRADESCO_CNAB400_REMESSA.clone();
static {
_LAYOUT_FEBRABAN_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_SICREDI_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_BB_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_CAIXA_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_SANTANDER_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
_LAYOUT_BRADESCO_CNAB400_COBRANCA_REMESSA.get(cabecalho())
.get(fcodigoArquivo()).value('1');
}
public static final TagLayout LAYOUT_FEBRABAN_CNAB240_COBRANCA_REMESSA
= _LAYOUT_FEBRABAN_CNAB240_COBRANCA_REMESSA.cloneReadonly();
public static final TagLayout LAYOUT_SICREDI_CNAB240_COBRANCA_REMESSA
= _LAYOUT_SICREDI_CNAB240_COBRANCA_REMESSA.cloneReadonly();
public static final TagLayout LAYOUT_BB_CNAB240_COBRANCA_REMESSA
= _LAYOUT_BB_CNAB240_COBRANCA_REMESSA.cloneReadonly();
public static final TagLayout LAYOUT_SANTANDER_CNAB240_COBRANCA_REMESSA
= _LAYOUT_SANTANDER_CNAB240_COBRANCA_REMESSA.cloneReadonly();
public static final TagLayout LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA
= _LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA.cloneReadonly();
public static final TagLayout LAYOUT_CAIXA_CNAB240_COBRANCA_REMESSA
= _LAYOUT_CAIXA_CNAB240_COBRANCA_REMESSA.cloneReadonly();
public static final TagLayout LAYOUT_BRADESCO_CNAB400_COBRANCA_REMESSA
= _LAYOUT_BRADESCO_CNAB400_COBRANCA_REMESSA.cloneReadonly();
static final TagLayout _LAYOUT_FEBRABAN_CNAB240_COBRANCA_RETORNO
= _LAYOUT_FEBRABAN_CNAB240.clone();
static final TagLayout _LAYOUT_SICREDI_CNAB240_COBRANCA_RETORNO
= _LAYOUT_SICREDI_CNAB240.clone();
static final TagLayout _LAYOUT_BB_CNAB240_COBRANCA_RETORNO
= _LAYOUT_BB_CNAB240.clone();
static final TagLayout _LAYOUT_SANTANDER_CNAB240_COBRANCA_RETORNO
= _LAYOUT_SANTANDER_CNAB240.clone();
static final TagLayout _LAYOUT_ITAU_CNAB240_COBRANCA_RETORNO
= _LAYOUT_ITAU_CNAB240.clone();
static final TagLayout _LAYOUT_CAIXA_CNAB240_COBRANCA_RETORNO
= _LAYOUT_CAIXA_CNAB240_RETORNO.clone();
static final TagLayout _LAYOUT_BRADESCO_CNAB400_COBRANCA_RETORNO
= _LAYOUT_BRADESCO_CNAB400_RETORNO.clone();
static {
_LAYOUT_FEBRABAN_CNAB240_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
_LAYOUT_SICREDI_CNAB240_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
_LAYOUT_BB_CNAB240_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
_LAYOUT_CAIXA_CNAB240_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
_LAYOUT_SANTANDER_CNAB240_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
_LAYOUT_ITAU_CNAB240_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
_LAYOUT_BRADESCO_CNAB400_COBRANCA_RETORNO.get(cabecalho())
.get(fcodigoArquivo()).value('2');
}
public static final TagLayout LAYOUT_FEBRABAN_CNAB240_COBRANCA_RETORNO
= _LAYOUT_FEBRABAN_CNAB240_COBRANCA_RETORNO.cloneReadonly();
public static final TagLayout LAYOUT_SICREDI_CNAB240_COBRANCA_RETORNO
= _LAYOUT_SICREDI_CNAB240_COBRANCA_RETORNO.cloneReadonly();
public static final TagLayout LAYOUT_BB_CNAB240_COBRANCA_RETORNO
= _LAYOUT_BB_CNAB240_COBRANCA_RETORNO.cloneReadonly();
public static final TagLayout LAYOUT_SANTANDER_CNAB240_COBRANCA_RETORNO
= _LAYOUT_SANTANDER_CNAB240_COBRANCA_RETORNO.cloneReadonly();
public static final TagLayout LAYOUT_ITAU_CNAB240_COBRANCA_RETORNO
= _LAYOUT_ITAU_CNAB240_COBRANCA_RETORNO.cloneReadonly();
public static final TagLayout LAYOUT_CAIXA_CNAB240_COBRANCA_RETORNO
= _LAYOUT_CAIXA_CNAB240_COBRANCA_RETORNO.cloneReadonly();
static {
_LAYOUT_FEBRABAN_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_SICREDI_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_BB_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_CAIXA_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_SANTANDER_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
_LAYOUT_BRADESCO_CNAB400_COBRANCA_REMESSA.get(cabecalho()).get(fcodigoArquivo()).value('1');
}
static {
_LAYOUT_FEBRABAN_CNAB240_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
_LAYOUT_SICREDI_CNAB240_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
_LAYOUT_BB_CNAB240_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
_LAYOUT_CAIXA_CNAB240_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
_LAYOUT_SANTANDER_CNAB240_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
_LAYOUT_ITAU_CNAB240_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
_LAYOUT_BRADESCO_CNAB400_COBRANCA_RETORNO.get(cabecalho()).get(fcodigoArquivo()).value('2');
}
public static final TagLayout LAYOUT_BRADESCO_CNAB400_COBRANCA_RETORNO = _LAYOUT_BRADESCO_CNAB400_COBRANCA_RETORNO
.cloneReadonly();
static final List layoutsSuportados;
static {
List layoutsSuportadosTmp = new ArrayList<>();
/* */
//TODO: Adicionar teste e layouts homologados
layoutsSuportadosTmp.add(LAYOUT_FEBRABAN_CNAB240);
layoutsSuportadosTmp.add(LAYOUT_FEBRABAN_CNAB240_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_FEBRABAN_CNAB240_COBRANCA_RETORNO);
layoutsSuportadosTmp.add(LAYOUT_SICREDI_CNAB240);
layoutsSuportadosTmp.add(LAYOUT_SICREDI_CNAB240_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_SICREDI_CNAB240_COBRANCA_RETORNO);
layoutsSuportadosTmp.add(LAYOUT_BB_CNAB240);
layoutsSuportadosTmp.add(LAYOUT_BB_CNAB240_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_BB_CNAB240_COBRANCA_RETORNO);
layoutsSuportadosTmp.add(LAYOUT_SANTANDER_CNAB240);
layoutsSuportadosTmp.add(LAYOUT_SANTANDER_CNAB240_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_SANTANDER_CNAB240_COBRANCA_RETORNO);
layoutsSuportadosTmp.add(LAYOUT_ITAU_CNAB240);
layoutsSuportadosTmp.add(LAYOUT_ITAU_CNAB240_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_ITAU_CNAB240_COBRANCA_RETORNO);
layoutsSuportadosTmp.add(LAYOUT_CAIXA_CNAB240_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_CAIXA_CNAB240_COBRANCA_RETORNO);
layoutsSuportadosTmp.add(LAYOUT_BRADESCO_CNAB400_COBRANCA_REMESSA);
layoutsSuportadosTmp.add(LAYOUT_BRADESCO_CNAB400_COBRANCA_RETORNO);
/* */
layoutsSuportados = Collections.unmodifiableList(layoutsSuportadosTmp);
}
public static TagLayout getLayoutArquivoBancarioRemessaCobranca(String codBanco, String numConvenio,
String agencia, String conta, String carteira, Boolean registrado) {
return getLayoutArquivoBancario(CNABServico.COBRANCA_REMESSA, CNAB_240,
codBanco, numConvenio, agencia, conta, carteira, registrado);
}
public static TagLayout getLayoutArquivoBancario(String codBanco) {
return getLayoutArquivoBancario(null, CNAB_240, codBanco,
null, null, null, null, null);
}
public static TagLayout getLayoutArquivoBancarioRemessaCobranca(String codBanco) {
return getLayoutArquivoBancario(CNABServico.COBRANCA_REMESSA, CNAB_240, codBanco,
null, null, null, null, null);
}
//TODO: Implementar um metodo de busca por layouts, a partir de atributos relevantes
public static TagLayout getLayoutArquivoBancario(CNABServico servico, CNAB cnab, String codBanco,
String convenio, String agencia, String conta, String carteira, Boolean registrado) {
TagLayout ret = null;
for (TagLayout layout : layoutsSuportados) {
TagLayout descritor = layout.get("layout");
if (descritor != null
&& eq(descritor.getValue("banco"), codBanco)
&& eq(descritor.getValue("cnab"), cnab)
&& (servico == null || eq(descritor.getValue("servico"), servico))
&& (convenio == null || eq(descritor.getValue("convenio"), convenio))
&& (carteira == null || eq(descritor.getValue("carteira"), carteira))) {
ret = layout;
break;
}
}
return ret;
}
public static boolean eq(Object value1, Object value2) {
return value1 == value2
|| value1 != null && value1.equals(value2)
|| value2 != null && value2.equals(value1);
}
}