/**
 * Grava na tabela AVL_RESPQUESTAVAL a quantidade de cada resposta encontrada na tabela RESPAVALIACAO.
 *
 * @author Ederson Melquiades da Cunha <ederson@teknisa.com>
 *
 * @param P_NRORG IN Organizacao logada
 * @param P_CDOPERADOR IN Operador logado
 * @param P_NRAVALIACAO IN Numero sequencial da avaliacao
 *
 */

CREATE OR REPLACE
PROCEDURE AVL_GRAVA_AVL_RESPQUESTAVAL (
   P_NRORG IN ORGANIZACAO.NRORG%TYPE,
   P_CDOPERADOR OPERADOR.CDOPERADOR%TYPE,
   P_NRAVALIACAO IN AVL_RESPQUESTAVAL.NRAVALIACAO%TYPE
) IS
   V_IDORIGEMAVALIACAO AVALIACAOGERAL.IDORIGEMAVALIACAO%TYPE;
   V_NRRESPQUESTAVAL NOVOCODIGO.NRSEQUENCIAL%TYPE;
BEGIN
   SELECT MAX(IDORIGEMAVALIACAO)
     INTO V_IDORIGEMAVALIACAO
     FROM AVALIACAOGERAL
    WHERE NRORG = P_NRORG
      AND NRAVALIACAO = P_NRAVALIACAO;
   IF V_IDORIGEMAVALIACAO <> 'MANUAL' THEN
      DELETE
        FROM AVL_RESPQUESTAVAL
       WHERE NRORG = P_NRORG
         AND NRAVALIACAO = P_NRAVALIACAO;
      FOR C_RESP IN
          (SELECT E.TXCOMPLEMENTOQUESTAO, E.NRTEMAANALISE, R.NRRESPOSTA, COUNT(*) QTRESPQUESAVAL
             FROM RESPAVALIACAO R, EXECAVALIACAO E
            WHERE E.NRORG = P_NRORG
              AND E.NRAVALIACAO = P_NRAVALIACAO
              AND R.NRORG = E.NRORG
              AND R.NREXECAVALIACAO = E.NREXECAVALIACAO
              AND R.NRRESPOSTA IS NOT NULL
            GROUP BY E.TXCOMPLEMENTOQUESTAO, E.NRTEMAANALISE, R.NRRESPOSTA) LOOP
         NOVO_CODIGO('AVL_RESPQUESTAVAL', V_NRRESPQUESTAVAL, 1, P_NRORG);
         INSERT INTO AVL_RESPQUESTAVAL
            (NRORG, NRRESPQUESTAVAL, NRAVALIACAO,
             TXCOMPLEMENTOQUESTAO, NRTEMAANALISE, NRRESPOSTA, QTRESPQUESAVAL,
             IDATIVO, DTINCLUSAO, DTULTATU, NRORGINCLUSAO, CDOPERINCLUSAO, NRORGULTATU, CDOPERULTATU)
         VALUES 
            (P_NRORG, V_NRRESPQUESTAVAL, P_NRAVALIACAO,
             C_RESP.TXCOMPLEMENTOQUESTAO, C_RESP.NRTEMAANALISE, C_RESP.NRRESPOSTA, C_RESP.QTRESPQUESAVAL,
             'S', SYSDATE, SYSDATE, P_NRORG, P_CDOPERADOR, P_NRORG, P_CDOPERADOR); 
      END LOOP;
   END IF;
   COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('AVL_GRAVA_AVL_RESPQUESTAVAL','5.55.010'); END;
/

