DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_PRICE_LIST_GRP

Source


1 PACKAGE BODY QP_Price_List_GRP AS
2 /* $Header: QPXGPRLB.pls 120.2 2005/07/07 23:18:24 appldev ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Price_List_GRP';
7 
8 --  Forward declaration of Procedure Id_To_Value
9 
10 PROCEDURE Id_To_Value
11 (   p_PRICE_LIST_rec                IN  QP_Price_List_PUB.Price_List_Rec_Type
12 ,   p_PRICE_LIST_LINE_tbl           IN  QP_Price_List_PUB.Price_List_Line_Tbl_Type
13 ,   p_QUALIFIERS_tbl                IN  Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
14 ,   p_PRICING_ATTR_tbl              IN  QP_Price_List_PUB.Pricing_Attr_Tbl_Type
15 ,   x_PRICE_LIST_val_rec            OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Val_Rec_Type
16 ,   x_PRICE_LIST_LINE_val_tbl       OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
17 ,   x_QUALIFIERS_val_tbl            OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
18 ,   x_PRICING_ATTR_val_tbl          OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
19 );
20 
21 --  Forward declaration of procedure Value_To_Id
22 
23 PROCEDURE Value_To_Id
24 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
25 ,   p_PRICE_LIST_rec                IN  QP_Price_List_PUB.Price_List_Rec_Type
26 ,   p_PRICE_LIST_val_rec            IN  QP_Price_List_PUB.Price_List_Val_Rec_Type
27 ,   p_PRICE_LIST_LINE_tbl           IN  QP_Price_List_PUB.Price_List_Line_Tbl_Type
28 ,   p_PRICE_LIST_LINE_val_tbl       IN  QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
29 ,   p_QUALIFIERS_tbl                IN  Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
30 ,   p_QUALIFIERS_val_tbl            IN  Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
31 ,   p_PRICING_ATTR_tbl              IN  QP_Price_List_PUB.Pricing_Attr_Tbl_Type
32 ,   p_PRICING_ATTR_val_tbl          IN  QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
33 ,   x_PRICE_LIST_rec                OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
34 ,   x_PRICE_LIST_LINE_tbl           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
35 ,   x_QUALIFIERS_tbl                OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
36 ,   x_PRICING_ATTR_tbl              OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
37 );
38 
39 --  Start of Comments
40 --  API name    Process_Price_List
41 --  Type        Public
42 --  Function
43 --
44 --  Pre-reqs
45 --
46 --  Parameters
47 --
48 --  Version     Current version = 1.0
49 --              Initial version = 1.0
50 --
51 --  Notes
52 --
53 --  End of Comments
54 
55 PROCEDURE Process_Price_List
56 (   p_api_version_number            IN  NUMBER
57 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
58 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
59 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
60 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
61 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
62 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
63 ,   p_PRICE_LIST_rec                IN  QP_Price_List_PUB.Price_List_Rec_Type :=
64                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
65 ,   p_PRICE_LIST_val_rec            IN  QP_Price_List_PUB.Price_List_Val_Rec_Type :=
66                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_VAL_REC
67 ,   p_PRICE_LIST_LINE_tbl           IN  QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
68                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
69 ,   p_PRICE_LIST_LINE_val_tbl       IN  QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type :=
70                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_VAL_TBL
71 ,   p_QUALIFIERS_tbl                IN  Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
72                                         QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
73 ,   p_QUALIFIERS_val_tbl            IN  Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type :=
74                                         QP_Price_List_PUB.G_MISS_QUALIFIERS_VAL_TBL
75 ,   p_PRICING_ATTR_tbl              IN  QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
76                                         QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
77 ,   p_PRICING_ATTR_val_tbl          IN  QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type :=
78                                         QP_Price_List_PUB.G_MISS_PRICING_ATTR_VAL_TBL
79 ,   x_PRICE_LIST_rec                OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
80 ,   x_PRICE_LIST_val_rec            OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Val_Rec_Type
81 ,   x_PRICE_LIST_LINE_tbl           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
82 ,   x_PRICE_LIST_LINE_val_tbl       OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
83 ,   x_QUALIFIERS_tbl                OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
84 ,   x_QUALIFIERS_val_tbl            OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
85 ,   x_PRICING_ATTR_tbl              OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
86 ,   x_PRICING_ATTR_val_tbl          OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
87 )
88 IS
89 l_api_version_number          CONSTANT NUMBER := 1.0;
90 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Price_List';
91 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
92 l_return_status               VARCHAR2(1);
93 l_PRICE_LIST_rec              QP_Price_List_PUB.Price_List_Rec_Type;
94 l_p_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
95 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
96 l_p_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
97 l_QUALIFIERS_tbl              Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
98 l_p_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
99 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
100 l_p_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
101 l_installed_status            VARCHAR2(1);
102 l_request_type_code	      VARCHAR2(3);
103 BEGIN
104 
105     --  Standard call to check for call compatibility
106 
107     IF NOT FND_API.Compatible_API_Call
108            (   l_api_version_number
109            ,   p_api_version_number
110            ,   l_api_name
111            ,   G_PKG_NAME
112            )
113     THEN
114         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
115     END IF;
116 
117    /* check for installation status ; if it's basic then this api
118       is not available */
119 
120 
121     -- shulin, calls from FTE
122     IF (QP_PRL_LOADER_PUB.G_PROCESS_LST_REQ_TYPE='FTE' or QP_MOD_LOADER_PUB.G_PROCESS_LST_REQ_TYPE='FTE' ) THEN
123     	l_request_type_code := 'FTE';
124     END IF;
125 
126 
127   /* Raise error if  Rounding factor is NULL.Code added to fix bug # 1641559 */
128 
129   IF p_PRICE_LIST_rec.rounding_factor IS NULL THEN
130     FND_MESSAGE.SET_NAME('QP','SO_PR_NO_ROUNDING_FACTOR');
131     OE_MSG_PUB.Add;
132     RAISE FND_API.G_EXC_ERROR;
133   END IF;
134 
135 
136 
137 
138     --  Perform Value to Id conversion
139 
140     Value_To_Id
141     (   x_return_status               => l_return_status
142     ,   p_PRICE_LIST_rec              => p_PRICE_LIST_rec
143     ,   p_PRICE_LIST_val_rec          => p_PRICE_LIST_val_rec
144     ,   p_PRICE_LIST_LINE_tbl         => p_PRICE_LIST_LINE_tbl
145     ,   p_PRICE_LIST_LINE_val_tbl     => p_PRICE_LIST_LINE_val_tbl
146     ,   p_QUALIFIERS_tbl              => p_QUALIFIERS_tbl
147     ,   p_QUALIFIERS_val_tbl          => p_QUALIFIERS_val_tbl
148     ,   p_PRICING_ATTR_tbl            => p_PRICING_ATTR_tbl
149     ,   p_PRICING_ATTR_val_tbl        => p_PRICING_ATTR_val_tbl
150     ,   x_PRICE_LIST_rec              => l_PRICE_LIST_rec
151     ,   x_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
152     ,   x_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
153     ,   x_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
154     );
155 
156     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
157         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
158     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
159         RAISE FND_API.G_EXC_ERROR;
160     END IF;
161 
162 
163     --  Call QP_LIST_HEADERS_PVT.Process_Price_List
164     -- mkarya - set the called_from_ui indicator to 'N', as QP_LIST_HEADERS_PVT.Process_Price_List is
165     -- being called from public package
166 
167     l_control_rec.called_from_ui := 'N';
168     l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
169     l_p_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
170     l_p_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
171     l_p_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
172 
173     QP_LIST_HEADERS_PVT.Process_Price_List
174     (   p_api_version_number          => 1.0
175     ,   p_init_msg_list               => p_init_msg_list
176     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
177     ,   p_commit                      => p_commit
178     ,   x_return_status               => x_return_status
179     ,   x_msg_count                   => x_msg_count
180     ,   x_msg_data                    => x_msg_data
181     ,   p_control_rec                 => l_control_rec
182     ,   p_PRICE_LIST_rec              => l_p_PRICE_LIST_rec
183     ,   p_PRICE_LIST_LINE_tbl         => l_p_PRICE_LIST_LINE_tbl
184     ,   p_QUALIFIERS_tbl              => l_p_QUALIFIERS_tbl
185     ,   p_PRICING_ATTR_tbl            => l_p_PRICING_ATTR_tbl
186     ,   x_PRICE_LIST_rec              => l_PRICE_LIST_rec
187     ,   x_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
188     ,   x_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
189     ,   x_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
190     );
191 
192     --  Load Id OUT parameters.
193 
194     x_PRICE_LIST_rec               := l_PRICE_LIST_rec;
195     x_PRICE_LIST_LINE_tbl          := l_PRICE_LIST_LINE_tbl;
196     x_QUALIFIERS_tbl               := l_QUALIFIERS_tbl;
197     x_PRICING_ATTR_tbl             := l_PRICING_ATTR_tbl;
198 
199     --  If p_return_values is TRUE then convert Ids to Values.
200 
201     IF FND_API.to_Boolean(p_return_values) THEN
202 
203         Id_To_Value
204         (   p_PRICE_LIST_rec              => l_PRICE_LIST_rec
205         ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
206         ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
207         ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
208         ,   x_PRICE_LIST_val_rec          => x_PRICE_LIST_val_rec
209         ,   x_PRICE_LIST_LINE_val_tbl     => x_PRICE_LIST_LINE_val_tbl
210         ,   x_QUALIFIERS_val_tbl          => x_QUALIFIERS_val_tbl
211         ,   x_PRICING_ATTR_val_tbl        => x_PRICING_ATTR_val_tbl
212         );
213 
214     END IF;
215 
216 EXCEPTION
217 
218     WHEN FND_API.G_EXC_ERROR THEN
219 
220         x_return_status := FND_API.G_RET_STS_ERROR;
221 
222         --  Get message count and data
223 
224         oe_msg_pub.Count_And_Get
225         (   p_count                       => x_msg_count
226         ,   p_data                        => x_msg_data
227         );
228 
229     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
230 
231         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
232 
233         --  Get message count and data
234 
235         oe_msg_pub.Count_And_Get
236         (   p_count                       => x_msg_count
237         ,   p_data                        => x_msg_data
238         );
239 
240     WHEN OTHERS THEN
241 
242         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
243 
244         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
245         THEN
246             oe_msg_pub.Add_Exc_Msg
247             (   G_PKG_NAME
248             ,   'Process_Price_List'
249             );
250         END IF;
251 
252         --  Get message count and data
253 
254         oe_msg_pub.Count_And_Get
255         (   p_count                       => x_msg_count
256         ,   p_data                        => x_msg_data
257         );
258 
259 END Process_Price_List;
260 
261 --  Start of Comments
262 --  API name    Lock_Price_List
263 --  Type        Public
264 --  Function
265 --
266 --  Pre-reqs
267 --
268 --  Parameters
269 --
270 --  Version     Current version = 1.0
271 --              Initial version = 1.0
272 --
273 --  Notes
274 --
275 --  End of Comments
276 
277 PROCEDURE Lock_Price_List
278 (   p_api_version_number            IN  NUMBER
279 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
280 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
281 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
282 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
283 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
284 ,   p_PRICE_LIST_rec                IN  QP_Price_List_PUB.Price_List_Rec_Type :=
285                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_REC
286 ,   p_PRICE_LIST_val_rec            IN  QP_Price_List_PUB.Price_List_Val_Rec_Type :=
287                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_VAL_REC
288 ,   p_PRICE_LIST_LINE_tbl           IN  QP_Price_List_PUB.Price_List_Line_Tbl_Type :=
289                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_TBL
290 ,   p_PRICE_LIST_LINE_val_tbl       IN  QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type :=
291                                         QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_VAL_TBL
292 ,   p_QUALIFIERS_tbl                IN  Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type :=
293                                         QP_Price_List_PUB.G_MISS_QUALIFIERS_TBL
294 ,   p_QUALIFIERS_val_tbl            IN  Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type :=
295                                         QP_Price_List_PUB.G_MISS_QUALIFIERS_VAL_TBL
296 ,   p_PRICING_ATTR_tbl              IN  QP_Price_List_PUB.Pricing_Attr_Tbl_Type :=
297                                         QP_Price_List_PUB.G_MISS_PRICING_ATTR_TBL
298 ,   p_PRICING_ATTR_val_tbl          IN  QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type :=
299                                         QP_Price_List_PUB.G_MISS_PRICING_ATTR_VAL_TBL
300 ,   x_PRICE_LIST_rec                OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
301 ,   x_PRICE_LIST_val_rec            OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Val_Rec_Type
302 ,   x_PRICE_LIST_LINE_tbl           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
303 ,   x_PRICE_LIST_LINE_val_tbl       OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
304 ,   x_QUALIFIERS_tbl                OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
305 ,   x_QUALIFIERS_val_tbl            OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
306 ,   x_PRICING_ATTR_tbl              OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
307 ,   x_PRICING_ATTR_val_tbl          OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
308 )
309 IS
310 l_api_version_number          CONSTANT NUMBER := 1.0;
311 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Price_List';
312 l_return_status               VARCHAR2(1);
313 l_PRICE_LIST_rec              QP_Price_List_PUB.Price_List_Rec_Type;
314 l_p_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
315 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
316 l_p_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
317 l_QUALIFIERS_tbl              Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
318 l_p_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
319 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
320 l_p_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
321 BEGIN
322 
323     --  Standard call to check for call compatibility
324 
325     IF NOT FND_API.Compatible_API_Call
326            (   l_api_version_number
327            ,   p_api_version_number
328            ,   l_api_name
329            ,   G_PKG_NAME
330            )
331     THEN
332         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
333     END IF;
334 
335     --  Perform Value to Id conversion
336 
337     Value_To_Id
338     (   x_return_status               => l_return_status
339     ,   p_PRICE_LIST_rec              => p_PRICE_LIST_rec
340     ,   p_PRICE_LIST_val_rec          => p_PRICE_LIST_val_rec
341     ,   p_PRICE_LIST_LINE_tbl         => p_PRICE_LIST_LINE_tbl
342     ,   p_PRICE_LIST_LINE_val_tbl     => p_PRICE_LIST_LINE_val_tbl
343     ,   p_QUALIFIERS_tbl              => p_QUALIFIERS_tbl
344     ,   p_QUALIFIERS_val_tbl          => p_QUALIFIERS_val_tbl
345     ,   p_PRICING_ATTR_tbl            => p_PRICING_ATTR_tbl
346     ,   p_PRICING_ATTR_val_tbl        => p_PRICING_ATTR_val_tbl
347     ,   x_PRICE_LIST_rec              => l_PRICE_LIST_rec
348     ,   x_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
349     ,   x_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
350     ,   x_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
351     );
352 
353     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
354         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
355     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
356         RAISE FND_API.G_EXC_ERROR;
357     END IF;
358 
359 
360     --  Call QP_LIST_HEADERS_PVT.Lock_Price_List
361      l_p_PRICE_LIST_rec := l_PRICE_LIST_rec;
362      l_p_PRICE_LIST_LINE_tbl := l_PRICE_LIST_LINE_tbl;
363      l_p_QUALIFIERS_tbl := l_QUALIFIERS_tbl;
364      l_p_PRICING_ATTR_tbl := l_PRICING_ATTR_tbl;
365 
366     QP_LIST_HEADERS_PVT.Lock_Price_List
367     (   p_api_version_number          => 1.0
368     ,   p_init_msg_list               => p_init_msg_list
369     ,   x_return_status               => x_return_status
370     ,   x_msg_count                   => x_msg_count
371     ,   x_msg_data                    => x_msg_data
372     ,   p_PRICE_LIST_rec              => l_p_PRICE_LIST_rec
373     ,   p_PRICE_LIST_LINE_tbl         => l_p_PRICE_LIST_LINE_tbl
374     ,   p_QUALIFIERS_tbl              => l_p_QUALIFIERS_tbl
375     ,   p_PRICING_ATTR_tbl            => l_p_PRICING_ATTR_tbl
376     ,   x_PRICE_LIST_rec              => l_PRICE_LIST_rec
377     ,   x_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
378     ,   x_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
379     ,   x_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
380     );
381 
382     --  Load Id OUT parameters.
383 
384     x_PRICE_LIST_rec               := l_PRICE_LIST_rec;
385     x_PRICE_LIST_LINE_tbl          := l_PRICE_LIST_LINE_tbl;
386     x_QUALIFIERS_tbl               := l_QUALIFIERS_tbl;
387     x_PRICING_ATTR_tbl             := l_PRICING_ATTR_tbl;
388 
389     --  If p_return_values is TRUE then convert Ids to Values.
390 
391     IF FND_API.to_Boolean(p_return_values) THEN
392 
393         Id_To_Value
394         (   p_PRICE_LIST_rec              => l_PRICE_LIST_rec
395         ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
396         ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
397         ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
398         ,   x_PRICE_LIST_val_rec          => x_PRICE_LIST_val_rec
399         ,   x_PRICE_LIST_LINE_val_tbl     => x_PRICE_LIST_LINE_val_tbl
400         ,   x_QUALIFIERS_val_tbl          => x_QUALIFIERS_val_tbl
401         ,   x_PRICING_ATTR_val_tbl        => x_PRICING_ATTR_val_tbl
402         );
403 
404     END IF;
405 
406 EXCEPTION
407 
408     WHEN FND_API.G_EXC_ERROR THEN
409 
410         x_return_status := FND_API.G_RET_STS_ERROR;
411 
412         --  Get message count and data
413 
414         oe_msg_pub.Count_And_Get
415         (   p_count                       => x_msg_count
416         ,   p_data                        => x_msg_data
417         );
418 
419     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
420 
421         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
422 
423         --  Get message count and data
424 
425         oe_msg_pub.Count_And_Get
426         (   p_count                       => x_msg_count
427         ,   p_data                        => x_msg_data
428         );
429 
430     WHEN OTHERS THEN
431 
432         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
433 
434         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
435         THEN
436             oe_msg_pub.Add_Exc_Msg
437             (   G_PKG_NAME
438             ,   'Lock_Price_List'
439             );
440         END IF;
441 
442         --  Get message count and data
443 
444         oe_msg_pub.Count_And_Get
445         (   p_count                       => x_msg_count
446         ,   p_data                        => x_msg_data
447         );
448 
449 END Lock_Price_List;
450 
451 --  Start of Comments
452 --  API name    Get_Price_List
453 --  Type        Public
454 --  Function
455 --
456 --  Pre-reqs
457 --
458 --  Parameters
459 --
460 --  Version     Current version = 1.0
461 --              Initial version = 1.0
462 --
463 --  Notes
464 --
465 --  End of Comments
466 
467 PROCEDURE Get_Price_List
468 (   p_api_version_number            IN  NUMBER
469 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
470 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
471 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
472 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
473 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
474 ,   p_list_header_id                IN  NUMBER :=
475                                         FND_API.G_MISS_NUM
476 ,   p_list_header                   IN  VARCHAR2 :=
477                                         FND_API.G_MISS_CHAR
478 ,   x_PRICE_LIST_rec                OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
479 ,   x_PRICE_LIST_val_rec            OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Val_Rec_Type
480 ,   x_PRICE_LIST_LINE_tbl           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
481 ,   x_PRICE_LIST_LINE_val_tbl       OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
482 ,   x_QUALIFIERS_tbl                OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
483 ,   x_QUALIFIERS_val_tbl            OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
484 ,   x_PRICING_ATTR_tbl              OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
485 ,   x_PRICING_ATTR_val_tbl          OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
486 )
487 IS
488 l_api_version_number          CONSTANT NUMBER := 1.0;
489 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Price_List';
490 l_list_header_id              NUMBER := p_list_header_id;
491 l_PRICE_LIST_rec              QP_Price_List_PUB.Price_List_Rec_Type;
492 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
493 l_QUALIFIERS_tbl              Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
494 l_PRICING_ATTR_tbl            QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
495 BEGIN
496 
497     --  Standard call to check for call compatibility
498 
499     IF NOT FND_API.Compatible_API_Call
500            (   l_api_version_number
501            ,   p_api_version_number
502            ,   l_api_name
503            ,   G_PKG_NAME
504            )
505     THEN
506         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
507     END IF;
508 
509     --  Standard check for Val/ID conversion
510 
511     IF  p_list_header = FND_API.G_MISS_CHAR
512     THEN
513 
514         l_list_header_id := p_list_header_id;
515 
516     ELSIF p_list_header_id <> FND_API.G_MISS_NUM THEN
517 
518         l_list_header_id := p_list_header_id;
519 
520         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_SUCCESS)
521         THEN
522 
523             FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
524             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_header');
525             oe_msg_pub.Add;
526 
527         END IF;
528 
529     ELSE
530 
531         --  Convert Value to Id
532 
533         l_list_header_id := QP_Value_To_Id.list_header
534         (   p_list_header                 => p_list_header
535         );
536 
537         IF l_list_header_id = FND_API.G_MISS_NUM THEN
538             IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_ERROR)
539             THEN
540 
541                 FND_MESSAGE.SET_NAME('QP','Invalid Business Object Value');
542                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list_header');
543                 oe_msg_pub.Add;
544 
545             END IF;
546         END IF;
547 
548         RAISE FND_API.G_EXC_ERROR;
549 
550     END IF;
551 
552 
553     --  Call QP_LIST_HEADERS_PVT.Get_Price_List
554 
555     QP_LIST_HEADERS_PVT.Get_Price_List
556     (   p_api_version_number          => 1.0
557     ,   p_init_msg_list               => p_init_msg_list
558     ,   x_return_status               => x_return_status
559     ,   x_msg_count                   => x_msg_count
560     ,   x_msg_data                    => x_msg_data
561     ,   p_list_header_id              => l_list_header_id
562     ,   x_PRICE_LIST_rec              => l_PRICE_LIST_rec
563     ,   x_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
564     ,   x_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
565     ,   x_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
566     );
567 
568     --  Load Id OUT parameters.
569 
570     x_PRICE_LIST_rec               := l_PRICE_LIST_rec;
571     x_PRICE_LIST_LINE_tbl          := l_PRICE_LIST_LINE_tbl;
572     x_QUALIFIERS_tbl               := l_QUALIFIERS_tbl;
573     x_PRICING_ATTR_tbl             := l_PRICING_ATTR_tbl;
574 
575     --  If p_return_values is TRUE then convert Ids to Values.
576 
577     IF FND_API.TO_BOOLEAN(p_return_values) THEN
578 
579         Id_To_Value
580         (   p_PRICE_LIST_rec              => l_PRICE_LIST_rec
581         ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
582         ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
583         ,   p_PRICING_ATTR_tbl            => l_PRICING_ATTR_tbl
584         ,   x_PRICE_LIST_val_rec          => x_PRICE_LIST_val_rec
585         ,   x_PRICE_LIST_LINE_val_tbl     => x_PRICE_LIST_LINE_val_tbl
586         ,   x_QUALIFIERS_val_tbl          => x_QUALIFIERS_val_tbl
587         ,   x_PRICING_ATTR_val_tbl        => x_PRICING_ATTR_val_tbl
588         );
589 
590     END IF;
591 
592     --  Set return status
593 
594     x_return_status := FND_API.G_RET_STS_SUCCESS;
595 
596     --  Get message count and data
597 
598     oe_msg_pub.Count_And_Get
599     (   p_count                       => x_msg_count
600     ,   p_data                        => x_msg_data
601     );
602 
603 
604 EXCEPTION
605 
606     WHEN FND_API.G_EXC_ERROR THEN
607 
608         x_return_status := FND_API.G_RET_STS_ERROR;
609 
610         --  Get message count and data
611 
612         oe_msg_pub.Count_And_Get
613         (   p_count                       => x_msg_count
614         ,   p_data                        => x_msg_data
615         );
616 
617     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
618 
619         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
620 
621         --  Get message count and data
622 
623         oe_msg_pub.Count_And_Get
624         (   p_count                       => x_msg_count
625         ,   p_data                        => x_msg_data
626         );
627 
628     WHEN OTHERS THEN
629 
630         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
631 
632         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
633         THEN
634             oe_msg_pub.Add_Exc_Msg
635             (   G_PKG_NAME
636             ,   'Get_Price_List'
637             );
638         END IF;
639 
640         --  Get message count and data
641 
642         oe_msg_pub.Count_And_Get
643         (   p_count                       => x_msg_count
644         ,   p_data                        => x_msg_data
645         );
646 
647 END Get_Price_List;
648 
649 --  Procedure Id_To_Value
650 
651 PROCEDURE Id_To_Value
652 (   p_PRICE_LIST_rec                IN  QP_Price_List_PUB.Price_List_Rec_Type
653 ,   p_PRICE_LIST_LINE_tbl           IN  QP_Price_List_PUB.Price_List_Line_Tbl_Type
654 ,   p_QUALIFIERS_tbl                IN  Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
655 ,   p_PRICING_ATTR_tbl              IN  QP_Price_List_PUB.Pricing_Attr_Tbl_Type
656 ,   x_PRICE_LIST_val_rec            OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Val_Rec_Type
657 ,   x_PRICE_LIST_LINE_val_tbl       OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
658 ,   x_QUALIFIERS_val_tbl            OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
659 ,   x_PRICING_ATTR_val_tbl          OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
660 )
661 IS
662 BEGIN
663 
664     --  Convert PRICE_LIST
665 
666     x_PRICE_LIST_val_rec := QP_Price_List_Util.Get_Values(p_PRICE_LIST_rec);
667 
668     --  Convert PRICE_LIST_LINE
669 
670     FOR I IN 1..p_PRICE_LIST_LINE_tbl.COUNT LOOP
671         x_PRICE_LIST_LINE_val_tbl(I) :=
672             QP_Price_List_Line_Util.Get_Values(p_PRICE_LIST_LINE_tbl(I));
673     END LOOP;
674 
675     --  Convert QUALIFIERS
676 
677     FOR I IN 1..p_QUALIFIERS_tbl.COUNT LOOP
678         x_QUALIFIERS_val_tbl(I) :=
679             QP_Qualifiers_Util.Get_Values(p_QUALIFIERS_tbl(I));
680     END LOOP;
681 
682 
683     --  Convert PRICING_ATTR
684 
685     FOR I IN 1..p_PRICING_ATTR_tbl.COUNT LOOP
686         x_PRICING_ATTR_val_tbl(I) :=
687             QP_pll_pricing_attr_Util.Get_Values(p_PRICING_ATTR_tbl(I));
688     END LOOP;
689 
690 EXCEPTION
691 
692     WHEN OTHERS THEN
693 
694         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
695         THEN
696             oe_msg_pub.Add_Exc_Msg
697             (   G_PKG_NAME
698             ,   'Id_To_Value'
699             );
700         END IF;
701 
702         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
703 
704 END Id_To_Value;
705 
706 --  Procedure Value_To_Id
707 
708 PROCEDURE Value_To_Id
709 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
710 ,   p_PRICE_LIST_rec                IN  QP_Price_List_PUB.Price_List_Rec_Type
711 ,   p_PRICE_LIST_val_rec            IN  QP_Price_List_PUB.Price_List_Val_Rec_Type
712 ,   p_PRICE_LIST_LINE_tbl           IN  QP_Price_List_PUB.Price_List_Line_Tbl_Type
713 ,   p_PRICE_LIST_LINE_val_tbl       IN  QP_Price_List_PUB.Price_List_Line_Val_Tbl_Type
714 ,   p_QUALIFIERS_tbl                IN  Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
715 ,   p_QUALIFIERS_val_tbl            IN  Qp_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type
716 ,   p_PRICING_ATTR_tbl              IN  QP_Price_List_PUB.Pricing_Attr_Tbl_Type
717 ,   p_PRICING_ATTR_val_tbl          IN  QP_Price_List_PUB.Pricing_Attr_Val_Tbl_Type
718 ,   x_PRICE_LIST_rec                OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Rec_Type
719 ,   x_PRICE_LIST_LINE_tbl           OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Price_List_Line_Tbl_Type
720 ,   x_QUALIFIERS_tbl                OUT NOCOPY /* file.sql.39 change */ Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type
721 ,   x_PRICING_ATTR_tbl              OUT NOCOPY /* file.sql.39 change */ QP_Price_List_PUB.Pricing_Attr_Tbl_Type
722 )
723 IS
724 l_PRICE_LIST_rec              QP_Price_List_PUB.Price_List_Rec_Type;
725 l_PRICE_LIST_LINE_rec         QP_Price_list_PUB.Price_List_Line_Rec_Type;
726 l_QUALIFIERS_rec              Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
727 l_PRICING_ATTR_rec            QP_Price_List_PUB.Pricing_Attr_Rec_Type;
728 l_index                       BINARY_INTEGER;
729 BEGIN
730 
731     --  Init x_return_status.
732 
733     x_return_status := FND_API.G_RET_STS_SUCCESS;
734 
735     --  Convert PRICE_LIST
736 
737     l_PRICE_LIST_rec := QP_Price_List_Util.Get_Ids
738     (   p_PRICE_LIST_rec              => p_PRICE_LIST_rec
739     ,   p_PRICE_LIST_val_rec          => p_PRICE_LIST_val_rec
740     );
741 
742     x_PRICE_LIST_rec               := l_PRICE_LIST_rec;
743 
744     IF l_PRICE_LIST_rec.return_status = FND_API.G_RET_STS_ERROR THEN
745         x_return_status := FND_API.G_RET_STS_ERROR;
746     END IF;
747 
748     --  Convert PRICE_LIST_LINE
749 
750     x_PRICE_LIST_LINE_tbl := p_PRICE_LIST_LINE_tbl;
751 
752     l_index := p_PRICE_LIST_LINE_val_tbl.FIRST;
753 
754     WHILE l_index IS NOT NULL LOOP
755 
756         l_PRICE_LIST_LINE_rec := QP_Price_List_Line_Util.Get_Ids
757         (   p_PRICE_LIST_LINE_rec         => p_PRICE_LIST_LINE_tbl(l_index)
758         ,   p_PRICE_LIST_LINE_val_rec     => p_PRICE_LIST_LINE_val_tbl(l_index)
759         );
760 
761         x_PRICE_LIST_LINE_tbl(l_index) := l_PRICE_LIST_LINE_rec;
762 
763         IF l_PRICE_LIST_LINE_rec.return_status = FND_API.G_RET_STS_ERROR THEN
764             x_return_status := FND_API.G_RET_STS_ERROR;
765         END IF;
766 
767         l_index := p_PRICE_LIST_LINE_val_tbl.NEXT(l_index);
768 
769     END LOOP;
770 
771     --  Convert QUALIFIERS
772 
773     x_QUALIFIERS_tbl := p_QUALIFIERS_tbl;
774 
775     l_index := p_QUALIFIERS_val_tbl.FIRST;
776 
777 
778     WHILE l_index IS NOT NULL LOOP
779 
780         l_QUALIFIERS_rec := QP_Qualifiers_Util.Get_Ids
781         (   p_QUALIFIERS_rec              => p_QUALIFIERS_tbl(l_index)
782         ,   p_QUALIFIERS_val_rec          => p_QUALIFIERS_val_tbl(l_index)
783         );
784 
785         x_QUALIFIERS_tbl(l_index)      := l_QUALIFIERS_rec;
786 
787         IF l_QUALIFIERS_rec.return_status = FND_API.G_RET_STS_ERROR THEN
788             x_return_status := FND_API.G_RET_STS_ERROR;
789         END IF;
790 
791         l_index := p_QUALIFIERS_val_tbl.NEXT(l_index);
792 
793     END LOOP;
794 
795 
796     --  Convert PRICING_ATTR
797 
798     x_PRICING_ATTR_tbl := p_PRICING_ATTR_tbl;
799 
800     l_index := p_PRICING_ATTR_val_tbl.FIRST;
801 
802     WHILE l_index IS NOT NULL LOOP
803 
804         l_PRICING_ATTR_rec := QP_pll_pricing_attr_Util.Get_Ids
805         (   p_PRICING_ATTR_rec            => p_PRICING_ATTR_tbl(l_index)
806         ,   p_PRICING_ATTR_val_rec        => p_PRICING_ATTR_val_tbl(l_index)
807         );
808 
809         x_PRICING_ATTR_tbl(l_index)    := l_PRICING_ATTR_rec;
810 
811         IF l_PRICING_ATTR_rec.return_status = FND_API.G_RET_STS_ERROR THEN
812             x_return_status := FND_API.G_RET_STS_ERROR;
813         END IF;
814 
815         l_index := p_PRICING_ATTR_val_tbl.NEXT(l_index);
816 
817     END LOOP;
818 
819 EXCEPTION
820 
821     WHEN OTHERS THEN
822 
823         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
824         THEN
825             oe_msg_pub.Add_Exc_Msg
826             (   G_PKG_NAME
827             ,   'Value_To_Id'
828             );
829         END IF;
830 
831         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
832 
833 END Value_To_Id;
834 
835 END QP_Price_List_GRP;