Mudanças entre as edições de "Pontos de Execução de Scripts"

(Criou página com '==='''Conceito'''=== Os pontos de execução de scripts é um recurso que permite associar scripts personalizados a momentos específicos do funcionamento do sist...')
 
 
(7 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 
==='''Conceito'''===
 
==='''Conceito'''===
  
Os pontos de execução de scripts é um recurso que permite associar [[Scripts|scripts personalizados]] a momentos específicos do funcionamento do sistema.
+
Os pontos de execução de scripts permitem associar [[Scripts|scripts personalizados]] a momentos específicos do funcionamento do sistema.
 
Com ele, é possível inserir lógicas adicionais, realizar validações, ajustar cálculos, sem alterar diretamente o código principal.
 
Com ele, é possível inserir lógicas adicionais, realizar validações, ajustar cálculos, sem alterar diretamente o código principal.
 
Os pontos de execução são disparados em etapas estratégicas de processos, garantindo flexibilidade e controle sobre comportamentos que precisam ser adaptados conforme a necessidade.
 
Os pontos de execução são disparados em etapas estratégicas de processos, garantindo flexibilidade e controle sobre comportamentos que precisam ser adaptados conforme a necessidade.
  
 
==='''Pontos de Execução Disponíveis'''===
 
==='''Pontos de Execução Disponíveis'''===
:[[Ponto de Execução de Script: OnChangeItemFaturamento|OnChangeItemFaturamento]]
+
*'''OnChangeItemFaturamento:''' Este ponto de script é acionado durante a alteração de um item na tela de faturamento. Após o processamento das informações relacionadas ao produto, como unidade de medida e valor da tabela de preços, ocorre a chamada deste script. Em seguida, são executadas as rotinas relacionadas às informações fiscais. Vale ressaltar que é possível usar os parâmetros dos campos dos itens para realizar comportamento específicos, ou seja, parâmetros como '''VALORUNITARIO''' ou '''QUANTIDADE''' é possível consumir.
:[[Ponto de Execução de Script: OnChangeItemPedidoVenda|OnChangeItemPedidoVenda]]
+
**'''Parâmetros:'''
:[[Ponto de Execução de Script: OnChangeItemOrdemServico|OnChangeItemOrdemServico]]
+
***ItemID: Identificador do item que executou o evento.
:[[Ponto de Execução de Script: OnChangeItemOrcamento|OnChangeItemOrcamento]]
+
***DocumentoID: Identificar do documento no qual está sendo executado o processo.
 +
***ItemTabela: Corresponde ao nome da tabela de itens do processo. ['''ITENS'''].
 +
***DocumentoTabela: Corresponde ao nome da tabela de documento do processo. ['''DOCUMENTOS'''].
 +
**'''Exemplo:''' O exemplo apresentado mostra como, no ponto de execução OnChangeItemFaturamento, é possível calcular automaticamente o valor de desconto de um item com base na condição de pagamento do documento. Quando o item é alterado, o script é acionado e executa o procedimento CalculoDesconto, que obtém o percentual de desconto definido para a condição de pagamento vinculada ao documento. Com esse percentual em mãos, o script calcula o valor do desconto aplicando-o sobre o valor total do item, considerando quantidade e valor unitário, e arredonda o resultado para duas casas decimais. Esse valor é então atribuído ao parâmetro de retorno '''VALORDESCONTO''', permitindo que seja utilizado no processo de faturamento. O uso de parâmetros como DocumentoTabela e DocumentoID torna o script flexível, permitindo sua aplicação em diferentes processos, como faturamento, pedidos ou orçamentos, sem necessidade de alterações no código.
 +
 
 +
procedure CalculoDesconto;
 +
var
 +
  Q:TPHQuery;   
 +
begin                                                                                                       
 +
  Q := NewPHQuery;
 +
  try
 +
    Q.Add('SELECT CPAG.C_PERCENTUALDESC '+     
 +
          'FROM CONDICOESPAGAMENTO CPAG '+
 +
          'INNER JOIN '+ParamByName('DocumentoTabela').AsString+' DOC ON DOC.CONDICAOPAGAMENTO = CPAG.ID '+               
 +
          'WHERE DOC.ID = :DOC');
 +
    Q.ParamByName('DOC').AsLargeInt := ParamByName('DocumentoID').AsLargeInt;   
 +
    Q.Open;                     
 +
   
 +
    ParamByName('VALORDESCONTO').AsFloat :=
 +
      Arredondar((((ParamByName('QUANTIDADE').AsFloat *
 +
                    ParamByName('VALORUNITARIO').AsFloat) /100) * Q.FieldByName('C_PERCENTUALDESC').AsFloat),2);     
 +
  finally
 +
    Q.Free;                       
 +
  end;             
 +
end;
 +
 +
begin
 +
  CalculoDesconto;
 +
end.
 +
 
 +
*'''OnChangeItemPedidoVenda:'''
 +
**'''Parâmetros:'''
 +
***ItemID: Identificador do item que executou o evento.
 +
***DocumentoID: Identificar do documento no qual está sendo executado o processo.
 +
***ItemTabela: Corresponde ao nome da tabela de itens do processo. ['''PEDIDOITENS'''].
 +
***DocumentoTabela: Corresponde ao nome da tabela de documento do processo. ['''PEDIDOS'''].
 +
 
 +
*'''OnChangeItemOrdemServico:'''
 +
**'''Parâmetros:'''
 +
***ItemID: Identificador do item que executou o evento.
 +
***DocumentoID: Identificar do documento no qual está sendo executado o processo.
 +
***ItemTabela: Corresponde ao nome da tabela de itens do processo. ['''ORDEMSERVICOITENS'''].
 +
***DocumentoTabela: Corresponde ao nome da tabela de documento do processo. ['''ORDENSSERVICO'''].
 +
 
 +
*'''OnChangeItemOrcamento:'''
 +
**'''Parâmetros:'''
 +
***ItemID: Identificador do item que executou o evento.
 +
***DocumentoID: Identificar do documento no qual está sendo executado o processo.
 +
***ItemTabela: Corresponde ao nome da tabela de itens do processo. ['''ORCAMENTOITENS'''].
 +
***DocumentoTabela: Corresponde ao nome da tabela de documento do processo. ['''ORCAMENTOS'''].
 +
 
 +
*'''AposEncerrarOrcamento:'''
 +
**'''Parâmetros:'''
 +
***DocumentoID: Identificar do documento no qual está sendo executado o processo.
 +
***ItemTabela: Corresponde ao nome da tabela de itens do processo. ['''ORCAMENTOITENS'''].
 +
***DocumentoTabela: Corresponde ao nome da tabela de documento do processo. ['''ORCAMENTOS'''].
 +
 
 +
*'''AposEncerarComiteOrcamento:'''
 +
**'''Parâmetros:'''
 +
***DocumentoID: Identificar do documento no qual está sendo executado o processo.
 +
***ItemTabela: Corresponde ao nome da tabela de itens do processo. ['''ORCAMENTOITENS'''].
 +
***DocumentoTabela: Corresponde ao nome da tabela de documento do processo. ['''ORCAMENTOS'''].

Edição atual tal como às 16h18min de 6 de abril de 2026

Conceito

Os pontos de execução de scripts permitem associar scripts personalizados a momentos específicos do funcionamento do sistema. Com ele, é possível inserir lógicas adicionais, realizar validações, ajustar cálculos, sem alterar diretamente o código principal. Os pontos de execução são disparados em etapas estratégicas de processos, garantindo flexibilidade e controle sobre comportamentos que precisam ser adaptados conforme a necessidade.

Pontos de Execução Disponíveis

  • OnChangeItemFaturamento: Este ponto de script é acionado durante a alteração de um item na tela de faturamento. Após o processamento das informações relacionadas ao produto, como unidade de medida e valor da tabela de preços, ocorre a chamada deste script. Em seguida, são executadas as rotinas relacionadas às informações fiscais. Vale ressaltar que é possível usar os parâmetros dos campos dos itens para realizar comportamento específicos, ou seja, parâmetros como VALORUNITARIO ou QUANTIDADE é possível consumir.
    • Parâmetros:
      • ItemID: Identificador do item que executou o evento.
      • DocumentoID: Identificar do documento no qual está sendo executado o processo.
      • ItemTabela: Corresponde ao nome da tabela de itens do processo. [ITENS].
      • DocumentoTabela: Corresponde ao nome da tabela de documento do processo. [DOCUMENTOS].
    • Exemplo: O exemplo apresentado mostra como, no ponto de execução OnChangeItemFaturamento, é possível calcular automaticamente o valor de desconto de um item com base na condição de pagamento do documento. Quando o item é alterado, o script é acionado e executa o procedimento CalculoDesconto, que obtém o percentual de desconto definido para a condição de pagamento vinculada ao documento. Com esse percentual em mãos, o script calcula o valor do desconto aplicando-o sobre o valor total do item, considerando quantidade e valor unitário, e arredonda o resultado para duas casas decimais. Esse valor é então atribuído ao parâmetro de retorno VALORDESCONTO, permitindo que seja utilizado no processo de faturamento. O uso de parâmetros como DocumentoTabela e DocumentoID torna o script flexível, permitindo sua aplicação em diferentes processos, como faturamento, pedidos ou orçamentos, sem necessidade de alterações no código.
procedure CalculoDesconto;
var
  Q:TPHQuery;    
begin                                                                                                        
  Q := NewPHQuery;
  try
    Q.Add('SELECT CPAG.C_PERCENTUALDESC '+       
          'FROM CONDICOESPAGAMENTO CPAG '+
          'INNER JOIN '+ParamByName('DocumentoTabela').AsString+' DOC ON DOC.CONDICAOPAGAMENTO = CPAG.ID '+                 
          'WHERE DOC.ID = :DOC');
    Q.ParamByName('DOC').AsLargeInt := ParamByName('DocumentoID').AsLargeInt;    
    Q.Open;                      
    
    ParamByName('VALORDESCONTO').AsFloat := 
      Arredondar((((ParamByName('QUANTIDADE').AsFloat * 
                    ParamByName('VALORUNITARIO').AsFloat) /100) * Q.FieldByName('C_PERCENTUALDESC').AsFloat),2);      
  finally
    Q.Free;                        
  end;              
end;

begin
  CalculoDesconto;
end.
  • OnChangeItemPedidoVenda:
    • Parâmetros:
      • ItemID: Identificador do item que executou o evento.
      • DocumentoID: Identificar do documento no qual está sendo executado o processo.
      • ItemTabela: Corresponde ao nome da tabela de itens do processo. [PEDIDOITENS].
      • DocumentoTabela: Corresponde ao nome da tabela de documento do processo. [PEDIDOS].
  • OnChangeItemOrdemServico:
    • Parâmetros:
      • ItemID: Identificador do item que executou o evento.
      • DocumentoID: Identificar do documento no qual está sendo executado o processo.
      • ItemTabela: Corresponde ao nome da tabela de itens do processo. [ORDEMSERVICOITENS].
      • DocumentoTabela: Corresponde ao nome da tabela de documento do processo. [ORDENSSERVICO].
  • OnChangeItemOrcamento:
    • Parâmetros:
      • ItemID: Identificador do item que executou o evento.
      • DocumentoID: Identificar do documento no qual está sendo executado o processo.
      • ItemTabela: Corresponde ao nome da tabela de itens do processo. [ORCAMENTOITENS].
      • DocumentoTabela: Corresponde ao nome da tabela de documento do processo. [ORCAMENTOS].
  • AposEncerrarOrcamento:
    • Parâmetros:
      • DocumentoID: Identificar do documento no qual está sendo executado o processo.
      • ItemTabela: Corresponde ao nome da tabela de itens do processo. [ORCAMENTOITENS].
      • DocumentoTabela: Corresponde ao nome da tabela de documento do processo. [ORCAMENTOS].
  • AposEncerarComiteOrcamento:
    • Parâmetros:
      • DocumentoID: Identificar do documento no qual está sendo executado o processo.
      • ItemTabela: Corresponde ao nome da tabela de itens do processo. [ORCAMENTOITENS].
      • DocumentoTabela: Corresponde ao nome da tabela de documento do processo. [ORCAMENTOS].