Ir para conteúdo
  • Cadastre-se

dev botao

Sacador/Avalista Remessa Bradesco e Caixa


leotelles
  • Este tópico foi criado há 1711 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia.

Estou implementando os boletos do Bradesco (CNAB400) e da Caixa Econômica Federal (SIGCB240) usando o ACBrBoleto. Tenho dúvidas em relação ao campo Sacador/Avalista do arquivo de remessa de ambos os bancos.

No manual do Bradesco, vi que as posições correspondentes à esta informação vão de 335 a 394 (60 posições). O nome do campo no manual está "Sacador/Avalista ou 2ª Mensagem". Quando imprimo o boleto, o nome do Sacador/Avalista aparece normalmente na impressão, mas na remessa, nas posições destinadas à essa informação, aparece apenas uma mensagem definida pelo usuário. No fonte (ACBrBancoBradesco), está assim:

Linha 319 > padl( MensagemCedente, 60 );

Ou seja, as posições de 335 a 394 estão recebendo sempre o conteúdo do campo Titulo.Mensagem.

Já que o campo no manual é "Sacador/Avalista ou 2ª Mensagem", gostaria de saber se é possível definir se nessas posições da remessa deverá ser exibido o nome do Sacador/Avalista ou a mensagem. Nada vi no fonte algo que me permita escolher qual informação exibir, se já existir algo do tipo, peço orientação sobre como proceder, por favor.

Em relação à Caixa Econômica Federal, as posições correspondentes ao Sacador/Avalista vão de 170 a 209 (40 posições) do Segmento Q. No fonte (ACBrBancoCaixa), está assim:

Linha 518 > padL('', 40, ' ') + // 170 a 209 - Nome do sacador/avalista

Ou seja, as posições de 170 a 209 não estão recebendo informação alguma. Isso está certo? Há algum motivo para não passar o valor do campo Titulo.Sacado.Avalista para essas posições? Na impressão do boleto da caixa, o nome do Sacador\Avalista aparece normalmente, mas na remessa essa informação não aparece, ficando um espaço em branco.

Desde já agradeço.

Editado por leotelles
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Realmente em ambos os casos são necessárias alterações no componente, se desejar você pode efetua-las e anexar aqui os fontes alterados para análise e possível comit.

*Lembrando que as alterações devem ser feitas no trunk2.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Gerar Remessa / Bradesco.

Boa tarde LeoTelles, também estou precisando disso, notei que nesses espaço que o banco disse para usar tem mensagem em um arquivo que gerei e já foi homologado, minha dúvida é justamente essa, como ficaria essa mensagem que consta na remessa? Segue abaixo a resposta deles.

 

Para enviar dados de sacador/avalista, deve se gravar na linha de registro Tipo 1 as seguintes informações:

 

- posição 335 a 350: gravar o CNPJ do sacador completando com zeros à esquerda se necessário;

- posição 351 a 352: gravar brancos;

- posição 353 a 394: razão social do sacador.

 

Ressaltamos que o sacador/avalista deve ser pessoa jurídica.

Editado por decosiqueira
Link para o comentário
Compartilhar em outros sites

Boa tarde.

Acabei de fazer duas alterações bem simples. Segue abaixo a descrição do que foi alterado e em anexo as units para análise dos moderadores.

Na unit ACBrBancoCaixa do trunk2, alterei a linha 528 da seguinte maneira:

ANTES: PadRight('', 40, ' ') + // 170 a 209 - Nome do sacador/avalista
DEPOIS: PadRight(Sacado.Avalista, 40, ' ') + // 170 a 209 - Nome do sacador/avalista

Antes, as posições referentes ao nome do sacador/avalista não estavam recebendo valor algum. Agora estão recebendo o valor do campo Sacado.Avalista.

Na unit ACBrBancoBradesco do trunk2, alterei a linha 320 da seguinte maneira:

ANTES: PadRight( MensagemCedente, 60 );
DEPOIS: PadRight(IfThen((Sacado.Avalista <> ''), Sacado.Avalista, MensagemCedente), 60);

Antes, as posições referentes ao campo que, segundo o manual, chama-se "Sacador/Avalista ou 2ª Mensagem", estava recebendo o valor do campo MensagemCedente. Agora, fiz a seguinte verificação: se o campo Sacado.Avalista está preenchido, usa ele, senão usa o campo MensagemCedente.

Peço, por gentileza, que os moderadores analisem se esta é a melhor solução para o problema e subam para o SVN caso esteja tudo OK.

ACBrBancoBradesco.pas

ACBrBancoCaixa.pas

Link para o comentário
Compartilhar em outros sites

Leotelles uma dúvida, no caso do uso de sacador/avalista do banco do bradesco a remessa seria do tipo 2, logo cada boleto teria 2 linhas, nesse seu exemplo está assim???

 

veja como ficaria cada linha de boleto ->

1000000000000000000000090028500617997                         0000000000000000001100000000001            2  01129/2015  30111500000150000000000000001N061015060300000000000000000000000000000000000000000000000000000000000233059528000195COPELMI MINERACAO LTDA                  LARGO VISCONDE DO CAIRU 12 CENTRO PORTO             90030110033556187000150  TESTETESTETESTETETETETETETETETETETETETETETE000002
2SUJEITO A PROTESTO APOS O VENCIMENTO                                                                                                                                                                                                                                                                                                                                         0090028500617997000000000011000003
1000000000000000000000090028500617997                         0000000000000000002P00000000001            2  0112403     26101500000000608000000000001N061015060300000000000000000000000000000000000000000000000000000000000203300998000138IMOBIIARIA SAO LUIZ LTDA                RUA JOSE DO PATROCINIO 253 CIDADE BAIXA             90050000033556187000150  TESTETESTETESTETETETETETETETETETETETETETETE000004
2SUJEITO A PROTESTO APOS O VENCIMENTO                                                                                                                                                                                                                                                                                                                                         009002850061799700000000002P000005
9                                                                                                                                                                                                                                                                                                                                                                                                         000006


Nesse exemplo ocutei o cabeçalho.

 

 

Esse arquivo em anexo está correto com o Sacador avalista, enviado pelo suporte do Bradesco.

TESTE2.txt

Link para o comentário
Compartilhar em outros sites

Leotelles, no caso quando inserir o sacador avalista, o campo de mensagem que foi ocupado ficaria em uma segunda linha,  no exemplo em anexo, a mensagem que vai é de protesto que é obrigatório para título com registro. Meu arquivo estava correto até surgir essa necessidade do sacador/avalista. Segundo o suporte do Bradesco isso seria arquivo do tipo 2. Esse arquivo de teste2.txt foi montado pelo suporte do Bradesco em cima do meu que estava correto mostrando como ficaria com o sacador avalista.

Editado por decosiqueira
Arrumar texto
Link para o comentário
Compartilhar em outros sites

Entendi...

quando inserir o sacador avalista, o campo de mensagem que foi ocupado ficaria em uma segunda linha,  no exemplo em anexo, a mensagem que vai é de protesto que é obrigatório para título com registro.

Em relação à essa questão da mensagem, o manual do banco diz o seguinte:

Sacador Avalista
335 a 394 - 2ª Mensagem/Sacador Avalista - (pode ser utilizado para a finalidade de Sacador/Avalista ou mensagem)
Este campo poderá ser utilizado para informar:
Somente Sacador/Avalista, ou Somente Mensagem.

Em relação à correção que eu fiz na unit do Bradesco, acho que cometi um equívoco. Analisando a tabela com as posições do arquivo de remessa no manual, não notei que havia uma referência de uma observação a ser considerada, sobre a decomposição do campo Sacador/Avalista. Na alteração que eu fiz, todas as posições receberão o nome do Sacador/Avalista, mas na verdade o campo deve ser decomposto conforme abaixo:

Decomposição do Campo

15 - Numérico
CNPJ/CPF do Sacador Avalista (o critério para preenchimento, deve ser o mesmo tanto para o CNPJ como para o CPF, ou seja, iniciando da direita para a esquerda:
  2 posições para o controle
  4 posições para filial
  9 posições para o CNPJ/CPF
Obs.: No caso de CPF, o campo filial deverá ser preenchido com Zeros.

02 - Brancos

43 - Sacador / Avalista

Estou disposto a fazer as devidas alterações no fonte, mas peço uma orientação dos moderados ou outros membros quanto a primeira parte do campo (15 - Numérico). Seria necessário criar uma nova propriedade no componente que armazenará o CNPJ/CPF do Sacador/Avalista ou já existe algo do tipo? Se for necessário criar, como proceder?
Obs.: essa informação do CNPJ/CPF do Sacador/Avalista seria necessária também para as posições 155 a 169 do Segmento Q do arquivo de remessa da Caixa.

Peço desculpas pelo equívoco.

Editado por leotelles
Link para o comentário
Compartilhar em outros sites

Leotelles ja existem esses campos, devem ter sido implementados para outros bancos,  

           sacado.SacadoAvalista.NomeAvalista  := CdsContasCDT_NOME.AsString;
            sacado.SacadoAvalista.CNPJCPF  := CdsContasCDT_CNPJ.AsString;
            if length(CdsContasCDT_CNPJ.AsString) = 14 then begin
               Sacado.SacadoAvalista.Pessoa     := pJuridica;
            end
            else begin
               Sacado.SacadoAvalista.Pessoa     := pFisica;
            end;

quanto ao registro o pessoal do banco me orientou que esse é tipo 2, também estou precisando disso, posso te ajudar para fazermos a rotina. Agora chegaste a ver o arquivo de teste que mandei, aquele está de acordo com o banco, aliás foi o próprio banco que me mandou.

 

Quanto ao cnpj  preencher com um zero a esquerda, já que vem com 14 digitos.

Para enviar dados de sacador/avalista, deve se gravar na linha de registro Tipo 1 as seguintes informações:

 - posição 335 a 350: gravar o CNPJ do sacador completando com zeros à esquerda se necessário;

- posição 351 a 352: gravar brancos;

- posição 353 a 394: razão social do sacador.

Ressaltamos que o sacador/avalista deve ser pessoa jurídica.

 Atenciosamente

Editado por decosiqueira
Arrumar texto
Link para o comentário
Compartilhar em outros sites

Deco Siqueira, eu só conhecia a propriedade Sacado.Avalista, não tinha conhecimento da Sacado.SacadoAvalista e todos os outros campos que podemos acessar a partir disso. Tendo essa informação, creio que será simples implementar a correção para o problema.

Quanto ao arquivo de exemplo que você me mandou, está diferente do arquivo gerado pelo meu teste aqui, pois no meu faltou justamente a informação do CNPJ do Sacador/Avalista. Agora que sei que existe a propriedade Sacado.SacadoAvalista.CNPJCPF, vou tentar efetuar as modificações necessárias e, se conseguir, postarei aqui para análise dos moderadores.

Link para o comentário
Compartilhar em outros sites

Blz, o arquivo que te enviei para teste está diferente também por que contém duas linhas por boleto, o gerado sem sacador avalista só tem 1. Nesse exemplo acima tem as 3 propriedades que vais precisar para incluir o sacador avalista na remessa.

Editado por decosiqueira
Link para o comentário
Compartilhar em outros sites

033556187000150 , leotelles, vou te mandar o arquivo que enviei e que ele me retornou o arrumado que tu já téns. Vais poder comparar e ver o que ele mudou no momento que inseriu esses 3 campos. Uma observação, esse que eu enviei está correto e sem nada de erros com todas as informações necessárias para a cobrança o único problema é que não tinha o sacador avalista.

 

 

cb081001.tst

Note que são 15 caracteres sendo que ele preencheu com 0 o primeiro.

Editado por decosiqueira
Link para o comentário
Compartilhar em outros sites

Boa tarde.

Efetuei as modificações para correção do problema apontado neste post. Segue abaixo a descrição do que foi alterado em cada unit e em anexo as units com as alterações para análise dos moderadores.

ACBrBancoCaixa

Antes, a partir da linha 526, o código estava desse jeito:

'0'                   + // 154 a 154 - Tipo de inscrição: Não informado
PadRight('', 15, '0') + // 155 a 169 - Número de inscrição
PadRight('', 40, ' ') + // 170 a 209 - Nome do sacador/avalista

Com as alterações que eu fiz, o código ficou assim:

ATipoInscricaoAvalista                                       + // 154 a 154 - Tipo de inscrição: Não informado
PadRight(OnlyNumber(Sacado.SacadoAvalista.CNPJCPF), 15, '0') + // 155 a 169 - Número de inscrição
PadLeft(Sacado.SacadoAvalista.NomeAvalista, 40, ' ')         + // 170 a 209 - Nome do sacador/avalista

A posição 154, que deve receber o tipo de inscrição do sacador/avalista, era alimentada sempre com o valor 0 (não informado). Criei a variável ATipoInscricaoAvalista que vai receber o tipo de inscrição de acordo com o tipo de pessoa do sacador/avalista. Alimento essa variável no início da programação referente ao SEGMENTO Q, desta maneira:

{SEGMENTO Q}

{Pegando tipo de pessoa do Avalista}
if Sacado.SacadoAvalista.CNPJCPF <> '' then
 begin
    case Sacado.SacadoAvalista.Pessoa of
         pFisica  : ATipoInscricaoAvalista := '1';
         pJuridica: ATipoInscricaoAvalista := '2';
         pOutras  : ATipoInscricaoAvalista := '9';
    end;
 end
else
    ATipoInscricaoAvalista := '0';
    
As posições de 155 a 169, que devem receber o número de inscrição do sacador/avalista, recebiam o valor vazio. Alimentei elas com o campo Sacado.SacadoAvalista.CNPJCPF, completando com zeros à esquerda caso necessário.

As posições de 170 a 209, que devem receber o nome do sacador/avalista, também recebiam o valor vazio. Alimentei elas com o campo Sacado.SacadoAvalista.NomeAvalista. Mudei de PadRight para PadLeft, pois o correto é pegar o conteúdo da esquerda para a direita, completando com espaços vazios à direita caso necessário.

ACBrBancoBradesco

Antes, a partir da linha 320, o código estava desse jeito:

PadRight( MensagemCedente, 60 );

Com as alterações que eu fiz, o código ficou assim:

PadRight(aCNPJCPFAvalista, 15, '0') + '  ' +
PadLeft(Sacado.SacadoAvalista.NomeAvalista, 43, ' ');

As posições de 335 a 394, que devem receber os dados do sacador/avalista ou 2ª Mensagem, estavam recebendo apenas o valor do campo MensagemCedente. De acordo com o manual do Bradesco, no caso do sacador/avalista, essas posições devem ser alimentadas da seguinte maneira:

> 15 posições para o CNPJ/CPF do sacador/avalista sendo (da direita para a esquerda): 2 posições para o controle, 4 posições para filial e 9 posições para o CNPJ/CPF (no caso de CPF, o campo filial deverá ser preenchido com Zeros);
> 2 Posições para espaços em branco;
> 43 posições para o nome do sacador/avalista.

Criei a variável aCNPJCPFAvalista, para armazenar a primeira parte da decomposição do campo (15 caracteres para o CNPJ/CPF), alimentando ela antes da programação referente as posições, da seguinte maneira:

{CNPJ/CPF Avalista}
case Sacado.SacadoAvalista.Pessoa of
     pFisica:   aCNPJCPFAvalista := Copy(OnlyNumber(Sacado.SacadoAvalista.CNPJCPF), 1, 9) + '0000' +
                                                                    Copy(OnlyNumber(Sacado.SacadoAvalista.CNPJCPF), 10, 2);
     pJuridica: aCNPJCPFAvalista := OnlyNumber(Sacado.SacadoAvalista.CNPJCPF);
end;
                                            
Se o tipo de pessoa do sacador/avalista for física, pega o CPF colocando '0000' na parte referente à filial. Se for pessoa jurídica, pega o CNPJ.

Concatenei à essa variável do CNPJ/CPF os dois espaços em branco e o campo Sacado.SacadoAvalista.NomeAvalista, preenchendo assim todas as posições referentes ao sacador/avalista.

OBS: DE ACORDO COM O MANUAL, AS POSIÇÕES DE 335 A 394 PODEM SER UTILIZADAS PARA INFORMAR "SOMENTE SACADOR/AVALISTA, OU SOMENTE MENSAGEM". COM AS MINHAS ALTERAÇÕES, ESSE CAMPO ESTÁ SENDO USADO SOMENTE PARA INFORMAR OS DADOS DO SACADOR/AVALISTA. PEÇO AJUDA AOS COLEGAS PARA DEFINIR QUANDO E COMO ESSE CAMPO VAI SER USADO PARA INFORAMR A MENSAGEM.

ACBrBancoBrasil

Na linha 540 (PadRight(Sacado.SacadoAvalista.NomeAvalista, 40, ' ')), troquei o PadRight por PadLeft, pois o correto é pegar o conteúdo da esquerda para a direita, completando com espaços vazios à direita caso necessário.

ACBrBancoSantander

Na linha 553 (PadRight(Sacado.SacadoAvalista.CNPJCPF, 15,'0')), troquei o PadLeft por PadRight, pois o correto é pegar o conteúdo da direita para a esquerda, completando com zeros à direta caso necessário.
Na linha 554 (PadLeft(Sacado.SacadoAvalista.NomeAvalista,40,' ')), troquei o PadRight por PadLeft, pois o correto é pegar o conteúdo da esquerda para a direita, completando com espaços vazios à direita caso necessário.

ACBrBancoItau

Na linha 380 (PadLeft(Sacado.SacadoAvalista.CNPJCPF, 15, '0')), troquei o PadLeft por PadRight, pois o correto é pegar o conteúdo da direita para a esquerda, completando com zeros à direta caso necessário.
Na linha 381 (PadRight(Sacado.SacadoAvalista.NomeAvalista, 30, ' ')), troquei o PadRight por PadLeft, pois o correto é pegar o conteúdo da esquerda para a direita, completando com espaços vazios à direita caso necessário.
Na linha 676 (PadRight(Sacado.SacadoAvalista.NomeAvalista, 30, ' ')), troquei o PadRight por PadLeft, pois o correto é pegar o conteúdo da esquerda para a direita, completando com espaços vazios à direita caso necessário.

ACBrBancoBradesco.pas

ACBrBancoBrasil.pas

ACBrBancoCaixa.pas

ACBrBancoItau.pas

ACBrBancoSantander.pas

Link para o comentário
Compartilhar em outros sites

Leoteles essa mensagem passa para uma nova linha, estou fazendo essas alterações e testo se tiver sacador avalista o registro para boleto é com 2 linhas sendo a mensagem na segunda linha, caso não haja fica como está, tudo em uma linha. Nos anexos que mandei vc tem os dois exemplos, com sacador e sem sacador.

Editado por decosiqueira
Link para o comentário
Compartilhar em outros sites

Fiz as alterações e já estou gravando em duas linhas só estou aguardando o retorno do banco pois tenho uma dúvida em relação a uns caracteres que vem no final da segunda linha, assim que terminar posto os fontes para ánalise.Leo o seu alinhamento no arquivo modificou as posições do sacado, sugiro que mantenha como estava.

Editado por decosiqueira
Link para o comentário
Compartilhar em outros sites

Arquivo analizado e OK. segue abaixo confirmação do suporte do Bradesco. Alguem adiciona ao ACBRBoleto por favor que isso pode ser útil para quem precisa sacador e avalista.

Sr. (a)

Abaixo análise do arquivo cb151001.txt

 

Arquivo Ok.

 

Sr.  programador não esqueça de atualizar o contador de remessa (posições  111 a 117 do Registro Header) o mesmo deve ser crescente e único a cada novo arquivo gerado.

 

O sistema do banco informa que a última remessa enviada foi de número: 1412900

 

Caso a empresa utilize-se de software do banco atualmente para a geração das remessas, deverá verificar nas configurações do mesmo o sequencial de remessa e atualizar no layout próprio.

Duvidas contate a Central de Atendimento 11 3003-1000.

 

É necessário que o arquivo gerado pela empresa seja enviado ao Banco para validação. Vide instruções abaixo.

 

 

OBS:

1.     No envio do arquivo de teste (conforme instruções abaixo), solicitamos que sejam enviados no máximo 10 títulos por arquivo.

 

 

O envio da remessa é realizado pelo Bradesco Net Empresa: www.bradescopj.com.br > Acesso à conta > Seleção do tipo de acesso: Usuário e Senha / ICP Brasil / Certificado Digital > Aba: Transmissão de Arquivos > Selecione o serviço COBRANÇA *** TESTE *** > Adicionar Arquivos > Selecione o arquivo desenvolvido pela empresa > Confirmar > Enviar Arquivos.

 

Qualquer dúvida na formatação da remessa, preenchimento dos campos ou envio do arquivo, a empresa deverá contatar a Central de Relacionamento ao Cliente PJ pelo telefone 3003-1000 para Capitais e Regiões Metropolitanas, Demais Localidades: 0800 202 1000 de segunda à sexta-feira das 07:00 horas às 22:00 horas, Sábado e Domingo das 07:00 às 18:00 horas.

 

Caso o arquivo seja enviado até às 18h, o retorno do arquivo teste estará disponível após as 20h do mesmo dia com as devidas consistências.

 

Se ainda houver qualquer dúvida após o recebimento do retorno, a empresa poderá consultar o layout do produto que está disponível no site do Banco: www.bradesco.com.br > Para sua empresa > Outros Produtos e Serviços > Layout de Arquivo.

 

Devemos enfatizar que visualmente só podemos identificar erros nos dados cadastrais da empresa e por isso é necessário que o cliente faça o envio do arquivo para que o sistema possa validar todas as informações da remessa.

 

Atenciosamente

 

Colocamo-nos à disposição.

Para mais esclarecimentos, entre em contato conosco de segunda à sexta-feira das 07:00 às 22:00 horas, Sábado e Domingo das 07:00 às 18:00 horas no telefone 3003-1000 para Capitais e Regiões Metropolitanas, Demais Localidades: 0800 202 1000 ou através do e-mail.

 

SAC Alô Bradesco 0800-704.8383

Deficiente Auditivo ou de Fala - 0800 722 0099

Atendimento Dia e Noite, 7 dias por semana

 

Ouvidoria - 0800 727 9933

Atendimento de 2ª a 6ª feira das 8h às 18h, exceto feriados.

 

BANCO BRADESCO S.A.

Central de Relacionamento Cliente Pessoa Jurídica

Grupo de Atendimento 15

 

 

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Assim que seu fonte for analisado pelos moderadores o mesmo será disponibilizado no svn, peço que aguarde.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1711 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.