Ir para conteúdo
  • Cadastre-se

Italo Giurizzato Junior

Consultores
  • Total de ítens

    38.783
  • Registro em

  • Última visita

  • Days Won

    1.108

Tudo que Italo Giurizzato Junior postou

  1. Sandro, Isso não esta certo, pois o campo ValorIR se refere ao valor do Imposto de Renda e não o valor do ISS retido na fonte. Outra coisa, A tag <Valor_issrf> que é opcional fica dentro de uma lista chamada <lista> e o seu valor deve ser atribuído ao campo: NFSe.Servico.ItemServico[I].ValorISS Já a tag <valor_ir> que é obrigatória fica dentro do grupo <nf> e seu valor deve ser atribuído ao campo: NFSe.Servico.Valores.ValorIr Reveja a sua rotina que alimenta o componente.
  2. Boa tarde Felipe, Basta na aba WebService do programa exemplo você selecionar o ambiente de homologação. Qual é a cidade?
  3. Sandro, Obrigado, já fiz a correção, ainda hoje vou enviar para o SVN.
  4. Acabei de fazer um teste e tive o seguinte resultado: Modo de Envio : Enviar Lote Numero do Lote: 303 Data de Envio : 30/12/1899 Numero do Prot: Sucesso : False Erro(s): Código : 00139 Mensagem: Cadastro informado sem autorizaA A o para emissA o de NFSe.. Correção: ---------
  5. ALA, Me diz uma coisa, você acha que anexando o XML do Rps vai ser util para mim? A imagem que você anexou deixa claro que você não informou o numero do protocolo ao consultar a situação do lote. Outra coisa, você configurou o componente para usar o Capicom?
  6. Sandro, Ao remover o "?eletron=1" voltou a funcionar?
  7. Boa tarde Juliana, O correto não seria enviar a nota "normal" e depois solicitar o seu cancelamento?
  8. Sandro, Já inclui na minha lista de tarefas para analisar.
  9. Ramon, Mas que bagunça, no XML do Rps a data de emissão do mesmo deve ser gerado somente a data, já o XML da NFS-e a data de emissão da mesma é gerada pelo provedor contendo data e hora. Vou incluir na minha lista para analisar essa situação.
  10. Boa tarde, Você utiliza o componente ACBrMDFe ou o ACBrMonitor Plus?
  11. 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.
      • 3
      • Curtir
      • Obrigado
  12. Felipe, Eu acredito que você não esteja com todos os fontes de todas as pastas atualizados. Se esta não reinstalou o ACBr. Se reinstalou deve ter alguma unit referente ao componente que esteja com uma bolinha vermelha em seu ícone, logo deve estar alterada e consequentemente o tortoise não atualizou ela. Neste caso exclua essa unit a atualize novamente (com exceção dessa que andei na minha postagem acima). Essa mensagem de erro "WebService retornou um XML vazio" pode indicar que o componente não conseguiu ler corretamente o retorno, eu preciso do XML soap para poder analisar.
  13. Boa tarde Felipe, Faça um teste com a unit em anexo. Giap.Provider.pas
  14. Boa tarde ALA, Por favor configure o programa exemplo para salvar os XML em disco e anexe eles. O que você anexou não tenho como analisar.
  15. Boa tarde Ramon, Você se refere ao XML do Rps ou da NFS-e? Segundo o Schema do provedor SimplISSv2 temos: <xsd:complexType name="tcInfRps"> <xsd:sequence> <xsd:element name="IdentificacaoRps" type="tcIdentificacaoRps" minOccurs="1" maxOccurs="1" /> <xsd:element name="DataEmissao" type="xsd:date" minOccurs="1" maxOccurs="1" /> <xsd:element name="Status" type="tsStatusRps" minOccurs="1" maxOccurs="1" /> <xsd:element name="RpsSubstituido" type="tcIdentificacaoRps" minOccurs="0" maxOccurs="1" /> </xsd:sequence> <xsd:attribute name="Id" type="tsIdTag" /> </xsd:complexType> Veja que o tipo do elemento DataEmissao é Date e não DataTime
  16. Boa tarde Marcelo, Você tem um XML (soap) de retorno da consulta para que eu possa analisar? Outra coisa, lembre-se que o numero do protocolo na NFS-e não tem o mesmo grau de importância do numero do protocolo da NF-e. Na NF-e o numero do protocolo indica que a nota foi autorizada? Já NFS-e o numero do protocolo quando gerado pelo provedor indica que o webservice recebeu o Rps para ser processado, mas isso não significa que ele foi processado com sucesso. Na NFS-e o que vale mesmo é código de verificação que consta no XML da NFS-e e podemos usar para verificar se a nota realmente foi emitida realizando uma consulta via site informando o código de verificação.
  17. Boa tarde Sandro, Realmente só retorna a data, mas a hora consta no XML de retorno de envio? Se sim, anexa um para que eu possa analisar.
  18. Boa tarde Sandro, Notei que nos arquivos que você anexou o 8 o tomador é uma pessoa jurídica e tem todos dados, já o 44 é uma pessoa física e não contem os dados. Será que o problema não é esse?
  19. Boa tarde, Você esta com todos os fontes de todas as pastas atualizados? Se sim, reinstalou o ACBr? Quanto a salvar os XML em disco, você marcou a opção para salvar os XMLs?
  20. Boa noite Sérgio, O erro diz que esse campo não pode ser vazio.
  21. Boa noite Sandro, Favor atualizar os fontes e faça novos testes.
  22. Boa tarde Bill, Já esta no SVN.
  23. Boa tarde, Já devo ter escrito, mas vamos lá: Até onde sei o Ginfes se utiliza da versão 1 do layout da ABRASF, já o Giss se utiliza da versão 2 ou mais precisamente da versão 2.04 do layout da ABRASF. Eu participei da reunião ocorrida semana passada. E ficou claro para mim que no caso da cidade de Maceió eles trocaram seis por meia-dúzia, ou seja, não alterou nada. Os contribuintes devem continuar gerando e enviando como se nada estivesse acontecido. Não foi dado nenhum prazo, mas pode ser que no futuro tenha uma mudança sim e neste caso vai ser alterado as URLs de envio e o layout do XML do Rps deverá seguir a versão 2.04 Vamos aguardar as cenas dos próximos capítulos.
  24. Boa tarde Marcelo, Por favor não misture assuntos diferentes em um mesmo tópico A sua primeira postagem se refere a emissão e esta segunda a consulta. Assuntos diferentes tópicos diferentes. Desde já agradeço a sua compreensão.
  25. Boa tarde Fernando, Segundo o Manual da NF-e (MOC versão 7.02 Visão Geral) páginas 71 e 72 temos a estrutura de envio da NF-e para o webservice da SEFAZ, mais precisamente no inicio da página 72 temos a definição do grupo NFe cujo conteúdo é na verdade o XML da NF-e, note que esse grupo tem como ocorrência 1-50, isso significa que esse grupo poderá ocorrer no mínimo 1 vez nessa estrutura e no máximo 50. Resumindo, podemos enviar um lote de NF-e com no mínimo 1 e máximo de 50 notas. Para você enviar 1000 notas vai ter que enviar 20 lotes com 50 notas cada. Respondendo a sua pergunta: Sim, faz anos que o componente aceita o envio de lote de notas respeitando os limites estipulados pelo manual. O programa exemplo do componente mostra como ADD uma nota ao componente, para enviar um lote contendo 2 ou mais notas é preciso ADD a quantidade desejada, lembrando sempre o limite de 50 notas por lote.
×
×
  • 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.