Gestão de Pessoas - Manual do Usuário > Customizações > Regras > Regras por Processo > Regra por processo 888 - Após salvar informações do Levantamento de Necessidades de Treinamento

Regra por processo 888 - Após salvar informações do Levantamento de Necessidades de Treinamento

Esta regra será executada ao clicar no botão Salvar da tela Levantamento de Necessidades de Treinamento (FRAPULNT), após gravar as informações nas tabelas LNT - Colaboradores (R145COL) e LNT - Requisitos do Colaborador (R145REQ). Com o uso de cursores, esta regra permite consultar os registros gravados nestas tabelas.

A variável de sistema DataReferenciaLNT está disponível para esta regra, para consultar a data de referência na qual as informações do LNT foram geradas.

Exemplo:

@ Regra para ser informada no processo 888-Após salvar informações do Levantamento de Necessidades de Treinamento @

Definir Alfa xCursorSelectRequisitos;
Definir Alfa xCursorInsertReservas;
Definir Alfa xSelectRequisitos;
Definir Alfa xInsertReservas;
Definir Alfa xPosTra;
Definir Alfa xCodCar;
Definir Data xDataLNT;
Definir Cursor xCurR034FUN;
Definir Cursor xCurR033HAP;
Definir Cursor xCurR128CUA;
Definir Cursor xCurR132RPA;

xDataLNT = DataReferenciaLNT;

xSelectRequisitos = "SELECT * \
                        FROM R145REQ, R145COL \
                     WHERE R145REQ.NUMEMP = R145COL.NUMEMP \
                        AND R145REQ.TIPCOL = R145COL.TIPCOL \
                        AND R145REQ.NUMCAD = R145COL.NUMCAD \
                        AND R145REQ.DATLNT = R145COL.DATLNT \
                        AND R145REQ.DATLNT = :DatRef \
                        AND R145COL.CARLNT = 1 \ - Cargo real do colaborador
                        AND R145COL.POSLNT = 1 \ - Posto trabalho real do colaborador
                        AND R145REQ.TIPREQ = 1 \ - Requisitos de aperfeiçoamento
                        AND R145REQ.SITREQ = 1 \ - Requisitos não atendidos
                        AND R145REQ.EXIREQ = 'N' \ - Necessário
                        AND (R145REQ.ORIREQ = 1 OR R145REQ.ORIREQ = 2)";

xInsertReservas = "INSERT INTO R132RPA \
                        (CodCua, NumEmp, TipCol, NumCad, DatRes, OriRes, CodMcu, CodUsu, EmpRes, TipRes, CadRes) \
                        VALUES \
                        (:CodCua, :NumEmp, :TipCol, :NumCad, :DatRes, :OriRes, :CodMcu, :CodUsu, :EmpRes, :TipRes, :CadRes)";

SQL_Criar(xCursorSelectRequisitos);
SQL_DefinirComando(xCursorSelectRequisitos, xSelectRequisitos);
SQL_DefinirData(xCursorSelectRequisitos, "DatRef", xDataLNT);
SQL_AbrirCursor(xCursorSelectRequisitos);
Se (SQL_EOF(xCursorSelectRequisitos) = 0)
Inicio
   SQL_Criar(xCursorInsertReservas);
   SQL_DefinirComando(xCursorInsertReservas, xInsertReservas);

   Enquanto(SQL_EOF(xCursorSelectRequisitos) = 0)
   Inicio
      SQL_RetornarInteiro(xCursorSelectRequisitos, "NumEmp", xNumEmp);
      SQL_RetornarInteiro(xCursorSelectRequisitos, "TipCol", xTipCol);
      SQL_RetornarInteiro(xCursorSelectRequisitos, "NumCad", xNumCad);
      SQL_RetornarInteiro(xCursorSelectRequisitos, "CodCua", xCodCua);
      SQL_RetornarInteiro(xCursorSelectRequisitos, "EstPos", xEstPos);
      SQL_RetornarAlfa(xCursorSelectRequisitos, "PosTra", xPosTra);
      SQL_RetornarInteiro(xCursorSelectRequisitos, "EstCar", xEstCar);
      SQL_RetornarAlfa(xCursorSelectRequisitos, "CodCar", xCodCar);

      @ Busca o cadastro da pessoa associada ao colaborador @
      xCurR034FUN.SQL "SELECT CODPES FROM R034FUN WHERE NUMEMP = :xNumEmp AND TIPCOL = :xTipCol AND NUMCAD = :xNumCad";
      xCurR034FUN.AbrirCursor();
      Se (xCurR034FUN.Achou)
      Inicio
         xCodPes = xCurR034FUN.CodPes;
      Fim
      xCurR034FUN.FecharCursor();

      @ Verifica se o colaborador possui algum histórico do curso do requisito @
      xTemHistoricoCurso = 0;
      xCurR033HAP.SQL "SELECT CODPES FROM R033HAP WHERE CODPES = :xCodPes AND CODCUA = :xCodCua";
      xCurR033HAP.AbrirCursor();
      Se (xCurR033HAP.Achou)
      Inicio
         xTemHistoricoCurso = 1;
      Fim
      xCurR033HAP.FecharCursor();

      xCodCuaReserva = xCodCua; @ A princípio a reserva será gerada para o curso do requisito @

      @ Verifica se o colaborador já possui histórico do curso do requisito @
      Se (xTemHistoricoCurso > 0)
      Inicio
         xCurR128CUA.SQL "SELECT CURREC FROM R128CUA WHERE CODCUA = :xCodCua";
         xCurR128CUA.AbrirCursor();
         Se (xCurR128CUA.Achou)
         Inicio
            Se (xCurR128CUA.CurRec > 0)
            xCodCuaReserva = xCurR128CUA.CurRec; @ O curso do requisito tem um curso de reciclagem informado, então gera uma reserva para o curso de reciclagem @
         Fim
         xCurR128CUA.FecharCursor();
      Fim

      @ Verifica se já existe uma reserva com mesmo curso, colaborador e data @
      xTemReserva = 0;
      xCurR132RPA.SQL "SELECT DATRES FROM R132RPA WHERE CODCUA = :xCodCuaReserva AND NUMEMP = :xNumEmp AND TIPCOL = :xTipCol AND NUMCAD = :xNumCad AND DATRES = :xDataLNT";
      xCurR132RPA.AbrirCursor();
      Se (xCurR132RPA.Achou)
      Inicio
         xTemReserva = 1;
      Fim
      xCurR132RPA.FecharCursor();

      Se (xTemReserva = 0)
      Inicio
         /* Cria reserva de treinamento, caso ainda não tenha reserva na data */
         SQL_DefinirInteiro(xCursorInsertReservas, "CodCua", xCodCuaReserva);
         SQL_DefinirInteiro(xCursorInsertReservas, "NumEmp", xNumEmp);
         SQL_DefinirInteiro(xCursorInsertReservas, "TipCol", xTipCol);
         SQL_DefinirInteiro(xCursorInsertReservas, "NumCad", xNumCad);
         SQL_DefinirData(xCursorInsertReservas, "DatRes", xDataLNT);
         SQL_DefinirInteiro(xCursorInsertReservas, "OriRes", 9);
         SQL_DefinirInteiro(xCursorInsertReservas, "CodMcu", 1);
         RetColabPorCodUsu(CodUsu, xEmpUsu, xTipUsu, xCadUsu);
         SQL_DefinirInteiro(xCursorInsertReservas, "CodUsu", CodUsu);
         SQL_DefinirInteiro(xCursorInsertReservas, "EmpRes", xEmpUsu);
         SQL_DefinirInteiro(xCursorInsertReservas, "TipRes", xTipUsu);
         SQL_DefinirInteiro(xCursorInsertReservas, "CadRes", xCadUsu);

         SQL_AbrirCursor(xCursorInsertReservas);
         SQL_FecharCursor(xCursorInsertReservas);
      Fim

      SQL_Proximo(xCursorSelectRequisitos);
   Fim

   SQL_Destruir(xCursorInsertReservas);
Fim

SQL_FecharCursor(xCursorSelectRequisitos);
SQL_Destruir(xCursorSelectRequisitos);

Utilização: ao salvar as informações do levantamento de necessidades de treinamento.

Disponível para o módulo: Treinamento.

Este artigo ajudou você?