Clipper On Line • Ver Tópico - Mudança na SefazClass

Mudança na SefazClass

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

 

Mudança na SefazClass

Mensagempor JoséQuintas » 09 Set 2017 11:10

Só vou testar na segunda, mas ....
Alterei a forma de pegar os endereços.
Ao invés de uma função pra cada UF, uma função pra NFE, CTE, MDFE, NFCE, e NFE 4.0
Como exemplo pra NFE:

   aList := { ;
      ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_AUTORIZACAO,       "https://nfe.sefaz.am.gov.br/services2/services/NfeAutorizacao" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_CANCELAMENTO,      "https://nfe.sefaz.am.gov.br/services2/services/NfeCancelamento2" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_CONSULTAPROTOCOLO, "https://nfe.sefaz.am.gov.br/services2/services/NfeConsulta2" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_INUTILIZACAO,      "https://nfe.sefaz.am.gov.br/services2/services/NfeInutilizacao2" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_RECEPCAO,          "https://nfe.sefaz.am.gov.br/services2/services/NfeRecepcao2" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_RECEPCAOEVENTO,    "https://nfe.sefaz.am.gov.br/services2/services/RecepcaoEvento" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_RETAUTORIZACAO,    "https://nfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_RETRECEPCAO,       "https://nfe.sefaz.am.gov.br/services2/services/NfeRetRecepcao2" }, ;
      { "AM", WS_AMBIENTE_PRODUCAO,    WS_NFE_STATUSSERVICO,     "https://nfe.sefaz.am.gov.br/services2/services/NfeStatusServico2" }, ;
      ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_CONSULTAPROTOCOLO, "https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta2" }, ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_CANCELAMENTO,      "https://homnfe.sefaz.am.gov.br/services2/services/NfeCancelamento2" }, ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_CONSULTACADASTRO,  "https://homnfe.sefaz.am.gov.br/services2/services/CadConsultaCadastro2" }, ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_CONSULTAPROTOCOLO, "https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta2" }, ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_INUTILIZACAO,      "https://homnfe.sefaz.am.gov.br/services2/services/NfeInutilizacao2" }, ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_RECEPCAO,          "https://homnfe.sefaz.am.gov.br/services2/services/NfeRecepcao2" }, ;
      { "AM", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_RECEPCAOEVENTO,    "https://homnfe.sefaz.am.gov.br/services2/services/RecepcaoEvento" }, ;
...


E a escolha:

   nPos := AScan( aList, { | e | cUF == e[ 1 ] .AND. cAmbiente == e[ 2 ] .AND. nWsServico == e[ 3 ] } )
   cUrl := iif( nPos == 0, "", aList[ nPos, 4 ] )
   IF nWsServico == WS_NFE_CONSULTACADASTRO .AND. cUF $ "AC,RN,PB,SC"
      cUrl := SoapUrlNfe( "SVRS", cAmbiente, nWsServico )
   ENDIF
   DO CASE
   CASE ! Empty( cUrl )
   CASE cUf $ "AC,AL,AP,DF,ES,PB,RJ,RN,RO,RR,SC,SE,TO"
      cURL := SoapURLNFe( "SVRS", cAmbiente, nWsServico )
   CASE cUf $ "MA,PA,PI"
      cURL := SoapUrlNFe( "SVAN", cAmbiente, nWsServico )
   ENDCASE

   RETURN cUrl


Acho que simplificou um pouco.

E no caso da NFConsumidor, onde tem UF que pode usar mesmo endereço de NFE:
E não estiver na lista, pesquisa o endereço de NFE.

      { "SVRS", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_RETAUTORIZACAO,     "https://nfce-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx" }, ;
      { "SVRS", WS_AMBIENTE_HOMOLOGACAO, WS_NFE_STATUSSERVICO,      "https://nfce-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx" } }

   nPos := AScan( aList, { | e | cUF == e[ 1 ] .AND. cAmbiente == e[ 3 ] .AND. nWsServico == e[ 4 ] } )
   cUrl := iif( nPos == 0, "", aList[ nPos, 4 ] )
   IF Empty( cUrl )
      cUrl := SoapUrlNFe( cUF, cAmbiente, nWsServico )
   ENDIF

  RETURN cUrl


Inicialmente tinha colocado a versão no array, mas depois criei rotina própria pra NFE 4.00
Com certeza é só PRËVIA da 4.00, NÃO EXISTE como testar ainda.

STATIC FUNCTION SoapUrlNfe4( cUF, cAmbiente, nWsServico )

   LOCAL cUrl := ""
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mudança na SefazClass

Mensagempor JoséQuintas » 14 Set 2017 21:05

Acabei esquecendo de avisar....
Nas mudanças só errei um nome de variável da classe, como -w3 -es2 não faz checagem em nomes de métodos/variáveis, acabou passando NFCE ao invés de cNFCE.

A propósito.... alterei a alteração anterior....rs

Foi uma forma interessante de reduzir fonte.
Tinha lá a lista de webservices, 500 linhas de lista.... rs...

aList := { ;
{ "SP", "emissão", "sefaz" }, ;
...
{ "RJ", "emissão", "sefaz" } }


Transferi tudo pra um arquivo CH.

#define SEFAZ_URL_NFE := { ;
{ "SP", "emissão", "sefaz" }, ;
...
{ "RJ", "emissão", "sefaz" } }
#define SEFAZ_URL_MDFE...
#define SEFAZ_URL_CTE...


E pronto.
O fonte ficou 500 linhas menos poluído.... rs

A alteração anterior, agrupando tudo num único array, acabou sugerindo esta alteração atual.

Pra quem não entendeu qual é a ÚNICA complicação de tudo isso de NFE, CTE, MDFE, NFCE, e bumba-lelê, é só olhar a lista de endereços de internet envolvidos.
E lembrando que essa lista ainda é parcial, e na NFE 4.0 deve aumentar, porque mais UFs vão ter endereço próprio, principalmente por causa da NFCe.

https://github.com/JoseQuintas/sefazclass/blob/master/include/sefazclass.ch
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro