src-db/database/model/triggers/A_AMORTIZATION_TRG.xml
author Juan Pablo Aroztegi <juanpablo.aroztegi@openbravo.com>
Wed, 03 Sep 2008 17:55:37 +0000
changeset 1605 8a0fe0193bef
parent 756 ae11e4610537
child 2078 cf88ca44cdd2
permissions -rw-r--r--
Merge r2.5x intro trunk
<?xml version="1.0"?>
  <database name="TRIGGER A_AMORTIZATION_TRG">
    <trigger name="A_AMORTIZATION_TRG" table="A_AMORTIZATION" fires="before" insert="true" update="true" delete="true" foreach="row">
      <body><![CDATA[





/*************************************************************************
* The contents of this file are subject to the Openbravo  Public  License
* Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
* Version 1.1  with a permitted attribution clause; you may not  use this
* file except in compliance with the License. You  may  obtain  a copy of
* the License at http://www.openbravo.com/legal/license.html
* 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 Openbravo ERP.
* The Initial Developer of the Original Code is Openbravo SL
* All portions are Copyright (C) 2001-2006 Openbravo SL
* All Rights Reserved.
* Contributor(s):  ______________________________________.
************************************************************************/
    /*************************************************************************
    * Title: Check in deleting, invoice not processed
    ************************************************************************/
    v_DateNull DATE := TO_DATE('31-12-9999','DD-MM-YYYY');
    BEGIN
    -- If invoice is processed, is not allowed to change C_BPartner
    IF UPDATING
    THEN  if((:OLD.Processed='Y'
    OR :OLD.Posted='Y')
    AND (  COALESCE(:old.NAME, '')!=COALESCE(:new.NAME, '')
    OR COALESCE(:old.DESCRIPTION, '')!=COALESCE(:new.DESCRIPTION, '')
    OR COALESCE(:old.DATEACCT, v_DateNull)!=COALESCE(:new.DATEACCT, v_DateNull)
    OR COALESCE(:old.STARTDATE, v_DateNull)!=COALESCE(:new.STARTDATE, v_DateNull)
    OR COALESCE(:old.ENDDATE, v_DateNull)!=COALESCE(:new.ENDDATE, v_DateNull)
    OR COALESCE(:old.C_PROJECT_ID, '0')!=COALESCE(:new.C_PROJECT_ID, '0')
    OR COALESCE(:old.C_CAMPAIGN_ID, '0')!=COALESCE(:new.C_CAMPAIGN_ID, '0')
    OR COALESCE(:old.C_ACTIVITY_ID, '0')!=COALESCE(:new.C_ACTIVITY_ID, '0')
    OR COALESCE(:old.USER1_ID, '0')!=COALESCE(:new.USER1_ID, '0')
    OR COALESCE(:old.USER2_ID, '0')!=COALESCE(:new.USER2_ID, '0')
    OR COALESCE(:old.C_CURRENCY_ID, '0')!=COALESCE(:new.C_CURRENCY_ID, '0')
    OR COALESCE(:old.TOTALAMORTIZATION, 0)!=COALESCE(:new.TOTALAMORTIZATION, 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;
 IF(INSERTING) THEN
  IF(:NEW.PROCESSED='Y') THEN
    RAISE_APPLICATION_ERROR(-20501, 'Document processed/posted') ;
  END IF;
 END IF;
 IF(DELETING) THEN
  IF(:old.PROCESSED='Y') THEN
    RAISE_APPLICATION_ERROR(-20501, 'Document processed/posted') ;
  END IF;
 END IF;
END A_AMORTIZATION_TRG
]]></body>
    </trigger>
  </database>