Árvore de páginas

Versões comparadas

Chave

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

...

  • Inclusão de Funcionários
  • Inclusão de dependentes
  • Inclusão de Beneficiários
  • Inclusão de Plano de Saúde
  • Inclusão de VT
  • Inclusão de VR
  • Inclusão de VA
  • Inclusão de Outros Benefícios
  • Gráfico comparativo de status de funcionários no mês
  • Gráfico de Vagas
  • Impressão de Contratos(Word)

    Definição da Regra de Negócio


    Teremos uma Área de Trabalho com 2 layouts predefinidos, sendo um com gráfico e outro sem.
    O Browse de Funcionários é o componente mais importante da área de trabalho, pois é a partir dele que as demais operações são realizadas, teremos configurado duas visões: Admitidos no mês (Default) e Meus Admitidos, além da visualização de todos os funcionários.
    Por exemplo, para incluir um dependente podemos executar a ação através do Menu Lateral ou através do Browse Dependentes, mas nas duas situações é preciso que browse de funcionário esteja posicionado no registro desejado.
    Portanto é importante que para realizar qualquer operação o Browse esteja posicionado no funcionário desejado!
    O gráfico Admitidos mostrará os funcionários com os Status Admitido, Demitido, Afastado e Férias no mês, enquanto o Gráfico Vagas, mostra o número de vagas abertas e fechadas no mês.

    Definição técnica


    Projeto e Menu


    Incluir no Projeto SIGWGPE.PRJ os fontes GPEW020.prw e TRHWorkArea.prw
    Criar o Menu Atualizações/Area de Trabalho/Admissão* Revisar os arquivos .DOT($/Protheus_Padrao/Fontes_Doc/Sustentação/V12/V12/Binary Files/Recursos Humanos), pois estão com o logo Microsiga. Substituir por uma imagem "Coloque seu logo aqui" já que os clientes devem trocar pelo logo da empresa.

    Arquivos .DOT(Word)

    Classe TRHWorkArea


    A Área de Trabalho é conjunto de objetos gráficos, sendo:
  • Área Útil (Janela)
  • Menu
  • Painéis onde são colocados os objetos
    Como teremos diversas áreas de trabalho vamos criar uma classe para facilitar o desenvolvimento no futuro.
    Classe TRHWorkArea
    METHOD New (cTitulo) CONSTRUCTOR
    METHOD getRelSize(nPerc)
    METHOD loadMenu(oMenu)
    METHOD SetMenu(oMenu, nSize)
    METHOD SetLayout(aTelas)
    METHOD Activate()
    METHOD Sair()
    METHOD getPanel(cId)
    METHOD SetWidget( oPanel, cAliasEnt, cFonte, cType, cFiltro )
    METHOD SetBrowse( oPanel, cAliasEnt, cMenuDef, cDescric)

    Configuração WorkArea(layout's)


    Disponibilizar menu para que o usuário possa alternar entre os layouts com Gráfico e Sem Gráico.

    Cadastro de Funcionários (GPEA010)


    Para que seja possível a vinculação de Gráficos e Visões ao browse é preciso habilitar o Browse.
    Serão criadas duas visões para esta funcionalidade:
    1 – Admitidos no Mês  Mostrar somente funcionários admitidos no mês corrente(trazer esta como default)
    2 – Meus Admitidos  Mostrar somente funcionários admitidos por mim, para isso será preciso criar um campo na SRA(RA_USRADM) para gravar o usuário que está incluindo o funcionário.
    O Gráfico desta rotina será o "Admissão", mostrar a quantidade de funcionários dentro do mês com Situação Admitido, Demitido, Afastado e Férias.
    Também será preciso tratar a variável cCadastro na função Gpea010Mnt()
    Exemplo:
    oBrwSRA:SetAttach(.T.)
    oTableAtt := TableAttDef()
    If oTableAtt <> Nil
    oBrwSRA:SetViewsDefault(oTableAtt:aViews)
    oBrwSRA:SetChartsDefault(oTableAtt:aCharts)
    EndIf
    oBrwSRA:SetOpenChart( .F. )
    e Criar os Graficos e visões desejadas:
    Static Function TableAttDef()
    Local oTableAtt := FWTableAtt():New()
    Local oDSMyAbert:= Nil
    oTableAtt:SetAlias("SRA")
    oDSMyAbert := FWDSView():New()
    oDSMyAbert:SetName("Funcionarios ativos")
    oDSMyAbert:SetID("DSMyAbert")
    oDSMyAbert:SetOrder(1)
    oDSMyAbert:SetCollumns({"RA_FILIAL","RA_MAT","RA_NOME"})
    oDSMyAbert:SetPublic(.T.)
    oDSMyAbert:AddFilter("Func", "RA_SITFOLH == ' '")
    oTableAtt:AddView(oDSMyAbert)

    oDSPorProb := FWDSChart():New()
    oDSPorProb:SetName("Admissão")
    oDSPorProb:SetTitle("Admissão")
    oDSPorProb:SetID("DSPorProb")
    oDSPorProb:SetType("PIECHART")
    oDSPorProb:SetSeries("SRA","RA_SITFOLH","COUNT")
    oDSPorProb:SetCategory("SRA", "RA_SITFOLH")
    oDSPorProb:SetPublic(.T.)
    oDSPorProb:SetLegend(CONTROL_ALIGN_BOTTOM) //Inferior
    oDSPorProb:SetTitleAlign(CONTROL_ALIGN_CENTER)
    oTableAtt:AddChart(oDSPorProb)

    Return(oTableAtt)

    Menu lateral


    Teremos as opções abaixo de Menu, lembrando que deverá ser verificado se o usuário tem permissão de acesso a rotina. Caso não tenha permissão não mostrar o Menu.
    Criar as funções MenuRH, GetMenuRH e FindRhMenu no fonte RHLIBUSU.PRW. Estas rotinas servirão para verificar se o usuário tem acesso a rotina especificada no Menu.
    MenuRH() Recuperar o menu do usuário, retornando aMenu(essa variável deve ser carregada por modulo)
    GetMenuRH()Verifica a permissão do usuário para a rotina, retornando booleano
    FindRhMenu()Busca a rotina no menu do usuário.
    Exemplo:Local aMenu := {}
    aMenu := MenuRH()
    lFunc := GetMenuRH(aMenu,"GPEA010",1,.F.,,__CUSERID,nModulo)

    Pasta

    Descrição

    Bloco

    Rotina

    Módulo

    Admissão

    + Admissao

     RSPM001

     RSPM001

    20

    Admissão

    + Funcionários

     Gpea010Mnt()

     GPEA010

    7

    Admissão

    + Dependentes

     {FWExecView( "Atualizar", "VIEWDEF.GPEA020", MODEL_OPERATION_UPDATE, , {.T. } )}

    GPEA020

    7

    Admissão

    + Beneficiários

     GP280ATU("SRA",0,3)

     GPEA280

    7

    Plano de Saúde

    Incluir

    {FWExecView( "Planos Ativos", "VIEWDEF.GPEA001", MODEL_OPERATION_UPDATE, , {.T. } )}

     GPEA001

    7

    Vale Refeição

    Incluir

    GP131ATU("SRA",0,3,1)

    GPEA131

    7

    Vale Refeição

    Atualizar

    GP131ATU("SRA",SRA->(Recno()),4,1)

     GPEA131

    7

    Vale Alimentação

    Incluir

    GP131ATU("SRA",0,3,2)

     GPEA131

    7

    Vale Alimentação

    Atualizar

    GP131ATU("SRA",SRA->(Recno()),4,2)

     GPEA131

    7

    Vale Transporte

    Meios Transporte

    FWExecView( "Visualizar", "VIEWDEF.GPEA140", MODEL_OPERATION_INSERT, , {.T. } )}

    GPEA140

     7

    Vale Transporte

    Incluir

     

     GPEA131

    7

    Vale Transporte

    Atualizar

     GP131ATU("SRA",SRA->(Recno()),4,0)

     GPEA131

    7

    Outros Benefícios

    Atualizar

     {FWExecView( "Atualizar", "VIEWDEF.GPEA065", MODEL_OPERATION_UPDATE, , {.T. } )}

    GPEA065

    7

    Contratos

    Contratos

    U_GPEWORD 

     GPEWORD 

    7

    Para o caso dos benefícios(VR/VA/VT) checar a função NovoCalcBEN() para saber se mostra os menus de forma separa(como acima) ou se simplesmente chama a viewdef do GPEA133 para o novo calculo de benefícios.

    Meios Transporte (GPEA140)


    Retirar a variável INCLUI e fazer o tratamento usando model:getOperantion()

    GPEA280 – Beneficiários


    Será preciso alterar a função GP280ATU() para fazer o tratamento da variável cCadastro , lIncluir, lGp280Auto .

    RSPA100 – Cadastro de Vagas


    Preparar a rotina para gerar gráfico e visões, para isso será preciso alterar os parâmetros da mBrwose e criar a Static Function TableAttDef()
    mBrowse(6, 1, 22, 75, 'SQS',,,,,,aColors,,,,,,,,,,,,, {|oBrowse| RS100BrwAct (oBrowse)} )
    Static Function RS100BrwAct(oBrowse)
    Local oTableAtt := TableAttDef()//static function que deve ser criada no fonte
    oBrowse:SetAttach(.T.)
    oBrowse:SetViewsDefault( oTableAtt:aViews )
    oBrowse:SetChartsDefault( oTableAtt:aCharts )
    Return
    Static Function TableAttDef()
    Local oTableAtt := FWTableAtt():New()
    Local oDSMyAbert := Nil
    oTableAtt:SetAlias("SRA")
    oDSMyAbert := FWDSView():New()
    oDSMyAbert:SetName("Vagas")
    oDSMyAbert:SetID("DSMyAbert1")
    oDSMyAbert:SetOrder(1)
    oDSMyAbert:SetCollumns({"QS_FILIAL","QS_DESCRIC","QS_NRVAGA"})
    oDSMyAbert:SetPublic(.T.)
    oTableAtt:AddView(oDSMyAbert)

    oDSPorProb := FWDSChart():New()
    oDSPorProb:SetName("Vagas")
    oDSPorProb:SetTitle("Vagas")
    oDSPorProb:SetID("DSPorProb1")
    oDSPorProb:SetType("BARCOMPCHART")
    oDSPorProb:SetSeries({ {"SQS","QS_NRVAGA","SUM"},{"SQS","QS_VAGAFEC","SUM"}})
    oDSPorProb:SetCategory("SQS", "QS_DESCRIC")
    oDSPorProb:SetPublic(.T.)
    oDSPorProb:SetLegend(CONTROL_ALIGN_BOTTOM) //Inferior
    oDSPorProb:SetTitleAlign(CONTROL_ALIGN_CENTER)
    oTableAtt:AddChart(oDSPorProb)

    Return(oTableAtt)



    Tabelas Utilizadas

...