Ir para conteúdo
  • Cadastre-se

Antonio Carlos L

Membros
  • Total de ítens

    570
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Carlos L postou

  1. Caro ITALO, agora a coisa ficou clara. Desculpe eu ter teimando no Result = True é porque o cStat=100 Mas veja eu perguntei isso e a resposta http://www.projetoacbr.com.br/forum/topic/25062-duvidas-acbrnfeenviar-e-possivel-bug-primeiro-item-sendo-renomeado/ Conforme pode ver a resposta que recebi do Forum foi de que o retorno é True se cSTAT = 100. Com base em sua explicação "Já o bloco begin end; após o except você que tem apresentar uma tela ao usuário que algum problema técnico ocorreu, neste caso pode ter sido antes do envio ou após o envio. A recomendação neste caso é primeiro levar em consideração que o problema foi após o envio, neste caso devemos carregar o componente o o XML da nota enviada e realizar uma consulta. a - Devemos salvar também o XML de envio, creio que depois do Gerar, antes do Enviar para ser utilizado nessa contigencia ? Se realmente o problema ocorreu após o envio, teremos como retorno o protocolo de autorização ou a rejeição da nota por esta conter dados incorretos." b - Então quer dizer que havendo erro não adianta eu tentar pegar as informações pelo bloco with ACBrNFe1.WebServices.Retorno do begin end no máximo eu terei a mensagem retornada por E.Message com a mensagem interna do componente "Por outro lado se recebermos uma mensagem acusando que a nota não consta no banco de dados da SEFAZ, concluímos que o problema ocorreu no envio, sendo assim devemos providenciar o reenvio da mesma." Entendido perfeito ! Toda nota rejeitada devemos efetuar a correção do dado errado e enviar novamente a nota com o mesmo numero. Entendido perfeito ! Por outro lado uma nota denegada, significa que o destinatário possui algum problema no Fisco, logo a SEFAZ não autoriza a venda a essa pessoa" Entendido perfeito ! Muitíssimo obrigado, vou implementar as sua considerações.
  2. Obrigado Italo, entendo, e você falando parece ser simples, desculpe minha ignorância ... ANTES de postar fiz a implementação abaixo e não obtive exito. try if ACBrNFe.Enviar(iLote,True,False) then begin O cStat = 100 nota autorizada vida que segue esta funcionando 100% end; except begin Quando o resultado é False ( cStat <> de 100 ) o componente dispara uma exception e acaba caindo aqui. Entretanto se tento usar o bloco abaixo para gravar , não vem valores em cStat,xMotivo,Recibo,Protocolo Para pegar o retorno estou usado de forma correta ? with ACBrNFe.WebServices.Retorno do begin GravaRet1(iModelo,iNumero,iSerie,IntToStr(cStat),xMotivo,Recibo,Protocolo,DM.sqlConnMain); end; end; end;
  3. Muito obrigado Italo pela resposta, mas fiquei confuso, desculpe. Quando o retorno é True, OK , a nota foi autorizada, cStat = 100 esta gravando corretamente. Mas veja se o retorno foi False significa que ocorreu um problema qualquer, cStat <> 100 . pois então eu quero gravar esse retorno. Ocorre que se uso : if not ACBrNFe.Enviar(iLote,True,False) then with ACBrNFe.WebServices.Retorno do begin GravaRet1(iModelo,iNumero,iSerie,IntToStr(cStat),xMotivo,Recibo,Protocolo,DM.sqlConnMain); end; Acho que a pergunta seria : Usando ACBrNFe.WebServices.Retorno quando ACBrNFe.Enviar = False não retorna informação ? Se sim qual devo utilizar ? Obrigado
  4. Caros fiquei na duvida se colocava em novo post ou continuava o assunto em relação a função Enviar. Acabei criando um novo post ACBrNFe.Enviar Duvida por favor Não sei se foi correto.
  5. Obrigado Juliomar, achei.
  6. Oi Regys, resolveu sim, baixei hoje e esta OK, obrigado pela intervenção.
  7. Caros em relação a função ACBrNFe.Enviar Em resposta anterior fui informado que o resultado de ACBrNFe.Enviar(iLote,True,False) = True significa que cStat = 100 e a nota foi autorizada. Entretanto quando o resultado é false, significa que cStat <> 100 , estou tentando gravar e exibir de forma personalizada o problema. Se tento usar o bloco abaixo quando o resultado da função é false, nada é exibido with ACBrNFe.WebServices.Retorno do begin GravaRet1(iModelo,iNumero,iSerie,IntToStr(cStat),xMotivo,Recibo,Protocolo,DM.sqlConnMain); FrmRetorno := TFrmRetorno.Create(Application); try with FrmRetorno do begin MemoDados.Lines.Add('Erro no Envio !'); MemoDados.Lines.Add(''); MemoDados.Lines.Add('tpAmb : ' +TpAmbToStr(tpAmb)); MemoDados.Lines.Add('versão : ' + versao); MemoDados.Lines.Add('verAplic : ' + verAplic); MemoDados.Lines.Add('cStat : ' + IntToStr(cStat)); MemoDados.Lines.Add('xMotivo : ' + xMotivo); MemoDados.Lines.Add('cUF : ' + IntToStr(cUF)); MemoDados.Lines.Add('Recibo : ' + Recibo); MemoDados.Lines.Add('Protocolo : '+Protocolo); MemoDados.Lines.Add(''); end; FrmRetorno.ShowModal; Se coloco a função em um bloco try .. except a mensagem de erro do componente some, mas também não consigo gravar e exibir Não existe a possibilidade de gravar essas informações ou exibir . Por favor o que estou fazendo de errado ?
  8. Oi Juliomar obrigado pela resposta. Passos para solução: a - Exclui todos os componentes do ACBr por dentro do Delphi b - Apaguei todas as entradas do Library c - Exclui a pasta ACBr d - Verifiquei a pasta C:\Users\Public\Documents\RAD Studio\8.0\Bpl a existência de alguma referencia e - Verifiquei C:\windows\system e não encontrei nenhuma bpl do ACbr f - EXCLUI TODAS AS DLLs relacionadas ao ACBr no SYSTEM do Windows Baixei pelo Tortoise novamente trunk2 e instalei pelo ACBrInstall e ficou OK
  9. Caros estou alimentando da seguinte forma o componente , no caso são 18:56 Ide.dEmi := DM.cdsCorpo.FieldByName('B09_DEMI').AsDateTime; Ide.dSaiEnt := DM.cdsCorpo.FieldByName('B10_DSAIENT').AsDateTime; Ide.hSaiEnt := now; O xml esta sendo gerado assim : <dhEmi>2015-10-08T00:00:00-04:00</dhEmi> <dhSaiEnt>2015-10-08T00:00:00-04:00</dhSaiEnt> O que estou fazendo de errado ? .
  10. Caros, no manual versão 1.04 sobre o metodo ACBrNFe1.Enviar o retorno é booleano, se for true posso considerar que o cStat = 100 ? ou não esta relacionado. Estou gerando o XML de nota modelo 55 em Homologação e o componente esta trocando sozinho o nome do item, mesmo a regra valendo para modelo 65 apenas
  11. Obrigado Daniel, vc estava correto em C:\Users\Public\Documents\RAD Studio\8.0\Bpl havia arquivos antigos, foram excluídos e ficou 100%.
  12. Caros algo MUITO LOUCO OCORRE, vejam a imagem erro_Xe em anexo. O ACBr esta instalado pelo instalador, NENHUMA mensagem de erro ! Abro o projeto DEMO e compilo normalmente . Mas se dou F12 o código aparece assim. Mas o mas estranho é a segunda imagem, so chorando mesmo. O projeto simplesmente da erro e não compila O completador de código do delphi não acha ACBrNFe.WebServices. O que ja fiz : a - exclui todos os componentes do ACBr por dentro do Delphi b - Apaguei todas as entradas do Library c - Exclui a pasta ACBr d - Pui na pasta C:\Users\Public\Documents\RAD Studio\8.0\Bpl e verifiquei não existe nada do ACBR ali e - fui em C:\windows\system e não encontrei nenhuma bpl do ACbr Baixei pelo Tortoise novamente e instalei pelo ACBrInstall e mesmo assim esta igual. Alguma luz ?
  13. Caros, vi que o ACBrMonitorPlus tem os fointes disponibilizados para lazarus. O ACBRNFe tem um demo , OK, mas quero saber qual a unit que vejo como o ACBrmonitor procede nas chamadas ao componente. Obrigado
  14. Caros onde encontro a função que faz a substituição em FormatoAlert TAG:%TAGNIVEL% ? Explico eu preciso dentro de um texto padrão, mensagem complementares do simples nacional, passar o percentual de aproveitamento de credito e o valor e creio que esse seja o mesmo principio aqui desenvolvido, pode ser que eu possa utilizar ao inves de ter que inventar. Obrigado Antonio
  15. Caros o metodo ACBrNFe.WebServices.StatusServico.Executar retorna um Boolean, esse retorno é se houver um erro interno ou se o Status for diferente de 107 ?
  16. Ok, obrigado, muito clara sua explicação.
  17. Primeiramente quero parabenizar pelo Instalador do Fortes CE. Estou com o seguinte problema : Removi o Fortes CE anterior, baixei no SVN e instalei pelo instalado, tudo certo, abriu blz. Quando encerro o delphi, no dia seguinte aparece a mensagem abaixo e na tela de splash nao aparece nem o lofo do Fortes nem do ACBR Os arquivos informados existem, os paths também A solução por mais estrano que seja é fechar o Delphi XE e novamante rodar o instalador do Fortes CE, ao abrir o Delphi ele carrega sem nenhuma mensagem de erro exibindo as logos do Fortes e ACBr no Splash do Delphi Alguem saber como resolver isso ? Obrigado Antonio Carlos
  18. Oi Italo, muito obrigado pelo esclarecimento. O sistema que estou fazendo, por enquanto não vai trabalhar com TEF, apenas POS, somente após estar mais maduro é que sera submetido a homologação. Tenho uma tabela onde você cadastra o Nome da bandeira e o CNPJ ( onde pegar essa informação, se esta na NT002/2015 não vi ) procurei no Google e são retornados muitos resultados diferentes ate de localização. Cada bandeira cadastrada cria duas modalidades CREDITO e DEBITO Então pelas suas explicações, usando um exemplo de venda no valor de R$ 100,00 , metade em Dinheiro e metade em cartão ( POS ) DEBITO a forma correta seria : no caso de metade em diCartão POS por exemplo , posso dizer que with pag.Add do begin tPag := fpDinheiro; vPag := 50,00; tPag := fpCartaoDebito; tpIntegra := tiPagNaoIntegrado; CNPJ := sCNPJCartao; tBand := bcVisa; // cAut := sNumAutorizacao; // não utilizado por ser POS end; estaria correto ? while not cdsPgto65.Eof do begin case forma do fpDinheiro : begin tPag := fpDinheiro; vPag := cdsPgto65.FieldByName('valor').asFloat; // 50,00; end; fpCartaoDebito : begin tPag := fpCartaoDebito; tpIntegra := tiPagNaoIntegrado; CNPJ := sCNPJCartao; tBand := bcVisa; vPag := cdsPgto65.FieldByName('valor').asFloat; // 50,00; // cAut := sNumAutorizacao; // não utilizado por ser POS end; .... cdsPgto65.next end;
  19. Na NT fala de mudanças nas formas pagamentos da NFCe , mas o demo não espelha essa mudança, poderia passar maiores informações with pag.Add do //PAGAMENTOS apenas para NFC-e begin tPag := fpDinheiro; vPag := 100; end; Antonio Carlos
  20. Caros no DEMO aparece a indicação abaixo. Não vi como fazer se quero referendar mais de uma Chave de Acesso ou mais de um ECF na mesma nota. Como proceder ? //Para NFe referenciada use os campos abaixo { with Ide.NFref.Add do begin refNFe := ''; //NFe Eletronica ...... ..... RefECF.modelo := ECFModRef2B; // | RefECF.nECF := ''; // |- Cupom Fiscal RefECF.nCOO := ''; // | end; Antonio Carlos
  21. Post Original : Estou precisando Validar a Chave de Acesso DIGITADA pelo usuario. No exemplo Delphi NFe não encontrei, eu já valido se esta vazio, se é somente numero, se tem 44 posições , mas preciso validar se esta correta. Sei que o digito verificador é baseado no Modulo 11, posso ate fazer uma função, mas se já tiver no ACBr não vejo porque perder tempo. Obrigado O REGYS SILVEIRA RESPONDEU : Utilize o método ValidarChave que está na unit pcnAuxiliar. Por favor, não aproveite tópicos, abra um novo Mas antes de obter a resposta já havia resolvido da seguinte forma : Encontrei em https://drgarcia1986.wordpress.com/2012/01/31/funcao-para-validar-a-chave-da-nfe/ uma função que estou usando e funcionou, coloco aqui function ValidarChaveNFe(const ChaveNFe: string):boolean; const PESO : Array[0..43] of Integer = (4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 0); var Retorno : boolean; aChave : Array[0..43] of Char; Soma : Integer; Verif : Integer; I : Integer; begin Retorno := false; try try if not Length(ChaveNFe) = 44 then raise Exception.Create(''); StrPCopy(aChave,StringReplace(ChaveNFe,' ', '',[rfReplaceAll])); Soma := 0; for I := Low(aChave) to High(aChave) do Soma := Soma + (StrToInt(aChave) * PESO); if Soma = 0 then raise Exception.Create(''); Soma := Soma - (11 * (Trunc(Soma / 11))); if (Soma = 0) or (Soma = 1) then Verif := 0 else Verif := 11 - Soma; Retorno := Verif = StrToInt(aChave[43]); except Retorno := false; end; finally Result := Retorno; end; end;
×
×
  • 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.