Jeffytaboni Aprendiz

Registrado: Terça-Feira, 24 de Julho de 2012 Mensagens: 107
|
Enviada: Qua Ago 01, 2012 11:22 am Assunto: Problemas Com cpia de Dadso |
|
|
EStou Com um PRoblema galera Existe uma rotina no meu sistema que Cria um produto de devolução que é uma copia do produto original porém quando eu faço mudanças no produto devolução ele reflete no produto original isso pode ser na criação ou depois existe um sp em sql que faz essa copia e cria o produto alterei ela para cada fez qeu intributaçãovendas for 2 ele nao alterar o cadastro original esse intributação e o que diz que nao pode alterar os outros produtos somente um a instrução segue abaixo MAIS CONTINUA REFLETINDO UM NO OUTRO
onde esta em vermelho e onde fiz
CREATE PROCEDURE spCriaProdutoDevolucao (@CdProduto INT, @CdProdutoDevolucao INT OUTPUT)
AS
BEGIN
DECLARE @SQL VARCHAR(8000)
DECLARE @DsColuna VARCHAR(100)
DECLARE @CdFamilia CHAR(5)
DECLARE @CdGrupoProduto CHAR(15)
DECLARE @CdFilial INT -- Ednilson - 06/11/2007 - SS 12899
DECLARE @CdExtenso INT -- Ednilson - 23/02/2009 - SS 16811
DECLARE @CdProdutoUM INT -- Ednilson - 23/02/2009 - SS 16811
DECLARE @CdTributacaoVendas CHAR(6)
DECLARE @CdTributacaoCompras CHAR(6)
SELECT @CdFamilia = CdFamiliaDevolucao, @CdGrupoProduto = CdGrupoProdutoDevolucao FROM Configur
SELECT @SQL = ''
SELECT @CdProdutoDevolucao = 0
IF @CdFamilia IS NULL OR @CdGrupoProduto IS NULL
RETURN
--- Se um produto devoluo retorna, pois ele no pode ter outro produto devoluo relacionado a ele. ---
IF EXISTS(SELECT 1 FROM ProdutoDevolucao where CdProdutoDevolucao = @CdProduto)
RETURN
--- Se j tem produto devoluo, retorna ele. ---
IF EXISTS(SELECT 1 FROM ProdutoDevolucao where CdProduto = @CdProduto)
BEGIN
SELECT @CdProdutoDevolucao = CdProdutoDevolucao FROM ProdutoDevolucao where CdProduto = @CdProduto
RETURN
END
---- Seleciona as colunas da tabela de Produtos ----
DECLARE CursorCriaProduto CURSOR
FOR SELECT DSCOLUNA
FROM COLUNAS_SISTEMA
WHERE DSTABELA = 'Produtos'
OPEN CursorCriaProduto
FETCH NEXT FROM CursorCriaProduto INTO @DsColuna
WHILE @@FETCH_STATUS = 0
BEGIN
IF @DsColuna <> 'VlFatorVendas'
SET @SQL = @SQL + CASE WHEN @SQL = '' THEN '' ELSE ', ' END + @DsColuna
FETCH NEXT FROM CursorCriaProduto INTO @DsColuna
END
CLOSE CursorCriaProduto
DEALLOCATE CursorCriaProduto
---- Copia o cadastro do Produto ----
SELECT *
INTO #TmpCriaProduto
FROM Produtos
WHERE CdProduto = @CdProduto
-- Calcula o novo CdExtenso caso j exista um produto devoluo com o mesmo - Ednilson - 23/02/2009 - SS 16811
SELECT @CdExtenso = CONVERT(INT,CdExtenso) FROM Produtos WHERE CdProduto = @CdProduto
WHILE EXISTS(SELECT 1 FROM Produtos WHERE CdFamilia = @CdFamilia AND CdGrupoProduto = @CdGrupoProduto AND CONVERT(INT,CdExtenso) = @CdExtenso)
SELECT @CdExtenso = @CdExtenso + 1
SET @CdProdutoDevolucao = ISNULL((SELECT MAX(CdProduto) FROM Produtos),0) + 1
UPDATE #TmpCriaProduto
SET CdProduto = @CdProdutoDevolucao, CdFamilia = @CdFamilia, CdGrupoProduto = @CdGrupoProduto,
CdUnidadeMedida2 = NULL, VlFator2 = NULL, CdBarras2 = NULL, VlVendaBase2 = NULL, InUnidadeVenda2 = 0, InUnidadeCompra2 = 0, VlCustoProdutoUM2 = NULL,
CdUnidadeMedida3 = NULL, VlFator3 = NULL, CdBarras3 = NULL, VlVendaBase3 = NULL, InUnidadeVenda3 = 0, InUnidadeCompra3 = 0, VlCustoProdutoUM3 = NULL,
CdUnidadeMedida4 = NULL, VlFator4 = NULL, CdBarras4 = NULL, InUnidadeCompra4 = 0, VlCustoProdutoUM4 = NULL,
CdExtenso = RIGHT( REPLICATE('0', LEN(CdExtenso))+ CONVERT(VARCHAR,@CdExtenso), LEN(CdExtenso)) -- Ednilson - 23/02/2009 - SS 16811
EXEC ('INSERT Produtos ('+@SQL+') SELECT '+@SQL+' FROM #TmpCriaProduto')
---- Copia Unidade de Medida ----
SELECT *
INTO #TmpCriaProdutoUM
FROM ProdutosUM
WHERE CdProduto = @CdProduto AND InUnidadeMedida = 1
-- SELECT @CdProdutoUM = ISNULL(MAX(CdProdutoUM),0) FROM ProdutosUM -- Ednilson - 23/02/2009 - SS 16811 -- Tirar o comentrio desta linha e da linha abaixo quando homologar a SS 15376.
UPDATE #TmpCriaProdutoUM SET CdProduto = @CdProdutoDevolucao--, CdProdutoUM = @CdProdutoUM + InUnidadeMedida
INSERT ProdutosUM
SELECT *
FROM #TmpCriaProdutoUM
IF (SELECT InTributacaoVendas FROM Produtos Where CdProduto = @CdProduto) = 2
BEGIN
SELECT T.*
INTO #TmpCriaTributacaoVendas
FROM TribVend T
INNER JOIN Produtos P on P.CdTributacaoVendas = T.CdTributacaoVendas
WHERE P.CdProduto = @CdProduto
UPDATE #TmpCriaTributacaoVendas SET CdTributacaoVendas = ISNULL((SELECT MAX(CdTributacaoVendas) FROM TribVend),0) + 1
UPDATE Produtos set CdTributacaoVendas = CdTributacaoVendas where CdProduto = @CdProdutoDevolucao
INSERT TribVend
SELECT *
FROM #TmpCriaTributacaoVendas
END
IF (SELECT InTributacaoCompras FROM Produtos Where CdProduto = @CdProduto) = 2
BEGIN
SELECT T.*
INTO #TmpCriaTributacaoCompras
FROM TribComp T
INNER JOIN Produtos P on P.CdTributacaoCompras = T.CdTributacaoCompras
WHERE P.CdProduto = @CdProduto
UPDATE #TmpCriaTributacaoCompras SET CdTributacaoCompras = ISNULL((SELECT MAX(CdTributacaoCompras) FROM TribComp),0) + 1
UPDATE Produtos set CdTributacaoCompras = CdTributacaoCompras where CdProduto = @CdProdutoDevolucao
INSERT TribComp
SELECT *
FROM #TmpCriaTributacaoCompras
END
-- Insere registro de saldo zerado - Ednilson - 06/11/2007 - SS 12899
SELECT @CdFilial = MIN(CdFilial) FROM Filiais WHERE InAtiva = 1
IF @CdFilial > 0
EXEC SPAtualizaSaldo @CdFilial, @CdProdutoDevolucao, 0, NULL, 0, 0, 0, 0, 0, 0
---- Grava na tabela de relacionamento ----
INSERT ProdutoDevolucao (CdProduto, CdProdutoDevolucao)
VALUES (@CdProduto, @CdProdutoDevolucao)
END |
|