/* MYSQL */

ALTER TABLE categoriaservico ADD datainicio DATE NOT NULL;
ALTER TABLE categoriaservico ADD datafim DATE;
ALTER TABLE categoriaservico ADD nomeCatServicoConcatenado VARCHAR2(520);

create table eventoitemconfiguracao (
	idevento int(11),
	iditemconfiguracao int(11),
	primary key (idevento, iditemconfiguracao),
	foreign key (idevento) references evento(idevento),
	foreign key (iditemconfiguracao) references itemconfiguracao(iditemconfiguracao)
) engine = innodb;
create table matrizvisao(
   idmatriz             bigint not null,
   idvisao              bigint,
   idobjetonegocio      bigint,
   idcamposobjetonegocio1 bigint,  
   idcamposobjetonegocio2 bigint,
   idcamposobjetonegocio3 bigint,
   strinfo              text,
   nomecampo1           varchar(255),
   nomecampo2           varchar(255),
   nomecampo3           varchar(255),
   descricaocampo1      varchar(255),
   descricaocampo2      varchar(255),
   descricaocampo3      varchar(255)
)engine = innodb;
create table grupoitemconfiguracao(
	idgrupoitemconfiguracao int not null,
	nomegrupoitemconfiguracao varchar(100) not null, 
	datainicio date not null, 
	datafim date, primary key (idgrupoitemconfiguracao)
) engine = innodb;
create table acordoservicocontrato(
   idacordoservicocontrato bigint not null,
   idacordonivelservico bigint not null,
   idservicocontrato    bigint not null,
   datacriacao          date not null,
   datainicio           date,
   datafim              date,
   dataultatualiz       date,
   deleted              char(1)
)engine = innodb;
create table tipocomplexidade(
    complexidade char(1) not null,
    desctipocomplexidade varchar(50) not null
)engine = innodb;
create table valorajusteglosa(
   idservicocontrato    bigint(20) not null,
   idacordonivelservico bigint(20) not null,
   quantidadefalhas     int(11),
   valorajuste          decimal(10,2),
   deleted              char(1)
)engine = innodb;
create table glosaservicocontrato(
   idglosaservicocontrato bigint(20) not null,
   idservicocontrato    bigint(20) not null,
   quantidadeglosa      int(11),
   datafim              date,
   primary key(idglosaservicocontrato)
)engine = innodb;
create table resultadosesperados(
   idservicocontrato   bigint(20)  not null,
   idacordonivelservico bigint(20) not null,
   descricaoresultados     varchar(1000),
   limites          varchar(200),
   glosa            varchar(200),
   limiteglosa      varchar(200),
   deleted              char(1)
)engine = innodb;

 /*==============================================================*/
/* Table:  solicitacaoservicomudanca                             */
/*==============================================================*/     
create table solicitacaoservicomudanca  (
   idrequisicaomudanca integer,
   idsolicitacaoservico integer
) engine=innodb;

alter table solicitacaoservicomudanca  add constraint fk_solicita_reference_requisic foreign key (idrequisicaomudanca)  references requisicaomudanca (idrequisicaomudanca);
alter table solicitacaoservicomudanca add constraint fk_solicita_reference_solmud foreign key (idsolicitacaoservico) references solicitacaoservico (idsolicitacaoservico);
alter table acordoservicocontrato add primary key (idacordoservicocontrato);  
alter table matrizvisao add primary key (idmatriz);
alter table itemconfiguracaoevento add column linhacomandolinux varchar(255);
alter table itemconfiguracao drop idunidade;
alter table itemconfiguracao drop idempresa;
alter table itemconfiguracao drop idusuario;
alter table itemconfiguracao drop sistema;
alter table itemconfiguracao add idgrupoitemconfiguracao int after idtipoitemconfiguracao;
alter table itemconfiguracao add foreign key (idgrupoitemconfiguracao) references grupoitemconfiguracao (idgrupoitemconfiguracao);
alter table itemconfiguracao add constraint fk_grupoitemconfiguracao foreign key (idgrupoitemconfiguracao) references grupoitemconfiguracao (idgrupoitemconfiguracao);
alter table matrizvisao add constraint fk_reference_620 foreign key (idvisao) references visao (idvisao) on delete restrict on update restrict;
alter table matrizvisao add constraint fk_reference_621 foreign key (idobjetonegocio) references objetonegocio (idobjetonegocio) on delete restrict on update restrict;
alter table matrizvisao add constraint fk_reference_622 foreign key (idcamposobjetonegocio1)references camposobjetonegocio (idcamposobjetonegocio) on delete restrict on update restrict;
alter table matrizvisao add constraint fk_reference_623 foreign key (idcamposobjetonegocio2) references camposobjetonegocio (idcamposobjetonegocio) on delete restrict on update restrict;
alter table matrizvisao add constraint fk_reference_624 foreign key (idcamposobjetonegocio3) references camposobjetonegocio (idcamposobjetonegocio) on delete restrict on update restrict;
alter table acordonivelservico add column contatos text;
alter table acordoservicocontrato add constraint fk_reference_627 foreign key (idacordonivelservico) references acordonivelservico (idacordonivelservico) on delete restrict on update restrict;
alter table acordoservicocontrato add constraint fk_reference_628 foreign key (idservicocontrato) references citsmart.servicocontrato (idservicocontrato) on delete restrict on update restrict;
alter table solicitacaoservico add idacordonivelservico int;	
alter table menu add column menurapido varchar(45) null  after horizontal;  
alter table solicitacaoservico add column idacordonivelservico integer;
alter table tipocomplexidade add primary key (complexidade);
alter table complexidade DROP idcomplexidadecontrato, DROP PRIMARY KEY;
alter table complexidade add primary key (idcontrato, complexidade);
insert into tipocomplexidade (complexidade, desctipocomplexidade) values ('B', 'Baixa');
insert into tipocomplexidade (complexidade, desctipocomplexidade) values ('I', 'Intermediária');
insert into tipocomplexidade (complexidade, desctipocomplexidade) values ('M', 'Mediana');
insert into tipocomplexidade (complexidade, desctipocomplexidade) values ('A', 'Alta');
insert into tipocomplexidade (complexidade, desctipocomplexidade) values ('E', 'Especialista');

alter table empregados add column (ramal varchar(5) );
alter table  contatosolicitacaoservico add column (ramal varchar(5) );
alter table logdados add column datalog timestamp;

--Resultado desse select utilizar nos valores do update abaixo
--SELECT idcamposobjetonegocio from camposobjetonegocio where idobjetonegocio IN (SELECT idobjetonegocio from objetonegocio where nometabeladb = 'COMPLEXIDADE') AND nomedb IN ('IDCONTRATO', 'COMPLEXIDADE')

--UPDATE camposobjetonegocio SET sequence = 'N' WHERE idcamposobjetonegocio IN (2582, 2583);

/*==============================================================*/
/* Table: "categoriamudanca"                            */
/*==============================================================*/
create table categoriamudanca  (
   idcategoriamudanca integer not null,
   idtipofluxo       INT(11),
   idmodeloemailcriacao INT(11),
   idmodeloemailfinalizacao INT(11),
   idmodeloemailacoes INT(11),
   idgruponivel1      INT(11),
   idgrupoexecutor   INT(11),
   idcalendario      INT(11),
   idcategoriamudancapai INT(11),
   nomecategoria      varchar(100),
   datainicio         date,
   datafim            date
)
ENGINE = InnoDB;
	  
/*==============================================================*/
/* Table: "requisicaomudanca"                                   */
/*==============================================================*/
create table requisicaomudanca  (
   idrequisicaomudanca integer                        not null,
   idproprietario     integer                         not null,
   idsolicitante      integer                         not null,
   tipo            varchar(25),
   idcategoriamudanca integer,
   idgruponivel1      INT(11),
   idgrupoatual       INT(11),
   idcalendario       INT(11),
   motivo             varchar(255),
   nivelimportancianegocio varchar(255),
   classificacao      varchar(255),
   nivelimpacto       varchar(255),
   analiseimpacto     varchar(3000),
   datahoraconclusao  timestamp,
   dataaceitacao     date,
   datavotacao        date,
   datahorainicio     timestamp,
   datahoratermino    timestamp,
   titulo           varchar(255),
   descricao          varchar(255),
   risco              varchar(255),
   estimativacusto   Double,
   planoreversao     varchar(3000),
   status            varchar(45),
   prioridade        integer,
   enviaemailcriacao  varchar(1),
   enviaemailfinalizacao varchar(1),
   enviaemailacoes    varchar(1),
   exibirquadromudancas varchar(1),
   seqreabertura      smallint,
   datahoracaptura    timestamp,
   datahorareativacao timestamp,
   datahorasuspensao  timestamp,
   tempodecorridohh   smallint,
   tempodecorridomm   smallint,
   prazohh            smallint,
   prazomm           smallint,
   tempoatendimentohh smallint,
   tempoatendimentomm smallint,
   tempoatrasohh      smallint,
   tempoatrasomm      smallint,
   tempocapturahh     smallint,
   tempocapturamm     smallint,
   fase            varchar(20)
)
ENGINE = InnoDB;

/*==============================================================*/
/* Table:  execucaomudanca                             */
/*==============================================================*/
create table execucaomudanca  (
   idexecucao         integer not null,
   idinstanciafluxo   BIGINT(20) not null,
   idrequisicaomudanca INT(11) not null,
   idfluxo           BIGINT(20) not null,
   seqreabertura     smallint
)
ENGINE = InnoDB; 

/*==============================================================*/
/* Table:  ocorrenciamudanca                                    */
/*==============================================================*/
create table ocorrenciamudanca  (
   idocorrencia      integer                         not null,
    iditemtrabalho      BIGINT(20),
    idjustificativa     INT(11),
    idrequisicaomudanca  INT(11),
    dataregistro        date,
    horaregistro        varchar(5),
    registradopor       varchar(100),
    descricao           varchar(200),
    datainicio          date,
    datafim             date,
    complementojustificativa   	LONGTEXT,
    dadosmudanca         	LONGTEXT,
    informacoescontato   	LONGTEXT,
    categoria           varchar(20),
    origem              char(1),
    tempogasto          smallint,
    ocorrencia           	LONGTEXT
)
ENGINE = InnoDB;

/*==============================================================*/
/* Table:  requisicaomudancaitemconfigura                       */
/*==============================================================*/
create table  requisicaomudancaitemconfiguracao   (
    idrequisicaomudancaitemconfiguracao  integer    not null,
    idrequisicaomudanca  INt(11),
    iditemconfiguracao  INt(11),
    descricao           varchar(100)
)
ENGINE = InnoDB;

/*==============================================================*/
/* Table:  requisicaomudancaservico                             */
/*==============================================================*/
create table  requisicaomudancaservico   (
    idrequisicaomudancaservico  integer  not null,
    idrequisicaomudanca  INT(11)  not null,
    idservico           BIGINT(20) not null
)
ENGINE = InnoDB; 
	  
/*==============================================================*/
/* Alteracao :  Itemconfiguracao                          */
/*==============================================================*/

alter table categoriamudanca   add constraint pk_categoriamudanca primary key (idcategoriamudanca);
alter table categoriamudanca   add constraint fk_categori_reference_bpm_tipo foreign key (idtipofluxo)      references bpm_tipofluxo (idtipofluxo);
alter table categoriamudanca   add constraint fk_categori_reference_modelose foreign key (idmodeloemailcriacao)      references modelosemails (idmodeloemail);
alter table categoriamudanca   add constraint fk_categori_reference_modelose_01 foreign key (idmodeloemailfinalizacao)     references modelosemails (idmodeloemail);
alter table categoriamudanca   add constraint fk_categori_reference_modelose_02 foreign key (idmodeloemailacoes)      references modelosemails (idmodeloemail);
alter table categoriamudanca   add constraint fk_categori_reference_grupo foreign key (idgruponivel1)      references grupo (idgrupo);
alter table categoriamudanca   add constraint fk_categori_reference_grupo_01 foreign key (idgrupoexecutor)      references grupo (idgrupo);
alter table categoriamudanca   add constraint fk_categori_reference_calendar foreign key (idcalendario)      references calendario (idcalendario);	 
alter table requisicaomudanca   add constraint pk_requisicaomudanca primary key (idrequisicaomudanca);
alter table requisicaomudanca   add constraint fk_requisic_reference_cat foreign key (idcategoriamudanca)      references categoriamudanca (idcategoriamudanca);
alter table requisicaomudanca   add constraint fk_requisic_reference_grupo foreign key (idgruponivel1)      references grupo (idgrupo);
alter table requisicaomudanca   add constraint fk_requisic_reference_grupo_01 foreign key (idgrupoatual)      references grupo (idgrupo);
alter table requisicaomudanca   add constraint fk_requisic_reference_calendar foreign key (idcalendario)      references calendario (idcalendario);
ALTER TABLE requisicaomudanca ADD COLUMN nivelurgencia VARCHAR(255) NULL  AFTER fase ;
alter table execucaomudanca   add constraint pk_execucaomudanca primary key (idexecucao);
alter table execucaomudanca add constraint fk_execucao_reference_bpm_inst foreign key (idinstanciafluxo) references bpm_instanciafluxo (idinstancia);
alter table execucaomudanca add constraint fk_execucao_reference_requisic foreign key (idrequisicaomudanca)  references requisicaomudanca (idrequisicaomudanca);
alter table execucaomudanca add constraint fk_execucao_reference_bpm_flux foreign key (idfluxo) references bpm_fluxo (idfluxo);	 
alter table  ocorrenciamudanca add constraint pk_ocorrenciamudanca primary key ( idocorrencia );
alter table  ocorrenciamudanca add constraint fk_ocorrenc_reference_bpm_item foreign key ( iditemtrabalho )   references  bpm_itemtrabalhofluxo  ( iditemtrabalho );
alter table  ocorrenciamudanca add constraint fk_ocorrenc_reference_justific foreign key ( idjustificativa )  references justificativasolicitacao  ( idjustificativa );
alter table  ocorrenciamudanca add constraint fk_ocorrenc_reference_requisic foreign key ( idrequisicaomudanca )  references  requisicaomudanca  ( idrequisicaomudanca ); 
alter table  requisicaomudancaitemconfiguracao  add constraint pk_requisicaomudancaitemconfig primary key ( idrequisicaomudancaitemconfiguracao );
alter table  requisicaomudancaitemconfiguracao   add constraint fk_requisic_reference_req foreign key ( idrequisicaomudanca )   references  requisicaomudanca  ( idrequisicaomudanca );
alter table  requisicaomudancaitemconfiguracao   add constraint fk_requisic_reference_itemconf foreign key ( iditemconfiguracao )   references  itemconfiguracao  ( iditemconfiguracao );
alter table  requisicaomudancaservico  add constraint pk_requisicaomudancaservico primary key ( idrequisicaomudancaservico );
alter table  requisicaomudancaservico    add constraint fk_requisic_reference_req foreign key ( idrequisicaomudanca )   references  requisicaomudanca  ( idrequisicaomudanca );
alter table  requisicaomudancaservico  add constraint fk_requisic_reference_servico foreign key ( idservico )  references  servico  ( idservico );	 
ALTER TABLE itemconfiguracao ADD COLUMN idproprietario int;
ALTER TABLE itemconfiguracao ADD column dataexpiracao date;
ALTER TABLE itemconfiguracao ADD CONSTRAINT fk_idproprietario foreign key (idproprietario) REFERENCES empregados (idempregado);
ALTER TABLE grupoitemconfiguracao ADD COLUMN email varchar(50);
ALTER TABLE itemconfiguracao ADD COLUMN versao varchar(50);

/*==============================================================*/
/* Inserção de Processamentobatch                           */
/*==============================================================*/
INSERT INTO PROCESSAMENTOBATCH  (IDPROCESSAMENTOBATCH, DESCRICAO, EXPRESSAOCRON, CONTEUDO, TIPO, SITUACAO) VALUES ((SELECT (IDPROCESSAMENTOBATCH + 1) AS c FROM processamentobatch WHERE rownum = 1 ORDER BY IDPROCESSAMENTOBATCH DESC) ,'Sincronização com o AD' ,  '* */3 * * *' , 'br.com.centralit.citcorpore.quartz.job.DisparaSincronizaAD' , 'C' , 'A' );
INSERT INTO processamentobatch (idprocessamentobatch, descricao, expressaocron,  conteudo, tipo, situacao) VALUES ((SELECT (IDPROCESSAMENTOBATCH + 1) AS c FROM processamentobatch WHERE rownum = 1 ORDER BY IDPROCESSAMENTOBATCH DESC), 'Verifica e avisa a data de expiração de um item de configuração', '0 45 23 * * ? *', 'br.com.centralit.citcorpore.quartz.job.VerificaValidadeLicenca','C', 'A');
INSERT INTO modelosemails (idmodeloemail, titulo, texto, situacao, identificador) VALUES (6,'Validade do Item configuração - ${IDENTIFICACAO}', 'Informamos que o item de configura&ccedil;&atilde;o identificado como ${IDENTIFICACAO} expirar&aacute; no dia&nbsp;${DATAEXPIRACAO}.<br /><br /><br />Atenciosamente,<br /><br />Central IT Tecnologia da Informa&ccedil;&atilde;o Ltda.<br />', 'A','');

/* Oracle */

CREATE TABLE   EVENTOITEMCONFIGURACAO (
	IDEVENTO INTEGER,
	IDITEMCONFIGURACAO INTEGER,
	PRIMARY KEY (IDEVENTO, IDITEMCONFIGURACAO),
	FOREIGN KEY (IDEVENTO) REFERENCES EVENTO(IDEVENTO),
	FOREIGN KEY (IDITEMCONFIGURACAO) REFERENCES ITEMCONFIGURACAO(IDITEMCONFIGURACAO)
) ;
CREATE TABLE MATRIZVISAO(
   IDMATRIZ             INTEGER NOT NULL,
   IDVISAO              INTEGER,
   IDOBJETONEGOCIO      INTEGER,
   IDCAMPOSOBJETONEGOCIO1 INTEGER,
   IDCAMPOSOBJETONEGOCIO2 INTEGER,
   IDCAMPOSOBJETONEGOCIO3 INTEGER,
   STRINFO              CLOB,
   NOMECAMPO1           VARCHAR2(255),
   NOMECAMPO2           VARCHAR2(255),
   NOMECAMPO3           VARCHAR2(255),
   DESCRICAOCAMPO1      VARCHAR2(255),
   DESCRICAOCAMPO2      VARCHAR2(255),
   DESCRICAOCAMPO3      VARCHAR2(255)
);
CREATE TABLE GRUPOITEMCONFIGURACAO(
	IDGRUPOITEMCONFIGURACAO INTEGER NOT NULL,
	NOMEGRUPOITEMCONFIGURACAO VARCHAR2(100) NOT NULL, 
	DATAINICIO DATE NOT NULL, 
	DATAFIM DATE, PRIMARY KEY (IDGRUPOITEMCONFIGURACAO)
) ;
CREATE TABLE ACORDOSERVICOCONTRATO(
   IDACORDOSERVICOCONTRATO INTEGER NOT NULL,
   IDACORDONIVELSERVICO INTEGER NOT NULL,
   IDSERVICOCONTRATO    INTEGER NOT NULL,
   DATACRIACAO          DATE NOT NULL,
   DATAINICIO           DATE,
   DATAFIM              DATE,
   DATAULTATUALIZ       DATE,
   DELETED              CHAR(1)
);
CREATE TABLE TIPOCOMPLEXIDADE(
    COMPLEXIDADE CHAR(1) NOT NULL,
    DESCTIPOCOMPLEXIDADE VARCHAR(50) NOT NULL
);
CREATE TABLE VALORAJUSTEGLOSA(
   IDSERVICOCONTRATO    INTEGER NOT NULL,
   IDACORDONIVELSERVICO INTEGER NOT NULL,
   QUANTIDADEFALHAS     INT,
   VALORAJUSTE          DECIMAL(10,2),
   DELETED              CHAR(1)
);
CREATE TABLE GLOSASERVICOCONTRATO(
   IDGLOSASERVICOCONTRATO INTEGER NOT NULL,
   IDSERVICOCONTRATO    INTEGER NOT NULL,
   QUANTIDADEGLOSA      INT,
   DATAFIM              DATE,
   PRIMARY KEY(IDGLOSASERVICOCONTRATO)
);
CREATE TABLE RESULTADOSESPERADOS(
   IDSERVICOCONTRATO   INTEGER  NOT NULL,
   IDACORDONIVELSERVICO INTEGER NOT NULL,
   DESCRICAORESULTADOS     VARCHAR2(1000),
   LIMITES          VARCHAR2(200),
   GLOSA            VARCHAR2(200),
   LIMITEGLOSA      VARCHAR2(200),
   DELETED              CHAR(1)
);
ALTER TABLE ACORDOSERVICOCONTRATO ADD PRIMARY KEY (IDACORDOSERVICOCONTRATO);
ALTER TABLE MATRIZVISAO ADD PRIMARY KEY (IDMATRIZ);
ALTER TABLE ITEMCONFIGURACAO drop (IDUNIDADE);
ALTER TABLE ITEMCONFIGURACAO drop IDEMPRESA;
ALTER TABLE ITEMCONFIGURACAO drop  IDUSUARIO;
ALTER TABLE ITEMCONFIGURACAO drop  SISTEMA;
ALTER TABLE ITEMCONFIGURACAO ADD IDGRUPOITEMCONFIGURACAO INT;
ALTER TABLE ITEMCONFIGURACAO ADD FOREIGN KEY (IDGRUPOITEMCONFIGURACAO) REFERENCES GRUPOITEMCONFIGURACAO (IDGRUPOITEMCONFIGURACAO);
ALTER TABLE ITEMCONFIGURACAO ADD CONSTRAINT FK_GRUPOITEMCONFIGURACAO FOREIGN KEY (IDGRUPOITEMCONFIGURACAO) REFERENCES GRUPOITEMCONFIGURACAO (IDGRUPOITEMCONFIGURACAO);
ALTER TABLE MATRIZVISAO ADD CONSTRAINT FK_REFERENCE_620 FOREIGN KEY (IDVISAO) REFERENCES VISAO (IDVISAO);
ALTER TABLE MATRIZVISAO ADD CONSTRAINT FK_REFERENCE_621 FOREIGN KEY (IDOBJETONEGOCIO)REFERENCES OBJETONEGOCIO (IDOBJETONEGOCIO) ;
ALTER TABLE MATRIZVISAO ADD CONSTRAINT FK_REFERENCE_622 FOREIGN KEY (IDCAMPOSOBJETONEGOCIO1) REFERENCES CAMPOSOBJETONEGOCIO (IDCAMPOSOBJETONEGOCIO) ;
ALTER TABLE MATRIZVISAO ADD CONSTRAINT FK_REFERENCE_623 FOREIGN KEY (IDCAMPOSOBJETONEGOCIO2) REFERENCES CAMPOSOBJETONEGOCIO (IDCAMPOSOBJETONEGOCIO) ;
ALTER TABLE MATRIZVISAO ADD CONSTRAINT FK_REFERENCE_624 FOREIGN KEY (IDCAMPOSOBJETONEGOCIO3) REFERENCES CAMPOSOBJETONEGOCIO (IDCAMPOSOBJETONEGOCIO) ;
ALTER TABLE ACORDONIVELSERVICO ADD CONTATOS CLOB;
ALTER TABLE ACORDOSERVICOCONTRATO ADD CONSTRAINT FK_REFERENCE_627 FOREIGN KEY (IDACORDONIVELSERVICO) REFERENCES ACORDONIVELSERVICO (IDACORDONIVELSERVICO);
ALTER TABLE ACORDOSERVICOCONTRATO ADD CONSTRAINT FK_REFERENCE_628 FOREIGN KEY (IDSERVICOCONTRATO) REFERENCES SERVICOCONTRATO (IDSERVICOCONTRATO);
ALTER TABLE MENU ADD MENURAPIDO VARCHAR2(45) NULL ;  
ALTER TABLE SOLICITACAOSERVICO ADD IDACORDONIVELSERVICO INTEGER;
ALTER TABLE TIPOCOMPLEXIDADE ADD PRIMARY KEY (COMPLEXIDADE);
INSERT INTO TIPOCOMPLEXIDADE (COMPLEXIDADE, DESCTIPOCOMPLEXIDADE) VALUES ('B', 'Baixa');
INSERT INTO TIPOCOMPLEXIDADE (COMPLEXIDADE, DESCTIPOCOMPLEXIDADE) VALUES ('I', 'Intermediária');
INSERT INTO TIPOCOMPLEXIDADE (COMPLEXIDADE, DESCTIPOCOMPLEXIDADE) VALUES ('M', 'Mediana');
INSERT INTO TIPOCOMPLEXIDADE (COMPLEXIDADE, DESCTIPOCOMPLEXIDADE) VALUES ('A', 'Alta');
INSERT INTO TIPOCOMPLEXIDADE (COMPLEXIDADE, DESCTIPOCOMPLEXIDADE) VALUES ('E', 'Especialista');
ALTER TABLE EMPREGADOS ADD (RAMAL VARCHAR(5) );
ALTER TABLE CONTATOSOLICITACAOSERVICO ADD (RAMAL VARCHAR(5) );
ALTER TABLE LOGDADOS ADD DATALOG TIMESTAMP;

--Resultado desse select utilizar nos valores do update abaixo
--SELECT IDCAMPOSOBJETONEGOCIO FROM CAMPOSOBJETONEGOCIO WHERE IDOBJETONEGOCIO IN (SELECT IDOBJETONEGOCIO FROM OBJETONEGOCIO WHERE NOMETABELADB = 'COMPLEXIDADE') AND NOMEDB IN ('IDCONTRATO', 'COMPLEXIDADE');

--UPDATE CAMPOSOBJETONEGOCIO SET SEQUENCE = 'N' WHERE IDCAMPOSOBJETONEGOCIO IN (2582, 2583);

/*==============================================================*/
/* Table:  SOLICITACAOSERVICOMUDANCA                             */
/*==============================================================*/      
      
CREATE TABLE SOLICITACAOSERVICOMUDANCA  (
   IDREQUISICAOMUDANCA INTEGER,
   IDSOLICITACAOSERVICO INTEGER
);


/*==============================================================*/
/* Table: "categoriamudanca"                                 */
/*==============================================================*/
CREATE TABLE CATEGORIAMUDANCA  (
   IDCATEGORIAMUDANCA INT NOT NULL,
   IDTIPOFLUXO   NUMBER(19,0),
   IDMODELOEMAILCRIACAOnumber NUMBER(19,0),
   IDMODELOEMAILFINALIZACAO NUMBER(19,0),
   IDMODELOEMAILACOES NUMBER(19,0),
   IDGRUPONIVEL1     NUMBER(19,0),
   IDGRUPOEXECUTOR  NUMBER(19,0),
   IDCALENDARIO      NUMBER(19,0),
   IDCATEGORIAMUDANCAPAI NUMBER(19,0),
   NOMECATEGORIA     VARCHAR2 (255) DEFAULT 'NULL',
   DATAINICIO         DATE,
   DATAFIM           DATE DEFAULT NULL,
   	PRIMARY KEY (IDCATEGORIAMUDANCA)
);
/*==============================================================*/
/* Table: "requisicaomudanca"                                   */
/*==============================================================*/	  
	  
CREATE TABLE REQUISICAOMUDANCA  (
   IDREQUISICAOMUDANCA INT NOT NULL,
   IDPROPRIETARIO     INT  NOT NULL,
   IDSOLICITANTE      INT  NOT NULL,
   TIPO               VARCHAR2 (25) DEFAULT 'NULL' ,
   IDCATEGORIAMUDANCA NUMBER(19,0) ,
   IDGRUPONIVEL1      NUMBER(19,0),
   IDGRUPOATUAL       NUMBER(19,0),
   IDCALENDARIO       NUMBER(19,0),
   MOTIVO             VARCHAR2 (255) DEFAULT 'NULL' ,
   NIVELIMPORTANCIANEGOCIO VARCHAR2 (255) DEFAULT 'NULL',
   CLASSIFICACAO     VARCHAR2 (255) DEFAULT 'NULL',
   NIVELIMPACTO      VARCHAR2 (255) DEFAULT 'NULL',
   ANALISEIMPACTO     VARCHAR2(3000) DEFAULT 'NULL',
   DATAHORACONCLUSAO  TIMESTAMP,
   DATAACEITACAO     DATE,
   DATAVOTACAO        DATE,
   DATAHORAINICIO     TIMESTAMP,
   DATAHORATERMINO    TIMESTAMP,
   TITULO            VARCHAR2 (255) DEFAULT 'NULL',
   DESCRICAO          VARCHAR2 (255) DEFAULT 'NULL',
   RISCO              VARCHAR2 (255) DEFAULT 'NULL',
   ESTIMATIVACUSTO   NUMBER(19,0),
   PLANOREVERSAO    VARCHAR2 (3000) DEFAULT 'NULL' ,
   STATUS          VARCHAR2 (45) DEFAULT 'NULL' ,
   PRIORIDADE        INT,
   ENVIAEMAILCRIACAO CHAR(1) ,
   ENVIAEMAILFINALIZACAO CHAR(1),
   ENVIAEMAILACOES   CHAR(1),
   EXIBIRQUADROMUDANCAS CHAR(1),
   SEQREABERTURA      SMALLINT,
   DATAHORACAPTURA    TIMESTAMP,
   DATAHORAREATIVACAO TIMESTAMP,
   DATAHORASUSPENSAO  TIMESTAMP,
   TEMPODECORRIDOHH   SMALLINT,
   TEMPODECORRIDOMM   SMALLINT,
   PRAZOHH            SMALLINT,
   PRAZOMM            SMALLINT,
   TEMPOATENDIMENTOHH SMALLINT,
   TEMPOATENDIMENTOMM SMALLINT,
   TEMPOATRASOHH      SMALLINT,
   TEMPOATRASOMM      SMALLINT,
   TEMPOCAPTURAHH     SMALLINT,
   TEMPOCAPTURAMM     SMALLINT,
   FASE               VARCHAR2 (20) DEFAULT 'NULL' ,
  PRIMARY KEY (IDREQUISICAOMUDANCA)
);
/*==============================================================*/
/* Table:  EXECUCAOMUDANCA                             */
/*==============================================================*/
CREATE TABLE EXECUCAOMUDANCA  (
   IDEXECUCAO         INT NOT NULL,
   IDINSTANCIAFLUXO   NUMBER(19,0) NOT NULL,
   IDREQUISICAOMUDANCA NUMBER(38,0) NOT NULL,
   IDFLUXO           NUMBER(19,0) NOT NULL,
   SEQREABERTURA     SMALLINT,
   PRIMARY KEY (IDEXECUCAO)
);
/*==============================================================*/
/* Table:  ocorrenciamudanca                                    */
/*==============================================================*/
	  
CREATE TABLE OCORRENCIAMUDANCA  (
   IDOCORRENCIA     INT NOT NULL,
    IDITEMTRABALHO      NUMBER(19,0),
    IDJUSTIFICATIVA     NUMBER(19,0),
    IDREQUISICAOMUDANCA  NUMBER(19,0),
    DATAREGISTRO        DATE,
    HORAREGISTRO      VARCHAR2 (5) DEFAULT 'NULL' ,
    REGISTRADOPOR     VARCHAR2 (100) DEFAULT 'NULL' ,
    DESCRICAO        VARCHAR2 (200) DEFAULT 'NULL' ,
    DATAINICIO          DATE,
    DATAFIM             DATE,
    COMPLEMENTOJUSTIFICATIVA   	CLOB,
    DADOSMUDANCA         	CLOB,
    INFORMACOESCONTATO   	CLOB,
    CATEGORIA        VARCHAR2 (20) DEFAULT 'NULL'   ,
    ORIGEM              CHAR(1),
    TEMPOGASTO          SMALLINT,
    OCORRENCIA           	CLOB,
    PRIMARY KEY (IDOCORRENCIA)
);
/*==============================================================*/
/* Table:  requisicaomudancaitemconfigura                       */
/*==============================================================*/  
CREATE TABLE  RQMUDANCAITEMCONFIGURACAO  (
    IDRQMUDANCAITEMCONFIGURACAO  INT NOT NULL,
    IDREQUISICAOMUDANCA  INT NOT NULL,
    IDITEMCONFIGURACAO  NUMBER(19,0),
    DESCRICAO           VARCHAR2 (100) DEFAULT 'NULL',
    PRIMARY KEY (IDRQMUDANCAITEMCONFIGURACAO)
);
/*==============================================================*/
/* Table:  requisicaomudancaservico                             */
/*==============================================================*/   
CREATE TABLE  REQUISICAOMUDANCASERVICO   (
    IDREQUISICAOMUDANCASERVICO  INT  NOT NULL,
    IDREQUISICAOMUDANCA  INT,
    IDSERVICO          NUMBER(19,0),
    PRIMARY KEY (IDREQUISICAOMUDANCASERVICO)
);
ALTER TABLE CATEGORIAMUDANCA ADD CONSTRAINT FK_CATEGORI_REFERENCE_BPM_TIPO FOREIGN KEY (IDTIPOFLUXO)    REFERENCES BPM_TIPOFLUXO (IDTIPOFLUXO);	  
ALTER TABLE CATEGORIAMUDANCA  ADD CONSTRAINT FK_CATEGORI_REFERENCE_MODELOSE FOREIGN KEY (IDMODELOEMAILCRIACAO) REFERENCES MODELOSEMAILS (IDMODELOEMAIL);
ALTER TABLE CATEGORIAMUDANCA  ADD CONSTRAINT IDMODELOEMAILFINALIZACAO FOREIGN KEY (IDMODELOEMAILFINALIZACAO)  REFERENCES MODELOSEMAILS (IDMODELOEMAIL);
ALTER TABLE CATEGORIAMUDANCA  ADD CONSTRAINT IDMODELOEMAILACOES FOREIGN KEY (IDMODELOEMAILACOES) REFERENCES MODELOSEMAILS (IDMODELOEMAIL);
ALTER TABLE CATEGORIAMUDANCA  ADD CONSTRAINT FK_CATEGORI_REFERENCE_GRUPO FOREIGN KEY (IDGRUPONIVEL1) REFERENCES GRUPO (IDGRUPO); 
ALTER TABLE CATEGORIAMUDANCA ADD CONSTRAINT IDGRUPOEXECUTOR FOREIGN KEY (IDGRUPOEXECUTOR) REFERENCES GRUPO (IDGRUPO);
ALTER TABLE CATEGORIAMUDANCA ADD CONSTRAINT FK_CATEGORI_REFERENCE_CALENDAR FOREIGN KEY (IDCALENDARIO) REFERENCES CALENDARIO (IDCALENDARIO);
ALTER TABLE REQUISICAOMUDANCA  ADD CONSTRAINT FK_REQUISIC_REf_CAT FOREIGN KEY (IDCATEGORIAMUDANCA) REFERENCES CATEGORIAMUDANCA (IDCATEGORIAMUDANCA);
ALTER TABLE REQUISICAOMUDANCA   ADD CONSTRAINT FK_REQUISIC_REFERENCE_GRUPO FOREIGN KEY (IDGRUPONIVEL1)     REFERENCES GRUPO (IDGRUPO);
ALTER TABLE REQUISICAOMUDANCA  ADD CONSTRAINT FK_REQUISIC_REFERENCE_GRUPO_01 FOREIGN KEY (IDGRUPOATUAL)   REFERENCES GRUPO (IDGRUPO);
ALTER TABLE REQUISICAOMUDANCA   ADD CONSTRAINT FK_REQUISIC_REFERENCE_CALENDAR FOREIGN KEY (IDCALENDARIO)      REFERENCES CALENDARIO (IDCALENDARIO);
ALTER TABLE REQUISICAOMUDANCA ADD COLUMN NIVELURGENCIA VARCHAR2(255);
ALTER TABLE REQUISICAOMUDANCA MODIFY NIVELURGENCIA DEFAULT NULL;
ALTER TABLE EXECUCAOMUDANCA ADD CONSTRAINT FK_EXECUCAO_REFERENCE_BPM_INST FOREIGN KEY (IDINSTANCIAFLUXO) REFERENCES BPM_INSTANCIAFLUXO (IDINSTANCIA);
ALTER TABLE EXECUCAOMUDANCA ADD CONSTRAINT FK_EXECUCAO_REFERENCE_REQUISIC FOREIGN KEY (IDREQUISICAOMUDANCA)  REFERENCES REQUISICAOMUDANCA (IDREQUISICAOMUDANCA);
ALTER TABLE EXECUCAOMUDANCA ADD CONSTRAINT FK_EXECUCAO_REFERENCE_BPM_FLUX FOREIGN KEY (IDFLUXO) REFERENCES BPM_FLUXO (IDFLUXO);	 
ALTER TABLE  OCORRENCIAMUDANCA    ADD CONSTRAINT FK_OCORRENC_REFERENCE_BPM_ITEM FOREIGN KEY ( IDITEMTRABALHO )      REFERENCES  BPM_ITEMTRABALHOFLUXO  ( IDITEMTRABALHO );
ALTER TABLE  OCORRENCIAMUDANCA    ADD CONSTRAINT FK_OCORRENC_REFERENCE_JUSTIFIC FOREIGN KEY ( IDJUSTIFICATIVA )       REFERENCES JUSTIFICATIVASOLICITACAO  ( IDJUSTIFICATIVA );
ALTER TABLE  OCORRENCIAMUDANCA     ADD CONSTRAINT FK_OCORRENC_REFERENCE_REQUISIC FOREIGN KEY ( IDREQUISICAOMUDANCA )     REFERENCES  REQUISICAOMUDANCA  ( IDREQUISICAOMUDANCA );  
ALTER TABLE  RQMUDANCAITEMCONFIGURACAO   ADD CONSTRAINT FK_REQUISIC_REFERENCE_REQ FOREIGN KEY ( IDREQUISICAOMUDANCA )       REFERENCES  REQUISICAOMUDANCA  ( IDREQUISICAOMUDANCA );
ALTER TABLE  RQMUDANCAITEMCONFIGURACAO    ADD CONSTRAINT FK_REQUISIC_REFERENCE_ITEMCONF FOREIGN KEY ( IDITEMCONFIGURACAO )     REFERENCES  ITEMCONFIGURACAO  ( IDITEMCONFIGURACAO ); 
ALTER TABLE  REQUISICAOMUDANCASERVICO   ADD CONSTRAINT FK_REQUISIC_REFERENCE_REQ FOREIGN KEY ( IDREQUISICAOMUDANCA )      REFERENCES  REQUISICAOMUDANCA  ( IDREQUISICAOMUDANCA );
ALTER TABLE  REQUISICAOMUDANCASERVICO    ADD CONSTRAINT FK_REQUISIC_REFERENCE_SERVICO FOREIGN KEY ( IDSERVICO )      REFERENCES  SERVICO  ( IDSERVICO );	  
ALTER TABLE SOLICITACAOSERVICOMUDANCA ADD CONSTRAINT FK_SOLICITA_REFERENCE_REQUISIC FOREIGN KEY (IDREQUISICAOMUDANCA)     REFERENCES REQUISICAOMUDANCA (IDREQUISICAOMUDANCA);
ALTER TABLE SOLICITACAOSERVICOMUDANCA  ADD CONSTRAINT FK_SOLICITA_REFERENCE_SOLPRO FOREIGN KEY (IDSOLICITACAOSERVICO)    REFERENCES SOLICITACAOSERVICO (IDSOLICITACAOSERVICO);
/*==============================================================*/
/* Alteracao Itemconfiguracao 		                           */
/*==============================================================*/
ALTER TABLE ITEMCONFIGURACAO ADD IDPROPRIETARIO INT;
ALTER TABLE ITEMCONFIGURACAO ADD DATAEXPIRACAO DATE;
ALTER TABLE ITEMCONFIGURACAO ADD CONSTRAINT FK_IDPROPRIETARIO FOREIGN KEY (IDPROPRIETARIO) REFERENCES EMPREGADOS (IDEMPREGADO);
ALTER TABLE GRUPOITEMCONFIGURACAO ADD EMAIL VARCHAR(50);
ALTER TABLE ITEMCONFIGURACAO ADD VERSAO VARCHAR(50);
/*==============================================================*/
/* Inserção de Processamentobatch                           */
/*==============================================================*/
INSERT INTO PROCESSAMENTOBATCH  (IDPROCESSAMENTOBATCH, DESCRICAO, EXPRESSAOCRON, CONTEUDO, TIPO, SITUACAO) VALUES ((SELECT (IDPROCESSAMENTOBATCH + 1) AS c FROM processamentobatch WHERE rownum = 1 ORDER BY IDPROCESSAMENTOBATCH DESC) ,'Sincronização com o AD' ,  '* */3 * * *' , 'br.com.centralit.citcorpore.quartz.job.DisparaSincronizaAD' , 'C' , 'A' );
INSERT INTO processamentobatch (idprocessamentobatch, descricao, expressaocron,  conteudo, tipo, situacao) VALUES((SELECT (IDPROCESSAMENTOBATCH + 1) AS c FROM processamentobatch WHERE rownum = 1 ORDER BY IDPROCESSAMENTOBATCH DESC), 'Verifica e avisa a data de expiração de um item de configuração', '0 45 23 * * ? *', 'br.com.centralit.citcorpore.quartz.job.VerificaValidadeLicenca','C', 'A');
INSERT INTO modelosemails (idmodeloemail, titulo, texto, situacao, identificador) VALUES (6,'Validade do Item configuração - ${IDENTIFICACAO}','Informamos que o item de configura&ccedil;&atilde;o identificado como ${IDENTIFICACAO} expirar&aacute; no dia&nbsp;${DATAEXPIRACAO}.<br /><br /><br />Atenciosamente,<br /><br />Central IT Tecnologia da Informa&ccedil;&atilde;o Ltda.<br />','A','');
ALTER TABLE categoriaservico ADD datainicio DATE NOT NULL;
ALTER TABLE categoriaservico ADD datafim DATE;


/* DINAMIC VIEWS */

Visão alterada: Acordo de Nível de Serviço (Contrato)
Acrescentar em Scripts
Lado Cliente:
Ao inserir e Ao Atualizar:
mapFields.put("RESULTADOSESPERADOSSERIALIZADO",document.form.RESULTADOSESPERADOSSERIALIZADO.value);
Ao recuperar:
carregaResultados();
-----------------------------------------------------------------------------------------------------------------
Lado Servidor:
Ao inserir:
var importNames = JavaImporter();
importNames.importPackage(Packages.br.com.centralit.citcorpore.negocio);
var acordoNivelServicoContratoService = new importNames.AcordoNivelServicoContratoServiceEjb();
var flag = acordoNivelServicoContratoService.verificaDataContrato(mapFields);
if(!flag){
      dinamicViewDto.abortFuncaoPrincipal = true;
      dinamicViewDto.msgRetorno =  "O período de vigência do SLA deve estar dentro do período de vigência do contrato!";
}

-----------------------------------------------------------------------------------------------------------------

Visão alterada: Atividades do serviço (conforme contrato)

O script abaixo deve ser adicionado em:

Servidor:
- Ao inserir

mapFields.put("IDSERVICOCONTRATO", mapFields.get("SESSION.DINAMICVIEWS_SAVEINFO"));

var importNames = JavaImporter();
importNames.importPackage(Packages.br.com.centralit.citcorpore.negocio);
var atividadesServicoContratoService = new importNames.AtividadesServicoContratoServiceEjb();
var tipoCusto = mapFields.get("TIPOCUSTO");
if(tipoCusto=='F'){
 var flag = atividadesServicoContratoService.verificaComplexidade(mapFields);
 if(!flag){
      dinamicViewDto.abortFuncaoPrincipal = true;
      dinamicViewDto.msgRetorno = "Os valores das complexidades não foram cadastrados para esse contrato.";
 }
 var custoCalculado = atividadesServicoContratoService.calculaFormula(mapFields);
 mapFields.put("CUSTOATIVIDADE", custoCalculado);
}

/* DIVERSOS */

Adicionar no campo Tipo de Acordo a seguinte opção:
Valor da opção: R
Descrição da opção: OS - Resultados esperados
Deve-se clicar duas vezes no campo Tipo de Acordo. Ao abrir a popup preencher os campos Valor da opção e Descrição da opção e clicar em Adicionar Opção.

-----------------------------------------------------------------------------------------------------------------

DETALHES IMPORTANTES:

A tabela TipoServico deve ficar idêntica a tabela do banco de desenvolvimento bsb_desenvolvimento (Já validado com Emauri).
IDTipoServico NomeTipoServico
1			  A DEFINIR
2			  ROTINEIRA
3			  SUPORTE
4			  DEMANDA


A base utilizada para desenvolver foi a citsmart_bsb_desenvolvimento nela contém as configurações da DinamicView se caso necessitar ver como está configurado.

-----------------------------------------------------------------------------------------------------------------

--SELECT idcamposobjetonegocio from camposobjetonegocio where idobjetonegocio IN (SELECT idobjetonegocio from objetonegocio where nometabeladb = 'COMPLEXIDADE') AND nomedb IN ('IDCONTRATO', 'COMPLEXIDADE')
--UPDATE camposobjetonegocio SET sequence = 'N' WHERE idcamposobjetonegocio IN (2582, 2583)