DBA Data[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;