[Home] [Help]
PACKAGE BODY: APPS.PO_PRICE_ADJ_DRAFT_PKG
Source
1 PACKAGE BODY PO_PRICE_ADJ_DRAFT_PKG AS
2 /* $Header: PO_PRICE_ADJ_DRAFT_PKG.plb 120.0.12010000.1 2009/06/01 23:30:02 ababujan noship $ */
3
4 d_pkg_name CONSTANT varchar2(50) :=
5 PO_LOG.get_package_base('PO_PRICE_ADJ_DRAFT_PKG');
6
7 -----------------------------------------------------------------------
8 --Start of Comments
9 --Name: delete_rows
10 --Pre-reqs: None
11 --Modifies:
12 --Locks:
13 -- None
14 --Function:
15 -- Deletes drafts for price adjustments based on the information given
16 -- If only draft_id is provided, then all price adjustments for the draft
17 -- will be deleted
18 -- If price_adjustment_id is also provided, then the one record that has such
19 -- primary key will be deleted
20 --Parameters:
21 --IN:
22 --p_draft_id
23 -- draft unique identifier
24 --p_price_adjustment_id
25 -- po price adjustment unique identifier
26 --IN OUT:
27 --OUT:
28 --Returns:
29 --Notes:
30 --Testing:
31 --End of Comments
32 ------------------------------------------------------------------------
33 PROCEDURE delete_rows
34 ( p_draft_id IN NUMBER,
35 p_price_adjustment_id IN NUMBER
36 ) IS
37
38 d_api_name CONSTANT VARCHAR2(30) := 'delete_rows';
39 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
40 d_position NUMBER;
41
42 BEGIN
43 d_position := 0;
44 IF (PO_LOG.d_proc) THEN
45 PO_LOG.proc_begin(d_module);
46 END IF;
47
48 DELETE FROM po_price_adj_attribs_draft
49 WHERE draft_id = p_draft_id
50 AND price_adjustment_id = NVL(p_price_adjustment_id, price_adjustment_id);
51
52 DELETE FROM po_price_adjustments_draft
53 WHERE draft_id = p_draft_id
54 AND price_adjustment_id = NVL(p_price_adjustment_id, price_adjustment_id);
55
56 d_position := 10;
57 EXCEPTION
58 WHEN OTHERS THEN
59 PO_MESSAGE_S.add_exc_msg
60 ( p_pkg_name => d_pkg_name,
61 p_procedure_name => d_api_name || '.' || d_position
62 );
63 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
64 END delete_rows;
65
66 -----------------------------------------------------------------------
67 --Start of Comments
68 --Name: sync_draft_from_txn
69 --Pre-reqs: None
70 --Modifies:
71 --Locks:
72 -- None
73 --Function:
74 -- Copy data from transaction table to draft table, if the corresponding
75 -- record in draft table does not exist. It also sets the delete flag of
76 -- the draft record according to the parameter.
77 --Parameters:
78 --IN:
79 --p_price_adjustment_id_tbl
80 -- table of po price_adjustment unique identifier
81 --p_draft_id_tbl
82 -- table of draft ids this sync up will be done for
83 --p_delete_flag_tbl
84 -- table fo flags to indicate whether the draft record should be maked as
85 -- "to be deleted"
86 --IN OUT:
87 --OUT:
88 --x_record_already_exist_tbl
89 -- Returns whether the record was already in draft table or not
90 --Returns:
91 --Notes:
92 --Testing:
93 --End of Comments
94 ------------------------------------------------------------------------
95 PROCEDURE sync_draft_from_txn
96 ( p_price_adjustment_id_tbl IN PO_TBL_NUMBER,
97 p_draft_id_tbl IN PO_TBL_NUMBER,
98 p_delete_flag_tbl IN PO_TBL_VARCHAR1,
99 x_record_already_exist_tbl OUT NOCOPY PO_TBL_VARCHAR1
100 ) IS
101
102 d_api_name CONSTANT VARCHAR2(30) := 'sync_draft_from_txn';
103 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
104 d_position NUMBER;
105
106 l_distinct_id_list DBMS_SQL.NUMBER_TABLE;
107 l_duplicate_flag_tbl PO_TBL_VARCHAR1 := PO_TBL_VARCHAR1();
108
109 BEGIN
110 d_position := 0;
111 IF (PO_LOG.d_proc) THEN
112 PO_LOG.proc_begin(d_module);
113 END IF;
114
115 x_record_already_exist_tbl :=
116 PO_PRICE_ADJ_DRAFT_PVT.draft_changes_exist
117 ( p_draft_id_tbl => p_draft_id_tbl,
118 p_price_adjustment_id_tbl => p_price_adjustment_id_tbl
119 );
120
121 -- If there're duplicate entries in the id table,
122 -- we do not want to insert multiple entries
123 -- Created an associative array to store what id has appeared.
124 l_duplicate_flag_tbl.EXTEND(p_price_adjustment_id_tbl.COUNT);
125
126 FOR i IN 1..p_price_adjustment_id_tbl.COUNT LOOP
127 IF (x_record_already_exist_tbl(i) = FND_API.G_FALSE) THEN
128
129 IF (l_distinct_id_list.EXISTS(p_price_adjustment_id_tbl(i))) THEN
130 l_duplicate_flag_tbl(i) := FND_API.G_TRUE;
131 ELSE
132 l_duplicate_flag_tbl(i) := FND_API.G_FALSE;
133 l_distinct_id_list(p_price_adjustment_id_tbl(i)) := 1;
134 END IF;
135 ELSE
136 l_duplicate_flag_tbl(i) := NULL;
137 END IF;
138 END LOOP;
139
140 d_position := 10;
141 IF (PO_LOG.d_stmt) THEN
142 PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
143 END IF;
144
145 FORALL i IN 1..p_price_adjustment_id_tbl.COUNT
146 INSERT INTO PO_PRICE_ADJUSTMENTS_DRAFT
147 (DRAFT_ID
148 , DELETE_FLAG
149 , CHANGE_ACCEPTED_FLAG
150 , PRICE_ADJUSTMENT_ID
151 , ADJ_LINE_NUM
152 , CREATION_DATE
153 , CREATED_BY
154 , LAST_UPDATE_DATE
155 , LAST_UPDATED_BY
156 , LAST_UPDATE_LOGIN
157 , PROGRAM_APPLICATION_ID
158 , PROGRAM_ID
159 , PROGRAM_UPDATE_DATE
160 , REQUEST_ID
161 , PO_HEADER_ID
162 , AUTOMATIC_FLAG
163 , PO_LINE_ID
164 , CONTEXT
165 , ATTRIBUTE1
166 , ATTRIBUTE2
167 , ATTRIBUTE3
168 , ATTRIBUTE4
169 , ATTRIBUTE5
170 , ATTRIBUTE6
171 , ATTRIBUTE7
172 , ATTRIBUTE8
173 , ATTRIBUTE9
174 , ATTRIBUTE10
175 , ATTRIBUTE11
176 , ATTRIBUTE12
177 , ATTRIBUTE13
178 , ATTRIBUTE14
179 , ATTRIBUTE15
180 , ORIG_SYS_DISCOUNT_REF
181 , LIST_HEADER_ID
182 , LIST_LINE_ID
183 , LIST_LINE_TYPE_CODE
184 , MODIFIED_FROM
185 , MODIFIED_TO
186 , UPDATED_FLAG
187 , UPDATE_ALLOWED
188 , APPLIED_FLAG
189 , CHANGE_REASON_CODE
190 , CHANGE_REASON_TEXT
191 , operand
192 , Arithmetic_operator
193 , COST_ID
194 , TAX_CODE
195 , TAX_EXEMPT_FLAG
196 , TAX_EXEMPT_NUMBER
197 , TAX_EXEMPT_REASON_CODE
198 , PARENT_ADJUSTMENT_ID
199 , INVOICED_FLAG
200 , ESTIMATED_FLAG
201 , INC_IN_SALES_PERFORMANCE
202 , ADJUSTED_AMOUNT
203 , PRICING_PHASE_ID
204 , CHARGE_TYPE_CODE
205 , CHARGE_SUBTYPE_CODE
206 , list_line_no
207 , source_system_code
208 , benefit_qty
209 , benefit_uom_code
210 , print_on_invoice_flag
211 , expiration_date
212 , rebate_transaction_type_code
213 , rebate_transaction_reference
214 , rebate_payment_system_code
215 , redeemed_date
216 , redeemed_flag
217 , accrual_flag
218 , range_break_quantity
219 , accrual_conversion_rate
220 , pricing_group_sequence
221 , modifier_level_code
222 , price_break_type_code
223 , substitution_attribute
224 , proration_type_code
225 , CREDIT_OR_CHARGE_FLAG
226 , INCLUDE_ON_RETURNS_FLAG
227 , AC_CONTEXT
228 , AC_ATTRIBUTE1
229 , AC_ATTRIBUTE2
230 , AC_ATTRIBUTE3
231 , AC_ATTRIBUTE4
232 , AC_ATTRIBUTE5
233 , AC_ATTRIBUTE6
234 , AC_ATTRIBUTE7
235 , AC_ATTRIBUTE8
236 , AC_ATTRIBUTE9
237 , AC_ATTRIBUTE10
238 , AC_ATTRIBUTE11
239 , AC_ATTRIBUTE12
240 , AC_ATTRIBUTE13
241 , AC_ATTRIBUTE14
242 , AC_ATTRIBUTE15
243 , OPERAND_PER_PQTY
244 , ADJUSTED_AMOUNT_PER_PQTY
245 , LOCK_CONTROL
246 )
247 SELECT p_draft_id_tbl(i)
248 , p_delete_flag_tbl(i)
249 , NULL
250 , ADJ.price_adjustment_id
251 , ADJ.adj_line_num
252 , ADJ.creation_date
253 , ADJ.created_by
254 , ADJ.last_update_date
255 , ADJ.last_updated_by
256 , ADJ.last_update_login
257 , ADJ.program_application_id
258 , ADJ.program_id
259 , ADJ.program_update_date
260 , ADJ.request_id
261 , ADJ.po_header_id
262 , ADJ.automatic_flag
263 , ADJ.po_line_id
264 , ADJ.context
265 , ADJ.attribute1
266 , ADJ.attribute2
267 , ADJ.attribute3
268 , ADJ.attribute4
269 , ADJ.attribute5
270 , ADJ.attribute6
271 , ADJ.attribute7
272 , ADJ.attribute8
273 , ADJ.attribute9
274 , ADJ.attribute10
275 , ADJ.attribute11
276 , ADJ.attribute12
277 , ADJ.attribute13
278 , ADJ.attribute14
279 , ADJ.attribute15
280 , ADJ.orig_sys_discount_ref
281 , ADJ.list_header_id
282 , ADJ.list_line_id
283 , ADJ.list_line_type_code
284 , ADJ.modified_from
285 , ADJ.modified_to
286 , ADJ.updated_flag
287 , ADJ.update_allowed
288 , ADJ.applied_flag
289 , ADJ.change_reason_code
290 , ADJ.change_reason_text
291 , ADJ.operand
292 , ADJ.arithmetic_operator
293 , ADJ.cost_id
294 , ADJ.tax_code
295 , ADJ.tax_exempt_flag
296 , ADJ.tax_exempt_number
297 , ADJ.tax_exempt_reason_code
298 , ADJ.parent_adjustment_id
299 , ADJ.invoiced_flag
300 , ADJ.estimated_flag
301 , ADJ.inc_in_sales_performance
302 , ADJ.adjusted_amount
303 , ADJ.pricing_phase_id
304 , ADJ.charge_type_code
305 , ADJ.charge_subtype_code
306 , ADJ.list_line_no
307 , ADJ.source_system_code
308 , ADJ.benefit_qty
309 , ADJ.benefit_uom_code
310 , ADJ.print_on_invoice_flag
311 , ADJ.expiration_date
312 , ADJ.rebate_transaction_type_code
313 , ADJ.rebate_transaction_reference
314 , ADJ.rebate_payment_system_code
315 , ADJ.redeemed_date
316 , ADJ.redeemed_flag
317 , ADJ.accrual_flag
318 , ADJ.range_break_quantity
319 , ADJ.accrual_conversion_rate
320 , ADJ.pricing_group_sequence
321 , ADJ.modifier_level_code
322 , ADJ.price_break_type_code
323 , ADJ.substitution_attribute
324 , ADJ.proration_type_code
325 , ADJ.credit_or_charge_flag
326 , ADJ.include_on_returns_flag
327 , ADJ.ac_context
328 , ADJ.ac_attribute1
329 , ADJ.ac_attribute2
330 , ADJ.ac_attribute3
331 , ADJ.ac_attribute4
332 , ADJ.ac_attribute5
333 , ADJ.ac_attribute6
334 , ADJ.ac_attribute7
335 , ADJ.ac_attribute8
336 , ADJ.ac_attribute9
337 , ADJ.ac_attribute10
338 , ADJ.ac_attribute11
339 , ADJ.ac_attribute12
340 , ADJ.ac_attribute13
341 , ADJ.ac_attribute14
342 , ADJ.ac_attribute15
343 , ADJ.operand_per_pqty
344 , ADJ.adjusted_amount_per_pqty
345 , 1
346 FROM PO_PRICE_ADJUSTMENTS ADJ
347 WHERE ADJ.price_adjustment_id = p_price_adjustment_id_tbl(i)
348 AND x_record_already_exist_tbl(i) = FND_API.G_FALSE
349 AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
350
351 d_position := 20;
352 IF (PO_LOG.d_stmt) THEN
353 PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
354 END IF;
355
356 FORALL i IN 1..p_price_adjustment_id_tbl.COUNT
357 UPDATE po_price_adjustments_draft
358 SET delete_flag = p_delete_flag_tbl(i)
359 WHERE (price_adjustment_id = p_price_adjustment_id_tbl(i)
360 OR parent_adjustment_id = p_price_adjustment_id_tbl(i))
361 AND draft_id = p_draft_id_tbl(i)
362 AND NVL(delete_flag, 'N') <> 'Y'
363 AND x_record_already_exist_tbl(i) = FND_API.G_TRUE;
364
365 d_position := 30;
366 IF (PO_LOG.d_stmt) THEN
367 PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
368 ' in draft table. Count = ' || SQL%ROWCOUNT);
369 END IF;
370
371 --No Need to update the price adjustment attributes if already found in draft table
372 FORALL i IN 1..p_price_adjustment_id_tbl.COUNT
373 INSERT INTO PO_PRICE_ADJ_ATTRIBS_DRAFT
374 (DRAFT_ID
375 , PRICE_ADJUSTMENT_ID
376 , PRICING_CONTEXT
377 , PRICING_ATTRIBUTE
378 , CREATION_DATE
379 , CREATED_BY
380 , LAST_UPDATE_DATE
381 , LAST_UPDATED_BY
382 , LAST_UPDATE_LOGIN
383 , PROGRAM_APPLICATION_ID
384 , PROGRAM_ID
385 , PROGRAM_UPDATE_DATE
386 , REQUEST_ID
387 , PRICING_ATTR_VALUE_FROM
388 , PRICING_ATTR_VALUE_TO
389 , COMPARISON_OPERATOR
390 , FLEX_TITLE
391 , PRICE_ADJ_ATTRIB_ID
392 , LOCK_CONTROL
393 )
394 SELECT p_draft_id_tbl(i)
395 , ATTR.price_adjustment_id
396 , ATTR.pricing_context
397 , ATTR.pricing_attribute
398 , ATTR.creation_date
399 , ATTR.created_by
400 , ATTR.last_update_date
401 , ATTR.last_updated_by
402 , ATTR.last_update_login
403 , ATTR.program_application_id
404 , ATTR.program_id
405 , ATTR.program_update_date
406 , ATTR.request_id
407 , ATTR.pricing_attr_value_from
408 , ATTR.pricing_attr_value_to
409 , ATTR.comparison_operator
410 , ATTR.flex_title
411 , ATTR.price_adj_attrib_id
412 , 1
413 FROM PO_PRICE_ADJ_ATTRIBS ATTR
414 WHERE ATTR.price_adjustment_id = p_price_adjustment_id_tbl(i)
415 AND x_record_already_exist_tbl(i) = FND_API.G_FALSE
416 AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
417
418 d_position := 40;
419 IF (PO_LOG.d_stmt) THEN
420 PO_LOG.stmt(d_module, d_position, 'Attribute records transfer count = ' || SQL%ROWCOUNT);
421 END IF;
422
423 d_position := 50;
424 IF (PO_LOG.d_proc) THEN
425 PO_LOG.proc_end(d_module);
426 END IF;
427
428 EXCEPTION
429 WHEN OTHERS THEN
430 PO_MESSAGE_S.add_exc_msg
431 ( p_pkg_name => d_pkg_name,
432 p_procedure_name => d_api_name || '.' || d_position
433 );
434 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
435 END sync_draft_from_txn;
436
437 -----------------------------------------------------------------------
438 --Start of Comments
439 --Name: sync_draft_from_txn
440 --Pre-reqs: None
441 --Modifies:
442 --Locks:
443 -- None
444 --Function:
445 -- Same functionality as the bulk version of this procedure
446 --Parameters:
447 --IN:
448 --p_price_adjustment_id
449 -- price adjustment unique identifier
450 --p_draft_id
451 -- the draft this sync up will be done for
452 --p_delete_flag
453 -- flag to indicate whether the draft record should be maked as "to be
454 -- deleted"
455 --IN OUT:
456 --OUT:
457 --x_record_already_exist
458 -- Returns whether the record was already in draft table or not
459 --Returns:
460 --Notes:
461 --Testing:
462 --End of Comments
463 ------------------------------------------------------------------------
464 PROCEDURE sync_draft_from_txn
465 ( p_price_adjustment_id IN NUMBER,
466 p_draft_id IN NUMBER,
467 p_delete_flag IN VARCHAR2,
468 x_record_already_exist OUT NOCOPY VARCHAR2
469 ) IS
470 --
471 d_api_name CONSTANT VARCHAR2(30) := 'sync_draft_from_txn';
472 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
473 d_position NUMBER;
474
475 l_record_already_exist_tbl PO_TBL_VARCHAR1;
476 BEGIN
477 d_position := 0;
478 IF (PO_LOG.d_proc) THEN
479 PO_LOG.proc_begin(d_module);
480 PO_LOG.proc_begin(d_module, 'p_price_adjustment_id', p_price_adjustment_id);
481 END IF;
482
483 sync_draft_from_txn
484 ( p_price_adjustment_id_tbl => PO_TBL_NUMBER(p_price_adjustment_id),
485 p_draft_id_tbl => PO_TBL_NUMBER(p_draft_id),
486 p_delete_flag_tbl => PO_TBL_VARCHAR1(p_delete_flag),
487 x_record_already_exist_tbl => l_record_already_exist_tbl
488 );
489
490 x_record_already_exist := l_record_already_exist_tbl(1);
491
492 d_position := 10;
493 IF (PO_LOG.d_proc) THEN
494 PO_LOG.proc_end(d_module);
495 PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
496 END IF;
497
498 EXCEPTION
499 WHEN OTHERS THEN
500 PO_MESSAGE_S.add_exc_msg
501 ( p_pkg_name => d_pkg_name,
502 p_procedure_name => d_api_name || '.' || d_position
503 );
504 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
505 END sync_draft_from_txn;
506
507
508 -----------------------------------------------------------------------
509 --Start of Comments
510 --Name: sync_draft_from_txn
511 --Pre-reqs: None
512 --Modifies:
513 --Locks:
514 -- None
515 --Function:
516 -- Same functionality as the bulk version of this procedure
517 --Parameters:
518 --IN:
519 --p_draft_id
520 -- this sync up will be done for
521 --p_order_line_id
522 -- po line unique identifier
523 --IN OUT:
524 --OUT:
525
526 --Returns:
527 --Notes:
528 --Testing:
529 --End of Comments
530 ------------------------------------------------------------------------
531 PROCEDURE sync_draft_from_txn
532 ( p_draft_id IN NUMBER,
533 p_order_header_id NUMBER,
534 p_order_line_id IN NUMBER,
535 p_delete_flag IN VARCHAR2
536 --x_record_already_exist OUT NOCOPY VARCHAR2
537 ) IS
538
539 d_api_name CONSTANT VARCHAR2(30) := 'sync_draft_from_txn';
540 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
541 d_position NUMBER;
542
543 l_record_already_exist_tbl PO_TBL_VARCHAR1;
544 l_price_adjustment_id_tbl PO_TBL_NUMBER;
545 l_draft_id_tbl PO_TBL_NUMBER;
546 l_delete_flag_tbl PO_TBL_VARCHAR1;
547
548 BEGIN
549 d_position := 0;
550 IF (PO_LOG.d_proc) THEN
551 PO_LOG.proc_begin(d_module);
552 PO_LOG.proc_begin(d_module, 'p_draft_id', p_draft_id);
553 PO_LOG.proc_begin(d_module, 'p_order_header_id', p_order_header_id);
554 PO_LOG.proc_begin(d_module, 'p_order_line_id', p_order_line_id);
555 PO_LOG.proc_begin(d_module, 'p_delete_flag', p_delete_flag);
556 END IF;
557
558 --Get all price_adjustment_ids under the order line id
559 SELECT ADJ.price_adjustment_id
560 ,p_draft_id
561 ,p_delete_flag
562 BULK COLLECT INTO l_price_adjustment_id_tbl
563 ,l_draft_id_tbl
564 ,l_delete_flag_tbl
565 FROM po_price_adjustments ADJ
566 WHERE ADJ.po_header_id = p_order_header_id
567 AND ADJ.po_line_id = NVL(p_order_line_id, ADJ.po_line_id);
568
569 sync_draft_from_txn
570 ( p_price_adjustment_id_tbl => l_price_adjustment_id_tbl,
571 p_draft_id_tbl => l_draft_id_tbl,
572 p_delete_flag_tbl => l_delete_flag_tbl,
573 x_record_already_exist_tbl => l_record_already_exist_tbl
574 );
575 --x_record_already_exist := l_record_already_exist_tbl(1);
576
577 d_position := 10;
578 IF (PO_LOG.d_proc) THEN
579 PO_LOG.proc_end(d_module);
580 --PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
581 END IF;
582
583 EXCEPTION
584 WHEN OTHERS THEN
585 PO_MESSAGE_S.add_exc_msg
586 ( p_pkg_name => d_pkg_name,
587 p_procedure_name => d_api_name || '.' || d_position
588 );
589 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
590 END sync_draft_from_txn;
591
592 -----------------------------------------------------------------------
593 --Start of Comments
594 --Name: merge_changes
595 --Pre-reqs: None
596 --Modifies:
597 --Locks:
598 -- None
599 --Function:
600 -- Merge the records in draft table to transaction table
601 -- Either insert, update or delete will be performed on top of transaction
602 -- table, depending on the delete_flag on the draft record and whether the
603 -- record already exists in transaction table
604 --
605 --Parameters:
606 --IN:
607 --p_draft_id
608 -- draft unique identifier
609 --IN OUT:
610 --OUT:
611 --Returns:
612 --Notes:
613 --Testing:
614 --End of Comments
615 ------------------------------------------------------------------------
616 PROCEDURE merge_changes
617 ( p_draft_id IN NUMBER
618 ) IS
619
620 d_api_name CONSTANT VARCHAR2(30) := 'merge_changes';
621 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
622 d_position NUMBER;
623
624 l_price_adjustment_id_tbl NUMBER_TYPE;
625 BEGIN
626
627 d_position := 0;
628 IF (PO_LOG.d_proc) THEN
629 PO_LOG.proc_begin(d_module);
630 END IF;
631
632 -- Since putting DELETE within MERGE statement is causing database
633 -- to thrown internal error, for now we just separate the DELETE statement.
634 -- Once this is fixed we'll move the delete statement back to the merge
635 -- statement
636
637 -- Delete only records that have not been rejected
638 DELETE FROM po_price_adjustments ADJ
639 WHERE ADJ.price_adjustment_id IN
640 ( SELECT ADJD.price_adjustment_id
641 FROM po_price_adjustments_draft ADJD
642 WHERE ADJD.draft_id = p_draft_id
643 AND ADJD.delete_flag = 'Y'
644 AND NVL(ADJD.change_accepted_flag, 'Y') = 'Y')
645 RETURNING ADJ.price_adjustment_id BULK COLLECT INTO l_price_adjustment_id_tbl;
646
647 /*
648 --Set the Delete Flag to Y for the child price break lines if the price break header is marked for deletion
649 UPDATE po_price_adjustments_draft ADJD
650 SET delete_flag = 'Y'
651 WHERE EXISTS (SELECT 1
652 FROM po_price_adjustments_draft DADJD
653 WHERE DADJD.price_adjustment_id = ADJD.parent_adjustment_id
654 AND DADJD.delete_flag = 'Y');
655 */
656 --Delete Child adjustment lines
657 FORALL i IN l_price_adjustment_id_tbl.FIRST .. l_price_adjustment_id_tbl.LAST
658 DELETE FROM po_price_adjustments ADJ
659 WHERE ADJ.parent_adjustment_id = l_price_adjustment_id_tbl(i);
660
661 --Delete the attributes corresponding to the lines that are marked for deletion
662 DELETE FROM po_price_adj_attribs ATTR
663 WHERE ATTR.price_adjustment_id IN
664 (SELECT ADJD.price_adjustment_id
665 FROM po_price_adjustments_draft ADJD
666 WHERE ADJD.draft_id = p_draft_id
667 --AND ADJD.delete_flag = 'Y' --delete all attributes irrespective of the flag
668 AND NVL(ADJD.change_accepted_flag, 'Y') = 'Y');
669
670 MERGE INTO po_price_adjustments ADJ
671 USING (
672 SELECT DFT.draft_id
673 , DFT.change_accepted_flag
674 , DFT.delete_flag
675 , DFT.price_adjustment_id
676 , DFT.adj_line_num
677 , DFT.creation_date
678 , DFT.created_by
679 , DFT.last_update_date
680 , DFT.last_updated_by
681 , DFT.last_update_login
682 , DFT.program_application_id
683 , DFT.program_id
684 , DFT.program_update_date
685 , DFT.request_id
686 , DFT.po_header_id
687 , DFT.automatic_flag
688 , DFT.po_line_id
689 , DFT.context
690 , DFT.attribute1
691 , DFT.attribute2
692 , DFT.attribute3
693 , DFT.attribute4
694 , DFT.attribute5
695 , DFT.attribute6
696 , DFT.attribute7
697 , DFT.attribute8
698 , DFT.attribute9
699 , DFT.attribute10
700 , DFT.attribute11
701 , DFT.attribute12
702 , DFT.attribute13
703 , DFT.attribute14
704 , DFT.attribute15
705 , DFT.orig_sys_discount_ref
706 , DFT.list_header_id
707 , DFT.list_line_id
708 , DFT.list_line_type_code
709 , DFT.modified_from
710 , DFT.modified_to
711 , DFT.updated_flag
712 , DFT.update_allowed
713 , DFT.applied_flag
714 , DFT.change_reason_code
715 , DFT.change_reason_text
716 , DFT.operand
717 , DFT.arithmetic_operator
718 , DFT.cost_id
719 , DFT.tax_code
720 , DFT.tax_exempt_flag
721 , DFT.tax_exempt_number
722 , DFT.tax_exempt_reason_code
723 , DFT.parent_adjustment_id
724 , DFT.invoiced_flag
725 , DFT.estimated_flag
726 , DFT.inc_in_sales_performance
727 , DFT.adjusted_amount
728 , DFT.pricing_phase_id
729 , DFT.charge_type_code
730 , DFT.charge_subtype_code
731 , DFT.list_line_no
732 , DFT.source_system_code
733 , DFT.benefit_qty
734 , DFT.benefit_uom_code
735 , DFT.print_on_invoice_flag
736 , DFT.expiration_date
737 , DFT.rebate_transaction_type_code
738 , DFT.rebate_transaction_reference
739 , DFT.rebate_payment_system_code
740 , DFT.redeemed_date
741 , DFT.redeemed_flag
742 , DFT.accrual_flag
743 , DFT.range_break_quantity
744 , DFT.accrual_conversion_rate
745 , DFT.pricing_group_sequence
746 , DFT.modifier_level_code
747 , DFT.price_break_type_code
748 , DFT.substitution_attribute
749 , DFT.proration_type_code
750 , DFT.credit_or_charge_flag
751 , DFT.include_on_returns_flag
752 , DFT.ac_context
753 , DFT.ac_attribute1
754 , DFT.ac_attribute2
755 , DFT.ac_attribute3
756 , DFT.ac_attribute4
757 , DFT.ac_attribute5
758 , DFT.ac_attribute6
759 , DFT.ac_attribute7
760 , DFT.ac_attribute8
761 , DFT.ac_attribute9
762 , DFT.ac_attribute10
763 , DFT.ac_attribute11
764 , DFT.ac_attribute12
765 , DFT.ac_attribute13
766 , DFT.ac_attribute14
767 , DFT.ac_attribute15
768 , DFT.operand_per_pqty
769 , DFT.adjusted_amount_per_pqty
770 FROM po_price_adjustments_draft DFT
771 WHERE DFT.draft_id = p_draft_id
772 AND NVL(DFT.change_accepted_flag, 'Y') = 'Y') ADJD
773 ON (ADJ.price_adjustment_id = ADJD.price_adjustment_id)
774 WHEN MATCHED THEN
775 UPDATE
776 SET ADJ.last_update_date = ADJD.last_update_date
777 , ADJ.last_updated_by = ADJD.last_updated_by
778 , ADJ.last_update_login = ADJD.last_update_login
779 , ADJ.program_application_id = ADJD.program_application_id
780 , ADJ.program_id = ADJD.program_id
781 , ADJ.program_update_date = ADJD.program_update_date
782 , ADJ.request_id = ADJD.request_id
783 , ADJ.adj_line_num = ADJD.adj_line_num
784 , ADJ.po_header_id = ADJD.po_header_id
785 , ADJ.automatic_flag = ADJD.automatic_flag
786 , ADJ.po_line_id = ADJD.po_line_id
787 , ADJ.context = ADJD.context
788 , ADJ.attribute1 = ADJD.attribute1
789 , ADJ.attribute2 = ADJD.attribute2
790 , ADJ.attribute3 = ADJD.attribute3
791 , ADJ.attribute4 = ADJD.attribute4
792 , ADJ.attribute5 = ADJD.attribute5
793 , ADJ.attribute6 = ADJD.attribute6
794 , ADJ.attribute7 = ADJD.attribute7
795 , ADJ.attribute8 = ADJD.attribute8
796 , ADJ.attribute9 = ADJD.attribute9
797 , ADJ.attribute10 = ADJD.attribute10
798 , ADJ.attribute11 = ADJD.attribute11
799 , ADJ.attribute12 = ADJD.attribute12
800 , ADJ.attribute13 = ADJD.attribute13
801 , ADJ.attribute14 = ADJD.attribute14
802 , ADJ.attribute15 = ADJD.attribute15
803 , ADJ.orig_sys_discount_ref = ADJD.orig_sys_discount_ref
804 , ADJ.list_header_id = ADJD.list_header_id
805 , ADJ.list_line_id = ADJD.list_line_id
806 , ADJ.list_line_type_code = ADJD.list_line_type_code
807 , ADJ.modified_from = ADJD.modified_from
808 , ADJ.modified_to = ADJD.modified_to
809 , ADJ.updated_flag = ADJD.updated_flag
810 , ADJ.update_allowed = ADJD.update_allowed
811 , ADJ.applied_flag = ADJD.applied_flag
812 , ADJ.change_reason_code = ADJD.change_reason_code
813 , ADJ.change_reason_text = ADJD.change_reason_text
814 , ADJ.operand = ADJD.operand
815 , ADJ.arithmetic_operator = ADJD.arithmetic_operator
816 , ADJ.cost_id = ADJD.cost_id
817 , ADJ.tax_code = ADJD.tax_code
818 , ADJ.tax_exempt_flag = ADJD.tax_exempt_flag
819 , ADJ.tax_exempt_number = ADJD.tax_exempt_number
820 , ADJ.tax_exempt_reason_code = ADJD.tax_exempt_reason_code
821 , ADJ.parent_adjustment_id = ADJD.parent_adjustment_id
822 , ADJ.invoiced_flag = ADJD.invoiced_flag
823 , ADJ.estimated_flag = ADJD.estimated_flag
824 , ADJ.inc_in_sales_performance = ADJD.inc_in_sales_performance
825 , ADJ.adjusted_amount = ADJD.adjusted_amount
826 , ADJ.pricing_phase_id = ADJD.pricing_phase_id
827 , ADJ.charge_type_code = ADJD.charge_type_code
828 , ADJ.charge_subtype_code = ADJD.charge_subtype_code
829 , ADJ.list_line_no = ADJD.list_line_no
830 , ADJ.source_system_code = ADJD.source_system_code
831 , ADJ.benefit_qty = ADJD.benefit_qty
832 , ADJ.benefit_uom_code = ADJD.benefit_uom_code
833 , ADJ.print_on_invoice_flag = ADJD.print_on_invoice_flag
834 , ADJ.expiration_date = ADJD.expiration_date
835 , ADJ.rebate_transaction_type_code = ADJD.rebate_transaction_type_code
836 , ADJ.rebate_transaction_reference = ADJD.rebate_transaction_reference
837 , ADJ.rebate_payment_system_code = ADJD.rebate_payment_system_code
838 , ADJ.redeemed_date = ADJD.redeemed_date
839 , ADJ.redeemed_flag = ADJD.redeemed_flag
840 , ADJ.accrual_flag = ADJD.accrual_flag
841 , ADJ.range_break_quantity = ADJD.range_break_quantity
842 , ADJ.accrual_conversion_rate = ADJD.accrual_conversion_rate
843 , ADJ.pricing_group_sequence = ADJD.pricing_group_sequence
844 , ADJ.modifier_level_code = ADJD.modifier_level_code
845 , ADJ.price_break_type_code = ADJD.price_break_type_code
846 , ADJ.substitution_attribute = ADJD.substitution_attribute
847 , ADJ.proration_type_code = ADJD.proration_type_code
848 , ADJ.credit_or_charge_flag = ADJD.credit_or_charge_flag
849 , ADJ.include_on_returns_flag = ADJD.include_on_returns_flag
850 , ADJ.ac_context = ADJD.ac_context
851 , ADJ.ac_attribute1 = ADJD.ac_attribute1
852 , ADJ.ac_attribute2 = ADJD.ac_attribute2
853 , ADJ.ac_attribute3 = ADJD.ac_attribute3
854 , ADJ.ac_attribute4 = ADJD.ac_attribute4
855 , ADJ.ac_attribute5 = ADJD.ac_attribute5
856 , ADJ.ac_attribute6 = ADJD.ac_attribute6
857 , ADJ.ac_attribute7 = ADJD.ac_attribute7
858 , ADJ.ac_attribute8 = ADJD.ac_attribute8
859 , ADJ.ac_attribute9 = ADJD.ac_attribute9
860 , ADJ.ac_attribute10 = ADJD.ac_attribute10
861 , ADJ.ac_attribute11 = ADJD.ac_attribute11
862 , ADJ.ac_attribute12 = ADJD.ac_attribute12
863 , ADJ.ac_attribute13 = ADJD.ac_attribute13
864 , ADJ.ac_attribute14 = ADJD.ac_attribute14
865 , ADJ.ac_attribute15 = ADJD.ac_attribute15
866 , ADJ.operand_per_pqty = ADJD.operand_per_pqty
867 , ADJ.adjusted_amount_per_pqty = ADJD.adjusted_amount_per_pqty
868 , ADJ.lock_control = ADJ.lock_control + 1
869 WHEN NOT MATCHED THEN
870 INSERT
871 ( PRICE_ADJUSTMENT_ID
872 , ADJ_LINE_NUM
873 , CREATION_DATE
874 , CREATED_BY
875 , LAST_UPDATE_DATE
876 , LAST_UPDATED_BY
877 , LAST_UPDATE_LOGIN
878 , PROGRAM_APPLICATION_ID
879 , PROGRAM_ID
880 , PROGRAM_UPDATE_DATE
881 , REQUEST_ID
882 , PO_HEADER_ID
883 , AUTOMATIC_FLAG
884 , PO_LINE_ID
885 , CONTEXT
886 , ATTRIBUTE1
887 , ATTRIBUTE2
888 , ATTRIBUTE3
889 , ATTRIBUTE4
890 , ATTRIBUTE5
891 , ATTRIBUTE6
892 , ATTRIBUTE7
893 , ATTRIBUTE8
894 , ATTRIBUTE9
895 , ATTRIBUTE10
896 , ATTRIBUTE11
897 , ATTRIBUTE12
898 , ATTRIBUTE13
899 , ATTRIBUTE14
900 , ATTRIBUTE15
901 , ORIG_SYS_DISCOUNT_REF
902 , LIST_HEADER_ID
903 , LIST_LINE_ID
904 , LIST_LINE_TYPE_CODE
905 , MODIFIED_FROM
906 , MODIFIED_TO
907 , UPDATED_FLAG
908 , UPDATE_ALLOWED
909 , APPLIED_FLAG
910 , CHANGE_REASON_CODE
911 , CHANGE_REASON_TEXT
912 , OPERAND
913 , ARITHMETIC_OPERATOR
914 , COST_ID
915 , TAX_CODE
916 , TAX_EXEMPT_FLAG
917 , TAX_EXEMPT_NUMBER
918 , TAX_EXEMPT_REASON_CODE
919 , PARENT_ADJUSTMENT_ID
920 , INVOICED_FLAG
921 , ESTIMATED_FLAG
922 , INC_IN_SALES_PERFORMANCE
923 , ADJUSTED_AMOUNT
924 , PRICING_PHASE_ID
925 , CHARGE_TYPE_CODE
926 , CHARGE_SUBTYPE_CODE
927 , LIST_LINE_NO
928 , SOURCE_SYSTEM_CODE
929 , BENEFIT_QTY
930 , BENEFIT_UOM_CODE
931 , PRINT_ON_INVOICE_FLAG
932 , EXPIRATION_DATE
933 , REBATE_TRANSACTION_TYPE_CODE
934 , REBATE_TRANSACTION_REFERENCE
935 , REBATE_PAYMENT_SYSTEM_CODE
936 , REDEEMED_DATE
937 , REDEEMED_FLAG
938 , ACCRUAL_FLAG
939 , RANGE_BREAK_QUANTITY
940 , ACCRUAL_CONVERSION_RATE
941 , PRICING_GROUP_SEQUENCE
942 , MODIFIER_LEVEL_CODE
943 , PRICE_BREAK_TYPE_CODE
944 , SUBSTITUTION_ATTRIBUTE
945 , PRORATION_TYPE_CODE
946 , CREDIT_OR_CHARGE_FLAG
947 , INCLUDE_ON_RETURNS_FLAG
948 , AC_CONTEXT
949 , AC_ATTRIBUTE1
950 , AC_ATTRIBUTE2
951 , AC_ATTRIBUTE3
952 , AC_ATTRIBUTE4
953 , AC_ATTRIBUTE5
954 , AC_ATTRIBUTE6
955 , AC_ATTRIBUTE7
956 , AC_ATTRIBUTE8
957 , AC_ATTRIBUTE9
958 , AC_ATTRIBUTE10
959 , AC_ATTRIBUTE11
960 , AC_ATTRIBUTE12
961 , AC_ATTRIBUTE13
962 , AC_ATTRIBUTE14
963 , AC_ATTRIBUTE15
964 , OPERAND_PER_PQTY
965 , ADJUSTED_AMOUNT_PER_PQTY
966 , LOCK_CONTROL
967 )
968 VALUES
969 ( ADJD.price_adjustment_id
970 , ADJD.adj_line_num
971 , ADJD.creation_date
972 , ADJD.created_by
973 , ADJD.last_update_date
974 , ADJD.last_updated_by
975 , ADJD.last_update_login
976 , ADJD.program_application_id
977 , ADJD.program_id
978 , ADJD.program_update_date
979 , ADJD.request_id
980 , ADJD.po_header_id
981 , ADJD.automatic_flag
982 , ADJD.po_line_id
983 , ADJD.context
984 , ADJD.attribute1
985 , ADJD.attribute2
986 , ADJD.attribute3
987 , ADJD.attribute4
988 , ADJD.attribute5
989 , ADJD.attribute6
990 , ADJD.attribute7
991 , ADJD.attribute8
992 , ADJD.attribute9
993 , ADJD.attribute10
994 , ADJD.attribute11
995 , ADJD.attribute12
996 , ADJD.attribute13
997 , ADJD.attribute14
998 , ADJD.attribute15
999 , ADJD.orig_sys_discount_ref
1000 , ADJD.list_header_id
1001 , ADJD.list_line_id
1002 , ADJD.list_line_type_code
1003 , ADJD.modified_from
1004 , ADJD.modified_to
1005 , ADJD.updated_flag
1006 , ADJD.update_allowed
1007 , ADJD.applied_flag
1008 , ADJD.change_reason_code
1009 , ADJD.change_reason_text
1010 , ADJD.operand
1011 , ADJD.arithmetic_operator
1012 , ADJD.cost_id
1013 , ADJD.tax_code
1014 , ADJD.tax_exempt_flag
1015 , ADJD.tax_exempt_number
1016 , ADJD.tax_exempt_reason_code
1017 , ADJD.parent_adjustment_id
1018 , ADJD.invoiced_flag
1019 , ADJD.estimated_flag
1020 , ADJD.inc_in_sales_performance
1021 , ADJD.adjusted_amount
1022 , ADJD.pricing_phase_id
1023 , ADJD.charge_type_code
1024 , ADJD.charge_subtype_code
1025 , ADJD.list_line_no
1026 , ADJD.source_system_code
1027 , ADJD.benefit_qty
1028 , ADJD.benefit_uom_code
1029 , ADJD.print_on_invoice_flag
1030 , ADJD.expiration_date
1031 , ADJD.rebate_transaction_type_code
1032 , ADJD.rebate_transaction_reference
1033 , ADJD.rebate_payment_system_code
1034 , ADJD.redeemed_date
1035 , ADJD.redeemed_flag
1036 , ADJD.accrual_flag
1037 , ADJD.range_break_quantity
1038 , ADJD.accrual_conversion_rate
1039 , ADJD.pricing_group_sequence
1040 , ADJD.modifier_level_code
1041 , ADJD.price_break_type_code
1042 , ADJD.substitution_attribute
1043 , ADJD.proration_type_code
1044 , ADJD.credit_or_charge_flag
1045 , ADJD.include_on_returns_flag
1046 , ADJD.ac_context
1047 , ADJD.ac_attribute1
1048 , ADJD.ac_attribute2
1049 , ADJD.ac_attribute3
1050 , ADJD.ac_attribute4
1051 , ADJD.ac_attribute5
1052 , ADJD.ac_attribute6
1053 , ADJD.ac_attribute7
1054 , ADJD.ac_attribute8
1055 , ADJD.ac_attribute9
1056 , ADJD.ac_attribute10
1057 , ADJD.ac_attribute11
1058 , ADJD.ac_attribute12
1059 , ADJD.ac_attribute13
1060 , ADJD.ac_attribute14
1061 , ADJD.ac_attribute15
1062 , ADJD.operand_per_pqty
1063 , ADJD.adjusted_amount_per_pqty
1064 , 1
1065 )
1066 WHERE NVL(ADJD.delete_flag, 'N') <> 'Y';
1067
1068 INSERT INTO po_price_adj_attribs
1069 (PRICE_ADJUSTMENT_ID
1070 , PRICING_CONTEXT
1071 , PRICING_ATTRIBUTE
1072 , CREATION_DATE
1073 , CREATED_BY
1074 , LAST_UPDATE_DATE
1075 , LAST_UPDATED_BY
1076 , LAST_UPDATE_LOGIN
1077 , PROGRAM_APPLICATION_ID
1078 , PROGRAM_ID
1079 , PROGRAM_UPDATE_DATE
1080 , REQUEST_ID
1081 , PRICING_ATTR_VALUE_FROM
1082 , PRICING_ATTR_VALUE_TO
1083 , COMPARISON_OPERATOR
1084 , FLEX_TITLE
1085 , PRICE_ADJ_ATTRIB_ID
1086 , LOCK_CONTROL
1087 )
1088 SELECT ATTR.price_adjustment_id
1089 , ATTR.pricing_context
1090 , ATTR.pricing_attribute
1091 , ATTR.creation_date
1092 , ATTR.created_by
1093 , ATTR.last_update_date
1094 , ATTR.last_updated_by
1095 , ATTR.last_update_login
1096 , ATTR.program_application_id
1097 , ATTR.program_id
1098 , ATTR.program_update_date
1099 , ATTR.request_id
1100 , ATTR.pricing_attr_value_from
1101 , ATTR.pricing_attr_value_to
1102 , ATTR.comparison_operator
1103 , ATTR.flex_title
1104 , ATTR.price_adj_attrib_id
1105 , 1
1106 FROM po_price_adj_attribs_draft ATTR
1107 ,po_price_adjustments_draft ADJD
1108 WHERE ADJD.draft_id = p_draft_id
1109 AND ADJD.draft_id = ATTR.draft_id
1110 AND ADJD.price_adjustment_id = ATTR.price_adjustment_id
1111 AND NVL(ADJD.delete_flag, 'N') <> 'Y'
1112 AND NVL(ADJD.change_accepted_flag, 'Y') = 'Y';
1113
1114 d_position := 40;
1115 IF (PO_LOG.d_stmt) THEN
1116 PO_LOG.stmt(d_module, d_position, 'Attribute records transfer count = ' || SQL%ROWCOUNT);
1117 END IF;
1118
1119 d_position := 50;
1120 EXCEPTION
1121 WHEN OTHERS THEN
1122 PO_MESSAGE_S.add_exc_msg
1123 ( p_pkg_name => d_pkg_name,
1124 p_procedure_name => d_api_name || '.' || d_position
1125 );
1126 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1127 END merge_changes;
1128
1129 -----------------------------------------------------------------------
1130 --Start of Comments
1131 --Name: lock_draft_record
1132 --Function:
1133 -- Obtain database lock for the record in draft table
1134 --Parameters:
1135 --IN:
1136 --p_price_adjustment_id
1137 -- id for po price adjustments record
1138 --p_draft_id
1139 -- draft unique identifier
1140 --RETURN:
1141 --End of Comments
1142 ------------------------------------------------------------------------
1143 PROCEDURE lock_draft_record
1144 ( p_price_adjustment_id IN NUMBER,
1145 p_draft_id IN NUMBER
1146 ) IS
1147
1148 d_api_name CONSTANT VARCHAR2(30) := 'lock_draft_record';
1149 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
1150 d_position NUMBER;
1151
1152 l_dummy NUMBER;
1153
1154 BEGIN
1155 d_position := 0;
1156 IF (PO_LOG.d_proc) THEN
1157 PO_LOG.proc_begin(d_module);
1158 END IF;
1159
1160 SELECT 1
1161 INTO l_dummy
1162 FROM po_price_adjustments_draft
1163 WHERE price_adjustment_id = p_price_adjustment_id
1164 AND draft_id = p_draft_id
1165 FOR UPDATE NOWAIT;
1166
1167 IF (PO_LOG.d_proc) THEN
1168 PO_LOG.proc_end(d_module);
1169 END IF;
1170
1171 EXCEPTION
1172 WHEN NO_DATA_FOUND THEN
1173 NULL;
1174 END lock_draft_record;
1175
1176 -----------------------------------------------------------------------
1177 --Start of Comments
1178 --Name: lock_transaction_record
1179 --Function:
1180 -- Obtain database lock for the record in transaction table
1181 --Parameters:
1182 --IN:
1183 --p_price_adjustment_id
1184 -- id for price adjustment record
1185 --RETURN:
1186 --End of Comments
1187 ------------------------------------------------------------------------
1188 PROCEDURE lock_transaction_record
1189 ( p_price_adjustment_id IN NUMBER
1190 ) IS
1191
1192 d_api_name CONSTANT VARCHAR2(30) := 'lock_transaction_record';
1193 d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
1194 d_position NUMBER;
1195
1196 l_dummy NUMBER;
1197
1198 BEGIN
1199 d_position := 0;
1200 IF (PO_LOG.d_proc) THEN
1201 PO_LOG.proc_begin(d_module);
1202 END IF;
1203
1204 SELECT 1
1205 INTO l_dummy
1206 FROM po_price_adjustments
1207 WHERE price_adjustment_id = p_price_adjustment_id
1208 FOR UPDATE NOWAIT;
1209
1210 IF (PO_LOG.d_proc) THEN
1211 PO_LOG.proc_end(d_module);
1212 END IF;
1213
1214 EXCEPTION
1215 WHEN NO_DATA_FOUND THEN
1216 NULL;
1217 END lock_transaction_record;
1218
1219 END PO_PRICE_ADJ_DRAFT_PKG;