[Home] [Help]
PACKAGE BODY: APPS.WMS_DOCK_APPOINTMENTS_PUB
Source
1 PACKAGE BODY WMS_DOCK_APPOINTMENTS_PUB AS
2 /* $Header: WMSDKAPB.pls 120.8 2008/05/02 07:00:15 shikapoo ship $ */
3
4 --Global variable to hold the package name
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'WMS_DOCK_APPOINTMENTS_PUB';
6
7 --Global variable used in print_debug utility
8 G_VERSION_PRINTED BOOLEAN := FALSE;
9
10 g_debug NUMBER := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'), 0);
11
12 /* Debug Utility*/
13
14 PROCEDURE print_debug
15 (
16 p_err_msg VARCHAR2
17 , p_level NUMBER
18 ) IS
19 BEGIN
20 IF (g_debug = 1) THEN
21 IF(G_VERSION_PRINTED = FALSE ) THEN
22 inv_log_util.trace (
23 p_message => '$Header: WMSDKAPB.pls 120.8 2008/05/02 07:00:15 shikapoo ship $'
24 , p_module => G_PKG_NAME
25 , p_level => 9);
26 G_VERSION_PRINTED :=TRUE;
27 END IF;
28 inv_log_util.trace (
29 p_message => p_err_msg
30 , p_module => G_PKG_NAME
31 , p_level => p_level);
32 END IF;
33 --dbms_output.put_line(substr(p_err_msg,1,200));
34 END print_debug;
35
36 FUNCTION get_trip_stop
37 (
38 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
40 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
41 , p_dock_locator_id IN NUMBER)
42 RETURN NUMBER
43 IS
44 l_trip_stop NUMBER := -1;
45 BEGIN
46 SELECT trip_stop
47 INTO l_trip_stop
48 FROM wms_dock_appointments_b
49 WHERE dock_id = p_dock_locator_id
50 AND appointment_status = 2 -- occupied
51 AND start_time <= Sysdate
52 AND end_time >= Sysdate;
53
54 RETURN l_trip_stop;
55
56 EXCEPTION
57 WHEN no_data_found THEN
58 x_return_status := FND_API.G_RET_STS_ERROR;
59
60 FND_MESSAGE.SET_NAME('WMS', 'WMS_TRIP_STOP_NOT_FOUND');
61 FND_MSG_PUB.ADD;
62
63 FND_MSG_PUB.Count_And_Get
64 (p_count => x_msg_count,
65 p_data => x_msg_data
66 );
67
68 RETURN l_trip_stop;
69
70 WHEN OTHERS THEN
71 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
72 RETURN l_trip_stop;
73
74 END get_trip_stop;
75
76
77
78 PROCEDURE update_dock_appointment
79 (
80 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
81 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
82 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
83 p_dock_appointments_v_rec IN wms_dock_appointments_v%ROWTYPE
84 )
85 IS
86 BEGIN
87 SAVEPOINT update_dock_sp;
88 -- Initialize API return status to success
89 x_return_status := FND_API.G_RET_STS_SUCCESS;
90
91 UPDATE wms_dock_appointments_b
92 SET
93 APPOINTMENT_TYPE = p_dock_appointments_v_rec.APPOINTMENT_TYPE,
94 DOCK_ID = p_dock_appointments_v_rec.DOCK_ID,
95 ORGANIZATION_ID = p_dock_appointments_v_rec.ORGANIZATION_ID,
96 START_TIME = p_dock_appointments_v_rec.START_TIME,
97 END_TIME = p_dock_appointments_v_rec.END_TIME,
98 CARRIER_CODE = p_dock_appointments_v_rec.CARRIER_CODE,
99 TRIP_STOP = p_dock_appointments_v_rec.TRIP_STOP,
100 SOURCE_TYPE = p_dock_appointments_v_rec.SOURCE_TYPE,
101 SOURCE_HEADER_ID = p_dock_appointments_v_rec.SOURCE_HEADER_ID,
102 SOURCE_LINE_ID = p_dock_appointments_v_rec.SOURCE_LINE_ID,
103 CREATED_BY = p_dock_appointments_v_rec.CREATED_BY,
104 CREATION_DATE = p_dock_appointments_v_rec.CREATION_DATE,
105 LAST_UPDATED_BY = p_dock_appointments_v_rec.LAST_UPDATED_BY,
106 LAST_UPDATE_DATE = p_dock_appointments_v_rec.LAST_UPDATE_DATE,
107 LAST_UPDATE_LOGIN = p_dock_appointments_v_rec.LAST_UPDATE_LOGIN
108 WHERE
109 DOCK_APPOINTMENT_ID = p_dock_appointments_v_rec.DOCK_APPOINTMENT_ID;
110
111
112 UPDATE wms_dock_appointments_tl
113 SET
114 SUBJECT = p_dock_appointments_v_rec.SUBJECT,
115 DESCRIPTION = p_dock_appointments_v_rec.DESCRIPTION,
116 SOURCE_LANG = USERENV('LANG'),
117 CREATED_BY = p_dock_appointments_v_rec.CREATED_BY,
118 CREATION_DATE = p_dock_appointments_v_rec.CREATION_DATE,
119 LAST_UPDATED_BY = p_dock_appointments_v_rec.LAST_UPDATED_BY,
120 LAST_UPDATE_DATE = p_dock_appointments_v_rec.LAST_UPDATE_DATE,
121 LAST_UPDATE_LOGIN = p_dock_appointments_v_rec.LAST_UPDATE_LOGIN
122 WHERE
123 DOCK_APPOINTMENT_ID = p_dock_appointments_v_rec.dock_appointment_id
124 AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
125
126 EXCEPTION
127 WHEN OTHERS THEN
128 ROLLBACK TO update_dock_sp;
129 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
130
131 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_UPDATE_FAIL');
132 FND_MSG_PUB.ADD;
133
134 FND_MSG_PUB.Count_And_Get
135 (p_count => x_msg_count,
136 p_data => x_msg_data
137 );
138
139 END update_dock_appointment;
140
141
142 PROCEDURE update_rep_appointments
143 (
144 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
145 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
146 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
147 p_orig_id IN NUMBER,
148 p_dock_appointments_v_rec IN wms_dock_appointments_v%ROWTYPE
149 )
150 IS
151 BEGIN
152 SAVEPOINT update_rep_dock_sp;
153 -- Initialize API return status to success
154 x_return_status := FND_API.G_RET_STS_SUCCESS;
155
156 UPDATE wms_dock_appointments_b
157 SET
158 APPOINTMENT_TYPE = p_dock_appointments_v_rec.APPOINTMENT_TYPE,
159 DOCK_ID = p_dock_appointments_v_rec.DOCK_ID,
160 ORGANIZATION_ID = p_dock_appointments_v_rec.ORGANIZATION_ID,
161 START_TIME = trunc(start_time) + (p_dock_appointments_v_rec.START_TIME - trunc(p_dock_appointments_v_rec.START_TIME)),
162 END_TIME = trunc(end_time) + (p_dock_appointments_v_rec.END_TIME - trunc(p_dock_appointments_v_rec.END_TIME)),
163 CARRIER_CODE = p_dock_appointments_v_rec.CARRIER_CODE,
164 TRIP_STOP = p_dock_appointments_v_rec.TRIP_STOP,
165 SOURCE_TYPE = p_dock_appointments_v_rec.SOURCE_TYPE,
166 SOURCE_HEADER_ID = p_dock_appointments_v_rec.SOURCE_HEADER_ID,
167 SOURCE_LINE_ID = p_dock_appointments_v_rec.SOURCE_LINE_ID,
168 CREATED_BY = p_dock_appointments_v_rec.CREATED_BY,
169 CREATION_DATE = p_dock_appointments_v_rec.CREATION_DATE,
170 LAST_UPDATED_BY = p_dock_appointments_v_rec.LAST_UPDATED_BY,
171 LAST_UPDATE_DATE = p_dock_appointments_v_rec.LAST_UPDATE_DATE,
172 LAST_UPDATE_LOGIN = p_dock_appointments_v_rec.LAST_UPDATE_LOGIN
173 WHERE
174 REP_ORIGIN = p_orig_id;
175
176
177 UPDATE wms_dock_appointments_tl
178 SET
179 SUBJECT = p_dock_appointments_v_rec.SUBJECT,
180 DESCRIPTION = p_dock_appointments_v_rec.DESCRIPTION,
181 SOURCE_LANG = USERENV('LANG'),
182 CREATED_BY = p_dock_appointments_v_rec.CREATED_BY,
183 CREATION_DATE = p_dock_appointments_v_rec.CREATION_DATE,
184 LAST_UPDATED_BY = p_dock_appointments_v_rec.LAST_UPDATED_BY,
185 LAST_UPDATE_DATE = p_dock_appointments_v_rec.LAST_UPDATE_DATE,
186 LAST_UPDATE_LOGIN = p_dock_appointments_v_rec.LAST_UPDATE_LOGIN
187 WHERE
188 DOCK_APPOINTMENT_ID IN
189 (SELECT dock_appointment_id
190 FROM wms_dock_appointments_b
191 WHERE REP_ORIGIN = p_orig_id)
192 AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
193
194 EXCEPTION
195 WHEN OTHERS THEN
196 ROLLBACK TO update_rep_dock_sp;
197 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
198
199 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_UPDATE_REP_FAIL');
200 FND_MSG_PUB.ADD;
201
202 FND_MSG_PUB.Count_And_Get
203 (p_count => x_msg_count,
204 p_data => x_msg_data
205 );
206
207 END update_rep_appointments;
208
209
210 PROCEDURE insert_dock_appointment
211 (
212 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
213 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
214 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
215 , p_dock_appointments_v_rec IN wms_dock_appointments_v%ROWTYPE
216 )
217 IS
218 BEGIN
219 SAVEPOINT insert_dock_sp;
220 -- Initialize API return status to success
221 x_return_status := FND_API.G_RET_STS_SUCCESS;
222
223 INSERT INTO wms_dock_appointments_b
224 (DOCK_APPOINTMENT_ID,
225 APPOINTMENT_TYPE,
226 DOCK_ID,
227 ORGANIZATION_ID,
228 START_TIME,
229 END_TIME,
230 CARRIER_CODE,
231 TRIP_STOP,
232 SOURCE_TYPE,
233 SOURCE_HEADER_ID,
234 SOURCE_LINE_ID,
235 CREATED_BY,
236 CREATION_DATE,
237 LAST_UPDATED_BY,
238 LAST_UPDATE_DATE,
239 LAST_UPDATE_LOGIN,
240 REP_FREQUENCY,
241 REP_START_DATE,
242 REP_END_DATE,
243 REP_ORIGIN,
244 APPOINTMENT_STATUS)
245 VALUES
246 (p_dock_appointments_v_rec.DOCK_APPOINTMENT_ID,
247 p_dock_appointments_v_rec.APPOINTMENT_TYPE,
248 p_dock_appointments_v_rec.DOCK_ID,
249 p_dock_appointments_v_rec.ORGANIZATION_ID,
250 p_dock_appointments_v_rec.START_TIME,
251 p_dock_appointments_v_rec.END_TIME,
252 p_dock_appointments_v_rec.CARRIER_CODE,
253 p_dock_appointments_v_rec.TRIP_STOP,
254 p_dock_appointments_v_rec.SOURCE_TYPE,
255 p_dock_appointments_v_rec.SOURCE_HEADER_ID,
256 p_dock_appointments_v_rec.SOURCE_LINE_ID,
257 p_dock_appointments_v_rec.CREATED_BY,
258 p_dock_appointments_v_rec.CREATION_DATE,
259 p_dock_appointments_v_rec.LAST_UPDATED_BY,
260 p_dock_appointments_v_rec.LAST_UPDATE_DATE,
261 p_dock_appointments_v_rec.LAST_UPDATE_LOGIN,
262 p_dock_appointments_v_rec.REP_FREQUENCY,
263 p_dock_appointments_v_rec.REP_START_DATE,
264 p_dock_appointments_v_rec.REP_END_DATE,
265 p_dock_appointments_v_rec.DOCK_APPOINTMENT_ID,
266 p_dock_appointments_v_rec.APPOINTMENT_STATUS);
267
268 INSERT INTO wms_dock_appointments_tl
269 (DOCK_APPOINTMENT_ID,
270 SUBJECT,
271 DESCRIPTION,
272 LANGUAGE,
273 SOURCE_LANG,
274 CREATED_BY,
275 CREATION_DATE,
276 LAST_UPDATED_BY,
277 LAST_UPDATE_DATE,
278 LAST_UPDATE_LOGIN)
279 SELECT
280 p_dock_appointments_v_rec.DOCK_APPOINTMENT_ID,
281 p_dock_appointments_v_rec.SUBJECT,
282 p_dock_appointments_v_rec.DESCRIPTION,
283 l.language_code,
284 USERENV('LANG'),
285 p_dock_appointments_v_rec.CREATED_BY,
286 p_dock_appointments_v_rec.CREATION_DATE,
287 p_dock_appointments_v_rec.LAST_UPDATED_BY,
288 p_dock_appointments_v_rec.LAST_UPDATE_DATE,
289 p_dock_appointments_v_rec.LAST_UPDATE_LOGIN
290 FROM fnd_languages l
291 WHERE l.installed_flag IN ('I', 'B')
292 AND NOT exists
293 (SELECT NULL
294 FROM wms_dock_appointments_tl t
295 WHERE t.dock_appointment_id = p_dock_appointments_v_rec.dock_appointment_id
296 AND t.language = l.language_code);
297
298 EXCEPTION
299 WHEN OTHERS THEN
300 ROLLBACK TO insert_dock_sp;
301 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
302
303 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_INSERT_FAIL');
304 FND_MSG_PUB.ADD;
305
306 FND_MSG_PUB.Count_And_Get
307 (p_count => x_msg_count,
308 p_data => x_msg_data
309 );
310 END insert_dock_appointment;
311
312
313 PROCEDURE insert_rep_dock_appointments
314 (
315 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
316 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
317 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
318 , p_rep_orig_id IN NUMBER
319 , p_dock_appointments_v_rec IN wms_dock_appointments_v%ROWTYPE
320 )
321 IS
322 BEGIN
323 SAVEPOINT insert_rep_dock_sp;
324 -- Initialize API return status to success
325 x_return_status := FND_API.G_RET_STS_SUCCESS;
326
327 INSERT INTO wms_dock_appointments_b
328 (DOCK_APPOINTMENT_ID,
329 APPOINTMENT_TYPE,
330 DOCK_ID,
331 ORGANIZATION_ID,
332 START_TIME,
333 END_TIME,
334 CARRIER_CODE,
335 TRIP_STOP,
336 SOURCE_TYPE,
337 SOURCE_HEADER_ID,
338 SOURCE_LINE_ID,
339 CREATED_BY,
340 CREATION_DATE,
341 LAST_UPDATED_BY,
342 LAST_UPDATE_DATE,
343 LAST_UPDATE_LOGIN,
344 REP_FREQUENCY,
345 REP_START_DATE,
346 REP_END_DATE,
347 REP_ORIGIN,
348 APPOINTMENT_STATUS)
349 VALUES
350 (p_dock_appointments_v_rec.DOCK_APPOINTMENT_ID,
351 p_dock_appointments_v_rec.APPOINTMENT_TYPE,
352 p_dock_appointments_v_rec.DOCK_ID,
353 p_dock_appointments_v_rec.ORGANIZATION_ID,
354 p_dock_appointments_v_rec.START_TIME,
355 p_dock_appointments_v_rec.END_TIME,
356 p_dock_appointments_v_rec.CARRIER_CODE,
357 p_dock_appointments_v_rec.TRIP_STOP,
358 p_dock_appointments_v_rec.SOURCE_TYPE,
359 p_dock_appointments_v_rec.SOURCE_HEADER_ID,
360 p_dock_appointments_v_rec.SOURCE_LINE_ID,
361 p_dock_appointments_v_rec.CREATED_BY,
362 p_dock_appointments_v_rec.CREATION_DATE,
363 p_dock_appointments_v_rec.LAST_UPDATED_BY,
364 p_dock_appointments_v_rec.LAST_UPDATE_DATE,
365 p_dock_appointments_v_rec.LAST_UPDATE_LOGIN,
366 p_dock_appointments_v_rec.REP_FREQUENCY,
367 p_dock_appointments_v_rec.REP_START_DATE,
368 p_dock_appointments_v_rec.REP_END_DATE,
369 p_rep_orig_id,
370 p_dock_appointments_v_rec.APPOINTMENT_STATUS);
371
372 INSERT INTO wms_dock_appointments_tl
373 (DOCK_APPOINTMENT_ID,
374 SUBJECT,
375 DESCRIPTION,
376 LANGUAGE,
377 SOURCE_LANG,
378 CREATED_BY,
379 CREATION_DATE,
380 LAST_UPDATED_BY,
381 LAST_UPDATE_DATE,
382 LAST_UPDATE_LOGIN)
383 SELECT
384 p_dock_appointments_v_rec.DOCK_APPOINTMENT_ID,
385 p_dock_appointments_v_rec.SUBJECT,
386 p_dock_appointments_v_rec.DESCRIPTION,
387 l.language_code,
388 USERENV('LANG'),
389 p_dock_appointments_v_rec.CREATED_BY,
390 p_dock_appointments_v_rec.CREATION_DATE,
391 p_dock_appointments_v_rec.LAST_UPDATED_BY,
392 p_dock_appointments_v_rec.LAST_UPDATE_DATE,
393 p_dock_appointments_v_rec.last_update_login
394 FROM fnd_languages l
395 WHERE l.installed_flag IN ('I', 'B')
396 AND NOT exists
397 (SELECT NULL
398 FROM wms_dock_appointments_tl t
399 WHERE t.dock_appointment_id = p_dock_appointments_v_rec.dock_appointment_id
400 AND t.language = l.language_code);
401
402 EXCEPTION
403 WHEN OTHERS THEN
404 ROLLBACK TO insert_rep_dock_sp;
405 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
406
407 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_INSERT_REP_FAIL');
408 FND_MSG_PUB.ADD;
409
410 FND_MSG_PUB.Count_And_Get
411 (p_count => x_msg_count,
412 p_data => x_msg_data
413 );
414 END insert_rep_dock_appointments;
415
416
417
418 PROCEDURE delete_dock_appointment
419 (
420 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
421 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
422 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
423 , p_dock_appointment_id IN NUMBER
424 )
425 IS
426 BEGIN
427 SAVEPOINT delete_dock_sp;
428 -- Initialize API return status to success
429 x_return_status := FND_API.G_RET_STS_SUCCESS;
430
431 DELETE wms_dock_appointments_b
432 WHERE DOCK_APPOINTMENT_ID = p_dock_appointment_id;
433
434 DELETE wms_dock_appointments_tl
435 WHERE DOCK_APPOINTMENT_ID = p_dock_appointment_id;
436
437 EXCEPTION
438 WHEN OTHERS THEN
439 ROLLBACK TO delete_dock_sp;
440 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
441
442 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_DELETE_FAIL');
443 FND_MSG_PUB.ADD;
444
445 FND_MSG_PUB.Count_And_Get
446 (p_count => x_msg_count,
447 p_data => x_msg_data
448 );
449 END delete_dock_appointment;
450
451
452 PROCEDURE delete_rep_dock_appointment
453 (
454 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
455 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
456 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
457 , p_rep_orig_id IN NUMBER
458 )
459 IS
460 BEGIN
461 SAVEPOINT delete_rep_dock_sp;
462 -- Initialize API return status to success
463 x_return_status := FND_API.G_RET_STS_SUCCESS;
464
465 DELETE wms_dock_appointments_tl
466 WHERE dock_appointment_id IN
467 (SELECT dock_appointment_id
468 FROM wms_dock_appointments_b
469 WHERE REP_ORIGIN = p_rep_orig_id);
470
471 DELETE wms_dock_appointments_b
472 WHERE REP_ORIGIN = p_rep_orig_id;
473
474 EXCEPTION
475 WHEN OTHERS THEN
476 ROLLBACK TO delete_rep_dock_sp;
477 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
478
479 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_DELETE_REP_FAIL');
480 FND_MSG_PUB.ADD;
481
482 FND_MSG_PUB.Count_And_Get
483 (p_count => x_msg_count,
484 p_data => x_msg_data
485 );
486 END delete_rep_dock_appointment;
487
488 PROCEDURE ADD_LANGUAGE
489 IS
490 BEGIN
491 DELETE FROM WMS_DOCK_APPOINTMENTS_TL T
492 WHERE NOT exists
493 (SELECT NULL
494 FROM WMS_DOCK_APPOINTMENTS_B B
495 WHERE B.DOCK_APPOINTMENT_ID = T.DOCK_APPOINTMENT_ID
496 );
497
498 UPDATE WMS_DOCK_APPOINTMENTS_TL T
499 SET (
500 SUBJECT,
501 DESCRIPTION
502 ) = (SELECT
503 B.SUBJECT,
504 B.DESCRIPTION
505 FROM WMS_DOCK_APPOINTMENTS_TL B
506 WHERE B.DOCK_APPOINTMENT_ID = T.DOCK_APPOINTMENT_ID
507 AND B.LANGUAGE = T.SOURCE_LANG)
508 WHERE (
509 T.DOCK_APPOINTMENT_ID,
510 T.LANGUAGE
511 ) IN (SELECT
512 SUBT.DOCK_APPOINTMENT_ID,
513 SUBT.LANGUAGE
514 FROM WMS_DOCK_APPOINTMENTS_TL SUBB, WMS_DOCK_APPOINTMENTS_TL SUBT
515 WHERE SUBB.DOCK_APPOINTMENT_ID = SUBT.DOCK_APPOINTMENT_ID
516 AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
517 AND (SUBB.SUBJECT <> SUBT.SUBJECT
518 OR SUBB.DESCRIPTION <> SUBT.DESCRIPTION
522 );
519 OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
520 OR (SUBB.DESCRIPTION IS NOT NULL AND SUBT.DESCRIPTION IS NULL)
521 )
523
524 INSERT INTO WMS_DOCK_APPOINTMENTS_TL
525 (DOCK_APPOINTMENT_ID,
526 SUBJECT,
527 DESCRIPTION,
528 CREATED_BY,
529 CREATION_DATE,
530 LAST_UPDATED_BY,
531 LAST_UPDATE_DATE,
532 LAST_UPDATE_LOGIN,
533 LANGUAGE,
534 SOURCE_LANG
535 ) SELECT /*+ ORDERED */
536 B.DOCK_APPOINTMENT_ID,
537 B.SUBJECT,
538 B.DESCRIPTION,
539 B.CREATED_BY,
540 B.CREATION_DATE,
541 B.LAST_UPDATED_BY,
542 B.LAST_UPDATE_DATE,
543 B.LAST_UPDATE_LOGIN,
544 L.LANGUAGE_CODE,
545 B.SOURCE_LANG
546 FROM WMS_DOCK_APPOINTMENTS_TL B, FND_LANGUAGES L
547 WHERE L.INSTALLED_FLAG IN ('I', 'B')
548 AND B.LANGUAGE = userenv('LANG')
549 AND NOT exists
550 (SELECT NULL
551 FROM WMS_DOCK_APPOINTMENTS_TL T
552 WHERE T.DOCK_APPOINTMENT_ID = B.DOCK_APPOINTMENT_ID
553 AND T.LANGUAGE = L.LANGUAGE_CODE);
554
555 END ADD_LANGUAGE;
556
557
558 procedure LOCK_ROW (
559 x_dock_appointment_id in NUMBER,
560 x_carrier_code in VARCHAR2,
561 x_staging_lane_id in NUMBER,
562 x_trip_stop in NUMBER,
563 x_rep_start_date in DATE,
564 x_rep_end_date in DATE,
565 x_rep_origin in NUMBER,
566 x_rep_frequency in NUMBER,
567 x_appointment_status in NUMBER,
568 x_appointment_type in NUMBER,
569 x_dock_id in NUMBER,
570 x_organization_id in NUMBER,
571 x_start_time in DATE,
572 x_end_time in DATE,
573 x_source_type in NUMBER,
574 x_source_header_id in NUMBER,
575 x_source_line_id in NUMBER,
576 x_subject in VARCHAR2,
577 x_description in VARCHAR2
578 ) is
579 cursor c is select
580 CARRIER_CODE,
581 STAGING_LANE_ID,
582 TRIP_STOP,
583 REP_START_DATE,
584 REP_END_DATE,
585 REP_ORIGIN,
586 REP_FREQUENCY,
587 APPOINTMENT_STATUS,
588 APPOINTMENT_TYPE,
589 DOCK_ID,
590 ORGANIZATION_ID,
591 START_TIME,
592 END_TIME,
593 SOURCE_TYPE,
594 SOURCE_HEADER_ID,
595 SOURCE_LINE_ID
596 from WMS_DOCK_APPOINTMENTS_B
597 where DOCK_APPOINTMENT_ID = X_DOCK_APPOINTMENT_ID
598 for update of DOCK_APPOINTMENT_ID nowait;
599 recinfo c%rowtype;
600
601 cursor c1 is select
602 SUBJECT,
603 DESCRIPTION,
604 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
605 from WMS_DOCK_APPOINTMENTS_TL
606 where DOCK_APPOINTMENT_ID = X_DOCK_APPOINTMENT_ID
607 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
608 for update of DOCK_APPOINTMENT_ID nowait;
609 begin
610 open c;
611 fetch c into recinfo;
612 if (c%notfound) then
613 close c;
614 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
615 app_exception.raise_exception;
616 end if;
617 close c;
618 if ( ((recinfo.CARRIER_CODE = X_CARRIER_CODE)
619 OR ((recinfo.CARRIER_CODE is null) AND (X_CARRIER_CODE is null)))
620 AND ((recinfo.STAGING_LANE_ID = X_STAGING_LANE_ID)
621 OR ((recinfo.STAGING_LANE_ID is null) AND (X_STAGING_LANE_ID is null)))
622 AND ((recinfo.TRIP_STOP = X_TRIP_STOP)
623 OR ((recinfo.TRIP_STOP is null) AND (X_TRIP_STOP is null)))
624 AND ((recinfo.REP_START_DATE = X_REP_START_DATE)
625 OR ((recinfo.REP_START_DATE is null) AND (X_REP_START_DATE is null)))
626 AND ((recinfo.REP_END_DATE = X_REP_END_DATE)
627 OR ((recinfo.REP_END_DATE is null) AND (X_REP_END_DATE is null)))
628 AND ((recinfo.REP_ORIGIN = X_REP_ORIGIN)
629 OR ((recinfo.REP_ORIGIN is null) AND (X_REP_ORIGIN is null)))
630 AND ((recinfo.REP_FREQUENCY = X_REP_FREQUENCY)
631 OR ((recinfo.REP_FREQUENCY is null) AND (X_REP_FREQUENCY is null)))
632 AND ((recinfo.APPOINTMENT_STATUS = X_APPOINTMENT_STATUS)
633 OR ((recinfo.APPOINTMENT_STATUS is null) AND (X_APPOINTMENT_STATUS is null)))
634 AND (recinfo.APPOINTMENT_TYPE = X_APPOINTMENT_TYPE)
635 AND ((recinfo.DOCK_ID = X_DOCK_ID)
636 OR ((recinfo.DOCK_ID is null) AND (X_DOCK_ID is null)))
637 AND ((recinfo.ORGANIZATION_ID = X_ORGANIZATION_ID)
638 OR ((recinfo.ORGANIZATION_ID is null) AND (X_ORGANIZATION_ID is null)))
639 AND ((recinfo.START_TIME = X_START_TIME)
640 OR ((recinfo.START_TIME is null) AND (X_START_TIME is null)))
641 AND ((recinfo.END_TIME = X_END_TIME)
642 OR ((recinfo.END_TIME is null) AND (X_END_TIME is null)))
643 AND ((recinfo.SOURCE_TYPE = X_SOURCE_TYPE)
644 OR ((recinfo.SOURCE_TYPE is null) AND (X_SOURCE_TYPE is null)))
645 AND ((recinfo.SOURCE_HEADER_ID = X_SOURCE_HEADER_ID)
646 OR ((recinfo.SOURCE_HEADER_ID is null) AND (X_SOURCE_HEADER_ID is null)))
647 AND ((recinfo.SOURCE_LINE_ID = X_SOURCE_LINE_ID)
648 OR ((recinfo.SOURCE_LINE_ID is null) AND (X_SOURCE_LINE_ID is null)))
649 ) then
650 null;
651 else
652 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
656 for tlinfo in c1 loop
653 app_exception.raise_exception;
654 end if;
655
657 if (tlinfo.BASELANG = 'Y') then
658 if ( (tlinfo.SUBJECT = X_SUBJECT)
659 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
660 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
661 ) then
662 null;
663 else
664 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
665 app_exception.raise_exception;
666 end if;
667 end if;
668 end loop;
669 return;
670 end LOCK_ROW;
671
672 /*----------------------------------------------------------------------------*
673 * API Name : get_dock_appointment_range
674 * Description: Given appointment attributes and time window
675 fetches a list of dock appointments
676
677 *---------------------------------------------------------------------------*/
678
679 PROCEDURE get_dock_appointment_range (
680 x_return_status OUT NOCOPY VARCHAR2
681 , x_msg_count OUT NOCOPY NUMBER
682 , x_msg_data OUT NOCOPY VARCHAR2
683 , x_dock_appt_list OUT NOCOPY WMS_DOCK_APPOINTMENTS_PUB.dock_appt_tb_tp
684 , p_api_version IN NUMBER DEFAULT 1.0
685 , p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
686 , p_organization_id IN NUMBER
687 , p_start_date IN DATE
688 , p_end_date IN DATE
689 , p_appointment_type IN NUMBER DEFAULT NULL
690 , p_supplier_id IN NUMBER DEFAULT NULL
691 , p_supplier_site_id IN NUMBER DEFAULT NULL
692 , p_customer_id IN NUMBER DEFAULT NULL
693 , p_customer_site_id IN NUMBER DEFAULT NULL
694 , p_carrier_code IN VARCHAR2 DEFAULT NULL
695 , p_carrier_id IN VARCHAR2 DEFAULT NULL
696 , p_trip_stop_id IN NUMBER DEFAULT NULL
697 , p_waybill_number IN VARCHAR2 DEFAULT NULL
698 , p_bill_of_lading IN VARCHAR2 DEFAULT NULL
699 , p_master_bol IN VARCHAR2 DEFAULT NULL) IS
700
701
702 --Local variables
703 l_progress NUMBER; --Used to check progress of the procedure
704 l_no_trip_rec BOOLEAN := FALSE;
705 l_carrier_code WSH_CARRIERS.FREIGHT_CODE%TYPE;
706
707 BEGIN
708
709 l_progress :=10;
710
711 --Initialize the return status to success
712 x_return_status := FND_API.G_RET_STS_SUCCESS;
713
714 -- Initialize message list to clear any existing messages if p_init_msg_list is set to TRUE
715 IF fnd_api.To_Boolean(p_init_msg_list) THEN
716 fnd_msg_pub.initialize;
717 END IF;
718
719 l_progress := 20;
720
721 IF(g_debug = 1 ) THEN
722 print_debug('Entered procedure GET_DOCK_APPOINTMENT_RANGE at '||TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:DD:SS'),4);
723 print_debug('Organization ID' ||p_organization_id,4);
724 print_debug('Appointment start date' ||p_start_date,4);
725 print_debug('Appointment end date' ||p_end_date,4);
726 print_debug('Appointmnet Type' ||p_appointment_type,4);
727 print_debug('Supplier ID' ||p_supplier_id,4);
728 print_debug('Supplier Site ID' ||p_supplier_site_id,4);
729 print_debug('Customer ID' ||p_customer_id,4);
730 print_debug('Customer Site ID' ||p_customer_site_id,4);
731 print_debug('Carrier Code' ||p_carrier_code,4);
732 print_debug('Carrier Id' ||p_carrier_id,4);
733 print_debug('Trip Stop ID' ||p_trip_stop_id,4);
734 print_debug('Waybill Number' ||p_waybill_number,4);
735 print_debug('Bill of Lading' ||p_bill_of_lading,4);
736 print_debug('Master Bill of Lading' ||p_master_bol,4);
737 END IF;
738
739 --check if atleast one attribute other than time window has a NOT NULL value
740 IF( p_supplier_id IS NULL
741 AND p_supplier_site_id IS NULL
742 AND p_customer_id IS NULL
743 AND p_customer_site_id IS NULL
744 AND p_trip_stop_id IS NULL
745 AND(
746 ( p_carrier_code IS NULL
747 AND p_carrier_id IS NULL
748 )
749 OR p_end_date IS NULL
750 )
751 AND p_waybill_number IS NULL
752 AND p_bill_of_lading IS NULL
753 AND p_master_bol IS NULL
754 ) THEN
755
756 IF (g_debug = 1) THEN
757 print_debug('Failure in get_wms_dock_appointment_range at level'
758 ||l_progress||'.All the attributes passed are NULL', 4);
759 END IF;
760 fnd_message.set_name('INV', 'INV_MISSING_REQUIRED_PARAMETER');
761 fnd_msg_pub.add;
762 RAISE FND_API.G_EXC_ERROR;
763
764 --Check if organization id is null
765 ELSIF( p_organization_id IS NULL ) THEN
766 IF (g_debug = 1) THEN
767 print_debug('Failure in get_wms_dock_appointment_range at level'
768 ||l_progress||'.Organization ID is null', 4);
769 END IF;
770 fnd_message.set_name('INV', 'INV_ITM_MISS_ORG_ID');
774 --Check if p_start_date is null
771 fnd_msg_pub.add;
772 RAISE FND_API.G_EXC_ERROR;
773
775 ELSIF( p_start_date IS NULL ) THEN
776 IF (g_debug = 1) THEN
777 print_debug('Failure in get_wms_dock_appointment_range at level'
778 ||l_progress||'.p_start_date is null', 4);
779 END IF;
780 fnd_message.set_name('INV', 'INV_EAM_GEN_NULL_START_DATE');
781 fnd_msg_pub.add;
782 RAISE FND_API.G_EXC_ERROR;
783
784 -- Check if start date is less than end date
785 ELSIF( p_end_date is not null AND p_start_date > p_end_date ) THEN
786 IF (g_debug = 1) THEN
787 print_debug('Failure in get_wms_dock_appointment_range at level'
788 ||l_progress||'.p_start_date is greater than p_end_date', 4);
789 print_debug('Exiting procedure without fetching appointments', 4);
790 END IF;
791 --Bug #5309213
792 --Instead of raising an error, set the appointment list to NULL
793 --and return control to the calling module.
794 RETURN;
795 END IF;
796
797 l_progress := 30;
798
799 --If carrier id is passed instead of carrier code,
800 --fetching the carrier code from wsh_carriers table
801 BEGIN
802 IF( p_carrier_code IS NULL AND p_carrier_id IS NOT NULL ) THEN
803 SELECT FREIGHT_CODE INTO l_carrier_code
804 FROM WSH_CARRIERS
805 WHERE CARRIER_ID = p_carrier_id;
806 ELSIF (p_carrier_code IS NOT NULL) THEN
807 --If carrier code is passed then using the same carrier code
808 l_carrier_code := p_carrier_code;
809 END IF;
810 EXCEPTION
811 WHEN NO_DATA_FOUND THEN
812 NULL;
813 WHEN TOO_MANY_ROWS THEN
814 NULL;
815 WHEN OTHERS THEN
816 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
817 END;
818
819 l_progress := 40;
820
821 --If trip stop Id is not null then get the first appointment for that trip stop
822 IF( p_trip_stop_id IS NOT NULL ) THEN
823 IF (g_debug = 1) THEN
824 print_debug('Fetching dock appointments for Trip Stop ID:'||p_trip_stop_id, 4);
825 END IF;
826
827 BEGIN
828 SELECT dock_appointment_id
829 , start_time
830 , end_time
831 INTO x_dock_appt_list(1)
832 FROM wms_dock_appointments_b
833 WHERE
834 start_time=(SELECT min(start_time)
835 FROM wms_dock_appointments_b
836 WHERE organization_id = p_organization_id
837 AND appointment_type = NVL(p_appointment_type, appointment_type)
838 AND start_time >= p_start_date
839 AND trip_stop = p_trip_stop_id
840 )
841 AND organization_id = p_organization_id
842 AND appointment_type = NVL(p_appointment_type, appointment_type)
843 AND trip_stop = p_trip_stop_id
844 AND ROWNUM = 1;
845
846 l_progress := 50;
847 IF (g_debug = 1) THEN
848 print_debug('Fetched record for Trip Stop ID with appointment id:'||x_dock_appt_list(1).dock_appointment_id, 4);
849 END IF;
850 EXCEPTION
851 WHEN NO_DATA_FOUND THEN
852 --Setting the trip flag to TRUE to further process by carrier id
853 l_no_trip_rec := TRUE ;
854 WHEN OTHERS THEN
855 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
856 END;
857 END IF;--p_trip_stop_id not null
858
859 /* If trip stop Id is null or if no records are fetched for given trip stop id
860 * and carrier code or carrier id is not null then get all the appointments for the l_carrier_code
861 * within the given time window
862 */
863 IF((p_trip_stop_id IS NULL OR l_no_trip_rec = TRUE )AND l_carrier_code IS NOT NULL ) THEN
864 IF (g_debug = 1) THEN
865 print_debug('Fetching dock appointments for carrier code:'||l_carrier_code, 4);
866 END IF;
867 l_progress := 60;
868
869 SELECT dock_appointment_id
870 , start_time
871 , end_time
872 BULK COLLECT
873 INTO x_dock_appt_list
874 FROM wms_dock_appointments_b
875 WHERE organization_id = p_organization_id
876 AND appointment_type = NVL(p_appointment_type, appointment_type)
877 AND carrier_code = l_carrier_code
878 AND start_time >= p_start_date
879 AND end_time <= p_end_date
880 ORDER BY start_time;
881 l_progress := 70;
882 END IF; --p_trip_stop_id is null and l_carrier_code is not null
883
884 IF (g_debug = 1) THEN
885 print_debug('Procedure get_dock_appointment_range completed successfully at '||TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:DD:SS'), 4);
886 END IF;
887
888 EXCEPTION
889 WHEN FND_API.G_EXC_ERROR THEN
890 x_return_status := FND_API.G_RET_STS_ERROR;
891 IF (g_debug = 1) THEN
892 print_debug('Execution error occured in get_dock_appointment_range at level:'||l_progress, 4);
893 END IF;
894 fnd_msg_pub.count_and_get (
895 p_encoded => FND_API.G_FALSE
896 , p_count => x_msg_count
897 , p_data => x_msg_data );
898 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
899 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
900 fnd_message.set_name('WMS','WMS_UNEXPECTED_ERROR');
901 fnd_msg_pub.add;
902 IF (g_debug = 1) THEN
903 print_debug('Unexpected error occured in get_dock_appointment_range at level:'||l_progress, 4);
904 END IF;
905 fnd_msg_pub.count_and_get (
906 p_encoded => FND_API.G_FALSE
907 , p_count => x_msg_count
908 , p_data => x_msg_data );
909 WHEN OTHERS THEN
910 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
911 fnd_message.set_name('WMS','WMS_UNEXPECTED_ERROR');
912 fnd_msg_pub.add;
913 IF (g_debug = 1) THEN
914 print_debug('Unexpected error occured in get_dock_appointment_range at level:'||l_progress, 4);
915 END IF;
916 fnd_msg_pub.count_and_get (
917 p_encoded => FND_API.G_FALSE
918 , p_count => x_msg_count
919 , p_data => x_msg_data );
920 END get_dock_appointment_range;
921
922 PROCEDURE OTM_Dock_Appointment
923 (
924 p_dock_appt_tab IN DockApptTabType,
925 x_return_status OUT NOCOPY VARCHAR2,
926 x_msg_count OUT NOCOPY NUMBER,
930 l_dock_appointments_v_rec wms_dock_appointments_v%ROWTYPE;
927 x_msg_data OUT NOCOPY VARCHAR2
928 ) IS
929
931 l_dock_appointment_id NUMBER;
932 l_locator_id NUMBER;
933 l_disable_date DATE;
934 l_msg VARCHAR2(100);
935 l_return_status VARCHAR2(1);
936 l_msg_count NUMBER;
937 l_msg_data VARCHAR2(4000);
938
939 CURSOR Get_Appt_Info(v_trip_stop_id number, v_organization_id NUMBER) IS
940 SELECT dock_appointment_id
941 FROM wms_dock_appointments_b
942 WHERE trip_stop = v_trip_stop_id
943 AND organization_id = v_organization_id;
944
945 CURSOR Check_Valid_Locator(v_locator_id NUMBER, v_organization_id NUMBER) IS
946 SELECT inventory_location_id, disable_date
947 FROM mtl_item_locations
948 WHERE inventory_location_id = v_locator_id
949 AND organization_id = v_organization_id
950 AND inventory_location_type = 1
951 AND NVL(disable_date, SYSDATE + 1) > SYSDATE;
952
953 BEGIN
954 IF WMS_CONTROL.G_CURRENT_RELEASE_LEVEL >= 120001 THEN
955 -- Initialize the return status to success
956 x_return_status := FND_API.G_RET_STS_SUCCESS;
957
958 IF g_debug = 1 THEN
959 print_debug('In OTM_Dock_Appointment API ', 4);
960 print_debug('p_dock_appt_tab.COUNT : '|| p_dock_appt_tab.COUNT, 4);
961 END IF;
962 SAVEPOINT otm_dock_sp;
963
964 -- Loop through the dock appointments
965 FOR i in p_dock_appt_tab.FIRST..p_dock_appt_tab.LAST LOOP
966 -- Check for Required Parameters
967 IF p_dock_appt_tab(i).Organization_id IS NULL THEN
968 IF g_debug = 1 THEN
969 print_debug('Organization id is required',4);
970 END IF;
971 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_APPT_PARAM_REQD');
972 FND_MESSAGE.SET_TOKEN('PARAM', 'Organization');
973 FND_MSG_PUB.ADD;
974 RAISE FND_API.G_EXC_ERROR;
975 ELSIF p_dock_appt_tab(i).Trip_Stop_id IS NULL THEN
976 IF g_debug = 1 THEN
977 print_debug('Trip Stop id is required',4);
978 END IF;
979 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_APPT_PARAM_REQD');
980 FND_MESSAGE.SET_TOKEN('PARAM', 'Trip Stop');
981 FND_MSG_PUB.ADD;
982 RAISE FND_API.G_EXC_ERROR;
983 END IF;
984
985 -- Check for Valid dock name
986 IF p_dock_appt_tab(i).Dock_Name IS NOT NULL
987 AND (SUBSTR(p_dock_appt_tab(i).Dock_Name, 1, 5) <> 'DOCK-'
988 OR LENGTH(p_dock_appt_tab(i).Dock_Name) <=5) THEN
989 IF g_debug = 1 THEN
990 print_debug('Dock Door Name is Invalid : '||p_dock_appt_tab(i).Dock_Name ,4);
991 END IF;
992 FND_MESSAGE.SET_NAME('WMS', 'WMS_INVALID_DOCK_DOOR');
993 FND_MESSAGE.SET_TOKEN('DOCK_DOOR', p_dock_appt_tab(i).Dock_Name);
994 FND_MSG_PUB.ADD;
995 RAISE FND_API.G_EXC_ERROR;
996 END IF;
997
998 -- Extract Locator_id from Dock Name and validate the locator
999 -- for the Organization
1000 l_locator_id := SUBSTR(p_dock_appt_tab(i).Dock_Name, 6, 40);
1001 IF g_debug = 1 THEN
1002 print_debug('l_locator_id : '||l_locator_id, 4);
1003 print_debug('Trip Stop : '||p_dock_appt_tab(i).Trip_Stop_id||' , Organization_id : '||p_dock_appt_tab(i).Organization_id, 4);
1004 END IF;
1005
1006 -- Locator can be NULL for deleting appointments for a trip
1007 IF l_locator_id IS NOT NULL THEN
1008 OPEN Check_Valid_Locator(l_locator_id, p_dock_appt_tab(i).Organization_id);
1009 FETCH Check_Valid_Locator INTO l_dock_appointments_v_rec.dock_id, l_disable_date;
1010 IF Check_Valid_Locator%NOTFOUND THEN
1011 CLOSE Check_Valid_Locator;
1012 IF g_debug = 1 THEN
1013 print_debug('Dock Door is Invalid for this Organization ', 4);
1014 END IF;
1015 FND_MESSAGE.SET_NAME('WMS', 'WMS_INVALID_DOCK_DOOR_ORG');
1016 FND_MESSAGE.SET_TOKEN('DOCK_DOOR', p_dock_appt_tab(i).Dock_Name);
1017 FND_MSG_PUB.ADD;
1018 RAISE FND_API.G_EXC_ERROR;
1019 END IF;
1020 CLOSE Check_Valid_Locator;
1021
1022 -- End Date/Time should be greater than Start Date/Time
1023 IF p_dock_appt_tab(i).Start_Time > p_dock_appt_tab(i).End_Time
1024 OR p_dock_appt_tab(i).Start_Time < SYSDATE OR p_dock_appt_tab(i).End_Time < SYSDATE
1025 OR trunc(NVL(l_disable_date, p_dock_appt_tab(i).End_Time + 1)) <= trunc(p_dock_appt_tab(i).End_Time) THEN
1026 FND_MESSAGE.SET_NAME('WMS','WMS_INVALID_DATE');
1027 IF g_debug = 1 THEN
1028 print_debug('Invalid Dates entered', 4);
1029 END IF;
1030 FND_MESSAGE.SET_NAME('WMS', 'WMS_DOCK_APPT_DATE_INVALID');
1031 FND_MSG_PUB.ADD;
1032 RAISE FND_API.G_EXC_ERROR;
1033 END IF;
1034
1035 -- Check if appointment exists for the Locator
1036 OPEN Get_Appt_Info(p_dock_appt_tab(i).Trip_Stop_id, p_dock_appt_tab(i).Organization_id);
1037 FETCH Get_Appt_Info INTO l_dock_appointment_id;
1038 -- Populate appointment record
1039 l_dock_appointments_v_rec.dock_appointment_id := l_dock_appointment_id;
1040 l_dock_appointments_v_rec.trip_stop := p_dock_appt_tab(i).Trip_Stop_id;
1041 l_dock_appointments_v_rec.organization_id := p_dock_appt_tab(i).Organization_id;
1042 l_dock_appointments_v_rec.appointment_type := 2; -- Outbound
1043 l_dock_appointments_v_rec.start_time := p_dock_appt_tab(i).Start_Time;
1044 l_dock_appointments_v_rec.end_time := p_dock_appt_tab(i).End_Time;
1045 l_dock_appointments_v_rec.rep_origin := l_dock_appointments_v_rec.dock_appointment_id; -- same for Non-Repeating appts
1046 l_dock_appointments_v_rec.rep_frequency := 1; -- Never Repeat
1047 l_dock_appointments_v_rec.creation_date := SYSDATE;
1048 l_dock_appointments_v_rec.created_by := FND_GLOBAL.User_Id;
1049 l_dock_appointments_v_rec.last_updated_by := FND_GLOBAL.User_Id;
1050 l_dock_appointments_v_rec.last_update_date := SYSDATE;
1051 l_dock_appointments_v_rec.last_update_login := FND_GLOBAL.Login_Id;
1052
1053 -- Message text "Dock Appt for OTM Trip Stop <Trip Stop>"
1054 FND_MESSAGE.SET_NAME('WMS','WMS_DOCK_APPT_TRIP');
1055 FND_MESSAGE.SET_TOKEN('TRIP_STOP',p_dock_appt_tab(i).trip_stop_id);
1056 l_msg := FND_MESSAGE.GET;
1057 l_dock_appointments_v_rec.subject := 'OTM Planned Dock Appointment';
1058 l_dock_appointments_v_rec.description := l_msg;
1059
1060 IF Get_Appt_Info%NOTFOUND THEN
1061 SELECT wms_dock_appointments_s.nextval
1062 INTO l_dock_appointments_v_rec.DOCK_APPOINTMENT_ID
1063 FROM dual;
1064 l_dock_appointments_v_rec.rep_origin := l_dock_appointments_v_rec.dock_appointment_id; -- same for Non-Repeating appts
1065 IF g_debug = 1 THEN
1066 print_debug('Calling Insert_dock_appointment API', 4);
1067 END IF;
1068 Insert_dock_appointment
1069 ( x_return_status => l_return_status,
1070 x_msg_count => l_msg_count,
1071 x_msg_data => l_msg_data,
1072 p_dock_appointments_v_rec => l_dock_appointments_v_rec);
1073 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1074 IF g_debug = 1 THEN
1075 print_debug('Unable to create Dock Door appt, return status : '||l_return_status, 4);
1076 END IF;
1077 FND_MESSAGE.SET_NAME('WMS','WMS_DOCK_APPT_TRIP');
1078 FND_MSG_PUB.ADD;
1079 RAISE FND_API.G_EXC_ERROR;
1080 END IF;
1081 ELSE
1082 IF g_debug = 1 THEN
1083 print_debug('Calling Update_dock_appointment API', 4);
1084 END IF;
1085 Update_dock_appointment
1086 (p_dock_appointments_v_rec => l_dock_appointments_v_rec,
1087 x_return_status => l_return_status,
1088 x_msg_count => l_msg_count,
1089 x_msg_data => l_msg_data);
1090 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1091 IF g_debug = 1 THEN
1092 print_debug('Unable to update Dock Door appt, return status : '||l_return_status, 4);
1093 END IF;
1094 FND_MESSAGE.SET_NAME('WMS','WMS_DOCK_APPT_TRIP');
1095 FND_MSG_PUB.ADD;
1096 RAISE FND_API.G_EXC_ERROR;
1097 END IF;
1098 END IF;
1099 CLOSE Get_Appt_Info;
1100 ELSE
1101 -- Delete appointment for any locator for the Trip Stop and Organization
1102 OPEN Get_Appt_Info(p_dock_appt_tab(i).trip_stop_id, p_dock_appt_tab(i).organization_id);
1103 FETCH Get_Appt_Info INTO l_dock_appointment_id;
1104 CLOSE Get_Appt_Info;
1105 IF l_dock_appointment_id IS NOT NULL THEN
1106 IF g_debug = 1 THEN
1107 print_debug('Calling Delete_dock_appointment API', 4);
1108 END IF;
1109 DELETE_dock_appointment
1110 (x_return_status => l_return_status,
1111 x_msg_count => l_msg_count,
1112 x_msg_data => l_msg_data,
1113 p_dock_appointment_id => l_dock_appointment_id);
1114 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1115 IF g_debug = 1 THEN
1116 print_debug('Unable to delete Dock Door appt, return status : '||l_return_status, 4);
1117 END IF;
1118 FND_MESSAGE.SET_NAME('WMS','WMS_DOCK_APPT_TRIP');
1119 FND_MSG_PUB.ADD;
1120 RAISE FND_API.G_EXC_ERROR;
1121 END IF;
1122 END IF;
1123 END IF;
1124 END LOOP;
1125
1126 IF g_debug = 1 THEN
1127 print_debug('Exiting OTM_Dock_Door_Appointment API', 4);
1128 END IF;
1129 END IF;
1130
1131 EXCEPTION
1132 WHEN FND_API.G_EXC_ERROR THEN
1133 ROLLBACK TO OTM_DOCK_SP;
1134 IF Get_Appt_Info%ISOPEN THEN
1135 CLOSE Get_Appt_Info;
1136 END IF;
1137 IF Check_Valid_Locator%ISOPEN THEN
1138 CLOSE Check_Valid_Locator;
1139 END IF;
1140 IF g_debug = 1 THEN
1141 print_debug('Expected error occurred, Exiting OTM_Dock_Door_Appointment API', 4);
1142 END IF;
1143 x_return_status := FND_API.G_RET_STS_ERROR;
1144 FND_MSG_PUB.Count_And_Get
1145 (p_count => x_msg_count,
1146 p_data => x_msg_data);
1147 WHEN OTHERS THEN
1148 ROLLBACK TO OTM_DOCK_SP;
1149 IF Get_Appt_Info%ISOPEN THEN
1150 CLOSE Get_Appt_Info;
1151 END IF;
1152 IF Check_Valid_Locator%ISOPEN THEN
1153 CLOSE Check_Valid_Locator;
1154 END IF;
1155 IF g_debug = 1 THEN
1156 print_debug('Unexpected error occurred, Exiting OTM_Dock_Door_Appointment API', 4);
1157 print_debug(SQLERRM, 4);
1158 END IF;
1159 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1160 FND_MSG_PUB.Count_And_Get
1161 (p_count => x_msg_count,
1162 p_data => x_msg_data);
1163 END OTM_Dock_Appointment;
1164
1165 END WMS_DOCK_APPOINTMENTS_PUB;