Ir para conteúdo
  • Cadastre-se

dev botao

Dados Redução Z


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

Recommended Posts

  • Fundadores

Acho que não... os tipos mais modificados são ShortDateFormat e DecimalSeparator

 

Se no D7 pudermos modificar:

ShortDateFormat ->  FormatSettings.ShortDateFormat

DecimalSeparator -> FormatSettings.DecimalSeparator

 

acho que resolve o problema, e de quebra removemos vários Warnings da compilação...   (Vou testar)

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.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Pessoal,

 desculpe minha insistência. Mas não sei se vocês estão percebendo o problema do ponto de vista correto.

Vou dar um exemplo de como acredito deveria ser corrigido o problema. A função StringToDateTime é definida no ACBrUtil.pas como:

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 ;

Deveria ser alterada para algo como:

Function StringToDateTime( const DateTimeString : String;
   const Format : String = '') : TDateTime ;
 Var
    AStr : String ;
    myFormatSettings: TFormatSettings;
begin
  myFormatSettings.Create;

  if Format <> '' then
    myFormatSettings.ShortDateFormat := Format ;

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

  Result := StrToDateTime( AStr, myFormatSettings ) ;
end ;

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sim, é uma das possibilidades... mas código semelhante a esse existem em vários locais dos fontes... Inserir "FormatSettings." na frente seria mais simples...

 

PS: Não precisa liberar myFormatSettings ?

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.

Link para o comentário
Compartilhar em outros sites

  • Consultores
Sim, é uma das possibilidades... mas código semelhante a esse existem em vários locais dos fontes... Inserir "FormatSettings." na frente seria mais simples...

 

O detalhe é que quando inserimos o FormatSettings na frente estamos alterando as configurações do aplicativo inteiro. Se em outra thread fizer o mesmo alterando para outro valor, teríamos um problema. Usar a variável global FormatSettings não é thread-safe.

 

Mas você tem toda razão em dizer que daria um bom trabalho modificar isso em todos os lugares. Principalmente porque o código atual parece ser compatível com as versões do Delphi até o XE2.

No entanto, se tivermos que colocar uma diretiva de compilação nos vários lugares onde é há métodos que fazem uso de variáveis como OldShortDateFormat e OldDecimalSeparator, acredito que o trabalho seria quase o mesmo.

 

PS: Não precisa liberar myFormatSettings ?

Não precisa liberar pois myFormatSettings é um Record. Nem existe o método Free. :)

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Se não me engano apenas a EPSON permitiria isso... mas o ACBrECF não tem interface para receber parâmetros de Data ou CRZ

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Leitura da Memoria Fiscal sim, vc consegue por Data ou CRZ, mas elas retorna muito menos informações do que o "DadosUltimaReducaoZ"

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.

Link para o comentário
Compartilhar em outros sites

  • 5 anos depois...
Em 21/01/2013 at 09:19, Daniel Simoes disse:

Você deve usar a leitura de DadosReducaoZ instantes antes de emitir a Z... e está correto o procedimento de somar 1 ao CRZ e COO

Esse método é mais seguro, pois ele lê cada registrador/totalizador individualmente

 

Após a Z todos os registrador/totalizador são todos zerados.. então chamar DadosReducaoZ não funcionará... Após a Z use DadosUltimaReducaoZ.

Esse método usa comando específico do ECF para retornar em um "linguição de dados" as informações da última Z emitida... Porém, a informação retornada depende muito de cada fabricante... e muitos dos registradores/totalizadores não são retornados, por isso eles são preenchidos na Classe como "-1" ou "" (vazio)

 

O ideal é usar ambos os métodos... e fazer uma mesclagem com as informações de ambos, dando preferência a informação de DadosUltimaReducaoZ (caso ela exista)

Bom dia Daniel. Tem acontecido dos dados da redução Z ficarem inconsistentes. Nesse caso irei fazer o que você sugeriu "Ler os dados da última redução" .

Mas se os dados da Redução Z ficarem corretos e as informações da ultima redução Z ficarem inconsistentes.  Nessa situação não posso dar preferência para última redução Z.  Qual seria o melhor procedimento?

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Como você consegue saber que os dados estão inconsistentes?

Se tiver uma rotina que detecta isso... ignore o conteúdo e deixe o que já está lá gravado...

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.

Link para o comentário
Compartilhar em outros sites

12 horas atrás, Daniel Simoes disse:

Como você consegue saber que os dados estão inconsistentes?

Se tiver uma rotina que detecta isso... ignore o conteúdo e deixe o que já está lá gravado...

Veja os problemas que eu tive: 

• O CRZ ficou como 1 ou zero. 

• Não gravou a tributação T1800.

• O numero de serie ficou incompleto. 

• A venda bruta diárias ficou com o mesmo valor do Grand Total. 

• As totalizadores ficaram com "-1". 

No mês de julho foram mais de 1000 reduções Z emitidas e isso aconteceu em umas 20.

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Nossa muitas inconsistências... o CRZ e Num.Série inválido já é um forte indicador para desprezar o retorno de Dados Ultima Redução Z

Verifique se não há atualização para o Sw.Básico desse equipamento...

Veja ainda esse tópico:

 

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.

Link para o comentário
Compartilhar em outros sites

Em 07/08/2018 at 22:42, Daniel Simoes disse:

Nossa muitas inconsistências... o CRZ e Num.Série inválido já é um forte indicador para desprezar o retorno de Dados Ultima Redução Z

Verifique se não há atualização para o Sw.Básico desse equipamento...

Veja ainda esse tópico:

 

Obrigado Daniel. Acredito que o Merge irá resolver. 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 07/08/2018 at 22:42, Daniel Simoes disse:

Nossa muitas inconsistências... o CRZ e Num.Série inválido já é um forte indicador para desprezar o retorno de Dados Ultima Redução Z

Verifique se não há atualização para o Sw.Básico desse equipamento...

Veja ainda esse tópico:

 

Bom dia Daniel. 

O Merge resolveu. Exceto para os meios de pagamento. Ao ler a última redução Z não foi retornado o meios de pagamento(Dinheiro, cartão e etc). 

Estou utilizando bematech mp-4000 th FI.

Acredito que não seja possível ler os meios de pagamento da última redução Z, correto?  Caso não seja possível já estou satisfeito com a solução. 

Vou analisar a frequência com que os meios de pagamentos ficam errados na RZ. Se frequência for muito alta irei buscar dados da forma de pagamento na base de dados e não mais na RZ.

 

Obrigado. 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
1 hora atrás, william disse:

Acredito que não seja possível ler os meios de pagamento da última redução Z, correto?

Acho que depende do modelo... Se você olhar nos fontes, em ACBrECFBematech.pas em TACBrECFBematech.GetDadosUltimaReducaoZ temos o seguinte retorno do ECF...

    {ESC 88 Tamanho de Retorno: 621 bytes (BCD), com a seguinte estrutura:
    Descrição             Bytes         (Digitos BCD)
    RZautomática se zero indica que a RZ foi emitida por comando 1 (2)  1   ,  2
    CRO Contador de Reinício de Operação 2 (4)                          3   ,  6
    CRZ Contador de Redução Z 2 (4)                                     7   , 10
    COO Contador de Ordem de Operação 3 (6)                             11  , 16
    GNF Contador Geral de Operações Não Fiscais 3 (6)                   17  , 22
    CCF Contador de Cupom Fiscal 3 (6)                                  23  , 28
    GRG Contador Geral de Relatório Gerencial 3 (6)                     29  , 34
    CFD Contador de Fita Detalhe Emitida 3 (6)                          35  , 40
    NFC Contador de Operação Não Fiscal Cancelada 2 (4)                 41  , 44
    CFC Contador de Cupom Fiscal Cancelado 2 (4)                        45  , 48
    CON[30] Contadores Específicos de Operações não Fiscais 30x2 (30x4) 49  ,168
    CER[30] Contadores Específicos de Relatórios Gerenciais 30x2 (30x4) 169 ,288
    CDC Contador de Comprovantes de Débito ou Crédito 2 (4)             289 ,292
    NCN Contador de Débito ou Crédito não Emitidos 2 (4)                293 ,296
    CCDC Contador de Débito ou Crédito Cancelados 2 (4)                 297 ,300
    GT Totalizador Geral 9 (18)                                         301 ,318
    TP[16] Totalizadores Parciais Tributados 16x7 (16x14)               319 ,542
    I I Totalizador de Isenção de ICMS 7 (14)                           543 ,556
    NN Totalizador de Não Incidência de ICMS 7 (14)                     557 ,570
    FF Totalizador de Substituição Tributária de ICMS 7 (14)            571 ,584
    SI Totalizador de Isenção de ISSQN 7 (14)                           585 ,598
    SN Totalizador de Não Incidência de ISSQN 7 (14)                    599 ,612
    SF Totalizador de Substituição Tributária de ISSQN 7 (14)           613 ,626
    Totalizador de Desconto em ICMS 7 (14)                              627 ,640
    Totalizador de Desconto em ISSQN 7 (14)                             641 ,654
    Totalizador de Acrécimo em ICMS 7 (14)                              655 ,668
    Totalizador de Acrécimo em ISSQN 7 (14)                             669 ,682
    Totalizador de Cancelamentos em ICMS 7 (14)                         683 ,696
    Totalizador de Cancelamentos em ISSQN 7 (14)                        697 ,710
    TPNS Totalizadores Parciais Não sujeitos ao ICMS 28x7 (28x14)       711 ,1102
    Sangria Totalizador de Sangria 7 (14)                               1103,1116
    Suprimento Totalizador de Suprimento 7 (14)                         1117,1130
    Totalizador de Cancelamentos de Não Fiscais 7 (14)                  1131,1144
    Totalizador de Descontos de Não Fiscais 7 (14)                      1145,1158
    Totalizador de Acrécimos de Não Fiscais 7 (14)                      1159,1172
    Alíquotas Tributadas 16x2 (16x4)                                    1173,1236
    Data do Movimento 3     (6)                                         1237,1242} 

 

  • Haha 1
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.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2076 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.