Jump to content

chamada diadoacbr

Assista tectoy.png

Mesclagem de INI + Dados Redução + Redução Otimizada


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

Recommended Posts

Prezados, implementado o fechamento do dia, me deparei com informações importantes aqui do fórum e bem espalhadas sobre a redução Z.

  • Alguns modelos pedem totalizadores depois da redução z (Alguns tópicos confirmam isso, conversei com o regys ele também afirmou).
  • O ideal é utilizar tanto o DadosReducaoZ como UltimoDadosReducaoZ como em alguns tópicos.
  • Na chamada da redução Z é interessante uma configuração de timeout para evitar problemas (blog do regys).
  • Em algum tópico o Daniel posta um código para mesclar arquivos INI para permitir utilizar de forma mais simplificada as funções DadosReducaoZ e UltimoDadosReducaoZ.

Diante dessas informações nós iniciamos uma solução para as questões acima, e tentamos inserir ela dentro da classe ACBrECFClass.

Vou tentar explicar de forma simples.

type
    TACBrECFDadosRZ = class
    public
        procedure CarregaINIReducaoZ(const DadosReducaoINI: TMemIniFile);
        procedure CarregaMesclandoINIReducoesZ(const Origem, Destino: string);
    end;
    
    TACBrECFClass
    public
        function ReducaoZ_Otimizada(  DataHora : TDateTime = 0 ): TACBrECFDadosRZ;
    end;
  • O procedimento CarregaINIReducaoZ foi implementada para fazer a leitura do arquivo INI gerado pela própria classe TACBrECFDadosRZ e se auto alimentar as informações, recuperando alíquotas e totalizadores, auto alimentando a classe, no meu ponto de vista a implementação ficou bem segura e respeitando os critérios do procedimento responsável pela geração MontaDadosReducaoZ.
  • O procedimento CarregaMesclandoINIReducoesZ foi criado do zero mas usando a ideia da função já postada aqui no fórum, ela sempre tenta permanecer o valor do destino caso o valor da redução de origem seja nula, zero ou etc...
  • A função ReducaoZ_Otimizada, realiza o procedimento de aumento de TimeOut postado pelo Regys além de armazenar o INI da função DadosReducaoZ, armazenar o INI da função DadosUltimaReducaoZ, mesclar os dois e carregar para o retorno da função a redução Z completo e acessível por pela classe TACBrECFDadosTZ, combinando as implementações anterior.

Vantagens

  • Utilizando a leitura pela classe e não pelo INI resultante do processo de mesclagem, as futuras alterações realizadas na classe são sentidas no momento da compilação (quando alterado no svn e atualizado), diferente da leitura pelo INI dentro do seus sistema, que somente depois que ser executado que uma alteração de tipo ou objeto seria identificada.
  • Simplifica o processo da redução Z para quem não conhece os problemas de compatibilidade das impressoras.
  • Evita o problema com TimeOut nas reduções Z.

Função ReducaoZ Otimizada:

function TACBrECFClass.ReducaoZ_Otimizada(DataHora: TDateTime): TACBrECFDadosRZ;
var
  OldTimeOut: integer;
  ReducaoAntes, ReducaoDepois: string;
begin
  ReducaoAntes := DadosReducaoZ;

  OldTimeOut := TimeOut;
  try
    TimeOut := 600; // 10 minutos
    ReducaoZ( DataHora );
  finally
    TimeOut := OldTimeOut;
  end;

  ReducaoDepois := DadosUltimaReducaoZ;

  Result := TACBrECFDadosRZ.Create;
  Result.CarregaMesclandoINIReducoesZ(ReducaoAntes, ReducaoDepois);
end;

Como Utilizar:

procedure TForm3.Button1Click(Sender: TObject);
var
  Reducao: TACBrECFDadosRZ;
begin
 Reducao := ACBrECF1.ECF.ReducaoZ_Otimizada(Now);
 try
    //Leitura das variáveis desejadas aqui.
 finally
   Reducao.Free;
 end;
end;

Estou anexando as units, e um demo que sem realizar a redução z, alimenta 3 memos e compara o arquivo ini Antes da Redução, Depois da Redução e o Arquivo Final Mesclado.

(Demo em firemonkey²)

 ACBrSerial.zip DemoUtilizaçãoReducaoMesclagem.zip

Edited by Data Lider
  • Like 1

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link to comment
Share on other sites

O código vai ser analisado para verificar se pode ser subido? precisa dessa confirmação caso contrário temos que tirar do nosso componente da acbr e passar para o sistema, porque sempre usamos a versão do svn original do acbr, não mantemos alterações próprias nos fontes.

Desculpa o incômodo, obrigado.

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link to comment
Share on other sites

  • Consultores

Queira aguardar até terça feira por favor, acabei de voltar e estou averiguando.

  • Like 1

[]'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 to comment
Share on other sites

  • Fundadores

Fiz uma analise das modificações...

Não acho que seja bom incorporar nos fontes originais...

A ReduçãoZ é uma operação muito sensível, e introduzir um novo método, que faz muitos tratamentos no lado do componente, transfere muita responsabilidade para o ACBr...

Sempre haverá questionamentos em como as informações são mescladas, e opiniões divergentes em qual campo deve ser mantido ou sobreposto... Portanto, acho que essa implementação deve sempre estar do lado do Programa, e não dentro do componente...

  • Like 3
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 to comment
Share on other sites

Fiz uma analise das modificações...

Não acho que seja bom incorporar nos fontes originais...

A ReduçãoZ é uma operação muito sensível, e introduzir um novo método, que faz muitos tratamentos no lado do componente, transfere muita responsabilidade para o ACBr...

Sempre haverá questionamentos em como as informações são mescladas, e opiniões divergentes em qual campo deve ser mantido ou sobreposto... Portanto, acho que essa implementação deve sempre estar do lado do Programa, e não dentro do componente...

OK.

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link to comment
Share on other sites

Não tem como editar mais a resposta anterior, então estou adicionando em outro post.

Poderia remover o procedimento da Z, e a operação da classe carregar o arquivo INI que ela mesmo gera poderia permanecer na classe, O mesclar poderia permanecer também, se a pessoa achar que precisa de um ajuste, então o código está lá, mas a função de mesclar sobrepõe apenas valores maior que zero, isso vale para Data, Inteiro e Float, ou seja, até o COO se for zerado não é sobreposto.  

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link to comment
Share on other sites

  • Fundadores

A função de Mesclar INIs, se fosse incorporada, deveria ser algo mais genérico, que se adaptasse a modificações no .INI...

Veja essa implementação:

http://www.projetoacbr.com.br/forum/topic/9378-erro-ao-pegar-os-títulos-pagos-da-ultima-rz/?do=findComment&comment=54339

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 to comment
Share on other sites

A função de Mesclar INIs, se fosse incorporada, deveria ser algo mais genérico, que se adaptasse a modificações no .INI...

Veja essa implementação:

http://www.projetoacbr.com.br/forum/topic/9378-erro-ao-pegar-os-títulos-pagos-da-ultima-rz/?do=findComment&comment=54339

Nesse caso do exemplo, para a redução Z não acho interessante, porque considera qualquer valor, se o destino é "000010" e a origem (Antes da Redução Z) é "00000" ele vai substituir mesmo assim, o mesmo vale para a situação de Data Nula na origem e no destino não nulo, no exemplo acima também trocaria. Mas de qualquer forma então o consenso é somente para a classe que realiza a operação inversa(Re-alimenta a classe com o ini gerado por elá própria) correto? 

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.