350 likes | 432 Vues
Padrões e convenções de codificação em Centura. Desenvolvimento Pirâmide ERP. Agenda. Introdução Padrões de codificação Nomenclaturas Componentes visuais Convenções Tratamento de erros. Introdução. Objetivo
E N D
Padrões e convenções de codificação em Centura Desenvolvimento Pirâmide ERP
Agenda • Introdução • Padrões de codificação • Nomenclaturas • Componentes visuais • Convenções • Tratamento de erros
Introdução • Objetivo • Apresentar os padrões básicos para o desenvolvimento dos sistemas que utilizam o Centura como linguagem. • Documento referência (completo/detalhado) • DA.07.Codificação em Centura • Padrões abordados • Pir21 • Módulos: Faturamento e Integração • Pirâmide • Módulos: Comercial, Financeiro, Fiscal, Materiais, Orçamento, Qualidade, ...
Introdução • Arquivos
Padrões de codificação
Padrões de codificação • Nomenclatura de arquivos
Padrões de codificação • Nomenclatura de variáveis
Padrões de codificação • Nomenclatura de componentes visuais
Padrões de codificação • Nomenclatura de constantes • Nomenclatura de funções
Padrões de codificação • Nomenclatura de classes
Padrões de codificação • Componentes visuais (1/3)
Padrões de codificação • Componentes visuais (2/3)
Padrões de codificação • Componentes visuais (3/3)
Padrões de codificação • Convenções SQL • Recomendações • O nome de campos e tabelas devem estar sempre em caixa alta. As palavras reservadas do SQL devem ser escritas com letra inicial maiúscula. • Utilizar os binds (:NomeVariável) nas cláusulas Where que utilizam variáveis como critério. Exemplo: Select CLIENTE From CLIENTES Where CLIENTE = :sCodCliente
Padrões de codificação • Convenções Formulários (Forms) • Existem algumas operações básicas que devem ser feitas sempre que um formulário é aberto e fechado:
Padrões de codificação • Convenções Formulários (Forms) • Formulários de manutenção simples • Os formulários "frmMnt" (padrão Pirâmide) e "frmBasicMnt" (padrão Pir21) devem ser utilizados para cadastros simples, que não envolvam mais de quatro atributos. • Para utilizá-los, basta criar as colunas de acordo com a funcionalidade e redefinir os métodos virtuais de seleção, inserção, update e deleção dos dados da tabela.
Padrões de codificação • Convenções Formulários (Forms) • Formulário de manutenção simples (padrão Pirâmide)
Padrões de codificação • Convenções Formulários (Forms) • Formulário de manutenção simples (padrão Pir21)
Padrões de codificação • Convenções Formulários (Forms) • Browser e formulários de manutenção • Trata-se de uma tela de navegação a partir da qual podem ser realizadas operações referentes a cadastros ou movimentações); • Se o cadastro possuir mais de quatro atributos e não for complexo, oferecendo poucas funcionalidades alem da manutenção (inclusão, alteração, exclusão e detalhamento), uma tela de browser deve ser criada; • Outras operações como cancelamentos, impressão, autorizações, entre outras, poderão ser chamadas a partir de botões do browser. (Caso o browser esteja com excesso de objetos visuais ou a operação necessite de filtros específicos, pode-se criar uma tela específica para a operação a ser realizada).
Padrões de codificação • Convenções Formulários (Forms) • Browser e formulário de manutenção (padrão Pirâmide)
Padrões de codificação • Convenções Formulários (Forms) • Browser e formulário de manutenção (padrão Pir21)
Padrões de codificação • Convenções Classes de sistema • Existe uma classe genérica previamente instanciada que pode ser utilizada em qualquer trecho do código. Essa classe genérica agrupa diversas funcionalidades. • Convenções Empresa • Existem funções pré-definidas que devem ser utilizadas para recuperar a empresa selecionada no MDIPrincipal.
Padrões de codificação • Convenções Funções de conexão • Principais operações a serem executadas na base dados e as respectivas funções que devem ser usadas:
Padrões de codificação • Convenções Recuperação de parâmetros • Padrão Piramide • Padrão Pir21 Os parâmetros globais devem ser recuperados através da PGlobal: Global.param.GetParam(“NOME_PARAMETRO”) Para recuperar os parâmetros por empresa, deve-se utilizar um objeto da classe CParametroEmpresa. Uma vez o objeto declarado, deve-se fazer uma carga dos parâmetros, utilizando o serviço LoadParam do objeto. Sintaxe: oParam.LoadParam(sEmpresa, “NOMEPARAM1, NOMEPARAM2, ...”, sOrigem) onde “NOMEPARAM1, NOMEPARAM2, ...” Lista dos parâmetros que se deseja carregar o valor. Se nulo, carrega todos. sOrigem Origem à qual pertence o parâmetro. Também é opcional. Feita a carga dos parâmetros, para recuperar seu valor deve-se utilizar o método GetParam() do objeto: Set sValorParametro = oParam.GetParam(“NOME_PARAMETRO”)
Tratamentos de erros
Tratamento de erros • O tratamento de erros deve ser feito através do empilhamento da mensagem de erro no momento em que o mesmo acontece e sua posterior exibição na interface. • A exibição de mensagens de erro (ou outros tipos de mensagens) nunca deverá ser feita dentro de um objeto de negócio ou dentro de uma transação. • As mensagens de erro ficam armazenadas no banco de dados, na tabela PIR_ERROS. No padrão Pir21, a utilização da tabela PIR_ERROS é obrigatória, não sendo permitido a transcrição de mensagens de erro diretamente no código fonte. • Para empilhar o erro devem ser utilizadas constantes de erros que indicam o código do mesmo no banco de dados. As mensagens podem receber parâmetros que facilitem o entendimento ou identificação da causa do erro. Isso deve ser feito utilizando o símbolo % precedido de um índice para o parâmetro, conforme exemplo: “Não foi possível gravar o pedido ‘%1’ da filial ‘%2’.” • Os parâmetros das mensagens serão passados para funções de empilhamento de erro. Devem formar uma única String, sendo os parâmetros separados por um #. No exemplo acima, caso o erro tenha acontecido para o pedido ‘000123’ da filial ‘001’, a string de parâmetros deverá ser ‘000123#001’.
Tratamento de erros • Padrão Pirâmide O empilhamento e exibição dos erros são feitos através do objeto tobPir. As funções deverão sempre retornar TRUE ou FALSE, de forma que a interface identifique a existência ou não de erros e decida se irá exibir ou não a mensagem. If Not fGravarPedido() If Not fGravarPedido() Return FALSE Mostra mensagem de erro. • Padrão Pir21 O empilhamento e exibição dos erros são feitos através do objeto Global. As funções deverão sempre retornar constantes de erro, ou a constante PFC_Ok, que indica que a função foi executada com sucesso. O retorno de uma função sempre deve ser testado utilizando-se a função PFFailed(nReturn) ou PFSucced(nReturn), onde nReturn é a constante de erro retornada pela função. Set nReturn = GravarPedido() Set nReturn = GravarPedido() If PFFailed(nReturn) If PFFailed(nReturn) Return nReturn Mostra mensagem de erro.
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Método tError do tobPiramide Pode ser utilizada tanto para empilharquanto para exibir erros, mas não suportaas mensagens de erro gravadas emPIR_ERROS.Quando o erro detectado for erro de banco, oparâmetro pnError deve receber a constanteErr_SQL e o handle SQL deve ser enviado parao parâmetro phSqlErro.Ex.: CalltobPir.tError( 0, Err_SQL, '',hSqlComum)Quando o erro detectado for erro de negócio, o parâmetro pnError deve receber a constante de erro correspondente. Estas constantes deverão estar declaradas em Constant.apl. O handle SQL a ser enviado para o parâmetro phSqlErro deve ser hWndNULL.Ex.: CalltobPir.tError(0, Err_ClienteInvalido, '', hWndNULL) Para exibir erros empilhados: CalltobPir.tError(1,1, 'Erro ao gravar', hWndNULL)
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Método tErrorApp do tobPiramide • Pode ser utilizada tanto para empilhar quanto para exibir erros, e suporta as mensagens de erro gravadas em PIR_ERROS. Exemplo: Call tobPir.tErrorApp(0, Err_PedidoVenda,'Erro inserindo pedido', ‘000123#001’, ‘fInserPedido’, hWndNULL)
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Método __PushPckErro do tobPiramide • Deve ser utilizado para empilhar mensagens de erro retornadas por processamento em packages. A exibição da mensagem é feita através da tobPir.tErrorApp. O parâmeto “p_nCode” é o código de erro retornado pela package e o prâmetro “p_sPackage” é o nome da package que retornou o erro. Exemplo: tobPir.__PushPckError(nReturn ,PCK_PIR_TITULO_RECEBER’)
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Método Global.PushDBError • Utilizado para empilhar erros de banco de dados, normalmente após uma instrução SqlPrepareAndExecute(). Exemplo: Call Global.PushDBError( Global.db.GetBasicHandle())
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Método Global.PushAppError • Utilizada para empilhar erros, suporta as mensagens de erro gravadas em PIR_ERROS. Exemplo: Call Global.PushAppError( BOE_VEN_PedidoVenda, ‘000123#001’, ‘GravaPedido()’, hWndNULL)
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Método Global.PushPckError • Deve ser utilizado para empilhar mensagens de erro retornadas por processamento em packages. Exemplo: Call Global.PushPckError(nReturn , 'PCK_PIR_FATURAMENTO', Global.db.GetBasicHandle())
Tratamento de erros • Formas de empilhamento e exibição das mensagens de erro • Métodos Global.err.Show() e Global.ShowValidacao() • Estes métodos devem ser utilizados para exibição de mensagens de erro no padrão Pir21. O Global.ShowVailidacao() deve ser utilizado no SAM_Validate de objetos, pois já exibe a telapadrão para tratamento de errosde validação.