1: PACKAGE BODY PO_PRICE_DIFF_DRAFT_PKG AS
2: /* $Header: PO_PRICE_DIFF_DRAFT_PKG.plb 120.5 2006/09/28 23:05:20 bao noship $ */
3:
4: d_pkg_name CONSTANT varchar2(50) :=
5: PO_LOG.get_package_base('PO_PRICE_DIFF_DRAFT_PKG');
6:
7: -----------------------------------------------------------------------
8: --Start of Comments
9: --Name: delete_rows
41:
42: BEGIN
43:
44: d_position := 0;
45: IF (PO_LOG.d_proc) THEN
46: PO_LOG.proc_begin(d_module);
47: END IF;
48:
49: DELETE FROM po_price_diff_draft
42: BEGIN
43:
44: d_position := 0;
45: IF (PO_LOG.d_proc) THEN
46: PO_LOG.proc_begin(d_module);
47: END IF;
48:
49: DELETE FROM po_price_diff_draft
50: WHERE draft_id = p_draft_id
106:
107:
108: BEGIN
109: d_position := 0;
110: IF (PO_LOG.d_proc) THEN
111: PO_LOG.proc_begin(d_module);
112: END IF;
113:
114: x_record_already_exist_tbl :=
107:
108: BEGIN
109: d_position := 0;
110: IF (PO_LOG.d_proc) THEN
111: PO_LOG.proc_begin(d_module);
112: END IF;
113:
114: x_record_already_exist_tbl :=
115: PO_PRICE_DIFF_DRAFT_PVT.draft_changes_exist
143: END LOOP;
144: -- bug5471513 END
145:
146: d_position := 10;
147: IF (PO_LOG.d_stmt) THEN
148: PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
149: END IF;
150:
151: FORALL i IN 1..p_price_differential_id_tbl.COUNT
144: -- bug5471513 END
145:
146: d_position := 10;
147: IF (PO_LOG.d_stmt) THEN
148: PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
149: END IF;
150:
151: FORALL i IN 1..p_price_differential_id_tbl.COUNT
152: INSERT INTO po_price_diff_draft
192: AND x_record_already_exist_tbl(i) = FND_API.G_FALSE
193: AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
194:
195: d_position := 20;
196: IF (PO_LOG.d_stmt) THEN
197: PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
198: END IF;
199:
200: FORALL i IN 1..p_price_differential_id_tbl.COUNT
193: AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
194:
195: d_position := 20;
196: IF (PO_LOG.d_stmt) THEN
197: PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
198: END IF;
199:
200: FORALL i IN 1..p_price_differential_id_tbl.COUNT
201: UPDATE po_price_diff_draft
206: AND x_record_already_exist_tbl(i) = FND_API.G_TRUE;
207:
208: d_position := 30;
209:
210: IF (PO_LOG.d_stmt) THEN
211: PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
212: ' in draft table. Count = ' || SQL%ROWCOUNT);
213: END IF;
214:
207:
208: d_position := 30;
209:
210: IF (PO_LOG.d_stmt) THEN
211: PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
212: ' in draft table. Count = ' || SQL%ROWCOUNT);
213: END IF;
214:
215: d_position := 40;
213: END IF;
214:
215: d_position := 40;
216:
217: IF (PO_LOG.d_proc) THEN
218: PO_LOG.proc_end(d_module);
219: END IF;
220:
221: EXCEPTION
214:
215: d_position := 40;
216:
217: IF (PO_LOG.d_proc) THEN
218: PO_LOG.proc_end(d_module);
219: END IF;
220:
221: EXCEPTION
222: WHEN OTHERS THEN
268: l_record_already_exist_tbl PO_TBL_VARCHAR1;
269:
270: BEGIN
271: d_position := 0;
272: IF (PO_LOG.d_proc) THEN
273: PO_LOG.proc_begin(d_module);
274: PO_LOG.proc_begin(d_module, 'p_price_differential_id',
275: p_price_differential_id);
276: END IF;
269:
270: BEGIN
271: d_position := 0;
272: IF (PO_LOG.d_proc) THEN
273: PO_LOG.proc_begin(d_module);
274: PO_LOG.proc_begin(d_module, 'p_price_differential_id',
275: p_price_differential_id);
276: END IF;
277:
270: BEGIN
271: d_position := 0;
272: IF (PO_LOG.d_proc) THEN
273: PO_LOG.proc_begin(d_module);
274: PO_LOG.proc_begin(d_module, 'p_price_differential_id',
275: p_price_differential_id);
276: END IF;
277:
278: sync_draft_from_txn
284:
285: x_record_already_exist := l_record_already_exist_tbl(1);
286:
287: d_position := 10;
288: IF (PO_LOG.d_proc) THEN
289: PO_LOG.proc_end(d_module);
290: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
291: END IF;
292:
285: x_record_already_exist := l_record_already_exist_tbl(1);
286:
287: d_position := 10;
288: IF (PO_LOG.d_proc) THEN
289: PO_LOG.proc_end(d_module);
290: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
291: END IF;
292:
293: EXCEPTION
286:
287: d_position := 10;
288: IF (PO_LOG.d_proc) THEN
289: PO_LOG.proc_end(d_module);
290: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
291: END IF;
292:
293: EXCEPTION
294: WHEN OTHERS THEN
334:
335: BEGIN
336:
337: d_position := 0;
338: IF (PO_LOG.d_proc) THEN
339: PO_LOG.proc_begin(d_module);
340: END IF;
341:
342: -- Since putting DELETE within MERGE statement is causing database
335: BEGIN
336:
337: d_position := 0;
338: IF (PO_LOG.d_proc) THEN
339: PO_LOG.proc_begin(d_module);
340: END IF;
341:
342: -- Since putting DELETE within MERGE statement is causing database
343: -- to thrown internal error, for now we just separate the DELETE statement.
474: l_dummy NUMBER;
475:
476: BEGIN
477: d_position := 0;
478: IF (PO_LOG.d_proc) THEN
479: PO_LOG.proc_begin(d_module);
480: END IF;
481:
482: SELECT 1
475:
476: BEGIN
477: d_position := 0;
478: IF (PO_LOG.d_proc) THEN
479: PO_LOG.proc_begin(d_module);
480: END IF;
481:
482: SELECT 1
483: INTO l_dummy
485: WHERE price_differential_id = p_price_differential_id
486: AND draft_id = p_draft_id
487: FOR UPDATE NOWAIT;
488:
489: IF (PO_LOG.d_proc) THEN
490: PO_LOG.proc_end(d_module);
491: END IF;
492:
493: EXCEPTION
486: AND draft_id = p_draft_id
487: FOR UPDATE NOWAIT;
488:
489: IF (PO_LOG.d_proc) THEN
490: PO_LOG.proc_end(d_module);
491: END IF;
492:
493: EXCEPTION
494: WHEN NO_DATA_FOUND THEN
518: l_dummy NUMBER;
519:
520: BEGIN
521: d_position := 0;
522: IF (PO_LOG.d_proc) THEN
523: PO_LOG.proc_begin(d_module);
524: END IF;
525:
526: SELECT 1
519:
520: BEGIN
521: d_position := 0;
522: IF (PO_LOG.d_proc) THEN
523: PO_LOG.proc_begin(d_module);
524: END IF;
525:
526: SELECT 1
527: INTO l_dummy
528: FROM po_price_differentials
529: WHERE price_differential_id = p_price_differential_id
530: FOR UPDATE NOWAIT;
531:
532: IF (PO_LOG.d_proc) THEN
533: PO_LOG.proc_end(d_module);
534: END IF;
535:
536: EXCEPTION
529: WHERE price_differential_id = p_price_differential_id
530: FOR UPDATE NOWAIT;
531:
532: IF (PO_LOG.d_proc) THEN
533: PO_LOG.proc_end(d_module);
534: END IF;
535:
536: EXCEPTION
537: WHEN NO_DATA_FOUND THEN