Ir para conteúdo
  • Cadastre-se

Rogério Braga

Membros
  • Total de ítens

    30
  • Registro em

  • Última visita

Tudo que Rogério Braga postou

  1. Vou fazer uma grande revisão em todo o código. Por enquanto, obrigado pelo enorme paciência e ajuda. Quando eu tiver alguma ideia ou até mesmo a solução, eu posto aqui. Obrigado.
  2. Pois é meu amigo, se você que é expert no ACBrNFe não sabe o motivo de retornar apenas o XML resumo, imagine eu! Veja como estou fazendo a pesquisa: if ACBrNFe1.DistribuicaoDFePorChaveNFe(35,99999999999999,chNFeFornec) then if MD_Comum.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then DocZipItem := MD_Comum.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0]; No código acima, existe alguma coisa de errado? Além deste código, existe alguma configuração ou alguma propriedade que devo ajustar para retornar o XML completo, ou é apenas fazer o código acima?
  3. Bom dia. Seguem em anexo. Obrigado. 20210203085049-con-dist-dfe.xml 20210203085050-dist-dfe.xml
  4. Nossa, mas será que essa falta de integração é em todos esses casos aqui comigo? Digo isso porque essa NFe não é um caso isolado. São várias notas de fornecedor que ocorre esse problema. Quando é feito a confirmação da operação e o XML não baixou, ao consultar pelo NSU ou chave de acesso, em 100% dos casos está retorno o resumo do XML.
  5. Veja só a imagem abaixo. Fiz a consulta completa no portal da Sefaz e lá mostra que a NFe tem data de saída e as manifestações foram feitas no mesmo dia da emissão da NFe. Esse aí é um caso real que o componente baixa apenas o resumo da NFe. Mesmo após 1 mês da manifestação, ainda vem apenas o resumo. O que será que eu estou fazendo de diferente/errado, ou deixando de fazer para sempre retornar apenas o resumo?
  6. Bom dia Fernando. Você fala para obter o retorno do número do lote. Que número é esse? Quando eu faço a consulta na Sefaz, já pego várias informações, porém, não encontrei nenhuma informação que sugere ser o número do lote. Veja: Table1.FieldByName('NumeroNFe').AsString := Copy(DocZipItem.resDFe.chDFe, 26, 9);; Table1.FieldByName('xSerie').AsString := Copy(DocZipItem.resDFe.chDFe, 21, 2); Table1.FieldByName('chNFe').AsString := DocZipItem.resDFe.chDFe; Table1.FieldByName('CNPJCPF').AsString := LimpaCampos(DocZipItem.resDFe.CNPJCPF); Table1.FieldByName('xNome').AsString := UpperCase(DocZipItem.resDFe.xNome); Table1.FieldByName('IE').AsString := LimpaCampos(DocZipItem.resDFe.IE); Table1.FieldByName('dhEmi').AsString := FormatDateTime('DD/MM/YYYY', DocZipItem.resDFe.dhEmi); Table1.FieldByName('tpNF').AsInteger := Integer(DocZipItem.resDFe.tpNF); Table1.FieldByName('vNF').AsFloat := DocZipItem.resDFe.vNF; Table1.FieldByName('digVal').AsString := DocZipItem.resDFe.digVal; Table1.FieldByName('dhRecbto').AsDateTime := DocZipItem.resDFe.dhRecbto; Table1.FieldByName('nProt').AsString := DocZipItem.resDFe.nProt; Table1.FieldByName('cSitNFe').AsInteger := Integer(DocZipItem.resDFe.cSitDFe); Table1.FieldByName('NSU').AsInteger := StrToIntDef(DocZipItem.NSU, 0); Com relação a CONFIRMAÇÃO da operação, é exatamente neste momento em que estou tentando pegar o XML completo porque sei que para obtê-lo, deve fazer a consulta, a ciência da operação e depois a confirmação da operação. Normalmente, a confirmação da operação é feita em 1 ou 2 dias após fazer a ciência da operação. Esse tempo é o da entrega da mercadoria ou qualquer outra operação interna na empresa. Em alguns casos, a mercadoria demorar vários dias para chegar porque vem de outra UF. Para os dois casos, a confirmação da operação quase nunca é feita no mesmo dia da ciência da operação. Em ambos os casos o XML vem resumido. É aí que empacou e resolvi pedir ajuda aqui. Mesmo com todas as informações que o colega BigWings já me passou, ainda tem algo que faz com que o XML venha apenas resumido. Eu tenho casos de XML confirmados a mais de 30 dias e mesmo assim o XML não vem completo. Fiz a consulta pelo NSU e pela chave de acesso. O resultado foi o mesmo, ou seja, XML resumido. Então, esse número de loto que você menciona tem exatamente qual nome no retorno da Sefaz? Obrigado, Rogério.
  7. Olá bom dia! Acabei de fazer a consulta pela chave de acesso (DistribuicaoDFePorChaveNFe) e mesmo assim ele retorna o XML resumido. A forma como estou consultado está correta? Veja: if ACBrNFe1.DistribuicaoDFePorChaveNFe(35,'99999999999999',chaveNFe) then DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0]; Pergunto isso porque eu só posso estar fazendo algo de errado para retornar apenas o resumo. No componente existe alguma configuração para retornar o XML completo ou resumido? Obrigado, Rogério.
  8. Então, quando eu faço a consulta na Sefaz, eu consulto pelo último NSU (DistribuicaoDFePorUltNSU). Aí, eu faço um FOR no componente para guardar na tabela todas as notas emitidas contra aquele CNPJ, e nesse momento, eu já pego o NSU daquela nota que está sendo lida. Faço assim: ... Table1.FieldByName('NSU').AsInteger := StrToIntDef(DocZipItem.NSU, 0); ... Evidente que eu guardo as demais informações que estão no componente. Bem, você quer dizer que esse NSU que está vindo é um NSU de resumo? Pergunto isso porque eu guardo esse NSU e depois, quando é feita a CONFIRMAÇÃO, eu pego esse NSU e tento baixar o XML. É aí que está vindo o XML resumido. Então como fazer para obter o NSU do XML completo? Na sua postagem acima você disse para consultar pelo NSU completo, mas tem que aguardar ele ser gerado. Como fazer para consultar esse NSU "completo"? Existe um comando específico ou existe um campo específico no componente que já carregar esse NSU completo? Obrigado, Rogério.
  9. Olá bom dia! Identifiquei uma parte do problema. A maneira como eu estava consultando estava errada. Eu estava fazendo assim: "if ACBrNFe1.DistribuicaoDFePorUltNSU(codUF,CNPJ,numeroNSU) then" o correto é: "if ACBrNFe1.DistribuicaoDFePorNSU(codUF,CNPJ,numeroNSU) then" Ao invés de eu consultar pelo NSU específico (DistribuicaoDFePorNSU), eu estava consultando pelo último NSU (DistribuicaoDFePorUltNSU). Ok, esse problema está resolvido. O componente está retornando o XML, porém, ele está vindo com informações resumidas. Veja: <?xml version="1.0" encoding="UTF-8"?> -<resNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <chNFe>9999999999999999999999999999999999999999999</chNFe> <CNPJ>9999999999999999</CNPJ> <xNome>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</xNome> <IE>999999999999</IE> <dhEmi>2021-01-06T00:00:00-03:00</dhEmi> <tpNF>1</tpNF> <vNF>1860.00</vNF> <digVal>XXXXXXXXXXXXXXXXXXXXXXXXXX</digVal> <dhRecbto>2021-01-06T15:40:59-03:00</dhRecbto> <nProt>99999999999999</nProt> <cSitNFe>1</cSitNFe> </resNFe> Eu preciso do XML completo para pegar as informações de faturamento, impostos e produtos. Como eu faço para retornar o XML completo? Obrigado, Rogério.
  10. Não, não retorna erro nenhum, porém, o XML não é baixado em nenhum lugar. Por isso que mencionei que não vem nada. Na pasta onde eu apontei para fazer o download do XML do fornecedor, ele também não está. Não sei onde está o XML do fornecedor. O componente não baixa o XML ou então, deve estar faltando algum comando ou sei lá o que para ele baixar. É isso que está pegando e não achei onde está o problema.
  11. Olá pessoal. Estou tentando baixar o XML do fornecedor através da manifestação do destinatário. Faço da seguinte forma: if ACBrNFe1.DistribuicaoDFePorUltNSU(codUF,CNPJ,numeroNSU) then if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].resDFe.chDFe <> '' then DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0]; O que não estou entendendo é que o cStat retorna 138 (documento localizado), porém, o XML não é carregado pelo componente. Primeiro eu verifico se na resposta a chave de acesso está preenchida: if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].resDFe.chDFe <> '' then Se a chave de acesso estiver preenchida, "peço" para o componente baixar o XML: DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0]; O problema está justamente nesta linha acima. NUNCA vem nada. Preciso da ajuda dos senhor para entender o que eu posso está fazendo de errado ou deixando de fazer. Alguém poderia me dar uma luz? Obrigado, Rogério.
  12. Boa tarde! Realmente o DAC 1 e 6 estão divergentes e o problema é o nosso número! Puts, eu não tinha visto que eles eram diferentes. Me desculpe. 34191.09008 03690.820372 53073.940008 6 84070000073175 - CobreBem 34191.09008 03690.820372 53073.940008 6 84070000073175 - ACBr Porém, ao enviar para o banco o arquivo de remessa, o banco não rejeita nada. Nem o do ACBr e nem do CobreBem. Só que quando o cliente vai pagar, os boletos gerados pelo ACBr, o cliente não consegue pagar porque o banco retorna que o boleto não está registrado. Mas o boleto foi registrado pelo arquivo de remessa e não teve nenhuma rejeição após registrar. Os boletos feitos pelo CobreBem são pagos normalmente pelo cliente. Apenas os do ACBr que não. O que mais me deixa de cabeça quente, é que tudo está absolutamente igual feito pelos dois. Será que eu estou deixando de preencher algo na geração do boleto? Sei lá, alguma coisa que está indo no arquivo de remessa e não está indo na geração do boleto. Pergunto isso porque foi a única coisa que imaginei que poderia estar acontecendo. Eu deve estar deixando de passar alguma informação para o componente e ele gera o boleto faltando alguma coisa e ai, fica como não registrado. Sei la...
  13. Olá pessoal. Na geração do boleto para o Itaú pelo ACBr, o boleto é gerado e o arquivo de remessa é enviado para o banco e não retorna nenhuma rejeição. Quando o cliente vai pagar, ele não consegue porque o banco informa que o boleto não está registrado. Fiz uma comparação com o o CobreBem e encontrei uma divergência na representação numérica do boleto do ACBr contra o boleto do CobreBem. Tentei entender como é gerado a linha digitável e justamente onde encontrei a divergência, não consegui entender como é calculado o DAC. Veja abaixo: 34191.09008 03659.400372 53073.940008 1 84070000073175 - CobreBem 34191.09008 03690.820372 53073.940008 6 84070000073175 - ACBR A divergência está acima no DAC 1 e 6. Segui o manual em anexo e na página 54 ensina como calcular o DAC que está divergente. Infelizmente não consegui entender e por isso estou recorrendo ao grupo para me ajudarem a esclarecer onde estou errando. Em anexo estão os boletos feitos pelo ACBr e CobreBem com seus arquivos de remessa. Tantos os arquivos de remessa do ACBr quanto do CobreBem são registrados sem nenhum problema. O único problema está na geração do boleto para ser enviado para o cliente. A minha dúvida está ai. O que eu poderia estar fazendo de errado ao alimentar o ACBr, uma vez que o arquivo de remessa está correto e o boleto impresso o cliente não consegue pagar? Por favor, alguém poderia me dar uma luz de onde eu posso estar errando ao alimentar o componente ACBr? O que eu poderia estar fazendo de errado ou deixando de fazer? Obrigado, Rogério. Calcular DAC.pdf RemessaCobreBem.txt RemessaAcbr.txt
  14. Olá bom dia! Eu também tinha esse problema e aqui eu resolvi fazendo a busca pelo NSU daquela NFe ao invés de esperar a baixa do pacote completo. Eu faço a busca normalmente conforme orienta o demo do ACBr. Quando for fazer a confirmação da operação, eu verifico se o XML consta no repositório. Se não constar, faço a busca específica daquele XML pelo NSU daquela NFe. É claro que você tem que guarda o NSU de cada NFe para fazer essa pesquisa posteriormente. Feito a busca pelo NSU daquela NFe, guardo seu XML no repositório e fim de papo. Aqui está funcionando desta forma e funcionando bem. Depois que fiz isso, nunca mais tive reclamações que o XML não existe. Obrigado, Rogério.
  15. Olá pessoal. Surgiu uma necessidade de utilizar outro banco de dados na minha aplicação. A necessidade de utilizar o banco de dados na nuvem. A minha aplicação utiliza um banco de dados com uma versão gratuita e para utiliza-lo na nuvem, tem que pagar uma licença e o cliente não quer pagar. Como sempre!!! A alternativa é utilizar o PostGreSql para essa finalidade. Para eu não ter que fazer uma tremenda alteração ou ter 2 versões do mesmos sistema com banco de dados diferentes, pensei na possibilidade de ter 2 DataModules. 1 DataModule atual que contém todos os componentes de conexão do banco de dados atual e outro DataModule com os componentes Zeos para conexão com o PostGreSql. Minha dúvida é: Como instanciar um ou outro DataModule para cada tipo de BD? Andei ensaiando alguma coisa mas não consegui evoluir. Preciso de um tutorial de como fazer isso. Alguém poderia me dar essa dica? Obs.: Meu sistema é feito em Delphi 2010 e não possui o FireDac que permite esse tipo de operação. Preciso resolver isso escolhendo o DataModule ao iniciar o sistema ou, caso algum colega tenha alguma outra sugestão. Obrigado, Rogério.
  16. É que neste caso não será um pequeno aplicativo, infelizmente! Terei que criar todo o carregamento do certificado digital, alimentar o componente e tudo mais. Vai dar um trabalho enorme. Além di FileExists, TFile.Exists e FileExistsSomewhere, teria uma outra forma de verificar se o arquivo existe? e de fato, o problema ocorre apenas quando descompacta o arquivo.
  17. Pior que não tem nada bloqueando. Fiz um teste num outro PC e o problema se repete. O caminho e o nome do arquivo são exatos. Fui debugando e pegando cada um deles e colocando no bloco de notas e comparando com o caminho que o Windows Explorer exibe. Tudo igualzinho! Como eu disse, se fizer a consulta, ciência da operação e depois a confirmação da operação, o problema ocorre, ou seja, o FileExists falha. Muito louco isso! Achei também que o caminho ou o nome do arquivo poderia estar longo. Coloquei em outra pasta e com nome pequeno e nada de dar certo. PQP, isso é um atraso de vida. Ficar caçando um erro assim ninguém merece. Estou horas batendo nisso. O pior é que eu nunca tinha visto um problema desse com o FileExists. Primeira vez.
  18. Olá Daniel! Obrigado pela resposta. Sim, o nome do arquivo está correto, o caminho está correto e etc. Já fiz essa verificação várias vezes mudando a pasta, pesquisando outro arquivo e etc. Por isso que está me deixando confuso e louco. Não consigo entender porque esse "bendito" não localiza o arquivo. O arquivo está lá na pasta e o caminho e nome do arquivo é passado corretamente. Verifiquei isso mil vezes. Coisa de louco!!! Não entendo o motivo de não funcionar. Você tem razão, o FileExists funciona muito bem mas, ao baixar o XML e ele ser descompactado (DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items;), o FileExists não consegue "enxergar" o XML na pasta.
  19. Olá pessoal. Estou utilizando o seguinte comando: if FileExists('C:\Temp\meuarquivo') then begin ... end; O problema é que o arquivo está lá na pasta corretamente e o FileExists do Delphi retorna False, como se o arquivo não existisse mesmo. Está tudo correto com o caminho e nome do arquivo. Fiz uma pesquisa na internet sobre o tema e não encontrei muitas soluções para este problema ou uma outra alternativa para o FileExists. Já utilizei também o TFile.Exists da biblioteca IOUtils e também não funcionou. Utilizei uma função function FileExistsSomewhere(FileName : String; var Path : String) : Boolean; e também não funcionou. Gostaria de saber se existem outras formas de verificar se o arquivo existe, além dessas ai. A localização do arquivo é na máquina local. Em rede também não funciona. Utilizo Delphi 2010. Para ilustrar melhor a localização do arquivo, trata-se da baixa do arquivo XML na manifestação do destinatário. O XML é baixado corretamente pelo componente e é salvo corretamente na pasta. Até ai, tudo perfeito! Depois disso, preciso pegar o XML e fazer uma operação específica com ele e antes de mais nada, preciso saber se ele existe na pasta. É ai que está o problema! Li em algum lugar que quando o arquivo é descompactado, o FileExists não vai reconhecer mesmo. Só depois de algum tempo. Não me lembro ao certo a explicação e não sei onde li isso para postar o link aqui. De qualquer forma, o problema ocorre justamente após o XML ser descompactado. Veja, não é um problema no componente ACBrNFe, e sim, um problema no Delphi. Por isso estou colocando essa dúvida aqui. Alguém saberia me dizer como posso resolver este problema do FileExists não achar um arquivo recém descompactado? Ou, como fazer para que o FileExists funcione, seja lá em qual condição? Ou ainda, uma outra alternativa que realmente funcione? Obrigado, Rogério.
  20. Bom dia! Então, eu não estou criando o arquivo de log. Bem, eu acredito que não esteja sendo criado mesmo! Pra ativar o arquivo de log não teria que preencher a propriedade arqLOG do componente ACBrSat? Estou deixando essa propriedade em branco não apenas em desenvolvimento como também em execução. Faço assim: ACBrSat1.arqLOG := ''; Além disso, tem alguma outra propriedade que ativa a criação do arquivo de log? Antes dessa lentidão era criado vários arquivos de log. 1 para cada venda. Depois da lentidão, apaguei todos os arquivos da pasta e deixei a propriedade arqLOG em branco. Os arquivos deixaram de ser criados, porém, a lentidão continua. Por acaso algum outro arquivo de log é criado ou preenchido além dessa opção que mencionei?
  21. Rogério Braga

    Lentidão Sat

    Olá pessoal. Estou com um problema com lentidão em 2 equipamentos SAT de marcas diferentes. O aplicativo é o mesmo e em vários outros locais, funciona perfeitamente, contudo, em 2 lugares não. Sat Tanca e Sat Elgin. A lentidão ocorre quando vai enviar os dados da venda para o Sat: AcbrSat1.EnviarDadosVenda; Nesse momento, o tempo de retorno é enorme, e em alguns casos chega a quase 1 minuto. Sem dar nenhum erro de Time Out. Tudo é local, ou seja, gravação de dados, de XML e log. Nada é feito em rede ou internet. 100% local. Os arquivos de log não estão mais sendo gravados. Os arquivos XML são gravado numa pasta local. Nesta pasta local, eu a deixei zerada de qualquer tipo de arquivo, inclusive de XML. O estranho é que sem gravar os arquivos de log e com a pasta do XML vazia, as coisas funcionam normalmente, super rápido só que depois de algumas vendas enviadas para o Sat, a lentidão volta. Também já troquei o cabo do Sat de porta, atualizei o software do Sat, mudei a configuração do Sat para IP e etc, e nada de ficar rápido. Alguém poderia me dar uma dica do que mais eu poderia fazer para resolver este problema. Detalhe: É o mesmo problema em 2 equipamentos distintos e 2 clientes distintos. A única coisa igual é o sistema. Outro detalhe, nos demais clientes está tudo perfeito. Apenas nesses 2. Obrigado, Rogério.
  22. Olá pessoal. Tenho uma rotina que gera o arquivo Excel e exportar os dados nos clientes sem problemas. Precisei fazer uma implementação de células nesta rotina e quando fui testar, retornou a seguinte mensagem de erro: 'cadeia de caracteres de classe inválida' Esse erro aparece quando entra na seguinte linha: var Excel: OleVariant; // também já coloquei Excel: Variant; begin Excel := CreateOleObject('Excel.Application'); Declarei na uses: ComObj, Excel2000, ActiveX. O ActiveX eu declarei porque em um outro fórum dizia para fazer essa declaração. Na verdade, já existia declarado ComObj e Excel2000. Na minha máquina tem o Excel instalado com licença válida. Alguém saberia dizer por que do erro: 'cadeia de caracteres de classe inválida' ao criar o objeto? Obrigado, Rogério.
  23. Olá pessoal, Gostaria de saber qual é a configuração correta do componente ACBrNFe para salvar o XML autorizado na pasta correta e os XMLs de resumo numa pasta separada. Li várias postagens aqui sobre o tema, inclusive a publicação Fiz vários testes e sempre os XMLs de resumo são gravados na mesma pasta do XML autorizado. Minha configuração está assim: ACBrNFe1.Configuracoes.Arquivos.DownloadDFe.PathDownload := '...\minhapasta\xmlautorizado'; ACBrNFe1.Configuracoes.Arquivos.PathNFe := '...\minhapasta\xmlautorizado'; ACBrNFe1.Configuracoes.Arquivos.PathSalvar := '...\minhapasta\xmlautorizado'; A propriedade: SalvarApenasNFeProcessadas deixei como True; Fiz diversos teste com várias outras combinações e nenhum funcionou. Gostaria de saber qual é a configuração correta para salvar o XML autorizado numa pasta e os arquivos temporários em outra pasta e os arquivos em outra. Obrigado, Rogério.
  24. Bom dia! Eu também imaginei isso porque, fazendo a consulta lá no ambiente nacional, os registros de ciência da operação e confirmação da operação estão feitos. E feitos pelo componente ACBr no meu aplicativo, ou seja, com o componente está tudo ok. Obrigado pela atenção. Rogério.
×
×
  • 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.