CREATE OR REPLACE FUNCTION BUSCA_SITUACAO_PEDIDO(P_CDFILIAL IN FILIAL.CDFILIAL%TYPE,
                                                 P_NRPEDIDO IN PEDIDO.NRPEDIDO%TYPE)RETURN VARCHAR2
AS
   V_CDMODPGTO    MODPGTO.CDMODPGTO%TYPE;
   V_IDTIPOPEDIDO PEDIDO.IDTIPOPEDIDO%TYPE;
   V_IDLANCPEDMOD MODPGTO.IDLANCPEDMOD%TYPE;
   V_IDSITPEDIDO  PEDIDO.IDSITPEDIDO%TYPE;
   V_IDLANCPED    PARAMPEDIDO.IDLANCPED%TYPE;
BEGIN
   BEGIN
      SELECT CDMODPGTO, IDTIPOPEDIDO
        INTO V_CDMODPGTO, V_IDTIPOPEDIDO
        FROM PEDIDO
       WHERE CDFILIAL = P_CDFILIAL
         AND NRPEDIDO = P_NRPEDIDO;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN BEGIN
         V_CDMODPGTO := NULL; V_IDTIPOPEDIDO := '1';
      END;
   END;
   IF (V_IDTIPOPEDIDO = '2') THEN
      V_IDSITPEDIDO := '1';
   ELSE
      BEGIN
         SELECT IDLANCPEDMOD
           INTO V_IDLANCPEDMOD
           FROM MODPGTO
          WHERE CDMODPGTO = V_CDMODPGTO;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN BEGIN
            V_IDLANCPEDMOD := NULL;
         END;
      END;

      V_IDSITPEDIDO := NULL;
      IF (V_IDLANCPEDMOD = '1') THEN
          V_IDSITPEDIDO := '1';
      ELSE
         IF ((V_IDLANCPEDMOD = '2') OR (V_IDLANCPEDMOD = '3')) THEN
            V_IDSITPEDIDO := '2';
         ELSE
            BEGIN
               SELECT NVL(IDLANCPED, '1')
                 INTO V_IDLANCPED
                 FROM PARAMPEDIDO
                WHERE CDFILIAL = P_CDFILIAL;
            EXCEPTION
               WHEN NO_DATA_FOUND THEN BEGIN
                  V_IDLANCPED := '1';
               END;
            END;
            IF (V_IDLANCPED = '1') THEN
                V_IDSITPEDIDO := '1';
            ELSE
               IF ((V_IDLANCPED = '2') OR (V_IDLANCPED = '3')) THEN
                  V_IDSITPEDIDO := '2';
               END IF;
            END IF;
         END IF;
      END IF;
   END IF;
   RETURN(V_IDSITPEDIDO);
END;
/