Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 08-09-2021 em todas as áreas
-
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 svn2 pontos
-
@brunor1989 confere o regime tributário da empresa configurado no monitor se está correto com o regime da empresa na SEFAZ. Isso pode gerar diferença nessas tags no XML retornado.2 pontos
-
Boa tarde, Sim, o nCFe é uma numeração sequencial, tanto para vendas como cancelamentos, portanto se você emitir cupom 1,2,3,4 cancelar o 2 (será o 5) e depois cancelar o 4 (será o 6) a próxima venda será o cupom 7 Número seqüencial criado pelo Equipamento SAT para cada documento fiscal. 6 caracteres numéricos iniciados em 000001. Caso a numeração se esgote (999999) o número sequêncial deve ser reiniciado. Para compor Chave de acesso ao CF-e. O cupom de cancelamento deve seguir a numeração sequêncial, ou seja, caso o cupom 000100 for cancelado, o cupom de cancelamento será o 000101 e o próximo cupom emitido será o 000102. PROJETO S@T-FISCAL (fazenda.sp.gov.br)2 pontos
-
Sim, um cancelamento gera um novo XML com um novo (próximo) número de cupom.2 pontos
-
2 pontos
-
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
-
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
-
Sim estou enviando na área de homologação da Fiorilli. Vou aguardar, amanha tento novamente, caso continue, entrarei em contato com eles. Mt obrigado1 ponto
-
1 ponto
-
Os fluxos tem que ser separados, Inclusão >> Envio Alteração >> Envio como o @José M. S. Junior informou no post acima ( https://acbr.sourceforge.io/ACBrMonitor/BOLETOSetOperacaoWS.html ) você envia o comando BOLETO.SetOperacaoWS(CodigoOperacaoWS); Código da Operação WebService (0- tpInclui, 1- tpAltera, 2- tpBaixa, 3- tpConsulta, 4- tpConsultaDetalhe) depois você faz o envio dos boletos, só precisa alterar o método de operação antes de enviar1 ponto
-
1 ponto
-
1 ponto
-
1 ponto
-
Se ainda tiver dúvidas de como usar o SVN pra baixar os fontes, veja os vídeos desta página: https://projetoacbr.com.br/fontes/1 ponto
-
Italo, bom dia. Obrigado, vou ler! Assim que possível dou um retorno aqui.1 ponto
-
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
-
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
-
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
-
1 ponto
-
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
-
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
-
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 REST1 ponto
-
1 ponto
-
Bom dia André, Primeiramente uma pequena correção, não é Manifesto do Destinatário e sim Manifestação do Destinatário. Existe o componente ACBrMDFe que nos permite emitir o MDF-e, ou seja, Manifesto de Documentos Fiscais Eletrônicos. O MDF-e nada mais é do que uma lista de outros documentos, por exemplo: A transportadora carrega o caminhão, como normalmente nem toda a carga pertence a um único remente e não será transportada para um único destinatário, logo a transportadora vai emitir vários CT-e - Conhecimento de Transporte Eletrônico. Imagina esse caminhão chegando a um posto de fiscalização de fronteira entre Estados e o fiscal ter que checar dezenas ou até centenas de CT-e. Você concorda que vai demorar. É ai que o MDF-e ajuda, pois a transportadora ao emitir o MDF-e informa todos os CT-e referente a carga do caminhão. O fiscal só vai precisar checar o MDF-e. Isso agiliza o processo. Ficou claro o que vem a ser o MDF-e? Com relação a Manifestação do Destinatário, nada mais é do que um evento, na verdade são 4 tipos de eventos diferentes (depende da situação). Sendo assim através do componente ACBrNFe podemos enviar o evento de Manifestação do Destinatário. Você quer saber como baixar os XML das Notas Fiscais de entrada, neste caso você é o Destinatário da mercadoria, correto. Pois bem são a principio 3 passos: 1. Devemos utilizar o método DistribuicaoDFe para baixar um resumo das notas emitidas contra o nosso CNPJ. 2, Devemos Manifestar sobre cada nota, ou seja, enviar um evento de Manifestação do Destinatário para cada nota (resumo) obtida no passo 1. 3. Utilizar novamente o método DistribuicaoDFe para baixar mais resumos e XML completos das notas que foram manifestadas no passo 2. A quantidade de passos podem ser maiores dependendo da quantidade de notas, vamos a um exemplo. Suponha que foram emitidas 80 notas contra o seu CNPJ, o DistribuicaoDFe só retorna um lote com no máximo 50 documentos. Passos: 1. DistribuicaoDFe -> vai retornar 50 resumos; 2. Manifestar as 50 notas; 3. DistribuicaoDFe -> vai retornar 30 resumos (que totaliza as 80 notas) e 20 XML completos das notas que já foram manifestadas. 4. Manifestar as 30 notas; 5. DistribuicaoDFe -> vai retornar 50 XML completos das notas que já foram manifestadas. 6. DistribuicaoDFe -> vai retornar 10 XML completos das notas que já foram manifestadas. ou 1. DistribuicaoDFe -> vai retornar 50 resumos; 2. DistribuicaoDFe -> vai retornar 30 resumos (que faltam para completar as 80 notas); 3. Manifestar as 80 notas; 4. DistribuicaoDFe -> vai retornar 50 XML completos das notas que já foram manifestadas. 5. DistribuicaoDFe -> vai retornar 30 XML completos das notas que já foram manifestadas (que faltam para completar as 80 notas). Por fim, te aconselho a ler as Notas Técnicas: 2014/002 versão1.02b - que trata sobre o Distribuição DFe 2012/002 versão 1.02 - que trata sobre a Manifestação do Destinatário. Espero ter ajudado.1 ponto