src-db/database/model/triggers/C_ORDERTAX_TRG.xml
author Juan Pablo Aroztegi <juanpablo.aroztegi@openbravo.com>
Wed, 03 Sep 2008 17:55:37 +0000
changeset 1605 8a0fe0193bef
parent 785 8dba91261590
child 2078 cf88ca44cdd2
permissions -rw-r--r--
Merge r2.5x intro trunk
<?xml version="1.0"?>
  <database name="TRIGGER C_ORDERTAX_TRG">
    <trigger name="C_ORDERTAX_TRG" table="C_ORDERTAX" fires="after" insert="true" update="true" delete="true" 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_OrderTax_Trg.sql,v 1.3 2003/01/31 03:03:04 jjanke Exp $
    ***
    * Title: ReadOnly Check
    * Description:
    ************************************************************************/
    v_ID VARCHAR2(32);
  v_RO         NUMBER;
  v_Processed  CHAR(1) ;
  v_C_ORDER_ID VARCHAR2(32) ;
  v_Docaction NVARCHAR2(2) ;
BEGIN
  IF INSERTING THEN
    v_C_ORDER_ID:=:new.C_ORDER_ID;
  ELSE
    v_C_ORDER_ID:=:old.C_ORDER_ID;
  END IF;
  SELECT PROCESSED,
    DOCACTION
  INTO v_Processed,
    v_Docaction
  FROM C_ORDER
  WHERE C_ORDER_ID=v_C_ORDER_ID;
  IF UPDATING THEN
    IF(v_Processed='Y' AND v_Docaction <> 'CL'
    AND ((COALESCE(:old.TAXBASEAMT, 0) <> COALESCE(:new.TAXBASEAMT, 0))
    OR(COALESCE(:old.TAXAMT, 0) <> COALESCE(:new.TAXAMT, 0))
    OR(COALESCE(:old.C_TAX_ID, '0') <> COALESCE(:new.C_TAX_ID, '0'))
    OR(COALESCE(:old.AD_ORG_ID, '0') <> COALESCE(:new.AD_ORG_ID, '0'))
    OR(COALESCE(:old.AD_CLIENT_ID, '0') <> COALESCE(:new.AD_CLIENT_ID, '0')))) THEN
      RAISE_APPLICATION_ERROR(-20501, 'Document processed/posted') ;
    END IF;
  END IF;
  NULL;
  IF((DELETING OR INSERTING) AND v_Processed='Y' AND v_Docaction <> 'CL') THEN
    RAISE_APPLICATION_ERROR(-20501, 'Document processed/posted') ;
  END IF;
  /** Is not needed
  -- Get ID
  IF (UPDATING OR INSERTING) THEN
  v_ID:=:new.C_Order_ID;
  ELSE
  v_ID:=:old.C_Order_ID;
  END IF;
  -- ReadOnly Check
  SELECT COUNT(*)
  INTO v_RO
  FROM C_Order
  WHERE C_Order_ID=v_ID
  AND DocAction <> 'CL' -- allow to close order
  AND (Processed='Y' OR Posted='Y');
  IF (v_RO > 0) THEN
  RAISE_APPLICATION_ERROR(-20501, 'Document processed/posted');
  END IF;
  **/
END C_ORDERTAX_TRG
]]></body>
    </trigger>
  </database>