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