📄 ad_process_trg.sql
字号:
CREATE OR REPLACE TRIGGER AD_Process_Trg
AFTER INSERT OR UPDATE OF IsActive, Name, Description, Help
ON AD_Process
FOR EACH ROW
DECLARE
/*************************************************************************
* The contents of this file are subject to the Compiere License. You may
* obtain a copy of the License at http://www.compiere.org/license.html
* Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the License for details. Code: Compiere ERP+CRM
* Copyright (C) 1999-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved.
*************************************************************************
* $Id: AD_Process_Trg.sql,v 1.3 2002/09/16 04:14:40 jjanke Exp $
***
* Title: Process Trigger
* Description:
* Synchronize Names and Translation
* Sync IsActive with Menu / Field
************************************************************************/
BEGIN
-- Insert AD_Process Trigger
-- for Translation
-- add Access
IF INSERTING THEN
-- Create Translation Row
INSERT INTO AD_Process_Trl
(AD_Process_ID, AD_Language, AD_Client_ID, AD_Org_ID,
IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Description, Help, IsTranslated)
SELECT :new.AD_Process_ID, AD_Language, :new.AD_Client_ID, :new.AD_Org_ID,
:new.IsActive, :new.Created, :new.CreatedBy, :new.Updated, :new.UpdatedBy,
:new.Name, :new.Description, :new.Help, 'N'
FROM AD_Language
WHERE IsActive = 'Y' AND IsSystemLanguage = 'Y';
-- Add Access for all Roles
INSERT INTO AD_Process_Access
(AD_Process_ID, AD_Role_ID,
AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy, IsReadWrite)
SELECT :new.AD_Process_ID, r.AD_Role_ID,
r.AD_CLIENT_ID, r.AD_ORG_ID, 'Y', SysDate, 0, SysDate, 0, 'Y'
FROM AD_Role r;
END IF; -- Inserting
-- AD_Process update trigger
-- synchronize name,...
-- update AD_Column/AD_Field Name
IF UPDATING THEN
UPDATE AD_Process_Trl
SET IsTranslated = 'N',
Updated=SysDate
WHERE AD_Process_ID = :new.AD_Process_ID;
UPDATE AD_Column
SET Name = :new.Name,
Description = :new.Description,
Help = :new.Help,
Updated = SysDate
WHERE AD_Process_ID = :new.AD_Process_ID;
UPDATE AD_Field f
SET Name = :new.Name,
Description = :new.Description,
Help = :new.Help,
Updated = SysDate
WHERE EXISTS (SELECT * FROM AD_Column c
WHERE f.AD_Column_ID = c.AD_Column_ID
AND c.AD_Process_ID = :new.AD_Process_ID
AND f.IsCentrallyMaintained = 'Y');
END IF; -- Updating
-- Changed IsActive
IF (UPDATING AND :new.IsActive<>:old.IsActive) THEN
-- Menu
UPDATE AD_Menu
SET IsActive = :new.IsActive
WHERE AD_Process_ID = :new.AD_Process_ID;
-- AD_Column -> Field
UPDATE AD_Field
SET IsActive = :new.IsActive
WHERE AD_Column_ID = (SELECT AD_Column_ID FROM AD_Column
WHERE AD_Process_ID = :new.AD_Process_ID);
-- AD_WF_Node
END IF;
END AD_Process_Trg;
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -