ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Problemas Com cpia de Dadso

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Jeffytaboni
Aprendiz
Aprendiz


Registrado: Terça-Feira, 24 de Julho de 2012
Mensagens: 107

MensagemEnviada: Qua Ago 01, 2012 11:22 am    Assunto: Problemas Com cpia de Dadso Responder com Citação

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
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB