TRUNCATE TABLE ARQMAGNETICO;

IF EXISTS(SELECT NAME 
            FROM SYSOBJECTS
           WHERE NAME = 'SPED_CONTABIL_MESTRE' AND TYPE = 'P')
   DROP PROCEDURE SPED_CONTABIL_MESTRE
GO

CREATE PROCEDURE SPED_CONTABIL_MESTRE (
   @P_NRSEQARQMAG  VARCHAR(10),
   @P_CDEMPRESA    VARCHAR(02),
   @P_DTREFERENCIA DATETIME,
   @P_DSNATUREZA   VARCHAR(100),
   @P_IDESCRITURA  VARCHAR(01),
   @P_IDPLANCTBREF VARCHAR(02),
   @P_IDGERADEMCTB VARCHAR(01),
   @P_IDSPED       VARCHAR(01)) /* PARAMETRO QUE DEFINE SE SERA GERADO SPED OU FCONT */
AS
   DECLARE @V_NRORDREGARQ  INTEGER;
BEGIN
   EXEC SPED_CONTABIL_CABECALHO @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @P_IDESCRITURA, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
   EXEC SPED_CONTABIL_PLANOCONTA @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @P_DSNATUREZA, @P_IDPLANCTBREF, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;

   IF (@P_IDESCRITURA = 'G') BEGIN
      EXEC SPED_CONTABIL_HISTORICO @P_NRSEQARQMAG, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
   END;

   EXEC SPED_CONTABIL_CENTROCUSTO @P_NRSEQARQMAG, @P_DTREFERENCIA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
   EXEC SPED_CONTABIL_SALDO @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;

   IF (@P_IDSPED = 'S') BEGIN
      IF (@P_IDESCRITURA = 'G') BEGIN
         EXEC SPED_CONTABIL_LANCAMENTO @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
      END
      ELSE BEGIN
         EXEC SPED_CONTABIL_BALANCETE @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
      END;
   END
   ELSE BEGIN
      EXEC SPED_CONTABIL_LANCAMENTO @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
      EXEC SPED_CONTABIL_BALANCETE @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
   END;
   EXEC SPED_CONTABIL_DEMONSTRACOES @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @P_DSNATUREZA, @P_IDGERADEMCTB, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
   EXEC SPED_CONTABIL_ENCERRAMENTO @P_NRSEQARQMAG, @P_CDEMPRESA, @P_DTREFERENCIA, @P_DSNATUREZA, @V_NRORDREGARQ, @P_IDSPED, @P_NRORDREGARQ = @V_NRORDREGARQ OUTPUT;
END;
GO

-- *VERSAO* --
EXEC ATUVEROBJ 'SPED_CONTABIL_MESTRE','5.30.000';
GO