USE [TryNFeOnline]
GO

ALTER TABLE [dbo].[FormaPagamento] ADD 
[idEmitente] [int] NULL
GO
ALTER TABLE [dbo].[OperadorConfiguracoes] ADD 
[idnPermiteEditarFaturaSeBloqueado] [bit] NULL
GO
CREATE TABLE [dbo].[OrdemServicoServicoIntervalo]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[idOrdemServicoServico] [int] NOT NULL,
	[dataHoraInicioIntervalo] [datetime] NOT NULL,
	[dataHoraTerminoIntervalo] [datetime] NOT NULL,
	[observacao] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	CONSTRAINT [PK_OrdemServicoServicoIntervalo] 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].[EstoqueProdutosTodasFiliais]
(
	@dataInf datetime = null,
	@idFiliais varchar(100) = '',
	@idProdutoInf int = 0,
	@idProdutoClassificacaoInf int = 0,
	@idContaInf int = 0,
	@idGrupoInf int = 0,
	@idnMostrarProdutosBaixadosInf bit = 0,
	@idnMostrarProdutosQtdNegativaInf bit = 1,
	@idMarcaInf int = 0
)
RETURNS 
@Resultado TABLE 
(
	idProduto int,
	idProdutoClassificacao int NULL,
	sequenciaClassificacao int NULL,
	codigoProdutoClasse varchar(50),
	dscProdutoClasse varchar(500),
	unidadeMedida varchar(30),
	qtd decimal(18,4)
)
AS
BEGIN
	
	declare @Produtos TABLE
	(
		idProduto int,
		idProdutoClassificacao int NULL,
		sequenciaClassificacao int NULL,
		codigoProdutoClasse varchar(50),
		dscProduto varchar(500),		
		unidadeMedida varchar(30),
		qtd decimal(18,4),
		idEmitente int
	)

	DECLARE @IdFilial INT

	DECLARE cursorFilial CURSOR FOR
	SELECT id
	FROM emitente
	WHERE (COALESCE(idnBaixa, 0) = 0)
	AND ((id in (select * from ConvertStringToTable(@idFiliais))) or (@idFiliais = ''))
	
	OPEN cursorFilial
	FETCH NEXT FROM cursorFilial INTO @IdFilial

	WHILE @@FETCH_STATUS = 0
	BEGIN
    
		INSERT INTO @Produtos
		SELECT idProduto, idProdutoClassificacao, sequenciaClassificacao, codigoProdutoClasse, dscProdutoClasse, unidadeMedida, qtd, @IdFilial
		FROM EstoqueProdutos(@dataInf, @IdFilial, @idProdutoInf, @idProdutoClassificacaoInf, @idContaInf, @idGrupoInf, @idnMostrarProdutosBaixadosInf, @idnMostrarProdutosQtdNegativaInf, @idMarcaInf)
    
		FETCH NEXT FROM cursorFilial INTO @IdFilial
	END

	CLOSE cursorFilial
	DEALLOCATE cursorFilial

	INSERT INTO @Resultado
	select p.idProduto, p.idProdutoClassificacao, p.sequenciaClassificacao, p.codigoProdutoClasse, p.dscProduto, p.unidadeMedida, SUM(p.qtd)
	from @Produtos p
	group by p.idProduto, p.idProdutoClassificacao, p.sequenciaClassificacao, p.codigoProdutoClasse, p.dscProduto, p.unidadeMedida

	RETURN 
END
GO
ALTER TABLE [dbo].[OrdemServicoServicoIntervalo] ADD CONSTRAINT [FK_OrdemServicoServicoIntervalo_OrdemServicoServico] FOREIGN KEY
	(
		[idOrdemServicoServico]
	)
	REFERENCES [dbo].[OrdemServicoServico]
	(
		[id]
	)
GO
INSERT dbo.configuracaoNovo(nomeParametro, descricaoSimplificada, descricaoDetalhada, tipoValor, valor, grupo, subgrupo, tamanhoValorMaximo, idnParametroMultilinhas, idnParametroRadio, idnParametroSelecaoPasta, idnPermiteAlteracaoApenasPorAdmins, idnCampoSenha, tabelaSelecao, filtroSelecao, validacaoRegularExpression, dataInclusao, idnPermiteSelecaoMultiplaOpcoes) VALUES (N'idnBloquearEdicaoFatura', 'Bloquear a edição de Faturas', 'Ao marcar esta opção, a edição de faturas será bloqueada. É possível liberar operadores especificos para edição nas Configurações do Operador', 'bool', 'False', 'Financeiro', 'Configurações do Caixa', NULL, 0, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL)
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO, REVISAO) VALUES(504, 762, GETDATE(),1);

