Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Informações Gerais
Especificação | |||
Produto | Microsiga Protheus | Módulo | Plano de Saúde - SIGAPLS |
Segmento Executor | Saúde | ||
Projeto | M_SAU_PLS002 | IRM | PCREQ-7355 |
Requisito | PCREQ-7356 | Subtarefa | PCSFL-271 |
Release de Entrega Planejada | 12.1.8 | Réplica | Não |
País | ( x ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. |
Objetivo
O objetivo desta especificação é detalhar sobre melhorias técnicas que serão feitas no cadastro de Layout Genérico (PLSCADLAY) para torná-lo mais versátil e mais flexível em possíveis cadastros que venham a ser criados.
Definição da Regra de Negócio
- Criar uma tabela para salvar a estrutura do layout, nela, será possível inserir grupos e subgrupos de campos, onde deverá ser possível mesclar campos e componentes de diferentes tabelas em um grupo.
- O alias da tabela será BBR (para ver os campos que essa tabela terá, consulte a parte de dicionário de dados desta especificação)
- Essa tabela será gravada com o componente DbTree, e a troca de nível entre os componentes será feita com botões que serão setas.
- Setas para cima e para baixo - Apenas movimentarão os itens para cima e para baixo.
- Setas para esquerda e para direita - Alterarão o nível do item.
- Para desenvolver a Tree consulte o fonte PLSA444.PRW, função PL444TREE, consulte também o seguinte link: http://tdn.totvs.com/x/VoRc
- Sugestão: Utilizar imagens diferentes do ícone da tree para componente do tipo campo, do tipo botão e do tipo anexo.
- Deverá ser possível criar/excluir subgrupos na Tree e organizar os componentes dentro dele.
Para usar a Tree, deve ser importado no fonte a biblioteca DbTree.ch
Segue um exemplo da Tree com MVC, utilizando as tabelas do layout genérico:Bloco de código theme Eclipse language delphi title Exemplo de DbTree linenumbers true collapse true User Function MinhaTree() Local i := 0 Local j := 0 B90->(DbSetOrder(2)) B7C->(DbSetOrder(2)) B91->(DbSetOrder(1)) DEFINE DIALOG oDlg TITLE "Layout Genérico" FROM 180,180 TO 550,700 PIXEL // Cria a Tree oTree := DbTree():New(0,0,160,260,oDlg,,,.T.) // Insere itens oTree:AddItem("Layout Generico","001", "FOLDER12" ,"FOLDER13",,,1) If oTree:TreeSeek("001") If B7C->(MsSeek(xFilial("B7C")+"0003") ) i := 2 While !B7C->(EOF()) .AND. xFilial("B7C")+"0003" == B7C->(B7C_FILIAL+B7C_SEQB90) j := IIF(i == 2, 2,1) oTree:AddItem(B7C->B7C_DESCRI,StrZero (i,3), "FOLDER12","FOLDER13",,,j) If oTree:TreeSeek(StrZero (i,3)) i++ If B91->(MsSeek(xFilial("B91")+"0003"+B7C->B7C_ORDEM ) ) While !B91->(EOF()) .AND. xFilial("B91")+"0003"+B7C->B7C_ORDEM ==; B91->(B91_FILIAL+B91_SEQUEN+B91_GRUPO) oTree:AddItem(B91->B91_CAMPO,StrZero (i,3), "BR_AZUL",,,,2) i++ B91->(DbSkip()) EndDo oTree:AddItem("Botão OK",StrZero (i,3), "BR_LARANJA",,,,2) oTree:AddItem("Comp Anexo",StrZero (i++,3), "CLIPS",,,,2) i++ EndIf endif B7C->(DbSkip()) EndDo EndIf EndIf oTree:TreeSeek("001") // Retorna ao primeiro nível // Cria botões com métodos básicos oBtnCima := TButton():New(5,180,"",oDlg,{|| Alert('PARA CIMA!') },; 15,15,,,.F.,.T.,.F.,,.F.,,,.F. ) // O CSS abaixo irá inserir uma imagem posicionada à esquerda/superior do botão, oBtnCima:SetCss("QPushButton{ background-image: url(rpo:triup.png);"+; " background-repeat: none; margin: 2px }") oBtnDir := TButton():New(12,195,"",oDlg,{|| Alert('PARA DIREITA!') },; 15,15,,,.F.,.T.,.F.,,.F.,,,.F. ) // O CSS abaixo irá inserir uma imagem posicionada à esquerda/superior do botão, oBtnDir:SetCss("QPushButton{ background-image: url(rpo:triright.png);"+; " background-repeat: none; margin: 2px }") oBtnBaixo := TButton():New(20,180,"",oDlg,{|| Alert('PARA BAIXO!') },; 15,15,,,.F.,.T.,.F.,,.F.,,,.F. ) // O CSS abaixo irá inserir uma imagem posicionada à esquerda/superior do botão, oBtnBaixo:SetCss("QPushButton{ background-image: url(rpo:tridown.png);"+; " background-repeat: none; margin: 2px }") oBtnEsq := TButton():New(12,165,"",oDlg,{|| Alert('PARA ESQUERDA!') },; 15,15,,,.F.,.T.,.F.,,.F.,,,.F. ) // O CSS abaixo irá inserir uma imagem posicionada à esquerda/superior do botão, oBtnEsq:SetCss("QPushButton{ background-image: url(rpo:trileft.png);"+; " background-repeat: none; margin: 2px }") oBtnAdd := TButton():New(35,165," Add SubGrupo",oDlg,{|| Alert('Adicionar subgrupo!') },; 60,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtnAdd:SetCss("QPushButton{ background-image: url(rpo:ADDCONTAINER.png);"+; " background-repeat: none; margin: 2px }") oBtnDel := TButton():New(50,165," Del SubGrupo",oDlg,{|| Alert('Excluir subgrupo!') },; 60,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtnDel:SetCss("QPushButton{ background-image: url(rpo:BMPDEL.png);"+; " background-repeat: none; margin: 2px }") oBtnConfirm := TButton():New(165,200," Confirmar",oDlg,{|| Alert('Confirmar Tree!') },; 60,20,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtnConfirm:SetCss("QPushButton{ background-image: url(rpo:OK.png);"+; " background-repeat: none; margin: 2px }") // Indica o término da contrução da Tree oTree:EndTree() ACTIVATE DIALOG oDlg CENTERED Return
O fonte WSPLCADWEB.PRX, que é o WebService que monta e faz a gravação genérica do Layout Genérico no portal, terá que considerar a tabela BBR para montar os campos na tela, porém a estrutura que ele cria o layout deve ser mantida, mas os componentes na tela devem estar como se apresentam na Tree.
- Deverá ser criado na tabela B91, o campo B91_CSS, para que seja possível estilizar os campos e os botões da tela.
- Pode ser desenvolvido da mesma maneira da tabela dos layouts das guias, tabela B7B, campo B7B_CSS.
Deverá ser criado nas tabelas B7C e B91 os campos B7C_CUSTOM e B91_CUSTOM respectivamente para o usuário, quando alterar uma propriedade do layout genérico, indicar que é uma alteração customizada. Com isso, quando o Wizard rodar para carregar os layouts, não vai sobrepor os registros que possuírem esses campos com valor .T..
- O campo B91_TIPO é um campo que tem o X3_CBOX preenchido com algumas opções (C=Texto;M=Memo;G=Combo;N=Numerico;D=Data;S=Sequencial;P=Combo Pesquisa), nele, deverá ser acrescentada mais uma opção: R=Radio Button, essa opção, como o próprio nome já diz, será para acrescentar o componente RadioButton no layout genérico. Suas opções serão passadas da mesma maneira que os campos dos tipos Combo e Combo Pesquisa, e a forma de carregar as opções dinamicamente, também será da mesma forma, com a função #PLSCBOXGEN no campo B91_CBOX.
- Os únicos lugares que deverão ter um tratamento especial para o Radio Button será no WSPLCADWEB, no mesmo momento onde são criados os combos da página, serão criados os RadioButtons utilizando o WCComponent que já foi adaptado para esse componente Radio.
- Deverá também ser acrescentado o tipo A=Anexos, que criará um componente usando a ModalBS, para anexar 1 ou N arquivos.
- Quando houver um componente do tipo Anexos, no portal deverá ser criado um botão que vai chamar a telinha utilizando o ModalBS, com o componente da rotina genérica de anexos.
- VERIFICAR COMO PASSAR PARÂMETRO PARA A FUNÇÃO GENÉRICA DE ANEXOS
- O tipo B=Botão também deverá ser criado no campo B91_TIPO, assim sendo, também deverá ser criado o campo B91_ONCLICK que receberá uma função JavaScript que será acionada no clique do botão.
- Como citado acima, atualmente, o layout genérico cria grupos de campos conforme as tabelas informadas na B7C, isto é, se na B7C for informada uma tabela qualquer, será criado um grupo com somente os campos dessa tabela informada, esse grupo de campos é um Accordion do Bootstrap e ele possui um título, mas, dentro do Accordion, é criado um Fieldset para agrupar os campos e ele também espera um título, atualmente está sendo passada a mesma string para ambos títulos, duplicando-o. Portanto, será necessário adaptar a função WCFLegGrou no WCHtml para não duplicar o título.
- Na função WCFLegGrou tem um parâmetro lMaxMin que define se o grupo será criado fora do FieldSet, se esse parâmetro estiver com o valor .T., não deve ser criada a tag <legend> dentro do FieldSet.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
PLSCADLAY | Alteração | Miscelânea -> Genérico -> Layout Genérico Web | - |
PLSA444 | Envolvida | Miscelânea -> A.n.s.-> Terminologias TISS | 1 |
Tabelas Utilizadas
- B90 – Layout Pag. Web
- B7C – Grupos de campos
- B91 – Campos Layout
- BBR – Agrupamentos Layout Genérico
Protótipo de Tela
Protótipo 01 - Tree com itens recolhidos
Protótipo 02 - Tree com itens abertos
Protótipo 03 - Telinha de anexos
Dicionário de Dados
Campo B91_TIPO - Alteração X3_CBOX
Campo | B91_TIPO |
Opções | C=Texto;M=Memo;G=Combo;N=Numerico;D=Data;S=Sequencial;P=Combo Pesquisa;R=Radio Button;B=Botão;A=Anexos |
Campo B91_ONCLICK - Criar
Campo | B91_ONCLICK |
Tipo | Caractere |
Tamanho | 150 |
Descrição | Func. Clique do botão |
Título | Func. Onclick |
Picture |
|
Help de Campo | Informe uma função JavaScript que será acionada no momento do clique no componente botão |
Campo B91_CSS - Criar
Campo | B91_CSS |
Tipo | Caractere |
Tamanho | 50 |
Descrição | Css do componente |
Título | Css Comp. |
Picture |
|
Help de Campo | Informe uma classe CSS que irá estilizar o campo |
Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/BBR – Agrupamentos do Layout Genérico
Índice | Chave |
01 | <FI9_FILIAL+FI9_IDDARF+FI9_STATUS> |
02 | <FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF> |
03 | <FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO> |
Campo |
BBR_ |
FILIAL |
Tipo |
C | |
Tamanho | 2 |
<6>
Valor Inicial
<Varia de acordo com o tipo informado. Por exemplo, quando o campo “tipo” for date, neste campo pode ser informado uma data>.
Mandatório
Sim ( ) Não ( )
Descrição
<Referência Mínima para Cálculo>
Título
<Ref.Calc.>
Picture
<@E999.99>
Help de Campo
<Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação>
(Opcional)
Grupo de Perguntas
<Informações utilizadas na linha Protheus>.
Nome: FINSRF2
X1_ORDEM | 01 |
X1_PERGUNT | Emissão De |
X1_TIPO | D |
X1_TAMANHO | 8 |
X1_GSC | G |
X1_VAR01 | MV_PAR01 |
X1_DEF01 | Comum |
X1_CNT01 | '01/01/08' |
X1_HELP | Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório |
Descrição | Filial do Sistema |
Título | Filial |
Picture | @! |
Help de Campo | Filial do Sistema |
Campo | BBR_CODSEQ |
Tipo | C |
Tamanho | 4 |
Descrição | Código sequencial |
Título | Cod. Seq. |
Picture |
|
Help de Campo | Código Sequencial |
Campo | BBR_SEQB90 |
Tipo | C |
Tamanho | 4 |
Descrição | Sequencial do Layout |
Título | Seq. Layout |
Picture |
|
Help de Campo | Sequencial do Layout |
Campo | BBR_NIVEL |
Tipo | N |
Tamanho | 2 |
Descrição | Nível do componente |
Título | Nível |
Picture |
|
Help de Campo | Nível do componente |
(Opcional)
Consulta Padrão
<Informações utilizadas na linha Protheus>
Consulta: AMB
Descrição
Configurações de Planejamento
Tipo
Consulta Padrão
Tabela
“AMB”
Índice
“Código”
Campo
“Código”; ”Descrição”
Retorno
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|