35
©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

Embed Size (px)

Citation preview

Page 1: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Desenvolvimento Pirâmide ERP

Padrões e convenções de codificação em Centura

Page 2: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Introdução Padrões de codificação

Nomenclaturas Componentes visuais Convenções

Tratamento de erros

Agenda

Page 3: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 4: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Arquivos

Introdução

Tipo de arquivo

Função

Libraries (*.apl)

Serão denominados a partir de agora de Apls. Nelas são desenvolvidas todas as funcionalidades, telas, classes, etc. Cada Apl deve conter apenas uma funcionalidade, de forma a facilitar a manutenção.

Text (*.apt)

Serão denominados a partir de agora de Apts. São os arquivos utilizados para geração de executáveis. Cada módulo do sistema tem seu respectivo Apt.

Page 5: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Padrões dePadrões de

codificaçãocodificação

Page 6: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Nomenclatura de arquivos

Padrões de codificação

Tipo de arquivo

Nomenclatura

Apls

Deve fazer referência ao nome da funcionalidade que ela possui. Exemplos:

• AjudaContexto.apl• Pedido.apl

Apts

Devem fazer referência ao nome do módulo. Exemplos:

• Integração.apt• Ativo.apt

Page 7: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Nomenclatura de variáveis

Padrões de codificação

Padrão Sintaxe

Pir21 <prefixoDoEscopo>_<prefixoDoTipo>NomeVariavel

Piramide <prefixoDoEscopo><prefixoDoTipo>NomeVariavel

EscopoPir2

1Piramid

e

Global do Sistema

g

Global do Form w

Local (funções) l

Param. Entrada p p

Param. Saída r r

Tipo Pir21 Piramide

Number n n

Date/Time dt dt

String s s

Sql Handle hSql hSql

File Handle hFile hFile

Long String ls ls

Array a<tipoDado> a<tipoDado>

Window Handle

h h

Objetos o tob

Objetos Proxy p

Page 8: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Nomenclatura de componentes visuais

Padrões de codificação

Componente Pir21 Piramide

PushButton pb pb

Scrollbar Horizontal hsb hsb

Scrollbar Vertical vsb vsb

CheckBox cb cb

RadioButton rb rb

DataField df df

MultilineText ml ml

Background Text

GroupBox gb gb

Table tbl tbl

Column col col

ListBox lb lb

ComboBox cmb cmb

ActiveX ax ax

Page 9: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Nomenclatura de constantes

Nomenclatura de funções

Padrões de codificação

Tipo da Constante

Pir21 Piramide

Mensagens PFM_NomeMsg PAM_NomeMsgNegócio BOC_NOMECONSTANTE NOMECONSTANTESistema PFC_NomeConstante NOMECONSTANTEAtributos de Classe

BOA_<Função>_NomeAtributo

Erros de Sistema PFE_NomeErro Err_NomeErroErros de Negócio BOE_<Módulo>_NomeErro Err_NomeErroMensagens de Erro

PFE_Msg_NomeErro

Tipo da função Pir21 Piramide

Interna PFNomeDaFuncao Gx_NomeDaFunção

Externa NomeDaFunção fNomeDaFunção

Page 10: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Nomenclatura de classes

Padrões de codificação

Tipo da Classe Pir21 Piramide

Concretas CNomeClasse CNomeClasse

Interfaces INomeClasse

Proxy NomeClasse

VisuaisW<TipoClasse(2letrasMinus

culas)>NomeClasse

Negócio BCNomeClasse tobNomeClasse

Básicas de Negócio BCBaseNomeClasse BCBaseNomeClasse

Tipo do atributo

Pir21 Piramide

Classe c_<prefixodetipo>NomeVariável

Instância m_<prefixodetipo>NomeDaVariavel

Tipo do método Pir21 Piramide

Privado __NomeDoMétodo __fNomeDoMétodo

Públicos NomeDoMétodo fNomeDoMétodo

Virtuais _NomeDoMétodo _fNomeDoMétodo

Page 11: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Componentes visuais (1/3)

Padrões de codificação

Componente Pir21 Piramide Piramide (com icone)

PushButton

pbBasicpbAlterar

pbCancelarpbDetalharpbExcluirpbGravar

pbImprimirpbIncluirpbNextpbOk

pbPreviouspbProcurar

pbSair

pbPadraopbPadraoAlterarpbPadraoCancel

arpbPadraoCopiapbPadraoDetalh

arpbPadraoEmitirpbPadraoExcluirpbPadraoGravarpbPadraoImprim

irpbPadraoIncluirpbPadraoLancar

pbPadraoOkpbPadraoSair

pbCancelarpbCliente

pbConfigurarpbConfigurarNDO

pbCopiapbDetalhar

pbEmitirpbExcluir

pbFormulapbFornecedor

pbGravarpbImprimirpbIncluir

pbOkpbPagarpbParar

pbProcurarpbReceber

pbSairpbTransfere

Page 12: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Componentes visuais (2/3)

Padrões de codificação

Componente Pir21 Piramide

Column

colCodeDesccolDate

colHelpContextcolLong

colNumbercolPrimaryKey

colStringcolValorAtributo

colChavePadraoNewcolCodeDescNew

colPadraoNew

Combo Box

cmbBasiccmbClasseMaterial

cmbCodeDesccmbDeposito

cmbDescEmpresacmbDescFilial

cmbDescriptioncmbSubclasseMaterial

cmbTipoMaterialcmbUF

cmbPadraoNewcmbClasseMaterialcmbCodeDescNew

cmbDescEmpresaNewcmbDescFilialNew

cmbDescriptionNewcmbSubclasseMaterial

cmbTipoMaterialcmbPadraoUFNew

Page 13: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Componentes visuais (3/3)

Padrões de codificação

Componente Pir21 Piramide

CheckBox cbBasic cbPadraoNew

RadioButton rbBasic rbPadrao

DataField

dfDatedfLong

dfNumberdfString

dfPadraoNewdfDate2000New

MultilineTextmlDescription

mlLongmlString

mlDescriptionmlPadraoNew

BackgroundText bckBasic bckPadrao

GroupBox gbBasic gbPadrao

Table tblBasic tblPadraoNew

List BoxlbBasic

lbCodeDesclbPadrao

Page 14: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 15: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 16: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 17: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Convenções Formulários (Forms) Formulário de manutenção simples (padrão

Pirâmide)

Padrões de codificação

Page 18: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Convenções Formulários (Forms) Formulário de manutenção simples (padrão

Pir21)

Padrões de codificação

Page 19: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 20: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Convenções Formulários (Forms) Browser e formulário de manutenção (padrão

Pirâmide)

Padrões de codificação

Page 21: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Convenções Formulários (Forms) Browser e formulário de manutenção (padrão

Pir21)

Padrões de codificação

Page 22: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Dado Piramide Pir21

Código tobPir.tGetS(“EMPRESA”) Global.GetEmpresa()

Nome tobPir.tGetS(“EMPRESA_NOME”) Global.GetEmpresaNome()

Piramide Pir21

Nome da classe tobPiramide PGlobal

Nome da instância tobPir Global

Page 23: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Funcionalidade Piramide Pir21

Abertura de conexão Set hSql = oConexao.fGH() Global.db.GetHandle(w_hSql)

Fechamento de conexão

oConexao.fFH(hSql) Global.db.FreeHandle(w_hSql)

Abertura de transação

tobPir.tBeginTransaction() Global.db.BeginTransaction()

Commit de transação tobPir.tEndTransaction() Global.db.EndTransaction()

Rollback de transação

tobPir.tCancelTransaction() Global.db.CancelTransaction()

SQL Handle comum hSqlComum Global.db.GetBasicHandle()

Page 24: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Convenções Recuperação de parâmetros Padrão Piramide

Padrão Pir21Os 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”)

Padrões de codificação

Tipo do Parâmetro

Modo de Recuperação

Global fBuscaParam (“NOME_PARAM”, sValorParam)Empresa fEmpresaParam (“NOME_PARAM”, sValorParam)

Filial fEmpresaParamP (sEmpresa, “NOME_PARAM”, sValorParam)

Page 25: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

TratamentosTratamentos

de errosde erros

Page 26: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 27: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

Padrão PirâmideO 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 Pir21O 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

Page 28: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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.: Call tobPir.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.: Call tobPir.tError(0, Err_ClienteInvalido, '', hWndNULL)

 Para exibir erros empilhados: Call tobPir.tError(1,1, 'Erro ao gravar', hWndNULL)

Tratamento de erros

Page 29: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 30: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 31: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 32: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 33: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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

Page 34: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura

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.

Tratamento de erros

Page 35: ©PROCENGE 2005, todos os direitos reservados Desenvolvimento Pirâmide ERP Padrões e convenções de codificação em Centura

©PROCENGE 2005, todos os direitos reservados

Padrões e convenções de codificação em Centura