IF EXISTS (SELECT *
             FROM SYSOBJECTS O, SYSUSERS U
            WHERE O.NAME = 'CENTCUST_PRODUTO'
              AND TYPE = 'FN'
              AND U.UID = O.UID
              AND U.NAME = USER)

DROP FUNCTION CENTCUST_PRODUTO
GO

CREATE FUNCTION CENTCUST_PRODUTO
(
   @P_CDFILIAL    VARCHAR(04),
   @P_CDARVPROD   VARCHAR(20),
   @P_IDENTRSAID  VARCHAR(20)) RETURNS VARCHAR
AS
BEGIN
   DECLARE @V_CDCCUSTENTR VARCHAR(04);
   DECLARE @V_CDCCUSTSAID VARCHAR(04);
   DECLARE @V_CDARVPROD   VARCHAR(20);
   DECLARE @V_RESULT      VARCHAR(04);

   SELECT @V_CDCCUSTENTR = ISNULL(CDCCUSTENTRF,NULL), @V_CDCCUSTSAID = ISNULL(CDCCUSTSAIDF,NULL)
     FROM PRODFILI PF, PRODUTO P
    WHERE PF.CDFILIAL  = @P_CDFILIAL
      AND PF.CDPRODUTO = P.CDPRODUTO
      AND P.CDARVPROD  = @P_CDARVPROD;

   IF @P_IDENTRSAID = 'E' BEGIN
      IF @V_CDCCUSTENTR IS NULL BEGIN
         SELECT @V_CDARVPROD = CDARVPROD
           FROM PRODUTO
          WHERE CDCCUSTENTR IS NOT NULL
            AND @P_CDARVPROD LIKE CDARVPROD + '%';

         SELECT @V_CDCCUSTENTR = CDCCUSTENTR
           FROM PRODUTO
          WHERE CDARVPROD = @V_CDARVPROD;

         IF @V_CDCCUSTENTR IS NULL BEGIN
            SELECT @V_CDCCUSTENTR = ISNULL(F.CDCENTCUST, E.CDCENTCUST)
              FROM FILIAL F, EMPRESA E
             WHERE F.CDFILIAL = @P_CDFILIAL
               AND F.CDEMPRESA = E.CDEMPRESA;
         END;
      END;
      SET @V_RESULT = @V_CDCCUSTENTR;
   END
   ELSE BEGIN
      IF @V_CDCCUSTSAID IS NULL BEGIN
         SELECT @V_CDARVPROD = CDARVPROD
           FROM PRODUTO
          WHERE CDCCUSTSAID IS NOT NULL
            AND @P_CDARVPROD LIKE CDARVPROD + '%';


         SELECT @V_CDCCUSTSAID = CDCCUSTSAID
           FROM PRODUTO
          WHERE CDARVPROD = @V_CDARVPROD;

         IF @V_CDCCUSTSAID IS NULL BEGIN
            SELECT @V_CDCCUSTSAID = ISNULL(F.CDCENTCUST, E.CDCENTCUST)
              FROM FILIAL F, EMPRESA E
             WHERE F.CDFILIAL = @P_CDFILIAL
               AND F.CDEMPRESA = E.CDEMPRESA;
         END;
      END;
      SET @V_RESULT = @V_CDCCUSTSAID;
   END;
   RETURN(@V_RESULT);
END
GO

-- VERSAO --
EXEC ATUVEROBJ 'CENTCUST_PRODUTO','5.30.000';
GO

