DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSD_RO_DIAGNOSTIC_CODES_PVT

Source


1 PACKAGE BODY CSD_RO_DIAGNOSTIC_CODES_PVT as
2 /* $Header: csdvrdcb.pls 120.1 2006/09/20 00:18:42 rfieldma noship $ */
3 
4 G_PKG_NAME    CONSTANT VARCHAR2(30) := 'CSD_RO_DIAGNOSTIC_CODES_PVT';
5 G_FILE_NAME   CONSTANT VARCHAR2(12) := 'csdvrdcb.pls';
6 
7 /*--------------------------------------------------*/
8 /* procedure name: Create_RO_Diagnostic_Code        */
9 /* description   : procedure used to create         */
10 /*                 ro diagnostic code	            */
11 /*                                                  */
12 /*--------------------------------------------------*/
13 PROCEDURE Create_RO_Diagnostic_Code
14 (
15   p_api_version        		IN  NUMBER,
16   p_commit	   		IN  VARCHAR2,
17   p_init_msg_list      		IN  VARCHAR2,
18   p_validation_level   		IN  NUMBER,
19   x_return_status      		OUT NOCOPY VARCHAR2,
20   x_msg_count          		OUT NOCOPY NUMBER,
21   x_msg_data           		OUT NOCOPY VARCHAR2,
22   p_ro_diagnostic_code_rec	IN  RO_DIAGNOSTIC_CODE_REC_TYPE,
23   x_ro_diagnostic_code_id 	OUT NOCOPY NUMBER
24 ) IS
25 
26 -- CONSTANTS --
27  lc_debug_level           CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
28  lc_stat_level            CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
29  lc_proc_level            CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
30  lc_event_level           CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
31  lc_excep_level           CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
32  lc_error_level           CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
33  lc_unexp_level           CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
34  lc_mod_name              CONSTANT VARCHAR2(100)  := 'csd.plsql.csd_ro_diagnostic_codes_pvt.create_ro_diagnostic_code';
35  lc_api_name              CONSTANT VARCHAR2(30)   := 'Create_RO_Diagnostic_Code';
36  lc_api_version           CONSTANT NUMBER         := 1.0;
37 
38 -- VARIABLES --
39  l_msg_count              NUMBER;
40  l_msg_data               VARCHAR2(100);
41  l_msg_index              NUMBER;
42  l_dummy	          VARCHAR2(1)		  := null;
43  l_obj_ver_num		  NUMBER		  := 1;
44 
45 -- EXCEPTIONS --
46  CSD_RDC_ASSOCIATION_EXISTS		EXCEPTION;
47 
48 BEGIN
49        -- Standard Start of API savepoint
50        SAVEPOINT  Create_RO_Diagnostic_Code;
51 
52        -- Standard call to check for call compatibility.
53        IF NOT FND_API.Compatible_API_Call (lc_api_version,
54                                            p_api_version,
55                                            lc_api_name   ,
56                                            G_PKG_NAME    )
57        THEN
58              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
59        END IF;
60 
61        -- Initialize message list if p_init_msg_list is set to TRUE.
62        IF FND_API.to_Boolean( p_init_msg_list ) THEN
63            FND_MSG_PUB.initialize;
64        END IF;
65 
66        IF (lc_proc_level >= lc_debug_level) THEN
67           FND_LOG.STRING(lc_proc_level, lc_mod_name || '.BEGIN',
68               'Entered Create_RO_Diagnostic_Code');
69        END IF;
70 
71        -- log parameters
72        IF (lc_stat_level >= lc_debug_level) THEN
73 	   csd_gen_utility_pvt.dump_ro_diagnostic_code_rec
74            ( p_ro_diagnostic_code_rec => p_ro_diagnostic_code_rec);
75        END IF;
76 
77        -- Initialize API return status to success
78        x_return_status := FND_API.G_RET_STS_SUCCESS;
79 
80        -- Api body starts
81 
82        -- Check the required parameters
83        if (lc_proc_level >= lc_debug_level) then
84           FND_LOG.STRING(lc_proc_level, lc_mod_name,
85                        'Checking required parameters');
86        end if;
87 
88        -- Check the required parameter
89        CSD_PROCESS_UTIL.Check_Reqd_Param
90        ( p_param_value	  => p_ro_diagnostic_code_rec.repair_line_id,
91          p_param_name	  => 'REPAIR_LINE_ID',
92          p_api_name	  => lc_api_name);
93 
94        -- Check the required parameter
95        CSD_PROCESS_UTIL.Check_Reqd_Param
96        ( p_param_value	  => p_ro_diagnostic_code_rec.diagnostic_code_id,
97          p_param_name	  => 'DIAGNOSTIC_CODE_ID',
98          p_api_name	  => lc_api_name);
99 
100        -- Check the required parameter, rfieldma 4666403
101        CSD_PROCESS_UTIL.Check_Reqd_Param
102        ( p_param_value	  => p_ro_diagnostic_code_rec.diagnostic_item_id,
103          p_param_name	  => 'DIAGNOSTIC_ITEM_ID',
104          p_api_name	  => lc_api_name);
105 
106 	  -- Validate the repair line ID
107        if (lc_proc_level >= lc_debug_level) then
108           FND_LOG.STRING(lc_proc_level, lc_mod_name,
109                        'Validate repair line id');
110        end if;
111 
112        -- Validate the repair line ID
113        IF NOT( CSD_PROCESS_UTIL.Validate_rep_line_id
114                  ( p_repair_line_id  => p_ro_diagnostic_code_rec.repair_line_id )) THEN
115            RAISE FND_API.G_EXC_ERROR;
116        END IF;
117 
118        -- Validate the ro association for diagnostic code
119        if (lc_proc_level >= lc_debug_level) then
120           FND_LOG.STRING(lc_proc_level, lc_mod_name,
121                        'Validate if the ro association for diagnostic code exists');
122        end if;
123 
124        -- Validate the ro association for diagnostic code
125        Begin
126          l_dummy := null;
127 
128          select 'X'
129          into l_dummy
130          from csd_ro_diagnostic_codes
131 	 where repair_line_id = p_ro_diagnostic_code_rec.repair_line_id
132          and   diagnostic_code_id = p_ro_diagnostic_code_rec.diagnostic_code_id;
133 
134        Exception
135 
136     	WHEN no_data_found THEN
137 	  null;
138 
139         WHEN others THEN
140           l_dummy := 'X';
141 
142        End;
143 
144        -- If association exists, throw an error
145        IF (l_dummy = 'X') then
146            RAISE CSD_RDC_ASSOCIATION_EXISTS;
147         ELSE
148            if (lc_stat_level >= lc_debug_level) then
149              FND_LOG.STRING(lc_stat_level, lc_mod_name,
150  	               'RO diagnostic code association already exists');
151            end if;
152        END IF;
153 
154        -- Insert row
155        if (lc_proc_level >= lc_debug_level) then
156           FND_LOG.STRING(lc_proc_level, lc_mod_name,
157                        'Calling Insert_Row table handler');
158        end if;
159 
160        BEGIN
161 
162          -- Insert the ro diagnostic code association
163          CSD_RO_DIAGNOSTIC_CODES_PKG.Insert_Row
164          (px_ro_diagnostic_code_id    => x_ro_diagnostic_code_id,
165           p_object_version_number     => l_obj_ver_num,
166           p_repair_line_id            => p_ro_diagnostic_code_rec.repair_line_id,
167           p_diagnostic_code_id        => p_ro_diagnostic_code_rec.diagnostic_code_id,
168           p_created_by                => FND_GLOBAL.USER_ID,
169           p_creation_date             => SYSDATE,
170           p_last_updated_by           => FND_GLOBAL.USER_ID,
171           p_last_update_date          => SYSDATE,
172           p_last_update_login         => FND_GLOBAL.LOGIN_ID,
173           p_attribute_category        => p_ro_diagnostic_code_rec.attribute_category,
174           p_attribute1                => p_ro_diagnostic_code_rec.attribute1,
175           p_attribute2                => p_ro_diagnostic_code_rec.attribute2,
176           p_attribute3                => p_ro_diagnostic_code_rec.attribute3,
177           p_attribute4                => p_ro_diagnostic_code_rec.attribute4,
178           p_attribute5                => p_ro_diagnostic_code_rec.attribute5,
179           p_attribute6                => p_ro_diagnostic_code_rec.attribute6,
180           p_attribute7                => p_ro_diagnostic_code_rec.attribute7,
181           p_attribute8                => p_ro_diagnostic_code_rec.attribute8,
182           p_attribute9                => p_ro_diagnostic_code_rec.attribute9,
183           p_attribute10               => p_ro_diagnostic_code_rec.attribute10,
184           p_attribute11               => p_ro_diagnostic_code_rec.attribute11,
185           p_attribute12               => p_ro_diagnostic_code_rec.attribute12,
186           p_attribute13               => p_ro_diagnostic_code_rec.attribute13,
187           p_attribute14               => p_ro_diagnostic_code_rec.attribute14,
188           p_attribute15               => p_ro_diagnostic_code_rec.attribute15,
189 		p_diagnostic_item_id	   => p_ro_diagnostic_code_rec.diagnostic_item_id  -- rfieldma, 4666403
190  	);
191 
192        EXCEPTION
193           WHEN OTHERS THEN
194             IF ( lc_excep_level >= lc_debug_level) THEN
195                FND_LOG.STRING(lc_excep_level,lc_mod_name,'Others exception in CSD_RO_DIAGNOSTIC_CODES_PKG.Insert_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
196             END IF;
197             x_return_status := FND_API.G_RET_STS_ERROR;
198        END;
199 
200        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
201           RAISE FND_API.G_EXC_ERROR;
202        END IF;
203 
204        if (lc_proc_level >= lc_debug_level) then
205           FND_LOG.STRING(lc_proc_level, lc_mod_name,
206                        'Returned from Insert_Row table handler');
207        end if;
208 
209        -- Api body ends here
210 
211       -- Standard check of p_commit.
212       IF FND_API.To_Boolean( p_commit ) THEN
213            COMMIT WORK;
214       END IF;
215 
216       -- Standard call to get message count and IF count is  get message info.
217       FND_MSG_PUB.Count_And_Get
218            (p_count  =>  x_msg_count,
219             p_data   =>  x_msg_data );
220 
221       IF (lc_proc_level >= lc_debug_level) THEN
222         FND_LOG.STRING(lc_proc_level, lc_mod_name || '.END',
223                        'Leaving Create_RO_Diagnostic_Code');
224       END IF;
225 
226 EXCEPTION
227      WHEN CSD_RDC_ASSOCIATION_EXISTS THEN
228           ROLLBACK TO Create_RO_Diagnostic_Code;
229 
230             -- RO diagnostic code already exists
231             x_return_status := FND_API.G_RET_STS_ERROR ;
232 
233             -- save message in fnd stack
234             if (lc_stat_level >= lc_debug_level) then
235                 FND_LOG.STRING(lc_stat_level, lc_mod_name,
236                                'Adding message CSD_RDC_ASSOCIATION_EXISTS to FND_MSG stack');
237             end if;
238     	    FND_MESSAGE.SET_NAME('CSD','CSD_RDC_ASSOCIATION_EXISTS');
239 	    FND_MESSAGE.SET_TOKEN('DIAGNOSTIC_CODE_ID',p_ro_diagnostic_code_rec.diagnostic_code_id);
240 	    FND_MSG_PUB.Add;
241 
242             FND_MSG_PUB.Count_And_Get
243                 (p_count  =>  x_msg_count,
244                  p_data   =>  x_msg_data );
245 
246             -- save message in debug log
247             IF (lc_excep_level >= lc_debug_level) THEN
248                 FND_LOG.STRING(lc_excep_level, lc_mod_name,
249                                'RO diagnostic code already exists');
250             END IF;
251 
252     WHEN FND_API.G_EXC_ERROR THEN
253           ROLLBACK TO Create_RO_Diagnostic_Code;
254 
255           x_return_status := FND_API.G_RET_STS_ERROR;
256 
257           FND_MSG_PUB.Count_And_Get
258               (p_count  =>  x_msg_count,
259                p_data   =>  x_msg_data );
260 
261          -- save message in debug log
262           IF (lc_excep_level >= lc_debug_level) THEN
263               FND_LOG.STRING(lc_excep_level, lc_mod_name,
264                              'EXC_ERROR['||x_msg_data||']');
265           END IF;
266 
267     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
268           ROLLBACK TO Create_RO_Diagnostic_Code;
269 
270           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
271 
272          IF  FND_MSG_PUB.Check_Msg_Level
273               (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
274           THEN
275               if (lc_stat_level >= lc_debug_level) then
276                   FND_LOG.STRING(lc_stat_level, lc_mod_name,
277                                  'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
278               end if;
279               FND_MSG_PUB.Add_Exc_Msg
280               (G_PKG_NAME ,
281                lc_api_name  );
282           END IF;
283 
284           FND_MSG_PUB.Count_And_Get
285                 ( p_count  =>  x_msg_count,
286                   p_data   =>  x_msg_data );
287 
288           -- save message in debug log
289           IF (lc_excep_level >= lc_debug_level) THEN
290               FND_LOG.STRING(lc_excep_level, lc_mod_name,
291                              'EXC_UNEXPECTED_ERROR['||x_msg_data||']');
292           END IF;
293 
294     WHEN OTHERS THEN
295           ROLLBACK TO Create_RO_Diagnostic_Code;
296 
297           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
298 
299            -- save message in fnd stack
300            IF  FND_MSG_PUB.Check_Msg_Level
301                (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
302            THEN
303                if (lc_stat_level >= lc_debug_level) then
304                    FND_LOG.STRING(lc_stat_level, lc_mod_name,
305                                   'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
306                end if;
307                FND_MSG_PUB.Add_Exc_Msg
308                (G_PKG_NAME ,
309                 lc_api_name  );
310            END IF;
311 
312            FND_MSG_PUB.Count_And_Get
313                (p_count  =>  x_msg_count,
314                 p_data   =>  x_msg_data );
315 
316            -- save message in debug log
317            IF (lc_excep_level >= lc_debug_level) THEN
318                -- create a seeded message
319                FND_LOG.STRING(lc_excep_level, lc_mod_name,
320                               'SQL Message['||sqlerrm||']' );
321           END IF;
322 
323 END Create_RO_Diagnostic_Code;
324 
325 /*--------------------------------------------------*/
326 /* procedure name: Update_RO_Diagnostic_Code        */
327 /* description   : procedure used to update         */
328 /*                 ro diagnostic code	            */
329 /*                                                  */
330 /*--------------------------------------------------*/
331 PROCEDURE Update_RO_Diagnostic_Code
332 (
333   p_api_version        		IN  NUMBER,
334   p_commit	   		IN  VARCHAR2,
335   p_init_msg_list      		IN  VARCHAR2,
336   p_validation_level   		IN  NUMBER,
337   x_return_status      		OUT NOCOPY VARCHAR2,
338   x_msg_count          		OUT NOCOPY NUMBER,
339   x_msg_data           		OUT NOCOPY VARCHAR2,
340   p_ro_diagnostic_code_rec	IN  RO_DIAGNOSTIC_CODE_REC_TYPE,
341   x_obj_ver_number 		OUT NOCOPY NUMBER
342 )IS
343 
344 -- CONSTANTS --
345  lc_debug_level           CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
346  lc_stat_level            CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
347  lc_proc_level            CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
348  lc_event_level           CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
349  lc_excep_level           CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
350  lc_error_level           CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
351  lc_unexp_level           CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
352  lc_mod_name              CONSTANT VARCHAR2(100)  := 'csd.plsql.csd_ro_diagnostic_codes_pvt.update_ro_diagnostic_code';
353  lc_api_name              CONSTANT VARCHAR2(30)   := 'Update_RO_Diagnostic_Code';
354  lc_api_version           CONSTANT NUMBER         := 1.0;
355 
356 -- VARIABLES --
357  l_msg_count              NUMBER;
358  l_msg_data               VARCHAR2(100);
359  l_msg_index              NUMBER;
360  l_dummy	          VARCHAR2(1)		  :=null;
361  l_obj_ver_num		  NUMBER		  := 1;
362 
363 -- EXCEPTIONS --
364 CSD_RDC_RO_ID_MISSING		EXCEPTION;
365 CSD_RDC_DC_ID_MISSING		EXCEPTION;
366 CSD_RDC_ASSOCIATION_EXISTS   	EXCEPTION;
367 CSD_RDC_INVALID_ID		EXCEPTION;
368 CSD_RDC_GET_OVN_ERROR		EXCEPTION;
369 CSD_RDC_OVN_MISMATCH		EXCEPTION;
370 
371 BEGIN
372        -- Standard Start of API savepoint
373        SAVEPOINT  Update_RO_Diagnostic_Code;
374 
375        -- Standard call to check for call compatibility.
376        IF NOT FND_API.Compatible_API_Call (lc_api_version,
377                                            p_api_version,
378                                            lc_api_name   ,
379                                            G_PKG_NAME    )
380        THEN
381              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
382        END IF;
383 
384        -- Initialize message list if p_init_msg_list is set to TRUE.
385        IF FND_API.to_Boolean( p_init_msg_list ) THEN
386            FND_MSG_PUB.initialize;
387        END IF;
388 
389        IF (lc_proc_level >= lc_debug_level) THEN
390           FND_LOG.STRING(lc_proc_level, lc_mod_name || '.BEGIN',
391               'Entered Update_RO_Diagnostic_Code');
392        END IF;
393 
394        -- log parameters
395        IF (lc_stat_level >= lc_debug_level) THEN
396 	   csd_gen_utility_pvt.dump_ro_diagnostic_code_rec
397            ( p_ro_diagnostic_code_rec => p_ro_diagnostic_code_rec);
398        END IF;
399 
400        -- Initialize API return status to success
401        x_return_status := FND_API.G_RET_STS_SUCCESS;
402 
403        -- Api body starts
404 
405        -- Check the required parameters
406        if (lc_proc_level >= lc_debug_level) then
407           FND_LOG.STRING(lc_proc_level, lc_mod_name,
408                        'Checking required parameters');
409        end if;
410 
411        -- Check the required parameter
412        CSD_PROCESS_UTIL.Check_Reqd_Param
413        ( p_param_value	  => p_ro_diagnostic_code_rec.ro_diagnostic_code_id,
414          p_param_name	  => 'RO_DIAGNOSTIC_CODE_ID',
415          p_api_name	  => lc_api_name);
416 
417        -- Check the required parameter, rfieldma 4666403
418        CSD_PROCESS_UTIL.Check_Reqd_Param
419        ( p_param_value	  => p_ro_diagnostic_code_rec.diagnostic_item_id,
420          p_param_name	  => 'DIAGNOSTIC_ITEM_ID',
421          p_api_name	  => lc_api_name);
422 
423 	  -- Check if required parameter is passed in as G_MISS
424        IF (p_ro_diagnostic_code_rec.repair_line_id = FND_API.G_MISS_NUM) THEN
425 	RAISE CSD_RDC_RO_ID_MISSING;
426        END IF;
427 
428        -- Check if required parameter is passed in as G_MISS
429        IF (p_ro_diagnostic_code_rec.diagnostic_code_id = FND_API.G_MISS_NUM) THEN
430 	RAISE CSD_RDC_DC_ID_MISSING;
431        END IF;
432 
433        -- Validate the ro diagnostic code association
434        if (lc_proc_level >= lc_debug_level) then
435           FND_LOG.STRING(lc_proc_level, lc_mod_name,
436                        'Validate the id for ro diagnostic code');
437        end if;
438 
439        -- Validate the ro diagnostic code association
440        Begin
441           l_dummy := null;
442 
443           select 'X'
444           into l_dummy
445           from csd_ro_diagnostic_codes
446  	  where ro_diagnostic_code_id = p_ro_diagnostic_code_rec.ro_diagnostic_code_id;
447 
448         Exception
449 
450          WHEN others THEN
451            null;
452 
453        End;
454 
455        -- If ro diagnostic code association does not exist, throw an error
456        IF (l_dummy <> 'X') then
457           RAISE CSD_RDC_INVALID_ID;
458        ELSE
459           if (lc_stat_level >= lc_debug_level) then
460             FND_LOG.STRING(lc_stat_level, lc_mod_name,
461  	               'RO diagnostic code association is valid');
462           end if;
463        END IF;
464 
465        -- Get the object version number for ro diagnostic code association
466        if (lc_proc_level >= lc_debug_level) then
467            FND_LOG.STRING(lc_proc_level, lc_mod_name,
468                         'Get object version number for ro diagnostic code association');
469        end if;
470 
471         -- Get object version number for ro diagnostic code
472         Begin
473           select object_version_number
474           into l_obj_ver_num
475           from csd_ro_diagnostic_codes
476  	  where ro_diagnostic_code_id = p_ro_diagnostic_code_rec.ro_diagnostic_code_id;
477 
478         Exception
479 
480          WHEN others THEN
481     	   l_obj_ver_num := null;
482 
483        End;
484 
485        -- If no object version number, throw an error
486        IF (l_obj_ver_num is null) then
487           RAISE CSD_RDC_GET_OVN_ERROR;
488        ELSE
489           if (lc_stat_level >= lc_debug_level) then
490             FND_LOG.STRING(lc_stat_level, lc_mod_name,
491 	               'Retrieved object version number');
492           end if;
493        END IF;
494 
495        -- Validate the object version number for ro diagnostic code association
496        if (lc_proc_level >= lc_debug_level) then
497            FND_LOG.STRING(lc_proc_level, lc_mod_name,
498                         'Validate object version number for ro diagnostic code association');
499        end if;
500 
501        -- Validate if object version number for ro diagnostic code is same as the one passed in
502        IF NVL(p_ro_diagnostic_code_rec.object_version_number,FND_API.G_MISS_NUM) <> l_obj_ver_num  THEN
503           RAISE CSD_RDC_OVN_MISMATCH;
504        ELSE
505           if (lc_stat_level >= lc_debug_level) then
506             FND_LOG.STRING(lc_stat_level, lc_mod_name,
507 	               'Object version number is valid');
508           end if;
509        END IF;
510 
511        -- Validate the repair line id if it is passed in
512        if (lc_proc_level >= lc_debug_level) then
513           FND_LOG.STRING(lc_proc_level, lc_mod_name,
514                        'Validate repair line id if it is passed in');
515        end if;
516 
517        -- Validate the repair line ID
518        IF (p_ro_diagnostic_code_rec.repair_line_id IS NOT NULL) THEN
519          IF NOT( CSD_PROCESS_UTIL.Validate_rep_line_id
520                ( p_repair_line_id  => p_ro_diagnostic_code_rec.repair_line_id )) THEN
521            RAISE FND_API.G_EXC_ERROR;
522          END IF;
523        END IF;
524 
525        -- Validate the ro association for diagnostic code
526        if (lc_proc_level >= lc_debug_level) then
527           FND_LOG.STRING(lc_proc_level, lc_mod_name,
528                        'Validate if the ro association for diagnostic code exists');
529        end if;
530 
531        -- Validate the ro association for diagnostic code
532        Begin
533 
534          l_dummy := null;
535 
536          select 'X'
537          into l_dummy
538          from csd_ro_diagnostic_codes
539 	 where ro_diagnostic_code_id <> p_ro_diagnostic_code_rec.ro_diagnostic_code_id
540 	 and   repair_line_id = p_ro_diagnostic_code_rec.repair_line_id
541          and   diagnostic_code_id = p_ro_diagnostic_code_rec.diagnostic_code_id;
542 
543        Exception
544 
545     	WHEN no_data_found THEN
546 	  null;
547 
548         WHEN others THEN
549           l_dummy := 'X';
550 
551        End;
552 
553        -- If association exists, throw an error
554        IF (l_dummy = 'X') then
555            RAISE CSD_RDC_ASSOCIATION_EXISTS;
556         ELSE
557            if (lc_stat_level >= lc_debug_level) then
558              FND_LOG.STRING(lc_stat_level, lc_mod_name,
559  	               'RO diagnostic code association already exists');
560            end if;
561        END IF;
562 
563        -- Update row
564        if (lc_proc_level >= lc_debug_level) then
565            FND_LOG.STRING(lc_proc_level, lc_mod_name,
566                         'Calling Update_Row table handler');
567        end if;
568 
569        BEGIN
570 
571          -- Update the ro diagnostic code association
572          CSD_RO_DIAGNOSTIC_CODES_PKG.Update_Row
573          (p_ro_diagnostic_code_id     => p_ro_diagnostic_code_rec.ro_diagnostic_code_id,
574           p_object_version_number     => l_obj_ver_num + 1,
575           p_repair_line_id            => p_ro_diagnostic_code_rec.repair_line_id,
576           p_diagnostic_code_id        => p_ro_diagnostic_code_rec.diagnostic_code_id,
577           p_created_by                => FND_GLOBAL.USER_ID,
578           p_creation_date             => SYSDATE,
579           p_last_updated_by           => FND_GLOBAL.USER_ID,
580           p_last_update_date          => SYSDATE,
581           p_last_update_login         => FND_GLOBAL.LOGIN_ID,
582           p_attribute_category        => p_ro_diagnostic_code_rec.attribute_category,
583           p_attribute1                => p_ro_diagnostic_code_rec.attribute1,
584           p_attribute2                => p_ro_diagnostic_code_rec.attribute2,
585           p_attribute3                => p_ro_diagnostic_code_rec.attribute3,
586           p_attribute4                => p_ro_diagnostic_code_rec.attribute4,
587           p_attribute5                => p_ro_diagnostic_code_rec.attribute5,
588           p_attribute6                => p_ro_diagnostic_code_rec.attribute6,
589           p_attribute7                => p_ro_diagnostic_code_rec.attribute7,
590           p_attribute8                => p_ro_diagnostic_code_rec.attribute8,
591           p_attribute9                => p_ro_diagnostic_code_rec.attribute9,
592           p_attribute10               => p_ro_diagnostic_code_rec.attribute10,
593           p_attribute11               => p_ro_diagnostic_code_rec.attribute11,
594           p_attribute12               => p_ro_diagnostic_code_rec.attribute12,
595           p_attribute13               => p_ro_diagnostic_code_rec.attribute13,
596           p_attribute14               => p_ro_diagnostic_code_rec.attribute14,
597           p_attribute15               => p_ro_diagnostic_code_rec.attribute15,
598 		p_diagnostic_item_id	   => p_ro_diagnostic_code_rec.diagnostic_item_id -- rfieldma, 4666403
599  	 );
600 
601          x_obj_ver_number := l_obj_ver_num + 1;
602 
603        EXCEPTION
604           WHEN OTHERS THEN
605             IF ( lc_excep_level >= lc_debug_level) THEN
606                FND_LOG.STRING(lc_excep_level,lc_mod_name,'Others exception in CSD_RO_DIAGNOSTIC_CODES_PKG.Update_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
607             END IF;
608             x_return_status := FND_API.G_RET_STS_ERROR;
609        END;
610 
611        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
612           RAISE FND_API.G_EXC_ERROR;
613        END IF;
614 
615        if (lc_proc_level >= lc_debug_level) then
616           FND_LOG.STRING(lc_proc_level, lc_mod_name,
617                        'Returned from Update_Row table handler');
618        end if;
619 
620       -- Api body ends here
621 
622       -- Standard check of p_commit.
623       IF FND_API.To_Boolean( p_commit ) THEN
624            COMMIT WORK;
625       END IF;
626 
627       -- Standard call to get message count and IF count is  get message info.
628       FND_MSG_PUB.Count_And_Get
629            (p_count  =>  x_msg_count,
630             p_data   =>  x_msg_data );
631 
632       IF (lc_proc_level >= lc_debug_level) THEN
633         FND_LOG.STRING(lc_proc_level, lc_mod_name || '.END',
634                        'Leaving Update_RO_Diagnostic_Code');
635       END IF;
636 
637 EXCEPTION
638 
639      WHEN CSD_RDC_RO_ID_MISSING THEN
640           ROLLBACK TO Update_RO_Diagnostic_Code;
641             -- Repair line id is missing
642             x_return_status := FND_API.G_RET_STS_ERROR ;
643 
644             -- save message in fnd stack
645             if (lc_stat_level >= lc_debug_level) then
646                 FND_LOG.STRING(lc_stat_level, lc_mod_name,
647                                'Adding message CSD_RDC_RO_ID_MISSING to FND_MSG stack');
648             end if;
649     	    FND_MESSAGE.SET_NAME('CSD','CSD_API_MISSING_PARAM');
650 	    FND_MESSAGE.SET_TOKEN('API_NAME',lc_api_name);
651 	    FND_MESSAGE.SET_TOKEN('MISSING_PARAM','REPAIR_LINE_ID');
652 	    FND_MSG_PUB.Add;
653 
654             FND_MSG_PUB.Count_And_Get
655                 (p_count  =>  x_msg_count,
656                  p_data   =>  x_msg_data );
657 
658             -- save message in debug log
659             IF (lc_excep_level >= lc_debug_level) THEN
660                 FND_LOG.STRING(lc_excep_level, lc_mod_name,
661                                'Repair line id is missing');
662             END IF;
663 
664      WHEN CSD_RDC_DC_ID_MISSING THEN
665           ROLLBACK TO Update_RO_Diagnostic_Code;
666             -- Diagnostic code id is missing
667             x_return_status := FND_API.G_RET_STS_ERROR ;
668 
669             -- save message in fnd stack
670             if (lc_stat_level >= lc_debug_level) then
671                 FND_LOG.STRING(lc_stat_level, lc_mod_name,
672                                'Adding message CSD_RDC_DC_ID_MISSING to FND_MSG stack');
673             end if;
674     	    FND_MESSAGE.SET_NAME('CSD','CSD_API_MISSING_PARAM');
675 	    FND_MESSAGE.SET_TOKEN('API_NAME',lc_api_name);
676 	    FND_MESSAGE.SET_TOKEN('MISSING_PARAM','DIAGNOSTIC_CODE_ID');
677 	    FND_MSG_PUB.Add;
678 
679             FND_MSG_PUB.Count_And_Get
680                 (p_count  =>  x_msg_count,
681                  p_data   =>  x_msg_data );
682 
683             -- save message in debug log
684             IF (lc_excep_level >= lc_debug_level) THEN
685                 FND_LOG.STRING(lc_excep_level, lc_mod_name,
686                                'Diagnostic code id is missing');
687             END IF;
688 
689      WHEN CSD_RDC_ASSOCIATION_EXISTS THEN
690           ROLLBACK TO Create_RO_Diagnostic_Code;
691 
692             -- RO diagnostic code already exists
693             x_return_status := FND_API.G_RET_STS_ERROR ;
694 
695             -- save message in fnd stack
696             if (lc_stat_level >= lc_debug_level) then
697                 FND_LOG.STRING(lc_stat_level, lc_mod_name,
698                                'Adding message CSD_RDC_ASSOCIATION_EXISTS to FND_MSG stack');
699             end if;
700     	    FND_MESSAGE.SET_NAME('CSD','CSD_RDC_ASSOCIATION_EXISTS');
701 	    FND_MESSAGE.SET_TOKEN('DIAGNOSTIC_CODE_ID',p_ro_diagnostic_code_rec.diagnostic_code_id);
702 	    FND_MSG_PUB.Add;
703 
704             FND_MSG_PUB.Count_And_Get
705                 (p_count  =>  x_msg_count,
706                  p_data   =>  x_msg_data );
707 
708             -- save message in debug log
709             IF (lc_excep_level >= lc_debug_level) THEN
710                 FND_LOG.STRING(lc_excep_level, lc_mod_name,
711                                'RO diagnostic code already exists');
712             END IF;
713 
714      WHEN CSD_RDC_INVALID_ID THEN
715           ROLLBACK TO Update_RO_Diagnostic_Code;
716 
717           -- RO diagnostic code id is invalid
718           x_return_status := FND_API.G_RET_STS_ERROR ;
719 
720           -- save message in fnd stack
721           if (lc_stat_level >= lc_debug_level) then
722               FND_LOG.STRING(lc_stat_level, lc_mod_name,
723                                'Adding message CSD_RDC_INVALID_ID to FND_MSG stack');
724           end if;
725      	  FND_MESSAGE.SET_NAME('CSD','CSD_RDC_INVALID_ID');
726      	  FND_MESSAGE.SET_TOKEN('RO_DIAGNOSTIC_CODE_ID',p_ro_diagnostic_code_rec.ro_diagnostic_code_id);
727      	  FND_MSG_PUB.Add;
728 
729           FND_MSG_PUB.Count_And_Get
730               (p_count  =>  x_msg_count,
731                p_data   =>  x_msg_data );
732 
733           -- save message in debug log
734           IF (lc_excep_level >= lc_debug_level) THEN
735               FND_LOG.STRING(lc_excep_level, lc_mod_name,
736                                'RO diagnostic code id is invalid');
737           END IF;
738 
739      WHEN CSD_RDC_GET_OVN_ERROR THEN
740           ROLLBACK TO Update_RO_Diagnostic_Code;
741 
742           -- RO diagnostic code get object version number error
743           x_return_status := FND_API.G_RET_STS_ERROR ;
744 
745           -- save message in fnd stack
746           if (lc_stat_level >= lc_debug_level) then
747               FND_LOG.STRING(lc_stat_level, lc_mod_name,
748                                'Adding message CSD_RDC_GET_OVN_ERROR to FND_MSG stack');
749           end if;
750      	  FND_MESSAGE.SET_NAME('CSD','CSD_RDC_GET_OVN_ERROR');
751      	  FND_MESSAGE.SET_TOKEN('RO_DIAGNOSTIC_CODE_ID',p_ro_diagnostic_code_rec.ro_diagnostic_code_id);
752      	  FND_MSG_PUB.Add;
753 
754           FND_MSG_PUB.Count_And_Get
755               (p_count  =>  x_msg_count,
756                p_data   =>  x_msg_data );
757 
758           -- save message in debug log
759           IF (lc_excep_level >= lc_debug_level) THEN
760               FND_LOG.STRING(lc_excep_level, lc_mod_name,
761                                'RO diagnostic code get object version number error');
762           END IF;
763 
764      WHEN CSD_RDC_OVN_MISMATCH THEN
765           ROLLBACK TO Update_RO_Diagnostic_Code;
766 
767           -- RO diagnostic code object version number mismatch
768           x_return_status := FND_API.G_RET_STS_ERROR ;
769 
770           -- save message in fnd stack
771           if (lc_stat_level >= lc_debug_level) then
772               FND_LOG.STRING(lc_stat_level, lc_mod_name,
773                                'Adding message CSD_RDC_OVN_MISMATCH to FND_MSG stack');
774           end if;
775      	  FND_MESSAGE.SET_NAME('CSD','CSD_RDC_OVN_MISMATCH');
776      	  FND_MESSAGE.SET_TOKEN('RO_DIAGNOSTIC_CODE_ID',p_ro_diagnostic_code_rec.ro_diagnostic_code_id);
777      	  FND_MSG_PUB.Add;
778 
779           FND_MSG_PUB.Count_And_Get
780               (p_count  =>  x_msg_count,
781                p_data   =>  x_msg_data );
782 
783           -- save message in debug log
784           IF (lc_excep_level >= lc_debug_level) THEN
785               FND_LOG.STRING(lc_excep_level, lc_mod_name,
786                                'RO diagnostic code object version number mismatch');
787           END IF;
788 
789     WHEN FND_API.G_EXC_ERROR THEN
790           ROLLBACK TO Update_RO_Diagnostic_Code;
791 
792           x_return_status := FND_API.G_RET_STS_ERROR;
793 
794           FND_MSG_PUB.Count_And_Get
795               (p_count  =>  x_msg_count,
796                p_data   =>  x_msg_data );
797 
798          -- save message in debug log
799           IF (lc_excep_level >= lc_debug_level) THEN
800               FND_LOG.STRING(lc_excep_level, lc_mod_name,
801                              'EXC_ERROR['||x_msg_data||']');
802           END IF;
803 
804     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
805           ROLLBACK TO Update_RO_Diagnostic_Code;
806 
807           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
808 
809          IF  FND_MSG_PUB.Check_Msg_Level
810               (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
811           THEN
812               if (lc_stat_level >= lc_debug_level) then
813                   FND_LOG.STRING(lc_stat_level, lc_mod_name,
814                                  'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
815               end if;
816               FND_MSG_PUB.Add_Exc_Msg
817               (G_PKG_NAME ,
818                lc_api_name  );
819           END IF;
820 
821           FND_MSG_PUB.Count_And_Get
822                 ( p_count  =>  x_msg_count,
823                   p_data   =>  x_msg_data );
824 
825           -- save message in debug log
826           IF (lc_excep_level >= lc_debug_level) THEN
827               FND_LOG.STRING(lc_excep_level, lc_mod_name,
828                              'EXC_UNEXPECTED_ERROR['||x_msg_data||']');
829           END IF;
830 
831     WHEN OTHERS THEN
832           ROLLBACK TO Update_RO_Diagnostic_Code;
833 
834           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
835 
836            -- save message in fnd stack
837            IF  FND_MSG_PUB.Check_Msg_Level
838                (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
839            THEN
840                if (lc_stat_level >= lc_debug_level) then
841                    FND_LOG.STRING(lc_stat_level, lc_mod_name,
842                                   'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
843                end if;
844                FND_MSG_PUB.Add_Exc_Msg
845                (G_PKG_NAME ,
846                 lc_api_name  );
847            END IF;
848 
849            FND_MSG_PUB.Count_And_Get
850                (p_count  =>  x_msg_count,
851                 p_data   =>  x_msg_data );
852 
853            -- save message in debug log
854            IF (lc_excep_level >= lc_debug_level) THEN
855                -- create a seeded message
856                FND_LOG.STRING(lc_excep_level, lc_mod_name,
857                               'SQL Message['||sqlerrm||']' );
858           END IF;
859 
860 END Update_RO_Diagnostic_Code;
861 
862 
863 /*--------------------------------------------------*/
864 /* procedure name: Delete_RO_Diagnostic_Code        */
865 /* description   : procedure used to delete         */
866 /*                 ro diagnostic code	            */
867 /*                                                  */
868 /*--------------------------------------------------*/
869 PROCEDURE Delete_RO_Diagnostic_Code
870 (
871   p_api_version        		IN  NUMBER,
872   p_commit	   		IN  VARCHAR2,
873   p_init_msg_list      		IN  VARCHAR2,
874   p_validation_level   		IN  NUMBER,
875   x_return_status      		OUT NOCOPY VARCHAR2,
876   x_msg_count          		OUT NOCOPY NUMBER,
877   x_msg_data           		OUT NOCOPY VARCHAR2,
878   p_ro_diagnostic_code_id	IN  NUMBER
879 ) IS
880 
881 -- CONSTANTS --
882  lc_debug_level           CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
883  lc_stat_level            CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
884  lc_proc_level            CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
885  lc_event_level           CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
886  lc_excep_level           CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
887  lc_error_level           CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
888  lc_unexp_level           CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
889  lc_mod_name              CONSTANT VARCHAR2(100)  := 'csd.plsql.csd_ro_diagnostic_codes_pvt.delete_ro_diagnostic_code';
890  lc_api_name              CONSTANT VARCHAR2(30)   := 'Delete_RO_Diagnostic_Code';
891  lc_api_version           CONSTANT NUMBER         := 1.0;
892 
893 -- VARIABLES --
894  l_msg_count              NUMBER;
895  l_msg_data               VARCHAR2(100);
896  l_msg_index              NUMBER;
897 
898 BEGIN
899        -- Standard Start of API savepoint
900        SAVEPOINT  Delete_RO_Diagnostic_Code;
901 
902        -- Standard call to check for call compatibility.
903        IF NOT FND_API.Compatible_API_Call (lc_api_version,
904                                            p_api_version,
905                                            lc_api_name   ,
906                                            G_PKG_NAME    )
907        THEN
908              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
909        END IF;
910 
911        -- Initialize message list if p_init_msg_list is set to TRUE.
912        IF FND_API.to_Boolean( p_init_msg_list ) THEN
913            FND_MSG_PUB.initialize;
914        END IF;
915 
916        IF (lc_proc_level >= lc_debug_level) THEN
917           FND_LOG.STRING(lc_proc_level, lc_mod_name || '.BEGIN',
918               'Entered Delete_RO_Diagnostic_Code');
919        END IF;
920 
921        -- Initialize API return status to success
922        x_return_status := FND_API.G_RET_STS_SUCCESS;
923 
924        -- Api body starts
925 
926        -- Check the required parameters
927        if (lc_proc_level >= lc_debug_level) then
928           FND_LOG.STRING(lc_proc_level, lc_mod_name,
929                        'Checking required parameter');
930        end if;
931 
932        -- Check the required parameter
933        CSD_PROCESS_UTIL.Check_Reqd_Param
934        ( p_param_value	  => p_ro_diagnostic_code_id,
935          p_param_name	  => 'RO_DIAGNOSTIC_CODE_ID',
936          p_api_name	  => lc_api_name);
937 
938        -- Delete row
939        if (lc_proc_level >= lc_debug_level) then
940             FND_LOG.STRING(lc_proc_level, lc_mod_name,
941                          'Calling Delete_Row table handler');
942        end if;
943 
944        BEGIN
945 
946          -- Delete the ro diagnostic code association
947          CSD_RO_DIAGNOSTIC_CODES_PKG.Delete_Row
948          (p_ro_diagnostic_code_id       => p_ro_diagnostic_code_id);
949 
950        EXCEPTION
951          WHEN OTHERS THEN
952             IF ( lc_excep_level >= lc_debug_level) THEN
953                FND_LOG.STRING(lc_excep_level,lc_mod_name,'Others exception in CSD_RO_DIAGNOSTIC_CODES_PKG.Delete_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
954             END IF;
955             x_return_status := FND_API.G_RET_STS_ERROR;
956        END;
957 
958        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
959           RAISE FND_API.G_EXC_ERROR;
960        END IF;
961 
962        if (lc_proc_level >= lc_debug_level) then
963           FND_LOG.STRING(lc_proc_level, lc_mod_name,
964                        'Returned from Delete_Row table handler');
965        end if;
966 
967       -- Api body ends here
968 
969       -- Standard check of p_commit.
970       IF FND_API.To_Boolean( p_commit ) THEN
971            COMMIT WORK;
972       END IF;
973 
974       -- Standard call to get message count and IF count is  get message info.
975       FND_MSG_PUB.Count_And_Get
976            (p_count  =>  x_msg_count,
977             p_data   =>  x_msg_data );
978 
979       IF (lc_proc_level >= lc_debug_level) THEN
980         FND_LOG.STRING(lc_proc_level, lc_mod_name || '.END',
981                        'Leaving Delete_RO_Diagnostic_Code');
982       END IF;
983 
984 EXCEPTION
985     WHEN FND_API.G_EXC_ERROR THEN
986           ROLLBACK TO Delete_RO_Diagnostic_Code;
987 
988           x_return_status := FND_API.G_RET_STS_ERROR;
989 
990           FND_MSG_PUB.Count_And_Get
991               (p_count  =>  x_msg_count,
992                p_data   =>  x_msg_data );
993 
994          -- save message in debug log
995           IF (lc_excep_level >= lc_debug_level) THEN
996               FND_LOG.STRING(lc_excep_level, lc_mod_name,
997                              'EXC_ERROR['||x_msg_data||']');
998           END IF;
999 
1000     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1001           ROLLBACK TO Delete_RO_Diagnostic_Code;
1002 
1003           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1004 
1005          IF  FND_MSG_PUB.Check_Msg_Level
1006               (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1007           THEN
1008               if (lc_stat_level >= lc_debug_level) then
1009                   FND_LOG.STRING(lc_stat_level, lc_mod_name,
1010                                  'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
1011               end if;
1012               FND_MSG_PUB.Add_Exc_Msg
1013               (G_PKG_NAME ,
1014                lc_api_name  );
1015           END IF;
1016 
1017           FND_MSG_PUB.Count_And_Get
1018                 ( p_count  =>  x_msg_count,
1019                   p_data   =>  x_msg_data );
1020 
1021           -- save message in debug log
1022           IF (lc_excep_level >= lc_debug_level) THEN
1023               FND_LOG.STRING(lc_excep_level, lc_mod_name,
1024                              'EXC_UNEXPECTED_ERROR['||x_msg_data||']');
1025           END IF;
1026 
1027     WHEN OTHERS THEN
1028           ROLLBACK TO Delete_RO_Diagnostic_Code;
1029 
1030           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1031 
1032            -- save message in fnd stack
1033            IF  FND_MSG_PUB.Check_Msg_Level
1034                (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1035            THEN
1036                if (lc_stat_level >= lc_debug_level) then
1037                    FND_LOG.STRING(lc_stat_level, lc_mod_name,
1038                                   'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
1039                end if;
1040                FND_MSG_PUB.Add_Exc_Msg
1041                (G_PKG_NAME ,
1042                 lc_api_name  );
1043            END IF;
1044 
1045            FND_MSG_PUB.Count_And_Get
1046                (p_count  =>  x_msg_count,
1047                 p_data   =>  x_msg_data );
1048 
1049            -- save message in debug log
1050            IF (lc_excep_level >= lc_debug_level) THEN
1051                -- create a seeded message
1052                FND_LOG.STRING(lc_excep_level, lc_mod_name,
1053                               'SQL Message['||sqlerrm||']' );
1054           END IF;
1055 
1056 END Delete_RO_Diagnostic_Code;
1057 
1058 /*--------------------------------------------------*/
1059 /* procedure name: Lock_RO_Diagnostic_Code          */
1060 /* description   : procedure used to lock           */
1061 /*                 ro diagnostic code	            */
1062 /*                                                  */
1063 /*--------------------------------------------------*/
1064 PROCEDURE Lock_RO_Diagnostic_Code
1065 (
1066   p_api_version        		IN  NUMBER,
1067   p_commit	   		IN  VARCHAR2,
1068   p_init_msg_list      		IN  VARCHAR2,
1069   p_validation_level   		IN  NUMBER,
1070   x_return_status      		OUT NOCOPY VARCHAR2,
1071   x_msg_count          		OUT NOCOPY NUMBER,
1072   x_msg_data           		OUT NOCOPY VARCHAR2,
1073   p_ro_diagnostic_code_rec	IN  RO_DIAGNOSTIC_CODE_REC_TYPE
1074 )IS
1075 
1076 -- CONSTANTS --
1077  lc_debug_level           CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1078  lc_stat_level            CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
1079  lc_proc_level            CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
1080  lc_event_level           CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
1081  lc_excep_level           CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
1082  lc_error_level           CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
1083  lc_unexp_level           CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
1084  lc_mod_name              CONSTANT VARCHAR2(100)  := 'csd.plsql.csd_ro_diagnostic_codes_pvt.lock_ro_diagnostic_code';
1085  lc_api_name              CONSTANT VARCHAR2(30)   := 'Lock_RO_Diagnostic_Code';
1086  lc_api_version           CONSTANT NUMBER         := 1.0;
1087 
1088 -- VARIABLES --
1089  l_msg_count              NUMBER;
1090  l_msg_data               VARCHAR2(100);
1091  l_msg_index              NUMBER;
1092 
1093 BEGIN
1094        -- Standard Start of API savepoint
1095        SAVEPOINT  Lock_RO_Diagnostic_Code;
1096 
1097        -- Standard call to check for call compatibility.
1098        IF NOT FND_API.Compatible_API_Call (lc_api_version,
1099                                            p_api_version,
1100                                            lc_api_name   ,
1101                                            G_PKG_NAME    )
1102        THEN
1103              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1104        END IF;
1105 
1106        -- Initialize message list if p_init_msg_list is set to TRUE.
1107        IF FND_API.to_Boolean( p_init_msg_list ) THEN
1108            FND_MSG_PUB.initialize;
1109        END IF;
1110 
1111        IF (lc_proc_level >= lc_debug_level) THEN
1112            FND_LOG.STRING(lc_proc_level, lc_mod_name || '.BEGIN',
1113                 'Entered Lock_RO_Diagnostic_Code');
1114        END IF;
1115 
1116        -- Initialize API return status to success
1117        x_return_status := FND_API.G_RET_STS_SUCCESS;
1118 
1119        -- Api body starts
1120 
1121        -- Check the required parameters
1122         if (lc_proc_level >= lc_debug_level) then
1123            FND_LOG.STRING(lc_proc_level, lc_mod_name,
1124                         'Checking required parameters');
1125         end if;
1126        -- Check the required parameter
1127        CSD_PROCESS_UTIL.Check_Reqd_Param
1128        ( p_param_value	  => p_ro_diagnostic_code_rec.ro_diagnostic_code_id,
1129          p_param_name	  => 'RO_DIAGNOSTIC_CODE_ID',
1130          p_api_name	  => lc_api_name);
1131 
1132        -- Check the required parameter
1133        CSD_PROCESS_UTIL.Check_Reqd_Param
1134        ( p_param_value	  => p_ro_diagnostic_code_rec.object_version_number,
1135          p_param_name	  => 'OBJECT_VERSION_NUMBER',
1136          p_api_name	  => lc_api_name);
1137 
1138        -- Lock row
1139        if (lc_proc_level >= lc_debug_level) then
1140            FND_LOG.STRING(lc_proc_level, lc_mod_name,
1141                         'Calling Lock_Row table handler');
1142        end if;
1143 
1144        BEGIN
1145 
1146          -- Lock the ro diagnostic code association
1147          CSD_RO_DIAGNOSTIC_CODES_PKG.Lock_Row
1148          (p_ro_diagnostic_code_id     => p_ro_diagnostic_code_rec.ro_diagnostic_code_id,
1149           p_object_version_number     => p_ro_diagnostic_code_rec.object_version_number
1150 
1151           --commented out the rest of the record
1152           /*,
1153           p_repair_line_id            => p_ro_diagnostic_code_rec.repair_line_id,
1154           p_diagnostic_code_id        => p_ro_diagnostic_code_rec.diagnostic_code_id,
1155           p_created_by                => FND_GLOBAL.USER_ID,
1156           p_creation_date             => SYSDATE,
1157           p_last_updated_by           => FND_GLOBAL.USER_ID,
1158           p_last_update_date          => SYSDATE,
1159           p_last_update_login         => FND_GLOBAL.LOGIN_ID,
1160           p_attribute_category        => p_ro_diagnostic_code_rec.attribute_category,
1161           p_attribute1                => p_ro_diagnostic_code_rec.attribute1,
1162           p_attribute2                => p_ro_diagnostic_code_rec.attribute2,
1163           p_attribute3                => p_ro_diagnostic_code_rec.attribute3,
1164           p_attribute4                => p_ro_diagnostic_code_rec.attribute4,
1165           p_attribute5                => p_ro_diagnostic_code_rec.attribute5,
1166           p_attribute6                => p_ro_diagnostic_code_rec.attribute6,
1167           p_attribute7                => p_ro_diagnostic_code_rec.attribute7,
1168           p_attribute8                => p_ro_diagnostic_code_rec.attribute8,
1169           p_attribute9                => p_ro_diagnostic_code_rec.attribute9,
1170           p_attribute10               => p_ro_diagnostic_code_rec.attribute10,
1171           p_attribute11               => p_ro_diagnostic_code_rec.attribute11,
1172           p_attribute12               => p_ro_diagnostic_code_rec.attribute12,
1173           p_attribute13               => p_ro_diagnostic_code_rec.attribute13,
1174           p_attribute14               => p_ro_diagnostic_code_rec.attribute14,
1175           p_attribute15               => p_ro_diagnostic_code_rec.attribute15
1176           */
1177           --
1178  	);
1179 
1180        EXCEPTION
1181           WHEN OTHERS THEN
1182              IF ( lc_excep_level >= lc_debug_level) THEN
1183                 FND_LOG.STRING(lc_excep_level,lc_mod_name,'Others exception in CSD_RO_DIAGNOSTIC_CODES_PKG.Lock_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
1184              END IF;
1185              x_return_status := FND_API.G_RET_STS_ERROR;
1186        END;
1187 
1188        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1189           RAISE FND_API.G_EXC_ERROR;
1190        END IF;
1191 
1192        if (lc_proc_level >= lc_debug_level) then
1193           FND_LOG.STRING(lc_proc_level, lc_mod_name,
1194                        'Returned from Lock_Row table handler');
1195        end if;
1196 
1197       -- Api body ends here
1198 
1199       -- Standard check of p_commit.
1200       IF FND_API.To_Boolean( p_commit ) THEN
1201            COMMIT WORK;
1202       END IF;
1203 
1204       -- Standard call to get message count and IF count is  get message info.
1205       FND_MSG_PUB.Count_And_Get
1206            (p_count  =>  x_msg_count,
1207             p_data   =>  x_msg_data );
1208 
1209       IF (lc_proc_level >= lc_debug_level) THEN
1210         FND_LOG.STRING(lc_proc_level, lc_mod_name || '.END',
1211                        'Leaving Lock_RO_Diagnostic_Code');
1212       END IF;
1213 
1214 EXCEPTION
1215    WHEN FND_API.G_EXC_ERROR THEN
1216           ROLLBACK TO Lock_RO_Diagnostic_Code;
1217 
1218           x_return_status := FND_API.G_RET_STS_ERROR;
1219 
1220           FND_MSG_PUB.Count_And_Get
1221               (p_count  =>  x_msg_count,
1222                p_data   =>  x_msg_data );
1223 
1224          -- save message in debug log
1225           IF (lc_excep_level >= lc_debug_level) THEN
1226               FND_LOG.STRING(lc_excep_level, lc_mod_name,
1227                              'EXC_ERROR['||x_msg_data||']');
1228           END IF;
1229 
1230     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1231           ROLLBACK TO Lock_RO_Diagnostic_Code;
1232 
1233           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1234 
1235          IF  FND_MSG_PUB.Check_Msg_Level
1236               (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1237           THEN
1238               if (lc_stat_level >= lc_debug_level) then
1239                   FND_LOG.STRING(lc_stat_level, lc_mod_name,
1240                                  'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
1241               end if;
1242               FND_MSG_PUB.Add_Exc_Msg
1243               (G_PKG_NAME ,
1244                lc_api_name  );
1245           END IF;
1246 
1247           FND_MSG_PUB.Count_And_Get
1248                 ( p_count  =>  x_msg_count,
1249                   p_data   =>  x_msg_data );
1250 
1251           -- save message in debug log
1252           IF (lc_excep_level >= lc_debug_level) THEN
1253               FND_LOG.STRING(lc_excep_level, lc_mod_name,
1254                              'EXC_UNEXPECTED_ERROR['||x_msg_data||']');
1255           END IF;
1256 
1257     WHEN OTHERS THEN
1258           ROLLBACK TO Lock_RO_Diagnostic_Code;
1259 
1260           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1261 
1262            -- save message in fnd stack
1263            IF  FND_MSG_PUB.Check_Msg_Level
1264                (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1265            THEN
1266                if (lc_stat_level >= lc_debug_level) then
1267                    FND_LOG.STRING(lc_stat_level, lc_mod_name,
1268                                   'Adding message using FND_MSG_PUB.Add_Exc_Msg to FND_MSG stack');
1269                end if;
1270                FND_MSG_PUB.Add_Exc_Msg
1271                (G_PKG_NAME ,
1272                 lc_api_name  );
1273            END IF;
1274 
1275            FND_MSG_PUB.Count_And_Get
1276                (p_count  =>  x_msg_count,
1277                 p_data   =>  x_msg_data );
1278 
1279            -- save message in debug log
1280            IF (lc_excep_level >= lc_debug_level) THEN
1281                -- create a seeded message
1282                FND_LOG.STRING(lc_excep_level, lc_mod_name,
1283                               'SQL Message['||sqlerrm||']' );
1284           END IF;
1285 
1286 END Lock_RO_Diagnostic_Code;
1287 
1288 End CSD_RO_DIAGNOSTIC_CODES_PVT;