DBA Data[Home] [Help]

PACKAGE BODY: APPS.MRP_SOURCING_RULE_PUB

Source


1 PACKAGE BODY MRP_Sourcing_Rule_PUB AS
2 /* $Header: MRPPSRLB.pls 120.1 2005/06/16 12:39:47 ichoudhu noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'MRP_Sourcing_Rule_PUB';
7 
8 --  Forward declaration of Procedure Id_To_Value
9 
10 PROCEDURE Id_To_Value
11 (   p_Sourcing_Rule_rec             IN  Sourcing_Rule_Rec_Type
12 ,   p_Receiving_Org_tbl             IN  Receiving_Org_Tbl_Type
13 ,   p_Shipping_Org_tbl              IN  Shipping_Org_Tbl_Type
14 ,   x_Sourcing_Rule_val_rec         OUT NOCOPY Sourcing_Rule_Val_Rec_Type
15 ,   x_Receiving_Org_val_tbl         OUT NOCOPY Receiving_Org_Val_Tbl_Type
16 ,   x_Shipping_Org_val_tbl          OUT NOCOPY Shipping_Org_Val_Tbl_Type
17 );
18 
19 --  Forward declaration of procedure Value_To_Id
20 
21 PROCEDURE Value_To_Id
22 (   x_return_status                 OUT NOCOPY VARCHAR2
23 ,   p_Sourcing_Rule_rec             IN  Sourcing_Rule_Rec_Type
24 ,   p_Sourcing_Rule_val_rec         IN  Sourcing_Rule_Val_Rec_Type
25 ,   p_Receiving_Org_tbl             IN  Receiving_Org_Tbl_Type
26 ,   p_Receiving_Org_val_tbl         IN  Receiving_Org_Val_Tbl_Type
27 ,   p_Shipping_Org_tbl              IN  Shipping_Org_Tbl_Type
28 ,   p_Shipping_Org_val_tbl          IN  Shipping_Org_Val_Tbl_Type
29 ,   x_Sourcing_Rule_rec             OUT NOCOPY Sourcing_Rule_Rec_Type
30 ,   x_Receiving_Org_tbl             OUT NOCOPY Receiving_Org_Tbl_Type
31 ,   x_Shipping_Org_tbl              OUT NOCOPY Shipping_Org_Tbl_Type
32 );
33 
34 --  Start of Comments
35 --  API name    Process_Sourcing_Rule
36 --  Type        Public
37 --  Function
38 --
39 --  Pre-reqs
40 --
41 --  Parameters
42 --
43 --  Version     Current version = 1.0
44 --              Initial version = 1.0
45 --
46 --  Notes
47 --
48 --  End of Comments
49 
50 PROCEDURE Process_Sourcing_Rule
51 (   p_api_version_number            IN  NUMBER
52 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
53 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
54 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
55 ,   x_return_status                 OUT NOCOPY VARCHAR2
56 ,   x_msg_count                     OUT NOCOPY NUMBER
57 ,   x_msg_data                      OUT NOCOPY VARCHAR2
58 ,   p_Sourcing_Rule_rec             IN  Sourcing_Rule_Rec_Type :=
59                                         G_MISS_SOURCING_RULE_REC
60 ,   p_Sourcing_Rule_val_rec         IN  Sourcing_Rule_Val_Rec_Type :=
61                                         G_MISS_SOURCING_RULE_VAL_REC
62 ,   p_Receiving_Org_tbl             IN  Receiving_Org_Tbl_Type :=
63                                         G_MISS_RECEIVING_ORG_TBL
64 ,   p_Receiving_Org_val_tbl         IN  Receiving_Org_Val_Tbl_Type :=
65                                         G_MISS_RECEIVING_ORG_VAL_TBL
66 ,   p_Shipping_Org_tbl              IN  Shipping_Org_Tbl_Type :=
67                                         G_MISS_SHIPPING_ORG_TBL
68 ,   p_Shipping_Org_val_tbl          IN  Shipping_Org_Val_Tbl_Type :=
69                                         G_MISS_SHIPPING_ORG_VAL_TBL
70 ,   x_Sourcing_Rule_rec             OUT NOCOPY Sourcing_Rule_Rec_Type
71 ,   x_Sourcing_Rule_val_rec         OUT NOCOPY Sourcing_Rule_Val_Rec_Type
72 ,   x_Receiving_Org_tbl             OUT NOCOPY Receiving_Org_Tbl_Type
73 ,   x_Receiving_Org_val_tbl         OUT NOCOPY Receiving_Org_Val_Tbl_Type
74 ,   x_Shipping_Org_tbl              OUT NOCOPY Shipping_Org_Tbl_Type
75 ,   x_Shipping_Org_val_tbl          OUT NOCOPY Shipping_Org_Val_Tbl_Type
76 )
77 IS
78 l_api_version_number          CONSTANT NUMBER := 1.0;
79 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Sourcing_Rule';
80 l_control_rec                 MRP_GLOBALS.Control_Rec_Type;
81 l_return_status               VARCHAR2(1);
82 l_Sourcing_Rule_rec           Sourcing_Rule_Rec_Type;
83 l_Receiving_Org_tbl           Receiving_Org_Tbl_Type;
84 l_Shipping_Org_tbl            Shipping_Org_Tbl_Type;
85 
86 -- New variables defined for NOCOPY hint.
87 
88 l_Sourcing_Rule_rec_out           Sourcing_Rule_Rec_Type;
89 l_Receiving_Org_tbl_out           Receiving_Org_Tbl_Type;
90 l_Shipping_Org_tbl_out            Shipping_Org_Tbl_Type;
91 
92 BEGIN
93     -- bug 3138889
94     -- Set savepoint
95      SAVEPOINT S_Process_Sourcing_Rule ;
96     --
97     --  Standard call to check for call compatibility
98 
99     IF NOT FND_API.Compatible_API_Call
100            (   l_api_version_number
101            ,   p_api_version_number
102            ,   l_api_name
103            ,   G_PKG_NAME
104            )
105     THEN
106         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
107     END IF;
108 
109 
110     --  Perform Value to Id conversion
111 
112     Value_To_Id
113     (   x_return_status               => l_return_status
114     ,   p_Sourcing_Rule_rec           => p_Sourcing_Rule_rec
115     ,   p_Sourcing_Rule_val_rec       => p_Sourcing_Rule_val_rec
116     ,   p_Receiving_Org_tbl           => p_Receiving_Org_tbl
117     ,   p_Receiving_Org_val_tbl       => p_Receiving_Org_val_tbl
118     ,   p_Shipping_Org_tbl            => p_Shipping_Org_tbl
119     ,   p_Shipping_Org_val_tbl        => p_Shipping_Org_val_tbl
120     ,   x_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
121     ,   x_Receiving_Org_tbl           => l_Receiving_Org_tbl
122     ,   x_Shipping_Org_tbl            => l_Shipping_Org_tbl
123     );
124 
125     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
126         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
127     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
128         RAISE FND_API.G_EXC_ERROR;
129     END IF;
130 
131     --  Call MRP_Sourcing_Rule_PVT.Process_Sourcing_Rule
132 
133     MRP_Sourcing_Rule_PVT.Process_Sourcing_Rule
134     (   p_api_version_number          => 1.0
135     ,   p_init_msg_list               => p_init_msg_list
136     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
137     ,   p_commit                      => p_commit
138     ,   x_return_status               => x_return_status
139     ,   x_msg_count                   => x_msg_count
140     ,   x_msg_data                    => x_msg_data
141     ,   p_control_rec                 => l_control_rec
142     ,   p_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
143     ,   p_Receiving_Org_tbl           => l_Receiving_Org_tbl
144     ,   p_Shipping_Org_tbl            => l_Shipping_Org_tbl
145     ,   x_Sourcing_Rule_rec           => l_Sourcing_Rule_rec_out
146     ,   x_Receiving_Org_tbl           => l_Receiving_Org_tbl_out
147     ,   x_Shipping_Org_tbl            => l_Shipping_Org_tbl_out
148     );
149 
150     l_Sourcing_Rule_rec            := l_Sourcing_Rule_rec_out;
151     l_Receiving_Org_tbl            := l_Receiving_Org_tbl_out;
152     l_Shipping_Org_tbl             := l_Shipping_Org_tbl_out;
153 
154 
155     --  Load Id OUT parameters.
156 
157     x_Sourcing_Rule_rec            := l_Sourcing_Rule_rec;
158     x_Receiving_Org_tbl            := l_Receiving_Org_tbl;
159     x_Shipping_Org_tbl             := l_Shipping_Org_tbl;
160 
161 
162     --  If p_return_values is TRUE then convert Ids to Values.
163 
164     IF FND_API.to_Boolean(p_return_values) THEN
165 
166         Id_To_Value
167         (   p_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
168         ,   p_Receiving_Org_tbl           => l_Receiving_Org_tbl
169         ,   p_Shipping_Org_tbl            => l_Shipping_Org_tbl
170         ,   x_Sourcing_Rule_val_rec       => x_Sourcing_Rule_val_rec
171         ,   x_Receiving_Org_val_tbl       => x_Receiving_Org_val_tbl
172         ,   x_Shipping_Org_val_tbl        => x_Shipping_Org_val_tbl
173         );
174 
175     END IF;
176     -- bug 3138889
177     IF p_commit = FND_API.G_TRUE THEN
178      IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
179           COMMIT;
180      ELSE
181           ROLLBACK TO S_Process_Sourcing_Rule ;
182      END IF;
183     ELSE
184       IF x_return_status = FND_API.G_RET_STS_ERROR THEN
185           ROLLBACK TO S_Process_Sourcing_Rule ;
186      END IF;
187     END IF;
188 
189 /** Bug 2263575 **/
190 /*    IF p_commit = FND_API.G_FALSE THEN
191           ROLLBACK;
192     ELSIF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
193           COMMIT;
194     ELSE
195           ROLLBACK;
196     END IF;
197 */
198 
199 
200 EXCEPTION
201 
202     WHEN FND_API.G_EXC_ERROR THEN
203 
204         x_return_status := FND_API.G_RET_STS_ERROR;
205 
206         --  Get message count and data
207 
208         FND_MSG_PUB.Count_And_Get
209         (   p_count                       => x_msg_count
210         ,   p_data                        => x_msg_data
211         );
212 
213     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
214 
215         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
216 
217         --  Get message count and data
218 
219         FND_MSG_PUB.Count_And_Get
220         (   p_count                       => x_msg_count
221         ,   p_data                        => x_msg_data
222         );
223 
224     WHEN OTHERS THEN
225 
226         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
227 
228         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
229         THEN
230             FND_MSG_PUB.Add_Exc_Msg
231             (   G_PKG_NAME
232             ,   'Process_Sourcing_Rule'
233             );
234         END IF;
235 
236         --  Get message count and data
237 
238         FND_MSG_PUB.Count_And_Get
239         (   p_count                       => x_msg_count
240         ,   p_data                        => x_msg_data
241         );
242 
243 END Process_Sourcing_Rule;
244 
245 --  Start of Comments
246 --  API name    Lock_Sourcing_Rule
247 --  Type        Public
248 --  Function
249 --
250 --  Pre-reqs
251 --
252 --  Parameters
253 --
254 --  Version     Current version = 1.0
255 --              Initial version = 1.0
256 --
257 --  Notes
258 --
259 --  End of Comments
260 
261 PROCEDURE Lock_Sourcing_Rule
262 (   p_api_version_number            IN  NUMBER
263 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
264 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
265 ,   x_return_status                 OUT NOCOPY VARCHAR2
266 ,   x_msg_count                     OUT NOCOPY NUMBER
267 ,   x_msg_data                      OUT NOCOPY VARCHAR2
268 ,   p_Sourcing_Rule_rec             IN  Sourcing_Rule_Rec_Type :=
269                                         G_MISS_SOURCING_RULE_REC
270 ,   p_Sourcing_Rule_val_rec         IN  Sourcing_Rule_Val_Rec_Type :=
271                                         G_MISS_SOURCING_RULE_VAL_REC
272 ,   p_Receiving_Org_tbl             IN  Receiving_Org_Tbl_Type :=
273                                         G_MISS_RECEIVING_ORG_TBL
274 ,   p_Receiving_Org_val_tbl         IN  Receiving_Org_Val_Tbl_Type :=
275                                         G_MISS_RECEIVING_ORG_VAL_TBL
276 ,   p_Shipping_Org_tbl              IN  Shipping_Org_Tbl_Type :=
277                                         G_MISS_SHIPPING_ORG_TBL
278 ,   p_Shipping_Org_val_tbl          IN  Shipping_Org_Val_Tbl_Type :=
279                                         G_MISS_SHIPPING_ORG_VAL_TBL
280 ,   x_Sourcing_Rule_rec             OUT NOCOPY Sourcing_Rule_Rec_Type
281 ,   x_Sourcing_Rule_val_rec         OUT NOCOPY Sourcing_Rule_Val_Rec_Type
282 ,   x_Receiving_Org_tbl             OUT NOCOPY Receiving_Org_Tbl_Type
283 ,   x_Receiving_Org_val_tbl         OUT NOCOPY Receiving_Org_Val_Tbl_Type
284 ,   x_Shipping_Org_tbl              OUT NOCOPY Shipping_Org_Tbl_Type
285 ,   x_Shipping_Org_val_tbl          OUT NOCOPY Shipping_Org_Val_Tbl_Type
286 )
287 IS
288 l_api_version_number          CONSTANT NUMBER := 1.0;
289 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Sourcing_Rule';
290 l_return_status               VARCHAR2(1);
291 l_Sourcing_Rule_rec           Sourcing_Rule_Rec_Type;
292 l_Receiving_Org_tbl           Receiving_Org_Tbl_Type;
293 l_Shipping_Org_tbl            Shipping_Org_Tbl_Type;
294 
295 l_Sourcing_Rule_rec_out           Sourcing_Rule_Rec_Type;
296 l_Receiving_Org_tbl_out           Receiving_Org_Tbl_Type;
297 l_Shipping_Org_tbl_out            Shipping_Org_Tbl_Type;
298 
299 BEGIN
300 
301     --  Standard call to check for call compatibility
302 
303     IF NOT FND_API.Compatible_API_Call
304            (   l_api_version_number
305            ,   p_api_version_number
306            ,   l_api_name
307            ,   G_PKG_NAME
308            )
309     THEN
310         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
311     END IF;
312 
313     --  Perform Value to Id conversion
314 
315     Value_To_Id
316     (   x_return_status               => l_return_status
317     ,   p_Sourcing_Rule_rec           => p_Sourcing_Rule_rec
318     ,   p_Sourcing_Rule_val_rec       => p_Sourcing_Rule_val_rec
319     ,   p_Receiving_Org_tbl           => p_Receiving_Org_tbl
320     ,   p_Receiving_Org_val_tbl       => p_Receiving_Org_val_tbl
321     ,   p_Shipping_Org_tbl            => p_Shipping_Org_tbl
322     ,   p_Shipping_Org_val_tbl        => p_Shipping_Org_val_tbl
323     ,   x_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
324     ,   x_Receiving_Org_tbl           => l_Receiving_Org_tbl
325     ,   x_Shipping_Org_tbl            => l_Shipping_Org_tbl
326     );
327 
328     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
329         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
330     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
331         RAISE FND_API.G_EXC_ERROR;
332     END IF;
333 
334 
335     --  Call MRP_Sourcing_Rule_PVT.Lock_Sourcing_Rule
336 
337     MRP_Sourcing_Rule_PVT.Lock_Sourcing_Rule
338     (   p_api_version_number          => 1.0
339     ,   p_init_msg_list               => p_init_msg_list
340     ,   x_return_status               => x_return_status
341     ,   x_msg_count                   => x_msg_count
342     ,   x_msg_data                    => x_msg_data
343     ,   p_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
344     ,   p_Receiving_Org_tbl           => l_Receiving_Org_tbl
345     ,   p_Shipping_Org_tbl            => l_Shipping_Org_tbl
346     ,   x_Sourcing_Rule_rec           => l_Sourcing_Rule_rec_out
347     ,   x_Receiving_Org_tbl           => l_Receiving_Org_tbl_out
348     ,   x_Shipping_Org_tbl            => l_Shipping_Org_tbl_out
349     );
350 
351     l_Sourcing_Rule_rec            := l_Sourcing_Rule_rec_out;
352     l_Receiving_Org_tbl            := l_Receiving_Org_tbl_out;
353     l_Shipping_Org_tbl             := l_Shipping_Org_tbl_out;
354 
355 
356     --  Load Id OUT parameters.
357 
358     x_Sourcing_Rule_rec            := l_Sourcing_Rule_rec;
359     x_Receiving_Org_tbl            := l_Receiving_Org_tbl;
360     x_Shipping_Org_tbl             := l_Shipping_Org_tbl;
361 
362     --  If p_return_values is TRUE then convert Ids to Values.
363 
364     IF FND_API.to_Boolean(p_return_values) THEN
365 
366         Id_To_Value
367         (   p_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
368         ,   p_Receiving_Org_tbl           => l_Receiving_Org_tbl
369         ,   p_Shipping_Org_tbl            => l_Shipping_Org_tbl
370         ,   x_Sourcing_Rule_val_rec       => x_Sourcing_Rule_val_rec
371         ,   x_Receiving_Org_val_tbl       => x_Receiving_Org_val_tbl
372         ,   x_Shipping_Org_val_tbl        => x_Shipping_Org_val_tbl
373         );
374 
375     END IF;
376 
377 EXCEPTION
378 
379     WHEN FND_API.G_EXC_ERROR THEN
380 
381         x_return_status := FND_API.G_RET_STS_ERROR;
382 
383         --  Get message count and data
384 
385         FND_MSG_PUB.Count_And_Get
386         (   p_count                       => x_msg_count
387         ,   p_data                        => x_msg_data
388         );
389 
390     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
391 
392         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
393 
394         --  Get message count and data
395 
396         FND_MSG_PUB.Count_And_Get
397         (   p_count                       => x_msg_count
398         ,   p_data                        => x_msg_data
399         );
400 
401     WHEN OTHERS THEN
402 
403         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
404 
405         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
406         THEN
407             FND_MSG_PUB.Add_Exc_Msg
408             (   G_PKG_NAME
409             ,   'Lock_Sourcing_Rule'
410             );
411         END IF;
412 
413         --  Get message count and data
414 
415         FND_MSG_PUB.Count_And_Get
416         (   p_count                       => x_msg_count
417         ,   p_data                        => x_msg_data
418         );
419 
420 END Lock_Sourcing_Rule;
421 
422 --  Start of Comments
423 --  API name    Get_Sourcing_Rule
424 --  Type        Public
425 --  Function
426 --
427 --  Pre-reqs
428 --
429 --  Parameters
430 --
431 --  Version     Current version = 1.0
432 --              Initial version = 1.0
433 --
434 --  Notes
435 --
436 --  End of Comments
437 
438 PROCEDURE Get_Sourcing_Rule
439 (   p_api_version_number            IN  NUMBER
440 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
441 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
442 ,   x_return_status                 OUT NOCOPY VARCHAR2
443 ,   x_msg_count                     OUT NOCOPY NUMBER
444 ,   x_msg_data                      OUT NOCOPY VARCHAR2
445 ,   p_Sourcing_Rule_Id              IN  NUMBER :=
446                                         FND_API.G_MISS_NUM
447 ,   x_Sourcing_Rule_rec             OUT NOCOPY Sourcing_Rule_Rec_Type
448 ,   x_Sourcing_Rule_val_rec         OUT NOCOPY Sourcing_Rule_Val_Rec_Type
449 ,   x_Receiving_Org_tbl             OUT NOCOPY Receiving_Org_Tbl_Type
450 ,   x_Receiving_Org_val_tbl         OUT NOCOPY Receiving_Org_Val_Tbl_Type
451 ,   x_Shipping_Org_tbl              OUT NOCOPY Shipping_Org_Tbl_Type
452 ,   x_Shipping_Org_val_tbl          OUT NOCOPY Shipping_Org_Val_Tbl_Type
453 )
454 IS
455 l_api_version_number          CONSTANT NUMBER := 1.0;
456 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Sourcing_Rule';
457 l_Sourcing_Rule_Id            NUMBER := p_Sourcing_Rule_Id;
458 l_Sourcing_Rule_rec           MRP_Sourcing_Rule_PUB.Sourcing_Rule_Rec_Type;
459 l_Sourcing_Rule_val_rec       MRP_Sourcing_Rule_PUB.Sourcing_Rule_Val_Rec_Type;
460 l_Receiving_Org_tbl           MRP_Sourcing_Rule_PUB.Receiving_Org_Tbl_Type;
461 l_Receiving_Org_val_tbl       MRP_Sourcing_Rule_PUB.Receiving_Org_Val_Tbl_Type;
462 l_Shipping_Org_tbl            MRP_Sourcing_Rule_PUB.Shipping_Org_Tbl_Type;
463 l_Shipping_Org_val_tbl        MRP_Sourcing_Rule_PUB.Shipping_Org_Val_Tbl_Type;
464 l_x_Shipping_Org_tbl          MRP_Sourcing_Rule_PUB.Shipping_Org_Tbl_Type;
465 l_x_Shipping_Org_val_tbl      MRP_Sourcing_Rule_PUB.Shipping_Org_Val_Tbl_Type;
466 BEGIN
467 
468     --  Standard call to check for call compatibility
469 
470     IF NOT FND_API.Compatible_API_Call
471            (   l_api_version_number
472            ,   p_api_version_number
473            ,   l_api_name
474            ,   G_PKG_NAME
475            )
476     THEN
477         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
478     END IF;
479 
480     --  Value to ID conversion
481 
482     --  If p_return_values is TRUE then query read views
483 
484     IF FND_API.TO_BOOLEAN(p_return_values) THEN
485 
486         --  Get Sourcing_Rule
487 
488         MRP_Sourcing_Rule_Handlers.Query_Entity
489         (   p_Sourcing_Rule_Id            => l_Sourcing_Rule_Id
490         ,   x_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
491         ,   x_Sourcing_Rule_val_rec       => l_Sourcing_Rule_val_rec
492         );
493 
494         --  Get Receiving_Org ( parent = Sourcing_Rule )
495 
496         MRP_Receiving_Org_Handlers.Query_Entities
497         (   p_Sourcing_Rule_Id            => l_Sourcing_Rule_rec.Sourcing_Rule_Id
498         ,   x_Receiving_Org_tbl           => l_Receiving_Org_tbl
499         ,   x_Receiving_Org_val_tbl       => l_Receiving_Org_val_tbl
500         );
501 
502 
503         --  Loop over Receiving_Org's children
504 
505         FOR I2 IN 1..l_Receiving_Org_tbl.COUNT LOOP
506 
507             --  Get Shipping_Org ( parent = Receiving_Org )
508 
509             MRP_Shipping_Org_Handlers.Query_Entities
510             (   p_Sr_Receipt_Id               => l_Receiving_Org_tbl(I2).Sr_Receipt_Id
511             ,   x_Shipping_Org_tbl            => l_Shipping_Org_tbl
512             ,   x_Shipping_Org_val_tbl        => l_Shipping_Org_val_tbl
513             );
514 
515             FOR I3 IN 1..l_Shipping_Org_tbl.COUNT LOOP
516                 l_Shipping_Org_tbl(I3).Receiving_Org_Index := I2;
517                 l_x_Shipping_Org_tbl
518                 (l_x_Shipping_Org_tbl.COUNT + 1) := l_Shipping_Org_tbl(I3);
519 
520                 l_x_Shipping_Org_val_tbl
521                 (l_x_Shipping_Org_val_tbl.COUNT + 1) := l_Shipping_Org_val_tbl(I3);
522             END LOOP;
523 
524         END LOOP;
525 
526         --  Load out parameters
527 
528         x_Sourcing_Rule_rec            := l_Sourcing_Rule_rec;
529         x_Sourcing_Rule_val_rec        := l_Sourcing_Rule_val_rec;
530         x_Receiving_Org_tbl            := l_Receiving_Org_tbl;
531         x_Receiving_Org_val_tbl        := l_Receiving_Org_val_tbl;
532         x_Shipping_Org_tbl             := l_x_Shipping_Org_tbl;
533         x_Shipping_Org_val_tbl         := l_x_Shipping_Org_val_tbl;
534 
535     ELSE
536 
537         --  Call MRP_Sourcing_Rule_PVT.Get_Sourcing_Rule
538 
539         MRP_Sourcing_Rule_PVT.Get_Sourcing_Rule
540         (   p_api_version_number          => 1.0
541         ,   p_init_msg_list               => p_init_msg_list
542         ,   x_return_status               => x_return_status
543         ,   x_msg_count                   => x_msg_count
544         ,   x_msg_data                    => x_msg_data
545         ,   p_Sourcing_Rule_Id            => l_Sourcing_Rule_Id
546         ,   x_Sourcing_Rule_rec           => l_Sourcing_Rule_rec
547         ,   x_Receiving_Org_tbl           => l_Receiving_Org_tbl
548         ,   x_Shipping_Org_tbl            => l_Shipping_Org_tbl
549         );
550 
551         --  Load Id OUT parameters.
552 
553         x_Sourcing_Rule_rec            := l_Sourcing_Rule_rec;
554         x_Receiving_Org_tbl            := l_Receiving_Org_tbl;
555         x_Shipping_Org_tbl             := l_Shipping_Org_tbl;
556 
557     END IF;
558 
559     --  Set return status
560 
561     x_return_status := FND_API.G_RET_STS_SUCCESS;
562 
563     --  Get message count and data
564 
565     FND_MSG_PUB.Count_And_Get
566     (   p_count                       => x_msg_count
567     ,   p_data                        => x_msg_data
568     );
569 
570 
571 EXCEPTION
572 
573     WHEN FND_API.G_EXC_ERROR THEN
574 
575         x_return_status := FND_API.G_RET_STS_ERROR;
576 
577         --  Get message count and data
578 
579         FND_MSG_PUB.Count_And_Get
580         (   p_count                       => x_msg_count
581         ,   p_data                        => x_msg_data
582         );
583 
584     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
585 
586         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
587 
588         --  Get message count and data
589 
590         FND_MSG_PUB.Count_And_Get
591         (   p_count                       => x_msg_count
592         ,   p_data                        => x_msg_data
593         );
594 
595     WHEN OTHERS THEN
596 
597         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
598 
599         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
600         THEN
601             FND_MSG_PUB.Add_Exc_Msg
602             (   G_PKG_NAME
603             ,   'Get_Sourcing_Rule'
604             );
605         END IF;
606 
607         --  Get message count and data
608 
609         FND_MSG_PUB.Count_And_Get
610         (   p_count                       => x_msg_count
611         ,   p_data                        => x_msg_data
612         );
613 
614 END Get_Sourcing_Rule;
615 
616 --  Procedure Id_To_Value
617 
618 PROCEDURE Id_To_Value
619 (   p_Sourcing_Rule_rec             IN  Sourcing_Rule_Rec_Type
620 ,   p_Receiving_Org_tbl             IN  Receiving_Org_Tbl_Type
621 ,   p_Shipping_Org_tbl              IN  Shipping_Org_Tbl_Type
622 ,   x_Sourcing_Rule_val_rec         OUT NOCOPY Sourcing_Rule_Val_Rec_Type
623 ,   x_Receiving_Org_val_tbl         OUT NOCOPY Receiving_Org_Val_Tbl_Type
624 ,   x_Shipping_Org_val_tbl          OUT NOCOPY Shipping_Org_Val_Tbl_Type
625 )
626 IS
627 BEGIN
628 
629     --  Convert Sourcing_Rule
630 
631     x_Sourcing_Rule_val_rec := MRP_Sourcing_Rule_Util.Get_Values(p_Sourcing_Rule_rec);
632 
633     --  Convert Receiving_Org
634 
635     FOR I IN 1..p_Receiving_Org_tbl.COUNT LOOP
636         x_Receiving_Org_val_tbl(I) :=
637             MRP_Receiving_Org_Util.Get_Values(p_Receiving_Org_tbl(I));
638     END LOOP;
639 
640     --  Convert Shipping_Org
641 
642     FOR I IN 1..p_Shipping_Org_tbl.COUNT LOOP
643         x_Shipping_Org_val_tbl(I) :=
644             MRP_Shipping_Org_Util.Get_Values(p_Shipping_Org_tbl(I));
645     END LOOP;
646 
647 EXCEPTION
648 
649     WHEN OTHERS THEN
650 
651         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
652         THEN
653             FND_MSG_PUB.Add_Exc_Msg
654             (   G_PKG_NAME
655             ,   'Id_To_Value'
656             );
657         END IF;
658 
659         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
660 
661 END Id_To_Value;
662 
663 --  Procedure Value_To_Id
664 
665 PROCEDURE Value_To_Id
666 (   x_return_status                 OUT NOCOPY VARCHAR2
667 ,   p_Sourcing_Rule_rec             IN  Sourcing_Rule_Rec_Type
668 ,   p_Sourcing_Rule_val_rec         IN  Sourcing_Rule_Val_Rec_Type
669 ,   p_Receiving_Org_tbl             IN  Receiving_Org_Tbl_Type
670 ,   p_Receiving_Org_val_tbl         IN  Receiving_Org_Val_Tbl_Type
671 ,   p_Shipping_Org_tbl              IN  Shipping_Org_Tbl_Type
672 ,   p_Shipping_Org_val_tbl          IN  Shipping_Org_Val_Tbl_Type
673 ,   x_Sourcing_Rule_rec             OUT NOCOPY Sourcing_Rule_Rec_Type
674 ,   x_Receiving_Org_tbl             OUT NOCOPY Receiving_Org_Tbl_Type
675 ,   x_Shipping_Org_tbl              OUT NOCOPY Shipping_Org_Tbl_Type
676 )
677 IS
678 l_Sourcing_Rule_rec           Sourcing_Rule_Rec_Type;
679 l_Receiving_Org_rec           Receiving_Org_Rec_Type;
680 l_Shipping_Org_rec            Shipping_Org_Rec_Type;
681 l_index                       BINARY_INTEGER;
682 BEGIN
683 
684     --  Init x_return_status.
685 
686     x_return_status := FND_API.G_RET_STS_SUCCESS;
687 
688     --  Convert Sourcing_Rule
689 
690     l_Sourcing_Rule_rec := MRP_Sourcing_Rule_Util.Get_Ids
691     (   p_Sourcing_Rule_rec           => p_Sourcing_Rule_rec
692     ,   p_Sourcing_Rule_val_rec       => p_Sourcing_Rule_val_rec
693     );
694 
695     x_Sourcing_Rule_rec            := l_Sourcing_Rule_rec;
696 
697     IF l_Sourcing_Rule_rec.return_status = FND_API.G_RET_STS_ERROR THEN
698         x_return_status := FND_API.G_RET_STS_ERROR;
699     END IF;
700 
701     --  Convert Receiving_Org
702 
703     x_Receiving_Org_tbl := p_Receiving_Org_tbl;
704 
705     l_index := p_Receiving_Org_val_tbl.FIRST;
706 
707     WHILE l_index IS NOT NULL LOOP
708 
709         l_Receiving_Org_rec := MRP_Receiving_Org_Util.Get_Ids
710         (   p_Receiving_Org_rec           => p_Receiving_Org_tbl(l_index)
711         ,   p_Receiving_Org_val_rec       => p_Receiving_Org_val_tbl(l_index)
712         );
713 
714         x_Receiving_Org_tbl(l_index)   := l_Receiving_Org_rec;
715 
716         IF l_Receiving_Org_rec.return_status = FND_API.G_RET_STS_ERROR THEN
717             x_return_status := FND_API.G_RET_STS_ERROR;
718         END IF;
719 
720         l_index := p_Receiving_Org_val_tbl.NEXT(l_index);
721 
722     END LOOP;
723 
724     --  Convert Shipping_Org
725 
726     x_Shipping_Org_tbl := p_Shipping_Org_tbl;
727 
728     l_index := p_Shipping_Org_val_tbl.FIRST;
729 
730     WHILE l_index IS NOT NULL LOOP
731 
732         l_Shipping_Org_rec := MRP_Shipping_Org_Util.Get_Ids
733         (   p_Shipping_Org_rec            => p_Shipping_Org_tbl(l_index)
734         ,   p_Shipping_Org_val_rec        => p_Shipping_Org_val_tbl(l_index)
735         );
736 
737         x_Shipping_Org_tbl(l_index)    := l_Shipping_Org_rec;
738 
739         IF l_Shipping_Org_rec.return_status = FND_API.G_RET_STS_ERROR THEN
740             x_return_status := FND_API.G_RET_STS_ERROR;
741         END IF;
742 
743         l_index := p_Shipping_Org_val_tbl.NEXT(l_index);
744 
745     END LOOP;
746 
747 EXCEPTION
748 
749     WHEN OTHERS THEN
750 
751         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
752         THEN
753             FND_MSG_PUB.Add_Exc_Msg
754             (   G_PKG_NAME
755             ,   'Value_To_Id'
756             );
757         END IF;
758 
759         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
760 
761 END Value_To_Id;
762 
763 END MRP_Sourcing_Rule_PUB;