IF EXISTS (SELECT * FROM SYSOBJECTS O, SYSUSERS U
                    WHERE
	        O.NAME = 'BAIXAAF' AND
	        TYPE = 'P' 			      AND
	        U.UID = O.UID            AND
	        U.NAME = USER)
DROP PROCEDURE BAIXAAF
GO
CREATE PROCEDURE BAIXAAF @P_CDFILDEST    VARCHAR(04),
                         @P_CDFILLANC    VARCHAR(04),
                         @P_NRAUTOFORN   VARCHAR(10)
AS
   DECLARE @V_IDBAIXAAF    VARCHAR(1);
   DECLARE @V_TOTALITEM    NUMERIC(15,6);
   DECLARE @V_BAIXATOTAL   NUMERIC(15,6);
   DECLARE @V_BAIXAMANUAL  NUMERIC(15,6);
   DECLARE @V_EMABERTO     NUMERIC(15,6);
   DECLARE @V_BAIXAPARCIAL NUMERIC(15,6);
BEGIN

   SET @V_TOTALITEM    = 0;
   SET @V_BAIXATOTAL   = 0;
   SET @V_BAIXAMANUAL  = 0;
   SET @V_EMABERTO     = 0;
   SET @V_BAIXAPARCIAL = 0;

   SELECT @V_TOTALITEM = COUNT(*) -- BUSCA O TOTAL DE ITENS DA AF
   FROM ITEMAUTF
   WHERE
      @P_CDFILDEST   = ITEMAUTF.CDFILDEST AND
      @P_CDFILLANC   = ITEMAUTF.CDFILLANC AND
      @P_NRAUTOFORN  = ITEMAUTF.NRAUTOFORN;

   SELECT @V_EMABERTO = COUNT(*)  -- BUSCA O TOTAL DE ITENS DA AF EM ABERTO
   FROM ITEMAUTF
   WHERE
      @P_CDFILDEST   = ITEMAUTF.CDFILDEST AND
      @P_CDFILLANC   = ITEMAUTF.CDFILLANC AND
      @P_NRAUTOFORN  = ITEMAUTF.NRAUTOFORN AND
      ITEMAUTF.IDBAIXITMAF IS NULL;

   SELECT @V_BAIXAPARCIAL = COUNT(*) -- BUSCA O TOTAL DE ITENS DA AF COM BAIXA PARCIAL
   FROM ITEMAUTF
   WHERE
      @P_CDFILDEST   = ITEMAUTF.CDFILDEST AND
      @P_CDFILLANC   = ITEMAUTF.CDFILLANC AND
      @P_NRAUTOFORN  = ITEMAUTF.NRAUTOFORN AND
      ITEMAUTF.IDBAIXITMAF = '1';

   SELECT @V_BAIXATOTAL = COUNT(*) -- BUSCA O TOTAL DE ITENS DA AF COM BAIXA TOTAL
   FROM ITEMAUTF
   WHERE
      @P_CDFILDEST   = ITEMAUTF.CDFILDEST AND
      @P_CDFILLANC   = ITEMAUTF.CDFILLANC AND
      @P_NRAUTOFORN  = ITEMAUTF.NRAUTOFORN AND
      ITEMAUTF.IDBAIXITMAF = '2';

   SELECT @V_BAIXAMANUAL = COUNT(*)  -- BUSCA O TOTAL DE ITENS DA AF COM BAIXA MANUAL
   FROM ITEMAUTF
   WHERE
      @P_CDFILDEST   = ITEMAUTF.CDFILDEST AND
      @P_CDFILLANC   = ITEMAUTF.CDFILLANC AND
      @P_NRAUTOFORN  = ITEMAUTF.NRAUTOFORN AND
      ITEMAUTF.IDBAIXITMAF = '3';

   IF @V_TOTALITEM = @V_EMABERTO
   BEGIN
      SET @V_IDBAIXAAF = NULL;  -- AF EM ABERTO
   END;
   IF @V_TOTALITEM = @V_BAIXATOTAL
   BEGIN
      SET @V_IDBAIXAAF = '2';   -- AF COM BAIXA TOTAL
   END;
   IF @V_BAIXAPARCIAL > 0
   BEGIN
      SET @V_IDBAIXAAF = '1';   -- AF COM BAIXA PARCIAL
   END;
   IF (@V_TOTALITEM = @V_BAIXATOTAL + @V_BAIXAMANUAL) AND
      (@V_BAIXAMANUAL > 0)
   BEGIN
      SET @V_IDBAIXAAF = '3';   -- AF COM BAIXA MANUAL
   END;
   IF (@V_TOTALITEM = @V_BAIXATOTAL + @V_BAIXAMANUAL + @V_EMABERTO) AND
      (@V_EMABERTO > 0) AND (@V_EMABERTO < @V_TOTALITEM)
   BEGIN
      SET @V_IDBAIXAAF = '1';   -- AF COM BAIXA PARCIAL
   END;

   UPDATE AUTOFORNE  -- ALTERA O ID DE BAIXA DA AF
   SET IDBAIXAAF = @V_IDBAIXAAF
   WHERE
      @P_CDFILDEST   = AUTOFORNE.CDFILDEST AND
      @P_CDFILLANC   = AUTOFORNE.CDFILLANC AND
      @P_NRAUTOFORN  = AUTOFORNE.NRAUTOFORN;
END;
GO


-- VERSAO --
EXEC ATUVEROBJ 'BAIXAAF','5.03.004';
GO

