📄 c_bpartner_trg.sql
字号:
CREATE OR REPLACE TRIGGER C_BPartner_Trg
AFTER INSERT
ON C_BPartner
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: C_BPartner_Trg.sql,v 1.4 2002/10/23 03:16:57 jjanke Exp $
***
* Title: Business Partner new necord
* Description:
* - create default Account records
* - add treenode
************************************************************************/
xTree_ID NUMBER;
xParent_ID NUMBER;
CURSOR Cur_Defaults IS
SELECT *
FROM C_BP_Group_Acct d
WHERE d.C_BP_Group_ID=:new.C_BP_Group_ID;
CURSOR Cur_Defaults2 IS
SELECT * FROM C_AcctSchema_Default d
WHERE EXISTS (SELECT * FROM AD_ClientInfo c
WHERE d.C_AcctSchema_ID IN (c.C_AcctSchema1_ID, c.C_AcctSchema2_ID, c.C_AcctSchema3_ID)
AND AD_Client_ID=:new.AD_Client_ID);
BEGIN
-- Default Accounts for all AcctSchema
FOR cd IN Cur_Defaults LOOP
-- Customer
INSERT INTO C_BP_Customer_Acct
(C_BPartner_ID, C_AcctSchema_ID,
AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
C_Receivable_Acct, C_Prepayment_Acct)
VALUES
(:new.C_BPartner_ID, cd.C_AcctSchema_ID,
:new.AD_Client_ID, :new.AD_Org_ID, 'Y', SysDate, :new.CreatedBy, SysDate, :new.UpdatedBy,
cd.C_Receivable_Acct, cd.C_Prepayment_Acct);
-- Vendor
INSERT INTO C_BP_Vendor_Acct
(C_BPartner_ID, C_AcctSchema_ID,
AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
V_Liability_Acct, V_Liability_Services_Acct, V_Prepayment_Acct)
VALUES
(:new.C_BPartner_ID, cd.C_AcctSchema_ID,
:new.AD_Client_ID, :new.AD_Org_ID, 'Y', SysDate, :new.CreatedBy, SysDate, :new.UpdatedBy,
cd.V_Liability_Acct, cd.V_Liability_Services_Acct, cd.V_Prepayment_Acct);
END LOOP;
FOR cd IN Cur_Defaults2 LOOP
-- Employee
INSERT INTO C_BP_Employee_Acct
(C_BPartner_ID, C_AcctSchema_ID,
AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
E_Expense_Acct, E_Prepayment_Acct)
VALUES
(:new.C_BPartner_ID, cd.C_AcctSchema_ID,
:new.AD_Client_ID, :new.AD_Org_ID, 'Y', SysDate, :new.CreatedBy, SysDate, :new.UpdatedBy,
cd.E_Expense_Acct, cd.E_Prepayment_Acct);
END LOOP;
-- Create TreeNode --
-- get AD_Tree_ID + ParentID
SELECT c.AD_Tree_BPartner_ID, n.Node_ID
INTO xTree_ID, xParent_ID
FROM AD_ClientInfo c, AD_TreeNodeBP n
WHERE c.AD_Tree_BPartner_ID=n.AD_Tree_ID
AND n.Parent_ID IS NULL
AND c.AD_Client_ID=:new.AD_Client_ID;
-- DBMS_OUTPUT.PUT_LINE('Tree='||xTree_ID||' Node='||:new.AD_Menu_ID||' Parent='||xParent_ID);
-- Insert into TreeNode
INSERT INTO AD_TreeNodeBP
(AD_Client_ID, AD_Org_ID,
IsActive, Created, CreatedBy, Updated, UpdatedBy,
AD_Tree_ID, Node_ID,
Parent_ID, SeqNo)
VALUES
(:new.AD_Client_ID, :new.AD_Org_ID,
:new.IsActive, :new.Created, :new.CreatedBy, :new.Updated, :new.UpdatedBy,
xTree_ID, :new.C_BPartner_ID,
xParent_ID, DECODE(:new.IsSummary, 'Y', 100, 999)); -- Summary Nodes first
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-20001, 'C_BPartner InsertTrigger Error: No ClientInfo or parent TreeNode');
END C_BPartner_Trg;
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -