DROP PROCEDURE [dbo].[sp_ClassificaTipoCC_Fornecedores] GO CREATE PROCEDURE [dbo].[sp_ClassificaTipoCC_Fornecedores] (@TDOC SMALLINT,@ANO SMALLINT,@ARM SMALLINT,@DOC INT,@FRMOV_SEQ INT,@TABELA_ORIGEM VARCHAR(5)) AS BEGIN DECLARE @TIPO_CC SMALLINT DECLARE @MOV SMALLINT DECLARE @FRMOV_SEQ_PAG INT SET @TIPO_CC=0 SET @MOV=0 SET @FRMOV_SEQ_PAG=0 IF @TABELA_ORIGEM='STCAB' BEGIN --MOVIMENTAÇÃO VINDA DO STCAB IF EXISTS(SELECT * FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC) BEGIN SELECT @TIPO_CC=TIPO_CC,@ARM=ARM_DEST FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC END ELSE BEGIN SELECT @TIPO_CC=TDOC_TCC.TIPO_CC FROM STCAB INNER JOIN TDOC_TCC ON STCAB.ARM = TDOC_TCC.ARM AND STCAB.TDOC = TDOC_TCC.TDOC INNER JOIN FRMOV ON STCAB.SEQ_DOC_TERC = FRMOV.SEQ AND STCAB.TIPO_TERCEIRO='F' WHERE (FRMOV.SEQ = @FRMOV_SEQ) END END IF @TABELA_ORIGEM='FRREC' BEGIN --MOVIMENTAÇÃO VINDA DO FRREC IF EXISTS(SELECT * FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC) BEGIN SELECT @TIPO_CC=TIPO_CC,@ARM=ARM_DEST FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC END ELSE BEGIN SELECT @TIPO_CC=MOV_TCC_FR.TIPO_CC FROM FRREC INNER JOIN MOV_TCC_FR ON FRREC.ARM = MOV_TCC_FR.ARM INNER JOIN FRMOV ON (FRREC.FRMOV_SEQ=FRMOV.SEQ OR (FRREC.FRMOV_SEQ=FRMOV.SEQ_MOEDA AND NOT FRMOV.SEQ_MOEDA =0)) AND MOV_TCC_FR.MOV = FRMOV.MOV WHERE (FRMOV.SEQ = @FRMOV_SEQ) END END -- TENTA IR BUSCAR O TIPO DE CONTA CORENTE POR OMISSÃO ASSOCIADO AO ARMAZÉM IF @TIPO_CC=0 AND @ARM>0 BEGIN --MOVIMENTOS VINDOS DE STCAB OU FRREC (@ARM>0) MAS SEM ASSOCIAÇÃO ANTERIOR SELECT @TIPO_CC=CONVERT(SMALLINT,ISNULL(N01,0)) FROM TAB01_ARM_TCC WHERE COD=@ARM END IF @TIPO_CC=0 BEGIN --MOVIMENTAÇÃO DIRECTA OU NÃO HOUVE FORMA DE CLASSIFICAR ANTES SELECT @MOV=MOV FROM FRMOV WHERE SEQ=@FRMOV_SEQ SELECT @TIPO_CC=ISNULL(N03,0) FROM TAB01_MOV_FR WHERE COD=@MOV END UPDATE FRMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ=@FRMOV_SEQ UPDATE FRMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ_MOEDA=@FRMOV_SEQ --CASOS ESPECIAIS CREDITOS QUE GERAM DEBITOS IF @TABELA_ORIGEM='STCAB' AND @TDOC BETWEEN 81 AND 81 BEGIN --COMPRAS A DINHEIRO, O PAGAMENTO É CLASSIFICADO POR AQUI SELECT @FRMOV_SEQ_PAG=SEQ FROM FRCRD WHERE FRMOV_SEQ=@FRMOV_SEQ IF NOT @@ROWCOUNT=0 BEGIN UPDATE FRMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ=@FRMOV_SEQ_PAG UPDATE FRMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ_MOEDA=@FRMOV_SEQ_PAG END END END GO DROP PROCEDURE [dbo].[sp_ClassificaTipoCC_Clientes] GO CREATE PROCEDURE [dbo].[sp_ClassificaTipoCC_Clientes] (@TDOC SMALLINT,@ANO SMALLINT,@ARM SMALLINT,@DOC INT,@CLMOV_SEQ INT,@TABELA_ORIGEM VARCHAR(5)) AS BEGIN DECLARE @TIPO_CC SMALLINT DECLARE @MOV SMALLINT DECLARE @CLMOV_SEQ_PAG INT SET @TIPO_CC=0 SET @MOV=0 SET @CLMOV_SEQ_PAG=0 IF @TABELA_ORIGEM='STCAB' BEGIN --MOVIMENTAÇÃO VINDA DO STCAB IF EXISTS(SELECT * FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC) BEGIN SELECT @TIPO_CC=TIPO_CC,@ARM=ARM_DEST FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC END ELSE BEGIN SELECT @TIPO_CC=TDOC_TCC.TIPO_CC FROM STCAB INNER JOIN TDOC_TCC ON STCAB.ARM = TDOC_TCC.ARM AND STCAB.TDOC = TDOC_TCC.TDOC INNER JOIN CLMOV ON STCAB.SEQ_DOC_TERC = CLMOV.SEQ AND STCAB.TIPO_TERCEIRO='C' WHERE (CLMOV.SEQ = @CLMOV_SEQ) END END IF @TABELA_ORIGEM='CLREC' BEGIN --MOVIMENTAÇÃO VINDA DO CLREC IF EXISTS(SELECT * FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC) BEGIN SELECT @TIPO_CC=TIPO_CC,@ARM=ARM_DEST FROM CLASSIFIC_DOC WHERE TABELA=@TABELA_ORIGEM AND TDOC=@TDOC AND ANO=@ANO AND ARM=@ARM AND DOC=@DOC END ELSE BEGIN SELECT @TIPO_CC=MOV_TCC_CLI.TIPO_CC FROM CLREC INNER JOIN MOV_TCC_CLI ON CLREC.ARM = MOV_TCC_CLI.ARM INNER JOIN CLMOV ON (CLREC.CLMOV_SEQ=CLMOV.SEQ OR (CLREC.CLMOV_SEQ=CLMOV.SEQ_MOEDA AND NOT CLMOV.SEQ_MOEDA =0)) AND MOV_TCC_CLI.MOV = CLMOV.MOV WHERE (CLMOV.SEQ = @CLMOV_SEQ) END END -- TENTA IR BUSCAR O TIPO DE CONTA CORENTE POR OMISSÃO ASSOCIADO AO ARMAZÉM IF @TIPO_CC=0 AND @ARM>0 BEGIN --MOVIMENTOS VINDOS DE STCAB OU CLREC (@ARM>0) MAS SEM ASSOCIAÇÃO ANTERIOR SELECT @TIPO_CC=CONVERT(SMALLINT,ISNULL(N01,0)) FROM TAB01_ARM_TCC WHERE COD=@ARM END IF @TIPO_CC=0 BEGIN --MOVIMENTAÇÃO DIRECTA OU NÃO HOUVE FORMA DE CLASSIFICAR ANTES SELECT @MOV=MOV FROM CLMOV WHERE SEQ=@CLMOV_SEQ SELECT @TIPO_CC=ISNULL(N03,0) FROM TAB01_MOV_CLI WHERE COD=@MOV END UPDATE CLMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ=@CLMOV_SEQ UPDATE CLMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ_MOEDA=@CLMOV_SEQ --CASOS ESPECIAIS DEBITOS QUE GERAM CREDITOS IF @TABELA_ORIGEM='STCAB' AND @TDOC BETWEEN 1300 AND 1399 BEGIN --VENDAS A DINHEIRO, O PAGAMENTO É CLASSIFICADO POR AQUI SELECT @CLMOV_SEQ_PAG=SEQ FROM CLCRD WHERE CLMOV_SEQ=@CLMOV_SEQ IF NOT @@ROWCOUNT=0 BEGIN UPDATE CLMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ=@CLMOV_SEQ_PAG UPDATE CLMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ_MOEDA=@CLMOV_SEQ_PAG END END --CASOS ESPECIAIS CREDITOS QUE GERAM DEBITOS IF @TABELA_ORIGEM='STCAB' AND @TDOC BETWEEN 300 AND 399 BEGIN -- DEVOL VD, O PAGAMENTO É CLASSIFICADO POR AQUI SELECT @CLMOV_SEQ_PAG=CLMOV_SEQ FROM CLCRD WHERE SEQ=@CLMOV_SEQ IF NOT @@ROWCOUNT=0 BEGIN UPDATE CLMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ=@CLMOV_SEQ_PAG UPDATE CLMOV SET ARM=@ARM,TIPO_CC=@TIPO_CC WHERE SEQ_MOEDA=@CLMOV_SEQ_PAG END END END GO DROP PROCEDURE [dbo].[sp_ReclassifTiposCC] GO create PROCEDURE [dbo].[sp_ReclassifTiposCC] AS BEGIN DECLARE @INDICE INT DECLARE @SEQ_DOC_TERC INT DECLARE @TABELA VARCHAR(7) DECLARE @TDOC SMALLINT DECLARE @ANO SMALLINT DECLARE @ARM INT DECLARE @DOC INT CREATE TABLE #AUX_RECLASSIFICA_TIPO_CC ( INDICE INT IDENTITY(1,1), SEQ_DOC_TERC INT, TABELA VARCHAR(7), TDOC SMALLINT, ANO SMALLINT, ARM SMALLINT, DOC INT ) CREATE CLUSTERED INDEX [IDX_AUX_RECLASSIFICA_TIPO_CC] ON [#AUX_RECLASSIFICA_TIPO_CC] ( INDICE ASC ) ON [PRIMARY] INSERT INTO #AUX_RECLASSIFICA_TIPO_CC(SEQ_DOC_TERC,TABELA,TDOC,ANO,ARM,DOC) SELECT SEQ_DOC_TERC,'STCAB_C' AS TABELA,STCAB.TDOC,STCAB.ANO,STCAB.ARM,STCAB.DOC FROM STCAB WHERE NOT SEQ_DOC_TERC=0 AND TIPO_TERCEIRO='C' UNION ALL SELECT CLMOV_SEQ,'CLREC',CLREC.TDOC,CLREC.ANO,CLREC.ARM,CLREC.DOC FROM CLREC WHERE NOT CLMOV_SEQ=0 UNION ALL SELECT SEQ,'CLMOV',0,0,0,0 FROM CLMOV WHERE MOVDIR=1 UNION ALL SELECT SEQ_DOC_TERC,'STCAB_F',STCAB.TDOC,STCAB.ANO,STCAB.ARM,STCAB.DOC FROM STCAB WHERE NOT SEQ_DOC_TERC=0 AND TIPO_TERCEIRO='F' UNION ALL SELECT FRMOV_SEQ,'FRREC',FRREC.TDOC,FRREC.ANO,FRREC.ARM,FRREC.DOC FROM FRREC WHERE NOT FRMOV_SEQ=0 UNION ALL SELECT SEQ,'FRMOV',0,0,0,0 FROM FRMOV WHERE MOVDIR=1 SELECT @INDICE=MAX(INDICE) FROM #AUX_RECLASSIFICA_TIPO_CC WHILE @INDICE>0 BEGIN SELECT @SEQ_DOC_TERC=SEQ_DOC_TERC,@TABELA=TABELA,@TDOC=TDOC,@ANO=ANO,@ARM=ARM,@DOC=DOC FROM #AUX_RECLASSIFICA_TIPO_CC WHERE INDICE=@INDICE IF @TABELA IN ('CLMOV','CLREC','STCAB_C') BEGIN IF @TABELA='STCAB_C' SET @TABELA='STCAB' EXEC sp_ClassificaTipoCC_Clientes @TDOC,@ANO,@ARM,@DOC,@SEQ_DOC_TERC,@TABELA END ELSE BEGIN IF @TABELA='STCAB_F' SET @TABELA='STCAB' EXEC sp_ClassificaTipoCC_Fornecedores @TDOC,@ANO,@ARM,@DOC,@SEQ_DOC_TERC,@TABELA END SET @INDICE=@INDICE-1 PRINT @INDICE END DROP TABLE #AUX_RECLASSIFICA_TIPO_CC END