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:
<div class="Code"><p>@ Regra para ser informada no processo 888-Após salvar informações do Levantamento de Necessidades de Treinamento @</p><p>Definir Alfa xCursorSelectRequisitos;<br></br>Definir Alfa xCursorInsertReservas;<br></br>Definir Alfa xSelectRequisitos;<br></br>Definir Alfa xInsertReservas;<br></br>Definir Alfa xPosTra;<br></br>Definir Alfa xCodCar;<br></br>Definir Data xDataLNT;<br></br>Definir Cursor xCurR034FUN;<br></br>Definir Cursor xCurR033HAP;<br></br>Definir Cursor xCurR128CUA;<br></br>Definir Cursor xCurR132RPA;</p><p>xDataLNT = DataReferenciaLNT;</p><p>xSelectRequisitos = "SELECT * \<br></br> FROM R145REQ, R145COL \<br></br> WHERE R145REQ.NUMEMP = R145COL.NUMEMP \<br></br> AND R145REQ.TIPCOL = R145COL.TIPCOL \<br></br> AND R145REQ.NUMCAD = R145COL.NUMCAD \<br></br> AND R145REQ.DATLNT = R145COL.DATLNT \<br></br> AND R145REQ.DATLNT = :DatRef \<br></br> AND R145COL.CARLNT = 1 \ - Cargo real do colaborador<br></br> AND R145COL.POSLNT = 1 \ - Posto trabalho real do colaborador<br></br> AND R145REQ.TIPREQ = 1 \ - Requisitos de aperfeiçoamento<br></br> AND R145REQ.SITREQ = 1 \ - Requisitos não atendidos<br></br> AND R145REQ.EXIREQ = 'N' \ - Necessário<br></br> AND (R145REQ.ORIREQ = 1 OR R145REQ.ORIREQ = 2)";</p><p>xInsertReservas = "INSERT INTO R132RPA \<br></br> (CodCua, NumEmp, TipCol, NumCad, DatRes, OriRes, CodMcu, CodUsu, EmpRes, TipRes, CadRes) \<br></br> VALUES \<br></br> (:CodCua, :NumEmp, :TipCol, :NumCad, :DatRes, :OriRes, :CodMcu, :CodUsu, :EmpRes, :TipRes, :CadRes)";</p><p>SQL_Criar(xCursorSelectRequisitos);<br></br>SQL_DefinirComando(xCursorSelectRequisitos, xSelectRequisitos);<br></br>SQL_DefinirData(xCursorSelectRequisitos, "DatRef", xDataLNT);<br></br>SQL_AbrirCursor(xCursorSelectRequisitos);<br></br>Se (SQL_EOF(xCursorSelectRequisitos) = 0)<br></br>Inicio<br></br> SQL_Criar(xCursorInsertReservas);<br></br> SQL_DefinirComando(xCursorInsertReservas, xInsertReservas);</p><p> Enquanto(SQL_EOF(xCursorSelectRequisitos) = 0)<br></br> Inicio<br></br> SQL_RetornarInteiro(xCursorSelectRequisitos, "NumEmp", xNumEmp);<br></br> SQL_RetornarInteiro(xCursorSelectRequisitos, "TipCol", xTipCol);<br></br> SQL_RetornarInteiro(xCursorSelectRequisitos, "NumCad", xNumCad);<br></br> SQL_RetornarInteiro(xCursorSelectRequisitos, "CodCua", xCodCua);<br></br> SQL_RetornarInteiro(xCursorSelectRequisitos, "EstPos", xEstPos);<br></br> SQL_RetornarAlfa(xCursorSelectRequisitos, "PosTra", xPosTra);<br></br> SQL_RetornarInteiro(xCursorSelectRequisitos, "EstCar", xEstCar);<br></br> SQL_RetornarAlfa(xCursorSelectRequisitos, "CodCar", xCodCar);</p><p> @ Busca o cadastro da pessoa associada ao colaborador @<br></br> xCurR034FUN.SQL "SELECT CODPES FROM R034FUN WHERE NUMEMP = :xNumEmp AND TIPCOL = :xTipCol AND NUMCAD = :xNumCad";<br></br> xCurR034FUN.AbrirCursor();<br></br> Se (xCurR034FUN.Achou)<br></br> Inicio<br></br> xCodPes = xCurR034FUN.CodPes;<br></br> Fim<br></br> xCurR034FUN.FecharCursor();</p><p> @ Verifica se o colaborador possui algum histórico do curso do requisito @<br></br> xTemHistoricoCurso = 0;<br></br> xCurR033HAP.SQL "SELECT CODPES FROM R033HAP WHERE CODPES = :xCodPes AND CODCUA = :xCodCua";<br></br> xCurR033HAP.AbrirCursor();<br></br> Se (xCurR033HAP.Achou)<br></br> Inicio<br></br> xTemHistoricoCurso = 1;<br></br> Fim<br></br> xCurR033HAP.FecharCursor();</p><p> xCodCuaReserva = xCodCua; @ A princípio a reserva será gerada para o curso do requisito @</p><p> @ Verifica se o colaborador já possui histórico do curso do requisito @<br></br> Se (xTemHistoricoCurso > 0)<br></br> Inicio<br></br> xCurR128CUA.SQL "SELECT CURREC FROM R128CUA WHERE CODCUA = :xCodCua";<br></br> xCurR128CUA.AbrirCursor();<br></br> Se (xCurR128CUA.Achou)<br></br> Inicio<br></br> Se (xCurR128CUA.CurRec > 0)<br></br> xCodCuaReserva = xCurR128CUA.CurRec; @ O curso do requisito tem um curso de reciclagem informado, então gera uma reserva para o curso de reciclagem @<br></br> Fim<br></br> xCurR128CUA.FecharCursor();<br></br> Fim</p><p> @ Verifica se já existe uma reserva com mesmo curso, colaborador e data @<br></br> xTemReserva = 0;<br></br> xCurR132RPA.SQL "SELECT DATRES FROM R132RPA WHERE CODCUA = :xCodCuaReserva AND NUMEMP = :xNumEmp AND TIPCOL = :xTipCol AND NUMCAD = :xNumCad AND DATRES = :xDataLNT";<br></br> xCurR132RPA.AbrirCursor();<br></br> Se (xCurR132RPA.Achou)<br></br> Inicio<br></br> xTemReserva = 1;<br></br> Fim<br></br> xCurR132RPA.FecharCursor();</p><p> Se (xTemReserva = 0)<br></br> Inicio<br></br> /* Cria reserva de treinamento, caso ainda não tenha reserva na data */<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "CodCua", xCodCuaReserva);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "NumEmp", xNumEmp);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "TipCol", xTipCol);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "NumCad", xNumCad);<br></br> SQL_DefinirData(xCursorInsertReservas, "DatRes", xDataLNT);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "OriRes", 9);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "CodMcu", 1);<br></br> RetColabPorCodUsu(CodUsu, xEmpUsu, xTipUsu, xCadUsu);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "CodUsu", CodUsu);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "EmpRes", xEmpUsu);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "TipRes", xTipUsu);<br></br> SQL_DefinirInteiro(xCursorInsertReservas, "CadRes", xCadUsu);</p><p> SQL_AbrirCursor(xCursorInsertReservas);<br></br> SQL_FecharCursor(xCursorInsertReservas);<br></br> Fim</p><p> SQL_Proximo(xCursorSelectRequisitos);<br></br> Fim</p><p> SQL_Destruir(xCursorInsertReservas);<br></br>Fim</p><p>SQL_FecharCursor(xCursorSelectRequisitos);<br></br>SQL_Destruir(xCursorSelectRequisitos);<br></br></p></div>
Utilização: ao salvar as informações do levantamento de necessidades de treinamento.
Disponível para o módulo: Treinamento.
English
Español

English
Español

