Página 1 de 1

Complicar pra facilitar

Enviado: 14 Nov 2017 20:39
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.

Complicar pra facilitar

Enviado: 18 Nov 2017 19:11
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.