Ir para conteúdo
  • Cadastre-se

Renan Garcia de Oliveira

Membros
  • Total de ítens

    58
  • Registro em

  • Última visita

1 Seguidor

Últimos Visitantes

1.622 visualizações

Renan Garcia de Oliveira's Achievements

Enthusiast

Enthusiast (6/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

2

Reputação

1

Community Answers

  1. Boa tarde, Gostaria de confirmar uma informação sobre o parâmetro abaixo, que está no arquivo ACBrNFeServicos.ini: URL-ConsultaNFCe_2.00=http://www.sefaz.go.gov.br/nfce/consulta Quando eu utilizo este valor que vem por padrão nos fontes do ACBr e tento enviar uma NFC-e com QRCode na versão 2.0 recebo o seguinte retorno: Endereço do site da UF da Consulta por chave de acesso diverge do previsto Eu consigo autorizar a NFC-e se colocar o mesmo endereço que está no parâmetro da versão 1.0 do QRCode: URL-ConsultaNFCe_1.00=http://www.nfce.go.gov.br/post/ver/214413/consulta-nfc-e-homologacao Essa URL da versão 2.0 vai passar a ser oficial a partir do dia 1 de Outubro, ou está errada mesmo? Porque jogando a URL da 2.0 no navegador sempre sou redirecionado para a URL da 1.0.
  2. Estou desenvolvendo um projeto e esbarrei em um problema em que preciso ficar copiando e colando o mesmo código em todos os métodos de algumas classes, mas não consegui resolver esse problema com o que conheço em POO. O que ocorre é o seguinte: Eu tenho neste projeto as minhas regras de negócio; para cada model, eu tenho uma regra de negócio (PessoaModel -> PessoaRN, EndereçoModel -> EndereçoRN, etc); dentro dessas classes "RN" eu recebo um Model da View, valido ele, e então executo a função em questão (PessoaRN.Inserir, PessoaRN.Editar, etc); cada vez que uma View executa um dos métodos das Regras de Negócio eu inicio uma transação no banco de dados, faço todo a validação e processamento do método, e no final se tudo deu certo, dou um commit, senão um rollback no banco de dados; fica no final com essa estrutura: function TRegraDeNegocio.Inserir(pModel: TModel):Boolean; begin DoIniciaTransacaoComBancoDeDados; try // // Aqui processa o código da função de fato // DoCommitTransacao; except on E: Exception do begin DoRollbackTransacao; raise Exception.Create(E.Message); end; end; end; Então resumindo: em todos os métodos de todas as regras de negócio eu teria que ficar copiando e colando todo o código acima com a exceção da parte comentada, porque é ali que entra o código de fato do método em si. Não consegui resolver com herança, pois tem código comum no início e no final. Existe algum outro detalhe na POO que resolveria essa questão?
  3. Bom dia Italo. Após sua atualização precisei alterar novamente a unit em anexo. Xml esta validando novamente. Mas o erro http:500 persiste. Poderia me dar uma ajuda nesse caso? pnfsNFSeW_ABRASFv2.pas
  4. Italo, com essas modificações vou conseguir bater no webservice deles? Obrigado pela agilidade e atenção!
  5. Bom dia, eu alterei os fontes do Acbr pra gerar o Xml conforme precisava. Ele segue o padrão ABRASF 2.01. Segue os fontes alterados do Acbr. Alterações.rar
  6. Bom dia. o municipio de Itumbiara-GO utilizava o provedor prodata, mas agora usa o padrao de uma empresa de Goiania chamada SIGEP, fiz as alterações no código para atender e o XML esta validando com sucesso no site deles(em anexo), mas ao enviar insiste em dar erro http:500 Estou anexando o xml, os arquivos .ini cidades alterado e o arquivo do provedor criado para transmissão Endereços: http://itumbiara.bsit-br.com.br/integracao/services 7-ger-nfse.xml Cidades.ini Sigep.ini
  7. Eu não tinha atentando para isso mesmo, fiz a modificação... Mas neste caso, dentro do QuandoFecharDocumento eu poderia então executar os comandos abaixo? ACBrNFe.NotasFiscais.Validar; ACBrNFe.NotasFiscais.Assinar; Neste caso realmente ficaria mais fácil fazer a validação e eu não precisaria ficar modificando as classes do ACBr sempre que atualizá-lo.
  8. Obrigado pela resposta, mas este caso ainda não resolve porque eu trabalho com o componente ACBrECFVirtualNFCe, então não executo a Validação e Assinatura. Mas consegui resolver por aqui e vou deixar uma sugestão de código caso o ACBr se interesse. Na unit ACBrNFe, na declaração da classe TACBrNFe adicionei a seguinte variável ao escopo private FTentouEnviar: Boolean; Em seguida adicionei a propertie abaixo ao escopo public property TentouEnviar: Boolean read FTentouEnviar; Inicializei a propriedade dentro do Create desta classe FTentouEnviar := False; E então no método "Enviar(ALote: String; Imprimir: Boolean; Sincrono: Boolean): Boolean;" inicializei a propriedade como False logo após as duas primeiras validações e antes do "NotasFiscais.Assinar;", após o "NotasFiscais.Validar;" alterei o valor da proipriedade para True, ficando o código da seguinte forma: if NotasFiscais.Count <= 0 then GerarException(ACBrStr('ERRO: Nenhuma NF-e adicionada ao Lote')); if NotasFiscais.Count > 50 then GerarException(ACBrStr('ERRO: Conjunto de NF-e transmitidas (máximo de 50 NF-e)' + ' excedido. Quantidade atual: ' + IntToStr(NotasFiscais.Count))); FTentouEnviar := False; NotasFiscais.Assinar; NotasFiscais.Validar; { Uma vez que foi Assinado e Validado com sucesso, seta-se o TentouEnviar como True, pois daqui em diante qualquer exception disparada será dentro ou após a tentativa de envio da NF-e } FTentouEnviar := True; Result := WebServices.Envia(ALote, Sincrono); Dessa forma, quando ocorre alguma exception dentro desse método, e o TentouEnviar estiver True, eu tenho certeza que as validações e assinaturas das notas ocorreram com sucesso. Se o "ACBrNFe.WebServices.Enviar.cStat" da nota fiscal foi igual a zero e o "ACBrNFe.WebServices.Enviar.Msg" foi igual a vazio, e o método tentou enviar, então ocorreu algum erro na comunicação com o WebService e eu posso presumir com mais segurança que o erro é de conexão e então começar a fazer todo o tratamento necessário pra realizar uma venda em contingência. Isso se fez necessário porque quando ocorre um erro dentro do "NotasFiscais.Validar" ainda não houve nenhuma tentativa de envio e o "ACBrNFe.WebServices.Enviar.cStat" anda está igual a zero e o "ACBrNFe.WebServices.Enviar.Msg" também ainda está vazio. A classe com as modificações segue em anexo. ACBrNFe.pas
  9. Boa tarde, Quando envio uma NFC-e e ocorre um erro eu faço o seguinte tratamento no retorno para saber se houve erro de conexão: if (((Pos('12007 - ', E.Message) > 0) or (Pos('12002 - ', E.Message) > 0) or (Pos('12029 - ', E.Message) > 0) or (Pos('ERRO NAO CATALOGADO', E.Message.ToUpper) > 0) or (Pos('SERVICO PARALISADO', E.Message.ToUpper) > 0)) or ((ECF.ACBrNFe.WebServices.Enviar.Msg = '') and (ECF.ACBrNFe.WebServices.Enviar.cStat = 0))) then Mas estou com a seguinte situação: realizo uma venda de um produto de balança com uma quantidade com 4 casas decimais e ao finalizar ocorre o erro de total dos itens diferente do total pago, o problema é que quando executo o FecharCupom do NFC-e e ocorre este erro o "WebServices.Enviar.Msg" vem igual a vazio e o cStat igual a zero e nesta minha rotina este erro acaba sendo reconhecido como erro de conexão, porém ainda não houve tentativa de envio. Existe algum flag no ACBr para eu conseguir identificar que houve erro na validação de schema, pois nesse caso a nota nem chegou a ser enviada então eu não posso validar o retorno do webservice.
  10. Qual aba você se refere, não localizei configuração para TLS lá. P.s.: Achei aqui, funcionou com o LT_SSLv3
  11. Boa tarde, Segue o passo a passo de como configurei o demo: Configurações -> Certificado - SSLLib = libOpenSSL - Caminho do Certificado (Certificado instalado na máquina) - Senha do Certificado Configurações -> Geral - Modelo Documento Fiscal = moNFCe - Versão Documento Fiscal = ve310 - Diretório Schemas = apontei para a pasta onde copio os schemas do ACBr Configurações -> WebService - UF = GO - Ambiente = Homologação Configurações -> Emitente - CNPJ = Cnpj do certificado Logo em seguida da mensagem de erro, efetuei o mesmo teste com libCapicom, dessa vez houve retorno do webservice, mesmo que com erro já que mesmo configurando a versão ve310 ainda está indo 2.0 no cabeçalho do XML. <?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header /> <env:Body> <nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"> <retConsStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"> <tpAmb>2</tpAmb> <verAplic>GO3.0</verAplic> <cStat>239</cStat> <xMotivo>Rejeição: Cabeçalho - Versão do arquivo XML não suportada</xMotivo> <cUF>52</cUF> <dhRecbto>2017-04-04T13:47:20</dhRecbto> </retConsStatServ> </nfeStatusServicoNF2Result> </env:Body> </env:Envelope> HttpSendDocument.xml HttpSendHeader.xml
  12. Boa tarde, Estamos a alguns dias com dificuldade para emitir NFC-e, estou com um certificado A1 e se eu utilizar o libCapicom tudo funciona corretamente, envio de notas, inutilização, etc. Mas se simplesmente mudo para libOpenSSL recebo este retorno: Erro Interno: 10091 Erro HTTP: 500 Network subsystem is unusable Até o momento o que consegui identificar é que pode ser algo com alguma DLL que as classes do OpenSSL utilizam, porquê se eu trocar a configuração pra Capicom vai que é uma beleza. Também quando estou testando com o OpenSSL e deixo a aplicação aberta, volta e meia do nada dispara uma exceção, depurando no delphi eu vi uma mensagem com o método "CertFreeCertificateContext" de alguma DLL. Fiz os testes no demo do ACBr, e dá a mesma mensagem, apenas fiz a configuração básica (caminho do certificado, senha do certificado, CNPJ da empresa) e executei o Status de Serviço. Preciso saber se tem alguma coisa a mais que posso fazer, ou se é algo com o webservice da SEFAZ, pois no final da semana passada usando o libCapicom estava dando erro de Cadeia de Certificados, hoje eu só liguei o PC e tentei enviar novamente e funcionou com libCapicom
  13. Trabalho com o Gutierres aqui na empresa e estamos a alguns dias quebrando cabeça com isso, até o momento o que a gente conseguiu identificar é que é algo com alguma DLL que as classes do OpenSSL utilizam, porquê se eu trocar a configuração pra Capicom vai que é uma beleza. Também quando estou testando com o OpenSSL e deixo a aplicação aberta, volta e meia do nada dispara uma exceção, depurando no delphi eu vi uma mensagem com o método "CertFreeCertificateContext" de alguma DLL.
  14. Boa tarde, Gostaria de saber se é possível enviar um código criando um parâmetro para imprimir ou não a segunda via do NFC-e quando emitida em modo de contingência, pois de acordo com o Manual de Padrões Técnicos da Contingência Off-line Versão 2.0 de 16 de dezembro de 2016: "Alternativamente à impressão da segunda via do DANFE NFCe, quando de emissão em contingência, o contribuinte poderá optar pela guarda eletrônica, em local seguro, do respectivo arquivo XML da NFC-e. Neste caso, o contribuinte deverá possibilitar a impressão do respectivo DANFE NFC-e para apresentação ao fisco quando solicitado." (pag. 8) Então é possível não imprimir a segunda via desde que o estabelecimento guarde uma via eletrônica do XML e que seja capaz de imprimir a segunda caso algum fiscal solicite (ambas as funções eu já implementei). O manual também diz que para fazer uso desta opção o usuário deve lavrar termo no livro Registro de Utilização de Documentos Fiscais e Termos de Ocorrência - modelo 6, ou formalizar declaração de opção segundo disciplina que vier a ser estabelecida por sua Unidade Federada, assumindo total responsabilidade pela guarda do arquivo e declarando ter ciência que não poderá, posteriormente, alegar problemas técnicos para justificar a eventual perda desta informação eletrônica sob sua posse, assumindo as consequências legais por ventura cabíveis. Então sendo possível, gostaria de saber quais os passos para enviar esta modificação no código para vocês. Manual_de_especificacoes_tecnicas_da_Contingencia_Off-line_versao_2.0 (1).pdf
×
×
  • 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.