DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.PO_CHORD_WF3

Source


1 PACKAGE BODY PO_CHORD_WF3 AS
2 /* $Header: POXWCO3B.pls 120.9.12020000.2 2013/02/11 01:31:35 vegajula ship $ */
3 
4 -- Read the profile option that enables/disables the debug log
5 g_po_wf_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('PO_SET_DEBUG_WORKFLOW_ON'),'N');
6 
7 PROCEDURE chord_shipments(itemtype IN VARCHAR2,
8 		      itemkey  IN VARCHAR2,
9 		      actid    IN NUMBER,
10 		      funcmode IN VARCHAR2,
11 		      result   OUT NOCOPY VARCHAR2)
12 IS
13 	x_shipments_control		t_shipments_control_type;
14 	x_shipments_parameters		t_shipments_parameters_type;
15 BEGIN
16 
17 	IF (g_po_wf_debug = 'Y') THEN
18    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
19    		'*** In Procedure: chord_shipments ***' );
20 	END IF;
21 
22 	IF funcmode <> 'RUN' THEN
23 		result := 'COMPLETE';
24 		return;
25 	END IF;
26 
27 	get_wf_shipments_parameters(itemtype, itemkey, x_shipments_parameters);
28 
29 	check_shipments_change(itemtype, itemkey, x_shipments_parameters, x_shipments_control);
30 
31 	set_wf_shipments_control(itemtype, itemkey, x_shipments_control);
32 
33 	IF (g_po_wf_debug = 'Y') THEN
34    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
35    		'*** Finish: chord_shipments ***' );
36 	END IF;
37 
38 	result := wf_engine.eng_completed || ':' ||  'ACTIVITY_PERFORMED';
39 	return;
40 
41 EXCEPTION
42 
43  WHEN OTHERS THEN
44   wf_core.context('POAPPRV', 'po_chord_wf3.chord_shipments', 'others');
45   RAISE;
46 
47 END;
48 
49 PROCEDURE check_shipments_change(
50 			itemtype IN VARCHAR2,
51 			itemkey  IN VARCHAR2,
52 			x_shipments_parameters IN t_shipments_parameters_type,
53 			x_shipments_control OUT NOCOPY t_shipments_control_type)
54 IS
55   x_po_header_id			NUMBER:=NULL;
56   x_po_release_id			NUMBER:=NULL;
57   e_invalid_setup			EXCEPTION;
58   l_currency_code   VARCHAR2(15);
59   l_min_acct_unit   VARCHAR2(15);
60   l_precision       VARCHAR2(15);
61 
62 BEGIN
63 	IF (g_po_wf_debug = 'Y') THEN
64    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
65    		'*** In procedure: check_shipments_change ***' );
66 	END IF;
67 
68 		/* To use change order,
69 		 * System should have Archive on Approval set
70 		 */
71 
72 	x_shipments_control.shipment_num		:='N';
73 	x_shipments_control.ship_to_organization_id	:='N';
74 	x_shipments_control.ship_to_location_id		:='N';
75 	x_shipments_control.promised_date		:='N';
76 	x_shipments_control.need_by_date		:='N';
77 	x_shipments_control.last_accept_date		:='N';
78 	x_shipments_control.taxable_flag		:='N';
79 	x_shipments_control.price_discount		:='N';
80 	x_shipments_control.cancel_flag			:='N';
81 	x_shipments_control.closed_code			:='N';
82         x_shipments_control.start_date                  :='N';   /* <TIMEPHASED FPI> */
83         x_shipments_control.end_date                    :='N';   /* <TIMEPHASED FPI> */
84         x_shipments_control.price_override              :='N';   /* Bug 2808011 */
85         x_shipments_control.days_late_rcpt_allowed      :='N';   -- ECO 5080252
86 
87         -- <Complex Work R12 Start>
88         x_shipments_control.payment_type := 'N';
89         x_shipments_control.work_approver_id := 'N';
90         x_shipments_control.description := 'N';
91         -- <Complex Work R12 End>
92 
93 	x_shipments_control.quantity_change		:=0;
94 	x_shipments_control.price_override_change	:=0;
95 
96         --<R12 Requester Driven Procurement Start>
97 
98 	x_shipments_control.amount_change		:=0;
99 	x_shipments_control.start_date_change		:=0;
100 	x_shipments_control.end_date_change		:=0;
101 	x_shipments_control.need_by_date_change		:=0;
102 	x_shipments_control.promised_date_change	:=0;
103 
104 	--<R12 Requester Driven Procurement End>
105 
106 	/* This package is shared by PO and Release
107 	 * Pre-condition: Either po_header_id or po_release_id is NULL
108 	 */
109 
110 	x_po_header_id	  := x_shipments_parameters.po_header_id;
111 	x_po_release_id	  := x_shipments_parameters.po_release_id;
112 
113 	IF ((x_po_header_id IS NOT NULL AND x_po_release_id IS NOT NULL) OR
114 	    (x_po_header_id IS NULL AND x_po_release_id IS NULL)) THEN
115 		raise e_invalid_setup;
116 	END IF;
117 
118 /* bug# 880416: brought forward the following changes from 110.5.
119    csheu bug #875995: split the old SQLs based on x_po_header_id */
120 
121         -- SQL What: Select 'Y' if Shipment number is changed
122         -- SQL Why: Need the value for routing to reapproval
123         --          if there is a change
124         -- SQL Join: line_location_id, shipment_num
125         IF (x_po_header_id IS NOT NULL) THEN
126           BEGIN
127                SELECT DISTINCT 'Y'
128                INTO  x_shipments_control.shipment_num
129                FROM  PO_LINE_LOCATIONS_ALL POLL,
130                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
131                WHERE
132 	             POLL.po_header_id = x_po_header_id
133                AND   POLL.line_location_id = POLLA.line_location_id (+)
134                AND   POLLA.latest_external_flag (+) = 'Y'
135                AND   (
136                    (POLLA.line_location_id is NULL)
137                OR (POLL.shipment_num <> POLLA.shipment_num)
138                OR (POLL.shipment_num IS NULL AND POLLA.shipment_num IS NOT NULL)
139                OR (POLL.shipment_num IS NOT NULL AND POLLA.shipment_num IS NULL)
140 	       )
141 	       AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
142 
143           EXCEPTION
144 	  WHEN NO_DATA_FOUND THEN
145 		x_shipments_control.shipment_num := 'N';
146           END;
147         ELSE
148           BEGIN
149                SELECT DISTINCT 'Y'
150                INTO  x_shipments_control.shipment_num
151                FROM  PO_LINE_LOCATIONS_ALL POLL,
152                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
153                WHERE
154                      POLL.po_release_id = x_po_release_id
155                AND   POLL.line_location_id = POLLA.line_location_id (+)
156                AND   POLLA.latest_external_flag (+) = 'Y'
157                AND   (
158                    (POLLA.line_location_id is NULL)
159                OR (POLL.shipment_num <> POLLA.shipment_num)
160                OR (POLL.shipment_num IS NULL AND POLLA.shipment_num IS NOT NULL)
161                OR (POLL.shipment_num IS NOT NULL AND POLLA.shipment_num IS NULL)
162 	       );
163           EXCEPTION
164 	  WHEN NO_DATA_FOUND THEN
165 		x_shipments_control.shipment_num := 'N';
166           END;
167         END IF;
168 
169         -- SQL What: Select 'Y' if Ship to is changed
170         -- SQL Why: Need the value for routing to reapproval
171         --          if there is a change
172         -- SQL Join: line_location_id, ship_to_organization_id
173         IF (x_po_header_id IS NOT NULL) THEN
174           BEGIN
175                SELECT DISTINCT 'Y'
176                INTO  x_shipments_control.ship_to_organization_id
177                FROM  PO_LINE_LOCATIONS_ALL POLL,
178                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
179                WHERE
180 		     POLL.po_header_id = x_po_header_id
181                AND   POLL.line_location_id = POLLA.line_location_id (+)
182                AND   POLLA.latest_external_flag (+) = 'Y'
183                AND   (
184                    (POLLA.line_location_id is NULL)
185                OR (POLL.ship_to_organization_id <> POLLA.ship_to_organization_id)
186                OR (POLL.ship_to_organization_id IS NULL
187 		   AND POLLA.ship_to_organization_id IS NOT NULL)
188                OR (POLL.ship_to_organization_id IS NOT NULL
189 		   AND POLLA.ship_to_organization_id IS NULL)
190 	       )
191              AND poll.po_release_id is NULL;  -- Bug 4016493 : Ignore release shipments
192 
193           EXCEPTION
194 	  WHEN NO_DATA_FOUND THEN
195 		x_shipments_control.ship_to_organization_id := 'N';
196           END;
197         ELSE
198           BEGIN
199                SELECT DISTINCT 'Y'
200                INTO  x_shipments_control.ship_to_organization_id
201                FROM  PO_LINE_LOCATIONS_ALL POLL,
202                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
203                WHERE
204 		     POLL.po_release_id = x_po_release_id
205                AND   POLL.line_location_id = POLLA.line_location_id (+)
206                AND   POLLA.latest_external_flag (+) = 'Y'
207                AND   (
208                    (POLLA.line_location_id is NULL)
209                OR (POLL.ship_to_organization_id <> POLLA.ship_to_organization_id)
210                OR (POLL.ship_to_organization_id IS NULL
211 		   AND POLLA.ship_to_organization_id IS NOT NULL)
212                OR (POLL.ship_to_organization_id IS NOT NULL
213 		   AND POLLA.ship_to_organization_id IS NULL)
214 	       );
215           EXCEPTION
216 	  WHEN NO_DATA_FOUND THEN
217 		x_shipments_control.ship_to_organization_id := 'N';
218           END;
219         END IF;
220 
221         -- SQL What: Select 'Y' if Ship to is changed
222         -- SQL Why: Need the value for routing to reapproval
223         --          if there is a change
224         -- SQL Join: line_location_id, ship_to_location_id
225         IF (x_po_header_id IS NOT NULL) THEN
226           BEGIN
227                SELECT DISTINCT 'Y'
228                INTO  x_shipments_control.ship_to_location_id
229                FROM  PO_LINE_LOCATIONS_ALL POLL,
230                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
231                WHERE
232 		     POLL.po_header_id = x_po_header_id
233                AND   POLL.line_location_id = POLLA.line_location_id (+)
234                AND   POLLA.latest_external_flag (+) = 'Y'
235                AND   (
236                    (POLLA.line_location_id is NULL)
237                OR (POLL.ship_to_location_id <> POLLA.ship_to_location_id)
238                OR (POLL.ship_to_location_id IS NULL
239 		   AND POLLA.ship_to_location_id IS NOT NULL)
240                OR (POLL.ship_to_location_id IS NOT NULL
241 		   AND POLLA.ship_to_location_id IS NULL)
242 	       )
243              AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
244           EXCEPTION
245 	  WHEN NO_DATA_FOUND THEN
246 		x_shipments_control.ship_to_location_id := 'N';
247           END;
248         ELSE
249           BEGIN
250                SELECT DISTINCT 'Y'
251                INTO  x_shipments_control.ship_to_location_id
252                FROM  PO_LINE_LOCATIONS_ALL POLL,
253                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
254                WHERE
255 		     POLL.po_release_id = x_po_release_id
256                AND   POLL.line_location_id = POLLA.line_location_id (+)
257                AND   POLLA.latest_external_flag (+) = 'Y'
258                AND   (
259                    (POLLA.line_location_id is NULL)
260                OR (POLL.ship_to_location_id <> POLLA.ship_to_location_id)
261                OR (POLL.ship_to_location_id IS NULL
262 		   AND POLLA.ship_to_location_id IS NOT NULL)
263                OR (POLL.ship_to_location_id IS NOT NULL
264 		   AND POLLA.ship_to_location_id IS NULL)
265 	       );
266           EXCEPTION
267 	  WHEN NO_DATA_FOUND THEN
268 		x_shipments_control.ship_to_location_id := 'N';
269           END;
270         END IF;
271 
272 	--<R12 Requester Driven Procurement Start>
273 
274 	-- query to retrieve the change in promised date
275         IF (x_po_header_id IS NOT NULL) THEN
276           BEGIN
277                -- Bug 5123672 Added query to check if date changed
278                -- Sql What : determine if promised date changed
279                SELECT DISTINCT 'Y'
280                INTO  x_shipments_control.promised_date
281                FROM  PO_LINE_LOCATIONS_ALL POLL,
282                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
283                WHERE
284 		     POLL.po_header_id = x_po_header_id
285                AND   POLL.line_location_id = POLLA.line_location_id (+)
286                AND   POLLA.latest_external_flag (+) = 'Y'
287                AND   (
288                    (POLLA.line_location_id is NULL)
289                OR (POLL.promised_date <> POLLA.promised_date)
290                OR (POLL.promised_date IS NULL
291 		   AND POLLA.promised_date IS NOT NULL)
292                OR (POLL.promised_date IS NOT NULL
293 		   AND POLLA.promised_date IS NULL)
294 	       )
295                AND poll.po_release_id is NULL;
296 
297                -- Sql What : retrieve the change in promised date
298                SELECT max(trunc(POLL.promised_date-POLLA.promised_date))
299                INTO  x_shipments_control.promised_date_change
300                FROM  PO_LINE_LOCATIONS_ALL POLL,
301                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
302                WHERE POLL.po_header_id = x_po_header_id
303                AND   POLL.line_location_id = POLLA.line_location_id (+)
304                AND   POLLA.latest_external_flag (+) = 'Y'
305 	       AND   poll.po_release_id is NULL
306                AND   ((POLL.promised_date IS NOT NULL AND POLLA.promised_date IS NULL) OR (POLLA.promised_date IS NOT NULL AND POLL.promised_date IS NULL));
307                -- bug 14160952, modified the query to include both the conditions.
308           EXCEPTION
309 	  WHEN NO_DATA_FOUND THEN
310 	        x_shipments_control.promised_date_change := 0;
311           END;
312         ELSE
313           BEGIN
314                -- Bug 5123672 Added query to check if date changed
315                -- Sql What : determine if promised date changed
316                SELECT DISTINCT 'Y'
317                INTO  x_shipments_control.promised_date
318                FROM  PO_LINE_LOCATIONS_ALL POLL,
319                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
320                WHERE
321 		     POLL.po_release_id = x_po_release_id
322                AND   POLL.line_location_id = POLLA.line_location_id (+)
323                AND   POLLA.latest_external_flag (+) = 'Y'
324                AND   (
325                    (POLLA.line_location_id is NULL)
326                OR (POLL.promised_date <> POLLA.promised_date)
327                OR (POLL.promised_date IS NULL
328 		   AND POLLA.promised_date IS NOT NULL)
329                OR (POLL.promised_date IS NOT NULL
330 		   AND POLLA.promised_date IS NULL)
331 	       );
332 
333                -- Sql What : retrieve the change in promised date
334                SELECT max(trunc(POLL.promised_date-POLLA.promised_date))
335                INTO  x_shipments_control.promised_date_change
336                FROM  PO_LINE_LOCATIONS_ALL POLL,
337                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
338                WHERE POLL.po_release_id = x_po_release_id
339                AND   POLL.line_location_id = POLLA.line_location_id (+)
340                AND   POLLA.latest_external_flag (+) = 'Y'
341                AND   ((POLL.promised_date IS NOT NULL AND POLLA.promised_date IS NULL) OR (POLLA.promised_date IS NOT NULL AND POLL.promised_date IS NULL));
342                -- bug 14160952, modified the query to include both the conditions.
343           EXCEPTION
344 	  WHEN NO_DATA_FOUND THEN
345 	        x_shipments_control.promised_date_change := 0;
346           END;
347         END IF;
348 
349 	-- query to retrieve the change in need by date
350         IF (x_po_header_id IS NOT NULL) THEN
351           BEGIN
352                -- Bug 5123672 Added query to check if date changed
353                -- Sql What : determine if need by date changed
354                SELECT DISTINCT 'Y'
355                INTO  x_shipments_control.need_by_date
356                FROM  PO_LINE_LOCATIONS_ALL POLL,
357                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
358                WHERE
359 		     POLL.po_header_id = x_po_header_id
360                AND   POLL.line_location_id = POLLA.line_location_id (+)
361                AND   POLLA.latest_external_flag (+) = 'Y'
362                AND   (
363                    (POLLA.line_location_id is NULL)
364                OR (POLL.need_by_date <> POLLA.need_by_date)
365                OR (POLL.need_by_date IS NULL
366 		   AND POLLA.need_by_date IS NOT NULL)
367                OR (POLL.need_by_date IS NOT NULL
368 		   AND POLLA.need_by_date IS NULL)
369 	       )
370                AND poll.po_release_id is NULL;
371 
372                -- Sql What : retrieve the change in need by  date
373                SELECT max(trunc(POLL.need_by_date-POLLA.need_by_date))
374                INTO  x_shipments_control.need_by_date_change
375                FROM  PO_LINE_LOCATIONS_ALL POLL,
376                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
377                WHERE POLL.po_header_id = x_po_header_id
378                AND   POLL.line_location_id = POLLA.line_location_id (+)
379                AND   POLLA.latest_external_flag (+) = 'Y'
380 	       AND   poll.po_release_id is NULL -- Bug 4016493 : Ignore release shipments
381                AND   ((POLL.need_by_date IS NOT NULL AND POLLA.need_by_date IS NULL) OR (POLLA.need_by_date IS NOT NULL AND POLL.need_by_date IS NULL));
382                -- bug 14160952, modified the query to include both the conditions.
383           EXCEPTION
384 	  WHEN NO_DATA_FOUND THEN
385 	        x_shipments_control.need_by_date_change := 0;
386           END;
387         ELSE
388           BEGIN
389                -- Bug 5123672 Added query to check if date changed
390                -- Sql What : determine if need by date changed
391                SELECT DISTINCT 'Y'
392                INTO  x_shipments_control.need_by_date
393                FROM  PO_LINE_LOCATIONS_ALL POLL,
394                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
395                WHERE
396 		     POLL.po_release_id = x_po_release_id
397                AND   POLL.line_location_id = POLLA.line_location_id (+)
398                AND   POLLA.latest_external_flag (+) = 'Y'
399                AND   (
400                    (POLLA.line_location_id is NULL)
401                OR (POLL.need_by_date <> POLLA.need_by_date)
402                OR (POLL.need_by_date IS NULL
403 		   AND POLLA.need_by_date IS NOT NULL)
404                OR (POLL.need_by_date IS NOT NULL
405 		   AND POLLA.need_by_date IS NULL)
406 	       );
407 
408                -- Sql What : retrieve the change in need by  date
409                SELECT max(trunc(POLL.need_by_date-POLLA.need_by_date))
410                INTO  x_shipments_control.need_by_date_change
411                FROM  PO_LINE_LOCATIONS_ALL POLL,
412                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
413                WHERE POLL.po_release_id = x_po_release_id
414                AND   POLL.line_location_id = POLLA.line_location_id (+)
415                AND   POLLA.latest_external_flag (+) = 'Y'
416                AND   ((POLL.need_by_date IS NOT NULL AND POLLA.need_by_date IS NULL) OR (POLLA.need_by_date IS NOT NULL AND POLL.need_by_date IS NULL));
417                -- bug 14160952, modified the query to include both the conditions.
418           EXCEPTION
419 	  WHEN NO_DATA_FOUND THEN
420 	        x_shipments_control.need_by_date_change := 0;
421           END;
422         END IF;
423 
424 	--<R12 Requester Driven Procurement End>
425 
426         -- SQL What: Select 'Y' if last accepted date is changed
427         -- SQL Why: Need the value for routing to reapproval
428         --          if there is a change
429         -- SQL Join: line_location_id, last_accept_date
430         IF (x_po_header_id IS NOT NULL) THEN
431           BEGIN
432                SELECT DISTINCT 'Y'
433                INTO  x_shipments_control.last_accept_date
434                FROM  PO_LINE_LOCATIONS_ALL POLL,
435                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
436                WHERE
437 		     POLL.po_header_id = x_po_header_id
438                AND   POLL.line_location_id = POLLA.line_location_id (+)
439                AND   POLLA.latest_external_flag (+) = 'Y'
440                AND   (
441                    (POLLA.line_location_id is NULL)
442                OR (POLL.last_accept_date <> POLLA.last_accept_date)
443                OR (POLL.last_accept_date IS NULL AND POLLA.last_accept_date IS NOT NULL)
444                OR (POLL.last_accept_date IS NOT NULL AND POLLA.last_accept_date IS NULL)
445 	       )
446              AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
447 
448           EXCEPTION
449 	  WHEN NO_DATA_FOUND THEN
450 		x_shipments_control.last_accept_date := 'N';
451           END;
452         ELSE
453           BEGIN
454                SELECT DISTINCT 'Y'
455                INTO  x_shipments_control.last_accept_date
456                FROM  PO_LINE_LOCATIONS_ALL POLL,
457                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
458                WHERE
459 		     POLL.po_release_id = x_po_release_id
460                AND   POLL.line_location_id = POLLA.line_location_id (+)
461                AND   POLLA.latest_external_flag (+) = 'Y'
462                AND   (
463                    (POLLA.line_location_id is NULL)
464                OR (POLL.last_accept_date <> POLLA.last_accept_date)
465                OR (POLL.last_accept_date IS NULL AND POLLA.last_accept_date IS NOT NULL)
466                OR (POLL.last_accept_date IS NOT NULL AND POLLA.last_accept_date IS NULL)
467 	       );
468 
469           EXCEPTION
470 	  WHEN NO_DATA_FOUND THEN
471 		x_shipments_control.last_accept_date := 'N';
472           END;
473         END IF;
474 
475         -- SQL What: Select 'Y' if taxable flag is changed
476         -- SQL Why: Need the value for routing to reapproval
477         --          if there is a change
478         -- SQL Join: line_location_id, taxable_flag
479         IF (x_po_header_id IS NOT NULL) THEN
480           BEGIN
481                SELECT DISTINCT 'Y'
482                INTO  x_shipments_control.taxable_flag
483                FROM  PO_LINE_LOCATIONS_ALL POLL,
484                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
485                WHERE
486 		     POLL.po_header_id = x_po_header_id
487                AND   POLL.line_location_id = POLLA.line_location_id (+)
488                AND   POLLA.latest_external_flag (+) = 'Y'
489                AND   (
490                    (POLLA.line_location_id is NULL)
491                OR (POLL.taxable_flag <> POLLA.taxable_flag)
492                OR (POLL.taxable_flag IS NULL AND POLLA.taxable_flag IS NOT NULL)
493                OR (POLL.taxable_flag IS NOT NULL AND POLLA.taxable_flag IS NULL)
494 	       )
495 	       AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
496           EXCEPTION
497 	  WHEN NO_DATA_FOUND THEN
498 		x_shipments_control.taxable_flag := 'N';
499           END;
500         ELSE
501           BEGIN
502                SELECT DISTINCT 'Y'
503                INTO  x_shipments_control.taxable_flag
504                FROM  PO_LINE_LOCATIONS_ALL POLL,
505                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
506                WHERE
507 		     POLL.po_release_id = x_po_release_id
508                AND   POLL.line_location_id = POLLA.line_location_id (+)
509                AND   POLLA.latest_external_flag (+) = 'Y'
510                AND   (
511                    (POLLA.line_location_id is NULL)
512                OR (POLL.taxable_flag <> POLLA.taxable_flag)
513                OR (POLL.taxable_flag IS NULL AND POLLA.taxable_flag IS NOT NULL)
514                OR (POLL.taxable_flag IS NOT NULL AND POLLA.taxable_flag IS NULL)
515 	       );
516           EXCEPTION
517 	  WHEN NO_DATA_FOUND THEN
518 		x_shipments_control.taxable_flag := 'N';
519           END;
520         END IF;
521 
522         -- SQL What: Select 'Y' if cancel flag is changed
523         -- SQL Why: Need the value for routing to reapproval
524         --          if there is a change
525         -- SQL Join: line_location_id, cancel_flag
526         IF (x_po_header_id IS NOT NULL) THEN
527           BEGIN
528                SELECT DISTINCT 'Y'
529                INTO  x_shipments_control.cancel_flag
530                FROM  PO_LINE_LOCATIONS_ALL POLL,
531                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
532                WHERE
533 		     POLL.po_header_id = x_po_header_id
534                AND   POLL.line_location_id = POLLA.line_location_id (+)
535                AND   POLLA.latest_external_flag (+) = 'Y'
536                AND   (
537                    (POLLA.line_location_id is NULL)
538                OR (POLL.cancel_flag <> POLLA.cancel_flag)
539                OR (POLL.cancel_flag IS NULL AND POLLA.cancel_flag IS NOT NULL)
540                OR (POLL.cancel_flag IS NOT NULL AND POLLA.cancel_flag IS NULL)
541 	       )
542 	       AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
543           EXCEPTION
544 	  WHEN NO_DATA_FOUND THEN
545 		x_shipments_control.cancel_flag := 'N';
546           END;
547         ELSE
548           BEGIN
549                SELECT DISTINCT 'Y'
550                INTO  x_shipments_control.cancel_flag
551                FROM  PO_LINE_LOCATIONS_ALL POLL,
552                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
553                WHERE
554 		     POLL.po_release_id = x_po_release_id
555                AND   POLL.line_location_id = POLLA.line_location_id (+)
556                AND   POLLA.latest_external_flag (+) = 'Y'
557                AND   (
558                    (POLLA.line_location_id is NULL)
559                OR (POLL.cancel_flag <> POLLA.cancel_flag)
560                OR (POLL.cancel_flag IS NULL AND POLLA.cancel_flag IS NOT NULL)
561                OR (POLL.cancel_flag IS NOT NULL AND POLLA.cancel_flag IS NULL)
562 	       );
563           EXCEPTION
564 	  WHEN NO_DATA_FOUND THEN
565 		x_shipments_control.cancel_flag := 'N';
566           END;
567         END IF;
568 
569         -- SQL What: Select 'Y' if closed code is changed
570         -- SQL Why: Need the value for routing to reapproval
571         --          if there is a change
572         -- SQL Join: line_location_id, closed_code
573         IF (x_po_header_id IS NOT NULL) THEN
574           BEGIN
575                SELECT DISTINCT 'Y'
576                INTO  x_shipments_control.closed_code
577                FROM  PO_LINE_LOCATIONS_ALL POLL,
578                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
579                WHERE
580 		     POLL.po_header_id = x_po_header_id
581                AND   POLL.line_location_id = POLLA.line_location_id (+)
582                AND   POLLA.latest_external_flag (+) = 'Y'
583                AND   (
584                    (POLLA.line_location_id is NULL)
585                OR (POLL.closed_code <> POLLA.closed_code)
586                OR (POLL.closed_code IS NULL AND POLLA.closed_code IS NOT NULL)
587                OR (POLL.closed_code IS NOT NULL AND POLLA.closed_code IS NULL)
588 	       )
589              AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
590 
591           EXCEPTION
592 	  WHEN NO_DATA_FOUND THEN
593 		x_shipments_control.closed_code := 'N';
594           END;
595         ELSE
596           BEGIN
597                SELECT DISTINCT 'Y'
598                INTO  x_shipments_control.closed_code
599                FROM  PO_LINE_LOCATIONS_ALL POLL,
600                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
601                WHERE
602 		     POLL.po_release_id = x_po_release_id
603                AND   POLL.line_location_id = POLLA.line_location_id (+)
604                AND   POLLA.latest_external_flag (+) = 'Y'
605                AND   (
606                    (POLLA.line_location_id is NULL)
607                OR (POLL.closed_code <> POLLA.closed_code)
608                OR (POLL.closed_code IS NULL AND POLLA.closed_code IS NOT NULL)
609                OR (POLL.closed_code IS NOT NULL AND POLLA.closed_code IS NULL)
610 	       );
611           EXCEPTION
612 	  WHEN NO_DATA_FOUND THEN
613 		x_shipments_control.closed_code := 'N';
614           END;
615         END IF;
616 
617         /* <TIMEPHASED FPI START> */
618 	--<R12 Requester Driven Procurement Start>
619 	-- SQL What: Retrieving the percentage change in start date
620         -- SQL Why: Need the value in tolerance check (i.e reapproval
621         --          rule validations)
622         -- SQL Join: line_location_id
623         IF (x_po_header_id IS NOT NULL) THEN
624           BEGIN
625                SELECT max(trunc(POLL.start_date-POLLA.start_date))
626                INTO  x_shipments_control.start_date_change
627                FROM  PO_LINE_LOCATIONS_ALL POLL,
628                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
629                WHERE POLL.po_header_id = x_po_header_id
630                AND   POLL.line_location_id = POLLA.line_location_id (+)
631                AND   POLLA.latest_external_flag (+) = 'Y'
632 	       AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
633           EXCEPTION
634 	  WHEN NO_DATA_FOUND THEN
635 	        x_shipments_control.start_date_change := 0;
636           END;
637         ELSE
638           BEGIN
639                SELECT max(trunc(POLL.start_date-POLLA.start_date))
640                INTO  x_shipments_control.start_date_change
641                FROM  PO_LINE_LOCATIONS_ALL POLL,
642                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
643                WHERE POLL.po_release_id = x_po_release_id
644                AND   POLL.line_location_id = POLLA.line_location_id (+)
645                AND   POLLA.latest_external_flag (+) = 'Y';
646           EXCEPTION
647 	  WHEN NO_DATA_FOUND THEN
648 	        x_shipments_control.start_date_change := 0;
649           END;
650         END IF;
651 
652 	IF (x_shipments_control.start_date_change > 0) THEN
653 	  x_shipments_control.start_date := 'Y';
654 	ELSE
655 	  x_shipments_control.start_date := 'N';
656 	END IF;
657 
658 	-- SQL What: Retrieving the percentage change in end date
659         -- SQL Why: Need the value in tolerance check (i.e reapproval
660         --          rule validations)
661         -- SQL Join: line_location_id
662         IF (x_po_header_id IS NOT NULL) THEN
663           BEGIN
664                SELECT max(trunc(POLL.end_date-POLLA.end_date))
665                INTO  x_shipments_control.end_date_change
666                FROM  PO_LINE_LOCATIONS_ALL POLL,
667                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
668                WHERE POLL.po_header_id = x_po_header_id
669                AND   POLL.line_location_id = POLLA.line_location_id (+)
670                AND   POLLA.latest_external_flag (+) = 'Y'
671 	       AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
672           EXCEPTION
673 	  WHEN NO_DATA_FOUND THEN
674 	        x_shipments_control.end_date_change := 0;
675           END;
676         ELSE
677           BEGIN
678                SELECT max(trunc(POLL.end_date-POLLA.end_date))
679                INTO  x_shipments_control.end_date_change
680                FROM  PO_LINE_LOCATIONS_ALL POLL,
681                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
682                WHERE POLL.po_release_id = x_po_release_id
683                AND   POLL.line_location_id = POLLA.line_location_id (+)
684                AND   POLLA.latest_external_flag (+) = 'Y';
685           EXCEPTION
686 	  WHEN NO_DATA_FOUND THEN
687 	        x_shipments_control.end_date_change := 0;
688           END;
689         END IF;
690 
691         if (x_shipments_control.end_date_change > 0) then
692 	  x_shipments_control.end_date := 'Y';
693 	else
694 	  x_shipments_control.end_date := 'N';
695 	end if;
696 
697 
698   -- <Complex Work R12 Start>
699 
700   IF (x_po_header_id IS NOT NULL) THEN
701 
702     BEGIN
703 
704       SELECT DISTINCT 'Y'
705       INTO  x_shipments_control.payment_type
706       FROM  PO_LINE_LOCATIONS_ALL POLL,
707             PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
708       WHERE POLL.po_header_id = x_po_header_id
709         AND NVL(POLL.payment_type, 'NONE') NOT IN ('DELIVERY', 'ADVANCE')
710         AND POLL.line_location_id = POLLA.line_location_id (+)
711         AND POLLA.latest_external_flag (+) = 'Y'
712         AND (
713                       (POLLA.line_location_id is NULL)
714                    OR (POLL.payment_type <> POLLA.payment_type)
715                    OR (POLL.payment_type IS NULL AND POLLA.payment_type IS NOT NULL)
716                    OR (POLL.payment_type IS NOT NULL AND POLLA.payment_type IS NULL)
717 	          )
718         AND poll.po_release_id is NULL;
719 
720     EXCEPTION
721       WHEN NO_DATA_FOUND THEN
722         x_shipments_control.payment_type := 'N';
723     END;
724 
725     BEGIN
726 
727       SELECT DISTINCT 'Y'
728       INTO  x_shipments_control.description
729       FROM  PO_LINE_LOCATIONS_ALL POLL,
730             PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
731       WHERE POLL.po_header_id = x_po_header_id
732         AND NVL(POLL.payment_type, 'NONE') NOT IN ('DELIVERY', 'ADVANCE')
733         AND POLL.line_location_id = POLLA.line_location_id (+)
734         AND POLLA.latest_external_flag (+) = 'Y'
735         AND (
736                       (POLLA.line_location_id is NULL)
737                    OR (POLL.description <> POLLA.description)
738                    OR (POLL.description IS NULL AND POLLA.description IS NOT NULL)
739                    OR (POLL.description IS NOT NULL AND POLLA.description IS NULL)
740 	          )
741         AND poll.po_release_id is NULL;
742 
743     EXCEPTION
744       WHEN NO_DATA_FOUND THEN
745         x_shipments_control.description := 'N';
746     END;
747 
748     BEGIN
749 
750       SELECT DISTINCT 'Y'
751       INTO  x_shipments_control.work_approver_id
752       FROM  PO_LINE_LOCATIONS_ALL POLL,
753             PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
754       WHERE POLL.po_header_id = x_po_header_id
755         AND NVL(POLL.payment_type, 'NONE') NOT IN ('DELIVERY', 'ADVANCE')
756         AND POLL.line_location_id = POLLA.line_location_id (+)
757         AND POLLA.latest_external_flag (+) = 'Y'
758         AND (
759                       (POLLA.line_location_id is NULL)
760                    OR (POLL.work_approver_id <> POLLA.work_approver_id)
761                    OR (POLL.work_approver_id IS NULL AND POLLA.work_approver_id IS NOT NULL)
762                    OR (POLL.work_approver_id IS NOT NULL AND POLLA.work_approver_id IS NULL)
763 	          )
764         AND poll.po_release_id is NULL;
765 
766     EXCEPTION
767       WHEN NO_DATA_FOUND THEN
768         x_shipments_control.work_approver_id := 'N';
769     END;
770 
771   END IF;  -- x_po_header_id IS NOT NULL (complex work fields)
772 
773   -- <Complex Work R12 End>
774 
775 
776 	--<R12 Requester Driven Procurement End>
777 
778 	/* <TIMEPHASED FPI END> */
779 
780         /* Bug 2808011 START */
781         -- SQL What: Select 'Y' if price override is changed
782         -- SQL Why: Need the value for routing to reapproval
783         --          if there is a change
784         -- SQL Join: line_location_id, price_override
785         IF (x_po_header_id IS NOT NULL) THEN
786           BEGIN
787                SELECT DISTINCT 'Y'
788                INTO  x_shipments_control.price_override
789                FROM  PO_LINE_LOCATIONS_ALL POLL,
790                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
791                WHERE
792                      POLL.po_header_id = x_po_header_id
793                AND NVL(POLL.payment_type, 'NONE') <> 'DELIVERY'  -- <Complex Work R12>
794                AND   POLL.line_location_id = POLLA.line_location_id (+)
795                AND   POLLA.latest_external_flag (+) = 'Y'
796                AND   (
797                    (POLLA.line_location_id is NULL)
798                OR (POLL.price_override <> POLLA.price_override)
799                OR (POLL.price_override IS NULL AND POLLA.price_override IS NOT NULL)
800                OR (POLL.price_override IS NOT NULL AND POLLA.price_override IS NULL)
801                )
802              AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
803 
804           EXCEPTION
805           WHEN NO_DATA_FOUND THEN
806                 x_shipments_control.price_override := 'N';
807           END;
808         ELSE
809           BEGIN
810                SELECT DISTINCT 'Y'
811                INTO  x_shipments_control.price_override
812                FROM  PO_LINE_LOCATIONS_ALL POLL,
813                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
814                WHERE
815                      POLL.po_release_id = x_po_release_id
816                AND   POLL.line_location_id = POLLA.line_location_id (+)
817                AND   POLLA.latest_external_flag (+) = 'Y'
818                AND   (
819                    (POLLA.line_location_id is NULL)
820                OR (POLL.price_override <> POLLA.price_override)
821                OR (POLL.price_override IS NULL AND POLLA.price_override IS NOT NULL)
822                OR (POLL.price_override IS NOT NULL AND POLLA.price_override IS NULL)
823                );
824           EXCEPTION
825           WHEN NO_DATA_FOUND THEN
826                 x_shipments_control.price_override := 'N';
827           END;
828         END IF;
829         /* Bug 2808011 END */
830 
831 	-- SQL What: Retrieving the percentage change in quantity
832         -- SQL Why: Need the value in tolerance check (i.e reapproval
833         --          rule validations)
834         -- SQL Join: line_location_id
835         IF (x_po_header_id IS NOT NULL) THEN
836           BEGIN
837 	       SELECT max(po_chord_wf0.percentage_change(
838 			 POLLA.quantity, POLL.quantity))
839                INTO  x_shipments_control.quantity_change
840                FROM  PO_LINE_LOCATIONS_ALL POLL,
841                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
842                WHERE POLL.po_header_id = x_po_header_id
843                AND NVL(POLL.payment_type, 'NONE') <> 'DELIVERY'  -- <Complex Work R12>
844                AND   POLL.line_location_id = POLLA.line_location_id (+)
845                AND   POLLA.latest_external_flag (+) = 'Y'
846              AND poll.po_release_id is NULL; -- Bug 4016493 : Ignore release shipments
847           EXCEPTION
848 	  WHEN NO_DATA_FOUND THEN
849 		x_shipments_control.quantity_change := 0;
850           END;
851         ELSE
852           BEGIN
853 	       SELECT max(po_chord_wf0.percentage_change(
854 			 POLLA.quantity, POLL.quantity))
855                INTO  x_shipments_control.quantity_change
856                FROM  PO_LINE_LOCATIONS_ALL POLL,
857                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
858                WHERE
859 		     POLL.po_release_id = x_po_release_id
860                AND   POLL.line_location_id = POLLA.line_location_id (+)
861                AND   POLLA.latest_external_flag (+) = 'Y';
862           EXCEPTION
863 	  WHEN NO_DATA_FOUND THEN
864 		x_shipments_control.quantity_change := 0;
865           END;
866         END IF;
867 
868 	-- SQL What: Retrieving the percentage change in price override
869         -- SQL Why: Need the value in tolerance check (i.e reapproval
870         --          rule validations)
871         -- SQL Join: line_location_id
872         IF (x_po_header_id IS NOT NULL) THEN
873           BEGIN
874 	       SELECT max(po_chord_wf0.percentage_change(
875 			POLLA.price_override, POLL.price_override))
876                INTO  x_shipments_control.price_override_change
877                FROM  PO_LINE_LOCATIONS_ALL POLL,
878                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
879                WHERE POLL.po_header_id = x_po_header_id
880                AND NVL(POLL.payment_type, 'NONE') <> 'DELIVERY'  -- <Complex Work R12>
881                AND   POLL.line_location_id = POLLA.line_location_id (+)
882                AND   POLLA.latest_external_flag (+) = 'Y'
883              AND poll.po_release_id is NULL;  -- Bug 4016493 : Ignore release shipments
884           EXCEPTION
885 	  WHEN NO_DATA_FOUND THEN
886 		x_shipments_control.price_override_change := 0;
887           END;
888         ELSE
889           BEGIN
890 	       SELECT max(po_chord_wf0.percentage_change(
891 			POLLA.price_override, POLL.price_override))
892                INTO  x_shipments_control.price_override_change
893                FROM  PO_LINE_LOCATIONS_ALL POLL,
894                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
895                WHERE
896 		     POLL.po_release_id = x_po_release_id
897                AND   POLL.line_location_id = POLLA.line_location_id (+)
898                AND   POLLA.latest_external_flag (+) = 'Y';
899           EXCEPTION
900 	  WHEN NO_DATA_FOUND THEN
901 		x_shipments_control.price_override_change := 0;
902           END;
903         END IF;
904 
905 	--<R12 Requester Driven Procurement Start>
906 	-- SQL What: Retrieving the percentage change in amount
907         -- SQL Why: Need the value in tolerance check (i.e reapproval
908         --          rule validations)
909         -- SQL Join: line_location_id
910         -- Bug 5071741: Amount change is calculated using price and qty for
911         -- qty based lines and amount for services lines and rounded accordingly
912         IF (x_po_header_id IS NOT NULL) THEN
913 
914           -- Get the currency code and precision
915           SELECT poh.currency_code
916           INTO   l_currency_code
917           FROM   po_headers_all poh
918           WHERE  poh.po_header_id = x_po_header_id;
919 
920           PO_CORE_S2.get_currency_info(
921             x_currency_code => l_currency_code
922           , x_min_unit      => l_min_acct_unit
923           , x_precision     => l_precision);
924 
925           BEGIN
926             IF l_min_acct_unit is not null AND
927                l_min_acct_unit <> 0 THEN
928 
929 	       SELECT max(po_chord_wf0.percentage_change(
930                 round(
931 		 decode(POLLA.value_basis, 'RATE',POLLA.amount,'FIXED PRICE', POLLA.amount,
932                        (POLLA.quantity*POLLA.price_override)) / l_min_acct_unit )* l_min_acct_unit ,
933                 round(
934                  decode(POLL.value_basis, 'RATE',POLL.amount,'FIXED PRICE', POLL.amount,
935                        (POLL.quantity*POLL.price_override))  / l_min_acct_unit )* l_min_acct_unit
936                 ))
937                INTO  x_shipments_control.amount_change
938                FROM  PO_LINE_LOCATIONS_ALL POLL,
939                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
940                WHERE POLL.po_header_id = x_po_header_id
941                -- <Complex Work R12>: "line level" info should be ignored.
942                AND NVL(POLL.payment_type, 'NONE') NOT IN ('DELIVERY', 'ADVANCE')
943                AND   POLL.line_location_id = POLLA.line_location_id (+)
944                AND   POLLA.latest_external_flag (+) = 'Y'
945                AND poll.po_release_id is NULL;  -- Bug 4016493 : Ignore release shipments
946 
947             ELSE
948 
949                 SELECT max(po_chord_wf0.percentage_change(
950                 round(
951 		 decode(POLLA.value_basis, 'RATE',POLLA.amount,'FIXED PRICE', POLLA.amount,
952                        (POLLA.quantity*POLLA.price_override)) ,l_precision ) ,
953                 round(
954                  decode(POLL.value_basis, 'RATE',POLL.amount,'FIXED PRICE', POLL.amount,
955                        (POLL.quantity*POLL.price_override) ),l_precision )
956                 ))
957                INTO  x_shipments_control.amount_change
958                FROM  PO_LINE_LOCATIONS_ALL POLL,
959                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
960                WHERE POLL.po_header_id = x_po_header_id
961                AND NVL(POLL.payment_type, 'NONE') NOT IN ('DELIVERY', 'ADVANCE')
962                AND   POLL.line_location_id = POLLA.line_location_id (+)
963                AND   POLLA.latest_external_flag (+) = 'Y'
964                AND poll.po_release_id is NULL;
965 
966              END IF;
967 
968           EXCEPTION
969 	  WHEN NO_DATA_FOUND THEN
970 		x_shipments_control.amount_change := 0;
971           END;
972 
973         ELSE -- po_header_id null : release
974 
975           -- Get the currency code and precision
976           SELECT poh.currency_code
977           INTO   l_currency_code
978           FROM   po_releases_all por,
979                  po_headers_all poh
980           WHERE  por.po_release_id = x_po_release_id
981           AND    poh.po_header_id = por.po_header_id;
982 
983           PO_CORE_S2.get_currency_info(
984             x_currency_code => l_currency_code
985           , x_min_unit      => l_min_acct_unit
986           , x_precision     => l_precision);
987 
988           BEGIN
989             IF l_min_acct_unit is not null AND
990                l_min_acct_unit <> 0 THEN
991 
992                SELECT max(po_chord_wf0.percentage_change(
993                 round(
994 		 decode(POLLA.value_basis,'FIXED PRICE', POLLA.amount,
995                        (POLLA.quantity*POLLA.price_override)) / l_min_acct_unit )* l_min_acct_unit ,
996                 round(
997                  decode(POLL.value_basis, 'FIXED PRICE', POLL.amount,
998                        (POLL.quantity*POLL.price_override) ) / l_min_acct_unit )* l_min_acct_unit
999                  ))
1000                INTO  x_shipments_control.amount_change
1001                FROM  PO_LINE_LOCATIONS_ALL POLL,
1002                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
1003                WHERE POLL.po_release_id = x_po_release_id
1004                AND   POLL.line_location_id = POLLA.line_location_id (+)
1005                AND   POLLA.latest_external_flag (+) = 'Y';
1006 
1007             ELSE
1008 
1009 	       SELECT max(po_chord_wf0.percentage_change(
1010                 round(
1011 		 decode(POLLA.value_basis,'FIXED PRICE', POLLA.amount,
1012                        (POLLA.quantity*POLLA.price_override)) ,l_precision ) ,
1013                 round(
1014                  decode(POLL.value_basis, 'FIXED PRICE', POLL.amount,
1015                        (POLL.quantity*POLL.price_override) ),l_precision )
1016                  ))
1017                INTO  x_shipments_control.amount_change
1018                FROM  PO_LINE_LOCATIONS_ALL POLL,
1019                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
1020                WHERE POLL.po_release_id = x_po_release_id
1021                AND   POLL.line_location_id = POLLA.line_location_id (+)
1022                AND   POLLA.latest_external_flag (+) = 'Y';
1023             END IF;
1024 
1025           EXCEPTION
1026 	  WHEN NO_DATA_FOUND THEN
1027 		x_shipments_control.amount_change := 0;
1028           END;
1029 
1030         END IF; -- po_header_id not null
1031 	--<R12 Requester Driven Procurement End>
1032 
1033         -- ECO 5080252 Start
1034         -- SQL What: Select 'Y' if days late receipt allowed flag is changed
1035         -- SQL Why: Need the value for routing to reapproval if there is a change
1036         -- SQL Join: line_location_id, days late receipt allowed
1037         IF (x_po_header_id IS NOT NULL) THEN
1038           BEGIN
1039                SELECT DISTINCT 'Y'
1040                INTO  x_shipments_control.days_late_rcpt_allowed
1041                FROM  PO_LINE_LOCATIONS_ALL POLL,
1042                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
1043                WHERE
1044 		     POLL.po_header_id = x_po_header_id
1045                AND   POLL.line_location_id = POLLA.line_location_id (+)
1046                AND   POLLA.latest_external_flag (+) = 'Y'
1047                AND   (
1048                    (POLLA.line_location_id is NULL)
1049                OR (POLL.days_late_receipt_allowed <> POLLA.days_late_receipt_allowed)
1050                OR (POLL.days_late_receipt_allowed IS NULL
1051 		   AND POLLA.days_late_receipt_allowed IS NOT NULL)
1052                OR (POLL.days_late_receipt_allowed IS NOT NULL
1053 		   AND POLLA.days_late_receipt_allowed IS NULL)
1054 	       )
1055              AND poll.po_release_id is NULL;
1056           EXCEPTION
1057 	  WHEN NO_DATA_FOUND THEN
1058 		x_shipments_control.days_late_rcpt_allowed := 'N';
1059           END;
1060         ELSE
1061           BEGIN
1062                SELECT DISTINCT 'Y'
1063                INTO  x_shipments_control.days_late_rcpt_allowed
1064                FROM  PO_LINE_LOCATIONS_ALL POLL,
1065                      PO_LINE_LOCATIONS_ARCHIVE_ALL POLLA
1066                WHERE
1067 		     POLL.po_release_id = x_po_release_id
1068                AND   POLL.line_location_id = POLLA.line_location_id (+)
1069                AND   POLLA.latest_external_flag (+) = 'Y'
1070                AND   (
1071                    (POLLA.line_location_id is NULL)
1072                OR (POLL.days_late_receipt_allowed <> POLLA.days_late_receipt_allowed)
1073                OR (POLL.days_late_receipt_allowed IS NULL
1074 		   AND POLLA.days_late_receipt_allowed IS NOT NULL)
1075                OR (POLL.days_late_receipt_allowed IS NOT NULL
1076 		   AND POLLA.days_late_receipt_allowed IS NULL)
1077 	       );
1078           EXCEPTION
1079 	  WHEN NO_DATA_FOUND THEN
1080 		x_shipments_control.days_late_rcpt_allowed := 'N';
1081           END;
1082         END IF;
1083         -- ECO 5080252 End
1084 
1085 	IF (g_po_wf_debug = 'Y') THEN
1086    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1087    		'*** Finish: check_shipments_change ***' );
1088 	END IF;
1089 
1090 EXCEPTION
1091 	WHEN e_invalid_setup THEN
1092 	IF (g_po_wf_debug = 'Y') THEN
1093    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1094    		'*** In procedure: set_wf_shipments_control ***');
1095 	END IF;
1096 	wf_core.context('POAPPRV', 'set_wf_shipments_control', 'e_invalid_setup');
1097 	raise;
1098 
1099 	WHEN others THEN
1100 	IF (g_po_wf_debug = 'Y') THEN
1101    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1102    		'*** In procedure: set_wf_shipments_control ***');
1103 	END IF;
1104 	wf_core.context('POAPPRV', 'set_wf_shipments_control', 'others');
1105 	raise;
1106 
1107 END;
1108 
1109 PROCEDURE set_wf_shipments_control( itemtype	IN VARCHAR2,
1110 				    itemkey 	IN VARCHAR2,
1111 			 	    x_shipments_control IN t_shipments_control_type)
1112 IS
1113 BEGIN
1114 	IF (g_po_wf_debug = 'Y') THEN
1115    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1116    		'*** In procedure: set_wf_shipments_control ***');
1117 	END IF;
1118 
1119  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1120 			   itemkey,
1121 			   'CO_S_SHIPMENT_NUMBER',
1122 			   x_shipments_control.shipment_num);
1123 
1124 
1125  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1126 			   itemkey,
1127 			   'CO_S_SHIP_TO_ORGANIZATION',
1128 			   x_shipments_control.ship_to_organization_id);
1129 
1130 
1131  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1132 			   itemkey,
1133 			   'CO_S_SHIP_TO_LOCATION',
1134 			   x_shipments_control.ship_to_location_id);
1135 
1136  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1137 			   itemkey,
1138 			   'CO_S_PROMISED_DATE',
1139 			   x_shipments_control.promised_date);
1140 
1141 
1142  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1143 			   itemkey,
1144 			   'CO_S_NEED_BY_DATE',
1145 			   x_shipments_control.need_by_date);
1146 
1147 
1148  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1149 			   itemkey,
1150 			   'CO_S_LAST_ACCEPT_DATE',
1151 			   x_shipments_control.last_accept_date);
1152 
1153  -- ECO 5080252
1154  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1155 			   itemkey,
1156 			   'CO_S_DAYS_LATE_RCPT_ALLOWED',
1157 			   x_shipments_control.days_late_rcpt_allowed);
1158 
1159  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1160 			   itemkey,
1161 			   'CO_S_TAXABLE_FLAG',
1162 			   x_shipments_control.taxable_flag);
1163 
1164 
1165  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1166 			   itemkey,
1167 			   'CO_S_PRICE_DISCOUNT',
1168 			   x_shipments_control.price_discount);
1169 
1170 
1171  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1172 			   itemkey,
1173 			   'CO_S_CANCEL_FLAG',
1174 			   x_shipments_control.cancel_flag);
1175 
1176 
1177  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1178 			   itemkey,
1179 			   'CO_S_CLOSED_CODE',
1180 			   x_shipments_control.closed_code);
1181 
1182 
1183  -- <Complex Work R12 Start>
1184 
1185  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1186 			   itemkey,
1187 			   'CO_S_PAYMENT_TYPE',
1188 			   x_shipments_control.payment_type);
1189 
1190  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1191 			   itemkey,
1192 			   'CO_S_WORK_APPROVER_ID',
1193 			   x_shipments_control.work_approver_id);
1194 
1195  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1196 			   itemkey,
1197 			   'CO_S_DESCRIPTION',
1198 			   x_shipments_control.description);
1199 
1200  -- <Complex Work R12 End>
1201 
1202  PO_WF_UTIL_PKG.SetItemAttrNumber(itemtype,
1203 			     itemkey,
1204 			     'CO_S_QUANTITY_CHANGE',
1205 			     x_shipments_control.quantity_change);
1206 
1207  PO_WF_UTIL_PKG.SetItemAttrNumber(itemtype,
1208 			     itemkey,
1209 			     'CO_S_PRICE_OVERRIDE_CHANGE',
1210 			     x_shipments_control.price_override_change);
1211 
1212  /* <TIMEPHASED FPI START> */
1213  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1214                            itemkey,
1215                            'CO_S_START_DATE',
1216                            x_shipments_control.start_date);
1217 
1218  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1219                            itemkey,
1220                            'CO_S_END_DATE',
1221                            x_shipments_control.end_date);
1222  /* <TIMEPHASED FPI END> */
1223 
1224 /* Bug 2808011 START */
1225  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1226                            itemkey,
1227                            'CO_S_PRICE_OVERRIDE',
1228                            x_shipments_control.price_override);
1229 /* Bug 2808011 END */
1230 
1231 --<R12 Requester Driven Procurement Start>
1232 
1233  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1234                            itemkey,
1235                            'CO_S_AMOUNT_CHANGE',
1236                            x_shipments_control.amount_change);
1237 
1238  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1239                            itemkey,
1240                            'CO_S_START_DATE_CHANGE',
1241                            x_shipments_control.start_date_change);
1242 
1243  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1244                            itemkey,
1245                            'CO_S_END_DATE_CHANGE',
1246                            x_shipments_control.end_date_change);
1247 
1248  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1249                            itemkey,
1250                            'CO_S_NEED_BY_DATE_DATE_CHANGE',
1251                            x_shipments_control.need_by_date_change);
1252 
1253  PO_WF_UTIL_PKG.SetItemAttrText(itemtype,
1254                            itemkey,
1255                            'CO_S_PROMISED_DATE_DATE_CHANGE',
1256                            x_shipments_control.promised_date_change);
1257 
1258 --<R12 Requester Driven Procurement End>
1259 
1260 	IF (g_po_wf_debug = 'Y') THEN
1261    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1262    		'*** Finish: set_wf_shipments_control ***');
1263 	END IF;
1264 
1265 END;
1266 
1267 
1268 PROCEDURE get_wf_shipments_control( itemtype	IN VARCHAR2,
1269 				    itemkey 	IN VARCHAR2,
1270 			 	    x_shipments_control IN OUT NOCOPY t_shipments_control_type)
1271 IS
1272 BEGIN
1273 	IF (g_po_wf_debug = 'Y') THEN
1274    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1275    		'*** In procedure: get_wf_shipments_control ***');
1276 	END IF;
1277 
1278  x_shipments_control.shipment_num :=
1279  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1280 			   itemkey,
1281 			   'CO_S_SHIPMENT_NUMBER');
1282 
1283  x_shipments_control.ship_to_organization_id :=
1284  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1285 			   itemkey,
1286 			   'CO_S_SHIP_TO_ORGANIZATION');
1287 
1288  x_shipments_control.ship_to_location_id :=
1289  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1290 			   itemkey,
1291 			   'CO_S_SHIP_TO_LOCATION');
1292 
1293  x_shipments_control.promised_date :=
1294  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1295 			   itemkey,
1296 			   'CO_S_PROMISED_DATE');
1297 
1298  x_shipments_control.need_by_date :=
1299  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1300 			   itemkey,
1301 			   'CO_S_NEED_BY_DATE');
1302 
1303  x_shipments_control.last_accept_date:=
1304  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1305 			   itemkey,
1306 			   'CO_S_LAST_ACCEPT_DATE');
1307 
1308  -- ECO 5080252
1309  x_shipments_control.days_late_rcpt_allowed :=
1310  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1311 			   itemkey,
1312 			   'CO_S_DAYS_LATE_RCPT_ALLOWED');
1313 
1314  x_shipments_control.taxable_flag :=
1315  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1316 			   itemkey,
1317 			   'CO_S_TAXABLE_FLAG');
1318 
1319  x_shipments_control.price_discount :=
1320  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1321 			   itemkey,
1322 			   'CO_S_PRICE_DISCOUNT');
1323 
1324  x_shipments_control.cancel_flag :=
1325  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1326 			   itemkey,
1327 			   'CO_S_CANCEL_FLAG');
1328 
1329  x_shipments_control.closed_code :=
1330  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1331 			   itemkey,
1332 			   'CO_S_CLOSED_CODE');
1333 
1334  x_shipments_control.quantity_change :=
1335  PO_WF_UTIL_PKG.GetItemAttrNumber(itemtype,
1336 			     itemkey,
1337 			     'CO_S_QUANTITY_CHANGE');
1338 
1339  x_shipments_control.price_override_change :=
1340  PO_WF_UTIL_PKG.GetItemAttrNumber(itemtype,
1341 			     itemkey,
1342 			     'CO_S_PRICE_OVERRIDE_CHANGE');
1343 
1344  /* <TIMEPHASED FPI START> */
1345  x_shipments_control.start_date :=
1346  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1347                                 itemkey,
1348                                 'CO_S_START_DATE');
1349 
1350  x_shipments_control.end_date :=
1351  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1352                                 itemkey,
1353                                 'CO_S_END_DATE');
1354  /* <TIMEPHASED FPI END> */
1355 
1356 /* Bug 2808011 START */
1357  x_shipments_control.price_override :=
1358  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1359                                 itemkey,
1360                                 'CO_S_PRICE_OVERRIDE');
1361 /* Bug 2808011 END */
1362 
1363 
1364  -- <Complex Work R12 Start>
1365 
1366  x_shipments_control.payment_type :=
1367   PO_WF_UTIL_PKG.GetItemAttrText(itemtype, itemkey, 'CO_S_PAYMENT_TYPE');
1368 
1369  x_shipments_control.work_approver_id :=
1370   PO_WF_UTIL_PKG.GetItemAttrText(itemtype, itemkey, 'CO_S_WORK_APPROVER_ID');
1371 
1372  x_shipments_control.description :=
1373   PO_WF_UTIL_PKG.GetItemAttrText(itemtype, itemkey, 'CO_S_DESCRIPTION');
1374 
1375  -- <Complex Work R12 End>
1376 
1377 
1378 --<R12 Requester Driven Procurement Start>
1379 
1380  x_shipments_control.amount_change :=
1381  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1382                                 itemkey,
1383                                 'CO_S_AMOUNT_CHANGE');
1384 
1385  x_shipments_control.start_date_change :=
1386  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1387                                 itemkey,
1388                                 'CO_S_START_DATE_CHANGE');
1389 
1390  x_shipments_control.end_date_change :=
1391  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1392                                 itemkey,
1393                                 'CO_S_END_DATE_CHANGE');
1394 
1395  x_shipments_control.need_by_date_change :=
1396  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1397                                 itemkey,
1398                                 'CO_S_NEED_BY_DATE_DATE_CHANGE');
1399 
1400  x_shipments_control.promised_date_change :=
1401  PO_WF_UTIL_PKG.GetItemAttrText(itemtype,
1402                                 itemkey,
1403                                 'CO_S_PROMISED_DATE_DATE_CHANGE');
1404 
1405 --<R12 Requester Driven Procurement End>
1406 
1407  debug_shipments_control(itemtype, itemkey, x_shipments_control);
1408 
1409 	IF (g_po_wf_debug = 'Y') THEN
1410    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1411    		'*** Finish: get_wf_shipments_control ***');
1412 	END IF;
1413 
1414 END;
1415 
1416 PROCEDURE get_wf_shipments_parameters(itemtype	 IN VARCHAR2,
1417 				      itemkey 	 IN VARCHAR2,
1418 			 	      x_shipments_parameters IN OUT NOCOPY t_shipments_parameters_type)
1419 IS
1420 	e_invalid_doc_type	EXCEPTION;
1421 	x_doc_type		VARCHAR2(25);
1422 BEGIN
1423 	IF (g_po_wf_debug = 'Y') THEN
1424    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1425    		'*** In procedure get_wf_shipments_parameters ***');
1426 	END IF;
1427 
1428   	x_doc_type := PO_WF_UTIL_PKG.GetItemAttrText (itemtype,
1429                                                  itemkey,
1430                                          	 'DOCUMENT_TYPE');
1431 
1432 	IF x_doc_type IN ('PO', 'PA') THEN
1433 
1434  		x_shipments_parameters.po_header_id :=
1435 		PO_WF_UTIL_PKG.GetItemAttrNumber(itemtype,
1436 					    itemkey,
1437 				    	    'DOCUMENT_ID');
1438 
1439 		x_shipments_parameters.po_release_id:=NULL;
1440 
1441         ELSIF x_doc_type = 'RELEASE' THEN
1442 
1443  		x_shipments_parameters.po_release_id :=
1444 		PO_WF_UTIL_PKG.GetItemAttrNumber(itemtype,
1445 					    itemkey,
1446 				    	    'DOCUMENT_ID');
1447 
1448 		x_shipments_parameters.po_header_id:=NULL;
1449 
1450 	ELSE
1451 		raise e_invalid_doc_type;
1452 
1453 	END IF;
1454 
1455 	IF (g_po_wf_debug = 'Y') THEN
1456    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1457    		'po_header_id =  ' || to_char(x_shipments_parameters.po_header_id));
1458    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1459    		'po_release_id =  '|| to_char(x_shipments_parameters.po_release_id));
1460 	END IF;
1461 
1462 	IF (g_po_wf_debug = 'Y') THEN
1463    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1464    	'*** FINISH: get_wf_shipments_parameters ***');
1465 	END IF;
1466 
1467 EXCEPTION
1468  WHEN e_invalid_doc_type THEN
1469 	IF (g_po_wf_debug = 'Y') THEN
1470    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1471    		'***set_wf_shipments_control exception e_invalid_setup *** ');
1472 	END IF;
1473 	wf_core.context('POAPPRV', 'set_wf_shipments_control', 'e_invalid_setup');
1474 	raise;
1475 
1476  WHEN OTHERS THEN
1477 	IF (g_po_wf_debug = 'Y') THEN
1478    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1479    		'*** set_wf_shipments_control exception others ***');
1480 	END IF;
1481 	wf_core.context('POAPPRV', 'set_wf_shipments_control', 'others');
1482 	raise;
1483 
1484 END;
1485 
1486 
1487 PROCEDURE debug_shipments_control(
1488 		itemtype IN VARCHAR2,
1489 		itemkey	 IN VARCHAR2,
1490 		x_shipments_control IN t_shipments_control_type)
1491 IS
1492 BEGIN
1493 	IF (g_po_wf_debug = 'Y') THEN
1494    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1495    		'*** In procedure: debug_shipments_control ***');
1496 	END IF;
1497 
1498  IF (g_po_wf_debug = 'Y') THEN
1499     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1500    	'shipment_num            : '||x_shipments_control.shipment_num);
1501     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1502    	'ship_to_organization_id : '||x_shipments_control.ship_to_organization_id);
1503     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1504    	'ship_to_location_id     : '||x_shipments_control.ship_to_location_id);
1505     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1506    	'promised_date           : '||x_shipments_control.promised_date);
1507     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1508    	'need_by_date            : '||x_shipments_control.need_by_date);
1509     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1510    	'last_accept_date        : '||x_shipments_control.last_accept_date);
1511     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1512    	'taxable_flag            : '||x_shipments_control.taxable_flag);
1513     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1514    	'price_discount          : '||x_shipments_control.price_discount);
1515     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1516    	'cancel_flag             : '||x_shipments_control.cancel_flag	);
1517     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1518    	'closed_code             : '||x_shipments_control.closed_code	);
1519     -- <Complex Work R12 Start>
1520     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1521    	'payment_type            : '||x_shipments_control.payment_type	);
1522     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1523    	'work_approver_id        : '||x_shipments_control.work_approver_id	);
1524     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1525    	'description             : '||x_shipments_control.description	);
1526     -- <Complex Work R12 End>
1527     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1528    	'quantity_change         : '||to_char(x_shipments_control.quantity_change));
1529     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1530    	'price_override_change   : '||to_char(x_shipments_control.price_override_change));
1531  END IF;
1532 
1533  /* <TIMEPHASED FPI START> */
1534  IF (g_po_wf_debug = 'Y') THEN
1535     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1536            'start_date              : '||x_shipments_control.start_date   );
1537     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1538            'end_date                : '||x_shipments_control.end_date   );
1539     /* Bug 2808011 */
1540     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1541            'price_override          : '||x_shipments_control.price_override);
1542  END IF;
1543  /* <TIMEPHASED FPI END> */
1544 
1545 
1546  --<R12 Requester Driven Procurement Start>
1547  IF (g_po_wf_debug = 'Y') THEN
1548     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1549            'amount_change                : '||x_shipments_control.amount_change   );
1550     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1551            'start_date_change            : '||x_shipments_control.start_date_change   );
1552     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1553            'end_date_change              : '||x_shipments_control.end_date_change   );
1554     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1555            'need_by_date_change          : '||x_shipments_control.need_by_date_change   );
1556     PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,
1557            'promised_date_change         : '||x_shipments_control.promised_date_change   );
1558 
1559  END IF;
1560  --<R12 Requester Driven Procurement End>
1561 
1562 	IF (g_po_wf_debug = 'Y') THEN
1563    	PO_WF_DEBUG_PKG.INSERT_DEBUG(ITEMTYPE, ITEMKEY,
1564    		'*** Finished: debug_shipments_control ***');
1565 	END IF;
1566 END;
1567 
1568 END PO_CHORD_WF3;