Jump to content
Fivewin Brasil

Algumas vezes apos montagem do lote danifica o xml ja assinado (flexdocs)


MARSAN

Recommended Posts

Boa tarde a todos,

 

Hoje estou passando por uma situacao que nunca tinha visto, isso ocorre na maioria das vezes quando a nfce tem muitos itens , ou seja quando a nota é muito grande.

ELE VOLTA O XML COM DOIS ?? NO INICIO E FICA DANIFICADO .

SEGUE EXEMPLO DE COMO VOLTA O XML E DE COMO FACO.

UTILIZO FLEXDOCS PURAMENTE.

   ASSINA_NFCE400(NFe_Pronta)
   ENVIA_LOTE(1,ass_Lote)
   BUSCA_LOTE(1,ASS_LOTE)
   CONSULTA_NFE(1,NFe_Assinada)

 

OBS ESTA ASSINANDO LEGAL O ARQUIVO XMLS. ACHEI QUE FOSSE O TEMPO E COLOQUEI UM INKEY(3) MAS NAO DEU CERTO MSM ASSIM.

 

FUNCTION ENVIA_LOTE(M_IND,ass_Loteok)

   Titular      := ""   
   cCNPJ        := ""
   cNroSerie    := ""
   cEmissor     := ""
   cInicioValidade:= ""
   cFimValidade  := ""
   // chamada da funcao da dll do manifesto
   cNome:=""         // tem o certificado encontrado
   MsgResultado:=""   
   cResultado:=""   //return cod da chamada
   ACHA_CERTIFICADO()

   env_siglaWS           := "svrs"                                      // Rio Grande do Sul tem o workspace
   env_tpamb             :=cTpAmb                                       // tipo de ambiente 1-produção 2 homologacao
   env_nomeCertificado   := cNOME
   env_versao            := "4.00"                                      // versao das mensagens do WS
    env_msgDados          := ass_loteok                                   // lote da nfce criado na assinatura
   env_GZip              := 0           //indica compactação 0 - não 1 - sim                                   
    env_msgRetWS          := ""                                          // retorna a mensagem XML de resposta do WS 
    env_msgResultado      := ""                                          // retorna a literal do resultado da chamada do WS 
    env_nRec              := ""                                          // retorna o numero do recibo de entrega vai ser preciso em BuscaNFe
    env_dhRecbto          := ""                                          // retorna a data e hora do recibo aaaa-mm-ddThh:mm                  
    env_tMed              := ""                                          // retorna a tempo médio de resposta em segundos                     
    env_proxy             := ""                                          // informar serviço de proxy se houver                               
    env_usuario           := ""                                          // informar usuario do proxy para autenticação                       
    env_senha             := ""                                          // informar senha do usuario proxy                                   
    env_licenca           := clicenca                                    // informar licenca da Flexdocs                                      
//   NFe_Protocolo         := ""                                          // NFe_assinada e protocolada
   cResultado := objNFeUtil:EnviaLoteV3(env_siglaWS, env_tpamb, env_nomeCertificado, env_versao, env_msgDados, env_GZip,;
                                         @env_msgRetWS, @env_msgResultado, @env_nRec, @env_dhRecbto, @env_tMed, env_proxy,;
                                                     env_usuario, env_senha, env_licenca )

//
//                      int EnviaLoteV3(string siglaWS, int tipoAmbiente, string nomeCertificado, string versao,;
//                                      string msgDados, int GZip, out string msgRetWS, out string msgResultado,;
//                                      out string nRec, out string dhRecbto, out string tMed, string proxy,;
//                                      string usuario, string senha, string licenca)

// VALIDAR O XML ASSINADO
//   VXML_Resultado:=0                                    //RECEBE O RESULTADO DA ROTINA
//   VXML_msgResultado:=""
//   VXML_qtdeErros   :=0
//   VXML_erroXML     :=""
   
//    VXML_Resultado := objNFeUtil:ValidaXML(env_msgDados, 69, @VXML_msgResultado, @VXML_qtdeErros, @VXML_erroXML)

//
//int ValidaXML(string XML, int tipoXML, out string msgResultado, out int qtdeErros, out string erroXML)
//

//   IF VXML_resultado = 5501  //XML VÁLIDO
//      MsgInfo(env_msgRetWS,"XML DE ENVIO DELOTE VALIDO E OK")
//      M_RC:=.T.
//   ELSE 
//      MsgStop(VXML_erroXML, STR(VXML_qtdeErros,4)+" ERROS") 
//      M_RC:=.T.
//   ENDIF


   IF cResultado = 103  //enviado e ok
      SELE INDPE
       IF REGLOC(0)
          REPLACE ACESSO          WITH   CHAVE     //CHAVE DE ACESSO 44 POSIÇÕES  
          REPLACE CHVNFE          WITH   CHAVE     //CHAVE DE ACESSO 44 POSIÇÕES  
          REPLACE RECIBO          WITH   env_nRec   
      *    REPLACE DTHORAREC       WITH   env_dhRecbto  
          UNLOCK
       ENDIF
      RETURN .T.
   ELSE 
      MsgStop( env_msgResultado, "FALHOU NA EnviaLOTEV3" )
       SELE INDPE
      RETURN .T.
   ENDIF

RETURN .T.

 


 

Desde ja agradeco

Alguem ja passou por isso?

Link to comment
Share on other sites

Prezado Sr. San,


O xHarbour tem problema no tratamento do retorno de string "grandes".

Como o msgDados e o msgRetWS das chamadas das funcionalidades que consomem os WS são "desnecessários", tire o @ destes parâmetros para não receber de volta a string enviada (msgDados) e o retorno do WS (msgRetWS), pois não vai fazer diferença para a sua aplicação.

Ex.:

nfeAssinada := objNFeUtil.EnviaNFe2G(siglaWS, nfe, nomeCertificado, versao, msgDados, msgRetWS, @cStat, @msgResultado, @nroRecibo, @dhRecbto, @tMed, proxy, usuario, senha, licenca)

Atenciosamente,

Equipe de Suporte FlexDocs

::IMPORTANTE::
ME RESPONDERAM ISSO NA FLEXDOCS. FAZ SENTIDO?

Link to comment
Share on other sites

   pro_siglaWS           := "SVAN"                                      // SVAN TEM O WORKSPACE DO PARÁ
    pro_tipoAmbiente      := ide_TpAmb                                      // definido como default no programa principal 1 - produção 2 - homologação
   pro_NFeAssinada       :=""                                           // xml assinado   
   IF M_IND = 1
      pro_NFeAssinada       := NFe_Protocolo                               // nfe assinada pra ser colocado a autorizacao
   ENDI
   IF M_IND = 2
      M_ARQ="\STEMBRA\XML_NFE\ASSINADO\"+ALLTRIM("NF"+INDFT->NFISPE+"-ASS.XML")

  •       pro_NFeAssinada       := MemoRead(M_ARQ)                               // nfe assinada pra ser colocado a autorizacao

   ENDI:(
    pro_nRec              := RTRIM(INDFT->RECIBO)                               // retorna o numero do recibo de entrega GRAVADO NO ENVIO DA NFe
   pro_nomeCertificado   := cNOME
   pro_versao            := "4.00"                                      // versao das mensagens do WS
    pro_msgDados          := ""                                          // retorna a mensagem XML enviada para o WS
    pro_msgRetWS          := ""                                          // retorna a mensagem XML de resposta do WS
    pro_cStat             := 0                                           // retorna o codigo do resultado da consulta da NFe (veja tabela flexdocs)
    pro_msgResultado      := ""                                          // retorna a literal do resultado da chamada do WS
    pro_nroProtocolo      := ""                                          // retorna o numero do protocolo de autorização
    pro_dhProtocolo       := ""                                          // retorna a data e hora da autorização
    pro_cMsg              := ""                                          // codigo de msg da SEFAZ pra aviso do emissor
    pro_xMsg              := ""                                          // literal da msg da SEFAZ

    pro_proxy             := ""                                          // informar serviço de proxy se houver                               
    pro_usuario           := ""                                          // informar usuario do proxy para autenticação                       
    pro_senha             := ""                                          // informar senha do usuario proxy                                   
    pro_licenca           := clicenca                                    // informar licenca da Flexdocs                                      

   NFe_Autorizada := objNFeUtil:BuscaNFe2G(pro_siglaWS, pro_tipoAmbiente, pro_NFeAssinada, pro_nRec, pro_nomeCertificado, pro_versao,;
                                            @pro_msgDados, @pro_msgRetWS, @pro_cStat, @pro_msgResultado, @pro_nroProtocolo,;
                                                         @pro_dhProtocolo, @pro_cMsg, @pro_xMsg, pro_proxy, pro_usuario, pro_senha, pro_licenca)
   

 

Link to comment
Share on other sites

BOA TARDE, EM ALGUNS CASOS MEU XML ESTA FICANDO DANIFICADO. JA FIZ CONTATO COM FLEXDOCS POREM NAO CONSEGUIRAM ME AJUDAR.

TO DESCONFIANDO DO MEMOREAD. VOCES QUE SAO MAIS EXPERIENTES TEM ALGUMA IDEIA, SO TENHO ERRO QUANDO A NOTA É GRANDE.

USSO ASSIM:

O QUE POSSO FAZER PARA SUBSTITUIR?

 

      M_ARQ="\SISTEMA\XML_NFE\ASSINADO\"+ALLTRIM("NF"+INDFT->NFISPE+"-ASS.XML")

  •       pro_NFeAssinada       := MemoRead(M_ARQ)                               // nfe assinada pra ser colocado a autorizacao

   NFe_Autorizada := objNFeUtil:BuscaNFe2G(pro_siglaWS, pro_tipoAmbiente, pro_NFeAssinada, pro_nRec, pro_nomeCertificado, pro_versao,;
                                            @pro_msgDados, @pro_msgRetWS, @pro_cStat, @pro_msgResultado, @pro_nroProtocolo,;
                                                         @pro_dhProtocolo, @pro_cMsg, @pro_xMsg, pro_proxy, pro_usuario, pro_senha, pro_licenca)

Link to comment
Share on other sites

tente dessa maneira

Fe_Autorizada := objNFeUtil:BuscaNFe2G(pro_siglaWS, pro_tipoAmbiente, pro_NFeAssinada, pro_nRec, pro_nomeCertificado, pro_versao,;
                                            pro_msgDados, pro_msgRetWS, @pro_cStat, @pro_msgResultado, @pro_nroProtocolo,;
                                                         @pro_dhProtocolo, @pro_cMsg, @pro_xMsg, pro_proxy, pro_usuario, pro_senha, pro_licenca)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...