The following lines contain the word 'select', 'insert', 'update' or 'delete':
g_old_resource_id NUMBER; -- variable containing old resource_id; populated in Pre_Update hook
SELECT *
FROM JTF_TASK_ASSIGNMENTS -- don't use synonym as that one filters on OWNER records
WHERE task_assignment_id = b_task_assignment_id
AND resource_type_code = 'RS_EMPLOYEE';
SELECT null
FROM JTF_TASK_STATUSES_B
WHERE TASK_STATUS_ID = b_assignment_status_id
AND (
NVL(ASSIGNED_FLAG, 'N') = 'Y'
OR NVL(CANCELLED_FLAG, 'N') = 'Y'
OR NVL(COMPLETED_FLAG, 'N') = 'Y'
OR NVL(CLOSED_FLAG, 'N') = 'Y'
);
SELECT tk.TASK_ID
FROM JTF_TASK_ASSIGNMENTS ta
, JTF_TASKS_B tk
WHERE tk.TASK_ID = ta.TASK_ID
AND tk.SOURCE_OBJECT_TYPE_CODE = 'TASK'
AND ta.TASK_ASSIGNMENT_ID = b_task_assignment_id;
PROCEDURE Insert_ACC_Record
( p_task_assignment_id IN NUMBER
,p_resource_id IN NUMBER
)
IS
--Bug 3724142
CURSOR c_debrief_header ( b_task_assignment_id NUMBER)
IS SELECT debrief_header_id FROM csf_debrief_headers
WHERE task_assignment_id = b_task_assignment_id;
, 'Entering Insert_ACC_Record'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, 'Inserting ACC record for resource_id = ' || p_resource_id
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
JTM_HOOK_UTIL_PKG.Insert_Acc
( P_PUBLICATION_ITEM_NAMES => g_publication_item_name
,P_ACC_TABLE_NAME => g_acc_table_name
,P_PK1_NAME => g_pk1_name
,P_PK1_NUM_VALUE => p_task_assignment_id
,P_RESOURCE_ID => p_resource_id
);
/* insert debrief */
CSL_CSF_DEBRIEF_LINE_ACC_PKG.Pre_Insert_Children
( p_task_assignment_id
,p_resource_id
);
/* insert attachment - signature record */
--Bug 3724142 - changed p_task_assignment_id to l_debrief_header_id
CSL_LOBS_ACC_PKG.insert_acc_record
( l_debrief_header_id
,p_resource_id
);
, 'Leaving Insert_ACC_Record'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END Insert_ACC_Record;
PROCEDURE Update_ACC_Record
( p_task_assignment_id IN NUMBER
,p_resource_id IN NUMBER
,p_acc_id IN NUMBER
)
IS
BEGIN
IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
jtm_message_log_pkg.Log_Msg
( p_task_assignment_id
, g_table_name
, 'Entering Update_ACC_Record'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
JTM_HOOK_UTIL_PKG.Update_Acc
( P_PUBLICATION_ITEM_NAMES => g_publication_item_name
,P_ACC_TABLE_NAME => g_acc_table_name
,P_RESOURCE_ID => p_resource_id
,P_ACCESS_ID => p_acc_id
);
, 'Leaving Update_ACC_Record'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END Update_ACC_Record;
/*** Private procedure that deletes assignment for resource from acc table ***/
PROCEDURE Delete_ACC_Record
( p_task_assignment_id IN NUMBER
,p_resource_id IN NUMBER
)
IS
BEGIN
IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
jtm_message_log_pkg.Log_Msg
( p_task_assignment_id
, g_table_name
, 'Entering Delete_ACC_Record'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/* Delete Attachments - Signature */
CSL_LOBS_ACC_PKG.delete_acc_record
( p_task_assignment_id
,p_resource_id
);
/* delete debrief header, lines */
CSL_CSF_DEBRIEF_LINE_ACC_PKG.Post_Delete_Children
( p_task_assignment_id,
p_resource_id
);
/*** Delete task assignment ACC record ***/
JTM_HOOK_UTIL_PKG.Delete_Acc
( P_PUBLICATION_ITEM_NAMES => g_publication_item_name
,P_ACC_TABLE_NAME => g_acc_table_name
,P_PK1_NAME => g_pk1_name
,P_PK1_NUM_VALUE => p_task_assignment_id
,P_RESOURCE_ID => p_resource_id
);
, 'Leaving Delete_ACC_Record'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END Delete_ACC_Record;
SELECT task_id
FROM jtf_task_assignments -- don't use synonym as that one filters on OWNER records
WHERE task_assignment_id = b_task_assignment_id;
, 'Post_Delete_Child error: Could not find task_assignment_id ' || p_task_assignment_id
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
Public function that gets called when an assignment needs to be inserted into ACC table.
Returns TRUE when record already was or has been inserted into ACC table.
***/
FUNCTION Pre_Insert_Child
( p_task_assignment_id IN NUMBER
,p_resource_id IN NUMBER
,p_flow_type IN NUMBER --DEFAULT CSL_CS_INCIDENTS_ALL_ACC_PKG.G_FLOW_NORMAL
)
RETURN BOOLEAN
IS
l_success BOOLEAN;
, 'Entering Pre_Insert_Child procedure'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/*** yes -> is insert task acc record successful? ***/
IF CSL_JTF_TASKS_ACC_PKG.Pre_Insert_Child( GetParentId( p_task_assignment_id), p_resource_id) THEN
/*** yes -> insert assignment acc record ***/
Insert_ACC_Record
( p_task_assignment_id
,p_resource_id
);
Insert_ACC_Record
( p_task_assignment_id
,p_resource_id
);
, 'Leaving Pre_Insert_Child procedure'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END Pre_Insert_Child;
Public procedure that gets called when an assignment needs to be deleted from ACC table.
***/
PROCEDURE Post_Delete_Child
( p_task_assignment_id IN NUMBER
,p_resource_id IN NUMBER
,p_flow_type IN NUMBER --DEFAULT CSL_CS_INCIDENTS_ALL_ACC_PKG.G_FLOW_NORMAL
)
IS
l_acc_id NUMBER;
, 'Entering Post_Delete_Child'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/*** yes -> delete assignment record from ACC ***/
Delete_ACC_Record
( p_task_assignment_id
,p_resource_id);
/*** call delete task ***/
IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
jtm_message_log_pkg.Log_Msg
( p_task_assignment_id
, g_table_name
, 'Calling CSL_JTF_TASKS_ACC_PKG.Post_Delete_Child'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
CSL_JTF_TASKS_ACC_PKG.Post_Delete_Child( GetParentId( p_task_assignment_id), p_resource_id );
, 'Leaving Post_Delete_Child'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END Post_Delete_Child;
PROCEDURE INSERT_ALL_ACC_RECORDS( p_resource_id IN NUMBER, x_return_status OUT NOCOPY VARCHAR2 ) IS
CURSOR c_task_assignment( b_resource_id NUMBER ) IS
SELECT TASK_ASSIGNMENT_ID
FROM JTF_TASK_ASSIGNMENTS
WHERE ASSIGNEE_ROLE = 'ASSIGNEE'
AND RESOURCE_ID = b_resource_id;
l_return_status := Pre_Insert_Child
( r_task_assignment.task_assignment_id
,p_resource_id);
END INSERT_ALL_ACC_RECORDS;
PROCEDURE DELETE_ALL_ACC_RECORDS( p_resource_id IN NUMBER, x_return_status OUT NOCOPY VARCHAR2 ) IS
CURSOR c_task_assignment( b_resource_id NUMBER ) IS
SELECT TASK_ASSIGNMENT_ID
FROM JTF_TASK_ASSIGNMENTS
WHERE ASSIGNEE_ROLE = 'ASSIGNEE'
AND RESOURCE_ID = b_resource_id;
Post_Delete_Child
( r_task_assignment.task_assignment_id
,p_resource_id);
END DELETE_ALL_ACC_RECORDS;
/*** Called before assignment Insert ***/
PROCEDURE PRE_INSERT_TASK_ASSIGNMENT
( x_return_status OUT NOCOPY varchar2
)
IS
BEGIN
x_return_status := FND_API.G_RET_STS_SUCCESS;
END PRE_INSERT_TASK_ASSIGNMENT;
/*** Called after assignment Insert ***/
PROCEDURE POST_INSERT_TASK_ASSIGNMENT
( x_return_status OUT NOCOPY varchar2
)
IS
l_resource_id NUMBER;
, 'Entering POST_INSERT hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/*** Insert record if applicable ***/
l_dummy := Pre_Insert_Child
( l_task_assignment_id
,l_resource_id
);
, 'Leaving POST_INSERT hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, 'Caught exception in POST_INSERT hook:' || fnd_global.local_chr(10) || sqlerrm
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
fnd_msg_pub.Add_Exc_Msg('CSL_JTF_TASK_ASS_ACC_PKG','POST_INSERT_TASK_ASSIGNMENT',sqlerrm);
END POST_INSERT_TASK_ASSIGNMENT;
/* Called before assignment Update */
PROCEDURE PRE_UPDATE_TASK_ASSIGNMENT
( x_return_status OUT NOCOPY varchar2
)
IS
CURSOR c_task_assignment( b_task_assignment_id NUMBER ) IS
SELECT resource_id
FROM jtf_task_assignments -- don't use synonym as that one filters on OWNER records
WHERE task_assignment_id = b_task_assignment_id;
, 'Entering PRE_UPDATE hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, 'Leaving PRE_UPDATE hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, 'Caught exception in PRE_UPDATE hook:' || fnd_global.local_chr(10) || sqlerrm
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
fnd_msg_pub.Add_Exc_Msg('CSL_JTF_TASK_ASS_ACC_PKG','PRE_UPDATE_TASK_ASSIGNMENT',sqlerrm);
END PRE_UPDATE_TASK_ASSIGNMENT;
/* Called after assignment Update */
PROCEDURE POST_UPDATE_TASK_ASSIGNMENT
( x_return_status OUT NOCOPY varchar2
)
IS
l_resource_id NUMBER;
, 'Entering POST_UPDATE hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/*** yes -> do cascading delete for old resource_id ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( l_task_assignment_id
, g_table_name
, 'Task assignment resource_id changed from ' || g_old_resource_id || ' to ' || l_resource_id || '.' || fnd_global.local_chr(10) ||
'Deleting old assignment ACC record (if exists).'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
Post_Delete_Child
( l_task_assignment_id
,g_old_resource_id);
/*** resource_id is same as before the update -> check if it already exists on mobile ***/
l_acc_id := JTM_HOOK_UTIL_PKG.Get_Acc_Id
( P_ACC_TABLE_NAME => g_acc_table_name
,P_PK1_NAME => g_pk1_name
,P_PK1_NUM_VALUE => l_task_assignment_id
,P_RESOURCE_ID => l_resource_id);
/*** check if updated record needs to be replicated ***/
l_replicate := Replicate_Record( l_task_assignment_id );
/*** record doesn't exist on mobile but should be replicated -> Insert ***/
l_dummy := Pre_Insert_Child
( l_task_assignment_id
,l_resource_id);
Update_ACC_Record
( l_task_assignment_id
,l_resource_id
,l_acc_id);
/*** record exists on mobile but should not be replicated anymore -> delete from mobile ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( l_task_assignment_id
, g_table_name
, 'Task assignment was replicated before update, but should not be replicated anymore.'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
Post_Delete_Child
( l_task_assignment_id
,l_resource_id);
, 'Leaving POST_UPDATE hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, 'Caught exception in POST_UPDATE hook:' || fnd_global.local_chr(10) || sqlerrm
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
fnd_msg_pub.Add_Exc_Msg('CSL_JTF_TASK_ASS_ACC_PKG','POST_UPDATE_TASK_ASSIGNMENT',sqlerrm);
END POST_UPDATE_TASK_ASSIGNMENT;
/* Called before assignment Delete */
PROCEDURE PRE_DELETE_TASK_ASSIGNMENT
( x_return_status OUT NOCOPY varchar2
)
IS
l_resource_id NUMBER;
, 'Entering PRE_DELETE hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
/*** yes -> delete assignment related data from the ACC tables ***/
Post_Delete_Child
( l_task_assignment_id
,l_resource_id);
, 'Leaving PRE_DELETE hook'
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, 'Caught exception in PRE_DELETE hook:' || fnd_global.local_chr(10) || sqlerrm
, JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
fnd_msg_pub.Add_Exc_Msg('CSL_JTF_TASK_ASS_ACC_PKG','PRE_DELETE_TASK_ASSIGNMENT',sqlerrm);
END PRE_DELETE_TASK_ASSIGNMENT;
/* Called after assignment Delete */
PROCEDURE POST_DELETE_TASK_ASSIGNMENT
( x_return_status OUT NOCOPY varchar2
)
IS
BEGIN
x_return_status := FND_API.G_RET_STS_SUCCESS;
END POST_DELETE_TASK_ASSIGNMENT;
SELECT acc.task_assignment_id, acc.resource_id
FROM csl_jtf_task_ass_acc acc,
jtf_task_assignments jta,
jtf_tasks_b jt,
jtf_task_statuses_b jts,
jtf_task_statuses_b jta_jts
WHERE acc.task_assignment_id = jta.task_assignment_id
AND jt.task_id = jta.task_id
AND jts.task_status_id = jt.task_status_id
AND jta_jts.task_status_id = jta.assignment_status_id
AND (NVL(jt.scheduled_start_date, SYSDATE) < (SYSDATE - TO_NUMBER(FND_PROFILE.Value('CSL_APPL_HISTORY_IN_DAYS'))))
AND (NVL(jts.cancelled_flag,'N') = 'Y'
OR NVL(jts.closed_flag, 'N') = 'Y'
OR NVL(jts.completed_flag, 'N') = 'Y'
OR NVL(jts.rejected_flag, 'N') = 'Y'
OR NVL(jta_jts.cancelled_flag,'N') = 'Y'
OR NVL(jta_jts.closed_flag,'N') = 'Y'
OR NVL(jta_jts.completed_flag,'N') = 'Y'
OR NVL(jta_jts.rejected_flag, 'N') = 'Y')
AND NOT EXISTS (SELECT 'x' FROM CSL_SERVICE_HISTORY hist
WHERE hist.history_incident_id = jt.source_object_id
AND jt.source_object_type_code = 'SR'
AND hist.resource_id = acc.resource_id);
Post_Delete_Child(rcur_purge_task_assignments.task_assignment_id, rcur_purge_task_assignments.resource_id);