Sisorc Tutorial de Criação de Novos Módulos
Banco de Dados Para criar um novo módulo é aconselhável que todas as tabelas destinadas a este módulo esteja dentro de um novo schema. Atualmente existem os seguintes schemas: Fin : Módulo Financeiro Lab: Módulo de Laboratórios Ods: Módulo de Ordem de Serviço Prj: Módulo de Projetos Sys: Módulo do Sistema Usr: Módulo de Usuários Vei: Módulo de Veículos
Exemplo: Almoxarifado Nomenclatura do banco de dados: Idt: identificador Nme: nome Txt: texto Cod: código(normalmente FK) Tbl: Tabela Vlr: valor Sts: Status Dta: Data Exemplos: nme_usuario = Nome do usuário cod_amostra = Código da Amostra
Padrão de Projeto MVC O Sisorc foi implementando utilizando o padrão de projeto MVC, porém ele não está orientado a objetos, na verdade existem algumas classes, mas para otimizar o desempenho e diminuir o tempo de desenvolvimento ele não está totalmente orientado a objetos. As principais classes são: TTpl : Renderização de Templates Table: Tabela(HTML) Tau: conversão e operações usuais TDbw: Wrapper do banco de dados Modelos e Regras de Negócio ficam na pasta: MDL Views e Templates ficam na pasta: TPL Controle fica na pasta: CTL
Permissões Ao criar um novo módulo é necessário criar as permissões de acesso a neste módulo. As permissões ficam armazenadas na tabela usr.tbl_permissoes.
Exemplo: Criação de Permissão Para criar uma permissão basta criar um Sigla(PK) e preencher a descrição. Vale lembrar que as permissões são empilhadas, então um usuário pode ter várias permissões. Importante: Todos os usuários devem ter ao menos a permissão de USR - Usuário do Sistema, caso contrário eles não conseguem nem entrar no sistema.
Criação de Menus A criação de menus é feita dentro do arquivo: mdl/lgn/fra_menu.php Dentro deste arquivo existe um array com o seguinte formato: array( 'fin', // Grupo do menu 'LUS, // Permissão do usuário 'Análises', // Rótulo do menu 'ctl.php?act=lab.fan_lst // Ação ); O menu será construído dinamicamente, neste caso, irá aparecer a opção Análises para os usuários que tiverem a permissão LUS
Exemplo: Menu Produtos Para criar este menu basta adicionar a seguinte linha no arquivo: mdl/lgn/fra_menu.php array('fin', 'ALM', 'Produtos','ctl.php?act=al m.pdt_crud')
Arquivo de Mapeamento de Controle de Acesso Todos os módulos devem ter um ou mais arquivos de mapeamento, esse se arquivo de mapeamento é responsável por indicar ao controlador a view, o modelo e a permissão daquela ação. Por motivos de desempenho não foi escolhido o formato XML, este arquivo possui o seguinte formato: <?php $map = array( 'atv_lst' => array('src' => 'atv/atv_lst.php','tpl' => 'skn/pgn_lst.htm','skn' => 'lim', 'per' => 'PRJ')?> Onde: atv_lst = é o nome da ação Src: é o nome do arquivo que possui o código fonte para tratamento to da ação. Tpl: é o nome do arquivo de template que será renderizado. Skn: é o nome da skin. Atualmente as skins são: lim = renderiza diretamente o arquivo indicado. prn = renderiza o arquivo utilizando o arquivo: skn/pgn_prn.htm. non = Não renderiza nenhum arquivo, utilizado para javascript dinâmicos e geração de PDF e XLS. Per: É a permissão necessária para a execução da ação.
Exemplo: CRUD de Produtos Criando o arquivo de mapeamento(ctl/map_alm alm.php): <?php $map = array( 'pdt_crud' => array( 'src' =>'alm/pdt_crud.php', 'tpl' =>'skn/crud_prn.htm', 'skn' => 'prn', 'per' => 'ALM ) );?> Este mapeamento significa que a ação: alm.pdt_crud tem como modelo o arquivo alm/pdt_crud.php, a view skn/crud_prn.htm, a skin prn e a permissão ALM como parametros.
Modelo O controlador ao identificar no mapeamento qual é o arquivo de modelo irá fazer o include do arquivo e executar a função main deste arquivo. Um arquivo de modelo tem sempre o seguinte formato: <?php // includes // Functions function main($tau){ // Código fonte return $lbl; // $lbl é um array to tipo key => value utilizando na renderização. }?>
Exemplo: Criação do modelo <?php require('./ ('./src/crud.php'); function main($ ($tau){ $opc = $tau$ tau->get(' ('opc'); if ($opc==''){ $opc= 'rea';' } $cfg = array( 'title'' => 'Produtos', 'pk'' => 'idt_produto',' 'table'' => 'alm.tbl_produtos',' 'fields'' => array( 'nme_produto'' => array( 'type'' => 'string', 'name'' => 'Nome', 'notnull'' => true ), 'txt_descricao'' => array( 'type'' => 'text',' 'name'' => 'Descrição', 'notnull'' => true ) ), 'create'' => array( 'fields'' => 'nme_produto' nme_produto,txt_descricao' ), 'read'' => array( 'filters'' => 'nme_produto',' 'fields'' => 'nme_produto' nme_produto,txt_descricao', 'sql'' => 'select' #fields# from alm.tbl_produtos where #where#' ), 'update'' => array( 'fields'' => 'nme_produto' nme_produto,txt_descricao' ), 'delete'' => array() ); $lbl = crud($ ($opc,, $cfg$ cfg); return $lbl; }?> Neste caso estamos utilizando o arquivo src/crud.php src/crud.php este arquivo gera páginas CRUD tradicionais, inclusive com FK.
Telas:
Dicionário Nos modelos foram utilizado as seguintes siglas: atv => Atividades aut => Automóveis cbb => Combobox com => Combustível doc => Tipo de Documento emp => Empresas fin => Financeiro fon => Fonte ges => Gestão lab => Laboratórios lgn => Login log => Logs mot => Motoristas ods => Ordem de Serviço pac => Plano de ação pes => Pesquisador prj => Projetos tds => Tipo de despesa uni => Unidades usr => Usuários via => Viagens
Dicionário Cont. ins => Inserir alt => Alterar del => apagar prn => Ação principal pst => Post frm => Formulário sol => Solicitação vis => Visualizar det => Detalhes lst => Lista gra => Gráfico Exemplo arquivo: mdl/usr/alt_frm.php mdl => Modelo usr => Usuários alt_frm.php => Alterar Formulário