
/*Preparação*/

SELECT NAME AS TABELA, 'EXEC P_CREATE_AUDIT_TRIGGER_HISTORICO_COMISSAO '''+ NAME + '''' AS EXECUTAR
INTO #CURSOR_AUDITORIA_COMISSAO
FROM SYS.OBJECTS
WHERE NAME IN ('FP_CARGO_EST_PROD_TBL_DESC_CARGO'
,'FP_CARGO_EST_PROD_TBL_COMIS_REGRESSAO'
,'FP_CARGO_EST_PROD_TBL_COMIS'
,'FP_CARGO_EST_ARV_MERC_LINHA_DESCONTO'
,'EST_PROD_TBL_DESC_RC_VD_CONV'
,'EST_PROD_TBL_DESC_RC_CLI'
,'EST_PROD_TBL_DESC_QTDE_PRC_FILIAL'
,'EST_PROD_TBL_DESC_QTDE_FORMA_PGTO'
,'EST_PROD_TBL_DESC_QTDE_EST_PROD_FABRIC'
,'EST_PROD_TBL_DESC_QTDE_EST_PROD'
,'EST_PROD_TBL_DESC_QTDE_EST_MC'
,'EST_PROD_TBL_DESC_QTDE_EST_ARV_MERC_LINHA'
,'EST_PROD_TBL_DESC_QTDE_EST_ARV_MERC_CATEGORIA'
,'EST_PROD_TBL_DESC_QTDE'
,'EST_PROD_TBL_DESC_QTDE_ACIMA'
,'EST_PROD_TBL_DESC_PROGRAMADO'
,'EST_PROD_TBL_DESC_PRE_VENCIDOS_CPL'
,'EST_PROD_TBL_DESC_PRE_VENCIDOS'
,'EST_PROD_TBL_DESC_PRC_FILIAL'
,'EST_PROD_TBL_DESC_GLB_CLASS_CLIENTE'
,'EST_PROD_TBL_DESC_FORMA_PGTO'
,'EST_PROD_TBL_DESC_FAIXA_PRC_EST_PROD_FABRIC'
,'EST_PROD_TBL_DESC_FAIXA_PRC_EST_PROD'
,'EST_PROD_TBL_DESC_FAIXA_PRC_EST_MC'
,'EST_PROD_TBL_DESC_FAIXA_PRC_EST_ARV_MERC_LINHA'
,'EST_PROD_TBL_DESC_FAIXA_PRC_EST_ARV_MERC_FAMILIA'
,'EST_PROD_TBL_DESC_FAIXA_PRC_EST_ARV_MERC_CATEGORIA'
,'EST_PROD_TBL_DESC_EST_PROD_FABRIC'
,'EST_PROD_TBL_DESC_EST_PROD_DESC_ANIVER'
,'EST_PROD_TBL_DESC_EST_PROD'
,'EST_PROD_TBL_DESC_EST_MC'
,'EST_PROD_TBL_DESC_EST_ARV_MERC_LINHA'
,'EST_PROD_TBL_DESC_EST_ARV_MERC_FAMILIA'
,'EST_PROD_TBL_DESC_EST_ARV_MERC_CATEGORIA'
,'EST_PROD_TBL_DESC_CREDIARIO'
,'EST_PROD_TBL_DESC_CARGO_PRC_FILIAL'
,'EST_PROD_TBL_DESC_CARGO_EST_PROD_FABRIC'
,'EST_PROD_TBL_DESC_CARGO_EST_PROD'
,'EST_PROD_TBL_DESC_CARGO_EST_MC'
,'EST_PROD_TBL_DESC_CARGO_EST_ARV_MERC_LINHA'
,'EST_PROD_TBL_DESC_CARGO_EST_ARV_MERC_FAMILIA'
,'EST_PROD_TBL_DESC_CARGO_EST_ARV_MERC_CATEGORIA'
,'EST_PROD_TBL_DESC_CARGO'
,'EST_PROD_TBL_DESC'
,'EST_PROD_TBL_COMIS_REGRESSAO_TIPO_DESCONTO'
,'EST_PROD_TBL_COMIS_REGRESSAO_PRC_FILIAL'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_PROD_TBL_DESC_QTDE'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_PROD_TBL_DESC'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_PROD_FABRIC'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_PROD'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_MC'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_ARV_MERC_LINHA'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_ARV_MERC_FAMILIA'
,'EST_PROD_TBL_COMIS_REGRESSAO_EST_ARV_MERC_CATEGORIA'
,'EST_PROD_TBL_COMIS_REGRESSAO_DESCONTOS'
,'EST_PROD_TBL_COMIS_REGRESSAO'
,'EST_PROD_TBL_COMIS_PRC_FILIAL'
,'EST_PROD_TBL_COMIS_EST_PROD_QTDE'
,'EST_PROD_TBL_COMIS_EST_PROD_FABRIC_QTDE'
,'EST_PROD_TBL_COMIS_EST_PROD_FABRIC'
,'EST_PROD_TBL_COMIS_EST_PROD'
,'EST_PROD_TBL_COMIS_EST_MC_QTDE'
,'EST_PROD_TBL_COMIS_EST_MC'
,'EST_PROD_TBL_COMIS_EST_ARV_MERC_LINHA_QTDE'
,'EST_PROD_TBL_COMIS_EST_ARV_MERC_LINHA'
,'EST_PROD_TBL_COMIS_EST_ARV_MERC_FAMILIA_QTDE'
,'EST_PROD_TBL_COMIS_EST_ARV_MERC_FAMILIA'
,'EST_PROD_TBL_COMIS_EST_ARV_MERC_CATEGORIA_QTDE'
,'EST_PROD_TBL_COMIS_EST_ARV_MERC_CATEGORIA'
,'EST_PROD_TBL_COMIS'
,'EST_PROD_TABLOIDE_PAPEL'
,'EST_PROD_TABLOIDE_FILIAL'
,'EST_PROD_TABLOIDE_FACEAMENTO'
,'EST_PROD_TABLOIDE_EVENTOS'
,'EST_PROD_TABLOIDE_CPL'
,'EST_PROD_TABLOIDE'
,'EST_PROD_TABLOIDE_AGENDAMENTO'
,'EST_PROD_PRECO_DESC_QTDE_PRC_FILIAL'
,'EST_PROD_PRECO_DESC_QTDE_PBM_PRC_FILIAL'
,'EST_PROD_PRECO_DESC_QTDE_PBM_CPL'
,'EST_PROD_PRECO_DESC_QTDE_PBM'
,'EST_PROD_PRECO_DESC_QTDE_CPL'
,'EST_PROD_PRECO_DESC_QTDE'
,'EST_PROD_PRECO_DESC_PRG_PRC_FILIAL'
,'EST_PROD_PRECO_DESC_PRG_CPL'
,'EST_PROD_PRECO_DESC_PRG'
,'EST_PROD_PRECO_DESC_CLAS_CLIENTE_PRC_FILIAL'
,'EST_PROD_PRECO_DESC_CLAS_CLIENTE_CPL'
,'EST_PROD_PRECO_DESC_CLAS_CLIENTE'
,'EST_PROD_PRECO_DESC_ANIVER_PRC_FILIAL'
,'EST_PROD_PRECO_DESC_ANIVER_CPL'
,'EST_PROD_PRECO_DESC_ANIVER'
,'EST_PROD_PRECIFICACAO_DESC_PRG'
,'EST_PROD_DESC_NR_NCM_LISTA'
,'EST_PROD_DESC_MARGEM_LISTA'
,'EST_PROD_DESC_FINAN'
,'EST_PROD_DESC_COMERCIAL'
,'EST_GRP_COMIS_DESC_REGRESSAO'
,'EST_GRP_COMIS_CLASS_DESC_PRC_FILIAL'
,'EST_GRP_COMIS_CLASS_DESC_FP_FUNC'
,'EST_GRP_COMIS_CLASS_DESC_EST_GRP_COMIS'
,'EST_DESC_CONV_PROD_EST_PROD'
,'EST_DESC_CONV_PROD'
,'EST_DESC_CONV_LINHA_EST_ARV_MERC_LINHA'
,'EST_DESC_CONV_LINHA'
,'EST_ARV_MERC_LINHA_DESC_LISTA')
AND type in (N'U')

/*Criação das auditorias*/

DECLARE @RS_TABELA VARCHAR(550)
DECLARE @RS_COMANDO VARCHAR(1000)

DECLARE CURSOR_AUDITORIA_COMISSAO CURSOR FAST_FORWARD FOR 
				SELECT TABELA, EXECUTAR
				FROM #CURSOR_AUDITORIA_COMISSAO

OPEN CURSOR_AUDITORIA_COMISSAO
FETCH NEXT FROM CURSOR_AUDITORIA_COMISSAO INTO @RS_TABELA, @RS_COMANDO
WHILE @@FETCH_STATUS=0
	BEGIN
		
		EXEC (@RS_COMANDO);

		FETCH NEXT FROM CURSOR_AUDITORIA_COMISSAO INTO  @RS_TABELA, @RS_COMANDO

		PRINT 'PROCESSADA ' + CAST(@RS_TABELA AS VARCHAR)
	END


CLOSE CURSOR_AUDITORIA_COMISSAO;
DEALLOCATE CURSOR_AUDITORIA_COMISSAO;


/*Carga inicial nas tabelas de Auditoria*/

SELECT distinct table_name + '_audit_trigger' as table_name, COLUMN_NAME 
INTO #PreQuery
FROM INFORMATION_SCHEMA.COLUMNS C
INNER JOIN #CURSOR_AUDITORIA_COMISSAO T ON T.TABELA = C.table_name


SELECT table_name, CONCAT('INSERT INTO ', table_name, '(',STUFF((Select ','+ COLUMN_NAME
																from #PreQuery T1
																where T1.table_name=T2.table_name
																AND COLUMN_NAME NOT IN ('CD_CTR_AUDIT_TRIGGER', 'DT_EVENT' , 'ID_AUDIT', 'OPERACAO', 'SPID')
																FOR XML PATH('')),1,1,'') , ',OPERACAO',')', ' SELECT ', STUFF((Select ','+ COLUMN_NAME
																														from #PreQuery T1
																														where T1.table_name=T2.table_name
																														AND COLUMN_NAME NOT IN ('CD_CTR_AUDIT_TRIGGER', 'DT_EVENT' , 'ID_AUDIT', 'OPERACAO', 'SPID')
																														FOR XML PATH('')),1,1,''),',''CARGA INICIAL'' AS OPERACAO', ' FROM ',  replace(table_name,'_AUDIT_TRIGGER',''), ';') as Query
		
INTO #Executar 
FROM #PreQuery T2
WHERE COLUMN_NAME NOT IN ('CD_CTR_AUDIT_TRIGGER', 'DT_EVENT' , 'ID_AUDIT', 'OPERACAO', 'SPID')
GROUP BY table_name


DECLARE @Query VARCHAR(MAX)

SET NOCOUNT ON

DECLARE CURSOR_PROD CURSOR FAST_FORWARD FOR 
				SELECT p.Query
				FROM #Executar p

OPEN CURSOR_PROD
FETCH NEXT FROM CURSOR_PROD INTO @Query
WHILE @@FETCH_STATUS=0
	BEGIN

		EXEC (@Query)

		FETCH NEXT FROM CURSOR_PROD INTO  @Query
	END

CLOSE CURSOR_PROD;
DEALLOCATE CURSOR_PROD;


