[Home] [Help]
PACKAGE BODY: APPS.WSH_DELIVERY_VALIDATIONS
Source
1 PACKAGE BODY WSH_DELIVERY_VALIDATIONS as
2 /* $Header: WSHDEVLB.pls 120.22.12010000.2 2008/09/26 08:10:32 sankarun ship $ */
3 --6156495 : A global variable added to store the value of actual_departure_date
4 G_ACT_DEPT_DATE DATE;
5
6 --3509004:public api changes
7 PROCEDURE user_non_updatable_columns
8 (p_user_in_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type,
9 p_out_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type,
10 p_in_rec IN WSH_DELIVERIES_GRP.Del_In_Rec_Type,
11 x_return_status OUT NOCOPY VARCHAR2);
12
13
14 -----------------------------------------------------------------------------
15 --
16 -- Procedure: Check_Ship_Set
17 -- Parameters: p_delivery_id, x_return_status
18 -- Description: Checks if Ship Set is together and returns x_valid_flag
19 -- TRUE - if Ship Set is together
20 -- FALSE - if Ship Set is not together
21 --
22 -----------------------------------------------------------------------------
23
24 --
25 G_PKG_NAME CONSTANT VARCHAR2(50) := 'WSH_DELIVERY_VALIDATIONS';
26 --
27
28
29 /* The following 2 global variables added as part of Ship Message Customization
30 * Project ( R12 ). These varibales are accessed from Check_Confirm Procedure
31 * and are used to cache values for a session.*/
32 g_break_ship_set_severity VARCHAR2(10);
33 g_break_smc_severity VARCHAR2(10);
34
35 PROCEDURE check_ship_set( p_delivery_id IN NUMBER,
36 x_valid_flag OUT NOCOPY BOOLEAN,
37 x_return_status OUT NOCOPY VARCHAR2) IS
38
39 CURSOR check_ship_set IS
40 SELECT dd.delivery_detail_id
41 FROM wsh_delivery_details dd,
42 wsh_delivery_assignments_v da
43 WHERE ((NVL(da.delivery_id, -1) <> p_delivery_id) OR
44 (da.delivery_id = p_delivery_id AND dd.requested_quantity > dd.shipped_quantity
45 AND da.delivery_id IS NOT NULL AND dd.shipped_quantity <> 0)) AND
46 da.delivery_detail_id = dd.delivery_detail_id AND
47 NVL(dd.released_status, 'C') NOT IN ('C' ,'D') AND -- when the other lines are not shipped
48 dd.container_flag <> 'Y' AND
49 dd.source_code = 'OE' AND
50 (dd.ship_set_id, dd.source_header_id) IN
51 (SELECT DISTINCT dd.ship_set_id, dd.source_header_id
52 FROM wsh_delivery_details dd,
53 wsh_delivery_assignments_v da
54 WHERE da.delivery_id = p_delivery_id AND
55 da.delivery_id IS NOT NULL AND
56 da.delivery_detail_id = dd.delivery_detail_id AND
57 dd.container_flag <> 'Y' AND
58 dd.source_code = 'OE' AND
59 dd.ship_set_id IS NOT NULL );
60 CURSOR check_all_lines_imported IS
61 SELECT DISTINCT dd.source_code, dd.ship_set_id, dd.source_header_id
62 FROM wsh_delivery_details dd,
63 wsh_delivery_assignments_v da
64 WHERE da.delivery_id = p_delivery_id AND
65 da.delivery_id IS NOT NULL AND
66 da.delivery_detail_id = dd.delivery_detail_id AND
67 dd.container_flag <> 'Y' AND
68 dd.source_code = 'OE' AND
69 dd.ship_set_id IS NOT NULL ;
70
71 l_detail_id NUMBER;
72 l_status BOOLEAN;
73 l_ship_set_id NUMBER;
74 l_source_header_id NUMBER;
75 l_source_code WSH_DELIVERY_DETAILS.SOURCE_CODE%TYPE;
76 others exception;
77
78 --
79 l_debug_on BOOLEAN;
80 --
81 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_SHIP_SET';
82 --
83 BEGIN
84
85 --
86 -- Debug Statements
87 --
88 --
89 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
90 --
91 IF l_debug_on IS NULL
92 THEN
93 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
94 END IF;
95 --
96 IF l_debug_on THEN
97 WSH_DEBUG_SV.push(l_module_name);
98 --
99 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
100 END IF;
101 --
102 x_valid_flag := TRUE;
103 OPEN check_all_lines_imported;
104 LOOP
105 FETCH check_all_lines_imported
106 INTO l_source_code, l_ship_set_id, l_source_header_id;
107 IF (check_all_lines_imported%NOTFOUND) THEN
108 EXIT;
109 END IF;
110 l_status := Check_SS_Imp_Pending(l_source_code, l_source_header_id, l_ship_set_id, 'N',x_return_status);
111 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
112 raise others;
113 ELSE
114 IF (l_status = TRUE) THEN
115 x_valid_flag := FALSE;
116 EXIT;
117 END IF;
118 END IF;
119 END LOOP;
120 CLOSE check_all_lines_imported;
121
122 IF (x_valid_flag = TRUE) THEN -- All lines in ship set are imported
123 OPEN check_ship_set;
124 FETCH check_ship_set INTO l_detail_id;
125
126 IF (check_ship_set%FOUND) THEN
127 x_valid_flag := FALSE;
128 ELSE
129 x_valid_flag := TRUE;
130 END IF;
131
132 CLOSE check_ship_set;
133 END IF;
134
135 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
136
137 --
138 -- Debug Statements
139 --
140 IF l_debug_on THEN
141 WSH_DEBUG_SV.pop(l_module_name);
142 END IF;
143 --
144 EXCEPTION
145 WHEN others THEN
146 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_SHIP_SET');
147 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
148
149 --
150 -- Debug Statements
151 --
152 IF l_debug_on THEN
153 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
154 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
155 END IF;
156 --
157 END check_ship_set;
158
159 -----------------------------------------------------------------------------
160 --
161 -- Procedure: Check_Smc
162 -- Parameters: p_delivery_id, x_return_status
163 -- Description: Checks if Ship Model is complete and returns x_valid_flag
164 -- TRUE - if Ship Model is complete
165 -- FALSE - if Ship Model is not complete
166 --
167 -----------------------------------------------------------------------------
168
169 PROCEDURE check_smc ( p_delivery_id IN NUMBER,
170 x_valid_flag OUT NOCOPY BOOLEAN,
171 x_return_status OUT NOCOPY VARCHAR2) IS
172
173 -- Bug 2284000
174 CURSOR check_smc(top_model_line NUMBER) IS
175 SELECT MAX(OEL.ORDERED_QUANTITY) child_ord_qty, SUM(NVL(WDD.SHIPPED_QUANTITY,0)) child_shp_qty,
176 OEL.LINE_ID
177 FROM WSH_DELIVERY_DETAILS WDD, OE_ORDER_LINES_ALL OEL, wsh_delivery_assignments_v WDA
178 WHERE OEL.LINE_ID = WDD.SOURCE_LINE_ID
179 AND WDD.DELIVERY_DETAIL_ID = WDA.DELIVERY_DETAIL_ID
180 AND WDD.SHIP_MODEL_COMPLETE_FLAG = 'Y'
181 AND WDD.SOURCE_CODE = 'OE'
182 AND WDD.CONTAINER_FLAG <> 'Y'
183 AND WDA.DELIVERY_ID IS NOT NULL
184 AND WDA.DELIVERY_ID = p_delivery_id
185 AND WDD.TOP_MODEL_LINE_ID = top_model_line
186 GROUP BY OEL.LINE_ID;
187 check_smc_rec check_smc%rowtype;
188
189 cursor get_top_model IS
190 SELECT DISTINCT dd.top_model_line_id, dd.source_header_id , oe.ordered_quantity
191 FROM wsh_delivery_details dd, wsh_delivery_assignments_v da, oe_order_lines_all oe
192 WHERE da.delivery_id = p_delivery_id
193 AND da.delivery_id IS NOT NULL
194 AND dd.ship_model_complete_flag = 'Y'
195 AND da.delivery_detail_id = dd.delivery_detail_id
196 AND dd.source_code = 'OE'
197 AND dd.container_flag <> 'Y'
198 AND dd.top_model_line_id IS NOT NULL
199 AND dd.top_model_line_id = oe.line_id ;
200
201 cursor check_item (top_model_line NUMBER, header_id NUMBER) IS
202 SELECT line_id
203 FROM oe_order_lines_all
204 WHERE top_model_line_id = top_model_line
205 AND NVL(shippable_flag,'N') = 'Y'
206 AND NVL(cancelled_flag,'N') = 'N' -- bug 4997888
207 AND ( ato_line_id IS NULL OR
208 ( ato_line_id IS NOT NULL AND item_type_code = 'CONFIG' )
209 )
210 MINUS
211 SELECT source_line_id
212 FROM wsh_delivery_details dd, wsh_delivery_assignments_v da
213 WHERE dd.source_header_id = header_id
214 AND dd.source_code = 'OE'
215 AND dd.container_flag <> 'Y'
216 AND da.delivery_id IS NOT NULL
217 AND dd.delivery_detail_id = da.delivery_detail_id
218 AND da.delivery_id = p_delivery_id;
219
220 cursor check_config (ato_id NUMBER) IS
221 SELECT inventory_item_id
222 FROM oe_order_lines_all
223 WHERE ato_line_id = ato_id
224 AND NVL(shippable_flag,'N') = 'Y'
225 AND item_type_code = 'CONFIG';
226
227 cursor get_ato (top_model_line NUMBER) IS
228 SELECT ato_line_id
229 FROM oe_order_lines_all
230 WHERE top_model_line_id = top_model_line
231 AND ato_line_id = line_id
232 AND item_type_code NOT IN ('STANDARD','OPTION');
233
234 l_detail_id NUMBER;
235 l_item_id NUMBER;
236 qty NUMBER;
237 prev_qty NUMBER;
238
239 --
240 l_debug_on BOOLEAN;
241 --
242 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_SMC';
243 --
244 BEGIN
245
246 -- Bug 2284000 : Ship Confirm fails for Order with a Model and Cancelled Line
247 -- Bug 2284000 : Rewrote Logic to check for completeness of Model before Proportion checking
248
249 --
250 -- Debug Statements
251 --
252 --
253 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
254 --
255 IF l_debug_on IS NULL
256 THEN
257 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
258 END IF;
259 --
260 IF l_debug_on THEN
261 WSH_DEBUG_SV.push(l_module_name);
262 --
263 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
264 END IF;
265 --
266 x_valid_flag := TRUE;
267
268 FOR model_rec IN get_top_model LOOP
269
270 -- Check for ATO Models and whether the Configured Item has been created or not
271
272 --
273 IF l_debug_on THEN
274 WSH_DEBUG_SV.log(l_module_name,'Top Model Line ID',model_rec.top_model_line_id);
275 END IF;
276 --
277
278 -- Get all the ATO Model IDs
279 FOR get_ato_rec IN get_ato(model_rec.top_model_line_id) LOOP
280 --
281 IF l_debug_on THEN
282 WSH_DEBUG_SV.log(l_module_name,'ATO Line ID',get_ato_rec.ato_line_id);
283 END IF;
284 --
285
286 -- Check if the Configured Item is available, if not SMC is broken
287 OPEN check_config(get_ato_rec.ato_line_id);
288 FETCH check_config INTO l_item_id;
289 IF check_config%NOTFOUND THEN
290 x_valid_flag := FALSE;
291 CLOSE check_config;
292 EXIT;
293 END IF;
294 CLOSE check_config;
295
296 END LOOP;
297
298 IF x_valid_flag THEN
299
300 -- Check if at least one of the Included Items for the Model is not selected for the delivery
301 -- This means SMC is broken and no more checks are needed
302 OPEN check_item (model_rec.top_model_line_id, model_rec.source_header_id);
303 FETCH check_item INTO l_item_id;
304 IF check_item%NOTFOUND THEN
305 l_item_id := 0;
306 END IF;
307 CLOSE check_item;
308
309 IF l_item_id = 0 THEN
310
311 prev_qty:=null; --bug 2709011
312
313 -- All Included Items are selected
314 OPEN check_smc(model_rec.top_model_line_id);
315 FETCH check_smc INTO check_smc_rec;
316 WHILE (check_smc%FOUND) AND (x_valid_flag)
317 LOOP
318 qty := (model_rec.ordered_quantity * check_smc_rec.child_shp_qty) / check_smc_rec.child_ord_qty;
319
320 IF l_debug_on THEN
321 WSH_DEBUG_SV.log(l_module_name,'Ordered Qty',model_rec.ordered_quantity);
322 WSH_DEBUG_SV.log(l_module_name,'Child Shp Qty',check_smc_rec.child_shp_qty);
323 WSH_DEBUG_SV.log(l_module_name,'Child Ord Qty',check_smc_rec.child_ord_qty);
324 WSH_DEBUG_SV.log(l_module_name,'Prev Qty',qty);
325 END IF;
326
327 IF ( NVL(prev_qty,qty) <> qty ) THEN
328 x_valid_flag := FALSE;
329 ELSE
330 prev_qty := qty;
331 END IF;
332
333 FETCH check_smc INTO check_smc_rec;
334 END LOOP;
335 CLOSE check_smc;
336
337 ELSE
338 x_valid_flag := FALSE;
339 END IF;
340
341 END IF;
342
343 IF NOT (x_valid_flag) THEN
344 EXIT;
345 END IF;
346
347 END LOOP;
348
349 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
350
351 --
352 -- Debug Statements
353 --
354 IF l_debug_on THEN
355 WSH_DEBUG_SV.pop(l_module_name);
356 END IF;
357 --
358 EXCEPTION
359 WHEN others THEN
360 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_SMC');
361 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
362
363 --
364 -- Debug Statements
365 --
366 IF l_debug_on THEN
367 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
368 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
369 END IF;
370 --
371 END check_smc;
372
373 -----------------------------------------------------------------------------
374 --
375 -- Procedure: Check_Arrival_Set
376 -- Parameters: p_delivery_id, x_return_status
377 -- Description: Checks if Arrival set is complete and returns a valid_flag
378 -- TRUE - if Arrival Set is complete
379 -- FALSE - if Arrival Set is not complete
380 --
381 -----------------------------------------------------------------------------
382
383 PROCEDURE check_arrival_set( p_delivery_id IN NUMBER,
384 x_valid_flag OUT NOCOPY BOOLEAN,
385 x_return_status OUT NOCOPY VARCHAR2) IS
386
387 CURSOR check_arrival_set IS
388 SELECT 1 from dual
389 WHERE exists (
390 SELECT 1
391 FROM wsh_delivery_details dd,
392 wsh_delivery_assignments_v da
393 WHERE ((NVL(da.delivery_id, -1) <> p_delivery_id) OR
394 (da.delivery_id = p_delivery_id AND dd.requested_quantity > dd.shipped_quantity
395 AND da.delivery_id IS NOT NULL AND dd.shipped_quantity <> 0))
396 AND da.delivery_detail_id = dd.delivery_detail_id
397 AND dd.container_flag <> 'Y'
398 AND dd.source_code = 'OE'
399 AND (dd.arrival_set_id, dd.source_header_id) IN
400 (SELECT DISTINCT dd.arrival_set_id, dd.source_header_id
401 FROM wsh_delivery_details dd,
402 wsh_delivery_assignments_v da
403 WHERE da.delivery_id = p_delivery_id
404 AND da.delivery_id IS NOT NULL
405 AND da.delivery_detail_id = dd.delivery_detail_id
406 AND dd.container_flag <> 'Y'
407 AND dd.source_code = 'OE'
408 AND dd.arrival_set_id IS NOT NULL ) );
409
410 l_detail_id NUMBER;
411 others exception;
412
413 --
414 l_debug_on BOOLEAN;
415 --
416 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_ARRIVAL_SET';
417 --
418 BEGIN
419
420 --
421 -- Debug Statements
422 --
423 --
424 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
425 --
426 IF l_debug_on IS NULL
427 THEN
428 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
429 END IF;
430 --
431 IF l_debug_on THEN
432 WSH_DEBUG_SV.push(l_module_name);
433 --
434 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
435 END IF;
436 --
437 x_valid_flag := TRUE;
438 OPEN check_arrival_set;
439 FETCH check_arrival_set INTO l_detail_id;
440
441 IF (check_arrival_set%FOUND) THEN
442 x_valid_flag := FALSE;
443 ELSE
444 x_valid_flag := TRUE;
445 END IF;
446
447 CLOSE check_arrival_set;
448
449 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
450
451 --
452 -- Debug Statements
453 --
454 IF l_debug_on THEN
455 WSH_DEBUG_SV.pop(l_module_name);
456 END IF;
457 --
458 EXCEPTION
459 WHEN others THEN
460 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_ARRIVAL_SET');
461 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
462
463 --
464 -- Debug Statements
465 --
466 IF l_debug_on THEN
467 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
468 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
469 END IF;
470 --
471 END check_arrival_set;
472
473 -----------------------------------------------------------------------------
474 --
475 -- Procedure: Check_Del_Not_I_T
476 -- Parameters: p_delivery_id, delivery_status, x_return_status
477 -- Description: Checks if delivery is In-transit status and sets a warning
478 --
479 -----------------------------------------------------------------------------
480
481 PROCEDURE check_del_not_i_t( p_delivery_id IN NUMBER,
482 p_delivery_status IN VARCHAR2,
483 x_return_status OUT NOCOPY VARCHAR2) IS
484
485 --
486 l_debug_on BOOLEAN;
487 --
488 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DEL_NOT_I_T';
489 --
490 BEGIN
491
492 --
493 -- Debug Statements
494 --
495 --
496 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
497 --
498 IF l_debug_on IS NULL
499 THEN
500 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
501 END IF;
502 --
503 IF l_debug_on THEN
504 WSH_DEBUG_SV.push(l_module_name);
505 --
506 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
507 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_STATUS',P_DELIVERY_STATUS);
508 END IF;
509 --
510 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
511
512 IF (p_delivery_status = 'IT') THEN
513 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_DEL_IT');
514 --
515 -- Debug Statements
516 --
517 IF l_debug_on THEN
518 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
519 END IF;
520 --
521 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
522 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
523 wsh_util_core.add_message(x_return_status);
524 END IF;
525
526 --
527 -- Debug Statements
528 --
529 IF l_debug_on THEN
530 WSH_DEBUG_SV.pop(l_module_name);
531 END IF;
532 --
533 EXCEPTION
534 WHEN others THEN
535 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DEL_NOT_I_T');
536 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
537
538 --
539 -- Debug Statements
540 --
541 IF l_debug_on THEN
542 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
543 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
544 END IF;
545 --
546 END check_del_not_i_t;
547
548 -----------------------------------------------------------------------------
549 --
550 -- Procedure: Check_Released_Lines
551 -- Parameters: p_delivery_id, rel_num, unrel_num, x_return_status
552 -- Description: Checks if delivery has atleast one released and one unreleased lines and sets a warning
553 --
554 -----------------------------------------------------------------------------
555
556 PROCEDURE check_released_lines( p_delivery_id IN NUMBER,
557 rel_num IN NUMBER,
558 unrel_num IN NUMBER,
559 x_return_status OUT NOCOPY VARCHAR2) IS
560
561 --
562 l_debug_on BOOLEAN;
563 --
564 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_RELEASED_LINES';
565 --
566 BEGIN
567
568 --
569 -- Debug Statements
570 --
571 --
572 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
573 --
574 IF l_debug_on IS NULL
575 THEN
576 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
577 END IF;
578 --
579 IF l_debug_on THEN
580 WSH_DEBUG_SV.push(l_module_name);
581 --
582 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
583 WSH_DEBUG_SV.log(l_module_name,'REL_NUM',REL_NUM);
584 WSH_DEBUG_SV.log(l_module_name,'UNREL_NUM',UNREL_NUM);
585 END IF;
586 --
587 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
588
589 IF (rel_num <> 0) AND (unrel_num > 0) THEN
590
591 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_CONFIRM_ERROR');
592 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
593 wsh_util_core.add_message(x_return_status);
594
595 END IF;
596
597 --
598 -- Debug Statements
599 --
600 IF l_debug_on THEN
601 WSH_DEBUG_SV.pop(l_module_name);
602 END IF;
603 --
604 EXCEPTION
605 WHEN others THEN
606 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_RELEASED_LINES');
607 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
608
609 --
610 -- Debug Statements
611 --
612 IF l_debug_on THEN
613 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
614 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
615 END IF;
616 --
617 END check_released_lines;
618
619 -----------------------------------------------------------------------------
620 --
621 -- Procedure: Check_Del_Unpacked
622 -- Parameters: p_delivery_id, p_cont_exists_flag, p_unpacked_flag, x_return_status
623 -- Description: Checks if delivery has containers and is unpacked and issues a warning
624 --
625 -----------------------------------------------------------------------------
626
627 PROCEDURE check_del_unpacked( p_delivery_id IN NUMBER,
628 p_cont_exists_flag IN BOOLEAN,
629 p_unpacked_flag IN BOOLEAN,
630 x_return_status OUT NOCOPY VARCHAR2) IS
631
632 --
633 l_debug_on BOOLEAN;
634 --
635 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DEL_UNPACKED';
636 --
637 BEGIN
638
639 --
640 -- Debug Statements
641 --
642 --
643 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
644 --
645 IF l_debug_on IS NULL
646 THEN
647 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
648 END IF;
649 --
650 IF l_debug_on THEN
651 WSH_DEBUG_SV.push(l_module_name);
652 --
653 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
654 WSH_DEBUG_SV.log(l_module_name,'P_CONT_EXISTS_FLAG',P_CONT_EXISTS_FLAG);
655 WSH_DEBUG_SV.log(l_module_name,'P_UNPACKED_FLAG',P_UNPACKED_FLAG);
656 END IF;
657 --
658 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
659
660 IF (p_unpacked_flag) THEN
661 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_PACK_ITEMS_UNPACKED');
662 --
663 -- Debug Statements
664 --
665 IF l_debug_on THEN
666 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
667 END IF;
668 --
669 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
670 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
671 wsh_util_core.add_message(x_return_status);
672 END IF;
673
674
675
676 --
677 -- Debug Statements
678 --
679 IF l_debug_on THEN
680 WSH_DEBUG_SV.pop(l_module_name);
681 END IF;
682 --
683 EXCEPTION
684 WHEN others THEN
685 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DEL_UNPACKED');
686 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
687
688 --
689 -- Debug Statements
690 --
691 IF l_debug_on THEN
692 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
693 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
694 END IF;
695 --
696 END check_del_unpacked;
697
698 -----------------------------------------------------------------------------
699 --
700 -- Procedure: Check_Del_Overfilled
701 -- Parameters: p_delivery_id, p_cont_exists_flag, p_unpacked_flag, x_return_status
702 -- Description: Checks if delivery has containers and does not have overfilled containers and issues a warning
703 --
704 -----------------------------------------------------------------------------
705
706 PROCEDURE check_del_overfilled( p_delivery_id IN NUMBER,
707 p_cont_exists_flag IN BOOLEAN,
708 p_overfilled_flag IN BOOLEAN,
709 x_return_status OUT NOCOPY VARCHAR2) IS
710
711 --
712 l_debug_on BOOLEAN;
713 --
714 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DEL_OVERFILLED';
715 --
716 BEGIN
717
718 --
719 -- Debug Statements
720 --
721 --
722 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
723 --
724 IF l_debug_on IS NULL
725 THEN
726 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
727 END IF;
728 --
729 IF l_debug_on THEN
730 WSH_DEBUG_SV.push(l_module_name);
731 --
732 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
733 WSH_DEBUG_SV.log(l_module_name,'P_CONT_EXISTS_FLAG',P_CONT_EXISTS_FLAG);
734 WSH_DEBUG_SV.log(l_module_name,'P_OVERFILLED_FLAG',P_OVERFILLED_FLAG);
735 END IF;
736 --
737 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
738
739 IF (p_cont_exists_flag) THEN
740
741 IF (p_overfilled_flag) THEN
742 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_CONT_OVERPACKED');
743 --
744 -- Debug Statements
745 --
746 IF l_debug_on THEN
747 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
748 END IF;
749 --
750 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
751 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
752 wsh_util_core.add_message(x_return_status);
753 END IF;
754
755 END IF;
756
757 --
758 -- Debug Statements
759 --
760 IF l_debug_on THEN
761 WSH_DEBUG_SV.pop(l_module_name);
762 END IF;
763 --
764 EXCEPTION
765 WHEN others THEN
766 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DEL_OVERFILLED');
767 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
768
769 --
770 -- Debug Statements
771 --
772 IF l_debug_on THEN
773 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
774 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
775 END IF;
776 --
777 END check_del_overfilled;
778
779 -----------------------------------------------------------------------------
780 --
781 -- Procedure: Check_Del_Underfilled
782 -- Parameters: p_delivery_id, p_cont_exists_flag, p_underfilled_flag, x_return_status
783 -- Description: Checks if delivery has containers and does not have under filled containers and issues a warning
784 --
785 -----------------------------------------------------------------------------
786
787 PROCEDURE check_del_underfilled( p_delivery_id IN NUMBER,
788 p_cont_exists_flag IN BOOLEAN,
789 p_underfilled_flag IN BOOLEAN,
790 x_return_status OUT NOCOPY VARCHAR2) IS
791
792 --
793 l_debug_on BOOLEAN;
794 --
795 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DEL_UNDERFILLED';
796 --
797 BEGIN
798
799 --
800 -- Debug Statements
801 --
802 --
803 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
804 --
805 IF l_debug_on IS NULL
806 THEN
807 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
808 END IF;
809 --
810 IF l_debug_on THEN
811 WSH_DEBUG_SV.push(l_module_name);
812 --
813 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
814 WSH_DEBUG_SV.log(l_module_name,'P_CONT_EXISTS_FLAG',P_CONT_EXISTS_FLAG);
815 WSH_DEBUG_SV.log(l_module_name,'P_UNDERFILLED_FLAG',P_UNDERFILLED_FLAG);
816 END IF;
817 --
818 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
819
820 IF (p_cont_exists_flag) THEN
821
822 IF (p_underfilled_flag) THEN
823 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_CONT_UNDERPACKED');
824 --
825 -- Debug Statements
826 --
827 IF l_debug_on THEN
828 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
829 END IF;
830 --
831 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
832 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
833 wsh_util_core.add_message(x_return_status);
834
835 END IF;
836
837 END IF;
838
839 --
840 -- Debug Statements
841 --
842 IF l_debug_on THEN
843 WSH_DEBUG_SV.pop(l_module_name);
844 END IF;
845 --
846 EXCEPTION
847 WHEN others THEN
848 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DEL_UNDERFILLED');
849 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
850
851 --
852 -- Debug Statements
853 --
854 IF l_debug_on THEN
855 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
856 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
857 END IF;
858 --
859 END check_del_underfilled;
860
861
862 -----------------------------------------------------------------------------
863 --
864 -- Procedure: Check_Del_Final_Dest
865 -- Parameters: p_delivery_id, p_final_dropoff_id, p_ultimate_dropoff_id, x_return_status
866 -- Description: Checks if delivery final destination matches ultimate dropoff destination and returns a warning if it does not
867 --
868 -----------------------------------------------------------------------------
869
870 PROCEDURE check_del_final_dest( p_delivery_id IN NUMBER,
871 p_final_dropoff_id IN NUMBER,
872 p_ultimate_dropoff_id IN NUMBER,
873 x_return_status OUT NOCOPY VARCHAR2) IS
874
875 --
876 l_debug_on BOOLEAN;
877 --
878 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DEL_FINAL_DEST';
879 --
880 BEGIN
881
882 --
883 -- Debug Statements
884 --
885 --
886 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
887 --
888 IF l_debug_on IS NULL
889 THEN
890 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
891 END IF;
892 --
893 IF l_debug_on THEN
894 WSH_DEBUG_SV.push(l_module_name);
895 --
896 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
897 WSH_DEBUG_SV.log(l_module_name,'P_FINAL_DROPOFF_ID',P_FINAL_DROPOFF_ID);
898 WSH_DEBUG_SV.log(l_module_name,'P_ULTIMATE_DROPOFF_ID',P_ULTIMATE_DROPOFF_ID);
899 END IF;
900 --
901 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
902
903 IF (p_final_dropoff_id <> p_ultimate_dropoff_id) THEN
904 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NO_ULTIMATE_DROPOFF');
905 --
906 -- Debug Statements
907 --
908 IF l_debug_on THEN
909 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
910 END IF;
911 --
912 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
913 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
914 wsh_util_core.add_message(x_return_status);
915 END IF;
916
917 --
918 -- Debug Statements
919 --
920 IF l_debug_on THEN
921 WSH_DEBUG_SV.pop(l_module_name);
922 END IF;
923 --
924 EXCEPTION
925 WHEN others THEN
926 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DEL_FINAL_DEST');
927 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
928
929 --
930 -- Debug Statements
931 --
932 IF l_debug_on THEN
933 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
934 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
935 END IF;
936 --
937 END check_del_final_dest;
938
939 -----------------------------------------------------------------------------
940 --
941 -- Procedure: Check_Calendar
942 -- Parameters: p_entity_type, p_ship_date, p_ship_assoc_type, p_ship_location_id,
943 -- p_freight_code, p_freight_org_id,
944 -- p_receive_date, p_receive_assoc_type, p_receive_location_id,
945 -- x_return_status
946 -- Description: Checks if p_ship_date and p_rec_date are valid for the calendar
947 -- at location p_location_id
948 -- Values for p_entity_type are
949 -- DELIVERY
950 -- Values for p_assoc_type are
951 -- CUSTOMER
952 -- VENDOR
953 -- ORG
954 -- CARRIER
955 --
956 -----------------------------------------------------------------------------
957
958 PROCEDURE Check_Calendar ( p_entity_type IN VARCHAR2,
959 p_entity_id IN NUMBER,
960 p_ship_date IN DATE,
961 p_ship_assoc_type IN VARCHAR2,
962 p_ship_location_id IN NUMBER,
963 p_freight_code IN VARCHAR2,
964 p_freight_org_id IN NUMBER,
965 p_receive_date IN DATE,
966 p_receive_assoc_type IN VARCHAR2,
967 p_receive_location_id IN NUMBER,
968 p_update_flag IN VARCHAR2,
969 x_return_status OUT NOCOPY VARCHAR2) IS
970 l_msg_count NUMBER;
971 l_msg_data VARCHAR2(2000);
972 l_return_code NUMBER;
973 l_suggest_ship_date DATE;
974 l_suggest_receive_date DATE;
975
976 --
977 l_debug_on BOOLEAN;
978 --
979 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_CALENDAR';
980 --
981 BEGIN
982
983 --
984 -- Debug Statements
985 --
986 --
987 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
988 --
989 IF l_debug_on IS NULL
990 THEN
991 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
992 END IF;
993 --
994 IF l_debug_on THEN
995 WSH_DEBUG_SV.push(l_module_name);
996 --
997 WSH_DEBUG_SV.log(l_module_name,'P_ENTITY_TYPE',P_ENTITY_TYPE);
998 WSH_DEBUG_SV.log(l_module_name,'P_ENTITY_ID',P_ENTITY_ID);
999 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_DATE',P_SHIP_DATE);
1000 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_ASSOC_TYPE',P_SHIP_ASSOC_TYPE);
1001 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_LOCATION_ID',P_SHIP_LOCATION_ID);
1002 WSH_DEBUG_SV.log(l_module_name,'P_FREIGHT_CODE',P_FREIGHT_CODE);
1003 WSH_DEBUG_SV.log(l_module_name,'P_FREIGHT_ORG_ID',P_FREIGHT_ORG_ID);
1004 WSH_DEBUG_SV.log(l_module_name,'P_RECEIVE_DATE',P_RECEIVE_DATE);
1005 WSH_DEBUG_SV.log(l_module_name,'P_RECEIVE_ASSOC_TYPE',P_RECEIVE_ASSOC_TYPE);
1006 WSH_DEBUG_SV.log(l_module_name,'P_RECEIVE_LOCATION_ID',P_RECEIVE_LOCATION_ID);
1007 WSH_DEBUG_SV.log(l_module_name,'P_UPDATE_FLAG',P_UPDATE_FLAG);
1008 END IF;
1009 --
1010 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1011
1012 IF (p_entity_type = 'DELIVERY') THEN
1013
1014 --
1015 -- Debug Statements
1016 --
1017 IF l_debug_on THEN
1018 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_CAL_ASG_VALIDATIONS.TRANSPORT_DATES',WSH_DEBUG_SV.C_PROC_LEVEL);
1019 END IF;
1020 --
1021 wsh_cal_asg_validations.transport_dates(
1022 p_api_version_number => 1.0
1023 , p_init_msg_list => FND_API.G_FALSE
1024 , x_return_status => x_return_status
1025 , x_msg_count => l_msg_count
1026 , x_msg_data => l_msg_data
1027 , p_priority => 'SHIP'
1028 , p_ship_date => p_ship_date
1029 , p_ship_assoc_type => p_ship_assoc_type
1030 , p_ship_location_id => p_ship_location_id
1031 , p_ship_vendor_site_id => to_number(NULL)
1032 , p_ship_customer_site_use_id => to_number(NULL)
1033 , p_ship_time_matters => FALSE
1034 , p_freight_code => p_freight_code
1035 , p_freight_org_id => p_freight_org_id
1036 , p_receive_date => p_receive_date
1037 , p_receive_assoc_type => p_receive_assoc_type
1038 , p_receive_location_id => p_receive_location_id
1039 , p_receive_vendor_site_id => to_number(NULL)
1040 , p_receive_customer_site_use_id => to_number(NULL)
1041 , p_receive_time_matters => FALSE
1042 , x_return_code => l_return_code
1043 , x_suggest_ship_date => l_suggest_ship_date
1044 , x_suggest_receive_date => l_suggest_receive_date
1045 , p_primary_threshold => 10
1046 , p_secondary_threshold => 10
1047 );
1048
1049 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) OR (l_return_code = 0) THEN
1050 --
1051 -- Debug Statements
1052 --
1053 IF l_debug_on THEN
1054 WSH_DEBUG_SV.pop(l_module_name);
1055 END IF;
1056 --
1057 RETURN;
1058 END IF;
1059
1060 IF (l_return_code IN (1,2,3,4)) AND (l_suggest_ship_date <> p_ship_date) THEN
1061 IF (p_update_flag <> 'Y') THEN
1062 FND_MESSAGE.SET_NAME('WSH','WSH_CAL_SHIP_DATE_ALT');
1063 ELSE
1064 FND_MESSAGE.SET_NAME('WSH','WSH_CAL_SHIP_DATE_ALT_UPDATE');
1065 END IF;
1066 --
1067 -- Debug Statements
1068 --
1069 IF l_debug_on THEN
1070 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1071 END IF;
1072 --
1073 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_entity_id));
1074 FND_MESSAGE.SET_TOKEN('SHIP',fnd_date.date_to_chardate(p_ship_date));
1075 FND_MESSAGE.SET_TOKEN('SUGGESTED',fnd_date.date_to_chardate(l_suggest_ship_date));
1076 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1077 wsh_util_core.add_message(x_return_status);
1078 END IF;
1079
1080 IF (l_return_code IN (1,2,3,5)) AND (l_suggest_receive_date <> p_receive_date) THEN
1081 IF (p_update_flag <> 'Y') THEN
1082 FND_MESSAGE.SET_NAME('WSH','WSH_CAL_REC_DATE_ALT');
1083 ELSE
1084 FND_MESSAGE.SET_NAME('WSH','WSH_CAL_REC_DATE_ALT_UPDATE');
1085 END IF;
1086 --
1087 -- Debug Statements
1088 --
1089 IF l_debug_on THEN
1090 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1091 END IF;
1092 --
1093 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_entity_id));
1094 FND_MESSAGE.SET_TOKEN('RECEIVE',fnd_date.date_to_chardate(p_receive_date));
1095 FND_MESSAGE.SET_TOKEN('SUGGESTED',fnd_date.date_to_chardate(l_suggest_receive_date));
1096 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1097 wsh_util_core.add_message(x_return_status);
1098 END IF;
1099
1100 IF (l_return_code = 6) THEN
1101 FND_MESSAGE.SET_NAME('WSH','WSH_CAL_INV_DATES');
1102 --
1103 -- Debug Statements
1104 --
1105 IF l_debug_on THEN
1106 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1107 END IF;
1108 --
1109 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_entity_id));
1110 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1111 wsh_util_core.add_message(x_return_status);
1112 END IF;
1113
1114 IF (p_update_flag = 'Y') THEN
1115
1116 IF (l_suggest_ship_date <> p_ship_date) THEN
1117 UPDATE wsh_new_deliveries
1118 SET initial_pickup_date = l_suggest_ship_date
1119 WHERE delivery_id = p_entity_id;
1120 END IF;
1121
1122 IF (l_suggest_receive_date <> p_receive_date) THEN
1123 UPDATE wsh_new_deliveries
1124 SET ultimate_dropoff_date = l_suggest_receive_date
1125 WHERE delivery_id = p_entity_id;
1126 END IF;
1127
1128 END IF;
1129
1130 END IF;
1131
1132 --
1133 -- Debug Statements
1134 --
1135 IF l_debug_on THEN
1136 WSH_DEBUG_SV.pop(l_module_name);
1137 END IF;
1138 --
1139 EXCEPTION
1140 WHEN others THEN
1141 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_CALENDAR');
1142 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1143
1144 --
1145 -- Debug Statements
1146 --
1147 IF l_debug_on THEN
1148 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1149 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1150 END IF;
1151 --
1152 END Check_Calendar;
1153
1154 -----------------------------------------------------------------------------
1155 --
1156 -- Procedure: Check_Plan
1157 -- Parameters: delivery_id, x_return_status
1158 -- Description: Checks for Plan action pre-requisites which are
1159 -- - Delivery status is OPEN or PACKED
1160 -- - At least one delivery detail is assigned
1161 -- - SMC models must be together [warning]
1162 -- - Ship Sets must be complete [warning]
1163 -- - Delivery flow on trip/s is valid [error/warning]
1164 --
1165 -----------------------------------------------------------------------------
1166
1167 PROCEDURE Check_Plan ( p_delivery_id IN NUMBER,
1168 x_return_status OUT NOCOPY VARCHAR2,
1169 p_called_for_sc IN BOOLEAN default false) IS
1170 CURSOR delivery_info IS
1171 SELECT status_code,
1172 planned_flag,
1173 organization_id,
1174 ship_method_code,
1175 initial_pickup_date,
1176 ultimate_dropoff_date,
1177 initial_pickup_location_id,
1178 ultimate_dropoff_location_id,
1179 nvl(shipment_direction,'O') shipment_direction,
1180 delivery_type
1181 FROM wsh_new_deliveries
1182 WHERE delivery_id = p_delivery_id;
1183
1184
1185 CURSOR delivery_details IS
1186 SELECT da.delivery_detail_id
1187 FROM wsh_delivery_assignments_v da,
1188 wsh_delivery_details dd
1189 WHERE dd.delivery_detail_id = da.delivery_detail_id AND
1190 da.delivery_id = p_delivery_id AND
1191 da.delivery_id IS NOT NULL AND
1192 nvl(dd.container_flag,'N') <> 'Y';
1193
1194 ---BUG No:4241880.Cursor changed
1195 CURSOR get_freight(p_ship_method_code VARCHAR2,p_organization_id NUMBER) IS
1196 SELECT freight_code
1197 FROM wsh_carriers wc,wsh_carrier_services wcs,wsh_org_carrier_services wocs
1198 WHERE wc.carrier_id=wcs.carrier_id AND
1199 wcs.carrier_service_id=wocs.carrier_service_id AND
1200 wcs.ship_method_code = p_ship_method_code AND
1201 wocs.organization_id = p_organization_id;
1202 ---BUG No:4241880.Cursor changed ends
1203
1204 /*
1205 CURSOR get_freight(p_ship_method_code VARCHAR2,p_organization_id NUMBER) IS
1206 SELECT freight_code
1207 FROM wsh_carrier_ship_methods_v
1208 WHERE ship_method_code = p_ship_method_code AND
1209 organization_id = p_organization_id;
1210 */
1211
1212 l_detail_id NUMBER;
1213 l_valid_flag BOOLEAN;
1214 l_status_code VARCHAR2(2);
1215 l_planned_flag VARCHAR2(1);
1216 l_return_status VARCHAR2(1);
1217 l_org_id NUMBER;
1218 l_ship_method_code VARCHAR2(30);
1219 l_freight_code VARCHAR2(30);
1220 l_rec_date DATE;
1221 l_ship_date DATE;
1222 l_ship_from_location NUMBER;
1223 l_ship_to_location NUMBER;
1224 l_delivery_type VARCHAR2(30);
1225 --6156495 : Added local variables
1226 l_temp_ship_date DATE;
1227 l_temp_rec_date DATE;
1228
1229 NO_FREIGHT_CODE EXCEPTION;
1230
1231 --
1232 l_debug_on BOOLEAN;
1233 --
1234 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_PLAN';
1235 --
1236 l_shipping_control VARCHAR2(30);
1237 l_routing_response_id NUMBER;
1238 l_routing_request_flag VARCHAR2(30);
1239 l_shipment_direction VARCHAR2(30);
1240 l_ship_assoc_type VARCHAR2(30);
1241 l_receive_assoc_type VARCHAR2(30);
1242 BEGIN
1243
1244 --
1245 -- Debug Statements
1246 --
1247 --
1248 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1249 --
1250 IF l_debug_on IS NULL
1251 THEN
1252 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1253 END IF;
1254 --
1255 IF l_debug_on THEN
1256 WSH_DEBUG_SV.push(l_module_name);
1257 --
1258 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
1259 WSH_DEBUG_SV.log(l_module_name,'p_called_for_sc',p_called_for_sc);
1260 END IF;
1261 --
1262 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1263
1264 OPEN delivery_info;
1265 FETCH delivery_info INTO l_status_code,
1266 l_planned_flag,
1267 l_org_id,
1268 l_ship_method_code,
1269 l_ship_date,
1270 l_rec_date,
1271 l_ship_from_location,
1272 l_ship_to_location,
1273 l_shipment_direction, -- J-IB-NPARIKH
1274 l_delivery_type;
1275
1276 IF (delivery_info%NOTFOUND) THEN
1277 CLOSE delivery_info;
1278 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NOT_FOUND');
1279 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1280 wsh_util_core.add_message(x_return_status);
1281 --
1282 -- Debug Statements
1283 --
1284 IF l_debug_on THEN
1285 WSH_DEBUG_SV.pop(l_module_name);
1286 END IF;
1287 --
1288 RETURN;
1289 ELSE
1290 IF l_ship_method_code IS NULL THEN
1291 l_freight_code:=null;
1292 ELSE
1293 OPEN get_freight(l_ship_method_code,l_org_id);
1294 FETCH get_freight INTO l_freight_code;
1295
1296 IF (get_freight%NOTFOUND) THEN
1297 --bug 3389356 ship method shud be associated with org for a contents firm - this check
1298 --need not be performed here - LOV is restricting, for public api's restrict
1299 --in public api itself for create/update
1300 --don't raise error here
1301 l_freight_code:=null;
1302 END IF;
1303
1304 CLOSE get_freight;
1305 END IF;
1306 END IF;
1307
1308 CLOSE delivery_info;
1309
1310 IF (l_planned_flag IN ('Y','F')) THEN
1311 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1312 --
1313 -- Debug Statements
1314 --
1315 IF l_debug_on THEN
1316 WSH_DEBUG_SV.pop(l_module_name);
1317 END IF;
1318 --
1319 RETURN;
1320 END IF;
1321
1322 --removed code causing error for closed, in-transit dels
1323
1324 IF l_delivery_type = 'STANDARD' THEN
1325
1326 OPEN delivery_details;
1327 FETCH delivery_details INTO l_detail_id;
1328
1329 IF (delivery_details%NOTFOUND) THEN
1330 CLOSE delivery_details;
1331 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NO_DETAILS');
1332 --
1333 -- Debug Statements
1334 --
1335 IF l_debug_on THEN
1336 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1337 END IF;
1338 --
1339 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
1340 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1341 wsh_util_core.add_message(x_return_status);
1342 --
1343 -- Debug Statements
1344 --
1345 IF l_debug_on THEN
1346 WSH_DEBUG_SV.pop(l_module_name);
1347 END IF;
1348 --
1349 RETURN;
1350 END IF;
1351
1352 CLOSE delivery_details;
1353 END IF;
1354
1355 IF l_shipment_direction IN ('O','IO') --J-IB-NPARIKH
1356 THEN
1357 --{
1358 --
1359 -- Ship-model complete and ship-set checks are required only
1360 -- for outbound (O/IO) deliveries
1361 --
1362
1363 -- Bug 4519097 : The following IF condition is commong for both ship set and smc.So
1364 -- moved the END IF of the IF stmt after the check on shipsets is also done.
1365 -- TPA change
1366 IF NOT NVL(p_called_for_sc,FALSE) THEN --{
1367 --
1368 -- Debug Statements
1369 --
1370 IF l_debug_on THEN
1371 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_SMC',WSH_DEBUG_SV.C_PROC_LEVEL);
1372 END IF;
1373 --
1374 wsh_tpa_delivery_pkg.check_smc( p_delivery_id, l_valid_flag, l_return_status);
1375
1376 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
1377 x_return_status := l_return_status;
1378 --
1379 -- Debug Statements
1380 --
1381 IF l_debug_on THEN
1382 WSH_DEBUG_SV.pop(l_module_name);
1383 END IF;
1384 --
1385 RETURN;
1386 END IF;
1387
1388 IF NOT (l_valid_flag) THEN
1389 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_SMC_INCOMPLETE');
1390 IF l_debug_on THEN
1391 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1392 END IF;
1393 --
1394 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
1395 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1396 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1397 END IF;
1398
1399 --
1400 -- Debug Statements
1401 --
1402 IF l_debug_on THEN
1403 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_SHIP_SET',WSH_DEBUG_SV.C_PROC_LEVEL);
1404 END IF;
1405 --
1406 wsh_tpa_delivery_pkg.check_ship_set( p_delivery_id, l_valid_flag, l_return_status);
1407
1408 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
1409 x_return_status := l_return_status;
1410 --
1411 -- Debug Statements
1412 --
1413 IF l_debug_on THEN
1414 WSH_DEBUG_SV.pop(l_module_name);
1415 END IF;
1416 --
1417 RETURN;
1418 END IF;
1419
1420 IF NOT (l_valid_flag) THEN
1421 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_SHIP_SET_INCOMPLETE');
1422
1423 -- Bug 2429632 Added a Delivery Name Token to the above error message
1424 --
1425 -- Debug Statements
1426 --
1427 IF l_debug_on THEN
1428 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1429 END IF;
1430 --
1431 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
1432 -- End Bug 2429632
1433
1434 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1435 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1436 END IF;
1437 --
1438 END IF;
1439 --}
1440 --}
1441 END IF;
1442 /* H integration anxsharm use name of parameters */
1443 --
1444 -- Debug Statements
1445 --
1446 IF l_debug_on THEN
1447 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERY_ACTIONS.UPDATE_LEG_SEQUENCE',WSH_DEBUG_SV.C_PROC_LEVEL);
1448 END IF;
1449 --
1450 wsh_new_delivery_actions.update_leg_sequence(
1451 p_delivery_id => p_delivery_id,
1452 x_return_status => l_return_status);
1453
1454 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
1455 x_return_status := l_return_status;
1456 --
1457 -- Debug Statements
1458 --
1459 IF l_debug_on THEN
1460 WSH_DEBUG_SV.pop(l_module_name);
1461 END IF;
1462 --
1463 RETURN;
1464 END IF;
1465
1466 -- Check for transportation calendar requirements
1467
1468 -- J-IB-NPARIKH-{
1469 IF l_shipment_Direction = 'I'
1470 THEN
1471 l_ship_assoc_type := 'VENDOR';
1472 l_receive_assoc_type := 'ORG';
1473 ELSIF l_shipment_direction = 'D'
1474 THEN
1475 l_ship_assoc_type := 'VENDOR';
1476 l_receive_assoc_type := 'CUSTOMER';
1477 ELSE
1478 -- modified ship_assoc type to 'HR_LOCATION' and receive_assoc_type to 'CUSTOMER_SITE' for bug 5880742
1479 l_ship_assoc_type := 'HR_LOCATION';
1480 l_receive_assoc_type := 'CUSTOMER_SITE';
1481 END IF;
1482 -- J-IB-NPARIKH-}
1483 --6156495 :Determining the dates to be validated against the shipping and Receiving Calendars
1484 IF G_ACT_DEPT_DATE IS NOT NULL
1485 THEN
1486 l_temp_ship_date := G_ACT_DEPT_DATE;
1487 IF l_rec_date > G_ACT_DEPT_DATE
1488 THEN
1489 l_temp_rec_date := l_rec_date;
1490 ELSE
1491 l_temp_rec_date := G_ACT_DEPT_DATE;
1492 END IF;
1493 ELSE
1494 l_temp_ship_date := l_ship_date;
1495 l_temp_rec_date := l_rec_date;
1496 END IF;
1497
1498 -- TPA Change
1499 --
1500 -- Debug Statements
1501 --
1502 IF l_debug_on THEN
1503 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_CALENDAR',WSH_DEBUG_SV.C_PROC_LEVEL);
1504 END IF;
1505 --
1506 wsh_tpa_delivery_pkg.check_calendar(p_entity_type => 'DELIVERY',
1507 p_entity_id => p_delivery_id,
1508 -- p_ship_date => l_ship_date,--6156495
1509 p_ship_date => l_temp_ship_date,
1510 p_ship_assoc_type => l_ship_assoc_type, --'ORG',
1511 p_ship_location_id => l_ship_from_location,
1512 p_freight_code => l_freight_code,
1513 p_freight_org_id => l_org_id,
1514 -- p_receive_date => l_rec_date, --6156495
1515 p_receive_date => l_temp_rec_date,
1516 p_receive_assoc_type => l_receive_assoc_type, --'CUSTOMER',
1517 p_receive_location_id => l_ship_to_location,
1518 p_update_flag => 'Y',
1519 x_return_status => l_return_status);
1520
1521 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
1522 x_return_status := l_return_status;
1523 END IF;
1524
1525 --
1526 -- Debug Statements
1527 --
1528 IF l_debug_on THEN
1529 WSH_DEBUG_SV.pop(l_module_name);
1530 END IF;
1531 --
1532 EXCEPTION
1533 WHEN NO_FREIGHT_CODE THEN
1534 fnd_message.set_name('WSH','WSH_FREIGHT_CODE_NOT_FOUND');
1535 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR);
1536 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1537 --
1538 -- Debug Statements
1539 --
1540 IF l_debug_on THEN
1541 WSH_DEBUG_SV.logmsg(l_module_name,'NO_FREIGHT_CODE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1542 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:NO_FREIGHT_CODE');
1543 END IF;
1544 --
1545 WHEN others THEN
1546 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_PLAN');
1547 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1548
1549 --
1550 -- Debug Statements
1551 --
1552 IF l_debug_on THEN
1553 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1554 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1555 END IF;
1556 --
1557 END Check_Plan;
1558
1559
1560 -----------------------------------------------------------------------------
1561 --
1562 -- Procedure: Check_Unplan
1563 -- Parameters: p_delivery_id, x_return_status
1564 -- Description: Checks for Unplan action pre-requisites which are
1565 -- - Delivery status is OPEN or IN-TRANSIT
1566 -- - Delivery is planned
1567 --
1568 -----------------------------------------------------------------------------
1569
1570 PROCEDURE Check_Unplan ( p_delivery_id IN NUMBER,
1571 x_return_status OUT NOCOPY VARCHAR2) IS
1572
1573 CURSOR delivery_status IS
1574 SELECT status_code,
1575 planned_flag,
1576 nvl(shipment_direction,'O') shipment_direction -- J-IB-NPARIKH
1577 FROM wsh_new_deliveries
1578 WHERE delivery_id = p_delivery_id;
1579
1580 l_status_code VARCHAR2(2);
1581 l_planned_flag VARCHAR2(1);
1582
1583 --
1584 l_debug_on BOOLEAN;
1585 --
1586 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_UNPLAN';
1587 --
1588 --
1589 l_return_status VARCHAR2(10);
1590 l_shipping_control VARCHAR2(30);
1591 l_routing_response_id NUMBER;
1592 l_routing_request_flag VARCHAR2(30);
1593 l_shipment_direction VARCHAR2(30);
1594 BEGIN
1595
1596 --
1597 -- Debug Statements
1598 --
1599 --
1600 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1601 --
1602 IF l_debug_on IS NULL
1603 THEN
1604 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1605 END IF;
1606 --
1607 IF l_debug_on THEN
1608 WSH_DEBUG_SV.push(l_module_name);
1609 --
1610 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
1611 END IF;
1612 --
1613 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1614
1615 OPEN delivery_status;
1616 FETCH delivery_status INTO l_status_code, l_planned_flag,l_shipment_direction;
1617
1618 IF (delivery_status%NOTFOUND) THEN
1619 CLOSE delivery_status;
1620 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NOT_FOUND');
1621 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1622 wsh_util_core.add_message(x_return_status);
1623 --
1624 -- Debug Statements
1625 --
1626 IF l_debug_on THEN
1627 WSH_DEBUG_SV.pop(l_module_name);
1628 END IF;
1629 --
1630 RETURN;
1631 END IF;
1632
1633 CLOSE delivery_status;
1634
1635 IF (l_planned_flag NOT IN ('Y','F')) THEN
1636 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1637 --
1638 -- Debug Statements
1639 --
1640 IF l_debug_on THEN
1641 WSH_DEBUG_SV.pop(l_module_name);
1642 END IF;
1643 --
1644 RETURN;
1645 END IF;
1646
1647 --tkt removed code for raising error for IT CL cases
1648
1649 --
1650 -- Debug Statements
1651 --
1652 IF l_debug_on THEN
1653 WSH_DEBUG_SV.pop(l_module_name);
1654 END IF;
1655 --
1656 EXCEPTION
1657 WHEN others THEN
1658 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_UNPLAN');
1659 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1660
1661 --
1662 -- Debug Statements
1663 --
1664 IF l_debug_on THEN
1665 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1666 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1667 END IF;
1668 --
1669 END Check_Unplan;
1670
1671
1672
1673 -----------------------------------------------------------------------------
1674 --
1675 -- Procedure: Check_Tender_Load
1676 -- Parameters: p_delivery_leg_id, x_return_status
1677 -- Description: Checks for Tender Load action pre-requisites which are
1678 -- - Delivery satisfies rules for Plan
1679 -- - Weight/Volume information must be specified
1680 --
1681 -----------------------------------------------------------------------------
1682
1683 PROCEDURE Check_Tender_Load ( p_delivery_leg_id IN NUMBER,
1684 x_return_status OUT NOCOPY VARCHAR2) IS
1685
1686 CURSOR delivery_details IS
1687 SELECT dl.delivery_id,
1688 dg.gross_weight,
1689 dg.net_weight,
1690 dg.weight_uom_code,
1691 dg.volume,
1692 dg.volume_uom_code
1693 FROM wsh_delivery_legs dg,
1694 wsh_new_deliveries dl
1695 WHERE dl.delivery_id = dg.delivery_id AND
1696 dg.delivery_leg_id = p_delivery_leg_id;
1697
1698 others EXCEPTION;
1699 l_delivery_id NUMBER;
1700 l_gr_weight NUMBER;
1701 l_net_weight NUMBER;
1702 l_wt_uom VARCHAR2(3);
1703 l_volume NUMBER;
1704 l_vol_uom VARCHAR2(3);
1705
1706 --
1707 l_debug_on BOOLEAN;
1708 --
1709 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_TENDER_LOAD';
1710 --
1711 BEGIN
1712
1713 --
1714 -- Debug Statements
1715 --
1716 --
1717 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1718 --
1719 IF l_debug_on IS NULL
1720 THEN
1721 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1722 END IF;
1723 --
1724 IF l_debug_on THEN
1725 WSH_DEBUG_SV.push(l_module_name);
1726 --
1727 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_LEG_ID',P_DELIVERY_LEG_ID);
1728 END IF;
1729 --
1730 OPEN delivery_details;
1731 FETCH delivery_details INTO l_delivery_id, l_gr_weight, l_net_weight, l_wt_uom, l_volume, l_vol_uom;
1732
1733 IF (delivery_details%NOTFOUND) THEN
1734 CLOSE delivery_details;
1735 raise others;
1736 END IF;
1737 CLOSE delivery_details;
1738
1739 Check_Plan( l_delivery_id, x_return_status);
1740
1741 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
1742 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_PLAN_ERROR');
1743 --
1744 -- Debug Statements
1745 --
1746 IF l_debug_on THEN
1747 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1748 END IF;
1749 --
1750 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(l_delivery_id));
1751 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1752 wsh_util_core.add_message(x_return_status);
1753 --
1754 -- Debug Statements
1755 --
1756 IF l_debug_on THEN
1757 WSH_DEBUG_SV.pop(l_module_name);
1758 END IF;
1759 --
1760 RETURN;
1761 END IF;
1762
1763 IF (l_gr_weight IS NULL) or (l_gr_weight = 0) or (l_wt_uom IS NULL) THEN
1764 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_LT_WT_VOL_MISSING');
1765 --
1766 -- Debug Statements
1767 --
1768 IF l_debug_on THEN
1769 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
1770 END IF;
1771 --
1772 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(l_delivery_id));
1773 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1774 wsh_util_core.add_message(x_return_status);
1775 --
1776 -- Debug Statements
1777 --
1778 IF l_debug_on THEN
1779 WSH_DEBUG_SV.pop(l_module_name);
1780 END IF;
1781 --
1782 RETURN;
1783 END IF;
1784
1785 IF (l_volume IS NULL) or (l_volume = 0) or (l_vol_uom IS NULL) THEN
1786 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_LT_WT_VOL_MISSING');
1787 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1788 wsh_util_core.add_message(x_return_status);
1789 ELSE
1790 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1791 END IF;
1792
1793 --
1794 -- Debug Statements
1795 --
1796 IF l_debug_on THEN
1797 WSH_DEBUG_SV.pop(l_module_name);
1798 END IF;
1799 --
1800 EXCEPTION
1801 WHEN others THEN
1802 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_UNPLAN');
1803 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1804
1805 --
1806 -- Debug Statements
1807 --
1808 IF l_debug_on THEN
1809 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1810 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1811 END IF;
1812 --
1813 END Check_Tender_Load;
1814
1815
1816
1817
1818 -----------------------------------------------------------------------------
1819 --
1820 -- Procedure: Check_Assign_Trip
1821 -- Parameters: p_delivery_id, x_return_status
1822 -- Description: Checks for Assign Trip action pre-requisites which are
1823 -- - Delivery status is not CLOSED
1824 -- - Trip status is not CLOSED
1825 -- - Pickup Stop status is OPEN or ARRIVED
1826 -- - Pickup Stop sequence number is smaller than Dropoff Stop sequence number
1827 -- - If GROUP_BY_CARRIER_FLAG set then freight carrier same as that on trip [warning]
1828 -- - Delivery status is not IN-TRANSIT [warning]
1829 -- NOT YET IMPLEMENTED - If trip is Planned and has Vehicle information then no stops on the trip are over filled by addition of this delivery [warning]
1830
1831 --
1832 --Bug 2313077 :
1833 /*
1834 1. Report an error if Ship Method on Trip does not belong to Orgs of
1835 deliveries being assigned to the trip
1836 2. Ship Method LOV on the trip shows all available values for all Orgs
1837 on the trip
1838 3. If delivery Ship Method is different from Trips provide a warning
1839 when assigning to the trip (unless Del SM is null)
1840 */
1841 -----------------------------------------------------------------------------
1842
1843 PROCEDURE Check_Assign_Trip ( p_delivery_id IN NUMBER,
1844 p_trip_id IN NUMBER,
1845 p_pickup_stop_id IN NUMBER,
1846 p_dropoff_stop_id IN NUMBER,
1847 x_return_status OUT NOCOPY VARCHAR2) IS
1848
1849 CURSOR delivery_status IS
1850 SELECT status_code,
1851 organization_id,
1852 ship_method_code,
1853 nvl(shipment_direction,'O') shipment_direction, -- J-IB-NPARIKH
1854 nvl(ignore_for_planning, 'N') ignore_for_planning
1855 FROM wsh_new_deliveries
1856 WHERE delivery_id = p_delivery_id;
1857
1858 CURSOR trip_status IS
1859 SELECT status_code,ship_method_code, planned_flag,
1860 nvl(ignore_for_planning, 'N') ignore_for_planning
1861 FROM wsh_trips
1862 WHERE trip_id = p_trip_id;
1863
1864 /*
1865 CURSOR org_ship_method (l_organization_id NUMBER,l_ship_method_code VARCHAR2) IS
1866 SELECT ship_method_code
1867 FROM wsh_carrier_ship_methods
1868 WHERE organization_id=l_organization_id
1869 AND ship_method_code=l_ship_method_code;
1870 */
1871 --replace above cursor with the one below
1872 --when changes for carrier enhancements are being done
1873
1874 ---BUG No:4241880.Cursor changed
1875 CURSOR org_ship_method (l_organization_id NUMBER,l_ship_method_code VARCHAR2) IS
1876 SELECT ship_method_code
1877 FROM wsh_carrier_services wcs, wsh_org_carrier_services wocs
1878 WHERE wocs.organization_id=l_organization_id
1879 and wocs.carrier_service_id=wcs.carrier_service_id
1880 AND wcs.ship_method_code=l_ship_method_code;
1881 ---BUG No:4241880.Cursor changed ends
1882
1883 CURSOR stop_status (l_stop_id NUMBER) IS
1884 SELECT status_code,
1885 planned_arrival_date,
1886 planned_departure_date
1887 FROM wsh_trip_Stops
1888 WHERE stop_id = l_stop_id AND
1889 status_code <> 'OP';
1890
1891 l_del_status VARCHAR2(2);
1892 l_org_id NUMBER;
1893 l_del_ship_method VARCHAR2(30);
1894 l_shipment_direction VARCHAR2(30);
1895 l_trip_status VARCHAR2(2);
1896 l_trip_ship_method VARCHAR2(30);
1897 l_tmp_ship_method VARCHAR2(30);
1898
1899 l_trip_planflag VARCHAR2(1);
1900 l_trip_ignore VARCHAR2(1);
1901 l_del_ignore VARCHAR2(1);
1902 trip_diffignore EXCEPTION;
1903 trip_firm EXCEPTION;
1904
1905 l_stop_status VARCHAR2(2);
1906
1907 l_pickup_arr_date DATE;
1908 l_pickup_dep_date DATE;
1909 l_dropoff_arr_date DATE;
1910 l_dropoff_dep_date DATE;
1911
1912 l_group_by_attr wsh_delivery_autocreate.group_by_flags_rec_type;
1913 l_return_status VARCHAR2(1);
1914
1915 invalid_status EXCEPTION;
1916 INVALID_TRIPSHIPMETHOD_DEL_ORG EXCEPTION;
1917 INVALID_DEL_TRIP_SHIPMETHOD EXCEPTION;
1918
1919 others EXCEPTION;
1920
1921 --
1922 l_debug_on BOOLEAN;
1923 --
1924 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_ASSIGN_TRIP';
1925 --
1926 l_shipping_control VARCHAR2(30);
1927 l_routing_response_id NUMBER;
1928 l_routing_request_flag VARCHAR2(30);
1929 BEGIN
1930
1931 --
1932 -- Debug Statements
1933 --
1934 --
1935 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1936 --
1937 IF l_debug_on IS NULL
1938 THEN
1939 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1940 END IF;
1941 --
1942 IF l_debug_on THEN
1943 WSH_DEBUG_SV.push(l_module_name);
1944 --
1945 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
1946 WSH_DEBUG_SV.log(l_module_name,'P_TRIP_ID',P_TRIP_ID);
1947 WSH_DEBUG_SV.log(l_module_name,'P_PICKUP_STOP_ID',P_PICKUP_STOP_ID);
1948 WSH_DEBUG_SV.log(l_module_name,'P_DROPOFF_STOP_ID',P_DROPOFF_STOP_ID);
1949 END IF;
1950 --
1951 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1952
1953 OPEN delivery_status;
1954 FETCH delivery_status INTO l_del_status, l_org_id, l_del_ship_method, l_shipment_direction, l_del_ignore;
1955
1956 IF (delivery_status%NOTFOUND) THEN
1957 CLOSE delivery_status;
1958 raise others;
1959 END IF;
1960
1961 CLOSE delivery_status;
1962 --
1963 IF l_debug_on THEN
1964 wsh_debug_sv.log(l_module_name, 'l_del_status', l_del_status);
1965 wsh_debug_sv.log(l_module_name, 'l_shipment_direction', l_shipment_direction);
1966 wsh_debug_sv.log(l_module_name, 'l_del_ignore', l_del_ignore);
1967 END IF;
1968 --
1969
1970 /*
1971 -- J-IB-NPARIKH-{
1972 IF l_shipment_direction NOT IN ('O','IO')
1973 THEN
1974 --{
1975 IF l_debug_on THEN
1976 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit GET_SHIPPING_CONTROL',WSH_DEBUG_SV.C_PROC_LEVEL);
1977 END IF;
1978 --
1979 GET_SHIPPING_CONTROL
1980 (
1981 p_delivery_id => p_delivery_id,
1982 x_shipping_control => l_shipping_control,
1983 x_routing_response_id => l_routing_response_id,
1984 x_routing_request_flag => l_routing_request_flag,
1985 x_return_status => l_return_status
1986 );
1987 --
1988 --
1989 IF l_debug_on THEN
1990 wsh_debug_sv.log(l_module_name, 'l_return_status', l_return_status);
1991 wsh_debug_sv.log(l_module_name, 'l_shipping_control', l_shipping_control);
1992 wsh_debug_sv.log(l_module_name, 'l_routing_response_id', l_routing_response_id);
1993 wsh_debug_sv.log(l_module_name, 'l_routing_request_flag', l_routing_request_flag);
1994 --
1995 END IF;
1996 --
1997 --
1998 IF l_return_status = wsh_util_core.g_ret_sts_unexp_error THEN
1999 raise FND_API.G_EXC_UNEXPECTED_ERROR;
2000 ELSIF l_return_status = wsh_util_core.g_ret_sts_error THEN
2001 raise FND_API.G_EXC_ERROR;
2002 END IF;
2003 --
2004 --}
2005 END IF;
2006 --
2007 IF l_shipment_direction IN ('O','IO')
2008 OR l_shipping_control <> 'SUPPLIER'
2009 OR l_routing_request_flag <> 'N'
2010 THEN
2011 -- J-IB-NPARIKH-}
2012 --{
2013 */
2014 IF l_del_status = 'CL'
2015 THEN
2016 raise invalid_status;
2017 END IF;
2018 --
2019 -- TPA Change
2020 --
2021 -- Debug Statements
2022 --
2023 IF l_debug_on THEN
2024 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_DEL_NOT_I_T',WSH_DEBUG_SV.C_PROC_LEVEL);
2025 END IF;
2026 --
2027 wsh_tpa_delivery_pkg.check_del_not_i_t(p_delivery_id, l_del_status, l_return_status);
2028
2029 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2030 x_return_status := l_return_status;
2031 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
2032 --
2033 -- Debug Statements
2034 --
2035 IF l_debug_on THEN
2036 WSH_DEBUG_SV.pop(l_module_name);
2037 END IF;
2038 --
2039 RETURN;
2040 END IF;
2041 END IF;
2042 --}
2043 --END IF;
2044
2045
2046 OPEN trip_status;
2047 FETCH trip_status INTO l_trip_status, l_trip_ship_method, l_trip_planflag, l_trip_ignore;
2048
2049 IF (trip_status%NOTFOUND) THEN
2050 CLOSE trip_status;
2051 raise others;
2052 END IF;
2053
2054 CLOSE trip_status;
2055
2056 IF l_debug_on THEN
2057 wsh_debug_sv.log(l_module_name, 'l_trip_planflag', l_trip_planflag);
2058 wsh_debug_sv.log(l_module_name, 'l_trip_ignore', l_trip_ignore);
2059 END IF;
2060
2061 IF l_trip_planflag='F' THEN
2062 raise trip_firm;
2063 END IF;
2064
2065 IF l_trip_ignore <> l_del_ignore THEN
2066 raise trip_diffignore;
2067 END IF;
2068
2069 IF (l_trip_status = 'CL')
2070 THEN
2071 --{
2072 raise invalid_status;
2073
2074 /*
2075 -- J-IB-NPARIKH-{
2076 IF l_shipment_direction IN ('O','IO')
2077 THEN
2078 raise invalid_status;
2079 ELSIF l_shipping_control = 'SUPPLIER'
2080 OR l_routing_request_flag = 'N'
2081 THEN
2082 IF l_del_status <> 'CL'
2083 THEN
2084 raise invalid_status;
2085 END IF;
2086 ELSE
2087 raise invalid_status;
2088 END IF;
2089 -- J-IB-NPARIKH-}
2090 */
2091 --}
2092 END IF;
2093
2094 if (l_trip_ship_method is not null) then
2095 OPEN org_ship_method(l_org_id, l_trip_ship_method);
2096 FETCH org_ship_method INTO l_tmp_ship_method;
2097
2098 IF (org_ship_method%NOTFOUND) THEN
2099 CLOSE org_ship_method;
2100 raise invalid_tripshipmethod_del_org;
2101 END IF;
2102 CLOSE org_ship_method;
2103 end if;
2104
2105 IF (l_del_ship_method is not null and l_trip_ship_method is not null
2106 and l_del_ship_method <> l_trip_ship_method) THEN
2107 raise invalid_del_trip_shipmethod;
2108 END IF;
2109
2110
2111 --
2112 -- Debug Statements
2113 --
2114 IF l_debug_on THEN
2115 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_AUTOCREATE.GET_GROUP_BY_ATTR',WSH_DEBUG_SV.C_PROC_LEVEL);
2116 END IF;
2117 --
2118 wsh_delivery_autocreate.get_group_by_attr( p_organization_id => l_org_id,
2119 x_group_by_flags => l_group_by_attr,
2120 x_return_status => l_return_status);
2121
2122 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2123 x_return_status := l_return_status;
2124 --
2125 -- Debug Statements
2126 --
2127 IF l_debug_on THEN
2128 WSH_DEBUG_SV.pop(l_module_name);
2129 END IF;
2130 --
2131 RETURN;
2132 END IF;
2133
2134 IF (l_group_by_attr.ship_method = 'Y') AND (l_trip_ship_method <> l_del_ship_method) THEN
2135 FND_MESSAGE.SET_NAME('WSH','WSH_TRIP_SHIP_METHOD_NOT_SAME');
2136 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2137 wsh_util_core.add_message(x_return_status);
2138 END IF;
2139
2140 IF (p_pickup_stop_id IS NOT NULL) THEN
2141
2142 OPEN stop_status (p_pickup_stop_id);
2143 FETCH stop_status INTO l_stop_status, l_pickup_arr_date, l_pickup_dep_date;
2144
2145 IF (stop_status%FOUND) THEN
2146 CLOSE stop_status;
2147 --
2148
2149 raise invalid_status;
2150
2151 /*
2152 -- J-IB-NPARIKH-{
2153 IF l_shipment_direction IN ('O','IO')
2154 THEN
2155 raise invalid_status;
2156 ELSIF l_shipping_control = 'SUPPLIER'
2157 OR l_routing_request_flag = 'N'
2158 THEN
2159 IF l_del_status NOT IN ('IT', 'CL')
2160 THEN
2161 raise invalid_status;
2162 END IF;
2163 ELSE
2164 raise invalid_status;
2165 END IF;
2166 -- J-IB-NPARIKH-}
2167 */
2168 END IF;
2169 CLOSE stop_status;
2170
2171 END IF;
2172
2173 IF (p_dropoff_stop_id IS NOT NULL) THEN
2174
2175 OPEN stop_status (p_dropoff_stop_id);
2176 FETCH stop_status INTO l_stop_status, l_dropoff_arr_date, l_dropoff_dep_date;
2177
2178 IF (stop_status%FOUND) THEN
2179 CLOSE stop_status;
2180 raise invalid_status;
2181
2182 /*
2183 --
2184 -- J-IB-NPARIKH-{
2185 IF l_shipment_direction IN ('O','IO')
2186 THEN
2187 raise invalid_status;
2188 ELSIF l_shipping_control = 'SUPPLIER'
2189 OR l_routing_request_flag = 'N'
2190 THEN
2191 IF l_del_status NOT IN ('IT', 'CL')
2192 THEN
2193 raise invalid_status;
2194 END IF;
2195 ELSE
2196 raise invalid_status;
2197 END IF;
2198 -- J-IB-NPARIKH-}
2199 */
2200
2201 END IF;
2202
2203 CLOSE stop_status;
2204
2205 END IF;
2206
2207 --
2208 -- Debug Statements
2209 --
2210 IF l_debug_on THEN
2211 WSH_DEBUG_SV.pop(l_module_name);
2212 END IF;
2213 --
2214 EXCEPTION
2215 -- J-IB-NPARIKH-{
2216 --
2217 WHEN FND_API.G_EXC_ERROR THEN
2218
2219 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2220 --
2221 IF l_debug_on THEN
2222 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2223 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
2224 END IF;
2225 --
2226 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2227
2228 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
2229 --
2230 IF l_debug_on THEN
2231 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2232 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
2233 END IF;
2234 --
2235 -- J-IB-NPARIKH-}
2236
2237
2238
2239 WHEN invalid_del_trip_shipmethod THEN
2240 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_SHIP');
2241 --
2242 -- Debug Statements
2243 --
2244 IF l_debug_on THEN
2245 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2246 END IF;
2247 --
2248 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2249 --
2250 -- Debug Statements
2251 --
2252 IF l_debug_on THEN
2253 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2254 END IF;
2255 --
2256 FND_MESSAGE.SET_TOKEN('TRIP_NAME',wsh_trips_pvt.get_name(p_trip_id));
2257 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2258 wsh_util_core.add_message(x_return_status);
2259
2260 --
2261 -- Debug Statements
2262 --
2263 IF l_debug_on THEN
2264 WSH_DEBUG_SV.logmsg(l_module_name,'INVALID_DEL_TRIP_SHIPMETHOD exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2265 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:INVALID_DEL_TRIP_SHIPMETHOD');
2266 END IF;
2267 --
2268 WHEN invalid_tripshipmethod_del_org THEN
2269 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_SM_ORG');
2270 --
2271 -- Debug Statements
2272 --
2273 IF l_debug_on THEN
2274 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2275 END IF;
2276 --
2277 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2278 --
2279 -- Debug Statements
2280 --
2281 IF l_debug_on THEN
2282 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2283 END IF;
2284 --
2285 FND_MESSAGE.SET_TOKEN('TRIP_NAME',wsh_trips_pvt.get_name(p_trip_id));
2286 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2287 wsh_util_core.add_message(x_return_status);
2288
2289 --
2290 -- Debug Statements
2291 --
2292 IF l_debug_on THEN
2293 WSH_DEBUG_SV.logmsg(l_module_name,'INVALID_TRIPSHIPMETHOD_DEL_ORG exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2294 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:INVALID_TRIPSHIPMETHOD_DEL_ORG');
2295 END IF;
2296 --
2297 WHEN invalid_status THEN
2298 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_STATUS');
2299 --
2300 -- Debug Statements
2301 --
2302 IF l_debug_on THEN
2303 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2304 END IF;
2305 --
2306 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2307 --
2308 -- Debug Statements
2309 --
2310 IF l_debug_on THEN
2311 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2312 END IF;
2313 --
2314 FND_MESSAGE.SET_TOKEN('TRIP_NAME',wsh_trips_pvt.get_name(p_trip_id));
2315 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2316 wsh_util_core.add_message(x_return_status);
2317
2318 --
2319 -- Debug Statements
2320 --
2321 IF l_debug_on THEN
2322 WSH_DEBUG_SV.logmsg(l_module_name,'INVALID_STATUS exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2323 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:INVALID_STATUS');
2324 END IF;
2325 --
2326
2327 WHEN trip_firm THEN
2328 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_FIRM');
2329 IF l_debug_on THEN
2330 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2331 END IF;
2332 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2333 IF l_debug_on THEN
2334 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2335 END IF;
2336 FND_MESSAGE.SET_TOKEN('TRIP_NAME',wsh_trips_pvt.get_name(p_trip_id));
2337 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2338 wsh_util_core.add_message(x_return_status);
2339 IF l_debug_on THEN
2340 WSH_DEBUG_SV.logmsg(l_module_name,'TRIP_FIRM exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2341 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:TRIP_FIRM');
2342 END IF;
2343 WHEN trip_diffignore THEN
2344 FND_MESSAGE.SET_NAME('WSH','WSH_DELASSIGNTR_IGNORE');
2345 IF l_debug_on THEN
2346 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2347 END IF;
2348 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2349 IF l_debug_on THEN
2350 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TRIPS_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2351 END IF;
2352 FND_MESSAGE.SET_TOKEN('TRIP_NAME',wsh_trips_pvt.get_name(p_trip_id));
2353 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2354 wsh_util_core.add_message(x_return_status);
2355 IF l_debug_on THEN
2356 WSH_DEBUG_SV.logmsg(l_module_name,'TRIP_DIFFIGNORE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2357 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:TRIP_DIFFIGNORE');
2358 END IF;
2359
2360 WHEN others THEN
2361 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_ASSIGN_TRIP');
2362 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2363
2364 --
2365 -- Debug Statements
2366 --
2367 IF l_debug_on THEN
2368 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2369 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
2370 END IF;
2371 --
2372 END Check_Assign_Trip;
2373
2374
2375 /* ******** Commented this out for bug 2554849
2376 -----------------------------------------------------------------------------
2377 --
2378 -- Procedure: Check_Unassign_Trip
2379 -- Parameters: p_delivery_id, x_return_status
2380 -- Description: Checks for Unassign Trip action pre-requisites which are
2381 -- - Delivery status is not CLOSED
2382 -- - Trip status is not CLOSED
2383 -- - Delivery status is not IN-TRANSIT [warning]
2384 -- NOT YET IMPLEMENTED - If trip is Planned and has Vehicle information then no stops on the trip are under filled by removal of this delivery [warning]
2385 -- - No Bill of Lading is assigned to this delivery for this trip [warning] NOTE: this warning will inform the user that all Bill of Ladings will be deleted.
2386 --
2387 -----------------------------------------------------------------------------
2388
2389 PROCEDURE Check_Unassign_Trip ( p_delivery_id IN NUMBER,
2390 p_trip_id IN NUMBER,
2391 x_return_status OUT NOCOPY VARCHAR2) IS
2392
2393 CURSOR delivery_status IS
2394 SELECT status_code
2395 FROM wsh_new_deliveries
2396 WHERE delivery_id = p_delivery_id;
2397
2398 CURSOR trip_status IS
2399 SELECT status_code
2400 FROM wsh_trips
2401 WHERE trip_id = p_trip_id;
2402
2403 l_del_status VARCHAR2(2);
2404 l_trip_status VARCHAR2(2);
2405 others EXCEPTION;
2406
2407 --
2408 l_debug_on BOOLEAN;
2409 --
2410 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_UNASSIGN_TRIP';
2411 --
2412 BEGIN
2413
2414 --
2415 -- Debug Statements
2416 --
2417 --
2418 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2419 --
2420 IF l_debug_on IS NULL
2421 THEN
2422 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2423 END IF;
2424 --
2425 IF l_debug_on THEN
2426 WSH_DEBUG_SV.push(l_module_name);
2427 --
2428 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
2429 WSH_DEBUG_SV.log(l_module_name,'P_TRIP_ID',P_TRIP_ID);
2430 END IF;
2431 --
2432 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2433
2434 OPEN delivery_status;
2435 FETCH delivery_status INTO l_del_status;
2436
2437 IF (delivery_status%NOTFOUND) THEN
2438 CLOSE delivery_status;
2439 raise others;
2440 END IF;
2441
2442 CLOSE delivery_status;
2443
2444 IF (l_del_status = 'CL') THEN
2445 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_STATUS');
2446 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2447 wsh_util_core.add_message(x_return_status);
2448 --
2449 -- Debug Statements
2450 --
2451 IF l_debug_on THEN
2452 WSH_DEBUG_SV.pop(l_module_name);
2453 END IF;
2454 --
2455 RETURN;
2456 END IF;
2457
2458 -- TPA Change
2459 --
2460 -- Debug Statements
2461 --
2462 IF l_debug_on THEN
2463 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_DEL_NOT_I_T',WSH_DEBUG_SV.C_PROC_LEVEL);
2464 END IF;
2465 --
2466 wsh_tpa_delivery_pkg.check_del_not_i_t(p_delivery_id, l_del_status, x_return_status);
2467
2468 IF (x_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) OR (x_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR) THEN
2469 --
2470 -- Debug Statements
2471 --
2472 IF l_debug_on THEN
2473 WSH_DEBUG_SV.pop(l_module_name);
2474 END IF;
2475 --
2476 RETURN;
2477 END IF;
2478
2479 OPEN trip_status;
2480 FETCH trip_status INTO l_trip_status;
2481
2482 IF (trip_status%NOTFOUND) THEN
2483 CLOSE trip_status;
2484 raise others;
2485 END IF;
2486
2487 CLOSE trip_status;
2488
2489 IF (l_trip_status = 'CL') THEN
2490 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_TR_STATUS');
2491 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2492 wsh_util_core.add_message(x_return_status);
2493 --
2494 -- Debug Statements
2495 --
2496 IF l_debug_on THEN
2497 WSH_DEBUG_SV.pop(l_module_name);
2498 END IF;
2499 --
2500 RETURN;
2501 END IF;
2502
2503 -- TO DO: Implement document instances checks
2504
2505 --
2506 -- Debug Statements
2507 --
2508 IF l_debug_on THEN
2509 WSH_DEBUG_SV.pop(l_module_name);
2510 END IF;
2511 --
2512 EXCEPTION
2513 WHEN others THEN
2514 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_ASSIGN_TRIP');
2515 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2516
2517 --
2518 -- Debug Statements
2519 --
2520 IF l_debug_on THEN
2521 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2522 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
2523 END IF;
2524 --
2525 END Check_Unassign_Trip;
2526 ************ */
2527
2528
2529 -----------------------------------------------------------------------------
2530 --
2531 -- Procedure: Check_Pack
2532 -- Parameters: p_delivery_id, x_return_status
2533 -- Description: Checks for Pack action pre-requisites which are
2534 -- - Delivery status is OPEN
2535 -- - At least one line is assigned to delivery
2536 -- - All items being shipped on this delivery are packed in containers
2537 -- NOT YET IMPLEMENTED (JESSICA) - Details (shipped quantity, inventory controls ) must be specified for all delivery lines
2538 -- NOT YET IMPLEMENTED - Containers assigned to the delivery are not over/under packed [warning]
2539 --
2540 -----------------------------------------------------------------------------
2541
2542 PROCEDURE Check_Pack ( p_delivery_id IN NUMBER,
2543 x_return_status OUT NOCOPY VARCHAR2) IS
2544
2545 CURSOR delivery_status IS
2546 SELECT status_code
2547 FROM wsh_new_deliveries
2548 WHERE delivery_id = p_delivery_id;
2549
2550 CURSOR detail_info IS
2551 SELECT da.parent_delivery_detail_id
2552 FROM wsh_delivery_assignments_v da,
2553 wsh_delivery_details dd
2554 WHERE dd.delivery_detail_id = da.delivery_detail_id AND
2555 da.delivery_id = p_delivery_id AND
2556 da.delivery_id IS NOT NULL AND
2557 dd.container_flag = 'N';
2558
2559 l_container_id NUMBER;
2560 l_count_detail NUMBER := 0;
2561 l_del_status VARCHAR2(2);
2562 l_fill_status VARCHAR2(1);
2563 l_return_status VARCHAR2(1);
2564
2565 l_underfilled_flag BOOLEAN := FALSE;
2566 l_overfilled_flag BOOLEAN := FALSE;
2567
2568 others EXCEPTION;
2569
2570 --
2571 l_debug_on BOOLEAN;
2572 --
2573 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_PACK';
2574 --
2575 BEGIN
2576
2577 --
2578 -- Debug Statements
2579 --
2580 --
2581 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2582 --
2583 IF l_debug_on IS NULL
2584 THEN
2585 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2586 END IF;
2587 --
2588 IF l_debug_on THEN
2589 WSH_DEBUG_SV.push(l_module_name);
2590 --
2591 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
2592 END IF;
2593 --
2594 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2595
2596 OPEN delivery_status;
2597 FETCH delivery_status INTO l_del_status;
2598
2599 IF (delivery_status%NOTFOUND) THEN
2600 CLOSE delivery_status;
2601 raise others;
2602 END IF;
2603
2604 CLOSE delivery_status;
2605
2606 IF (l_del_status = 'PA') THEN
2607 --
2608 -- Debug Statements
2609 --
2610 IF l_debug_on THEN
2611 WSH_DEBUG_SV.pop(l_module_name);
2612 END IF;
2613 --
2614 RETURN;
2615 END IF;
2616
2617 IF (l_del_status NOT IN ('OP', 'SA')) THEN -- sperera 940/945
2618 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NOT_OP_PA_STATUS');
2619 --
2620 -- Debug Statements
2621 --
2622 IF l_debug_on THEN
2623 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2624 END IF;
2625 --
2626 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2627 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2628 wsh_util_core.add_message(x_return_status);
2629 --
2630 -- Debug Statements
2631 --
2632 IF l_debug_on THEN
2633 WSH_DEBUG_SV.pop(l_module_name);
2634 END IF;
2635 --
2636 RETURN;
2637 END IF;
2638
2639 OPEN detail_info;
2640
2641 LOOP
2642
2643 l_container_id := NULL;
2644
2645 FETCH detail_info INTO l_container_id;
2646 EXIT WHEN detail_info%NOTFOUND;
2647
2648 --IF (detail_info%FOUND) THEN
2649 IF (l_container_id IS NULL) THEN
2650 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_PACK_ITEMS_UNPACKED');
2651 --
2652 -- Debug Statements
2653 --
2654 IF l_debug_on THEN
2655 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2656 END IF;
2657 --
2658 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2659 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2660 wsh_util_core.add_message(x_return_status);
2661 --
2662 -- Debug Statements
2663 --
2664 IF l_debug_on THEN
2665 WSH_DEBUG_SV.pop(l_module_name);
2666 END IF;
2667 --
2668 RETURN;
2669 END IF;
2670
2671 --
2672 -- Debug Statements
2673 --
2674 IF l_debug_on THEN
2675 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_WV_UTILS.CHECK_FILL_PC',WSH_DEBUG_SV.C_PROC_LEVEL);
2676 END IF;
2677 --
2678 wsh_wv_utils.check_fill_pc( p_container_instance_id => l_container_id,
2679 x_fill_status => l_fill_status,
2680 x_return_status => l_return_status);
2681 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2682 -- FND_MESSAGE.SET_NAME('WSH','Error-in-fill-percent');
2683 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2684 -- wsh_util_core.add_message(x_return_status);
2685 ELSIF (l_fill_status = 'U') THEN
2686 l_underfilled_flag := TRUE;
2687 ELSIF (l_fill_status = 'O') THEN
2688 l_overfilled_flag := TRUE;
2689 END IF;
2690
2691 --END IF;
2692
2693 l_count_detail := l_count_detail + 1;
2694
2695 END LOOP;
2696 CLOSE detail_info;
2697
2698 IF (l_overfilled_flag) THEN
2699 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_CONT_OVERPACKED');
2700 --
2701 -- Debug Statements
2702 --
2703 IF l_debug_on THEN
2704 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2705 END IF;
2706 --
2707 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2708 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2709 wsh_util_core.add_message(x_return_status);
2710 END IF;
2711
2712 IF (l_underfilled_flag) THEN
2713 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_CONT_UNDERPACKED');
2714 --
2715 -- Debug Statements
2716 --
2717 IF l_debug_on THEN
2718 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2719 END IF;
2720 --
2721 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2722 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2723 wsh_util_core.add_message(x_return_status);
2724 END IF;
2725
2726 --IF (l_container_id IS NULL) THEN
2727 IF (l_count_detail = 0) THEN /*Bug #1701366 Issue 3 */
2728 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NO_DETAILS');
2729 --
2730 -- Debug Statements
2731 --
2732 IF l_debug_on THEN
2733 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
2734 END IF;
2735 --
2736 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
2737 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2738 wsh_util_core.add_message(x_return_status);
2739 --
2740 -- Debug Statements
2741 --
2742 IF l_debug_on THEN
2743 WSH_DEBUG_SV.pop(l_module_name);
2744 END IF;
2745 --
2746 RETURN;
2747 END IF;
2748
2749 --
2750 -- Debug Statements
2751 --
2752 IF l_debug_on THEN
2753 WSH_DEBUG_SV.pop(l_module_name);
2754 END IF;
2755 --
2756 EXCEPTION
2757 WHEN others THEN
2758 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_PACK');
2759 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2760
2761 --
2762 -- Debug Statements
2763 --
2764 IF l_debug_on THEN
2765 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2766 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
2767 END IF;
2768 --
2769 END Check_Pack;
2770
2771 -----------------------------------------------------------------------------
2772 --
2773 -- Procedure: Check_Detail_for_Confirm
2774 -- Parameters: p_detail_id, p_check_credit_init_flag, x_line_inv_flag_rec, x_return_status
2775 -- Description: Checks for Confirm action pre-requisites which are
2776 -- Check for inventory controls
2777 -- Check for credit and holds
2778 -- NOT YET IMPLEMENTED Check for exceptions
2779 --
2780 -----------------------------------------------------------------------------
2781 PROCEDURE Check_Detail_for_Confirm ( p_detail_id IN NUMBER,
2782 p_check_credit_init_flag IN BOOLEAN, -- 2343058
2783 x_line_inv_flag_rec OUT NOCOPY wsh_delivery_details_inv.inv_control_flag_rec,
2784 x_return_status OUT NOCOPY VARCHAR2) IS
2785
2786 CURSOR detail_info IS
2787 SELECT delivery_detail_id,
2788 inventory_item_id,
2789 shipped_quantity,
2790 requested_quantity,
2791 NULL,
2792 revision,
2793 subinventory,
2794 lot_number,
2795 locator_id,
2796 NULL,
2797 serial_number,
2798 NULL,
2799 transaction_temp_id,
2800 organization_id,
2801 source_line_id,
2802 source_header_id,
2803 source_code,
2804 picked_quantity,
2805 picked_quantity2,
2806 requested_quantity_uom,
2807 requested_quantity_uom2,
2808 line_direction
2809 FROM wsh_delivery_details
2810 WHERE delivery_detail_id = p_detail_id;
2811
2812
2813 /************************MATERIAL STATUS CONTROL ********/
2814 CURSOR C_GET_SERIAL (l_transaction_temp_id NUMBER) IS
2815 SELECT fm_serial_number,nvl(to_serial_number,fm_serial_number)
2816 from MTL_SERIAL_NUMBERS_TEMP
2817 where transaction_temp_id = l_transaction_temp_id;
2818
2819 l_prefix VARCHAR2(10);
2820 l_result BOOLEAN;
2821 l_valid_serial_range NUMBER;
2822 l_org INV_VALIDATE.org;
2823 l_item INV_VALIDATE.item;
2824 l_lot INV_VALIDATE.lot;
2825 l_locator INV_VALIDATE.locator;
2826 l_sub INV_VALIDATE.sub;
2827
2828 p_fm_serial INV_VALIDATE.SERIAL_NUMBER_TBL;
2829 p_to_serial INV_VALIDATE.SERIAL_NUMBER_TBL;
2830 x_errored_serials INV_VALIDATE.SERIAL_NUMBER_TBL;
2831
2832 /************************MATERIAL STATUS CONTROL ********/
2833
2834 l_line_inv_rec wsh_delivery_details_inv.line_inv_info;
2835 g_line_inv_rec wsh_delivery_details_inv.line_inv_info;
2836 l_line_inv_flag_rec wsh_delivery_details_inv.inv_control_flag_rec;
2837 l_details_flag BOOLEAN;
2838
2839 l_source_line_id NUMBER;
2840 l_source_header_id NUMBER;
2841 l_source_code WSH_DELIVERY_DETAILS.SOURCE_CODE%TYPE;
2842 l_picked_quantity2 NUMBER;
2843 l_temp_status VARCHAR2(1);
2844 l_transaction_type_id NUMBER;
2845 l_wms_enabled VARCHAR2(10);
2846 --
2847 l_debug_on BOOLEAN;
2848 --
2849 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DETAIL_FOR_CONFIRM';
2850 --
2851 BEGIN
2852
2853 --
2854 -- Debug Statements
2855 --
2856 --
2857 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2858 --
2859 IF l_debug_on IS NULL
2860 THEN
2861 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2862 END IF;
2863 --
2864 IF l_debug_on THEN
2865 WSH_DEBUG_SV.push(l_module_name);
2866 --
2867 WSH_DEBUG_SV.log(l_module_name,'P_DETAIL_ID',P_DETAIL_ID);
2868 WSH_DEBUG_SV.log(l_module_name,'P_CHECK_CREDIT_INIT_FLAG',P_CHECK_CREDIT_INIT_FLAG);
2869 END IF;
2870 --
2871 OPEN detail_info;
2872 FETCH detail_info INTO l_line_inv_rec.delivery_detail_id,
2873 l_line_inv_rec.inventory_item_id,
2874 l_line_inv_rec.shp_qty,
2875 l_line_inv_rec.req_qty,
2876 l_line_inv_rec.ser_qty,
2877 l_line_inv_rec.revision,
2878 l_line_inv_rec.subinventory,
2879 l_line_inv_rec.lot_number,
2880 l_line_inv_rec.locator_id,
2881 l_line_inv_rec.locator_control_code,
2882 l_line_inv_rec.serial_number,
2883 l_line_inv_rec.serial_number_control_code,
2884 l_line_inv_rec.transaction_temp_id,
2885 l_line_inv_rec.organization_id,
2886 l_line_inv_rec.source_line_id,
2887 l_line_inv_rec.source_header_id,
2888 l_line_inv_rec.source_code,
2889 l_line_inv_rec.picked_quantity,
2890 l_line_inv_rec.picked_quantity2,
2891 l_line_inv_rec.requested_quantity_uom,
2892 l_line_inv_rec.requested_quantity_uom2,
2893 l_line_inv_rec.line_direction;
2894 CLOSE detail_info;
2895
2896 -- bug 2343058
2897 IF (p_check_credit_init_flag) THEN
2898 --
2899 -- Debug Statements
2900 --
2901 IF l_debug_on THEN
2902 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DETAILS_VALIDATIONS.CHECK_CREDIT_HOLDS',WSH_DEBUG_SV.C_PROC_LEVEL);
2903 END IF;
2904 --
2905 wsh_details_validations.check_credit_holds(
2906 p_detail_id => p_detail_id,
2907 p_activity_type => 'SHIP',
2908 p_source_line_id => l_line_inv_rec.source_line_id,
2909 p_source_header_id => l_line_inv_rec.source_header_id,
2910 p_source_code => l_line_inv_rec.source_code,
2911 p_init_flag => 'Y',
2912 x_return_status => x_return_status);
2913 ELSE
2914 --
2915 -- Debug Statements
2916 --
2917 IF l_debug_on THEN
2918 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DETAILS_VALIDATIONS.CHECK_CREDIT_HOLDS',WSH_DEBUG_SV.C_PROC_LEVEL);
2919 END IF;
2920 --
2921 wsh_details_validations.check_credit_holds(
2922 p_detail_id => p_detail_id,
2923 p_activity_type => 'SHIP',
2924 p_source_line_id => l_line_inv_rec.source_line_id,
2925 p_source_header_id => l_line_inv_rec.source_header_id,
2926 p_source_code => l_line_inv_rec.source_code,
2927 p_init_flag => 'N',
2928 x_return_status => x_return_status);
2929 END IF;
2930
2931 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2932
2933 --
2934 -- Debug Statements
2935 --
2936 IF l_debug_on THEN
2937 WSH_DEBUG_SV.pop(l_module_name);
2938 END IF;
2939 --
2940 RETURN;
2941 END IF;
2942
2943
2944 -- Pack J Catch Weights
2945 -- Call wrapper API to default catchweight if null.
2946 -- If required and not defaulted raise error.
2947
2948 IF
2949 (wsh_util_validate.Check_Wms_Org(l_line_inv_rec.organization_id) = 'Y')
2950 AND (NVL(l_line_inv_rec.picked_quantity2,0) = 0) THEN
2951
2952
2953 IF l_debug_on THEN
2954 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_DETAILS_INV.Check_Default_Catch_Weights',WSH_DEBUG_SV.C_PROC_LEVEL);
2955 END IF;
2956
2957 WSH_DELIVERY_DETAILS_INV.Check_Default_Catch_Weights
2958 (p_line_inv_rec => l_line_inv_rec,
2959 x_return_status => x_return_status);
2960
2961 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2962
2963 IF l_debug_on THEN
2964 WSH_DEBUG_SV.pop(l_module_name);
2965 END IF;
2966
2967 RETURN;
2968
2969 END IF;
2970
2971 END IF;
2972
2973 /* Bug fix 2850555
2974 Initializing the new flag 'details_required_flag' to Y
2975 Flag will be set to 'N' after call to 'details_required' API, if
2976 the details are really not required */
2977
2978 x_line_inv_flag_rec.details_required_flag := 'Y';
2979
2980 --
2981 -- Debug Statements
2982 --
2983 IF l_debug_on THEN
2984 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_DETAILS_INV.FETCH_INV_CONTROLS',WSH_DEBUG_SV.C_PROC_LEVEL);
2985 END IF;
2986 --
2987 wsh_delivery_details_inv.fetch_inv_controls(
2988 p_delivery_detail_id => l_line_inv_rec.delivery_detail_id,
2989 p_inventory_item_id => l_line_inv_rec.inventory_item_id,
2990 p_organization_id => l_line_inv_rec.organization_id,
2991 p_subinventory => l_line_inv_rec.subinventory,
2992 x_inv_controls_rec => l_line_inv_flag_rec,
2993 x_return_status => x_return_status);
2994
2995 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2996 --
2997 -- Debug Statements
2998 --
2999 IF l_debug_on THEN
3000 WSH_DEBUG_SV.pop(l_module_name);
3001 END IF;
3002 --
3003 RETURN;
3004 END IF;
3005
3006 l_line_inv_rec.serial_number_control_code := l_line_inv_flag_rec.serial_code;
3007 l_line_inv_rec.locator_control_code := l_line_inv_flag_rec.location_control_code;
3008
3009 --
3010 -- Debug Statements
3011 --
3012 IF l_debug_on THEN
3013 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_DETAILS_INV.DETAILS_REQUIRED',WSH_DEBUG_SV.C_PROC_LEVEL);
3014 END IF;
3015 --
3016 wsh_delivery_details_inv.Details_Required (
3017 p_line_inv_rec => l_line_inv_rec,
3018 p_set_default => FALSE,
3019 x_line_inv_rec => g_line_inv_rec,
3020 x_details_required => l_details_flag,
3021 x_return_status => x_return_status);
3022
3023 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3024 --
3025 -- Debug Statements
3026 --
3027 IF l_debug_on THEN
3028 WSH_DEBUG_SV.pop(l_module_name);
3029 END IF;
3030 --
3031 RETURN;
3032 END IF;
3033
3034 IF (l_details_flag) THEN
3035
3036 /* Bug fix 2850555
3037 Set the new flag 'details_required_flag' to Y , when l_details_flag
3038 is TRUE after the call to details_required API.
3039 */
3040
3041 l_line_inv_flag_rec.details_required_flag := 'Y';
3042 --
3043 -- Debug Statements
3044 --
3045 IF l_debug_on THEN
3046 WSH_DEBUG_SV.logmsg(l_module_name, 'DETAILS REQUIRED ERROR ' || X_RETURN_STATUS );
3047 END IF;
3048 --
3049 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3050 ELSE
3051 /* Bug fix 2850555
3052 Set the new flag 'details_required_flag' to N , when l_details_flag
3053 is FALSE after the call to details_required API.
3054 */
3055 l_line_inv_flag_rec.details_required_flag := 'N';
3056 END IF;
3057 x_line_inv_flag_rec := l_line_inv_flag_rec ;
3058
3059 IF l_debug_on THEN
3060 wsh_debug_sv.log(l_module_name, 'x_line_inv_flag_rec.details_required_flag', x_line_inv_flag_rec.details_required_flag);
3061 END IF;
3062
3063 /****************Material Status Control**************/
3064 IF l_line_inv_flag_rec.details_required_flag <> 'Y' THEN
3065
3066 select DECODE(wsh_util_validate.Check_Wms_Org(l_line_inv_rec.organization_id),'Y','TRUE','FALSE')
3067 into l_wms_enabled
3068 from dual;
3069
3070 WSH_DELIVERY_DETAILS_INV.get_trx_type_id(
3071 p_source_line_id => l_line_inv_rec.source_line_id,
3072 p_source_code => l_line_inv_rec.source_code,
3073 x_transaction_type_id => L_TRANSACTION_TYPE_ID ,
3074 x_return_status => x_return_status);
3075 IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
3076 IF l_debug_on THEN
3077 WSH_DEBUG_SV.pop(l_module_name);
3078 END IF;
3079 return;
3080 END IF;
3081
3082 IF (l_line_inv_rec.serial_number_control_code = 1) THEN
3083 l_temp_status := inv_material_status_grp.is_status_applicable(
3084 p_wms_installed => l_wms_enabled
3085 ,p_trx_status_enabled => NULL
3086 ,p_trx_type_id => L_TRANSACTION_TYPE_ID
3087 ,p_lot_status_enabled => NULL
3088 ,p_serial_status_enabled => NULL
3089 ,p_organization_id => l_line_inv_rec.organization_id
3090 ,p_inventory_item_id => l_line_inv_rec.inventory_item_id
3091 ,p_sub_code => l_line_inv_rec.subinventory
3092 ,p_locator_id => l_line_inv_rec.locator_id
3093 ,p_lot_number => l_line_inv_rec.lot_number
3094 ,p_serial_number => NULL
3095 ,p_object_type => 'A');
3096 IF l_temp_status <>'Y' THEN
3097 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3098 l_line_inv_flag_rec.invalid_material_status_flag := 'Y';
3099 x_line_inv_flag_rec := l_line_inv_flag_rec ;
3100 IF l_debug_on THEN
3101 WSH_DEBUG_SV.pop(l_module_name);
3102 END IF;
3103 return;
3104 END IF;
3105 ELSE
3106
3107 IF l_line_inv_rec.transaction_temp_id IS NOT NULL THEN
3108 OPEN C_GET_SERIAL (l_line_inv_rec.transaction_temp_id);
3109 FETCH C_GET_SERIAL BULK COLLECT
3110 INTO p_fm_serial,p_to_serial;
3111 CLOSE C_GET_SERIAL;
3112
3113 l_org.organization_id := l_line_inv_rec.organization_id;
3114 l_item.inventory_item_id := l_line_inv_rec.inventory_item_id;
3115 l_sub.secondary_inventory_name := l_line_inv_rec.subinventory;
3116 l_lot.lot_number := l_line_inv_rec.lot_number;
3117 l_locator.inventory_location_id := l_line_inv_rec.locator_id;
3118
3119 l_valid_serial_range := INV_VALIDATE.validate_serial_range(
3120 p_fm_serial => p_fm_serial,
3121 p_to_serial => p_to_serial,
3122 p_org => l_org,
3123 p_item => l_item ,
3124 p_from_sub => l_sub ,
3125 p_lot => l_lot,
3126 p_loc => l_locator,
3127 p_revision => l_line_inv_rec.revision,
3128 p_trx_type_id => L_TRANSACTION_TYPE_ID,
3129 p_object_type => 'A',
3130 x_errored_serials => x_errored_serials);
3131
3132 IF l_valid_serial_range <> 1 THEN
3133 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3134 l_line_inv_flag_rec.invalid_material_status_flag := 'Y';
3135 x_line_inv_flag_rec := l_line_inv_flag_rec ;
3136 FOR i in 1..x_errored_serials.count LOOP
3137 IF l_debug_on THEN
3138 wsh_debug_sv.log(l_module_name, 'errored serial_number'||to_char(i), x_errored_serials(i));
3139 END IF;
3140 END LOOP;
3141 IF l_debug_on THEN
3142 WSH_DEBUG_SV.pop(l_module_name);
3143 END IF;
3144 return;
3145 END IF;
3146
3147 ELSE
3148 WSH_DELIVERY_DETAILS_INV.Validate_Serial( p_serial_number => l_line_inv_rec.serial_number,
3149 p_lot_number => l_line_inv_rec.lot_number,
3150 p_organization_id => l_line_inv_rec.organization_id ,
3151 p_inventory_item_id => l_line_inv_rec.inventory_item_id ,
3152 p_subinventory => l_line_inv_rec.subinventory ,
3153 p_revision => l_line_inv_rec.revision,
3154 p_locator_id => l_line_inv_rec.locator_id,
3155 p_transaction_type_id => L_TRANSACTION_TYPE_ID,
3156 p_object_type => 'A',
3157 x_return_status => x_return_status ,
3158 x_result => l_result
3159 );
3160 IF l_result <> TRUE OR x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
3161 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3162 IF l_result <> TRUE THEN
3163 l_line_inv_flag_rec.invalid_material_status_flag := 'Y';
3164 END IF;
3165 x_line_inv_flag_rec := l_line_inv_flag_rec ;
3166 IF l_debug_on THEN
3167 WSH_DEBUG_SV.pop(l_module_name);
3168 END IF;
3169 return;
3170 END IF;
3171 END IF;
3172 l_line_inv_flag_rec.invalid_material_status_flag := 'N';
3173 x_line_inv_flag_rec := l_line_inv_flag_rec ;
3174 END IF;
3175 /****************Material Status Control**************/
3176 IF l_debug_on THEN
3177 wsh_debug_sv.log(l_module_name, 'x_line_inv_flag_rec.invalid_material_status_flag', x_line_inv_flag_rec.invalid_material_status_flag);
3178 END IF;
3179 END IF;
3180 IF l_debug_on THEN
3181 WSH_DEBUG_SV.pop(l_module_name);
3182 END IF;
3183 --
3184 EXCEPTION
3185 WHEN others THEN
3186 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DETAIL_FOR_CONFIRM');
3187 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3188
3189 IF C_GET_SERIAL%ISOPEN THEN
3190 CLOSE C_GET_SERIAL;
3191 END IF;
3192 --
3193 -- Debug Statements
3194 --
3195 IF l_debug_on THEN
3196 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3197 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3198 END IF;
3199 END Check_Detail_for_Confirm;
3200
3201
3202
3203 -----------------------------------------------------------------------------
3204 --
3205 -- Procedure: Check_Confirm
3206 -- Parameters: p_delivery_id, x_return_status
3207 -- Description: Checks for Confirm action pre-requisites which are
3208 -- - Delivery Status is OPEN or PACKED
3209 -- NOT YET IMPLEMENTED (JESSICA) - Details (shipped quantity, inventory controls ) must be specified for all delivery details (lines)
3210 -- - At least one delivery detail (line) is released
3211 -- - All delivery details (lines) are released [warning]
3212 -- - If delivery status is OPEN and containers are assigned to this delivery then all items being shipped on this delivery are packed [warning]
3213 -- - If delivery status is OPEN then containers for this delivery are not over/under packed [warning]
3214 -- - SMC models must be together [warning]
3215 -- - Ship Sets must be complete [warning]
3216 -- - Arrival Sets must be complete [warning]
3217 -- - Delivery flow on trip/s is valid [error/warning]
3218 --
3219 -----------------------------------------------------------------------------
3220
3221 PROCEDURE Check_Confirm ( p_delivery_id IN NUMBER,
3222 p_cont_exists_flag IN BOOLEAN,
3223 p_enforce_packing_flag IN VARCHAR2,
3224 p_overfilled_flag IN BOOLEAN,
3225 p_underfilled_flag IN BOOLEAN,
3226 p_ship_from_location IN NUMBER ,
3227 p_ship_to_location IN NUMBER ,
3228 p_freight_code IN VARCHAR2 ,
3229 p_organization_id IN NUMBER ,
3230 p_initial_pickup_date IN DATE ,
3231 p_ultimate_dropoff_date IN DATE ,
3232 p_actual_dep_date IN DATE ,
3233 x_return_status OUT NOCOPY VARCHAR2) IS
3234
3235
3236 l_unpacked_flag BOOLEAN;
3237 l_valid_flag BOOLEAN;
3238 l_return_status VARCHAR2(1);
3239
3240 -- Variables for trans cal check
3241
3242 l_ship_from_location NUMBER;
3243 l_ship_to_location NUMBER;
3244 --Bug 6156495 :Variable added
3245 l_temp_date DATE;
3246
3247
3248 record_locked EXCEPTION;
3249 PRAGMA EXCEPTION_INIT(record_locked, -54);
3250 others EXCEPTION;
3251
3252 l_ship_parameter WSH_SHIPPING_PARAMS_PVT.Parameter_Rec_Typ;
3253
3254
3255 --
3256 l_debug_on BOOLEAN;
3257 --
3258 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_CONFIRM';
3259 --
3260 -- Added for Ship Confirm Message Customization. R12
3261 l_custom_severity varchar2(10);
3262 l_activity_code varchar2(200) := 'SHIP_CONFIRM_MESSAGE' ;
3263 l_validation_code varchar2(200) := 'BREAK_SHIP_SET';
3264
3265 BEGIN
3266 --6156495 :Storing actual_departure_date in global variable so that it can be used again in the procedure 'CHECK_PLAN'
3267 G_ACT_DEPT_DATE := p_actual_dep_date;
3268
3269
3270 -- TPA Change
3271 --
3272 -- Debug Statements
3273 --
3274 --
3275 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3276 --
3277 IF l_debug_on IS NULL
3278 THEN
3279 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3280 END IF;
3281 --
3282 IF l_debug_on THEN
3283 WSH_DEBUG_SV.push(l_module_name);
3284 --
3285 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
3286 WSH_DEBUG_SV.log(l_module_name,'P_CONT_EXISTS_FLAG',P_CONT_EXISTS_FLAG);
3287 WSH_DEBUG_SV.log(l_module_name,'P_ENFORCE_PACKING_FLAG',P_ENFORCE_PACKING_FLAG);
3288 WSH_DEBUG_SV.log(l_module_name,'P_OVERFILLED_FLAG',P_OVERFILLED_FLAG);
3289 WSH_DEBUG_SV.log(l_module_name,'P_UNDERFILLED_FLAG',P_UNDERFILLED_FLAG);
3290 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_FROM_LOCATION',P_SHIP_FROM_LOCATION);
3291 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_TO_LOCATION',P_SHIP_TO_LOCATION);
3292 WSH_DEBUG_SV.log(l_module_name,'P_FREIGHT_CODE',P_FREIGHT_CODE);
3293 WSH_DEBUG_SV.log(l_module_name,'P_ORGANIZATION_ID',P_ORGANIZATION_ID);
3294 WSH_DEBUG_SV.log(l_module_name,'P_INITIAL_PICKUP_DATE',P_INITIAL_PICKUP_DATE);
3295 WSH_DEBUG_SV.log(l_module_name,'P_ULTIMATE_DROPOFF_DATE',P_ULTIMATE_DROPOFF_DATE);
3296 WSH_DEBUG_SV.log(l_module_name,'P_ACTUAL_DEP_DATE',P_ACTUAL_DEP_DATE);
3297 END IF;
3298 --
3299 --
3300 -- Debug Statements
3301 --
3302 IF l_debug_on THEN
3303 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_DEL_OVERFILLED',WSH_DEBUG_SV.C_PROC_LEVEL);
3304 END IF;
3305 --
3306 wsh_tpa_delivery_pkg.check_del_overfilled(p_delivery_id, p_cont_exists_flag, p_overfilled_flag, l_return_status);
3307
3308 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3309 x_return_status := l_return_status;
3310 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
3311 --
3312 -- Debug Statements
3313 --
3314 IF l_debug_on THEN
3315 WSH_DEBUG_SV.pop(l_module_name);
3316 END IF;
3317 --
3318 RETURN;
3319 END IF;
3320 END IF;
3321
3322 -- TPA Change
3323 --
3324 -- Debug Statements
3325 --
3326 IF l_debug_on THEN
3327 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_DEL_UNDERFILLED',WSH_DEBUG_SV.C_PROC_LEVEL);
3328 END IF;
3329 --
3330 wsh_tpa_delivery_pkg.check_del_underfilled(p_delivery_id, p_cont_exists_flag, p_underfilled_flag, l_return_status);
3331
3332 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3333 x_return_status := l_return_status;
3334 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
3335 --
3336 -- Debug Statements
3337 --
3338 IF l_debug_on THEN
3339 WSH_DEBUG_SV.pop(l_module_name);
3340 END IF;
3341 --
3342 RETURN;
3343 END IF;
3344 END IF;
3345
3346 -- TPA change
3347 --
3348 -- Debug Statements
3349 --
3350 IF l_debug_on THEN
3351 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_SMC',WSH_DEBUG_SV.C_PROC_LEVEL);
3352 END IF;
3353 --
3354 wsh_tpa_delivery_pkg.check_smc( p_delivery_id, l_valid_flag, l_return_status);
3355
3356 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3357 x_return_status := l_return_status;
3358 --
3359 -- Debug Statements
3360 --
3361 IF l_debug_on THEN
3362 WSH_DEBUG_SV.pop(l_module_name);
3363 END IF;
3364 --
3365 RETURN;
3366 END IF;
3367
3368 IF NOT (l_valid_flag) THEN
3369 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_SMC_INCOMPLETE');
3370 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
3371
3372 IF l_debug_on THEN
3373 WSH_DEBUG_SV.log(l_module_name,'g_break_smc_severity',g_break_smc_severity);
3374 END IF;
3375
3376 If g_break_smc_severity is NULL then
3377 g_break_smc_severity := wsh_ru_actions.get_message_severity (wsh_new_delivery_actions.g_ship_confirm_act
3378 ,wsh_new_delivery_actions.g_break_smc_msg);
3379 End If;
3380
3381 IF l_debug_on THEN
3382 WSH_DEBUG_SV.log(l_module_name,'g_break_smc_severity',g_break_smc_severity);
3383 END IF;
3384
3385 If g_break_smc_severity = 'E' then
3386 --Note. Setting return status to 'W' and message severity to 'E'. The return
3387 --status is checked in wsh_new_delivery_actions.confirm_delivery and treated
3388 --as error if WSH_NEW_DELIVERY_ACTIONS.g_break_ship_set_or_smc.count > 0.
3389 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
3390 WSH_UTIL_CORE.ADD_MESSAGE(WSH_UTIL_CORE.G_RET_STS_ERROR);
3391 WSH_NEW_DELIVERY_ACTIONS.g_break_ship_set_or_smc := nvl(WSH_NEW_DELIVERY_ACTIONS.g_break_ship_set_or_smc,0) + 1;
3392 IF l_debug_on THEN
3393 WSH_DEBUG_SV.log(l_module_name,'Going to exit wsh_delivery_validations due to message severity set to (SMC) ',g_break_smc_severity);
3394 WSH_DEBUG_SV.pop(l_module_name);
3395 END IF;
3396 RETURN;
3397 Else
3398 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
3399 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
3400 End If;
3401 END IF;
3402
3403 -- TPA change
3404 --
3405 -- Debug Statements
3406 --
3407 IF l_debug_on THEN
3408 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_SHIP_SET',WSH_DEBUG_SV.C_PROC_LEVEL);
3409 END IF;
3410 --
3411 wsh_tpa_delivery_pkg.check_ship_set( p_delivery_id, l_valid_flag, l_return_status);
3412
3413 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3414 x_return_status := l_return_status;
3415 --
3416 -- Debug Statements
3417 --
3418 IF l_debug_on THEN
3419 WSH_DEBUG_SV.pop(l_module_name);
3420 END IF;
3421 --
3422 RETURN;
3423 END IF;
3424
3425 IF NOT (l_valid_flag) THEN
3426 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_SHIP_SET_INCOMPLETE');
3427 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
3428
3429 IF l_debug_on THEN
3430 WSH_DEBUG_SV.log(l_module_name,'g_break_ship_set_severity',g_break_ship_set_severity);
3431 END IF;
3432
3433 If g_break_ship_set_severity is null then
3434 g_break_ship_set_severity := wsh_ru_actions.get_message_severity (wsh_new_delivery_actions.g_ship_confirm_act
3435 ,wsh_new_delivery_actions.g_break_ship_set_msg);
3436
3437 End If;
3438
3439 IF l_debug_on THEN
3440 WSH_DEBUG_SV.log(l_module_name,'g_break_ship_set_severity',g_break_ship_set_severity);
3441 END IF;
3442
3443 If g_break_ship_set_severity = 'E' then
3444 --Note. Setting return status to 'W' and message severity to 'E'. The return
3445 --status is checked in wsh_new_delivery_actions.confirm_delivery and treated
3446 --as error if WSH_NEW_DELIVERY_ACTIONS.g_break_ship_set_or_smc.count > 0.
3447 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
3448 WSH_UTIL_CORE.ADD_MESSAGE(WSH_UTIL_CORE.G_RET_STS_ERROR);
3449 WSH_NEW_DELIVERY_ACTIONS.g_break_ship_set_or_smc := nvl(WSH_NEW_DELIVERY_ACTIONS.g_break_ship_set_or_smc,0) + 1;
3450 IF l_debug_on THEN
3451 WSH_DEBUG_SV.log(l_module_name,'Going to exit wsh_delivery_validations due to message severity set to (ShipSet) ',g_break_ship_set_severity);
3452 WSH_DEBUG_SV.pop(l_module_name);
3453 END IF;
3454 RETURN;
3455 Else
3456 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
3457 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
3458 End If;
3459 END IF;
3460 /* H integration anxsharm */
3461
3462 -- REmoved call to update_leg_sequence here this is now done at the end of ship confirm.
3463 /** --
3464 -- Debug Statements
3465 --
3466 IF l_debug_on THEN
3467 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERY_ACTIONS.UPDATE_LEG_SEQUENCE',WSH_DEBUG_SV.C_PROC_LEVEL);
3468 END IF;
3469 --
3470 wsh_new_delivery_actions.update_leg_sequence(
3471 p_delivery_id => p_delivery_id,
3472 x_return_status => l_return_status);
3473
3474 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3475 x_return_status := l_return_status;
3476 --
3477 -- Debug Statements
3478 --
3479 IF l_debug_on THEN
3480 WSH_DEBUG_SV.pop(l_module_name);
3481 END IF;
3482 --
3483 RETURN;
3484 END IF;
3485 **/
3486 -- Check for transportation calendar requirements
3487
3488 -- TPA Change
3489 --
3490 -- Debug Statements
3491 --
3492 --Bug 6156495 (Determining the date to be passed to the API wsh_tpa_delivery_pkg.check_calendar)
3493 IF p_ultimate_dropoff_date > P_ACTUAL_DEP_DATE
3494 THEN
3495 l_temp_date := p_ultimate_dropoff_date;
3496 ELSE
3497 l_temp_date := P_ACTUAL_DEP_DATE;
3498 END IF;
3499 --Bug 6156495 -End of code addition
3500
3501
3502 IF l_debug_on THEN
3503 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TPA_DELIVERY_PKG.CHECK_CALENDAR',WSH_DEBUG_SV.C_PROC_LEVEL);
3504 END IF;
3505 -- modified ship_assoc type to 'HR_LOCATION' and receive_assoc_type to 'CUSTOMER_SITE' for bug 5880742
3506 --
3507 wsh_tpa_delivery_pkg.check_calendar(p_entity_type => 'DELIVERY',
3508 p_entity_id => p_delivery_id,
3509 -- p_ship_date => p_initial_pickup_date ,--6156495
3510 p_ship_date => P_ACTUAL_DEP_DATE ,
3511 p_ship_assoc_type => 'HR_LOCATION',
3512 p_ship_location_id => p_ship_from_location,
3513 p_freight_code => p_freight_code,
3514 p_freight_org_id => p_organization_id ,
3515 -- p_receive_date => p_ultimate_dropoff_date ,--6156495
3516 p_receive_date => l_temp_date ,
3517 p_receive_assoc_type => 'CUSTOMER_SITE',
3518 p_receive_location_id => p_ship_to_location,
3519 p_update_flag => 'N',
3520 x_return_status => l_return_status);
3521
3522 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
3523 x_return_status := l_return_status;
3524 END IF;
3525
3526 --
3527 -- Debug Statements
3528 --
3529 IF l_debug_on THEN
3530 WSH_DEBUG_SV.pop(l_module_name);
3531 END IF;
3532 --
3533 EXCEPTION
3534 WHEN others THEN
3535 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_CONFIRM');
3536 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3537
3538 --
3539 -- Debug Statements
3540 --
3541 IF l_debug_on THEN
3542 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3543 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3544 END IF;
3545 --
3546 END Check_Confirm;
3547
3548 -----------------------------------------------------------------------------
3549 --
3550 -- Procedure: Check_Reopen
3551 -- Parameters: p_delivery_id, x_return_status
3552 -- Description: Checks for Reopen action pre-requisites which are
3553 -- - Delivery status is PACKED or CONFIRMED
3554 --
3555 -----------------------------------------------------------------------------
3556
3557 PROCEDURE Check_Reopen ( p_delivery_id IN NUMBER,
3558 x_return_status OUT NOCOPY VARCHAR2) IS
3559
3560 CURSOR delivery_status IS
3561 SELECT status_code
3562 FROM wsh_new_deliveries
3563 WHERE delivery_id = p_delivery_id;
3564
3565 l_del_status VARCHAR2(2);
3566 others EXCEPTION;
3567
3568 --
3569 l_debug_on BOOLEAN;
3570 --
3571 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_REOPEN';
3572 --
3573 BEGIN
3574
3575 --
3576 -- Debug Statements
3577 --
3578 --
3579 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3580 --
3581 IF l_debug_on IS NULL
3582 THEN
3583 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3584 END IF;
3585 --
3586 IF l_debug_on THEN
3587 WSH_DEBUG_SV.push(l_module_name);
3588 --
3589 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
3590 END IF;
3591 --
3592 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3593
3594 OPEN delivery_status;
3595 FETCH delivery_status INTO l_del_status;
3596
3597 IF (delivery_status%NOTFOUND) THEN
3598 CLOSE delivery_status;
3599 raise others;
3600 END IF;
3601
3602 CLOSE delivery_status;
3603
3604 IF (l_del_status <> 'CO') AND (l_del_status <> 'PA') AND (l_del_status <> 'OP') THEN
3605 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NOT_CO_PA_STATUS');
3606 --
3607 -- Debug Statements
3608 --
3609 IF l_debug_on THEN
3610 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
3611 END IF;
3612 --
3613 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
3614 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3615 wsh_util_core.add_message(x_return_status);
3616 --
3617 -- Debug Statements
3618 --
3619 IF l_debug_on THEN
3620 WSH_DEBUG_SV.pop(l_module_name);
3621 END IF;
3622 --
3623 RETURN;
3624 END IF;
3625
3626 --
3627 -- Debug Statements
3628 --
3629 IF l_debug_on THEN
3630 WSH_DEBUG_SV.pop(l_module_name);
3631 END IF;
3632 --
3633 EXCEPTION
3634 WHEN others THEN
3635 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_REOPEN');
3636 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3637
3638 --
3639 -- Debug Statements
3640 --
3641 IF l_debug_on THEN
3642 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3643 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3644 END IF;
3645 --
3646 END Check_Reopen;
3647
3648
3649 -----------------------------------------------------------------------------
3650 --
3651 -- Procedure: Check_Intransit
3652 -- Parameters: p_delivery_id, x_return_status
3653 -- Description: Checks for Reopen action pre-requisites which are
3654 -- - Delivery status is CONFIRMED
3655 -- - First pickup stop status is CLOSED
3656 --
3657 -----------------------------------------------------------------------------
3658
3659 PROCEDURE Check_Intransit ( p_delivery_id IN NUMBER,
3660 x_return_status OUT NOCOPY VARCHAR2) IS
3661
3662 CURSOR delivery_status IS
3663 SELECT status_code
3664 FROM wsh_new_deliveries
3665 WHERE delivery_id = p_delivery_id;
3666
3667 CURSOR stop_status IS
3668 SELECT st.status_code
3669 FROM wsh_trip_stops st,
3670 wsh_delivery_legs dg,
3671 wsh_new_deliveries dl
3672 WHERE dl.delivery_id = p_delivery_id AND
3673 dg.delivery_id = dl.delivery_id AND
3674 st.stop_id = dg.pick_up_stop_id AND
3675 dl.initial_pickup_location_id = st.stop_location_id;
3676
3677 l_del_status VARCHAR2(2);
3678 l_stop_status VARCHAR2(2);
3679 others EXCEPTION;
3680
3681 --
3682 l_debug_on BOOLEAN;
3683 --
3684 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_INTRANSIT';
3685 --
3686 BEGIN
3687
3688 --
3689 -- Debug Statements
3690 --
3691 --
3692 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3693 --
3694 IF l_debug_on IS NULL
3695 THEN
3696 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3697 END IF;
3698 --
3699 IF l_debug_on THEN
3700 WSH_DEBUG_SV.push(l_module_name);
3701 --
3702 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
3703 END IF;
3704 --
3705 -- J-IB-NPARIKH-{
3706 -- Stubbed out as no one is calling this API.
3707 /*
3708 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3709
3710 OPEN delivery_status;
3711 FETCH delivery_status INTO l_del_status;
3712
3713 IF (delivery_status%NOTFOUND) THEN
3714 CLOSE delivery_status;
3715 raise others;
3716 END IF;
3717
3718 CLOSE delivery_status;
3719
3720 IF (l_del_status <> 'CO') THEN
3721 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NOT_CONFIRMED');
3722 --
3723 -- Debug Statements
3724 --
3725 IF l_debug_on THEN
3726 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
3727 END IF;
3728 --
3729 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
3730 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3731 wsh_util_core.add_message(x_return_status);
3732 --
3733 -- Debug Statements
3734 --
3735 IF l_debug_on THEN
3736 WSH_DEBUG_SV.pop(l_module_name);
3737 END IF;
3738 --
3739 RETURN;
3740 END IF;
3741 */
3742 -- J-IB-NPARIKH-}
3743
3744 /*
3745 OPEN stop_status;
3746 FETCH stop_status INTO l_stop_status;
3747
3748 IF (stop_status%NOTFOUND) THEN
3749 CLOSE stop_status;
3750 raise others;
3751 END IF;
3752
3753 CLOSE stop_status;
3754
3755 IF (l_stop_status <> 'CL') THEN
3756 FND_MESSAGE.SET_NAME('WSH','First-pickup-stop-not-closed');
3757 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3758 wsh_util_core.add_message(x_return_status);
3759 RETURN;
3760 END IF;
3761 */
3762
3763
3764 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR; -- J-IB-NPARIKH
3765 --
3766 -- Debug Statements
3767 --
3768 IF l_debug_on THEN
3769 WSH_DEBUG_SV.pop(l_module_name);
3770 END IF;
3771 --
3772 EXCEPTION
3773 WHEN others THEN
3774 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_INTRANSIT');
3775 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3776
3777 --
3778 -- Debug Statements
3779 --
3780 IF l_debug_on THEN
3781 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3782 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
3783 END IF;
3784 --
3785 END Check_Intransit;
3786
3787 -----------------------------------------------------------------------------
3788 --
3789 -- Procedure: Check_Close
3790 -- Parameters: p_delivery_id = delivery being closed
3791 -- p_manual_flag = 'Y' if user invokes the UI action Close Del.
3792 -- 'N' if its drop-off stop is being closed
3793 -- p_old_status_code = delivery's original status_code
3794 -- x_return_status = SUCCESS -> can close,
3795 -- ERROR -> cannot close
3796 --
3797 -- Description: Checks for Close action pre-requisites which are
3798 -- - POD has been received
3799 -- - If POD not received then last drop-off stop status
3800 -- is ARRIVED or CLOSED
3801 -- If manually closing, the pre-requisite is either:
3802 -- - Delivery is open with no details or legs assigned.
3803 -- - Delivery is IN TRANSIT and owns all stops still open.
3804 --
3805 -----------------------------------------------------------------------------
3806
3807 PROCEDURE Check_Close ( p_delivery_id IN NUMBER,
3808 p_manual_flag IN VARCHAR2,
3809 p_old_status_code IN VARCHAR2,
3810 x_return_status OUT NOCOPY VARCHAR2) IS
3811
3812 CURSOR dropoff_stop_info (l_delivery_id NUMBER) IS
3813 SELECT dg.drop_off_stop_id,
3814 st.stop_location_id
3815 FROM wsh_new_deliveries dl,
3816 wsh_delivery_legs dg,
3817 wsh_trip_stops st
3818 WHERE dl.delivery_id = l_delivery_id AND
3819 dl.delivery_id = dg.delivery_id AND
3820 dg.drop_off_stop_id = st.stop_id AND
3821 dl.ultimate_dropoff_location_id = st.stop_location_id;
3822 /*Refer POD Information from WSH_DELIVERY_LEGS. Bug#1918342*/
3823 CURSOR check_POD (l_stop_id NUMBER, l_delivery_id NUMBER) IS
3824 SELECT dg.pod_flag
3825 FROM wsh_delivery_legs dg,
3826 wsh_document_instances di
3827 WHERE dg.drop_off_stop_id = l_stop_id AND
3828 di.entity_id = dg.delivery_leg_id AND
3829 di.entity_name = 'WSH_DELIVERY_LEGS' AND
3830 di.document_type = 'BOL' AND
3831 dg.pod_flag = 'Y' AND
3832 dg.pod_date IS NULL AND
3833 di.status IN ('OPEN','PLANNED');
3834
3835 CURSOR have_details(l_delivery_id NUMBER) IS
3836 SELECT delivery_detail_id
3837 FROM wsh_delivery_assignments_v
3838 WHERE delivery_id = l_delivery_id
3839 AND rownum = 1;
3840
3841 CURSOR have_legs(l_delivery_id NUMBER) IS
3842 SELECT delivery_leg_id
3843 FROM wsh_delivery_legs
3844 WHERE delivery_id = l_delivery_id;
3845
3846 CURSOR delivery_leg_stops(l_delivery_id NUMBER) IS
3847 SELECT dg.pick_up_stop_id,
3848 pu_stop.status_code pu_status,
3849 dg.drop_off_stop_id,
3850 do_stop.status_code do_status
3851 FROM wsh_delivery_legs dg,
3852 wsh_trip_stops pu_stop,
3853 wsh_trip_stops do_stop
3854 WHERE dg.delivery_id = l_delivery_id
3855 AND pu_stop.stop_id = dg.pick_up_stop_id
3856 AND do_stop.stop_id = dg.drop_off_stop_id;
3857
3858 CURSOR shared_stops(l_delivery_id NUMBER, l_stop_id NUMBER) IS
3859 SELECT dg.delivery_leg_id
3860 FROM wsh_delivery_legs dg, wsh_new_deliveries nd
3861 WHERE dg.pick_up_stop_id = l_stop_id
3862 AND dg.delivery_id <> l_delivery_id
3863 AND dg.delivery_id = nd.delivery_id
3864 AND nd.delivery_type = 'STANDARD'
3865 UNION
3866 SELECT dg.delivery_leg_id
3867 FROM wsh_delivery_legs dg, wsh_new_deliveries nd
3868 WHERE dg.drop_off_stop_id = l_stop_id
3869 AND dg.delivery_id <> l_delivery_id
3870 AND dg.delivery_id = nd.delivery_id
3871 AND nd.delivery_type = 'STANDARD';
3872
3873 -- bug 2429322: check that all stops are closed when
3874 -- automatically closing delivery.
3875 -- Sufficient to check drop off stops only;
3876 -- A drop off stop being closed implies that pick up stop is closed.
3877 CURSOR stops_not_closed(l_delivery_id NUMBER) IS
3878 SELECT ts.stop_id
3879 FROM wsh_trip_stops ts,
3880 wsh_delivery_legs dg
3881 WHERE dg.delivery_id = l_delivery_id
3882 AND ts.stop_id = dg.drop_off_stop_id
3883 AND ts.status_code in ('OP', 'AR')
3884 AND rownum = 1;
3885
3886 l_stop_id NUMBER;
3887 l_stop_location_id NUMBER;
3888 l_pod_flag wsh_delivery_legs.pod_flag%TYPE;
3889 leg delivery_leg_stops%ROWTYPE;
3890 num NUMBER;
3891 shared_flag BOOLEAN;
3892
3893
3894 --
3895 l_debug_on BOOLEAN;
3896 --
3897 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_CLOSE';
3898 --
3899 BEGIN
3900
3901 --
3902 -- Debug Statements
3903 --
3904 --
3905 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3906 --
3907 IF l_debug_on IS NULL
3908 THEN
3909 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3910 END IF;
3911 --
3912 IF l_debug_on THEN
3913 WSH_DEBUG_SV.push(l_module_name);
3914 --
3915 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
3916 WSH_DEBUG_SV.log(l_module_name,'P_MANUAL_FLAG',P_MANUAL_FLAG);
3917 WSH_DEBUG_SV.log(l_module_name,'P_OLD_STATUS_CODE',P_OLD_STATUS_CODE);
3918 END IF;
3919
3920 /**
3921 -- J-IB-NPARIKH-{
3922 --
3923 -- stubbed out as no longer being called.
3924 --
3925 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3926 RETURN;
3927 -- J-IB-NPARIKH-}
3928 **/
3929 --
3930 IF p_manual_flag = 'N' THEN
3931 -- Close called from Stop close. Need to check if POD requirements
3932 -- are fulfilled. If not, do not close the delivery, simply return
3933
3934 -- bug 2429322: Make sure all stops associated with this delivey
3935 -- are closed, especially if delivery is on two or more trips.
3936 OPEN stops_not_closed(p_delivery_id);
3937 FETCH stops_not_closed INTO l_stop_id;
3938 IF stops_not_closed%NOTFOUND THEN
3939 l_stop_id := NULL;
3940 END IF;
3941 CLOSE stops_not_closed;
3942
3943 IF l_stop_id IS NOT NULL THEN
3944 -- this status signals: Do not close this delivery.
3945 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3946 --
3947 -- Debug Statements
3948 --
3949 IF l_debug_on THEN
3950 WSH_DEBUG_SV.pop(l_module_name);
3951 END IF;
3952 --
3953 return;
3954 END IF;
3955
3956
3957 -- TO DO: Log exceptions if the delivery is not PODed
3958
3959 l_pod_flag := NULL;
3960
3961
3962 OPEN dropoff_stop_info (p_delivery_id);
3963 FETCH dropoff_stop_info INTO l_stop_id, l_stop_location_id;
3964 CLOSE dropoff_stop_info;
3965
3966 OPEN check_pod (l_stop_id, p_delivery_id);
3967 FETCH check_pod INTO l_pod_flag;
3968 IF check_pod%NOTFOUND THEN
3969 l_pod_flag := NULL;
3970 END IF;
3971 CLOSE check_pod;
3972
3973 IF (l_pod_flag IS NULL) THEN
3974 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3975 ELSE
3976 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3977 --
3978 -- Debug Statements
3979 --
3980 IF l_debug_on THEN
3981 WSH_DEBUG_SV.pop(l_module_name);
3982 END IF;
3983 --
3984 return;
3985 END IF;
3986
3987 ELSE -- p_manual_flag = 'Y'
3988
3989 IF p_old_status_code = 'OP' THEN
3990
3991 OPEN have_details(p_delivery_id);
3992 FETCH have_details INTO num;
3993 IF have_details%NOTFOUND THEN
3994 num := NULL;
3995 END IF;
3996 CLOSE have_details;
3997
3998 IF num IS NOT NULL THEN
3999 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4000 --
4001 -- Debug Statements
4002 --
4003 IF l_debug_on THEN
4004 WSH_DEBUG_SV.pop(l_module_name);
4005 END IF;
4006 --
4007 return;
4008 END IF;
4009
4010 OPEN have_legs(p_delivery_id);
4011 FETCH have_legs INTO num;
4012 IF have_legs%NOTFOUND THEN
4013 num := NULL;
4014 END IF;
4015 CLOSE have_legs;
4016
4017 IF num IS NOT NULL THEN
4018 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4019 --
4020 -- Debug Statements
4021 --
4022 IF l_debug_on THEN
4023 WSH_DEBUG_SV.pop(l_module_name);
4024 END IF;
4025 --
4026 return;
4027 END IF;
4028
4029 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4030
4031 ELSIF p_old_status_code = 'IT' THEN
4032
4033 -- Look for stops that are not closed and shared by other deliveries.
4034 -- These stops should not be shared with other deliveries.
4035 -- We don't need to worry about closed stops.
4036
4037 shared_flag := FALSE;
4038
4039 OPEN delivery_leg_stops(p_delivery_id);
4040 FETCH delivery_leg_stops INTO leg;
4041
4042 WHILE delivery_leg_stops%FOUND LOOP
4043
4044 IF leg.pu_status <> 'CL' THEN
4045 OPEN shared_stops(p_delivery_id, leg.pick_up_stop_id);
4046 FETCH shared_stops INTO NUM;
4047 shared_flag := shared_stops%FOUND;
4048 CLOSE shared_stops;
4049 END IF;
4050
4051 IF shared_flag THEN
4052 GOTO loop_end;
4053 END IF;
4054
4055 IF leg.do_status <> 'CL' THEN
4056 OPEN shared_stops(p_delivery_id, leg.drop_off_stop_id);
4057 FETCH shared_stops INTO NUM;
4058 shared_flag := shared_stops%FOUND;
4059 CLOSE shared_stops;
4060 END IF;
4061
4062 IF shared_flag THEN
4063 GOTO loop_end;
4064 END IF;
4065
4066 FETCH delivery_leg_stops INTO leg;
4067 END LOOP;
4068 << loop_end >>
4069
4070 CLOSE delivery_leg_stops;
4071
4072 IF shared_flag THEN
4073 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4074 --
4075 -- Debug Statements
4076 --
4077 IF l_debug_on THEN
4078 WSH_DEBUG_SV.pop(l_module_name);
4079 END IF;
4080 --
4081 return;
4082 ELSE
4083 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4084 END IF;
4085
4086 ELSE
4087 -- any other status is invalid for closing.
4088 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4089 END IF;
4090
4091 END IF;
4092
4093 --
4094 -- Debug Statements
4095 --
4096 IF l_debug_on THEN
4097 WSH_DEBUG_SV.pop(l_module_name);
4098 END IF;
4099 --
4100 EXCEPTION
4101 WHEN others THEN
4102 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_CLOSE');
4103 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4104
4105 --
4106 -- Debug Statements
4107 --
4108 IF l_debug_on THEN
4109 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4110 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
4111 END IF;
4112 --
4113 END;
4114
4115
4116 -----------------------------------------------------------------------------
4117 --
4118 -- Procedure: Check_Close
4119 -- Parameters: p_in_rec.delivery_id = delivery being closed
4120 -- p_in_rec.manual_flag = 'Y' if user invokes the UI action Close Del.
4121 -- 'N' if its drop-off stop is being closed
4122 -- p_in_rec.stop_id = Stop ID of stop being closed in case of automatic close.
4123 -- p_in_rec.status_code = delivery's current status_code
4124 -- x_allowed Close operation is allowed or not
4125 -- 'Y' : Allowed
4126 -- 'YW': Allowed with warnings
4127 -- 'N' : Not Allowed
4128 -- 'NW': Not Allowed with warnings
4129 -- x_return_status = Return status of API
4130 --
4131 -- Description: This API Validates if delivery can be closed or not.
4132 -- Pre-requisites for automatic closing are:
4133 -- - All other drop-off stops(other than current one) for delivery are closed.
4134 -- - POD has been received
4135 -- If manually closing, the pre-requisite is either
4136 -- - Delivery is open with no details or legs assigned.
4137 -- OR
4138 -- - Delivery is IN TRANSIT and exclusively owns all stops still open.
4139 --
4140 -- Pack J Exceptions project - Check for exception for any type of closing
4141 --
4142 -----------------------------------------------------------------------------
4143
4144 -- J-IB-NPARIKH-{
4145 PROCEDURE Check_Close
4146 (
4147 p_in_rec IN ChgStatus_in_rec_type,
4148 x_return_status OUT NOCOPY VARCHAR2,
4149 x_allowed OUT NOCOPY VARCHAR2
4150 )
4151 IS
4152 --{
4153 --
4154 -- bug 2429322: check that all stops are closed when
4155 -- automatically closing delivery.
4156 -- Sufficient to check drop off stops only;
4157 -- A drop off stop being closed implies that pick up stop is closed.
4158 CURSOR stops_not_closed(p_delivery_id NUMBER, p_stop_id NUMBER) IS
4159 SELECT 1
4160 FROM wsh_trip_stops ts,
4161 wsh_delivery_legs dg
4162 WHERE dg.delivery_id = p_delivery_id
4163 AND ts.stop_id = dg.drop_off_stop_id
4164 AND ts.stop_id <> p_stop_id
4165 AND ts.status_code in ('OP', 'AR')
4166 AND rownum = 1;
4167 --
4168 --
4169 /*Refer POD Information from WSH_DELIVERY_LEGS. Bug#1918342*/
4170 --
4171 -- Check if POD has been pending (pod_date null)
4172 --
4173 CURSOR check_POD (p_stop_id NUMBER) IS
4174 SELECT 1
4175 FROM wsh_delivery_legs dg,
4176 wsh_document_instances di
4177 WHERE dg.drop_off_stop_id = p_stop_id
4178 AND di.entity_id = dg.delivery_leg_id
4179 AND di.entity_name = 'WSH_DELIVERY_LEGS'
4180 AND di.document_type = 'BOL'
4181 AND dg.pod_flag = 'Y'
4182 AND dg.pod_date IS NULL
4183 AND di.status IN ('OPEN','PLANNED');
4184 --
4185 --
4186 CURSOR have_details (p_delivery_id NUMBER) IS
4187 SELECT 1
4188 FROM wsh_delivery_assignments_v
4189 WHERE delivery_id = p_delivery_id
4190 AND rownum = 1;
4191 --
4192 --
4193 CURSOR have_legs (p_delivery_id NUMBER) IS
4194 SELECT 1
4195 FROM wsh_delivery_legs
4196 WHERE delivery_id = p_delivery_id
4197 AND rownum = 1;
4198 --
4199 --
4200 -- Check if delivery is associated with any OP/AR stops which
4201 -- also has some other deliveries associated with it.
4202 --
4203 CURSOR shared_stops_csr (p_delivery_id NUMBER)
4204 IS
4205 SELECT 1
4206 FROM wsh_delivery_legs wdl,
4207 wsh_Trip_stops wts
4208 WHERE wdl.delivery_id = p_delivery_id
4209 AND (
4210 wdl.pick_up_stop_id = wts.stop_id
4211 OR wdl.drop_off_stop_id = wts.stop_id
4212 )
4213 AND wts.status_code <> 'CL'
4214 AND EXISTS
4215 (
4216 SELECT 1
4217 FROM wsh_delivery_legs wdl1, wsh_new_deliveries wnd
4218 WHERE wdl1.delivery_id <> p_delivery_id
4219 AND wdl1.delivery_id = wnd.delivery_id
4220 AND wnd.delivery_type = 'STANDARD'
4221 AND (
4222 wdl1.pick_up_stop_id = wts.stop_id
4223 OR wdl1.drop_off_stop_id = wts.stop_id
4224 )
4225 )
4226 AND rownum = 1;
4227 --
4228 --
4229 l_dummy NUMBER;
4230 l_num_warnings NUMBER;
4231 l_num_errors NUMBER;
4232 --
4233 -- Exception variables
4234 l_exceptions_tab wsh_xc_util.XC_TAB_TYPE;
4235 l_exp_logged BOOLEAN := FALSE;
4236 l_msg_count NUMBER;
4237 l_msg_data VARCHAR2(4000);
4238 l_return_status VARCHAR2(1);
4239 l_exp_warning BOOLEAN := FALSE;
4240 --
4241 l_debug_on BOOLEAN;
4242 --
4243 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_CLOSE';
4244 --}
4245 BEGIN
4246 --{
4247 --
4248 -- Debug Statements
4249 --
4250 --
4251 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4252 --
4253 IF l_debug_on IS NULL
4254 THEN
4255 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4256 END IF;
4257 --
4258 IF l_debug_on THEN
4259 WSH_DEBUG_SV.push(l_module_name);
4260 --
4261 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.DELIVERY_ID ', p_in_rec.delivery_id );
4262 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.name ', p_in_rec.name );
4263 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.status_code ', p_in_rec.status_code );
4264 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.put_messages', p_in_rec.put_messages);
4265 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.manual_flag ', p_in_rec.manual_flag );
4266 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.caller ', p_in_rec.caller );
4267 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.actual_date ', p_in_rec.actual_date );
4268 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.stop_id ', p_in_rec.stop_id );
4269 END IF;
4270 --
4271 l_num_warnings := 0;
4272 l_num_errors := 0;
4273 --
4274 IF p_in_rec.manual_flag = 'N'
4275 THEN
4276 --{
4277 -- bug 2429322: Make sure all stops associated with this delivey
4278 -- are closed, especially if delivery is on two or more trips.
4279 --
4280 --
4281 IF p_in_rec.stop_id IS NULL
4282 THEN
4283 RAISE wsh_util_core.e_not_allowed;
4284 END IF;
4285 --
4286 --
4287 OPEN stops_not_closed(p_in_rec.delivery_id, p_in_rec.stop_id);
4288 FETCH stops_not_closed INTO l_dummy;
4289 --
4290 IF stops_not_closed%FOUND
4291 THEN
4292 --CLOSE stops_not_closed;
4293 --
4294 -- Delivery associated with stops which are not closed
4295 -- Cannot close delivery.
4296 --
4297 FND_MESSAGE.SET_NAME('WSH', 'WSH_DLVY_NO_CLOSE_OPEN_STOP');
4298 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_in_rec.delivery_id));
4299 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR, l_module_name);
4300 RAISE wsh_util_core.e_not_allowed;
4301 END IF;
4302 CLOSE stops_not_closed;
4303 --
4304 OPEN check_pod (p_in_rec.stop_id);
4305 FETCH check_pod INTO l_dummy;
4306 --
4307 IF check_pod%FOUND
4308 THEN
4309 --CLOSE check_pod;
4310 --
4311 -- POD not received
4312 -- Cannot close delivery.
4313 --
4314 FND_MESSAGE.SET_NAME('WSH', 'WSH_DLVY_NO_CLOSE_POD');
4315 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_in_rec.delivery_id));
4316 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR, l_module_name);
4317 RAISE wsh_util_core.e_not_allowed;
4318 END IF;
4319 --
4320 CLOSE check_pod;
4321 --
4322 --}
4323 ELSE -- p_manual_flag = 'Y'
4324 --{
4325 IF p_in_rec.status_code = 'OP'
4326 THEN
4327 --{
4328 --
4329 OPEN have_details (p_in_rec.delivery_id);
4330 FETCH have_details INTO l_dummy;
4331 --
4332 IF have_details%FOUND
4333 THEN
4334 --CLOSE have_details;
4335 --
4336 -- Delivery has lines
4337 -- Cannot close delivery.
4338 --
4339 FND_MESSAGE.SET_NAME('WSH', 'WSH_DLVY_NO_CLOSE_DETAIL');
4340 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_in_rec.delivery_id));
4341 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR, l_module_name);
4342 RAISE wsh_util_core.e_not_allowed;
4343
4344 END IF;
4345 --
4346 CLOSE have_details;
4347 --
4348 --
4349 OPEN have_legs (p_in_rec.delivery_id);
4350 FETCH have_legs INTO l_dummy;
4351 --
4352 IF have_legs%FOUND
4353 THEN
4354 --CLOSE have_legs;
4355 --
4356 -- Delivery has legs
4357 -- Cannot close delivery.
4358 --
4359 FND_MESSAGE.SET_NAME('WSH', 'WSH_DLVY_NO_CLOSE_LEGS');
4360 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_in_rec.delivery_id));
4361 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR, l_module_name);
4362
4363 RAISE wsh_util_core.e_not_allowed;
4364 END IF;
4365 --
4366 CLOSE have_legs;
4367 --
4368 --}
4369 ELSIF p_in_rec.status_code = 'IT'
4370 THEN
4371 --{
4372 -- Look for stops that are not closed and shared by other deliveries.
4373 -- These stops should not be shared with other deliveries.
4374 -- We don't need to worry about closed stops.
4375 --
4376 OPEN shared_stops_csr (p_in_rec.delivery_id);
4377 FETCH shared_stops_csr INTO l_dummy;
4378 --
4379 IF shared_stops_csr%FOUND
4380 THEN
4381 --CLOSE shared_stops_csr;
4382 FND_MESSAGE.SET_NAME('WSH', 'WSH_DLVY_NO_CLOSE_SHR_STOPS');
4383 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_in_rec.delivery_id));
4384 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR, l_module_name);
4385 RAISE wsh_util_core.e_not_allowed;
4386 END IF;
4387 --
4388 CLOSE shared_stops_csr;
4389 --}
4390 ELSE
4391 --{
4392 RAISE wsh_util_core.e_not_allowed;
4393 --}
4394 END IF;
4395 --}
4396 END IF;
4397 --
4398
4399 -- Check for Exceptions against Delivery and its Contents
4400 IF l_debug_on THEN
4401 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_XC_UTIL.Check_Exceptions',WSH_DEBUG_SV.C_PROC_LEVEL); END IF;
4402 l_exceptions_tab.delete;
4403 l_exp_logged := FALSE;
4404 l_exp_warning := FALSE;
4405 WSH_XC_UTIL.Check_Exceptions (
4406 p_api_version => 1.0,
4407 x_return_status => l_return_status,
4408 x_msg_count => l_msg_count,
4409 x_msg_data => l_msg_data,
4410 p_logging_entity_id => p_in_rec.delivery_id,
4411 p_logging_entity_name => 'DELIVERY',
4412 p_consider_content => 'Y',
4413 x_exceptions_tab => l_exceptions_tab
4414 );
4415 IF ( l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS ) THEN
4416 x_return_status := l_return_status;
4417 wsh_util_core.add_message(x_return_status);
4418 RAISE FND_API.G_EXC_ERROR;
4419 END IF;
4420 FOR exp_cnt in 1..l_exceptions_tab.COUNT LOOP
4421 IF l_exceptions_tab(exp_cnt).exception_behavior = 'ERROR' THEN
4422 IF l_exceptions_tab(exp_cnt).entity_name = 'DELIVERY' THEN
4423 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_ENTITY');
4424 ELSE
4425 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_CONTENTS');
4426 END IF;
4427 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','Delivery');
4428 FND_MESSAGE.SET_TOKEN('ENTITY_ID',l_exceptions_tab(exp_cnt).entity_id);
4429 FND_MESSAGE.SET_TOKEN('EXCEPTION_BEHAVIOR','Error');
4430 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4431 wsh_util_core.add_message(x_return_status);
4432 l_num_warnings := l_num_warnings + 1 ;
4433 RAISE wsh_util_core.e_not_allowed;
4434 ELSIF l_exceptions_tab(exp_cnt).exception_behavior = 'WARNING' THEN
4435 IF l_exceptions_tab(exp_cnt).entity_name = 'DELIVERY' THEN
4436 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_ENTITY');
4437 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','Delivery');
4438 FND_MESSAGE.SET_TOKEN('ENTITY_ID',l_exceptions_tab(exp_cnt).entity_id);
4439 FND_MESSAGE.SET_TOKEN('EXCEPTION_BEHAVIOR','Warning');
4440 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4441 wsh_util_core.add_message(x_return_status);
4442 l_num_warnings := l_num_warnings + 1 ;
4443 l_exp_warning := TRUE;
4444 ELSIF NOT (l_exp_logged) THEN
4445 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_CONTENTS');
4446 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','Delivery');
4447 FND_MESSAGE.SET_TOKEN('ENTITY_ID',l_exceptions_tab(exp_cnt).entity_id);
4448 FND_MESSAGE.SET_TOKEN('EXCEPTION_BEHAVIOR','Warning');
4449 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4450 l_exp_logged := TRUE;
4451 wsh_util_core.add_message(x_return_status);
4452 l_num_warnings := l_num_warnings + 1 ;
4453 l_exp_warning := TRUE;
4454 END IF;
4455 END IF;
4456 END LOOP;
4457
4458
4459 IF l_num_errors > 0
4460 THEN
4461 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4462 x_allowed := 'N';
4463 ELSIF l_num_warnings > 0
4464 THEN
4465 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4466 ELSE
4467 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4468 END IF;
4469 --
4470 --
4471 -- If Exceptions have warnings, then display warnings but allow to proceed
4472 IF l_exp_warning THEN
4473 x_allowed := 'YW';
4474 ELSE
4475 x_allowed := 'Y';
4476 END IF;
4477 --
4478 --
4479 -- Debug Statements
4480 --
4481 IF l_debug_on THEN
4482 WSH_DEBUG_SV.pop(l_module_name);
4483 END IF;
4484 --
4485 --}
4486 EXCEPTION
4487 --{
4488 WHEN wsh_util_core.e_not_allowed THEN
4489 IF l_num_warnings > 0
4490 THEN
4491 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4492 ELSE
4493 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4494 END IF;
4495 --
4496 x_allowed := 'N';
4497 --
4498 --
4499 IF l_debug_on THEN
4500 WSH_DEBUG_SV.logmsg(l_module_name,'wsh_util_core.e_not_allowed exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4501 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:wsh_util_core.e_not_allowed');
4502 END IF;
4503 --
4504 WHEN wsh_util_core.e_not_allowed_warning THEN
4505 IF l_num_warnings > 0
4506 THEN
4507 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4508 ELSE
4509 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4510 END IF;
4511 --
4512 x_allowed := 'NW';
4513 --
4514 --
4515 IF l_debug_on THEN
4516 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4517 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
4518 END IF;
4519 --
4520 WHEN FND_API.G_EXC_ERROR THEN
4521
4522 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4523 --
4524 IF l_debug_on THEN
4525 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4526 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
4527 END IF;
4528 --
4529 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4530
4531 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4532 --
4533 IF l_debug_on THEN
4534 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4535 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
4536 END IF;
4537 --
4538 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
4539 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4540 --
4541 IF l_debug_on THEN
4542 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4543 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
4544 END IF;
4545 --
4546 WHEN OTHERS THEN
4547
4548 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4549 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.Check_Close',l_module_name);
4550 --
4551 IF l_debug_on THEN
4552 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
4553 END IF;
4554 --
4555 --}
4556 END;
4557 -- J-IB-NPARIKH-}
4558
4559
4560
4561 -----------------------------------------------------------------------------
4562 --
4563 -- Procedure: Check_Delete_Delivery
4564 -- Parameters: p_delivery_id, x_return_status
4565 -- Description: Checks for Delete Delivery action pre-requisites which are
4566 -- - Delivery status is OPEN
4567 -- - No freight costs assigned to delivery [warning]
4568 -- NOT SUPPORTED YET - No documents assigned to delivery [warning]
4569 -- - No delivery details assigned to this delivery [warning]
4570 --
4571 -----------------------------------------------------------------------------
4572
4573 PROCEDURE Check_Delete_Delivery ( p_delivery_id IN NUMBER,
4574 x_return_status OUT NOCOPY VARCHAR2) IS
4575
4576 CURSOR delivery_status IS
4577 SELECT status_code, routing_response_id, --J-IB-NPARIKH
4578 delivery_type,
4579 tms_interface_flag --OTM R12
4580 FROM wsh_new_deliveries
4581 WHERE delivery_id = p_delivery_id;
4582
4583 CURSOR detail_info IS
4584 SELECT delivery_detail_id
4585 FROM wsh_delivery_assignments_v
4586 WHERE delivery_id = p_delivery_id
4587 FOR UPDATE NOWAIT;
4588
4589 CURSOR leg_info IS
4590 SELECT delivery_leg_id
4591 FROM wsh_delivery_legs
4592 WHERE delivery_id = p_delivery_id
4593 FOR UPDATE NOWAIT;
4594
4595 CURSOR freight_costs_exist IS
4596 SELECT freight_cost_id
4597 FROM wsh_freight_costs
4598 WHERE delivery_id = p_delivery_id
4599 FOR UPDATE NOWAIT;
4600
4601 l_del_status VARCHAR2(2);
4602 l_detail_id NUMBER;
4603 l_routingResponseId NUMBER;
4604 l_flag VARCHAR2(1) := 'N';
4605 l_delivery_type VARCHAR2(30);
4606 others EXCEPTION;
4607
4608 record_locked EXCEPTION;
4609 PRAGMA EXCEPTION_INIT(record_locked, -54);
4610 --OTM R12
4611 cannot_delete_GC3_delivery EXCEPTION;
4612 l_gc3_is_installed VARCHAR2(1);
4613 l_tms_interface_flag WSH_NEW_DELIVERIES.TMS_INTERFACE_FLAG%TYPE;
4614 --
4615
4616
4617 --
4618 l_debug_on BOOLEAN;
4619 --
4620 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DELETE_DELIVERY';
4621 --
4622 BEGIN
4623
4624 --
4625 -- Debug Statements
4626 --
4627 --
4628 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4629 --
4630 IF l_debug_on IS NULL
4631 THEN
4632 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4633 END IF;
4634 --
4635 IF l_debug_on THEN
4636 WSH_DEBUG_SV.push(l_module_name);
4637 --
4638 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
4639 END IF;
4640 --
4641 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4642
4643
4644 --OTM R12
4645 l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED; -- this is global variable
4646
4647 IF l_gc3_is_installed IS NULL THEN
4648 l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED; -- this is actual function
4649 END IF;
4650 --
4651
4652
4653 OPEN delivery_status;
4654 FETCH delivery_status INTO l_del_status,
4655 l_routingResponseId,
4656 l_delivery_type,
4657 l_tms_interface_flag; --OTM R12
4658
4659 IF (delivery_status%NOTFOUND) THEN
4660 CLOSE delivery_status;
4661 RAISE others;
4662 END IF;
4663
4664 CLOSE delivery_status;
4665
4666 --OTM R12, can only delete NS flag deliveries when gc3 is installed
4667 IF (l_gc3_is_installed = 'Y'
4668 AND l_tms_interface_flag <> WSH_NEW_DELIVERIES_PVT.C_TMS_NOT_TO_BE_SENT) THEN
4669
4670 RAISE cannot_delete_gc3_delivery;
4671 END IF;
4672 --
4673
4674 IF (l_del_status = 'CL') OR (l_del_status = 'CO') THEN
4675 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_DELETE_ERROR');
4676 --
4677 -- Debug Statements
4678 --
4679 IF l_debug_on THEN
4680 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
4681 END IF;
4682 --
4683 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
4684 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4685 wsh_util_core.add_message(x_return_status);
4686 END IF;
4687 --
4688 --
4689 --{ --J-IB-NPARIKH
4690 -- Routing response is sent for delivery, cannot be deleted.
4691 --
4692 IF l_routingResponseId IS NOT NULL
4693 THEN
4694 FND_MESSAGE.SET_NAME('WSH','WSH_IB_DELETE_DELIVERY');
4695 --
4696 -- Debug Statements
4697 --
4698 IF l_debug_on THEN
4699 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
4700 END IF;
4701 --
4702 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
4703 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4704 wsh_util_core.add_message(x_return_status);
4705 END IF;
4706 --} --J-IB-NPARIKH
4707 -- 1. Checks if details exist for the delivery and locks them
4708 FOR dt IN detail_info LOOP
4709 l_flag := 'Y';
4710 END LOOP;
4711
4712 IF (l_flag = 'Y') THEN
4713 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_DETAILS_UNASSIGNED');
4714 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_delivery_id));
4715 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4716 wsh_util_core.add_message(x_return_status);
4717 END IF;
4718
4719 -- 2. Checks if legs exist for the delivery and locks them
4720 l_flag := 'N';
4721 FOR dt IN leg_info LOOP
4722 l_flag := 'Y';
4723 END LOOP;
4724
4725 IF (l_flag = 'Y') and l_delivery_type = 'STANDARD' THEN
4726 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_DELETE_WITH_LEGS');
4727 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4728 --
4729 -- Debug Statements
4730 --
4731 IF l_debug_on THEN
4732 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
4733 END IF;
4734 --
4735 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_delivery_id));
4736 wsh_util_core.add_message(x_return_status);
4737 END IF;
4738
4739 -- 3. Checks if freight costs exist for the delivery and locks them
4740 l_flag := 'N';
4741 FOR fc IN freight_costs_exist LOOP
4742 l_flag := 'Y';
4743 END LOOP;
4744
4745 IF (l_flag = 'Y') THEN
4746 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_DELETE_WITH_FC');
4747 --
4748 -- Debug Statements
4749 --
4750 IF l_debug_on THEN
4751 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
4752 END IF;
4753 --
4754 FND_MESSAGE.SET_TOKEN('DEL_NAME', wsh_new_deliveries_pvt.get_name(p_delivery_id));
4755 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4756 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
4757 END IF;
4758
4759 --
4760 -- Debug Statements
4761 --
4762 IF l_debug_on THEN
4763 WSH_DEBUG_SV.pop(l_module_name);
4764 END IF;
4765 --
4766 EXCEPTION
4767 --OTM R12
4768 WHEN cannot_delete_gc3_delivery THEN
4769
4770 IF (delivery_status%ISOPEN) THEN
4771 CLOSE delivery_status;
4772 END IF;
4773
4774 IF (leg_info%ISOPEN) THEN
4775 CLOSE leg_info;
4776 END IF;
4777
4778 IF (detail_info%ISOPEN) THEN
4779 CLOSE detail_info;
4780 END IF;
4781
4782 IF (freight_costs_exist%ISOPEN) THEN
4783 CLOSE freight_costs_exist;
4784 END IF;
4785
4786 FND_MESSAGE.SET_NAME('WSH','WSH_OTM_DEL_DELETE_ERROR');
4787 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4788 WSH_UTIL_CORE.add_message(x_return_status,l_module_name);
4789
4790 IF l_debug_on THEN
4791 WSH_DEBUG_SV.logmsg(l_module_name,'CANNOT_DELETE_GC3_DELIVERY exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4792 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:CANNOT_DELETE_GC3_DELIVERY');
4793 END IF;
4794 --END OTM R12
4795
4796 WHEN record_locked THEN
4797
4798 IF (delivery_status%ISOPEN) THEN
4799 CLOSE delivery_status;
4800 END IF;
4801
4802 IF (leg_info%ISOPEN) THEN
4803 CLOSE leg_info;
4804 END IF;
4805
4806 IF (detail_info%ISOPEN) THEN
4807 CLOSE detail_info;
4808 END IF;
4809
4810 IF (freight_costs_exist%ISOPEN) THEN
4811 CLOSE freight_costs_exist;
4812 END IF;
4813
4814 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4815
4816 FND_MESSAGE.Set_Name('WSH', 'WSH_NO_LOCK');
4817 wsh_util_core.add_message(x_return_status,l_module_name);
4818
4819
4820 IF l_debug_on THEN
4821 WSH_DEBUG_SV.logmsg(l_module_name,'record_locked has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4822 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:record_locked');
4823 END IF;
4824 --
4825
4826 WHEN others THEN
4827
4828 IF (delivery_status%ISOPEN) THEN
4829 CLOSE delivery_status;
4830 END IF;
4831
4832 IF (leg_info%ISOPEN) THEN
4833 CLOSE leg_info;
4834 END IF;
4835
4836 IF (detail_info%ISOPEN) THEN
4837 CLOSE detail_info;
4838 END IF;
4839
4840 IF (freight_costs_exist%ISOPEN) THEN
4841 CLOSE freight_costs_exist;
4842 END IF;
4843
4844 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DELETE_DELIVERY');
4845 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4846
4847 IF l_debug_on THEN
4848 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4849 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
4850 END IF;
4851 --
4852 END Check_Delete_Delivery;
4853
4854
4855
4856 -----------------------------------------------------------------------------
4857 --
4858 -- Procedure: Check_Change_Carrier
4859 -- Parameters: p_delivery_id, x_return_status
4860 -- Description: Checks for Change Carrier action pre-requisites which are
4861 -- - Delivery status is OPEN or PACKED
4862 -- - If GROUP_BY_CARRIER_FLAG is set then delivery details do not have a Ship Method specified
4863 --
4864 -----------------------------------------------------------------------------
4865
4866 PROCEDURE Check_Change_Carrier ( p_delivery_id IN NUMBER,
4867 x_return_status OUT NOCOPY VARCHAR2) IS
4868
4869 CURSOR delivery_status IS
4870 SELECT status_code,
4871 organization_id
4872 FROM wsh_new_deliveries
4873 WHERE delivery_id = p_delivery_id;
4874
4875 CURSOR detail_info IS
4876 SELECT count(*)
4877 FROM wsh_delivery_assignments_v da,
4878 wsh_delivery_details dd
4879 WHERE da.delivery_id = p_delivery_id AND
4880 da.delivery_id IS NOT NULL AND
4881 da.delivery_detail_id = dd.delivery_detail_id AND
4882 dd.ship_method_code IS NULL AND
4883 nvl(dd.container_flag,'N') <> 'Y';
4884
4885 l_del_status VARCHAR2(2);
4886 l_detail_num NUMBER;
4887 l_org_id NUMBER;
4888
4889 l_group_by_attr wsh_delivery_autocreate.group_by_flags_rec_type;
4890 l_return_status VARCHAR2(1);
4891 others EXCEPTION;
4892
4893 --
4894 l_debug_on BOOLEAN;
4895 --
4896 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_CHANGE_CARRIER';
4897 --
4898 BEGIN
4899
4900 --
4901 -- Debug Statements
4902 --
4903 --
4904 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4905 --
4906 IF l_debug_on IS NULL
4907 THEN
4908 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4909 END IF;
4910 --
4911 IF l_debug_on THEN
4912 WSH_DEBUG_SV.push(l_module_name);
4913 --
4914 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
4915 END IF;
4916 --
4917 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4918
4919 OPEN delivery_status;
4920 FETCH delivery_status INTO l_del_status, l_org_id;
4921
4922 IF (delivery_status%NOTFOUND) THEN
4923 CLOSE delivery_status;
4924 raise others;
4925 END IF;
4926
4927 CLOSE delivery_status;
4928
4929 IF (l_del_status <> 'OP') AND (l_del_status <> 'PA') THEN
4930 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_NOT_OP_PA_STATUS');
4931 --
4932 -- Debug Statements
4933 --
4934 IF l_debug_on THEN
4935 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
4936 END IF;
4937 --
4938 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
4939 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4940 wsh_util_core.add_message(x_return_status);
4941 --
4942 -- Debug Statements
4943 --
4944 IF l_debug_on THEN
4945 WSH_DEBUG_SV.pop(l_module_name);
4946 END IF;
4947 --
4948 RETURN;
4949 END IF;
4950
4951 IF (l_org_id IS NULL) THEN
4952 raise others;
4953 ELSE
4954 --
4955 -- Debug Statements
4956 --
4957 IF l_debug_on THEN
4958 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_AUTOCREATE.GET_GROUP_BY_ATTR',WSH_DEBUG_SV.C_PROC_LEVEL);
4959 END IF;
4960 --
4961 wsh_delivery_autocreate.get_group_by_attr( p_organization_id => l_org_id,
4962 x_group_by_flags => l_group_by_attr,
4963 x_return_status => l_return_status);
4964
4965 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
4966 x_return_status := l_return_status;
4967 --
4968 -- Debug Statements
4969 --
4970 IF l_debug_on THEN
4971 WSH_DEBUG_SV.pop(l_module_name);
4972 END IF;
4973 --
4974 RETURN;
4975 END IF;
4976
4977 END IF;
4978
4979 IF (l_group_by_attr.ship_method = 'Y') THEN
4980 OPEN detail_info;
4981 FETCH detail_info INTO l_detail_num;
4982 CLOSE detail_info;
4983
4984 IF (l_detail_num <> 0) AND (l_detail_num IS NOT NULL) THEN
4985 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_CHANGE_SH_M_ERROR');
4986 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4987 wsh_util_core.add_message(x_return_status);
4988 END IF;
4989 END IF;
4990
4991 --
4992 -- Debug Statements
4993 --
4994 IF l_debug_on THEN
4995 WSH_DEBUG_SV.pop(l_module_name);
4996 END IF;
4997 --
4998 EXCEPTION
4999 WHEN others THEN
5000 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_CHANGE_CARRIER');
5001 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5002
5003 --
5004 -- Debug Statements
5005 --
5006 IF l_debug_on THEN
5007 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
5008 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
5009 END IF;
5010 --
5011 END Check_Change_Carrier;
5012
5013 PROCEDURE Get_Disabled_List(
5014 p_delivery_id IN NUMBER
5015 , p_list_type IN VARCHAR2
5016 , x_return_status OUT NOCOPY VARCHAR2
5017 , x_disabled_list OUT NOCOPY wsh_util_core.column_tab_type
5018 , x_msg_count OUT NOCOPY NUMBER
5019 , x_msg_data OUT NOCOPY VARCHAR2
5020 , p_caller IN VARCHAR2 -- DEFAULT NULL, --3509004:public api changes
5021 )
5022 IS
5023 CURSOR get_delivery_status
5024 IS
5025 SELECT status_code, planned_flag, organization_id,
5026 nvl(shipment_direction,'O') shipment_direction -- J-IB-NPARIKH
5027 , INITIAL_PICKUP_LOCATION_ID, --3509004:public api changes
5028 delivery_type -- MDC
5029 FROM wsh_new_deliveries
5030 WHERE delivery_id = p_delivery_id;
5031
5032 CURSOR has_delivery_lines
5033 IS
5034 SELECT delivery_detail_id
5035 FROM wsh_delivery_assignments_v
5036 WHERE delivery_id = p_delivery_id
5037 AND ROWNUM=1;
5038
5039 CURSOR has_delivery_legs
5040 IS
5041 SELECT delivery_leg_id
5042 FROM wsh_delivery_legs
5043 WHERE delivery_id = p_delivery_id
5044 AND ROWNUM=1;
5045
5046 l_detail_id NUMBER;
5047 i NUMBER := 0;
5048 WSH_DP_NO_ENTITY EXCEPTION;
5049 WSH_INV_LIST_TYPE EXCEPTION;
5050 l_status_code VARCHAR2(2);
5051 l_planned_flag VARCHAR2(1);
5052 l_shipment_direction VARCHAR2(30);
5053 l_organization_id NUMBER;
5054 l_msg_summary VARCHAR2(2000) := NULL;
5055 l_msg_details VARCHAR2(4000) := NULL;
5056 l_assigned_to_trip VARCHAR2(1);
5057 l_delivery_leg_id NUMBER;
5058 --3509004:public api changes
5059 e_all_disabled EXCEPTION ;
5060 l_shipping_control VARCHAR2(30);
5061 l_routing_response_id NUMBER;
5062 l_routing_request_flag VARCHAR2(30);
5063 l_initial_pickup_location_id NUMBER;
5064 l_delivery_type VARCHAR2(30);
5065
5066 l_return_status VARCHAR2(30);
5067
5068 --
5069 l_debug_on BOOLEAN;
5070 --
5071 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_DISABLED_LIST';
5072
5073 BEGIN
5074 --
5075 -- Debug Statements
5076 --
5077 --
5078 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
5079 --
5080 IF l_debug_on IS NULL
5081 THEN
5082 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
5083 END IF;
5084 --
5085 IF l_debug_on THEN
5086 WSH_DEBUG_SV.push(l_module_name);
5087 --
5088 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
5089 WSH_DEBUG_SV.log(l_module_name,'P_LIST_TYPE',P_LIST_TYPE);
5090 END IF;
5091 --
5092 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
5093
5094 -- clear the disabled list
5095 x_disabled_list.delete;
5096
5097 OPEN get_delivery_status;
5098 FETCH get_delivery_status INTO l_status_code, l_planned_flag, l_organization_id, l_shipment_direction,
5099 l_initial_pickup_location_id, --3509004:public api changes
5100 l_delivery_type; -- MDC
5101 IF (get_delivery_status%NOTFOUND) THEN
5102 CLOSE get_delivery_status;
5103 RAISE WSH_DP_NO_ENTITY;
5104 END IF;
5105 CLOSE get_delivery_status;
5106
5107 -- Check if delivery is assigned to a trip or not
5108 OPEN has_delivery_legs;
5109 FETCH has_delivery_legs INTO l_delivery_leg_id;
5110 IF (has_delivery_legs%NOTFOUND) THEN
5111 CLOSE has_delivery_legs;
5112 l_assigned_to_trip := 'N';
5113 ELSE
5114 CLOSE has_delivery_legs;
5115 l_assigned_to_trip := 'Y';
5116 END IF;
5117
5118
5119 IF (l_status_code IN ('CO', 'IT', 'CL')) THEN
5120 i:=i+1; x_disabled_list(i) := 'FULL';
5121 i:=i+1; x_disabled_list(i) := 'GLOBALIZATION_FLEXFIELD';
5122 i:=i+1; x_disabled_list(i) := 'TP_FLEXFIELD';
5123 i:=i+1; x_disabled_list(i) := 'DESC_FLEX';
5124 IF (l_status_code = 'CO') THEN
5125 i:=i+1; x_disabled_list(i) := 'ADDITIONAL_SHIPMENT_INFO';
5126 i:=i+1; x_disabled_list(i) := 'DOCK_CODE';
5127 ELSIF (l_status_code = 'IT') THEN
5128 i:=i+1; x_disabled_list(i) := 'ADDITIONAL_SHIPMENT_INFO';
5129 i:=i+1; x_disabled_list(i) := 'DOCK_CODE';
5130 i:=i+1; x_disabled_list(i) := '+ACCEPTANCE_FLAG';
5131 i:=i+1; x_disabled_list(i) := '+ACCEPTED_BY';
5132 i:=i+1; x_disabled_list(i) := '+ACCEPTED_DATE';
5133 i:=i+1; x_disabled_list(i) := '+ACKNOWLEDGED_BY';
5134 ELSIF (l_status_code = 'CL') THEN
5135 i:=i+1; x_disabled_list(i) := '+ACCEPTANCE_FLAG';
5136 i:=i+1; x_disabled_list(i) := '+ACCEPTED_BY';
5137 i:=i+1; x_disabled_list(i) := '+ACCEPTED_DATE';
5138 i:=i+1; x_disabled_list(i) := '+ACKNOWLEDGED_BY';
5139 END IF;
5140 --
5141 -- J-IB-NPARIKH-{
5142 --
5143 IF l_shipment_direction NOT IN ('O','IO')
5144 AND l_status_code IN ('IT', 'CL')
5145 THEN
5146 --{
5147 --
5148 -- Weight/Volume/No of LPN are updateable
5149 -- for in-transit/closed inbound (not O/IO) deliveries
5150 --
5151 i:=i+1; x_disabled_list(i) := 'GROSS_WEIGHT';
5152 i:=i+1; x_disabled_list(i) := 'TARE_WEIGHT';
5153 i:=i+1; x_disabled_list(i) := 'NET_WEIGHT';
5154 i:=i+1; x_disabled_list(i) := 'WEIGHT_UOM_CODE';
5155 i:=i+1; x_disabled_list(i) := 'VOLUME';
5156 i:=i+1; x_disabled_list(i) := 'VOLUME_UOM_CODE';
5157 i:=i+1; x_disabled_list(i) := 'NUMBER_OF_LPN';
5158 -- Bug 4539613: Proration is allowed for in-transit/closed inbound deliveries.
5159 i:=i+1; x_disabled_list(i) := 'PRORATE_WT_FLAG';
5160 --
5161 --
5162 IF l_assigned_to_trip = 'N'
5163 THEN
5164 --{
5165 --
5166 -- Ship method/carrier/mode/service level updateable (only if NULL)
5167 -- for in-transit/closed inbound (not O/IO) deliveries
5168 --
5169 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5170 i:=i+1; x_disabled_list(i) := '+SHIP_METHOD_CODE';
5171 i:=i+1; x_disabled_list(i) := '+CARRIER_ID';
5172 i:=i+1; x_disabled_list(i) := '+SERVICE_LEVEL';
5173 i:=i+1; x_disabled_list(i) := '+MODE_OF_TRANSPORT';
5174 ELSE
5175 i:=i+1; x_disabled_list(i) := '+SHIP_METHOD_NAME';
5176 i:=i+1; x_disabled_list(i) := '+FREIGHT_CODE';
5177 i:=i+1; x_disabled_list(i) := '+SERVICE_LEVEL_NAME';
5178 i:=i+1; x_disabled_list(i) := '+MODE_OF_TRANSPORT_NAME';
5179 END IF;
5180 --}
5181 END IF;
5182 --
5183 --
5184 -- Waybill updateable for in-transit inbound (not O/IO) deliveries
5185 --
5186 IF l_status_code = 'IT'
5187 THEN
5188 i:=i+1; x_disabled_list(i) := 'WAYBILL';
5189 END IF;
5190 --
5191 --}
5192 END IF;
5193 --
5194 -- J-IB-NPARIKH-}
5195 --
5196 IF (p_list_type = 'FORM') THEN
5197 NULL; /* more form field name */
5198 ELSIF (p_list_type = 'TABLE') THEN
5199 NULL; /* table columns */
5200 ELSE
5201 RAISE WSH_INV_LIST_TYPE;
5202 END IF;
5203
5204 ELSIF (l_status_code = 'PA') THEN
5205 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5206 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_ID';
5207 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_ID';
5208 i:=i+1; x_disabled_list(i) := 'CUSTOMER_ID';
5209 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_ID';
5210 ELSE
5211 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_CODE';
5212 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_CODE';
5213 i:=i+1; x_disabled_list(i) := 'CUSTOMER_NAME';
5214 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_CODE';
5215 END IF;
5216
5217 i:=i+1; x_disabled_list(i) := 'LOADING_ORDER_FLAG';
5218 i:=i+1; x_disabled_list(i) := 'ACCEPTANCE_FLAG';
5219 i:=i+1; x_disabled_list(i) := 'ACCEPTED_BY';
5220 i:=i+1; x_disabled_list(i) := 'ACCEPTED_DATE';
5221 i:=i+1; x_disabled_list(i) := 'ACKNOWLEDGED_BY';
5222 i:=i+1; x_disabled_list(i) := '+CONFIRMED_BY';
5223 i:=i+1; x_disabled_list(i) := 'CURRENCY_CODE';
5224 IF (l_planned_flag IN ('Y','F')) THEN
5225 i:=i+1; x_disabled_list(i) := 'NAME';
5226 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_DATE';
5227 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_DATE';
5228 IF (l_planned_flag ='F') THEN
5229 i:=i+1; x_disabled_list(i) := 'LOADING_SEQUENCE';
5230 END IF;
5231 IF (l_assigned_to_trip = 'Y') THEN
5232 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5233 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_CODE';
5234 i:=i+1; x_disabled_list(i) := 'CARRIER_ID';
5235 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL';
5236 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT';
5237 ELSE
5238 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_NAME';
5239 i:=i+1; x_disabled_list(i) := 'FREIGHT_CODE';
5240 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL_NAME';
5241 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT_NAME';
5242 END IF;
5243 END IF;
5244 ELSE
5245 IF (l_assigned_to_trip = 'Y') THEN
5246 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_DATE';
5247 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_DATE';
5248 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5249 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_CODE';
5250 i:=i+1; x_disabled_list(i) := 'CARRIER_ID';
5251 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL';
5252 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT';
5253 ELSE
5254 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_NAME';
5255 i:=i+1; x_disabled_list(i) := 'FREIGHT_CODE';
5256 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL_NAME';
5257 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT_NAME';
5258 END IF;
5259 END IF;
5260 END IF; -- if planned
5261
5262 /* H integration: data protection wrudge */
5263 ELSIF (l_status_code IN ('OP', 'SA', 'SR', 'SC')) THEN
5264 i:=i+1; x_disabled_list(i) := 'ACCEPTANCE_FLAG';
5265 i:=i+1; x_disabled_list(i) := 'ACCEPTED_BY';
5266 i:=i+1; x_disabled_list(i) := 'ACCEPTED_DATE';
5267 i:=i+1; x_disabled_list(i) := 'ACKNOWLEDGED_BY';
5268 i:=i+1; x_disabled_list(i) := '+CONFIRMED_BY';
5269
5270 --"Proration of weight from Delivery to delivery lines" Project(Bug#4254552).
5271 IF l_status_code IN ('SA', 'SR', 'SC') THEN
5272 i:=i+1; x_disabled_list(i) := 'PRORATE_WT_FLAG';
5273 END IF;
5274
5275 --{ J-IB-NPARIKH
5276 --
5277 -- No updates on freight term for inbound delivery (not O/IO)
5278 --
5279 IF l_shipment_direction NOT IN ('O','IO')
5280 THEN
5281 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5282 i:=i+1; x_disabled_list(i) := 'FREIGHT_TERMS_CODE';
5283 ELSE
5284 i:=i+1; x_disabled_list(i) := 'FREIGHT_TERMS_NAME';
5285 END IF;
5286 END IF;
5287 --} J-IB-NPARIKH
5288 --
5289 --
5290 /* H integration: data protection wrudge */
5291 IF (l_status_code IN ('SR', 'SC')) THEN
5292 -- Outbound document has been sent for this delivery.
5293 i:=i+1; x_disabled_list(i) := 'NAME';
5294 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5295 i:=i+1; x_disabled_list(i) := 'INTMED_SHIP_TO_LOCATION_ID';
5296 i:=i+1; x_disabled_list(i) := 'POOLED_SHIP_TO_LOCATION_ID';
5297 i:=i+1; x_disabled_list(i) := 'FOB_CODE';
5298 i:=i+1; x_disabled_list(i) := 'FOB_LOCATION_ID';
5299 i:=i+1; x_disabled_list(i) := 'FREIGHT_TERMS_CODE';
5300 ELSE
5301 i:=i+1; x_disabled_list(i) := 'INTMED_SHIP_TO_LOCATION_CODE';
5302 i:=i+1; x_disabled_list(i) := 'POOLED_SHIP_TO_LOCATION_CODE';
5303 i:=i+1; x_disabled_list(i) := 'FOB_NAME';
5304 i:=i+1; x_disabled_list(i) := 'FOB_LOCATION_CODE';
5305 i:=i+1; x_disabled_list(i) := 'FREIGHT_TERMS_NAME';
5306 END IF;
5307 i:=i+1; x_disabled_list(i) := 'WAYBILL';
5308 i:=i+1; x_disabled_list(i) := 'GROSS_WEIGHT';
5309 i:=i+1; x_disabled_list(i) := 'TARE_WEIGHT';
5310 i:=i+1; x_disabled_list(i) := 'NET_WEIGHT';
5311 i:=i+1; x_disabled_list(i) := 'WEIGHT_UOM_CODE';
5312 i:=i+1; x_disabled_list(i) := 'VOLUME';
5313 i:=i+1; x_disabled_list(i) := 'VOLUME_UOM_CODE';
5314 i:=i+1; x_disabled_list(i) := 'NUMBER_OF_LPN';
5315
5316 -- treat deliveries sent outbound as planned and assigned to trip.
5317 l_planned_flag := 'Y';
5318 l_assigned_to_trip := 'Y';
5319 END IF;
5320
5321 --J TP Release : firm del will always have a trip
5322 IF (l_planned_flag IN ('Y','F')) THEN
5323 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5324 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_ID';
5325 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_ID';
5326 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_ID';
5327 i:=i+1; x_disabled_list(i) := 'CUSTOMER_ID';
5328 ELSE
5329 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_CODE';
5330 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_CODE';
5331 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_CODE';
5332 i:=i+1; x_disabled_list(i) := 'CUSTOMER_NAME';
5333 END IF;
5334 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_DATE';
5335 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_DATE';
5336 i:=i+1; x_disabled_list(i) := 'LOADING_ORDER_FLAG';
5337 i:=i+1; x_disabled_list(i) := 'CURRENCY_CODE';
5338 IF (l_planned_flag ='F') THEN
5339 i:=i+1; x_disabled_list(i) := 'LOADING_SEQUENCE';
5340 END IF;
5341
5342 IF (l_assigned_to_trip = 'Y') THEN
5343 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5344 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_CODE';
5345 i:=i+1; x_disabled_list(i) := 'CARRIER_ID';
5346 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL';
5347 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT';
5348 ELSE
5349 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_NAME';
5350 i:=i+1; x_disabled_list(i) := 'FREIGHT_CODE';
5351 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL_NAME';
5352 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT_NAME';
5353 END IF;
5354 END IF;
5355 ELSE -- if not planned
5356 IF (l_assigned_to_trip = 'Y') THEN
5357 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5358 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_ID';
5359 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_ID';
5360 i:=i+1; x_disabled_list(i) := 'CUSTOMER_ID';
5361 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_ID';
5362 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_CODE';
5363 i:=i+1; x_disabled_list(i) := 'CARRIER_ID';
5364 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL';
5365 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT';
5366 ELSE
5367 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_CODE';
5368 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_CODE';
5369 i:=i+1; x_disabled_list(i) := 'CUSTOMER_NAME';
5370 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_CODE';
5371 i:=i+1; x_disabled_list(i) := 'SHIP_METHOD_NAME';
5372 i:=i+1; x_disabled_list(i) := 'FREIGHT_CODE';
5373 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL_NAME';
5374 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT_NAME';
5375 END IF;
5376 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_DATE';
5377 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_DATE';
5378 END IF;
5379 -- check in the delivery has delivery lines
5380 OPEN has_delivery_lines;
5381 FETCH has_delivery_lines INTO l_detail_id;
5382 IF (has_delivery_lines%NOTFOUND) THEN
5383 NULL;
5384 CLOSE has_delivery_lines;
5385 ELSE
5386 CLOSE has_delivery_lines;
5387 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5388 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_ID';
5389 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_ID';
5390 i:=i+1; x_disabled_list(i) := 'CUSTOMER_ID';
5391 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_ID';
5392 ELSE
5393 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_CODE';
5394 i:=i+1; x_disabled_list(i) := 'ULTIMATE_DROPOFF_LOCATION_CODE';
5395 i:=i+1; x_disabled_list(i) := 'CUSTOMER_NAME';
5396 i:=i+1; x_disabled_list(i) := 'ORGANIZATION_CODE';
5397 END IF;
5398 i:=i+1; x_disabled_list(i) := 'CURRENCY_CODE';
5399 END IF;
5400 END IF;
5401
5402 -- MDC: disable wt/vol related fields for a consol delivery
5403
5404 IF l_delivery_type = 'CONSOLIDATION' THEN
5405
5406 i:=i+1; x_disabled_list(i) := 'GROSS_WEIGHT';
5407 i:=i+1; x_disabled_list(i) := 'NET_WEIGHT';
5408 i:=i+1; x_disabled_list(i) := 'TARE_WEIGHT';
5409 i:=i+1; x_disabled_list(i) := 'WEIGHT_UOM_CODE';
5410 i:=i+1; x_disabled_list(i) := 'VOLUME';
5411 i:=i+1; x_disabled_list(i) := 'VOLUME_UOM_CODE';
5412 i:=i+1; x_disabled_list(i) := 'PRORATE_WT_FLAG';
5413
5414 END IF;
5415
5416 END IF;
5417
5418 -- J-IB-NPARIKH-{
5419 --3509004:public api changes
5420 --
5421 -- Update on inbound/drop-ship deliveries are allowed only if caller
5422 -- starts with one of the following:
5423 -- - FTE
5424 -- - WSH_IB
5425 -- - WSH_PUB
5426 -- - WSH_TP_RELEASE
5427 --
5428 IF NVL(l_shipment_direction,'O') NOT IN ('O','IO')
5429 AND NVL(p_caller, '!!!') NOT LIKE 'FTE%'
5430 AND NVL(p_caller, '!!!') NOT LIKE 'WSH_PUB%'
5431 AND NVL(p_caller, '!!!') NOT LIKE 'WSH_IB%'
5432 AND NVL(p_caller, '!!!') NOT LIKE 'WSH_TP_RELEASE%'
5433 THEN
5434 RAISE e_all_disabled;
5435 END IF;
5436
5437 IF NVL(l_shipment_direction,'O') NOT IN ('O','IO')
5438 AND l_status_code IN ('IT', 'CL')
5439 AND l_initial_pickup_location_id = WSH_UTIL_CORE.C_NULL_SF_LOCN_ID
5440 THEN
5441 --{
5442 --
5443 -- For in-transit/closed inbound deliveries (not O/IO),
5444 -- update of initial pickup location is allowed if Null AND
5445 -- - supplier is managing transportation
5446 -- OR
5447 -- - routing request was not received for all delivery lines
5448 --
5449 IF l_debug_on THEN
5450 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit GET_SHIPPING_CONTROL',WSH_DEBUG_SV.C_PROC_LEVEL);
5451 END IF;
5452 --
5453 GET_SHIPPING_CONTROL
5454 (
5455 p_delivery_id => p_delivery_id,
5456 x_shipping_control => l_shipping_control,
5457 x_routing_response_id => l_routing_response_id,
5458 x_routing_request_flag => l_routing_request_flag,
5459 x_return_status => l_return_status
5460 );
5461 --
5462 --
5463 IF l_debug_on THEN
5464 wsh_debug_sv.log(l_module_name, 'l_return_status', l_return_status);
5465 wsh_debug_sv.log(l_module_name, 'l_shipping_control', l_shipping_control);
5466 wsh_debug_sv.log(l_module_name, 'l_routing_response_id', l_routing_response_id);
5467 wsh_debug_sv.log(l_module_name, 'l_routing_request_flag', l_routing_request_flag);
5468 --
5469 END IF;
5470 --
5471 --
5472 IF l_return_status = wsh_util_core.g_ret_sts_unexp_error THEN
5473 raise FND_API.G_EXC_UNEXPECTED_ERROR;
5474 ELSIF l_return_status = wsh_util_core.g_ret_sts_error THEN
5475 raise FND_API.G_EXC_ERROR;
5476 END IF;
5477 --
5478 --
5479 IF l_shipping_control = 'SUPPLIER'
5480 OR l_routing_request_flag = 'N'
5481 THEN
5482 IF NVL(p_caller,'!!!') LIKE 'FTE%' THEN --3509004:public api changes
5483 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_ID';
5484 ELSE
5485 i:=i+1; x_disabled_list(i) := 'INITIAL_PICKUP_LOCATION_CODE';
5486 END IF;
5487 END IF;
5488 --}
5489 END IF;
5490 --
5491 -- J-IB-NPARIKH-}
5492
5493
5494 -- Commented FTE_IS_INSTALLED If condition for Bug-2801799
5495 /***
5496 IF ( WSH_UTIL_CORE.FTE_Is_Installed ='N' ) THEN
5497 -- Bug Fix 2780610 added the below if condition --
5498 IF (l_status_code IN ('OP','SA','PA')) THEN
5499 i:=i+1; x_disabled_list(i) := 'FREIGHT_CODE';
5500 i:=i+1; x_disabled_list(i) := 'SERVICE_LEVEL_NAME';
5501 i:=i+1; x_disabled_list(i) := 'MODE_OF_TRANSPORT_NAME';
5502 END IF;
5503 END IF;
5504 ***/
5505
5506 --
5507 -- Debug Statements
5508 --
5509 IF l_debug_on THEN
5510 WSH_DEBUG_SV.pop(l_module_name);
5511 END IF;
5512 --
5513 EXCEPTION
5514 WHEN e_all_disabled THEN --3509004:public api changes
5515 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
5516 FND_MESSAGE.SET_NAME('WSH','WSH_ALL_COLS_DISABLED');
5517 FND_MESSAGE.Set_Token('ENTITY_ID',p_delivery_id);
5518 wsh_util_core.add_message(x_return_status,l_module_name);
5519 IF l_debug_on THEN
5520 -- Nothing is updateable
5521 WSH_DEBUG_SV.pop(l_module_name,'e_all_disabled');
5522 END IF;
5523
5524
5525 WHEN wsh_dp_no_entity THEN
5526 x_return_status := FND_API.G_RET_STS_ERROR;
5527 FND_MESSAGE.SET_NAME('WSH', 'WSH_DP_NO_ENTITY');
5528 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
5529 WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
5530 IF x_msg_count > 1 then
5531 x_msg_data := l_msg_summary || l_msg_details;
5532 ELSE
5533 x_msg_data := l_msg_summary;
5534 END IF;
5535
5536 --
5537 -- Debug Statements
5538 --
5539 IF l_debug_on THEN
5540 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_DP_NO_ENTITY exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
5541 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_DP_NO_ENTITY');
5542 END IF;
5543 --
5544 WHEN wsh_inv_list_type THEN
5545 x_return_status := FND_API.G_RET_STS_ERROR;
5546 FND_MESSAGE.SET_NAME('WSH', 'WSH_INV_LIST_TYPE');
5547 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
5548 WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
5549 IF x_msg_count > 1 then
5550 x_msg_data := l_msg_summary || l_msg_details;
5551 ELSE
5552 x_msg_data := l_msg_summary;
5553 END IF;
5554
5555 --
5556 -- Debug Statements
5557 --
5558 IF l_debug_on THEN
5559 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INV_LIST_TYPE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
5560 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INV_LIST_TYPE');
5561 END IF;
5562 --
5563 WHEN others THEN
5564 IF (get_delivery_status%ISOPEN) THEN
5565 CLOSE get_delivery_status;
5566 END IF;
5567 IF (has_delivery_lines%ISOPEN) THEN
5568 CLOSE has_delivery_lines;
5569 END IF;
5570 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.get_disabled_list');
5571 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5572
5573 --
5574 -- Debug Statements
5575 --
5576 IF l_debug_on THEN
5577 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
5578 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
5579 END IF;
5580 --
5581 END Get_Disabled_List;
5582
5583 -----------------------------------------------------------------------------
5584 --
5585 -- Function: Check_SS_Imp_Pending
5586 -- Parameters: p_source_code,
5587 -- p_source_header_id, p_ship_set_id, p_check_transactable,
5588 -- x_return_status
5589 -- p_check_transactable: If p_check_transactable is Y then
5590 -- check whether any transactable
5591 -- line is not imported
5592 -- else
5593 -- check whether any line is not imported
5594 -- Description: Checks if any lines in the ship set are not yet imported
5595 -- FALSE - All lines are imported into shipping
5596 -- TRUE - Some lines are not imported into shipping
5597 --
5598 -----------------------------------------------------------------------------
5599
5600 FUNCTION Check_SS_Imp_Pending(
5601 p_source_code IN VARCHAR2
5602 , p_source_header_id IN NUMBER
5603 , p_ship_set_id IN NUMBER
5604 , p_check_transactable IN VARCHAR2
5605 , x_return_status OUT NOCOPY VARCHAR2
5606 ) return BOOLEAN IS
5607 cursor c_pending_lines IS
5608 SELECT oel.line_id
5609 FROM oe_order_lines_all oel,
5610 mtl_system_items msi
5611 WHERE oel.header_id = p_source_header_id
5612 AND oel.ship_set_id = p_ship_set_id
5613 AND oel.inventory_item_id = msi.inventory_item_id
5614 and oel.ship_from_org_id = msi.organization_id
5615 and ((p_check_transactable = 'N') or (p_check_transactable = 'Y' AND msi.mtl_transactions_enabled_flag = 'Y'))
5616 AND oel.shipping_interfaced_flag = 'N'
5617 AND (oel.shippable_flag = 'Y' or
5618 (EXISTS (SELECT 'Y'
5619 FROM oe_order_lines_all oel1
5620 WHERE oel1.header_id = p_source_header_id
5621 AND oel1.ship_set_id = p_ship_set_id
5622 AND oel1.ato_line_id = oel1.line_id
5623 AND oel1.item_type_code in ('MODEL','CLASS')
5624 AND NOT EXISTS (SELECT 'Y'
5625 FROM oe_order_lines_all oel2
5626 WHERE oel2.top_model_line_id = oel1.top_model_line_id
5627 AND oel2.ato_line_id = oel1.ato_line_id
5628 AND oel2.item_type_code = 'CONFIG')
5629 )
5630 )
5631 );
5632 l_lines_exist BOOLEAN;
5633 l_line_id NUMBER;
5634 --
5635 l_debug_on BOOLEAN;
5636 --
5637 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_SS_IMP_PENDING';
5638 --
5639 BEGIN
5640
5641 --
5642 -- Debug Statements
5643 --
5644 --
5645 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
5646 --
5647 IF l_debug_on IS NULL
5648 THEN
5649 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
5650 END IF;
5651 --
5652 IF l_debug_on THEN
5653 WSH_DEBUG_SV.push(l_module_name);
5654 --
5655 WSH_DEBUG_SV.log(l_module_name,'P_SOURCE_CODE',P_SOURCE_CODE);
5656 WSH_DEBUG_SV.log(l_module_name,'P_SOURCE_HEADER_ID',P_SOURCE_HEADER_ID);
5657 WSH_DEBUG_SV.log(l_module_name,'P_SHIP_SET_ID',P_SHIP_SET_ID);
5658 WSH_DEBUG_SV.log(l_module_name,'P_CHECK_TRANSACTABLE',P_CHECK_TRANSACTABLE);
5659 END IF;
5660 --
5661 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
5662
5663 IF p_source_code <> 'OE' THEN
5664 -- assume everything is imported.
5665 --
5666 -- Debug Statements
5667 --
5668 IF l_debug_on THEN
5669 WSH_DEBUG_SV.pop(l_module_name);
5670 END IF;
5671 --
5672 RETURN TRUE;
5673 END IF;
5674
5675 l_lines_exist := FALSE;
5676 --
5677 -- Debug Statements
5678 --
5679 IF l_debug_on THEN
5680 WSH_DEBUG_SV.logmsg(l_module_name, 'CHECKING FOR LINES NOT IMPORTED IN SHIP SET '||P_SHIP_SET_ID||' HEADER '||P_SOURCE_HEADER_ID );
5681 END IF;
5682 --
5683 /* Need to replace the following with OM API once it is available */
5684 OPEN c_pending_lines;
5685 FETCH c_pending_lines
5686 INTO l_line_id;
5687 IF (c_pending_lines%NOTFOUND) THEN
5688 l_lines_exist := FALSE;
5689 ELSE
5690 l_lines_exist := TRUE;
5691 --
5692 -- Debug Statements
5693 --
5694 IF l_debug_on THEN
5695 WSH_DEBUG_SV.logmsg(l_module_name, 'LINE '||L_LINE_ID||' IS NOT IMPORTED' );
5696 END IF;
5697 --
5698 END IF;
5699 CLOSE c_pending_lines;
5700
5701 --
5702 -- Debug Statements
5703 --
5704 IF l_debug_on THEN
5705 WSH_DEBUG_SV.pop(l_module_name);
5706 END IF;
5707 --
5708 return l_lines_exist;
5709
5710 EXCEPTION
5711 WHEN OTHERS THEN
5712 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.Check_SS_Imp_Pending');
5713 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5714 --
5715 -- Debug Statements
5716 --
5717 IF l_debug_on THEN
5718 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
5719 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
5720 END IF;
5721 --
5722 END Check_SS_Imp_Pending;
5723
5724 -- This procedure added for bug 2074768
5725
5726 -- HW OPM Added x_max_quantity2
5727 PROCEDURE Check_Delivery_for_tolerances ( p_delivery_id IN NUMBER,
5728 x_source_line_id OUT NOCOPY NUMBER,
5729 x_source_code OUT NOCOPY VARCHAR,
5730 x_max_quantity OUT NOCOPY NUMBER,
5731 x_max_quantity2 OUT NOCOPY NUMBER,
5732 x_return_status OUT NOCOPY VARCHAR2 ) is
5733
5734 -- HW OPM retrieve organization to check if line is OPM/Discrete
5735 CURSOR c_del_lines ( v_delivery_id in number ) is
5736 select distinct
5737 dd.source_line_id,
5738 dd.source_code,
5739 dd.source_line_number,
5740 dd.source_header_id,
5741 dd.source_header_number,
5742 dd.source_header_type_name,
5743 dd.organization_id,
5744 dd.source_line_set_id, -- Bug 2181132
5745 dd.ship_tolerance_above, -- Bug 2181132
5746 dd.ship_tolerance_below, -- Bug 2181132
5747 dd.requested_quantity_uom, -- Bug 2181132
5748 dd.requested_quantity_uom2 -- Bug 2181132
5749 from wsh_delivery_assignments_v da,
5750 wsh_Delivery_details dd
5751 where dd.delivery_detail_id = da.delivery_detail_id
5752 and da.delivery_id = v_delivery_id
5753 and dd.container_flag = 'N'
5754 and dd.released_status <> 'D'
5755 and da.delivery_id is not null; /* added for performance */
5756
5757 /* csun bug 2401502 , check tolerance for lines with source_code other than OE */
5758 CURSOR c_detail_lines(v_source_code VARCHAR2, v_source_line_id NUMBER) is
5759 select sum( nvl(requested_quantity,0)) requested_quantity,
5760 sum( nvl(requested_quantity2,0)) requested_quantity2,
5761 ship_tolerance_above,
5762 ship_tolerance_below
5763 from wsh_delivery_details
5764 where source_code = v_source_code and
5765 source_line_id = v_source_line_id and
5766 container_flag = 'N'
5767 group by ship_tolerance_above,
5768 ship_tolerance_below;
5769 l_detail_lines c_detail_lines%ROWTYPE;
5770
5771
5772 l_source_header_number WSH_DELIVERY_DETAILS.SOURCE_HEADER_NUMBER%TYPE;
5773 l_source_header_type_name WSH_DELIVERY_DETAILS.SOURCE_HEADER_TYPE_NAME%TYPE;
5774
5775 -- HW OPM added qty2
5776 -- HW OPM added qty2 in the group by
5777 CURSOR c_total_line_quantities (v_source_line_id in number, v_source_code in varchar2, v_source_header_id IN NUMBER) is
5778 select sum( greatest ( nvl(shipped_quantity , 0) ,
5779 nvl(picked_quantity , requested_quantity )
5780 )
5781 ) expected_quantity ,
5782 sum( greatest ( nvl(shipped_quantity2 , 0) ,
5783 nvl(picked_quantity2 , requested_quantity2 )
5784 )
5785 ) expected_quantity2 ,
5786 src_requested_quantity_uom ,
5787 requested_quantity_uom ,
5788 src_requested_quantity_uom2 ,
5789 requested_quantity_uom2 ,
5790 inventory_item_id
5791 from wsh_delivery_details
5792 where source_line_id = v_source_line_id
5793 and released_status <> 'D'
5794 and source_code = v_source_code
5795 and container_flag = 'N'
5796 --Bug 3622571
5797 and source_header_id = v_source_header_id
5798 group by
5799 src_requested_quantity_uom ,
5800 requested_quantity_uom ,
5801 src_requested_quantity_uom2 ,
5802 requested_quantity_uom2 ,
5803 inventory_item_id;
5804
5805 -- HW OPM added qty2
5806 -- HW OPM added qty2 in the group by
5807 /* Get the qty on other deliveries or without deliveries but not on the
5808 delivery which is being ship confirmed */
5809 CURSOR c_total_other_line_qty (v_source_line_id in number,
5810 v_source_code in varchar2,
5811 v_source_header_id IN NUMBER) is
5812 select sum( greatest ( nvl(wdd.shipped_quantity , 0) ,
5813 nvl(wdd.picked_quantity , wdd.requested_quantity )
5814 )
5815 ) expected_quantity ,
5816 sum( greatest ( nvl(wdd.shipped_quantity2 , 0) ,
5817 nvl(wdd.picked_quantity2 , wdd.requested_quantity2 )
5818 )
5819 ) expected_quantity2 ,
5820 wdd.src_requested_quantity_uom ,
5821 wdd.requested_quantity_uom ,
5822 wdd.src_requested_quantity_uom2 ,
5823 wdd.requested_quantity_uom2 ,
5824 wdd.inventory_item_id
5825 from wsh_delivery_details wdd,
5826 wsh_delivery_assignments_v wda
5827 where wdd.source_line_id = v_source_line_id
5828 and wdd.released_status <> ('D')
5829 and wdd.source_code = v_source_code
5830 and wdd.delivery_detail_id = wda.delivery_detail_id
5831 and (wda.delivery_id IS NULL
5832 OR wda.delivery_id <> p_delivery_id)
5833 and wdd.container_flag = 'N'
5834 --Bug 3622571
5835 and wdd.source_header_id = v_source_header_id
5836 group by
5837 wdd.src_requested_quantity_uom ,
5838 wdd.requested_quantity_uom ,
5839 wdd.src_requested_quantity_uom2 ,
5840 wdd.requested_quantity_uom2 ,
5841 wdd.inventory_item_id;
5842
5843 l_total_other_line_qty c_total_other_line_qty%ROWTYPE;
5844
5845 l_total_quantities c_total_line_quantities%ROWTYPE;
5846 l_bad_quantities c_total_line_quantities%ROWTYPE;
5847
5848 l_max_quantity NUMBER;
5849 l_min_quantity NUMBER;
5850 l_max_quantity2 NUMBER;
5851 l_min_quantity2 NUMBER;
5852 l_source_line_number VARCHAR(150);
5853 l_source_line_set_id NUMBER;
5854
5855 l_line_max_quantity NUMBER;
5856 l_line_max_quantity2 NUMBER;
5857
5858 l_msg_count NUMBER ;
5859 l_msg_data VARCHAR2(2000);
5860 l_source_system VARCHAR2(80);
5861 l_return_status VARCHAR2(1);
5862
5863 -- 2181132
5864 l_minmaxinrectype WSH_DETAILS_VALIDATIONS.MinMaxInRecType;
5865 l_minmaxinoutrectype WSH_DETAILS_VALIDATIONS.MinMaxInOutRecType;
5866 l_minmaxoutrectype WSH_DETAILS_VALIDATIONS.MinMaxOutRecType;
5867 l_quantity_uom WSH_DELIVERY_DETAILS.requested_quantity_uom%TYPE;
5868 l_quantity_uom2 WSH_DELIVERY_DETAILS.requested_quantity_uom2%TYPE;
5869
5870 others EXCEPTION;
5871 tolerance_exceeded EXCEPTION;
5872 -- HW OPM
5873 -- HW OPMCONV. Removed OPM variables
5874
5875 --
5876 l_debug_on BOOLEAN;
5877 --
5878 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_DELIVERY_FOR_TOLERANCES';
5879 --
5880 BEGIN
5881
5882 --
5883 -- Debug Statements
5884 --
5885 --
5886 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
5887 --
5888 IF l_debug_on IS NULL
5889 THEN
5890 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
5891 END IF;
5892 --
5893 IF l_debug_on THEN
5894 WSH_DEBUG_SV.push(l_module_name);
5895 --
5896 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
5897 END IF;
5898 --
5899 FOR dl in c_del_lines (p_delivery_id )
5900 LOOP
5901
5902 -- anxsharm
5903 -- Bug 2181132
5904
5905 l_minmaxinrectype.source_code := dl.source_code;
5906 l_minmaxinrectype.line_id := dl.source_line_id;
5907 l_minmaxinrectype.source_header_id := dl.source_header_id;
5908 l_minmaxinrectype.source_line_set_id := dl.source_line_set_id;
5909 l_minmaxinrectype.ship_tolerance_above := dl.ship_tolerance_above;
5910 l_minmaxinrectype.ship_tolerance_below := dl.ship_tolerance_below;
5911 l_minmaxinrectype.action_flag := 'S'; -- ship confirm
5912 l_minmaxinrectype.lock_flag := 'N'; -- verify this in UT
5913 l_minmaxinrectype.quantity_uom := dl.requested_quantity_uom;
5914 l_minmaxinrectype.quantity_uom2 := dl.requested_quantity_uom2;
5915
5916 -- Debug Statements
5917 --
5918 IF l_debug_on THEN
5919 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DETAILS_VALIDATIONS.GET_MIN_MAX_TOLERANCE_QUANTITY',WSH_DEBUG_SV.C_PROC_LEVEL);
5920 END IF;
5921
5922 WSH_DETAILS_VALIDATIONS.get_min_max_tolerance_quantity
5923 (p_in_attributes => l_minmaxinrectype,
5924 x_out_attributes => l_minmaxoutrectype,
5925 p_inout_attributes => l_minmaxinoutrectype,
5926 x_return_status => l_return_status,
5927 x_msg_count => l_msg_count,
5928 x_msg_data => l_msg_data
5929 );
5930
5931 l_quantity_uom := l_minmaxoutrectype.quantity_uom;
5932 l_min_quantity := l_minmaxoutrectype.min_remaining_quantity;
5933 l_max_quantity := l_minmaxoutrectype.max_remaining_quantity;
5934 l_quantity_uom2 := l_minmaxoutrectype.quantity2_uom;
5935 l_min_quantity2 := l_minmaxoutrectype.min_remaining_quantity2;
5936 l_max_quantity2 := l_minmaxoutrectype.max_remaining_quantity2;
5937
5938
5939 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5940 raise others ;
5941 END IF;
5942
5943
5944 --Bug 3622571
5945 --Add source_header_id along with line_id and source_code
5946 --In TPW instance, same source_line_id and source_code combination can exist
5947 --for different header_ids
5948
5949 OPEN c_total_line_quantities ( dl.source_line_id , dl.source_code, dl.source_header_id ) ;
5950
5951 FETCH c_total_line_quantities into l_total_quantities ;
5952 if c_total_line_quantities%NOTFOUND then
5953 raise others ;
5954 end if ;
5955
5956 -- Making sure we have not hit an old data-corruption if the same order line has delivery
5957 -- details in two different UOMs or Items .
5958 LOOP
5959
5960 FETCH c_total_line_quantities into l_bad_quantities ;
5961 EXIT WHEN c_total_line_quantities%NOTFOUND;
5962
5963
5964 -- Bug 3430649, J Catchweights. Since the secondary uom for catchweight
5965 -- items is entered only after pick release, it is possible for a source
5966 -- line to have one detail with secondary uom populated and one without
5967 -- depending on the released status. We should handle this case w/o
5968 -- erroring out.
5969
5970 IF NVL(l_bad_quantities.requested_quantity_uom2, NVL(l_total_quantities.requested_quantity_uom2, FND_API.G_MISS_CHAR))
5971 = NVL(l_total_quantities.requested_quantity_uom2, NVL(l_bad_quantities.requested_quantity_uom2, FND_API.G_MISS_CHAR))
5972 AND NVL(l_total_quantities.src_requested_quantity_uom, FND_API.G_MISS_CHAR)
5973 = NVL(l_bad_quantities.src_requested_quantity_uom, FND_API.G_MISS_CHAR)
5974 AND l_total_quantities.requested_quantity_uom = l_bad_quantities.requested_quantity_uom
5975 AND NVL(l_total_quantities.inventory_item_id, FND_API.G_MISS_NUM)
5976 = NVL(l_bad_quantities.inventory_item_id, FND_API.G_MISS_NUM)
5977 THEN
5978 l_total_quantities.expected_quantity := l_total_quantities.expected_quantity
5979 + l_bad_quantities.expected_quantity;
5980 ELSE
5981 CLOSE c_total_line_quantities;
5982 FND_MESSAGE.SET_NAME('WSH','WSH_DATA_CORRUPTION');
5983 WSH_UTIL_CORE.ADD_MESSAGE(FND_API.G_RET_STS_ERROR);
5984 raise others ;
5985 END IF;
5986
5987 END LOOP;
5988
5989 CLOSE c_total_line_quantities ;
5990
5991 -- HW OPM Need to check the org for forking
5992 --
5993 -- Debug Statements
5994
5995
5996 IF l_debug_on THEN
5997 WSH_DEBUG_SV.log(l_module_name,'l_total_quantities.expected_quantity',l_total_quantities.expected_quantity);
5998 END IF;
5999
6000 if l_total_quantities.expected_quantity > l_max_quantity THEN
6001 x_source_line_id := dl.source_line_id ;
6002 l_source_line_number := dl.source_line_number;
6003 l_source_header_number := dl.source_header_number;
6004 l_source_header_type_name := dl.source_header_type_name;
6005 l_source_line_set_id := dl.source_line_set_id;
6006 x_source_code := dl.source_code ;
6007
6008 OPEN c_total_other_line_qty( dl.source_line_id , dl.source_code, dl.source_header_id ) ;
6009 FETCH c_total_other_line_qty
6010 INTO l_total_other_line_qty;
6011 CLOSE c_total_other_line_qty;
6012
6013 IF l_debug_on THEN
6014 WSH_DEBUG_SV.log(l_module_name,'l_total_other_line_qty.expected_quantity',l_total_other_line_qty.expected_quantity);
6015 END IF;
6016
6017 x_max_quantity := l_max_quantity - nvl(l_total_other_line_qty.expected_quantity,0);
6018 x_max_quantity2 := nvl(l_max_quantity2,0) - nvl(l_total_other_line_qty.expected_quantity2,0);
6019
6020 -- bug 2429367: provide full maximum quantity if x_max_quantity is negative.
6021 l_line_max_quantity := l_max_quantity;
6022 l_line_max_quantity2 := nvl(l_max_quantity2, 0);
6023
6024 SELECT meaning
6025 INTO l_source_system
6026 FROM wsh_lookups
6027 WHERE lookup_type = 'SOURCE_SYSTEM'
6028 AND lookup_code = dl.source_code;
6029
6030
6031 raise tolerance_exceeded ;
6032 end if;
6033
6034 END LOOP;
6035 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS ;
6036
6037 --
6038 -- Debug Statements
6039 --
6040 IF l_debug_on THEN
6041 WSH_DEBUG_SV.pop(l_module_name);
6042 END IF;
6043 --
6044 EXCEPTION
6045 WHEN tolerance_exceeded THEN
6046
6047 -- bug 2429367: give an alternate message if x_max_quantity is negative.
6048 IF x_max_quantity > 0 THEN
6049
6050 -- bug 2662327: choose appropriate message based
6051 -- on line being in a set or not.
6052
6053 -- Changes for Bug# 3836415
6054 IF l_source_line_set_id IS NULL THEN
6055 IF l_source_header_type_name is NOT NULL THEN
6056 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_TOLERANCE_EXCEEDED');
6057 FND_MESSAGE.SET_TOKEN('ORDER_TYPE',l_source_header_type_name);
6058 ELSE
6059 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_TOLERANCE_EXCEEDED_OR');
6060 END IF;
6061 ELSE
6062 IF l_source_header_type_name is NOT NULL THEN
6063 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_TOLERANCE_EXCEED_LS');
6064 FND_MESSAGE.SET_TOKEN('ORDER_TYPE',l_source_header_type_name);
6065 ELSE
6066 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_TOLERANCE_EXCEED_LS_OR');
6067 END IF;
6068 END IF;
6069 --
6070 -- Debug Statements
6071 --
6072 IF l_debug_on THEN
6073 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
6074 END IF;
6075 --
6076 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
6077 FND_MESSAGE.SET_TOKEN('ORDER_NUMBER',l_source_header_number);
6078 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_source_system);
6079 FND_MESSAGE.SET_TOKEN('LINE_NUM',ltrim( rtrim ( l_source_line_number )) );
6080 FND_MESSAGE.SET_TOKEN('MAX_QTY',x_max_quantity);
6081
6082 ELSE
6083
6084 -- bug : choose appropriate message based
6085 -- on line being in a set or not.
6086 IF l_source_line_set_id IS NULL THEN
6087 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_TOL_EXCEEDED_REVIEW');
6088 ELSE
6089 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_TOL_EXCEED_REVIEW_LS');
6090 END IF;
6091 --
6092 -- Debug Statements
6093 --
6094 IF l_debug_on THEN
6095 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.GET_NAME',WSH_DEBUG_SV.C_PROC_LEVEL);
6096 END IF;
6097 --
6098 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_id));
6099 FND_MESSAGE.SET_TOKEN('ORDER_NUMBER',l_source_header_number);
6100 FND_MESSAGE.SET_TOKEN('SOURCE_SYSTEM',l_source_system);
6101 FND_MESSAGE.SET_TOKEN('ORDER_TYPE',l_source_header_type_name);
6102 FND_MESSAGE.SET_TOKEN('LINE_NUM',ltrim( rtrim ( l_source_line_number )) );
6103 FND_MESSAGE.SET_TOKEN('MAX_QTY',l_line_max_quantity);
6104
6105 END IF;
6106
6107 x_return_status := FND_API.G_RET_STS_ERROR;
6108 -- Add_message is not needed because the caller Confirm_Delivery does this.
6109 -- WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
6110
6111 --
6112 -- Debug Statements
6113 --
6114 IF l_debug_on THEN
6115 WSH_DEBUG_SV.logmsg(l_module_name,'TOLERANCE_EXCEEDED exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
6116 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:TOLERANCE_EXCEEDED');
6117 END IF;
6118 --
6119 WHEN others THEN
6120 if c_total_line_quantities%ISOPEN THEN
6121 close c_total_line_quantities ;
6122 end if ;
6123 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHECK_DELIVERY_FOR_TOLERANCE');
6124 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6125
6126 --
6127 -- Debug Statements
6128 --
6129 IF l_debug_on THEN
6130 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6131 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6132 END IF;
6133 --
6134 END Check_Delivery_for_tolerances ;
6135
6136
6137 FUNCTION Del_Assigned_To_Trip(
6138 p_delivery_id IN NUMBER,
6139 x_return_status OUT NOCOPY VARCHAR2
6140 ) RETURN VARCHAR2 IS
6141
6142 cursor check_assigned(c_delivery_id in number) is
6143 select delivery_id
6144 FROM wsh_delivery_legs
6145 WHERE delivery_id = c_delivery_id
6146 AND rownum = 1;
6147
6148 l_delivery_id NUMBER;
6149 l_assigned VARCHAR2(1);
6150
6151 --
6152 l_debug_on BOOLEAN;
6153 --
6154 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DEL_ASSIGNED_TO_TRIP';
6155 --
6156 BEGIN
6157
6158 --
6159 -- Debug Statements
6160 --
6161 --
6162 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6163 --
6164 IF l_debug_on IS NULL
6165 THEN
6166 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6167 END IF;
6168 --
6169 IF l_debug_on THEN
6170 WSH_DEBUG_SV.push(l_module_name);
6171 --
6172 WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
6173 END IF;
6174 --
6175 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6176
6177 OPEN check_assigned(p_delivery_id);
6178
6179 FETCH check_assigned INTO l_delivery_id;
6180
6181 IF check_assigned%FOUND THEN
6182
6183 l_assigned := 'Y';
6184
6185 ELSE
6186
6187 l_assigned := 'N';
6188
6189 END IF;
6190
6191 CLOSE check_assigned;
6192
6193 --
6194 -- Debug Statements
6195 --
6196 IF l_debug_on THEN
6197 WSH_DEBUG_SV.pop(l_module_name);
6198 END IF;
6199 --
6200 RETURN l_assigned;
6201
6202 EXCEPTION
6203 WHEN OTHERS THEN
6204 IF check_assigned%ISOPEN THEN
6205 CLOSE check_assigned;
6206 END IF;
6207 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6208 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.Del_Assigned_To_Trip');
6209 --
6210 -- Debug Statements
6211 --
6212 IF l_debug_on THEN
6213 WSH_DEBUG_SV.pop(l_module_name);
6214 END IF;
6215 --
6216 return NULL;
6217
6218 --
6219 -- Debug Statements
6220 --
6221 IF l_debug_on THEN
6222 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6223 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6224 END IF;
6225 --
6226 END Del_Assigned_To_Trip;
6227
6228
6229 --Harmonization Project I
6230 PROCEDURE Is_Action_Enabled(
6231 p_dlvy_rec_tab IN dlvy_rec_tab_type,
6232 p_action IN VARCHAR2,
6233 p_caller IN VARCHAR2,
6234 p_tripid IN NUMBER DEFAULT null,
6235 x_return_status OUT NOCOPY VARCHAR2,
6236 x_valid_ids OUT NOCOPY wsh_util_core.id_tab_type,
6237 x_error_ids OUT NOCOPY wsh_util_core.id_tab_type,
6238 x_valid_index_tab OUT NOCOPY wsh_util_core.id_tab_type
6239 ) IS
6240
6241 cursor del_to_det_cur( p_delivery_id IN NUMBER ) is
6242 select distinct 'X'
6243 from wsh_delivery_details wdd,
6244 wsh_delivery_assignments_v wda
6245 where wda.delivery_id = p_delivery_id
6246 and wdd.delivery_detail_id = wda.delivery_detail_id
6247 and wdd.source_code = 'WSH'
6248 and wdd.container_flag = 'N';
6249
6250 cursor valid_shpmnt_advice_cur(p_delivery_id IN NUMBER,
6251 p_tp_id IN NUMBER
6252 ) is
6253 select 'X'
6254 from wsh_transactions_history
6255 where transaction_id = (
6256 select max(transaction_id)
6257 from wsh_transactions_history wth,
6258 wsh_new_deliveries wnd
6259 where wth.entity_number = wnd.name
6260 and wth.trading_partner_id = p_tp_id
6261 and wnd.delivery_id = p_delivery_id
6262 )
6263 and document_direction='I'
6264 and action_type = 'A';
6265
6266 cursor det_stat_cur( p_delivery_id IN NUMBER) is
6267 select distinct 'X'
6268 from wsh_delivery_details wdd,
6269 wsh_delivery_assignments_v wda
6270 where wdd.source_code = 'WSH'
6271 and wdd.container_flag = 'N'
6272 and wdd.delivery_detail_id = wda.delivery_detail_id
6273 and wda.delivery_id = p_delivery_id;
6274
6275 CURSOR c_istripfirm(p_tripid IN NUMBER) IS
6276 SELECT 'Y'
6277 FROM wsh_trips wt
6278 WHERE wt.trip_id=p_tripid
6279 AND wt.planned_flag='F';
6280
6281 CURSOR c_isvalidtptrip(p_delid IN NUMBER, p_tripid IN NUMBER) IS
6282 SELECT 'Y'
6283 FROM wsh_trips wt
6284 WHERE wt.trip_id=p_tripid
6285 AND (nvl(wt.ignore_for_planning,'N') <> (select nvl(ignore_for_planning,'N') from wsh_new_deliveries where delivery_id=p_delid)
6286 );
6287
6288
6289 --/== Workflow Changes
6290 CURSOR c_get_cntrl_wf_details(p_delivery_id IN NUMBER) IS
6291 SELECT delivery_scpod_wf_process,
6292 del_wf_close_attr
6293 FROM WSH_NEW_DELIVERIES
6294 WHERE delivery_id = p_delivery_id;
6295
6296 l_override_wf VARCHAR2(1);
6297 l_del_entity_ids WSH_UTIL_CORE.column_tab_type;
6298 l_del_scpod_wf_process VARCHAR2(30);
6299 l_close_flag VARCHAR2(1);
6300 l_purged_count NUMBER;
6301 l_wf_rs VARCHAR2(1);
6302 e_scpod_wf_inprogress EXCEPTION;
6303 --==/
6304
6305 -- R12 MDC
6306 CURSOR cur_get_delivery_type (p_delivery_id IN NUMBER) IS
6307 SELECT delivery_type
6308 FROM wsh_new_deliveries
6309 WHERE delivery_id = p_delivery_id;
6310 l_delivery_type wsh_new_deliveries.delivery_type%type;
6311
6312 CURSOR cur_check_consol_delivery (p_delivery_id IN NUMBER) IS
6313 select 1
6314 from wsh_delivery_legs pleg,
6315 wsh_delivery_legs cleg
6316 where pleg.delivery_leg_id = cleg.parent_delivery_leg_id
6317 and cleg.delivery_id = p_delivery_id;
6318
6319 l_dummy number;
6320 --
6321
6322 l_dlvy_actions_tab DeliveryActionsTabType;
6323 -- OTM R12 - Bug#5399341
6324 l_param_info WSH_SHIPPING_PARAMS_PVT.Parameter_Rec_Typ;
6325
6326 l_organization_id NUMBER;
6327 l_planned_flag VARCHAR2(1);
6328 l_status_code VARCHAR2(2);
6329 l_wh_type VARCHAR2(30);
6330 l_return_status VARCHAR2(1);
6331 l_tpw_temp VARCHAR2(1);
6332 l_valid_shpt_advc_tmp VARCHAR2(1);
6333 l_atd_tpw_temp VARCHAR2(1);
6334
6335 l_org_type VARCHAR2(30);
6336 l_cache_org_type VARCHAR2(30);
6337 l_cache_org_id NUMBER;
6338 l_non_wms_org_id NUMBER;
6339
6340 error_in_init_actions EXCEPTION;
6341 e_record_ineligible EXCEPTION;
6342 e_tp_record_ineligible EXCEPTION;
6343
6344 l_debug_on BOOLEAN;
6345 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'IS_ACTION_ENABLED';
6346
6347 --
6348 l_dlvy_status_code VARCHAR2(30);
6349 l_shipping_control VARCHAR2(30);
6350 l_routing_response_id NUMBER;
6351 l_routing_request_flag VARCHAR2(30);
6352 l_caller VARCHAR2(50);
6353 --l_planned_flag VARCHAR2(10);
6354 l_is_del_eligible BOOLEAN; --ADDED FOR BUG FIX 3562492
6355
6356 --OTM R12
6357 l_gc3_is_installed VARCHAR2(1);
6358
6359 BEGIN
6360 --
6361 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6362 --
6363 IF l_debug_on IS NULL
6364 THEN
6365 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6366 END IF;
6367 --
6368 IF l_debug_on THEN
6369 WSH_DEBUG_SV.push(l_module_name);
6370 --
6371 WSH_DEBUG_SV.log(l_module_name,'p_caller',p_caller);
6372 WSH_DEBUG_SV.log(l_module_name,'p_action',p_action);
6373 END IF;
6374
6375
6376 --OTM R12
6377 l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED; -- this is global variable
6378
6379 IF l_gc3_is_installed IS NULL THEN
6380 l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED; -- this is actual function
6381 END IF;
6382 --
6383
6384 Init_Delivery_Actions_Tbl(
6385 p_action => p_action,
6386 x_delivery_actions_tab => l_dlvy_actions_tab,
6387 x_return_status => x_return_status);
6388
6389 IF l_debug_on THEN
6390 WSH_DEBUG_SV.log(l_module_name,'Init_Detail_Actions_Tbl x_return_status',x_return_status);
6391 WSH_DEBUG_SV.log(l_module_name,' Count of p_dlvy_rec_tab is',p_dlvy_rec_tab.count);
6392 END IF;
6393
6394 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS ) THEN
6395 raise error_in_init_actions;
6396 END IF;
6397
6398 FOR j IN p_dlvy_rec_tab.FIRST..p_dlvy_rec_tab.LAST LOOP
6399 BEGIN
6400
6401 -- R12 MDC
6402 -- Only PRINT-BOL and WT-VOL actions are allowed for
6403 -- consolidation delivery, other actions are not allwed.
6404 IF (p_action NOT IN ('PRINT-BOL', 'GENERATE-BOL', 'WT-VOL', 'UNASSIGN', 'SELECT-CARRIER'))
6405 OR (p_action = 'UNASSIGN' AND p_caller NOT like 'WMS%') THEN --{
6406 OPEN cur_get_delivery_type(p_dlvy_rec_tab(j).delivery_id);
6407 FETCH cur_get_delivery_type into l_delivery_type;
6408 CLOSE cur_get_delivery_type;
6409
6410 IF l_delivery_type = 'CONSOLIDATION' THEN
6411 raise e_record_ineligible;
6412 END IF;
6413 END IF; -- p_action NOT IN ('PRINT-BOL', 'WT-VOL')
6414
6415 -- Following actions are not allowed when a delivery is
6416 -- assigned to a consolidation delivery.
6417 IF p_action IN ('AUTOCREATE-TRIP', 'PLAN', 'FIRM', 'INCLUDE_PLAN',
6418 'SELECT-CARRIER', 'GET-FREIGHT-COSTS', 'CANCEL-SHIP-METHOD',
6419 'IGNORE_PLAN', 'OUTBOUND-DOCUMENT') THEN
6420 OPEN cur_check_consol_delivery(p_dlvy_rec_tab(j).delivery_id);
6421 FETCH cur_check_consol_delivery INTO l_dummy;
6422 IF cur_check_consol_delivery%FOUND THEN
6423 raise e_record_ineligible;
6424 END IF;
6425 CLOSE cur_check_consol_delivery;
6426 END IF;
6427 --
6428
6429 l_org_type := NULL;
6430 --
6431 IF l_debug_on THEN
6432 wsh_debug_sv.log(l_module_name, 'Organization Id', p_dlvy_rec_tab(j).organization_id);
6433 wsh_debug_sv.log(l_module_name, 'Cached Organization Id', l_cache_org_id);
6434 END IF;
6435 --
6436 IF p_dlvy_rec_tab(j).organization_id = l_cache_org_id THEN
6437 l_org_type := l_cache_org_type;
6438 ELSE
6439 --
6440 IF l_debug_on THEN
6441 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_VALIDATE.GET_ORG_TYPE',WSH_DEBUG_SV.C_PROC_LEVEL);
6442 END IF;
6443 --
6444 l_org_type := wsh_util_validate.get_org_type(
6445 p_organization_id => p_dlvy_rec_tab(j).organization_id,
6446 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6447 p_msg_display => 'N',
6448 x_return_status => l_return_status );
6449 --
6450 IF l_debug_on THEN
6451 wsh_debug_sv.log(l_module_name, 'Return status after wsh_util_validate.get_org_type', l_return_status);
6452 wsh_debug_sv.log(l_module_name, 'l_org_type is: ', l_org_type);
6453 END IF;
6454 --
6455 IF l_return_status = wsh_util_core.g_ret_sts_unexp_error THEN
6456 raise FND_API.G_EXC_UNEXPECTED_ERROR;
6457 ELSIF l_return_status = wsh_util_core.g_ret_sts_error THEN
6458 raise e_record_ineligible;
6459 END IF;
6460 --
6461 l_cache_org_id := p_dlvy_rec_tab(j).organization_id;
6462 l_cache_org_type := l_org_type;
6463 --
6464 END IF;
6465 -- OTM R12
6466 -- Bug 5399341: Get shipping params to figure if the org is OTM enabled.
6467
6468 WSH_SHIPPING_PARAMS_PVT.Get(
6469 p_organization_id => l_cache_org_id,
6470 x_param_info => l_param_info,
6471 x_return_status => x_return_status
6472 );
6473
6474 -- end of OTM R12
6475 -- This condition is added to enable the actions when the caller is
6476 -- WMS itself.
6477 IF (p_caller LIKE 'WMS%') THEN
6478 --
6479 IF instrb( l_org_type, 'WMS') > 0 THEN
6480 l_org_type := replace(l_org_type,'WMS');
6481 END IF;
6482 --
6483 END IF;
6484 --
6485
6486 --
6487 IF l_debug_on THEN
6488 wsh_debug_sv.log(l_module_name, 'l_org_type', l_org_type);
6489 wsh_debug_sv.log(l_module_name, 'l_dlvy_actions_tab.Count', l_dlvy_actions_tab.count);
6490 END IF;
6491 --
6492 --
6493 -- J-IB-NPARIKH-{
6494 --
6495 l_dlvy_status_code := p_dlvy_rec_tab(j).status_code; -- J-IB-NPARIKH
6496 l_caller := p_caller;
6497 l_planned_flag := p_dlvy_rec_tab(j).planned_flag;
6498 --
6499 --
6500 IF l_debug_on THEN
6501 wsh_debug_sv.log(l_module_name, 'l_dlvy_status_code', l_dlvy_status_code);
6502 wsh_debug_sv.log(l_module_name, 'l_caller', l_caller);
6503 wsh_debug_sv.log(l_module_name, 'l_planned_flag', l_planned_flag);
6504 END IF;
6505 --
6506 --
6507 -- Actions on inbound/drop-ship deliveries are allowed only if caller
6508 -- starts with one of the following:
6509 -- - FTE
6510 -- - WSH_IB
6511 -- - WSH_PUB
6512 -- - WSH_TP_RELEASE
6513 -- For any other callers, set l_caller to WSH_FSTRX
6514 -- Since for caller, WSH_FSTRX, all actions are disabled
6515 -- on inbound/drop-ship deliveries
6516 --
6517 --
6518 IF nvl(p_dlvy_rec_tab(j).shipment_direction,'O') NOT IN ('O','IO') -- Inbound/Drop-ship
6519 THEN
6520 --{
6521 IF l_caller LIKE 'FTE%'
6522 OR l_caller LIKE 'WSH_PUB%'
6523 OR l_caller LIKE 'WSH_IB%'
6524 OR l_caller LIKE 'WSH_TP_RELEASE%'
6525 THEN
6526 NULL;
6527 ELSE
6528 l_caller := 'WSH_FSTRX';
6529 END IF;
6530 --}
6531 END IF;
6532 --
6533 --Bug 3458160
6534 IF p_action = 'INCLUDE_PLAN' THEN --{
6535 -- 5746444: skip this check for WSH lines if OTM is enabled
6536 IF l_gc3_is_installed = 'N' THEN
6537 open det_stat_cur(p_dlvy_rec_tab(j).delivery_id);
6538 fetch det_stat_cur into l_atd_tpw_temp;
6539 close det_stat_cur;
6540
6541 IF l_atd_tpw_temp IS NOT NULL THEN
6542 raise e_record_ineligible;
6543 END IF;
6544 END IF;
6545 END IF; --}
6546
6547 IF p_action IN ('UNASSIGN','INCLUDE_PLAN') --WT-VOL-check
6548 AND l_dlvy_status_code IN ('IT','CL')
6549 AND NVL(p_dlvy_rec_tab(j).shipment_direction,'O') NOT IN ('O','IO')
6550 THEN
6551 --{
6552 --
6553 -- For in-transit/closed inbound deliveries (not O/IO),
6554 -- include plan action should not be allowed if
6555 -- - supplier is managing transportation
6556 -- OR
6557 -- - routing request was not received for all delivery lines
6558 --
6559 IF l_debug_on THEN
6560 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit GET_SHIPPING_CONTROL',WSH_DEBUG_SV.C_PROC_LEVEL);
6561 END IF;
6562 --
6563 -- Check if transportation is managed by supplier
6564 --
6565 GET_SHIPPING_CONTROL
6566 (
6567 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6568 x_shipping_control => l_shipping_control,
6569 x_routing_response_id => l_routing_response_id,
6570 x_routing_request_flag => l_routing_request_flag,
6571 x_return_status => l_return_status
6572 );
6573 --
6574 --
6575 IF l_debug_on THEN
6576 wsh_debug_sv.log(l_module_name, 'l_return_status', l_return_status);
6577 wsh_debug_sv.log(l_module_name, 'l_shipping_control', l_shipping_control);
6578 wsh_debug_sv.log(l_module_name, 'l_routing_response_id', l_routing_response_id);
6579 wsh_debug_sv.log(l_module_name, 'l_routing_request_flag', l_routing_request_flag);
6580 --
6581 END IF;
6582 --
6583 --
6584 IF l_return_status = wsh_util_core.g_ret_sts_unexp_error THEN
6585 raise FND_API.G_EXC_UNEXPECTED_ERROR;
6586 ELSIF l_return_status = wsh_util_core.g_ret_sts_error THEN
6587 raise e_record_ineligible;
6588 END IF;
6589 --
6590 --
6591 IF l_shipping_control = 'SUPPLIER'
6592 OR l_routing_request_flag = 'N'
6593 THEN
6594 IF p_action = 'UNASSIGN'
6595 THEN
6596 l_planned_flag := 'N';
6597 ELSIF p_action = 'INCLUDE_PLAN'
6598 THEN
6599 l_dlvy_status_code := 'XX';
6600 ELSE
6601 l_dlvy_status_code := 'OP';
6602 END IF;
6603 END IF;
6604 --}
6605 END IF;
6606 --
6607
6608
6609 IF l_debug_on THEN
6610 wsh_debug_sv.log(l_module_name, 'l_dlvy_status_code-modified', l_dlvy_status_code);
6611 wsh_debug_sv.log(l_module_name, 'l_caller-modified', l_caller);
6612 wsh_debug_sv.log(l_module_name, 'l_planned_flag-modified', l_planned_flag);
6613 END IF;
6614 --
6615 -- J-IB-NPARIKH-}
6616 --
6617 -- Section a
6618 IF (l_dlvy_actions_tab.COUNT > 0 ) THEN
6619 For k in l_dlvy_actions_tab.FIRST..l_dlvy_actions_tab.LAST LOOP
6620
6621 --bug 3301211 : adding debug msgs
6622 IF l_debug_on THEN
6623 wsh_debug_sv.log(l_module_name, 'Results from init_delivery_actions_tbl for index ', k);
6624 wsh_debug_sv.log(l_module_name, '---status_code', l_dlvy_actions_tab(k).status_code);
6625 wsh_debug_sv.log(l_module_name, '---planned_flag', l_dlvy_actions_tab(k).planned_flag);
6626 wsh_debug_sv.log(l_module_name, '---caller', l_dlvy_actions_tab(k).caller);
6627 wsh_debug_sv.log(l_module_name, '---org_type', l_dlvy_actions_tab(k).org_type);
6628 wsh_debug_sv.log(l_module_name, '---action_not_allowed', l_dlvy_actions_tab(k).action_not_allowed);
6629 wsh_debug_sv.log(l_module_name, '---shipment direction', l_dlvy_actions_tab(k).shipment_direction||' , '||p_dlvy_rec_tab(j).shipment_direction);
6630 --OTM R12
6631 wsh_debug_sv.log(l_module_name, '---ignore_for_planning', l_dlvy_actions_tab(k).ignore_for_planning);
6632 wsh_debug_sv.log(l_module_name, '---tms_interface_flag', l_dlvy_actions_tab(k).tms_interface_flag);
6633 -- OTM R12 Org Specific changes - 5399341
6634 wsh_debug_sv.log(l_module_name, '---otm_enabled', l_dlvy_actions_tab(k).otm_enabled);
6635 --
6636 END IF;
6637
6638 IF(
6639 nvl(l_dlvy_actions_tab(k).status_code,l_dlvy_status_code) = l_dlvy_status_code -- J-IB-NPARIKH
6640 --nvl(l_dlvy_actions_tab(k).status_code,p_dlvy_rec_tab(j).status_code) = p_dlvy_rec_tab(j).status_code
6641 AND nvl(l_dlvy_actions_tab(k).planned_flag,nvl(l_planned_flag,'N')) = nvl(l_planned_flag,'N')
6642 AND nvl(l_dlvy_actions_tab(k).caller,l_caller) = l_caller -- J-IB-NPARIKH
6643 AND instrb( nvl(l_org_type, '!'), nvl(l_dlvy_actions_tab(k).org_type,nvl(l_org_type, '!')) ) > 0
6644 AND l_dlvy_actions_tab(k).action_not_allowed = p_action
6645 /* J new condition to check shipment_direction jckwok */
6646 AND nvl(l_dlvy_actions_tab(k).shipment_direction, nvl(p_dlvy_rec_tab(j).shipment_direction, 'O'))= nvl(p_dlvy_rec_tab(j).shipment_direction, 'O')
6647 --OTM R12
6648 AND NVL(l_dlvy_actions_tab(k).ignore_for_planning, NVL(p_dlvy_rec_tab(j).ignore_for_planning, 'N')) =
6649 NVL(p_dlvy_rec_tab(j).ignore_for_planning, 'N')
6650 AND NVL(l_dlvy_actions_tab(k).tms_interface_flag, NVL(p_dlvy_rec_tab(j).tms_interface_flag, WSH_NEW_DELIVERIES_PVT.C_TMS_NOT_TO_BE_SENT)) =
6651 NVL(p_dlvy_rec_tab(j).tms_interface_flag, WSH_NEW_DELIVERIES_PVT.C_TMS_NOT_TO_BE_SENT)
6652 -- OTM R12 Org Specific changes - 5399341
6653 AND nvl(l_dlvy_actions_tab(k).otm_enabled, nvl(l_param_info.otm_enabled, 'N')) =nvl(l_param_info.otm_enabled, 'N')
6654 --
6655 )
6656 THEN
6657 IF l_dlvy_actions_tab(k).message_name IS NOT NULL THEN
6658 FND_MESSAGE.SET_NAME('WSH',l_dlvy_actions_tab(k).message_name);
6659 wsh_util_core.add_message(wsh_util_core.g_ret_sts_error);
6660 END IF;
6661 raise e_record_ineligible;
6662 exit;
6663 END IF;
6664 END LOOP;
6665 END IF;
6666 -- Section a
6667 -- Intialization of local variables for section b
6668 l_status_code := l_dlvy_status_code; --p_dlvy_rec_tab(j).status_code;
6669 --l_planned_flag := p_dlvy_rec_tab(j).planned_flag;
6670
6671 -- Bug 5298643, action Pack is not allowed from delivery tab,
6672 -- However, this procedure can be called from delivery detail,
6673 -- while packing a line that is assigned to a delivery.
6674
6675 IF (p_action IN ('PICK-RELEASE','AUTO-PACK','AUTO-PACK-MASTER','PACK'))
6676 THEN
6677 --BUG FIX 3562492
6678 IF (p_action = 'PICK-RELEASE') THEN
6679 l_is_del_eligible := Is_del_eligible_pick(
6680 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6681 x_return_status => l_return_status);
6682 IF l_debug_on THEN
6683 WSH_DEBUG_SV.log(l_module_name,'Is_del_eligible_pick l_return_status',l_return_status);
6684 END IF;
6685 ELSE
6686 l_is_del_eligible := TRUE;
6687 END IF;
6688
6689 IF l_debug_on THEN
6690 WSH_DEBUG_SV.log(l_module_name,'l_is_del_eligible ',l_is_del_eligible);
6691 END IF;
6692
6693 IF l_is_del_eligible
6694 THEN
6695 --{
6696 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6697 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6698 x_return_status => l_return_status,
6699 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6700 p_msg_display => 'N');
6701
6702 IF l_debug_on THEN
6703 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6704 END IF;
6705
6706 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) = 'TPW' ) THEN
6707 open del_to_det_cur(p_dlvy_rec_tab(j).delivery_id);
6708 Fetch del_to_det_cur into l_tpw_temp;
6709 close del_to_det_cur;
6710 IF ( l_tpw_temp is null ) THEN
6711 raise e_record_ineligible;
6712 ELSE
6713 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6714 x_valid_index_tab(j) := j;
6715 END IF;
6716 ELSE
6717 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6718 x_valid_index_tab(j) := j;
6719 END IF;
6720 --}
6721 ELSE
6722 raise e_record_ineligible;
6723 END IF;
6724 --
6725 ELSIF ( p_action ='GEN-LOAD-SEQ' ) THEN
6726 IF ( l_status_code IN ('SR', 'SC') AND l_planned_flag IN ('Y','F') ) THEN
6727 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6728 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6729 x_return_status => l_return_status,
6730 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6731 p_msg_display => 'N');
6732
6733 IF l_debug_on THEN
6734 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6735 END IF;
6736
6737 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) = 'TPW' ) THEN
6738 raise e_record_ineligible;
6739 ELSE
6740 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6741 x_valid_index_tab(j) := j;
6742 END IF;
6743 ELSE
6744 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6745 x_valid_index_tab(j) := j;
6746 END IF;
6747
6748 ELSIF ( p_action = 'RE-OPEN' ) THEN
6749 IF ( l_status_code = 'CO' ) THEN
6750 open del_to_det_cur(p_dlvy_rec_tab(j).delivery_id);
6751 Fetch del_to_det_cur into l_tpw_temp;
6752 close del_to_det_cur;
6753
6754 IF ( l_tpw_temp is null ) THEN
6755 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6756 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6757 x_return_status => l_return_status,
6758 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6759 p_msg_display => 'N');
6760
6761 IF l_debug_on THEN
6762 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type|| l_return_status);
6763 END IF;
6764
6765 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) = 'CMS' ) THEN
6766 raise e_record_ineligible;
6767 ELSE
6768 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6769 x_valid_index_tab(j) := j;
6770 END IF;
6771
6772 ELSE
6773 raise e_record_ineligible;
6774 END IF; -- IF ( l_tpw_temp is null )
6775 ELSE
6776 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6777 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6778 x_return_status => l_return_status,
6779 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6780 p_msg_display => 'N');
6781
6782 IF l_debug_on THEN
6783 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6784 END IF;
6785
6786 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) = 'CMS' ) THEN
6787 raise e_record_ineligible;
6788 ELSE
6789 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6790 x_valid_index_tab(j) := j;
6791 END IF;
6792 END IF; --IF ( l_status_code = 'CO' )
6793
6794 ELSIF ( p_action ='CONFIRM' ) THEN
6795 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type (
6796 p_organization_id => p_dlvy_rec_tab(j).organization_id,
6797 x_return_status => l_return_status,
6798 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6799 p_msg_display => 'N');
6800
6801 IF l_debug_on THEN
6802 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6803 END IF;
6804
6805 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) IN ('TPW','CMS') ) THEN
6806 open del_to_det_cur(p_dlvy_rec_tab(j).delivery_id);
6807 Fetch del_to_det_cur into l_tpw_temp;
6808 close del_to_det_cur;
6809
6810 IF ( l_tpw_temp IS NULL ) THEN
6811 IF ( l_status_code = 'OP' ) THEN
6812 open valid_shpmnt_advice_cur(p_dlvy_rec_tab(j).delivery_id, l_organization_id);
6813 fetch valid_shpmnt_advice_cur into l_valid_shpt_advc_tmp;
6814 close valid_shpmnt_advice_cur;
6815 IF ( l_valid_shpt_advc_tmp IS NOT NULL ) THEN
6816 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6817 x_valid_index_tab(j) := j;
6818 ELSE
6819 raise e_record_ineligible;
6820 END IF;
6821 ELSE
6822 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6823 x_valid_index_tab(j) := j;
6824 END IF; -- IF ( l_status_code = 'OP' )
6825 ELSE
6826 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6827 x_valid_index_tab(j) := j;
6828 END IF; -- IF ( l_tpw_temp IS NULL )
6829 ELSE
6830 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6831 x_valid_index_tab(j) := j;
6832 END IF; --IF ( nvl(l_wh_type,
6833
6834 ELSIF (p_action IN ('OUTBOUND-DOCUMENT','TRANSACTION-HISTORY-UI') ) THEN
6835 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6836 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6837 x_return_status => l_return_status,
6838 p_delivery_id => p_dlvy_rec_tab(j).delivery_id);
6839
6840 IF l_debug_on THEN
6841 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6842 END IF;
6843
6844 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR ) THEN
6845 open det_stat_cur(p_dlvy_rec_tab(j).delivery_id);
6846 fetch det_stat_cur into l_atd_tpw_temp;
6847 close det_stat_cur;
6848
6849 IF ( l_atd_tpw_temp IS NULL ) THEN
6850 raise e_record_ineligible;
6851 ELSE
6852 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6853 x_valid_index_tab(j) := j;
6854 END IF;
6855 ELSIF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) IN ('CMS','TPW') ) THEN
6856 IF ( l_status_code = 'OP' ) THEN
6857 open valid_shpmnt_advice_cur(p_dlvy_rec_tab(j).delivery_id, l_organization_id);
6858 fetch valid_shpmnt_advice_cur into l_valid_shpt_advc_tmp;
6859 close valid_shpmnt_advice_cur;
6860
6861 IF ( l_valid_shpt_advc_tmp IS NULL ) THEN
6862 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6863 x_valid_index_tab(j) := j;
6864 ELSE
6865 raise e_record_ineligible;
6866 END IF;
6867 ELSE
6868 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6869 x_valid_index_tab(j) := j;
6870 END IF;
6871 ELSE
6872 raise e_record_ineligible;
6873 END IF; -- IF ( nvl(l_wh_type
6874
6875 ELSIF ( p_action IN ('AUTOCREATE-TRIP','ASSIGN-TRIP')) THEN
6876 --tp_is_installed check not reqd as 'Firm' action is going to be available for wsh users as well
6877 IF (p_action='ASSIGN-TRIP') THEN
6878 IF (l_planned_flag='F') THEN --bug 3384112
6879 raise e_record_ineligible;
6880 END IF;
6881 FOR cur IN c_istripfirm(p_tripid) LOOP
6882 raise e_record_ineligible;
6883 END LOOP;
6884 FOR cur IN c_isvalidtptrip(p_dlvy_rec_tab(j).delivery_id, p_tripid) LOOP
6885 raise e_tp_record_ineligible;
6886 END LOOP;
6887 END IF;
6888 IF (p_dlvy_rec_tab(j).status_code = 'SA' )
6889 OR NVL(p_dlvy_rec_tab(j).shipment_direction,'O') NOT IN ('O','IO') -- J-IB-NPARIKH
6890 THEN
6891 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6892 x_valid_index_tab(j) := j;
6893 ELSE
6894 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6895 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6896 x_return_status => l_return_status,
6897 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6898 p_msg_display => 'N');
6899
6900 IF l_debug_on THEN
6901 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6902 END IF;
6903
6904 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) in ( 'CMS','TPW') )
6905
6906 THEN
6907 open del_to_det_cur(p_dlvy_rec_tab(j).delivery_id);
6908 fetch del_to_det_cur into l_tpw_temp;
6909 close del_to_det_cur;
6910 IF ( l_tpw_temp IS NULL ) THEN
6911 raise e_record_ineligible;
6912 ELSE
6913 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6914 x_valid_index_tab(j) := j;
6915 END IF;
6916 ELSE
6917 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6918 x_valid_index_tab(j) := j;
6919 END IF; -- IF ( nvl(l_wh_type
6920 END IF; -- IF (p_dlvy_rec_tab .status_code = 'SA' )
6921
6922 --lines can't be unassigned from firm delivery.
6923 ELSIF ( p_action IN ('UNASSIGN', 'UNASSIGN-TRIP')) THEN --bug 3384112
6924 --tp_is_installed check not reqd as 'Firm' action is going to be available for wsh users as well
6925 IF (l_planned_flag='F') THEN
6926 raise e_record_ineligible;
6927 ELSE
6928 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6929 x_valid_index_tab(j) := j;
6930 END IF;
6931 ELSIF ( p_action IN ('GENERATE-BOL','PRINT-BOL'))
6932 THEN
6933 open det_stat_cur(p_dlvy_rec_tab(j).delivery_id);
6934 Fetch det_stat_cur into l_atd_tpw_temp;
6935 close det_stat_cur;
6936 IF ( l_atd_tpw_temp is not null ) THEN
6937 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6938 x_valid_index_tab(j) := j;
6939 ELSE
6940 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
6941 (p_organization_id => p_dlvy_rec_tab(j).organization_id,
6942 x_return_status => l_return_status,
6943 p_delivery_id => p_dlvy_rec_tab(j).delivery_id,
6944 p_msg_display => 'N');
6945
6946 IF l_debug_on THEN
6947 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
6948 END IF;
6949
6950 IF ( nvl(l_wh_type, FND_API.G_MISS_CHAR) IN ('TPW','CMS') ) THEN
6951 raise e_record_ineligible;
6952 ELSE
6953 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6954 x_valid_index_tab(j) := j;
6955 END IF;
6956 END IF; -- IF ( l_atd_tpw_temp
6957 --/== Workflow Changes
6958 ELSIF (p_action IN ('CLOSE')) THEN
6959 l_override_wf:= fnd_profile.value('WSH_OVERRIDE_SCPOD_WF');
6960 IF (nvl(l_override_wf,'N') = 'N') THEN
6961 OPEN c_get_cntrl_wf_details(p_dlvy_rec_tab(j).delivery_id);
6962 FETCH c_get_cntrl_wf_details into l_del_scpod_wf_process,l_close_flag;
6963 CLOSE c_get_cntrl_wf_details;
6964 IF (l_del_scpod_wf_process is not null and l_close_flag = 'I') THEN
6965 raise e_scpod_wf_inprogress;
6966 END IF;
6967 END IF;
6968 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6969 x_valid_index_tab(j) := j; -- Workflow Changes ==/
6970 ELSE
6971 x_valid_ids(x_valid_ids.COUNT + 1) := p_dlvy_rec_tab(j).delivery_id;
6972 x_valid_index_tab(j) := j;
6973 END IF; -- IF ( p_action IN ('LAUNCH_PICK_RELEASE'
6974 EXCEPTION
6975 WHEN e_record_ineligible THEN
6976 x_error_ids(x_error_ids.count +1) := p_dlvy_rec_tab(j).delivery_id;
6977 IF p_caller = 'WSH_PUB' or p_caller like 'FTE%' OR
6978 p_caller = 'WSH_TRCON' THEN
6979 FND_MESSAGE.SET_NAME('WSH','WSH_DELIVERY_ACTION_INELIGIBLE');
6980 FND_MESSAGE.Set_Token('DEL_NAME',wsh_new_deliveries_pvt.get_name(x_error_ids(x_error_ids.count)));
6981 FND_MESSAGE.Set_Token('ACTION',wsh_util_core.get_action_meaning('DLVY',p_action));
6982 wsh_util_core.add_message('E',l_module_name);
6983 END IF;
6984 WHEN e_tp_record_ineligible THEN
6985 x_error_ids(x_error_ids.count +1) := p_dlvy_rec_tab(j).delivery_id;
6986 IF p_caller = 'WSH_PUB' or p_caller like 'FTE%' OR
6987 p_caller = 'WSH_TRCON' THEN
6988 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGN_FIRMTRIP_ERROR');
6989 FND_MESSAGE.Set_Token('DEL_NAME',wsh_new_deliveries_pvt.get_name(x_error_ids(x_error_ids.count)));
6990 FND_MESSAGE.Set_Token('TRIP_NAME',wsh_trips_pvt.get_name(p_tripid));
6991 wsh_util_core.add_message('E',l_module_name);
6992 END IF;
6993 WHEN e_scpod_wf_inprogress THEN --/== Workflow Changes
6994 x_error_ids(x_error_ids.count +1) := p_dlvy_rec_tab(j).delivery_id;
6995 IF p_caller = 'WSH_PUB' or p_caller like 'FTE%' OR
6996 p_caller = 'WSH_TRCON' THEN
6997 FND_MESSAGE.SET_NAME('WSH','WSH_WF_DEL_ACTION_INELIGIBLE');
6998 FND_MESSAGE.Set_Token('DEL_NAME',wsh_new_deliveries_pvt.get_name(x_error_ids(x_error_ids.count)));
6999 FND_MESSAGE.Set_Token('ACTION',wsh_util_core.get_action_meaning('DLVY',p_action));
7000 wsh_util_core.add_message('E',l_module_name); --==/
7001 END IF;
7002
7003 END;
7004 END LOOP; -- For j IN p_dlvy_rec_tab.FIRST
7005
7006
7007 IF (x_valid_ids.COUNT = 0 ) THEN
7008 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7009 --
7010 IF NOT (l_caller LIKE 'FTE%' OR l_caller = 'WSH_PUB') THEN
7011 FND_MESSAGE.SET_NAME('WSH','WSH_ACTION_ENABLED');
7012 wsh_util_core.add_message(x_return_status,l_module_name);
7013 END IF;
7014 --
7015 ELSIF (x_valid_ids.COUNT = p_dlvy_rec_tab.COUNT) THEN
7016 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7017 ELSIF (x_valid_ids.COUNT < p_dlvy_rec_tab.COUNT ) THEN
7018 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
7019 --
7020 IF NOT (l_caller LIKE 'FTE%' OR l_caller = 'WSH_PUB') THEN
7021 FND_MESSAGE.SET_NAME('WSH','WSH_ACTION_ENABLED_WARN');
7022 wsh_util_core.add_message(x_return_status,l_module_name);
7023 END IF;
7024 --
7025 ELSE
7026 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7027 --
7028 IF NOT (l_caller LIKE 'FTE%' OR l_caller = 'WSH_PUB') THEN
7029 FND_MESSAGE.SET_NAME('WSH','WSH_ACTION_ENABLED');
7030 wsh_util_core.add_message(x_return_status,l_module_name);
7031 END IF;
7032 --
7033 END IF;
7034
7035 IF l_debug_on THEN
7036 WSH_DEBUG_SV.pop(l_module_name);
7037 END IF;
7038
7039 EXCEPTION
7040 WHEN error_in_init_actions THEN
7041 IF l_debug_on THEN
7042 WSH_DEBUG_SV.logmsg(l_module_name,'error_in_init_actions exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
7043 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:error_in_init_actions');
7044 END IF;
7045
7046 WHEN OTHERS THEN
7047 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7048 IF l_debug_on THEN
7049 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '||
7050 SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
7051 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
7052 END IF;
7053 END Is_Action_Enabled;
7054
7055 /*
7056 Procedure populate_external_edf is called from
7057 eliminate_displayonly_fields to populate the external value
7058 for a given internal field
7059 */
7060
7061 PROCEDURE populate_external_edf(
7062 p_internal IN NUMBER
7063 , p_external IN VARCHAR2
7064 , x_internal IN OUT NOCOPY NUMBER
7065 , x_external IN OUT NOCOPY VARCHAR2
7066 )
7067 IS
7068 BEGIN
7069
7070 IF p_internal <> FND_API.G_MISS_NUM OR p_internal IS NULL THEN
7071 x_internal := p_internal;
7072 IF p_internal IS NULL THEN
7073 x_external := NULL;
7074 ELSE
7075 x_external := p_external;
7076 END IF;
7077 ELSIF p_external <> FND_API.G_MISS_CHAR OR p_external IS NULL THEN
7078 x_external := p_external;
7079 IF x_external IS NULL THEN
7080 x_internal := NULL;
7081 ELSE
7082 x_internal := p_internal;
7083 END IF;
7084 END IF;
7085
7086 END populate_external_edf;
7087
7088
7089 /*
7090 Procedure populate_external_edf is called from
7091 eliminate_displayonly_fields to populate the external value
7092 for a given internal field
7093 */
7094
7095 PROCEDURE populate_external_edf(
7096 p_internal IN VARCHAR2
7097 , p_external IN VARCHAR2
7098 , x_internal IN OUT NOCOPY VARCHAR2
7099 , x_external IN OUT NOCOPY VARCHAR2
7100 )
7101 IS
7102 BEGIN
7103
7104 IF p_internal <> FND_API.G_MISS_CHAR OR p_internal IS NULL THEN
7105 x_internal := p_internal;
7106 IF p_internal IS NULL THEN
7107 x_external := NULL;
7108 ELSE
7109 x_external := p_external;
7110 END IF;
7111 ELSIF p_external <> FND_API.G_MISS_CHAR OR p_external IS NULL THEN
7112 x_external := p_external;
7113 IF x_external IS NULL THEN
7114 x_internal := NULL;
7115 ELSE
7116 x_internal := p_internal;
7117 END IF;
7118 END IF;
7119
7120 END populate_external_edf;
7121
7122
7123 PROCEDURE eliminate_displayonly_fields (
7124 p_delivery_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_rec_type
7125 --tkt
7126 , p_in_rec IN WSH_DELIVERIES_GRP.Del_In_Rec_Type
7127 , x_delivery_rec IN OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_rec_type
7128 )
7129 IS
7130 BEGIN
7131
7132 /*
7133 Enable the x_delivery_detail_rec, with the columns that are not
7134 permanently disabled.
7135 */
7136 --
7137
7138 IF p_delivery_rec.NAME <> FND_API.G_MISS_CHAR
7139 OR p_delivery_rec.NAME IS NULL THEN
7140 x_delivery_rec.NAME :=
7141 p_delivery_rec.NAME;
7142 END IF;
7143
7144 populate_external_edf(p_delivery_rec.ORGANIZATION_ID,
7145 p_delivery_rec.ORGANIZATION_CODE,
7146 x_delivery_rec.ORGANIZATION_ID,
7147 x_delivery_rec.ORGANIZATION_CODE );
7148
7149 populate_external_edf(p_delivery_rec.INITIAL_PICKUP_LOCATION_ID,
7150 p_delivery_rec.INITIAL_PICKUP_LOCATION_CODE,
7151 x_delivery_rec.INITIAL_PICKUP_LOCATION_ID,
7152 x_delivery_rec.INITIAL_PICKUP_LOCATION_CODE );
7153
7154 populate_external_edf(p_delivery_rec.INTMED_SHIP_TO_LOCATION_ID,
7155 p_delivery_rec.INTMED_SHIP_TO_LOCATION_CODE,
7156 x_delivery_rec.INTMED_SHIP_TO_LOCATION_ID,
7157 x_delivery_rec.INTMED_SHIP_TO_LOCATION_CODE );
7158
7159 populate_external_edf(p_delivery_rec.POOLED_SHIP_TO_LOCATION_ID,
7160 p_delivery_rec.POOLED_SHIP_TO_LOCATION_CODE,
7161 x_delivery_rec.POOLED_SHIP_TO_LOCATION_ID,
7162 x_delivery_rec.POOLED_SHIP_TO_LOCATION_CODE );
7163
7164 IF p_delivery_rec.INITIAL_PICKUP_DATE <> FND_API.G_MISS_DATE
7165 OR p_delivery_rec.INITIAL_PICKUP_DATE IS NULL THEN
7166 x_delivery_rec.INITIAL_PICKUP_DATE :=
7167 p_delivery_rec.INITIAL_PICKUP_DATE;
7168 END IF;
7169
7170 --Bug 3458160
7171 IF p_in_rec.caller = 'WSH_TPW_INBOUND' THEN
7172 IF p_delivery_rec.SHIPMENT_DIRECTION <> FND_API.G_MISS_CHAR THEN
7173 x_delivery_rec.SHIPMENT_DIRECTION :=
7174 p_delivery_rec.SHIPMENT_DIRECTION;
7175 END IF;
7176 IF p_delivery_rec.IGNORE_FOR_PLANNING <> FND_API.G_MISS_CHAR THEN
7177 x_delivery_rec.IGNORE_FOR_PLANNING :=
7178 p_delivery_rec.IGNORE_FOR_PLANNING;
7179 END IF;
7180 ELSIF p_in_rec.caller = 'WSH_INBOUND' THEN
7181 IF p_delivery_rec.DELIVERED_DATE <> FND_API.G_MISS_DATE
7182 OR p_delivery_rec.DELIVERED_DATE IS NULL THEN
7183 x_delivery_rec.DELIVERED_DATE :=
7184 p_delivery_rec.DELIVERED_DATE;
7185 END IF;
7186 END IF;
7187
7188
7189 populate_external_edf(p_delivery_rec.ULTIMATE_DROPOFF_LOCATION_ID,
7190 p_delivery_rec.ULTIMATE_DROPOFF_LOCATION_CODE,
7191 x_delivery_rec.ULTIMATE_DROPOFF_LOCATION_ID,
7192 x_delivery_rec.ULTIMATE_DROPOFF_LOCATION_CODE );
7193
7194 IF p_delivery_rec.NUMBER_OF_LPN <> FND_API.G_MISS_NUM
7195 OR p_delivery_rec.NUMBER_OF_LPN IS NULL THEN
7196 x_delivery_rec.NUMBER_OF_LPN :=
7197 p_delivery_rec.NUMBER_OF_LPN;
7198 END IF;
7199 IF p_delivery_rec.WAYBILL <> FND_API.G_MISS_CHAR
7200 OR p_delivery_rec.WAYBILL IS NULL THEN
7201 x_delivery_rec.WAYBILL :=
7202 p_delivery_rec.WAYBILL;
7203 END IF;
7204
7205 populate_external_edf(p_delivery_rec.CUSTOMER_ID,
7206 p_delivery_rec.CUSTOMER_NUMBER,
7207 x_delivery_rec.CUSTOMER_ID,
7208 x_delivery_rec.CUSTOMER_NUMBER );
7209
7210 populate_external_edf(p_delivery_rec.FREIGHT_TERMS_CODE,
7211 p_delivery_rec.FREIGHT_TERMS_NAME,
7212 x_delivery_rec.FREIGHT_TERMS_CODE,
7213 x_delivery_rec.FREIGHT_TERMS_NAME );
7214
7215 populate_external_edf(p_delivery_rec.SHIP_METHOD_CODE,
7216 p_delivery_rec.SHIP_METHOD_NAME,
7217 x_delivery_rec.SHIP_METHOD_CODE,
7218 x_delivery_rec.SHIP_METHOD_NAME );
7219
7220 populate_external_edf(p_delivery_rec.CARRIER_ID,
7221 p_delivery_rec.CARRIER_CODE,
7222 x_delivery_rec.CARRIER_ID,
7223 x_delivery_rec.CARRIER_CODE );
7224
7225 IF p_delivery_rec.SERVICE_LEVEL <> FND_API.G_MISS_CHAR
7226 OR p_delivery_rec.SERVICE_LEVEL IS NULL THEN
7227 x_delivery_rec.SERVICE_LEVEL :=
7228 p_delivery_rec.SERVICE_LEVEL;
7229 END IF;
7230 IF p_delivery_rec.MODE_OF_TRANSPORT <> FND_API.G_MISS_CHAR
7231 OR p_delivery_rec.MODE_OF_TRANSPORT IS NULL THEN
7232 x_delivery_rec.MODE_OF_TRANSPORT :=
7233 p_delivery_rec.MODE_OF_TRANSPORT;
7234 END IF;
7235
7236 populate_external_edf(p_delivery_rec.FOB_CODE,
7237 p_delivery_rec.FOB_NAME,
7238 x_delivery_rec.FOB_CODE,
7239 x_delivery_rec.FOB_NAME );
7240
7241 populate_external_edf(p_delivery_rec.FOB_LOCATION_ID,
7242 p_delivery_rec.FOB_LOCATION_CODE,
7243 x_delivery_rec.FOB_LOCATION_ID,
7244 x_delivery_rec.FOB_LOCATION_CODE );
7245
7246 IF p_delivery_rec.GROSS_WEIGHT <> FND_API.G_MISS_NUM
7247 OR p_delivery_rec.GROSS_WEIGHT IS NULL THEN
7248 x_delivery_rec.GROSS_WEIGHT :=
7249 p_delivery_rec.GROSS_WEIGHT;
7250 END IF;
7251 IF p_delivery_rec.NET_WEIGHT <> FND_API.G_MISS_NUM
7252 OR p_delivery_rec.NET_WEIGHT IS NULL THEN
7253 x_delivery_rec.NET_WEIGHT :=
7254 p_delivery_rec.NET_WEIGHT;
7255 END IF;
7256
7257 populate_external_edf(p_delivery_rec.WEIGHT_UOM_CODE,
7258 p_delivery_rec.WEIGHT_UOM_DESC,
7259 x_delivery_rec.WEIGHT_UOM_CODE,
7260 x_delivery_rec.WEIGHT_UOM_DESC );
7261
7262 IF p_delivery_rec.VOLUME <> FND_API.G_MISS_NUM
7263 OR p_delivery_rec.VOLUME IS NULL THEN
7264 x_delivery_rec.VOLUME :=
7265 p_delivery_rec.VOLUME;
7266 END IF;
7267
7268 populate_external_edf(p_delivery_rec.VOLUME_UOM_CODE,
7269 p_delivery_rec.VOLUME_UOM_DESC,
7270 x_delivery_rec.VOLUME_UOM_CODE,
7271 x_delivery_rec.VOLUME_UOM_DESC );
7272
7273 -- bug 3666967 - need wv_frozen_flag when creating new delivery through public api.
7274 IF p_delivery_rec.wv_frozen_flag <> FND_API.G_MISS_CHAR THEN
7275 x_delivery_rec.wv_frozen_flag :=
7276 p_delivery_rec.wv_frozen_flag;
7277 END IF;
7278 -- end bug 3666967
7279
7280 -- Bug#4539613 : Consider the Prorate weight flag while populating output record.
7281 IF p_delivery_rec.prorate_wt_flag <> FND_API.G_MISS_CHAR
7282 OR p_delivery_rec.prorate_wt_flag IS NULL THEN
7283 x_delivery_rec.prorate_wt_flag :=
7284 p_delivery_rec.prorate_wt_flag;
7285 END IF;
7286
7287 IF p_delivery_rec.LOADING_SEQUENCE <> FND_API.G_MISS_NUM
7288 OR p_delivery_rec.LOADING_SEQUENCE IS NULL THEN
7289 x_delivery_rec.LOADING_SEQUENCE :=
7290 p_delivery_rec.LOADING_SEQUENCE;
7291 END IF;
7292
7293 populate_external_edf(p_delivery_rec.LOADING_ORDER_FLAG,
7294 p_delivery_rec.LOADING_ORDER_DESC,
7295 x_delivery_rec.LOADING_ORDER_FLAG,
7296 x_delivery_rec.LOADING_ORDER_DESC );
7297
7298 IF p_delivery_rec.ADDITIONAL_SHIPMENT_INFO <> FND_API.G_MISS_CHAR
7299 OR p_delivery_rec.ADDITIONAL_SHIPMENT_INFO IS NULL THEN
7300 x_delivery_rec.ADDITIONAL_SHIPMENT_INFO :=
7301 p_delivery_rec.ADDITIONAL_SHIPMENT_INFO;
7302 END IF;
7303 IF p_delivery_rec.PORT_OF_LOADING <> FND_API.G_MISS_CHAR
7304 OR p_delivery_rec.PORT_OF_LOADING IS NULL THEN
7305 x_delivery_rec.PORT_OF_LOADING :=
7306 p_delivery_rec.PORT_OF_LOADING;
7307 END IF;
7308 IF p_delivery_rec.ROUTED_EXPORT_TXN <> FND_API.G_MISS_CHAR
7309 OR p_delivery_rec.ROUTED_EXPORT_TXN IS NULL THEN
7310 x_delivery_rec.ROUTED_EXPORT_TXN :=
7311 p_delivery_rec.ROUTED_EXPORT_TXN;
7312 END IF;
7313 IF p_delivery_rec.FTZ_NUMBER <> FND_API.G_MISS_CHAR
7314 OR p_delivery_rec.FTZ_NUMBER IS NULL THEN
7315 x_delivery_rec.FTZ_NUMBER :=
7316 p_delivery_rec.FTZ_NUMBER;
7317 END IF;
7318 IF p_delivery_rec.ENTRY_NUMBER <> FND_API.G_MISS_CHAR
7319 OR p_delivery_rec.ENTRY_NUMBER IS NULL THEN
7320 x_delivery_rec.ENTRY_NUMBER :=
7321 p_delivery_rec.ENTRY_NUMBER;
7322 END IF;
7323 IF p_delivery_rec.IN_BOND_CODE <> FND_API.G_MISS_CHAR
7324 OR p_delivery_rec.IN_BOND_CODE IS NULL THEN
7325 x_delivery_rec.IN_BOND_CODE :=
7326 p_delivery_rec.IN_BOND_CODE;
7327 END IF;
7328 IF p_delivery_rec.SHIPPING_MARKS <> FND_API.G_MISS_CHAR
7329 OR p_delivery_rec.SHIPPING_MARKS IS NULL THEN
7330 x_delivery_rec.SHIPPING_MARKS :=
7331 p_delivery_rec.SHIPPING_MARKS;
7332 END IF;
7333 IF p_delivery_rec.PROBLEM_CONTACT_REFERENCE <> FND_API.G_MISS_CHAR
7334 OR p_delivery_rec.PROBLEM_CONTACT_REFERENCE IS NULL THEN
7335 x_delivery_rec.PROBLEM_CONTACT_REFERENCE :=
7336 p_delivery_rec.PROBLEM_CONTACT_REFERENCE;
7337 END IF;
7338 IF p_delivery_rec.COD_AMOUNT <> FND_API.G_MISS_NUM
7339 OR p_delivery_rec.COD_AMOUNT IS NULL THEN
7340 x_delivery_rec.COD_AMOUNT :=
7341 p_delivery_rec.COD_AMOUNT;
7342 END IF;
7343 IF p_delivery_rec.COD_CURRENCY_CODE <> FND_API.G_MISS_CHAR
7344 OR p_delivery_rec.COD_CURRENCY_CODE IS NULL THEN
7345 x_delivery_rec.COD_CURRENCY_CODE :=
7346 p_delivery_rec.COD_CURRENCY_CODE;
7347 END IF;
7348 IF p_delivery_rec.COD_REMIT_TO <> FND_API.G_MISS_CHAR
7349 OR p_delivery_rec.COD_REMIT_TO IS NULL THEN
7350 x_delivery_rec.COD_REMIT_TO :=
7351 p_delivery_rec.COD_REMIT_TO;
7352 END IF;
7353 IF p_delivery_rec.COD_CHARGE_PAID_BY <> FND_API.G_MISS_CHAR
7354 OR p_delivery_rec.COD_CHARGE_PAID_BY IS NULL THEN
7355 x_delivery_rec.COD_CHARGE_PAID_BY :=
7356 p_delivery_rec.COD_CHARGE_PAID_BY;
7357 END IF;
7358 IF p_delivery_rec.AUTO_SC_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
7359 OR p_delivery_rec.AUTO_SC_EXCLUDE_FLAG IS NULL THEN
7360 x_delivery_rec.AUTO_SC_EXCLUDE_FLAG :=
7361 p_delivery_rec.AUTO_SC_EXCLUDE_FLAG;
7362 END IF;
7363 IF p_delivery_rec.AUTO_AP_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
7364 OR p_delivery_rec.AUTO_AP_EXCLUDE_FLAG IS NULL THEN
7365 x_delivery_rec.AUTO_AP_EXCLUDE_FLAG :=
7366 p_delivery_rec.AUTO_AP_EXCLUDE_FLAG;
7367 END IF;
7368 IF p_delivery_rec.attribute1 <> FND_API.G_MISS_CHAR
7369 OR p_delivery_rec.attribute1 IS NULL THEN
7370 x_delivery_rec.attribute1 :=
7371 p_delivery_rec.attribute1;
7372 END IF;
7373 IF p_delivery_rec.attribute2 <> FND_API.G_MISS_CHAR
7374 OR p_delivery_rec.attribute2 IS NULL THEN
7375 x_delivery_rec.attribute2 :=
7376 p_delivery_rec.attribute2;
7377 END IF;
7378 IF p_delivery_rec.attribute3 <> FND_API.G_MISS_CHAR
7379 OR p_delivery_rec.attribute3 IS NULL THEN
7380 x_delivery_rec.attribute3 :=
7381 p_delivery_rec.attribute3;
7382 END IF;
7383 IF p_delivery_rec.attribute4 <> FND_API.G_MISS_CHAR
7384 OR p_delivery_rec.attribute4 IS NULL THEN
7385 x_delivery_rec.attribute4 :=
7386 p_delivery_rec.attribute4;
7387 END IF;
7388 IF p_delivery_rec.attribute5 <> FND_API.G_MISS_CHAR
7389 OR p_delivery_rec.attribute5 IS NULL THEN
7390 x_delivery_rec.attribute5 :=
7391 p_delivery_rec.attribute5;
7392 END IF;
7393 IF p_delivery_rec.attribute6 <> FND_API.G_MISS_CHAR
7394 OR p_delivery_rec.attribute6 IS NULL THEN
7395 x_delivery_rec.attribute6 :=
7396 p_delivery_rec.attribute6;
7397 END IF;
7398 IF p_delivery_rec.attribute7 <> FND_API.G_MISS_CHAR
7399 OR p_delivery_rec.attribute7 IS NULL THEN
7400 x_delivery_rec.attribute7 :=
7401 p_delivery_rec.attribute7;
7402 END IF;
7403 IF p_delivery_rec.attribute8 <> FND_API.G_MISS_CHAR
7404 OR p_delivery_rec.attribute8 IS NULL THEN
7405 x_delivery_rec.attribute8 :=
7406 p_delivery_rec.attribute8;
7407 END IF;
7408 IF p_delivery_rec.attribute9 <> FND_API.G_MISS_CHAR
7409 OR p_delivery_rec.attribute9 IS NULL THEN
7410 x_delivery_rec.attribute9 :=
7411 p_delivery_rec.attribute9;
7412 END IF;
7413 IF p_delivery_rec.attribute10 <> FND_API.G_MISS_CHAR
7414 OR p_delivery_rec.attribute10 IS NULL THEN
7415 x_delivery_rec.attribute10 :=
7416 p_delivery_rec.attribute10;
7417 END IF;
7418 IF p_delivery_rec.attribute11 <> FND_API.G_MISS_CHAR
7419 OR p_delivery_rec.attribute11 IS NULL THEN
7420 x_delivery_rec.attribute11 :=
7421 p_delivery_rec.attribute11;
7422 END IF;
7423 IF p_delivery_rec.attribute12 <> FND_API.G_MISS_CHAR
7424 OR p_delivery_rec.attribute12 IS NULL THEN
7425 x_delivery_rec.attribute12 :=
7426 p_delivery_rec.attribute12;
7427 END IF;
7428 IF p_delivery_rec.attribute13 <> FND_API.G_MISS_CHAR
7429 OR p_delivery_rec.attribute13 IS NULL THEN
7430 x_delivery_rec.attribute13 :=
7431 p_delivery_rec.attribute13;
7432 END IF;
7433 IF p_delivery_rec.attribute14 <> FND_API.G_MISS_CHAR
7434 OR p_delivery_rec.attribute14 IS NULL THEN
7435 x_delivery_rec.attribute14 :=
7436 p_delivery_rec.attribute14;
7437 END IF;
7438 IF p_delivery_rec.attribute15 <> FND_API.G_MISS_CHAR
7439 OR p_delivery_rec.attribute15 IS NULL THEN
7440 x_delivery_rec.attribute15 :=
7441 p_delivery_rec.attribute15;
7442 END IF;
7443 IF p_delivery_rec.ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR
7444 OR p_delivery_rec.ATTRIBUTE_CATEGORY IS NULL THEN
7445 x_delivery_rec.ATTRIBUTE_CATEGORY :=
7446 p_delivery_rec.ATTRIBUTE_CATEGORY;
7447 END IF;
7448 IF p_delivery_rec.tp_attribute1 <> FND_API.G_MISS_CHAR
7449 OR p_delivery_rec.tp_attribute1 IS NULL THEN
7450 x_delivery_rec.tp_attribute1 :=
7451 p_delivery_rec.tp_attribute1;
7452 END IF;
7453 IF p_delivery_rec.tp_attribute2 <> FND_API.G_MISS_CHAR
7454 OR p_delivery_rec.tp_attribute2 IS NULL THEN
7455 x_delivery_rec.tp_attribute2 :=
7456 p_delivery_rec.tp_attribute2;
7457 END IF;
7458 IF p_delivery_rec.tp_attribute3 <> FND_API.G_MISS_CHAR
7459 OR p_delivery_rec.tp_attribute3 IS NULL THEN
7460 x_delivery_rec.tp_attribute3 :=
7461 p_delivery_rec.tp_attribute3;
7462 END IF;
7463 IF p_delivery_rec.tp_attribute4 <> FND_API.G_MISS_CHAR
7464 OR p_delivery_rec.tp_attribute4 IS NULL THEN
7465 x_delivery_rec.tp_attribute4 :=
7466 p_delivery_rec.tp_attribute4;
7467 END IF;
7468 IF p_delivery_rec.tp_attribute5 <> FND_API.G_MISS_CHAR
7469 OR p_delivery_rec.tp_attribute5 IS NULL THEN
7470 x_delivery_rec.tp_attribute5 :=
7471 p_delivery_rec.tp_attribute5;
7472 END IF;
7473 IF p_delivery_rec.tp_attribute6 <> FND_API.G_MISS_CHAR
7474 OR p_delivery_rec.tp_attribute6 IS NULL THEN
7475 x_delivery_rec.tp_attribute6 :=
7476 p_delivery_rec.tp_attribute6;
7477 END IF;
7478 IF p_delivery_rec.tp_attribute7 <> FND_API.G_MISS_CHAR
7479 OR p_delivery_rec.tp_attribute7 IS NULL THEN
7480 x_delivery_rec.tp_attribute7 :=
7481 p_delivery_rec.tp_attribute7;
7482 END IF;
7483 IF p_delivery_rec.tp_attribute8 <> FND_API.G_MISS_CHAR
7484 OR p_delivery_rec.tp_attribute8 IS NULL THEN
7485 x_delivery_rec.tp_attribute8 :=
7486 p_delivery_rec.tp_attribute8;
7487 END IF;
7488 IF p_delivery_rec.tp_attribute9 <> FND_API.G_MISS_CHAR
7489 OR p_delivery_rec.tp_attribute9 IS NULL THEN
7490 x_delivery_rec.tp_attribute9 :=
7491 p_delivery_rec.tp_attribute9;
7492 END IF;
7493 IF p_delivery_rec.tp_attribute10 <> FND_API.G_MISS_CHAR
7494 OR p_delivery_rec.tp_attribute10 IS NULL THEN
7495 x_delivery_rec.tp_attribute10 :=
7496 p_delivery_rec.tp_attribute10;
7497 END IF;
7498 IF p_delivery_rec.tp_attribute11 <> FND_API.G_MISS_CHAR
7499 OR p_delivery_rec.tp_attribute11 IS NULL THEN
7500 x_delivery_rec.tp_attribute11 :=
7501 p_delivery_rec.tp_attribute11;
7502 END IF;
7503 IF p_delivery_rec.tp_attribute12 <> FND_API.G_MISS_CHAR
7504 OR p_delivery_rec.tp_attribute12 IS NULL THEN
7505 x_delivery_rec.tp_attribute12 :=
7506 p_delivery_rec.tp_attribute12;
7507 END IF;
7508 IF p_delivery_rec.tp_attribute13 <> FND_API.G_MISS_CHAR
7509 OR p_delivery_rec.tp_attribute13 IS NULL THEN
7510 x_delivery_rec.tp_attribute13 :=
7511 p_delivery_rec.tp_attribute13;
7512 END IF;
7513 IF p_delivery_rec.tp_attribute14 <> FND_API.G_MISS_CHAR
7514 OR p_delivery_rec.tp_attribute14 IS NULL THEN
7515 x_delivery_rec.tp_attribute14 :=
7516 p_delivery_rec.tp_attribute14;
7517 END IF;
7518 IF p_delivery_rec.tp_attribute15 <> FND_API.G_MISS_CHAR
7519 OR p_delivery_rec.tp_attribute15 IS NULL THEN
7520 x_delivery_rec.tp_attribute15 :=
7521 p_delivery_rec.tp_attribute15;
7522 END IF;
7523 IF p_delivery_rec.tp_ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR
7524 OR p_delivery_rec.tp_ATTRIBUTE_CATEGORY IS NULL THEN
7525 x_delivery_rec.tp_ATTRIBUTE_CATEGORY :=
7526 p_delivery_rec.tp_ATTRIBUTE_CATEGORY;
7527 END IF;
7528 IF p_delivery_rec.global_attribute1 <> FND_API.G_MISS_CHAR
7529 OR p_delivery_rec.global_attribute1 IS NULL THEN
7530 x_delivery_rec.global_attribute1 :=
7531 p_delivery_rec.global_attribute1;
7532 END IF;
7533 IF p_delivery_rec.global_attribute2 <> FND_API.G_MISS_CHAR
7534 OR p_delivery_rec.global_attribute2 IS NULL THEN
7535 x_delivery_rec.global_attribute2 :=
7536 p_delivery_rec.global_attribute2;
7537 END IF;
7538 IF p_delivery_rec.global_attribute3 <> FND_API.G_MISS_CHAR
7539 OR p_delivery_rec.global_attribute3 IS NULL THEN
7540 x_delivery_rec.global_attribute3 :=
7541 p_delivery_rec.global_attribute3;
7542 END IF;
7543 IF p_delivery_rec.global_attribute4 <> FND_API.G_MISS_CHAR
7544 OR p_delivery_rec.global_attribute4 IS NULL THEN
7545 x_delivery_rec.global_attribute4 :=
7546 p_delivery_rec.global_attribute4;
7547 END IF;
7548 IF p_delivery_rec.global_attribute5 <> FND_API.G_MISS_CHAR
7549 OR p_delivery_rec.global_attribute5 IS NULL THEN
7550 x_delivery_rec.global_attribute5 :=
7551 p_delivery_rec.global_attribute5;
7552 END IF;
7553 IF p_delivery_rec.global_attribute6 <> FND_API.G_MISS_CHAR
7554 OR p_delivery_rec.global_attribute6 IS NULL THEN
7555 x_delivery_rec.global_attribute6 :=
7556 p_delivery_rec.global_attribute6;
7557 END IF;
7558 IF p_delivery_rec.global_attribute7 <> FND_API.G_MISS_CHAR
7559 OR p_delivery_rec.global_attribute7 IS NULL THEN
7560 x_delivery_rec.global_attribute7 :=
7561 p_delivery_rec.global_attribute7;
7562 END IF;
7563 IF p_delivery_rec.global_attribute8 <> FND_API.G_MISS_CHAR
7564 OR p_delivery_rec.global_attribute8 IS NULL THEN
7565 x_delivery_rec.global_attribute8 :=
7566 p_delivery_rec.global_attribute8;
7567 END IF;
7568 IF p_delivery_rec.global_attribute9 <> FND_API.G_MISS_CHAR
7569 OR p_delivery_rec.global_attribute9 IS NULL THEN
7570 x_delivery_rec.global_attribute9 :=
7571 p_delivery_rec.global_attribute9;
7572 END IF;
7573 IF p_delivery_rec.global_attribute10 <> FND_API.G_MISS_CHAR
7574 OR p_delivery_rec.global_attribute10 IS NULL THEN
7575 x_delivery_rec.global_attribute10 :=
7576 p_delivery_rec.global_attribute10;
7577 END IF;
7578 IF p_delivery_rec.global_attribute11 <> FND_API.G_MISS_CHAR
7579 OR p_delivery_rec.global_attribute11 IS NULL THEN
7580 x_delivery_rec.global_attribute11 :=
7581 p_delivery_rec.global_attribute11;
7582 END IF;
7583 IF p_delivery_rec.global_attribute12 <> FND_API.G_MISS_CHAR
7584 OR p_delivery_rec.global_attribute12 IS NULL THEN
7585 x_delivery_rec.global_attribute12 :=
7586 p_delivery_rec.global_attribute12;
7587 END IF;
7588 IF p_delivery_rec.global_attribute13 <> FND_API.G_MISS_CHAR
7589 OR p_delivery_rec.global_attribute13 IS NULL THEN
7590 x_delivery_rec.global_attribute13 :=
7591 p_delivery_rec.global_attribute13;
7592 END IF;
7593 IF p_delivery_rec.global_attribute14 <> FND_API.G_MISS_CHAR
7594 OR p_delivery_rec.global_attribute14 IS NULL THEN
7595 x_delivery_rec.global_attribute14 :=
7596 p_delivery_rec.global_attribute14;
7597 END IF;
7598 IF p_delivery_rec.global_attribute15 <> FND_API.G_MISS_CHAR
7599 OR p_delivery_rec.global_attribute15 IS NULL THEN
7600 x_delivery_rec.global_attribute15 :=
7601 p_delivery_rec.global_attribute15;
7602 END IF;
7603 IF p_delivery_rec.global_ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR
7604 OR p_delivery_rec.global_ATTRIBUTE_CATEGORY IS NULL THEN
7605 x_delivery_rec.global_ATTRIBUTE_CATEGORY :=
7606 p_delivery_rec.global_ATTRIBUTE_CATEGORY;
7607 END IF;
7608 IF p_delivery_rec.ULTIMATE_DROPOFF_DATE <> FND_API.G_MISS_DATE
7609 OR p_delivery_rec.ULTIMATE_DROPOFF_DATE IS NULL THEN
7610 x_delivery_rec.ULTIMATE_DROPOFF_DATE :=
7611 p_delivery_rec.ULTIMATE_DROPOFF_DATE;
7612 END IF;
7613 IF p_delivery_rec.DOCK_CODE <> FND_API.G_MISS_CHAR
7614 OR p_delivery_rec.DOCK_CODE IS NULL THEN
7615 x_delivery_rec.DOCK_CODE :=
7616 p_delivery_rec.DOCK_CODE;
7617 END IF;
7618 IF p_delivery_rec.ACCEPTANCE_FLAG <> FND_API.G_MISS_CHAR
7619 OR p_delivery_rec.ACCEPTANCE_FLAG IS NULL THEN
7620 x_delivery_rec.ACCEPTANCE_FLAG :=
7621 p_delivery_rec.ACCEPTANCE_FLAG;
7622 END IF;
7623 IF p_delivery_rec.ACCEPTED_BY <> FND_API.G_MISS_CHAR
7624 OR p_delivery_rec.ACCEPTED_BY IS NULL THEN
7625 x_delivery_rec.ACCEPTED_BY :=
7626 p_delivery_rec.ACCEPTED_BY;
7627 END IF;
7628 IF p_delivery_rec.ACCEPTED_DATE <> FND_API.G_MISS_DATE
7629 OR p_delivery_rec.ACCEPTED_DATE IS NULL THEN
7630 x_delivery_rec.ACCEPTED_DATE :=
7631 p_delivery_rec.ACCEPTED_DATE;
7632 END IF;
7633 IF p_delivery_rec.ACKNOWLEDGED_BY <> FND_API.G_MISS_CHAR
7634 OR p_delivery_rec.ACKNOWLEDGED_BY IS NULL THEN
7635 x_delivery_rec.ACKNOWLEDGED_BY :=
7636 p_delivery_rec.ACKNOWLEDGED_BY;
7637 END IF;
7638 IF p_delivery_rec.CONFIRMED_BY <> FND_API.G_MISS_CHAR
7639 OR p_delivery_rec.CONFIRMED_BY IS NULL THEN
7640 x_delivery_rec.CONFIRMED_BY :=
7641 p_delivery_rec.CONFIRMED_BY;
7642 END IF;
7643 IF p_delivery_rec.CONFIRM_DATE <> FND_API.G_MISS_DATE
7644 OR p_delivery_rec.CONFIRM_DATE IS NULL THEN
7645 x_delivery_rec.CONFIRM_DATE :=
7646 p_delivery_rec.CONFIRM_DATE;
7647 END IF;
7648 IF p_delivery_rec.PORT_OF_DISCHARGE <> FND_API.G_MISS_CHAR
7649 OR p_delivery_rec.PORT_OF_DISCHARGE IS NULL THEN
7650 x_delivery_rec.PORT_OF_DISCHARGE :=
7651 p_delivery_rec.PORT_OF_DISCHARGE;
7652 END IF;
7653 IF p_delivery_rec.ROUTING_INSTRUCTIONS <> FND_API.G_MISS_CHAR
7654 OR p_delivery_rec.ROUTING_INSTRUCTIONS IS NULL THEN
7655 x_delivery_rec.ROUTING_INSTRUCTIONS :=
7656 p_delivery_rec.ROUTING_INSTRUCTIONS;
7657 END IF;
7658 IF p_delivery_rec.ASSIGNED_TO_FTE_TRIPS <> FND_API.G_MISS_CHAR
7659 OR p_delivery_rec.ASSIGNED_TO_FTE_TRIPS IS NULL THEN
7660 x_delivery_rec.ASSIGNED_TO_FTE_TRIPS :=
7661 p_delivery_rec.ASSIGNED_TO_FTE_TRIPS;
7662 END IF;
7663
7664 --tkt
7665 IF p_in_rec.caller='WSH_TP_RELEASE' THEN
7666 IF p_delivery_rec.tp_plan_name <> FND_API.G_MISS_CHAR
7667 OR p_delivery_rec.tp_plan_name IS NULL THEN
7668 x_delivery_rec.tp_plan_name :=
7669 p_delivery_rec.tp_plan_name;
7670 END IF;
7671 IF p_delivery_rec.tp_delivery_number <> FND_API.G_MISS_NUM
7672 OR p_delivery_rec.tp_delivery_number IS NULL THEN
7673 x_delivery_rec.tp_delivery_number :=
7674 p_delivery_rec.tp_delivery_number;
7675 END IF;
7676 END IF;
7677
7678 /*3667348*/
7679 IF p_delivery_rec.REASON_OF_TRANSPORT <> FND_API.G_MISS_CHAR
7680 OR p_delivery_rec.REASON_OF_TRANSPORT IS NULL THEN
7681 x_delivery_rec.REASON_OF_TRANSPORT := p_delivery_rec.REASON_OF_TRANSPORT;
7682 END IF;
7683 IF p_delivery_rec.DESCRIPTION <> FND_API.G_MISS_CHAR
7684 OR p_delivery_rec.DESCRIPTION IS NULL THEN
7685 x_delivery_rec.DESCRIPTION := p_delivery_rec.DESCRIPTION;
7686 END IF;
7687
7688 END eliminate_displayonly_fields;
7689
7690 /*----------------------------------------------------------
7691 -- Procedure disable_from_list will update the record x_out_rec
7692 -- and disables the field contained in p_disabled_list.
7693 -----------------------------------------------------------*/
7694
7695 PROCEDURE disable_from_list(
7696 p_disabled_list IN WSH_UTIL_CORE.column_tab_type
7697 , p_in_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_rec_type
7698 , x_out_rec IN OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_rec_type
7699 , x_return_status OUT NOCOPY VARCHAR2
7700 , x_field_name OUT NOCOPY VARCHAR2
7701 , p_caller IN VARCHAR2
7702
7703 ) IS
7704 l_prefix VARCHAR2(1);
7705 BEGIN
7706
7707 FOR i IN 1..p_disabled_list.COUNT
7708 LOOP
7709 l_prefix := SUBSTR(p_disabled_list(i),1,1);
7710 IF l_prefix = '+' THEN
7711 IF p_disabled_list(i) = '+ADDITIONAL_SHIPMENT_INFO' THEN
7712 IF p_in_rec.ADDITIONAL_SHIPMENT_INFO IS NOT NULL THEN
7713 x_out_rec.ADDITIONAL_SHIPMENT_INFO := p_in_rec.ADDITIONAL_SHIPMENT_INFO ;
7714 END IF;
7715 ELSIF p_disabled_list(i) = '+DOCK_CODE' THEN
7716 IF p_in_rec.DOCK_CODE IS NOT NULL THEN
7717 x_out_rec.DOCK_CODE := p_in_rec.DOCK_CODE ;
7718 END IF;
7719 ELSIF p_disabled_list(i) = '+CONFIRMED_BY' THEN
7720 IF p_in_rec.CONFIRMED_BY IS NOT NULL THEN
7721 x_out_rec.CONFIRMED_BY := p_in_rec.CONFIRMED_BY ;
7722 END IF;
7723 ELSIF p_disabled_list(i) = '+INITIAL_PICKUP_LOCATION_CODE' THEN
7724 IF p_in_rec.INITIAL_PICKUP_LOCATION_ID IS NOT NULL THEN
7725 x_out_rec.INITIAL_PICKUP_LOCATION_ID :=
7726 p_in_rec.INITIAL_PICKUP_LOCATION_ID ;
7727 x_out_rec.INITIAL_PICKUP_LOCATION_CODE := FND_API.G_MISS_CHAR;
7728 END IF;
7729 ELSIF p_disabled_list(i) = '+ULTIMATE_DROPOFF_LOCATION_CODE' THEN
7730 IF p_in_rec.ULTIMATE_DROPOFF_LOCATION_ID IS NOT NULL THEN
7731 x_out_rec.ULTIMATE_DROPOFF_LOCATION_ID :=
7732 p_in_rec.ULTIMATE_DROPOFF_LOCATION_ID ;
7733 x_out_rec.ULTIMATE_DROPOFF_LOCATION_CODE := FND_API.G_MISS_CHAR;
7734 END IF;
7735 ELSIF p_disabled_list(i) = '+CUSTOMER_NAME' THEN
7736 IF p_in_rec.CUSTOMER_ID IS NOT NULL THEN
7737 x_out_rec.CUSTOMER_ID := p_in_rec.CUSTOMER_ID ;
7738 x_out_rec.CUSTOMER_NUMBER := FND_API.G_MISS_CHAR;
7739 END IF;
7740 ELSIF p_disabled_list(i) = '+ORGANIZATION_CODE' THEN
7741 IF p_in_rec.ORGANIZATION_ID IS NOT NULL THEN
7742 x_out_rec.ORGANIZATION_ID := p_in_rec.ORGANIZATION_ID ;
7743 x_out_rec.organization_code := FND_API.G_MISS_CHAR;
7744 END IF;
7745 ELSIF p_disabled_list(i) = '+LOADING_ORDER_FLAG' THEN
7746 IF p_in_rec.LOADING_ORDER_FLAG IS NOT NULL THEN
7747 x_out_rec.LOADING_ORDER_FLAG := p_in_rec.LOADING_ORDER_FLAG ;
7748 x_out_rec.LOADING_ORDER_DESC := FND_API.G_MISS_CHAR;
7749 END IF;
7750 ELSIF p_disabled_list(i) = '+ACCEPTANCE_FLAG' THEN
7751 IF p_in_rec.ACCEPTANCE_FLAG IS NOT NULL THEN
7752 x_out_rec.ACCEPTANCE_FLAG := p_in_rec.ACCEPTANCE_FLAG ;
7753 END IF;
7754 ELSIF p_disabled_list(i) = '+ACCEPTED_BY' THEN
7755 IF p_in_rec.ACCEPTED_BY IS NOT NULL THEN
7756 x_out_rec.ACCEPTED_BY := p_in_rec.ACCEPTED_BY ;
7757 END IF;
7758 ELSIF p_disabled_list(i) = '+ACCEPTED_DATE' THEN
7759 IF p_in_rec.ACCEPTED_DATE IS NOT NULL THEN
7760 x_out_rec.ACCEPTED_DATE := p_in_rec.ACCEPTED_DATE ;
7761 END IF;
7762 ELSIF p_disabled_list(i) = '+ACKNOWLEDGED_BY' THEN
7763 IF p_in_rec.ACKNOWLEDGED_BY IS NOT NULL THEN
7764 x_out_rec.ACKNOWLEDGED_BY := p_in_rec.ACKNOWLEDGED_BY ;
7765 END IF;
7766 ELSIF p_disabled_list(i) = '+CURRENCY_CODE' THEN
7767 IF p_in_rec.CURRENCY_CODE IS NOT NULL THEN
7768 x_out_rec.CURRENCY_CODE := p_in_rec.CURRENCY_CODE ;
7769 x_out_rec.currency_name := FND_API.G_MISS_CHAR;
7770 END IF;
7771 ELSIF p_disabled_list(i) = '+INITIAL_PICKUP_DATE' THEN
7772 IF p_in_rec.INITIAL_PICKUP_DATE IS NOT NULL THEN
7773 x_out_rec.INITIAL_PICKUP_DATE := p_in_rec.INITIAL_PICKUP_DATE ;
7774 END IF;
7775 ELSIF p_disabled_list(i) = '+ULTIMATE_DROPOFF_DATE' THEN
7776 IF p_in_rec.ULTIMATE_DROPOFF_DATE IS NOT NULL THEN
7777 x_out_rec.ULTIMATE_DROPOFF_DATE := p_in_rec.ULTIMATE_DROPOFF_DATE ;
7778 END IF;
7779 ELSIF p_disabled_list(i) = '+LOADING_SEQUENCE' THEN
7780 IF p_in_rec.LOADING_SEQUENCE IS NOT NULL THEN
7781 x_out_rec.LOADING_SEQUENCE := p_in_rec.LOADING_SEQUENCE ;
7782 END IF;
7783 ELSIF p_disabled_list(i) = '+SHIP_METHOD_NAME' THEN
7784 IF p_in_rec.SHIP_METHOD_CODE IS NOT NULL THEN
7785 x_out_rec.SHIP_METHOD_CODE := p_in_rec.SHIP_METHOD_CODE ;
7786 x_out_rec.ship_method_name := FND_API.G_MISS_CHAR;
7787 END IF;
7788 ELSIF p_disabled_list(i) = '+FREIGHT_CODE' THEN
7789 NULL ;
7790 -- J-IB-NPARIKH-{ --I-bugfix
7791 IF p_in_rec.CARRIER_CODE IS NOT NULL THEN
7792 x_out_rec.carrier_id := p_in_rec.carrier_id ;
7793 x_out_rec.CARRIER_CODE := FND_API.G_MISS_CHAR;
7794 END IF;
7795 -- J-IB-NPARIKH-}
7796
7797 ELSIF p_disabled_list(i) = '+SERVICE_LEVEL_NAME' THEN
7798 IF p_in_rec.SERVICE_LEVEL IS NOT NULL THEN
7799 x_out_rec.SERVICE_LEVEL := p_in_rec.SERVICE_LEVEL ;
7800 END IF;
7801 ELSIF p_disabled_list(i) = '+MODE_OF_TRANSPORT_NAME' THEN
7802 IF p_in_rec.MODE_OF_TRANSPORT IS NOT NULL THEN
7803 x_out_rec.MODE_OF_TRANSPORT := p_in_rec.MODE_OF_TRANSPORT ;
7804 END IF;
7805 ELSIF p_disabled_list(i) = '+NAME' THEN
7806 IF p_in_rec.NAME IS NOT NULL THEN
7807 x_out_rec.NAME := p_in_rec.NAME ;
7808 END IF;
7809 ELSIF p_disabled_list(i) = '+INTMED_SHIP_TO_LOCATION_CODE' THEN
7810 IF p_in_rec.INTMED_SHIP_TO_LOCATION_ID IS NOT NULL THEN
7811 x_out_rec.INTMED_SHIP_TO_LOCATION_ID :=
7812 p_in_rec.INTMED_SHIP_TO_LOCATION_ID ;
7813 x_out_rec.INTMED_SHIP_TO_LOCATION_CODE := FND_API.G_MISS_CHAR;
7814 END IF;
7815 ELSIF p_disabled_list(i) = '+POOLED_SHIP_TO_LOCATION_CODE' THEN
7816 IF p_in_rec.POOLED_SHIP_TO_LOCATION_ID IS NOT NULL THEN
7817 x_out_rec.POOLED_SHIP_TO_LOCATION_ID :=
7818 p_in_rec.POOLED_SHIP_TO_LOCATION_ID ;
7819 x_out_rec.POOLED_SHIP_TO_LOCATION_CODE := FND_API.G_MISS_CHAR;
7820 END IF;
7821 ELSIF p_disabled_list(i) = '+WAYBILL' THEN
7822 IF p_in_rec.WAYBILL IS NOT NULL THEN
7823 x_out_rec.WAYBILL := p_in_rec.WAYBILL ;
7824 END IF;
7825 ELSIF p_disabled_list(i) = '+FREIGHT_TERMS_NAME' THEN
7826 IF p_in_rec.FREIGHT_TERMS_CODE IS NOT NULL THEN
7827 x_out_rec.FREIGHT_TERMS_CODE := p_in_rec.FREIGHT_TERMS_CODE ;
7828 x_out_rec.FREIGHT_TERMS_NAME := FND_API.G_MISS_CHAR;
7829 END IF;
7830 ELSIF p_disabled_list(i) = '+GROSS_WEIGHT' THEN
7831 IF p_in_rec.GROSS_WEIGHT IS NOT NULL THEN
7832 x_out_rec.GROSS_WEIGHT := p_in_rec.GROSS_WEIGHT ;
7833 END IF;
7834 ELSIF p_disabled_list(i) = '+NET_WEIGHT' THEN
7835 IF p_in_rec.NET_WEIGHT IS NOT NULL THEN
7836 x_out_rec.NET_WEIGHT := p_in_rec.NET_WEIGHT ;
7837 END IF;
7838 ELSIF p_disabled_list(i) = '+WEIGHT_UOM_CODE' THEN
7839 IF p_in_rec.WEIGHT_UOM_CODE IS NOT NULL THEN
7840 x_out_rec.WEIGHT_UOM_CODE := p_in_rec.WEIGHT_UOM_CODE ;
7841 END IF;
7842 ELSIF p_disabled_list(i) = '+VOLUME' THEN
7843 IF p_in_rec.VOLUME IS NOT NULL THEN
7844 x_out_rec.VOLUME := p_in_rec.VOLUME ;
7845 END IF;
7846 ELSIF p_disabled_list(i) = '+VOLUME_UOM_CODE' THEN
7847 IF p_in_rec.VOLUME_UOM_CODE IS NOT NULL THEN
7848 x_out_rec.VOLUME_UOM_CODE := p_in_rec.VOLUME_UOM_CODE ;
7849 x_out_rec.volume_uom_desc := FND_API.G_MISS_CHAR;
7850 END IF;
7851 ELSIF p_disabled_list(i) = '+FOB_NAME' THEN
7852 IF p_in_rec.FOB_CODE IS NOT NULL THEN
7853 x_out_rec.FOB_CODE := p_in_rec.FOB_CODE ;
7854 x_out_rec.FOB_NAME := FND_API.G_MISS_CHAR;
7855 END IF;
7856 ELSIF p_disabled_list(i) = '+FOB_LOCATION_CODE' THEN
7857 IF p_in_rec.FOB_LOCATION_ID IS NOT NULL THEN
7858 x_out_rec.FOB_LOCATION_ID := p_in_rec.FOB_LOCATION_ID ;
7859 x_out_rec.FOB_LOCATION_CODE := FND_API.G_MISS_CHAR;
7860 END IF;
7861 ELSIF p_disabled_list(i) = '+AUTO_SC_EXCLUDE_FLAG' THEN
7862 IF p_in_rec.AUTO_SC_EXCLUDE_FLAG IS NOT NULL THEN
7863 x_out_rec.AUTO_SC_EXCLUDE_FLAG := p_in_rec.AUTO_SC_EXCLUDE_FLAG ;
7864 END IF;
7865 ELSIF p_disabled_list(i) = '+AUTO_AP_EXCLUDE_FLAG' THEN
7866 IF p_in_rec.AUTO_AP_EXCLUDE_FLAG IS NOT NULL THEN
7867 x_out_rec.AUTO_AP_EXCLUDE_FLAG := p_in_rec.AUTO_AP_EXCLUDE_FLAG ;
7868 END IF;
7869 ELSIF p_disabled_list(i) = '+NUMBER_OF_LPN' THEN
7870 IF p_in_rec.NUMBER_OF_LPN IS NOT NULL THEN
7871 x_out_rec.NUMBER_OF_LPN := p_in_rec.NUMBER_OF_LPN ;
7872 END IF;
7873 ELSIF p_disabled_list(i) = '+DESC_FLEX' THEN
7874 IF p_in_rec.attribute1 IS NOT NULL THEN
7875 x_out_rec.attribute1 := p_in_rec.attribute1 ;
7876 END IF;
7877 IF p_in_rec.attribute2 IS NOT NULL THEN
7878 x_out_rec.attribute2 := p_in_rec.attribute2 ;
7879 END IF;
7880 IF p_in_rec.attribute3 IS NOT NULL THEN
7881 x_out_rec.attribute3 := p_in_rec.attribute3 ;
7882 END IF;
7883 IF p_in_rec.attribute4 IS NOT NULL THEN
7884 x_out_rec.attribute4 := p_in_rec.attribute4 ;
7885 END IF;
7886 IF p_in_rec.attribute5 IS NOT NULL THEN
7887 x_out_rec.attribute5 := p_in_rec.attribute5 ;
7888 END IF;
7889 IF p_in_rec.attribute6 IS NOT NULL THEN
7890 x_out_rec.attribute6 := p_in_rec.attribute6 ;
7891 END IF;
7892 IF p_in_rec.attribute7 IS NOT NULL THEN
7893 x_out_rec.attribute7 := p_in_rec.attribute7 ;
7894 END IF;
7895 IF p_in_rec.attribute8 IS NOT NULL THEN
7896 x_out_rec.attribute8 := p_in_rec.attribute8 ;
7897 END IF;
7898 IF p_in_rec.attribute9 IS NOT NULL THEN
7899 x_out_rec.attribute9 := p_in_rec.attribute9 ;
7900 END IF;
7901 IF p_in_rec.attribute10 IS NOT NULL THEN
7902 x_out_rec.attribute10 := p_in_rec.attribute10 ;
7903 END IF;
7904 IF p_in_rec.attribute11 IS NOT NULL THEN
7905 x_out_rec.attribute11 := p_in_rec.attribute11 ;
7906 END IF;
7907 IF p_in_rec.attribute12 IS NOT NULL THEN
7908 x_out_rec.attribute12 := p_in_rec.attribute12 ;
7909 END IF;
7910 IF p_in_rec.attribute13 IS NOT NULL THEN
7911 x_out_rec.attribute13 := p_in_rec.attribute13 ;
7912 END IF;
7913 IF p_in_rec.attribute14 IS NOT NULL THEN
7914 x_out_rec.attribute14 := p_in_rec.attribute14 ;
7915 END IF;
7916 IF p_in_rec.attribute15 IS NOT NULL THEN
7917 x_out_rec.attribute15 := p_in_rec.attribute15 ;
7918 END IF;
7919 IF p_in_rec.attribute_category IS NOT NULL THEN
7920 x_out_rec.attribute_category := p_in_rec.attribute_category ;
7921 END IF;
7922 ELSIF p_disabled_list(i) = '+TP_FLEXFIELD' THEN
7923 IF p_in_rec.tp_attribute1 IS NOT NULL THEN
7924 x_out_rec.tp_attribute1 := p_in_rec.tp_attribute1 ;
7925 END IF;
7926 IF p_in_rec.tp_attribute2 IS NOT NULL THEN
7927 x_out_rec.tp_attribute2 := p_in_rec.tp_attribute2 ;
7928 END IF;
7929 IF p_in_rec.tp_attribute3 IS NOT NULL THEN
7930 x_out_rec.tp_attribute3 := p_in_rec.tp_attribute3 ;
7931 END IF;
7932 IF p_in_rec.tp_attribute4 IS NOT NULL THEN
7933 x_out_rec.tp_attribute4 := p_in_rec.tp_attribute4 ;
7934 END IF;
7935 IF p_in_rec.tp_attribute5 IS NOT NULL THEN
7936 x_out_rec.tp_attribute5 := p_in_rec.tp_attribute5 ;
7937 END IF;
7938 IF p_in_rec.tp_attribute6 IS NOT NULL THEN
7939 x_out_rec.tp_attribute6 := p_in_rec.tp_attribute6 ;
7940 END IF;
7941 IF p_in_rec.tp_attribute7 IS NOT NULL THEN
7942 x_out_rec.tp_attribute7 := p_in_rec.tp_attribute7 ;
7943 END IF;
7944 IF p_in_rec.tp_attribute8 IS NOT NULL THEN
7945 x_out_rec.tp_attribute8 := p_in_rec.tp_attribute8 ;
7946 END IF;
7947 IF p_in_rec.tp_attribute9 IS NOT NULL THEN
7948 x_out_rec.tp_attribute9 := p_in_rec.tp_attribute9 ;
7949 END IF;
7950 IF p_in_rec.tp_attribute10 IS NOT NULL THEN
7951 x_out_rec.tp_attribute10 := p_in_rec.tp_attribute10 ;
7952 END IF;
7953 IF p_in_rec.tp_attribute11 IS NOT NULL THEN
7954 x_out_rec.tp_attribute11 := p_in_rec.tp_attribute11 ;
7955 END IF;
7956 IF p_in_rec.tp_attribute12 IS NOT NULL THEN
7957 x_out_rec.tp_attribute12 := p_in_rec.tp_attribute12 ;
7958 END IF;
7959 IF p_in_rec.tp_attribute13 IS NOT NULL THEN
7960 x_out_rec.tp_attribute13 := p_in_rec.tp_attribute13 ;
7961 END IF;
7962 IF p_in_rec.tp_attribute14 IS NOT NULL THEN
7963 x_out_rec.tp_attribute14 := p_in_rec.tp_attribute14 ;
7964 END IF;
7965 IF p_in_rec.tp_attribute15 IS NOT NULL THEN
7966 x_out_rec.tp_attribute15 := p_in_rec.tp_attribute15 ;
7967 END IF;
7968 IF p_in_rec.tp_attribute_category IS NOT NULL THEN
7969 x_out_rec.tp_attribute_category := p_in_rec.tp_attribute_category ;
7970 END IF;
7971 ELSIF p_disabled_list(i) = '+GLOBALIZATION_FLEXFIELD' THEN
7972 IF p_in_rec.global_attribute1 IS NOT NULL THEN
7973 x_out_rec.global_attribute1 := p_in_rec.global_attribute1 ;
7974 END IF;
7975 IF p_in_rec.global_attribute2 IS NOT NULL THEN
7976 x_out_rec.global_attribute2 := p_in_rec.global_attribute2 ;
7977 END IF;
7978 IF p_in_rec.global_attribute3 IS NOT NULL THEN
7979 x_out_rec.global_attribute3 := p_in_rec.global_attribute3 ;
7980 END IF;
7981 IF p_in_rec.global_attribute4 IS NOT NULL THEN
7982 x_out_rec.global_attribute4 := p_in_rec.global_attribute4 ;
7983 END IF;
7984 IF p_in_rec.global_attribute5 IS NOT NULL THEN
7985 x_out_rec.global_attribute5 := p_in_rec.global_attribute5 ;
7986 END IF;
7987 IF p_in_rec.global_attribute6 IS NOT NULL THEN
7988 x_out_rec.global_attribute6 := p_in_rec.global_attribute6 ;
7989 END IF;
7990 IF p_in_rec.global_attribute7 IS NOT NULL THEN
7991 x_out_rec.global_attribute7 := p_in_rec.global_attribute7 ;
7992 END IF;
7993 IF p_in_rec.global_attribute8 IS NOT NULL THEN
7994 x_out_rec.global_attribute8 := p_in_rec.global_attribute8 ;
7995 END IF;
7996 IF p_in_rec.global_attribute9 IS NOT NULL THEN
7997 x_out_rec.global_attribute9 := p_in_rec.global_attribute9 ;
7998 END IF;
7999 IF p_in_rec.global_attribute10 IS NOT NULL THEN
8000 x_out_rec.global_attribute10 := p_in_rec.global_attribute10 ;
8001 END IF;
8002 IF p_in_rec.global_attribute11 IS NOT NULL THEN
8003 x_out_rec.global_attribute11 := p_in_rec.global_attribute11 ;
8004 END IF;
8005 IF p_in_rec.global_attribute12 IS NOT NULL THEN
8006 x_out_rec.global_attribute12 := p_in_rec.global_attribute12 ;
8007 END IF;
8008 IF p_in_rec.global_attribute13 IS NOT NULL THEN
8009 x_out_rec.global_attribute13 := p_in_rec.global_attribute13 ;
8010 END IF;
8011 IF p_in_rec.global_attribute14 IS NOT NULL THEN
8012 x_out_rec.global_attribute14 := p_in_rec.global_attribute14 ;
8013 END IF;
8014 IF p_in_rec.global_attribute15 IS NOT NULL THEN
8015 x_out_rec.global_attribute15 := p_in_rec.global_attribute15 ;
8016 END IF;
8017 IF p_in_rec.global_attribute_category IS NOT NULL THEN
8018 x_out_rec.global_attribute_category := p_in_rec.global_attribute_category ;
8019 END IF;
8020 ELSIF p_disabled_list(i) = '+TARE_WEIGHT' THEN
8021 NULL;
8022 ELSE
8023 -- invalid name
8024 x_field_name := p_disabled_list(i);
8025 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8026 RETURN;
8027 --
8028 END IF;
8029 ELSE -- else if l_prefix is not '+'
8030 IF p_disabled_list(i) = 'ADDITIONAL_SHIPMENT_INFO' THEN
8031 x_out_rec.ADDITIONAL_SHIPMENT_INFO := p_in_rec.ADDITIONAL_SHIPMENT_INFO ;
8032 ELSIF p_disabled_list(i) = 'DOCK_CODE' THEN
8033 x_out_rec.DOCK_CODE := p_in_rec.DOCK_CODE ;
8034 ELSIF p_disabled_list(i) = 'CONFIRMED_BY' THEN
8035 x_out_rec.CONFIRMED_BY := p_in_rec.CONFIRMED_BY ;
8036 ELSIF p_disabled_list(i) = 'INITIAL_PICKUP_LOCATION_CODE' THEN
8037 x_out_rec.INITIAL_PICKUP_LOCATION_ID :=
8038 p_in_rec.INITIAL_PICKUP_LOCATION_ID ;
8039 x_out_rec.INITIAL_PICKUP_LOCATION_CODE := FND_API.G_MISS_CHAR;
8040 ELSIF p_disabled_list(i) = 'ULTIMATE_DROPOFF_LOCATION_CODE' THEN
8041 x_out_rec.ULTIMATE_DROPOFF_LOCATION_ID :=
8042 p_in_rec.ULTIMATE_DROPOFF_LOCATION_ID ;
8043 x_out_rec.ULTIMATE_DROPOFF_LOCATION_CODE := FND_API.G_MISS_CHAR;
8044 ELSIF p_disabled_list(i) = 'CUSTOMER_NAME' THEN
8045 x_out_rec.CUSTOMER_ID := p_in_rec.CUSTOMER_ID ;
8046 x_out_rec.customer_number := FND_API.G_MISS_CHAR;
8047 ELSIF p_disabled_list(i) = 'ORGANIZATION_CODE' THEN
8048 x_out_rec.ORGANIZATION_ID := p_in_rec.ORGANIZATION_ID ;
8049 x_out_rec.ORGANIZATION_CODE := FND_API.G_MISS_CHAR;
8050 ELSIF p_disabled_list(i) = 'LOADING_ORDER_FLAG' THEN
8051 x_out_rec.LOADING_ORDER_FLAG := p_in_rec.LOADING_ORDER_FLAG ;
8052 x_out_rec.LOADING_ORDER_DESC := FND_API.G_MISS_CHAR;
8053 ELSIF p_disabled_list(i) = 'ACCEPTANCE_FLAG' THEN
8054 x_out_rec.ACCEPTANCE_FLAG := p_in_rec.ACCEPTANCE_FLAG ;
8055 ELSIF p_disabled_list(i) = 'ACCEPTED_BY' THEN
8056 x_out_rec.ACCEPTED_BY := p_in_rec.ACCEPTED_BY ;
8057 ELSIF p_disabled_list(i) = 'ACCEPTED_DATE' THEN
8058 x_out_rec.ACCEPTED_DATE := p_in_rec.ACCEPTED_DATE ;
8059 ELSIF p_disabled_list(i) = 'ACKNOWLEDGED_BY' THEN
8060 x_out_rec.ACKNOWLEDGED_BY := p_in_rec.ACKNOWLEDGED_BY ;
8061 ELSIF p_disabled_list(i) = 'CURRENCY_CODE' THEN
8062 x_out_rec.CURRENCY_CODE := p_in_rec.CURRENCY_CODE ;
8063 x_out_rec.currency_name := FND_API.G_MISS_CHAR;
8064 ELSIF p_disabled_list(i) = 'INITIAL_PICKUP_DATE' THEN
8065 x_out_rec.INITIAL_PICKUP_DATE := p_in_rec.INITIAL_PICKUP_DATE ;
8066 ELSIF p_disabled_list(i) = 'ULTIMATE_DROPOFF_DATE' THEN
8067 x_out_rec.ULTIMATE_DROPOFF_DATE := p_in_rec.ULTIMATE_DROPOFF_DATE ;
8068 ELSIF p_disabled_list(i) = 'LOADING_SEQUENCE' THEN
8069 x_out_rec.LOADING_SEQUENCE := p_in_rec.LOADING_SEQUENCE ;
8070 ELSIF p_disabled_list(i) = 'SHIP_METHOD_NAME' THEN
8071 x_out_rec.SHIP_METHOD_CODE := p_in_rec.SHIP_METHOD_CODE ;
8072 x_out_rec.SHIP_METHOD_NAME := FND_API.G_MISS_CHAR;
8073 ELSIF p_disabled_list(i) = 'FREIGHT_CODE' THEN
8074 IF (nvl(p_caller, '!!!!') <> 'WSH_INBOUND') THEN
8075 --x_out_rec.carrier_code := p_in_rec.carrier_code ; -- J-IB-NPARIKH--I-bug-fix
8076 x_out_rec.carrier_id := p_in_rec.carrier_id ; -- J-IB-NPARIKH--I-bug-fix
8077 x_out_rec.CARRIER_CODE := FND_API.G_MISS_CHAR; -- J-IB-NPARIKH--I-bug-fix
8078 END IF;
8079 ELSIF p_disabled_list(i) = 'SERVICE_LEVEL_NAME' THEN
8080 IF (nvl(p_caller, '!!!!') <> 'WSH_INBOUND') THEN
8081 x_out_rec.SERVICE_LEVEL := p_in_rec.SERVICE_LEVEL ;
8082 END IF;
8083 ELSIF p_disabled_list(i) = 'MODE_OF_TRANSPORT_NAME' THEN
8084 IF (nvl(p_caller, '!!!!') <> 'WSH_INBOUND') THEN
8085 x_out_rec.MODE_OF_TRANSPORT := p_in_rec.MODE_OF_TRANSPORT ;
8086 END IF;
8087 ELSIF p_disabled_list(i) = 'NAME' THEN
8088 x_out_rec.NAME := p_in_rec.NAME ;
8089 ELSIF p_disabled_list(i) = 'INTMED_SHIP_TO_LOCATION_CODE' THEN
8090 x_out_rec.INTMED_SHIP_TO_LOCATION_ID :=
8091 p_in_rec.INTMED_SHIP_TO_LOCATION_ID ;
8092 x_out_rec.INTMED_SHIP_TO_LOCATION_CODE := FND_API.G_MISS_CHAR;
8093 ELSIF p_disabled_list(i) = 'POOLED_SHIP_TO_LOCATION_CODE' THEN
8094 x_out_rec.POOLED_SHIP_TO_LOCATION_ID :=
8095 p_in_rec.POOLED_SHIP_TO_LOCATION_ID ;
8096 x_out_rec.POOLED_SHIP_TO_LOCATION_CODE := FND_API.G_MISS_CHAR;
8097 ELSIF p_disabled_list(i) = 'WAYBILL' THEN
8098 x_out_rec.WAYBILL := p_in_rec.WAYBILL ;
8099 ELSIF p_disabled_list(i) = 'FREIGHT_TERMS_NAME' THEN
8100 x_out_rec.FREIGHT_TERMS_CODE := p_in_rec.FREIGHT_TERMS_CODE ;
8101 x_out_rec.FREIGHT_TERMS_NAME := FND_API.G_MISS_CHAR;
8102 ELSIF p_disabled_list(i) = 'GROSS_WEIGHT' THEN
8103 x_out_rec.GROSS_WEIGHT := p_in_rec.GROSS_WEIGHT ;
8104 ELSIF p_disabled_list(i) = 'NET_WEIGHT' THEN
8105 x_out_rec.NET_WEIGHT := p_in_rec.NET_WEIGHT ;
8106 -- Non Database field prorate_wt_flag added for "Proration of weight from Delivery to delivery lines" Project(Bug#4254552).
8107 ELSIF p_disabled_list(i) = 'PRORATE_WT_FLAG' THEN
8108 x_out_rec.PRORATE_WT_FLAG := p_in_rec.PRORATE_WT_FLAG ;
8109 --
8110 ELSIF p_disabled_list(i) = 'WEIGHT_UOM_CODE' THEN
8111 x_out_rec.WEIGHT_UOM_CODE := p_in_rec.WEIGHT_UOM_CODE ;
8112 x_out_rec.weight_uom_desc := FND_API.G_MISS_CHAR;
8113 ELSIF p_disabled_list(i) = 'VOLUME' THEN
8114 x_out_rec.VOLUME := p_in_rec.VOLUME ;
8115 ELSIF p_disabled_list(i) = 'VOLUME_UOM_CODE' THEN
8116 x_out_rec.VOLUME_UOM_CODE := p_in_rec.VOLUME_UOM_CODE ;
8117 x_out_rec.volume_uom_desc := FND_API.G_MISS_CHAR;
8118 ELSIF p_disabled_list(i) = 'FOB_NAME' THEN
8119 x_out_rec.FOB_CODE := p_in_rec.FOB_CODE ;
8120 x_out_rec.FOB_NAME := FND_API.G_MISS_CHAR;
8121 ELSIF p_disabled_list(i) = 'FOB_LOCATION_CODE' THEN
8122 x_out_rec.FOB_LOCATION_ID := p_in_rec.FOB_LOCATION_ID ;
8123 x_out_rec.FOB_LOCATION_CODE := FND_API.G_MISS_CHAR;
8124 ELSIF p_disabled_list(i) = 'NUMBER_OF_LPN' THEN
8125 x_out_rec.NUMBER_OF_LPN := p_in_rec.NUMBER_OF_LPN ;
8126 ELSIF p_disabled_list(i) = 'AUTO_SC_EXCLUDE_FLAG' THEN
8127 x_out_rec.AUTO_SC_EXCLUDE_FLAG := p_in_rec.AUTO_SC_EXCLUDE_FLAG ;
8128 ELSIF p_disabled_list(i) = 'AUTO_AP_EXCLUDE_FLAG' THEN
8129 x_out_rec.AUTO_AP_EXCLUDE_FLAG := p_in_rec.AUTO_AP_EXCLUDE_FLAG ;
8130 ELSIF p_disabled_list(i) = 'DESC_FLEX' THEN
8131 x_out_rec.attribute1 := p_in_rec.attribute1 ;
8132 x_out_rec.attribute2 := p_in_rec.attribute2 ;
8133 x_out_rec.attribute3 := p_in_rec.attribute3 ;
8134 x_out_rec.attribute4 := p_in_rec.attribute4 ;
8135 x_out_rec.attribute5 := p_in_rec.attribute5 ;
8136 x_out_rec.attribute6 := p_in_rec.attribute6 ;
8137 x_out_rec.attribute7 := p_in_rec.attribute7 ;
8138 x_out_rec.attribute8 := p_in_rec.attribute8 ;
8139 x_out_rec.attribute9 := p_in_rec.attribute9 ;
8140 x_out_rec.attribute10 := p_in_rec.attribute10 ;
8141 x_out_rec.attribute11 := p_in_rec.attribute11 ;
8142 x_out_rec.attribute12 := p_in_rec.attribute12 ;
8143 x_out_rec.attribute13 := p_in_rec.attribute13 ;
8144 x_out_rec.attribute14 := p_in_rec.attribute14 ;
8145 x_out_rec.attribute15 := p_in_rec.attribute15 ;
8146 x_out_rec.attribute_category := p_in_rec.attribute_category ;
8147 ELSIF p_disabled_list(i) = 'TP_FLEXFIELD' THEN
8148 x_out_rec.tp_attribute1 := p_in_rec.tp_attribute1 ;
8149 x_out_rec.tp_attribute2 := p_in_rec.tp_attribute2 ;
8150 x_out_rec.tp_attribute3 := p_in_rec.tp_attribute3 ;
8151 x_out_rec.tp_attribute4 := p_in_rec.tp_attribute4 ;
8152 x_out_rec.tp_attribute5 := p_in_rec.tp_attribute5 ;
8153 x_out_rec.tp_attribute6 := p_in_rec.tp_attribute6 ;
8154 x_out_rec.tp_attribute7 := p_in_rec.tp_attribute7 ;
8155 x_out_rec.tp_attribute8 := p_in_rec.tp_attribute8 ;
8156 x_out_rec.tp_attribute9 := p_in_rec.tp_attribute9 ;
8157 x_out_rec.tp_attribute10 := p_in_rec.tp_attribute10 ;
8158 x_out_rec.tp_attribute11 := p_in_rec.tp_attribute11 ;
8159 x_out_rec.tp_attribute12 := p_in_rec.tp_attribute12 ;
8160 x_out_rec.tp_attribute13 := p_in_rec.tp_attribute13 ;
8161 x_out_rec.tp_attribute14 := p_in_rec.tp_attribute14 ;
8162 x_out_rec.tp_attribute15 := p_in_rec.tp_attribute15 ;
8163 x_out_rec.tp_attribute_category := p_in_rec.tp_attribute_category ;
8164 ELSIF p_disabled_list(i) = 'GLOBALIZATION_FLEXFIELD' THEN
8165 x_out_rec.global_attribute1 := p_in_rec.global_attribute1 ;
8166 x_out_rec.global_attribute2 := p_in_rec.global_attribute2 ;
8167 x_out_rec.global_attribute3 := p_in_rec.global_attribute3 ;
8168 x_out_rec.global_attribute4 := p_in_rec.global_attribute4 ;
8169 x_out_rec.global_attribute5 := p_in_rec.global_attribute5 ;
8170 x_out_rec.global_attribute6 := p_in_rec.global_attribute6 ;
8171 x_out_rec.global_attribute7 := p_in_rec.global_attribute7 ;
8172 x_out_rec.global_attribute8 := p_in_rec.global_attribute8 ;
8173 x_out_rec.global_attribute9 := p_in_rec.global_attribute9 ;
8174 x_out_rec.global_attribute10 := p_in_rec.global_attribute10 ;
8175 x_out_rec.global_attribute11 := p_in_rec.global_attribute11 ;
8176 x_out_rec.global_attribute12 := p_in_rec.global_attribute12 ;
8177 x_out_rec.global_attribute13 := p_in_rec.global_attribute13 ;
8178 x_out_rec.global_attribute14 := p_in_rec.global_attribute14 ;
8179 x_out_rec.global_attribute15 := p_in_rec.global_attribute15 ;
8180 x_out_rec.global_attribute_category := p_in_rec.global_attribute_category;
8181 ELSIF p_disabled_list(i) = 'FULL'
8182 OR p_disabled_list(i) = 'TARE_WEIGHT' THEN
8183 NULL;
8184 ELSE
8185 -- invalid name
8186 x_field_name := p_disabled_list(i);
8187 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8188 RETURN;
8189 --
8190 END IF;
8191 END IF;
8192 END LOOP;
8193 END disable_from_list;
8194
8195 /*
8196 Procedure populate_external_efl is called from
8197 enable_from_list to populate the external value
8198 for a given internal field
8199 */
8200
8201 PROCEDURE populate_external_efl(
8202 p_internal IN NUMBER
8203 , p_external IN VARCHAR2
8204 , p_mode IN VARCHAR2
8205 , x_internal IN OUT NOCOPY NUMBER
8206 , x_external IN OUT NOCOPY VARCHAR2
8207 )
8208 IS
8209 BEGIN
8210
8211 IF p_mode = '+' THEN
8212 IF x_internal IS NULL THEN
8213 IF p_internal <> FND_API.G_MISS_NUM OR p_internal IS NULL THEN
8214 x_internal := p_internal ;
8215 IF p_internal IS NULL THEN
8216 x_external := NULL;
8217 ELSE
8218 x_external := p_external;
8219 END IF;
8220 ELSIF p_external <> FND_API.G_MISS_CHAR OR p_external IS NULL THEN
8221 x_external := p_external;
8222 IF p_external IS NULL THEN
8223 x_internal := NULL;
8224 ELSE
8225 x_internal := p_internal;
8226 END IF;
8227 END IF;
8228 END IF;
8229 ELSE --p_mode <> +
8230 IF p_internal <> FND_API.G_MISS_NUM OR p_internal IS NULL THEN
8231 x_internal := p_internal ;
8232 IF p_internal IS NULL THEN
8233 x_external := NULL;
8234 ELSE
8235 x_external := p_external;
8236 END IF;
8237 ELSIF p_external <> FND_API.G_MISS_CHAR OR p_external IS NULL THEN
8238 x_external := p_external;
8239 IF p_external IS NULL THEN
8240 x_internal := NULL;
8241 ELSE
8242 x_internal := p_internal;
8243 END IF;
8244 END IF;
8245 END IF;
8246
8247 END populate_external_efl;
8248
8249 /*
8250 Procedure populate_external_efl is called from
8251 enable_from_list to populate the external value
8252 for a given internal field
8253 */
8254
8255 PROCEDURE populate_external_efl(
8256 p_internal IN VARCHAR2
8257 , p_external IN VARCHAR2
8258 , p_mode IN VARCHAR2
8259 , x_internal IN OUT NOCOPY VARCHAR2
8260 , x_external IN OUT NOCOPY VARCHAR2
8261 )
8262 IS
8263 BEGIN
8264
8265 IF p_mode = '+' THEN
8266 IF x_internal IS NULL THEN
8267 IF p_internal <> FND_API.G_MISS_CHAR OR p_internal IS NULL THEN
8268 x_internal := p_internal ;
8269 IF p_internal IS NULL THEN
8270 x_external := NULL;
8271 ELSE
8272 x_external := p_external;
8273 END IF;
8274 ELSIF p_external <> FND_API.G_MISS_CHAR OR p_external IS NULL THEN
8275 x_external := p_external;
8276 IF p_external IS NULL THEN
8277 x_internal := NULL;
8278 ELSE
8279 x_internal := p_internal;
8280 END IF;
8281 END IF;
8282 END IF;
8283 ELSE --p_mode <> +
8284 IF p_internal <> FND_API.G_MISS_CHAR OR p_internal IS NULL THEN
8285 x_internal := p_internal ;
8286 IF p_internal IS NULL THEN
8287 x_external := NULL;
8288 ELSE
8289 x_external := p_external;
8290 END IF;
8291 ELSIF p_external <> FND_API.G_MISS_CHAR OR p_external IS NULL THEN
8292 x_external := p_external;
8293 IF p_external IS NULL THEN
8294 x_internal := NULL;
8295 ELSE
8296 x_internal := p_internal;
8297 END IF;
8298 END IF;
8299 END IF;
8300
8301 END populate_external_efl;
8302
8303
8304 /*----------------------------------------------------------
8305 -- Procedure enable_from_list will update the record x_out_rec for the fields
8306 -- included in p_disabled_list and will enable them
8307 -----------------------------------------------------------*/
8308
8309 PROCEDURE enable_from_list(
8310 p_disabled_list IN WSH_UTIL_CORE.column_tab_type
8311 , p_in_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_rec_type
8312 , x_out_rec IN OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_rec_type
8313 , x_return_status OUT NOCOPY VARCHAR2
8314 , x_field_name OUT NOCOPY VARCHAR2
8315
8316 ) IS
8317 l_prefix VARCHAR2(1);
8318 BEGIN
8319 FOR i IN 2..p_disabled_list.COUNT
8320 LOOP
8321 l_prefix := SUBSTR(p_disabled_list(i),1,1);
8322 IF l_prefix = '+' THEN
8323 IF p_disabled_list(i) = '+ADDITIONAL_SHIPMENT_INFO' THEN
8324 IF p_in_rec.ADDITIONAL_SHIPMENT_INFO <> FND_API.G_MISS_CHAR
8325 OR p_in_rec.ADDITIONAL_SHIPMENT_INFO IS NULL THEN
8326 IF x_out_rec.ADDITIONAL_SHIPMENT_INFO IS NULL THEN
8327 x_out_rec.ADDITIONAL_SHIPMENT_INFO := p_in_rec.ADDITIONAL_SHIPMENT_INFO ;
8328 END IF;
8329 END IF;
8330 ELSIF p_disabled_list(i) = '+DOCK_CODE' THEN
8331 IF p_in_rec.DOCK_CODE <> FND_API.G_MISS_CHAR
8332 OR p_in_rec.DOCK_CODE IS NULL THEN
8333 IF x_out_rec.DOCK_CODE IS NULL THEN
8334 x_out_rec.DOCK_CODE := p_in_rec.DOCK_CODE ;
8335 END IF;
8336 END IF;
8337 ELSIF p_disabled_list(i) = '+INITIAL_PICKUP_LOCATION_CODE' THEN
8338 populate_external_efl(p_in_rec.INITIAL_PICKUP_LOCATION_ID,
8339 p_in_rec.INITIAL_PICKUP_LOCATION_CODE,
8340 '+',
8341 x_out_rec.INITIAL_PICKUP_LOCATION_ID,
8342 x_out_rec.INITIAL_PICKUP_LOCATION_CODE);
8343
8344 ELSIF p_disabled_list(i) = '+ULTIMATE_DROPOFF_LOCATION_CODE' THEN
8345 populate_external_efl(p_in_rec.ULTIMATE_DROPOFF_LOCATION_ID,
8346 p_in_rec.ULTIMATE_DROPOFF_LOCATION_CODE,
8347 '+',
8348 x_out_rec.ULTIMATE_DROPOFF_LOCATION_ID,
8349 x_out_rec.ULTIMATE_DROPOFF_LOCATION_CODE);
8350
8351 ELSIF p_disabled_list(i) = '+CUSTOMER_NAME' THEN
8352 populate_external_efl(p_in_rec.customer_id,
8353 p_in_rec.customer_number,
8354 '+',
8355 x_out_rec.customer_id,
8356 x_out_rec.customer_number);
8357
8358 ELSIF p_disabled_list(i) = '+ORGANIZATION_CODE' THEN
8359 populate_external_efl(p_in_rec.organization_id,
8360 p_in_rec.organization_code,
8361 '+',
8362 x_out_rec.organization_id,
8363 x_out_rec.organization_code);
8364
8365 ELSIF p_disabled_list(i) = '+LOADING_ORDER_FLAG' THEN
8366 populate_external_efl(p_in_rec.loading_order_flag,
8367 p_in_rec.loading_order_desc,
8368 '+',
8369 x_out_rec.loading_order_flag,
8370 x_out_rec.loading_order_desc);
8371
8372 ELSIF p_disabled_list(i) = '+ACCEPTANCE_FLAG' THEN
8373 IF p_in_rec.ACCEPTANCE_FLAG <> FND_API.G_MISS_CHAR
8374 OR p_in_rec.ACCEPTANCE_FLAG IS NULL THEN
8375 IF x_out_rec.ACCEPTANCE_FLAG IS NULL THEN
8376 x_out_rec.ACCEPTANCE_FLAG := p_in_rec.ACCEPTANCE_FLAG ;
8377 END IF;
8378 END IF;
8379 ELSIF p_disabled_list(i) = '+ACCEPTED_BY' THEN
8380 IF p_in_rec.ACCEPTED_BY <> FND_API.G_MISS_CHAR
8381 OR p_in_rec.ACCEPTED_BY IS NULL THEN
8382 IF x_out_rec.ACCEPTED_BY IS NULL THEN
8383 x_out_rec.ACCEPTED_BY := p_in_rec.ACCEPTED_BY ;
8384 END IF;
8385 END IF;
8386 ELSIF p_disabled_list(i) = '+ACCEPTED_DATE' THEN
8387 IF p_in_rec.ACCEPTED_DATE <> FND_API.G_MISS_DATE
8388 OR p_in_rec.ACCEPTED_DATE IS NULL THEN
8389 IF x_out_rec.ACCEPTED_DATE IS NULL THEN
8390 x_out_rec.ACCEPTED_DATE := p_in_rec.ACCEPTED_DATE ;
8391 END IF;
8392 END IF;
8393 ELSIF p_disabled_list(i) = '+ACKNOWLEDGED_BY' THEN
8394 IF p_in_rec.ACKNOWLEDGED_BY <> FND_API.G_MISS_CHAR
8395 OR p_in_rec.ACKNOWLEDGED_BY IS NULL THEN
8396 IF x_out_rec.ACKNOWLEDGED_BY IS NULL THEN
8397 x_out_rec.ACKNOWLEDGED_BY := p_in_rec.ACKNOWLEDGED_BY ;
8398 END IF;
8399 END IF;
8400 ELSIF p_disabled_list(i) = '+CONFIRMED_BY' THEN
8401 IF p_in_rec.CONFIRMED_BY <> FND_API.G_MISS_CHAR
8402 OR p_in_rec.CONFIRMED_BY IS NULL THEN
8403 IF x_out_rec.CONFIRMED_BY IS NULL THEN
8404 x_out_rec.CONFIRMED_BY := p_in_rec.CONFIRMED_BY ;
8405 END IF;
8406 END IF;
8407 ELSIF p_disabled_list(i) = '+CURRENCY_CODE' THEN
8408 populate_external_efl(p_in_rec.currency_code,
8409 p_in_rec.currency_name,
8410 '+',
8411 x_out_rec.currency_code,
8412 x_out_rec.currency_name);
8413
8414 ELSIF p_disabled_list(i) = '+INITIAL_PICKUP_DATE' THEN
8415 IF p_in_rec.INITIAL_PICKUP_DATE <> FND_API.G_MISS_DATE
8416 OR p_in_rec.INITIAL_PICKUP_DATE IS NULL THEN
8417 IF x_out_rec.INITIAL_PICKUP_DATE IS NULL THEN
8418 x_out_rec.INITIAL_PICKUP_DATE := p_in_rec.INITIAL_PICKUP_DATE ;
8419 END IF;
8420 END IF;
8421 ELSIF p_disabled_list(i) = '+ULTIMATE_DROPOFF_DATE' THEN
8422 IF p_in_rec.ULTIMATE_DROPOFF_DATE <> FND_API.G_MISS_DATE
8423 OR p_in_rec.ULTIMATE_DROPOFF_DATE IS NULL THEN
8424 IF x_out_rec.ULTIMATE_DROPOFF_DATE IS NULL THEN
8425 x_out_rec.ULTIMATE_DROPOFF_DATE := p_in_rec.ULTIMATE_DROPOFF_DATE ;
8426 END IF;
8427 END IF;
8428 ELSIF p_disabled_list(i) = '+LOADING_SEQUENCE' THEN
8429 IF p_in_rec.LOADING_SEQUENCE <> FND_API.G_MISS_NUM
8430 OR p_in_rec.LOADING_SEQUENCE IS NULL THEN
8431 IF x_out_rec.LOADING_SEQUENCE IS NULL THEN
8432 x_out_rec.LOADING_SEQUENCE := p_in_rec.LOADING_SEQUENCE ;
8433 END IF;
8434 END IF;
8435 ELSIF p_disabled_list(i) = '+SHIP_METHOD_NAME' THEN
8436 populate_external_efl(p_in_rec.ship_method_code,
8437 p_in_rec.ship_method_name,
8438 '+',
8439 x_out_rec.ship_method_code,
8440 x_out_rec.ship_method_name);
8441 ELSIF p_disabled_list(i) = '+FREIGHT_CODE' THEN
8442 NULL;
8443 -- J-IB-NPARIKH-{ --I-bug-fix
8444 populate_external_efl(p_in_rec.carrier_id,
8445 p_in_rec.carrier_code,
8446 '+',
8447 x_out_rec.carrier_id,
8448 x_out_rec.carrier_code);
8449 -- J-IB-NPARIKH-}
8450
8451 ELSIF p_disabled_list(i) = '+SERVICE_LEVEL_NAME' THEN
8452 IF p_in_rec.SERVICE_LEVEL <> FND_API.G_MISS_CHAR
8453 OR p_in_rec.SERVICE_LEVEL IS NULL THEN
8454 IF x_out_rec.SERVICE_LEVEL IS NULL THEN
8455 x_out_rec.SERVICE_LEVEL := p_in_rec.SERVICE_LEVEL ;
8456 END IF;
8457 END IF;
8458 ELSIF p_disabled_list(i) = '+MODE_OF_TRANSPORT_NAME' THEN
8459 IF p_in_rec.MODE_OF_TRANSPORT <> FND_API.G_MISS_CHAR
8460 OR p_in_rec.MODE_OF_TRANSPORT IS NULL THEN
8461 IF x_out_rec.MODE_OF_TRANSPORT IS NULL THEN
8462 x_out_rec.MODE_OF_TRANSPORT := p_in_rec.MODE_OF_TRANSPORT ;
8463 END IF;
8464 END IF;
8465 ELSIF p_disabled_list(i) = '+NAME' THEN
8466 IF p_in_rec.NAME <> FND_API.G_MISS_CHAR
8467 OR p_in_rec.NAME IS NULL THEN
8468 IF x_out_rec.NAME IS NULL THEN
8469 x_out_rec.NAME := p_in_rec.NAME ;
8470 END IF;
8471 END IF;
8472 ELSIF p_disabled_list(i) = '+INTMED_SHIP_TO_LOCATION_CODE' THEN
8473 populate_external_efl(p_in_rec.INTMED_SHIP_TO_LOCATION_ID,
8474 p_in_rec.INTMED_SHIP_TO_LOCATION_CODE,
8475 '+',
8476 x_out_rec.INTMED_SHIP_TO_LOCATION_ID,
8477 x_out_rec.INTMED_SHIP_TO_LOCATION_CODE);
8478
8479 ELSIF p_disabled_list(i) = '+POOLED_SHIP_TO_LOCATION_CODE' THEN
8480 populate_external_efl(p_in_rec.POOLED_SHIP_TO_LOCATION_ID,
8481 p_in_rec.POOLED_SHIP_TO_LOCATION_CODE,
8482 '+',
8483 x_out_rec.POOLED_SHIP_TO_LOCATION_ID,
8484 x_out_rec.POOLED_SHIP_TO_LOCATION_CODE);
8485
8486 ELSIF p_disabled_list(i) = '+WAYBILL' THEN
8487 IF p_in_rec.WAYBILL <> FND_API.G_MISS_CHAR
8488 OR p_in_rec.WAYBILL IS NULL THEN
8489 IF x_out_rec.WAYBILL IS NULL THEN
8490 x_out_rec.WAYBILL := p_in_rec.WAYBILL ;
8491 END IF;
8492 END IF;
8493 ELSIF p_disabled_list(i) = '+FREIGHT_TERMS_NAME' THEN
8494 populate_external_efl(p_in_rec.FREIGHT_TERMS_CODE,
8495 p_in_rec.FREIGHT_TERMS_NAME,
8496 '+',
8497 x_out_rec.FREIGHT_TERMS_CODE,
8498 x_out_rec.FREIGHT_TERMS_NAME);
8499
8500 ELSIF p_disabled_list(i) = '+GROSS_WEIGHT' THEN
8501 IF p_in_rec.GROSS_WEIGHT <> FND_API.G_MISS_NUM
8502 OR p_in_rec.GROSS_WEIGHT IS NULL THEN
8503 IF x_out_rec.GROSS_WEIGHT IS NULL THEN
8504 x_out_rec.GROSS_WEIGHT := p_in_rec.GROSS_WEIGHT ;
8505 END IF;
8506 END IF;
8507 ELSIF p_disabled_list(i) = '+NET_WEIGHT' THEN
8508 IF p_in_rec.NET_WEIGHT <> FND_API.G_MISS_NUM
8509 OR p_in_rec.NET_WEIGHT IS NULL THEN
8510 IF x_out_rec.NET_WEIGHT IS NULL THEN
8511 x_out_rec.NET_WEIGHT := p_in_rec.NET_WEIGHT ;
8512 END IF;
8513 END IF;
8514 ELSIF p_disabled_list(i) = '+WEIGHT_UOM_CODE' THEN
8515 populate_external_efl(p_in_rec.WEIGHT_UOM_CODE,
8516 p_in_rec.WEIGHT_UOM_DESC,
8517 '+',
8518 x_out_rec.WEIGHT_UOM_CODE,
8519 x_out_rec.WEIGHT_UOM_DESC);
8520
8521 ELSIF p_disabled_list(i) = '+VOLUME' THEN
8522 IF p_in_rec.VOLUME <> FND_API.G_MISS_NUM
8523 OR p_in_rec.VOLUME IS NULL THEN
8524 IF x_out_rec.VOLUME IS NULL THEN
8525 x_out_rec.VOLUME := p_in_rec.VOLUME ;
8526 END IF;
8527 END IF;
8528 ELSIF p_disabled_list(i) = '+VOLUME_UOM_CODE' THEN
8529 populate_external_efl(p_in_rec.VOLUME_UOM_CODE,
8530 p_in_rec.VOLUME_UOM_DESC,
8531 '+',
8532 x_out_rec.VOLUME_UOM_CODE,
8533 x_out_rec.VOLUME_UOM_DESC);
8534
8535 ELSIF p_disabled_list(i) = '+FOB_NAME' THEN
8536 populate_external_efl(p_in_rec.FOB_CODE,
8537 p_in_rec.FOB_NAME,
8538 '+',
8539 x_out_rec.FOB_CODE,
8540 x_out_rec.FOB_NAME);
8541
8542 ELSIF p_disabled_list(i) = '+FOB_LOCATION_CODE' THEN
8543 populate_external_efl(p_in_rec.FOB_LOCATION_ID,
8544 p_in_rec.FOB_LOCATION_CODE,
8545 '+',
8546 x_out_rec.FOB_LOCATION_ID,
8547 x_out_rec.FOB_LOCATION_CODE);
8548
8549 ELSIF p_disabled_list(i) = '+NUMBER_OF_LPN' THEN
8550 IF p_in_rec.NUMBER_OF_LPN <> FND_API.G_MISS_NUM
8551 OR p_in_rec.NUMBER_OF_LPN IS NULL THEN
8552 IF x_out_rec.NUMBER_OF_LPN IS NULL THEN
8553 x_out_rec.NUMBER_OF_LPN := p_in_rec.NUMBER_OF_LPN ;
8554 END IF;
8555 END IF;
8556 ELSIF p_disabled_list(i) = '+AUTO_SC_EXCLUDE_FLAG' THEN
8557 IF p_in_rec.AUTO_SC_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
8558 OR p_in_rec.AUTO_SC_EXCLUDE_FLAG IS NULL THEN
8559 IF x_out_rec.AUTO_SC_EXCLUDE_FLAG IS NULL THEN
8560 x_out_rec.AUTO_SC_EXCLUDE_FLAG := p_in_rec.AUTO_SC_EXCLUDE_FLAG ;
8561 END IF;
8562 END IF;
8563 ELSIF p_disabled_list(i) = '+AUTO_AP_EXCLUDE_FLAG' THEN
8564 IF p_in_rec.AUTO_AP_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
8565 OR p_in_rec.AUTO_AP_EXCLUDE_FLAG IS NULL THEN
8566 IF x_out_rec.AUTO_AP_EXCLUDE_FLAG IS NULL THEN
8567 x_out_rec.AUTO_AP_EXCLUDE_FLAG := p_in_rec.AUTO_AP_EXCLUDE_FLAG ;
8568 END IF;
8569 END IF;
8570 ELSIF p_disabled_list(i) = '+DESC_FLEX' THEN
8571 IF p_in_rec.attribute1 <> FND_API.G_MISS_CHAR
8572 OR p_in_rec.attribute1 IS NULL THEN
8573 IF x_out_rec.attribute1 IS NULL THEN
8574 x_out_rec.attribute1 := p_in_rec.attribute1 ;
8575 END IF;
8576 END IF;
8577 IF p_in_rec.attribute2 <> FND_API.G_MISS_CHAR
8578 OR p_in_rec.attribute2 IS NULL THEN
8579 IF x_out_rec.attribute2 IS NULL THEN
8580 x_out_rec.attribute2 := p_in_rec.attribute2 ;
8581 END IF;
8582 END IF;
8583 IF p_in_rec.attribute3 <> FND_API.G_MISS_CHAR
8584 OR p_in_rec.attribute3 IS NULL THEN
8585 IF x_out_rec.attribute3 IS NULL THEN
8586 x_out_rec.attribute3 := p_in_rec.attribute3 ;
8587 END IF;
8588 END IF;
8589 IF p_in_rec.attribute4 <> FND_API.G_MISS_CHAR
8590 OR p_in_rec.attribute4 IS NULL THEN
8591 IF x_out_rec.attribute4 IS NULL THEN
8592 x_out_rec.attribute4 := p_in_rec.attribute4 ;
8593 END IF;
8594 END IF;
8595 IF p_in_rec.attribute5 <> FND_API.G_MISS_CHAR
8596 OR p_in_rec.attribute5 IS NULL THEN
8597 IF x_out_rec.attribute5 IS NULL THEN
8598 x_out_rec.attribute5 := p_in_rec.attribute5 ;
8599 END IF;
8600 END IF;
8601 IF p_in_rec.attribute6 <> FND_API.G_MISS_CHAR
8602 OR p_in_rec.attribute6 IS NULL THEN
8603 IF x_out_rec.attribute6 IS NULL THEN
8604 x_out_rec.attribute6 := p_in_rec.attribute6 ;
8605 END IF;
8606 END IF;
8607 IF p_in_rec.attribute7 <> FND_API.G_MISS_CHAR
8608 OR p_in_rec.attribute7 IS NULL THEN
8609 IF x_out_rec.attribute7 IS NULL THEN
8610 x_out_rec.attribute7 := p_in_rec.attribute7 ;
8611 END IF;
8612 END IF;
8613 IF p_in_rec.attribute8 <> FND_API.G_MISS_CHAR
8614 OR p_in_rec.attribute8 IS NULL THEN
8615 IF x_out_rec.attribute8 IS NULL THEN
8616 x_out_rec.attribute8 := p_in_rec.attribute8 ;
8617 END IF;
8618 END IF;
8619 IF p_in_rec.attribute9 <> FND_API.G_MISS_CHAR
8620 OR p_in_rec.attribute9 IS NULL THEN
8621 IF x_out_rec.attribute9 IS NULL THEN
8622 x_out_rec.attribute9 := p_in_rec.attribute9 ;
8623 END IF;
8624 END IF;
8625 IF p_in_rec.attribute10 <> FND_API.G_MISS_CHAR
8626 OR p_in_rec.attribute10 IS NULL THEN
8627 IF x_out_rec.attribute10 IS NULL THEN
8628 x_out_rec.attribute10 := p_in_rec.attribute10 ;
8629 END IF;
8630 END IF;
8631 IF p_in_rec.attribute11 <> FND_API.G_MISS_CHAR
8632 OR p_in_rec.attribute11 IS NULL THEN
8633 IF x_out_rec.attribute11 IS NULL THEN
8634 x_out_rec.attribute11 := p_in_rec.attribute11 ;
8635 END IF;
8636 END IF;
8637 IF p_in_rec.attribute12 <> FND_API.G_MISS_CHAR
8638 OR p_in_rec.attribute12 IS NULL THEN
8639 IF x_out_rec.attribute12 IS NULL THEN
8640 x_out_rec.attribute12 := p_in_rec.attribute12 ;
8641 END IF;
8642 END IF;
8643 IF p_in_rec.attribute13 <> FND_API.G_MISS_CHAR
8644 OR p_in_rec.attribute13 IS NULL THEN
8645 IF x_out_rec.attribute13 IS NULL THEN
8646 x_out_rec.attribute13 := p_in_rec.attribute13 ;
8647 END IF;
8648 END IF;
8649 IF p_in_rec.attribute14 <> FND_API.G_MISS_CHAR
8650 OR p_in_rec.attribute14 IS NULL THEN
8651 IF x_out_rec.attribute14 IS NULL THEN
8652 x_out_rec.attribute14 := p_in_rec.attribute14 ;
8653 END IF;
8654 END IF;
8655 IF p_in_rec.attribute15 <> FND_API.G_MISS_CHAR
8656 OR p_in_rec.attribute15 IS NULL THEN
8657 IF x_out_rec.attribute15 IS NULL THEN
8658 x_out_rec.attribute15 := p_in_rec.attribute15 ;
8659 END IF;
8660 END IF;
8661 IF p_in_rec.attribute_category <> FND_API.G_MISS_CHAR
8662 OR p_in_rec.attribute_category IS NULL THEN
8663 IF x_out_rec.attribute_category IS NULL THEN
8664 x_out_rec.attribute_category := p_in_rec.attribute_category ;
8665 END IF;
8666 END IF;
8667 ELSIF p_disabled_list(i) = '+TP_FLEXFIELD' THEN
8668 IF p_in_rec.tp_attribute1 <> FND_API.G_MISS_CHAR
8669 OR p_in_rec.tp_attribute1 IS NULL THEN
8670 IF x_out_rec.tp_attribute1 IS NULL THEN
8671 x_out_rec.tp_attribute1 := p_in_rec.tp_attribute1 ;
8672 END IF;
8673 END IF;
8674 IF p_in_rec.tp_attribute2 <> FND_API.G_MISS_CHAR
8675 OR p_in_rec.tp_attribute2 IS NULL THEN
8676 IF x_out_rec.tp_attribute2 IS NULL THEN
8677 x_out_rec.tp_attribute2 := p_in_rec.tp_attribute2 ;
8678 END IF;
8679 END IF;
8680 IF p_in_rec.tp_attribute3 <> FND_API.G_MISS_CHAR
8681 OR p_in_rec.tp_attribute3 IS NULL THEN
8682 IF x_out_rec.tp_attribute3 IS NULL THEN
8683 x_out_rec.tp_attribute3 := p_in_rec.tp_attribute3 ;
8684 END IF;
8685 END IF;
8686 IF p_in_rec.tp_attribute4 <> FND_API.G_MISS_CHAR
8687 OR p_in_rec.tp_attribute4 IS NULL THEN
8688 IF x_out_rec.tp_attribute4 IS NULL THEN
8689 x_out_rec.tp_attribute4 := p_in_rec.tp_attribute4 ;
8690 END IF;
8691 END IF;
8692 IF p_in_rec.tp_attribute5 <> FND_API.G_MISS_CHAR
8693 OR p_in_rec.tp_attribute5 IS NULL THEN
8694 IF x_out_rec.tp_attribute5 IS NULL THEN
8695 x_out_rec.tp_attribute5 := p_in_rec.tp_attribute5 ;
8696 END IF;
8697 END IF;
8698 IF p_in_rec.tp_attribute6 <> FND_API.G_MISS_CHAR
8699 OR p_in_rec.tp_attribute6 IS NULL THEN
8700 IF x_out_rec.tp_attribute6 IS NULL THEN
8701 x_out_rec.tp_attribute6 := p_in_rec.tp_attribute6 ;
8702 END IF;
8703 END IF;
8704 IF p_in_rec.tp_attribute7 <> FND_API.G_MISS_CHAR
8705 OR p_in_rec.tp_attribute7 IS NULL THEN
8706 IF x_out_rec.tp_attribute7 IS NULL THEN
8707 x_out_rec.tp_attribute7 := p_in_rec.tp_attribute7 ;
8708 END IF;
8709 END IF;
8710 IF p_in_rec.tp_attribute8 <> FND_API.G_MISS_CHAR
8711 OR p_in_rec.tp_attribute8 IS NULL THEN
8712 IF x_out_rec.tp_attribute8 IS NULL THEN
8713 x_out_rec.tp_attribute8 := p_in_rec.tp_attribute8 ;
8714 END IF;
8715 END IF;
8716 IF p_in_rec.tp_attribute9 <> FND_API.G_MISS_CHAR
8717 OR p_in_rec.tp_attribute9 IS NULL THEN
8718 IF x_out_rec.tp_attribute9 IS NULL THEN
8719 x_out_rec.tp_attribute9 := p_in_rec.tp_attribute9 ;
8720 END IF;
8721 END IF;
8722 IF p_in_rec.tp_attribute10 <> FND_API.G_MISS_CHAR
8723 OR p_in_rec.tp_attribute10 IS NULL THEN
8724 IF x_out_rec.tp_attribute10 IS NULL THEN
8725 x_out_rec.tp_attribute10 := p_in_rec.tp_attribute10 ;
8726 END IF;
8727 END IF;
8728 IF p_in_rec.tp_attribute11 <> FND_API.G_MISS_CHAR
8729 OR p_in_rec.tp_attribute11 IS NULL THEN
8730 IF x_out_rec.tp_attribute11 IS NULL THEN
8731 x_out_rec.tp_attribute11 := p_in_rec.tp_attribute11 ;
8732 END IF;
8733 END IF;
8734 IF p_in_rec.tp_attribute12 <> FND_API.G_MISS_CHAR
8735 OR p_in_rec.tp_attribute12 IS NULL THEN
8736 IF x_out_rec.tp_attribute12 IS NULL THEN
8737 x_out_rec.tp_attribute12 := p_in_rec.tp_attribute12 ;
8738 END IF;
8739 END IF;
8740 IF p_in_rec.tp_attribute13 <> FND_API.G_MISS_CHAR
8741 OR p_in_rec.tp_attribute13 IS NULL THEN
8742 IF x_out_rec.tp_attribute13 IS NULL THEN
8743 x_out_rec.tp_attribute13 := p_in_rec.tp_attribute13 ;
8744 END IF;
8745 END IF;
8746 IF p_in_rec.tp_attribute14 <> FND_API.G_MISS_CHAR
8747 OR p_in_rec.tp_attribute14 IS NULL THEN
8748 IF x_out_rec.tp_attribute14 IS NULL THEN
8749 x_out_rec.tp_attribute14 := p_in_rec.tp_attribute14 ;
8750 END IF;
8751 END IF;
8752 IF p_in_rec.tp_attribute15 <> FND_API.G_MISS_CHAR
8753 OR p_in_rec.tp_attribute15 IS NULL THEN
8754 IF x_out_rec.tp_attribute15 IS NULL THEN
8755 x_out_rec.tp_attribute15 := p_in_rec.tp_attribute15 ;
8756 END IF;
8757 END IF;
8758 IF p_in_rec.tp_attribute_category <> FND_API.G_MISS_CHAR
8759 OR p_in_rec.tp_attribute_category IS NULL THEN
8760 IF x_out_rec.tp_attribute_category IS NULL THEN
8761 x_out_rec.tp_attribute_category := p_in_rec.tp_attribute_category ;
8762 END IF;
8763 END IF;
8764 ELSIF p_disabled_list(i) = '+GLOBALIZATION_FLEXFIELD' THEN
8765 IF p_in_rec.global_attribute1 <> FND_API.G_MISS_CHAR
8766 OR p_in_rec.global_attribute1 IS NULL THEN
8767 IF x_out_rec.global_attribute1 IS NULL THEN
8768 x_out_rec.global_attribute1 := p_in_rec.global_attribute1 ;
8769 END IF;
8770 END IF;
8771 IF p_in_rec.global_attribute2 <> FND_API.G_MISS_CHAR
8772 OR p_in_rec.global_attribute2 IS NULL THEN
8773 IF x_out_rec.global_attribute2 IS NULL THEN
8774 x_out_rec.global_attribute2 := p_in_rec.global_attribute2 ;
8775 END IF;
8776 END IF;
8777 IF p_in_rec.global_attribute3 <> FND_API.G_MISS_CHAR
8778 OR p_in_rec.global_attribute3 IS NULL THEN
8779 IF x_out_rec.global_attribute3 IS NULL THEN
8780 x_out_rec.global_attribute3 := p_in_rec.global_attribute3 ;
8781 END IF;
8782 END IF;
8783 IF p_in_rec.global_attribute4 <> FND_API.G_MISS_CHAR
8784 OR p_in_rec.global_attribute4 IS NULL THEN
8785 IF x_out_rec.global_attribute4 IS NULL THEN
8786 x_out_rec.global_attribute4 := p_in_rec.global_attribute4 ;
8787 END IF;
8788 END IF;
8789 IF p_in_rec.global_attribute5 <> FND_API.G_MISS_CHAR
8790 OR p_in_rec.global_attribute5 IS NULL THEN
8791 IF x_out_rec.global_attribute5 IS NULL THEN
8792 x_out_rec.global_attribute5 := p_in_rec.global_attribute5 ;
8793 END IF;
8794 END IF;
8795 IF p_in_rec.global_attribute6 <> FND_API.G_MISS_CHAR
8796 OR p_in_rec.global_attribute6 IS NULL THEN
8797 IF x_out_rec.global_attribute6 IS NULL THEN
8798 x_out_rec.global_attribute6 := p_in_rec.global_attribute6 ;
8799 END IF;
8800 END IF;
8801 IF p_in_rec.global_attribute7 <> FND_API.G_MISS_CHAR
8802 OR p_in_rec.global_attribute7 IS NULL THEN
8803 IF x_out_rec.global_attribute7 IS NULL THEN
8804 x_out_rec.global_attribute7 := p_in_rec.global_attribute7 ;
8805 END IF;
8806 END IF;
8807 IF p_in_rec.global_attribute8 <> FND_API.G_MISS_CHAR
8808 OR p_in_rec.global_attribute8 IS NULL THEN
8809 IF x_out_rec.global_attribute8 IS NULL THEN
8810 x_out_rec.global_attribute8 := p_in_rec.global_attribute8 ;
8811 END IF;
8812 END IF;
8813 IF p_in_rec.global_attribute9 <> FND_API.G_MISS_CHAR
8814 OR p_in_rec.global_attribute9 IS NULL THEN
8815 IF x_out_rec.global_attribute9 IS NULL THEN
8816 x_out_rec.global_attribute9 := p_in_rec.global_attribute9 ;
8817 END IF;
8818 END IF;
8819 IF p_in_rec.global_attribute10 <> FND_API.G_MISS_CHAR
8820 OR p_in_rec.global_attribute10 IS NULL THEN
8821 IF x_out_rec.global_attribute10 IS NULL THEN
8822 x_out_rec.global_attribute10 := p_in_rec.global_attribute10 ;
8823 END IF;
8824 END IF;
8825 IF p_in_rec.global_attribute11 <> FND_API.G_MISS_CHAR
8826 OR p_in_rec.global_attribute11 IS NULL THEN
8827 IF x_out_rec.global_attribute11 IS NULL THEN
8828 x_out_rec.global_attribute11 := p_in_rec.global_attribute11 ;
8829 END IF;
8830 END IF;
8831 IF p_in_rec.global_attribute12 <> FND_API.G_MISS_CHAR
8832 OR p_in_rec.global_attribute12 IS NULL THEN
8833 IF x_out_rec.global_attribute12 IS NULL THEN
8834 x_out_rec.global_attribute12 := p_in_rec.global_attribute12 ;
8835 END IF;
8836 END IF;
8837 IF p_in_rec.global_attribute13 <> FND_API.G_MISS_CHAR
8838 OR p_in_rec.global_attribute13 IS NULL THEN
8839 IF x_out_rec.global_attribute13 IS NULL THEN
8840 x_out_rec.global_attribute13 := p_in_rec.global_attribute13 ;
8841 END IF;
8842 END IF;
8843 IF p_in_rec.global_attribute14 <> FND_API.G_MISS_CHAR
8844 OR p_in_rec.global_attribute14 IS NULL THEN
8845 IF x_out_rec.global_attribute14 IS NULL THEN
8846 x_out_rec.global_attribute14 := p_in_rec.global_attribute14 ;
8847 END IF;
8848 END IF;
8849 IF p_in_rec.global_attribute15 <> FND_API.G_MISS_CHAR
8850 OR p_in_rec.global_attribute15 IS NULL THEN
8851 IF x_out_rec.global_attribute15 IS NULL THEN
8852 x_out_rec.global_attribute15 := p_in_rec.global_attribute15 ;
8853 END IF;
8854 END IF;
8855 IF p_in_rec.global_attribute_category <> FND_API.G_MISS_CHAR
8856 OR p_in_rec.global_attribute_category IS NULL THEN
8857 IF x_out_rec.global_attribute_category IS NULL THEN
8858 x_out_rec.global_attribute_category := p_in_rec.global_attribute_category ;
8859 END IF;
8860 END IF;
8861 ELSIF p_disabled_list(i) = 'TARE_WEIGHT' THEN
8862 NULL;
8863 ELSE
8864 -- invalid name
8865 x_field_name := p_disabled_list(i);
8866 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8867 RETURN;
8868 END IF;
8869 ELSE -- if the prefix is not +
8870 IF p_disabled_list(i) = 'ADDITIONAL_SHIPMENT_INFO' THEN
8871 IF p_in_rec.ADDITIONAL_SHIPMENT_INFO <> FND_API.G_MISS_CHAR
8872 OR p_in_rec.ADDITIONAL_SHIPMENT_INFO IS NULL THEN
8873 x_out_rec.ADDITIONAL_SHIPMENT_INFO := p_in_rec.ADDITIONAL_SHIPMENT_INFO ;
8874 END IF;
8875 ELSIF p_disabled_list(i) = 'DOCK_CODE' THEN
8876 IF p_in_rec.DOCK_CODE <> FND_API.G_MISS_CHAR
8877 OR p_in_rec.DOCK_CODE IS NULL THEN
8878 x_out_rec.DOCK_CODE := p_in_rec.DOCK_CODE ;
8879 END IF;
8880 ELSIF p_disabled_list(i) = 'INITIAL_PICKUP_LOCATION_CODE' THEN
8881 populate_external_efl(p_in_rec.INITIAL_PICKUP_LOCATION_ID,
8882 p_in_rec.INITIAL_PICKUP_LOCATION_CODE,
8883 NULL,
8884 x_out_rec.INITIAL_PICKUP_LOCATION_ID,
8885 x_out_rec.INITIAL_PICKUP_LOCATION_CODE);
8886 ELSIF p_disabled_list(i) = 'ULTIMATE_DROPOFF_LOCATION_CODE' THEN
8887 populate_external_efl(p_in_rec.ULTIMATE_DROPOFF_LOCATION_ID,
8888 p_in_rec.ULTIMATE_DROPOFF_LOCATION_CODE,
8889 NULL,
8890 x_out_rec.ULTIMATE_DROPOFF_LOCATION_ID,
8891 x_out_rec.ULTIMATE_DROPOFF_LOCATION_CODE);
8892 ELSIF p_disabled_list(i) = 'CUSTOMER_NAME' THEN
8893 populate_external_efl(p_in_rec.customer_id,
8894 p_in_rec.customer_number,
8895 NULL,
8896 x_out_rec.customer_id,
8897 x_out_rec.customer_number);
8898
8899 ELSIF p_disabled_list(i) = 'ORGANIZATION_CODE' THEN
8900 populate_external_efl(p_in_rec.organization_id,
8901 p_in_rec.organization_code,
8902 NULL,
8903 x_out_rec.organization_id,
8904 x_out_rec.organization_code);
8905 ELSIF p_disabled_list(i) = 'LOADING_ORDER_FLAG' THEN
8906 populate_external_efl(p_in_rec.loading_order_flag,
8907 p_in_rec.loading_order_desc,
8908 NULL,
8909 x_out_rec.loading_order_flag,
8910 x_out_rec.loading_order_desc);
8911 ELSIF p_disabled_list(i) = 'ACCEPTANCE_FLAG' THEN
8912 IF p_in_rec.ACCEPTANCE_FLAG <> FND_API.G_MISS_CHAR
8913 OR p_in_rec.ACCEPTANCE_FLAG IS NULL THEN
8914 x_out_rec.ACCEPTANCE_FLAG := p_in_rec.ACCEPTANCE_FLAG ;
8915 END IF;
8916 ELSIF p_disabled_list(i) = 'ACCEPTED_BY' THEN
8917 IF p_in_rec.ACCEPTED_BY <> FND_API.G_MISS_CHAR
8918 OR p_in_rec.ACCEPTED_BY IS NULL THEN
8919 x_out_rec.ACCEPTED_BY := p_in_rec.ACCEPTED_BY ;
8920 END IF;
8921 ELSIF p_disabled_list(i) = 'ACCEPTED_DATE' THEN
8922 IF p_in_rec.ACCEPTED_DATE <> FND_API.G_MISS_DATE
8923 OR p_in_rec.ACCEPTED_DATE IS NULL THEN
8924 x_out_rec.ACCEPTED_DATE := p_in_rec.ACCEPTED_DATE ;
8925 END IF;
8926 ELSIF p_disabled_list(i) = 'ACKNOWLEDGED_BY' THEN
8927 IF p_in_rec.ACKNOWLEDGED_BY <> FND_API.G_MISS_CHAR
8928 OR p_in_rec.ACKNOWLEDGED_BY IS NULL THEN
8929 x_out_rec.ACKNOWLEDGED_BY := p_in_rec.ACKNOWLEDGED_BY ;
8930 END IF;
8931 ELSIF p_disabled_list(i) = 'CONFIRMED_BY' THEN
8932 IF p_in_rec.CONFIRMED_BY <> FND_API.G_MISS_CHAR
8933 OR p_in_rec.CONFIRMED_BY IS NULL THEN
8934 x_out_rec.CONFIRMED_BY := p_in_rec.CONFIRMED_BY ;
8935 END IF;
8936 ELSIF p_disabled_list(i) = 'CURRENCY_CODE' THEN
8937 populate_external_efl(p_in_rec.currency_code,
8938 p_in_rec.currency_name,
8939 NULL,
8940 x_out_rec.currency_code,
8941 x_out_rec.currency_name);
8942 ELSIF p_disabled_list(i) = 'INITIAL_PICKUP_DATE' THEN
8943 IF p_in_rec.INITIAL_PICKUP_DATE <> FND_API.G_MISS_DATE
8944 OR p_in_rec.INITIAL_PICKUP_DATE IS NULL THEN
8945 x_out_rec.INITIAL_PICKUP_DATE := p_in_rec.INITIAL_PICKUP_DATE ;
8946 END IF;
8947 ELSIF p_disabled_list(i) = 'ULTIMATE_DROPOFF_DATE' THEN
8948 IF p_in_rec.ULTIMATE_DROPOFF_DATE <> FND_API.G_MISS_DATE
8949 OR p_in_rec.ULTIMATE_DROPOFF_DATE IS NULL THEN
8950 x_out_rec.ULTIMATE_DROPOFF_DATE := p_in_rec.ULTIMATE_DROPOFF_DATE ;
8951 END IF;
8952 ELSIF p_disabled_list(i) = 'LOADING_SEQUENCE' THEN
8953 IF p_in_rec.LOADING_SEQUENCE <> FND_API.G_MISS_NUM
8954 OR p_in_rec.LOADING_SEQUENCE IS NULL THEN
8955 x_out_rec.LOADING_SEQUENCE := p_in_rec.LOADING_SEQUENCE ;
8956 END IF;
8957 ELSIF p_disabled_list(i) = 'SHIP_METHOD_NAME' THEN
8958 populate_external_efl(p_in_rec.ship_method_code,
8959 p_in_rec.ship_method_name,
8960 NULL,
8961 x_out_rec.ship_method_code,
8962 x_out_rec.ship_method_name);
8963
8964 ELSIF p_disabled_list(i) = 'FREIGHT_CODE' THEN
8965 NULL;
8966 -- J-IB-NPARIKH-{
8967 populate_external_efl(p_in_rec.carrier_id,
8968 p_in_rec.carrier_code,
8969 NULL,
8970 x_out_rec.carrier_id,
8971 x_out_rec.carrier_code);
8972 -- J-IB-NPARIKH-}
8973 ELSIF p_disabled_list(i) = 'SERVICE_LEVEL_NAME' THEN
8974 IF p_in_rec.SERVICE_LEVEL <> FND_API.G_MISS_CHAR
8975 OR p_in_rec.SERVICE_LEVEL IS NULL THEN
8976 x_out_rec.SERVICE_LEVEL := p_in_rec.SERVICE_LEVEL ;
8977 END IF;
8978 ELSIF p_disabled_list(i) = 'MODE_OF_TRANSPORT_NAME' THEN
8979 IF p_in_rec.MODE_OF_TRANSPORT <> FND_API.G_MISS_CHAR
8980 OR p_in_rec.MODE_OF_TRANSPORT IS NULL THEN
8981 x_out_rec.MODE_OF_TRANSPORT := p_in_rec.MODE_OF_TRANSPORT ;
8982 END IF;
8983 ELSIF p_disabled_list(i) = 'NAME' THEN
8984 IF p_in_rec.NAME <> FND_API.G_MISS_CHAR
8985 OR p_in_rec.NAME IS NULL THEN
8986 x_out_rec.NAME := p_in_rec.NAME ;
8987 END IF;
8988 ELSIF p_disabled_list(i) = 'INTMED_SHIP_TO_LOCATION_CODE' THEN
8989 populate_external_efl(p_in_rec.INTMED_SHIP_TO_LOCATION_ID,
8990 p_in_rec.INTMED_SHIP_TO_LOCATION_CODE,
8991 NULL,
8992 x_out_rec.INTMED_SHIP_TO_LOCATION_ID,
8993 x_out_rec.INTMED_SHIP_TO_LOCATION_CODE);
8994 ELSIF p_disabled_list(i) = 'POOLED_SHIP_TO_LOCATION_CODE' THEN
8995 populate_external_efl(p_in_rec.POOLED_SHIP_TO_LOCATION_ID,
8996 p_in_rec.POOLED_SHIP_TO_LOCATION_CODE,
8997 NULL,
8998 x_out_rec.POOLED_SHIP_TO_LOCATION_ID,
8999 x_out_rec.POOLED_SHIP_TO_LOCATION_CODE);
9000 ELSIF p_disabled_list(i) = 'WAYBILL' THEN
9001 IF p_in_rec.WAYBILL <> FND_API.G_MISS_CHAR
9002 OR p_in_rec.WAYBILL IS NULL THEN
9003 x_out_rec.WAYBILL := p_in_rec.WAYBILL ;
9004 END IF;
9005 ELSIF p_disabled_list(i) = 'FREIGHT_TERMS_NAME' THEN
9006 populate_external_efl(p_in_rec.FREIGHT_TERMS_CODE,
9007 p_in_rec.FREIGHT_TERMS_NAME,
9008 NULL,
9009 x_out_rec.FREIGHT_TERMS_CODE,
9010 x_out_rec.FREIGHT_TERMS_NAME);
9011 ELSIF p_disabled_list(i) = 'GROSS_WEIGHT' THEN
9012 IF p_in_rec.GROSS_WEIGHT <> FND_API.G_MISS_NUM
9013 OR p_in_rec.GROSS_WEIGHT IS NULL THEN
9014 x_out_rec.GROSS_WEIGHT := p_in_rec.GROSS_WEIGHT ;
9015 END IF;
9016 ELSIF p_disabled_list(i) = 'NET_WEIGHT' THEN
9017 IF p_in_rec.NET_WEIGHT <> FND_API.G_MISS_NUM
9018 OR p_in_rec.NET_WEIGHT IS NULL THEN
9019 x_out_rec.NET_WEIGHT := p_in_rec.NET_WEIGHT ;
9020 END IF;
9021 -- Non Database field prorate_wt_flag added for "Proration of weight from Delivery to delivery lines" Project(Bug#4254552).
9022 ELSIF p_disabled_list(i) = 'PRORATE_WT_FLAG' THEN
9023 -- Bug#4539613 : replaced FND_API.G_MISS_NUM by FND_API.G_MISS_CHAR
9024 IF p_in_rec.PRORATE_WT_FLAG <> FND_API.G_MISS_CHAR OR p_in_rec.PRORATE_WT_FLAG IS NULL THEN
9025 x_out_rec.PRORATE_WT_FLAG := p_in_rec.PRORATE_WT_FLAG ;
9026 END IF;
9027 --
9028 ELSIF p_disabled_list(i) = 'WEIGHT_UOM_CODE' THEN
9029 populate_external_efl(p_in_rec.WEIGHT_UOM_CODE,
9030 p_in_rec.WEIGHT_UOM_DESC,
9031 NULL,
9032 x_out_rec.WEIGHT_UOM_CODE,
9033 x_out_rec.WEIGHT_UOM_DESC);
9034
9035 ELSIF p_disabled_list(i) = 'VOLUME' THEN
9036 IF p_in_rec.VOLUME <> FND_API.G_MISS_NUM
9037 OR p_in_rec.VOLUME IS NULL THEN
9038 x_out_rec.VOLUME := p_in_rec.VOLUME ;
9039 END IF;
9040 ELSIF p_disabled_list(i) = 'VOLUME_UOM_CODE' THEN
9041 populate_external_efl(p_in_rec.VOLUME_UOM_CODE,
9042 p_in_rec.VOLUME_UOM_DESC,
9043 NULL,
9044 x_out_rec.VOLUME_UOM_CODE,
9045 x_out_rec.VOLUME_UOM_DESC);
9046 ELSIF p_disabled_list(i) = 'FOB_NAME' THEN
9047 populate_external_efl(p_in_rec.FOB_CODE,
9048 p_in_rec.FOB_NAME,
9049 NULL,
9050 x_out_rec.FOB_CODE,
9051 x_out_rec.FOB_NAME);
9052 ELSIF p_disabled_list(i) = 'FOB_LOCATION_CODE' THEN
9053 populate_external_efl(p_in_rec.FOB_LOCATION_ID,
9054 p_in_rec.FOB_LOCATION_CODE,
9055 NULL,
9056 x_out_rec.FOB_LOCATION_ID,
9057 x_out_rec.FOB_LOCATION_CODE);
9058 ELSIF p_disabled_list(i) = 'NUMBER_OF_LPN' THEN
9059 IF p_in_rec.NUMBER_OF_LPN <> FND_API.G_MISS_NUM
9060 OR p_in_rec.NUMBER_OF_LPN IS NULL THEN
9061 x_out_rec.NUMBER_OF_LPN := p_in_rec.NUMBER_OF_LPN ;
9062 END IF;
9063 ELSIF p_disabled_list(i) = 'AUTO_SC_EXCLUDE_FLAG' THEN
9064 IF p_in_rec.AUTO_SC_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
9065 OR p_in_rec.AUTO_SC_EXCLUDE_FLAG IS NULL THEN
9066 x_out_rec.AUTO_SC_EXCLUDE_FLAG := p_in_rec.AUTO_SC_EXCLUDE_FLAG ;
9067 END IF;
9068 ELSIF p_disabled_list(i) = 'AUTO_AP_EXCLUDE_FLAG' THEN
9069 IF p_in_rec.AUTO_AP_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
9070 OR p_in_rec.AUTO_AP_EXCLUDE_FLAG IS NULL THEN
9071 x_out_rec.AUTO_AP_EXCLUDE_FLAG := p_in_rec.AUTO_AP_EXCLUDE_FLAG ;
9072 END IF;
9073 ELSIF p_disabled_list(i) = 'DESC_FLEX' THEN
9074 IF p_in_rec.attribute1 <> FND_API.G_MISS_CHAR
9075 OR p_in_rec.attribute1 IS NULL THEN
9076 x_out_rec.attribute1 := p_in_rec.attribute1 ;
9077 END IF;
9078 IF p_in_rec.attribute2 <> FND_API.G_MISS_CHAR
9079 OR p_in_rec.attribute2 IS NULL THEN
9080 x_out_rec.attribute2 := p_in_rec.attribute2 ;
9081 END IF;
9082 IF p_in_rec.attribute3 <> FND_API.G_MISS_CHAR
9083 OR p_in_rec.attribute3 IS NULL THEN
9084 x_out_rec.attribute3 := p_in_rec.attribute3 ;
9085 END IF;
9086 IF p_in_rec.attribute4 <> FND_API.G_MISS_CHAR
9087 OR p_in_rec.attribute4 IS NULL THEN
9088 x_out_rec.attribute4 := p_in_rec.attribute4 ;
9089 END IF;
9090 IF p_in_rec.attribute5 <> FND_API.G_MISS_CHAR
9091 OR p_in_rec.attribute5 IS NULL THEN
9092 x_out_rec.attribute5 := p_in_rec.attribute5 ;
9093 END IF;
9094 IF p_in_rec.attribute6 <> FND_API.G_MISS_CHAR
9095 OR p_in_rec.attribute6 IS NULL THEN
9096 x_out_rec.attribute6 := p_in_rec.attribute6 ;
9097 END IF;
9098 IF p_in_rec.attribute7 <> FND_API.G_MISS_CHAR
9099 OR p_in_rec.attribute7 IS NULL THEN
9100 x_out_rec.attribute7 := p_in_rec.attribute7 ;
9101 END IF;
9102 IF p_in_rec.attribute8 <> FND_API.G_MISS_CHAR
9103 OR p_in_rec.attribute8 IS NULL THEN
9104 x_out_rec.attribute8 := p_in_rec.attribute8 ;
9105 END IF;
9106 IF p_in_rec.attribute9 <> FND_API.G_MISS_CHAR
9107 OR p_in_rec.attribute9 IS NULL THEN
9108 x_out_rec.attribute9 := p_in_rec.attribute9 ;
9109 END IF;
9110 IF p_in_rec.attribute10 <> FND_API.G_MISS_CHAR
9111 OR p_in_rec.attribute10 IS NULL THEN
9112 x_out_rec.attribute10 := p_in_rec.attribute10 ;
9113 END IF;
9114 IF p_in_rec.attribute11 <> FND_API.G_MISS_CHAR
9115 OR p_in_rec.attribute11 IS NULL THEN
9116 x_out_rec.attribute11 := p_in_rec.attribute11 ;
9117 END IF;
9118 IF p_in_rec.attribute12 <> FND_API.G_MISS_CHAR
9119 OR p_in_rec.attribute12 IS NULL THEN
9120 x_out_rec.attribute12 := p_in_rec.attribute12 ;
9121 END IF;
9122 IF p_in_rec.attribute13 <> FND_API.G_MISS_CHAR
9123 OR p_in_rec.attribute13 IS NULL THEN
9124 x_out_rec.attribute13 := p_in_rec.attribute13 ;
9125 END IF;
9126 IF p_in_rec.attribute14 <> FND_API.G_MISS_CHAR
9127 OR p_in_rec.attribute14 IS NULL THEN
9128 x_out_rec.attribute14 := p_in_rec.attribute14 ;
9129 END IF;
9130 IF p_in_rec.attribute15 <> FND_API.G_MISS_CHAR
9131 OR p_in_rec.attribute15 IS NULL THEN
9132 x_out_rec.attribute15 := p_in_rec.attribute15 ;
9133 END IF;
9134 IF p_in_rec.attribute_category <> FND_API.G_MISS_CHAR
9135 OR p_in_rec.attribute_category IS NULL THEN
9136 x_out_rec.attribute_category := p_in_rec.attribute_category ;
9137 END IF;
9138 ELSIF p_disabled_list(i) = 'TP_FLEXFIELD' THEN
9139 IF p_in_rec.tp_attribute1 <> FND_API.G_MISS_CHAR
9140 OR p_in_rec.tp_attribute1 IS NULL THEN
9141 x_out_rec.tp_attribute1 := p_in_rec.tp_attribute1 ;
9142 END IF;
9143 IF p_in_rec.tp_attribute2 <> FND_API.G_MISS_CHAR
9144 OR p_in_rec.tp_attribute2 IS NULL THEN
9145 x_out_rec.tp_attribute2 := p_in_rec.tp_attribute2 ;
9146 END IF;
9147 IF p_in_rec.tp_attribute3 <> FND_API.G_MISS_CHAR
9148 OR p_in_rec.tp_attribute3 IS NULL THEN
9149 x_out_rec.tp_attribute3 := p_in_rec.tp_attribute3 ;
9150 END IF;
9151 IF p_in_rec.tp_attribute4 <> FND_API.G_MISS_CHAR
9152 OR p_in_rec.tp_attribute4 IS NULL THEN
9153 x_out_rec.tp_attribute4 := p_in_rec.tp_attribute4 ;
9154 END IF;
9155 IF p_in_rec.tp_attribute5 <> FND_API.G_MISS_CHAR
9156 OR p_in_rec.tp_attribute5 IS NULL THEN
9157 x_out_rec.tp_attribute5 := p_in_rec.tp_attribute5 ;
9158 END IF;
9159 IF p_in_rec.tp_attribute6 <> FND_API.G_MISS_CHAR
9160 OR p_in_rec.tp_attribute6 IS NULL THEN
9161 x_out_rec.tp_attribute6 := p_in_rec.tp_attribute6 ;
9162 END IF;
9163 IF p_in_rec.tp_attribute7 <> FND_API.G_MISS_CHAR
9164 OR p_in_rec.tp_attribute7 IS NULL THEN
9165 x_out_rec.tp_attribute7 := p_in_rec.tp_attribute7 ;
9166 END IF;
9167 IF p_in_rec.tp_attribute8 <> FND_API.G_MISS_CHAR
9168 OR p_in_rec.tp_attribute8 IS NULL THEN
9169 x_out_rec.tp_attribute8 := p_in_rec.tp_attribute8 ;
9170 END IF;
9171 IF p_in_rec.tp_attribute9 <> FND_API.G_MISS_CHAR
9172 OR p_in_rec.tp_attribute9 IS NULL THEN
9173 x_out_rec.tp_attribute9 := p_in_rec.tp_attribute9 ;
9174 END IF;
9175 IF p_in_rec.tp_attribute10 <> FND_API.G_MISS_CHAR
9176 OR p_in_rec.tp_attribute10 IS NULL THEN
9177 x_out_rec.tp_attribute10 := p_in_rec.tp_attribute10 ;
9178 END IF;
9179 IF p_in_rec.tp_attribute11 <> FND_API.G_MISS_CHAR
9180 OR p_in_rec.tp_attribute11 IS NULL THEN
9181 x_out_rec.tp_attribute11 := p_in_rec.tp_attribute11 ;
9182 END IF;
9183 IF p_in_rec.tp_attribute12 <> FND_API.G_MISS_CHAR
9184 OR p_in_rec.tp_attribute12 IS NULL THEN
9185 x_out_rec.tp_attribute12 := p_in_rec.tp_attribute12 ;
9186 END IF;
9187 IF p_in_rec.tp_attribute13 <> FND_API.G_MISS_CHAR
9188 OR p_in_rec.tp_attribute13 IS NULL THEN
9189 x_out_rec.tp_attribute13 := p_in_rec.tp_attribute13 ;
9190 END IF;
9191 IF p_in_rec.tp_attribute14 <> FND_API.G_MISS_CHAR
9192 OR p_in_rec.tp_attribute14 IS NULL THEN
9193 x_out_rec.tp_attribute14 := p_in_rec.tp_attribute14 ;
9194 END IF;
9195 IF p_in_rec.tp_attribute15 <> FND_API.G_MISS_CHAR
9196 OR p_in_rec.tp_attribute15 IS NULL THEN
9197 x_out_rec.tp_attribute15 := p_in_rec.tp_attribute15 ;
9198 END IF;
9199 IF p_in_rec.tp_attribute_category <> FND_API.G_MISS_CHAR
9200 OR p_in_rec.tp_attribute_category IS NULL THEN
9201 x_out_rec.tp_attribute_category := p_in_rec.tp_attribute_category ;
9202 END IF;
9203 ELSIF p_disabled_list(i) = 'GLOBALIZATION_FLEXFIELD' THEN
9204 IF p_in_rec.global_attribute1 <> FND_API.G_MISS_CHAR
9205 OR p_in_rec.global_attribute1 IS NULL THEN
9206 x_out_rec.global_attribute1 := p_in_rec.global_attribute1 ;
9207 END IF;
9208 IF p_in_rec.global_attribute2 <> FND_API.G_MISS_CHAR
9209 OR p_in_rec.global_attribute2 IS NULL THEN
9210 x_out_rec.global_attribute2 := p_in_rec.global_attribute2 ;
9211 END IF;
9212 IF p_in_rec.global_attribute3 <> FND_API.G_MISS_CHAR
9213 OR p_in_rec.global_attribute3 IS NULL THEN
9214 x_out_rec.global_attribute3 := p_in_rec.global_attribute3 ;
9215 END IF;
9216 IF p_in_rec.global_attribute4 <> FND_API.G_MISS_CHAR
9217 OR p_in_rec.global_attribute4 IS NULL THEN
9218 x_out_rec.global_attribute4 := p_in_rec.global_attribute4 ;
9219 END IF;
9220 IF p_in_rec.global_attribute5 <> FND_API.G_MISS_CHAR
9221 OR p_in_rec.global_attribute5 IS NULL THEN
9222 x_out_rec.global_attribute5 := p_in_rec.global_attribute5 ;
9223 END IF;
9224 IF p_in_rec.global_attribute6 <> FND_API.G_MISS_CHAR
9225 OR p_in_rec.global_attribute6 IS NULL THEN
9226 x_out_rec.global_attribute6 := p_in_rec.global_attribute6 ;
9227 END IF;
9228 IF p_in_rec.global_attribute7 <> FND_API.G_MISS_CHAR
9229 OR p_in_rec.global_attribute7 IS NULL THEN
9230 x_out_rec.global_attribute7 := p_in_rec.global_attribute7 ;
9231 END IF;
9232 IF p_in_rec.global_attribute8 <> FND_API.G_MISS_CHAR
9233 OR p_in_rec.global_attribute8 IS NULL THEN
9234 x_out_rec.global_attribute8 := p_in_rec.global_attribute8 ;
9235 END IF;
9236 IF p_in_rec.global_attribute9 <> FND_API.G_MISS_CHAR
9237 OR p_in_rec.global_attribute9 IS NULL THEN
9238 x_out_rec.global_attribute9 := p_in_rec.global_attribute9 ;
9239 END IF;
9240 IF p_in_rec.global_attribute10 <> FND_API.G_MISS_CHAR
9241 OR p_in_rec.global_attribute10 IS NULL THEN
9242 x_out_rec.global_attribute10 := p_in_rec.global_attribute10 ;
9243 END IF;
9244 IF p_in_rec.global_attribute11 <> FND_API.G_MISS_CHAR
9245 OR p_in_rec.global_attribute11 IS NULL THEN
9246 x_out_rec.global_attribute11 := p_in_rec.global_attribute11 ;
9247 END IF;
9248 IF p_in_rec.global_attribute12 <> FND_API.G_MISS_CHAR
9249 OR p_in_rec.global_attribute12 IS NULL THEN
9250 x_out_rec.global_attribute12 := p_in_rec.global_attribute12 ;
9251 END IF;
9252 IF p_in_rec.global_attribute13 <> FND_API.G_MISS_CHAR
9253 OR p_in_rec.global_attribute13 IS NULL THEN
9254 x_out_rec.global_attribute13 := p_in_rec.global_attribute13 ;
9255 END IF;
9256 IF p_in_rec.global_attribute14 <> FND_API.G_MISS_CHAR
9257 OR p_in_rec.global_attribute14 IS NULL THEN
9258 x_out_rec.global_attribute14 := p_in_rec.global_attribute14 ;
9259 END IF;
9260 IF p_in_rec.global_attribute15 <> FND_API.G_MISS_CHAR
9261 OR p_in_rec.global_attribute15 IS NULL THEN
9262 x_out_rec.global_attribute15 := p_in_rec.global_attribute15 ;
9263 END IF;
9264 IF p_in_rec.global_attribute_category <> FND_API.G_MISS_CHAR
9265 OR p_in_rec.global_attribute_category IS NULL THEN
9266 x_out_rec.attribute_category := p_in_rec.attribute_category ;
9267 END IF;
9268 ELSIF p_disabled_list(i) = 'TARE_WEIGHT' THEN
9269 NULL;
9270 ELSE
9271 -- invalid name
9272 x_field_name := p_disabled_list(i);
9273 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9274 RETURN;
9275 --
9276 END IF;
9277 END IF;
9278 END LOOP;
9279
9280 END enable_from_list;
9281
9282 --
9283 -- Overloaded procedure
9284 -- Replaced p_action with p_in_rec as a parameter
9285 --
9286 PROCEDURE Get_Disabled_List (
9287 p_delivery_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type
9288 , p_in_rec IN WSH_DELIVERIES_GRP.Del_In_Rec_Type
9289 , x_return_status OUT NOCOPY VARCHAR2
9290 , x_msg_count OUT NOCOPY NUMBER
9291 , x_msg_data OUT NOCOPY VARCHAR2
9292 , x_delivery_rec OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type
9293 )
9294 IS
9295 l_disabled_list WSH_UTIL_CORE.column_tab_type;
9296 l_db_col_rec WSH_NEW_DELIVERIES_PVT.Delivery_rec_type;
9297 l_return_status VARCHAR2(30);
9298 l_field_name VARCHAR2(100);
9299 l_debug_on BOOLEAN;
9300 l_module_name CONSTANT VARCHAR2(100) :=
9301 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_DISABLED_LIST';
9302
9303 CURSOR c_tbl_rec IS
9304 SELECT DELIVERY_ID
9305 ,NAME
9306 ,PLANNED_FLAG
9307 ,STATUS_CODE
9308 ,DELIVERY_TYPE
9309 ,LOADING_SEQUENCE
9310 ,LOADING_ORDER_FLAG
9311 ,INITIAL_PICKUP_DATE
9312 ,INITIAL_PICKUP_LOCATION_ID
9313 ,ORGANIZATION_ID
9314 ,ULTIMATE_DROPOFF_LOCATION_ID
9315 ,ULTIMATE_DROPOFF_DATE
9316 ,CUSTOMER_ID
9317 ,INTMED_SHIP_TO_LOCATION_ID
9318 ,POOLED_SHIP_TO_LOCATION_ID
9319 ,CARRIER_ID
9320 ,SHIP_METHOD_CODE
9321 ,FREIGHT_TERMS_CODE
9322 ,FOB_CODE
9323 ,FOB_LOCATION_ID
9324 ,WAYBILL
9325 ,DOCK_CODE
9326 ,ACCEPTANCE_FLAG
9327 ,ACCEPTED_BY
9328 ,ACCEPTED_DATE
9329 ,ACKNOWLEDGED_BY
9330 ,CONFIRMED_BY
9331 ,CONFIRM_DATE
9332 ,ASN_DATE_SENT
9333 ,ASN_STATUS_CODE
9334 ,ASN_SEQ_NUMBER
9335 ,GROSS_WEIGHT
9336 ,NET_WEIGHT
9337 ,WEIGHT_UOM_CODE
9338 ,VOLUME
9339 ,VOLUME_UOM_CODE
9340 ,ADDITIONAL_SHIPMENT_INFO
9341 ,CURRENCY_CODE
9342 ,ATTRIBUTE_CATEGORY
9343 ,ATTRIBUTE1
9344 ,ATTRIBUTE2
9345 ,ATTRIBUTE3
9346 ,ATTRIBUTE4
9347 ,ATTRIBUTE5
9348 ,ATTRIBUTE6
9349 ,ATTRIBUTE7
9350 ,ATTRIBUTE8
9351 ,ATTRIBUTE9
9352 ,ATTRIBUTE10
9353 ,ATTRIBUTE11
9354 ,ATTRIBUTE12
9355 ,ATTRIBUTE13
9356 ,ATTRIBUTE14
9357 ,ATTRIBUTE15
9358 ,TP_ATTRIBUTE_CATEGORY
9359 ,TP_ATTRIBUTE1
9360 ,TP_ATTRIBUTE2
9361 ,TP_ATTRIBUTE3
9362 ,TP_ATTRIBUTE4
9363 ,TP_ATTRIBUTE5
9364 ,TP_ATTRIBUTE6
9365 ,TP_ATTRIBUTE7
9366 ,TP_ATTRIBUTE8
9367 ,TP_ATTRIBUTE9
9368 ,TP_ATTRIBUTE10
9369 ,TP_ATTRIBUTE11
9370 ,TP_ATTRIBUTE12
9371 ,TP_ATTRIBUTE13
9372 ,TP_ATTRIBUTE14
9373 ,TP_ATTRIBUTE15
9374 ,GLOBAL_ATTRIBUTE_CATEGORY
9375 ,GLOBAL_ATTRIBUTE1
9376 ,GLOBAL_ATTRIBUTE2
9377 ,GLOBAL_ATTRIBUTE3
9378 ,GLOBAL_ATTRIBUTE4
9379 ,GLOBAL_ATTRIBUTE5
9380 ,GLOBAL_ATTRIBUTE6
9381 ,GLOBAL_ATTRIBUTE7
9382 ,GLOBAL_ATTRIBUTE8
9383 ,GLOBAL_ATTRIBUTE9
9384 ,GLOBAL_ATTRIBUTE10
9385 ,GLOBAL_ATTRIBUTE11
9386 ,GLOBAL_ATTRIBUTE12
9387 ,GLOBAL_ATTRIBUTE13
9388 ,GLOBAL_ATTRIBUTE14
9389 ,GLOBAL_ATTRIBUTE15
9390 ,GLOBAL_ATTRIBUTE16
9391 ,GLOBAL_ATTRIBUTE17
9392 ,GLOBAL_ATTRIBUTE18
9393 ,GLOBAL_ATTRIBUTE19
9394 ,GLOBAL_ATTRIBUTE20
9395 ,CREATION_DATE
9396 ,CREATED_BY
9397 ,sysdate
9398 ,FND_GLOBAL.USER_ID
9399 ,FND_GLOBAL.LOGIN_ID
9400 ,PROGRAM_APPLICATION_ID
9401 ,PROGRAM_ID
9402 ,PROGRAM_UPDATE_DATE
9403 ,REQUEST_ID
9404 ,BATCH_ID
9405 ,HASH_VALUE
9406 ,SOURCE_HEADER_ID
9407 ,NUMBER_OF_LPN
9408 ,COD_AMOUNT
9409 ,COD_CURRENCY_CODE
9410 ,COD_REMIT_TO
9411 ,COD_CHARGE_PAID_BY
9412 ,PROBLEM_CONTACT_REFERENCE
9413 ,PORT_OF_LOADING
9414 ,PORT_OF_DISCHARGE
9415 ,FTZ_NUMBER
9416 ,ROUTED_EXPORT_TXN
9417 ,ENTRY_NUMBER
9418 ,ROUTING_INSTRUCTIONS
9419 ,IN_BOND_CODE
9420 ,SHIPPING_MARKS
9421 ,SERVICE_LEVEL
9422 ,MODE_OF_TRANSPORT
9423 ,ASSIGNED_TO_FTE_TRIPS
9424 --new added fields
9425 , AUTO_SC_EXCLUDE_FLAG
9426 , AUTO_AP_EXCLUDE_FLAG
9427 , AP_BATCH_ID
9428 --
9429 ,p_delivery_rec.ROWID
9430 ,p_delivery_rec.LOADING_ORDER_DESC
9431 ,p_delivery_rec.ORGANIZATION_CODE
9432 ,p_delivery_rec.ULTIMATE_DROPOFF_LOCATION_CODE
9433 ,p_delivery_rec.INITIAL_PICKUP_LOCATION_CODE
9434 ,p_delivery_rec.CUSTOMER_NUMBER
9435 ,p_delivery_rec.INTMED_SHIP_TO_LOCATION_CODE
9436 ,p_delivery_rec.POOLED_SHIP_TO_LOCATION_CODE
9437 ,p_delivery_rec.CARRIER_CODE
9438 ,p_delivery_rec.SHIP_METHOD_NAME
9439 ,p_delivery_rec.FREIGHT_TERMS_NAME
9440 ,p_delivery_rec.FOB_NAME
9441 ,p_delivery_rec.FOB_LOCATION_CODE
9442 ,p_delivery_rec.WEIGHT_UOM_DESC
9443 ,p_delivery_rec.VOLUME_UOM_DESC
9444 ,p_delivery_rec.CURRENCY_NAME
9445 /* J Inbound Logistics: New columns jckwok */
9446 ,SHIPMENT_DIRECTION
9447 ,VENDOR_ID
9448 ,PARTY_ID
9449 ,ROUTING_RESPONSE_ID
9450 ,RCV_SHIPMENT_HEADER_ID
9451 ,ASN_SHIPMENT_HEADER_ID
9452 ,SHIPPING_CONTROL
9453 /* J TP Release : ttrichy */
9454 ,TP_DELIVERY_NUMBER
9455 ,EARLIEST_PICKUP_DATE
9456 ,LATEST_PICKUP_DATE
9457 ,EARLIEST_DROPOFF_DATE
9458 ,LATEST_DROPOFF_DATE
9459 ,IGNORE_FOR_PLANNING
9460 ,TP_PLAN_NAME
9461 -- J: W/V Changes
9462 ,WV_FROZEN_FLAG
9463 ,HASH_STRING
9464 ,delivered_date
9465 ,p_delivery_rec.packing_slip
9466 --bug 3667348
9467 ,REASON_OF_TRANSPORT
9468 ,DESCRIPTION
9469 ,'N' --Non Database field added for "Proration of weight from Delivery to delivery lines" Project(Bug#4254552).
9470 --OTM R12
9471 ,TMS_INTERFACE_FLAG
9472 ,TMS_VERSION_NUMBER
9473 --
9474 FROM wsh_new_deliveries
9475 WHERE delivery_id = p_delivery_rec.delivery_id;
9476
9477 e_dp_no_entity EXCEPTION;
9478 e_bad_field EXCEPTION;
9479 e_all_disabled EXCEPTION ;
9480 --
9481 l_shipping_control VARCHAR2(30);
9482 l_routing_response_id NUMBER;
9483 l_routing_request_flag VARCHAR2(30);
9484
9485 l_caller VARCHAR2(32767);
9486 --l_return_status VARCHAR2(10);
9487
9488 BEGIN
9489 --
9490 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
9491 --
9492 IF l_debug_on IS NULL
9493 THEN
9494 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
9495 END IF;
9496 --
9497 IF l_debug_on THEN
9498 WSH_DEBUG_SV.push(l_module_name);
9499 WSH_DEBUG_SV.log(l_module_name,'DELIVERY_ID', p_delivery_rec.DELIVERY_ID);
9500 WSH_DEBUG_SV.log(l_module_name,'Action Code', p_in_rec.action_code);
9501 WSH_DEBUG_SV.log(l_module_name,'Caller', p_in_rec.caller);
9502 END IF;
9503 --
9504 x_return_status := FND_API.G_RET_STS_SUCCESS;
9505 --
9506 IF p_in_rec.action_code = 'CREATE' THEN
9507 --
9508 IF l_debug_on THEN
9509 WSH_DEBUG_SV.log(l_module_name,'calling eliminate_displayonly_fields');
9510 END IF;
9511 --
9512 -- nothing else need to be disabled
9513 --
9514 --tkt
9515 eliminate_displayonly_fields(p_delivery_rec,p_in_rec, x_delivery_rec);
9516 --
9517 --3509004: : public api changes
9518 /*
9519 IF l_debug_on THEN
9520 WSH_DEBUG_SV.log(l_module_name,'x_return_status',x_return_status);
9521 WSH_DEBUG_SV.pop(l_module_name);
9522 END IF;
9523 --
9524 RETURN;
9525 --
9526 */
9527 ELSIF p_in_rec.action_code = 'UPDATE' THEN
9528 --
9529 l_caller := p_in_rec.caller;
9530 IF (l_caller like 'FTE%') THEN
9531 l_caller := 'WSH_PUB';
9532 END IF;
9533 Get_Disabled_List( p_delivery_rec.DELIVERY_ID
9534 , 'FORM'
9535 , x_return_status
9536 , l_disabled_list
9537 , x_msg_count
9538 , x_msg_data
9539 , l_caller --3509004:public api changes
9540 );
9541 --
9542 IF x_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR OR
9543 x_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR
9544 THEN
9545 --
9546 IF l_debug_on THEN
9547 WSH_DEBUG_SV.log(l_module_name,'x_return_status',x_return_status);
9548 WSH_DEBUG_SV.pop(l_module_name);
9549 END IF;
9550 --
9551 RETURN;
9552 --
9553 END IF;
9554 --
9555
9556 --
9557 IF l_disabled_list.COUNT = 1 THEN
9558 IF l_disabled_list(1) = 'FULL' THEN
9559 RAISE e_all_disabled;
9560 --Everything is disabled
9561 END IF;
9562 END IF;
9563 --
9564 OPEN c_tbl_rec;
9565 FETCH c_tbl_rec INTO x_delivery_rec;
9566 IF c_tbl_rec%NOTFOUND THEN
9567 --
9568 CLOSE c_tbl_rec;
9569 RAISE e_dp_no_entity;
9570 --
9571 END IF;
9572 CLOSE c_tbl_rec;
9573 --
9574 -- J-IB-NPARIKH-{
9575 --
9576 --
9577 --
9578 -- depending on the caller,
9579 -- firmly overwrite columns that are otherwise normally protected.
9580 --
9581 IF p_in_rec.caller LIKE 'WSH_TP_RELEASE%' THEN
9582 -- bug 3371077: need to overwrite these dates even
9583 -- if delivery has contents.
9584 -- (technically equivalent to emptying the delivery,
9585 -- updating the dates, and re-assigning its contents)
9586 IF p_delivery_rec.INITIAL_PICKUP_DATE <> FND_API.G_MISS_DATE THEN
9587 x_delivery_rec.INITIAL_PICKUP_DATE := p_delivery_rec.INITIAL_PICKUP_DATE ;
9588 END IF;
9589 IF p_delivery_rec.ULTIMATE_DROPOFF_DATE <> FND_API.G_MISS_DATE THEN
9590 x_delivery_rec.ULTIMATE_DROPOFF_DATE := p_delivery_rec.ULTIMATE_DROPOFF_DATE ;
9591 END IF;
9592 END IF;
9593 --
9594 --
9595 --
9596 -- J-IB-NPARIKH-}
9597
9598 IF l_debug_on THEN
9599 WSH_DEBUG_SV.log(l_module_name,'list.COUNT',l_disabled_list.COUNT);
9600 END IF;
9601 --
9602 IF l_disabled_list.COUNT = 0 THEN
9603 IF l_debug_on THEN
9604 WSH_DEBUG_SV.log(l_module_name,'calling eliminate_displayonly_fields');
9605 END IF;
9606 --
9607 -- nothing else need to be disabled
9608 --
9609 --tkt
9610 eliminate_displayonly_fields (p_delivery_rec,p_in_rec,x_delivery_rec);
9611 --
9612 ELSIF l_disabled_list(1) = 'FULL' THEN
9613 IF l_disabled_list.COUNT > 1 THEN
9614 --
9615 IF l_debug_on THEN
9616 FOR i in 1..l_disabled_list.COUNT
9617 LOOP
9618 WSH_DEBUG_SV.log(l_module_name,'list values',l_disabled_list(i));
9619 END LOOP;
9620 WSH_DEBUG_SV.log(l_module_name,'calling enable_from_list');
9621 END IF;
9622 --enable the columns matching the l_disabled_list
9623 enable_from_list(l_disabled_list,
9624 p_delivery_rec,
9625 x_delivery_rec,
9626 l_return_status,
9627 l_field_name);
9628 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
9629 RAISE e_bad_field;
9630 END IF;
9631 END IF;
9632 --
9633 ELSE -- list.count > 1 and list(1) <> 'FULL'
9634 l_db_col_rec := x_delivery_rec ;
9635 --
9636 IF l_debug_on THEN
9637 FOR i in 1..l_disabled_list.COUNT
9638 LOOP
9639 WSH_DEBUG_SV.log(l_module_name,'list values',l_disabled_list(i));
9640 END LOOP;
9641 WSH_DEBUG_SV.log(l_module_name,'First element is not FULL');
9642 WSH_DEBUG_SV.log(l_module_name,'calling eliminate_displayonly_fields');
9643 END IF;
9644 --
9645 --tkt
9646 eliminate_displayonly_fields (p_delivery_rec,p_in_rec,x_delivery_rec);
9647 --
9648 IF l_debug_on THEN
9649 WSH_DEBUG_SV.log(l_module_name,'calling disable_from_list');
9650 END IF;
9651 -- The fileds in the list are getting disabled
9652 disable_from_list(l_disabled_list,
9653 l_db_col_rec,
9654 x_delivery_rec,
9655 l_return_status,
9656 l_field_name,
9657 p_in_rec.caller
9658 );
9659 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
9660 RAISE e_bad_field;
9661 END IF;
9662 END IF;
9663 --
9664 END IF; /* if action = 'UPDATE' */
9665
9666 --3509004:public api changes
9667 IF (NVL(p_in_rec.caller, '!!!') <> 'WSH_FSTRX' AND
9668 NVL(p_in_rec.caller, '!!!') NOT LIKE 'FTE%'
9669 AND NVL(p_in_rec.caller, '!!!') <> 'WSH_INBOUND'
9670 AND NVL(p_in_rec.caller, '!!!') <> 'WSH_TPW_INBOUND') THEN
9671 --
9672 user_non_updatable_columns
9673 (p_user_in_rec => p_delivery_rec,
9674 p_out_rec => x_delivery_rec,
9675 p_in_rec => p_in_rec,
9676 x_return_status => l_return_status);
9677 --
9678 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
9679 x_return_status := l_return_status;
9680 END IF;
9681 --
9682 END IF;
9683 --
9684 IF l_debug_on THEN
9685 WSH_DEBUG_SV.pop(l_module_name);
9686 END IF;
9687
9688 EXCEPTION
9689 WHEN e_all_disabled THEN
9690 IF (c_tbl_rec%ISOPEN) THEN
9691 CLOSE c_tbl_rec;
9692 END IF;
9693
9694 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9695 FND_MESSAGE.SET_NAME('WSH','WSH_ALL_COLS_DISABLED');
9696 FND_MESSAGE.Set_Token('ENTITY_ID',p_delivery_rec.delivery_id);
9697 wsh_util_core.add_message(x_return_status,l_module_name);
9698 IF l_debug_on THEN
9699 -- Nothing is updateable
9700 WSH_DEBUG_SV.pop(l_module_name,'e_all_disabled');
9701 END IF;
9702 WHEN e_dp_no_entity THEN
9703 IF (c_tbl_rec%ISOPEN) THEN
9704 CLOSE c_tbl_rec;
9705 END IF;
9706
9707 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9708 -- the message for this is set in original get_disabled_list
9709 IF l_debug_on THEN
9710 WSH_DEBUG_SV.pop(l_module_name,'e_dp_no_entity');
9711 END IF;
9712 WHEN e_bad_field THEN
9713 IF (c_tbl_rec%ISOPEN) THEN
9714 CLOSE c_tbl_rec;
9715 END IF;
9716
9717 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9718 FND_MESSAGE.SET_NAME('WSH','WSH_BAD_FIELD_NAME');
9719 FND_MESSAGE.Set_Token('FIELD_NAME',l_field_name);
9720 wsh_util_core.add_message(x_return_status,l_module_name);
9721 IF l_debug_on THEN
9722 WSH_DEBUG_SV.log(l_module_name,'Bad field name passed to the list:'
9723 ,l_field_name);
9724 WSH_DEBUG_SV.pop(l_module_name,'e_bad_field');
9725 END IF;
9726 --
9727 WHEN FND_API.G_EXC_ERROR THEN
9728 IF (c_tbl_rec%ISOPEN) THEN
9729 CLOSE c_tbl_rec;
9730 END IF;
9731
9732 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9733 --
9734 IF l_debug_on THEN
9735 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
9736 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
9737 END IF;
9738 --
9739 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9740 IF (c_tbl_rec%ISOPEN) THEN
9741 CLOSE c_tbl_rec;
9742 END IF;
9743
9744 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
9745 --
9746 IF l_debug_on THEN
9747 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
9748 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
9749 END IF;
9750
9751 WHEN OTHERS THEN
9752 IF (c_tbl_rec%ISOPEN) THEN
9753 CLOSE c_tbl_rec;
9754 END IF;
9755
9756 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
9757 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.get_disabled_list', l_module_name);
9758 IF l_debug_on THEN
9759 WSH_DEBUG_SV.log(l_module_name,'Error:',SUBSTR(SQLERRM,1,200));
9760 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
9761 END IF;
9762 END Get_Disabled_List;
9763
9764
9765 PROCEDURE Init_Delivery_Actions_Tbl (
9766 p_action IN VARCHAR2
9767 , x_delivery_actions_tab OUT NOCOPY DeliveryActionsTabType
9768 , x_return_status OUT NOCOPY VARCHAR2
9769 )
9770
9771 IS
9772 i NUMBER := 0;
9773 --OTM R12
9774 l_gc3_is_installed VARCHAR2(1);
9775 --
9776
9777 l_debug_on BOOLEAN;
9778 l_module_name CONSTANT VARCHAR2(100) :=
9779 'wsh.plsql.' || G_PKG_NAME || '.' || 'Init_Delivery_Actions_Tbl';
9780
9781 BEGIN
9782
9783 --
9784 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
9785 --
9786 IF l_debug_on IS NULL
9787 THEN
9788 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
9789 END IF;
9790 --
9791 IF l_debug_on THEN
9792 WSH_DEBUG_SV.push(l_module_name);
9793 --
9794 WSH_DEBUG_SV.log(l_module_name,'p_action', p_action);
9795 END IF;
9796 --
9797 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
9798
9799 --OTM R12
9800 l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED; -- this is global variable
9801
9802 IF l_gc3_is_installed IS NULL THEN
9803 l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED; -- this is actual function
9804 END IF;
9805 --
9806
9807 /*
9808 PLEASE READ BEFORE MODIFYING THIS PROCEDURE:
9809 Actions are disabled by updating i FIRST and then adding appropriate conditions (like
9810 status code, action not allowed etc.) and NOT the other way (update i after updating
9811 status code, action not allowed).
9812 */
9813
9814 --OTM R12
9815 IF l_gc3_is_installed = 'Y' THEN
9816 IF p_action IN ('GET-FREIGHT-COSTS',
9817 'FIRM',
9818 'SELECT-CARRIER',
9819 'RATE_WITH_UPS',
9820 'UPS_TIME_IN_TRANSIT',
9821 'UPS_ADDRESS_VALIDATION',
9822 'UPS_TRACKING') THEN
9823 i := i + 1;
9824 x_delivery_actions_tab(i).action_not_allowed := p_action;
9825 END IF;
9826 END IF;
9827 --END OTM R12
9828 --
9829 --
9830 -- J-IB-NPARIKH-{
9831 --
9832 -- Disable all the actions for inbound/drop-ship deliveries
9833 -- when called from shipping transaction form
9834 --
9835 i := i+1;
9836 x_delivery_actions_tab(i).shipment_direction := 'I';
9837 x_delivery_actions_tab(i).caller := 'WSH_FSTRX';
9838 x_delivery_actions_tab(i).action_not_allowed := p_action;
9839 i := i+1;
9840 x_delivery_actions_tab(i).shipment_direction := 'D';
9841 x_delivery_actions_tab(i).caller := 'WSH_FSTRX';
9842 x_delivery_actions_tab(i).action_not_allowed := p_action;
9843 -- J-IB-NPARIKH-}
9844 --
9845 --
9846
9847 IF p_action = 'CLOSE' THEN
9848 i := i+1;
9849 x_delivery_actions_tab(i).status_code := 'CL';
9850 x_delivery_actions_tab(i).action_not_allowed := p_action;
9851 i := i + 1;
9852 x_delivery_actions_tab(i).status_code := 'CO';
9853 x_delivery_actions_tab(i).action_not_allowed := p_action;
9854 --
9855 -- J-IB-NPARIKH-{
9856 --
9857 ELSIF p_action = 'GENERATE-ROUTING-RESPONSE' THEN
9858 --
9859 -- Generate routing response action not allowed for
9860 -- - outbound (O/IO) deliveries
9861 -- - in-transit/closed deliveries
9862 --
9863 i := i + 1;
9864 x_delivery_actions_tab(i).status_code := 'CL';
9865 x_delivery_actions_tab(i).action_not_allowed := p_action;
9866 i := i + 1;
9867 x_delivery_actions_tab(i).status_code := 'IT';
9868 x_delivery_actions_tab(i).action_not_allowed := p_action;
9869 i := i+1;
9870 x_delivery_actions_tab(i).shipment_direction := 'O';
9871 x_delivery_actions_tab(i).action_not_allowed := p_action;
9872 i := i+1;
9873 x_delivery_actions_tab(i).shipment_direction := 'IO';
9874 x_delivery_actions_tab(i).action_not_allowed := p_action;
9875 --
9876 -- J-IB-NPARIKH-}
9877 --
9878 ELSIF p_action IN ( 'IN-TRANSIT' ,'RE-OPEN' ) THEN
9879 i := i+1;
9880 x_delivery_actions_tab(i).status_code := 'CL';
9881 x_delivery_actions_tab(i).action_not_allowed := p_action;
9882 i := i + 1;
9883 x_delivery_actions_tab(i).status_code := 'IT';
9884 x_delivery_actions_tab(i).action_not_allowed := p_action;
9885 /*J add disallowed actions for shipment_direction jckwok */
9886 i := i + 1;
9887 x_delivery_actions_tab(i).shipment_direction := 'I';
9888 x_delivery_actions_tab(i).action_not_allowed := p_action;
9889 i := i + 1;
9890 x_delivery_actions_tab(i).shipment_direction := 'D';
9891 x_delivery_actions_tab(i).action_not_allowed := p_action;
9892 ELSIF p_action IN ('UNASSIGN-TRIP','AUTOCREATE-TRIP','WT-VOL',
9893 'PICK-RELEASE-UI' ,'DELETE','ASSIGN-TRIP') THEN
9894
9895 -- J-IB-NPARIKH-{
9896 IF p_action = 'WT-VOL'
9897 THEN
9898 --{
9899 --
9900 -- Calculate weight/volume action
9901 -- - allowed for in-transit/closed inbound (not O/IO) deliveries
9902 -- - not allowed for in-transit/closed outbound (O/IO) deliveries
9903 --
9904 i := i + 1;
9905 x_delivery_actions_tab(i).shipment_direction := 'O';
9906 x_delivery_actions_tab(i).status_code := 'CL';
9907 x_delivery_actions_tab(i).action_not_allowed := p_action;
9908 i := i + 1;
9909 x_delivery_actions_tab(i).shipment_direction := 'IO';
9910 x_delivery_actions_tab(i).status_code := 'CL';
9911 x_delivery_actions_tab(i).action_not_allowed := p_action;
9912
9913 i := i + 1;
9914 x_delivery_actions_tab(i).shipment_direction := 'O';
9915 x_delivery_actions_tab(i).status_code := 'IT';
9916 x_delivery_actions_tab(i).action_not_allowed := p_action;
9917 i := i + 1;
9918 x_delivery_actions_tab(i).shipment_direction := 'IO';
9919 x_delivery_actions_tab(i).status_code := 'IT';
9920 x_delivery_actions_tab(i).action_not_allowed := p_action;
9921 --}
9922 ELSE
9923 -- J-IB-NPARIKH-}
9924 i := i + 1;
9925 x_delivery_actions_tab(i).status_code := 'CL';
9926 x_delivery_actions_tab(i).action_not_allowed := p_action;
9927
9928 i := i + 1;
9929 x_delivery_actions_tab(i).status_code := 'IT';
9930 x_delivery_actions_tab(i).action_not_allowed := p_action;
9931 END IF;
9932 --
9933 -- Bug fix 2657615
9934 -- Allow Assign-Trip, Unassign-Trip, Autocreate-Trip for Confirmed deliveries
9935 IF p_action NOT IN ('ASSIGN-TRIP', 'UNASSIGN-TRIP', 'AUTOCREATE-TRIP') THEN
9936 i := i + 1;
9937 x_delivery_actions_tab(i).status_code := 'CO';
9938 x_delivery_actions_tab(i).action_not_allowed := p_action;
9939 END IF;
9940 IF p_action NOT IN ('ASSIGN-TRIP', 'UNASSIGN-TRIP', 'AUTOCREATE-TRIP', 'WT-VOL','DELETE') THEN
9941 /*J add disallowed actions for shipment_direction jckwok */
9942 i := i + 1;
9943 x_delivery_actions_tab(i).shipment_direction := 'I';
9944 x_delivery_actions_tab(i).action_not_allowed := p_action;
9945 i := i + 1;
9946 x_delivery_actions_tab(i).shipment_direction := 'D';
9947 x_delivery_actions_tab(i).action_not_allowed := p_action;
9948 END IF;
9949 -- End of Bug fix 2657615
9950 -- J-IB-NPARIKH-{
9951 ELSIF p_action = 'INCLUDE_PLAN' THEN
9952 --
9953 -- Include plan action not allowed for status code = XX
9954 -- status code XX is dummy status and will have this value only
9955 -- For in-transit/closed inbound deliveries (not O/IO), if
9956 -- - supplier is managing transportation
9957 -- OR
9958 -- - routing request was not received for all delivery lines
9959 --
9960 i := i + 1;
9961 x_delivery_actions_tab(i).status_code := 'XX';
9962 x_delivery_actions_tab(i).action_not_allowed := p_action;
9963 --OTM R12
9964 IF l_gc3_is_installed = 'Y' THEN
9965 -- 5746110: enforce this condition only when OTM is installed.
9966 i := i + 1;
9967 x_delivery_actions_tab(i).action_not_allowed := p_action;
9968 x_delivery_actions_tab(i).otm_enabled := 'N';
9969 END IF;
9970
9971 -- J-IB-NPARIKH-}
9972
9973 ELSIF p_action = 'FREIGHT-COSTS-UI' THEN
9974 /*J add disallowed actions for shipment_direction jckwok */
9975 i := i + 1;
9976 x_delivery_actions_tab(i).shipment_direction := 'I';
9977 x_delivery_actions_tab(i).action_not_allowed := p_action;
9978 i := i + 1;
9979 x_delivery_actions_tab(i).shipment_direction := 'D';
9980 x_delivery_actions_tab(i).action_not_allowed := p_action;
9981 -- OTM R12 - Org specific changes - Bug#5399341
9982 x_delivery_actions_tab(i).otm_enabled := 'N';
9983 ELSIF p_action IN ('UNPLAN', 'AUTO-PACK', 'AUTO-PACK-MASTER','PACK',
9984 'SELECT-CARRIER','GEN-LOAD-SEQ') THEN
9985 --order of i := i + 1; changed to be before and not after addition of new record
9986 IF (NOT p_action='UNPLAN') THEN
9987 i := i + 1;
9988 x_delivery_actions_tab(i).status_code := 'CL';
9989 x_delivery_actions_tab(i).action_not_allowed := p_action;
9990 i := i + 1;
9991 x_delivery_actions_tab(i).status_code := 'CO';
9992 x_delivery_actions_tab(i).action_not_allowed := p_action;
9993 i := i + 1;
9994 x_delivery_actions_tab(i).status_code := 'IT';
9995 x_delivery_actions_tab(i).action_not_allowed := p_action;
9996 END IF;
9997 i := i + 1;
9998 x_delivery_actions_tab(i).status_code := 'SR';
9999 x_delivery_actions_tab(i).action_not_allowed := p_action;
10000 i := i + 1;
10001 x_delivery_actions_tab(i).status_code := 'SC';
10002 x_delivery_actions_tab(i).action_not_allowed := p_action;
10003 --order of i := i + 1; changed to be before and not after addition of new record
10004 IF p_action IN ('AUTO-PACK', 'AUTO-PACK-MASTER', 'PACK') THEN
10005 i := i+1;
10006 x_delivery_actions_tab(i).org_type := 'WMS';
10007 x_delivery_actions_tab(i).action_not_allowed := p_action;
10008 /*J add disallowed actions for shipment_direction jckwok */
10009 i := i + 1;
10010 x_delivery_actions_tab(i).shipment_direction := 'I';
10011 x_delivery_actions_tab(i).action_not_allowed := p_action;
10012 i := i + 1;
10013 x_delivery_actions_tab(i).shipment_direction := 'D';
10014 x_delivery_actions_tab(i).action_not_allowed := p_action;
10015 END IF;
10016 IF p_action = 'GEN-LOAD-SEQ' THEN
10017 /*J add disallowed actions for shipment_direction jckwok */
10018 i := i + 1;
10019 x_delivery_actions_tab(i).shipment_direction := 'I';
10020 x_delivery_actions_tab(i).action_not_allowed := p_action;
10021 i := i + 1;
10022 x_delivery_actions_tab(i).shipment_direction := 'D';
10023 x_delivery_actions_tab(i).action_not_allowed := p_action;
10024 END IF;
10025 ELSIF p_action IN ( 'PICK-RELEASE','CONFIRM','PLAN', 'FIRM') THEN
10026
10027 --order of i := i + 1; changed to be before and not after addition of new record
10028 IF (NOT p_action IN ('PLAN', 'FIRM')) THEN
10029 i := i + 1;
10030 x_delivery_actions_tab(i).status_code := 'CL';
10031 x_delivery_actions_tab(i).action_not_allowed := p_action;
10032 i := i + 1;
10033 x_delivery_actions_tab(i).status_code := 'CO';
10034 x_delivery_actions_tab(i).action_not_allowed := p_action;
10035 i := i + 1;
10036 x_delivery_actions_tab(i).status_code := 'IT';
10037 x_delivery_actions_tab(i).action_not_allowed := p_action;
10038 END IF;
10039
10040 i := i + 1;
10041 x_delivery_actions_tab(i).status_code := 'SR';
10042 x_delivery_actions_tab(i).action_not_allowed := p_action;
10043 i := i + 1;
10044 x_delivery_actions_tab(i).status_code := 'SC';
10045 x_delivery_actions_tab(i).action_not_allowed := p_action;
10046 --order of i := i + 1; changed to be before and not after addition of new record
10047
10048 IF p_action IN ('PICK-RELEASE','CONFIRM') THEN
10049 /*J add disallowed actions for shipment_direction jckwok */
10050 i := i + 1;
10051 x_delivery_actions_tab(i).shipment_direction := 'I';
10052 x_delivery_actions_tab(i).action_not_allowed := p_action;
10053 i := i + 1;
10054 x_delivery_actions_tab(i).shipment_direction := 'D';
10055 x_delivery_actions_tab(i).action_not_allowed := p_action;
10056 END IF;
10057 ELSIF p_action IN ('GENERATE-BOL','PRINT-BOL') THEN
10058 --order of i := i + 1; changed to be before and not after addition of new record
10059 i := i + 1;
10060 x_delivery_actions_tab(i).status_code := 'SR';
10061 x_delivery_actions_tab(i).action_not_allowed := p_action;
10062 i := i + 1;
10063 x_delivery_actions_tab(i).status_code := 'SC';
10064 x_delivery_actions_tab(i).action_not_allowed := p_action;
10065 /*J add disallowed actions for shipment_direction jckwok */
10066 i := i + 1;
10067 x_delivery_actions_tab(i).shipment_direction := 'I';
10068 x_delivery_actions_tab(i).action_not_allowed := p_action;
10069 i := i + 1;
10070 x_delivery_actions_tab(i).shipment_direction := 'D';
10071 x_delivery_actions_tab(i).action_not_allowed := p_action;
10072 ELSIF p_action = 'ASSIGN' THEN
10073 i := i + 1;
10074 x_delivery_actions_tab(i).status_code := 'SR';
10075 x_delivery_actions_tab(i).action_not_allowed := p_action;
10076 i := i + 1;
10077 x_delivery_actions_tab(i).status_code := 'SC';
10078 x_delivery_actions_tab(i).action_not_allowed := p_action;
10079 i := i + 1;
10080 x_delivery_actions_tab(i).status_code := 'CO';
10081 x_delivery_actions_tab(i).action_not_allowed := p_action;
10082 i := i + 1;
10083 x_delivery_actions_tab(i).status_code := 'IT';
10084 x_delivery_actions_tab(i).action_not_allowed := p_action;
10085 i := i + 1;
10086 x_delivery_actions_tab(i).status_code := 'CL';
10087 x_delivery_actions_tab(i).action_not_allowed := p_action;
10088 i := i + 1;
10089 x_delivery_actions_tab(i).status_code := 'SA';
10090 x_delivery_actions_tab(i).action_not_allowed := p_action;
10091 ELSIF p_action IN( 'UNASSIGN', 'SPLIT-LINE', 'UNPACK', 'PACKING-WORKBENCH','CYCLE-COUNT') THEN
10092 /* These Actions are for delivery lines. They are added here because,
10093 Delivery Detail's Is_Action_Enabled API calls Delivery's Is_Action_Enabled
10094 to check the status of the delivery.
10095 These Actions are not allowed if the delivery has been sent in outbound or if the
10096 delivery is awaiting a response for shipment cancellation request.
10097 Other actions applicable to delivery lines , like AUTO-PACK, AUTO-PACK-MASTER,
10098 ASSIGN, PACK are covered under the previous ELSIFs */
10099 i := i + 1;
10100 x_delivery_actions_tab(i).status_code := 'SR';
10101 x_delivery_actions_tab(i).action_not_allowed := p_action;
10102 i := i + 1;
10103 x_delivery_actions_tab(i).status_code := 'SC';
10104 x_delivery_actions_tab(i).action_not_allowed := p_action;
10105 --order of i := i + 1; changed to be before and not after addition of new record
10106
10107 IF (p_action ='SPLIT-LINE') THEN
10108 i := i + 1;
10109 x_delivery_actions_tab(i).status_code := 'CO';
10110 x_delivery_actions_tab(i).action_not_allowed := p_action;
10111 END IF;
10112 ELSIF (p_action in ('GET-FREIGHT-COSTS', 'CANCEL-SHIP-METHOD') ) THEN
10113 IF WSH_UTIL_CORE.FTE_Is_Installed <> 'Y' THEN
10114 --order of i := i + 1; changed to be before and not after addition of new record
10115 i := i + 1;
10116 x_delivery_actions_tab(i).action_not_allowed := p_action;
10117 ELSE
10118 i := i + 1;
10119 x_delivery_actions_tab(i).status_code := 'IT';
10120 x_delivery_actions_tab(i).action_not_allowed := p_action;
10121 i := i + 1;
10122 x_delivery_actions_tab(i).status_code := 'CO';
10123 x_delivery_actions_tab(i).action_not_allowed := p_action;
10124 i := i + 1;
10125 x_delivery_actions_tab(i).status_code := 'CL';
10126 x_delivery_actions_tab(i).action_not_allowed := p_action;
10127 i := i+1;
10128 x_delivery_actions_tab(i).org_type := 'TPW';
10129 x_delivery_actions_tab(i).action_not_allowed := p_action;
10130 /*J add disallowed actions for shipment_direction jckwok */
10131 i := i + 1;
10132 x_delivery_actions_tab(i).shipment_direction := 'I';
10133 x_delivery_actions_tab(i).action_not_allowed := p_action;
10134 i := i + 1;
10135 x_delivery_actions_tab(i).shipment_direction := 'D';
10136 x_delivery_actions_tab(i).action_not_allowed := p_action;
10137 --order of i := i + 1; changed to be before and not after addition of new record
10138
10139 IF p_action = 'CANCEL-SHIP-METHOD' THEN
10140 i := i + 1;
10141 x_delivery_actions_tab(i).status_code := 'OP';
10142 x_delivery_actions_tab(i).planned_flag:= 'F';
10143 x_delivery_actions_tab(i).action_not_allowed := p_action;
10144 END IF;
10145
10146 END IF;
10147 -- Patchset J, add Print Pack Slip
10148 ELSIF (p_action in ('PRINT-DOC-SET', 'OUTBOUND-DOCUMENT', 'GENERATE-PACK-SLIP','PRINT-PACK-SLIP', 'ASSIGN-FREIGHT-COSTS') ) THEN
10149 /*J add disallowed actions for shipment_direction jckwok */
10150 i := i + 1;
10151 x_delivery_actions_tab(i).shipment_direction := 'I';
10152 x_delivery_actions_tab(i).action_not_allowed := p_action;
10153 i := i + 1;
10154 x_delivery_actions_tab(i).shipment_direction := 'D';
10155 x_delivery_actions_tab(i).action_not_allowed := p_action;
10156 --
10157 -- rlanka : Pack J
10158 -- Disallow trip consolidation for inbound deliveries
10159 --
10160 ELSIF p_action = 'TRIP-CONSOLIDATION' THEN
10161 --
10162 i := i + 1;
10163 x_delivery_actions_tab(i).shipment_direction := 'I';
10164 x_delivery_actions_tab(i).action_not_allowed := p_action;
10165 i := i + 1;
10166 x_delivery_actions_tab(i).shipment_direction := 'D';
10167 x_delivery_actions_tab(i).action_not_allowed := p_action;
10168 --
10169 --{ IB-Phase-2
10170 ELSIF p_action = 'CREATE-CONSOL-DEL' THEN
10171 --
10172 i := i + 1;
10173 x_delivery_actions_tab(i).shipment_direction := 'I';
10174 x_delivery_actions_tab(i).action_not_allowed := p_action;
10175 i := i + 1;
10176 x_delivery_actions_tab(i).shipment_direction := 'D';
10177 x_delivery_actions_tab(i).action_not_allowed := p_action;
10178 --
10179 --} IB-Phase-2
10180 END IF;
10181
10182 IF l_debug_on THEN
10183 WSH_DEBUG_SV.pop(l_module_name);
10184 END IF;
10185 EXCEPTION
10186 WHEN OTHERS THEN
10187 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
10188 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.get_disabled_list', l_module_name);
10189 IF l_debug_on THEN
10190 WSH_DEBUG_SV.log(l_module_name,'Error:',SUBSTR(SQLERRM,1,200));
10191 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10192 END IF;
10193
10194 END Init_Delivery_Actions_Tbl;
10195
10196
10197 PROCEDURE Derive_Delivery_Uom (
10198 p_delivery_id IN NUMBER,
10199 p_organization_id IN NUMBER,
10200 x_volume_uom_code IN OUT NOCOPY VARCHAR2,
10201 x_weight_uom_code IN OUT NOCOPY VARCHAR2,
10202 x_wt_nullify_flag OUT NOCOPY BOOLEAN, -- Default FALSE
10203 x_vol_nullify_flag OUT NOCOPY BOOLEAN, -- Default FALSE
10204 x_return_status OUT NOCOPY VARCHAR2)
10205 IS
10206 --
10207 l_debug_on BOOLEAN;
10208 --
10209 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DERIVE_DELIVERY_UOM';
10210 --
10211 cursor l_del_org_csr is
10212 select organization_id,
10213 weight_uom_code,
10214 volume_uom_code
10215 from wsh_new_deliveries
10216 where delivery_id = p_delivery_id;
10217 --
10218 CURSOR l_get_classes_csr(p_organization_id NUMBER) IS
10219 SELECT weight_uom_class, volume_uom_class
10220 FROM wsh_shipping_parameters
10221 WHERE organization_id = p_organization_id;
10222 --
10223 CURSOR l_check_uom_csr (p_class VARCHAR2, p_uom_code VARCHAR2) IS
10224 SELECT uom_code
10225 FROM mtl_units_of_measure
10226 WHERE uom_code = p_uom_code
10227 AND uom_class = p_class
10228 AND nvl(disable_date, sysdate) >= sysdate;
10229
10230 cursor l_get_base_uom_csr(p_class VARCHAR2) IS
10231 select uom_code
10232 from mtl_units_of_measure
10233 where uom_class = p_class
10234 and base_uom_flag = 'Y'
10235 AND nvl(disable_date, sysdate) >= sysdate;
10236
10237 l_organization_id NUMBER;
10238 l_wt_uom_code VARCHAR2(3);
10239 l_vol_uom_code VARCHAR2(3);
10240 l_wt_uom_class VARCHAR2(10);
10241 l_vol_uom_class VARCHAR2(10);
10242 --
10243 BEGIN
10244 --
10245 --
10246 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10247 --
10248 IF l_debug_on IS NULL
10249 THEN
10250 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10251 END IF;
10252 --
10253 IF l_debug_on THEN
10254 WSH_DEBUG_SV.push(l_module_name);
10255 --
10256 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id',p_delivery_id);
10257 WSH_DEBUG_SV.log(l_module_name,'p_organization_id',p_organization_id);
10258 END IF;
10259 --
10260 x_wt_nullify_flag := FALSE;
10261 x_vol_nullify_flag := FALSE;
10262 open l_del_org_csr;
10263 Fetch l_del_org_csr into l_organization_id, l_wt_uom_code, l_vol_uom_code;
10264 IF l_del_org_csr%NOTFOUND THEN
10265 FND_MESSAGE.SET_NAME('WSH', 'WSH_INVALID_DELIVERY_ID');
10266 x_return_status := wsh_util_core.g_ret_sts_error;
10267 wsh_util_core.add_message(x_return_status,l_module_name);
10268 close l_del_org_csr;
10269 RAISE FND_API.G_EXC_ERROR;
10270 END IF;
10271 close l_del_org_csr;
10272 --
10273 IF l_organization_id <> p_organization_id THEN
10274 --
10275 open l_get_classes_csr(p_organization_id);
10276 fetch l_get_classes_csr into l_wt_uom_class, l_vol_uom_class;
10277 close l_get_classes_csr;
10278 IF l_debug_on THEN
10279 WSH_DEBUG_SV.log(l_module_name,'l_wt_uom_class',l_wt_uom_class);
10280 WSH_DEBUG_SV.log(l_module_name,'l_vol_uom_class',l_vol_uom_class);
10281 END IF;
10282 --
10283 open l_check_uom_csr(l_wt_uom_class, l_wt_uom_code);
10284 fetch l_check_uom_csr into l_wt_uom_code;
10285 close l_check_uom_csr;
10286 --
10287 open l_check_uom_csr(l_vol_uom_class, l_vol_uom_code);
10288 fetch l_check_uom_csr into l_vol_uom_code;
10289 close l_check_uom_csr;
10290 --
10291 IF nvl(l_wt_uom_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
10292 x_weight_uom_code := l_wt_uom_code;
10293 ELSE
10294 --
10295 open l_get_base_uom_csr(l_wt_uom_class);
10296 fetch l_get_base_uom_csr into x_weight_uom_code;
10297 close l_get_base_uom_csr;
10298 --
10299 x_wt_nullify_flag := TRUE;
10300 --
10301 END IF;
10302 --
10303 IF nvl(l_wt_uom_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
10304 x_volume_uom_code := l_vol_uom_code;
10305 ELSE
10306 --
10307 open l_get_base_uom_csr(l_vol_uom_class);
10308 fetch l_get_base_uom_csr into x_volume_uom_code;
10309 close l_get_base_uom_csr;
10310 --
10311 x_vol_nullify_flag := TRUE;
10312 --
10313 END IF;
10314 --
10315 END IF;
10316 --
10317 IF l_debug_on THEN
10318 WSH_DEBUG_SV.log(l_module_name,'x_weight_uom_code',x_weight_uom_code);
10319 WSH_DEBUG_SV.log(l_module_name,'x_volume_uom_code',x_volume_uom_code);
10320 END IF;
10321 x_return_status := wsh_util_core.g_ret_sts_success;
10322 --
10323 IF l_debug_on THEN
10324 WSH_DEBUG_SV.pop(l_module_name);
10325 END IF;
10326 --
10327 EXCEPTION
10328 WHEN FND_API.G_EXC_ERROR THEN
10329 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10330 --
10331 IF l_debug_on THEN
10332 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10333 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
10334 END IF;
10335 --
10336 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10337 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10338 --
10339 IF l_debug_on THEN
10340 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10341 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
10342 END IF;
10343 --
10344 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
10345 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
10346 --
10347 IF l_debug_on THEN
10348 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10349 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
10350 END IF;
10351 --
10352 WHEN OTHERS THEN
10353 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10354 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.DERIVE_DELIVERY_UOM');
10355 --
10356 IF l_debug_on THEN
10357 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10358 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10359 END IF;
10360 --
10361 END Derive_Delivery_Uom;
10362
10363 PROCEDURE Validate_Routed_Export_Txn(
10364 x_rtd_expt_txn_code IN OUT NOCOPY VARCHAR2,
10365 p_rtd_expt_txn_meaning IN VARCHAR2,
10366 x_return_status OUT NOCOPY VARCHAR2)
10367 IS
10368 --
10369 l_debug_on BOOLEAN;
10370 --
10371 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'VALIDATE_ROUTED_EXPORT_TXN';
10372 --
10373 l_num_errors NUMBER := 0;
10374 l_num_warnings NUMBER := 0;
10375 --
10376 BEGIN
10377 --
10378 --
10379 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10380 --
10381 IF l_debug_on IS NULL
10382 THEN
10383 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10384 END IF;
10385 --
10386 IF l_debug_on THEN
10387 WSH_DEBUG_SV.push(l_module_name);
10388 --
10389 WSH_DEBUG_SV.log(l_module_name,'x_rtd_expt_txn_code',x_rtd_expt_txn_code);
10390 WSH_DEBUG_SV.log(l_module_name,'p_rtd_expt_txn_meaning',p_rtd_expt_txn_meaning);
10391 END IF;
10392 --
10393 SAVEPOINT VALIDATE_ROUTED_EXPORT_TXN;
10394 --
10395 IF nvl(x_rtd_expt_txn_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR
10396 OR nvl(p_rtd_expt_txn_meaning,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR
10397 THEN
10398 IF x_rtd_expt_txn_code = FND_API.G_MISS_CHAR THEN
10399 x_rtd_expt_txn_code := NULL;
10400 END IF;
10401 WSH_UTIL_VALIDATE.validate_lookup(
10402 p_lookup_type => 'YES_NO',
10403 p_lookup_code => x_rtd_expt_txn_code,
10404 p_meaning => p_rtd_expt_txn_meaning,
10405 x_return_status => x_return_status);
10406 --
10407 IF l_debug_on THEN
10408 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_lookup',x_return_status);
10409 END IF;
10410 --
10411 wsh_util_core.api_post_call(
10412 p_return_status => x_return_status,
10413 x_num_warnings => l_num_warnings,
10414 x_num_errors => l_num_errors);
10415 --
10416 END IF;
10417 --
10418 x_return_status := wsh_util_core.g_ret_sts_success;
10419 --
10420 IF l_debug_on THEN
10421 WSH_DEBUG_SV.pop(l_module_name);
10422 END IF;
10423 --
10424 EXCEPTION
10425 WHEN FND_API.G_EXC_ERROR THEN
10426 ROLLBACK TO VALIDATE_ROUTED_EXPORT_TXN;
10427 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10428 --
10429 IF l_debug_on THEN
10430 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10431 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
10432 END IF;
10433 --
10434 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10435 ROLLBACK TO VALIDATE_ROUTED_EXPORT_TXN;
10436 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10437 --
10438 IF l_debug_on THEN
10439 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10440 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
10441 END IF;
10442 --
10443 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
10444 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
10445 --
10446 IF l_debug_on THEN
10447 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10448 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
10449 END IF;
10450 --
10451 WHEN OTHERS THEN
10452 ROLLBACK TO VALIDATE_ROUTED_EXPORT_TXN;
10453 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10454 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.VALIDATE_ROUTED_EXPORT_TXN');
10455 --
10456 IF l_debug_on THEN
10457 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10458 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10459 END IF;
10460 --
10461 END Validate_Routed_Export_Txn;
10462
10463
10464 PROCEDURE Derive_Number_Of_LPN(
10465 p_delivery_id IN NUMBER,
10466 x_number_of_lpn IN OUT NOCOPY NUMBER,
10467 x_return_status OUT NOCOPY VARCHAR2)
10468 IS
10469 --
10470 l_debug_on BOOLEAN;
10471 --
10472 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DERIVE_NUMBER_OF_LPN';
10473 --
10474 cursor lpn_cur is
10475 select count (distinct wda.delivery_detail_id)
10476 from wsh_delivery_assignments_v wda
10477 where wda.parent_delivery_detail_id is null
10478 and wda.delivery_id is NOT NULL
10479 and level > 1
10480 connect by prior wda.parent_delivery_detail_id = wda.delivery_detail_id
10481 start with wda.delivery_id =p_delivery_id;
10482 --
10483 BEGIN
10484 --
10485 --
10486 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10487 --
10488 IF l_debug_on IS NULL
10489 THEN
10490 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10491 END IF;
10492 --
10493 IF l_debug_on THEN
10494 --
10495 WSH_DEBUG_SV.push(l_module_name);
10496 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id',p_delivery_id);
10497 WSH_DEBUG_SV.log(l_module_name,'x_number_of_lpn',x_number_of_lpn);
10498 --
10499 END IF;
10500 --
10501 SAVEPOINT DERIVE_NUMBER_OF_LPN;
10502 --
10503 IF nvl(x_number_of_lpn,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN
10504 --
10505 open lpn_cur;
10506 fetch lpn_cur into x_number_of_lpn;
10507 close lpn_cur;
10508 --
10509 IF x_number_of_lpn = 0 THEN
10510 x_number_of_lpn := NULL;
10511 END IF;
10512 --
10513 END IF;
10514
10515 x_return_status := wsh_util_core.g_ret_sts_success;
10516 --
10517 IF l_debug_on THEN
10518 WSH_DEBUG_SV.pop(l_module_name);
10519 END IF;
10520 --
10521 EXCEPTION
10522 WHEN FND_API.G_EXC_ERROR THEN
10523 ROLLBACK TO DERIVE_NUMBER_OF_LPN;
10524 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10525 --
10526 IF l_debug_on THEN
10527 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10528 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
10529 END IF;
10530 --
10531 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10532 ROLLBACK TO DERIVE_NUMBER_OF_LPN;
10533 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10534 --
10535 IF l_debug_on THEN
10536 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10537 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
10538 END IF;
10539 --
10540 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
10541 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
10542 --
10543 IF l_debug_on THEN
10544 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10545 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
10546 END IF;
10547 --
10548 WHEN OTHERS THEN
10549 ROLLBACK TO DERIVE_NUMBER_OF_LPN;
10550 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10551 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.DERIVE_NUMBER_OF_LPN');
10552 --
10553 IF l_debug_on THEN
10554 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10555 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10556 END IF;
10557 --
10558 END Derive_Number_Of_LPN;
10559 --Harmonization Project I
10560
10561 -- This is new procedure to check for duplicate pickup locations or
10562 -- dropoff locations when a trip is being assigned to a delivery.
10563 PROCEDURE Chk_Dup_Pickup_Dropoff_Locns(
10564 p_delivery_id IN NUMBER,
10565 p_pickup_location_id IN NUMBER,
10566 p_dropoff_location_id IN NUMBER,
10567 x_return_status OUT NOCOPY VARCHAR2)
10568 IS
10569 --
10570 l_debug_on BOOLEAN;
10571 --
10572 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHK_DUP_PICKUP_DROPOFF_LOCNS';
10573 --
10574 -- The below cursor tells whether the input pickup location is
10575 -- already assigned to one of the legs of the delivery.
10576 -- If it is already assigned, then we do not allow the assignment
10577 -- of Trip to this Delivery.
10578 cursor l_pick_up_leg_csr( p_del_id IN VARCHAR2,
10579 p_pickup_locn_id IN NUMBER) is
10580 select wt.name, wnd.name
10581 from wsh_new_deliveries wnd,
10582 wsh_delivery_legs wdl,
10583 wsh_trip_stops wts,
10584 wsh_trips wt
10585 where wnd.delivery_id = p_del_id
10586 and wnd.delivery_id = wdl.delivery_id
10587 and wdl.pick_up_stop_id = wts.stop_id
10588 and wts.stop_location_id = p_pickup_locn_id
10589 and wts.trip_id = wt.trip_id;
10590 --
10591 -- The below cursor tells whether the input dropoff location is
10592 -- already assigned to one of the legs of the delivery.
10593 -- If it is already assigned, then we do not allow the assignment
10594 -- of Trip to this Delivery.
10595 cursor l_drop_off_leg_csr( p_del_id IN VARCHAR2,
10596 p_dropoff_locn_id IN NUMBER) is
10597 select wt.name, wnd.name
10598 from wsh_new_deliveries wnd,
10599 wsh_delivery_legs wdl,
10600 wsh_trip_stops wts,
10601 wsh_trips wt
10602 where wnd.delivery_id = p_del_id
10603 and wnd.delivery_id = wdl.delivery_id
10604 and wdl.drop_off_stop_id = wts.stop_id
10605 and wts.stop_location_id = p_dropoff_locn_id
10606 and wts.trip_id = wt.trip_id;
10607 --
10608 l_pick_up_leg_count NUMBER := 0;
10609 l_drop_off_leg_count NUMBER := 0;
10610 --
10611 l_trip_name VARCHAR2(32767);
10612 l_del_name VARCHAR2(32767);
10613 --
10614 l_loc_description VARCHAR2(32767);
10615 BEGIN
10616 --
10617 --
10618 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10619 --
10620 IF l_debug_on IS NULL
10621 THEN
10622 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10623 END IF;
10624 --
10625 IF l_debug_on THEN
10626 --
10627 WSH_DEBUG_SV.push(l_module_name);
10628 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id',p_delivery_id);
10629 WSH_DEBUG_SV.log(l_module_name,'p_pickup_location_id',p_pickup_location_id);
10630 WSH_DEBUG_SV.log(l_module_name,'p_dropoff_location_id',p_dropoff_location_id);
10631 --
10632 END IF;
10633 IF nvl(p_delivery_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
10634 --
10635 open l_pick_up_leg_csr(p_delivery_id, p_pickup_location_id);
10636 fetch l_pick_up_leg_csr into l_trip_name, l_del_name;
10637 close l_pick_up_leg_csr;
10638 --
10639 IF l_trip_name IS NOT NULL THEN
10640 IF l_debug_on THEN
10641 WSH_DEBUG_SV.logmsg(l_module_name,'The Pickup Location is not a valid location for this Delivery');
10642 END IF;
10643 l_loc_description := wsh_util_core.get_location_description
10644 (p_location_id => p_pickup_location_id,
10645 p_format => 'NEW UI CODE');
10646 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_DUP_PICKUP_LOCATION');
10647 FND_MESSAGE.SET_TOKEN('DEL_NAME',l_del_name);
10648 FND_MESSAGE.SET_TOKEN('TRIP_NAME',l_trip_name);
10649 FND_MESSAGE.SET_TOKEN('PICKUP_LOC',l_loc_description);
10650 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10651 wsh_util_core.add_message(x_return_status);
10652 RAISE FND_API.G_EXC_ERROR;
10653 END IF;
10654 --
10655 l_trip_name := NULL;
10656 open l_drop_off_leg_csr(p_delivery_id, p_dropoff_location_id);
10657 fetch l_drop_off_leg_csr into l_trip_name, l_del_name;
10658 close l_drop_off_leg_csr;
10659 --
10660 IF l_trip_name IS NOT NULL THEN
10661 IF l_debug_on THEN
10662 WSH_DEBUG_SV.logmsg(l_module_name,'The Dropoff Location is not a valid location for this Delivery');
10663 END IF;
10664 l_loc_description := wsh_util_core.get_location_description
10665 (p_location_id => p_dropoff_location_id,
10666 p_format => 'NEW UI CODE');
10667 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_DUP_DROPOFF_LOCATION');
10668 FND_MESSAGE.SET_TOKEN('DEL_NAME',l_del_name);
10669 FND_MESSAGE.SET_TOKEN('TRIP_NAME',l_trip_name);
10670 FND_MESSAGE.SET_TOKEN('DROPOFF_LOC',l_loc_description);
10671 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10672 wsh_util_core.add_message(x_return_status);
10673 RAISE FND_API.G_EXC_ERROR;
10674 END IF;
10675 --
10676 END IF;
10677
10678 x_return_status := wsh_util_core.g_ret_sts_success;
10679 --
10680 IF l_debug_on THEN
10681 WSH_DEBUG_SV.logmsg(l_module_name,'These Pickup and Drop off Locations are valid for this Delivery');
10682 WSH_DEBUG_SV.pop(l_module_name);
10683 END IF;
10684 --
10685 EXCEPTION
10686 WHEN FND_API.G_EXC_ERROR THEN
10687 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10688 --
10689 IF l_debug_on THEN
10690 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10691 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
10692 END IF;
10693 --
10694 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10695 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10696 --
10697 IF l_debug_on THEN
10698 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10699 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
10700 END IF;
10701 --
10702 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
10703 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
10704 --
10705 IF l_debug_on THEN
10706 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
10707 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
10708 END IF;
10709 --
10710 WHEN OTHERS THEN
10711 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
10712 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.CHK_DUP_PICKUP_DROPOFF_LOCNS');
10713 --
10714 IF l_debug_on THEN
10715 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10716 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10717 END IF;
10718 --
10719 END Chk_Dup_Pickup_Dropoff_Locns;
10720
10721 -- PROCEDURE: Check_ITM_Required (Pack J: ITM integration)
10722 -- DESCRIPTION: This procedure takes in a delivery_id, builds a query and
10723 -- calls the customizable API which appends additional criteria
10724 -- to the above query according to custom specification. Then it
10725 -- executes the query to check if the delivery requires to be
10726 -- marked for ITM screening. If it needs to be marked, return 'Y'.
10727 -- PARAMETERS: p_delivery_id - delivery that needs to be checked for ITM.
10728 --
10729
10730 FUNCTION Check_ITM_Required(p_delivery_id IN NUMBER,
10731 x_return_status OUT NOCOPY VARCHAR2) RETURN VARCHAR2 IS
10732
10733 l_strQuery VARCHAR2(12000);
10734 l_tempStr VARCHAR2(12000);
10735 l_del_Table WSH_ITM_QUERY_CUSTOM.g_CondnValTableType;
10736 l_Item_Condn1Tab WSH_ITM_QUERY_CUSTOM.g_ValueTableType;
10737
10738 l_CursorID NUMBER;
10739 l_ignore NUMBER;
10740 v_delivery_id NUMBER := 0;
10741 l_rows_fetched NUMBER := 0;
10742 l_exception_name varchar2(30);
10743 l_msg varchar2(2000);
10744 l_exception_msg_count NUMBER;
10745 l_exception_msg_data varchar2(2000);
10746 l_dummy_exception_id NUMBER;
10747
10748 --
10749 l_debug_on BOOLEAN;
10750 --
10751 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Check_ITM_Required';
10752 --
10753
10754
10755 BEGIN
10756 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
10757 --
10758 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10759 --
10760 IF l_debug_on IS NULL
10761 THEN
10762 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10763 END IF;
10764 --
10765 IF l_debug_on THEN
10766 --
10767 WSH_DEBUG_SV.push(l_module_name);
10768 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id',p_delivery_id);
10769 --
10770 END IF;
10771
10772
10773 -- Build query for this delivery
10774
10775 --Bug 6676749 Modified the query to Mark the delivery for Export Compliance for Both Outbound transaction('O') and Internal Order ('IO')
10776
10777 l_strQuery := 'select wnd.delivery_id from wsh_new_deliveries wnd ' ||
10778 -- ' where wnd.shipment_direction = ''O'' ';
10779 ' where wnd.shipment_direction IN (''O'', ''IO'') ';
10780 l_Item_Condn1Tab(1).g_number_val := p_delivery_id;
10781 l_Item_Condn1Tab(1).g_Bind_Literal := ':b_delivery_id';
10782
10783 IF l_debug_on THEN
10784 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_ITM_QUERY_CUSTOM.ADD_CONDITION',WSH_DEBUG_SV.C_PROC_LEVEL);
10785 END IF;
10786 WSH_ITM_QUERY_CUSTOM.ADD_CONDITION(l_del_Table, ' AND WND.delivery_id = :b_delivery_id', l_Item_Condn1Tab, 'NUMBER');
10787
10788
10789
10790 --Call the customized API
10791
10792 IF l_debug_on THEN
10793 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_ITM_CUSTOMIZE.ALTER_DELIVERY_MARK',WSH_DEBUG_SV.C_PROC_LEVEL);
10794 END IF;
10795 WSH_ITM_CUSTOMIZE.ALTER_DELIVERY_MARK(l_del_Table, x_return_status);
10796
10797 IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
10798 IF l_debug_on THEN
10799 WSH_DEBUG_SV.pop(l_module_name);
10800 END IF;
10801 RETURN 'N';
10802 END IF;
10803
10804 FOR i IN 1..l_del_Table.COUNT
10805 LOOP
10806 l_tempStr := l_tempStr || ' ' || l_del_table(i).g_Condn_Qry;
10807 END LOOP;
10808
10809 --Concatenating Main SQL with Condition SQL
10810
10811 l_strQuery := l_strQuery || l_tempStr;
10812
10813 -- Parse cursor
10814
10815 l_CursorID := DBMS_SQL.Open_Cursor;
10816 DBMS_SQL.PARSE(l_CursorID, l_strQuery, DBMS_SQL.v7);
10817 DBMS_SQL.DEFINE_COLUMN(l_CursorID, 1, v_delivery_id);
10818
10819 IF l_debug_on THEN
10820 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_ITM_QUERY_CUSTOM.BIND_VALUES',WSH_DEBUG_SV.C_PROC_LEVEL);
10821 END IF;
10822 WSH_ITM_QUERY_CUSTOM.BIND_VALUES(l_del_Table, l_CursorID);
10823
10824 l_ignore := DBMS_SQL.EXECUTE(l_CursorID);
10825
10826 l_rows_fetched := dbms_sql.fetch_rows(l_CursorID);
10827 DBMS_SQL.CLOSE_CURSOR(l_CursorID);
10828
10829 IF (l_rows_fetched = 0) THEN
10830
10831 IF l_debug_on THEN
10832 WSH_DEBUG_SV.log(l_module_name,'Return','N');
10833 WSH_DEBUG_SV.pop(l_module_name);
10834 END IF;
10835
10836 RETURN 'N';
10837
10838 END IF;
10839
10840 IF l_debug_on THEN
10841 WSH_DEBUG_SV.log(l_module_name,'Return','Y');
10842 WSH_DEBUG_SV.pop(l_module_name);
10843 END IF;
10844
10845 RETURN 'Y';
10846
10847 EXCEPTION
10848
10849 WHEN OTHERS THEN
10850 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
10851 WSH_UTIL_CORE.add_message (x_return_status);
10852 WSH_UTIL_CORE.default_handler('WSH_DELIVERY_VALIDATIONS.Check_ITM_REQD');
10853 --
10854 IF l_debug_on THEN
10855 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10856 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10857 END IF;
10858 END Check_ITM_REQUIRED;
10859
10860
10861
10862
10863
10864
10865 -- PROCEDURE: Log_ITM_Exception (Pack J: ITM integration)
10866 -- DESCRIPTION: If the delivery need to be marked for ITM screening, log an
10867 -- exception against the delivery.
10868 -- PARAMETERS: p_delivery_id - delivery that needs to be checked for ITM.
10869 -- p_location_id - ship from location of delivery, required when
10870 -- loggin exceptions.
10871 -- p_action_type - Whether the check is made at 'SHIP_CONFIRM'
10872 -- time or at 'CREATION' of delivery.
10873
10874 PROCEDURE Log_ITM_Exception(p_delivery_id in NUMBER,
10875 p_ship_from_location_id in NUMBER,
10876 p_action_type in VARCHAR2,
10877 x_return_status out nocopy VARCHAR2) IS
10878
10879 l_exception_name varchar2(30);
10880 l_msg varchar2(2000);
10881 l_exception_msg_count NUMBER;
10882 l_exception_msg_data varchar2(2000);
10883 l_dummy_exception_id NUMBER := NULL;
10884
10885 --
10886 l_debug_on BOOLEAN;
10887 --
10888 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Log_ITM_Exception';
10889
10890 BEGIN
10891
10892 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
10893 --
10894 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10895 --
10896 IF l_debug_on IS NULL
10897 THEN
10898 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10899 END IF;
10900 --
10901 IF l_debug_on THEN
10902 --
10903 WSH_DEBUG_SV.push(l_module_name);
10904 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id',p_delivery_id);
10905 WSH_DEBUG_SV.log(l_module_name,'p_ship_from_location_id',p_ship_from_location_id);
10906 WSH_DEBUG_SV.log(l_module_name,'p_action_type',p_action_type);
10907 --
10908 END IF;
10909
10910 IF p_action_type = 'SHIP_CONFIRM' THEN
10911 l_exception_name := 'WSH_SC_REQ_EXPORT_COMPL';
10912 l_msg := FND_MESSAGE.Get_String('WSH', 'WSH_SC_ITM_REQD');
10913 ELSE
10914 l_exception_name := 'WSH_PR_REQ_EXPORT_COMPL';
10915 l_msg := FND_MESSAGE.Get_String('WSH', 'WSH_PR_ITM_REQD');
10916 END IF;
10917
10918 IF l_debug_on THEN
10919 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit wsh_xc_util.log_exception',WSH_DEBUG_SV.C_PROC_LEVEL);
10920 END IF;
10921 wsh_xc_util.log_exception(
10922 p_api_version => 1.0,
10923 x_return_status => x_return_status,
10924 x_msg_count => l_exception_msg_count,
10925 x_msg_data => l_exception_msg_data,
10926 x_exception_id => l_dummy_exception_id ,
10927 p_logged_at_location_id => p_ship_from_location_id,
10928 p_exception_location_id => p_ship_from_location_id,
10929 p_logging_entity => 'SHIPPER',
10930 p_logging_entity_id => FND_GLOBAL.USER_ID,
10931 p_exception_name => l_exception_name,
10932 p_message => l_msg,
10933 p_delivery_id => p_delivery_id
10934 );
10935
10936 IF l_debug_on THEN
10937 WSH_DEBUG_SV.pop(l_module_name);
10938 END IF;
10939
10940 EXCEPTION
10941
10942 WHEN OTHERS THEN
10943 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
10944 WSH_UTIL_CORE.add_message (x_return_status);
10945 WSH_UTIL_CORE.default_handler('WSH_DELIVERY_VALIDATIONS.Log_ITM_Exception');
10946 --
10947 IF l_debug_on THEN
10948 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
10949 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
10950 END IF;
10951 END Log_ITM_Exception;
10952
10953
10954 PROCEDURE check_exception(
10955 p_deliveries_tab IN wsh_util_core.id_tab_type
10956 , x_exceptions_exist OUT NOCOPY VARCHAR2
10957 , x_exceptions_tab OUT NOCOPY wsh_delivery_validations.exception_rec_Tab_type
10958 , x_return_status OUT NOCOPY VARCHAR2)
10959 IS
10960 --
10961 l_debug_on BOOLEAN;
10962 --
10963 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'check_exception';
10964
10965 CURSOR c_check_exception (p_delivery_id in number) IS
10966 SELECT severity, delivery_id, exception_id
10967 FROM wsh_exceptions
10968 WHERE delivery_id = p_delivery_id
10969 AND status not in ('NOT_HANDLED' , 'NO_ACTION_REQUIRED' , 'CLOSED')
10970 ORDER BY decode (severity, 'HIGH', 1,
10971 'MEDIUM', 2,
10972 3);
10973 l_exception_rec c_check_exception%rowtype;
10974 l_count NUMBER := 0;
10975
10976 BEGIN
10977 --
10978 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
10979 --
10980 IF l_debug_on IS NULL
10981 THEN
10982 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
10983 END IF;
10984 --
10985 IF l_debug_on THEN
10986 --
10987 WSH_DEBUG_SV.push(l_module_name);
10988 --
10989 END IF;
10990
10991 x_exceptions_exist := 'N';
10992 x_return_Status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
10993
10994 For i in 1 .. p_deliveries_tab.count LOOP
10995
10996 Open c_check_exception(p_deliveries_Tab(i));
10997 FETCH c_check_exception into l_exception_rec;
10998 IF c_check_exception%FOUND THEN
10999
11000 l_count := l_count + 1;
11001 x_exceptions_tab(l_count).delivery_id := l_exception_rec.delivery_id;
11002 x_exceptions_tab(l_count).severity := l_exception_rec.severity;
11003 x_exceptions_tab(l_count).exception_id := l_exception_rec.exception_id;
11004 x_exceptions_exist := 'Y';
11005
11006 END IF;
11007 CLOSE c_check_exception;
11008
11009 END LOOP;
11010
11011 IF l_debug_on THEN
11012 WSH_DEBUG_SV.pop(l_module_name);
11013 END IF;
11014
11015 EXCEPTION
11016 WHEN others THEN
11017 IF c_check_exception%isopen then
11018 Close c_check_exception;
11019 END IF;
11020 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
11021 WSH_UTIL_CORE.default_handler('WSH_DELIVERY_VALIDATIONS.check_exception','WSH_DELIVERY_VALIDATIONS');
11022 IF l_debug_on THEN
11023 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
11024 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
11025 END IF;
11026 --
11027 END check_exception;
11028
11029 -- J-IB-NPARIKH-{
11030 --
11031 --
11032 -- ----------------------------------------------------------------------
11033 -- Function : has_lines
11034 -- Parameters: p_delivery_id in number
11035 -- returns varchar2
11036 -- 'Y' -- Has non-container lines
11037 -- 'N' -- Does not have any non-container lines
11038 -- Description: Checks if delivery has any non-container lines
11039 -- ----------------------------------------------------------------------
11040 FUNCTION has_lines
11041 (
11042 p_delivery_id IN NUMBER
11043 )
11044 RETURN VARCHAR2
11045 IS
11046 --{
11047 -- Check if delivery has any lines with container flag = 'N'
11048 --
11049 CURSOR line_csr (p_delivery_id IN NUMBER)
11050 IS
11051 SELECT 'Y'
11052 FROM wsh_delivery_details wdd,
11053 wsh_delivery_assignments_v wda
11054 WHERE wdd.delivery_detail_id = wda.delivery_detail_id
11055 AND wda.delivery_id = p_delivery_id
11056 AND NVL(wdd.container_flag,'N') = 'N'
11057 AND rownum = 1;
11058 --
11059 --
11060 l_debug_on BOOLEAN;
11061 --
11062 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || g_pkg_name || '.' || 'has_lines';
11063 --
11064 l_has_lines VARCHAR2(1);
11065 --}
11066 BEGIN
11067 --{
11068 --
11069 l_debug_on := wsh_debug_interface.g_debug;
11070 --
11071 IF l_debug_on IS NULL THEN
11072 l_debug_on := wsh_debug_sv.is_debug_enabled;
11073 END IF;
11074 --
11075 IF l_debug_on THEN
11076 wsh_debug_sv.push(l_module_name);
11077 --
11078 wsh_debug_sv.LOG(l_module_name, 'P_DELIVERY_ID', p_delivery_id);
11079 END IF;
11080 --
11081 --
11082 l_has_lines := 'N';
11083 --
11084 OPEN line_csr (p_delivery_id);
11085 FETCH line_csr INTO l_has_lines;
11086 CLOSE line_csr;
11087 --
11088 --
11089 IF l_debug_on THEN
11090 wsh_debug_sv.pop(l_module_name);
11091 END IF;
11092 --
11093 RETURN(l_has_lines);
11094 --}
11095 EXCEPTION
11096 WHEN OTHERS THEN
11097 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.has_lines',l_module_name);
11098 --
11099 IF l_debug_on THEN
11100 wsh_debug_sv.pop(l_module_name, 'EXCEPTION:OTHERS');
11101 END IF;
11102 --
11103 RAISE;
11104 --
11105 END has_lines;
11106 --
11107 --
11108 --
11109 --========================================================================
11110 -- PROCEDURE : check_inTransit
11111 --
11112 -- PARAMETERS: p_in_rec Delivery information record
11113 -- x_allowed Set to In-transit operation is allowed or not
11114 -- 'Y' : Allowed
11115 -- 'YW': Allowed with warnings
11116 -- 'N' : Not Allowed
11117 -- 'NW': Not Allowed with warnings
11118 -- x_return_status Return status of the API
11119 --
11120 --
11121 -- COMMENT : Check if delivery can be set to in-transit.
11122 --
11123 -- It performs the following steps:
11124 -- 01. Check that delivery status is CO/IT
11125 -- 02. Check for delivery exceptions (Pack J)
11126 --
11127 --========================================================================
11128 --
11129 PROCEDURE check_inTransit
11130 (
11131 p_in_rec IN ChgStatus_in_rec_type,
11132 x_return_status OUT NOCOPY VARCHAR2,
11133 x_allowed OUT NOCOPY VARCHAR2
11134 )
11135 IS
11136 --{
11137 l_num_warnings NUMBER;
11138 l_num_errors NUMBER;
11139
11140 -- Exception variables
11141 l_exceptions_tab wsh_xc_util.XC_TAB_TYPE;
11142 l_exp_logged BOOLEAN := FALSE;
11143 l_msg_count NUMBER;
11144 l_msg_data VARCHAR2(4000);
11145 l_return_status VARCHAR2(1);
11146 l_exp_warning BOOLEAN := FALSE;
11147
11148 --
11149 l_debug_on BOOLEAN;
11150 --
11151 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || g_pkg_name || '.' || 'check_inTransit';
11152 --}
11153 BEGIN
11154 --{
11155 --
11156 l_debug_on := wsh_debug_interface.g_debug;
11157 --
11158 IF l_debug_on IS NULL THEN
11159 l_debug_on := wsh_debug_sv.is_debug_enabled;
11160 END IF;
11161 --
11162 IF l_debug_on THEN
11163 wsh_debug_sv.push(l_module_name);
11164 --
11165 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.DELIVERY_ID ', p_in_rec.delivery_id );
11166 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.name ', p_in_rec.name );
11167 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.status_code ', p_in_rec.status_code );
11168 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.put_messages', p_in_rec.put_messages);
11169 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.manual_flag ', p_in_rec.manual_flag );
11170 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.caller ', p_in_rec.caller );
11171 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.actual_date ', p_in_rec.actual_date );
11172 wsh_debug_sv.LOG(l_module_name, 'p_in_rec.stop_id ', p_in_rec.stop_id );
11173 END IF;
11174 --
11175 --
11176 l_num_warnings := 0;
11177 l_num_errors := 0;
11178 --
11179 IF NVL(p_in_rec.status_code,'!!') NOT IN ('CO','IT')
11180 THEN
11181 --{
11182 IF p_in_rec.put_messages
11183 THEN
11184 --{
11185 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_INTRANSIT_ERROR');
11186 FND_MESSAGE.SET_TOKEN('DEL_NAME',p_in_rec.name);
11187 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR,l_module_name);
11188 --}
11189 END IF;
11190 --
11191 RAISE wsh_util_core.e_not_allowed;
11192 --}
11193 END IF;
11194 --
11195 --
11196
11197 -- Check for Exceptions against Delivery and its Contents
11198 IF l_debug_on THEN
11199 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_XC_UTIL.Check_Exceptions',WSH_DEBUG_SV.C_PROC_LEVEL); END IF;
11200 l_exceptions_tab.delete;
11201 l_exp_logged := FALSE;
11202 l_exp_warning := FALSE;
11203 WSH_XC_UTIL.Check_Exceptions (
11204 p_api_version => 1.0,
11205 x_return_status => l_return_status,
11206 x_msg_count => l_msg_count,
11207 x_msg_data => l_msg_data,
11208 p_logging_entity_id => p_in_rec.delivery_id,
11209 p_logging_entity_name => 'DELIVERY',
11210 p_consider_content => 'Y',
11211 x_exceptions_tab => l_exceptions_tab
11212 );
11213 IF ( l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS ) THEN
11214 x_return_status := l_return_status;
11215 wsh_util_core.add_message(x_return_status);
11216 RAISE FND_API.G_EXC_ERROR;
11217 END IF;
11218 FOR exp_cnt in 1..l_exceptions_tab.COUNT LOOP
11219 IF l_exceptions_tab(exp_cnt).exception_behavior = 'ERROR' THEN
11220 IF l_exceptions_tab(exp_cnt).entity_name = 'DELIVERY' THEN
11221 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_ENTITY');
11222 ELSE
11223 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_CONTENTS');
11224 END IF;
11225 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','Delivery');
11226 FND_MESSAGE.SET_TOKEN('ENTITY_ID',l_exceptions_tab(exp_cnt).entity_id);
11227 FND_MESSAGE.SET_TOKEN('EXCEPTION_BEHAVIOR','Error');
11228 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11229 wsh_util_core.add_message(x_return_status);
11230 l_num_warnings := l_num_warnings + 1 ;
11231 RAISE wsh_util_core.e_not_allowed;
11232 ELSIF l_exceptions_tab(exp_cnt).exception_behavior = 'WARNING' THEN
11233 IF l_exceptions_tab(exp_cnt).entity_name = 'DELIVERY' THEN
11234 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_ENTITY');
11235 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','Delivery');
11236 FND_MESSAGE.SET_TOKEN('ENTITY_ID',l_exceptions_tab(exp_cnt).entity_id);
11237 FND_MESSAGE.SET_TOKEN('EXCEPTION_BEHAVIOR','Warning');
11238 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11239 wsh_util_core.add_message(x_return_status);
11240 l_num_warnings := l_num_warnings + 1 ;
11241 l_exp_warning := TRUE;
11242 ELSIF NOT (l_exp_logged) THEN
11243 FND_MESSAGE.SET_NAME('WSH','WSH_XC_EXIST_CONTENTS');
11244 FND_MESSAGE.SET_TOKEN('ENTITY_NAME','Delivery');
11245 FND_MESSAGE.SET_TOKEN('ENTITY_ID',l_exceptions_tab(exp_cnt).entity_id);
11246 FND_MESSAGE.SET_TOKEN('EXCEPTION_BEHAVIOR','Warning');
11247 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11248 l_exp_logged := TRUE;
11249 wsh_util_core.add_message(x_return_status);
11250 l_num_warnings := l_num_warnings + 1 ;
11251 l_exp_warning := TRUE;
11252 END IF;
11253 END IF;
11254 END LOOP;
11255
11256 --
11257 --
11258 IF l_num_errors > 0
11259 THEN
11260 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11261 x_allowed := 'N';
11262 ELSIF l_num_warnings > 0
11263 THEN
11264 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11265 ELSE
11266 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11267 END IF;
11268 --
11269 --
11270 -- If Exceptions have warnings, then display warnings but allow to proceed
11271 IF l_exp_warning THEN
11272 x_allowed := 'YW';
11273 ELSE
11274 x_allowed := 'Y';
11275 END IF;
11276 --
11277 -- Debug Statements
11278 --
11279 IF l_debug_on THEN
11280 WSH_DEBUG_SV.pop(l_module_name);
11281 END IF;
11282 --
11283 --
11284 EXCEPTION
11285 --{
11286 WHEN wsh_util_core.e_not_allowed THEN
11287 IF l_num_warnings > 0
11288 THEN
11289 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11290 ELSE
11291 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11292 END IF;
11293 --
11294 x_allowed := 'N';
11295 --
11296 --
11297 IF l_debug_on THEN
11298 WSH_DEBUG_SV.logmsg(l_module_name,'wsh_util_core.e_not_allowed exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
11299 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:wsh_util_core.e_not_allowed');
11300 END IF;
11301 --
11302 WHEN wsh_util_core.e_not_allowed_warning THEN
11303 IF l_num_warnings > 0
11304 THEN
11305 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11306 ELSE
11307 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11308 END IF;
11309 --
11310 x_allowed := 'NW';
11311 --
11312 --
11313 IF l_debug_on THEN
11314 WSH_DEBUG_SV.logmsg(l_module_name,'wsh_util_core.e_not_allowed_warning exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
11315 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:wsh_util_core.e_not_allowed_warning');
11316 END IF;
11317 --
11318 WHEN FND_API.G_EXC_ERROR THEN
11319
11320 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11321 --
11322 IF l_debug_on THEN
11323 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
11324 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
11325 END IF;
11326 --
11327 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11328
11329 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
11330 --
11331 IF l_debug_on THEN
11332 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
11333 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
11334 END IF;
11335 --
11336 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
11337 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11338 --
11339 IF l_debug_on THEN
11340 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
11341 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
11342 END IF;
11343 --
11344 WHEN OTHERS THEN
11345
11346 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
11347 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.check_inTransit',l_module_name);
11348 --
11349 IF l_debug_on THEN
11350 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
11351 END IF;
11352 --
11353 --}
11354 END check_inTransit;
11355 --
11356 --
11357 --
11358 --========================================================================
11359 -- PROCEDURE : get_shipping_control
11360 --
11361 -- PARAMETERS: p_delivery_id Delivery ID
11362 -- x_shipping_control Shipping control for delivery
11363 -- x_routing_response_id Routing response ID for delivery
11364 -- x_routing_request_flag Indicates if routing request was received for delivery lines(Y/N)
11365 -- x_return_status Return status of the API
11366 --
11367 --
11368 -- COMMENT : This procedure returns inbound-specific attributes for the delivery.
11369 --
11370 --========================================================================
11371 --
11372 PROCEDURE get_shipping_control
11373 (
11374 p_delivery_id IN NUMBER,
11375 x_shipping_control OUT NOCOPY VARCHAR2,
11376 x_routing_response_id OUT NOCOPY NUMBER,
11377 x_routing_request_flag OUT NOCOPY VARCHAR2,
11378 x_return_status OUT NOCOPY VARCHAR2
11379 )
11380 IS
11381 --{
11382 -- Get delivery info.
11383 CURSOR dlvy_csr (p_delivery_id NUMBER)
11384 IS
11385 SELECT shipping_control, routing_response_id
11386 FROM WSH_NEW_DELIVERIES
11387 WHERE delivery_id = p_delivery_id;
11388 --
11389 l_dlvy_rec dlvy_csr%ROWTYPE;
11390 --
11391 -- Check if any routing request id is not null for any delivery line.
11392 --
11393 CURSOR line_csr(p_delivery_id NUMBER)
11394 IS
11395 SELECT 'Y'
11396 FROM wsh_delivery_details wdd,
11397 wsh_delivery_assignments_v wda
11398 WHERE wda.delivery_id = p_delivery_id
11399 AND wdd.delivery_detail_id = wda.delivery_detail_id
11400 AND NVL(wdd.container_flag,'N') = 'N'
11401 AND routing_req_id IS NOT NULL
11402 AND rownum = 1;
11403 --
11404 l_num_warnings NUMBER;
11405 l_num_errors NUMBER;
11406 --
11407 l_debug_on BOOLEAN;
11408 --
11409 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || g_pkg_name || '.' || 'get_shipping_control';
11410 --}
11411 BEGIN
11412 --{
11413 --
11414 l_debug_on := wsh_debug_interface.g_debug;
11415 --
11416 IF l_debug_on IS NULL THEN
11417 l_debug_on := wsh_debug_sv.is_debug_enabled;
11418 END IF;
11419 --
11420 IF l_debug_on THEN
11421 wsh_debug_sv.push(l_module_name);
11422 --
11423 wsh_debug_sv.LOG(l_module_name, 'p_DELIVERY_ID ', p_delivery_id );
11424 END IF;
11425 --
11426 --
11427 l_num_warnings := 0;
11428 l_num_errors := 0;
11429 --
11430 OPEN dlvy_csr (p_delivery_id);
11431 --
11432 FETCH dlvy_csr INTO l_dlvy_rec;
11433 --
11434 IF dlvy_csr%NOTFOUND
11435 THEN
11436 --{
11437 FND_MESSAGE.SET_NAME('WSH', 'WSH_INVALID_DELIVERY');
11438 FND_MESSAGE.SET_TOKEN('DELIVERY_ID',p_delivery_id);
11439 wsh_util_core.add_message(WSH_UTIL_CORE.G_RET_STS_ERROR, l_module_name);
11440 --CLOSE dlvy_csr;
11441 RAISE FND_API.G_EXC_ERROR;
11442 --}
11443 END IF;
11444 --
11445 CLOSE dlvy_csr;
11446 --
11447 IF l_debug_on THEN
11448 wsh_debug_sv.LOG(l_module_name, 'l_dlvy_rec.shipping_control ', l_dlvy_rec.shipping_control );
11449 wsh_debug_sv.LOG(l_module_name, 'l_dlvy_rec.routing_response_id ', l_dlvy_rec.routing_response_id );
11450 END IF;
11451 --
11452 --
11453 x_shipping_control := l_dlvy_rec.shipping_control;
11454 x_routing_response_id := l_dlvy_rec.routing_response_id;
11455 --
11456 IF l_dlvy_rec.shipping_control = 'SUPPLIER'
11457 THEN
11458 x_routing_request_flag := 'N';
11459 ELSE
11460 --{
11461 -- Check if any routing request id is not null for any delivery line.
11462 -- If No, routing request was not received for delivery lines.
11463 --
11464 OPEN line_csr(p_delivery_id);
11465 --
11466 FETCH line_csr INTO x_routing_request_flag;
11467 --
11468 IF line_csr%NOTFOUND
11469 THEN
11470 x_routing_request_flag := 'N';
11471 --
11472 IF l_debug_on THEN
11473 wsh_debug_sv.LOGMSG(l_module_name, 'No Lines with Routing request' );
11474 END IF;
11475 ELSE
11476 x_routing_request_flag := 'Y';
11477 --
11478 IF l_debug_on THEN
11479 wsh_debug_sv.LOGMSG(l_module_name, 'At least one Line with Routing request' );
11480 END IF;
11481 END IF;
11482 --
11483 CLOSE line_csr;
11484 --}
11485 END IF;
11486 --
11487 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11488 --
11489 -- Debug Statements
11490 --
11491 IF l_debug_on THEN
11492 WSH_DEBUG_SV.pop(l_module_name);
11493 END IF;
11494 --
11495 --}
11496 EXCEPTION
11497 --{
11498 WHEN FND_API.G_EXC_ERROR THEN
11499
11500 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11501 --
11502 IF l_debug_on THEN
11503 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
11504 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
11505 END IF;
11506 --
11507 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
11508
11509 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
11510 --
11511 IF l_debug_on THEN
11512 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
11513 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
11514 END IF;
11515 --
11516 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
11517 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
11518 --
11519 IF l_debug_on THEN
11520 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
11521 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
11522 END IF;
11523 --
11524 WHEN OTHERS THEN
11525
11526 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
11527 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.get_shipping_control',l_module_name);
11528 --
11529 IF l_debug_on THEN
11530 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
11531 END IF;
11532 --
11533 --}
11534 END get_shipping_control;
11535 --
11536 --
11537 -- J-IB-NPARIKH-}
11538
11539 --3509004:public api change
11540 PROCEDURE user_non_updatable_columns
11541 (p_user_in_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type,
11542 p_out_rec IN WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type,
11543 p_in_rec IN WSH_DELIVERIES_GRP.Del_In_Rec_Type,
11544 x_return_status OUT NOCOPY VARCHAR2)
11545
11546 IS
11547 l_attributes VARCHAR2(2500) ;
11548 k number;
11549 l_return_status VARCHAR2(1);
11550 l_debug_on BOOLEAN;
11551 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'user_non_updatable_columns';
11552
11553 BEGIN
11554
11555 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
11556 --
11557 IF l_debug_on IS NULL
11558 THEN
11559 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
11560 END IF;
11561 --
11562 IF l_debug_on THEN
11563 --
11564 WSH_DEBUG_SV.push(l_module_name);
11565 WSH_DEBUG_SV.log(l_module_name,'p_in_rec.caller',p_in_rec.caller);
11566 --
11567 END IF;
11568 --
11569 x_return_status := FND_API.G_RET_STS_SUCCESS;
11570 --
11571 IF p_user_in_rec.DELIVERY_ID <> FND_API.G_MISS_NUM
11572 AND NVL(p_user_in_rec.DELIVERY_ID,-99) <> NVL(p_out_rec.DELIVERY_ID,-99)
11573 THEN
11574 l_attributes := l_attributes || 'DELIVERY_ID, ';
11575 END IF;
11576
11577 IF p_user_in_rec.NAME <> FND_API.G_MISS_CHAR
11578 AND NVL(p_user_in_rec.NAME,'!!!') <> NVL(p_out_rec.NAME,'!!!')
11579 THEN
11580 l_attributes := l_attributes || 'NAME, ';
11581 END IF;
11582
11583 IF p_user_in_rec.PLANNED_FLAG <> FND_API.G_MISS_CHAR
11584 AND NVL(p_user_in_rec.PLANNED_FLAG,'!!!') <> NVL(p_out_rec.PLANNED_FLAG,'!!!')
11585 THEN
11586 l_attributes := l_attributes || 'PLANNED_FLAG, ';
11587 END IF;
11588
11589 IF p_user_in_rec.STATUS_CODE <> FND_API.G_MISS_CHAR
11590 AND NVL(p_user_in_rec.STATUS_CODE,'!!!') <> NVL(p_out_rec.STATUS_CODE,'!!!')
11591 THEN
11592 l_attributes := l_attributes || 'STATUS_CODE, ';
11593 END IF;
11594
11595 IF p_user_in_rec.DELIVERY_TYPE <> FND_API.G_MISS_CHAR
11596 AND NVL(p_user_in_rec.DELIVERY_TYPE,'!!!') <> NVL(p_out_rec.DELIVERY_TYPE,'!!!')
11597 THEN
11598 l_attributes := l_attributes || 'DELIVERY_TYPE, ';
11599 END IF;
11600
11601 IF p_user_in_rec.LOADING_SEQUENCE <> FND_API.G_MISS_NUM
11602 AND NVL(p_user_in_rec.LOADING_SEQUENCE,-99) <> NVL(p_out_rec.LOADING_SEQUENCE,-99)
11603 THEN
11604 l_attributes := l_attributes || 'LOADING_SEQUENCE, ';
11605 END IF;
11606
11607 IF p_user_in_rec.LOADING_ORDER_FLAG <> FND_API.G_MISS_CHAR
11608 AND NVL(p_user_in_rec.LOADING_ORDER_FLAG,'!!!') <> NVL(p_out_rec.LOADING_ORDER_FLAG,'!!!')
11609 THEN
11610 l_attributes := l_attributes || 'LOADING_ORDER_FLAG, ';
11611 END IF;
11612
11613 IF p_user_in_rec.INITIAL_PICKUP_DATE <> FND_API.G_MISS_DATE
11614 AND NVL(p_user_in_rec.INITIAL_PICKUP_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.INITIAL_PICKUP_DATE,TO_DATE('2','j'))
11615 THEN
11616 l_attributes := l_attributes || 'INITIAL_PICKUP_DATE, ';
11617 END IF;
11618
11619 IF p_user_in_rec.INITIAL_PICKUP_LOCATION_ID <> FND_API.G_MISS_NUM
11620 AND NVL(p_user_in_rec.INITIAL_PICKUP_LOCATION_ID,-99) <> NVL(p_out_rec.INITIAL_PICKUP_LOCATION_ID,-99)
11621 THEN
11622 l_attributes := l_attributes || 'INITIAL_PICKUP_LOCATION_ID, ';
11623 END IF;
11624
11625 IF p_user_in_rec.ORGANIZATION_ID <> FND_API.G_MISS_NUM
11626 AND NVL(p_user_in_rec.ORGANIZATION_ID,-99) <> NVL(p_out_rec.ORGANIZATION_ID,-99)
11627 THEN
11628 l_attributes := l_attributes || 'ORGANIZATION_ID, ';
11629 END IF;
11630
11631 IF p_user_in_rec.ULTIMATE_DROPOFF_LOCATION_ID <> FND_API.G_MISS_NUM
11632 AND NVL(p_user_in_rec.ULTIMATE_DROPOFF_LOCATION_ID,-99) <> NVL(p_out_rec.ULTIMATE_DROPOFF_LOCATION_ID,-99)
11633 THEN
11634 l_attributes := l_attributes || 'ULTIMATE_DROPOFF_LOCATION_ID, ';
11635 END IF;
11636
11637 IF p_user_in_rec.ULTIMATE_DROPOFF_DATE <> FND_API.G_MISS_DATE
11638 AND NVL(p_user_in_rec.ULTIMATE_DROPOFF_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.ULTIMATE_DROPOFF_DATE,TO_DATE('2','j'))
11639 THEN
11640 l_attributes := l_attributes || 'ULTIMATE_DROPOFF_DATE, ';
11641 END IF;
11642
11643 IF p_user_in_rec.CUSTOMER_ID <> FND_API.G_MISS_NUM
11644 AND NVL(p_user_in_rec.CUSTOMER_ID,-99) <> NVL(p_out_rec.CUSTOMER_ID,-99)
11645 THEN
11646 l_attributes := l_attributes || 'CUSTOMER_ID, ';
11647 END IF;
11648
11649 IF p_user_in_rec.INTMED_SHIP_TO_LOCATION_ID <> FND_API.G_MISS_NUM
11650 AND NVL(p_user_in_rec.INTMED_SHIP_TO_LOCATION_ID,-99) <> NVL(p_out_rec.INTMED_SHIP_TO_LOCATION_ID,-99)
11651 THEN
11652 l_attributes := l_attributes || 'INTMED_SHIP_TO_LOCATION_ID, ';
11653 END IF;
11654
11655 IF p_user_in_rec.POOLED_SHIP_TO_LOCATION_ID <> FND_API.G_MISS_NUM
11656 AND NVL(p_user_in_rec.POOLED_SHIP_TO_LOCATION_ID,-99) <> NVL(p_out_rec.POOLED_SHIP_TO_LOCATION_ID,-99)
11657 THEN
11658 l_attributes := l_attributes || 'POOLED_SHIP_TO_LOCATION_ID, ';
11659 END IF;
11660
11661 IF p_user_in_rec.CARRIER_ID <> FND_API.G_MISS_NUM
11662 AND NVL(p_user_in_rec.CARRIER_ID,-99) <> NVL(p_out_rec.CARRIER_ID,-99)
11663 THEN
11664 l_attributes := l_attributes || 'CARRIER_ID, ';
11665 END IF;
11666
11667 IF p_user_in_rec.SHIP_METHOD_CODE <> FND_API.G_MISS_CHAR
11668 AND NVL(p_user_in_rec.SHIP_METHOD_CODE,'!!!') <> NVL(p_out_rec.SHIP_METHOD_CODE,'!!!')
11669 THEN
11670 l_attributes := l_attributes || 'SHIP_METHOD_CODE, ';
11671 END IF;
11672
11673 IF p_user_in_rec.FREIGHT_TERMS_CODE <> FND_API.G_MISS_CHAR
11674 AND NVL(p_user_in_rec.FREIGHT_TERMS_CODE,'!!!') <> NVL(p_out_rec.FREIGHT_TERMS_CODE,'!!!')
11675 THEN
11676 l_attributes := l_attributes || 'FREIGHT_TERMS_CODE, ';
11677 END IF;
11678
11679 IF p_user_in_rec.FOB_CODE <> FND_API.G_MISS_CHAR
11680 AND NVL(p_user_in_rec.FOB_CODE,'!!!') <> NVL(p_out_rec.FOB_CODE,'!!!')
11681 THEN
11682 l_attributes := l_attributes || 'FOB_CODE, ';
11683 END IF;
11684
11685 IF p_user_in_rec.FOB_LOCATION_ID <> FND_API.G_MISS_NUM
11686 AND NVL(p_user_in_rec.FOB_LOCATION_ID,-99) <> NVL(p_out_rec.FOB_LOCATION_ID,-99)
11687 THEN
11688 l_attributes := l_attributes || 'FOB_LOCATION_ID, ';
11689 END IF;
11690
11691 IF p_user_in_rec.WAYBILL <> FND_API.G_MISS_CHAR
11692 AND NVL(p_user_in_rec.WAYBILL,'!!!') <> NVL(p_out_rec.WAYBILL,'!!!')
11693 THEN
11694 l_attributes := l_attributes || 'WAYBILL, ';
11695 END IF;
11696
11697 IF p_user_in_rec.DOCK_CODE <> FND_API.G_MISS_CHAR
11698 AND NVL(p_user_in_rec.DOCK_CODE,'!!!') <> NVL(p_out_rec.DOCK_CODE,'!!!')
11699 THEN
11700 l_attributes := l_attributes || 'DOCK_CODE, ';
11701 END IF;
11702
11703 IF p_user_in_rec.ACCEPTANCE_FLAG <> FND_API.G_MISS_CHAR
11704 AND NVL(p_user_in_rec.ACCEPTANCE_FLAG,'!!!') <> NVL(p_out_rec.ACCEPTANCE_FLAG,'!!!')
11705 THEN
11706 l_attributes := l_attributes || 'ACCEPTANCE_FLAG, ';
11707 END IF;
11708
11709 IF p_user_in_rec.ACCEPTED_BY <> FND_API.G_MISS_CHAR
11710 AND NVL(p_user_in_rec.ACCEPTED_BY,'!!!') <> NVL(p_out_rec.ACCEPTED_BY,'!!!')
11711 THEN
11712 l_attributes := l_attributes || 'ACCEPTED_BY, ';
11713 END IF;
11714
11715 IF p_user_in_rec.ACCEPTED_DATE <> FND_API.G_MISS_DATE
11716 AND NVL(p_user_in_rec.ACCEPTED_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.ACCEPTED_DATE,TO_DATE('2','j'))
11717 THEN
11718 l_attributes := l_attributes || 'ACCEPTED_DATE, ';
11719 END IF;
11720
11721 IF p_user_in_rec.ACKNOWLEDGED_BY <> FND_API.G_MISS_CHAR
11722 AND NVL(p_user_in_rec.ACKNOWLEDGED_BY,'!!!') <> NVL(p_out_rec.ACKNOWLEDGED_BY,'!!!')
11723 THEN
11724 l_attributes := l_attributes || 'ACKNOWLEDGED_BY, ';
11725 END IF;
11726
11727 IF p_user_in_rec.CONFIRMED_BY <> FND_API.G_MISS_CHAR
11728 AND NVL(p_user_in_rec.CONFIRMED_BY,'!!!') <> NVL(p_out_rec.CONFIRMED_BY,'!!!')
11729 THEN
11730 l_attributes := l_attributes || 'CONFIRMED_BY, ';
11731 END IF;
11732
11733 IF p_user_in_rec.CONFIRM_DATE <> FND_API.G_MISS_DATE
11734 AND NVL(p_user_in_rec.CONFIRM_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.CONFIRM_DATE,TO_DATE('2','j'))
11735 THEN
11736 l_attributes := l_attributes || 'CONFIRM_DATE, ';
11737 END IF;
11738
11739 IF p_user_in_rec.ASN_DATE_SENT <> FND_API.G_MISS_DATE
11740 AND NVL(p_user_in_rec.ASN_DATE_SENT,TO_DATE('2','j')) <> NVL(p_out_rec.ASN_DATE_SENT,TO_DATE('2','j'))
11741 THEN
11742 l_attributes := l_attributes || 'ASN_DATE_SENT, ';
11743 END IF;
11744
11745 IF p_user_in_rec.ASN_STATUS_CODE <> FND_API.G_MISS_CHAR
11746 AND NVL(p_user_in_rec.ASN_STATUS_CODE,'!!!') <> NVL(p_out_rec.ASN_STATUS_CODE,'!!!')
11747 THEN
11748 l_attributes := l_attributes || 'ASN_STATUS_CODE, ';
11749 END IF;
11750
11751 IF p_user_in_rec.ASN_SEQ_NUMBER <> FND_API.G_MISS_NUM
11752 AND NVL(p_user_in_rec.ASN_SEQ_NUMBER,-99) <> NVL(p_out_rec.ASN_SEQ_NUMBER,-99)
11753 THEN
11754 l_attributes := l_attributes || 'ASN_SEQ_NUMBER, ';
11755 END IF;
11756
11757 IF p_user_in_rec.GROSS_WEIGHT <> FND_API.G_MISS_NUM
11758 AND NVL(p_user_in_rec.GROSS_WEIGHT,-99) <> NVL(p_out_rec.GROSS_WEIGHT,-99)
11759 THEN
11760 l_attributes := l_attributes || 'GROSS_WEIGHT, ';
11761 END IF;
11762
11763 IF p_user_in_rec.NET_WEIGHT <> FND_API.G_MISS_NUM
11764 AND NVL(p_user_in_rec.NET_WEIGHT,-99) <> NVL(p_out_rec.NET_WEIGHT,-99)
11765 THEN
11766 l_attributes := l_attributes || 'NET_WEIGHT, ';
11767 END IF;
11768 -- Non Database field prorate_wt_flag added for "Proration of weight from Delivery to delivery lines" Project(Bug#4254552).
11769 IF p_user_in_rec.PRORATE_WT_FLAG <> FND_API.G_MISS_CHAR
11770 AND NVL(p_user_in_rec.PRORATE_WT_FLAG,'!!!') <> NVL(p_out_rec.PRORATE_WT_FLAG,'!!!')
11771 THEN
11772 l_attributes := l_attributes || 'PRORATE_WT_FLAG, ';
11773 END IF;
11774 --
11775 IF p_user_in_rec.WEIGHT_UOM_CODE <> FND_API.G_MISS_CHAR
11776 AND NVL(p_user_in_rec.WEIGHT_UOM_CODE,'!!!') <> NVL(p_out_rec.WEIGHT_UOM_CODE,'!!!')
11777 THEN
11778 l_attributes := l_attributes || 'WEIGHT_UOM_CODE, ';
11779 END IF;
11780
11781 IF p_user_in_rec.VOLUME <> FND_API.G_MISS_NUM
11782 AND NVL(p_user_in_rec.VOLUME,-99) <> NVL(p_out_rec.VOLUME,-99)
11783 THEN
11784 l_attributes := l_attributes || 'VOLUME, ';
11785 END IF;
11786
11787 IF p_user_in_rec.VOLUME_UOM_CODE <> FND_API.G_MISS_CHAR
11788 AND NVL(p_user_in_rec.VOLUME_UOM_CODE,'!!!') <> NVL(p_out_rec.VOLUME_UOM_CODE,'!!!')
11789 THEN
11790 l_attributes := l_attributes || 'VOLUME_UOM_CODE, ';
11791 END IF;
11792
11793 IF p_user_in_rec.ADDITIONAL_SHIPMENT_INFO <> FND_API.G_MISS_CHAR
11794 AND NVL(p_user_in_rec.ADDITIONAL_SHIPMENT_INFO,'!!!') <> NVL(p_out_rec.ADDITIONAL_SHIPMENT_INFO,'!!!')
11795 THEN
11796 l_attributes := l_attributes || 'ADDITIONAL_SHIPMENT_INFO, ';
11797 END IF;
11798
11799 IF p_user_in_rec.CURRENCY_CODE <> FND_API.G_MISS_CHAR
11800 AND NVL(p_user_in_rec.CURRENCY_CODE,'!!!') <> NVL(p_out_rec.CURRENCY_CODE,'!!!')
11801 THEN
11802 l_attributes := l_attributes || 'CURRENCY_CODE, ';
11803 END IF;
11804
11805 IF p_user_in_rec.ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR
11806 AND NVL(p_user_in_rec.ATTRIBUTE_CATEGORY,'!!!') <> NVL(p_out_rec.ATTRIBUTE_CATEGORY,'!!!')
11807 THEN
11808 l_attributes := l_attributes || 'ATTRIBUTE_CATEGORY, ';
11809 END IF;
11810
11811 IF p_user_in_rec.ATTRIBUTE1 <> FND_API.G_MISS_CHAR
11812 AND NVL(p_user_in_rec.ATTRIBUTE1,'!!!') <> NVL(p_out_rec.ATTRIBUTE1,'!!!')
11813 THEN
11814 l_attributes := l_attributes || 'ATTRIBUTE1, ';
11815 END IF;
11816
11817 IF p_user_in_rec.ATTRIBUTE2 <> FND_API.G_MISS_CHAR
11818 AND NVL(p_user_in_rec.ATTRIBUTE2,'!!!') <> NVL(p_out_rec.ATTRIBUTE2,'!!!')
11819 THEN
11820 l_attributes := l_attributes || 'ATTRIBUTE2, ';
11821 END IF;
11822
11823 IF p_user_in_rec.ATTRIBUTE3 <> FND_API.G_MISS_CHAR
11824 AND NVL(p_user_in_rec.ATTRIBUTE3,'!!!') <> NVL(p_out_rec.ATTRIBUTE3,'!!!')
11825 THEN
11826 l_attributes := l_attributes || 'ATTRIBUTE3, ';
11827 END IF;
11828
11829 IF p_user_in_rec.ATTRIBUTE4 <> FND_API.G_MISS_CHAR
11830 AND NVL(p_user_in_rec.ATTRIBUTE4,'!!!') <> NVL(p_out_rec.ATTRIBUTE4,'!!!')
11831 THEN
11832 l_attributes := l_attributes || 'ATTRIBUTE4, ';
11833 END IF;
11834
11835 IF p_user_in_rec.ATTRIBUTE5 <> FND_API.G_MISS_CHAR
11836 AND NVL(p_user_in_rec.ATTRIBUTE5,'!!!') <> NVL(p_out_rec.ATTRIBUTE5,'!!!')
11837 THEN
11838 l_attributes := l_attributes || 'ATTRIBUTE5, ';
11839 END IF;
11840
11841 IF p_user_in_rec.ATTRIBUTE6 <> FND_API.G_MISS_CHAR
11842 AND NVL(p_user_in_rec.ATTRIBUTE6,'!!!') <> NVL(p_out_rec.ATTRIBUTE6,'!!!')
11843 THEN
11844 l_attributes := l_attributes || 'ATTRIBUTE6, ';
11845 END IF;
11846
11847 IF p_user_in_rec.ATTRIBUTE7 <> FND_API.G_MISS_CHAR
11848 AND NVL(p_user_in_rec.ATTRIBUTE7,'!!!') <> NVL(p_out_rec.ATTRIBUTE7,'!!!')
11849 THEN
11850 l_attributes := l_attributes || 'ATTRIBUTE7, ';
11851 END IF;
11852
11853 IF p_user_in_rec.ATTRIBUTE8 <> FND_API.G_MISS_CHAR
11854 AND NVL(p_user_in_rec.ATTRIBUTE8,'!!!') <> NVL(p_out_rec.ATTRIBUTE8,'!!!')
11855 THEN
11856 l_attributes := l_attributes || 'ATTRIBUTE8, ';
11857 END IF;
11858
11859 IF p_user_in_rec.ATTRIBUTE9 <> FND_API.G_MISS_CHAR
11860 AND NVL(p_user_in_rec.ATTRIBUTE9,'!!!') <> NVL(p_out_rec.ATTRIBUTE9,'!!!')
11861 THEN
11862 l_attributes := l_attributes || 'ATTRIBUTE9, ';
11863 END IF;
11864
11865 IF p_user_in_rec.ATTRIBUTE10 <> FND_API.G_MISS_CHAR
11866 AND NVL(p_user_in_rec.ATTRIBUTE10,'!!!') <> NVL(p_out_rec.ATTRIBUTE10,'!!!')
11867 THEN
11868 l_attributes := l_attributes || 'ATTRIBUTE10, ';
11869 END IF;
11870
11871 IF p_user_in_rec.ATTRIBUTE11 <> FND_API.G_MISS_CHAR
11872 AND NVL(p_user_in_rec.ATTRIBUTE11,'!!!') <> NVL(p_out_rec.ATTRIBUTE11,'!!!')
11873 THEN
11874 l_attributes := l_attributes || 'ATTRIBUTE11, ';
11875 END IF;
11876
11877 IF p_user_in_rec.ATTRIBUTE12 <> FND_API.G_MISS_CHAR
11878 AND NVL(p_user_in_rec.ATTRIBUTE12,'!!!') <> NVL(p_out_rec.ATTRIBUTE12,'!!!')
11879 THEN
11880 l_attributes := l_attributes || 'ATTRIBUTE12, ';
11881 END IF;
11882
11883 IF p_user_in_rec.ATTRIBUTE13 <> FND_API.G_MISS_CHAR
11884 AND NVL(p_user_in_rec.ATTRIBUTE13,'!!!') <> NVL(p_out_rec.ATTRIBUTE13,'!!!')
11885 THEN
11886 l_attributes := l_attributes || 'ATTRIBUTE13, ';
11887 END IF;
11888
11889 IF p_user_in_rec.ATTRIBUTE14 <> FND_API.G_MISS_CHAR
11890 AND NVL(p_user_in_rec.ATTRIBUTE14,'!!!') <> NVL(p_out_rec.ATTRIBUTE14,'!!!')
11891 THEN
11892 l_attributes := l_attributes || 'ATTRIBUTE14, ';
11893 END IF;
11894
11895 IF p_user_in_rec.ATTRIBUTE15 <> FND_API.G_MISS_CHAR
11896 AND NVL(p_user_in_rec.ATTRIBUTE15,'!!!') <> NVL(p_out_rec.ATTRIBUTE15,'!!!')
11897 THEN
11898 l_attributes := l_attributes || 'ATTRIBUTE15, ';
11899 END IF;
11900
11901 IF p_user_in_rec.TP_ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR
11902 AND NVL(p_user_in_rec.TP_ATTRIBUTE_CATEGORY,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE_CATEGORY,'!!!')
11903 THEN
11904 l_attributes := l_attributes || 'TP_ATTRIBUTE_CATEGORY, ';
11905 END IF;
11906
11907 IF p_user_in_rec.TP_ATTRIBUTE1 <> FND_API.G_MISS_CHAR
11908 AND NVL(p_user_in_rec.TP_ATTRIBUTE1,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE1,'!!!')
11909 THEN
11910 l_attributes := l_attributes || 'TP_ATTRIBUTE1, ';
11911 END IF;
11912
11913 IF p_user_in_rec.TP_ATTRIBUTE2 <> FND_API.G_MISS_CHAR
11914 AND NVL(p_user_in_rec.TP_ATTRIBUTE2,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE2,'!!!')
11915 THEN
11916 l_attributes := l_attributes || 'TP_ATTRIBUTE2, ';
11917 END IF;
11918
11919 IF p_user_in_rec.TP_ATTRIBUTE3 <> FND_API.G_MISS_CHAR
11920 AND NVL(p_user_in_rec.TP_ATTRIBUTE3,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE3,'!!!')
11921 THEN
11922 l_attributes := l_attributes || 'TP_ATTRIBUTE3, ';
11923 END IF;
11924
11925 IF p_user_in_rec.TP_ATTRIBUTE4 <> FND_API.G_MISS_CHAR
11926 AND NVL(p_user_in_rec.TP_ATTRIBUTE4,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE4,'!!!')
11927 THEN
11928 l_attributes := l_attributes || 'TP_ATTRIBUTE4, ';
11929 END IF;
11930
11931 IF p_user_in_rec.TP_ATTRIBUTE5 <> FND_API.G_MISS_CHAR
11932 AND NVL(p_user_in_rec.TP_ATTRIBUTE5,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE5,'!!!')
11933 THEN
11934 l_attributes := l_attributes || 'TP_ATTRIBUTE5, ';
11935 END IF;
11936
11937 IF p_user_in_rec.TP_ATTRIBUTE6 <> FND_API.G_MISS_CHAR
11938 AND NVL(p_user_in_rec.TP_ATTRIBUTE6,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE6,'!!!')
11939 THEN
11940 l_attributes := l_attributes || 'TP_ATTRIBUTE6, ';
11941 END IF;
11942
11943 IF p_user_in_rec.TP_ATTRIBUTE7 <> FND_API.G_MISS_CHAR
11944 AND NVL(p_user_in_rec.TP_ATTRIBUTE7,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE7,'!!!')
11945 THEN
11946 l_attributes := l_attributes || 'TP_ATTRIBUTE7, ';
11947 END IF;
11948
11949 IF p_user_in_rec.TP_ATTRIBUTE8 <> FND_API.G_MISS_CHAR
11950 AND NVL(p_user_in_rec.TP_ATTRIBUTE8,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE8,'!!!')
11951 THEN
11952 l_attributes := l_attributes || 'TP_ATTRIBUTE8, ';
11953 END IF;
11954
11955 IF p_user_in_rec.TP_ATTRIBUTE9 <> FND_API.G_MISS_CHAR
11956 AND NVL(p_user_in_rec.TP_ATTRIBUTE9,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE9,'!!!')
11957 THEN
11958 l_attributes := l_attributes || 'TP_ATTRIBUTE9, ';
11959 END IF;
11960
11961 IF p_user_in_rec.TP_ATTRIBUTE10 <> FND_API.G_MISS_CHAR
11962 AND NVL(p_user_in_rec.TP_ATTRIBUTE10,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE10,'!!!')
11963 THEN
11964 l_attributes := l_attributes || 'TP_ATTRIBUTE10, ';
11965 END IF;
11966
11967 IF p_user_in_rec.TP_ATTRIBUTE11 <> FND_API.G_MISS_CHAR
11968 AND NVL(p_user_in_rec.TP_ATTRIBUTE11,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE11,'!!!')
11969 THEN
11970 l_attributes := l_attributes || 'TP_ATTRIBUTE11, ';
11971 END IF;
11972
11973 IF p_user_in_rec.TP_ATTRIBUTE12 <> FND_API.G_MISS_CHAR
11974 AND NVL(p_user_in_rec.TP_ATTRIBUTE12,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE12,'!!!')
11975 THEN
11976 l_attributes := l_attributes || 'TP_ATTRIBUTE12, ';
11977 END IF;
11978
11979 IF p_user_in_rec.TP_ATTRIBUTE13 <> FND_API.G_MISS_CHAR
11980 AND NVL(p_user_in_rec.TP_ATTRIBUTE13,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE13,'!!!')
11981 THEN
11982 l_attributes := l_attributes || 'TP_ATTRIBUTE13, ';
11983 END IF;
11984
11985 IF p_user_in_rec.TP_ATTRIBUTE14 <> FND_API.G_MISS_CHAR
11986 AND NVL(p_user_in_rec.TP_ATTRIBUTE14,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE14,'!!!')
11987 THEN
11988 l_attributes := l_attributes || 'TP_ATTRIBUTE14, ';
11989 END IF;
11990
11991 IF p_user_in_rec.TP_ATTRIBUTE15 <> FND_API.G_MISS_CHAR
11992 AND NVL(p_user_in_rec.TP_ATTRIBUTE15,'!!!') <> NVL(p_out_rec.TP_ATTRIBUTE15,'!!!')
11993 THEN
11994 l_attributes := l_attributes || 'TP_ATTRIBUTE15, ';
11995 END IF;
11996
11997 IF p_user_in_rec.GLOBAL_ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR
11998 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE_CATEGORY,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE_CATEGORY,'!!!')
11999 THEN
12000 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE_CATEGORY, ';
12001 END IF;
12002
12003 IF p_user_in_rec.GLOBAL_ATTRIBUTE1 <> FND_API.G_MISS_CHAR
12004 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE1,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE1,'!!!')
12005 THEN
12006 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE1, ';
12007 END IF;
12008
12009 IF p_user_in_rec.GLOBAL_ATTRIBUTE2 <> FND_API.G_MISS_CHAR
12010 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE2,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE2,'!!!')
12011 THEN
12012 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE2, ';
12013 END IF;
12014
12015 IF p_user_in_rec.GLOBAL_ATTRIBUTE3 <> FND_API.G_MISS_CHAR
12016 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE3,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE3,'!!!')
12017 THEN
12018 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE3, ';
12019 END IF;
12020
12021 IF p_user_in_rec.GLOBAL_ATTRIBUTE4 <> FND_API.G_MISS_CHAR
12022 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE4,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE4,'!!!')
12023 THEN
12024 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE4, ';
12025 END IF;
12026
12027 IF p_user_in_rec.GLOBAL_ATTRIBUTE5 <> FND_API.G_MISS_CHAR
12028 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE5,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE5,'!!!')
12029 THEN
12030 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE5, ';
12031 END IF;
12032
12033 IF p_user_in_rec.GLOBAL_ATTRIBUTE6 <> FND_API.G_MISS_CHAR
12034 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE6,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE6,'!!!')
12035 THEN
12036 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE6, ';
12037 END IF;
12038
12039 IF p_user_in_rec.GLOBAL_ATTRIBUTE7 <> FND_API.G_MISS_CHAR
12040 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE7,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE7,'!!!')
12041 THEN
12042 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE7, ';
12043 END IF;
12044
12045 IF p_user_in_rec.GLOBAL_ATTRIBUTE8 <> FND_API.G_MISS_CHAR
12046 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE8,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE8,'!!!')
12047 THEN
12048 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE8, ';
12049 END IF;
12050
12051 IF p_user_in_rec.GLOBAL_ATTRIBUTE9 <> FND_API.G_MISS_CHAR
12052 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE9,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE9,'!!!')
12053 THEN
12054 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE9, ';
12055 END IF;
12056
12057 IF p_user_in_rec.GLOBAL_ATTRIBUTE10 <> FND_API.G_MISS_CHAR
12058 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE10,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE10,'!!!')
12059 THEN
12060 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE10, ';
12061 END IF;
12062
12063 IF p_user_in_rec.GLOBAL_ATTRIBUTE11 <> FND_API.G_MISS_CHAR
12064 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE11,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE11,'!!!')
12065 THEN
12066 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE11, ';
12067 END IF;
12068
12069 IF p_user_in_rec.GLOBAL_ATTRIBUTE12 <> FND_API.G_MISS_CHAR
12070 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE12,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE12,'!!!')
12071 THEN
12072 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE12, ';
12073 END IF;
12074
12075 IF p_user_in_rec.GLOBAL_ATTRIBUTE13 <> FND_API.G_MISS_CHAR
12076 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE13,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE13,'!!!')
12077 THEN
12078 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE13, ';
12079 END IF;
12080
12081 IF p_user_in_rec.GLOBAL_ATTRIBUTE14 <> FND_API.G_MISS_CHAR
12082 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE14,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE14,'!!!')
12083 THEN
12084 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE14, ';
12085 END IF;
12086
12087 IF p_user_in_rec.GLOBAL_ATTRIBUTE15 <> FND_API.G_MISS_CHAR
12088 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE15,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE15,'!!!')
12089 THEN
12090 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE15, ';
12091 END IF;
12092
12093 IF p_user_in_rec.GLOBAL_ATTRIBUTE16 <> FND_API.G_MISS_CHAR
12094 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE16,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE16,'!!!')
12095 THEN
12096 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE16, ';
12097 END IF;
12098
12099 IF p_user_in_rec.GLOBAL_ATTRIBUTE17 <> FND_API.G_MISS_CHAR
12100 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE17,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE17,'!!!')
12101 THEN
12102 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE17, ';
12103 END IF;
12104
12105 IF p_user_in_rec.GLOBAL_ATTRIBUTE18 <> FND_API.G_MISS_CHAR
12106 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE18,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE18,'!!!')
12107 THEN
12108 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE18, ';
12109 END IF;
12110
12111 IF p_user_in_rec.GLOBAL_ATTRIBUTE19 <> FND_API.G_MISS_CHAR
12112 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE19,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE19,'!!!')
12113 THEN
12114 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE19, ';
12115 END IF;
12116
12117 IF p_user_in_rec.GLOBAL_ATTRIBUTE20 <> FND_API.G_MISS_CHAR
12118 AND NVL(p_user_in_rec.GLOBAL_ATTRIBUTE20,'!!!') <> NVL(p_out_rec.GLOBAL_ATTRIBUTE20,'!!!')
12119 THEN
12120 l_attributes := l_attributes || 'GLOBAL_ATTRIBUTE20, ';
12121 END IF;
12122
12123 /**
12124 -- Bug 3613650 - Need not compare standard WHO columns
12125 --
12126 IF p_user_in_rec.CREATION_DATE <> FND_API.G_MISS_DATE
12127 AND NVL(p_user_in_rec.CREATION_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.CREATION_DATE,TO_DATE('2','j'))
12128 THEN
12129 l_attributes := l_attributes || 'CREATION_DATE, ';
12130 END IF;
12131
12132 IF p_user_in_rec.CREATED_BY <> FND_API.G_MISS_NUM
12133 AND NVL(p_user_in_rec.CREATED_BY,-99) <> NVL(p_out_rec.CREATED_BY,-99)
12134 THEN
12135 l_attributes := l_attributes || 'CREATED_BY, ';
12136 END IF;
12137
12138 IF p_user_in_rec.LAST_UPDATE_DATE <> FND_API.G_MISS_DATE
12139 AND NVL(p_user_in_rec.LAST_UPDATE_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.LAST_UPDATE_DATE,TO_DATE('2','j'))
12140 THEN
12141 l_attributes := l_attributes || 'LAST_UPDATE_DATE, ';
12142 END IF;
12143
12144 IF p_user_in_rec.LAST_UPDATED_BY <> FND_API.G_MISS_NUM
12145 AND NVL(p_user_in_rec.LAST_UPDATED_BY,-99) <> NVL(p_out_rec.LAST_UPDATED_BY,-99)
12146 THEN
12147 l_attributes := l_attributes || 'LAST_UPDATED_BY, ';
12148 END IF;
12149
12150 IF p_user_in_rec.LAST_UPDATE_LOGIN <> FND_API.G_MISS_NUM
12151 AND NVL(p_user_in_rec.LAST_UPDATE_LOGIN,-99) <> NVL(p_out_rec.LAST_UPDATE_LOGIN,-99)
12152 THEN
12153 l_attributes := l_attributes || 'LAST_UPDATE_LOGIN, ';
12154 END IF;
12155
12156 IF p_user_in_rec.PROGRAM_APPLICATION_ID <> FND_API.G_MISS_NUM
12157 AND NVL(p_user_in_rec.PROGRAM_APPLICATION_ID,-99) <> NVL(p_out_rec.PROGRAM_APPLICATION_ID,-99)
12158 THEN
12159 l_attributes := l_attributes || 'PROGRAM_APPLICATION_ID, ';
12160 END IF;
12161
12162 IF p_user_in_rec.PROGRAM_ID <> FND_API.G_MISS_NUM
12163 AND NVL(p_user_in_rec.PROGRAM_ID,-99) <> NVL(p_out_rec.PROGRAM_ID,-99)
12164 THEN
12165 l_attributes := l_attributes || 'PROGRAM_ID, ';
12166 END IF;
12167
12168 IF p_user_in_rec.PROGRAM_UPDATE_DATE <> FND_API.G_MISS_DATE
12169 AND NVL(p_user_in_rec.PROGRAM_UPDATE_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.PROGRAM_UPDATE_DATE,TO_DATE('2','j'))
12170 THEN
12171 l_attributes := l_attributes || 'PROGRAM_UPDATE_DATE, ';
12172 END IF;
12173
12174 IF p_user_in_rec.REQUEST_ID <> FND_API.G_MISS_NUM
12175 AND NVL(p_user_in_rec.REQUEST_ID,-99) <> NVL(p_out_rec.REQUEST_ID,-99)
12176 THEN
12177 l_attributes := l_attributes || 'REQUEST_ID, ';
12178 END IF;
12179 **/
12180
12181 IF p_user_in_rec.BATCH_ID <> FND_API.G_MISS_NUM
12182 AND NVL(p_user_in_rec.BATCH_ID,-99) <> NVL(p_out_rec.BATCH_ID,-99)
12183 THEN
12184 l_attributes := l_attributes || 'BATCH_ID, ';
12185 END IF;
12186
12187 IF p_user_in_rec.HASH_VALUE <> FND_API.G_MISS_NUM
12188 AND NVL(p_user_in_rec.HASH_VALUE,-99) <> NVL(p_out_rec.HASH_VALUE,-99)
12189 THEN
12190 l_attributes := l_attributes || 'HASH_VALUE, ';
12191 END IF;
12192
12193 IF p_user_in_rec.SOURCE_HEADER_ID <> FND_API.G_MISS_NUM
12194 AND NVL(p_user_in_rec.SOURCE_HEADER_ID,-99) <> NVL(p_out_rec.SOURCE_HEADER_ID,-99)
12195 THEN
12196 l_attributes := l_attributes || 'SOURCE_HEADER_ID, ';
12197 END IF;
12198
12199 IF p_user_in_rec.NUMBER_OF_LPN <> FND_API.G_MISS_NUM
12200 AND NVL(p_user_in_rec.NUMBER_OF_LPN,-99) <> NVL(p_out_rec.NUMBER_OF_LPN,-99)
12201 THEN
12202 l_attributes := l_attributes || 'NUMBER_OF_LPN, ';
12203 END IF;
12204
12205 IF p_user_in_rec.COD_AMOUNT <> FND_API.G_MISS_NUM
12206 AND NVL(p_user_in_rec.COD_AMOUNT,-99) <> NVL(p_out_rec.COD_AMOUNT,-99)
12207 THEN
12208 l_attributes := l_attributes || 'COD_AMOUNT, ';
12209 END IF;
12210
12211 IF p_user_in_rec.COD_CURRENCY_CODE <> FND_API.G_MISS_CHAR
12212 AND NVL(p_user_in_rec.COD_CURRENCY_CODE,'!!!') <> NVL(p_out_rec.COD_CURRENCY_CODE,'!!!')
12213 THEN
12214 l_attributes := l_attributes || 'COD_CURRENCY_CODE, ';
12215 END IF;
12216
12217 IF p_user_in_rec.COD_REMIT_TO <> FND_API.G_MISS_CHAR
12218 AND NVL(p_user_in_rec.COD_REMIT_TO,'!!!') <> NVL(p_out_rec.COD_REMIT_TO,'!!!')
12219 THEN
12220 l_attributes := l_attributes || 'COD_REMIT_TO, ';
12221 END IF;
12222
12223 IF p_user_in_rec.COD_CHARGE_PAID_BY <> FND_API.G_MISS_CHAR
12224 AND NVL(p_user_in_rec.COD_CHARGE_PAID_BY,'!!!') <> NVL(p_out_rec.COD_CHARGE_PAID_BY,'!!!')
12225 THEN
12226 l_attributes := l_attributes || 'COD_CHARGE_PAID_BY, ';
12227 END IF;
12228
12229 IF p_user_in_rec.PROBLEM_CONTACT_REFERENCE <> FND_API.G_MISS_CHAR
12230 AND NVL(p_user_in_rec.PROBLEM_CONTACT_REFERENCE,'!!!') <> NVL(p_out_rec.PROBLEM_CONTACT_REFERENCE,'!!!')
12231 THEN
12232 l_attributes := l_attributes || 'PROBLEM_CONTACT_REFERENCE, ';
12233 END IF;
12234
12235 IF p_user_in_rec.PORT_OF_LOADING <> FND_API.G_MISS_CHAR
12236 AND NVL(p_user_in_rec.PORT_OF_LOADING,'!!!') <> NVL(p_out_rec.PORT_OF_LOADING,'!!!')
12237 THEN
12238 l_attributes := l_attributes || 'PORT_OF_LOADING, ';
12239 END IF;
12240
12241 IF p_user_in_rec.PORT_OF_DISCHARGE <> FND_API.G_MISS_CHAR
12242 AND NVL(p_user_in_rec.PORT_OF_DISCHARGE,'!!!') <> NVL(p_out_rec.PORT_OF_DISCHARGE,'!!!')
12243 THEN
12244 l_attributes := l_attributes || 'PORT_OF_DISCHARGE, ';
12245 END IF;
12246
12247 IF p_user_in_rec.FTZ_NUMBER <> FND_API.G_MISS_CHAR
12248 AND NVL(p_user_in_rec.FTZ_NUMBER,'!!!') <> NVL(p_out_rec.FTZ_NUMBER,'!!!')
12249 THEN
12250 l_attributes := l_attributes || 'FTZ_NUMBER, ';
12251 END IF;
12252
12253 IF p_user_in_rec.ROUTED_EXPORT_TXN <> FND_API.G_MISS_CHAR
12254 AND NVL(p_user_in_rec.ROUTED_EXPORT_TXN,'!!!') <> NVL(p_out_rec.ROUTED_EXPORT_TXN,'!!!')
12255 THEN
12256 l_attributes := l_attributes || 'ROUTED_EXPORT_TXN, ';
12257 END IF;
12258
12259 IF p_user_in_rec.ENTRY_NUMBER <> FND_API.G_MISS_CHAR
12260 AND NVL(p_user_in_rec.ENTRY_NUMBER,'!!!') <> NVL(p_out_rec.ENTRY_NUMBER,'!!!')
12261 THEN
12262 l_attributes := l_attributes || 'ENTRY_NUMBER, ';
12263 END IF;
12264
12265 IF p_user_in_rec.ROUTING_INSTRUCTIONS <> FND_API.G_MISS_CHAR
12266 AND NVL(p_user_in_rec.ROUTING_INSTRUCTIONS,'!!!') <> NVL(p_out_rec.ROUTING_INSTRUCTIONS,'!!!')
12267 THEN
12268 l_attributes := l_attributes || 'ROUTING_INSTRUCTIONS, ';
12269 END IF;
12270
12271 IF p_user_in_rec.IN_BOND_CODE <> FND_API.G_MISS_CHAR
12272 AND NVL(p_user_in_rec.IN_BOND_CODE,'!!!') <> NVL(p_out_rec.IN_BOND_CODE,'!!!')
12273 THEN
12274 l_attributes := l_attributes || 'IN_BOND_CODE, ';
12275 END IF;
12276
12277 IF p_user_in_rec.SHIPPING_MARKS <> FND_API.G_MISS_CHAR
12278 AND NVL(p_user_in_rec.SHIPPING_MARKS,'!!!') <> NVL(p_out_rec.SHIPPING_MARKS,'!!!')
12279 THEN
12280 l_attributes := l_attributes || 'SHIPPING_MARKS, ';
12281 END IF;
12282
12283 IF p_user_in_rec.SERVICE_LEVEL <> FND_API.G_MISS_CHAR
12284 AND NVL(p_user_in_rec.SERVICE_LEVEL,'!!!') <> NVL(p_out_rec.SERVICE_LEVEL,'!!!')
12285 THEN
12286 l_attributes := l_attributes || 'SERVICE_LEVEL, ';
12287 END IF;
12288
12289 IF p_user_in_rec.MODE_OF_TRANSPORT <> FND_API.G_MISS_CHAR
12290 AND NVL(p_user_in_rec.MODE_OF_TRANSPORT,'!!!') <> NVL(p_out_rec.MODE_OF_TRANSPORT,'!!!')
12291 THEN
12292 l_attributes := l_attributes || 'MODE_OF_TRANSPORT, ';
12293 END IF;
12294
12295 IF p_user_in_rec.ASSIGNED_TO_FTE_TRIPS <> FND_API.G_MISS_CHAR
12296 AND NVL(p_user_in_rec.ASSIGNED_TO_FTE_TRIPS,'!!!') <> NVL(p_out_rec.ASSIGNED_TO_FTE_TRIPS,'!!!')
12297 THEN
12298 l_attributes := l_attributes || 'ASSIGNED_TO_FTE_TRIPS, ';
12299 END IF;
12300
12301 IF p_user_in_rec.AUTO_SC_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
12302 AND NVL(p_user_in_rec.AUTO_SC_EXCLUDE_FLAG,'!!!') <> NVL(p_out_rec.AUTO_SC_EXCLUDE_FLAG,'!!!')
12303 THEN
12304 l_attributes := l_attributes || 'AUTO_SC_EXCLUDE_FLAG, ';
12305 END IF;
12306
12307 IF p_user_in_rec.AUTO_AP_EXCLUDE_FLAG <> FND_API.G_MISS_CHAR
12308 AND NVL(p_user_in_rec.AUTO_AP_EXCLUDE_FLAG,'!!!') <> NVL(p_out_rec.AUTO_AP_EXCLUDE_FLAG,'!!!')
12309 THEN
12310 l_attributes := l_attributes || 'AUTO_AP_EXCLUDE_FLAG, ';
12311 END IF;
12312
12313 IF p_user_in_rec.AP_BATCH_ID <> FND_API.G_MISS_NUM
12314 AND NVL(p_user_in_rec.AP_BATCH_ID,-99) <> NVL(p_out_rec.AP_BATCH_ID,-99)
12315 THEN
12316 l_attributes := l_attributes || 'AP_BATCH_ID, ';
12317 END IF;
12318
12319 IF p_user_in_rec.ROWID <> FND_API.G_MISS_CHAR
12320 AND NVL(p_user_in_rec.ROWID,'!!!') <> NVL(p_out_rec.ROWID,'!!!')
12321 THEN
12322 l_attributes := l_attributes || 'ROWID, ';
12323 END IF;
12324
12325 IF p_user_in_rec.LOADING_ORDER_DESC <> FND_API.G_MISS_CHAR
12326 AND NVL(p_user_in_rec.LOADING_ORDER_DESC,'!!!') <> NVL(p_out_rec.LOADING_ORDER_DESC,'!!!')
12327 THEN
12328 l_attributes := l_attributes || 'LOADING_ORDER_DESC, ';
12329 END IF;
12330
12331 IF p_user_in_rec.ORGANIZATION_CODE <> FND_API.G_MISS_CHAR
12332 AND NVL(p_user_in_rec.ORGANIZATION_CODE,'!!!') <> NVL(p_out_rec.ORGANIZATION_CODE,'!!!')
12333 THEN
12334 l_attributes := l_attributes || 'ORGANIZATION_CODE, ';
12335 END IF;
12336
12337 IF p_user_in_rec.ULTIMATE_DROPOFF_LOCATION_CODE <> FND_API.G_MISS_CHAR
12338 AND NVL(p_user_in_rec.ULTIMATE_DROPOFF_LOCATION_CODE,'!!!') <> NVL(p_out_rec.ULTIMATE_DROPOFF_LOCATION_CODE,'!!!')
12339 THEN
12340 l_attributes := l_attributes || 'ULTIMATE_DROPOFF_LOCATION_CODE, ';
12341 END IF;
12342
12343 IF p_user_in_rec.INITIAL_PICKUP_LOCATION_CODE <> FND_API.G_MISS_CHAR
12344 AND NVL(p_user_in_rec.INITIAL_PICKUP_LOCATION_CODE,'!!!') <> NVL(p_out_rec.INITIAL_PICKUP_LOCATION_CODE,'!!!')
12345 THEN
12346 l_attributes := l_attributes || 'INITIAL_PICKUP_LOCATION_CODE, ';
12347 END IF;
12348
12349 IF p_user_in_rec.CUSTOMER_NUMBER <> FND_API.G_MISS_CHAR
12350 AND NVL(p_user_in_rec.CUSTOMER_NUMBER,'!!!') <> NVL(p_out_rec.CUSTOMER_NUMBER,'!!!')
12351 THEN
12352 l_attributes := l_attributes || 'CUSTOMER_NUMBER, ';
12353 END IF;
12354
12355 IF p_user_in_rec.INTMED_SHIP_TO_LOCATION_CODE <> FND_API.G_MISS_CHAR
12356 AND NVL(p_user_in_rec.INTMED_SHIP_TO_LOCATION_CODE,'!!!') <> NVL(p_out_rec.INTMED_SHIP_TO_LOCATION_CODE,'!!!')
12357 THEN
12358 l_attributes := l_attributes || 'INTMED_SHIP_TO_LOCATION_CODE, ';
12359 END IF;
12360
12361 IF p_user_in_rec.POOLED_SHIP_TO_LOCATION_CODE <> FND_API.G_MISS_CHAR
12362 AND NVL(p_user_in_rec.POOLED_SHIP_TO_LOCATION_CODE,'!!!') <> NVL(p_out_rec.POOLED_SHIP_TO_LOCATION_CODE,'!!!')
12363 THEN
12364 l_attributes := l_attributes || 'POOLED_SHIP_TO_LOCATION_CODE, ';
12365 END IF;
12366
12367 IF p_user_in_rec.CARRIER_CODE <> FND_API.G_MISS_CHAR
12368 AND NVL(p_user_in_rec.CARRIER_CODE,'!!!') <> NVL(p_out_rec.CARRIER_CODE,'!!!')
12369 THEN
12370 l_attributes := l_attributes || 'CARRIER_CODE, ';
12371 END IF;
12372
12373 IF p_user_in_rec.SHIP_METHOD_NAME <> FND_API.G_MISS_CHAR
12374 AND NVL(p_user_in_rec.SHIP_METHOD_NAME,'!!!') <> NVL(p_out_rec.SHIP_METHOD_NAME,'!!!')
12375 THEN
12376 l_attributes := l_attributes || 'SHIP_METHOD_NAME, ';
12377 END IF;
12378
12379 IF p_user_in_rec.FREIGHT_TERMS_NAME <> FND_API.G_MISS_CHAR
12380 AND NVL(p_user_in_rec.FREIGHT_TERMS_NAME,'!!!') <> NVL(p_out_rec.FREIGHT_TERMS_NAME,'!!!')
12381 THEN
12382 l_attributes := l_attributes || 'FREIGHT_TERMS_NAME, ';
12383 END IF;
12384
12385 IF p_user_in_rec.FOB_NAME <> FND_API.G_MISS_CHAR
12386 AND NVL(p_user_in_rec.FOB_NAME,'!!!') <> NVL(p_out_rec.FOB_NAME,'!!!')
12387 THEN
12388 l_attributes := l_attributes || 'FOB_NAME, ';
12389 END IF;
12390
12391 IF p_user_in_rec.FOB_LOCATION_CODE <> FND_API.G_MISS_CHAR
12392 AND NVL(p_user_in_rec.FOB_LOCATION_CODE,'!!!') <> NVL(p_out_rec.FOB_LOCATION_CODE,'!!!')
12393 THEN
12394 l_attributes := l_attributes || 'FOB_LOCATION_CODE, ';
12395 END IF;
12396
12397 IF p_user_in_rec.WEIGHT_UOM_DESC <> FND_API.G_MISS_CHAR
12398 AND NVL(p_user_in_rec.WEIGHT_UOM_DESC,'!!!') <> NVL(p_out_rec.WEIGHT_UOM_DESC,'!!!')
12399 THEN
12400 l_attributes := l_attributes || 'WEIGHT_UOM_DESC, ';
12401 END IF;
12402
12403 IF p_user_in_rec.VOLUME_UOM_DESC <> FND_API.G_MISS_CHAR
12404 AND NVL(p_user_in_rec.VOLUME_UOM_DESC,'!!!') <> NVL(p_out_rec.VOLUME_UOM_DESC,'!!!')
12405 THEN
12406 l_attributes := l_attributes || 'VOLUME_UOM_DESC, ';
12407 END IF;
12408
12409 IF p_user_in_rec.CURRENCY_NAME <> FND_API.G_MISS_CHAR
12410 AND NVL(p_user_in_rec.CURRENCY_NAME,'!!!') <> NVL(p_out_rec.CURRENCY_NAME,'!!!')
12411 THEN
12412 l_attributes := l_attributes || 'CURRENCY_NAME, ';
12413 END IF;
12414
12415 IF p_user_in_rec.SHIPMENT_DIRECTION <> FND_API.G_MISS_CHAR
12416 AND NVL(p_user_in_rec.SHIPMENT_DIRECTION,'!!!') <> NVL(p_out_rec.SHIPMENT_DIRECTION,'!!!')
12417 THEN
12418 l_attributes := l_attributes || 'SHIPMENT_DIRECTION, ';
12419 END IF;
12420
12421 IF p_user_in_rec.VENDOR_ID <> FND_API.G_MISS_NUM
12422 AND NVL(p_user_in_rec.VENDOR_ID,-99) <> NVL(p_out_rec.VENDOR_ID,-99)
12423 THEN
12424 l_attributes := l_attributes || 'VENDOR_ID, ';
12425 END IF;
12426
12427 IF p_user_in_rec.PARTY_ID <> FND_API.G_MISS_NUM
12428 AND NVL(p_user_in_rec.PARTY_ID,-99) <> NVL(p_out_rec.PARTY_ID,-99)
12429 THEN
12430 l_attributes := l_attributes || 'PARTY_ID, ';
12431 END IF;
12432
12433 IF p_user_in_rec.ROUTING_RESPONSE_ID <> FND_API.G_MISS_NUM
12434 AND NVL(p_user_in_rec.ROUTING_RESPONSE_ID,-99) <> NVL(p_out_rec.ROUTING_RESPONSE_ID,-99)
12435 THEN
12436 l_attributes := l_attributes || 'ROUTING_RESPONSE_ID, ';
12437 END IF;
12438
12439 IF p_user_in_rec.RCV_SHIPMENT_HEADER_ID <> FND_API.G_MISS_NUM
12440 AND NVL(p_user_in_rec.RCV_SHIPMENT_HEADER_ID,-99) <> NVL(p_out_rec.RCV_SHIPMENT_HEADER_ID,-99)
12441 THEN
12442 l_attributes := l_attributes || 'RCV_SHIPMENT_HEADER_ID, ';
12443 END IF;
12444
12445 IF p_user_in_rec.ASN_SHIPMENT_HEADER_ID <> FND_API.G_MISS_NUM
12446 AND NVL(p_user_in_rec.ASN_SHIPMENT_HEADER_ID,-99) <> NVL(p_out_rec.ASN_SHIPMENT_HEADER_ID,-99)
12447 THEN
12448 l_attributes := l_attributes || 'ASN_SHIPMENT_HEADER_ID, ';
12449 END IF;
12450
12451 IF p_user_in_rec.SHIPPING_CONTROL <> FND_API.G_MISS_CHAR
12452 AND NVL(p_user_in_rec.SHIPPING_CONTROL,'!!!') <> NVL(p_out_rec.SHIPPING_CONTROL,'!!!')
12453 THEN
12454 l_attributes := l_attributes || 'SHIPPING_CONTROL, ';
12455 END IF;
12456
12457 IF p_user_in_rec.TP_DELIVERY_NUMBER <> FND_API.G_MISS_NUM
12458 AND NVL(p_user_in_rec.TP_DELIVERY_NUMBER,-99) <> NVL(p_out_rec.TP_DELIVERY_NUMBER,-99)
12459 THEN
12460 l_attributes := l_attributes || 'TP_DELIVERY_NUMBER, ';
12461 END IF;
12462
12463 IF p_user_in_rec.EARLIEST_PICKUP_DATE <> FND_API.G_MISS_DATE
12464 AND NVL(p_user_in_rec.EARLIEST_PICKUP_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.EARLIEST_PICKUP_DATE,TO_DATE('2','j'))
12465 THEN
12466 l_attributes := l_attributes || 'EARLIEST_PICKUP_DATE, ';
12467 END IF;
12468
12469 IF p_user_in_rec.LATEST_PICKUP_DATE <> FND_API.G_MISS_DATE
12470 AND NVL(p_user_in_rec.LATEST_PICKUP_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.LATEST_PICKUP_DATE,TO_DATE('2','j'))
12471 THEN
12472 l_attributes := l_attributes || 'LATEST_PICKUP_DATE, ';
12473 END IF;
12474
12475 IF p_user_in_rec.EARLIEST_DROPOFF_DATE <> FND_API.G_MISS_DATE
12476 AND NVL(p_user_in_rec.EARLIEST_DROPOFF_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.EARLIEST_DROPOFF_DATE,TO_DATE('2','j'))
12477 THEN
12478 l_attributes := l_attributes || 'EARLIEST_DROPOFF_DATE, ';
12479 END IF;
12480
12481 IF p_user_in_rec.LATEST_DROPOFF_DATE <> FND_API.G_MISS_DATE
12482 AND NVL(p_user_in_rec.LATEST_DROPOFF_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.LATEST_DROPOFF_DATE,TO_DATE('2','j'))
12483 THEN
12484 l_attributes := l_attributes || 'LATEST_DROPOFF_DATE, ';
12485 END IF;
12486
12487 IF p_user_in_rec.IGNORE_FOR_PLANNING <> FND_API.G_MISS_CHAR
12488 AND NVL(p_user_in_rec.IGNORE_FOR_PLANNING,'!!!') <> NVL(p_out_rec.IGNORE_FOR_PLANNING,'!!!')
12489 THEN
12490 l_attributes := l_attributes || 'IGNORE_FOR_PLANNING, ';
12491 END IF;
12492
12493 IF p_user_in_rec.TP_PLAN_NAME <> FND_API.G_MISS_CHAR
12494 AND NVL(p_user_in_rec.TP_PLAN_NAME,'!!!') <> NVL(p_out_rec.TP_PLAN_NAME,'!!!')
12495 THEN
12496 l_attributes := l_attributes || 'TP_PLAN_NAME, ';
12497 END IF;
12498
12499 IF p_user_in_rec.WV_FROZEN_FLAG <> FND_API.G_MISS_CHAR
12500 AND NVL(p_user_in_rec.WV_FROZEN_FLAG,'!!!') <> NVL(p_out_rec.WV_FROZEN_FLAG,'!!!')
12501 THEN
12502 l_attributes := l_attributes || 'WV_FROZEN_FLAG, ';
12503 END IF;
12504
12505 IF p_user_in_rec.HASH_STRING <> FND_API.G_MISS_CHAR
12506 AND NVL(p_user_in_rec.HASH_STRING,'!!!') <> NVL(p_out_rec.HASH_STRING,'!!!')
12507 THEN
12508 l_attributes := l_attributes || 'HASH_STRING, ';
12509 END IF;
12510
12511 IF p_user_in_rec.DELIVERED_DATE <> FND_API.G_MISS_DATE
12512 AND NVL(p_user_in_rec.DELIVERED_DATE,TO_DATE('2','j')) <> NVL(p_out_rec.DELIVERED_DATE,TO_DATE('2','j'))
12513 THEN
12514 l_attributes := l_attributes || 'DELIVERED_DATE, ';
12515 END IF;
12516
12517 IF p_user_in_rec.PACKING_SLIP <> FND_API.G_MISS_CHAR
12518 AND NVL(p_user_in_rec.PACKING_SLIP,'!!!') <> NVL(p_out_rec.PACKING_SLIP,'!!!')
12519 THEN
12520 l_attributes := l_attributes || 'PACKING_SLIP, ';
12521 END IF;
12522
12523 IF l_debug_on THEN
12524 WSH_DEBUG_SV.log(l_module_name,'l_attributes',l_attributes);
12525 WSH_DEBUG_SV.log(l_module_name,'length(l_attributes)',length(l_attributes));
12526 END IF;
12527
12528
12529 IF l_attributes IS NULL THEN
12530 --no message to be shown to the user
12531 IF l_debug_on THEN
12532 WSH_DEBUG_SV.pop(l_module_name);
12533 END IF;
12534 --
12535 RETURN;
12536 ELSE
12537 Wsh_Utilities.process_message(
12538 p_entity => 'DLVY',
12539 p_entity_name => NVL(p_out_rec.NAME,p_out_rec.DELIVERY_ID),
12540 p_attributes => l_attributes,
12541 x_return_status => l_return_status
12542 );
12543
12544 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)
12545 THEN
12546 x_return_status := l_return_status;
12547 IF l_debug_on THEN
12548 wsh_debug_sv.logmsg(l_module_name,'Error returned by wsh_utilities.process_message',WSH_DEBUG_SV.C_PROC_LEVEL);
12549 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
12550 wsh_debug_sv.pop(l_module_name);
12551 END IF;
12552 return;
12553 ELSE
12554 x_return_status := wsh_util_core.G_RET_STS_WARNING;
12555 END IF;
12556 END IF;
12557
12558
12559
12560 IF l_debug_on THEN
12561 WSH_DEBUG_SV.pop(l_module_name);
12562 END IF;
12563 --
12564
12565
12566 EXCEPTION
12567 WHEN OTHERS THEN
12568 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
12569 --
12570 IF l_debug_on THEN
12571 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
12572 END IF;
12573 --
12574 END user_non_updatable_columns;
12575
12576 --Function added for Bugfix 3562492
12577 --========================================================================
12578 -- FUNCTION : Is_del_eligible_pick
12579 --
12580 -- PARAMETERS:
12581 -- x_return_status return status
12582 -- p_delivery_id Delivery ID
12583 -- VERSION : current version 1.0
12584 -- initial version 1.0
12585 -- COMMENT : This Function checks whether a Delivery id is eligible for Pick Release
12586 -- , if a Delivery is eligible it returns TRUE else it returns FALSE.
12587 -- The return status of this Function is always Success except in case
12588 -- of unexpected error.
12589 --========================================================================
12590 FUNCTION Is_del_eligible_pick(
12591 p_delivery_id IN NUMBER,
12592 x_return_status OUT NOCOPY VARCHAR2)
12593 RETURN BOOLEAN
12594 IS
12595
12596 cursor c_detail (p_delivery_id NUMBER) is
12597 select 1
12598 from wsh_delivery_details wdd,
12599 wsh_delivery_assignments_v wda
12600 where wdd.delivery_detail_id = wda.delivery_detail_id
12601 and wdd.released_status in ('R','B','X')
12602 and nvl(wdd.replenishment_status,'C') = 'C' --bug# 6719369 (replenishment project)
12603 and wdd.source_code = 'OE'
12604 and wda.delivery_id = p_delivery_id
12605 and rownum =1;
12606
12607 l_del_det_exists NUMBER;
12608 l_debug_on BOOLEAN;
12609 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'IS_DEL_ELIGIBLE_PICK';
12610 l_is_del_eligible BOOLEAN;
12611
12612 BEGIN
12613 --
12614 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
12615 --
12616 IF l_debug_on IS NULL
12617 THEN
12618 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
12619 END IF;
12620 --
12621 x_return_status := wsh_util_core.G_RET_STS_SUCCESS;
12622 l_is_del_eligible := FALSE;
12623
12624 IF l_debug_on THEN
12625 WSH_DEBUG_SV.push(l_module_name);
12626 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id', p_delivery_id);
12627 END IF;
12628
12629 OPEN c_detail(p_delivery_id);
12630 FETCH c_detail into l_del_det_exists;
12631
12632 IF c_detail%FOUND THEN
12633 l_is_del_eligible := TRUE;
12634 END IF;
12635
12636 CLOSE c_detail;
12637 RETURN l_is_del_eligible;
12638
12639 EXCEPTION
12640 WHEN OTHERS THEN
12641 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12642 WSH_UTIL_CORE.default_handler('WSH_DELIVERIES_GRP.is_del_eligible_pick');
12643 IF l_debug_on THEN
12644 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
12645 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
12646 END IF;
12647 RETURN FALSE;
12648
12649 END Is_del_eligible_pick;
12650
12651 --OTM R12
12652 --------------------------------------------------------
12653 -- PROCEDURE GET_TRIP_INFORMATION
12654 --
12655 -- parameters: p_delivery_id delivery id to search for trip
12656 -- x_trip_info_rec record of trip information for the delivery
12657 -- x_return_status return status
12658 --
12659 -- Description: Find trip information for the Input delivery
12660 -- Added for EBS-OTM Integration
12661 --------------------------------------------------------
12662 PROCEDURE GET_TRIP_INFORMATION
12663 (p_delivery_id IN NUMBER,
12664 x_trip_info_rec OUT NOCOPY TRIP_INFO_REC_TYPE,
12665 x_return_status OUT NOCOPY VARCHAR2
12666 ) IS
12667
12668 --this query returns first trip for the delivery.
12669 CURSOR c_get_trip_info(p_del_id IN NUMBER) IS
12670 SELECT wt.trip_id,
12671 wt.name,
12672 wt.status_code
12673 FROM wsh_trip_stops wts,
12674 wsh_delivery_legs wdl,
12675 wsh_trips wt,
12676 wsh_new_deliveries wnd
12677 WHERE wnd.delivery_id = p_del_id
12678 AND wdl.delivery_id = wnd.delivery_id
12679 AND wdl.pick_up_stop_id = wts.stop_id
12680 AND wnd.initial_pickup_location_id = wts.stop_location_id
12681 AND wts.trip_id = wt.trip_id;
12682
12683 l_debug_on BOOLEAN;
12684 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_TRIP_INFORMATION';
12685
12686 BEGIN
12687
12688 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
12689 --
12690 IF l_debug_on IS NULL THEN
12691 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
12692 END IF;
12693 --
12694 IF l_debug_on THEN
12695 WSH_DEBUG_SV.push(l_module_name);
12696 WSH_DEBUG_SV.log(l_module_name, 'delivery id', p_delivery_id);
12697 END IF;
12698
12699 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
12700
12701 -- Need to validate the input.
12702 IF p_delivery_id IS NOT NULL THEN
12703
12704 OPEN c_get_trip_info(p_delivery_id);
12705 FETCH c_get_trip_info INTO x_trip_info_rec.trip_id,
12706 x_trip_info_rec.name,
12707 x_trip_info_rec.status_code;
12708 CLOSE c_get_trip_info;
12709
12710 END IF;
12711
12712
12713 IF l_debug_on THEN
12714 WSH_DEBUG_SV.log(l_module_name, 'trip id', x_trip_info_rec.trip_id);
12715 WSH_DEBUG_SV.log(l_module_name, 'trip name', x_trip_info_rec.name);
12716 WSH_DEBUG_SV.log(l_module_name, 'trip status code', x_trip_info_rec.status_code);
12717 WSH_DEBUG_SV.pop(l_module_name);
12718 END IF;
12719 EXCEPTION
12720
12721 WHEN Others THEN
12722 IF (c_get_trip_info%ISOPEN) THEN
12723 CLOSE c_get_trip_info;
12724 END IF;
12725 WSH_UTIL_CORE.Default_Handler('WSH_DELIVERY_VALIDATIONS.GET_TRIP_INFORMATION', l_module_name);
12726 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
12727
12728 IF l_debug_on THEN
12729 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
12730 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
12731 END IF;
12732 END GET_TRIP_INFORMATION;
12733
12734 -------------------------------------------------------------------------------
12735 -- Procedure: GET_DELIVERY_INFORMATION
12736 -- Parameters: x_delivery_rec: A record of all attributes of a Delivery Record
12737 -- p_delivery_id : delivery_id of the delivery that is to be copied
12738 -- Description: This procedure will copy the attributes of a delivery in wsh_new_deliveries
12739 -- and copy it to a record.
12740 -------------------------------------------------------------------------------
12741
12742 PROCEDURE GET_DELIVERY_INFORMATION
12743 (p_delivery_id IN NUMBER,
12744 x_delivery_rec OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type,
12745 x_return_status OUT NOCOPY VARCHAR2) IS
12746
12747 CURSOR c_get_delivery_info (p_delivery_id IN NUMBER) IS
12748 SELECT DELIVERY_ID
12749 ,NAME
12750 ,PLANNED_FLAG
12751 ,STATUS_CODE
12752 ,DELIVERY_TYPE
12753 ,INITIAL_PICKUP_LOCATION_ID
12754 ,ORGANIZATION_ID
12755 ,ULTIMATE_DROPOFF_LOCATION_ID
12756 ,CARRIER_ID
12757 ,SHIP_METHOD_CODE
12758 ,FREIGHT_TERMS_CODE
12759 ,FOB_CODE
12760 ,CURRENCY_CODE
12761 ,SERVICE_LEVEL
12762 ,MODE_OF_TRANSPORT
12763 ,EARLIEST_PICKUP_DATE
12764 ,LATEST_PICKUP_DATE
12765 ,EARLIEST_DROPOFF_DATE
12766 ,LATEST_DROPOFF_DATE
12767 ,NVL(IGNORE_FOR_PLANNING, 'N')
12768 ,TP_PLAN_NAME
12769 ,WV_FROZEN_FLAG
12770 ,TMS_INTERFACE_FLAG
12771 ,TMS_VERSION_NUMBER
12772 FROM wsh_new_deliveries
12773 WHERE delivery_id = p_delivery_id;
12774
12775 l_debug_on BOOLEAN;
12776 --
12777 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_DELIVERY_INFORMATION';
12778
12779 BEGIN
12780
12781 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
12782 --
12783 IF l_debug_on IS NULL
12784 THEN
12785 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
12786 END IF;
12787 --
12788 IF l_debug_on THEN
12789 WSH_DEBUG_SV.push(l_module_name);
12790 WSH_DEBUG_SV.log(l_module_name,'p_delivery_id', p_delivery_id);
12791 END IF;
12792 --
12793
12794 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
12795
12796 OPEN c_get_delivery_info (p_delivery_id);
12797 FETCH c_get_delivery_info INTO x_delivery_rec.delivery_id,
12798 x_delivery_rec.name,
12799 x_delivery_rec.planned_flag,
12800 x_delivery_rec.status_code,
12801 x_delivery_rec.delivery_type,
12802 x_delivery_rec.initial_pickup_location_id,
12803 x_delivery_rec.organization_id,
12804 x_delivery_rec.ultimate_dropoff_location_id,
12805 x_delivery_rec.carrier_id,
12806 x_delivery_rec.ship_method_code,
12807 x_delivery_rec.freight_terms_code,
12808 x_delivery_rec.fob_code,
12809 x_delivery_rec.currency_code,
12810 x_delivery_rec.service_level,
12811 x_delivery_rec.mode_of_transport,
12812 x_delivery_rec.earliest_pickup_date,
12813 x_delivery_rec.latest_pickup_date,
12814 x_delivery_rec.earliest_dropoff_date,
12815 x_delivery_rec.latest_dropoff_date,
12816 x_delivery_rec.ignore_for_planning,
12817 x_delivery_rec.tp_plan_name,
12818 x_delivery_rec.wv_frozen_flag,
12819 x_delivery_rec.tms_interface_flag,
12820 x_delivery_rec.tms_version_number;
12821
12822 IF c_get_delivery_info%NOTFOUND THEN
12823
12824 CLOSE c_get_delivery_info;
12825 RAISE no_data_found;
12826
12827 END IF;
12828 CLOSE c_get_delivery_info;
12829
12830 IF l_debug_on THEN
12831 WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
12832 WSH_DEBUG_SV.pop(l_module_name);
12833 END IF;
12834
12835 EXCEPTION
12836 WHEN NO_DATA_FOUND THEN
12837 IF c_get_delivery_info%ISOPEN THEN
12838 CLOSE c_get_delivery_info;
12839 END IF;
12840
12841 FND_MESSAGE.Set_Name('WSH','WSH_DEL_NOT_FOUND');
12842 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12843 WSH_UTIL_CORE.ADD_MESSAGE(x_return_status,l_module_name);
12844 --
12845 IF l_debug_on THEN
12846 WSH_DEBUG_SV.logmsg(l_module_name,'NO_DATA_FOUND exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
12847 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:NO_DATA_FOUND');
12848 END IF;
12849 --
12850 WHEN OTHERS THEN
12851 IF c_get_delivery_info%ISOPEN THEN
12852 CLOSE c_get_delivery_info;
12853 END IF;
12854 --
12855 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
12856 --
12857 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATION.get_delivery_information',l_module_name);
12858 --
12859 IF l_debug_on THEN
12860 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
12861 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
12862 END IF;
12863 --
12864 END GET_DELIVERY_INFORMATION;
12865
12866 --END OTM R12
12867
12868 END WSH_DELIVERY_VALIDATIONS;