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

DROP PROCEDURE ARQUIVO_SINTEGRA_74
GO
CREATE PROCEDURE ARQUIVO_SINTEGRA_74
   @P_CDEMPRESA        VARCHAR(02),
   @P_CDINSCESTA       VARCHAR(16),
   @P_DTINICIAL        DATETIME,
   @P_DTFINAL          DATETIME,
   @P_DTPOSICAO        DATETIME,
   @P_NRSEQARQMAG      VARCHAR(10),
   @P_INVENTARIO        VARCHAR(01),
   @P_CONTADOR         NUMERIC        OUTPUT
AS
   DECLARE @V_REGISTRO74     VARCHAR(250);
   DECLARE @V_CDARVPROD      VARCHAR(20);
   DECLARE @V_MAXCDARVPROD   VARCHAR(20);
   DECLARE @V_NMPRODUTO      VARCHAR(250);
   DECLARE @V_CDCLASFISC     VARCHAR(250);
   DECLARE @V_SGUNIDADE      VARCHAR(250);
   DECLARE @V_DTPOSIESTQ     DATETIME;
   DECLARE @V_CONTADOR       NUMERIC;
   DECLARE @V_CONTREG        NUMERIC;
BEGIN
   SET @V_CONTREG = 0;
   SET @V_CONTADOR = @P_CONTADOR + 1;
   IF @P_INVENTARIO = 'N' BEGIN

      DECLARE C_REGISTRO74 CURSOR FOR
         SELECT SUBSTRING(
                '74'+
                RTRIM(CONVERT(CHAR, RI.DTPOSIESTQ,112))+
                LEFT(RI.CDARVPROD+REPLICATE(' ',14),14)+
                RIGHT(REPLICATE('0',13)+LTRIM(REPLACE(CONVERT(CHAR, CONVERT(NUMERIC(13,3),ROUND(RI.QTESTOQDIA,3))),'.','')),13)+
                RIGHT(REPLICATE('0',13)+LTRIM(REPLACE(CONVERT(CHAR, CONVERT(NUMERIC(13,2),ROUND(RI.VRESTOQDIA,2))),'.','')),13)+
                '1'+
                REPLICATE('0', 14)+
                REPLICATE(' ', 14)+
                REPLICATE(' ',  2)+
                REPLICATE(' ', 45), 1, 126) AS DSARQMAG,
                RI.CDARVPROD, ISNULL(RI.CDCLASFISC, ' ') AS CDCLASFISC, RI.NMPRODUTO, RI.SGUNIDADE,RI.DTPOSIESTQ
           FROM (SELECT A.CDARVPROD, A.CDCLASFISC, A.NMPRODUTO, A.SGUNIDADE,
                        P.DTPOSESTCON AS DTPOSIESTQ, SUM(P.QTESTDIACON) AS QTESTOQDIA, SUM(P.VRESTDIACON) AS VRESTOQDIA
                   FROM POSESTCONS P, PRODUTO A, FILIAL F
                   WHERE (F.CDEMPRESA    =  @P_CDEMPRESA)  AND
                         (F.CDINSCESTA   =  @P_CDINSCESTA) AND
                         (A.CDPRODUTO    = A.CDPRODESTO)   AND
                         (F.CDFILIAL     = P.CDFILIAL)     AND
                         (P.CDPRODUTO    = A.CDPRODUTO)    AND
                         (P.DTPOSESTCON   = (SELECT Max(DTPOSESTCON)
                                               FROM POSESTCONS C
                                              WHERE (C.CDFILIAL   = P.CDFILIAL)       AND
                                                    (C.CDPRODUTO  = P.CDPRODUTO)      AND
                                                    (C.DTPOSESTCON <=  @P_DTPOSICAO)))
                                           GROUP BY A.CDARVPROD, A.CDCLASFISC, A.NMPRODUTO, A.SGUNIDADE, P.DTPOSESTCON) RI
          WHERE ROUND(RI.QTESTOQDIA,3) <> 0.000 AND
                ROUND(RI.VRESTOQDIA,2) <> 0.00
          ORDER BY CONVERT(CHAR,RI.DTPOSIESTQ,112), RI.CDARVPROD;


      OPEN C_REGISTRO74;
      FETCH NEXT FROM C_REGISTRO74 INTO @V_REGISTRO74,
                                        @V_CDARVPROD,
                                        @V_CDCLASFISC,
                                        @V_NMPRODUTO,
                                        @V_SGUNIDADE,
                                        @V_DTPOSIESTQ;

      WHILE (@@FETCH_STATUS = 0) BEGIN

         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (RIGHT(REPLICATE('0',2)+CONVERT(VARCHAR,@V_CONTADOR),2)+RIGHT(REPLICATE('0',8)+CONVERT(VARCHAR,@V_CONTREG),8),@V_REGISTRO74,@P_NRSEQARQMAG);

         SET @V_CONTREG  = ISNULL(@V_CONTREG,0)+1;

         SELECT @V_MAXCDARVPROD = MAX(CDARVPROD)
           FROM TMP_REGISTRO_PRODUTO
          WHERE CDARVPROD = @V_CDARVPROD;

         IF @V_MAXCDARVPROD IS NULL BEGIN
            INSERT INTO TMP_REGISTRO_PRODUTO(CDTIPOREG, CDARVPROD, DTINICIAL, DTFINAL, CDCLASFISC, NMPRODUTO,
                                             SGUNIDADE, CDSITUTRIBPR, VRALIQIPI, VRALIQICMS, VRPERREDBCIT, VRBASESUBST)

            VALUES('75', @V_CDARVPROD, @P_DTINICIAL, @P_DTFINAL, @V_CDCLASFISC, @V_NMPRODUTO,
                   @V_SGUNIDADE, '040', 0.00, 0.00, 0.00, 0);
         END;
         FETCH NEXT FROM C_REGISTRO74 INTO @V_REGISTRO74,
                                           @V_CDARVPROD,
                                           @V_CDCLASFISC,
                                           @V_NMPRODUTO,
                                           @V_SGUNIDADE,
                                           @V_DTPOSIESTQ;
   END;
   CLOSE C_REGISTRO74;
   DEALLOCATE C_REGISTRO74;

   SET @P_CONTADOR = @V_CONTADOR;
   END;
   ELSE BEGIN
      DECLARE C_REGISTRO74 CURSOR FOR
         SELECT SUBSTRING(
               '74'+
               RTRIM(CONVERT(CHAR, RI.DTPOSIESTQ,112))+
               LEFT(RI.CDARVPROD+REPLICATE(' ',14),14)+
               RIGHT(REPLICATE('0',13)+LTRIM(REPLACE(CONVERT(CHAR, CONVERT(NUMERIC(13,3),ROUND(RI.QTESTOQDIA,3))),'.','')),13)+
               RIGHT(REPLICATE('0',13)+LTRIM(REPLACE(CONVERT(CHAR, CONVERT(NUMERIC(13,2),ROUND(RI.VRESTOQDIA,2))),'.','')),13)+
               '1'+
               REPLICATE('0', 14)+
               REPLICATE(' ', 14)+
               REPLICATE(' ',  2)+
               REPLICATE(' ', 45), 1, 126) AS DSARQMAG,
               RI.CDARVPROD, ISNULL(RI.CDCLASFISC, ' ') AS CDCLASFISC, RI.NMPRODUTO, RI.SGUNIDADE,RI.DTPOSIESTQ
           FROM (SELECT A.CDARVPROD, A.CDCLASFISC, A.NMPRODUTO, A.SGUNIDADE,
                        P.DTPOSESTCON AS DTPOSIESTQ, SUM(P.QTESTDIACON) AS QTESTOQDIA, SUM(P.VRESTDIACON) AS VRESTOQDIA
                   FROM POSESTCONS P, PRODUTO A, FILIAL F
                   WHERE (F.CDEMPRESA    =  @P_CDEMPRESA)  AND
                         (F.CDINSCESTA   =  @P_CDINSCESTA) AND
                         (A.CDPRODUTO    = A.CDPRODESTO)   AND
                         (F.CDFILIAL     = P.CDFILIAL)     AND
                         (P.CDPRODUTO    = A.CDPRODUTO)    AND
                         (P.DTPOSESTCON   = (SELECT Max(DTPOSESTCON)
                                            FROM POSESTCONS C
                                           WHERE (C.CDFILIAL   = P.CDFILIAL)       AND
                                                 (C.CDPRODUTO  = P.CDPRODUTO)      AND
                                                 CONVERT(DATETIME,C.DTPOSESTCON,103) BETWEEN CONVERT(DATETIME,'01/01/'+CONVERT(VARCHAR,(YEAR(@P_DTPOSICAO)-1)),103) AND CONVERT(DATETIME,'31/12/'+CONVERT(VARCHAR,(YEAR(@P_DTPOSICAO)-1)),103)  ))
                  GROUP BY A.CDARVPROD, A.CDCLASFISC, A.NMPRODUTO, A.SGUNIDADE, P.DTPOSESTCON) RI
          WHERE ROUND(RI.QTESTOQDIA,3) <> 0.000 AND
                ROUND(RI.VRESTOQDIA,2) <> 0.00
          ORDER BY CONVERT(CHAR,RI.DTPOSIESTQ,112), RI.CDARVPROD;

      OPEN C_REGISTRO74;
      FETCH NEXT FROM C_REGISTRO74 INTO @V_REGISTRO74,
                                        @V_CDARVPROD,
                                        @V_CDCLASFISC,
                                        @V_NMPRODUTO,
                                        @V_SGUNIDADE,
                                        @V_DTPOSIESTQ;

      WHILE (@@FETCH_STATUS = 0) BEGIN

         INSERT INTO ARQMAGNETICO
           (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
         VALUES
           (RIGHT(REPLICATE('0',2)+CONVERT(VARCHAR,@V_CONTADOR),2)+RIGHT(REPLICATE('0',8)+CONVERT(VARCHAR,@V_CONTREG),8),@V_REGISTRO74,@P_NRSEQARQMAG);

         SET @V_CONTREG  = ISNULL(@V_CONTREG,0)+1;

         SELECT @V_MAXCDARVPROD = MAX(CDARVPROD)
           FROM TMP_REGISTRO_PRODUTO
          WHERE CDARVPROD = @V_CDARVPROD;

         IF @V_MAXCDARVPROD IS NULL BEGIN
            INSERT INTO TMP_REGISTRO_PRODUTO(CDTIPOREG, CDARVPROD, DTINICIAL, DTFINAL, CDCLASFISC, NMPRODUTO,
                                             SGUNIDADE, CDSITUTRIBPR, VRALIQIPI, VRALIQICMS, VRPERREDBCIT, VRBASESUBST)

            VALUES('75', @V_CDARVPROD, @P_DTINICIAL, @P_DTFINAL, @V_CDCLASFISC, @V_NMPRODUTO,
                   @V_SGUNIDADE, '040', 0.00, 0.00, 0.00, 0);
         END;
         FETCH NEXT FROM C_REGISTRO74 INTO @V_REGISTRO74,
                                           @V_CDARVPROD,
                                           @V_CDCLASFISC,
                                           @V_NMPRODUTO,
                                           @V_SGUNIDADE,
                                           @V_DTPOSIESTQ;
   END;
   CLOSE C_REGISTRO74;
   DEALLOCATE C_REGISTRO74;

   SET @P_CONTADOR = @V_CONTADOR;
   END;

END;
GO



-- VERSAO --
EXEC ATUVEROBJ 'ARQUIVO_SINTEGRA_74','5.05.161';
GO
