Ir para conteúdo
  • Cadastre-se

tuim01

Membros
  • Total de ítens

    8
  • Registro em

  • Última visita

tuim01's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputação

  1. Bom dia. Verifiquei sim o convênio que uso é de 5 posições então entra no layout de até 6 posições, sendo necessário preencher com 0 a esquerda. Já o layout para o convênio de 7 posições campo não é usado conforme nota 06 do manual: "Observações: Não há Dígito Verificador- DV - para o Nosso-Número, quando o convênio de cobrança for acima de 1.000.000 (um milhão)." Att. ACBrBancoBrasil.pas
  2. Boa tarde. Acabei de homologar convenio de 6 posições layout 400 para o BB. Foi necessário fazer a seguinte alteração: Campo ADigitoNossoNumero := ‘0’ Ficou assim: if ((strtoint(Carteira)= 11) or (strtoint(Carteira)= 31) or (strtoint(Carteira)= 51)) or (((strtoint(Carteira)= 12) or (strtoint(Carteira)= 15) or (strtoint(Carteira)= 17)) and (ACBrBoleto.Cedente.ResponEmissao <> tbCliEmite)) then begin ANossoNumero := '00000000000000000000'; ADigitoNossoNumero := '0'; //modifiquei end else begin ANossoNumero := FormataNossoNumero(ACBrTitulo); ADigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo); end; Sem essa modificação a linha ficava com 399 posições. Verifiquei no código e vi que não é usado esse campo para o convenio de 7 posições. Obrigado.
  3. Bom dia. Rafael Cruz, no primeiro post coloquei algumas correções a serem feitas, acredito que no seu caso seja a msm coisa. Na ultima atualização foi criado uma variavel TamConvenioMaior6 para a os 2 CNAB 400 e 240. So que para o CNAB 400 não esta sendo atribuido valor para essa variavel. Faça essa verificação. Se precisar tem anexado o meu arquivo .pas Obrigado.
  4. Bom dia. Juliana, analisando melhor quando for as carteiras "12,15,17" que o nossonumero pode ser numerado pelo Emitente/Banco Então fazendo o seguinte teste da certo. Se o Campo NossoNumero for ZERO então ANossoNumero := '00000000000000000000'; //Significa que o banco numera Se o Campo NossoNumero for PREENCHIDO então ANossoNumero := FormataNossoNumero(ACBrTitulo); //significa que o emitente Numera Ex. if (strtoint(Carteira)= 11) or (strtoint(Carteira)= 31) or (strtoint(Carteira)= 51) then begin ANossoNumero := '00000000000000000000'; ADigitoNossoNumero := ''; end else if ((strtoint(Carteira)= 12) or (strtoint(Carteira)= 15) or (strtoint(Carteira)= 17)) and (StrToInt(OnlyNumber(NossoNumero)) = 0) then begin ANossoNumero := '00000000000000000000'; ADigitoNossoNumero := ''; end Else begin ANossoNumero := FormataNossoNumero(ACBrTitulo); ADigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo); end; Obrigado.
  5. Boa tarde. Olhei o layout 400 e nele não é especificado quem emite... Então olhei no Cnab 240 nele sim, na posição 61 tem o campo "Identificação da Emissão do Bloqueto" so que conforme manual do BB "Campo não tratado pelo sistema do Banco do Brasil." No meu email foi enviado os seguintes dados para preenchimento. os quais o nosso sistema usa. - Carteira: 17 - Modalidade da carteira: SIMPLES COM REGISTRO - Variação da carteira: 19 - Tipo Convênio: 1 - Descrição do "Tipo Convênio": BANCO: NUMERA, EMITE E EXPEDE - Portanto esse convênio é de: [ ] 4 posições (numeração de 0000001 até 0009999) [ ] 6 posições (numeração de 0010000 até 0999999) [ X] 7 posições (numeração de 1000000 até 9999999) _______________________________________________________________________ - Carteira: 18 - Modalidade da carteira: SIMPLES SEM REGISTRO - Variação da carteira: 19 - Tipo Convênio: 4 - Descrição do "Tipo Convênio": CLIENTE: NUMERA, EMITE E EXPEDE - Portanto esse convênio é de: [ ] 4 posições (numeração de 0000001 até 0009999) [ ] 6 posições (numeração de 0010000 até 0999999) [ X] 7 posições (numeração de 1000000 até 9999999) Entrei em contato com o pessoal do BB aqui da minha cidade e peguei as seguintes informações: Convenios: tipo 1:Banco - Númera, Emite, Envia tipo 2:Banco - Númera, Emite Cliente - Envia tipo 3:Banco - Númera Cliente - Emite, Envia tipo 4:Cliente- Númera, Emite, Envia tipo 5:Cliente - Númera Banco - Emite, Envia essas informações ficam no convenio que a empresa fecha com o banco. e não é preenchido no arquivo de remessa. Com as informações acima, o banco pode numerar e emitir, ou NÃO numerar e emitir. Talvez precisamos criar uma nova propriedade: "RespNumeracao".. Ou como o campo respemissao nao é preenchido no layout 400, definimos então que: Resp. Emissão é do banco então a numeração também é a cargo do banco. se querer conversar comigo no msn me adicione: [email protected] Obrigado.
  6. Certo Juliana, se for feito dessa maneira? (ACBrBoleto.Cedente.ResponEmissao = tbBancoEmite) //Codigo if (strtoint(Carteira)= 11) or (strtoint(Carteira)= 31) or (strtoint(Carteira)= 51) then begin ANossoNumero := '00000000000000000000'; ADigitoNossoNumero := ''; end else if ((strtoint(Carteira)= 12) or (strtoint(Carteira)= 15) or (strtoint(Carteira)= 17)) and (ACBrBoleto.Cedente.ResponEmissao = tbBancoEmite) then begin ANossoNumero := '00000000000000000000'; ADigitoNossoNumero := ''; end Else begin ANossoNumero := FormataNossoNumero(ACBrTitulo); ADigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo); end; Sobre o Santander, sim já foi homologado o layout e tenho cliente usando normalmente. no arquivo ACBrBoleto.pas na PROCEDURE LerRetorno, esquece.. já resolvi o que precisava. Obrigado.
  7. tuim01

    Correções BB e Santander

    Mudanças BOLETO Banco do Brasil. Na Function GerarRegistroTransacao400 Carteira 17 - Descrição = BANCO: NUMERA, EMITE E EXPEDE if (strtoint(Carteira)= 11) or (strtoint(Carteira)= 31) or (strtoint(Carteira)= 51) or (strtoint(Carteira)= 17) then //acrescentar Carteira 17 Foi criado a var TamConvenioMaior6 do tipo Boolean, so que não esta atribuindo valor... entao acrescentar: TamConvenioMaior6:= Length(trim(ACBrBoleto.Cedente.Convenio)) > 6; Mundanças BOLETO Banco Santander "Remessa / mensagem variável por título" estava comentado fiz mudanças para implementar. no retorno a DataOcorrencia esta pegando no msm lugar que a DataCredito Olhar arquivo em anexo. no arquivo ACBrBoleto.pas na PROCEDURE LerRetorno onde esta a tribuindo o nome do arquivo mudar dessa forma, no meu caso aqui o nome do arquivo de retorno num é o msm.. if fDirArqRetorno <> '' then NomeArq := fDirArqRetorno + PathDelim + NomeArqRetorno Else NomeArq := NomeArqRetorno; Obrigado. ACBrBancoBrasil.pas ACBrBancoSantander.pas
  8. tuim01

    Validação Layout 240 BB

    Fiz a validação do Layout 240 BB e tive os seguintes problemas que já corrigi e estou enviando as modificações. HEADER DE ARQUIVO e HEADER DE LOTE 033 a 052 PREENCHER O CÓDIGO DE CONVÊNIO, CFE. PADRÃO ABAIXO: 9999999994444CCVVVBB, ONDE 999999999 - CÓDIGO DO CONVÊNIO, NUMÉRICO, ALINHADO À DIREITA, PREENCHIDO COM ZEROS À ESQUERDA; 4444 - CÓDIGO DO PRODUTO - COBRANÇA CEDENTE 0014; CC - CARTEIRA DE COBRANÇA VVV - VARIAÇÃO DA CARTEIRA BB - DEIXAR AS DUAS ÚLTIMAS POSIÇÕES EM BRANCO (EX.: "002117588001411019 ") Problema corrigido assim: "//Antes padR(CodigoCedente, 9, '0') + '0014' + //33 a 45 - Código do convênio no banco [ Alterado conforme instruções da CSO Brasília ] 27-07-09 //Depois padR(Convenio, 9, '0') + '0014' + //33 a 45 - Código do convênio no banco [ Alterado conforme instruções da CSO Brasília ] 27-07-09 " DETALHE - SEGMENTO P 009 a 013 DIGITAR 00001 OBS: O SEQUENCIAL DE REGISTRO DEVE INICIAR COM "00001" NO PRIMEIRO SEGMENTO P, SOMANDO-SE 2 NO CAMPO SEQUENCIAL REGISTRO DOS PRÓXIMOS SEGMENTOS P. Problema corrigido assim: "//Antes IntToStrZero(ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1 ,5) + //9 a 13 - Número seqüencial do registro no lote - Cada título tem 2 registros (P e Q) //Depois IntToStrZero(2 * ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1 ,5) + //9 a 13 - Número seqüencial do registro no lote - Cada título tem 2 registros (P e Q)" 038 a 057 PREENCHER COM ZEROS (CPO. COM 20 COLUNAS) // no meu caso tenho que enviar o nossonumero tudo com 0 pq o Banco vai emitir e enviar entao tive que fazer as seguintes mudanças. (Obs. minha carteira é 11/019) " if (aCarteira = 16) or (aCarteira = 17) or (aCarteira = 18) then begin if (ACBrTitulo.Carteira = '18') and (Length(AConvenio) = 6) then ANossoNumero := padR(ANossoNumero, 17, '0') else if Length(AConvenio) <= 4 then ANossoNumero := padR(AConvenio, 4, '0') + padR(ANossoNumero, 7, '0') else if (Length(AConvenio) > 4) and (Length(AConvenio) <= 6) then ANossoNumero := padR(AConvenio, 6, '0') + padR(ANossoNumero, 5, '0') else if Length(AConvenio) = 7 then ANossoNumero := padR(AConvenio, 7, '0') + padR(ANossoNumero, 10, '0'); end else if (aCarteira = 11) then //ACRESCENTADO ANossoNumero := padR('0', 7, '0')+ padR('0', 13, '0') else ANossoNumero := padR(AConvenio, 7, '0')+ padR(ANossoNumero, 11, '0');" 107 a 108 DIGITAR 02 (P/ DUPLICATA MERCANTIL) //aqui o componente esta enviando 'DM' ou oq é digitado tem que ir o codigo entao fiz a formatação AEspecie //variavel criada na procedure GerarRegistroTransacao240 //Mudei {MUDANDO A ESPECIE DO DOCUMENTO} case AnsiIndexStr(EspecieDoc, [ 'DM', 'NP','NS', 'RC', 'DS', 'LC', 'ND' ]) of 0 : AEspecie := '02'; //Duplicata Mercantil 1 : AEspecie := '12'; //Nota Promissória 2 : AEspecie := '16'; //Nota de Seguro 3 : AEspecie := '17'; //Recibo 4 : AEspecie := '04'; //Duplicata de Serviço 5 : AEspecie := '07'; //Letra de Câmbio, 6 : AEspecie := '19'; //Nota de Débito eND; 222 a 223 dias para protesto estava alinhado a esquerda tem que ficar alinhado a direita se nao qd é uma casa so da problema... // Correto padR(IntToStr(DaysBetween(DataProtesto, Vencimento)), 2, '0'), '00') + //222 a 223 - Prazo para protesto (em dias corridos) ACBrBancoBrasil.pas
×
×
  • 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.