/*********************************************************************
* Copyright (C) 2000 by Progress Software Corporation ("PSC"),       *
* 14 Oak Park, Bedford, MA 01730, and other contributors as listed   *
* below.  All Rights Reserved.                                       *
*                                                                    *
* The Initial Developer of the Original Code is PSC.  The Original   *
* Code is Progress IDE code released to open source December 1, 2000.*
*                                                                    *
* The contents of this file are subject to the Possenet Public       *
* License Version 1.0 (the "License"); you may not use this file     *
* except in compliance with the License.  A copy of the License is   *
* available as of the date of this notice at                         *
* http://www.possenet.org/license.html                               *
*                                                                    *
* Software distributed under the License is distributed on an "AS IS"*
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. You*
* should refer to the License for the specific language governing    *
* rights and limitations under the License.                          *
*                                                                    *
* Contributors: MIP Holdings (Pty) Ltd ("MIP")                       *
*               PSC                                                  *
*                                                                    *
*********************************************************************/

TRIGGER PROCEDURE FOR DELETE OF ryc_smartobject .

/* Created automatically using ERwin ICF Trigger template db/af/erw/afercustrg.i
   Do not change manually. Customisations to triggers should be placed in separate
   include files pulled into the trigger. ICF auto generates write trigger custom
   include files. Delete or create customisation include files need to be created
   manually. Be sure to put the hook in ERwin directly so as not to have you changes
   overwritten.
   User defined Macro (UDP) Summary (case sensitive)
   ryc_smartobject           Expands to full table name, e.g. gsm_user
   %TableFLA            Expands to table unique code, e.g. gsmus
   %TableObj            If blank or not defined expands to table_obj with no prefix (framework standard)
                        If defined, uses this field as the object field
                        If set to "none" then indicates table does not have an object field
   XYZ                  Do not define so we can compare against an empty string

   See docs for explanation of replication macros 
*/   

&SCOPED-DEFINE TRIGGER_TABLE ryc_smartobject
&SCOPED-DEFINE TRIGGER_FLA rycso
&SCOPED-DEFINE TRIGGER_OBJ smartobject_obj


DEFINE BUFFER lb_table FOR ryc_smartobject.      /* Used for recursive relationships */
DEFINE BUFFER lb1_table FOR ryc_smartobject.     /* Used for lock upgrades */

DEFINE BUFFER o_ryc_smartobject FOR ryc_smartobject.

/* Standard top of DELETE trigger code */
{af/sup/aftrigtopd.i}

  

/* Code to update action underway table - used in replication trigger delete cascades */
IF VALID-HANDLE(gshSessionManager)
THEN DO:
  RUN setActionUnderway IN gshSessionManager
                       (INPUT "DYN":U
                       ,INPUT "DEL":U
                       ,INPUT STRING(ryc_smartobject.object_filename)
                       ,INPUT "rycso":U
                       ,INPUT STRING(ryc_smartobject.smartobject_obj)
                       ).
END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject is the db unbound object for gsc_manager_type ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST gsc_manager_type WHERE
    gsc_manager_type.db_unbound_smartobject_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|gsc_manager_type":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject is the db bound object for gsc_manager_type ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST gsc_manager_type WHERE
    gsc_manager_type.db_bound_smartobject_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|gsc_manager_type":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject is the class procedure for gsc_object_type ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST gsc_object_type WHERE
    gsc_object_type.class_smartobject_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|gsc_object_type":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject is run during gsm_flow_step ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST gsm_flow_step WHERE
    gsm_flow_step.object_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|gsm_flow_step":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject appears on gsm_menu_item ON PARENT DELETE CASCADE */
&IF DEFINED(lbe_menu_item) = 0 &THEN
  DEFINE BUFFER lbe_menu_item FOR gsm_menu_item.
  &GLOBAL-DEFINE lbe_menu_item yes
&ENDIF
FOR EACH gsm_menu_item NO-LOCK
   WHERE gsm_menu_item.object_obj = ryc_smartobject.smartobject_obj
   ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_menu_item":U:
    FIND FIRST lbe_menu_item EXCLUSIVE-LOCK
         WHERE ROWID(lbe_menu_item) = ROWID(gsm_menu_item)
         NO-ERROR.
    IF AVAILABLE lbe_menu_item THEN
      DO:
        {af/sup/afvalidtrg.i &action = "DELETE" &table = "lbe_menu_item"}
      END.
END.





/* Generated by ICF ERwin Template */
/* ryc_smartobject is the management object for gsc_service_type ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST gsc_service_type WHERE
    gsc_service_type.management_object_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|gsc_service_type":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject maintains gsc_service_type ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST gsc_service_type WHERE
    gsc_service_type.maintenance_object_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|gsc_service_type":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject may be run on gsm_valid_object_partition ON PARENT DELETE CASCADE */
&IF DEFINED(lbe_valid_object_partition) = 0 &THEN
  DEFINE BUFFER lbe_valid_object_partition FOR gsm_valid_object_partition.
  &GLOBAL-DEFINE lbe_valid_object_partition yes
&ENDIF
FOR EACH gsm_valid_object_partition NO-LOCK
   WHERE gsm_valid_object_partition.object_obj = ryc_smartobject.smartobject_obj
   ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_valid_object_partition":U:
    FIND FIRST lbe_valid_object_partition EXCLUSIVE-LOCK
         WHERE ROWID(lbe_valid_object_partition) = ROWID(gsm_valid_object_partition)
         NO-ERROR.
    IF AVAILABLE lbe_valid_object_partition THEN
      DO:
        {af/sup/afvalidtrg.i &action = "DELETE" &table = "lbe_valid_object_partition"}
      END.
END.





/* Generated by ICF ERwin Template */
/* ryc_smartobject uses gsm_security_structure ON PARENT DELETE SET NULL */

&IF DEFINED(lbe_security_structure) = 0 &THEN
  DEFINE BUFFER lbe_security_structure FOR gsm_security_structure.
  &GLOBAL-DEFINE lbe_security_structure yes
&ENDIF
FOR EACH gsm_security_structure NO-LOCK
   WHERE gsm_security_structure.object_obj = ryc_smartobject.smartobject_obj
   ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^update gsm_security_structure":U:
    FIND FIRST lbe_security_structure EXCLUSIVE-LOCK
         WHERE ROWID(lbe_security_structure) = ROWID(gsm_security_structure)
         NO-ERROR.
    IF AVAILABLE lbe_security_structure THEN
      DO:
        
        ASSIGN lbe_security_structure.object_obj = 0 .
      END.
END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject contains (for SmartToolbar type) gsm_toolbar_menu_structure ON PARENT DELETE CASCADE */
&IF DEFINED(lbe_toolbar_menu_structure) = 0 &THEN
  DEFINE BUFFER lbe_toolbar_menu_structure FOR gsm_toolbar_menu_structure.
  &GLOBAL-DEFINE lbe_toolbar_menu_structure yes
&ENDIF
FOR EACH gsm_toolbar_menu_structure NO-LOCK
   WHERE gsm_toolbar_menu_structure.object_obj = ryc_smartobject.smartobject_obj
   ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_toolbar_menu_structure":U:
    FIND FIRST lbe_toolbar_menu_structure EXCLUSIVE-LOCK
         WHERE ROWID(lbe_toolbar_menu_structure) = ROWID(gsm_toolbar_menu_structure)
         NO-ERROR.
    IF AVAILABLE lbe_toolbar_menu_structure THEN
      DO:
        {af/sup/afvalidtrg.i &action = "DELETE" &table = "lbe_toolbar_menu_structure"}
      END.
END.





/* Generated by ICF ERwin Template */
/* ryc_smartobject uses these dynamic gsm_object_menu_structure ON PARENT DELETE CASCADE */
&IF DEFINED(lbe_object_menu_structure) = 0 &THEN
  DEFINE BUFFER lbe_object_menu_structure FOR gsm_object_menu_structure.
  &GLOBAL-DEFINE lbe_object_menu_structure yes
&ENDIF
FOR EACH gsm_object_menu_structure NO-LOCK
   WHERE gsm_object_menu_structure.object_obj = ryc_smartobject.smartobject_obj
   ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_object_menu_structure":U:
    FIND FIRST lbe_object_menu_structure EXCLUSIVE-LOCK
         WHERE ROWID(lbe_object_menu_structure) = ROWID(gsm_object_menu_structure)
         NO-ERROR.
    IF AVAILABLE lbe_object_menu_structure THEN
      DO:
        {af/sup/afvalidtrg.i &action = "DELETE" &table = "lbe_object_menu_structure"}
      END.
END.





/* Generated by ICF ERwin Template */
/* ryc_smartobject contains ryc_page ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST ryc_page WHERE
    ryc_page.container_smartobject_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|ryc_page":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.



/* Generated by ICF ERwin Template */
/* ryc_smartobject contains ryc_smartlink ON PARENT DELETE CASCADE */
&IF DEFINED(lbe_smartlink) = 0 &THEN
  DEFINE BUFFER lbe_smartlink FOR ryc_smartlink.
  &GLOBAL-DEFINE lbe_smartlink yes
&ENDIF
FOR EACH ryc_smartlink NO-LOCK
   WHERE ryc_smartlink.container_smartobject_obj = ryc_smartobject.smartobject_obj
   ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete ryc_smartlink":U:
    FIND FIRST lbe_smartlink EXCLUSIVE-LOCK
         WHERE ROWID(lbe_smartlink) = ROWID(ryc_smartlink)
         NO-ERROR.
    IF AVAILABLE lbe_smartlink THEN
      DO:
        {af/sup/afvalidtrg.i &action = "DELETE" &table = "lbe_smartlink"}
      END.
END.





/* Generated by ICF ERwin Template */
/* ryc_smartobject container ryc_object_instance ON PARENT DELETE RESTRICT */
IF CAN-FIND(FIRST ryc_object_instance WHERE
    ryc_object_instance.container_smartobject_obj = ryc_smartobject.smartobject_obj) THEN
    DO:
      /* Cannot delete parent because child exists! */
      ASSIGN lv-error = YES lv-errgrp = "AF ":U lv-errnum = 101 lv-include = "ryc_smartobject|ryc_object_instance":U.
      RUN error-message (lv-errgrp, lv-errnum, lv-include).
    END.





/* Generic comments deletion */
DEFINE BUFFER lbx_gsm_comment FOR gsm_comment.
DEFINE BUFFER lby_gsm_comment FOR gsm_comment.
IF CAN-FIND(FIRST lbx_gsm_comment 
            WHERE lbx_gsm_comment.owning_obj = ryc_smartobject.{&TRIGGER_OBJ}) THEN
    FOR EACH lbx_gsm_comment NO-LOCK
       WHERE lbx_gsm_comment.owning_obj = ryc_smartobject.{&TRIGGER_OBJ}
       ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_comment":U:
        FIND FIRST lby_gsm_comment EXCLUSIVE-LOCK
             WHERE ROWID(lby_gsm_comment) = ROWID(lbx_gsm_comment)
             NO-ERROR.
        IF AVAILABLE lby_gsm_comment THEN
          DO:
            {af/sup/afvalidtrg.i &action = "DELETE" &table = "lby_gsm_comment"}
          END.
    END.
/* Generic security allocation deletion */
DEFINE BUFFER lbx_gsm_user_allocation FOR gsm_user_allocation.
DEFINE BUFFER lby_gsm_user_allocation FOR gsm_user_allocation.
IF CAN-FIND(FIRST lbx_gsm_user_allocation 
            WHERE lbx_gsm_user_allocation.owning_obj = ryc_smartobject.{&TRIGGER_OBJ}) THEN
    FOR EACH lbx_gsm_user_allocation NO-LOCK
       WHERE lbx_gsm_user_allocation.owning_obj = ryc_smartobject.{&TRIGGER_OBJ}
       ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_user_allocation":U:
        FIND FIRST lby_gsm_user_allocation EXCLUSIVE-LOCK
             WHERE ROWID(lby_gsm_user_allocation) = ROWID(lbx_gsm_user_allocation)
             NO-ERROR.
        IF AVAILABLE lby_gsm_user_allocation THEN
          DO:
            {af/sup/afvalidtrg.i &action = "DELETE" &table = "lby_gsm_user_allocation"}
          END.
    END.
/* Generic multi-media deletion */
DEFINE BUFFER lbx_gsm_multi_media FOR gsm_multi_media.
DEFINE BUFFER lby_gsm_multi_media FOR gsm_multi_media.
IF CAN-FIND(FIRST lbx_gsm_multi_media 
            WHERE lbx_gsm_multi_media.owning_obj = ryc_smartobject.{&TRIGGER_OBJ}) THEN
    FOR EACH lbx_gsm_multi_media NO-LOCK
       WHERE lbx_gsm_multi_media.owning_obj = ryc_smartobject.{&TRIGGER_OBJ}
       ON STOP UNDO, RETURN ERROR "AF^104^rycsotrigd.p^delete gsm_multi_media":U:
        FIND FIRST lby_gsm_multi_media EXCLUSIVE-LOCK
             WHERE ROWID(lby_gsm_multi_media) = ROWID(lbx_gsm_multi_media)
             NO-ERROR.
        IF AVAILABLE lby_gsm_multi_media THEN
          DO:
            {af/sup/afvalidtrg.i &action = "DELETE" &table = "lby_gsm_multi_media"}
          END.
    END.










/* Update Audit Log */
IF CAN-FIND(FIRST gsc_entity_mnemonic
            WHERE gsc_entity_mnemonic.entity_mnemonic = 'rycso':U
              AND gsc_entity_mnemonic.auditing_enabled = YES) THEN
  RUN af/app/afauditlgp.p (INPUT "DELETE":U, INPUT "rycso":U, INPUT BUFFER ryc_smartobject:HANDLE, INPUT BUFFER o_ryc_smartobject:HANDLE).

/* Standard bottom of DELETE trigger code */
{af/sup/aftrigendd.i}


/* Place any specific DELETE trigger customisations here */

{icf/trg/rycsotrigd.i}


