Skip to content

Instantly share code, notes, and snippets.

@viniciusgati
Created January 12, 2017 17:46
Show Gist options
  • Save viniciusgati/076cc0c7492e09fe4230058a7ada74eb to your computer and use it in GitHub Desktop.
Save viniciusgati/076cc0c7492e09fe4230058a7ada74eb to your computer and use it in GitHub Desktop.
#
# Classe de exemplo para customização do Cev Plus
#
# No Cev Plus existem diversas classes que são utilizadas para manuseio dos formulários de cadastro
#
# Estas classes podem ser modificadas, ou complementadas utilizando as particularidades da linguagem ruby
# neste fonte temos exemplos tais como:
#
# * Adicionar validação a classe
# * Executar um metodo em determinado momento
# * Execução de Sql's simples e complexos no protheus
#
# No caso deste fonte em específico estamos complementando a classe responsável pelo cadastro de agenda, a Forms::Agenda,
# onde Forms:: significa o modulo e Agenda a classe dentro do módulo.
#
# O método class_eval disparado faz com que a classe seja aberta para escrita, podemos assim
# adicionar metodos novos, atributos novos, etc. Fazendo com que a classe tenha um inclusão de funcionalidade.
#
# Com a chamada do método validate podemos adicionar uma nova validação a ser executada ao salvar a agenda;
# Para impedir o salvamento do registro e mostrar a mensagem na tela devemos adicionar um erro ao atributo errors do objeto conforme abaixo.
#
# Caso seja necessário fazer uma query ao banco de dados devemos usar o método da classe ProtheusDb chamado find_by_sql que aceita
# uma string contendo a query, ou um array contendo uma string e parametros da query conforme exemplo comentado abaixo.
#
Forms::Agenda.class_eval do
# Callbacks exemplos:
# before_validation :prepare_agenda
# after_validation :pos_validacao
# def prepare_agenda
# puts "Executado antes das validações do formulário"
# end
# def pos_validacao
# puts "Executado após as validações do formulário"
# end
# validate :validacao_teste_customizacao
# def validacao_teste_customizacao
# errors.add("custom", "Implementada customização.")
#
#
# ProtheusDb.find_by_sql(cQuery)
#
# ProtheusDb.find_by_sql([" SELECT COUNT(*) FROM TESTE WHERE ID = :id "], id: 4)
# end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment