/*******************************************************************
						ZTEMPLATETIPOOBJETO
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATETIPOOBJETO')
BEGIN
		CREATE TABLE ZTEMPLATETIPOOBJETO
		(
			IDTIPOOBJETO 	INT					NOT NULL,
			TIPOOBJETO 		VARCHAR(100) 		NULL,
			DESCRICAO 		VARCHAR(200) 		NULL,		
			RECCREATEDBY 	VARCHAR(50) 		NULL,
			RECCREATEDON 	DATETIME 			NULL,
			RECMODIFIEDBY 	VARCHAR(50) 		NULL,
			RECMODIFIEDON 	DATETIME 			NULL,
			
			CONSTRAINT PK_ZTEMPLATETIPOOBJETO PRIMARY KEY CLUSTERED (IDTIPOOBJETO ASC)
		)
END	

IF NOT EXISTS (SELECT * FROM ZTEMPLATETIPOOBJETO WHERE IDTIPOOBJETO = 1)
	INSERT INTO ZTEMPLATETIPOOBJETO (IDTIPOOBJETO, TIPOOBJETO, DESCRICAO) VALUES (1, 'RM.Cst.TemplatesRM.Parametros.TextBoxControle,RM.Cst.TemplatesRM.Parametros.Form', 'Texto livre')
IF NOT EXISTS (SELECT * FROM ZTEMPLATETIPOOBJETO WHERE IDTIPOOBJETO = 2)
	INSERT INTO ZTEMPLATETIPOOBJETO (IDTIPOOBJETO, TIPOOBJETO, DESCRICAO) VALUES (2, 'RM.Cst.TemplatesRM.Parametros.CheckBoxControle,RM.Cst.TemplatesRM.Parametros.Form', 'CheckBox')
IF NOT EXISTS (SELECT * FROM ZTEMPLATETIPOOBJETO WHERE IDTIPOOBJETO = 3)
	INSERT INTO ZTEMPLATETIPOOBJETO (IDTIPOOBJETO, TIPOOBJETO, DESCRICAO) VALUES (3, 'RM.Cst.TemplatesRM.Parametros.ActionControle,RM.Cst.TemplatesRM.Parametros.Form', 'Action')
IF NOT EXISTS (SELECT * FROM ZTEMPLATETIPOOBJETO WHERE IDTIPOOBJETO = 4)
	INSERT INTO ZTEMPLATETIPOOBJETO (IDTIPOOBJETO, TIPOOBJETO, DESCRICAO) VALUES (4, 'RM.Cst.TemplatesRM.Parametros.LookupControle,RM.Cst.TemplatesRM.Parametros.Form', 'Lookup')
IF NOT EXISTS (SELECT * FROM ZTEMPLATETIPOOBJETO WHERE IDTIPOOBJETO = 5)
	INSERT INTO ZTEMPLATETIPOOBJETO (IDTIPOOBJETO, TIPOOBJETO, DESCRICAO) VALUES (5, 'RM.Cst.TemplatesRM.Parametros.MaskedTextBoxControle,RM.Cst.TemplatesRM.Parametros.Form', 'Texto livre com máscara')

/*******************************************************************
						ZTEMPLATEPROPOBJETO
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATEPROPOBJETO')
BEGIN
		CREATE TABLE ZTEMPLATEPROPOBJETO
		(
			IDPROPOBJETO 	INT					NOT NULL,
			NOMEPROPOBJETO	VARCHAR(100) 		NULL,
			IDTIPOOBJETO 	INT 				NOT NULL,
			RECCREATEDBY 	VARCHAR(50) 		NULL,
			RECCREATEDON 	DATETIME 			NULL,
			RECMODIFIEDBY 	VARCHAR(50) 		NULL,
			RECMODIFIEDON 	DATETIME 			NULL,
			
			CONSTRAINT PK_ZTEMPLATEPROPOBJETO PRIMARY KEY CLUSTERED (IDPROPOBJETO ASC),
			CONSTRAINT FK_ZTEMPLATEPROPOBJETO_ZTEMPLATETIPOOBJETO FOREIGN KEY(IDTIPOOBJETO) REFERENCES ZTEMPLATETIPOOBJETO (IDTIPOOBJETO)
		)
		
		CREATE UNIQUE NONCLUSTERED INDEX IX_ZTEMPLATEPROPOBJETO ON ZTEMPLATEPROPOBJETO (IDPROPOBJETO ASC, IDTIPOOBJETO ASC)		
END	

IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 1)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (1, 'Width', 1) -- Largura do TextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 2)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (2, 'Height', 1) -- Altura do TextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 3)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (3, 'PasswordChar', 1) -- Caractere de senha do TextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 4)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (4, 'MaxLength', 1) -- Tamanho máximo do TextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 5)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (5, 'Value', 2) -- Valor do CheckBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 6)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (6, 'ValueChecked', 2) -- Valor do CheckBox marcado
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 7)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (7, 'ValueUnchecked', 2) -- Valor do CheckBox desmarcado
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 8)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (8, 'Width', 2) -- Largura do CheckBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 9)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (9, 'Height', 2) -- Altura do CheckBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 10)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (10, 'Action', 4) -- Nome da Action do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 11)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (11, 'DataServer', 4) -- Nome do DataServer do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 12)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (12, 'KeyFields', 4) -- Chave da tabela customizada
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 13)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (13, 'LookupField', 4) -- Chave da tabela customizada
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 14)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (14, 'LookupKeyFields', 4) -- Chave da tabela do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 15)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (15, 'LookupResultFields', 4) -- Campos do resultado do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 16)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (16, 'LookupSearchField', 4) -- Campo de pequisa do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 17)	
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (17, 'DataField', 4) -- DataField do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 18)	
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (18, 'UseDataField', 4) -- UseDataField do Lookup
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 19)		
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (19, 'AutoLoadView', 4) -- AutoLoadView do Lookup	
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 20)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (20, 'Width', 5) -- Largura do MaskedTextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 21)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (21, 'Height', 5) -- Altura do MaskedTextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 22)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (22, 'PasswordChar', 5) -- Caractere de senha do MaskedTextBox
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 23)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (23, 'MaxLength', 5) -- Tamanho máximo do MaskedTextBox	
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 24)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (24, 'Mask', 5) -- Máscara do MaskedTextBox		
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 25)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (25, 'ReadOnly', 1) -- Somente leitura para textBox	
IF NOT EXISTS (SELECT * FROM ZTEMPLATEPROPOBJETO WHERE IDPROPOBJETO = 26)
	INSERT INTO ZTEMPLATEPROPOBJETO (IDPROPOBJETO, NOMEPROPOBJETO, IDTIPOOBJETO) VALUES (26, 'OwnerData', 4) -- OwnerData do Lookup

/*******************************************************************
						ZTEMPLATEPARAMETRO
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATEPARAMETRO')
BEGIN
		CREATE TABLE ZTEMPLATEPARAMETRO
		(
			NOMEPROJETO					VARCHAR(50)		NOT NULL,
			NOMECAMPO 					VARCHAR(50) 	NOT NULL,
			DESCRICAOCAMPO 				VARCHAR(100) 	NULL,
			IDTIPOOBJETO 				INT 			NULL,
			IDTIPOOBJETOSEGUNDONIVEL 	INT 			NULL,
			CONTEXTO					VARCHAR(5)		NULL,
			RECCREATEDBY 				VARCHAR(50) 	NULL,
			RECCREATEDON 				DATETIME 		NULL,
			RECMODIFIEDBY 				VARCHAR(50) 	NULL,
			RECMODIFIEDON 				DATETIME 		NULL,
			
			CONSTRAINT PK_ZTEMPLATEPARAMETRO PRIMARY KEY CLUSTERED (NOMEPROJETO ASC, NOMECAMPO ASC),
			CONSTRAINT FK_ZTEMPLATEPARAMETRO_ZTEMPLATETIPOOBJETO FOREIGN KEY(IDTIPOOBJETO) REFERENCES ZTEMPLATETIPOOBJETO (IDTIPOOBJETO),
			CONSTRAINT FK_ZTEMPLATEPARAMETRO_ZTEMPLATETIPOOBJETO_SEGUNDONIVEL FOREIGN KEY(IDTIPOOBJETOSEGUNDONIVEL) 
				REFERENCES ZTEMPLATETIPOOBJETO (IDTIPOOBJETO)
		)
		
		CREATE UNIQUE NONCLUSTERED INDEX IX_ZTEMPLATEPARAMETRO ON ZTEMPLATEPARAMETRO(NOMEPROJETO ASC, NOMECAMPO ASC, IDTIPOOBJETO ASC)

		CREATE UNIQUE NONCLUSTERED INDEX IX_ZTEMPLATEPARAMETROSEGUNDONIVEL ON ZTEMPLATEPARAMETRO(NOMEPROJETO ASC, NOMECAMPO ASC, IDTIPOOBJETOSEGUNDONIVEL ASC)
END


/*******************************************************************
						ZTEMPLATEPARAMETROVALOR
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATEPARAMETROVALOR')
BEGIN
		CREATE TABLE ZTEMPLATEPARAMETROVALOR
		(
			CODCOLIGADA 				INT 			NOT NULL,
			CODFILIAL					INT				NOT NULL,
			CODTIPOCURSO				INT				NOT NULL,					
			NOMEPROJETO					VARCHAR(50)		NOT NULL,
			NOMECAMPO 					VARCHAR(50) 	NOT NULL,
			VALOR 						VARCHAR(1000) 	NULL,
			RECCREATEDBY 				VARCHAR(50) 	NULL,
			RECCREATEDON 				DATETIME 		NULL,
			RECMODIFIEDBY 				VARCHAR(50) 	NULL,
			RECMODIFIEDON 				DATETIME 		NULL,
			
			CONSTRAINT PK_ZTEMPLATEPARAMETROVALOR PRIMARY KEY CLUSTERED (CODCOLIGADA ASC, CODFILIAL ASC, CODTIPOCURSO ASC, NOMEPROJETO ASC, NOMECAMPO ASC),
			CONSTRAINT FK_ZTEMPLATEPARAMETROVALOR_ZTEMPLATEPARAMETRO FOREIGN KEY(NOMEPROJETO, NOMECAMPO) REFERENCES ZTEMPLATEPARAMETRO (NOMEPROJETO, NOMECAMPO),			
		)
END

IF NOT EXISTS(SELECT * FROM SYS.COLUMNS WHERE NAME = N'CODCOLIGADAENTIDADE' AND OBJECT_ID = OBJECT_ID(N'ZTEMPLATEPARAMETROVALOR'))
BEGIN
    ALTER TABLE ZTEMPLATEPARAMETROVALOR ADD CODCOLIGADAENTIDADE INT NULL
END

IF NOT EXISTS(SELECT * FROM SYS.COLUMNS WHERE NAME = N'VALOR2' AND OBJECT_ID = OBJECT_ID(N'ZTEMPLATEPARAMETROVALOR'))
BEGIN
    ALTER TABLE ZTEMPLATEPARAMETROVALOR ADD VALOR2 VARCHAR(200)
END


/*******************************************************************
						ZTEMPLATEPARAMETROPROPOBJETO
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATEPARAMETROPROPOBJETO')
BEGIN
		CREATE TABLE ZTEMPLATEPARAMETROPROPOBJETO
		(
			NOMEPROJETO					VARCHAR(50)		NOT NULL,
			NOMECAMPO 					VARCHAR(50) 	NOT NULL,
			IDPROPOBJETO 				INT 			NOT NULL,
			IDTIPOOBJETO 				INT 			NOT NULL,
			VALOR 						VARCHAR(100) 	NULL,
			RECCREATEDBY 				VARCHAR(50) 	NULL,
			RECCREATEDON 				DATETIME 		NULL,
			RECMODIFIEDBY 				VARCHAR(50) 	NULL,
			RECMODIFIEDON 				DATETIME 		NULL,
			
			CONSTRAINT PK_ZTEMPLATEPARAMETROPROPOBJ PRIMARY KEY CLUSTERED (NOMEPROJETO ASC, NOMECAMPO ASC, IDPROPOBJETO ASC),
			CONSTRAINT FK_ZTEMPLATEPARAMETROPROPOBJETO_ZTEMPLATEPARAMETRO FOREIGN KEY(NOMEPROJETO, NOMECAMPO, IDTIPOOBJETO) 
				REFERENCES ZTEMPLATEPARAMETRO (NOMEPROJETO, NOMECAMPO, IDTIPOOBJETO),
			CONSTRAINT FK_ZTEMPLATEPARAMETROPROPOBJETO_ZTEMPLATEPROPOBJETO FOREIGN KEY(IDPROPOBJETO, IDTIPOOBJETO) 
				REFERENCES ZTEMPLATEPROPOBJETO (IDPROPOBJETO, IDTIPOOBJETO)
		)
END		


/*******************************************************************
						ZTEMPLATEPARAMSEGNIVELPROPOBJ
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATEPARAMSEGNIVELPROPOBJ')
BEGIN
		CREATE TABLE ZTEMPLATEPARAMSEGNIVELPROPOBJ
		(
			NOMEPROJETO					VARCHAR(50)		NOT NULL,
			NOMECAMPO 					VARCHAR(50) 	NOT NULL,
			IDPROPOBJETO 				INT 			NOT NULL,			
			IDTIPOOBJETO 				INT 			NOT NULL,
			VALOR 						VARCHAR(100) 	NULL,
			RECCREATEDBY 				VARCHAR(50) 	NULL,
			RECCREATEDON 				DATETIME 		NULL,
			RECMODIFIEDBY 				VARCHAR(50) 	NULL,
			RECMODIFIEDON 				DATETIME 		NULL,
			
			CONSTRAINT PK_ZTEMPLATEPARAMSEGNIVPROPOB PRIMARY KEY CLUSTERED (NOMEPROJETO ASC, NOMECAMPO ASC, IDPROPOBJETO ASC),
			CONSTRAINT FK_ZTEMPLATEPARAMSEGNIVELPROPOBJ_ZTEMPLATEPARAMETRO FOREIGN KEY(NOMEPROJETO, NOMECAMPO, IDTIPOOBJETO) 
				REFERENCES ZTEMPLATEPARAMETRO (NOMEPROJETO, NOMECAMPO, IDTIPOOBJETOSEGUNDONIVEL),
			CONSTRAINT FK_ZTEMPLATEPARAMSEGNIVELPROPOBJ_ZTEMPLATEPROPOBJETO FOREIGN KEY(IDPROPOBJETO, IDTIPOOBJETO)
				REFERENCES ZTEMPLATEPROPOBJETO (IDPROPOBJETO, IDTIPOOBJETO)
		)
END		


/*******************************************************************
						ZTEMPLATEPARAMETROMULTIPLO
*******************************************************************/
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'ZTEMPLATEPARAMETROMULTIPLO')
BEGIN
		CREATE TABLE ZTEMPLATEPARAMETROMULTIPLO
		(
			CODCOLIGADA 	INT 			NOT NULL,
			CODFILIAL		INT				NOT NULL,
			CODTIPOCURSO	INT				NOT NULL,				
			NOMEPROJETO		VARCHAR(50)		NOT NULL,
			NOMECAMPO 		VARCHAR(50) 	NOT NULL,
			VALOR 			VARCHAR(200) 	NOT NULL,
			DESCRICAO		VARCHAR(200) 	NULL,			
			RECCREATEDBY 	VARCHAR(50) 	NULL,
			RECCREATEDON 	DATETIME 		NULL,
			RECMODIFIEDBY 	VARCHAR(50) 	NULL,
			RECMODIFIEDON 	DATETIME 		NULL,
			
			CONSTRAINT PK_ZTEMPLATEPARAMETROMULTIPLO PRIMARY KEY CLUSTERED (CODCOLIGADA ASC, CODFILIAL ASC, CODTIPOCURSO ASC, NOMEPROJETO ASC, NOMECAMPO ASC, VALOR ASC),
			CONSTRAINT FK_ZTEMPLATEPARAMETROMULTIPLO_ZTEMPLATEPARAMETRO FOREIGN KEY(NOMEPROJETO, NOMECAMPO)
				REFERENCES ZTEMPLATEPARAMETRO (NOMEPROJETO, NOMECAMPO)
		)
END