DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_CHORD_WF3

Source


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