[Home] [Help]
1: PACKAGE BODY CSM_MTL_MATERIAL_TXN_ACC_PKG AS
2: /* $Header: csmmtacb.pls 120.5.12010000.2 2008/10/20 10:42:08 trajasek ship $ */
3:
4: /*** Globals ***/
5: g_acc_table_name CONSTANT VARCHAR2(30) := 'CSM_MTL_MATERIAL_TXN_ACC';
1: PACKAGE BODY CSM_MTL_MATERIAL_TXN_ACC_PKG AS
2: /* $Header: csmmtacb.pls 120.5.12010000.2 2008/10/20 10:42:08 trajasek ship $ */
3:
4: /*** Globals ***/
5: g_acc_table_name CONSTANT VARCHAR2(30) := 'CSM_MTL_MATERIAL_TXN_ACC';
6: g_publication_item_name CONSTANT CSM_ACC_PKG.t_publication_item_list :=
7: CSM_ACC_PKG.t_publication_item_list('CSM_MTL_MATERIAL_TXNS');
8: g_table_name CONSTANT VARCHAR2(30) := 'MTL_MATERIAL_TRANSACTIONS';
9: g_tasks_seq_name CONSTANT VARCHAR2(30) := 'CSM_MTL_MATERIAL_TXN_ACC_S';
5: g_acc_table_name CONSTANT VARCHAR2(30) := 'CSM_MTL_MATERIAL_TXN_ACC';
6: g_publication_item_name CONSTANT CSM_ACC_PKG.t_publication_item_list :=
7: CSM_ACC_PKG.t_publication_item_list('CSM_MTL_MATERIAL_TXNS');
8: g_table_name CONSTANT VARCHAR2(30) := 'MTL_MATERIAL_TRANSACTIONS';
9: g_tasks_seq_name CONSTANT VARCHAR2(30) := 'CSM_MTL_MATERIAL_TXN_ACC_S';
10: g_pk1_name CONSTANT VARCHAR2(30) := 'TRANSACTION_ID';
11:
12: PROCEDURE Insert_MTL_Mat_Transaction(
13: p_user_id NUMBER,
152: ( module => g_table_name
153: , message => 'Entering DELETE_ALL_ACC_RECORDS'
154: , log_level => FND_LOG.LEVEL_STATEMENT);
155:
156: DELETE CSM_MTL_MATERIAL_TXN_ACC
157: WHERE user_id = p_user_id;
158:
159: x_return_status := FND_API.G_RET_STS_SUCCESS;
160:
170: CSM_UTIL_PKG.LOG
171: ( module => g_table_name
172: , message => 'Caught exception in DELETE_ALL_ACC_RECORDS hook:' || fnd_global.local_chr(10) || sqlerrm
173: , log_level => FND_LOG.LEVEL_ERROR);
174: fnd_msg_pub.Add_Exc_Msg('CSM_MTL_MATERIAL_TXN_ACC_PKG','PROCESS_ACC',sqlerrm);
175: END DELETE_ALL_ACC_RECORDS;
176:
177:
178: PROCEDURE Refresh_Mat_Txn_Acc(p_status OUT NOCOPY VARCHAR2,
182:
183: CURSOR l_last_run_date_csr IS
184: SELECT NVL(last_run_date, TO_DATE('1','J'))
185: FROM jtm_con_request_data
186: WHERE package_name = 'CSM_MTL_MATERIAL_TXN_ACC_PKG'
187: AND procedure_name = 'Refresh_Mat_Txn_Acc';
188:
189: --Delete if either from or to subinv is not assigned to the mobile user any longer
190: --OR if the transaction is older than CSM: Purge Interval Setting profile value
191: CURSOR l_mat_delete_csr
192: IS
193: SELECT ACC.user_id
194: , ACC.TRANSACTION_ID
195: FROM CSM_MTL_MATERIAL_TXN_ACC ACC,
196: MTL_MATERIAL_TRANSACTIONS B
197: WHERE B.TRANSACTION_ID = ACC.TRANSACTION_ID
198: AND B.TRANSACTION_ACTION_ID = 2 --Subinventory transfer
199: AND (NOT EXISTS (SELECT 1
218: -- get the updates to mat trfr
219: CURSOR l_mat_update_csr (b_last_run_date IN DATE) IS
220: SELECT ACC.user_id
221: , ACC.TRANSACTION_ID
222: FROM CSM_MTL_MATERIAL_TXN_ACC ACC,
223: MTL_MATERIAL_TRANSACTIONS B
224: WHERE B.TRANSACTION_ID = ACC.TRANSACTION_ID
225: AND B.last_update_date > b_last_run_date;
226:
236: AND TRANSACTION_ACTION_ID = 2 --Subinventory transfer
237: AND cila_from.subinventory_code = B.subinventory_code
238: AND cila_from.organization_id = B.organization_id
239: AND NVL(cila_from.locator_id,0) = NVL(B.locator_id,0)
240: AND NOT EXISTS (SELECT 1 FROM CSM_MTL_MATERIAL_TXN_ACC ACC
241: WHERE B.TRANSACTION_ID = ACC.TRANSACTION_ID
242: AND ACC.USER_ID = cilaa.USER_ID)
243: AND B.transaction_date > (sysdate -CSM_PROFILE_PKG.get_task_history_days(cilaa.user_id))
244: UNION ALL
252: AND cila_to.subinventory_code = B.transfer_subinventory
253: AND cila_to.organization_id = B.transfer_organization_id
254: AND NVL(cila_to.locator_id,0) = NVL(B.transfer_locator_id,0)
255: AND B.transaction_date > (sysdate -CSM_PROFILE_PKG.get_task_history_days(cilaa.user_id))
256: AND NOT EXISTS (SELECT 1 FROM CSM_MTL_MATERIAL_TXN_ACC ACC
257: WHERE B.TRANSACTION_ID = ACC.TRANSACTION_ID
258: AND ACC.USER_ID = cilaa.USER_ID);
259:
260: l_last_run_date jtm_con_request_data.last_run_date%TYPE;
270:
271: l_dummy boolean;
272:
273: BEGIN
274: CSM_UTIL_PKG.LOG('Entering CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc ',
275: g_table_name,FND_LOG.LEVEL_PROCEDURE);
276:
277: l_current_date := SYSDATE;
278:
288: l_tran_id_lst.DELETE;
289: END IF;
290:
291: CSM_UTIL_PKG.LOG('Processing Material Trasaction Delete',
292: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc',FND_LOG.LEVEL_STATEMENT);
293:
294: --Processing Deletes
295: OPEN l_mat_delete_csr;
296: LOOP
319: l_tran_id_lst.DELETE;
320: END IF;
321:
322: CSM_UTIL_PKG.LOG('Processing Material Trasaction Update',
323: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc',FND_LOG.LEVEL_STATEMENT);
324: OPEN l_mat_update_csr (l_last_run_date);
325: LOOP
326: FETCH l_mat_update_csr BULK COLLECT INTO l_user_id_lst , l_tran_id_lst LIMIT 1000;
327: EXIT WHEN l_user_id_lst.COUNT = 0;
349: l_tran_id_lst.DELETE;
350: END IF;
351:
352: CSM_UTIL_PKG.LOG('Processing Material Trasaction Insert',
353: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc',FND_LOG.LEVEL_STATEMENT);
354:
355: OPEN l_mat_insert_csr;
356: LOOP
357: FETCH l_mat_insert_csr BULK COLLECT INTO l_user_id_lst, l_tran_id_lst LIMIT 1000;
374:
375: -- update last_run_date
376: UPDATE jtm_con_request_data
377: SET last_run_date = l_current_date
378: WHERE package_name = 'CSM_MTL_MATERIAL_TXN_ACC_PKG'
379: AND procedure_name = 'REFRESH_MAT_TXN_ACC';
380:
381: COMMIT;
382:
380:
381: COMMIT;
382:
383: p_status := 'FINE';
384: p_message := 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc executed successfully';
385:
386: CSM_UTIL_PKG.LOG('Leaving CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc ',
387: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc',FND_LOG.LEVEL_PROCEDURE);
388: EXCEPTION
382:
383: p_status := 'FINE';
384: p_message := 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc executed successfully';
385:
386: CSM_UTIL_PKG.LOG('Leaving CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc ',
387: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc',FND_LOG.LEVEL_PROCEDURE);
388: EXCEPTION
389: WHEN OTHERS THEN
390: l_sqlerrno := TO_CHAR(SQLCODE);
383: p_status := 'FINE';
384: p_message := 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc executed successfully';
385:
386: CSM_UTIL_PKG.LOG('Leaving CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc ',
387: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc',FND_LOG.LEVEL_PROCEDURE);
388: EXCEPTION
389: WHEN OTHERS THEN
390: l_sqlerrno := TO_CHAR(SQLCODE);
391: l_sqlerrmsg := SUBSTR(SQLERRM, 1,2000);
389: WHEN OTHERS THEN
390: l_sqlerrno := TO_CHAR(SQLCODE);
391: l_sqlerrmsg := SUBSTR(SQLERRM, 1,2000);
392: p_status := 'ERROR';
393: p_message := 'Error in CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc: ' || l_sqlerrno || ':' || l_sqlerrmsg;
394: ROLLBACK;
395: csm_util_pkg.LOG('CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc ERROR : ' || l_sqlerrno || ':' || l_sqlerrmsg);
396: END Refresh_Mat_Txn_Acc;
397:
391: l_sqlerrmsg := SUBSTR(SQLERRM, 1,2000);
392: p_status := 'ERROR';
393: p_message := 'Error in CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc: ' || l_sqlerrno || ':' || l_sqlerrmsg;
394: ROLLBACK;
395: csm_util_pkg.LOG('CSM_MTL_MATERIAL_TXN_ACC_PKG.Refresh_Mat_Txn_Acc ERROR : ' || l_sqlerrno || ':' || l_sqlerrmsg);
396: END Refresh_Mat_Txn_Acc;
397:
398: --Called when a new user is created
399: PROCEDURE get_new_user_mat_txn(p_user_id IN NUMBER)
409: AND TRANSACTION_ACTION_ID = 2 --Subinventory transfer
410: AND cila_from.subinventory_code = B.subinventory_code
411: AND cila_from.organization_id = B.organization_id
412: AND NVL(cila_from.locator_id,0) = NVL(B.locator_id,0)
413: AND NOT EXISTS (SELECT 1 FROM CSM_MTL_MATERIAL_TXN_ACC ACC
414: WHERE B.TRANSACTION_ID = ACC.TRANSACTION_ID)
415: AND cilaa.user_id = b_user_id
416: AND B.transaction_date > (sysdate -CSM_PROFILE_PKG.get_task_history_days(cilaa.user_id))
417: UNION ALL
423: AND TRANSACTION_ACTION_ID = 2 --Subinventory transfer
424: AND cila_to.subinventory_code = B.transfer_subinventory
425: AND cila_to.organization_id = B.transfer_organization_id
426: AND NVL(cila_to.locator_id,0) = NVL(B.transfer_locator_id,0)
427: AND NOT EXISTS (SELECT 1 FROM CSM_MTL_MATERIAL_TXN_ACC ACC
428: WHERE B.TRANSACTION_ID = ACC.TRANSACTION_ID)
429: AND cilaa.user_id = b_user_id
430: AND B.transaction_date > (sysdate -CSM_PROFILE_PKG.get_task_history_days(cilaa.user_id));
431:
438:
439: l_dummy boolean;
440:
441: BEGIN
442: CSM_UTIL_PKG.LOG('Entering CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn ',
443: g_table_name,FND_LOG.LEVEL_PROCEDURE);
444:
445: OPEN l_mat_insert_csr(p_user_id);
446: LOOP
456:
457: END LOOP;
458: CLOSE l_mat_insert_csr;
459:
460: CSM_UTIL_PKG.LOG('Leaving CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn ',
461: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn',FND_LOG.LEVEL_PROCEDURE);
462: EXCEPTION
463: WHEN OTHERS THEN
464: l_sqlerrno := TO_CHAR(SQLCODE);
457: END LOOP;
458: CLOSE l_mat_insert_csr;
459:
460: CSM_UTIL_PKG.LOG('Leaving CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn ',
461: 'CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn',FND_LOG.LEVEL_PROCEDURE);
462: EXCEPTION
463: WHEN OTHERS THEN
464: l_sqlerrno := TO_CHAR(SQLCODE);
465: l_sqlerrmsg := SUBSTR(SQLERRM, 1,2000);
463: WHEN OTHERS THEN
464: l_sqlerrno := TO_CHAR(SQLCODE);
465: l_sqlerrmsg := SUBSTR(SQLERRM, 1,2000);
466: ROLLBACK;
467: csm_util_pkg.LOG('CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn ERROR : ' || l_sqlerrno || ':' || l_sqlerrmsg);
468: END get_new_user_mat_txn;
469:
470: END CSM_MTL_MATERIAL_TXN_ACC_PKG;
466: ROLLBACK;
467: csm_util_pkg.LOG('CSM_MTL_MATERIAL_TXN_ACC_PKG.get_new_user_mat_txn ERROR : ' || l_sqlerrno || ':' || l_sqlerrmsg);
468: END get_new_user_mat_txn;
469:
470: END CSM_MTL_MATERIAL_TXN_ACC_PKG;