IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
           WHERE O.NAME = 'VERIFICA_MARCA_OL' AND
                 TYPE = 'FN' 		       AND
	              U.UID = O.UID            AND
	              U.NAME = USER)
DROP FUNCTION VERIFICA_MARCA_OL
GO
CREATE FUNCTION VERIFICA_MARCA_OL(@P_CDFILIOPELOG VARCHAR(4),
                                   @P_CDFILSOLI    VARCHAR(4),
                                   @P_CDPRODESTO   VARCHAR(10),
                                   @P_DTPROGENTR   DATETIME,
                                   @P_DTPROCESS    DATETIME,
                                   @P_IDUTPRODPREF VARCHAR(1),
                                   @P_LISTA_VAZIA  VARCHAR) RETURNS VARCHAR
AS
BEGIN
   DECLARE @V_CDPROPARTFILI  VARCHAR(50) = NULL;
   DECLARE @V_IDTIPOAPUR     VARCHAR(1);
   DECLARE @V_VRPRECUNIITM   DOUBLE PRECISION;
   DECLARE @V_VRPRECECOITM   DOUBLE PRECISION;
   DECLARE @V_VRPRECOITMPI   DOUBLE PRECISION;
   SELECT
      @V_CDPROPARTFILI = MIN(CDPRODARVOL+'_'+CDPRARVORIG+'_'+'2'),
      @V_VRPRECUNIITM  = MIN(CASE ISNULL(IDTIPOAPUR, '0')
                             WHEN '0'
                             THEN (ITEMCOLE.VRPRECUNIITM)
                             ELSE (CASE ISNULL(IDTIPOAPUR, '1')
                                        WHEN '0'
                                        THEN (ITEMCOLE.VRPRECECOITM)
                                        ELSE (ITEMCOLE.VRPRECOITMPI)
                                  END)
                          END)
   FROM
    (SELECT
       ITEMCOLE.CDFILIAL,
       ITEMCOLE.NRCOLEPRECO,
       ITEMCOLE.CDPRODUTO,
       ITEMCOLE.CDMARCA,
       ITEMCOLE.VRPRECUNIITM,
       ITEMCOLE.VRPRECECOITM,
       ITEMCOLE.VRPRECOITMPI,
       ITEMCOLE.CDFORNECED,
       ITEMCOLE.CDREGIAO
     FROM
       ITEMCOLE,
       FILIAL
     WHERE
       FILIAL.CDFILIAL       = @P_CDFILIOPELOG AND
       ITEMCOLE.CDFILIAL     = ISNULL(FILIAL.CDFILCENTCMP, FILIAL.CDFILIAL) AND
       ITEMCOLE.IDITMLISPREC = 'S'                         AND
       ITEMCOLE.IDPRECALT    = 'S'                         AND
       @P_DTPROGENTR BETWEEN ITEMCOLE.DTINIVALITM AND ITEMCOLE.DTFINVALITM AND
       ITEMCOLE.VRPRECUNIITM > 0                           AND
       ITEMCOLE.CDREGIAO     = FILIAL.CDREGIAO ) ITEMCOLE, PARASUPRI, PRODUTO, RELACPRODOL
   WHERE
     ITEMCOLE.CDFILIAL        = PARASUPRI.CDFILIAL         AND
     PRODUTO.CDPRODUTO        = ITEMCOLE.CDPRODUTO         AND
     PRODUTO.CDPRODESTO       = @P_CDPRODESTO               AND
     ITEMCOLE.CDPRODUTO       = RELACPRODOL.CDPRARVORIG    AND
     ((@P_IDUTPRODPREF = 'N') OR (EXISTS(SELECT 1
                                          FROM PRODPREFMED
                                         WHERE PRODPREFMED.CDFILIAL   = @P_CDFILSOLI
                                           AND PRODPREFMED.CDPRODPREF = ITEMCOLE.CDPRODUTO)))  AND
     NOT EXISTS
       (SELECT
          CDREGIAO
        FROM
          REFOREG
        WHERE
          ITEMCOLE.CDFORNECED = REFOREG.CDFORNECED          AND
          ITEMCOLE.CDREGIAO   = REFOREG.CDREGIAO)           AND
     NOT EXISTS
       (SELECT
          CDFORNECED
        FROM
          REFORFIL
        WHERE
          CDFILIAL   = @P_CDFILIOPELOG                       AND
          CDFORNECED = ITEMCOLE.CDFORNECED                  AND
          CDPERIENTR IS NULL)                               AND
     (
      (EXISTS (SELECT
                  CDMARCA
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL  = @P_CDFILSOLI)                 AND
                  (CDPRODUTO = ITEMCOLE.CDPRODUTO)          AND
                  (CDTIPPART = '1')                         AND
                  (CDMARCA   = ITEMCOLE.CDMARCA)))          OR
      (EXISTS (SELECT
                  CDMARCA
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL  = @P_CDFILSOLI)                 AND
                  (CDPRODUTO = ITEMCOLE.CDPRODUTO)          AND
                  (CDTIPPART = '2')                         AND
                  (CDMARCA   = ITEMCOLE.CDMARCA))         ) OR
      /*(EXISTS (SELECT
                  CDFORNECED
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL   = @P_CDFILSOLI)                AND
                  (CDPRODUTO  = ITEMCOLE.CDPRODUTO)         AND
                  (CDTIPPART  = '4')                        AND
                  (NRCOLEPRECO IS NULL)                     AND
                  (CDFORNECED = ITEMCOLE.CDFORNECED)))      OR
      (EXISTS (SELECT
                  CDFORNECED
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL   = @P_CDFILSOLI)                AND
                  (CDPRODUTO  = ITEMCOLE.CDPRODUTO)         AND
                  (CDTIPPART  = '5')                        AND
                  (CDFORNECED = ITEMCOLE.CDFORNECED)))      OR   */
      (EXISTS (SELECT
                  CDFORNECED
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL   = @P_CDFILSOLI)                AND
                  (CDPRODUTO  = ITEMCOLE.CDPRODUTO)         AND
                  (CDTIPPART  = '7')                        AND
                  (CDMARCA    = ITEMCOLE.CDMARCA)           AND
                  (CDFORNECED = ITEMCOLE.CDFORNECED)))      OR
      (EXISTS (SELECT
                  CDFORNECED
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL   = @P_CDFILSOLI)                AND
                  (CDPRODUTO  = ITEMCOLE.CDPRODUTO)         AND
                  (CDTIPPART  = '8')                        AND
                  (CDMARCA    = ITEMCOLE.CDMARCA)           AND
                  (CDFORNECED = ITEMCOLE.CDFORNECED)))      OR
      (EXISTS (SELECT
                  CDPRODUTO
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL   = @P_CDFILSOLI)                AND
                  (CDPRODUTO  = ITEMCOLE.CDPRODUTO)         AND
                  (CDTIPPART  IN ('3','6','9')))            AND
              NOT EXISTS (SELECT
                             CDPRODUTO
                          FROM
                             PARTFILI
                          WHERE
                             (CDFILIAL   = @P_CDFILSOLI)     AND
                             (NRCOLEPRECO IS NULL)          AND
                             (CDTIPPART  IN ('1','2',/*'4','5',*/'7','8')) AND
                             (CDPRODUTO  = ITEMCOLE.CDPRODUTO))
             ) OR
      (NOT EXISTS (SELECT
                  CDPRODUTO
               FROM
                  PARTFILI
               WHERE
                  (CDFILIAL   = @P_CDFILSOLI)             AND
                  (CDPRODUTO  = ITEMCOLE.CDPRODUTO))    )   OR
      (EXISTS (SELECT
                  1
               FROM PARTFILI, COLETAPR C
               WHERE
                  (PARTFILI.CDFILIAL  = @P_CDFILSOLI)        AND
                  (PARTFILI.CDPRODUTO = ITEMCOLE.CDPRODUTO) AND
                  (PARTFILI.CDTIPPART  = '4')               AND
                  (PARTFILI.NRCOLEPRECO IS NOT NULL)        AND
                  (C.CDFILIAL = PARTFILI.CDFILCOTA)         AND
                  (C.NRCOLEPRECO = PARTFILI.NRCOLEPRECO)    AND
                  (((PARTFILI.CDFORNECED = ITEMCOLE.CDFORNECED) AND (C.DTFINVALCOL >= @P_DTPROCESS)) OR
                    (C.DTFINVALCOL < @P_DTPROCESS)
                  ) ) )
    ) AND
       (NOT EXISTS (SELECT
                       CDMARCA
                    FROM
                       PARTFILI
                    WHERE
                       (CDFILIAL  = @P_CDFILSOLI)           AND
                       (CDPRODUTO = ITEMCOLE.CDPRODUTO)    AND
                       (CDTIPPART = '3')                   AND
                       (CDMARCA   = ITEMCOLE.CDMARCA)))    AND
       (NOT EXISTS (SELECT
                       CDFORNECED
                    FROM
                       PARTFILI
                    WHERE
                       (CDFILIAL   = @P_CDFILSOLI)           AND
                       (CDPRODUTO  = ITEMCOLE.CDPRODUTO)    AND
                       (CDTIPPART  = '6')                   AND
                       (CDFORNECED = ITEMCOLE.CDFORNECED))) AND
       (NOT EXISTS (SELECT
                       CDFORNECED
                    FROM
                       PARTFILI
                    WHERE
                       (CDFILIAL   = @P_CDFILSOLI)           AND
                       (CDPRODUTO  = ITEMCOLE.CDPRODUTO)     AND
                       (CDTIPPART  = '9')                    AND
                       (CDMARCA    = ITEMCOLE.CDMARCA)       AND
                       (CDFORNECED = ITEMCOLE.CDFORNECED)) );
   IF @V_CDPROPARTFILI IS NULL BEGIN
      IF @P_LISTA_VAZIA = 'S' BEGIN
            SELECT @V_CDPROPARTFILI = MIN(CDPRODARVOL+'_'+CDPRARVORIG+'_'+'3')
              FROM PARTFILI, PRODUTO, RELACPRODOL
             WHERE PARTFILI.CDPRODUTO = PRODUTO.CDPRODUTO
               AND PARTFILI.CDFILIAL  = @P_CDFILSOLI
               AND PRODUTO.CDPRODESTO = @P_CDPRODESTO
               AND PRODUTO.CDPRODUTO  = RELACPRODOL.CDPRARVORIG
               AND ISNULL(CDTIPPART, 'X') IN ('1', '2', '7', '8')
               AND ((@P_IDUTPRODPREF = 'N') OR
                     (EXISTS(SELECT 1
                              FROM PRODPREFMED
                             WHERE PRODPREFMED.CDFILIAL   = PARTFILI.CDFILIAL
                               AND PRODPREFMED.CDPRODPREF = PARTFILI.CDPRODUTO))
                   );
      END;
      IF @V_CDPROPARTFILI IS NULL BEGIN
         SET @V_CDPROPARTFILI = NULL;
      END;
   END;
   RETURN(@V_CDPROPARTFILI)
END;
GO

-- VERSAO --
EXEC ATUVEROBJ 'VERIFICA_MARCA_OL','5.50.XXX';
GO
