Ir para conteúdo
  • Cadastre-se

robersonrech

Membros
  • Total de ítens

    2
  • Registro em

  • Última visita

Últimos Visitantes

595 visualizações

robersonrech's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputação

  1. Alterado para PChar para que retorne corretamente a mensagem de erro. Como era antes: { TACBrHTTPReqResp } function TACBrHTTPReqResp.GetWinInetError(ErrorCode:Cardinal): AnsiString; const winetdll = 'wininet.dll'; var Len: Integer; Buffer: PAnsiChar; begin Len := FormatMessage( FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_IGNORE_INSERTS or FORMAT_MESSAGE_ARGUMENT_ARRAY, Pointer(GetModuleHandle(winetdll)), ErrorCode, 0, @Buffer, SizeOf(Buffer), nil); try while (Len > 0) and {$IFDEF UNICODE}{$IFDEF FPC} (Buffer[Len - 1] in [#0..#32, '.']) {$ELSE} (CharInSet(Buffer[Len - 1], [#0..#32, '.'])) {$ENDIF} {$ELSE}(Buffer[Len - 1] in [#0..#32, '.']) {$ENDIF} do Dec(Len); SetString(Result, Buffer, Len); finally LocalFree(HLOCAL(Buffer)); end; end; Nova function: { TACBrHTTPReqResp } function TACBrHTTPReqResp.GetWinInetError(ErrorCode:Cardinal): AnsiString; const winetdll = 'wininet.dll'; var Len: Integer; Buffer: PChar; begin Len := FormatMessage( FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_IGNORE_INSERTS or FORMAT_MESSAGE_ARGUMENT_ARRAY, Pointer(GetModuleHandle(winetdll)), ErrorCode, 0, @Buffer, SizeOf(Buffer), nil); try while (Len > 0) and {$IFDEF UNICODE}{$IFDEF FPC} (Buffer[Len - 1] in [#0..#32, '.']) {$ELSE} (CharInSet(Buffer[Len - 1], [#0..#32, '.'])) {$ENDIF} {$ELSE}(Buffer[Len - 1] in [#0..#32, '.']) {$ENDIF} do Dec(Len); SetString(Result, Buffer, Len); finally LocalFree(HLOCAL(Buffer)); end; end;
  2. Boa tarde, Fiz uma alteração na Unit pmdfeMDFeW adicionando a condição na function GerarXml if trim(MDFe.infMDFe.ID) = '' then MDFe.infMDFe.ID := chave; Ficou assim function TMDFeW.GerarXml: boolean; var chave: AnsiString; Gerar: boolean; xProtMDFe: String; begin chave := ''; if not GerarChave(Chave, MDFe.ide.cUF, MDFe.ide.cMDF, StrToInt(MDFe.ide.modelo), MDFe.ide.serie, MDFe.ide.nMDF, StrToInt(TpEmisToStr(MDFe.ide.tpEmis)), MDFe.ide.dhEmi, MDFe.emit.CNPJ) then Gerador.wAlerta('#001', 'infMDFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE); chave := StringReplace(chave,'NFe','MDFe',[rfReplaceAll]); if trim(MDFe.infMDFe.ID) = '' then MDFe.infMDFe.ID := chave; MDFe.ide.cDV := RetornarDigito(MDFe.infMDFe.ID); MDFe.Ide.cMDF := RetornarCodigoNumerico(MDFe.infMDFe.ID, 2); // Carrega Layout que sera utilizado para gera o txt Gerador.LayoutArquivoTXT.Clear; Gerador.ArquivoFormatoXML := ''; Gerador.ArquivoFormatoTXT := ''; Gerador.wGrupo(ENCODING_UTF8, '', False); if MDFe.procMDFe.nProt <> '' then Gerador.wGrupo('mdfeProc versao="' + MDFeEnviMDFe + '" ' + NAME_SPACE_MDFe, ''); Gerador.wGrupo('MDFe ' + NAME_SPACE_MDFe); Gerador.wGrupo('infMDFe Id="' + MDFe.infMDFe.ID + '" versao="' + MDFeEnviMDFe + '"'); GerarInfMDFe; Gerador.wGrupo('/infMDFe'); if FOpcoes.GerarTagAssinatura <> taNunca then begin Gerar := true; if FOpcoes.GerarTagAssinatura = taSomenteSeAssinada then Gerar := ((MDFe.signature.DigestValue <> '') and (MDFe.signature.SignatureValue <> '') and (MDFe.signature.X509Certificate <> '')); if FOpcoes.GerarTagAssinatura = taSomenteParaNaoAssinada then Gerar := ((MDFe.signature.DigestValue = '') and (MDFe.signature.SignatureValue = '') and (MDFe.signature.X509Certificate = '')); if Gerar then begin FMDFe.signature.URI := somenteNumeros(MDFe.infMDFe.ID); FMDFe.signature.Gerador.Opcoes.IdentarXML := Gerador.Opcoes.IdentarXML; FMDFe.signature.GerarXML; Gerador.ArquivoFormatoXML := Gerador.ArquivoFormatoXML + FMDFe.signature.Gerador.ArquivoFormatoXML; end; end; Gerador.wGrupo('/MDFe'); if MDFe.procMDFe.nProt <> '' then begin xProtMDFe := '<protMDFe versao="' + MDFeEnviMDFe + '">' + '<infProt>'+ '<tpAmb>'+TpAmbToStr(MDFe.procMDFe.tpAmb)+'</tpAmb>'+ '<verAplic>'+MDFe.procMDFe.verAplic+'</verAplic>'+ '<chMDFe>'+MDFe.procMDFe.chMDFe+'</chMDFe>'+ '<dhRecbto>'+FormatDateTime('yyyy-mm-dd"T"hh:nn:ss',MDFe.procMDFe.dhRecbto)+'</dhRecbto>'+ '<nProt>'+MDFe.procMDFe.nProt+'</nProt>'+ '<digVal>'+MDFe.procMDFe.digVal+'</digVal>'+ '<cStat>'+IntToStr(MDFe.procMDFe.cStat)+'</cStat>'+ '<xMotivo>'+MDFe.procMDFe.xMotivo+'</xMotivo>'+ '</infProt>'+ '</protMDFe>'; Gerador.wTexto(xProtMDFe); Gerador.wGrupo('/mdfeProc'); end; Gerador.gtAjustarRegistros(MDFe.infMDFe.ID); Result := (Gerador.ListaDeAlertas.Count = 0); end; Espero ter contribuído Abraços
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.