Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 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

  

  1.  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.
    1. 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)
    2. 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.
      1. Setas para cima e para baixo - Apenas movimentarão os itens para cima e para baixo.
      2. Setas para esquerda e para direita - Alterarão o nível do item.
    3. Para desenvolver a Tree consulte o fonte PLSA444.PRW, função PL444TREE, consulte também o seguinte link: http://tdn.totvs.com/x/VoRc
      1. Sugestão: Utilizar imagens diferentes do ícone da tree para componente do tipo campo, do tipo botão e do tipo anexo.
      2. Deverá ser possível criar/excluir subgrupos na Tree e organizar os componentes dentro dele.
      3. Da primeira vez, a tree será carregada de acordo com as tabelas B90, B7C e B91, e a estrutura deverá ser gravada na BBR mesmo que o usuário não modifique a estrutura inicial sugerida.
      4. O usuário poderá fazer alterações na tree.
      5. Todos os requisitos desenvolvido com layout genérico até o momento deverão ser adaptados e deverá ser criada a Tree de cada um deles.
        1. Depois será necessário fazer as alterações no WSPLCADWEB para a tela ser montada no portal de acordo com a tree configurada.
      6. 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
        themeEclipse
        languagedelphi
        titleExemplo de DbTree
        linenumberstrue
        collapsetrue
        User Function MinhaTree()  
          Local i :=

        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
        themeEclipse
        languagedelphi
        titleExemplo de DbTree
        linenumberstrue
        collapsetrue
        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 }")    
                        
         
            // Indica o término da contrução da Tree
            oBtnConfirm oTree:EndTree()
         
          ACTIVATE DIALOG oDlg CENTERED 
        Return 

         

         

    4. 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.

  2. Deverá ser criado na tabela B91, o campo B91_CSS, para que seja possível estilizar os campos e os botões da tela.
    1. Pode ser desenvolvido da mesma maneira da tabela dos layouts das guias, tabela B7B, campo B7B_CSS.
  3. 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..

  4. 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
    1. 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.   
  5. 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.
    1. 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

 

Exemplo de Aplicação:

  • Criar o campo “% Mínimo Espécie” (AAA_PERESP) onde o usuário informará o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação.
  • Criar o campo “Referência Mínima para Cálculo” (AAA_REFCAL) onde o usuário informará um dos 4 valores disponíveis para pagamento das mensalidades  como a referência mínima para calcular o débito total do aluno.
  • Criar o parâmetro MV_ACPARNE que definirá se as informações de “% Mínimo Espécie” e “Referência Mínima para Cálculo” serão obrigatórias.
  • O parâmetro MV_ACPARNE deve ter as seguintes opções: 1=Obrigatório e 2=Opcional. Deve ser inicializado como opcional>.

 

Tabelas Utilizadas

  • SE2 – Cadastro de Contas a Pagar
  • FI9 – Controle de Emissão de DARF>.

Opcional

Protótipo de Tela

 

<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.

 

Protótipo 01

 

 

 Image Removed

 

 

 

 

 

 

Opcional

Fluxo do Processo

 

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 

Opcional

Dicionário de Dados

 

Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/

  

Í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

<AAA_PERESP>

Tipo

<N>

Tamanho

<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 

 

(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

AMB->AMB_CODIGO

 
      1. = 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        
    1. 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.

  1. Deverá ser criado na tabela B91, o campo B91_CSS, para que seja possível estilizar os campos e os botões da tela.
    1. Pode ser desenvolvido da mesma maneira da tabela dos layouts das guias, tabela B7B, campo B7B_CSS.
  2. 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..

  3. 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
    1. 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.   
    2. Deverá também ser acrescentado o tipo A=Anexos, que criará um componente usando a ModalBS, para anexar 1 ou N arquivos.
      1. 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.
      2. Deverá ser criado um campo B91_UPLOAD que receberá os parâmetros necessários para chamar a função genérica de anexo de documentos, para consultar essa função acesse: http://tdn.totvs.com/x/yQkGD, que é a especificação dessa funcionalidade genérica.
    3. O tipo B=Botão também deverá ser criado no campo B91_TIPO, assim sendo, também deverá ser usado o campo B91_ACTION que receberá uma função JavaScript que será acionada no clique do botão.
  4. 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.
    1. 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

Image Added

Protótipo 02 - Tree com itens abertos

 Image Added

Protótipo 03 - Telinha de anexos

Image Added

 

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_CSS - Criar

Campo

B91_CSS

Tipo

Caractere

Tamanho

50

Descrição

Css do componente

Título

Css Comp.

Help de Campo

Informe uma classe CSS que irá estilizar o campo

Campo B91_UPLOAD - Criar

Campo

B91_UPLOAD

Tipo

Caractere

Tamanho

150

Descrição

Parametros função genérica de anexos

Título

Func Anexos

Help de Campo

Informe os parâmetros da função genérica de anexos


 

Arquivo ou Código do Script: BBR – Agrupamentos do Layout Genérico

  

Índice

Chave

01

BBR_FILIAL+BBR_SEQB90+BBR_GRUPAI+BBR_NIVEL+BBR_ORDEM

Campo

BBR_FILIAL

Tipo

C

Tamanho

2

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.

Help de Campo

Código Sequencial

Campo

BBR_SEQB90

Tipo

C

Tamanho

4

Descrição

Sequencial do Layout

Título

Seq. Layout

Help de Campo

Sequencial do Layout

Campo

BBR_NIVEL

Tipo

C

Tamanho

3

Descrição

Nível do componente

Título

Nível

Help de Campo

Nível do componente

Campo

BBR_GRPPAI

Tipo

C

Tamanho

3

Descrição

Grupo pai do componente

Título

Grupo pai

Help de Campo

É o número do Nivel do componente acima

Campo

BBR_ORDEM

Tipo

C

Tamanho

3

Descrição

Ordem do componente

Título

Ordem

Help de Campo

Ordem do componente

Campo

BBR_COMB91

Tipo

C

Tamanho

45

Descrição

Componente da B91

Título

Componente

Help de Campo

Componente da B91, campo B91_NOMXMO

Campo

BBR_TIPO

Tipo

C

Tamanho

1

Descrição

Componente da B91

Título

Componente

Help de Campo

C=Campo;S=SubGrupo;B=Botão;A=Anexos
 

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.