USE [TryNFeOnline]
GO

ALTER TABLE [dbo].[PedidoProdutoProducaoMaquinas] ADD 
[diametro] [int] NULL,
[idParceiroLaboratorista] [int] NULL
GO
ALTER PROCEDURE [dbo].[DESENHO_CAIXA_PAPELAO]
	@idModeloCaixa int,
	@idEstruturaPapel int,
	@medidaA int,
	@medidaB int,
	@medidaC int,
	@medidaD int,
	@medidaE int,
	@medidaF int,
	@medidaG int,
	@medidaH int,
	@medidaI int,
	@medidaJ int,
	@medidaOrelha int
	--@desenho varchar(MAX) OUTPUT
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @Variaveis TABLE
	(
		variavel varchar(50),
		formula varchar(50),
		compensacao int
	)

	INSERT INTO @Variaveis
	SELECT cxv.variavel, REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(cxv.formula, 'A', @medidaA), 'B', @medidaB), 'C', @medidaC), 'D', @medidaD), 'E', @medidaE), 'F', @medidaF), 'G', @medidaG), 'H', @medidaH), 'I', @medidaI), 'J', @medidaJ),
	COALESCE((case when ond.tipoOnda = 'A' then cxv.compensacaoA when ond.tipoOnda = 'B' then cxv.compensacaoB when ond.tipoOnda = 'C' then cxv.compensacaoC when ond.tipoOnda = 'D' then cxv.compensacaoD when ond.tipoOnda = 'E' 
	then cxv.compensacaoE when ond.tipoOnda = 'AC' then cxv.compensacaoAC when ond.tipoOnda = 'BB' then cxv.compensacaoBB when ond.tipoOnda = 'BC' then cxv.compensacaoBC when ond.tipoOnda = 'BE' then cxv.compensacaoBE when ond.tipoOnda = 'DB' then cxv.compensacaoDB when ond.tipoOnda = 'DB' then cxv.compensacaoDC else 0 end), 0)
	FROM ProdutoModeloCaixaVariavel cxv
	inner join TipoEstruturaPapel te on te.id = @idEstruturaPapel
	inner join TipoOndaPapel ond on ond.id = te.idTipoOnda
	WHERE (cxv.idProdutoModeloCaixa = @idModeloCaixa)

	
    DECLARE @Resultado TABLE 
	(
		desenho varchar(MAX),
		medidasLargura varchar(100),
		medidasComprimento varchar(100)
	)

	INSERT INTO @Resultado
	SELECT desenho, '', '' FROM ProdutoModeloCaixa WHERE id = @idModeloCaixa

	UPDATE @Resultado SET desenho = REPLACE(desenho, 'Orelha', @medidaOrelha)


	DECLARE @Variavel varchar(50)
	DECLARE @Formula varchar(50)
	DECLARE @Compensacao varchar(10)

	DECLARE @Valor AS FLOAT
	DECLARE @SqlStatement AS NVARCHAR(MAX)

	DECLARE cursorVariaveis CURSOR FOR
	SELECT variavel, formula, compensacao
	FROM @Variaveis

	OPEN cursorVariaveis
	FETCH NEXT FROM cursorVariaveis INTO @Variavel, @Formula, @Compensacao

	WHILE @@FETCH_STATUS = 0
	BEGIN
		
		SET @SqlStatement = 'SET @Valor = ' + @Formula + '+' + @Compensacao

		EXECUTE sp_executesql @SqlStatement, N'@Valor FLOAT OUTPUT', @Valor OUTPUT

		UPDATE @Resultado SET desenho = REPLACE(desenho, @Variavel, REPLACE(STR(@Valor, 4), SPACE(1), ' '))

		IF(@Variavel like 'L%')
			UPDATE @Resultado SET medidasLargura = medidasLargura + CAST(@Valor as varchar) + ' x '
		ELSE
			UPDATE @Resultado SET medidasComprimento = medidasComprimento + CAST(@Valor as varchar) + ' x '
		
		FETCH NEXT FROM cursorVariaveis INTO @Variavel, @Formula, @Compensacao

	END

	CLOSE cursorVariaveis
	DEALLOCATE cursorVariaveis

	UPDATE @Resultado SET medidasLargura = LEFT(medidasLargura, LEN(medidasLargura) - 1)
	WHERE LEN(medidasLargura) > 0
	
	UPDATE @Resultado SET medidasComprimento = LEFT(medidasComprimento, LEN(medidasComprimento) - 1)
	WHERE LEN(medidasComprimento) > 0

	--SELECT @desenho = (select desenho from @Resultado)
	SELECT * FROM @Resultado

END
GO
ALTER TABLE [dbo].[PedidoProdutoProducaoMaquinas] ADD CONSTRAINT [FK_PedidoProdutoProducaoMaquinas_parceiro] FOREIGN KEY
	(
		[idParceiroLaboratorista]
	)
	REFERENCES [dbo].[parceiro]
	(
		[id]
	)
GO
UPDATE selecao SET joins = CAST(joins AS VARCHAR(MAX)) + ' left join ProdutoCaixa cx on cx.idProdutoClassificacao = pc.id' WHERE tabela = 'produto';
GO
INSERT dbo.configuracaoNovo(nomeParametro, descricaoSimplificada, descricaoDetalhada, tipoValor, valor, grupo, subgrupo, tamanhoValorMaximo, idnParametroMultilinhas, idnParametroRadio, idnParametroSelecaoPasta, idnPermiteAlteracaoApenasPorAdmins, idnCampoSenha, tabelaSelecao, filtroSelecao, validacaoRegularExpression, dataInclusao, idnPermiteSelecaoMultiplaOpcoes) VALUES (N'idContaEstoqueExibirSelecaoProdutoImportarXml', 'Conta de Estoque utilizada na seleção', 'Se nenhuma conta de estoque for selecionada, o sistema considera a conta de estoque 1 - Geral', 'int', null, 'Importação da NFe', 'Configurações da Importação do XML', NULL, 0, 0, 0, 1, 0, 'EstoqueConta', NULL, NULL, NULL, NULL)
INSERT dbo.configuracaoNovo(nomeParametro, descricaoSimplificada, descricaoDetalhada, tipoValor, valor, grupo, subgrupo, tamanhoValorMaximo, idnParametroMultilinhas, idnParametroRadio, idnParametroSelecaoPasta, idnPermiteAlteracaoApenasPorAdmins, idnCampoSenha, tabelaSelecao, filtroSelecao, validacaoRegularExpression, dataInclusao, idnPermiteSelecaoMultiplaOpcoes) VALUES (N'idnExibirEstoqueSelecaoProdutoImportarXml', 'Exibir estoque do produto na relação dos itens', 'Ao marcar esta opção, o estoque será exibido na Grid que permite selecionar o produto que será relacionado', 'bool', null, 'Importação da NFe', 'Configurações da Importação do XML', NULL, 0, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL)
INSERT dbo.configuracaoNovo(nomeParametro, descricaoSimplificada, descricaoDetalhada, tipoValor, valor, grupo, subgrupo, tamanhoValorMaximo, idnParametroMultilinhas, idnParametroRadio, idnParametroSelecaoPasta, idnPermiteAlteracaoApenasPorAdmins, idnCampoSenha, tabelaSelecao, filtroSelecao, validacaoRegularExpression, dataInclusao, idnPermiteSelecaoMultiplaOpcoes) VALUES (N'idnExibirPrecoECustoSelecaoProdutoImportarXml', 'Exibir Preço e Custo do produto na relação dos itens', 'Ao marcar esta opção, o Preço e o Custo será exibido na Grid que permite selecionar o produto que será relacionado', 'bool', null, 'Importação da NFe', 'Configurações da Importação do XML', NULL, 0, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL)
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO, REVISAO) VALUES(507, 765, GETDATE(),1);