Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia,  

O componente parou de gerar a instrução de multa na remessa do banco Safra...

Vendo o código vi que foi adicionado um (if).... onde a Instrucao1 deve ser '16' 

 

IfThen( ((Ocorrencia = '01') and (Copy(Instrucao1, 1, 2) = '16')),
                (FormatDateTime('ddmmyy', DataMulta) +                                         // 206 a 211 a data a partir da qual a multa deve ser cobrada
                IntToStrZero(round(PercentualMulta * 100), 4) +                                // 212 a 215 o percentual referente à multa no formato 99v99
                '000'),                                                                        // 216 a 218 zeros
                IntToStrZero(round(ValorAbatimento * 100), 13)  )   

 

Postado

Encontrei no manual...

6.1.5 - PRIMEIRA INSTRUÇÃO DE COBRANÇA
01 - NÃO RECEBER PRINCIPAL, SEM JUROS DE MORA
02 - DEVOLVER, SE NÃO PAGO, ATÉ 15 DIAS APÓS O VENCIMENTO
03 - DEVOLVER, SE NÃO PAGO, ATÉ 30 DIAS APÓS O VENCIMENTO
07 - NÃO PROTESTAR
08 - NÃO COBRAR JUROS DE MORA
16 - MULTA (*)

 

Para evitar erros não poderia setar a Instrução com '16' quando multa > 0???

  • Administradores
Postado

Boa tarde.

Realmente faz sentido, iremos analisar.

Att.

  • Curtir 1
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 !!

Postado

Olá!

Fiz homologação com o Banco Safra onde foi solicitado Instrucao1 = "01" e Instrucao2 = "16" ....

Para Juros:
- Posição 157 a 158: preencher com o código 01
- Posição 161 a 173: informar valor do juros ao dia

Para Multa:
- Posição 159 a 160: preencher com o código 16
- Posição 206 a 211: informar a data a partir da qual a multa deve ser cobrada (vencimento + 1 dia no formato "ddmmaa")
- Posição 212 a 215 o percentual referente à multa no formato 99v99
- Posição 216 a 218 zeros

Então alterei o código para: 

IfThen( ((Ocorrencia = '01') and ( Copy(Instrucao2, 1, 2) = '16')),
                (FormatDateTime('ddmmyy', DataMulta) +                                         // - Posição 206 a 211 a data a partir da qual a multa deve ser cobrada
                IntToStrZero(round(PercentualMulta * 100), 4) +                                // - Posição 212 a 215 o percentual referente à multa no formato 99v99
                '000'),                                                                        // - Posição 216 a 218 zeros
                IntToStrZero(round(ValorAbatimento * 100), 13)  )

 

Postado

tive um problema com o registro Header do CNAB400, foi solucionado da forma que esta abaixo


procedure TACBrBancoSafra.GerarRegistroHeader400(NumeroRemessa: integer;
  ARemessa: TStringList);
var aAgencia, aConta, wLinha: String;
begin
  aTotal := 0;
  aCount := 0;
  FNumeroRemessa := NumeroRemessa;

  with ACBrBanco.ACBrBoleto.Cedente do
  begin
    aAgencia := PadLeft(ACBrBoleto.Cedente.Agencia, 4, '0') +
                PadLeft(ACBrBoleto.Cedente.AgenciaDigito, 1, '0');

    aConta := PadLeft(ACBrBoleto.Cedente.Conta, 8, '0') +
              PadLeft(ACBrBoleto.Cedente.ContaDigito, 1, '0');

    wLinha := '0'                             + // ID do Registro Header
              '1'                             + // ID do Arquivo de Remessa
              'REMESSA'                       + // Literal de Remessa
              '01'                            + // Código do Tipo de Serviço
              PadRight('COBRANCA', 15)        + // Descrição do tipo de serviço + "brancos"
              aAgencia+aConta                 + // Codigo da Empresa no Banco // PadRight(CodigoCedente, 14, '0')
              Space(6)                        + // "brancos"
              PadRight(Nome, 30)              + // Nome da Empresa
              IntToStr(Numero)                + // Código do Banco - 237
              PadRight('BANCO SAFRA', 15)     + // Nome do Banco - BANCO SAFRA + "brancos"
              FormatDateTime('ddmmyy', Now)   + // Data de geração do arquivo
              Space(291)                      + // "brancos"
              IntToStrZero(NumeroRemessa, 3)  + // Nr. Sequencial de Geração do Arquivo
              IntToStrZero(1, 6);               // Nr. Sequencial do Registro no Arquivo

    ARemessa.Text := ARemessa.Text + UpperCase(wLinha);
  end;

end;


essa informação do código da empresa no banco estava vindo alimentada pelo código do cedente, dai o banco questionou alinhamentos posições e zeros, dai copiei a mesma rotina do registro de transação, onde ele separa ambos e faz o tratamento

  • Administradores
Postado

Bom dia,

Por favor anexe a unit alterada.

Att.

  • Curtir 1
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 !!

  • Moderadores
Postado
Em 21/03/2019 at 21:06, EduardoMM disse:

Olá!

Fiz homologação com o Banco Safra onde foi solicitado Instrucao1 = "01" e Instrucao2 = "16" ....

Para Juros:
- Posição 157 a 158: preencher com o código 01
- Posição 161 a 173: informar valor do juros ao dia

Para Multa:
- Posição 159 a 160: preencher com o código 16
- Posição 206 a 211: informar a data a partir da qual a multa deve ser cobrada (vencimento + 1 dia no formato "ddmmaa")
- Posição 212 a 215 o percentual referente à multa no formato 99v99
- Posição 216 a 218 zeros

Então alterei o código para: 

IfThen( ((Ocorrencia = '01') and ( Copy(Instrucao2, 1, 2) = '16')),
                (FormatDateTime('ddmmyy', DataMulta) +                                         // - Posição 206 a 211 a data a partir da qual a multa deve ser cobrada
                IntToStrZero(round(PercentualMulta * 100), 4) +                                // - Posição 212 a 215 o percentual referente à multa no formato 99v99
                '000'),                                                                        // - Posição 216 a 218 zeros
                IntToStrZero(round(ValorAbatimento * 100), 13)  )

 

Boa tarde

Suas sugestões foram disponibilizadas nos fontes do Projeto ACBr. 

Obrigado pela contribuição!

  • Curtir 3
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Este tópico foi criado há 2060 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.