Página 1 de 1

Começando com CTE

Enviado: 09 Set 2016 16:05
por JoséQuintas
As rotinas de CTE que estavam na classe eram pra versão antiga, CTE 1.00.
Comecei a testar e ajustar.
Após uns 10 minutos de alteração, fiz meu primeiro envio.... rs
cte.png

- Atualizar endereços de webservice
- Atualizar número de versão do CTE de 1.00 pra 2.00
- Atualizar nome do serviço
- Atualizar nome da SOAP Action

Só pra mostrar que o principal funciona, os detalhes é que podem precisar de ajuste.
E não tem muito aonde mexer

Código: Selecionar todos

METHOD CTeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente ) CLASS SefazClass

   ::cVersaoXml   := "2.00"
   ::cServico     := "http://www.portalfiscal.inf.br/cte/wsdl/CteRecepcao"
   ::cSoapAction  := "cteRecepcaoLote"
   ::cWebService  := ::GetWebService( ::cUF, WS_CTE_RECEPCAO, ::cAmbiente, WS_PROJETO_CTE )
   ::cXmlDados    := ""
   ::cXmlDados    += [<envicte versao="] + ::cVersaoXml + [" xmlns="http://www.portalfiscal.inf.br/cte">]
   // FOR nCont = 1 TO Len( Lotes )
   ::cXmlDados    += XmlTag( "idLote", cLote )
   ::cXmlDados    += cXml
   // NEXT
   ::cXmlDados    += [</envicte>]
   ::XmlSoapPost( ::cUF, ::cCertificado, WS_PROJETO_CTE )

   RETURN ::cXmlRetorno
...
   CASE cUF == "SP" .AND. cAmbiente == WS_AMBIENTE_HOMOLOGACAO
      DO CASE
      CASE nWsServico == WS_CTE_RECEPCAO ;               cUrlWs := "https://homologacao.nfe.fazenda.sp.gov.br/cteWEB/services/cteRecepcao.asmx"
Consultar Recibo vai ser mais demorado, esse não existe ainda na classe.

Começando com CTE

Enviado: 09 Set 2016 16:35
por JoséQuintas
Consultar recibo... não aceitou meu xml....kkkkkk
cte2.png

Começando com CTE

Enviado: 09 Set 2016 16:42
por JoséQuintas
Ok, corrigido a consulta, faltou o xmlns="www.portalfiscal.inf.br/cte"

Minha dedução de ser esse problema foi pela resposta anterior:
acusou erro no namespace, e o número de recibo veio zerado, o que significa que nem aceitou a consulta, então o erro era no XML de consulta.


Agora o problema é o XML do CTE mesmo, e que aceita normalmente no emissor.
cte4.png

Começando com CTE

Enviado: 26 Set 2016 13:16
por NiltonGM
Olá José Quintas,

Se precisar de alguns XMLs de CTE's autorizados para estudar é só pedir, tenho interesse em desenvolver as rotinas para criar o XML, Certifca-lo com o CD.(não sei como fazer isso), transmitir a Sefaz, pegar status da Sefaz e gerar o PDF (DACTE), trabalho com conhecimento desde a década de 80 e com CTE desde qdo inventaram, porem sempre terceirizei a transmissão e PDF do CTE, meu TMS envia ao parceiro via JSON as informações para seu webservice e me retornam a DACTE e status, só que meu parceiro não está atendendo muito bem no suporte pois ultimamente seu webservice tem dado muito problemas, por isso precisava desenrolar eu mesmo esse processo mas não sei como fazer, acho q se eu estudar esse projeto hbNEFe que é semelhante ao CTE/MDF-e devo conseguir fazer, vejo q vc já consegue enviar e pegar status de CTE, parabéns! Seus exemplos me ajudarão muito.

Começando com CTE

Enviado: 26 Set 2016 13:46
por JoséQuintas
Valeu, mas está ok essa parte.

Não sei se entendeu a classe Sefaz, é pra NFE, CTE, MDFE e o que mais puder ser adicionado.

Pra mim a novidade está sendo colocar em prática a emissão própria pra CTE e MDFE, mas não o documento em si.
autorizados.png
292.282 NFE (modelo 55)
8.877 CTE (modelo 57 )
2.571 MDFE ( modelo 58)

Até que emiti bastante CTE e MDFE, tudo gerando XML assinado para o emissor gratuito.

Daquele dia pra cá, já é sem o emissor gratuito.

Começando com CTE

Enviado: 26 Set 2016 14:32
por JoséQuintas
A propósito...
Como está minha rotina de CTE no momento, já autorizando:

Código: Selecionar todos

   ...
   cTxtXml +=       [</infDoc>]
   CteBlocoSeguro( @cTxtXml, cSegEmpresa, cSegApolice, cSegAverbacao, nValNot )
   CteBlocoInfModal( @cTxtXml, cRntrc, dDatPre )
   cTxtXml +=    [</infCTeNorm>]
   cTxtXml += [</infCte>]
   cTxtXml += [</CTe>]
   cRetorno := AssinaXml( @cTxtXml, NomeCertificado( "CARBOLUB" ) )
   hb_memoWrit( "NFE\CTE-" + AllTrim( cCteNum ) + "-Assinado.xml", cTxtXml )
   IF cRetorno == "OK"
      oSefaz := SefazClass()
      oSefaz:CteLoteEnvia( cTxtXml, "1", "SP", NomeCertificado( "CARBOLUB" ), "1" )
      IF oSefaz:cStatus $ "100,101,202,302"
         hb_MemoWrit( hb_cwd() + "..\CARBOLUB\IMPORTA\CTE-" + cCteNum + "-" + oSefaz:cStatus + "-Autorizado.xml", oSefaz:cXmlAutorizado )
         ShellExecuteOpen( UnidanfePDF( oSefaz:cXmlAutorizado ) )
         MsgExclamation( iif( oSefaz:cStatus == "100", "CTE Autorizado", "CTE Denegado" ) )
      ELSE
         hb_MemoWrit( "NFE\CTE-" + cCteNum + "-02-Assinado.xml",  cTxtXml )
         hb_MemoWrit( "NFE\CTE-" + cCteNum + "-03-Envelope.xml",  oSefaz:cXmlSoap )
         hb_MemoWrit( "NFE\CTE-" + cCteNum + "-04-Recibo.xml",    oSefaz:cXmlRecibo )
         hb_MemoWrit( "NFE\CTE-" + cCteNum + "-05-Protocolo.xml", oSefaz:cXmlProtocolo )
         hb_MemoWrit( "NFE\CTE-" + cCteNum + "-06-Retorno.xml",   oSefaz:cXmlRetorno )
         IF ! Empty( oSefaz:cMotivo )
            MsgExclamation( "Erro " + oSefaz:cStatus + " " + oSefaz:cMotivo )
         ELSE
            MsgExclamation( "Erro desconhecido " + Pad( oSefaz:cXmlProtocolo, 1000 ) )
         ENDIF
      ENDIF
   ENDIF

Começando com CTE

Enviado: 26 Set 2016 16:13
por NiltonGM
Que legal Zeh, vou baixar o projeto NFe e ver se consigo colocar o Certificado Digital no XML e depois autorizar o CTE junto a Sefaz. Espero que todas essas funções e classes q vc mostrou aí estejam lá no projeto.
De antemão agradeço o compartilhamento.

Dei o primeiro passo, baixei tudo do seu link https://github.com/JoseQuintas/sefazclass
Agora é regaçar as mangas e engolir os caroços!! rs

Abraço!

Começando com CTE

Enviado: 27 Set 2016 09:04
por JoséQuintas
Espero que todas essas funções e classes q vc mostrou aí estejam lá no projeto
todas as "uma de cada"..... rs

Código: Selecionar todos

AssinaXml()
SefazClassO