Complicar pra facilitar

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Complicar pra facilitar

Mensagem por JoséQuintas »

Complicar um pouco, mas não muito..... rs
Quem usa como LIB, é só gerar a LIB pelo HBP, nem importa se é Harbour ou XHarbour....
Vou separar os métodos da classe, pra próximas mudanças.

Continua tudo junto, mas separado.... rs

Até inventei uma facilidade para o XHarbour...

Código: Selecionar todos

#ifdef __XHARBOUR__
   #define ALL_PARAMETERS P1, P2, P3, P4, P5, P6, P7, P8, P9, P10
#else
   #define ALL_PARAMETERS ...
#endif
Por enquanto separei o BPE.

Código: Selecionar todos

   METHOD BpeConsulta( ALL_PARAMETERS )      INLINE Sefaz_BpeConsulta( SELF, ALL_PARAMETERS )
   METHOD BpeStatusServico( ALL_PARAMETERS ) INLINE Sefaz_BpeStatusServico( SELF, ALL_PARAMETERS )
Aí tem os fontes separados....

Código: Selecionar todos

#include "Sefazclass.ch"

FUNCTION Sefaz_BpeConsulta( oSefaz, cChave, cCertificado, cAmbiente )

   oSefaz:Setup( oSefaz:UfSigla( Substr( cChave, 1, 2 ) ), cCertificado, cAmbiente, WS_BPE_CONSULTA )
   oSefaz:cXmlEnvio := [<consSitBPe> versao="] + WS_VERSAO_BPE + [" ] + WS_XMLNS_BPE + [>]
   oSefaz:cXmlEnvio +=   XmlTag( "tpAmb", oSefaz:cAmbiente )
   oSefaz:cXmlEnvio +=   XmlTag( "xServ", "CONSULTAR" )
   oSefaz:cXmlEnvio +=   XmlTag( "chBPe", cChave )
   oSefaz:cXmlEnvio += [</conssitBPe>]
   IF Substr( cChave, 21, 2 ) != "63"
      oSefaz:cXmlRetorno := "*ERRO* Chave não se refere a BPE"
   ELSE
      oSefaz:XmlSoapPost()
   ENDIF
   oSefaz:cStatus := XmlNode( oSefaz:cXmlRetorno, "cStat" )
   oSefaz:cMotivo := XmlNode( oSefaz:cXmlRetorno, "xMotivo" )

   RETURN oSefaz:cXmlRetorno

Código: Selecionar todos

FUNCTION Sefaz_BpeStatusServico( oSefaz, cUF, cCertificado, cAmbiente )

   oSefaz:Setup( cUF, cCertificado, cAmbiente, WS_BPE_STATUSSERVICO )

   oSefaz:cXmlEnvio := [<consStatServBPe versao="] + WS_VERSAO_BPE + [" ] + WS_XMLNS_BPE + [>]
   oSefaz:cXmlEnvio +=    XmlTag( "tpAmb", oSefaz:cAmbiente )
   oSefaz:cXmlEnvio +=    XmlTag( "xServ", "STATUS" )
   oSefaz:cXmlEnvio += [</consStatServBPe>]
   oSefaz:XmlSoapPost()

   RETURN oSefaz:cXmlRetorno
Ou seja, continua igual antes, até mesmo o fonte tá quase igual, só alterou :: pra oSefaz:
E recebe a classe como parâmetro

Vantagens:
Facilita pra expandir opções
A classe fica mais leve pra carregar, porque só tem métodos pequenos

Desvantagens:
Mais arquivos de fontes - o que não é muito problema como LIB
Os nomes das funções vão ficar visíveis externamente, mesmo não sendo usadas diretamente


Já temos NFE, CTE, MDFE, BPE, NFCE... sabe mais o que vai aparecer.
Podemos ter NFSE, e outras coisas mais, sem ter um fonte quilométrico

E também podemos pensar em como facilitar pra XHarbour.
Com certeza a melhor coisa é usar HBMK2 MESMO NO XHARBOUR.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Complicar pra facilitar

Mensagem por JoséQuintas »

Retornei ao anterior, por enquanto.
A intenção vai ser colocar os endereços de webservice junto a cada tipo de transmissão.
Mas pra fazer isso, ou altera todos de uma vez, ou nenhum.
Por isso vou começar a preparar tudo antes de alterar de vez.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder