/**
 * Retorna a situação atual da proposta comercial
 * 
 * @param {Varchar2} P_NRPROPOSTACOMERCIAL Número  da proposta comercial
 * revisada
 */
CREATE OR REPLACE FUNCTION SIT_PROPCOMERCIAL
(
   P_NRPROPOSTACOMERCIAL IN NUMBER
) RETURN VARCHAR2
AS
   V_SITUACAO VARCHAR2(30);
   V_QTDE NUMBER;
   V_NRVERSAOPROPCOM NUMBER;
BEGIN
   V_SITUACAO := 'PENDENTE';

   SELECT MAX(NRVERSAOPROPCOM)
     INTO V_NRVERSAOPROPCOM
     FROM VERSAOPROPCOM V
    WHERE V.NRPROPOSTACOMERCIAL = P_NRPROPOSTACOMERCIAL
      AND V.IDVERSAOPROPCOM = 'APROVADA';
   -- Se existe versão aprovada, a proposta também é aprovada
   IF V_NRVERSAOPROPCOM IS NOT NULL THEN
      V_SITUACAO := 'APROVADA';
      -- Se todos os serviços da versão aprovada estão efetivados, a proposta é efetivada
      SELECT COUNT(1)
        INTO V_QTDE
        FROM SERVICOPROPCOM
       WHERE NRVERSAOPROPCOM = V_NRVERSAOPROPCOM
         AND IDSERVICOPROPCOM <> 'EFETIVADO';

      IF V_QTDE = 0 THEN
         V_SITUACAO := 'EFETIVADA';
      END IF;
   END IF;
   RETURN V_SITUACAO;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('SIT_PROPCOMERCIAL','6.35.009'); END;
/
