⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_bpartner_trg.sql

📁 Java写的ERP系统
💻 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 + -