DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMF_ACTUAL_COST_ADJUSTMENT_PUB

Source


1 PACKAGE BODY GMF_ACTUAL_COST_ADJUSTMENT_PUB AS
2 /* $Header: GMFPACAB.pls 120.2.12000000.2 2007/05/02 12:15:30 pmarada ship $ */
3 
4   /********************************************************************
5   * PACKAGE                                                           *
6   *   GMF_ACTUAL_COST_ADJUSTMENT_PUB                                  *
7   *                                                                   *
8   * TYPE                                                              *
9   *   PUBLIC                                                          *
10   *                                                                   *
11   * FUNCTION                                                          *
12   *   Actual Cost Adjustment Creation, Updation, Query and Deletion   *
13   *                                                                   *
14   * PARAMETERS                                                        *
15   *   N/A                                                             *
16   *                                                                   *
17   * DESCRIPTION                                                       *
18   *   This package contains public procedures relating to Actual Cost *
19   *   Adjustment Creation, Updation, Query and Deletion               *
20   *                                                                   *
21   * HISTORY                                                           *
22   *   16-Sep-2005  Anand Thiyagarajan  Created                        *
23   ********************************************************************/
24 
25   /*******************
26   * Global Variables *
27   *******************/
28   G_PKG_NAME 	        CONSTANT	    VARCHAR2(30)	:=	'GMF_ACTUAL_COST_ADJUSTMENT_PUB';
29   G_tmp		                          BOOLEAN := FND_MSG_PUB.Check_Msg_Level(0) ;
30   G_debug_level			                NUMBER(2)	:=	FND_MSG_PUB.G_Msg_Level_Threshold;
31   G_header_logged                   VARCHAR2(1) := 'N';
32 
33   /**************************************************************
34   * PROCEDURE                                                   *
35   *   log_msg                                                   *
36   *                                                             *
37   * DESCRIPTION                                                 *
38   *   This procedure logs messages to message stack.            *
39   *                                                             *
40   * PARAMETERS                                                  *
41   *   p_msg_lvl             IN NUMBER(10) - Message Level       *
42   *   p_msg_text            IN NUMBER(10) - Actual Message Text *
43   *                                                             *
44   * HISTORY                                                     *
45   *   16-SEP-2005   Anand Thiyagarajan    Created               *
46   *                                                             *
47   **************************************************************/
48   PROCEDURE LOG_MSG
49   (
50   p_msg_text      IN          VARCHAR2
51   )
52   IS
53   BEGIN
54     FND_MESSAGE.SET_NAME('GMF','GMF_API_DEBUG');
55     FND_MESSAGE.SET_TOKEN('MSG',p_msg_text);
56     FND_MSG_PUB.Add;
57   END log_msg ;
58 
59   /**************************************************************
60   * PROCEDURE                                                   *
61   *   add_record_to_error_stack                                 *
62   *                                                             *
63   * DESCRIPTION                                                 *
64   *   This procedure adds the record to Error Stack.            *
65   *                                                             *
66   * PARAMETERS                                                  *
67   *   p_adjustment_rec      IN      ADJUSTMENT_REC_TYPE         *
68   *                                                             *
69   * HISTORY                                                     *
70   *   16-SEP-2005   Anand Thiyagarajan    Created               *
71   *                                                             *
72   **************************************************************/
73   PROCEDURE ADD_RECORD_TO_ERROR_STACK
74   (
75   p_adjustment_rec	        IN          GMF_ACTUAL_COST_ADJUSTMENT_PUB.ADJUSTMENT_REC_TYPE
76   )
77   IS
78   BEGIN
79     IF G_header_logged = 'N'
80     THEN
81       G_header_logged := 'Y';
82       FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_RECORD');
83       FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID', p_adjustment_rec.organization_id);
84       FND_MESSAGE.SET_TOKEN('ORGANIZATION_CODE', p_adjustment_rec.organization_code);
85       FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID', p_adjustment_rec.inventory_item_id);
86       FND_MESSAGE.SET_TOKEN('ITEM_NUMBER', p_adjustment_rec.item_number);
87       FND_MESSAGE.SET_TOKEN('COST_TYPE_ID', p_adjustment_rec.cost_type_id);
88       FND_MESSAGE.SET_TOKEN('COST_MTHD_CODE', p_adjustment_rec.cost_mthd_code);
89       FND_MESSAGE.SET_TOKEN('PERIOD_ID', p_adjustment_rec.period_id);
90       FND_MESSAGE.SET_TOKEN('CALENDAR_CODE', p_adjustment_rec.calendar_code);
91       FND_MESSAGE.SET_TOKEN('PERIOD_CODE', p_adjustment_rec.period_code);
92       FND_MESSAGE.SET_TOKEN('COST_CMPNTCLS_ID', p_adjustment_rec.cost_cmpntcls_id);
93       FND_MESSAGE.SET_TOKEN('COST_CMPNTCLS_CODE', p_adjustment_rec.cost_cmpntcls_code);
94       FND_MESSAGE.SET_TOKEN('COST_ANALYSIS_CODE', p_adjustment_rec.cost_analysis_code);
95       FND_MSG_PUB.Add;
96     END IF;
97   END ADD_RECORD_TO_ERROR_STACK;
98 
99   /**************************************************************
100   * PROCEDURE                                                   *
101   *   validate_input_params                                     *
102   *                                                             *
103   * DESCRIPTION                                                 *
104   *   This procedure validates the input parameters passed      *
105   *                                                             *
106   * PARAMETERS                                                  *
107   *   p_adjustment_rec      IN      ADJUSTMENT_REC_TYPE         *
108   *                                                             *
109   * HISTORY                                                     *
110   *   16-SEP-2005   Anand Thiyagarajan    Created               *
111   *                                                             *
112   **************************************************************/
113   PROCEDURE VALIDATE_INPUT_PARAMS
114   (
115   p_adjustment_rec		      IN  OUT NOCOPY	        GMF_ACTUAL_COST_ADJUSTMENT_PUB.ADJUSTMENT_REC_TYPE,
116   p_operation		            IN		                  VARCHAR2,
117   x_user_id		                  OUT	NOCOPY	        fnd_user.user_id%TYPE,
118   x_return_status	              OUT	NOCOPY	        VARCHAR2
119   )
120   IS
121 
122     /******************
123     * Local Variables *
124     ******************/
125 	  l_reason_cnt			              NUMBER;
126 	  l_text_cnt			                NUMBER;
127     l_header_cnt			              NUMBER;
128 	  l_cost_adjust_id			          cm_adjs_dtl.cost_adjust_id%TYPE;
129 	  l_adjust_cost		                cm_adjs_dtl.adjust_cost%TYPE;
130 	  l_adjust_status			            cm_adjs_dtl.adjust_status%TYPE;
131     l_start_date                    DATE;
132     l_end_date                      DATE;
133   BEGIN
134 
135     /******************************************
136     * Initialize API return status to success *
137     ******************************************/
138 	  x_return_status := FND_API.G_RET_STS_SUCCESS;
139 	  l_adjust_status := NULL;
140     G_header_logged := 'N';
141 
142 	  IF P_OPERATION IN ('INSERT', 'UPDATE', 'DELETE', 'GET')
143 	  THEN
144       IF p_adjustment_rec.cost_adjust_id IS NOT NULL AND P_OPERATION = 'INSERT' THEN
145         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
146         THEN
147           log_msg('Resetting Cost Adjust Id to NULL for Operation: ' || P_OPERATION);
148         END IF;
149         p_adjustment_rec.cost_adjust_id := NULL;
150       END IF;
151 		  IF	p_adjustment_rec.cost_adjust_id IS NOT NULL
152       AND P_OPERATION IN ('UPDATE', 'DELETE', 'GET')
153 		  THEN
154 			  BEGIN
155   				SELECT	adjust_status,
156                   period_id,
157                   cost_Type_id,
158                   organization_id,
159                   inventory_item_id
160   				INTO	  l_adjust_status,
161                   p_adjustment_rec.period_id,
162                   p_adjustment_rec.cost_Type_id,
163                   p_adjustment_rec.organization_id,
164                   p_adjustment_rec.inventory_item_id
165   				FROM	  cm_adjs_dtl
166   				WHERE	  cost_adjust_id = p_adjustment_rec.cost_adjust_id
167   				AND	    ROWNUM = 1;
168   			EXCEPTION
169   				WHEN NO_DATA_FOUND THEN
170   					l_adjust_status := NULL;
171   			END;
172   			IF	l_adjust_status = 1 AND	P_OPERATION IN ('UPDATE', 'DELETE')
173   			THEN
174   				FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_APPLIED');
175   				FND_MSG_PUB.Add;
176   				RAISE FND_API.G_EXC_ERROR;
177   			END IF;
178 			  IF	(p_adjustment_rec.organization_id IS NOT NULL OR p_adjustment_rec.organization_code IS NOT NULL)
179 			  AND	(p_adjustment_rec.cost_type_id IS NOT NULL OR p_adjustment_rec.cost_mthd_code IS NOT NULL)
180 			  AND	(p_adjustment_rec.inventory_item_id IS NOT NULL OR p_adjustment_rec.item_number IS NOT NULL)
181         AND (p_adjustment_rec.period_id IS NOT NULL OR (p_adjustment_rec.calendar_code IS NOT NULL AND p_adjustment_rec.period_code IS NOT NULL))
182 			  THEN
183           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
184           THEN
185             FND_MESSAGE.SET_NAME('GMF','GMF_API_IGNORE_HEADER_KEYS');
186             FND_MSG_PUB.Add;
187           END IF;
188         END IF;
189       ELSE
190         IF	(p_adjustment_rec.period_id  = FND_API.G_MISS_NUM) OR (p_adjustment_rec.period_id IS NULL)
191 			  THEN
192           /***********************
193           * Cost Type Validation *
194           ***********************/
195   			  IF	(p_adjustment_rec.cost_type_id  <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.cost_type_id IS NOT NULL)
196   			  THEN
197             IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
198   				  THEN
199   					  log_msg('Validating Cost Type Id : ' || p_adjustment_rec.cost_type_id);
200   				  END IF;
201   				  IF NOT gmf_validations_pvt.validate_cost_type_id (p_adjustment_rec.cost_type_id, 'A')
202   				  THEN
203   					  FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_COST_TYPE_ID');
204   					  FND_MESSAGE.SET_TOKEN('COST_TYPE_ID', p_adjustment_rec.cost_type_id);
205   					  FND_MSG_PUB.Add;
206   					  RAISE FND_API.G_EXC_ERROR;
207   				  END IF;
208             IF (p_adjustment_rec.cost_mthd_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.cost_mthd_code IS NOT NULL)
209             THEN
210               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
211               THEN
212                 FND_MESSAGE.SET_NAME('GMF','GMF_API_IGNORE_COST_TYPE');
213                 FND_MESSAGE.SET_TOKEN('COST_TYPE', p_adjustment_rec.cost_mthd_code);
214                 FND_MSG_PUB.Add;
215               END IF;
216             END IF;
217           ELSIF (p_adjustment_rec.cost_mthd_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.cost_mthd_code IS NOT NULL)
218           THEN
219             /************************
220             * Convert Code into ID. *
221             ************************/
222             IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
223             THEN
224               log_msg('Validating Cost Type Code : ' || p_adjustment_rec.cost_mthd_code);
225             END IF;
226             p_adjustment_rec.cost_type_id := GMF_VALIDATIONS_PVT.Validate_Cost_type_code(p_adjustment_rec.cost_mthd_code, 'A');
227             IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
228             THEN
229               log_msg('Cost Type Id : ' || p_adjustment_rec.cost_type_id);
230             END IF;
231             IF p_adjustment_rec.cost_type_id IS NULL
232             THEN
233               FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_COST_TYPE');
234               FND_MESSAGE.SET_TOKEN('COST_TYPE',p_adjustment_rec.cost_mthd_code);
235               FND_MSG_PUB.Add;
236               RAISE FND_API.G_EXC_ERROR;
237             END IF;
238           ELSE
239             FND_MESSAGE.SET_NAME('GMF','GMF_API_COST_TYPE_ID_REQ');
240             FND_MSG_PUB.Add;
241             RAISE FND_API.G_EXC_ERROR;
242           END IF;
243         ELSE
244           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
245           THEN
246             log_msg('Skipping Cost Type validation since Period Id is passed');
247           END IF;
248         END IF;
249         /**************************
250         * Organization Validation *
251         **************************/
252 			  IF	((p_adjustment_rec.organization_id  <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.organization_id IS NOT NULL))
253 			  THEN
254   				IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
255 	  			THEN
256 		  			log_msg('Validating Organization Id : ' || p_adjustment_rec.organization_id);
257 			  	END IF;
258   				IF NOT gmf_validations_pvt.validate_organization_id(p_adjustment_rec.organization_id)
259 				  THEN
260 					  FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ORGN_ID');
261 					  FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID', p_adjustment_rec.organization_id);
262 					  FND_MSG_PUB.Add;
263 					  RAISE FND_API.G_EXC_ERROR;
264 				  END IF;
265           IF (p_adjustment_rec.organization_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.organization_code IS NOT NULL)
266           THEN
267             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
268             THEN
269               FND_MESSAGE.SET_NAME('GMF','GMF_API_IGNORE_ORGN_CODE');
270               FND_MESSAGE.SET_TOKEN('ORGANIZATION_CODE', p_adjustment_rec.organization_code);
271               FND_MSG_PUB.Add;
272             END IF;
273           END IF;
274 			  ELSIF	((p_adjustment_rec.organization_code  <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.organization_code IS NOT NULL))
275 			  THEN
276           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
277           THEN
278             log_msg('Validating Organization Code : ' || p_adjustment_rec.organization_code);
279           END IF;
280           p_adjustment_rec.organization_id := gmf_validations_pvt.validate_organization_code(p_adjustment_rec.organization_code);
281           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
282 				  THEN
283 					  log_msg('Organization id : ' || p_adjustment_rec.organization_id);
284 				  END IF;
285           IF p_adjustment_rec.organization_id IS NULL
286           THEN
287 					  FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ORGN_CODE');
288 					  FND_MESSAGE.SET_TOKEN('ORG_CODE', p_adjustment_rec.organization_code);
289 					  FND_MSG_PUB.Add;
290 					  RAISE FND_API.G_EXC_ERROR;
291           END IF;
292         ELSE
293 				  FND_MESSAGE.SET_NAME('GMF','GMF_API_ORGANIZATION_ID_REQ');
294 				  FND_MSG_PUB.Add;
295 				  RAISE FND_API.G_EXC_ERROR;
296         END IF;
297         /******************
298         * Item Validation *
299         ******************/
300 		    IF (p_adjustment_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND	(p_adjustment_rec.inventory_item_id IS NOT NULL)
301 			  THEN
302 				  IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
303 				  THEN
304 					  log_msg('Validating Inventory Item Id : ' || p_adjustment_rec.inventory_item_id);
305 				  END IF;
306           IF NOT GMF_VALIDATIONS_PVT.Validate_inventory_item_Id(p_adjustment_rec.inventory_item_id, p_adjustment_rec.organization_id)
307 				  THEN
308 					  FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ITEM_ID');
309 					  FND_MESSAGE.SET_TOKEN('ITEM_ID', p_adjustment_rec.inventory_item_id);
310             FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID', p_adjustment_rec.organization_id);
311 					  FND_MSG_PUB.Add;
312 					  RAISE FND_API.G_EXC_ERROR;
313 				  END IF;
314 				  IF (p_adjustment_rec.item_number <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.item_number IS NOT NULL)
315 				  THEN
316             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
317 					  THEN
318               FND_MESSAGE.SET_NAME('GMF','GMF_API_IGNORE_ITEM_NO');
319 						  FND_MESSAGE.SET_TOKEN('ITEM_NO',p_adjustment_rec.item_number);
320               FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID', p_adjustment_rec.organization_id);
321 						  FND_MSG_PUB.Add;
322             END IF;
323 				  END IF;
324 			  ELSIF (p_adjustment_rec.item_number <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.item_number IS NOT NULL)
325 			  THEN
326 				  IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
327 				  THEN
328 					  log_msg('Validating Item Number : ' || p_adjustment_rec.item_number);
329 				  END IF;
330           p_adjustment_rec.inventory_item_id := GMF_VALIDATIONS_PVT.Validate_Item_Number(p_adjustment_rec.item_number, p_adjustment_rec.organization_id);
331           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
332 				  THEN
333 					  log_msg('Inventory Item id : ' || p_adjustment_rec.inventory_item_id);
334 				  END IF;
335           IF p_adjustment_rec.inventory_item_id IS NULL
336 				  THEN
337 					  FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ITEM_NO');
338 					  FND_MESSAGE.SET_TOKEN('ITEM_NO',p_adjustment_rec.item_number);
339             FND_MESSAGE.SET_TOKEN('ORGANIZATION_ID', p_adjustment_rec.organization_id);
340 					  FND_MSG_PUB.Add;
341 					  RAISE FND_API.G_EXC_ERROR;
342 				  END IF;
343 			  ELSE
344 				  FND_MESSAGE.SET_NAME('GMF','GMF_API_ITEM_ID_REQ');
345 				  FND_MSG_PUB.Add;
346 				  RAISE FND_API.G_EXC_ERROR;
347 			  END IF;
348         /********************
349         * Period Validation *
350         ********************/
351 			  IF	(p_adjustment_rec.period_id  <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.period_id IS NOT NULL)
352 			  THEN
353           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
354 				  THEN
355 					  log_msg('Validating Period Id : ' || p_adjustment_rec.Period_id);
356 				  END IF;
357 				  IF NOT gmf_validations_pvt.validate_period_id(p_adjustment_rec.period_id, p_adjustment_rec.cost_type_id)
358 				  THEN
359 					  FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_PERIOD_ID');
360 					  FND_MESSAGE.SET_TOKEN('PERIOD_ID', p_adjustment_rec.period_id);
361 					  FND_MSG_PUB.Add;
362 					  RAISE FND_API.G_EXC_ERROR;
363 				  END IF;
364           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
365           THEN
366             log_msg('Cost Type Id fetched based on Period Id is: '||p_adjustment_rec.cost_type_id);
367           END IF;
368           IF ((p_adjustment_rec.calendar_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.calendar_code IS NOT NULL))
369           AND ((p_adjustment_rec.period_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.period_code IS NOT NULL))
370           THEN
371             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
372             THEN
373               FND_MESSAGE.SET_NAME('GMF','GMF_API_IGNORE_PERIOD_CODE');
374               FND_MESSAGE.SET_TOKEN('CALENDAR_CODE', p_adjustment_rec.calendar_code);
375               FND_MESSAGE.SET_TOKEN('PERIOD_CODE', p_adjustment_rec.period_code);
376               FND_MSG_PUB.Add;
377             END IF;
378           END IF;
379         ELSIF (p_adjustment_rec.calendar_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.calendar_code IS NOT NULL)
380         AND ((p_adjustment_rec.period_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.period_code IS NOT NULL))
381         THEN
382           /************************
383           * Convert Code into ID. *
384           ************************/
385           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
386           THEN
387             log_msg('Validating Calendar Code : ' || p_adjustment_rec.calendar_code||', Period Code : '||p_adjustment_rec.period_code);
388           END IF;
389           p_adjustment_rec.period_id := GMF_VALIDATIONS_PVT.Validate_period_code(p_adjustment_rec.organization_id, p_adjustment_rec.calendar_code, p_adjustment_rec.period_code, p_adjustment_rec.cost_type_id);
390           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
391           THEN
392             log_msg('Period Id : ' || p_adjustment_rec.period_id);
393           END IF;
394           IF p_adjustment_rec.period_id IS NULL
395           THEN
396             FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_CLDR_PERIOD');
397             FND_MESSAGE.SET_TOKEN('CALENDAR_CODE',p_adjustment_rec.calendar_code);
398             FND_MESSAGE.SET_TOKEN('PERIOD_CODE',p_adjustment_rec.period_code);
399             FND_MSG_PUB.Add;
400             RAISE FND_API.G_EXC_ERROR;
401           END IF;
402         ELSE
403           FND_MESSAGE.SET_NAME('GMF','GMF_API_PERIOD_REQ');
404           FND_MSG_PUB.Add;
405           RAISE FND_API.G_EXC_ERROR;
406         END IF;
407       END IF;
408       /**********************************
409       * Cost Component Class Validation *
410       **********************************/
411       IF (p_adjustment_rec.cost_cmpntcls_id <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.cost_cmpntcls_id IS NOT NULL)
412       THEN
413         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
414         THEN
415           log_msg('Validating Cost Component Class ID :'|| p_adjustment_rec.cost_cmpntcls_id);
416         END IF;
417         IF NOT GMF_VALIDATIONS_PVT.Validate_Cost_Cmpntcls_Id (p_adjustment_rec.cost_cmpntcls_id)
418         THEN
419           FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_CMPNTCLS_ID');
420           FND_MESSAGE.SET_TOKEN('CMPNTCLS_ID',p_adjustment_rec.cost_cmpntcls_id);
421           FND_MSG_PUB.Add;
422           RAISE FND_API.G_EXC_ERROR;
423         END IF;
424         IF (p_adjustment_rec.cost_cmpntcls_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.cost_cmpntcls_code IS NOT NULL)
425         THEN
426           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
427           THEN
428             FND_MESSAGE.SET_NAME('GMF','GMF_API_IGNORE_CMPNTCLS_CODE');
429             FND_MESSAGE.SET_TOKEN('CMPNTCLS_CODE', p_adjustment_rec.cost_cmpntcls_code);
430             FND_MSG_PUB.Add;
431           END IF;
432         END IF;
433       ELSIF (p_adjustment_rec.cost_cmpntcls_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.cost_cmpntcls_code IS NOT NULL)
434       THEN
435         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
436         THEN
437           log_msg('Validating Cost Component Class Code : ' || p_adjustment_rec.cost_cmpntcls_code);
438         END IF;
439         p_adjustment_rec.cost_cmpntcls_id := GMF_VALIDATIONS_PVT.Validate_Cost_Cmpntcls_Code (p_adjustment_rec.cost_cmpntcls_code);
440         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
441         THEN
442           log_msg('Component Class Id := ' || p_adjustment_rec.cost_cmpntcls_id);
443         END IF;
444         IF p_adjustment_rec.cost_cmpntcls_id IS NULL
445         THEN
446           FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_CMPNTCLS_CODE');
447           FND_MESSAGE.SET_TOKEN('CMPNTCLS_CODE', p_adjustment_rec.cost_cmpntcls_code);
448           FND_MSG_PUB.Add;
449           RAISE FND_API.G_EXC_ERROR;
450         END IF;
451       ELSE
452         FND_MESSAGE.SET_NAME('GMF','GMF_API_CMPNTCLS_ID_REQ');
453         FND_MSG_PUB.Add;
454         RAISE FND_API.G_EXC_ERROR;
455       END IF;
456       /***************************
457       * Analysis Code Validation *
458       ***************************/
459       IF (p_adjustment_rec.cost_analysis_code <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.cost_analysis_code IS NOT NULL)
460       THEN
461         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
462         THEN
463           log_msg('Validating Cost Analysis code :' || p_adjustment_rec.cost_analysis_code);
464         END IF;
465         IF NOT GMF_VALIDATIONS_PVT.Validate_Analysis_Code(p_adjustment_rec.cost_analysis_code)
466         THEN
467           FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ANALYSIS_CODE');
468           FND_MESSAGE.SET_TOKEN('ANALYSIS_CODE', p_adjustment_rec.cost_analysis_code);
469           FND_MSG_PUB.Add;
470           RAISE FND_API.G_EXC_ERROR;
471         END IF;
472       ELSE
473         FND_MESSAGE.SET_NAME('GMF','GMF_API_ANALYSIS_CODE_REQ');
474         FND_MSG_PUB.Add;
475         RAISE FND_API.G_EXC_ERROR;
476       END IF;
477       /***********************************
478       * Adjustment Indicator Validation  *
479       ***********************************/
480       IF (p_adjustment_rec.adjustment_ind <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.adjustment_ind IS NOT NULL)
481       THEN
482         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
483         THEN
484           log_msg('Validating Adjustment Indicator : ' || p_adjustment_rec.adjustment_ind );
485         END IF;
486         IF p_adjustment_rec.adjustment_ind NOT IN (0, 1, 2)
487         THEN
488           FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ADJ_IND');
489           FND_MESSAGE.SET_TOKEN('ADJUSTMENT_IND',p_adjustment_rec.adjustment_ind);
490           FND_MSG_PUB.Add;
491           RAISE FND_API.G_EXC_ERROR;
492         END IF;
493       ELSE
494         FND_MESSAGE.SET_NAME('GMF','GMF_API_ADJ_IND_REQ');
495         FND_MSG_PUB.Add;
496         RAISE FND_API.G_EXC_ERROR;
497       END IF;
498       IF P_OPERATION IN ('INSERT', 'UPDATE') THEN
499         /************************
500         * Adjust UOM Validation *
501         ************************/
502         IF (p_adjustment_rec.adjust_qty_uom <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.adjust_qty_uom IS NOT NULL)
503         THEN
504           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
505           THEN
506             log_msg('Validating Adjust Qty UOM :' || p_adjustment_rec.adjust_qty_uom);
507           END IF;
508           IF NOT GMF_VALIDATIONS_PVT.Validate_same_class_Uom(p_adjustment_rec.adjust_qty_uom, p_adjustment_rec.inventory_item_id, p_adjustment_rec.organization_id)
509           THEN
510             FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ITEM_UM');
511             FND_MESSAGE.SET_TOKEN('ITEM_UOM', p_adjustment_rec.adjust_qty_uom);
512             FND_MSG_PUB.Add;
513             RAISE FND_API.G_EXC_ERROR;
514           END IF;
515         ELSE
516           FND_MESSAGE.SET_NAME('GMF','GMF_API_ITEM_UM_REQ');
517           FND_MSG_PUB.Add;
518           RAISE FND_API.G_EXC_ERROR;
519         END IF;
520         /*****************************
521         * Adjustment Cost validation *
522         *****************************/
523   			IF P_OPERATION IN ('UPDATE', 'INSERT')
524   			THEN
525           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
526           THEN
527             log_msg('Validating Adjustment Cost');
528           END IF;
529   				IF p_adjustment_rec.adjust_cost IS NULL
530   				THEN
531   					FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_ADJ_COST');
532   					FND_MSG_PUB.Add;
533   					RAISE FND_API.G_EXC_ERROR;
534   				END IF;
535   			END IF;
536         /*************************
537         * Reason Code Validation *
538         *************************/
539         IF	((p_adjustment_rec.reason_code <> FND_API.G_MISS_CHAR) AND	(p_adjustment_rec.reason_code IS NOT NULL))
540   			THEN
541           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
542           THEN
543             log_msg('Validating Reason Code: ' || p_adjustment_rec.reason_code );
544           END IF;
545   				BEGIN
546   					SELECT	    1
547   					INTO	      l_reason_cnt
548   					FROM	      cm_reas_cds
549   					WHERE	      reason_code = p_adjustment_rec.reason_code
550   					AND	        delete_mark = 0
551   					AND	        ROWNUM = 1;
552   				EXCEPTION
553   					WHEN NO_DATA_FOUND
554   					THEN
555   						FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_REASON_CODE');
556   						FND_MESSAGE.SET_TOKEN('REASON_CODE',p_adjustment_rec.reason_code);
557   						FND_MSG_PUB.Add;
558   						RAISE FND_API.G_EXC_ERROR;
559   				END;
560   			ELSE
561   				FND_MESSAGE.SET_NAME('GMF','GMF_API_REASON_CODE_REQ');
562   				FND_MSG_PUB.Add;
563   				RAISE FND_API.G_EXC_ERROR;
564   			END IF;
565         IF (p_adjustment_rec.delete_mark <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.delete_mark IS NOT NULL)
566   			THEN
567           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
568           THEN
569             log_msg('Validating Delete_mark : ' || p_adjustment_rec.delete_mark);
570           END IF;
571           IF p_adjustment_rec.delete_mark NOT IN (0,1)
572           THEN
573             add_record_to_error_stack(p_adjustment_rec);
574             FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_DELETE_MARK');
575             FND_MESSAGE.SET_TOKEN('DELETE_MARK',p_adjustment_rec.delete_mark);
576             FND_MSG_PUB.Add;
577   					RAISE FND_API.G_EXC_ERROR;
578           END IF;
579         ELSIF (p_adjustment_rec.delete_mark = FND_API.G_MISS_NUM AND p_operation IN ('UPDATE', 'INSERT'))
580         THEN
581           add_record_to_error_stack(p_adjustment_rec);
582           FND_MESSAGE.SET_NAME('GMF','GMF_API_DELETE_MARK_REQ');
583           FND_MSG_PUB.Add;
584           RAISE FND_API.G_EXC_ERROR;
585         END IF;
586         IF ((p_operation IN ('UPDATE','INSERT')) AND (p_adjustment_rec.delete_mark = 1))
587         THEN
588           add_record_to_error_stack(p_adjustment_rec);
589           FND_MESSAGE.SET_NAME('GMF','GMF_API_CANT_MARK_FOR_PURGE');
590           FND_MSG_PUB.Add;
591           RAISE FND_API.G_EXC_ERROR;
592      		END IF;
593         /***********************************
594         * Subledger Indicator Validation   *
595         ***********************************/
596         IF (p_adjustment_rec.subledger_ind <> FND_API.G_MISS_NUM) AND (p_adjustment_rec.subledger_ind IS NOT NULL)
597   			THEN
598           IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
599           THEN
600             log_msg('Validating Subledger Ind : ' || p_adjustment_rec.subledger_ind );
601           END IF;
602           IF p_adjustment_rec.subledger_ind NOT IN (0,1)
603           THEN
604             FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_SUBLEDGER_IND');
605             FND_MESSAGE.SET_TOKEN('SUBLEDGER_IND',p_adjustment_rec.subledger_ind);
606             FND_MSG_PUB.Add;
607   					RAISE FND_API.G_EXC_ERROR;
608           ELSE
609             /*****************************
610             * Adjustment Date Validation *
611             *****************************/
612             IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
613             THEN
614               log_msg('Validating Adjustment date : ' || p_adjustment_rec.adjustment_date );
615             END IF;
616             IF p_adjustment_rec.adjustment_date IS NULL
617             THEN
618               FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_DATE_DEFAULT');
619               FND_MSG_PUB.Add;
620               BEGIN
621                 SELECT      start_date
622                 INTO        p_adjustment_rec.adjustment_date
623                 FROM        gmf_period_statuses
624                 WHERE       period_id = p_adjustment_rec.period_id;
625               EXCEPTION
626                 WHEN no_data_found THEN
627                   p_adjustment_rec.adjustment_date := SYSDATE;
628               END;
629             ELSE
630               BEGIN
631                 SELECT      start_date, end_date
632                 INTO        l_start_date, l_end_date
633                 FROM        gmf_period_statuses
634                 WHERE       period_id = p_adjustment_rec.period_id;
635               EXCEPTION
636                 WHEN no_data_found THEN
637                   l_start_date := NULL;
638                   l_end_date := NULL;
639               END;
640               IF p_adjustment_rec.adjustment_date NOT BETWEEN l_start_date AND l_end_date THEN
641                 FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_ACA_DATE');
642                 FND_MESSAGE.SET_TOKEN('ADJUSTMENT_DATE',p_adjustment_rec.adjustment_date);
643                 FND_MESSAGE.SET_TOKEN('START_DATE', l_start_date);
644                 FND_MESSAGE.SET_TOKEN('END_DATE', l_end_date);
645                 FND_MSG_PUB.Add;
646                 RAISE FND_API.G_EXC_ERROR;
647               END IF;
648             END IF;
649           END IF;
650         ELSE
651           FND_MESSAGE.SET_NAME('GMF','GMF_API_SUBLEDGER_IND_REQ');
652           FND_MSG_PUB.Add;
653           RAISE FND_API.G_EXC_ERROR;
654         END IF;
655       END IF;
656       /**********************
657       * Username Validation *
658       **********************/
659 			IF (p_adjustment_rec.user_name <> FND_API.G_MISS_CHAR) AND (p_adjustment_rec.user_name IS NOT NULL)
660 			THEN
661         IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
662         THEN
663           log_msg('Validating user name : ' || p_adjustment_rec.user_name);
664         END IF;
665 				GMA_GLOBAL_GRP.Get_who  (
666                                 p_user_name       =>        p_adjustment_rec.user_name,
667                                 x_user_id         =>        x_user_id
668 							                  );
669         IF x_user_id = -1
670 				THEN
671 					FND_MESSAGE.SET_NAME('GMF','GMF_API_INVALID_USER_NAME');
672 					FND_MESSAGE.SET_TOKEN('USER_NAME',p_adjustment_rec.user_name);
673 					FND_MSG_PUB.Add;
674 					RAISE FND_API.G_EXC_ERROR;
675 				END IF;
676 			ELSE
677 				FND_MESSAGE.SET_NAME('GMF','GMF_API_USER_NAME_REQ');
678 				FND_MSG_PUB.Add;
679 				RAISE FND_API.G_EXC_ERROR;
680 			END IF;
681       /***************************
682       * Adjustment ID validation *
683       ***************************/
684       IF p_operation IN ('UPDATE', 'DELETE')
685 			THEN
686 				IF	p_adjustment_rec.cost_adjust_id IS NULL
687         AND	(p_adjustment_rec.organization_id IS NOT NULL OR p_adjustment_rec.organization_code IS NOT NULL)
688         AND	(p_adjustment_rec.cost_type_id IS NOT NULL OR p_adjustment_rec.cost_mthd_code IS NOT NULL)
689         AND	(p_adjustment_rec.inventory_item_id IS NOT NULL OR p_adjustment_rec.item_number IS NOT NULL)
690         AND (p_adjustment_rec.period_id IS NOT NULL OR (p_adjustment_rec.calendar_code IS NOT NULL AND p_adjustment_rec.period_code IS NOT NULL))
691         AND (p_adjustment_rec.cost_cmpntcls_id IS NOT NULL OR p_adjustment_rec.cost_cmpntcls_code IS NOT NULL)
692         AND p_adjustment_rec.cost_analysis_code IS NOT NULL
693         AND p_adjustment_rec.adjustment_ind IS NOT NULL
694         THEN
695 					IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
696 					THEN
697 						log_msg(' Fetching Cost Adjust ID for Code Combination for ' ||
698 						        ' Organization ' || p_adjustment_rec.Organization_id ||
699 						        ' Cost Type Id ' || p_adjustment_rec.cost_type_id ||
700 						        ' Item Id ' || p_adjustment_rec.inventory_item_id ||
701 						        ' Period Id ' || p_adjustment_rec.period_id ||
702                     ' Cost Component Class Id ' || p_adjustment_rec.cost_cmpntcls_id ||
703 						        ' Cost Analysis Code ' || p_adjustment_rec.cost_analysis_code ||
704                     ' Adjustment Indicator '||p_adjustment_rec.adjustment_ind ||
705 						        ' for '|| p_operation);
706 					END IF;
707 					BEGIN
708 						SELECT          cost_adjust_id, adjust_status
709             INTO            p_adjustment_rec.cost_adjust_id, l_adjust_status
710             FROM            cm_adjs_dtl
711             WHERE           organization_id = p_adjustment_rec.organization_id
712             AND             cost_type_id = p_adjustment_rec.cost_type_id
713             AND             inventory_item_id = p_adjustment_rec.inventory_item_id
714             AND             period_id = p_adjustment_rec.period_id
715             AND             cost_cmpntcls_id = p_adjustment_rec.cost_cmpntcls_id
716             AND             cost_analysis_code = p_adjustment_rec.cost_analysis_code
717             AND             adjustment_ind = p_adjustment_rec.adjustment_ind
718             AND             ROWNUM = 1;
719 					EXCEPTION
720 						WHEN NO_DATA_FOUND
721 						THEN
722 							p_adjustment_rec.cost_adjust_id := NULL;
723               l_adjust_status := NULL;
724 					END;
725 					IF p_adjustment_rec.cost_adjust_id IS NULL
726 					THEN
727 						IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
728 						THEN
729 							log_msg(  ' Cost Adjust ID for Code Combination for ' ||
730     						        ' Organization ' || p_adjustment_rec.Organization_id ||
731     						        ' Cost Type Id ' || p_adjustment_rec.cost_type_id ||
732     						        ' Item Id ' || p_adjustment_rec.inventory_item_id ||
733     						        ' Period Id ' || p_adjustment_rec.period_id ||
734                         ' Cost Component Class Id ' || p_adjustment_rec.cost_cmpntcls_id ||
735     						        ' Cost Analysis Code ' || p_adjustment_rec.cost_analysis_code ||
736                         ' Adjustment Indicator ' || p_adjustment_rec.adjustment_ind ||
737     						        ' for '|| p_operation || ' Does''nt Exist');
738 						END IF;
739 						FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_ADJUST_ID_NULL');
740 						FND_MSG_PUB.Add;
741 						RAISE FND_API.G_EXC_ERROR;
742 					END IF;
743 					IF	l_adjust_status = 1
744 					THEN
745 						FND_MESSAGE.SET_NAME('GMF','GMF_API_ACA_APPLIED');
746 						FND_MSG_PUB.Add;
747 						RAISE FND_API.G_EXC_ERROR;
748 					END IF;
749 				END IF;
750 			END IF;
751 		END IF;
752   END VALIDATE_INPUT_PARAMS;
753 
754   /********************************************************************
755   * PROCEDURE                                                         *
756   *   CREATE_ACTUAL_COST_ADJUSTMENT                                   *
757   *                                                                   *
758   * TYPE                                                              *
759   *   PUBLIC                                                          *
760   *                                                                   *
761   * FUNCTION                                                          *
762   *   Creates Actual Cost Adjustment based on the input into table    *
763   *   GMF_LOT_COST_ADJUSTMENTS                                        *
764   *                                                                   *
765   * PARAMETERS                                                        *
766   *   IN :                                                            *
767   *		      p_api_version	      IN  			    NUMBER	                *
768   *		      p_init_msg_list	    IN  			    VARCHAR2                *
769   *		      p_adjustment_rec	  IN OUT NOCOPY Adjustment_Rec_Type	    *
770   *                                                                   *
771   *   OUT :                                                           *
772   *         x_return_status	       OUT NOCOPY VARCHAR2                *
773   *         x_msg_count		         OUT NOCOPY VARCHAR2                *
774   *		      x_msg_data		         OUT NOCOPY VARCHAR2                *
775   *                                                                   *
776   * DESCRIPTION                                                       *
777   *   This procedure creates Actual Cost Adjustments                  *
778   *                                                                   *
779   * HISTORY                                                           *
780   *   16-Sep-2005  Anand Thiyagarajan  Created                        *
781   ********************************************************************/
782   PROCEDURE CREATE_ACTUAL_COST_ADJUSTMENT
783   (
784   p_api_version			        IN  				    NUMBER,
785   p_init_msg_list		        IN  				    VARCHAR2 := FND_API.G_FALSE,
786   p_commit		              IN  		        VARCHAR2 := FND_API.G_FALSE,
787   x_return_status		            OUT NOCOPY 	VARCHAR2,
788   x_msg_count			              OUT NOCOPY 	NUMBER,
789   x_msg_data			              OUT NOCOPY 	VARCHAR2,
790   p_adjustment_rec			    IN  OUT NOCOPY 	GMF_ACTUAL_COST_ADJUSTMENT_PUB.ADJUSTMENT_REC_TYPE
791   )
792   IS
793 
794     /******************
795     * Local Variables *
796     ******************/
797 	  l_api_name                    CONSTANT  VARCHAR2(30)	:= 'CREATE_ACTUAL_COST_ADJUSTMENT';
798 	  l_api_version		              CONSTANT 	NUMBER		:= 1.0 ;
799     l_header_exists			                    BOOLEAN;
800     l_detail_exists			                    BOOLEAN;
801     user_cnt				                        NUMBER;
802     l_user_id              		              FND_USER.USER_ID%TYPE ;
803     l_return_status			                    VARCHAR2(11) ;
804 
805   BEGIN
806 
807     /**********************************
808     * Standard Start of API savepoint *
809     **********************************/
810     SAVEPOINT	 CREATE_ACT_COST_ADJUSTMENT_PUB ;
811 
812     /*************************************************************
813     * Initialize message list if p_init_msg_list is set to TRUE. *
814     *************************************************************/
815     IF FND_API.to_Boolean( p_init_msg_list )
816     THEN
817 	    FND_MSG_PUB.initialize;
818     END IF;
819 
820     /*************************************************
821     * Standard call to check for call compatibility. *
822     *************************************************/
823     IF NOT FND_API.Compatible_API_Call
824                                       (
825                                       l_api_version,
826                                       p_api_version,
827                                       l_api_name,
828                                       G_PKG_NAME
829                                   		)
830     THEN
831 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
832     END IF;
833 
834     /******************************************
835     * Initialize API return status to success *
836     ******************************************/
837     x_return_status := FND_API.G_RET_STS_SUCCESS;
838     G_header_logged := 'N';
839 
840     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
841     THEN
842   	  log_msg('Beginning Public Create Actual Cost Adjustment API');
843     END IF;
844 	  IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
845 	  THEN
846       log_msg('Validating input parameters');
847 	  END IF;
848     VALIDATE_INPUT_PARAMS
849     (
850     p_adjustment_rec		        =>	        p_adjustment_rec,
851     p_operation		              =>	        'INSERT',
852     x_user_id		                =>	        l_user_id,
853     x_return_status	            =>	        l_return_status
854     );
855     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
856 	  THEN
857   	  log_msg('Return Status after validating : ' || l_return_status);
858 	  END IF;
859     IF l_return_status = FND_API.G_RET_STS_ERROR
860 	  THEN
861 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
862 	    FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_INS');
863 		  FND_MSG_PUB.Add;
864 	    RAISE FND_API.G_EXC_ERROR;
865 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
866 	  THEN
867 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
868 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_INS');
869 		  FND_MSG_PUB.Add;
870 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
871 	  END IF;
872     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
873 	  THEN
874       log_msg('Calling private API to insert record...');
875 	  END IF;
876     /*************************
877     * Call Private Procedure *
878     *************************/
879 	  GMF_ACTUAL_COST_ADJUSTMENT_PVT.CREATE_ACTUAL_COST_ADJUSTMENT
880 	  (
881 	  p_api_version		        =>		      p_api_version,
882     p_init_msg_list	        =>		      FND_API.G_FALSE,
883     x_return_status	        =>		      x_return_status,
884     x_msg_count		          =>		      x_msg_count,
885     x_msg_data		          =>		      x_msg_data,
886     p_adjustment_rec		    =>		      p_adjustment_rec
887 	  );
888 	  IF l_return_status = FND_API.G_RET_STS_ERROR
889 	  THEN
890 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
891 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_INS');
892 		  FND_MSG_PUB.Add;
893 		  RAISE FND_API.G_EXC_ERROR;
894 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
895 	  THEN
896 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
897 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_INS');
898 		  FND_MSG_PUB.Add;
899 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
900 	  END IF;
901     /******************************
902     * Standard check of p_commit. *
903     ******************************/
904 	  IF FND_API.To_Boolean( p_commit )
905 	  THEN
906 		  COMMIT WORK;
907 	  END IF;
908     /**************************************************************************
909     * Standard call to get message count and if count is 1, get message info. *
910     **************************************************************************/
911 	  FND_MSG_PUB.Count_And_Get
912     (
913     p_count         	=>          x_msg_count,
914     p_data          	=>          x_msg_data
915     );
916   EXCEPTION
917 	  WHEN FND_API.G_EXC_ERROR
918 	  THEN
919 		  ROLLBACK TO CREATE_ACT_COST_ADJUSTMENT_PUB;
920 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
921 		  x_return_status := FND_API.G_RET_STS_ERROR ;
922 		  FND_MSG_PUB.Count_And_Get
923       (
924       p_count         	  =>            x_msg_count,
925       p_data          	  =>            x_msg_data
926       );
927 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR
928 	  THEN
929 		  ROLLBACK TO CREATE_ACT_COST_ADJUSTMENT_PUB;
930 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
931 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
932 		  FND_MSG_PUB.Count_And_Get
933       (
934       p_count         	  =>            x_msg_count,
935       p_data          	  =>            x_msg_data
936       );
937 	  WHEN OTHERS
938 	  THEN
939 		  ROLLBACK TO CREATE_ACT_COST_ADJUSTMENT_PUB;
940 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
941 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
942 		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
943 		  THEN
944 			  FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
945 		  END IF;
946 		  FND_MSG_PUB.Count_And_Get
947       (
948       p_count         	  =>            x_msg_count,
949       p_data          	  =>            x_msg_data
950       );
951   END CREATE_ACTUAL_COST_ADJUSTMENT;
952 
953   /********************************************************************
954   * PROCEDURE                                                         *
955   *   UPDATE_ACTUAL_COST_ADJUSTMENT                                   *
956   *                                                                   *
957   * TYPE                                                              *
958   *   PUBLIC                                                          *
959   *                                                                   *
960   * FUNCTION                                                          *
961   *   Updates Actual Cost Adjustment based on the input into table    *
962   *   GMF_LOT_COST_ADJUSTMENTS                                        *
963   *                                                                   *
964   * PARAMETERS                                                        *
965   *   IN :                                                            *
966   *		      p_api_version	      IN  			    NUMBER	                *
967   *		      p_init_msg_list	    IN  			    VARCHAR2                *
968   *		      p_adjustment_rec	  IN OUT NOCOPY Adjustment_Rec_Type	    *
969   *                                                                   *
970   *   OUT :                                                           *
971   *         x_return_status	       OUT NOCOPY VARCHAR2                *
972   *         x_msg_count		         OUT NOCOPY VARCHAR2                *
973   *		      x_msg_data		         OUT NOCOPY VARCHAR2                *
974   *                                                                   *
975   * DESCRIPTION                                                       *
976   *   This procedure updates Actual Cost Adjustments                  *
977   *                                                                   *
978   * HISTORY                                                           *
979   *   16-Sep-2005  Anand Thiyagarajan  Created                        *
980   ********************************************************************/
981   PROCEDURE UPDATE_ACTUAL_COST_ADJUSTMENT
982   (
983   p_api_version			        IN  				    NUMBER,
984   p_init_msg_list		        IN  				    VARCHAR2 := FND_API.G_FALSE,
985   p_commit		              IN  		        VARCHAR2 := FND_API.G_FALSE,
986   x_return_status		            OUT NOCOPY 	VARCHAR2,
987   x_msg_count			              OUT NOCOPY 	NUMBER,
988   x_msg_data			              OUT NOCOPY 	VARCHAR2,
989   p_adjustment_rec			    IN  OUT NOCOPY 	GMF_ACTUAL_COST_ADJUSTMENT_PUB.ADJUSTMENT_REC_TYPE
990   )
991   IS
992 
993     /******************
994     * Local Variables *
995     ******************/
996 	  l_api_name                    CONSTANT  VARCHAR2(30)	:= 'UPDATE_ACTUAL_COST_ADJUSTMENT';
997 	  l_api_version		              CONSTANT 	NUMBER		:= 1.0 ;
998     l_cost_adjust_id			                  CM_ADJS_DTL.COST_ADJUST_ID%TYPE;
999     l_header_exists			                    BOOLEAN;
1000     l_detail_exists			                    BOOLEAN;
1001     user_cnt				                        NUMBER;
1002     l_user_id              		              FND_USER.USER_ID%TYPE ;
1003     l_return_status			                    VARCHAR2(11) ;
1004 
1005   BEGIN
1006 
1007     /**********************************
1008     * Standard Start of API savepoint *
1009     **********************************/
1010     SAVEPOINT	 UPDATE_ACT_COST_ADJUSTMENT_PUB ;
1011 
1012     /*************************************************************
1013     * Initialize message list if p_init_msg_list is set to TRUE. *
1014     *************************************************************/
1015     IF FND_API.to_Boolean( p_init_msg_list )
1016     THEN
1017 	    FND_MSG_PUB.initialize;
1018     END IF;
1019 
1020     /*************************************************
1021     * Standard call to check for call compatibility. *
1022     *************************************************/
1023     IF NOT FND_API.Compatible_API_Call
1024                                       (
1025                                       l_api_version,
1026                                       p_api_version,
1027                                       l_api_name,
1028                                       G_PKG_NAME
1029                                   		)
1030     THEN
1031 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1032     END IF;
1033 
1034     /******************************************
1035     * Initialize API return status to success *
1036     ******************************************/
1037     x_return_status := FND_API.G_RET_STS_SUCCESS;
1038     G_header_logged := 'N';
1039 
1040     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1041     THEN
1042   	  log_msg('Beginning Public Update Actual Cost Adjustment API');
1043     END IF;
1044 
1045 	  IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1046 	  THEN
1047       log_msg('Validating input parameters');
1048 	  END IF;
1049 
1050   	VALIDATE_INPUT_PARAMS
1051 	  (
1052     p_adjustment_rec		    =>	    p_adjustment_rec,
1053     p_operation		          =>	    'UPDATE',
1054     x_user_id		            =>	    l_user_id,
1055     x_return_status	        =>	    l_return_status
1056     );
1057 
1058     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1059 	  THEN
1060   	  log_msg('Return Status after validating : ' || l_return_status);
1061 	  END IF;
1062     IF l_return_status = FND_API.G_RET_STS_ERROR
1063 	  THEN
1064 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1065 	    FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_UPD');
1066 		  FND_MSG_PUB.Add;
1067 	    RAISE FND_API.G_EXC_ERROR;
1068 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1069 	  THEN
1070 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1071 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_UPD');
1072 		  FND_MSG_PUB.Add;
1073 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1074 	  END IF;
1075     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1076 	  THEN
1077       log_msg('Calling private API to update record...');
1078 	  END IF;
1079     /*************************
1080     * Call Private Procedure *
1081     *************************/
1082 	  GMF_ACTUAL_COST_ADJUSTMENT_PVT.UPDATE_ACTUAL_COST_ADJUSTMENT
1083 	  (
1084 	  p_api_version		        =>		      p_api_version,
1085     p_init_msg_list	        =>		      FND_API.G_FALSE,
1086     x_return_status	        =>		      x_return_status,
1087     x_msg_count		          =>		      x_msg_count,
1088     x_msg_data		          =>		      x_msg_data,
1089     p_adjustment_rec		    =>		      p_adjustment_rec
1090 	  );
1091 	  IF l_return_status = FND_API.G_RET_STS_ERROR
1092 	  THEN
1093 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1094 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_UPD');
1095 		  FND_MSG_PUB.Add;
1096 		  RAISE FND_API.G_EXC_ERROR;
1097 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1098 	  THEN
1099 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1100 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_UPD');
1101 		  FND_MSG_PUB.Add;
1102 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1103 	  END IF;
1104     /******************************
1105     * Standard check of p_commit. *
1106     ******************************/
1107 	  IF FND_API.To_Boolean( p_commit )
1108 	  THEN
1109 		  COMMIT WORK;
1110 	  END IF;
1111     /**************************************************************************
1112     * Standard call to get message count and if count is 1, get message info. *
1113     **************************************************************************/
1114 	  FND_MSG_PUB.Count_And_Get
1115     (
1116     p_count         	=>          x_msg_count,
1117     p_data          	=>          x_msg_data
1118     );
1119   EXCEPTION
1120 	  WHEN FND_API.G_EXC_ERROR
1121 	  THEN
1122 		  ROLLBACK TO UPDATE_ACT_COST_ADJUSTMENT_PUB;
1123 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1124 		  x_return_status := FND_API.G_RET_STS_ERROR ;
1125 		  FND_MSG_PUB.Count_And_Get
1126       (
1127       p_count         	  =>            x_msg_count,
1128       p_data          	  =>            x_msg_data
1129       );
1130 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1131 	  THEN
1132 		  ROLLBACK TO UPDATE_ACT_COST_ADJUSTMENT_PUB;
1133 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1134 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1135 		  FND_MSG_PUB.Count_And_Get
1136       (
1137       p_count         	  =>            x_msg_count,
1138       p_data          	  =>            x_msg_data
1139       );
1140 	  WHEN OTHERS
1141 	  THEN
1142 		  ROLLBACK TO UPDATE_ACT_COST_ADJUSTMENT_PUB;
1143 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1144 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1145 		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1146 		  THEN
1147 			  FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1148 		  END IF;
1149 		  FND_MSG_PUB.Count_And_Get
1150       (
1151       p_count         	  =>            x_msg_count,
1152       p_data          	  =>            x_msg_data
1153       );
1154   END UPDATE_ACTUAL_COST_ADJUSTMENT;
1155 
1156   /********************************************************************
1157   * PROCEDURE                                                         *
1158   *   DELETE_ACTUAL_COST_ADJUSTMENT                                   *
1159   *                                                                   *
1160   * TYPE                                                              *
1161   *   PUBLIC                                                          *
1162   *                                                                   *
1163   * FUNCTION                                                          *
1164   *   Deletes Actual Cost Adjustment based on the input into table    *
1165   *   GMF_LOT_COST_ADJUSTMENTS                                        *
1166   *                                                                   *
1167   * PARAMETERS                                                        *
1168   *   IN :                                                            *
1169   *		      p_api_version	      IN  			    NUMBER	                *
1170   *		      p_init_msg_list	    IN  			    VARCHAR2                *
1171   *		      p_adjustment_rec	  IN OUT NOCOPY Adjustment_Rec_Type	    *
1172   *                                                                   *
1173   *   OUT :                                                           *
1174   *         x_return_status	       OUT NOCOPY VARCHAR2                *
1175   *         x_msg_count		         OUT NOCOPY VARCHAR2                *
1176   *		      x_msg_data		         OUT NOCOPY VARCHAR2                *
1177   *                                                                   *
1178   * DESCRIPTION                                                       *
1179   *   This procedure deletes Actual Cost Adjustments                  *
1180   *                                                                   *
1181   * HISTORY                                                           *
1182   *   16-Sep-2005  Anand Thiyagarajan  Created                        *
1183   ********************************************************************/
1184   PROCEDURE DELETE_ACTUAL_COST_ADJUSTMENT
1185   (
1186   p_api_version			        IN  				    NUMBER,
1187   p_init_msg_list		        IN  				    VARCHAR2 := FND_API.G_FALSE,
1188   p_commit		              IN  		        VARCHAR2 := FND_API.G_FALSE,
1189   x_return_status		            OUT NOCOPY 	VARCHAR2,
1190   x_msg_count			              OUT NOCOPY 	NUMBER,
1191   x_msg_data			              OUT NOCOPY 	VARCHAR2,
1192   p_adjustment_rec			    IN  OUT NOCOPY 	GMF_ACTUAL_COST_ADJUSTMENT_PUB.ADJUSTMENT_REC_TYPE
1193   )
1194   IS
1195 
1196     /******************
1197     * Local Variables *
1198     ******************/
1199 	  l_api_name                    CONSTANT  VARCHAR2(30)	:= 'DELETE_ACTUAL_COST_ADJUSTMENT';
1200 	  l_api_version		              CONSTANT 	NUMBER		:= 1.0 ;
1201     l_cost_adjust_id			                  CM_ADJS_DTL.COST_ADJUST_ID%TYPE;
1202     l_header_exists			                    BOOLEAN;
1203     l_detail_exists			                    BOOLEAN;
1204     user_cnt				                        NUMBER;
1205     l_user_id              		              FND_USER.USER_ID%TYPE ;
1206     l_return_status			                    VARCHAR2(11) ;
1207 
1208   BEGIN
1209 
1210     /**********************************
1211     * Standard Start of API savepoint *
1212     **********************************/
1213     SAVEPOINT	 DELETE_ACT_COST_ADJUSTMENT_PUB ;
1214 
1215     /*************************************************************
1216     * Initialize message list if p_init_msg_list is set to TRUE. *
1217     *************************************************************/
1218     IF FND_API.to_Boolean( p_init_msg_list )
1219     THEN
1220 	    FND_MSG_PUB.initialize;
1221     END IF;
1222 
1223     /*************************************************
1224     * Standard call to check for call compatibility. *
1225     *************************************************/
1226     IF NOT FND_API.Compatible_API_Call
1227                                       (
1228                                       l_api_version,
1229                                       p_api_version,
1230                                       l_api_name,
1231                                       G_PKG_NAME
1232                                   		)
1233     THEN
1234 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1235     END IF;
1236 
1237     /******************************************
1238     * Initialize API return status to success *
1239     ******************************************/
1240     x_return_status := FND_API.G_RET_STS_SUCCESS;
1241     G_header_logged := 'N';
1242 
1243     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1244     THEN
1245   	  log_msg('Beginning Public Delete Actual Cost Adjustment API');
1246     END IF;
1247 
1248 	  IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1249 	  THEN
1250       log_msg('Validating input parameters');
1251 	  END IF;
1252 
1253   	VALIDATE_INPUT_PARAMS
1254 	  (
1255     p_adjustment_rec		    =>	    p_adjustment_rec,
1256     p_operation		          =>	    'DELETE',
1257     x_user_id		            =>	    l_user_id,
1258     x_return_status	        =>	    l_return_status
1259     );
1260 
1261     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1262 	  THEN
1263   	  log_msg('Return Status after validating : ' || l_return_status);
1264 	  END IF;
1265     IF l_return_status = FND_API.G_RET_STS_ERROR
1266 	  THEN
1267 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1268 	    FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_DEL');
1269 		  FND_MSG_PUB.Add;
1270 	    RAISE FND_API.G_EXC_ERROR;
1271 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1272 	  THEN
1273 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1274 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_DEL');
1275 		  FND_MSG_PUB.Add;
1276 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1277 	  END IF;
1278     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1279 	  THEN
1280       log_msg('Calling private API to delete record...');
1281 	  END IF;
1282     /*************************
1283     * Call Private Procedure *
1284     *************************/
1285 	  GMF_ACTUAL_COST_ADJUSTMENT_PVT.DELETE_ACTUAL_COST_ADJUSTMENT
1286 	  (
1287 	  p_api_version		        =>		      p_api_version,
1288     p_init_msg_list	        =>		      FND_API.G_FALSE,
1289     x_return_status	        =>		      x_return_status,
1290     x_msg_count		          =>		      x_msg_count,
1291     x_msg_data		          =>		      x_msg_data,
1292     p_adjustment_rec		    =>		      p_adjustment_rec
1293 	  );
1294 	  IF l_return_status = FND_API.G_RET_STS_ERROR
1295 	  THEN
1296 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1297 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_DEL');
1298 		  FND_MSG_PUB.Add;
1299 		  RAISE FND_API.G_EXC_ERROR;
1300 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1301 	  THEN
1302 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1303 		  FND_MESSAGE.SET_NAME('GMF','GMF_API_NO_ROWS_DEL');
1304 		  FND_MSG_PUB.Add;
1305 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1306 	  END IF;
1307     /******************************
1308     * Standard check of p_commit. *
1309     ******************************/
1310 	  IF FND_API.To_Boolean( p_commit )
1311 	  THEN
1312 		  COMMIT WORK;
1313 	  END IF;
1314     /**************************************************************************
1315     * Standard call to get message count and if count is 1, get message info. *
1316     **************************************************************************/
1317 	  FND_MSG_PUB.Count_And_Get
1318     (
1319     p_count         	=>          x_msg_count,
1320     p_data          	=>          x_msg_data
1321     );
1322   EXCEPTION
1323 	  WHEN FND_API.G_EXC_ERROR
1324 	  THEN
1325 		  ROLLBACK TO DELETE_ACT_COST_ADJUSTMENT_PUB;
1326 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1327 		  x_return_status := FND_API.G_RET_STS_ERROR ;
1328 		  FND_MSG_PUB.Count_And_Get
1329       (
1330       p_count         	  =>            x_msg_count,
1331       p_data          	  =>            x_msg_data
1332       );
1333 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1334 	  THEN
1335 		  ROLLBACK TO DELETE_ACT_COST_ADJUSTMENT_PUB;
1336 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1337 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1338 		  FND_MSG_PUB.Count_And_Get
1339       (
1340       p_count         	  =>            x_msg_count,
1341       p_data          	  =>            x_msg_data
1342       );
1343 	  WHEN OTHERS
1344 	  THEN
1345 		  ROLLBACK TO DELETE_ACT_COST_ADJUSTMENT_PUB;
1346 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1347 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1348 		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1349 		  THEN
1350 			  FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1351 		  END IF;
1352 		  FND_MSG_PUB.Count_And_Get
1353       (
1354       p_count         	  =>            x_msg_count,
1355       p_data          	  =>            x_msg_data
1356       );
1357   END DELETE_ACTUAL_COST_ADJUSTMENT;
1358 
1359   /********************************************************************
1360   * PROCEDURE                                                         *
1361   *   GET_ACTUAL_COST_ADJUSTMENT                                      *
1362   *                                                                   *
1363   * TYPE                                                              *
1364   *   PUBLIC                                                          *
1365   *                                                                   *
1366   * FUNCTION                                                          *
1367   *   Gets Actual Cost Adjustment based on the input from table       *
1368   *   GMF_LOT_COST_ADJUSTMENTS                                        *
1369   *                                                                   *
1370   * PARAMETERS                                                        *
1371   *   IN :                                                            *
1372   *		      p_api_version	      IN  			    NUMBER	                *
1373   *		      p_init_msg_list	    IN  			    VARCHAR2                *
1374   *		      p_adjustment_rec	  IN OUT NOCOPY Adjustment_Rec_Type	    *
1375   *                                                                   *
1376   *   OUT :                                                           *
1377   *         x_return_status	       OUT NOCOPY VARCHAR2                *
1378   *         x_msg_count		         OUT NOCOPY VARCHAR2                *
1379   *		      x_msg_data		         OUT NOCOPY VARCHAR2                *
1380   *                                                                   *
1381   * DESCRIPTION                                                       *
1382   *   This procedure Gets Actual Cost Adjustments                     *
1383   *                                                                   *
1384   * HISTORY                                                           *
1385   *   16-Sep-2005  Anand Thiyagarajan  Created                        *
1386   ********************************************************************/
1387   PROCEDURE GET_ACTUAL_COST_ADJUSTMENT
1388   (
1389   p_api_version			        IN  				    NUMBER,
1390   p_init_msg_list		        IN  				    VARCHAR2 := FND_API.G_FALSE,
1391   x_return_status		            OUT NOCOPY 	VARCHAR2,
1392   x_msg_count			              OUT NOCOPY 	NUMBER,
1393   x_msg_data			              OUT NOCOPY 	VARCHAR2,
1394   p_adjustment_rec			    IN  OUT NOCOPY 	GMF_ACTUAL_COST_ADJUSTMENT_PUB.ADJUSTMENT_REC_TYPE
1395   )
1396   IS
1397 
1398     /******************
1399     * Local Variables *
1400     ******************/
1401 	  l_api_name                    CONSTANT  VARCHAR2(30)	:= 'GET_ACTUAL_COST_ADJUSTMENT';
1402 	  l_api_version		              CONSTANT 	NUMBER		:= 1.0 ;
1403     l_cost_adjust_id			                  CM_ADJS_DTL.COST_ADJUST_ID%TYPE;
1404     l_header_exists			                    BOOLEAN;
1405     l_detail_exists			                    BOOLEAN;
1406     user_cnt				                        NUMBER;
1407     l_user_id              		              FND_USER.USER_ID%TYPE ;
1408     l_return_status			                    VARCHAR2(11) ;
1409 
1410   BEGIN
1411 
1412     /*************************************************************
1413     * Initialize message list if p_init_msg_list is set to TRUE. *
1414     *************************************************************/
1415     IF FND_API.to_Boolean( p_init_msg_list )
1416     THEN
1417 	    FND_MSG_PUB.initialize;
1418     END IF;
1419 
1420     /*************************************************
1421     * Standard call to check for call compatibility. *
1422     *************************************************/
1423     IF NOT FND_API.Compatible_API_Call
1424                                       (
1425                                       l_api_version,
1426                                       p_api_version,
1427                                       l_api_name,
1428                                       G_PKG_NAME
1429                                   		)
1430     THEN
1431 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1432     END IF;
1433 
1434     /******************************************
1435     * Initialize API return status to success *
1436     ******************************************/
1437     x_return_status := FND_API.G_RET_STS_SUCCESS;
1438     G_header_logged := 'N';
1439 
1440     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1441     THEN
1442   	  log_msg('Beginning Public Get Actual Cost Adjustment API');
1443     END IF;
1444 
1445 	  IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1446 	  THEN
1447       log_msg('Validating input parameters');
1448 	  END IF;
1449 
1450   	VALIDATE_INPUT_PARAMS
1451 	  (
1452     p_adjustment_rec		    =>	    p_adjustment_rec,
1453     p_operation		          =>	    'GET',
1454     x_user_id		            =>	    l_user_id,
1455     x_return_status	        =>	    l_return_status
1456     );
1457 
1458     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1459 	  THEN
1460   	  log_msg('Return Status after validating : ' || l_return_status);
1461 	  END IF;
1462     IF l_return_status = FND_API.G_RET_STS_ERROR
1463 	  THEN
1464 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1465 	    RAISE FND_API.G_EXC_ERROR;
1466 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1467 	  THEN
1468 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1469 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1470 	  END IF;
1471     IF FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW >= G_Debug_Level
1472 	  THEN
1473       log_msg('Calling private API to get record...');
1474 	  END IF;
1475     /*************************
1476     * Call Private Procedure *
1477     *************************/
1478 	  GMF_ACTUAL_COST_ADJUSTMENT_PVT.GET_ACTUAL_COST_ADJUSTMENT
1479 	  (
1480 	  p_api_version		        =>		      p_api_version,
1481     p_init_msg_list	        =>		      FND_API.G_FALSE,
1482     x_return_status	        =>		      x_return_status,
1483     x_msg_count		          =>		      x_msg_count,
1484     x_msg_data		          =>		      x_msg_data,
1485     p_adjustment_rec		    =>		      p_adjustment_rec
1486 	  );
1487 	  IF l_return_status = FND_API.G_RET_STS_ERROR
1488 	  THEN
1489 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1490 		  RAISE FND_API.G_EXC_ERROR;
1491 	  ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1492 	  THEN
1493 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1494 		  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1495 	  END IF;
1496     /**************************************************************************
1497     * Standard call to get message count and if count is 1, get message info. *
1498     **************************************************************************/
1499 	  FND_MSG_PUB.Count_And_Get
1500     (
1501     p_count         	=>          x_msg_count,
1502     p_data          	=>          x_msg_data
1503     );
1504   EXCEPTION
1505 	  WHEN FND_API.G_EXC_ERROR
1506 	  THEN
1507 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1508 		  x_return_status := FND_API.G_RET_STS_ERROR ;
1509 		  FND_MSG_PUB.Count_And_Get
1510       (
1511       p_count         	  =>            x_msg_count,
1512       p_data          	  =>            x_msg_data
1513       );
1514 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1515 	  THEN
1516 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1517 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1518 		  FND_MSG_PUB.Count_And_Get
1519       (
1520       p_count         	  =>            x_msg_count,
1521       p_data          	  =>            x_msg_data
1522       );
1523 	  WHEN OTHERS
1524 	  THEN
1525 		  add_record_to_error_stack ( p_adjustment_rec => p_adjustment_rec );
1526 		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1527 		  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1528 		  THEN
1529 			  FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1530 		  END IF;
1531 		  FND_MSG_PUB.Count_And_Get
1532       (
1533       p_count         	  =>            x_msg_count,
1534       p_data          	  =>            x_msg_data
1535       );
1536   END GET_ACTUAL_COST_ADJUSTMENT;
1537 
1538 END GMF_ACTUAL_COST_ADJUSTMENT_PUB;