Rogério Braga
Membros-
Total de ítens
30 -
Registro em
-
Última visita
Últimos Visitantes
461 visualizações
Rogério Braga's Achievements
-
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.
-
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?
-
Bom dia. Seguem em anexo. Obrigado. 20210203085049-con-dist-dfe.xml 20210203085050-dist-dfe.xml
-
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.
-
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?
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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...
-
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
-
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.
-
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.