src-db/database/model/triggers/AD_PROCESS_TRL_TRG.xml
author Asier Lostalé <asier.lostale@openbravo.com>
Wed, 12 Nov 2008 13:14:11 +0000
changeset 1929 ad0353d93b0f
parent 785 8dba91261590
child 2078 cf88ca44cdd2
permissions -rw-r--r--
Merge back modularity branch to trunk.

Due to svn problems it has been merged using patch after updating modularity
with trunk rev 9900. This means that the svn log info for the files modified
in modularity branch will not be available.
<?xml version="1.0"?>
  <database name="TRIGGER AD_PROCESS_TRL_TRG">
    <trigger name="AD_PROCESS_TRL_TRG" table="AD_PROCESS_TRL" fires="after" insert="false" update="true" 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.
*************************************************************************
* AD_Process_Trl update trigger
*  synchronize name,... with  Field if centrally maintained
*/
BEGIN
  IF UPDATING
  THEN
    IF (   COALESCE (:OLD.NAME, '.') <> COALESCE (:NEW.NAME, '.')
        OR COALESCE (:OLD.Description, '.') <>
                                              COALESCE (:NEW.Description, '.')
        OR COALESCE (:OLD.HELP, '.') <> COALESCE (:NEW.HELP, '.')
        OR COALESCE (:OLD.IsTranslated, '.') <>
                                             COALESCE (:NEW.IsTranslated, '.')
       )
    THEN
      UPDATE AD_Field_Trl
         SET NAME = :NEW.NAME,
             Description = :NEW.Description,
             HELP = :NEW.HELP,
             IsTranslated = :NEW.IsTranslated,
             Updated = now()
       WHERE AD_Language = :NEW.AD_Language
         AND AD_Field_ID IN (
               SELECT F.AD_Field_ID
                 FROM AD_Field F, AD_Column C, ad_module m
                WHERE F.AD_Column_ID = C.AD_Column_ID
                  AND C.AD_Process_ID = :NEW.AD_Process_ID
                  AND F.IsCentrallyMaintained = 'Y'
                  and m.ad_module_id = f.ad_module_id
                  and m.ad_language = :new.ad_language);
                  
      UPDATE AD_Field f
         SET NAME = :NEW.NAME,
             Description = :NEW.Description,
             HELP = :NEW.HELP,             
             Updated = now()
       WHERE AD_Field_ID IN (
               SELECT F.AD_Field_ID
                 FROM AD_Column C, ad_module m
                WHERE F.AD_Column_ID = C.AD_Column_ID
                  AND C.AD_Process_ID = :NEW.AD_Process_ID
                  AND F.IsCentrallyMaintained = 'Y'
                  and m.ad_module_id = f.ad_module_id
                  and m.ad_language = :new.ad_language);
                  
     --column cannot be updated because of mutating tables
    END IF;
  END IF;
END AD_PROCESS_TRL_TRG
]]></body>
    </trigger>
  </database>