The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT *
FROM CSL_WF_NOTIFICATIONS_inq
WHERE tranid$$ = b_tranid
AND clid$$cs = b_user_name;
SELECT *
FROM CSL_WF_NOTIFICATION_ATTR_INQ
WHERE tranid$$ = b_tranid
AND clid$$cs = b_user_name
AND notification_id = b_notification_id;
This procedure is called by APPLY_CLIENT_CHANGES when an inserted record is to be processed.
***/
PROCEDURE APPLY_INSERT
(
p_user_name IN VARCHAR2,
p_record IN c_notification%ROWTYPE,
p_error_msg OUT NOCOPY VARCHAR2,
x_return_status IN OUT NOCOPY VARCHAR2
) IS
CURSOR c_fnd_user
( b_user_name fnd_user.user_name%TYPE
)
IS
SELECT fu.user_name
, fu.start_date
, fu.end_date
FROM fnd_user fu
WHERE fu.user_name = b_user_name;
SELECT *
FROM WF_NOTIFICATION_ATTRIBUTES
WHERE NOTIFICATION_ID = b_notification_id
AND NAME = b_name;
, v_message => 'Entering ' || g_object_name || '.APPLY_INSERT'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/*Get the attributes for this notification ( SENDER, MESSAGE_TEXT, READ_FLAG, DELETE_FLAG )*/
/*Need to do this now because the record gets another PK*/
FOR r_notification_attr IN c_notification_attr( p_record.clid$$cs
, p_record.tranid$$
, p_record.notification_id ) LOOP
/*** First check if attri exists otherwise create it ***/
OPEN c_attr( b_notification_id => l_notification_id
, b_name => r_notification_attr.name );
, v_message => 'Leaving ' || g_object_name || '.APPLY_INSERT'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, v_message => 'Exception occurred in APPLY_INSERT:' || fnd_global.local_chr(10) || sqlerrm
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_INSERT', sqlerrm);
, v_message => 'Leaving ' || g_object_name || '.APPLY_INSERT'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END APPLY_INSERT;
This procedure is called by APPLY_CLIENT_CHANGES when an updated record is to be processed.
***/
PROCEDURE APPLY_UPDATE
(
p_record IN c_notification%ROWTYPE,
p_error_msg OUT NOCOPY VARCHAR2,
x_return_status IN OUT NOCOPY VARCHAR2
) IS
BEGIN
IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => p_record.notification_id
, v_object_name => g_object_name
, v_message => 'Entering ' || g_object_name || '.APPLY_UPDATE'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, v_message => 'Leaving ' || g_object_name || '.APPLY_UPDATE'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, v_message => 'Exception occurred in APPLY_UPDATE:' || fnd_global.local_chr(10) || sqlerrm
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_UPDATE', sqlerrm);
, v_message => 'Leaving ' || g_object_name || '.APPLY_UPDATE'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END APPLY_UPDATE;
APPLY_INSERT
(
p_user_name,
p_record,
p_error_msg,
x_return_status
);
APPLY_UPDATE
(
p_record,
p_error_msg,
x_return_status
);
, v_message => 'Delete is not supported for this entity'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
a fast sync. This procedure will insert the data that came from mobile into the backend tables using
public APIs.
***/
PROCEDURE APPLY_CLIENT_CHANGES
(
p_user_name IN VARCHAR2,
p_tranid IN NUMBER,
p_debug_level IN NUMBER,
x_return_status IN OUT NOCOPY VARCHAR2
) IS
l_process_status VARCHAR2(1);
CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
(
p_user_name,
p_tranid,
r_notification.seqno$$,
r_notification.notification_id,
g_object_name,
g_pub_name,
l_error_msg,
l_process_status
);
/*** was delete successful? ***/
IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
/*** no -> rollback ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => r_notification.notification_id
, v_object_name => g_object_name
, v_message => 'Deleting from inqueue failed, rolling back to savepoint'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
/*** Yes -> Delete Attributes ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => r_notification.notification_id
, v_object_name => g_object_name
, v_message => 'Deleting from inqueue succeeded, deleting attributes'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
(
p_user_name,
p_tranid,
r_notification_attr.seqno$$,
r_notification_attr.notification_id,
g_object_name,
'WF_NOTIFICATION_ATTR',
l_error_msg,
l_process_status
);
/*** Record was not processed successfully or delete failed -> defer and reject record ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => r_notification.notification_id
, v_object_name => g_object_name
, v_message => 'Record not processed successfully, deferring and rejecting record'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);