Ir para conteúdo
  • Cadastre-se

LEANDRODOCOUTO

Membros
  • Total de ítens

    76
  • Registro em

  • Última visita

Tudo que LEANDRODOCOUTO postou

  1. function TACBrBancoSicredi.GerarRegistroHeader240( NumeroRemessa: Integer): String; var TipoInsc: String; begin case ACBrBanco.ACBrBoleto.Cedente.TipoInscricao of pFisica: TipoInsc := '1'; pJuridica: TipoInsc := '2'; else TipoInsc := '9'; end; with ACBrBanco.ACBrBoleto.Cedente do begin { HEADER DE ARQUIVO } Result := '748' + // 001 a 003 - Código do banco na compensação "748" SCIREDI '0000' + // 004 a 007 - Lote de serviço "0000" '0' + // 008 a 008 - Tipo de registro = "0" HEADER ARQUIVO Space(9) + // 009 a 017 - Uso exclusivo FEBRABAN/CNAB TipoInsc + // 018 a 018 - Tipo de inscrição da empresa = "1" Pessoa Física "2" Pessoa Jurídica PadLeft(OnlyNumber(CNPJCPF), 14, '0') + // 019 a 032 - Número de inscrição da empresa Space(20) + // 033 a 052 - Código do convênio no banco (O SICREDI não valida este campo; cfe Manual Agosto 2010 pág. 35) PadLeft(OnlyNumber(Agencia), 5, '0') + // 053 a 057 - Agência mantenedora da conta Space(1) + // 058 a 058 - Dígito verificador da agência PadLeft(OnlyNumber(Conta), 12, '0') + // 059 a 070 - Código do cedente PadRight(ContaDigito, 1, '0') + // 071 a 071 - DV Conta Space(1) + // 072 a 072 - Dígito verificador da ag PadRight(Nome, 30) + // 073 a 102 - Nome da empresa PadRight('SICREDI', 30) + // 103 a 132 - Nome do banco = "SICREDI" Space(10) + // 133 a 142 - Uso exclusivo FEBRABAN/CNAB '1' + // 143 a 143 - Código Remessa/Retorno = "1" Remessa "2" Retorno FormatDateTime('ddmmyyyy', Now) + // 144 a 151 - Data de geração do arquivo FormatDateTime('hhnnss', Now) + // 152 a 157 - Hora de geração do arquivo IntToStrZero(NumeroRemessa, 6) + // 158 a 163 - Número sequencial do arquivo '081' + // 164 a 166 - Nº da versão do leiaute do arquivo = "081" '01600' + // 167 a 171 - Densidade de gravação do arquivo = "01600" Space(20) + // 172 a 191 - Para uso reservado do banco Space(20) + // 192 a 211 - Para uso reservado da empresa Space(29); // 212 a 240 - Uso exclusivo FEBRABAN/CNAB { HEADER DE LOTE } Result := Result + #13#10 + '748' + // 001 a 003 - Código do banco na compensação "748" SICREDI '0001' + // 004 a 007 - Lote de serviço "0001" '1' + // 008 a 008 - Tipo de registro = "1" HEADER LOTE 'R' + // 009 a 009 - Tipo de operação = "R" Arquivo de Remessa '01' + // 010 a 011 - Tipo de serviço = "01" Cobrança Space(2) + // 012 a 013 - Uso exclusivo FEBRABAN/CNAB '040' + // 014 a 016 - Nº da versão do leiaute do lote = "040" Space(1) + // 017 a 017 - Uso exclusivo FEBRABAN/CNAB TipoInsc + // 018 a 018 - Tipo de inscrição da empresa = "1" Pessoa Física "2" Pessoa Jurídica PadLeft(OnlyNumber(CNPJCPF), 15, '0') + // 019 a 033 - Número de inscrição da empresa Space(20) + // 034 a 053 - Código do convênio no banco (O SICREDI não valida este campo; cfe Manual Agosto 2010 pág. 35) PadLeft(OnlyNumber(Agencia), 5, '0') + // 054 a 058 - Agência mantenedora da conta Space(1) + // 059 a 059 - Dígito verificador da agência PadLeft(OnlyNumber(Conta), 12, '0') + // 060 a 071 - Código do cedente PadRight(ContaDigito,1) + // 072 a 072 - Zeros Space(1) + // 073 a 073 - Dígito verificador da coop/ag/conta PadRight(Nome, 30) + // 074 a 103 - Nome da empresa Space(40) + // 104 a 143 - Mensagem 1 Space(40) + // 144 a 183 - Mensagem 2 IntToStrZero(NumeroRemessa, 8) + // 184 a 191 - Número remessa/retorno FormatDateTime('ddmmyyyy', Now) + // 192 a 199 - Data de gravação rem./ret. PadRight('', 8, '0') + // 200 a 207 - Data do crédito Space(33); // 208 a 240 - Uso exclusivo FEBRABAN/CNAB end; Result := UpperCase(Result); As linhas em negrito são as linhas alteradas.. antes ali o acbr colocava o código do cedente.. sds,
  2. Boa tarde... nenhum dos desenvolvedor está analisando esse caso ? Posso enviar as linhas alteradas Grato.
  3. Boa tarde... Também tenho vários clientes homologados desta forma. O que acontece... O Sicredi mudou a forma de homologação da cobrança.. antes eles enviavam uma tabela do excel somente para conferir a geração da linha digitável e o arquivo era validado pelo site do sicredi, que não fazia a validação do digito do nosso número. Agora eles mandam uma planilha em excel que cheia de macros que valida o arquivo e o digito de controle do nosso numero. Liguei para o suporte e eles me disseram que essa planilha segue rigorosamente o que está no manual, que nos headers do arquivo deve ir o numero da conta ( COMO ESTÁ NO MANUAL ) e que para o calculo do digito nosso numero eles usam o código do cedente ( MAS ESSE NÃO VAI NO ARQUIVOS ). Conferi o manual e de fato está correta a informação que o suporte me passou. O ACBR deve seguir o que está no manual. Nessa nova planilha, se coloco o codigo do cedente ela da erro no header, por espera o numero da conta, se coloco o numero da conta como código do cedente, ele valida o header, mas calcula errado o digito do nosso numero. Minha opinião é que o ACBR deve seguir exatamente o que diz nos manuais dos bancos e que essa é uma alteração que deve ser feita. sds,
  4. Boa tarde.. algum retorno ? Grato..
  5. Segue em anexo.. nas páginas 33 e 36 estão os discriminativos... Manual CNAB240.compressed.pdf
  6. Por gentileza, algum dos moderadores pode confirmar e commitar essas alterações.. São importantes para a homologação do Sicredi..
  7. LEANDRODOCOUTO

    Sicredi...

    Consegui homologar o Sicredi na planilha deles.. Conforme o Manual padrao 240, no Header e no Header do Lote, deve ir o numero da Conta e o ACBR esta mandando o código do Cedente. Fiz as Seguintes Alterações No Método GerarRegistroHeader240 Alterei o código em destaque... ali estava mandando o codigo do Cedente, quando deveria mandar o numero da Conta.. Depois disso, consegui homologar normalmente... with ACBrBanco.ACBrBoleto.Cedente do begin { HEADER DE ARQUIVO } Result := '748' + // 001 a 003 - Código do banco na compensação "748" SCIREDI '0000' + // 004 a 007 - Lote de serviço "0000" '0' + // 008 a 008 - Tipo de registro = "0" HEADER ARQUIVO Space(9) + // 009 a 017 - Uso exclusivo FEBRABAN/CNAB TipoInsc + // 018 a 018 - Tipo de inscrição da empresa = "1" Pessoa Física "2" Pessoa Jurídica PadLeft(OnlyNumber(CNPJCPF), 14, '0') + // 019 a 032 - Número de inscrição da empresa Space(20) + // 033 a 052 - Código do convênio no banco (O SICREDI não valida este campo; cfe Manual Agosto 2010 pág. 35) PadLeft(OnlyNumber(Agencia), 5, '0') + // 053 a 057 - Agência mantenedora da conta Space(1) + // 058 a 058 - Dígito verificador da agência PadLeft(OnlyNumber(Conta), 12, '0') + // 059 a 070 - Código do cedente PadRight(ContaDigito, 1, '0') + // 071 a 071 - DV Conta Space(1) + // 072 a 072 - Dígito verificador da ag PadRight(Nome, 30) + // 073 a 102 - Nome da empresa PadRight('SICREDI', 30) + // 103 a 132 - Nome do banco = "SICREDI" Space(10) + // 133 a 142 - Uso exclusivo FEBRABAN/CNAB '1' + // 143 a 143 - Código Remessa/Retorno = "1" Remessa "2" Retorno FormatDateTime('ddmmyyyy', Now) + // 144 a 151 - Data de geração do arquivo FormatDateTime('hhnnss', Now) + // 152 a 157 - Hora de geração do arquivo IntToStrZero(NumeroRemessa, 6) + // 158 a 163 - Número sequencial do arquivo '081' + // 164 a 166 - Nº da versão do leiaute do arquivo = "081" '01600' + // 167 a 171 - Densidade de gravação do arquivo = "01600" Space(20) + // 172 a 191 - Para uso reservado do banco Space(20) + // 192 a 211 - Para uso reservado da empresa Space(29); // 212 a 240 - Uso exclusivo FEBRABAN/CNAB { HEADER DE LOTE } Result := Result + #13#10 + '748' + // 001 a 003 - Código do banco na compensação "748" SICREDI '0001' + // 004 a 007 - Lote de serviço "0001" '1' + // 008 a 008 - Tipo de registro = "1" HEADER LOTE 'R' + // 009 a 009 - Tipo de operação = "R" Arquivo de Remessa '01' + // 010 a 011 - Tipo de serviço = "01" Cobrança Space(2) + // 012 a 013 - Uso exclusivo FEBRABAN/CNAB '040' + // 014 a 016 - Nº da versão do leiaute do lote = "040" Space(1) + // 017 a 017 - Uso exclusivo FEBRABAN/CNAB TipoInsc + // 018 a 018 - Tipo de inscrição da empresa = "1" Pessoa Física "2" Pessoa Jurídica PadLeft(OnlyNumber(CNPJCPF), 15, '0') + // 019 a 033 - Número de inscrição da empresa Space(20) + // 034 a 053 - Código do convênio no banco (O SICREDI não valida este campo; cfe Manual Agosto 2010 pág. 35) PadLeft(OnlyNumber(Agencia), 5, '0') + // 054 a 058 - Agência mantenedora da conta Space(1) + // 059 a 059 - Dígito verificador da agência PadLeft(OnlyNumber(Conta), 12, '0') + // 060 a 071 - Código do cedente PadRight(ContaDigito,1) + // 072 a 072 - Zeros Space(1) + // 073 a 073 - Dígito verificador da coop/ag/conta PadRight(Nome, 30) + // 074 a 103 - Nome da empresa Space(40) + // 104 a 143 - Mensagem 1 Space(40) + // 144 a 183 - Mensagem 2 IntToStrZero(NumeroRemessa, 8) + // 184 a 191 - Número remessa/retorno FormatDateTime('ddmmyyyy', Now) + // 192 a 199 - Data de gravação rem./ret. PadRight('', 8, '0') + // 200 a 207 - Data do crédito Space(33); // 208 a 240 - Uso exclusivo FEBRABAN/CNAB end;
  8. Fui olhar no manual cnab240 do sicredi.. e de fato e isso mesmo.. Isso está no ACBR... na geração do header 240 PadLeft(OnlyNumber(CodigoCedente), 12, '0') + // 059 a 070 - Código do cedente Segue em anexo print do Manual.. Boa tarde Agnaldo.. O Acbr utiliza a propriedade Cedente.CodigoCedente para calcular o digido do NossoNumero ( isso está correto ). O Sicredi agora tem uma planilha em execel que analisa os arquivos de remessa. Se eu coloco nesse campo o código do Cedente fornecido pela Agência, o arquivo não é validado, porque o acbr vai jogar no header o campo CodigoDoCedente (PadLeft(OnlyNumber(CodigoCedente), 12, '0') ) quando deveria jogar o numero da conta. Se eu coloco o numero da conta nessa propriedade, ele valida o header mas ai não valida o digito do nosso numero porque o acbr vai usar o valor da propriedade CodigoCedente.. Vou mudar aqui o fonte do acbr pra ver se funciona.. se der certo coloco a alteração aqui...
  9. Quando gravo o numero do banco na base de dados, gravo completo, com os digitos... quando o acbr le, ele le somente 8, ignorando os digitos..entendo que deveria ler a informação completa..
  10. LEANDRODOCOUTO

    Sicredi...

    Não estou conseguindo hologar o sicredi com aquela planilha deles no padrao CNAB240.. Se coloco o numero do cedente no local , ele não valida dizendo que espera o codigo da conta se coloco o numero da conta, ele não gera o digito do nosso numero corretamente. Enviei um email e eles retornaram com a seguinte informação.. Na 240 nos campos header’s de arquivo e lote, e segmento P o Sicredi espera o número da conta. E para desenvolvimento do Nosso Número deve ser utilizado o código do cedente. O Acbr trata dessa forma ? sds,
  11. Na leitura do arquivo de retorno do Banrisul CNAB400.. o acbr está lendo 8 caracteres.. NossoNumero := Copy(Linha,63,08); Porém no manual, são 10 digitos ( posicao 10 a 72 )..( pagina 18 ) 063 072 IDENTIFICAÇÃO DO TÍTULO PARA O BANCO - Nosso Número
  12. Tenho uma maquina virtual com windows xp SP3 funcionando normalmente...
  13. Fiz uma alteração na Unit ACBr Boleto no método ChecarDadosObrigatorios fiz mensagens de erro individuais para cada erro, ao invés de aparecer somente "Dados do Cedente faltando" if (Cedente.Nome= '') then raise Exception.Create(ACBrStr('Nome do cedente faltando')); if (cedente.Conta = '') then raise Exception.Create(ACBrStr('Conta do cedente faltando')); if((Cedente.ContaDigito ='') and (Banco.TipoCobranca <> cobBanestes)) then raise Exception.Create(ACBrStr('Digito da conta faltando')); if (Cedente.Agencia = '') or ((Cedente.AgenciaDigito = '') and (Banco.TipoCobranca <> cobBanestes)) then raise Exception.Create(ACBrStr('Agência da conta faltando')); Segue em anexo a Unit alterada.. ACBrBoleto.pas
  14. Na UNIT AcbrBancoBanrisul, na linha. 811, está faltando um TRIM... está trazendo com espaço em branco no final, e aqui pra mim não estava lendo os retornos, sempre dava erro de agencia / conta do arquivo inválido.. ajustei conforme abaixo e funcionou: rConta := Trim( Copy(ARetorno.Strings[0], 31, 9) ); sds,
  15. O que eu fiz aqui pra mim e deu certo, pros provedores Thema e ISSNET, na unit ACBrDFeCapicomDelphiSoap, la linha 106, tem uma exception.. eu tirei ela, deixei somente assim. if (UseCertificate) then InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, Pointer(HCertContext), SizeOf(CERT_CONTEXT)); nos arquivo INI, deixei UseCertificado=1 e no componente lib = libCapicomDelphiSoap. Sempre que atualizo os componente, entro nessa unit e modifico...
  16. Tamem fiz o seguinte, que deu certo, com lib=libCapicomDelphiSoap , na unit AcbrDfeCapicomDelphiSoap, ma linha 107, aonde define o parametro , INTERNET_OPTION_CLIENT_CERT_CONTEXT, deixei assim. if (UseCertificate) then InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, Pointer(HCertContext), SizeOf(CERT_CONTEXT)) ou seja, não mostra a mensagem em caso de erro. Funcionou pra envio da NFS-e e NF-e. Só consigo testar nos provedores ISSnet e Thema, não sei o impacto nos outros provedores. Não consegui entender ainda, porque a mesma chamada funciona pra emissão de NF-e e pra NFS-e não funciona.. estou analisando mais a fundo pra ver se descubro, mas por ora esta funcionando
  17. tenta mudar no teu componente a propriedade configuracoes.geral.SSLLib := libCapicom; Pra mim dá erro 12002 com Capicom, Caso dê esse erro, ( 12002 com libCapicom ), tem uma solução emergencial que pra mim deu certo. Abre a unit ACBrHTTPReqResp do acbr, na pasta Fontes\AcbrCapicom, na procedure TACBrHTTPReqResp.Execute(Resp: TStream);, logo apos o begin, coloque FUseCertificate=false; Importante que essa seja a primeir alinha da procedure... desse jeito, aqui pra mim funciona, ou seja, usar o certificado pra assinar mas não pra transmitir. Só que isso é uma gambiarra, pelo menos pra sair do sufoco. Estou depurando pra ver se descubro algo.. sds, Leandro
  18. Se colocar UseCertificado=0 e algumas dessas opções [Assinar] RPS=0 Lote=1 URI=1 Recepcionar=0 ConsSit=0 ConsLote=0 ConsNFSeRps=0 ConsNFSe=0 Cancelar=1 RpsGerar=0 LoteGerar=0 RecSincrono=0 Substituir=0 Estiver marcada como 1, esse erro vai acontecer, pois o componente vai tentar assinar e está configurado para não usar certificado, então a mensagem de erro é coerente. Se quiser usar UseCerticado=0, coloque tudo como 0. Porém acho que em algum momento, será necessária a assinatura, e portanto o uso do certificado. Aqui pra mim não deu certo sem certificado para os provedores ISSnet e Thema.
  19. Mudei o SSLib para libCapicomDelphiSoap por causa do erro 12002 que tinha antes, e agora dá o erro 12046 para o provedor ISSNET. Fontes atualizados UseCertificado=1 Delphi Seattle sds, Leandro
  20. Bom dia Italo... Sei disso.. passei dois dias debugando até chegar na linha aonde ocorre o problema. Essa mudança fiz de forma emergencial, para alguém que esteja na mesma situação que eu talvez essa alterção vai quebrar um galho como quebrou pra mim. Sei que não pode ser definitiva...agora vou depurar pra ver qual a real situação que causa o erro 12002... sds, Leandro
  21. A unica maneira que deu certo foi colocando na Unit ACBrHTTPReqResp, na procedure TACBrHTTPReqResp.Execute(Resp: TStream) o valor de FUseCertificate para FALSE... ai nao dá mais o erro 12002
  22. Mudei os headers soap no arquivo INI pra deixar como o manual ( soap: ao inves de S: ) mas mesmo assim não resolveu... Então.. na Unit ACBrHTTPReqResp, na procedure TACBrHTTPReqResp.Execute(Resp: TStream) o valor de FUseCertificate vem sempre como TRUE.. mesmo no arquivo INI estar como 0. Somente coloquei FUseCertificate := false; na primeira linha dessa unit e o erro 12002 parou... Tem uma maneira de nessa procedure, pegar o objeto NFSE pra verificar o status da Propriedadae UseCertificado ? Isso resolveria o problema, porque era só associar o valor da propriedade a variavel FFUseCertificate .
×
×
  • 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.

The popup will be closed in 10 segundos...