Na seção opcional de Gravação, crie funções do tipo Trigger . Gatilho ou Trigger é um recurso de programação executado sempre que o evento associado ocorrer. Trigger é um tipo especial de procedimento armazenado, que é executado sempre que há uma tentativa de modificar os dados de uma tabela que é protegida por ele. É muito utilizada para ajudar a manter a consistência dos dados ou para propagar alterações em um determinado dado de uma tabela para outras. Um bom exemplo é um gatilho criado para controle de quem alterou a tabela, nesse caso, quando a alteração for efetuada, o gatilho é "disparado" e grava em uma tabela de histórico de alteração, o usuário e data/hora da alteração. No padrão MVC os Triggers são chamados sempre que um registro do formulário do Model for atualizado, neste caso o Trigger é executado antes e depois do evento. Não confunda os Triggers disparados pelo Model com os disparados pela interface View e contidos no dicionário de dados. Um tem a função de preencher um campo segundo uma regra e ou outro de atualizar os dados dentro de uma transação. O padrão MVC de formulário adotado pela Linha Microsiga Protheus realiza a gravação de todos os dados apresentados no Model do formulário, cabe o desenvolvedor realizar a gravação dos acumulados ou fazer as tarefas de regra de negócio. Como exemplo, podemos citar o Pedido de Venda ( MATA410 ). O framework do padrão MVC consegue gravar as tabelas SC5 – Cabeçalho do Pedido de Venda e SC6 – Itens do Pedido de Venda , porém falta realizar a gravação do SB2 – Saldos em estoque, SA1 – Cadastro de Cliente e SC9 – Itens liberados do Pedido de Venda . SB2 e SA1 são atualizados por conta de dados estatísticos, já o SC9 possui toda uma regra para liberar o pedido, sendo disparado pela gravação de um campo no item do pedido de venda – C6_QTDLIB . Para realizar esta operação, recomenda-se a criação de uma função do tipo Trigger, conforme citado acima. Esta função tem disponível o registro da tabela que acabou de ser gravado, a operação que foi realizada ( Inclusão, Alteração ou Exclusão ) e o momento da chamada ( Antes ou Depois ). Isto possibilita ao desenvolvedor fazer as tratativas corretas em diversas situações. Continuando em nosso exemplo, para realizar as atualizações complementares do pedido de venda, o desenvolvedor poderia criar a função MaAvalSC6(nOperation, lEstorna). Esta função seria chamada antes e depois de gravar a tabela SC6. Quando for chamada antes e não for uma inclusão, ela poderia estornar os dados estatísticos e as regras de negócio realizadas com o registro da tabela, haja vista que nenhuma operação de gravação foi feita. Chamada após a gravação da tabela SC6, ela poderia atualizar os dados estatísticos e as regras de negócio dos novos dados. Por fim, as funções do tipo Trigger contam apenas com os dados dos registros do formulário, não utilize variáveis de memória e/ou evite utili zar variáveis de ambiente. Na Seção Opcional das demais funcionalidades do formulário crie as funções complementares da interface VIEW , tais como novos botões na barra de ferramenta ou outros componentes específicos da interface.