Uso da classesefaz

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

Uso da classesefaz

Mensagem por JoséQuintas »

Fazer o inverso da hbcompat.ch, ou olhar o que faz o TRY do xHarbour, se é #define ou outra coisa.
Não sei se seria desta forma

#ifdef __XHARBOUR__
#command BEGIN SEQUENCE WITH __BreakBlock() => TRY
#endif

lembrando que uma coisa que complica no xHarbour é porque nele é obrigatório indicar a versão do MSXML e no Harbour é automático.
E parece não existir um padrão nas UFs.
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/
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Uso da classesefaz

Mensagem por malcarli »

Obrigado, por responder. Tentando usar a sua lógica, fiz o comando abaixo mas não funcionou. Teria uma idéia?

Código: Selecionar todos


 #xcommand RECOVER [USING <oErr>] <-oErr-> => CATCH [<!oErr!>]


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

Uso da classesefaz

Mensagem por JoséQuintas »

E olhando no ppo, o que é substituído pelo TRY/CATH ?

Senão, uma forma de não ter muito trabalho na troca de versão, seria criar uma rotina de conversão.

Código: Selecionar todos

cTxt := MemoRead( "fonte.prg" )
cTxt := StrTran( cTxt, "BEGIN SEQUENCE WITH __BreakBlock()", "TRY" )
cTxt := StrTran( cTxt, "END SEQUENCE", "CATCH" + Chr(13) + Chr(10) + "END" )
Lembre-se:
Eu conheço Harbour, e não Xharbour.
Não sei o que dá pra usar no xHarbour como funcionamento equivalente.

A princípio é apenas pra caso dê erro, desviar para o que vém depois de END SEQUENCE, nem precisa tratamento especial.

Código: Selecionar todos

lOk := .F.
BEGIN SEQUENCE WITH __BreakBlock()
   ? 10 + "A"
   lOk := .T.
END SEQUENCE
IF .NOT. lOk
   ? "Não conseguiu somar"
ENDIF
Veja o que seria equivalente 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
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Uso da classesefaz

Mensagem por oxent_jabah »

Boa Noite, Quintas!

Por gentileza, você poderia atualizar os endereços de Homologação do CEARÁ no projeto:

ze_spedsefazclass.prg
linha: 1542
ELSE
DO CASE
CASE nWsServico == WS_NFE_AUTORIZACAO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... zacao?wsdl"
CASE nWsServico == WS_NFE_CANCELAMENTO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... celamento2"
CASE nWsServico == WS_NFE_CONSULTACADASTRO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... stro2?wsdl"
CASE nWsServico == WS_NFE_CONSULTAPROTOCOLO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... ulta2?wsdl"
CASE nWsServico == WS_NFE_DOWNLOADNF ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... oadNF?wsdl"
CASE nWsServico == WS_NFE_INUTILIZACAO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... acao2?wsdl"
CASE nWsServico == WS_NFE_RECEPCAO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... pcao2?wsdl"
CASE nWsServico == WS_NFE_RECEPCAOEVENTO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... vento?wsdl"
CASE nWsServico == WS_NFE_RETRECEPCAO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... pcao2?wsdl"
CASE nWsServico == WS_NFE_STATUSSERVICO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... vico2?wsdl"
CASE nWsServico == WS_NFE_RETAUTORIZACAO ; cUrlWs := "https://nfeh.sefaz.ce.gov.br/nfe2/servi ... zacao?wsdl"
ENDCASE
ENDIF
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Uso da classesefaz

Mensagem por JoséQuintas »

ok, atualizados.
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
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Uso da classesefaz

Mensagem por oxent_jabah »

Boa Tarde, Quintas!

Muito Obrigado!
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

Uso da classesefaz

Mensagem por andersoncamilo »

Boa tarde.

Alguém já esta usando a classesefaz no Xharbour?

Fiz alguns ajustes consegui compilar, esta selecionando o certificado, más ao fazer a consulta de STATUS DE SERVIÇO esta retornando o seguinte erro:
Erro SOAP: XML retorno não contém soapenv:Body Erro: Na conexão com webservice https://nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx

Compilando com o Harbour funciona normalmente, se deixar de selecionar o certificado no Harbour aparece o mesmo erro acima.

Acredito que seja algum parâmetro na seleção do certificado no Xharbour que esta errado, alguém poderia ajudar.

Obrigado

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

Uso da classesefaz

Mensagem por JoséQuintas »

Importante:
Veja :cXmlRetorno pra ter a mensagem de retorno

Também é bom testar entre versões diferentes de XML.

Veja esta parte:

Código: Selecionar todos

#ifdef __XHARBOUR__
      IF ::cUF == "GO" .AND. ::cAmbiente == "2"
         ::cXmlRetorno := "Erro: Criando objeto MSXML2.ServerXMLHTTP.5.0"
         oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0" )
      ELSE
        ::cXmlRetorno := "Erro: Criando objeto MSXML2.ServerXMLHTTP.6.0"
        oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" )
      ENDIF
#else
      oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
#endif
No Harbour a seleção é automática.
No xHarbour, é bom confirmar cada UF.

Lembrando que está havendo uma mudança na comunicacão, e pode se tratar desse tipo de coisa.
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

Uso da classesefaz

Mensagem por JoséQuintas »

No xHarbour, é bom confirmar cada UF.
Como dá pra ver no fonte, em Goiás na época estava uma versão pra homologação e outra pra produção.
Então o teste pode ser mais chato do que apenas testar uma UF.

Quem sabe alguém poderia fazer igual no xHarbour?
Copiar win_OleCreateObject() do Harbour para o 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
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

Uso da classesefaz

Mensagem por Wanderlei »

Boa Tarde Zé,
Onde eu pego o projeto atualizado?
Estou usando o ACBrMonitor mas vou mudar para usar a Classe.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

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

Uso da classesefaz

Mensagem por JoséQuintas »

Não tem notícias de mudanças porque não tem muito o que mudar..... rs

Uma coisa é a comunicação, e outra coisa é o XML.

Pra validar XMLs, basta baixar schemmas do site da Sefaz, e usar a rotina de validação.
Isso faz quem quiser, quando quiser, e se quiser. A classe não obriga a isso.
Pode ser interessante pra deixar XMLs preparados pras próximas versões de documento, e ajudar a conferir.

Quanto à comunicação:
Estou deixando pra depois CTE 3.0, MDFE 3.0 e NFE 4.0, esta última nem existe ainda endereços de teste.

https://github.com/JoseQuintas/sefazclass

Só lembrando:

A classe não faz conversão. No caso de NFE, CTE, MDFE, ela vai pegar seu XML e enviar diretamente pra Fazenda.
Por isso ela não precisa ficar sendo atualizada.
Dá a impressão de que parou, mas é porque não tem o que mexer mesmo.... rs
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
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

Uso da classesefaz

Mensagem por Wanderlei »

Blz, valeu pela resposta, vou começar a migrar do ACBrMonitor para a Classe.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Uso da classesefaz

Mensagem por MSDN »

Utilizando a classe já pronta para NF-e, alguém tem ideia do que, e onde mudar para começar a fazer testes de homologação para NFC-e ?

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

Uso da classesefaz

Mensagem por JoséQuintas »

Como NFCe utiliza o mesmo manual da NFe, acredito que não precise alterar nada.

Mas a classe não tem Danfe pra NFCe, apenas um PDF com QRCode, só pra servir como ponto inicial.
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/
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Uso da classesefaz

Mensagem por MSDN »

Ok Quintas, obrigado pela dica !
Como ainda não tenho certificado pra testar, vou esperar um pouco e testar em um cliente, em seguida reporto aqui os resultados.
Caso vc ou outra pessoa pudesse criar um exemplo simples mas de acordo com o que se usa no dia-a-dia (aquele exemplo da classe é simples demais...desculpe), já ajuda muito quem quiser usar o projeto, mostrando como e quando chamar as rotinas, da mesma forma que fiz quando disponibilizei o exemplo SUPER na distribuição da MiniGUI Extended.

Abraços
Responder