src-db/database/model/triggers/C_PROJECT_TRG.xml
author Juan Pablo Aroztegi <juanpablo.aroztegi@openbravo.com>
Mon, 28 Apr 2008 09:28:08 +0000
changeset 785 8dba91261590
parent 781 d68cf344696f
child 1067 4a05c922c488
permissions -rw-r--r--
Fix last update of copyright years in database files
<?xml version="1.0"?>
  <database name="TRIGGER C_PROJECT_TRG">
    <trigger name="C_PROJECT_TRG" table="C_PROJECT" fires="after" insert="true" update="false" delete="false" foreach="row">
      <body><![CDATA[
    /*************************************************************************
    * The contents of this file are subject to the Compiere Public
    * License 1.1 ("License"); You may not use this file except in
    * compliance with the License. You may obtain a copy of the License in
    * the legal folder of your Openbravo installation.
    * Software distributed under the License is distributed on an
    * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
    * implied. See the License for the specific language governing rights
    * and limitations under the License.
    * The Original Code is  Compiere  ERP &  Business Solution
    * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
    * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke,
    * parts created by ComPiere are Copyright (C) ComPiere, Inc.;
    * All Rights Reserved.
    * Contributor(s): Openbravo SL
    * Contributions are Copyright (C) 2001-2008 Openbravo, S.L.
    *
    * Specifically, this derivative work is based upon the following Compiere
    * file and version.
    *************************************************************************
    * $Id: C_Project_Trg.sql,v 1.3 2002/10/23 03:16:57 jjanke Exp $
    ***
    * Title: Project new record
    * Description:
    *  - create default accounts
    *  - create treenode
    ************************************************************************/
    v_Tree_ID NUMBER;
  v_Parent_ID NUMBER;
  --
  TYPE RECORD IS REF CURSOR;
    Cur_Defaults RECORD;
  BEGIN
    FOR Cur_Defaults IN
      (
      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
        )
      )
    LOOP
      --  Account
      INSERT
      INTO C_Project_Acct
        (
          C_Project_ID, C_AcctSchema_ID, AD_Client_ID,
          AD_Org_ID, IsActive, Created,
          CreatedBy, Updated, UpdatedBy,
          PJ_Asset_Acct, PJ_WIP_Acct
        )
        VALUES
        (
          :new.C_Project_ID, Cur_Defaults.C_AcctSchema_ID, :new.AD_Client_ID,
          :new.AD_ORG_ID,  'Y', now(),
          :new.CreatedBy, now(), :new.UpdatedBy,
          Cur_Defaults.PJ_Asset_Acct, Cur_Defaults.PJ_WIP_Acct
        )
        ;
    END LOOP;
    --  Create TreeNode --
    --  get AD_Tree_ID + ParentID
    SELECT c.AD_Tree_Project_ID,
      n.Node_ID
    INTO v_Tree_ID,
      v_Parent_ID
    FROM AD_ClientInfo c,
      AD_TreeNode n
    WHERE c.AD_Tree_Project_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.C_Project_ID||'  Parent='||xParent_ID);
    --  Insert into TreeNode
    INSERT
    INTO AD_TreeNode
      (
        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, v_Tree_ID, :new.C_Project_ID,
        v_Parent_ID,(
        CASE :new.IsSummary
          WHEN 'Y'
          THEN 100
          ELSE 999
        END
        )
      )
      ;
    -- Summary Nodes first
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'C_Project InsertTrigger Error: No ClientInfo or parent TreeNode') ;
END C_PROJECT_TRG
]]></body>
    </trigger>
  </database>