Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3376 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia 
No acbrnfemonitor ao gerar a nfe eu passo a data no ini da seguinte forma:
Emissao=17/08/201509:09:15-04:00 e funciona bem.. 
porem no acbrmonitorplus quando eu passo o mesmo comando ele me retorna

ERRO: "17/08/201509:09:15-04:00" is not a valid time
tenho que usar outra tag ? estou passando o comando de forma errada ?

Alberto Leal

www.tecwebcg.com

 

Postado

Sim esta correta.. eu gerei a nota no abcrnfemonitor e depois fechei ele abri o acbrmonitor plus e mandei gerar novamente sem alterar nada no ini
Sera que é pq eu compilei o acbrmonitorplus em um Windows em que data é formato americano ?

 

Fiz o teste com a versão do forum e deu mesmo erro

Alberto Leal

www.tecwebcg.com

 

Postado

esta olhando as units do monitor 

no nfemonitor esta assim
Ide.dEmi       := NotaUtil.StringToDateTime(INIRec.ReadString( 'Identificacao','Emissao',INIRec.ReadString( 'Identificacao','dEmi',INIRec.ReadString( 'Identificacao','dhEmi','0'))));
já no plus esta
Ide.dEmi       := StringToDateTime(INIRec.ReadString( 'Identificacao','Emissao',INIRec.ReadString( 'Identificacao','dEmi',INIRec.ReadString( 'Identificacao','dhEmi','0'))));

o NotaUtil nao é mais necessario ?

Alberto Leal

www.tecwebcg.com

 

Postado

Antigo era assim:

function StringToDateTime(const DateTimeString : String ; const Format : String
   ) : TDateTime ;
 Var
    OldShortDateFormat, AStr : String ;
begin
  OldShortDateFormat := ShortDateFormat ;
  try
     if Format <> '' then
        ShortDateFormat := Format ;

     AStr := Trim( StringReplace(DateTimeString,'/',DateSeparator, [rfReplaceAll])) ;
     AStr := StringReplace(AStr,':',TimeSeparator, [rfReplaceAll]) ;

     Result := StrToDateTime( AStr ) ;
  finally
     ShortDateFormat := OldShortDateFormat ;
  end ;
end ;

Agora esta assim:

function StringToDateTime(const DateTimeString : String ; const Format : String
   ) : TDateTime ;
Var
  AStr : String;
  {$IFDEF HAS_FORMATSETTINGS}
  FS: TFormatSettings;
  {$ELSE}
  OldShortDateFormat: String ;
  {$ENDIF}
begin
  Result := 0;
  if (DateTimeString = '0') or (DateTimeString = '') then
    exit;

  {$IFDEF HAS_FORMATSETTINGS}
  FS := CreateFormatSettings;
  if Format <> '' then
    FS.ShortDateFormat := Format;

  AStr := Trim( StringReplace(DateTimeString,'/',FS.DateSeparator, [rfReplaceAll])) ;
  AStr := StringReplace(AStr,':',FS.TimeSeparator, [rfReplaceAll]) ;

  Result := StrToDateTime(AStr, FS);
  {$ELSE}
  OldShortDateFormat := ShortDateFormat ;
  try
    if Format <> '' then
      ShortDateFormat := Format ;

    AStr := Trim( StringReplace(DateTimeString,'/',DateSeparator, [rfReplaceAll])) ;
    AStr := StringReplace(AStr,':',TimeSeparator, [rfReplaceAll]) ;

    Result := StrToDateTime( AStr ) ;
  finally
    ShortDateFormat := OldShortDateFormat ;
  end ;
  {$ENDIF}
end ;

 

As diferencas sao que agora tem um ifdef e 

  if (DateTimeString = '0') or (DateTimeString = '') then
    exit;

Alberto Leal

www.tecwebcg.com

 

  • Fundadores
Postado

Acho que a diferença entre as versões é apenas o fato de que o ACBrNFeMonitor é compilado em Delphi, e o ACBrMonitorPLUS é compilado em Lazarus...

A chamada a StringToDateTime em ambos os casos (NotaUtil ou ACBrUtil) irá na verdade chamar o método nativo "StrToDateTime"...

Provavelmente o Lazarus faz um "parse" diferente da maneira que o Delphi fazia...

O Tipo "Ide.dEmi", (assim como todos os tipos data de TNFe) são do tipo TDateTime... que simplesmente não aproveitam a informação de UTC

Porque você está usando esse formato para datas ? Ele segue algum padrão ou recomendação ?

Talvez seja mais simples, você modificar a sua rotina de geração do TXT... Os problemas no seu campo são:

  • Sem espaço de separação entre a Data e Hora.
  • Com informação UTC

Experimente enviar como:

Emissao=17/08/2015 09:09:15

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Este tópico foi criado há 3376 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.