Á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-5676

Requisito

PCREQ-6212

Subtarefa

PCSFL-151

Release de Entrega Planejada

12.1.8

Réplica

Não

País

( x ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Objetivo

 

Esta especificação tem o objetivo de descrever como será desenvolvido o layout da tela de solicitação de reembolso do portal do beneficiário, sempre pensando que o beneficiário pode ser um usuário leigo e que precisa realizar o processo na maneira mais fácil possível.

Definição da Regra de Negócio

 

- Leitura do requisito 1 da MIT - 1h
- Desenvolver o layout baseado nas tabelas (BOW, B1N) - 1h
- Gravação antecipada do item (funções javascript) - 2h
- Gravação do confirmar genérica (considerar outra) - 1h
- Criar botao do tipo anexos, que criar um componente abaixo pra listar os anexos (gravar junto ou gravar todos no fim) - 1,5h
- Mudança dos campos de acordo com o tipo de documento - 2,5h
- Validações dos campos - 4,5h
- Chamada da impressão do relatorio e inclusao de novo documento abaixo do numero do protocolo (ModalBS)

 

  1. Criar o cabeçalho da tela em HTML (utilizando o framework WCHTML), deverá conter os seguintes campos:
    1. Tipo do comprovante (B1N_TIPDOC) - combobox que deverá, ao carregar a tela, já deverá estar com os registros da tabela BBS (Tipo Doc. Reemb) carregados.
    2. CNPJ/CPF do prestador de serviço (B1N_PRCNPJ)
    3. Nome do prestador de serviço (B1N_PRNOME)
    4. Nº da nota fiscal/cupom fiscal, etc (B1N_NUMDOC) (modificar a label conforme a opção selecionada no combobox)
    5. Data de emissão do comprovante fiscal (B1N_DATDOC)
    6. Obs: Se existir na BK6 a rede informada, deverá gravar na B1N, no campo B1N_CODREF, o código encontrado na BK6.
      1. Sugestão: como a tabela B1N são os itens do reembolso, para não ficar gravando essas informações a todo momento, quando o usuário preencher o CNPJ/CPF deverá validar o seguinte:
        1. Se existir na tabela BK6, preencha o campo Nome do prestador de serviço e desabilite a edição e retorne o código encontrado na BK6 e grave-o em um input do tipo "hidden".
        2. Se não existir, deixe o campo Nome do prestador de serviço habilitado para edição e mantenha o valor do hidden em branco.
        3. No momento que o usuário confirmar a solicitação, grave o código do hidden (se houver) em todas os itens(despesas) inseridos, do contrário grave somente os campos de CNPJ e nome.
        4. Para consultar a especificação técnica sobre a rede não referenciada acesse: http://tdn.totvs.com/x/6bL5Cw
  2. Criar os itens(despesas) do reembolso, deverá conter os campos:
    1. Nome do beneficiário
    2. Tipo do serviço utilizado
    3. Uso constante
    4. Cod. do Procedimento
    5. Procedimento
    6. Quantidade
    7. Valor
    8. Receitas Cadastradas
      1. Esse campo será visível somente quando a despesa estiver marcada como "Uso constante".
      2. Deverá ser um combo pesquisa, agrupado por Receitas e medicamentos cadastrados, onde o beneficiário irá selecionar o medicamento que irá solicitar o reembolso.
      3. Para consultar a especificação sobre o cadastro de receitas de medicamentos de uso contínuo acesse: http://tdn.totvs.com/x/FCMGD
    9. Botão: Adicionar uma nova despesa 
      1. Cada vez que esse botão for clicado, deverá ser gravado o último item que foi adicionado antes de inserir a nova div para uma nova despesa.
        1. A div adicionada deverá estar com o formulário aberto e todas as outras exibindo apenas um resumo das informações (Tipo do atedimentoatendimento, valor, nome do beneficiário).
        2. Na tabela BOW deverá gravar somente o número da solicitação, bem como no item que é a B1N, no entanto os campos "fixos" do cabeçalho não serão gravados nesse momento.
        3. A solicitação deverá ser gravada com o status "A-Solicitação não concluida"
    10. Botão: Excluir
      1. Botão que deverá excluir a caixa (div) da despesa e ainda excluí-la da base de dados.

        Bloco de código
        languagejs
        titleRemovendo um elemento html
        collapsetrue
        //utilizando javascript puro
        var divExcluir = document.getElementById("divExcluir"); //pego a div que quero excluir e que tem o id do elemento "divExcluir"
        divExcluir.parentNode.removeChild(divExcluir ); //pego o elemento pai desta div e digo que quero excluir a div filha "divExcluir"
         
        //utilizando jquery
        $("#divExcluir").remove();
    11. Botão: Salvar
      1. Botão que aparecerá somente depois que o item for gravado na base de dados, pois quando o usuário clicar em "mais detalhes" para ver a despesa, deverá aparecer o formulário da despesa para que ele possa alterar as informações.
    12. Os campos que compõem cada div de despesas, serão iguais, sugestão para criar dinamicamente em cada div:
      1. Criar um fieldset no .aph que terá "display:none" cada vez que for adicionada uma nova despesa, deve ser chamada uma função JavaScript que cria o elemento que expande e retrai e passar por parâmetro o fieldset para que seja possível fazer o innerHTML do mesmo na div quando está expandida.
      2. Passar um array com o id dos campos que compõem o resumo da div, isto é, quando ela está retraída. 

        Bloco de código
        languagejs
        titleFunção que cria o componente da div
        collapsetrue
        function novaDiv(idFieldSet, idCamposDet){
        				//idCamposDet teria o formato label1~id1#label2~id2#label3~id3 ...
        				nCont++;
        				fTudoDetalhe(); //função que retrai todas as divs
        				var container = document.querySelector("#divMaster"); //div que envolve o componente com todas as divs dentro
        				
        				var divCaixa = document.createElement("DIV");
        				divCaixa.className = "col-md-12";
        				divCaixa.id = "divCaixa" + nCont;
        				
        				$(divCaixa).css({"border" : "1px solid", "margin" : "10px"});
        				
        				var divResume = document.createElement("DIV");
        				divResume.className = "col-md-12 divResume";
        				divResume.id = "resume" + nCont;
        				
        				$(divResume).css({"min-height":"100px","display":"none","position" : "relative", "border":"1px solid red"});
        				
                       //será necessário verificar como colocaremos os campos passados por parâmetro no "resumo" da div e ainda acrescentar o id da div caixa que envolve a div resume e a div form
        			   // então se for passado um campo com id txtNome, trocaremos para "txtNome_divCaixa" + nCont por exemplo.
        				var divBtn = document.createElement("DIV");
        				divBtn.className = "col-md-12 text-center";
        				divBtn.innerHTML = '<button type="button" id="btnD' + nCont + '" class="btn btn-default btn-xs btn-detail" onclick="fToggleForm((this.id).substr(4), \'resume\' );">exibir detalhes</button>'
        				$(divBtn).css({"position": "absolute","bottom": "0"});
        				
        				
        				var divFormDesp = document.createElement("DIV");
        				divFormDesp.className = "col-md-12 divFormDesp";
        				divFormDesp.id = "form-desp" + nCont;
        
        				//antes de fazer o innerHTML do fieldSet na div, deveremos trocar todos os id's dos elementos, acrescentando o id da div caixa que envolve a div resume e a div form
        
        				divFormDesp.innerHTML = document.querySelector("#"+idFieldSet).innerHTML
        				
        				$(divFormDesp).css({"min-height":"100px","display":"block","position" : "relative", "border":"1px solid red"});
        				
        				var divBtnDesp = document.createElement("DIV");
        				divBtnDesp.className = "col-md-12 text-center";
        				divBtnDesp.innerHTML = '<button type="button" id="btnO' + nCont + '" class="btn btn-default btn-xs btn-detail" onclick="fToggleForm((this.id).substr(4), \'form-desp\' );">ocultar detalhes</button>'
        				$(divBtnDesp).css({"position": "absolute","bottom": "0"});
        				
        				
        				divResume.appendChild(divBtn);
        				divCaixa.appendChild(divResume);
        				
        				divFormDesp.appendChild(divBtnDesp);
        				divCaixa.appendChild(divFormDesp);
        				
        				container.appendChild(divCaixa);
        			}
  3. Criar um fieldset para a parte de anexos da solicitação, que deverão ser gravados no banco de conhecimento, nas tabelas ACB e AC9. Neste fieldset teremos os campos:
    1. Uma grid para carregar os documentos enviados pelo beneficiário. 

    2. Criar um campo input do tipo "file" para o usuário selecionar o arquivo.
    3. Botão para enviar o arquivo.
    4. Quando, na despesa, o beneficiário selecionar que o tipo de serviço utilizado foi um Medicamento, deverá aparecer um novo botão ao lado do botão para Enviar o documento, um botão com a label "Enviar receita", o input deverá ter o label trocado para "Selecione o documento ou receita" e, ainda, acima do fieldset de anexos, deverá ser exibida uma mensagem utilizando o alert-warning do Bootstrap com uma mensagem de aviso para lembrar o usuário de anexar a receita do medicamento se houver. 
      1. Se o medicamento for de uso constante, deverá acrescentar na mensagem que se a receita já estiver cadastrada não será necessário anexá-la, anexar a receita apenas selecioná-la no campo "Receitas Cadastradas"

 

 

  1. Criar um layout genérico (PLSCADLAY) baseado nas tabelas BOW (cabeçalho do protocolo de reembolso ) e B1N ( itens do protocolo ), chamado PLSOLREEMB
      1. . 
    1. DESCREVER TODOS OS CAMPOS DO LAYOUT + RELACIONAMENTO E AFINS.
     Deverá ser adicionado no layout genérico um componente do tipo
  2. Botão , que chamará uma função JavaScript para incluir as despesas do reembolso.
    1. A função executada no botão, além de inserir o item na grid de dados, deverá também já fazer a gravação nas tabelas BOW e B1N.
      1. Na primeira vez que o botão de inserir o item for acionado, deverá gravar o cabeçalho (BOW) e o primeiro item (B1N). No cabeçalho o status da solicitação deverá ser gravado como "Solicitação não concluida".
        1. Sugestão: gravar num campo hidden o RECNO do registro da BOW para ficar mais fácil de gravar os itens depois.
      2. A partir da segunda vez, o sistema deverá gravar apenas cada item inserido. 
    para Finalizar a solicitação de reembolso.
    1. Como os itens já estarão cadastrados na base de dados, quando o usuário clicar nesse botão, o status da solicitação de reembolso deverá ser alterado para "1-Protocolado"
    2. Deverá gravar os dados do cabeçalho nos itens (despesas - B1N).
    3. Além dos campos na tela, deverão ser gravados outros campos na tabela BOW, para consultar quais são esses campos e as regras de gravação acesse o método webservice PutReembBen, que faz a gravação atual nas tabelas BOW, B1N, BK6
    No layout genérico, há um campo ( B90_FUNGRV ) que espera uma função que será executada para gravar o layout, quando ele não é informado, simplesmente faz a gravação das tabelas informadas no layout genérico. Neste caso da solicitação de reembolso, como cada vez que será inserido um item, as informações já serão gravadas na tabela, a única coisa que precisará ser gravada é o status da solicitação, então, quando o beneficiário clicar no botão de finalizar a solicitação de reembolso será necessário alterar o status da solicitação para "Protocolado"
    1. .

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

PLSCADLAY

Alteração

Miscelânea-> Genérico -> Layout genérico Web

-

[ACAA050 – Negociação Financeira]

[Envolvida]

[Atualizações -> Acadêmico-> Tesouraria]

-

[ACAA060 – Cadastro de Pedidos]

[Criação]

[Atualizações -> Acadêmico-> Cadastros]

-

 

Tabelas Utilizadas

  • BOW - Protocolo de reembolso
  • B1N - Itens protocolo reembolso
  • BK6 - Redes não referenciadas
  • ACB - Bancos de conhecimentos
  • AC9 - Relação de objetos X Entidades
  • SE2 – Cadastro de Contas a Pagar
  • FI9 – Controle de Emissão de DARF>.

Protótipo de Tela

  

Protótipo 01

 

 

 

 

 

 

Fluxo do Processo

 

 

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)

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

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