Ir para conteúdo
  • Cadastre-se

Carlos Alberto Fitl

Membros
  • Total de ítens

    248
  • Registro em

  • Última visita

Tudo que Carlos Alberto Fitl postou

  1. Geralmente acontece alguns erros de "Inativo ou Inoperante tente novamente" e na sefaz esta com status ok, o eu fico louco achando que é a minha aplicação, mas já me acostumei, pois, esses erros são do webservice e eu espero alguns minutos e as vezes horas e volta normal.
  2. Rapaz você olhou o log que eu postei, o quanto de vazamento tem, para corrigir todos estes vazamentos vai alterar toda a estrutura do componente. Sempre contribuo para o ACBr com implementações só que isso esta alem de apenas querer fazer. É só fazer um teste, Instala o FastMM4, coloca o componente envia uma nf-e ou consulta, inutiliza, cancela em fim, utilize algum recurso do componente e feche a aplicação que já vai acusar vazamento de memoria. Att. Carlos Fitl.
  3. O problema é o seguinte, mesmo você fazendo as exibições das notas separadamente, ao usar o componente ocorre os vazamentos de memoria, basta abrir o form usar qualquer funcionalidade e fechar.
  4. Eu tenho um formulario com um pagecontrol com as abas (Pendentes, Autorizadas, Canceladas, Inutilizadas, Contingencia, reimpressão, gerar pdf, enviar email); E tempos em tempos as NF-es vão caindo nesta tela para serem enviadas, por isso ela fica aberta. Att. Carlos Fitl.
  5. Qual versão do ACBrNFE você esta usando, pois o meu esta enviando email com cópia. Att. Carlos Fitl.
  6. O problema que eu não posso destruir o componente, pois existe uma tela que fica aberta e atualizando as notas que serão enviadas, e o usuário seleciona a nota e envia, ao abrir esta tela eu configuro o componente do ACBrNFE igual o exemplo do componente, e ele se destroi quando e fechado esta tela. Mas esta tela fica aberta o dia todo mostrando as NF-e que precisam serem envidas. Att. Carlos Fitl.
  7. Faz um teste com o exemplo do ACBrNFE, vê se nele ocorre o mesmo erro.
  8. Um erro parecido com esse ocorria se o CC (com cópia) estava em branco. O atributo CC (com cópia) é um Tstrings, ou você passa nil ou você cria o objeto e passa o parametro CC := TstringList.Create, não esqueça de matar o objeto da memoria após usar (CC.Free). ACBrNFe1.NotasFiscais.Items[0].EnviarEmail(edtSmtpHost.Text , edtSmtpPort.Text , edtSmtpUser.Text , edtSmtpPass.Text , edtSmtpUser.Text , Para , edtEmailAssunto.Text , mmEmailMsg.Lines , cbEmailSSL.Checked // SSL - Conexão Segura , True //Enviar PDF junto , nil //Lista com emails que serão enviado cópias - TStrings , nil // Lista de anexos - TStrings , False //Pede confirmação de leitura do email , False //Aguarda Envio do Email(não usa thread) , 'ACBrNFe2' // Nome do Rementente , cbEmailSSL.Checked ); // Auto TLS Att. Carlos Fitl;
  9. Se eu entendi bem você tem uma tela onde você envia as NF-E, e você tem notas de mais de um estado e no componente você configura o estado quando você abre sua aplicação, é isso? Você pode configurar o componente no ato do envio, você verifica de que estado é o emitente da NF-e e configura o componente antes de você gerar o XML e enviar. Mas é estranho você trabalhar desta forma, aqui na empresa onde trabalho tem umas 8 filiais mas o cada usuário pode logar em uma filial por vez, e ao entrar na tela de envio de NF-e eu verifico em qual filial ele esta logado e configuro o componente ao abrir o form, e nesta tela de envio das NF-e apenas aparece as NF-e referente aquela filial, para aparecer as NF-e das outras filiais ele precisa mudar de filial no sistema. Att. Carlos Fitl.
  10. Alguém já teve a curiosidade de medir o processo de sua aplicação que utiliza o ACBrNFe? O uso da memoria aumenta cada vez mais a cada NF-e que é enviada, consultada, cancelada, inutilizada, enviada por email ou gerado o PDF, em fim basta utilizar qualquer recurso do ACBrNFE. Eu utilizei o FastMM para verificar se tinha vazamento de memoria em minha aplicação, e eu assustei com a quantidade de vazamento que aparece no componente ACBrNFe. Estou anexando o log do FastMM aqui no fórum para analise, neste log aparece os vazamentos de memoria de toda minha aplicação mas apenas considerem os do ACBrNFE que é o que interessa a todos. COMERCIAL_MemoryManager_EventosLog.rar Ao longo do dia o uso da memoria fica muito auto e a performance da aplicação cai absurdamente. Att. Carlos Fitl.
  11. É exatamente isso que acontece comigo mas utilizando o componente ACBrNFE.
  12. Olá a todos. Venho aqui solicitar mais uma vez uma ajudinha com um problema. Quando eu envio uma nf-e para a sefaz e gravo o retorno do protocolo da seguinte forma: ACBrNFe1.WebServices.Retorno.Protocolo Muitas vezes é gravado o protocolo de uma outra NF-e ou o protocolo esta em branco, o protocolo vem em branco quando o status da NF-E for diferente de 100 - "Autorizado o uso da NF-E", mas ela vem com status 100 e não vem o protocolo, ou vem com o protocolo da outra NF-e. O que eu reparei é que esta após eu enviar NF-E ela continua com os dados de retorno da ultima nota enviada. Ante de eu enviar a NF-e eu dou um clear (ACBrNFe1.NotasFiscais.Clear) e depois eu Carrego os dados (ACBrNFe1.NotasFiscais.Add.NFe ... ) e envio (ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false). E para garantir se a NF-E foi autorizada eu faço: if(ACBrNFe1.WebServices.Retorno.cStat = 100)and((ACBrNFe1.WebServices.Retorno.Protocolo <> null)or(ACBrNFe1.WebServices.Retorno.Protocolo <> ''))then E mesmo assim ocorre do status fica como 100 e o protocolo em branco, ou ele grava o protocolo de outra NF-E. E o que eu fico mais intrigado é que eu verifico se o protocolo for diferente de null ou vazio, e mesmo assim ele grava em branco. Att. Carlos Fitl.
  13. E eu não postei todo o código, pois, ele é muito grande, o que ocorre é que eu tenho um try dentro de outro, e quando é chamado o raise ele executa o tratamento de excessão do ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString,false); e pula para o finally, eu gostaria que ele executa-se o segundo tratamento de excessão. try Timer2.Enabled := false; //Desliga o Timer que atualiza as notas que estão entrando. CoolBar1.Enabled := false; cxPageControl1.Enabled := false; Edit1.Enabled := false; ActivateMenu(false); try ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString,false); except on Erro: Exception do begin msgErro := Erro.Message; Application.CreateForm(Tform_erro_nfe, form_erro_nfe); form_erro_nfe.vmsg_erro := msgErro; form_erro_nfe.ShowModal; form_erro_nfe.Free; end; end; try _inserir.Active := false; _inserir.SQL.Clear; _inserir.SQL.Add('update notafiscal_e.bloco_a set'); if(ACBrNFe1.WebServices.Retorno.cStat = 100)and(ACBrNFe1.WebServices.Retorno.Protocolo <> null)then _inserir.SQL.Add('status = ' + QuotedStr('2') + ', '); if(ACBrNFe1.WebServices.Retorno.cStat <> null)then _inserir.SQL.Add('cstatus = ' + IntToStr(ACBrNFe1.WebServices.Retorno.cStat) + ', ') else _inserir.SQL.Add('cstatus = null,'); _inserir.SQL.Add('xstatus = ' + QuotedStr(ACBrNFe1.WebServices.Retorno.xMotivo)); _inserir.SQL.Add('where infnfe = ' + _tnota_fiscal.fieldbyname('infnfe').AsString); _inserir.SQL.Add(';commit;'); _inserir.ExecSQL; except UServico.verifica_erro(1, _inserir.SQL.Text, true); abort; end; finally //Timer2.Enabled := true; CoolBar1.Enabled := true; cxPageControl1.Enabled := true; Edit1.Enabled := true; ActivateMenu(true); ACBrNFeDANFERave1.MostrarPreview := true; ACBrNFe1.NotasFiscais.Clear; _tnota_fiscal_saida.Requery; end; Att. Carlos Fitl.
  14. Eu estou com o seguinte problema, quando eu envio uma NF-e pelo comando ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false); e ocorre uma Rejeição por NF-e duplicada ou alguma outra rejeição, o próprio AcbrNfe dispara uma raise exception. Com isso a operação abortada e é executado o finally, mas o que eu queria é que mesmo que tivesse uma rejeição eu gravasse o motivo e o código do status no banco, eu poderia resolver isso retirando o try finally, mas eu preciso forçar a execução do que esta no finally caso ocorra algum erro. Alguém tem alguma ideia de como posso fazer isso de forma simples e eficiente? try Timer2.Enabled := false; //Desliga o Timer que atualiza as notas que estão entrando. CoolBar1.Enabled := false; cxPageControl1.Enabled := false; Edit1.Enabled := false; ActivateMenu(false); // N - Não deixa imprimir NF-e com data de emissão diferente da data atual if(_tcad_filial.fieldbyname('emis_dtatual').AsString = 'N')and(_tcad_filial.FieldByName('tpemis').AsInteger = 1)then begin if (_tnota_fiscal_saida.FieldByName('demi').AsDateTime <> Date) then begin Application.MessageBox('Não podem serem enviadas NFes com data de emissão diferente da data atual, ' + #13 + 'por favor, solicite a um superior o Inutilização desta NFe.','ATENÇÃO',MB_OK + MB_ICONINFORMATION + MB_DEFBUTTON1); abort; end; end; ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false); try _inserir.Active := false; _inserir.SQL.Clear; _inserir.SQL.Add('update notafiscal_e.bloco_a set'); if(ACBrNFe1.WebServices.Retorno.cStat = 100)and(ACBrNFe1.WebServices.Retorno.Protocolo <> null)then _inserir.SQL.Add('status = ' + QuotedStr('2') + ', '); if(ACBrNFe1.WebServices.Retorno.cStat <> null)then _inserir.SQL.Add('cstatus = ' + IntToStr(ACBrNFe1.WebServices.Retorno.cStat) + ', ') else _inserir.SQL.Add('cstatus = null,'); _inserir.SQL.Add('xstatus = ' + QuotedStr(ACBrNFe1.WebServices.Retorno.xMotivo)); _inserir.SQL.Add('where infnfe = ' + _tnota_fiscal.fieldbyname('infnfe').AsString); _inserir.SQL.Add(';commit;'); _inserir.ExecSQL; except UServico.verifica_erro(1, _inserir.SQL.Text, true); abort; end; finally //Timer2.Enabled := true; CoolBar1.Enabled := true; cxPageControl1.Enabled := true; Edit1.Enabled := true; ActivateMenu(true); ACBrNFeDANFERave1.MostrarPreview := true; ACBrNFe1.NotasFiscais.Clear; _tnota_fiscal_saida.Requery; end; Att. Carlos Fitl.
  15. Eu estou usando o Delphi 7 Att. Carlos Fitl.
  16. Hoje dia 20/04/2011 eu atualizei o AcbrNfe (Revisão 2252) e quando fui instalar ocorreu o seguinte erro no AcbrGIF.pas if Parent is TControl then if not TControl(Parent).IsVisible then exit ; A declaração IsVisible não existe. Este código esta no procedimento do AcbrGIF.pas: procedure TACBrGIF.AtualizaImagem(Sender: TObject); Alguem já teve este erro? Att. Carlos Fitl.
  17. Entendi, você sugeriu arredondar apenas o vprod e o vnf e não o valor unitário. Acho que desta forma o impacto é menor, o certo seria a Sefaz ter tratado tudo com a mesma casa decimal. Att. Carlos Fitl.
  18. Ok você pode fazer um round olha o problema do round: 1.600 -- X -- 18,637 = 29.819,20 Sem round 1.800 -- X -- 19,636 = 35.344,80 Sem round 1.600 -- x 18,637 (arredonda pra 18,64) = 29.824,00 1.600 -- x 19,636 (arredonda pra 19,64) = 35.352,00 1º Item deu uma diferença de R$ 4,80 2º Item deu uma diferença de R$ 7,20 Diferença final de R$ 12,00 Att. Carlos Fitl.
  19. Pessoal como vocês estão efetuando o calculo do valor total do produto e valor total da nota fiscal, pois hoje as casas decimais estão desta forma: Detalhamento do produto: vUnCom e vUnTrib possui tamanho 21 e decimal 10 (21,10) vprod possui tamanho 15 e decimal 2 (15,2) Total da NF-e vprod e vnf possui tamanho 15 e decimal 2 (15,2) Agora vamos fazer o seguinte calculo: Qtd. | V. Unit. | V. Total (vprod tem que ser 2 casas decimais) 3 -- x 15,866 = 47,598 5 -- x 12,354 = 61,77 7 -- x 9,654 = 67,578 1 -- x 10,234 = 10,234 -------------------------- Total do produto com 2 (duas) casas decimais 187,16 Total do produto com 10 (dez) casas decimais 187,18 Se você truncar os valores 47,598 fica 47,59 Se você truncar os valores 61,77 fica 61,77 Se você truncar os valores 67,578 fica 67,57 Se você truncar os valores 10,234 fica 10,23 --------------------------------------------- 187,18 - 187,16 E agora o valor total teria que ser 187,18 mas se você efetuar a soma considerando somente 2 casas após vigula o valor total fica 187,16 e quando for enviado a nota para a sefaz vai ocorrer erro que a soma do total dos itens não bate com o valor total do produto. Att. Carlos Fitl.
  20. Olá a todos, eu estou com um problema que esta tirando o meu sono, e vir aqui mais uma vez solicitar ajuda. Eu uso o seguinte código para enviar uma NF-e: ACBrNFe1.NotasFiscais.Clear; ACBrNFeDANFERave1.MostrarPreview := false; GerarNFe; try ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false); except On Erro: Exception Do Begin Msgerro := Erro.Message; Application.Createform(Tform_Erro_Nfe, Form_Erro_Nfe); Form_Erro_Nfe.Vmsg_Erro := Msgerro; Form_Erro_Nfe.Showmodal; Form_Erro_Nfe.Free; end; End; E uso este outro para gravar o retorno do webservice: try _inserir.Active := false; _inserir.SQL.Clear; _inserir.SQL.Add('update notafiscal_e.bloco_a set'); if(ACBrNFe1.WebServices.Retorno.cStat = 100)and(ACBrNFe1.WebServices.Retorno.Protocolo <> null)then _inserir.SQL.Add('status = ' + QuotedStr('2') + ', '); if(ACBrNFe1.WebServices.Retorno.cStat <> null)then _inserir.SQL.Add('cstatus = ' + IntToStr(ACBrNFe1.WebServices.Retorno.cStat) + ', ') else _inserir.SQL.Add('cstatus = null,'); _inserir.SQL.Add('xstatus = ' + QuotedStr(ACBrNFe1.WebServices.Retorno.xMotivo)); _inserir.SQL.Add('where infnfe = ' + _tnota_fiscal.fieldbyname('infnfe').AsString); _inserir.SQL.Add(';commit;'); _inserir.ExecSQL; except UServico.verifica_erro(1, _inserir.SQL.Text, true); abort; end; O problema é que se ocorre algum erro que a nota não é enviada e ocorre alguma rejeição ele sai do tratamento de excessão e na hora de gravar os dados como protocolo, status ele grava os dados da ultima nota enviada e não da nota corrente. Com este erro minha nota fica com Status 100 (Autorizada), mas na verdade ela nem foi enviada, e ela acaba ficando com o protocolo de envio da ultima NF-e Autorizada e quando imprime ela sai com "Não Autorizada pela Sefaz", porque na verdade não foi autorizada mesmo, mas como ela pegou o status da ultima NF-e eu sou induzido ao erro. Como vocês estão tratando o envio? Att. Carlos Fitl.
  21. Olá pessoal e estou com este erro, na hora de enviar uma NFE: "Operation aborted" A SEFAZ recebe a nota mas me retorna este erro e aborta minha operação e as vezes fica apenas recebendo até dar erro, ai eu consulto e a nota esta ok. Att. Carlos Fitl.
  22. Ok. Você conhece os componentes JEDI? Tem um componente chamado JvValidators, ele é muito parecido com o seu componente, a diferença que você não aponta para o DataSet, e o JvValidators aponta para o campo que você quer validar. Em seu componente caso tenha varias tabelas você precisa colocar mais que um componente para ligar no DataSource, mas não deixa de ser um excelente compente. Se você me permite eu posso dar umas ideias e você vê se convem adicionar em seu componte, desta forma seu componente poderia atingir varios casos de validação de varios outros componentes. Att. Carlos Fitl.
  23. Blz ch4rl3s, se precisar de ajuda me informe. Veja no seu componente se tem como adicionar validação não somente do DadaSet, ficaria bom se coloca-se também para validar campos como Edit, ComboBox, ListBox, CheckBox e etc... O que você acha? Att. Carlos Fitl.
  24. Olá ch4rl3s, muito bom seu componente, da uma olhada neste componente de notificação, vê se você consegue implementar estes recursos nele. Notificador.rar Este notificador ele faz a notificação mas você precisa implementar em cada componente, o seu componente é muito melhor era assim que eu tinha em mente em fazer o componente onde você gera uma lista adicionando os componentes que você quer validar. O interessante deste notificador em anexo e que ele gera um lista com os campos que possuem erro, e mostra um ícone ao lado dele, onde é possivel validar todos de uma única vez. Se nos conseguirmos fazer com o que o usuário possa validar das duas formas, um por um ou todos de uma única, onde o ícone de aviso que aparece ao lado do componente seria opcional, onde o usuário pode mostrar o ícone ou não e ao mesmo tempo mostrar em uma lista os erros de validação. O que você me diz? Att. Carlos Fitl.
  25. Olá ch4rl3s, eu consegui fazer uma validação em qualquer componente, Edit, DBEdit, ComboBox, DBComboBox, ListBox, DBListBox entre outros componentes, e a validação é genérica, mas eu apenas valido se esta preenchido ou não, em apenas uma pesquisa eu consigo verifica todos os componentes que eu quero validade de uma vez só, sem ter que ficar escrevendo código em cada componente. Esta sua pesquisa de cadastro é todo a que o ACBrNFe utiliza (Pesquisa de Cadastro)? ACBrNfe tem uma pesquisa assim. Segue em anexo a forma como eu valido: Validador_Final.rar Por favor, envie seu componente para eu dar uma avaliada. Att. Carlos Fitl.
×
×
  • 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...
The popup will be closed in 10 segundos...