IF EXISTS(SELECT NAME FROM SYSOBJECTS
           WHERE NAME = 'SPED_CONTABIL_CENTROCUSTO')
   DROP PROCEDURE SPED_CONTABIL_CENTROCUSTO
GO

CREATE PROCEDURE SPED_CONTABIL_CENTROCUSTO (
   @P_NRSEQARQMAG  VARCHAR(10),
   @P_DTREFERENCIA DATETIME,
   @P_NRINIORDENA  INTEGER,
   @P_IDSPED       VARCHAR(01), /* PARAMETRO QUE DEFINE SE SERA GERADO SPED OU FCONT */
   @P_NRORDREGARQ  INTEGER OUTPUT)
AS
   DECLARE @V_NRORDREGARQ  INTEGER;
   DECLARE @V_DTULTDIAREFE DATETIME;
   DECLARE @V_STULTDIAREFE VARCHAR(08);

   /* VARIAVEIS DO CURSOR C_I100 */
   DECLARE @C_I100_DSLINHA VARCHAR(500);

BEGIN
   SET @V_NRORDREGARQ = @P_NRINIORDENA;

   IF (@P_IDSPED = 'S') BEGIN
      SELECT @V_DTULTDIAREFE = MAX(DTDATA)
        FROM DATA
       WHERE DTMES = '01/' + SUBSTRING(CONVERT(VARCHAR, @P_DTREFERENCIA, 103), 04, 07);

      SET @V_STULTDIAREFE = SUBSTRING(CONVERT(VARCHAR, @V_DTULTDIAREFE, 103), 01, 02) +
                            SUBSTRING(CONVERT(VARCHAR, @V_DTULTDIAREFE, 103), 04, 02) +
                            SUBSTRING(CONVERT(VARCHAR, @V_DTULTDIAREFE, 103), 07, 04);
   END
   ELSE IF (@P_IDSPED = 'F') BEGIN
      SELECT @V_DTULTDIAREFE = MAX(DTDATA)
        FROM DATA
       WHERE DTMES = '01/12/' + SUBSTRING(CONVERT(VARCHAR, @P_DTREFERENCIA, 103), 07, 04);

      SET @V_STULTDIAREFE = SUBSTRING(CONVERT(VARCHAR, @V_DTULTDIAREFE, 103), 01, 02) +
                            SUBSTRING(CONVERT(VARCHAR, @V_DTULTDIAREFE, 103), 04, 02) +
                            SUBSTRING(CONVERT(VARCHAR, @V_DTULTDIAREFE, 103), 07, 04);
   END;

   DECLARE C_I100 CURSOR FOR
      SELECT '|I100|' + 
             @V_STULTDIAREFE + '|' + 
             C.CDCENTCUST    + '|' + 
             C.NMCENTCUST    + '|' AS DSLINHA
        FROM CENTCUST C
       ORDER BY C.CDCENTCUST;
   OPEN C_I100;
   FETCH NEXT FROM C_I100 INTO @C_I100_DSLINHA;
 
   WHILE (@@FETCH_STATUS = 0) BEGIN
      SET @V_NRORDREGARQ = @V_NRORDREGARQ + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        (RIGHT(REPLICATE('0', 10) + CONVERT(VARCHAR, @V_NRORDREGARQ), 10), @C_I100_DSLINHA, @P_NRSEQARQMAG);

      FETCH NEXT FROM C_I100 INTO @C_I100_DSLINHA;
   END;
   CLOSE C_I100;
   DEALLOCATE C_I100;

   SET @P_NRORDREGARQ = @V_NRORDREGARQ;
END;
GO

-- *VERSAO* --
EXEC ATUVEROBJ 'SPED_CONTABIL_CENTROCUSTO','5.11.000';
GO