MARSAN Posted October 8, 2018 Report Share Posted October 8, 2018 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? Quote Link to comment Share on other sites More sharing options...
MARSAN Posted October 9, 2018 Author Report Share Posted October 9, 2018 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? Quote Link to comment Share on other sites More sharing options...
MARSAN Posted October 9, 2018 Author Report Share Posted October 9, 2018 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) Quote Link to comment Share on other sites More sharing options...
MARSAN Posted October 9, 2018 Author Report Share Posted October 9, 2018 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) Quote Link to comment Share on other sites More sharing options...
aferra Posted October 9, 2018 Report Share Posted October 9, 2018 tente dessa maneiraFe_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) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.