[Home] [Help]
PACKAGE BODY: APPS.ASO_RESERVATION_INT
Source
1 PACKAGE BODY aso_reservation_int as
2 /* $Header: asoprsvb.pls 120.1 2005/06/29 12:37:52 appldev ship $ */
3 -- Start of Comments
4 -- Package name : aso_reservation_int
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- End of Comments
9
10 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_RESERVATION_INT';
11 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asoirsvb.pls';
12
13 -- *******************************************************
14 -- Start of Comments
15 -- *******************************************************
16 -- API Name: Create_reservation
17 -- Type : Public
18 -- Pre-Req :
19 -- Parameters:
20 -- IN
21 -- p_api_version_number IN NUMBER Required
22 -- p_init_msg_list IN VARCHAR2 Optional Default = FND_API_G_FALSE
23 -- p_commit IN VARCHAR2 Optional Default = FND_API.G_FALSE
24 -- P__Rec IN _Rec_Type Required
25 --
26 -- OUT NOCOPY /* file.sql.39 change */ :
27 -- x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
28 -- x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
29 -- x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
30 -- Version : Current version 2.0
31 -- End of Comments
32 --
33 PROCEDURE Create_reservation(
34 P_Api_Version_Number IN NUMBER,
35 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
36 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
37 p_line_rec IN aso_quote_pub.qte_line_rec_type,
38 p_shipment_rec IN aso_quote_pub.shipment_rec_type,
39 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
40 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
41 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
42 X_quantity_reserved OUT NOCOPY /* file.sql.39 change */ NUMBER,
43 X_reservation_id OUT NOCOPY /* file.sql.39 change */ NUMBER
44 )
45 IS
46 l_rsv inv_reservation_global.mtl_reservation_rec_type;
47 l_dummy_sn inv_reservation_global.serial_number_tbl_type;
48 l_dummy_sn_out inv_reservation_global.serial_number_tbl_type;
49 l_api_name CONSTANT VARCHAR2(30) := 'Create_Reservation' ;
50 l_api_version_number CONSTANT NUMBER := '1.0';
51 l_profile_name varchar2(240);
52 BEGIN
53 -- Standard Start of API savepoint
54 SAVEPOINT CREATE_RESERVATION_PUB;
55
56 -- Standard call to check for call compatibility.
57 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
58 p_api_version_number,
59 l_api_name,
60 G_PKG_NAME)
61 THEN
62 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
63 END IF;
64 -- Initialize message list if p_init_msg_list is set to TRUE.
65 IF FND_API.to_Boolean( p_init_msg_list )
66 THEN
67 FND_MSG_PUB.initialize;
68 END IF;
69
70 -- initialize G_Debug_Flag
71 ASO_DEBUG_PUB.G_Debug_Flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
72
73 l_rsv.reservation_id := NULL;
74 If p_shipment_rec.request_date = FND_API.G_MISS_DATE Or
75 p_shipment_rec.request_date IS NULL Then
76 l_rsv.requirement_date := SYSDATE ;
77 Else
78 l_rsv.requirement_date := p_shipment_rec.request_date ;
79 End If;
80
81 -- 11/2/2000 , For inventory organization fix, separating Master org
82 -- and ship from org , for reservation we are defaulting the value of
83 -- organization_id from profile ASO_SHIP_FROM_ORG_ID
84
85 l_rsv.organization_id :=
86 fnd_profile.value(name => 'ASO_SHIP_FROM_ORG_ID');
87 If l_rsv.organization_id IS NULL Then
88 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
89 select user_profile_option_name
90 into l_profile_name
91 from fnd_profile_options_vl
92 where profile_option_name = 'ASO_SHIP_FROM_ORG_ID';
93
94 FND_MESSAGE.Set_Name('ASO', 'ASO_API_NO_PROFILE_VALUE');
95 fnd_message.set_token('PROFILE', l_profile_name);
96 FND_MSG_PUB.ADD;
97 END IF;
98 raise FND_API.G_EXC_ERROR;
99 End If;
100
101 l_rsv.inventory_item_id := p_line_rec.inventory_item_id;
102 l_rsv.demand_source_type_id := FND_PROFILE.Value('ASO_TRX_SOURCE_TYPES');
103 If l_rsv.demand_source_type_id IS NULL Then
104 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
105 -- THEN
106 FND_MESSAGE.Set_Name('ASO', 'ASO_SOURCE_TYPE_NOT_DEFINED');
107 FND_MSG_PUB.ADD;
108 -- END IF;
109 RAISE FND_API.G_EXC_ERROR;
110 End If;
111
112 l_rsv.demand_source_name := 'ORDER_CAPTURE';
113 l_rsv.demand_source_header_id := p_line_rec.quote_header_id;
114 l_rsv.demand_source_line_id := p_shipment_rec.shipment_id;
115 l_rsv.demand_source_delivery := NULL ;
116 l_rsv.primary_uom_code := p_line_rec.uom_code;
117 l_rsv.primary_uom_id := NULL;
118 l_rsv.reservation_uom_code := NULL;
119 l_rsv.reservation_uom_id := NULL;
120 l_rsv.reservation_quantity := NULL;
121 l_rsv.primary_reservation_quantity:= p_shipment_rec.quantity;
122 l_rsv.detailed_quantity := NULL;
123 l_rsv.autodetail_group_id := NULL;
124 l_rsv.external_source_code := NULL;
125 l_rsv.external_source_line_id := NULL;
126 l_rsv.supply_source_type_id :=
127 inv_reservation_global.g_source_type_inv;
128 l_rsv.supply_source_header_id := NULL;
129 l_rsv.supply_source_line_id := NULL;
130 l_rsv.supply_source_name := NULL;
131 l_rsv.supply_source_line_detail := NULL;
132 l_rsv.revision := NULL;
133 l_rsv.subinventory_code := NULL;
134 l_rsv.subinventory_id := NULL;
135 l_rsv.locator_id := NULL;
136 l_rsv.lot_number := NULL;
137 l_rsv.lot_number_id := NULL;
138 l_rsv.pick_slip_number := NULL;
139 l_rsv.lpn_id := NULL;
140 l_rsv.attribute_category := NULL;
141 l_rsv.attribute1 := NULL;
142 l_rsv.attribute2 := NULL;
143 l_rsv.attribute3 := NULL;
144 l_rsv.attribute4 := NULL;
145 l_rsv.attribute5 := NULL;
146 l_rsv.attribute6 := NULL;
147 l_rsv.attribute7 := NULL;
148 l_rsv.attribute8 := NULL;
149 l_rsv.attribute9 := NULL;
150 l_rsv.attribute10 := NULL;
151 l_rsv.attribute11 := NULL;
152 l_rsv.attribute12 := NULL;
153 l_rsv.attribute13 := NULL;
154 l_rsv.attribute14 := NULL;
155 l_rsv.attribute15 := NULL;
156 l_rsv.ship_ready_flag := NULL ;
157
158 inv_reservation_pub.create_reservation(
159 p_api_version_number => 1.0 ,
160 p_init_msg_lst => fnd_api.g_false,
161 x_return_status => x_return_status,
162 x_msg_count => x_msg_count,
163 x_msg_data => x_msg_data,
164 p_rsv_rec => l_rsv,
165 p_serial_number => l_dummy_sn,
166 x_serial_number => l_dummy_sn_out,
167 p_partial_reservation_flag => fnd_api.g_true,
168 p_force_reservation_flag => fnd_api.g_true,
169 p_validation_flag => fnd_api.g_true,
170 x_quantity_reserved => x_quantity_reserved,
171 x_reservation_id => x_reservation_id);
172
173 l_dummy_sn := l_dummy_sn_out;
174
175 -- Check return status from the above procedure call
176 IF x_return_status = FND_API.G_RET_STS_ERROR then
177 raise FND_API.G_EXC_ERROR;
178 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
179 raise FND_API.G_EXC_UNEXPECTED_ERROR;
180 END IF;
181
182 -- Standard check for p_commit
183 IF FND_API.to_Boolean( p_commit )
184 THEN
185 COMMIT WORK;
186 END IF;
187
188
189 -- Standard call to get message count and if count is 1, get message info.
190 FND_MSG_PUB.Count_And_Get
191 ( p_count => x_msg_count,
192 p_data => x_msg_data );
193
194 EXCEPTION
195 WHEN FND_API.G_EXC_ERROR THEN
196 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
197 P_API_NAME => L_API_NAME
198 ,P_PKG_NAME => G_PKG_NAME
199 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
200 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
201 ,X_MSG_COUNT => X_MSG_COUNT
202 ,X_MSG_DATA => X_MSG_DATA
203 ,X_RETURN_STATUS => X_RETURN_STATUS);
204 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
205 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
206 P_API_NAME => L_API_NAME
207 ,P_PKG_NAME => G_PKG_NAME
208 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
209 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
210 ,X_MSG_COUNT => X_MSG_COUNT
211 ,X_MSG_DATA => X_MSG_DATA
212 ,X_RETURN_STATUS => X_RETURN_STATUS);
213
214 WHEN OTHERS THEN
215 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
216 P_API_NAME => L_API_NAME
217 ,P_PKG_NAME => G_PKG_NAME
218 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
219 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
220 ,X_MSG_COUNT => X_MSG_COUNT
221 ,X_MSG_DATA => X_MSG_DATA
222 ,X_RETURN_STATUS => X_RETURN_STATUS);
223 END create_reservation;
224
225 -- *******************************************************
226 -- Start of Comments
227 -- *******************************************************
228 -- API Name: Update_reservation
229 -- Type : Public
230 -- Pre-Req : reservation_id or (organization_id, inventory_item_id,
231 -- quote_header_id,quote_line_id) have to be provided.
232 -- If the value of an attribute of the existing reservation needs
233 -- update, the new value of the attribute should be assigned
234 -- to the attribute in p_shipment_rec.For attributes whose
235 -- value are not to be updated, the values of these attributes
236 -- in p_shipment_rec should be fnd_api.g_miss_xxx.
237 -- Parameters:
238
239 PROCEDURE Update_reservation(
240 P_Api_Version_Number IN NUMBER,
241 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
242 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
243 p_line_rec IN aso_quote_pub.qte_line_rec_type,
244 p_shipment_rec IN aso_quote_pub.shipment_rec_type,
245 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
246 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
247 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2 )
248 IS
249 l_rsv_old inv_reservation_global.mtl_reservation_rec_type;
250 l_rsv_new inv_reservation_global.mtl_reservation_rec_type;
251 l_dummy_sn inv_reservation_global.serial_number_tbl_type;
252 l_api_name CONSTANT VARCHAR2(30) := 'Update_Reservation';
253 l_api_version_number CONSTANT NUMBER := 1.0;
254 BEGIN
255 -- Standard Start of API savepoint
256 SAVEPOINT UPDATE_RESERVATION_PUB;
257
258 -- Standard call to check for call compatibility.
259 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
260 p_api_version_number,
261 l_api_name,
262 G_PKG_NAME)
263 THEN
264 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265 END IF;
266 -- Initialize message list if p_init_msg_list is set to TRUE.
267 IF FND_API.to_Boolean( p_init_msg_list )
268 THEN
269 FND_MSG_PUB.initialize;
270 END IF;
271
272
273 -- initialize G_Debug_Flag
274 ASO_DEBUG_PUB.G_Debug_Flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
275
276
277 l_rsv_old.reservation_id := p_shipment_rec.reservation_id;
278 l_rsv_old.organization_id := p_line_rec.organization_id;
279 l_rsv_old.inventory_item_id := p_line_rec.inventory_item_id;
280 l_rsv_old.demand_source_type_id :=
281 FND_PROFILE.Value('ASO_TRX_SOURCE_TYPES');
282 If l_rsv_old.demand_source_type_id IS NULL Then
283 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
284 -- THEN
285 FND_MESSAGE.Set_Name('ASO', 'ASO_SOURCE_TYPE_NOT_DEFINED');
286 FND_MSG_PUB.ADD;
287 -- END IF;
288 RAISE FND_API.G_EXC_ERROR;
289 End If;
290
291 l_rsv_old.demand_source_header_id := p_line_rec.quote_header_id;
292 l_rsv_old.demand_source_line_id := p_shipment_rec.shipment_id;
293
294 --specify the new values
295 l_rsv_new.primary_reservation_quantity := p_shipment_rec.quantity;
296 l_rsv_new.requirement_date := Nvl(p_shipment_rec.request_date,
297 Sysdate);
298
299 inv_reservation_pub.update_reservation(
300 p_api_version_number => 1.0,
301 p_init_msg_lst => fnd_api.g_false,
302 x_return_status => x_return_status,
303 x_msg_count => x_msg_count,
304 x_msg_data => x_msg_data,
305 p_original_rsv_rec => l_rsv_old,
306 p_to_rsv_rec => l_rsv_new,
307 p_original_serial_number => l_dummy_sn ,
308 p_to_serial_number => l_dummy_sn ,
309 p_validation_flag => fnd_api.g_true
310 );
311
312 -- Check return status from the above procedure call
313 IF x_return_status = FND_API.G_RET_STS_ERROR then
314 raise FND_API.G_EXC_ERROR;
315 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
316 raise FND_API.G_EXC_UNEXPECTED_ERROR;
317 END IF;
318
319 -- Standard check for p_commit
320 IF FND_API.to_Boolean( p_commit )
321 THEN
322 COMMIT WORK;
323 END IF;
324
325 -- Standard call to get message count and if count is 1, get message info.
326 FND_MSG_PUB.Count_And_Get
327 ( p_count => x_msg_count,
328 p_data => x_msg_data );
329 EXCEPTION
330 WHEN FND_API.G_EXC_ERROR THEN
331 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
332 P_API_NAME => L_API_NAME
333 ,P_PKG_NAME => G_PKG_NAME
334 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
335 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
336 ,X_MSG_COUNT => X_MSG_COUNT
337 ,X_MSG_DATA => X_MSG_DATA
338 ,X_RETURN_STATUS => X_RETURN_STATUS);
339 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
340 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
341 P_API_NAME => L_API_NAME
342 ,P_PKG_NAME => G_PKG_NAME
343 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
344 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
345 ,X_MSG_COUNT => X_MSG_COUNT
346 ,X_MSG_DATA => X_MSG_DATA
347 ,X_RETURN_STATUS => X_RETURN_STATUS);
348
349 WHEN OTHERS THEN
350 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
351 P_API_NAME => L_API_NAME
352 ,P_PKG_NAME => G_PKG_NAME
353 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
354 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
355 ,X_MSG_COUNT => X_MSG_COUNT
356 ,X_MSG_DATA => X_MSG_DATA
357 ,X_RETURN_STATUS => X_RETURN_STATUS);
358 END update_reservation ;
359
360 -- *******************************************************
361 -- Start of Comments
362 -- *******************************************************
363 -- API Name: Delete_reservation
364 -- Type : Public
365 -- Pre-Req :
366 -- Parameters:
367
368 PROCEDURE Delete_reservation(
369 P_Api_Version_Number IN NUMBER,
370 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
371 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
372 p_line_rec IN aso_quote_pub.qte_line_rec_type,
373 p_shipment_rec IN aso_quote_pub.shipment_rec_type,
374 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
375 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
376 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
377 )
378 IS
379 l_rsv inv_reservation_global.mtl_reservation_rec_type;
380 l_dummy_sn inv_reservation_global.serial_number_tbl_type;
381 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Reservation';
382 l_api_version_number CONSTANT NUMBER := 1.0;
383 BEGIN
384 -- Standard Start of API savepoint
385 SAVEPOINT DELETE_RESERVATION_PUB;
386
387 -- Standard call to check for call compatibility.
388 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
389 p_api_version_number,
390 l_api_name,
391 G_PKG_NAME)
392 THEN
393 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
394 END IF;
395 -- Initialize message list if p_init_msg_list is set to TRUE.
396 IF FND_API.to_Boolean( p_init_msg_list )
397 THEN
398 FND_MSG_PUB.initialize;
399 END IF;
400
401
402 -- initialize G_Debug_Flag
403 ASO_DEBUG_PUB.G_Debug_Flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
404
405
406 l_rsv.reservation_id := p_shipment_rec.reservation_id;
407 l_rsv.organization_id := p_line_rec.organization_id;
408 l_rsv.inventory_item_id := p_line_rec.inventory_item_id;
409 l_rsv.demand_source_type_id :=
410 FND_PROFILE.Value('ASO_TRX_SOURCE_TYPES');
411 If l_rsv.demand_source_type_id IS NULL Then
412 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
413 -- THEN
414 FND_MESSAGE.Set_Name('ASO', 'ASO_SOURCE_TYPE_NOT_DEFINED');
415 FND_MSG_PUB.ADD;
416 -- END IF;
417 RAISE FND_API.G_EXC_ERROR;
418 End If;
419
420 l_rsv.demand_source_header_id := p_line_rec.quote_header_id;
421 l_rsv.demand_source_line_id := p_shipment_rec.shipment_id;
422
423 inv_reservation_pub.delete_reservation(
424 p_api_version_number => 1.0,
425 p_init_msg_lst => fnd_api.g_false,
426 x_return_status => x_return_status,
427 x_msg_count => x_msg_count,
428 x_msg_data => x_msg_data,
429 p_rsv_rec => l_rsv,
430 p_serial_number => l_dummy_sn );
431
432 -- Check return status from the above procedure call
433 IF x_return_status = FND_API.G_RET_STS_ERROR then
434 raise FND_API.G_EXC_ERROR;
435 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
436 raise FND_API.G_EXC_UNEXPECTED_ERROR;
437 END IF;
438
439 -- Standard check for p_commit
440 IF FND_API.to_Boolean( p_commit )
441 THEN
442 COMMIT WORK;
443 END IF;
444
445 -- Standard call to get message count and if count is 1, get message info.
446 FND_MSG_PUB.Count_And_Get
447 ( p_count => x_msg_count,
448 p_data => x_msg_data );
449 EXCEPTION
450 WHEN FND_API.G_EXC_ERROR THEN
451 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
452 P_API_NAME => L_API_NAME
453 ,P_PKG_NAME => G_PKG_NAME
454 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
455 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
456 ,X_MSG_COUNT => X_MSG_COUNT
457 ,X_MSG_DATA => X_MSG_DATA
458 ,X_RETURN_STATUS => X_RETURN_STATUS);
459 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
460 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
461 P_API_NAME => L_API_NAME
462 ,P_PKG_NAME => G_PKG_NAME
463 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
464 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
465 ,X_MSG_COUNT => X_MSG_COUNT
466 ,X_MSG_DATA => X_MSG_DATA
467 ,X_RETURN_STATUS => X_RETURN_STATUS);
468
469 WHEN OTHERS THEN
470 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
471 P_API_NAME => L_API_NAME
472 ,P_PKG_NAME => G_PKG_NAME
473 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
474 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
475 ,X_MSG_COUNT => X_MSG_COUNT
476 ,X_MSG_DATA => X_MSG_DATA
477 ,X_RETURN_STATUS => X_RETURN_STATUS);
478 END delete_reservation;
479
480 PROCEDURE Transfer_Reservation(
481 P_Api_Version_Number IN NUMBER,
482 P_Init_msg_list In VARCHAR2 := FND_API.G_FALSE,
483 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
484 P_Header_rec IN ASO_QUOTE_PUB.qte_header_rec_type,
485 P_Line_rec IN ASO_QUOTE_PUB.qte_line_rec_type,
486 P_shipment_rec IN ASO_QUOTE_PUB.shipment_rec_type,
487 x_new_reservation_id OUT NOCOPY /* file.sql.39 change */ NUMBER ,
488 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
489 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
490 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2 ) IS
491 -- declaration of variables
492 l_api_version_number NUMBER := 1.0 ;
493 l_api_name CONSTANT VARCHAR2(30) := 'Transfer_Reservation' ;
494 l_rsv_old INV_RESERVATION_GLOBAL.Mtl_Reservation_Rec_Type ;
495 l_rsv_new INV_RESERVATION_GLOBAL.Mtl_Reservation_Rec_Type ;
496 l_dummy_sn INV_RESERVATION_GLOBAL.serial_number_tbl_type ;
497 l_new_rsv_id NUMBER ;
498 l_return_status VARCHAR2(240) ;
499 l_msg_count NUMBER ;
500 l_msg_data VARCHAr2(240) ;
501
502 BEGIN
503
504 -- Initialize API return status to SUCCESS
505 x_return_status := FND_API.G_RET_STS_SUCCESS;
506
507 -- Standard Start of API savepoint
508 SAVEPOINT TRANSFER_RESERVATION_PUB;
509
510 -- Standard call to check for call compatibility.
511 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
512 p_api_version_number,
513 l_api_name,
514 G_PKG_NAME)
515 THEN
516 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
517 END IF;
518 -- Initialize message list if p_init_msg_list is set to TRUE.
519 IF FND_API.to_Boolean( p_init_msg_list )
520 THEN
521 FND_MSG_PUB.initialize;
522 END IF;
523
524
525 -- initialize G_Debug_Flag
526 ASO_DEBUG_PUB.G_Debug_Flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
527
528
529 -- existing reservation
530 l_rsv_old.reservation_id := p_shipment_rec.reservation_id;
531 l_rsv_old.organization_id := p_line_rec.organization_id;
532 l_rsv_old.inventory_item_id := p_line_rec.inventory_item_id;
533 l_rsv_old.demand_source_type_id :=
534 FND_PROFILE.Value('ASO_TRX_SOURCE_TYPES');
535 If l_rsv_old.demand_source_type_id IS NULL Then
536 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
537 -- THEN
538 FND_MESSAGE.Set_Name('ASO', 'ASO_SOURCE_TYPE_NOT_DEFINED');
539 FND_MSG_PUB.ADD;
540 -- END IF;
541 RAISE FND_API.G_EXC_ERROR;
542 End If;
543
544 l_rsv_old.demand_source_header_id := p_line_rec.quote_header_id;
545 l_rsv_old.demand_source_line_id := p_shipment_rec.shipment_id;
546
547 --specify the values to which reservation is going to be transferred
548 l_rsv_new.demand_source_header_id := p_header_rec.order_id;
549 l_rsv_new.demand_source_line_id := p_shipment_rec.order_line_id;
550 l_rsv_new.demand_source_type_id :=
551 INV_RESERVATION_GLOBAL.g_source_type_oe ;
552
553 INV_RESERVATION_PUB.Transfer_Reservation (
554 p_api_version_number => l_api_version_number ,
555 p_init_msg_lst => fnd_api.g_false ,
556 x_return_status => l_return_status ,
557 x_msg_count => l_msg_count ,
558 x_msg_data => l_msg_data ,
559 p_is_transfer_supply => fnd_api.g_true ,
560 p_original_rsv_rec => l_rsv_old ,
561 p_to_rsv_rec => l_rsv_new ,
562 p_original_serial_number => l_dummy_sn ,
563 p_to_serial_number => l_dummy_sn ,
564 p_validation_flag => fnd_api.g_true ,
565 x_to_reservation_id => l_new_rsv_id );
566
567 -- Check return status from the above procedure call
568 IF x_return_status = FND_API.G_RET_STS_ERROR then
569 raise FND_API.G_EXC_ERROR;
570 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
571 raise FND_API.G_EXC_UNEXPECTED_ERROR;
572 END IF;
573
574 -- Standard check for p_commit
575 IF FND_API.to_Boolean( p_commit )
576 THEN
577 COMMIT WORK;
578 END IF;
579
580 x_new_reservation_id := l_new_rsv_id ;
581
582 -- Standard call to get message count and if count is 1, get message info.
583 FND_MSG_PUB.Count_And_Get
584 ( p_count => x_msg_count,
585 p_data => x_msg_data );
586 EXCEPTION
587 WHEN FND_API.G_EXC_ERROR THEN
588 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
589 P_API_NAME => L_API_NAME
590 ,P_PKG_NAME => G_PKG_NAME
591 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
592 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
593 ,X_MSG_COUNT => X_MSG_COUNT
594 ,X_MSG_DATA => X_MSG_DATA
595 ,X_RETURN_STATUS => X_RETURN_STATUS);
596 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
597 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
598 P_API_NAME => L_API_NAME
599 ,P_PKG_NAME => G_PKG_NAME
600 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
601 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
602 ,X_MSG_COUNT => X_MSG_COUNT
603 ,X_MSG_DATA => X_MSG_DATA
604 ,X_RETURN_STATUS => X_RETURN_STATUS);
605
606 WHEN OTHERS THEN
607 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
608 P_API_NAME => L_API_NAME
609 ,P_PKG_NAME => G_PKG_NAME
610 ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
611 ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
612 ,X_MSG_COUNT => X_MSG_COUNT
613 ,X_MSG_DATA => X_MSG_DATA
614 ,X_RETURN_STATUS => X_RETURN_STATUS);
615 END Transfer_Reservation ;
616 End aso_reservation_int;