GARANTIR DESCONTO

Fórum Insert em Tabelas diferentes #26928

20/08/2008

0

Pessoas,

Tenho a seguinte missão:

Estou criando um botão onde faz a cópia de um registro já existente.
Este registro, vou chamar de Projeto, contém Fases.
As Fases contém Linhas.

Onde eu estou ´boiando´

Não sei como fazer para quando eu clicar no botão, o select fazer a cópia da fase e de todas as suas linhas e verificar se há mais fases(e se houver, copiar suas linhas também).

Estou aprendendo ainda a mexer com While, mas, não sei se é por este caminho.

Chaves primárias:

Project_ID
ProjectPhase_ID
ProjectLine_ID

Poderiam ajudar?

Obrigado.


Duley

Duley

Responder

Posts

20/08/2008

Duley

Estou usando o Seguinte SQL também, mas, não está funfando... o que falta?



CREATE OR REPLACE FUNCTION adempiere.project_copy (p_c_project_id numeric) RETURNS bool AS
´
declare vProject_Destino_IDnumeric(10);
declarevProject_Origem_IDnumeric(10);

begin


UPDATE AD_PInstance
SET Created = now(),
IsProcessing = ´´Y´´
WHERE AD_PInstance_ID=p_c_project_id;

SELECT Record_ID INTO vProject_Destino_ID FROM AD_PInstance WHERE AD_PInstance_ID = p_c_project_id;

SELECT P_Number INTO vProject_Origem_ID FROM AD_PInstance_Para WHERE ParameterName = ´´C_Project_ID´´ AND AD_PInstance_ID = p_c_project_id;

DELETE FROM C_Projectline WHERE C_ProjectPhase_ID = (select C_ProjectPhase_ID from C_ProjectPhase where C_Project_ID = vProject_Destino_ID);

DELETE FROM C_ProjectPhase WHERE C_Project_ID = vProject_Destino_ID;

LOOP

INSERT INTO C_ProjectPhase
(C_ProjectPhase_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated,
UpdatedBy, SeqNo, C_Project_ID, qty, Description, name, projinvoicerule)
SELECT sq_c_projectphase(), pp.AD_Client_ID, pp.AD_Org_ID, pp.IsActive, now(), 100, now(), 100,
pp.SeqNo, vProject_Destino_ID, pp.qty, pp.Description, pp.name, projinvoicerule
FROM C_ProjectPhase pp
WHERE pp.C_Project_ID = vProject_Origem_ID;

LOOP

INSERT INTO C_ProjectLine
(C_ProjectLine_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, Createdby, Updated,
UpdatedBy, Line, C_ProjectPhase_ID, Description, plannedqty, M_Product_ID)
SELECT sq_c_projectline(), pl.AD_Client_ID, pl.AD_Org_ID, pl.IsActive, now(), 100, now(), 100,
pl.Line, pl.C_ProjectPhase_ID, pl.Description, pl.plannedqty, pl.M_Product_ID
FROM C_ProjectLine pl
WHERE pl.C_ProjectPhase_ID = (select c_projectphase_id from c_projectphase where c_project_id = vProject_Origem_ID);

END LOOP;

END LOOP;

UPDATE AD_PInstance
SET Updated = now(),
IsProcessing = ´´N´´
WHERE AD_PInstance_ID=p_c_project_id;
RETURN(true);
end;
´
LANGUAGE ´plpgsql´
GO


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar