Scripts de Sistema

Conceito

Os scripts de sistema podem ser definidos diretamente no script da tela principal do sistema, permitindo associar procedimentos personalizados a eventos internos da aplicação. Esses eventos são disparados automaticamente em momentos específicos, como o fechamento do sistema ou de cadastros, possibilitando executar ações complementares, validações ou outras rotinas personalizadas.

Procedimentos Disponíveis

  • OnCloseFormPrincipal: Este evento é acionado no momento em que o formulário principal do sistema está sendo encerrado. Pode ser utilizado para executar rotinas de finalização, gravação de logs, validações ou bloquear o fechamento do sistema sob determinadas condições.
    • Parâmetros:
      • CadastrosAbertos: String contendo a lista dos cadastros que estavam abertos no momento do fechamento. O formato é um JSON com informações sobre o nome do cadastro e os identificadores selecionados. Exemplo de formato:
[
 {"Nome": "BOLETOS", "IDs": "459,160"},
 {"Nome": "LANCAMENTOSTESOURARIA", "IDs": "186"}
] 
    • Exemplo: O exemplo abaixo demonstra como utilizar o ponto de execução OnCloseFormPrincipal para impedir o fechamento do sistema caso existam lançamentos de tesouraria não confirmados.
procedure OnCloseFormPrincipal(CadastrosAbertos:String);
var 
  pJson:TPHJson;
  I:Integer;
  Q:TPHQuery;                          
begin                                      
  if not (CadastrosAbertos = ) then  
  begin    
    pJson := TPHJson.Create;
    try
      pJson.LerJson(CadastrosAbertos);               
      for I := 0 to pJson.Count - 1 do
      begin
        { Tela de Lançamento da Tesouraria Aberta }                  
        if (pJson.Linha(I).ElementoDoNome('Nome').Texto = 'LANCAMENTOSTESOURARIA') then
          if not (pJson.Linha(I).ElementoDoNome('IDs').Texto = ) then                 
          begin
            Q := NewPHQuery;
            try
              Q.Add('SELECT ID '+
                    'FROM LANCAMENTOSTESOURARIA ' +
                    'WHERE SITUACAO = 1 '+
                    'AND ID IN ('+pJson.Linha(I).ElementoDoNome('IDs').Texto+')');
              Q.Open;

              if not (Q.Vazia) then
                ErroValidacao('não é possível fechar com lançamento da tesouraria não confirmado.'); 
            finally
              Q.Free;                                                
            end;              
          end;          
      end;                                        
    finally
      pJson.Free;                            
    end;
  end;
end;
  • OnCloseFormCadastro: Este evento é acionado no momento em que um formulário de cadastro é fechado. Permite executar ações específicas relacionadas a cada cadastro, como validações, atualizações de status, etc.
    • Parâmetros:
      • Cadastro: Nome do cadastro que está sendo fechado.
      • IDs: Identificadores dos registros que estavam selecionados no momento do fechamento.
    • Exemplo: O exemplo abaixo demonstra como utilizar o ponto de execução OnCloseFormPrincipal para impedir o fechamento do sistema caso existam lançamentos de tesouraria não confirmados.
procedure OnCloseFormCadastro(Cadastro:String; IDs:String);
var 
  Q:TPHQuery;
begin
  if (Cadastro = 'LANCAMENTOSTESOURARIA') then
  begin
    if  not (IDs = ) then
    begin
      Q := NewPHQuery;
      try
        Q.Add('SELECT ID '+
              'FROM LANCAMENTOSTESOURARIA ' +
              'WHERE SITUACAO = 1 '+
              'AND ID IN ('+IDs+')');
        Q.Open;
        
        if not (Q.Vazia) then
          ErroValidacao('não é possível fechar com lançamento da tesouraria não confirmado.');    
      finally
        Q.Free;                                                
      end;                            
    end;      
  end;  
end;