Página 7 de 11

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 12:37
por Fernando queiroz
eu encontrei esse site http://nfce.encat.org/desenvolvedor/webservices-h/

pelo que entendi o Acre usa o mesmo do RS , entao coloquei no .CH

;
{ "AC", WS_AMBIENTE_PRODUCAO, WS_NFE_AUTORIZACAO, "3.10", "https://nfce.svrs.rs.gov.br/ws/NfeAutor ... zacao.asmx" }, ;
{ "AC", WS_AMBIENTE_PRODUCAO, WS_NFE_CONSULTAPROTOCOLO, "3.10", "https://nfce.svrs.rs.gov.br/ws/NfeConsu ... ulta2.asmx" }, ;
{ "AC", WS_AMBIENTE_PRODUCAO, WS_NFE_INUTILIZACAO, "3.10", "https://nfce.svrs.rs.gov.br/ws/nfeinuti ... acao2.asmx" }, ;
{ "AC", WS_AMBIENTE_PRODUCAO, WS_NFE_RECEPCAOEVENTO, "1.00", "https://nfce.svrs.rs.gov.br/ws/recepcao ... vento.asmx" }, ;
{ "AC", WS_AMBIENTE_PRODUCAO, WS_NFE_RETAUTORIZACAO, "3.10", "https://nfce.svrs.rs.gov.br/ws/NfeRetAu ... zacao.asmx" }, ;
{ "AC", WS_AMBIENTE_PRODUCAO, WS_NFE_STATUSSERVICO, "3.10", "https://nfce.svrs.rs.gov.br/ws/NfeStatu ... vico2.asmx" }, ;
;
{ "AC", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_AUTORIZACAO , "3.10", "https://nfce-homologacao.svrs.rs.gov.br ... zacao.asmx" }, ;
{ "AC", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_CONSULTAPROTOCOLO, "3.10", "https://nfce-homologacao.svrs.rs.gov.br ... ulta2.asmx" }, ;
{ "AC", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_INUTILIZACAO, "3.10", "https://nfce-homologacao.svrs.rs.gov.br ... acao2.asmx" }, ;
{ "AC", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_RECEPCAOEVENTO, "1.00", "https://nfce-homologacao.svrs.rs.gov.br ... vento.asmx" }, ;
{ "AC", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_RETAUTORIZACAO, "3.10", "https://nfce-homologacao.svrs.rs.gov.br ... zacao.asmx" }, ;
{ "AC", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_STATUSSERVICO, "3.10", "https://nfce-homologacao.svrs.rs.gov.br ... vico2.asmx" }, ;

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 12:45
por JoséQuintas
Tem uma parte na SefazClass pra isso...

Código: Selecionar todos

   IF cUF $ "RR"
      cUrl := SoapUrlNFCe( "SVRS", cAmbiente, nWsServico, @cSoapVersion )
   ELSE
Só trocar pra IF cUF $ "AC,RR"

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 12:49
por JoséQuintas
Marcelo:

Sobre os arrays, só criar mais dois pra NFE4 e NFCE4

Se tiver SOAPACTION diferente, talvez seja melhor acrescentar no SOAPLIST o número de versão.

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 12:53
por Fernando queiroz
num é que a coisa funcionouuuuuuu :)) :)) :)) :)) :)) :)) :P :P :P :P :P :P :P :* :* :* :* :* :% :% :% :% :%

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 13:14
por Fernando queiroz
JoséQuintas escreveu:Tem uma parte na SefazClass pra isso...

Código: Selecionar todos

   IF cUF $ "RR"
      cUrl := SoapUrlNFCe( "SVRS", cAmbiente, nWsServico, @cSoapVersion )
   ELSE
Só trocar pra IF cUF $ "AC,RR"
Quintas eu alterei aqui , mas tem como alterar la no GIT para que da proxima vez que baixar ja esteja ok

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 14:40
por JoséQuintas
Mais que isso..... acrescentei alterações pra 4.00

Só compilando meu aplicativo, pra pelo menos fazer o teste básico.
Se faltar função, só na geração do EXE é que vai acusar.

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 15:21
por JoséQuintas
Bom.... vou salvar uma parte de cada vez no github, pra já explicar o que foi alterado.

Lógico... a intenção é mostrar, porque não quero ficar alterando sozinho sempre....

Inclusive acho que esse foi o motivo do Harbour 3.4 ficar congelado.
Cheguei a ver um comentário do Viktor no Harbour 3.4, mas não o encontrei mais.
Resumindo: todo mundo pede, mas ninguém ajuda, e ele ficar responsável por tudo, como versão "diferente" não dá.
Não é o caso da Sefazclass, tem recebido ajuda.

Mas vamos lá....

Validação da Inscrição Estadual da Bahia atualizada
Ainda não removi a validação de 8 dígitos, apesar de não ter acusado diferença no cálculo pra 9 dígitos.

https://github.com/JoseQuintas/sefazcla ... a019b4c717

No CH, acrescentei versão no array de SOAPACTION e deixei em ordem alfabética, e acrescentei dois arrays vazios pra NFE4 e NFCE4.
https://github.com/JoseQuintas/sefazcla ... 8ce961a315

e no PRG, pra trabalhar com essas alterações.

https://github.com/JoseQuintas/sefazcla ... e4d934b7ec


Teve uma situação curiosa: eu usava o array pra pegar o projeto, e depois pelo projeto determinar versão.
Na alteração, precisava da versão, mas sem saber o projeto.... rs
A saída foi pesquisar duas vezes o array.

Agora na hora de postar, acho que esse mesmo bloco vai precisar revisão.
Parece ter um erro que já existia.... rs
Aquele ::cNFCE != "S" parece errado, ou dependendo do motivo, vai precisar muita alteração.... rs
Aquilo não deveria existir neste momento, mas sinceramente não lembro porque coloquei.
Pode indicar que NFCE tem nomes diferentes de SOAPACTION, e isso significa que a lista atual não vai servir, porque não tem opção pra diferença entre NFE e NFCE.

Código: Selecionar todos

   // precisa saber o projeto pra escolher versao
   nPos := AScan( aSoapList, { | oElement | oElement[ 2 ] == nWsServico } )
   ::cProjeto := aSoapList[ nPos, 4 ]
   // agora versao
   DO CASE
   CASE ::cVersao != "DEFAULT"
   CASE ::cProjeto == WS_PROJETO_NFE;  ::cVersao := WS_VERSAO_NFE
   CASE ::cProjeto == WS_PROJETO_CTE;  ::cVersao := WS_VERSAO_CTE
   CASE ::cProjeto == WS_PROJETO_MDFE; ::cVersao := WS_VERSAO_MDFE
   CASE ::cProjeto == WS_PROJETO_BPE;  ::cVersao := WS_VERSAO_BPE
   ENDCASE
   // agora sim, o resto
   IF ::cNFCE != "S" .AND. ;
        ( nPos := AScan( aSoapList, { | oElement | oElement[ 1 ] $ ::cUF .AND. ;
        oElement[ 2 ] == nWsServico .AND. ::cVersao == oElement[ 3 ] } ) ) != 0
      ::cSoapAction  := aSoapList[ nPos, 5 ]
      ::cSoapService := aSoapList[ nPos, 6 ]
   ELSEIF ( nPos := AScan( aSoapList, { | oElement | oElement[ 1 ] == "**" .AND. ;
         oElement[ 2 ] == nWsServico .AND. ::cVersao == oElement[ 3 ] } ) ) != 0
      ::cSoapAction  := aSoapList[ nPos, 5 ]
      ::cSoapService := aSoapList[ nPos, 6 ]
   ENDIF

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 15:29
por MSDN
Muito bem vindas as alterações Quintas, ainda não parei para criar o Fork, mas logo estarei fazendo isso, e como vc disse ( e penso igual ), quanto mais gente pra ajudar melhor !

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 15:52
por JoséQuintas
Vou manter isso.
A única coisa que veio à cabeça: Pra NFCE está padronizado, por isso não precisa analisar cada UF, basta o genérico "**", e é o mesmo nome da NFE.

Se não for, vai precisar mais alterações, porque vai ser necessário identificar no array se é NFE ou NFCE, além dos elementos na lista.

Pois é... Criam padrão, mas cada UF inventa de mexer em alguma coisa...

Seria muito mais fácil se fosse padrão, do tipo: http://sefaz.UF.gov.br/........
Bastaria trocar o UF pela sigla da UF.
E todo restante padrão também.

Ou Sefaz.UF.NFE e Sefaz.UF.NFCE

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 16:27
por JoséQuintas
e como vc disse ( e penso igual ), quanto mais gente pra ajudar melhor !
Lembrando:

Sem certificado válido PARA A UF, não tem como testar uma UF.
Certo ou errado, sem certificado DA UF não funciona.
A menos que alguém tenha 26 certificados, um de cada UF, ninguém vai conseguir testar tudo, e nem eu.... rs

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 17:16
por Fernando queiroz
uma dica , so falta isso para conseguir finalizar

para gerar o QR-CODE o xml tem de estar assinado?

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 18:42
por JoséQuintas
Vejo daqui a pouco.
Errei nas alterações da Sefaz, e está dando problema em cliente.... rs

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 19:45
por JoséQuintas
Pronto, pelo bloco, que considera também o bloco da assinatura, é DEPOIS de ter assinado o XML.
Até por isso, acabou tendo que ser dentro da Sefazclass.

Código: Selecionar todos

      // XML com a Tag do QRCode
      cXmlAssinado := [<NFe xmlns="http://www.portalfiscal.inf.br/nfe">]
      cXmlAssinado += cInfNFe
      cXmlAssinado += [<] + "infNFeSupl"+[>]
      cXmlAssinado += [<] + "qrCode"+[>] + QRCODE_cTag + [</] + "qrCode" + [>]
      cXmlAssinado += [</] + "infNFeSupl"+[>]
      cXmlAssinado += cSignature
      cXmlAssinado += [</NFe>]
Sobre o erro que tive que corrigir: nas alterações acabou ficando sem os endereços de NFE..... rs

E só troquei no cliente pra resolver um problema no cancelamento de CTE: a data/hora não estava com UTC
Ao trocar pra resolver esse problema, acabou indo o outro problema.... rs

Na dúvida sobre o real problema, acabei criando mais alguns #define pra ter certeza de que estava pegando a informação certa do array.

https://github.com/JoseQuintas/sefazcla ... c449cc4e72

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 19:56
por JoséQuintas
Nota adicional:

Sei que já falei várias vezes, mas....

Como eu já disse antes, a SefazClass é direto do meu aplicativo.
Se der problema pra NFE, CTE e MDFE.... meu aplicativo dá problemas.

Foi só uma coincidência eu já ter que trocar versão no cliente, mas, acabaria com problemas aqui também.

Eu prefiro ir sempre em frente com os fontes, apesar de poder voltar versão anterior.... então já foi corrigido e usado, tanto pra cancelar CTE quanto pra emitir NFE.
O motorista ficou aguardando a correção lá no cliente..... e a estas horas....

Aproveitando:
Comunicado da Sefaz SP, amanhã a partir das 19:00 o sistema de CTE ficará fora do ar.
Ainda bem que o problema foi hoje... rs

NFC-e - por onde iniciar

Enviado: 13 Dez 2017 22:28
por Fernando queiroz
to perdido !!!! qual seria a sequencia correta?


oSpedDa := hbNfeDaGeral():New()
oSefaz:cNFCE := "S"
oSefaz:cIdToken := "000001"
oSefaz:cCSC := TRIM(FLAG->cCertifica)

oSefaz:GeraQRCode( cTxtXml )
oSefaz:NFEloteenvia( cTxtXml )

OU

oSefaz:NFEloteenvia( cTxtXml )
oSefaz:GeraQRCode( cTxtXml )

ou alguma que nao consigo mais pensar :% :% :% :% :%