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