src-db/database/model/triggers/AD_REFERENCE_TRG2.xml
author Juan Pablo Aroztegi <juanpablo.aroztegi@openbravo.com>
Wed, 03 Sep 2008 17:55:37 +0000
changeset 1605 8a0fe0193bef
parent 756 ae11e4610537
child 2053 6e9ef1cf04b3
permissions -rw-r--r--
Merge r2.5x intro trunk
<?xml version="1.0"?>
  <database name="TRIGGER AD_REFERENCE_TRG2">
    <trigger name="AD_REFERENCE_TRG2" table="AD_REFERENCE" fires="after" 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):  ______________________________________.
************************************************************************/
 v_ID       varchar2(32);
 v_ID_MAP      VARCHAR2(32);
 v_WindowName     VARCHAR2(60):= 'info';
 v_ClassName     VARCHAR2(60);
BEGIN
  IF (UPDATING) THEN
    IF NOT((COALESCE(:old.NAME,'.')<>COALESCE(:NEW.NAME,'.')
   OR COALESCE(:old.VALIDATIONTYPE,'.')<>COALESCE(:NEW.VALIDATIONTYPE,'.')
   OR COALESCE(:old.IsActive,'.')<>COALESCE(:NEW.IsActive,'.')))
  THEN
      RETURN;
    END IF;
  END IF;

 IF (UPDATING OR DELETING) THEN
  IF :OLD.VALIDATIONTYPE='S' AND :OLD.ISACTIVE='Y' THEN
   DELETE FROM AD_MODEL_OBJECT_MAPPING WHERE AD_MODEL_OBJECT_ID IN (
      SELECT AD_MODEL_OBJECT_ID FROM AD_MODEL_OBJECT WHERE AD_MODEL_OBJECT.AD_REFERENCE_ID=:old.AD_REFERENCE_ID AND ACTION = 'S');
   DELETE FROM AD_MODEL_OBJECT WHERE ACTION = 'S' AND AD_MODEL_OBJECT.AD_REFERENCE_ID = :OLD.AD_REFERENCE_ID;
  END IF;
 END IF;

 IF (INSERTING OR UPDATING) THEN
  IF :NEW.VALIDATIONTYPE='S' AND :NEW.ISACTIVE='Y' THEN
   v_ClassName := AD_MAPPING_FORMAT(TO_CHAR(:NEW.NAME));
   Ad_Sequence_Next('AD_Model_Object', :new.AD_Client_ID, v_ID);
   INSERT INTO AD_MODEL_OBJECT (AD_MODEL_OBJECT_ID, AD_CLIENT_ID, AD_ORG_ID, ISACTIVE, CREATED, CREATEDBY,
   UPDATED, UPDATEDBY, ACTION, AD_REFERENCE_ID, CLASSNAME, ISDEFAULT)
   VALUES (v_ID, :new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.CREATEDBY,
   now(), :new.UPDATEDBY, 'S', :new.AD_REFERENCE_ID, 'org.openbravo.erpCommon.' || v_WindowName || '.' || v_ClassName, 'Y');

   Ad_Sequence_Next('AD_Model_Object_Mapping', :new.AD_Client_ID, v_ID_MAP);
   INSERT INTO AD_MODEL_OBJECT_MAPPING (AD_MODEL_OBJECT_MAPPING_ID, AD_CLIENT_ID, AD_ORG_ID,
   ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, AD_MODEL_OBJECT_ID, MAPPINGNAME, ISDEFAULT)
   VALUES (v_ID_MAP, :new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.CREATEDBY,
   now(), :new.UPDATEDBY, v_ID, ('/' || v_WindowName || '/' || v_ClassName || '_FS.html'), 'Y');

   Ad_Sequence_Next('AD_Model_Object_Mapping', :new.AD_Client_ID, v_ID_MAP);
   INSERT INTO AD_MODEL_OBJECT_MAPPING (AD_MODEL_OBJECT_MAPPING_ID, AD_CLIENT_ID, AD_ORG_ID,
   ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, AD_MODEL_OBJECT_ID, MAPPINGNAME, ISDEFAULT)
   VALUES (v_ID_MAP, :new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.CREATEDBY,
   now(), :new.UPDATEDBY, v_ID, ('/' || v_WindowName || '/' || v_ClassName || '_F1.html'), 'N');

   Ad_Sequence_Next('AD_Model_Object_Mapping', :new.AD_Client_ID, v_ID_MAP);
   INSERT INTO AD_MODEL_OBJECT_MAPPING (AD_MODEL_OBJECT_MAPPING_ID, AD_CLIENT_ID, AD_ORG_ID,
   ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, AD_MODEL_OBJECT_ID, MAPPINGNAME, ISDEFAULT)
   VALUES (v_ID_MAP, :new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.CREATEDBY,
   now(), :new.UPDATEDBY, v_ID, ('/' || v_WindowName || '/' || v_ClassName || '_F2.html'), 'N');

   Ad_Sequence_Next('AD_Model_Object_Mapping', :new.AD_Client_ID, v_ID_MAP);
   INSERT INTO AD_MODEL_OBJECT_MAPPING (AD_MODEL_OBJECT_MAPPING_ID, AD_CLIENT_ID, AD_ORG_ID,
   ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY, AD_MODEL_OBJECT_ID, MAPPINGNAME, ISDEFAULT)
   VALUES (v_ID_MAP, :new.AD_CLIENT_ID, :new.AD_ORG_ID, 'Y', now(), :new.CREATEDBY,
   now(), :new.UPDATEDBY, v_ID, ('/' || v_WindowName || '/' || v_ClassName || '_F3.html'), 'N');
  END IF;
 END IF;

END AD_REFERENCE_TRG2
]]></body>
    </trigger>
  </database>