/* Sistemas Integrados TEKNISA
ID'S

E - ENTRADA
S - SAIDA
C - CUSTO PRODUCAO
P - CONTRA - PROVA
M - CMV
A - AJUSTE
I - IMPLANTACAO
*/

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

CREATE FUNCTION CONTCTBL_PRODUTO(
    @P_CDPRODUTO  VARCHAR(10),
    @P_IDENTRSAID VARCHAR(1),
    @P_CDFILIAL   VARCHAR(4)) RETURNS VARCHAR(20)
AS
BEGIN
    DECLARE @V_CDARVPROD     VARCHAR(20);
    DECLARE @V_CDCTBLENTR    VARCHAR(20);
    DECLARE @V_CDCTBLSAI     VARCHAR(20);
    DECLARE @V_CDCTBLPROD    VARCHAR(20);
    DECLARE @V_CDCTBLCPRO    VARCHAR(20);
    DECLARE @V_CDCTBLPRA     VARCHAR(20);
    DECLARE @V_CDCTBLIMPL    VARCHAR(20);
    DECLARE @V_CDCTBLAJUS    VARCHAR(20);
    DECLARE @V_RETORNA       VARCHAR(20);
    DECLARE @V_CDARVPROD1    VARCHAR(20);

    SELECT @V_CDARVPROD = CDARVPROD
      FROM PRODUTO
     WHERE CDPRODUTO = @P_CDPRODUTO;

    SELECT @V_CDCTBLENTR  =  CDCTBLENTRPF,
           @V_CDCTBLSAI   =  CDCTBLSAIDPF,
           @V_CDCTBLPROD  =  CDCTBLPRODPF,
           @V_CDCTBLCPRO  =  CDCTBLCPROPF,
           @V_CDCTBLPRA   =  CDCTBLPRACPF,
           @V_CDCTBLIMPL  =  CDCTBLIMPLPF,
           @V_CDCTBLAJUS  =  CDCTBLAJUSPF
      FROM PRODFILI PF
     WHERE PF.CDFILIAL  = @P_CDFILIAL
       AND PF.CDPRODUTO = @P_CDPRODUTO;
                                                                      
    IF @P_IDENTRSAID = 'E' BEGIN
       SET @V_RETORNA = @V_CDCTBLENTR;
    END
    ELSE IF @P_IDENTRSAID = 'S' BEGIN
       SET @V_RETORNA = @V_CDCTBLSAI;
    END
    ELSE IF @P_IDENTRSAID = 'C' BEGIN
       SET @V_RETORNA = @V_CDCTBLPROD;
    END
    ELSE IF @P_IDENTRSAID = 'P' BEGIN
       SET @V_RETORNA = @V_CDCTBLCPRO;
    END
    ELSE IF @P_IDENTRSAID = 'M' BEGIN
       SET @V_RETORNA = @V_CDCTBLPRA;
    END
    ELSE IF @P_IDENTRSAID = 'A' BEGIN
       SET @V_RETORNA = @V_CDCTBLAJUS;
    END
    ELSE IF @P_IDENTRSAID = 'I' BEGIN 
       SET @V_RETORNA = @V_CDCTBLIMPL;
    END;

    IF @V_RETORNA IS NULL BEGIN
       IF @P_IDENTRSAID = 'E' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
             AND NOT CDCTBLENTRPR IS NULL;

          IF @V_CDARVPROD1 IS NOT NULL BEGIN
             SELECT @V_CDCTBLENTR = PR.CDCTBLENTRPR /*AS CDCTBLENTRPR*/
               FROM PRODUTO PR
              WHERE PR.CDARVPROD = @V_CDARVPROD1;
          END;
          SET @V_RETORNA = @V_CDCTBLENTR;
       END
       ELSE IF @P_IDENTRSAID = 'S' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
             AND NOT CDCTBLSAIDPR IS NULL;

          IF @V_CDARVPROD1 IS NOT NULL BEGIN
             SELECT @V_CDCTBLSAI = PR.CDCTBLSAIDPR /*AS CDCTBLSAIDPR*/
               FROM PRODUTO PR
              WHERE PR.CDARVPROD = @V_CDARVPROD1;
          END;
          SET @V_RETORNA = @V_CDCTBLSAI;
       END
       ELSE IF @P_IDENTRSAID = 'C' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
         AND NOT CDCTBLPRODPR IS NULL;

         IF @V_CDARVPROD1 IS NOT NULL BEGIN
            SELECT @V_CDCTBLPROD = PR.CDCTBLPRODPR /*AS CDCTBLPRODPR*/
              FROM PRODUTO PR
             WHERE PR.CDARVPROD = @V_CDARVPROD1;
         END;
         SET @V_RETORNA = @V_CDCTBLPROD;
       END
       ELSE IF @P_IDENTRSAID = 'P' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
             AND NOT CDCTBLCPROPR IS NULL;

          IF @V_CDARVPROD1 IS NOT NULL BEGIN
             SELECT @V_CDCTBLCPRO = PR.CDCTBLCPROPR /*AS CDCTBLCPROPR*/
               FROM PRODUTO PR
              WHERE PR.CDARVPROD = @V_CDARVPROD1;
          END;
          SET @V_RETORNA = @V_CDCTBLCPRO;
       END
       ELSE IF @P_IDENTRSAID = 'M' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
             AND NOT CDCTBLPRACPR IS NULL;

          IF @V_CDARVPROD1 IS NOT NULL BEGIN
             SELECT @V_CDCTBLPRA = PR.CDCTBLPRACPR /*AS CDCTBLCPROPR*/
               FROM PRODUTO PR
              WHERE PR.CDARVPROD = @V_CDARVPROD1;
          END;
          SET @V_RETORNA = @V_CDCTBLPRA;
       END
       ELSE IF @P_IDENTRSAID = 'A' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
             AND NOT CDCTBLAJUSPR IS NULL;

          IF @V_CDARVPROD1 IS NOT NULL BEGIN
             SELECT @V_CDCTBLAJUS = PR.CDCTBLAJUSPR /*AS CDCTBLAJUSPR*/
               FROM PRODUTO PR
              WHERE PR.CDARVPROD = @V_CDARVPROD1;
          END;
          SET @V_RETORNA = @V_CDCTBLAJUS;
       END
       ELSE IF @P_IDENTRSAID = 'I' BEGIN
          SELECT @V_CDARVPROD1 = MAX(CDARVPROD) /*AS CDARVPROD*/
            FROM PRODUTO C
           WHERE @V_CDARVPROD LIKE C.CDARVPROD + '%'
             AND NOT CDCTBLIMPLPR IS NULL;

          IF @V_CDARVPROD1 IS NOT NULL BEGIN
             SELECT @V_CDCTBLAJUS = PR.CDCTBLIMPLPR /*AS CDCTBLIMPLPR*/
               FROM PRODUTO PR
              WHERE PR.CDARVPROD = @V_CDARVPROD1;
          END;
          SET @V_RETORNA = @V_CDCTBLIMPL;
       END;
    END;

    RETURN (@V_RETORNA);
END;
GO