
/*------ ATD 443597 ------*/
-- CRIANDO TRIGGER SKU_PRODUTO_ECOMMERCE_IU
IF EXISTS (SELECT 1 FROM sys.triggers WHERE name = 'SKU_PRODUTO_ECOMMERCE_IU')
	DROP TRIGGER SKU_PRODUTO_ECOMMERCE_IU
GO
create trigger dbo.SKU_PRODUTO_ECOMMERCE_IU on dbo.SKU_PRODUTO_ECOMMERCE for insert,update as
begin
	SET NOCOUNT ON
	-- somente de plataformas que integram produtos e não estão desativadas
	-- ignorar quando está mudando flag de integração, pois é o monitor que altera
	Insert Into FILA_INTEGRACAO_ECOMMERCE (RPLATAFORMA, OPERACAO, OBJETO, CODIGO, DATA) 
	Select i.rplataforma, case when d.codpro is null then 'I' else 'A' end, 'SKU', 
	(case when i.codigo > 0 then cast(i.codigo as varchar) else 'ID' + cast(i.id as varchar) end), GETDATE() 
	From inserted i
	 join PLATAFORMA_ECOMMERCE p on p.oid = i.rplataforma AND p.INTEGRAPRODUTOS = 1 AND p.DESATIVADO = 0 
	 left join deleted d on d.id = i.id
	where not exists(select 1 from FILA_INTEGRACAO_ECOMMERCE 
					 where RPLATAFORMA = i.RPLATAFORMA and OBJETO = 'SKU' 
					 and CODIGO = (case when i.codigo > 0 then cast(i.codigo as varchar) else 'ID' + cast(i.id as varchar) end) 
					 and OPERACAO != 'D')
    and isnull(i.DESATIVADO,0) = 0
    and isnull(i.INTEGRADOSITE,0) = isnull(d.INTEGRADOSITE,0) 
	and isnull(i.DATAATUALIZACAOCADASTRO,CONVERT(DATETIME,'31/12/2000',103)) != isnull(d.DATAATUALIZACAOCADASTRO,CONVERT(DATETIME,'31/12/2000',103)) -- cadastro realmente alterado
	and i.PRODUTOSEMVARIACAO = 0 -- só produtos com variação
	
	-- fazer o mesmo quando está alterando dados de produto sem variação
	Insert Into FILA_INTEGRACAO_ECOMMERCE (RPLATAFORMA, OPERACAO, OBJETO, CODIGO, DATA) 
	Select pe.rplataforma, 'A', 'PRODUTO', 
	(case when pe.codigo > 0 then cast(pe.codigo as varchar) else 'ID' + cast(pe.id as varchar) end), GETDATE() 
	From inserted i
	 join PLATAFORMA_ECOMMERCE p on p.oid = i.rplataforma AND p.INTEGRAPRODUTOS = 1 AND p.DESATIVADO = 0 
	 join PRODUTO_ECOMMERCE pe on pe.id = i.rprodutoecommerce AND pe.DESATIVADO = 0
	 join deleted d on d.id = i.id
	where not exists(select 1 from FILA_INTEGRACAO_ECOMMERCE 
					 where RPLATAFORMA = pe.RPLATAFORMA and OBJETO = 'PRODUTO' 
					 and CODIGO = (case when pe.codigo > 0 then cast(pe.codigo as varchar) else 'ID' + cast(pe.id as varchar) end) 
					 and OPERACAO != 'D')
    and isnull(pe.DESATIVADO,0) = 0
    and isnull(i.INTEGRADOSITE,0) = isnull(d.INTEGRADOSITE,0) 
	and isnull(i.DATAATUALIZACAOCADASTRO,CONVERT(DATETIME,'31/12/2000',103)) != isnull(d.DATAATUALIZACAOCADASTRO,CONVERT(DATETIME,'31/12/2000',103)) -- cadastro realmente alterado
	and i.PRODUTOSEMVARIACAO = 1 -- só produtos sem variação

	-- atualização de preço
	IF UPDATE(PRECO) OR UPDATE(PRECODELISTA) OR UPDATE(OFERTAINICIO) OR UPDATE(OFERTAFIM) OR UPDATE(CONVERTERPRECO) OR UPDATE(MULTIPLICADORUNIDADE)
		Insert Into FILA_INTEGRACAO_ECOMMERCE (RPLATAFORMA, OPERACAO, OBJETO, CODIGO, DATA) 
		Select i.rplataforma, 'A', (case when i.PRODUTOSEMVARIACAO = 1 then 'PRECO_PRODUTO' else 'PRECO_SKU' end), 
		cast((case when i.PRODUTOSEMVARIACAO = 1 then pe.codigo else i.codigo end) as varchar), GETDATE() 
		From inserted i
		 join PLATAFORMA_ECOMMERCE p on p.oid = i.rplataforma AND p.DESATIVADO = 0 
		 join PRODUTO_ECOMMERCE pe on pe.id = i.rprodutoecommerce
		 join deleted d on d.id = i.id
		where (case when i.PRODUTOSEMVARIACAO = 1 then pe.codigo else i.codigo end) > 0 
		and isnull((case when i.PRODUTOSEMVARIACAO = 1 then pe.DESATIVADO else i.DESATIVADO end),0) = 0
		and not exists(select 1 from FILA_INTEGRACAO_ECOMMERCE 
						 where RPLATAFORMA = i.RPLATAFORMA 
						 and OBJETO = (case when i.PRODUTOSEMVARIACAO = 1 then 'PRECO_PRODUTO' else 'PRECO_SKU' end)
						 and CODIGO = cast((case when i.PRODUTOSEMVARIACAO = 1 then pe.codigo else i.codigo end) as varchar) 
						 and OPERACAO != 'D')
		and (isnull(i.PRECO,0) != isnull(d.PRECO,0) OR isnull(i.PRECODELISTA,0) != isnull(d.PRECODELISTA,0) OR 
			 isnull(i.OFERTAINICIO,CONVERT(DATETIME,'31/12/2000',103)) != isnull(d.OFERTAINICIO,CONVERT(DATETIME,'31/12/2000',103)) OR 
			 isnull(i.OFERTAFIM,CONVERT(DATETIME,'31/12/2000',103)) != isnull(d.OFERTAFIM,CONVERT(DATETIME,'31/12/2000',103)) OR
			 isnull(i.CONVERTERPRECO,0) != isnull(d.CONVERTERPRECO,0) OR
			 (isnull(i.MULTIPLICADORUNIDADE,0) != isnull(d.MULTIPLICADORUNIDADE,0) AND isnull(i.CONVERTERPRECO,0) = 1))
	
	-- forçar atualização de estoque
	IF UPDATE(MULTIPLICADORUNIDADE)
		UPDATE ESTOQUE_ARMAZEM_ECOMMERCE SET DATAENVIO = CONVERT(DATETIME,'01/01/1900',103)
		From ESTOQUE_ARMAZEM_ECOMMERCE e
		 join inserted i on i.CODPRO = e.CODPRO
		 join deleted d on d.id = i.id
		where isnull(i.MULTIPLICADORUNIDADE,0) != isnull(d.MULTIPLICADORUNIDADE,0)
		and EXISTS(SELECT 1 FROM ARMAZEM_ECOMMERCE a WHERE a.ID = e.RARMAZEM and a.RPLATAFORMA = i.RPLATAFORMA)
	
	-- Controlar coluna ExportaSite
	update complementoproduto set exportasite = 1
	from complementoproduto c
	 join inserted i on i.codpro = c.codpro
	where isnull(c.exportasite,0) != 1
	
	SET NOCOUNT OFF
	return
end
GO
