CREATE OR REPLACE FUNCTION VALIDADE_PRODUTO(
   P_CDPRODUTO  IN PRODUTO.CDPRODUTO%TYPE,
   P_DTENTRPROD IN DATE) RETURN DATE IS

   V_IDDIASVALIDA  VARCHAR2(1);
   V_NRDIASVALIDA  FLOAT;
   V_QTDEVALID     FLOAT;
   V_DTENTREGA     DATE;
BEGIN
   SELECT
      MAX(IDDIASVALIDA),
      MAX(NRDIASVALIDA)
   INTO
      V_IDDIASVALIDA,
      V_NRDIASVALIDA
   FROM
      PRODUTO
   WHERE
      (CDPRODUTO = P_CDPRODUTO);

   IF V_IDDIASVALIDA = 'H' THEN     /* Validade em Horas */
      V_QTDEVALID := ((V_NRDIASVALIDA * 60) / 1440);
   ELSE
      IF V_IDDIASVALIDA = 'M' THEN  /* Validade em Meses */
         --V_QTDEVALID := (V_NRDIASVALIDA * 30);
         V_DTENTREGA := ADD_MONTHS(P_DTENTRPROD, V_NRDIASVALIDA);
      ELSE
         V_QTDEVALID := V_NRDIASVALIDA;
      END IF;
   END IF;

   IF V_IDDIASVALIDA <> 'M' THEN
      V_DTENTREGA := P_DTENTRPROD + V_QTDEVALID;
   END IF;

   RETURN(V_DTENTREGA);
END;