USE [TryNFeOnline]
GO

ALTER TABLE [dbo].[AgendaCompromissos] ADD 
[dataUltimaAlteracao] [datetime] NULL
GO
ALTER TABLE [dbo].[pedido] ADD 
[idnComandaBloqueada] [bit] NULL
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER FUNCTION [dbo].[NumerariosPagamentoDescricao]
(
	@idPagamentoInf int
)
RETURNS 
@Resultado TABLE 
(
	descricao varchar(10)
)
AS
BEGIN
	declare @Composicoes as TABLE
	(
		idnBanco bit,
		idnCartao bit,
		idnCaixa bit
	)
		
	INSERT INTO @Composicoes
	select 
	(case when pc.idBancoMovimento is not null then 1 else 0 end),
	(case when pc.idCartaoMovimento is not null then 1 else 0 end),
	(case when pc.idChequeMovimento is not null or (pc.idBancoMovimento is null and pc.idCartaoMovimento is null) then 1 else 0 end)
	from PagamentoComposicao pc
	inner join Pagamento p on p.id = pc.idPagamento
	where (p.id = @idPagamentoInf)
	
	declare @totalCaixa int = (select count(*) from @Composicoes where idnCaixa = 1)
	declare @totalBanco int = (select count(*) from @Composicoes where idnBanco = 1)
	declare @totalCartao int = (select count(*) from @Composicoes where idnCartao = 1)
	
	IF (@totalCaixa > 0 and @totalBanco > 0 and @totalCartao > 0)
	BEGIN
		INSERT INTO @Resultado (descricao) values ('CX/BCO/CAR')
		END
		ELSE
		IF (@totalCaixa > 0 and @totalBanco > 0)
		BEGIN
			INSERT INTO @Resultado (descricao) values ('CX/BCO')
			END
			ELSE
			IF (@totalCaixa > 0 and @totalCartao > 0)
			BEGIN
				INSERT INTO @Resultado (descricao) values ('CX/CAR')
				END
				ELSE
				IF (@totalBanco > 0 and @totalCartao > 0)
				BEGIN
					INSERT INTO @Resultado (descricao) values ('BCO/CAR')
					END
					ELSE
					IF (@totalBanco > 0)
					BEGIN
						INSERT INTO @Resultado (descricao) values ('BCO')
						END
						ELSE
						IF (@totalCartao > 0)
						BEGIN
							INSERT INTO @Resultado (descricao) values ('CAR')
							END
							ELSE
							IF (@totalCaixa > 0)
							BEGIN
								INSERT INTO @Resultado (descricao) values ('CX')
								END
								ELSE
								BEGIN
									INSERT INTO @Resultado (descricao) values (null)
									END
	
	RETURN 
END
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Função que irá calcular a comissão de forma que a difrença entre o valor da venda o valor tabelado nas varições será a comissão>
-- =============================================
ALTER FUNCTION [dbo].[comissaoVendedorDiferencialTabelado]
(	
	@idVendedorInf int = 0,
	@idEmitente int = 0
)
RETURNS 
@Resultado TABLE 
(
	notafiscalProduto_id int,
	vendedor_id int,
	vendedor_nome varchar(60),
	fatura_id int,
	valorFatura decimal(18,4),
	valorComissaoDiferencial decimal(18,4),
	dataFatura datetime,
	condicaoPagamento_id int,
	condicaoPagamentoDescricao varchar(200),
	precoVariacao_id int
)
AS
BEGIN

	declare @idVendedor int = 0;

	if (@idVendedorInf > 0)
		SET @idVendedor = @idVendedorInf;

	Declare @Vendas TABLE 
	(
		notafiscalProduto_id int,
		vendedor_id int,
		vendedor_nome varchar(60),
		fatura_id int,
		valorFaturaParcela decimal(18,4),
		dataFatura datetime,
		condicaoPagamento_id int,
		condicaoPagamentoDescricao varchar(200),
		variacaoPreco_id int,
		notafiscal_id int,
		produto_id int,
		precoProdutoVenda decimal(18,4),
		precoProdutoVendido decimal(18,4),
		quantidadeVendida decimal(18,4),
		quantidade decimal (18,4)
	)

	BEGIN
		insert into @Vendas 
		select DISTINCT nfp.id, f.idVendedor, ve.razaosocial, f.id, f.valor, f.dataFatura, f.idCondicaoPagamento, cp.descricao, 0, 
		nfp.idNotaFiscal, nfp.idProduto, 0, nfp.vuncom, nfp.qcom - coalesce(nfp.vdesc, 0) + coalesce(nfp.voutro,0), nfp.qcom
		from fatura f
		inner join FaturaParcela fp on fp.idFatura = f.id
		inner join CondicaoPagamento cp on cp.id = f.idCondicaoPagamento
		inner join parceiro ve on ve.id = f.idVendedor
		inner join NFProduto nfp on nfp.idNotaFiscal = f.idNotaFiscal
		inner join ProdutoPreco pp on pp.idProduto = nfp.idProduto
		where (f.idnReceitaDespesa = '+')
		and (fp.idnBaixado = 0 or fp.idnBaixado is null)
		and ((f.idVendedor = @idVendedor) or (@idVendedor = 0 and f.idVendedor is not null))

		update @Vendas set variacaoPreco_id = (select top 1 id 
		from PrecoVariacao pv
		where (pv.dataInicioVigencia <= dataFatura and pv.dataFimVigencia >= dataFatura)
		and ((pv.idCondicaoPagamento = condicaoPagamento_id) or (pv.idCondicaoPagamento is null))
		and ((pv.idVendedor = vendedor_id) or (pv.idVendedor is null)))
		

		update @Vendas set precoProdutoVenda = (select top 1 case when pv.idnAcrescimo = 1 then
																(case when pv.idnValor = 1 then pp.preco + pv.percentualValorVariacao
																	when pv.idnPercentual = 1 then pp.preco * (1+(pv.percentualValorVariacao/100))end)
															when pv.idnDesconto = 1 then
																(case when pv.idnValor = 1 then pp.preco - pv.percentualValorVariacao
																	when pv.idnPercentual = 1 then pp.preco - (pp.preco*(pv.percentualValorVariacao/100))end)
															else pp.preco end
		from ProdutoPreco pp 
		left join PrecoVariacao pv on pv.id = variacaoPreco_id
		where (pp.dataVigencia <= dataFatura)
		and (pp.idProduto = produto_id)
		and ((pv.idVendedor = vendedor_id) or (pv.idVendedor is null))
		order by pp.dataVigencia DESC)


		insert into @Resultado
		select distinct notafiscalProduto_id, vendedor_id, vendedor_nome, fatura_id, valorFaturaParcela, 
		quantidade*(precoProdutoVendido - precoProdutoVenda), 
		dataFatura, condicaoPagamento_id, condicaoPagamentoDescricao, ve.variacaoPreco_id
		from @Vendas ve
	END
	RETURN 
END
GO
INSERT INTO [dbo].[configuracaoNovo]
           ([nomeParametro]
           ,[descricaoSimplificada]
           ,[descricaoDetalhada]
           ,[tipoValor]
           ,[valor]
           ,[grupo]
           ,[subgrupo]
           ,[tamanhoValorMaximo]
           ,[idnParametroMultilinhas]
           ,[idnParametroRadio]
           ,[idnParametroSelecaoPasta]
           ,[idnPermiteAlteracaoApenasPorAdmins]
           ,[idnCampoSenha]
           ,[tabelaSelecao]
           ,[filtroSelecao]
           ,[validacaoRegularExpression]
           ,[dataInclusao])
     VALUES('idnPreencherTransportadoraParceiro',
				'Preencher a transportadora quando a mesma esta relacionado no cadastro do parceiro',
				'Preencher a transportadora ao selecionar o parceiro na Emissão da Nota Fiscal quando a mesma esta relacionado no cadastro do parceiro',
				'bool',
				'False',
				'NFe/Movimento',
				'Configurações da NFe',
				NULL,
				0,0,0,0,0,NULL,NULL,NULL,GETDATE())

INSERT INTO [dbo].[configuracaoNovo]
           ([nomeParametro]
           ,[descricaoSimplificada]
           ,[descricaoDetalhada]
           ,[tipoValor]
           ,[valor]
           ,[grupo]
           ,[subgrupo]
           ,[tamanhoValorMaximo]
           ,[idnParametroMultilinhas]
           ,[idnParametroRadio]
           ,[idnParametroSelecaoPasta]
           ,[idnPermiteAlteracaoApenasPorAdmins]
           ,[idnCampoSenha]
           ,[tabelaSelecao]
           ,[filtroSelecao]
           ,[validacaoRegularExpression]
           ,[dataInclusao])
     VALUES
           ('idnControlarEstoqueIFood'
           ,'Controlar Estoque na plataforma do Ifood'
           ,'Irá realizar a baixa do produtos disponiveis para venda na plataforma do ifood quando o estoque estiver menor que o estoque minimo definido e será ativado quando for superior, precisa ser um produto de venda, controlar estoque, o estoque mínimo precisa ser superior a 0 e também o pdv no ifood precisa ser igual ao código do produto no sistema.'
           ,'bool'
           ,'false'
           ,'Ecommerce'
           ,'Ifood'
           ,null
           ,0
           ,0
           ,0
           ,0
           ,0
           ,null
           ,null
           ,null
           ,GETDATE())
GO
UPDATE selecao SET tabela = 'GrupoServico' WHERE tabela = 'gruposervico'
GO
INSERT INTO [dbo].[configuracaoNovo]([nomeParametro],[descricaoSimplificada],[descricaoDetalhada],[tipoValor],[valor],[grupo],[subgrupo],[tamanhoValorMaximo],[idnParametroMultilinhas],[idnParametroRadio],[idnParametroSelecaoPasta],[idnPermiteAlteracaoApenasPorAdmins],[idnCampoSenha],[tabelaSelecao],[filtroSelecao],[validacaoRegularExpression]) VALUES ('idnBloquearProdutosSemEstoqueOS', 'Bloquear a inclusão de OS com Produtos sem Estoque', 'Selecione esta opção quando desejar que NÃO seja permitido salvar uma Ordem de Serviço, que possui produtos alocados sem saldo de estoque suficiente.', 'bool', 'False', 'Ordem de Serviço', 'Configurações da OS',null,0,0,0,0,0,null,null,null)
GO
SET IDENTITY_INSERT [dbo].[Telas] ON 
GO
INSERT [dbo].[Telas] ([id], [descricao], [controle], [imagem], [teclaAtalho1], [teclaAtalho2], [idnPermiteAbrirVarias], [qtdVezesAberta], [dataUltimaAbertura], [idnRestricaoAcesso]) VALUES (342, N'Geração de Faturas em Lote', N'Cadastros.ucCadFaturaLote, Cadastros, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', NULL, NULL, NULL, NULL, 1, CAST(N'2021-12-07T10:01:25.667' AS DateTime), 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 (445, 1, N'Geração de Faturas em Lotes', 342, 68, 0, 1, NULL, N'')
GO
SET IDENTITY_INSERT [dbo].[MenuItens] OFF
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO) VALUES(459, 717, GETDATE());
