Ir para conteúdo
  • Cadastre-se

luisclaudio_jr

Membros Pro
  • Total de ítens

    664
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por luisclaudio_jr

  1. 15 minutos atrás, Victor H. Gonzales - Panda disse:

    complica um pouco isso... não temos acesso a todos os bancos...

    a linha é montada com base nos dados do titulo, quando há cnab eles informam os calculos do campo livre, se não houver isso na documentação, precisamos saber com eles como é formado os DAC.

    tem banco por exemplo que usa, convenio, agencia, carteira, modulo 11 para calcular o DAC.

    se há DAC do nosso numero ou não.

    o ideal seria a composição da linha digitavel inteira, assim conseguiríamos compor a informação, com a linha fazemos o código de barras.


    Esse foi o retorno, quando questionamos a respeito na epoca..


    Olá, Luis, tudo bem?

     

    Conseguimos a seguinte informação sobre a geração do nosso código de barras:

     

    • Os três primeiros dígitos representam o código da IF (403)

    • O quarto dígito representa o código da moeda (9)

    • O quinto dígito é um dígito variável

    • Os dígitos seis a nove representam o fator de vencimento

    • Os dígitos de dez a dezenove representam o valor (acrescido de um zero na frente)

    • Os dígitos vinte a vinte e quatro são preenchidos com zeros (00000)

    • Os dígitos vinte e cinco a quarenta e dois representam o nosso número

    • Os dígitos quarenta e três e quarenta e quatro representam a identificação do tipo de documento do processamento (01)

     

     

  2. 8 minutos atrás, Victor H. Gonzales - Panda disse:

    envie um boleto no email que é emitido pelo portal do Cora, onde tem a linha digitavel, junto com as credenciais tambem.

    tudo é feito via certificado digital que é gerado no portal deles, só tenho credenciais que uso aqui na conta do meu cliente, infelizmente não consigo passar, mas caso alguem  aqui tenha alguma e puder colaborar..

    posso te enviar requests/retornos que vem.. Inclusive, fizemos uns questionamentos pra eles na epoca a respeito do boleto
    Uma sugestão que eu havia dado era o proprio acbr aceitar códigos de barras vindo de fora, o problema que o Cora não tem cnab, e isso creio que será uma tendencia de bancos digitais, então, caso tivesse uma forma de receber o qrcode e até mesmo algo que recebesse talvez um stream do boleto, ja resolveria todos os problemas.

     

  3. 10 minutos atrás, Victor H. Gonzales - Panda disse:

    era esse o comunicado que eu tinha :

    "A API v1 do banco cora será completamente desativada a partir do dia 05/10/2024. Qualquer requisição feita em endpoints da v1 receberá uma resposta de erro. Já está liberada no portal do cora a documentação da /v2/ para integração. Dessa forma, todas as requisições a partir da data 05/10/2024 deverão ser feitas usando os endpoints pela API v2. "

    Isso e de fato, só mudou a URL pra v2 pra boleto... mas continuou tudo igual.

     

  4. Boa tarde. Na realidade mudou só a URL basicamente, por aqui sigo usando normalmente, unico problema realmente é a geração de boletos pelo acbr, como não sabia recriar, não avancei, mas isso não muda pq no retorno eles me devolvem isso normalmente, então, acaba sendo tranquilo, além do código de barras utilizo ja o boleto que eles devolvem na URL também.
    Segue a unit com a mudança da URL.

     

    OBS: a V2 é mais pra outras funcionalidades do banco, como Pix...pagamentos..


    ACBrBoletoW_Cora_API.pas
     

  5. 14 minutos atrás, Leandro Miler Santana disse:

    Bom dia, pessoal, espero que todos estejam bem.

    Um cliente emitiu um CTE com valor errado, muito maior do que deveria.

    Para fazer um CTE substituto hoje, basta o evento de Prestação de Serviço em Desacordo?

    Porque antigamente além deste evento, era necessário o pagador do frete emitir uma Nota fiscal de Anulação de Valores.

    O que me dizem, somente o Evento em Desacordo já resolve o problema e conseguirmos gerar normalmente o CTE  de Substituição, não necessitando mais da Nota de Anulação por parte do Pagador do Frete?

    Os Veteranos que já passaram por isso, conseguem me tirar esta dúvida?

    Desde já agradeço a atenção e o apoio de todos deste grupo.

    Unidos somos fortes!!!

    Bom dia
    Apenas o evento em desacordo basta, nfe de anulação de valores não é mais utilizada, foi extinta junto a versão 4. Caso o cliente não tenha um sistema pra emissão do evento em desacordo, da pra emitir na propria sefaz https://dfe-portal.svrs.rs.gov.br/CTE/PrestacaoServicoDesacordo
     

     

    Só se atentar ao prazo, que são 45 dias

  6. Boa noite pessoal
    fui testar a rotina, atualizei todo o acbr porém quando descomentei >{.$DEFINE USE_ACBr_XMLDOCUMENT}  ao instalar o componente deu o erro abaixo:

    C:\ACBR\Fontes\ACBrDFe\ACBrNFe\PCNNFe\ACBrNFeXmlWriter.pas(174) Error: E2170 Cannot override a non-virtual method
    C:\ACBR\Fontes\ACBrDFe\ACBrNFe\Base\Servicos\ACBrNFe.Inut.pas(2484) Fatal: F2063 Could not compile used unit 'ACBrNFe.RetInut.pas'
    Compilation failure
    Erro ao compilar o pacote "ACBr_NFe.dpk".

     

    Só ocorre quando descomenta, se deixar comentado instala sem problemas.

     

  7. 3 horas atrás, Italo Giurizzato Junior disse:

    Bom dia @luisclaudio_jr,

    Vou lhe mostrar um fragmento de código de uma aplicação que fiz a uns quase 20 anos.

    Muito mal feita por sinal.

    A diferença é que o XML é lido do disco e não do banco de dados.

    procedure TfrmEmissorDFE.CarregaArquivo;
    var
     ArquivoXML: TStringList;
     Tamanho: Integer;
     PathEvento: String;
    begin
     ArquivoXML := TStringList.Create;
     ArquivoXML.LoadFromFile(edtArquivo.Text);
    
     TipoDFE := 0;
     if pos('<infNFe', ArquivoXML.Text) > 0
      then TipoDFE := 1;
     if pos('<infCte', ArquivoXML.Text) > 0
      then TipoDFE := 2;
     if pos('InfNfse', ArquivoXML.Text) > 0
      then TipoDFE := 3;
     if pos('infMDFe', ArquivoXML.Text) > 0
      then TipoDFE := 4;
     if pos('procEventoNFe', ArquivoXML.Text) > 0
      then TipoDFE := 5;
     if pos('procEventoCTe', ArquivoXML.Text) > 0
      then TipoDFE := 6;
     if pos('procEventoMDFe', ArquivoXML.Text) > 0
      then TipoDFE := 7;
    
     ArquivoXML.Free;
    
     // ****************************************************************************
     // Nota Fiscal Eletrônica
     // ****************************************************************************
     if TipoDFE = 1
      then begin
       // Carrega no Componente o NFe salvo em Arquivo XML
       NFe.NotasFiscais.Clear;
       NFe.NotasFiscais.LoadFromFile(edtArquivo.Text, False);
    
    (...)

    Note que no LoadFromFile estou informando o segundo parâmetro com o valor False, pois se não informar o XML vai ser gerado novamente.

    Devemos tomar cuidado também com o LoadFromString e LoadFromStream, eles também tem esse segundo parâmetro.

    Interessante, assim que der um respiro aqui vamos fazer testes, valeu meu caro.

    • Curtir 1
  8. 46 minutos atrás, EMBarbosa disse:

    Entendi essa parte. Acho legal vocês terem uma inteligência para blindar o sistema e o usuário... mas uma coisa é validar o xml, outra é alterar/modificar.

    Se alterássemos o xml isso poderia ser considerado uma adulteração do documento. Esse é um cuidado que estamos tendo cada vez mais com nossas rotinas e incentivamos a todos a terem também.

    Não tenho certeza do que se trata. Mas se é um XML de um DF-e, ele tem que ser válido. Você não precisa e nem deveria (minha opinião pessoal) modificar um xml para que seu sistema aceite... pode ser muito perigoso.

    Por outro lado, se ele foi aceito pelo webservice e não aceito pelo componente, então realmente precisamos validar. Nesse caso, é mais interessante criar um novo tópico para podermos tratar isso de forma específica e não misturar o assunto com esse tópico aqui.

    Por favor, se for o caso crie um novo tópico e anexe o XML para que possamos validar.

    Sim. E estamos interessadíssimos em entender o que está acontecendo. É como você disse no final, preocupamos com a comunidade e não queremos nenhuma dor de cabeça pra ninguém.

    Mas mantenha a mente aberta... pode ser que o método anterior estava aceitando um XML que ele deveria na verdade recusar. E agora está recusando.

    O que eu pensei, seria apenas alterar essa linha:

    para algo assim:

    DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(arquivo);

    Mas foi só uma ideia para resolver seu problema enquanto validamos a situação. Acho que não conseguimos reproduzir o problema ainda...

    Então, voltando ao que você postou antes...

    Assim que você atualizar e refazer os testes, nos avise por favor. Se tiver alguma outra informação que julgar importante, fique a vontade de compartilhar.

    Muito obrigado até o momento.

     

    Entendo perfeitamente, alguma sugestão pra validarmos se o XML pertence a um evento, cte, nfe.. talvez até mesmo quem sabe uma função do ACBR onde ele devolvesse algo nesse sentido? Nisso, ja Eliminariamos algumas validações nesse sentido antes da chamada.
    Referente a Serpro, eles tem acesso ao servidor do governo onde ficam os XMLS, mas não sei pq cargas, eles não liberam o XML original e meio que remontam e pra resolver temos que indicar umas tags que faltam na mão e concordo sobre o XML, mas em muitos casos que usamos aqui é pra facilitar dados, nada fiscalmente que seja obrigatório a assinatura fiscal correta, ou algo nesse sentido. Posso estar liberando uns xmls que consegui aqui pra vocês, mas fiz um teste e o validador da sefaz ja acusa erro.
    Sobre o metodo, sim, vou modificar aqui pra fazer por hora tanto a leitura pra validar caso dê certo eu subo direto, sem passar pelo xmlstring e após testes relato por aqui

    • Curtir 1
  9. 1 minuto atrás, EMBarbosa disse:

    Nesse caso, Não seria melhor carregar o arquivo diretamente pelo componente?

    Com certeza há alguma diferença ao carregar nessa outra classe e jogar o valor em uma string. E isso possivelmente pode estar fazendo alguma modificação que está invalidando o xml.

    Então, antes faziamos isso, mas tinhas muitos problemas de por exemplo usuario importar xml de nfe ao invés de cte, ou uma NFS, ou até mesmo eventos (usuario é leigo, devemos sempre nos lembrar que não dá pra confiar)  antes de jogar pro componente validamos algumas coisas, se é por exemplo uma NF-e (pra não importar um cte, nfs..), pra ver se ela não é um Resumo, se tem as tags que devem ter e tudo mais,Outra coisa, que não sei se ja pegaram por ai, mas é o XML Serpro, (aquele que compram e gera, ele vem faltando umas coisas nas tags como versao,então nesse ponto a gente também valida pra poder deixar o XML apto pra uso.posso mandar uns pra vcs se quiserem)  e ai é necessario uma intervenção antes pra poder colocar o que falta e poder ler.

    O ponto que to trazendo, é que sempre funcionou com o método antigo, foi mudar a lib que começou a dar os problemas nos testes.

    Em ultimos casos, eu posso revalidar a forma aqui e "chamar" duas vezes o arquivo, validar em uma e se tudo certo chamar novamente, mas pensando agora na comunidade, quando for obrigatório (e a rotina ficou sensacional, muito rapida, eu estava com uma lentidão enorme ctes com 1800 chaves), com certeza vai dar muita dor de cabeça pra todos.

  10. 2 minutos atrás, Diego Foliene disse:

    Boa tarde!

    Um dos questionamentos que foram levantados é se ao testar esta string XML retirada do banco de dados no validador da Sefaz ele apresenta erro.

    Vou atualizar tudo meu acbr e refazer os testes, mas lembro que o problema era ao jogar em um xmlString e depois jogar pro componente, se eu colocasse direto sem passar pelo xmlstring dava certo.
    Outro fator que eu levantei, que funciona 100% na rotina atual, é na nova que ocorre, então, o XML é valido.

    Se voltarmos uns posts atrás, eu coloquei exatamente a minha rotina aqui: ( eu carrego antes pra validar N coisas, que antes haviamos mt problemas de usuarios indicarem xml incorreto etc..)

    E lembro que no meu teste, se eu jogasse direto no loadFromFile sem passar pelo processo anterior, não ocorria o problema.

    var

      aXml: XMLString;

      sl: TStringList;

     ADoc := TXMLDocument.Create(nil);

     try
        ADoc.Active := True;
        ADoc.Version := '1.0';
        ADoc.Encoding := 'utf-8';
        ADoc.Options := [doNodeAutoIndent];

        vTam := TamanhodoArquivo(arquivo); //aruivo em branco
        if (vTam < 100) then
        begin
          abort;

        end;
      
          ADoc.LoadFromFile(arquivo);
       

        aXml := ADoc.XML.Text;
      finally
        sl.Free;
      
      end;

      DM_NFE.ACBrNFe1.NotasFiscais.Clear;
      DM_NFE.ACBrNFe1.NotasFiscais.Add;

        DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

     

  11. 5 minutos atrás, Italo Giurizzato Junior disse:

    Boa tarde @luisclaudio_jr,

    Chamei a Equipe ACBr para juntos tentarmos encontrar uma solução.

    Sem problemas, porque creio que muitos aqui devem carregar por fora antes, pra fazer as validações que eu citei.. Principalmente saber se realmente é uma NFe por exemplo, não uma NFS.. cte.. e por ai vai, então creio que hora que descontinuar, irá ser um problema pra muitos.

     

  12. 5 horas atrás, Victor H. Gonzales - Panda disse:

    Boa noite, recebemos a mensagem que eles vão migrar a versão da API deles e descontinuar a atual

    Recebi aqui também, é a V2 deles acho.. vou verificar também, ando meio sem tempo aqui com outros projetos, mas assim que der, eu vou verificar sobre, pelo que vi por cima muda algumas coisas só.

  13. Vou interceptar algumas requisições e retornos quando gerarmos aqui e envio pra vocÊs tudo, talvez dê pra pegar algo, porque o contato é sempre muito vago pelo suporte deles.

    E sobre o acbrJson, vou ver se consigo um tempo pra verificar também.

     

  14. Em 29/05/2024 at 16:12, Victor H. Gonzales - Panda disse:

    Boa tarde, Luis Claudio. Tudo bem?

    Primeiramente, obrigado pela sua contribuição.

    Analisando a documentação do Banco Cora que você enviou, percebemos que ela é bastante superficial e não traz muitas informações detalhadas. Entendemos que o Banco Cora é um banco exclusivamente digital e que a integração será realizada somente via API, sem suporte ao formato CNAB.

    Na sua última mensagem, você mencionou a composição da linha digitável. No entanto, precisamos de mais detalhes que geralmente devem estar descritos no manual ou na documentação do banco, como, por exemplo, informações sobre o "Nosso Número". Precisamos entender como ele é composto: se possui carteira, se é apenas um número sequencial, se tem dígito verificador (DV) e, em caso afirmativo, qual é o cálculo utilizado para o DV.

    Aparentemente, a composição é "Número do convênio concatenado com a sequência do documento", mas não temos certeza se isso se aplica apenas na requisição ou também na impressão do boleto.

    Será que essas informações existem nesse banco, ou são acessíveis?

    Por fim, gostaríamos de sugerir que a forma da contribuição seja alterada para o formato ACBrJSON. Se você conseguir migrar para esse formato, facilitará bastante o processo de merge para o SVN.

    Obrigado

    Bom dia
    Posso ver com eles se consigo tirar essas duvidas, também posso passar pra vocês minhas requests e retornos (quantas quiserem), pra analise, sem problemas.

    Sobre o ACBRJson, nunca nem tinha ouvido falar,mas se tiver algo que eu possa me basear.. Até essa contribuição eu nunca tinha feito nada de muito grande nos fontes do ACBR, fui me virando baseado em outros bancos.

     

  15. 1 minuto atrás, Italo Giurizzato Junior disse:

    Boa tarde @luisclaudio_jr,

    Não conseguimos ainda simular esse problema.

    Certo Italo, mas é algo que eu possa estar ajudando? O problema como eu simulei aqui foi justamente da forma que citei na ultima vez, o problema acontece quando jogo um arquivo pra um xmlString e ai uso um loadfromstream ou loadfromString... Em algo ele se perde.. Se eu uso um loadfromfile resolve, mas por aqui a gente faz muitas validações antes de liberar pra importação, principalmente porque pode ter xml de eventos(cancelamento, carta de correção..) etc

  16. 18 horas atrás, Italo Giurizzato Junior disse:

    @luisclaudio_jr,

    Manda para nós um XML que contem essa sequencia de caracteres para que possamos analisar.

    Italo, estava aqui analisando.
    Creio que essa sequencia #$D#$A aconteça quando eu jogo o arquivo pra uma TXMLDocument, nós fazemos isso aqui, porque antes de popularmos pro ACBR a gente valida algumas coisas, principalmente pra saber se o XML em questão é uma nfe, se não é um evento, se não veio corrompido (arquivo zerado), se não foi um resumo... Enfim, são feito N situações.

    Quando eu dei direto um LoadfromFIle deu certo, meu problema foi no LoadfromString e ai quando eu debuguei, identifiquei que de fato o xml após entrar no TXMLDocument leva essas "quebras" de linha.

    Usando um stringReplace e removendo tudo (debugando eu vi que sumiram de fato os #$D#$A ), o problema ainda persistiu. E isso ocorre com todos os xmls, que fazemos usando esse cenario (carregando ele pra uma txmldocument) após isso, usando um loadfromString.. Vou enviar mais xmls contendo o topico novamente, mas basicamente todos acontece isso, quando carregamos dessa forma.

     

     

     

    • Curtir 1
  17. 3 minutos atrás, Italo Giurizzato Junior disse:

    Boa tarde @luisclaudio_jr,

    Recapitulando:

    Os dois XMLs que você nos enviou por e-mail, um foi lido sem nenhum problema pela unit ACBrNFeXmlReader, já o segundo foi necessário fazer uma correção na unit que inclusive já se encontra no SVN.

    Em nenhum dos dois XML contem a sequencia: #$A .

    Os XMLs das notas ele esta recebendo por e-mail e salvando em disco?

    Se sim, pode ser esse o problema.

    Ou via email, ou baixam da sefaz,whats... mas sim,pegam local, vou testar com algumas rotinas que usam pra baixar do banco de dados também, pra ver se isso ocorre.

    Mas se usar o metodo antigo, funciona de boa, o problema ta no processo novo usando o xmlacbr.

     

  18. Em 12/04/2024 at 17:37, Italo Giurizzato Junior disse:

    Boa tarde @luisclaudio_jr,

    Se o XML esta salvo em um campo do banco de dados, porque você não lê esse campo, passando ele para uma variável string e depois executa os comando:

    aXML :=  recebe conteúdo do banco de dados que contem o XML da nota;

    DM_NFE.ACBrNFe1.NotasFiscais.Clear;
    DM_NFE.ACBrNFe1.NotasFiscais.Add;
    DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

    No caso não está no banco de dados, é arquivo carregado mesmo, onde o cliente pega da pasta que ele tem e importa.

×
×
  • 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.