USE [TryNFeOnline]
GO

ALTER TABLE [dbo].[ProdutoMontagem] ADD 
[idOrdemProducaoApontamento] [bigint] NULL,
[idOrdemProducaoEnvasamento] [bigint] NULL
GO
ALTER TABLE [dbo].[produto] ADD 
[qtdPorUnidade] [decimal] (18,4) NULL,
[tipoControleLote] [varchar] (50) COLLATE Latin1_General_CI_AS NULL
GO
ALTER TABLE [dbo].[OrdemProducaoParametros] ADD 
[descricao] [varchar] (100) COLLATE Latin1_General_CI_AS NULL
GO
ALTER TABLE [dbo].[OrdemProducao] ADD 
[dataFinalizacaoOP] [datetime] NULL,
[tipoControleLote] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
[registroProducao] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
[idParametroProducao] [int] NULL
GO
ALTER TABLE [dbo].[OrdemProducaoApontamento] ADD 
[numeroBatelada] [int] NULL,
[numeroLote] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
[dataValidadeLote] [date] NULL
GO
ALTER TABLE [dbo].[MDeEvento] ADD 
[idOperador] [int] NULL
GO
ALTER TABLE [dbo].[estoqueAjustes] ADD 
[idAjusteOrigem] [int] NULL
GO
CREATE TABLE [dbo].[OrdemProducaoEnvasamento]
(
	[id] [bigint] IDENTITY (1,1) NOT NULL,
	[idOrdemProducao] [bigint] NOT NULL,
	[idProduto] [int] NOT NULL,
	[idProdutoClassificacao] [int] NULL,
	[qtdEmbalagem] [decimal] (18,4) NULL,
	[qtdEnvasada] [decimal] (18,4) NULL,
	[qtdPerda] [decimal] (18,4) NULL,
	[qtdTotal] [decimal] (18,4) NULL,
	[numeroLote] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
	[dataValidadeLote] [date] NULL,
	[idParceiro] [int] NULL,
	[idOperador] [int] NOT NULL,
	[dataHoraRegistro] [datetime] NOT NULL,
	CONSTRAINT [PK_OrdemProducaoEnvasamento] 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].[OperadorQuadroPedidoKanban]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[idOperador] [int] NULL,
	[idPedidoKanbanQuadro] [int] NULL,
	CONSTRAINT [PK_OperadorQuadroPedidoKanban] 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 NONCLUSTERED INDEX [IX_ProdutoLoteMovimento_idEstoqueAjustes] ON [dbo].[ProdutoLoteMovimento]
(
	[idEstoqueAjustes] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_estoqueAjustes_OrdemProducao] ON [dbo].[estoqueAjustes]
(
	[idOrdemProducao] ASC,
	[idnES] ASC,
	[idProduto] ASC,
	[idProdutoClassificacao] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE [dbo].[OperadorQuadroPedidoKanban] ADD CONSTRAINT [FK_OperadorQuadroPedidoKanban_Operador] FOREIGN KEY
	(
		[idOperador]
	)
	REFERENCES [dbo].[Operador]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[OperadorQuadroPedidoKanban] ADD CONSTRAINT [FK_OperadorQuadroPedidoKanban_PedidoKanbanQuadro] FOREIGN KEY
	(
		[idPedidoKanbanQuadro]
	)
	REFERENCES [dbo].[PedidoKanbanQuadro]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[OrdemProducaoEnvasamento] ADD CONSTRAINT [FK_OrdemProducaoEnvasamento_Operador] FOREIGN KEY
	(
		[idOperador]
	)
	REFERENCES [dbo].[Operador]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[OrdemProducaoEnvasamento] ADD CONSTRAINT [FK_OrdemProducaoEnvasamento_OrdemProducao] FOREIGN KEY
	(
		[idOrdemProducao]
	)
	REFERENCES [dbo].[OrdemProducao]
	(
		[id]
	)
GO

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

ALTER TABLE [dbo].[OrdemProducaoEnvasamento] ADD CONSTRAINT [FK_OrdemProducaoEnvasamento_produto] FOREIGN KEY
	(
		[idProduto]
	)
	REFERENCES [dbo].[produto]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[OrdemProducaoEnvasamento] ADD CONSTRAINT [FK_OrdemProducaoEnvasamento_ProdutoClassificacao] FOREIGN KEY
	(
		[idProdutoClassificacao]
	)
	REFERENCES [dbo].[ProdutoClassificacao]
	(
		[id]
	)
GO

ALTER TABLE [dbo].[MDeEvento] ADD CONSTRAINT [FK_MDeEvento_Operador] FOREIGN KEY
	(
		[idOperador]
	)
	REFERENCES [dbo].[Operador]
	(
		[id]
	)
GO
ALTER TABLE [dbo].[estoqueAjustes] ADD CONSTRAINT [FK_estoqueAjustes_estoqueAjustesOrigem] FOREIGN KEY
	(
		[idAjusteOrigem]
	)
	REFERENCES [dbo].[estoqueAjustes]
	(
		[id]
	)
GO
ALTER TABLE [dbo].[OrdemProducao] ADD CONSTRAINT [FK_OrdemProducao_OrdemProducaoParametros] FOREIGN KEY
	(
		[idParametroProducao]
	)
	REFERENCES [dbo].[OrdemProducaoParametros]
	(
		[id]
	)
GO
ALTER TABLE [dbo].[ProdutoMontagem] ADD CONSTRAINT [FK_ProdutoMontagem_OrdemProducaoApontamento] FOREIGN KEY
	(
		[idOrdemProducaoApontamento]
	)
	REFERENCES [dbo].[OrdemProducaoApontamento]
	(
		[id]
	)
GO
ALTER TABLE [dbo].[ProdutoMontagem] ADD CONSTRAINT [FK_ProdutoMontagem_OrdemProducaoEnvasamento] FOREIGN KEY
	(
		[idOrdemProducaoEnvasamento]
	)
	REFERENCES [dbo].[OrdemProducaoEnvasamento]
	(
		[id]
	)
GO

IF EXISTS (SELECT 1 FROM PedidoKanbanQuadro WHERE idnInativo = 0)
BEGIN
	INSERT INTO OperadorQuadroPedidoKanban (idOperador, idPedidoKanbanQuadro)
    SELECT o.id, q.id
    FROM Operador o
    CROSS JOIN PedidoKanbanQuadro q
    WHERE COALESCE(o.idnBaixa, 0) = 0
      AND o.id != 999
      AND q.idnInativo = 0
      AND NOT EXISTS (
          SELECT 1
          FROM OperadorQuadroPedidoKanban p
          WHERE p.idOperador = o.id
            AND p.idPedidoKanbanQuadro = q.id
      )
END
GO
IF EXISTS (select 1 from OrdemProducaoParametros)
BEGIN
	UPDATE OrdemProducaoParametros SET descricao = 'Produto Final'
END

GO
INSERT [dbo].[OrdemProducaoListaStatus] ([identificador], [descricao], [indOrdem], [idnExibirMonitoramento], [idnPermiteMoverManual]) VALUES (N'FINALIZADA', N'Finalizada', 9, 1, 0)
GO
UPDATE OrdemProducaoListaStatus SET indOrdem = 10 WHERE identificador = 'CANCELADA'

GO
INSERT INTO [dbo].[configuracaoNovo]([nomeParametro],[descricaoSimplificada],[descricaoDetalhada],[tipoValor],[valor],[grupo],[subgrupo],[tamanhoValorMaximo],[idnParametroMultilinhas],[idnParametroRadio],[idnParametroSelecaoPasta],[idnPermiteAlteracaoApenasPorAdmins],[idnCampoSenha],[tabelaSelecao],[filtroSelecao],[validacaoRegularExpression],[idnPermiteSelecaoMultiplaOpcoes]) VALUES ('tipoRegistroProducaoOP', 'Registro da Produção', 'Selecione a opção desejada para realizar o registro da Produção da OP', 'varchar', 'NoApontamento', 'Ordem de Produção', 'Configurações da OP',null,0,0,0,1,0,null,null,null,0)
GO
INSERT INTO [dbo].[ConfiguracaoNovoOpcoes] ([nomeParametro],[descricao],[valor]) VALUES ('tipoRegistroProducaoOP', 'No Apontamento', 'NoApontamento')
GO
INSERT INTO [dbo].[ConfiguracaoNovoOpcoes] ([nomeParametro],[descricao],[valor]) VALUES ('tipoRegistroProducaoOP', 'No Envase', 'NoEnvasamento')
GO
INSERT INTO [dbo].[configuracaoNovo]([nomeParametro],[descricaoSimplificada],[descricaoDetalhada],[tipoValor],[valor],[grupo],[subgrupo],[tamanhoValorMaximo],[idnParametroMultilinhas],[idnParametroRadio],[idnParametroSelecaoPasta],[idnPermiteAlteracaoApenasPorAdmins],[idnCampoSenha],[tabelaSelecao],[filtroSelecao],[validacaoRegularExpression],[idnPermiteSelecaoMultiplaOpcoes]) VALUES ('jsonGeracaoNumeroLoteOrdemProducao', 'Padrão de geração do Nº Lote OP', '', 'varchar', null, 'Ordem de Produção', 'Configurações da OP',null,1,0,0,1,0,null,null,null,0)
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO, REVISAO) VALUES(556, 814, GETDATE(),1);