DBA Data[Home] [Help]

PACKAGE BODY: APPS.AS_FOUNDATION_PUB

Source


1 PACKAGE BODY AS_FOUNDATION_PUB as
2 /* $Header: asxpfoub.pls 120.1 2005/06/05 22:52:17 appldev  $ */
3 --
4 -- NAME
5 -- AS_FOUNDATION_PUB
6 --
7 -- HISTORY
8 --   8/06/98       ALHUNG        CREATED
9 --   Sept 1, 98    cklee         Added new function Get_Constant
10 --   06/22/99      awu           Added get_messages and get_periodNames
11 --	6/29/2000		Srikanth	deleted get_messages as it was implemented in as_utility_pub
12 
13 G_PKG_NAME  CONSTANT VARCHAR2(30):='AS_FOUNDATION_PUB';
14 G_FILE_NAME   CONSTANT VARCHAR2(12):='asxpfoub.pls';
15 --G_USER_ID         NUMBER := FND_GLOBAL.User_Id;
16 
17 
18 PROCEDURE Get_inventory_items(  p_api_version_number      IN    NUMBER,
19                                 p_init_msg_list           IN    VARCHAR2
20                                     := FND_API.G_FALSE,
21                                 p_identity_salesforce_id  IN    NUMBER,
22                                 p_inventory_item_rec      IN    AS_FOUNDATION_PUB.Inventory_Item_REC_TYPE,
23                                 x_return_status           OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
24                                 x_msg_count               OUT NOCOPY /* file.sql.39 change */   NUMBER,
25                                 x_msg_data                OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
26                                 x_inventory_item_tbl      OUT NOCOPY /* file.sql.39 change */   AS_FOUNDATION_PUB.inventory_item_TBL_TYPE) IS
27 
28 
29 
30 
31           -- Local API Variables
32           l_api_name    CONSTANT VARCHAR2(30)     := 'Get_inventory_items';
33           l_api_version_number  CONSTANT NUMBER   := 2.0;
34 
35           -- Local Identity Variables
36 
37           l_identity_sales_member_rec      AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
38 
39           -- Locat tmp Variables
40           l_inventory_item_rec AS_FOUNDATION_PUB.inventory_item_Rec_Type;
41 
42           -- Local record index
43           l_cur_index Number := 0;
44 
45           -- Local return statuses
46           l_return_status Varchar2(1);
47 
48   BEGIN
49             -- Standard call to check for call compatibility.
50       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
51                                    p_api_version_number,
52                                    l_api_name,
53                                    G_PKG_NAME)
54       THEN
55           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
56       END IF;
57 
58 
59       -- Initialize message list if p_init_msg_list is set to TRUE.
60       IF FND_API.to_Boolean( p_init_msg_list ) THEN
61           FND_MSG_PUB.initialize;
62       END IF;
63 
64       -- Debug Message
65 --      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
66       --THEN
67           --dbms_output.put_line('AS_FOUNDATION_PUB.Get_inventory_items: Start');
68       --END IF;
69 
70       --  Initialize API return status to success
71       x_return_status := FND_API.G_RET_STS_SUCCESS;
72 
73 
74       -- API BODY
75 
76       AS_FOUNDATION_PVT.Get_inventory_items(  p_api_version_number  => 2.0,
77                                 p_init_msg_list => FND_API.G_FALSE,
78                                 p_identity_salesforce_id => p_identity_salesforce_id,
79                                 p_inventory_item_rec => p_inventory_item_rec,
80                                 x_return_status  => l_return_status,
81                                 x_msg_count      => x_msg_count,
82                                 x_msg_data       => x_msg_data,
83                                 x_inventory_item_tbl  => x_inventory_item_tbl);
84 
85 
86       IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) Then
87           RAISE FND_API.G_EXC_ERROR;
88       End if;
89 
90     -- API Ending
91 
92     x_return_status := FND_API.G_RET_STS_SUCCESS;
93 
94       -- Success Message
95     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
96     THEN
97         FND_MESSAGE.Set_Name('AS', 'API_SUCCESS');
98         FND_MESSAGE.Set_Token('ROW', 'AS_Foundation', TRUE);
99         FND_MSG_PUB.Add;
100     END IF;
101 
102 
103       -- Debug Message
104     --IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
105     --THEN
106       --dbms_output.put_line('AS_FOUNDATION_PUB.Get_inventory_items: End');
107     --END IF;
108 
109       -- Standard call to get message count and if count is 1, get message info.
110     FND_MSG_PUB.Count_And_Get
111       (   p_count           =>      x_msg_count,
112           p_data            =>      x_msg_data
113       );
114 
115 
116   EXCEPTION
117 
118       WHEN FND_API.G_EXC_ERROR THEN
119 
120           x_return_status := FND_API.G_RET_STS_ERROR ;
121 
122           FND_MSG_PUB.Count_And_Get
123               ( p_count           =>      x_msg_count,
124                 p_data            =>      x_msg_data
125               );
126 
127 
128       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
129 
130           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
131 
132           FND_MSG_PUB.Count_And_Get
133               ( p_count           =>      x_msg_count,
134                 p_data            =>      x_msg_data
135               );
136 
137 
138       WHEN OTHERS THEN
139 
140 
141           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
142 
143           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
144           THEN
145               FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
146           END IF;
147 
148           FND_MSG_PUB.Count_And_Get
149               ( p_count         =>      x_msg_count,
150                 p_data            =>      x_msg_data
151               );
152 
153 
154   End Get_inventory_items;
155 
156 --
157 -- NAME
158 --   Get_FND_API_Constant
159 --
160 -- PURPOSE
161 --   This function will return constant according to the passed in constant name.
162 --   This is a problem referencing constants from forms. We have to create server-
163 --   side function that return these values.
164 --
165 -- NOTES
166 --
167 FUNCTION Get_Constant(Constant_Name varchar2)
168 return varchar2
169 IS
170 BEGIN
171 
172 	if upper(Constant_Name) = 'FND_API.G_TRUE' then
173 		return FND_API.G_TRUE;
174 	elsif upper(Constant_Name) = 'FND_API.G_VALID_LEVEL_FULL' then
175 		return FND_API.G_VALID_LEVEL_FULL;
176 	elsif upper(Constant_Name) = 'FND_API.G_VALID_LEVEL_NONE' then
177 		return FND_API.G_VALID_LEVEL_NONE;
178 	-- elsif upper(Constant_Name) = 'CS_INTERACTION_GRP.G_VALID_LEVEL_INT' then
179 		-- return CS_INTERACTION_GRP.G_VALID_LEVEL_INT; -- Commented OUT NOCOPY /* file.sql.39 change */ by Twzhou on March 07, 2000
180 	else
181 		return null;
182 	end if;
183 
184 EXCEPTION
185   When OTHERS  then
186 	NULL;
187 END;
188 
189 PROCEDURE Calculate_Amount( p_api_version_number      IN    NUMBER,
190                             p_init_msg_list           IN    VARCHAR2 DEFAULT FND_API.G_FALSE,
191 			    p_validation_level	      IN    NUMBER := FND_API.G_VALID_LEVEL_FULL,
192                             p_identity_salesforce_id  IN    NUMBER,
193 			    p_inventory_item_rec      IN    AS_FOUNDATION_PUB.Inventory_Item_REC_TYPE
194 				 DEFAULT AS_FOUNDATION_PUB.G_MISS_INVENTORY_ITEM_REC,
195 			    p_secondary_interest_code_id    IN  NUMBER DEFAULT FND_API.G_MISS_NUM,
196 			    p_currency_code	      IN    VARCHAR2,
197 			    p_volume		      IN    NUMBER,
198                             x_return_status           OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
199                             x_msg_count               OUT NOCOPY /* file.sql.39 change */   NUMBER,
200                             x_msg_data                OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
201 			    x_amount		      OUT NOCOPY /* file.sql.39 change */   NUMBER) IS
202 
203 	-- Local API Variables
204 	l_api_name    CONSTANT VARCHAR2(30)     := 'Calculate_Amount';
205 	l_api_version_number  CONSTANT NUMBER   := 2.0;
206 
207 	l_inv_item_tbl	AS_FOUNDATION_PUB.Inventory_Item_tbl_type;
208 	l_price_list_id NUMBER;
209 	l_price		NUMBER;
210 	l_amount	NUMBER;
211 BEGIN
212 	-- Standard call to check for call compatibility.
213 	IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
214                        p_api_version_number,
215                        l_api_name,
216                        G_PKG_NAME) THEN
217            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
218 	END IF;
219 
220 	-- Initialize message list if p_init_msg_list is set to TRUE.
221 	IF FND_API.to_Boolean( p_init_msg_list ) THEN
222            FND_MSG_PUB.initialize;
223 	END IF;
224 
225 	-- Debug Message
226 	--IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
227            --dbms_output.put_line('AS_Foundation_PUB.Calculate_Amount: Start');
228 	--END IF;
229 
230 	--  Initialize API return status to success
231 	x_return_status := FND_API.G_RET_STS_SUCCESS;
232 	-- Fix bug 858155 initialize the l_price to NULL instead of 0
233 	l_price := NULL;
234 	IF (p_inventory_item_rec.inventory_item_id IS NOT NULL) AND
235 	   (p_inventory_item_rec.inventory_item_id <> FND_API.G_MISS_NUM) THEN
236 	      AS_FOUNDATION_PUB.Get_Inventory_items(
237 			p_api_version_number => 2.0,
238 			p_init_msg_list => FND_API.G_TRUE,
239 			p_identity_salesforce_id => NULL,
240 			p_inventory_item_rec => p_inventory_item_rec,
241 			x_return_status => x_return_status,
242 			x_msg_count => x_msg_count,
243 			x_msg_data => x_msg_data,
244 			x_inventory_item_tbl => l_inv_item_tbl);
245 	      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
246 	         --IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
247 		    --dbms_output.put_line('AS_FOUNDATION_PUB - Item : Not Found');
248 	         --END IF;
249 	         raise FND_API.G_EXC_ERROR;
250 	      END IF;
251 	      IF (p_inventory_item_rec.Primary_UOM_Code IS NOT NULL) THEN
252 		   l_inv_item_tbl(1).Primary_UOM_Code := p_inventory_item_rec.Primary_UOM_Code;
253 	      END IF;
254 	      -- Debug Message
255 --	      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
256                  --dbms_output.put_line('AS_Foundation_PVT - UOM:' || p_inventory_item_rec.Primary_Uom_Code);
257 	      --END IF;
258 	      AS_FOUNDATION_PVT.Get_Price_Info(p_api_version_number => 2.0,
259 			     p_init_msg_list => FND_API.G_FALSE,
260 			     p_inventory_item_rec => l_inv_item_tbl(1),
261 			     p_secondary_interest_code_id => NULL,
262 			     p_currency_code => p_currency_code,
263 			     x_return_status => x_return_status,
264 			     x_msg_count => x_msg_count,
265 			     x_msg_data => x_msg_data,
266 			     x_price_list_id => l_price_list_id,
267 			     x_price => l_price);
268 	     Elsif (p_secondary_interest_code_id IS NOT NULL) AND
269 		   (p_secondary_interest_code_id <> FND_API.G_MISS_NUM) THEN
270 	      AS_FOUNDATION_PVT.Get_Price_Info(p_api_version_number => 2.0,
271 			     p_init_msg_list => FND_API.G_FALSE,
272 			     p_inventory_item_rec => NULL,
273 			     p_secondary_interest_code_id => p_secondary_interest_code_id,
274 			     p_currency_code => p_currency_code,
275 			     x_return_status => x_return_status,
276 			     x_msg_count => x_msg_count,
277 			     x_msg_data => x_msg_data,
278 			     x_price_list_id => l_price_list_id,
279 			     x_price => l_price);
280 	   END IF;
281 	   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
282 --	      IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
283 		   --dbms_output.put_line('AS_FOUNDATION_PUB - Price : Not Found');
284 	      --END IF;
285 	      IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
286 		   FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
287 		   FND_MESSAGE.Set_Token('COLUMN','Price', FALSE);
288 		   FND_MSG_PUB.ADD;
289 	      END IF;
290 	      raise FND_API.G_EXC_ERROR;
291 	   END IF;
292 	   -- Fix bug 858155
293 	   IF l_price IS NULL THEN
294 	      l_amount := NULL;
295 	     ELSE
296 	      l_amount := p_volume * l_price;
297 	   END IF;
298 --	   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
299 	      --dbms_output.put_line('AS_Foundation_PUB - Amount: ' || to_char(l_amount));
300 	   --END IF;
301  	   x_amount := l_amount;
302 	   -- Success Message
303 	   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
304 	      FND_MESSAGE.Set_Name('AS', 'API_SUCCESS');
305 	      FND_MESSAGE.Set_Token('ROW', 'AS_Foundation', TRUE);
306 	      FND_MSG_PUB.Add;
307 	   END IF;
308 
309 	   -- Debug Message
310 --	   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
311 	      --dbms_output.put_line('AS_Foundation_PUB.Calculate_Amount: End');
312 	   --END IF;
313 
314 	   -- Standard call to get message count and if count is 1, get message info.
315 	   FND_MSG_PUB.Count_And_Get
316            (   p_count           =>      x_msg_count,
317                p_data            =>      x_msg_data
318            );
319 
320   EXCEPTION
321       WHEN FND_API.G_EXC_ERROR THEN
322           x_return_status := FND_API.G_RET_STS_ERROR ;
323           FND_MSG_PUB.Count_And_Get
324               ( p_count           =>      x_msg_count,
325                 p_data            =>      x_msg_data
326               );
327       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
328           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
329           FND_MSG_PUB.Count_And_Get
330               ( p_count           =>      x_msg_count,
331                 p_data            =>      x_msg_data
332               );
333       WHEN NO_DATA_FOUND THEN
334           x_return_status := FND_API.G_RET_STS_ERROR ;
338           --END IF;
335 --          IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
336           --THEN
337             --dbms_output.put_line('AS_Foundation_PUB. - Cannot Find Price List Id');
339           FND_MSG_PUB.Count_And_Get
340               ( p_count           =>      x_msg_count,
341                 p_data            =>      x_msg_data
342               );
343       WHEN OTHERS THEN
344           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
345           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
346           THEN
347               FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
348           END IF;
349           FND_MSG_PUB.Count_And_Get
350               ( p_count         =>      x_msg_count,
351                 p_data            =>      x_msg_data
352               );
353 END Calculate_Amount;
354 
355 PROCEDURE Get_PeriodNames
356 (    p_api_version_number             IN      NUMBER,
357         p_init_msg_list                 IN      VARCHAR2
358                             := FND_API.G_FALSE,
359     p_period_rec                 IN     UTIL_PERIOD_REC_TYPE,
360     x_period_tbl                 OUT NOCOPY /* file.sql.39 change */     UTIL_PERIOD_TBL_TYPE,
361         x_return_status                 OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
362         x_msg_count                 OUT NOCOPY /* file.sql.39 change */     NUMBER,
363         x_msg_data                 OUT NOCOPY /* file.sql.39 change */     VARCHAR2
364 ) IS
365 l_api_name    CONSTANT VARCHAR2(30)     := 'Get_PeriodNames';
366 l_api_version_number  CONSTANT NUMBER   := 2.0;
367 l_period_rec_in AS_FOUNDATION_PVT.UTIL_PERIOD_REC_TYPE;
368 l_period_tbl AS_FOUNDATION_PVT.UTIL_PERIOD_TBL_TYPE;
369 
370 begin
371  -- Standard call to check for call compatibility.
372 	IF NOT FND_API.Compatible_API_Call (l_api_version_number,
373                                         p_api_version_number,
374                                         l_api_name,
375                                         G_PKG_NAME)
376 	THEN
377 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
378 		THEN
379 			FND_MESSAGE.Set_Name('AS', 'API_UNEXP_ERROR_IN_PROCESSING');
380 			FND_MESSAGE.Set_Token('ROW', 'AS_ACCESSES', TRUE);
381 			FND_MSG_PUB.ADD;
382 		END IF;
383 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
384 	 END IF;
385 
386 	-- Initialize message list if p_init_msg_list is set to TRUE.
387 	IF FND_API.to_Boolean( p_init_msg_list )
388 	THEN
389 		FND_MSG_PUB.initialize;
390 	END IF;
391 
392 	--  Initialize API return status to success
393 	--
394 	x_return_status := FND_API.G_RET_STS_SUCCESS;
395 
396 	--
397 	-- API body
398 	--
399 
400 	-- Validate Environment
401 
402 	IF FND_GLOBAL.User_Id IS NULL
403 	THEN
404 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
405 		THEN
406 			FND_MESSAGE.Set_Name('AS', 'UT_CANNOT_GET_PROFILE_VALUE');
407 			FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
408 			FND_MSG_PUB.ADD;
409 		END IF;
410 	END IF;
411 
412 	l_period_rec_in.period_name := p_period_rec.period_name;
413 	l_period_rec_in.start_date := p_period_rec.start_date;
414 	l_period_rec_in.end_date := p_period_rec.end_date;
415 
416 	as_foundation_pvt.Get_PeriodNames
417 	(       p_api_version_number  => l_api_version_number,
418 		p_init_msg_list       => FND_API.G_FALSE,
419 		p_validation_level    => FND_API.G_VALID_LEVEL_FULL,
420 		p_period_rec          => l_period_rec_in,
421 		x_period_tbl          => l_period_tbl,
422 		x_return_status       => x_return_status,
423 		x_msg_count           => x_msg_count,
424 		x_msg_data            => x_msg_data);
425 
426 
427     EXCEPTION
428 
429       WHEN FND_API.G_EXC_ERROR THEN
430 
431           x_return_status := FND_API.G_RET_STS_ERROR ;
432 
433           FND_MSG_PUB.Count_And_Get
434               ( p_count           =>      x_msg_count,
435                 p_data            =>      x_msg_data
436               );
437 
438 
439       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
440 
441           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
442 
443           FND_MSG_PUB.Count_And_Get
444               ( p_count           =>      x_msg_count,
445                 p_data            =>      x_msg_data
446               );
447 
448 
449       WHEN OTHERS THEN
450 
451 
452           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
453 
454           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
455           THEN
456               FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
457           END IF;
458 
459           FND_MSG_PUB.Count_And_Get
460               ( p_count         =>      x_msg_count,
461                 p_data            =>      x_msg_data
462               );
463 
464 end get_periodNames;
465 
466 
467 END AS_FOUNDATION_PUB;