Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 08-09-2021 em Posts

  1. Tu deve informar a cidade. claro antes diz para o componente lercidades ACBrNFSeX.Lercidades depois informa o ibge do municipio e dai o componente se vira Está tudo no exemplo do svn
    2 pontos
  2. Olá pessoal, Fizemos uma alteração no retorno dos métodos e com isso vai ocorrer uma quebra de código. A motivação dessa alteração foi simplificar a codificação do lado do desenvolvedor e evitar o vazamento de memória, como foi detectado por alguns. Desculpa pelo transtorno mas estamos trabalhando para tornar o novo componente cada vez melhor. Para exemplificar essas mudanças vou apresentar aqui o antes e o depois referente ao método ConsultarSituacao. Antes da alteração: Era necessário definir uma variável (Response por exemplo) para receber o retorno dos métodos, uma vez que eles eram uma função. procedure TfrmACBrNFSe.btnConsultarSitLoteClick(Sender: TObject); var Protocolo, Lote: String; Response: TNFSeConsultaSituacaoResponse; begin Protocolo := ''; if not (InputQuery('Consultar Lote', 'Número do Protocolo (Obrigatório):', Protocolo)) then exit; Lote := ''; if ACBrNFSeX1.Configuracoes.Geral.Provedor in [proAssessorPublico, proEquiplano, proSP] then begin if not (InputQuery('Consultar Lote', 'Número do Lote:', Lote)) then exit; end; Response := ACBrNFSeX1.ConsultarSituacao(Protocolo, Lote); // <== antes era uma função ChecarResposta(Response); end; Depois da alteração: Como os métodos agora são procedure não é mais necessário definir uma variável para ler os retornos. procedure TfrmACBrNFSe.btnConsultarSitLoteClick(Sender: TObject); var Protocolo, Lote: String; begin Protocolo := ''; if not (InputQuery('Consultar Lote', 'Número do Protocolo (Obrigatório):', Protocolo)) then exit; Lote := ''; if ACBrNFSeX1.Configuracoes.Geral.Provedor in [proAssessorPublico, proEquiplano, proSP] then begin if not (InputQuery('Consultar Lote', 'Número do Lote:', Lote)) then exit; end; ACBrNFSeX1.ConsultarSituacao(Protocolo, Lote); // <== agora é uma procedure ChecarResposta(tmConsultarSituacao); end; Outra coisa que mudou foi a procedure ChecarResposta que antes recebia a variável (Response por exemplo) e agora recebe como parâmetro um enumerador que é o tipo do método que foi executado, que no exemplo acima temos o tmConsultarSituacao. Abaixo temos um fragmento do código da procedure ChecarResposta. Antes da alteração: procedure TfrmACBrNFSe.ChecarResposta(const Response: TNFSeWebserviceResponse); var i: Integer; begin memoLog.Clear; (...) if Response is TNFSeConsultaSituacaoResponse then begin memoLog.Lines.Add('Modo de Envio : ' + MetodoToStr(tmConsultarSituacao)); memoLog.Lines.Add('Numero do Lote: ' + TNFSeConsultaSituacaoResponse(Response).Lote); memoLog.Lines.Add('Numero do Prot: ' + TNFSeConsultaSituacaoResponse(Response).Protocolo); memoLog.Lines.Add('Situação Lote : ' + TNFSeConsultaSituacaoResponse(Response).Situacao); memoLog.Lines.Add('Sucesso : ' + BoolToStr(Response.Sucesso, True)); end; (...) if Response.Erros.Count > 0 then begin memoLog.Lines.Add(' '); memoLog.Lines.Add('Erro(s):'); for i := 0 to Response.Erros.Count -1 do begin memoLog.Lines.Add('Código : ' + Response.Erros[i].Codigo); memoLog.Lines.Add('Mensagem: ' + Response.Erros[i].Descricao); memoLog.Lines.Add('Correção: ' + Response.Erros[i].Correcao); memoLog.Lines.Add('---------'); end; end; if Response.Alertas.Count > 0 then begin memoLog.Lines.Add(' '); memoLog.Lines.Add('Alerta(s):'); for i := 0 to Response.Alertas.Count -1 do begin memoLog.Lines.Add('Código : ' + Response.Alertas[i].Codigo); memoLog.Lines.Add('Mensagem: ' + Response.Alertas[i].Descricao); memoLog.Lines.Add('Correção: ' + Response.Alertas[i].Correcao); memoLog.Lines.Add('---------'); end; end; (...) pgRespostas.ActivePageIndex := 2; end; Depois da alteração: procedure TfrmACBrNFSe.ChecarResposta(aMetodo: TMetodo); var i: Integer; begin memoLog.Clear; memoLog.Lines.Clear; with ACBrNFSeX1.WebService do begin case aMetodo of (...) tmConsultarSituacao: begin with ConsultaSituacao do begin memoLog.Lines.Add('Modo de Envio : ' + MetodoToStr(tmConsultarSituacao)); memoLog.Lines.Add('Numero do Lote: ' + Lote); memoLog.Lines.Add('Numero do Prot: ' + Protocolo); memoLog.Lines.Add('Situação Lote : ' + Situacao); memoLog.Lines.Add('Sucesso : ' + BoolToStr(Sucesso, True)); memoLog.Lines.Add(' '); MemoResp.Lines.Text := XmlEnvio; memoRespWS.Lines.Text := XmlRetorno; LoadXML(XmlEnvio, WBResposta); if Erros.Count > 0 then begin memoLog.Lines.Add(' '); memoLog.Lines.Add('Erro(s):'); for i := 0 to Erros.Count -1 do begin memoLog.Lines.Add('Código : ' + Erros[i].Codigo); memoLog.Lines.Add('Mensagem: ' + Erros[i].Descricao); memoLog.Lines.Add('Correção: ' + Erros[i].Correcao); memoLog.Lines.Add('---------'); end; end; if Alertas.Count > 0 then begin memoLog.Lines.Add(' '); memoLog.Lines.Add('Alerta(s):'); for i := 0 to Alertas.Count -1 do begin memoLog.Lines.Add('Código : ' + Alertas[i].Codigo); memoLog.Lines.Add('Mensagem: ' + Alertas[i].Descricao); memoLog.Lines.Add('Correção: ' + Alertas[i].Correcao); memoLog.Lines.Add('---------'); end; end; end; end; end; end; (...) pgRespostas.ActivePageIndex := 2; end; Resumindo: Os métodos: Emitir, Consultar (em geral), Cancelar e Substituir agora são procedures. O componente tem agora uma classe chamada WebService e dentro dela uma classe para cada método e é nessas classes dos métodos que temos os campos que contem os retornos como por exemplo o numero do protocolo, a situação do lote, etc. No programa exemplo temos a procedure ChecarResposta com a leitura de todos os parâmetros de todos os métodos.
    2 pontos
  3. Olá pessoal, Alguns já notaram que dependendo do DF-e - Documento Fiscal Eletrônico, o modo de envio é assíncrono e ou síncrono. Quais DF-e podem ser enviados em determinado modo e quais são as condições? NF-e: como normalmente enviamos um lote com até 50 notas o modo de envio é assíncrono e funciona para todas as UF. Podemos enviar NF-e em modo síncrono, mas neste caso só é permitido o envio de apenas 1 nota. O modo de envio síncrono não esta disponível para as UF: SP, BA e GO. NFC-e: como normalmente enviamos 1 nota por vez o modo de envio é síncrono, mas caso seja necessário enviar 2 ou mais notas obrigatoriamente o modo de envio deverá ser assíncrono. CT-e: como normalmente enviamos um lote com até 50 conhecimentos o modo de envio é assíncrono e funciona para todas as UF. Podemos enviar CT-e em modo síncrono, mas neste caso só é permitido o envio de apenas 1 conhecimento. O modo de envio síncrono não esta disponível para as UF: MG, PR e SP. CT-e OS: como só é possível o envio de 1 por vez o modo de envio é síncrono para todas as UF. MDF-e: pode ser assíncrono ou síncrono para todas as UF, uma vez que, quem recepciona é sempre a SVRS. Detalhe o envio é sempre unitário, ou seja, só podemos enviar somente um manifesto por vez. BP-e e BP-e TM é síncrono para todas as UF e só podemos enviar 1 bilhete por vez.
    1 ponto
  4. Sim estou enviando na área de homologação da Fiorilli. Vou aguardar, amanha tento novamente, caso continue, entrarei em contato com eles. Mt obrigado
    1 ponto
  5. Ramon, Devo ter alterado algo, vou verificar.
    1 ponto
  6. Ok Italo! Muito obrigada pela atenção!
    1 ponto
  7. Bom dia. Veja este tópico Att.
    1 ponto
  8. Italo, bom dia. Obrigado, vou ler! Assim que possível dou um retorno aqui.
    1 ponto
  9. Bom dia Ramon, Já esta no SVN uma possível correção para o problema. Como ocorreu mudanças na maneira de executar os métodos bem como a leitura dos retornos, favor ler o artigo: https://www.projetoacbr.com.br/forum/topic/63966-mudanças-no-retorno-dos-métodos-do-novo-componente-de-nfs-e-acbrnfsex/
    1 ponto
  10. Bom dia, No caso de Brasília que é uma Cidade/Estado utilizamos a NF-e para acobertar tanto a venda de produtos quanto a prestação de serviços. Algumas cidades tem um acordo com a SEFAZ para também utilizar a NF-e, mas infelizmente são poucas. Para que programa em Pascal, portanto utiliza o Delphi ou Lazarus temos o componente ACBrNFSeX para a emissão da NFS-e. Estamos trabalhando para que em breve tenhamos uma nova versão do ACBrMonitor Plus com a opção de emitir também a NFS-e. E esta também em nossa lista de tarefas em disponibilizar uma DLL: ACBrLibNFSeX. Se a linguagem de programação que você utiliza permite consumir DLL, seria uma boa opção. Seja um membro do ACBr Pró e se cadastre no Discord. E participe do nosso Papo Pró que acontece todas as terças, quartas e quintas feira. Cada dia um assunto diferente.
    1 ponto
  11. Não existe obrigatoriedade de informar, o que existe é uma validação do conteúdo que deve constar na tabela disponibilizada pela SEFAZ. A meu ver, hoje um erro da SEFAZ-GO nesse caso, se não há a tag, não tem conteúdo pra validar, e estavam rejeitando por falta da tag até mesmo para pagamento em dinheiro. No caso do TEF é obrigatório informar CNPJ e código de autorização, mas não a tBand.
    1 ponto
  12. 1 ponto
  13. O Diário Oficial da União publicou em 01/09/2021 a Portaria nº 62/2021 que coloca fim ao acesso aos dados e informações da Nota Fiscal Eletrônica (NFe), disponibilizados pelo Serviço Federal de Processamento de Dados (SERPRO), por terceiros, a partir do dia 1º de dezembro de 2021. Entre os dados que deixarão de ser fornecidos estão: CPF (número, situação, nome e data de nascimento) CNPJ (número, razão social, situação cadastral, CNAE, localização do estabelecimento, contatos, sócios. Certidão Negativa de Débitos (números, certidões, data de validade); Nota Fiscal Eletrônica (chave, informações de resposta, eventos); Conhecimento de Embarque-Mercante - Consulta da Data da Última Atualização; Manifesto - Consulta da Data da Última Atualização; Escala - Consulta da Data da Última Atualização; Consulta a Dados Conhecimento de Transporte Marítimo (CE-Mercante); Consulta a Dados do Manifesto Marítimo; Declaração de Importação - Consulta à Data da Última Atualização; Consulta à Declaração de Importação. Vale lembrar que a Receita Federal já prorrogou a entrada em vigor desta medida outras vezes. Fonte : PORTARIA RFB Nº 62, DE 30 DE AGOSTO DE 2021 - PORTARIA RFB Nº 62, DE 30 DE AGOSTO DE 2021 - DOU - Imprensa Nacional (in.gov.br)
    1 ponto
  14. Para quem precisar , segue envio e captira de eventos no modo sincrono: Envio: dmdados.ACBrNFe1.Enviar(edtnumlote.text, False,True);. Retorno: achavenfe :=dmdados.ACBrNFe1.NotasFiscais[0].NFe.procNFe.chNFe; aprotocolo :=dmdados.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.nProt; arecibo :=dmdados.ACBrNFe1.WebServices.Enviar.Recibo; xmotivo:= dmdados.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.xMotivo; xCSTAT:= IntToStr(dmdados.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat);
    1 ponto
  15. Acabei de autenticar agora aqui.. O processo é bem documentado aqui: https://developers.mercadolivre.com.br/pt_br/autenticacao-e-autorizacao#Enviar-access-token-no-header Alguns passos pra resumir Gerar o teu app lá dentro do ML com a opção offline_write! Requisitar um REFRESH TOKEN , passando o APPID e APPSECRET e URLREDIRECT Com esse REFRESH TOKEN gerar um ACCESS TOKEN, válido por 6 meses COm o ACCESS TOKEN é só partir pro abraço O certo seria fazer um componente TAuthMeli pra facilitar tudo, estou pensando em fazer essa! Forte abraço a todos Ambiente testado: Rad Studio 10.3.3 com componentes REST
    1 ponto
  16. https://acbr.sourceforge.io/ACBrMonitor/Particularidades.html
    1 ponto
×
×
  • 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...