-- CRIAÇÃO DA PRODECURE CREATE PROCEDURE sp_update_unidade_medida_lojamix_adm @un_antiga VARCHAR(3), @un_nova VARCHAR(2) AS BEGIN PRINT 'Atualizando dados da unidade ' + @un_antiga + ' para a unidade ' + @un_nova; -- DESABILITA TODAS AS FK'S DO BANCO PRINT 'Desabilitando FKs'; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'; IF((SELECT COUNT(*) FROM unidade_medida WHERE sigla = @un_nova) <= 0) BEGIN PRINT 'Atualizando a sigla da unidade de medida'; UPDATE unidade_medida SET sigla = @un_nova WHERE sigla = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA NO CADASTRO LOGISTICO DO PRODUTO PRINT 'Atualizando dados da unidade nos cadastros logisticos dos produtos'; UPDATE cadastro_logistico_produto SET sigla_unidade_logistica = @un_nova, id_unidade_medida = (SELECT id_unidade_medida FROM unidade_medida WHERE sigla = @un_nova) WHERE sigla_unidade_logistica = @un_antiga; -- ALTERA A UNIDADE DE NO CADASTRO DO PRODUTO PRINT 'Atualizando dados da unidade nos produtos'; UPDATE produto SET id_unidade_medida = (SELECT id_unidade_medida FROM unidade_medida WHERE sigla = @un_nova) WHERE id_unidade_medida = (SELECT id_unidade_medida FROM unidade_medida WHERE sigla = @un_antiga); -- ALTERA A SIGLA DA UNIDADE DE MEDIDA NO PRODUTO SINONIMO PRINT 'Atualizando dados da unidade nos produtos sinonimos'; UPDATE produto_sinonimo SET sigla_unidade_logistica = @un_nova WHERE sigla_unidade_logistica = @un_antiga; -- ALTERA A SIGLA DA UNIDADE DE MEDIDA PRIMARIA NO ITEM DA NOTA FISCAL, SE HOUVER IF((SELECT COUNT(*) FROM item_nota_fiscal WHERE sigla_unidade_logistica_primaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade primaria nos itens das notas fiscais'; UPDATE item_nota_fiscal SET sigla_unidade_logistica_primaria = @un_nova WHERE sigla_unidade_logistica_primaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA SECUNDARIA NO ITEM DA NOTA FISCAL, SE HOUVER IF((SELECT COUNT(*) FROM item_nota_fiscal WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade secundaria nos itens das notas fiscais'; UPDATE item_nota_fiscal SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA PRIMARIA NO ITEM DA NOTA FISCAL EDICAO, SE HOUVER IF((SELECT COUNT(*) FROM item_nota_fiscal_edicao WHERE sigla_unidade_logistica_primaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade primaria nos itens das notas fiscais em edicao'; UPDATE item_nota_fiscal_edicao SET sigla_unidade_logistica_primaria = @un_nova WHERE sigla_unidade_logistica_primaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA SECUNDARIA NO ITEM DA NOTA FISCAL EDICAO, SE HOUVER IF((SELECT COUNT(*) FROM item_nota_fiscal_edicao WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade secundaria nos itens das notas fiscais em edicao'; UPDATE item_nota_fiscal_edicao SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- ATUALIZA OS DADOS DA UNIDADE PRIMARIA NO ITEM DA DEVOLUCAO, SE HOUVER IF((SELECT COUNT(*) FROM item_devolucao_venda WHERE sigla_unidade_logistica = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade primaria nos itens das devolucoes'; UPDATE item_devolucao_venda SET sigla_unidade_logistica = @un_nova WHERE sigla_unidade_logistica = @un_antiga; END -- ATUALIZA OS DADOS DA UNIDADE SECUNDARIA NO ITEM DA DEVOLUCAO, SE HOUVER IF((SELECT COUNT(*) FROM item_devolucao_venda WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade secundaria nos itens das devolucoes'; UPDATE item_devolucao_venda SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA PRIMARIA NO ITEM DO DOCUMENTO DE ESTOQUE, SE HOUVER IF((SELECT COUNT(*) FROM item_documento_estoque WHERE sigla_unidade_logistica = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade nos itens dos documentos de estoque'; UPDATE item_documento_estoque SET sigla_unidade_logistica = @un_nova WHERE sigla_unidade_logistica = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA SECUNDARIA NO ITEM DO DOCUMENTO DE ESTOQUE, SE HOUVER IF((SELECT COUNT(*) FROM item_documento_estoque WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade nos itens dos documentos de estoque'; UPDATE item_documento_estoque SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA PRIMARIA NO ITEM DO DOCUMENTO DE ESTOQUE EDICAO, SE HOUVER IF((SELECT COUNT(*) FROM item_documento_estoque_edicao WHERE sigla_unidade_logistica_primaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade nos itens dos documentos de estoque em edicao'; UPDATE item_documento_estoque_edicao SET sigla_unidade_logistica_primaria = @un_nova WHERE sigla_unidade_logistica_primaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE DE MEDIDA SECUNDARIA NO ITEM DO DOCUMENTO DE ESTOQUE EDICAO, SE HOUVER IF((SELECT COUNT(*) FROM item_documento_estoque_edicao WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando dados da unidade nos itens dos documentos de estoque em edicao'; UPDATE item_documento_estoque_edicao SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE LOGISTICA PRIMARIA DA OPERACAO PDV, SE HOUVER IF((SELECT COUNT(*) FROM hiperpdv_item_operacao_pdv WHERE sigla_unidade_logistica_primaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando sigla da unidade logistica primaria nas operacoes de pdv nao processadas'; UPDATE hiperpdv_item_operacao_pdv SET sigla_unidade_logistica_primaria = @un_nova WHERE sigla_unidade_logistica_primaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE LOGISTICA SECUNDARIA DA OPERACAO PDV, SE HOUVER IF((SELECT COUNT(*) FROM hiperpdv_item_operacao_pdv WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando sigla da unidade logistica secundaria nas operacoes de pdv nao processadas'; UPDATE hiperpdv_item_operacao_pdv SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE LOGISTICA PRIMARIA DA OPERACAO PDV, SE HOUVER IF((SELECT COUNT(*) FROM item_operacao_pdv WHERE sigla_unidade_logistica_primaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando sigla da unidade logistica primaria na operacao_pdv'; UPDATE item_operacao_pdv SET sigla_unidade_logistica_primaria = @un_nova WHERE sigla_unidade_logistica_primaria = @un_antiga; END -- ALTERA A SIGLA DA UNIDADE LOGISTICA SECUNDARIA DA OPERACAO PDV, SE HOUVER IF((SELECT COUNT(*) FROM item_operacao_pdv WHERE sigla_unidade_logistica_secundaria = @un_antiga) > 0) BEGIN PRINT 'Atualizando sigla da unidade logistica primaria nas operacoes de pdv processadas'; UPDATE item_operacao_pdv SET sigla_unidade_logistica_secundaria = @un_nova WHERE sigla_unidade_logistica_secundaria = @un_antiga; END -- HABILITA TODAS AS FK'S DO BANCO PRINT 'Habilitando FKs'; EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'; END -- SE PRECISAR EXCLUIR A PROCEDURE -- DROP PROCEDURE sp_update_unidade_medida_lojamix_adm; -- EXECUTAR A PROCEDURE, PARAMENTROS: UNIDADE DE MEDIDA ANTIGA, NOVA UNIDADE DE MEDIDA EXEC sp_update_unidade_medida_lojamix_adm '', '';