The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT dbl.*
FROM CSL_CSF_DEBRIEF_LINES_INQ dbl
, CSL_CSF_DEBRIEF_HEADERS_INQ dbh
WHERE dbl.debrief_header_id = dbh.debrief_header_id
AND dbl.tranid$$ = b_tranid
AND dbl.clid$$cs = b_user_name
ORDER BY dbl.debrief_header_id;
This one is executed after all debrief lines with headers have been deleted from the inqueue.
The debrief lines without header remain then.
***/
CURSOR c_debrief_no_headers( b_user_name VARCHAR2, b_tranid NUMBER) is
SELECT *
FROM CSL_CSF_DEBRIEF_LINES_INQ
WHERE tranid$$ = b_tranid
AND clid$$cs = b_user_name;
SELECT *
FROM CSL_CSF_DEBRIEF_HEADERS_INQ
WHERE tranid$$ = b_tranid
AND clid$$cs = b_user_name;
Insert new header record into CSF_DEBRIEF_HEADERS
Arguments:
p_debrief_header_id The debrief header id comes from
the debrief line inqueue record.
This is used to retrieve the data
from the debrief headers inqueue
which is used to call the API.
********************************************************/
CURSOR c_csf_debrief_headers (b_debrief_header_id CSF_DEBRIEF_HEADERS.DEBRIEF_HEADER_ID%TYPE) is
SELECT *
FROM CSL_CSF_DEBRIEF_HEADERS_INQ
WHERE debrief_header_id = b_debrief_header_id;
l_deb_rec.last_update_date := l_date;
l_deb_rec.last_updated_by := FND_GLOBAL.USER_ID;
l_deb_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_UPDATE', sqlerrm);
SELECT null
FROM csf_debrief_headers
WHERE debrief_header_id = b_debrief_header_id;
SELECT debrief_header_id
FROM csf_debrief_headers
WHERE task_assignment_id = b_task_assignment_id;
PROCEDURE APPLY_UPDATE_HEADER
( p_user_name IN VARCHAR2,
p_tranid IN NUMBER,
p_header_id IN OUT NOCOPY NUMBER,
p_error_msg OUT NOCOPY VARCHAR2,
x_return_status IN OUT NOCOPY VARCHAR2 );
This procedure is called by APPLY_CLIENT_CHANGES when an inserted record
is to be processed.
***/
PROCEDURE APPLY_INSERT_HEADER
(
p_user_name IN VARCHAR2,
p_tranid IN NUMBER,
p_header_id IN OUT NOCOPY NUMBER,
p_error_msg OUT NOCOPY VARCHAR2,
x_return_status IN OUT NOCOPY VARCHAR2
) IS
/***
Name:
APPLY_INSERT_HEADER
Purpose:
First process all debrief lines that have debrief headers.
After processing a debrief line with debrief header delete both from
inqueues.
Then process all debrief lines that have no debrief header record in
the debrief header inqueue.
These are the ones coming from the backend and that have a header
record in the backend.
After processing these debrief lines, delete them from the debrief
line inqueue.
***/
/***
Cursor to retrieve task_assignment_id to check if there is already
an record created on the backend for this header.
***/
CURSOR c_debrief_assignment_id ( b_debrief_header_id NUMBER) is
SELECT task_assignment_id, seqno$$
FROM CSL_CSF_DEBRIEF_HEADERS_INQ dbh
WHERE debrief_header_id = b_debrief_header_id;
'.APPLY_INSERT_HEADER'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
APPLY_UPDATE_HEADER( p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => p_header_id
, p_error_msg => p_error_msg
, x_return_status => x_return_status );
/*** Yes -> delete record from inqueue ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => l_header_id -- put PK column here
, v_object_name => g_object_name
, v_message => 'Record successfully processed, deleting from
inqueue'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
(
p_user_name => p_user_name,
p_tranid => p_tranid,
p_seqno => l_seqno,
p_pk => p_header_id, -- p_record.debrief_header_id
p_object_name => g_object_name,
p_pub_name => g_pub_name2,
p_error_msg => p_error_msg,
x_return_status => l_return_status
);
/*** was delete successful? ***/
IF l_return_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 => p_header_id --p_record.debrief_header_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);
/*** 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 => p_header_id --p_record.debrief_header_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);
/*** 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 => p_header_id --p_record.debrief_header_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);
'.APPLY_INSERT_HEADER'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, v_message => 'Exception occurred in APPLY_INSERT_HEADER:' ||
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_HEADER', sqlerrm);
'.APPLY_INSERT_HEADER'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END APPLY_INSERT_HEADER;
SELECT tst.rejected_flag, tst.on_hold_flag, tst.cancelled_flag,
tst.closed_flag, tst.completed_flag
FROM csf_debrief_headers dh, jtf_task_assignments tas,
jtf_task_statuses_b tst
WHERE dh.task_assignment_id = tas.task_assignment_id
AND tas.assignment_status_id = tst.task_status_id
AND dh.debrief_header_id = b_debrief_header_id;
csf_debrief_update_pkg.form_Call (1.0, p_debrief_header_id );
PROCEDURE APPLY_INSERT_LINE
(
p_record IN c_debrief%ROWTYPE,
p_user_name IN VARCHAR2,
p_tranid IN NUMBER,
p_header_id IN NUMBER,
p_error_msg OUT NOCOPY VARCHAR2,
x_return_status IN OUT NOCOPY VARCHAR2
) IS
-- Retrieve source_object_type_code
CURSOR c_task_obj_code
( b_debrief_header_id CSF_DEBRIEF_HEADERS.DEBRIEF_HEADER_ID%TYPE
)
IS
SELECT source_object_type_code
FROM jtf_tasks_b jtb
, jtf_task_assignments jta
, csf_debrief_headers dbh
WHERE jtb.task_id = jta.task_id
AND jta.task_assignment_id = dbh.task_assignment_id
AND dbh.debrief_header_id = b_debrief_header_id;
SELECT null
FROM CS_BILLING_TYPE_CATEGORIES tbc
, MTL_SYSTEM_ITEMS_B msi
WHERE tbc.BILLING_CATEGORY = 'M'
AND msi.MATERIAL_BILLABLE_FLAG = tbc.BILLING_TYPE
AND msi.INVENTORY_ITEM_ID = p_inventory_item_id
AND msi.ORGANIZATION_ID = p_inv_organization_id;
SELECT debrief_number
FROM csf_debrief_headers
WHERE debrief_header_id = b_debrief_header_id;
l_spare_update_status p_record.spare_update_status%TYPE;
, v_message => 'Entering ' || g_object_name || '.APPLY_INSERT_LINE'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
l_spare_update_status := 'SUCCEEDED';
l_spare_update_status := 'FAILED';
l_line_rec.last_update_date := l_date;
l_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
l_line_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
l_line_rec.spare_update_status := l_spare_update_status;
, v_message => 'Leaving ' || g_object_name || '.APPLY_INSERT_LINE'
, 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_LINE', sqlerrm);
, v_message => 'Leaving ' || g_object_name || '.APPLY_INSERT_LINE'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END APPLY_INSERT_LINE;
PROCEDURE APPLY_UPDATE_HEADER
(
p_user_name IN VARCHAR2,
p_tranid IN NUMBER,
p_header_id IN OUT NOCOPY NUMBER,
p_error_msg OUT NOCOPY VARCHAR2,
x_return_status IN OUT NOCOPY VARCHAR2
) IS
/***
Name:
APPLY_UPDATE_HEADER
Purpose:
If debrief header gets updated, say DFF fields got changed in client
application, Then process all debrief headers even if no debrief
lines associated with it in INQ.
After processing these debrief headers, delete them from the debrief
header inqueue.
***/
/***
Cursor to retrieve task_assignment_id to check if there is already
an record created on the backend for this header.
***/
CURSOR c_debrief_assignment_id ( b_debrief_header_id NUMBER) is
SELECT task_assignment_id, seqno$$
FROM CSL_CSF_DEBRIEF_HEADERS_INQ dbh
WHERE debrief_header_id = b_debrief_header_id;
SELECT * FROM CSL_CSF_DEBRIEF_HEADERS_INQ
WHERE debrief_header_id = b_debrief_header_id;
'.APPLY_UPDATE_HEADER'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
APPLY_INSERT_HEADER( p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => p_header_id
, p_error_msg => p_error_msg
, x_return_status => x_return_status );
l_deb_rec.last_update_date := l_date;
l_deb_rec.last_updated_by := FND_GLOBAL.USER_ID;
l_deb_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
csf_debrief_pub.update_debrief
( p_api_version_number => 1.0
, p_init_msg_list => FND_API.G_TRUE
, p_commit => FND_API.G_FALSE
, p_debrief_rec => l_deb_rec
, x_return_status => x_return_status
, x_msg_count => l_msg_count
, x_msg_data => l_msg_data
);
/*** Yes -> delete record from inqueue ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => l_header_id -- put PK column here
, v_object_name => g_object_name
, v_message => 'Record successfully processed, '||
' deleting from inqueue'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
(
p_user_name => p_user_name,
p_tranid => p_tranid,
p_seqno => l_seqno,
p_pk => p_header_id, -- p_record.debrief_header_id,
p_object_name => g_object_name,
p_pub_name => g_pub_name2,
p_error_msg => p_error_msg,
x_return_status => l_return_status
);
/*** was delete successful? ***/
IF l_return_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 => p_header_id --p_record.debrief_header_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);
END IF; -- end if delete failed
/*** 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 => p_header_id --p_record.debrief_header_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);
'.APPLY_UPDATE_HEADER'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
, v_message => 'Exception occurred in APPLY_UPDATE_HEADER:' ||
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_HEADER', sqlerrm);
'.APPLY_UPDATE_HEADER'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
END APPLY_UPDATE_HEADER;
This procedure is called by APPLY_CLIENT_CHANGES when an updated record
is to be processed.
No update for debrief lines yet.
***/
PROCEDURE APPLY_UPDATE
(
p_record IN c_debrief%ROWTYPE,
p_user_name IN VARCHAR2,
p_tranid IN NUMBER,
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.DEBRIEF_LINE_ID -- put PK column here
, 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_HEADER
(
-- p_record => r_debrief
p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => l_header_id
, p_error_msg => l_error_msg
, x_return_status => x_return_status
);
APPLY_INSERT_LINE
(
p_record => r_debrief
, p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => l_header_id
, p_error_msg => l_error_msg
, x_return_status => x_return_status
);
/*** Yes -> delete record from inqueue ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => r_debrief.DEBRIEF_LINE_ID -- put PK column here
, v_object_name => g_object_name
, v_message => 'Line record successfully processed, deleting from inqueue'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
(
p_user_name,
p_tranid,
r_debrief.seqno$$,
r_debrief.DEBRIEF_LINE_ID, -- put PK column here
g_object_name,
g_pub_name,
l_error_msg,
x_return_status
);
/*** was delete successful? ***/
IF x_return_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_debrief.DEBRIEF_LINE_ID -- put PK column here
, v_object_name => g_object_name
, v_message => 'Deleting line record from inqueue failed, rolling back to savepoint'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
/*** 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_debrief.DEBRIEF_LINE_ID -- put PK column here
, v_object_name => g_object_name
, v_message => 'Line record not processed successfully, deferring and rejecting record'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
APPLY_UPDATE
(
p_record => r_debrief,
p_user_name => p_user_name,
p_tranid => p_tranid,
p_error_msg => l_error_msg,
x_return_status => x_return_status);
APPLY_INSERT_LINE
(
p_record => r_debrief
, p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => NULL
, p_error_msg => l_error_msg
, x_return_status => x_return_status
);
APPLY_INSERT_LINE --Bug 3702875
(
p_record => r_debrief
, p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => NULL
, p_error_msg => l_error_msg
, x_return_status => x_return_status
);
/*** Yes -> delete record from inqueue ***/
IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
jtm_message_log_pkg.Log_Msg
( v_object_id => r_debrief.DEBRIEF_LINE_ID -- put PK column here
, v_object_name => g_object_name
, v_message => 'Record successfully processed, deleting from inqueue'
, v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
(
p_user_name,
p_tranid,
r_debrief.seqno$$,
r_debrief.DEBRIEF_LINE_ID, -- put PK column here
g_object_name,
g_pub_name,
l_error_msg,
x_return_status
);
/*** was delete successful? ***/
IF x_return_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_debrief.DEBRIEF_LINE_ID -- put PK column here
, 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);
/*** Record was not processed successfully or delete failed -> defer and reject record ***/
--Since the record was not processed successfully, rollback to the point before
--calling APPLY_INSERT_LINE
ROLLBACK to save_rec;
g_deferred_line_id_tbl.DELETE;
APPLY_INSERT_HEADER
(
-- p_record => r_debrief
--,
p_user_name => p_user_name
, p_tranid => p_tranid
, p_header_id => l_header_id
, p_error_msg => l_error_msg
, x_return_status => x_return_status
);
APPLY_UPDATE_HEADER
(
-- p_record => r_debrief,
p_user_name => p_user_name,
p_tranid => p_tranid,
p_error_msg => l_error_msg,
p_header_id => l_header_id,
x_return_status => x_return_status);
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
BEGIN
g_debug_level := p_debug_level;