USE [TryNFeOnline]
GO

ALTER TABLE [dbo].[AgendaCompromissos] ADD 
[idAgendamentoReservaHorario] [int] NULL
GO
ALTER TABLE [dbo].[MDeNotasXML] ADD 
[idnSincronizadoDominio] [bit] NULL,
[IDEnvioXMLDominio] [varchar] (100) COLLATE Latin1_General_CI_AS NULL
GO
ALTER TABLE [dbo].[NFArquivos] ADD 
[idnArquivoXMLEnviadoDominio] [bit] NULL,
[idnCancelamentoEnviadoDominio] [bit] NULL,
[IDEnvioXMLDominio] [varchar] (100) COLLATE Latin1_General_CI_AS NULL,
[IDEnvioXMLCancelamentoDominio] [varchar] (100) COLLATE Latin1_General_CI_AS NULL,
[arquivoXMLCancelamento] [varchar] (max) COLLATE Latin1_General_CI_AS NULL
GO
ALTER TABLE [dbo].[NFPlataformaContadorEventos] ADD 
[idnSistemaDominio] [bit] NULL,
[idMDeNotasXML] [int] NULL
GO
ALTER TABLE [dbo].[RegistroAtividades] ADD 
[idAbastecimento] [int] NULL
GO
ALTER TABLE [dbo].[veiculoAbastecimento] ADD 
[idnCancelado] [bit] NULL,
[codigoApp] [int] NULL
GO
CREATE TABLE [dbo].[IntegracaoDominio]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[idEmitente] [int] NOT NULL,
	[chaveCliente] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	[accessToken] [varchar] (2000) COLLATE Latin1_General_CI_AS NULL,
	[accessTokenExpiration] [datetime] NOT NULL,
	[integrationKey] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	[idnSincronizacaoDesabilitada] [bit] NOT NULL,
	CONSTRAINT [PK_IntegracaoDominio] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AgendamentoReservaHorarios]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[idAgendamentoReserva] [int] NOT NULL,
	[idAgendamentoHorario] [int] NOT NULL,
	[valor] [decimal] (18,4) NULL,
	CONSTRAINT [PK_AgendamentoReservaHorarios] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AgendamentoReserva]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[dataHora] [datetime] NOT NULL,
	[idParceiro] [int] NOT NULL,
	[observacoes] [varchar] (max) COLLATE Latin1_General_CI_AS NULL,
	[idnCancelado] [bit] NULL,
	[motivoCancelamento] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	[valorTotal] [decimal] (18,4) NULL,
	[reservadoAte] [date] NULL,
	CONSTRAINT [PK_AgendamentoReserva] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AgendamentoHorarioBloqueios]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[idAgendamentoHorario] [int] NULL,
	[motivoBloqueio] [varchar] (300) COLLATE Latin1_General_CI_AS NULL,
	[validoAte] [datetime] NULL,
	CONSTRAINT [PK_AgendamentoHorarioBloqueios] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[AgendamentoHorario]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[idAgendamento] [int] NULL,
	[diaSemana] [int] NULL,
	[horaInicio] [time] NULL,
	[horaFim] [time] NULL,
	[valorReserva] [decimal] (18,4) NULL,
	[idnDesativado] [bit] NULL,
	CONSTRAINT [PK_AgendamentoHorario] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Agendamento]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[descricao] [varchar] (300) COLLATE Latin1_General_CI_AS NULL,
	[valorReserva] [decimal] (18,4) NULL,
	[observacoes] [varchar] (max) COLLATE Latin1_General_CI_AS NULL,
	[idnBaixado] [bit] NULL,
	[minutosReserva] [int] NULL,
	[minutosIntervaloProximaReserva] [int] NULL,
	[horaInicioPrimeiraReserva] [time] NULL,
	[horaFimUltimaReserva] [time] NULL,
	[horaInicioIgnorar] [time] NULL,
	[horaFimIgnorar] [time] NULL,
	[diasSemanaIgnorar] [varchar] (25) COLLATE Latin1_General_CI_AS NULL,
	CONSTRAINT [PK_Agendamento] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE FUNCTION [dbo].[AgendamentoHorarios] 
(
	@dataConsulta date
)
RETURNS 
@Resultado TABLE 
(
		idAgendamentoHorario int,
		dscAgendamento varchar(300),
		diaSemana int,
		idAgendamento int,
		horaInicio time(7),
		horaFim time(7),
		idnDesativado bit,
		valorReserva decimal(18,4),
		motivoBloqueio varchar(300),
		idAgendamentoHorarioBloqueio int,
		bloqueioValidoAte date,
		idAgendamentoReserva int,
		idParceiro int,
		razaosocial varchar(60)

)
AS
BEGIN
	declare @diaSemana int = (select datepart(WEEKDAY, @dataConsulta)) -1;

	declare @ResultadoTemp TABLE
	(
		idAgendamentoHorarioInf int,
		dscAgendamento varchar(300),
		diaSemana int,
		idAgendamento int,
		horaInicio time(7),
		horaFim time(7),
		idnDesativado bit,
		valorReserva decimal(18,4),
		motivoBloqueio varchar(300),
		idAgendamentoHorarioBloqueio int,
		bloqueioValidoAte date,
		idAgendamentoReserva int,
		idParceiro int,
		razaosocial varchar(60)
	)
	--select @diaSemana
	INSERT into @ResultadoTemp
	select ah.id as idAgendamentoHorario, ag.descricao as dscAgendamento, ah.diaSemana, ah.idAgendamento,
	ah.horaInicio, ah.horaFim, ah.idnDesativado, 
	(case when coalesce(ah.valorReserva, 0) > 0 then ah.valorReserva else coalesce(ag.valorReserva, 0) end) as valorReserva,
	agb.motivoBloqueio, agb.id as idAgendamentoHorarioBloqueio, agb.validoAte,
	null, null, null
	from AgendamentoHorario ah
	inner join Agendamento ag on ag.id = ah.idAgendamento
	left join AgendamentoHorarioBloqueios agb on agb.idAgendamentoHorario = ah.id and agb.validoAte >= @dataConsulta
	where (ah.diaSemana = @diaSemana)
	and (coalesce(ah.idnDesativado, 0) = 0)

	update @ResultadoTemp set
	idAgendamentoReserva = (
	select arh.idAgendamentoReserva 
	from AgendamentoReservaHorarios arh 
	inner join AgendamentoReserva ar on ar.id = arh.idAgendamentoReserva
	where (arh.idAgendamentoHorario = idAgendamentoHorarioInf)
	and (coalesce(ar.idnCancelado, 0) = 0)
	)

	INSERT into @Resultado
	select r.idAgendamentoHorarioInf as idAgendamentoHorario, r.dscAgendamento, r.diaSemana, r.idAgendamento,
	r.horaInicio, r.horaFim, r.idnDesativado, 
	r.valorReserva,
	r.motivoBloqueio, r.idAgendamentoHorarioBloqueio, r.bloqueioValidoAte,
	r.idAgendamentoReserva, pa.id as idParceiro, pa.razaosocial
	from @ResultadoTemp r
	left join AgendamentoReserva ar on ar.id = r.idAgendamentoReserva
	left join parceiro pa on pa.id = ar.idParceiro
	
RETURN 
END
GO
ALTER TABLE [dbo].[AgendamentoHorarioBloqueios] ADD CONSTRAINT [FK_AgendamentoHorarioBloqueios_AgendamentoHorario] FOREIGN KEY
	(
		[idAgendamentoHorario]
	)
	REFERENCES [dbo].[AgendamentoHorario]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[IntegracaoDominio] ADD CONSTRAINT [FK_IntegracaoDominio_emitente] FOREIGN KEY
	(
		[idEmitente]
	)
	REFERENCES [dbo].[emitente]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[AgendamentoReserva] ADD CONSTRAINT [FK_AgendamentoReserva_parceiro] FOREIGN KEY
	(
		[idParceiro]
	)
	REFERENCES [dbo].[parceiro]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[AgendamentoReservaHorarios] ADD CONSTRAINT [FK_AgendamentoReservaHorarios_AgendamentoHorario] FOREIGN KEY
	(
		[idAgendamentoHorario]
	)
	REFERENCES [dbo].[AgendamentoHorario]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[AgendamentoReservaHorarios] ADD CONSTRAINT [FK_AgendamentoReservaHorarios_AgendamentoReserva] FOREIGN KEY
	(
		[idAgendamentoReserva]
	)
	REFERENCES [dbo].[AgendamentoReserva]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[AgendamentoHorario] ADD CONSTRAINT [FK_AgendamentoHorario_Agendamento] FOREIGN KEY
	(
		[idAgendamento]
	)
	REFERENCES [dbo].[Agendamento]
	(
		[id]
	)
GO
INSERT INTO [dbo].[configuracaoNovo] ([nomeParametro],[descricaoSimplificada],[descricaoDetalhada],[tipoValor],[valor],[grupo],[subgrupo],[tamanhoValorMaximo],[idnParametroMultilinhas],[idnParametroRadio],[idnParametroSelecaoPasta],[idnPermiteAlteracaoApenasPorAdmins],[idnCampoSenha],[tabelaSelecao],[filtroSelecao],[validacaoRegularExpression],[idnPermiteSelecaoMultiplaOpcoes])
     VALUES('idnModeloConembEDI','Selecione o modelo/Versão do EDI Conemb','','varchar','false','CTe','Configurações do CTe',null,0,0,0,0,0,null,null,null,null)
GO
INSERT INTO [dbo].[ConfiguracaoNovoOpcoes] ([nomeParametro],[descricao],[valor]) VALUES ('idnModeloConembEDI','Versão 3.0','3.0')
INSERT INTO [dbo].[ConfiguracaoNovoOpcoes] ([nomeParametro],[descricao],[valor]) VALUES ('idnModeloConembEDI','Versão 3.1','3.1')
GO
SET IDENTITY_INSERT [dbo].[Telas] ON 
GO
INSERT [dbo].[Telas] ([id], [descricao], [controle], [imagem], [teclaAtalho1], [teclaAtalho2], [idnPermiteAbrirVarias], [qtdVezesAberta], [dataUltimaAbertura], [idnRestricaoAcesso], [idnBloquearAcessoPlanoBasico], [parametrosControle]) VALUES (381, N'Cadastrar Agendamento', N'Cadastros.ucCadAgendamento, Cadastros, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', NULL, NULL, NULL, NULL, 3, CAST(N'2023-06-01T11:01:18.947' AS DateTime), NULL, NULL, NULL)
GO
INSERT [dbo].[Telas] ([id], [descricao], [controle], [imagem], [teclaAtalho1], [teclaAtalho2], [idnPermiteAbrirVarias], [qtdVezesAberta], [dataUltimaAbertura], [idnRestricaoAcesso], [idnBloquearAcessoPlanoBasico], [parametrosControle]) VALUES (382, N'Consultar Agendamentos', N'Cadastros.ucConsAgendamento, Cadastros, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', NULL, NULL, NULL, NULL, 3, CAST(N'2023-06-01T11:14:34.787' AS DateTime), NULL, NULL, NULL)
GO
INSERT [dbo].[Telas] ([id], [descricao], [controle], [imagem], [teclaAtalho1], [teclaAtalho2], [idnPermiteAbrirVarias], [qtdVezesAberta], [dataUltimaAbertura], [idnRestricaoAcesso], [idnBloquearAcessoPlanoBasico], [parametrosControle]) VALUES (383, N'Consultar Horários', N'Cadastros.ucAgendamentoSelecionarHorario, Cadastros, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', NULL, NULL, NULL, NULL, 11, CAST(N'2023-06-01T14:24:52.800' AS DateTime), NULL, NULL, NULL)
GO
INSERT [dbo].[Telas] ([id], [descricao], [controle], [imagem], [teclaAtalho1], [teclaAtalho2], [idnPermiteAbrirVarias], [qtdVezesAberta], [dataUltimaAbertura], [idnRestricaoAcesso], [idnBloquearAcessoPlanoBasico], [parametrosControle]) VALUES (384, N'Reserva de Horários', N'Cadastros.ucAgendamentoReserva, Cadastros, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
GO
INSERT [dbo].[Telas] ([id], [descricao], [controle], [imagem], [teclaAtalho1], [teclaAtalho2], [idnPermiteAbrirVarias], [qtdVezesAberta], [dataUltimaAbertura], [idnRestricaoAcesso], [idnBloquearAcessoPlanoBasico], [parametrosControle]) VALUES (385, N'Consultar horários gerados', N'Cadastros.ucAgendamentoHorarioBloqueios, Cadastros, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', NULL, NULL, NULL, NULL, 2, CAST(N'2023-06-01T11:39:24.477' AS DateTime), NULL, NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[Telas] OFF
GO
SET IDENTITY_INSERT [dbo].[MenuItens] ON 
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (497, 1, N'-', NULL, 1, 9, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (498, 1, N'Agendamento', NULL, 1, 10, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (499, 1, N'Consultar Horários disponíveis', 383, 498, 0, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (500, 1, N'Reservar Horários', 384, 498, 1, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (501, 1, N'-', NULL, 498, 2, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (502, 1, N'Cadastrar Agendamento', 381, 498, 3, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (503, 1, N'Consultar Agendamentos', 382, 498, 4, 1, NULL, N'')
GO
INSERT [dbo].[MenuItens] ([id], [idMenu], [descricao], [idTela], [idMenuItemPai], [ordem], [idnVisivel], [md5], [imagem]) VALUES (504, 1, N'Consultar horários gerados', 385, 498, 5, 1, NULL, N'')
GO
SET IDENTITY_INSERT [dbo].[MenuItens] OFF
GO
INSERT [dbo].[configuracaoNovo] ([nomeParametro], [descricaoSimplificada], [descricaoDetalhada], [tipoValor], [valor], [grupo], [subgrupo], [tamanhoValorMaximo], [idnParametroMultilinhas], [idnParametroRadio], [idnParametroSelecaoPasta], [idnPermiteAlteracaoApenasPorAdmins], [idnCampoSenha], [tabelaSelecao], [filtroSelecao], [validacaoRegularExpression], [dataInclusao], [idnPermiteSelecaoMultiplaOpcoes]) VALUES (N'idnAtualizarFornecedorProdutoImportacaoXml', N'Atualizar o fornecedor no produto', N'Ao marcar esta opção, o sistema vai atualizar o cadastro do produto com o Fornecedor da nota fiscal importada', N'bool', null, N'Importação da NFe', N'Configurações da Importação do XML', NULL, 0, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL)
GO
INSERT INTO [dbo].[configuracaoNovo]([nomeParametro],[descricaoSimplificada],[descricaoDetalhada],[tipoValor],[valor],[grupo],[subgrupo],[tamanhoValorMaximo],[idnParametroMultilinhas],[idnParametroRadio],[idnParametroSelecaoPasta],[idnPermiteAlteracaoApenasPorAdmins],[idnCampoSenha],[tabelaSelecao],[filtroSelecao],[validacaoRegularExpression]) VALUES ('idnIncluirDataAgendamentoAoCadastrarContato', 'Inserir a Data do próximo agendamento no cadastro de um Contato', 'Ao cadastrar um novo Contato para o Parceiro, realizando o agendamento do próximo contato com esta opção selecionada, a Data será incluída na mensagem automaticamente.', 'bool', 'False', 'Geral', 'Configurações do Parceiro',null,0,0,0,0,0,null,null,null)
GO
UPDATE veiculoAbastecimento SET idnCancelado = 0
GO
UPDATE configuracaoNovo SET valor = '5' WHERE nomeParametro = 'versaoMinimaAppOSTransporte'
GO
UPDATE MenuItens SET descricao = 'Plataforma do Contador / Domínio' WHERE idTela = 308
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO, REVISAO) VALUES(495, 753, GETDATE(),1);