DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_UC_VALIDATION_PUB

Source


1 PACKAGE BODY AHL_UC_VALIDATION_PUB AS
2 /* $Header: AHLPUCVB.pls 120.2.12020000.2 2012/12/10 15:54:56 prakkum ship $ */
3 
4 
5  G_PKG_NAME   CONSTANT  VARCHAR2(30) := 'AHL_UC_VALIDATION_PUB';
6 
7 -------------------------------------------------------------------------------
8 -- Start of Comments --
9 --  Procedure name    : Validate_Completeness
10 --  Type        : Private
11 --  Function    : Validates the unit's completeness and checks for ALL validations.
12 --  Pre-reqs    :
13 --  Parameters  :
14 --
15 --  Validate_Completeness Parameters:
16 --   p_unit_header_id   IN           NUMBER Required.
17 --          The header identifier of the Unit Configuration
18 --   x_error_tbl        OUT NOCOPY   Error_Tbl_Type Required
19 --          A table listing all the Errors.
20 --
21 --  End of Comments.
22 -------------------------------------------------------------------------------
23 PROCEDURE Validate_Completeness (
24     p_api_version         IN           NUMBER,
25     p_init_msg_list       IN           VARCHAR2  := FND_API.G_FALSE,
26     p_commit              IN           VARCHAR2  := FND_API.G_FALSE,
27     p_validation_level    IN           NUMBER    := FND_API.G_VALID_LEVEL_FULL,
28     x_return_status       OUT  NOCOPY    VARCHAR2,
29     x_msg_count           OUT  NOCOPY    NUMBER,
30     x_msg_data            OUT  NOCOPY    VARCHAR2,
31     p_unit_header_id      IN           NUMBER,
32     -- SATHAPLI::Service Bulletin Effectivity, 03-May-2011, accept visit id too
33     p_visit_id            IN           NUMBER    := NULL,
34     x_error_tbl           OUT  NOCOPY    Error_Tbl_Type)
35 IS
36 --
37 CURSOR validate_uc_header_id_csr (c_unit_header_id IN NUMBER) IS
38   SELECT unit_config_status_code
39   FROM   ahl_unit_config_headers
40   WHERE  unit_config_header_id = c_unit_header_id
41     AND trunc(nvl(active_start_date,sysdate)) <= trunc(sysdate)
42     AND trunc(sysdate) < trunc(nvl(active_end_date, sysdate+1))
43   FOR UPDATE OF unit_config_status_code NOWAIT;
44 --
45   l_api_version      CONSTANT NUMBER := 1.0;
46   l_api_name         CONSTANT VARCHAR2(30) := 'Validate_Completeness';
47 
48   l_uc_status_code   ahl_unit_config_headers.unit_config_status_code%TYPE;
49   l_error_table       Error_Tbl_Type;
50   l_evaluation_status VARCHAR2(1);
51 --
52 BEGIN
53 
54   -- Standard start of API savepoint
55   SAVEPOINT Validate_Completeness;
56 
57   -- Standard call to check for call compatibility
58   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
59                                      G_PKG_NAME) THEN
60     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
61   END IF;
62 
63     -- Initialize message list if p_init_msg_list is set to TRUE
64   IF FND_API.To_Boolean(p_init_msg_list) THEN
65     FND_MSG_PUB.Initialize;
66   END IF;
67 
68   -- Initialize API return status to success
69   x_return_status := FND_API.G_RET_STS_SUCCESS;
70 
71   IF (p_unit_header_id IS NULL OR p_unit_header_id = FND_API.G_MISS_NUM) THEN
72     FND_MESSAGE.set_name('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
73     FND_MESSAGE.set_token('PROCEDURE', G_PKG_NAME);
74     FND_MSG_PUB.add;
75     RAISE  FND_API.G_EXC_ERROR;
76   END IF;
77 
78   -- ACL :: Changes for R12
79   IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_unit_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
80     FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
81     FND_MSG_PUB.add;
82     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
83   END IF;
84 
85   --List Extra nodes
86   AHL_UC_POS_NECES_PVT.list_extra_nodes(
87         p_api_version                   => 1.0,
88         p_init_msg_list                 => p_init_msg_list,
89         p_validation_level              => p_validation_level,
90         p_uc_header_id                  => p_unit_header_id,
91     p_csi_instance_id               => null,
92         x_evaluation_status             => l_evaluation_status,
93         p_x_error_table                 => l_error_table,
94         x_return_status                 => x_return_status,
95         x_msg_count                     => x_msg_count,
96         x_msg_data                      => x_msg_data
97       );
98 
99   --List Missing Positions
100   AHL_UC_POS_NECES_PVT.list_missing_positions(
101         p_api_version                   => 1.0,
102         p_init_msg_list                 => p_init_msg_list,
103         p_validation_level              => p_validation_level,
104         p_uc_header_id                  => p_unit_header_id,
105         p_csi_instance_id               => null,
106         x_evaluation_status             => l_evaluation_status,
107         p_x_error_table                 => l_error_table,
108         x_return_status                 => x_return_status,
109         x_msg_count                     => x_msg_count,
110         x_msg_data                      => x_msg_data
111       );
112 
113 
114    --Validate Rules
115     AHL_MC_RULE_ENGINE_PVT.Validate_Rules_For_Unit (
116             p_api_version                   => 1.0,
117             p_init_msg_list                 => p_init_msg_list,
118             p_validation_level              => p_validation_level,
119             x_return_status                 => x_return_status,
120             x_msg_count                     => x_msg_count,
121             x_msg_data                      => x_msg_data,
122             p_unit_header_id                => p_unit_header_id,
123             p_rule_type                     => 'MANDATORY',
124         p_check_subconfig_flag          => FND_API.G_TRUE,
125             p_x_error_tbl                   => l_error_table,
126         x_evaluation_status             => l_evaluation_status
127           );
128 
129    -- SATHAPLI::FP OGMA Issue# 105 - Non-Serialized Item Maintenance, 05-Dec-2007
130    -- Perform Quantity Validations
131    AHL_UC_POS_NECES_PVT.Validate_Position_Quantities (
132         p_api_version                   => 1.0,
133         p_init_msg_list                 => p_init_msg_list,
134         p_validation_level              => p_validation_level,
135         p_uc_header_id                  => p_unit_header_id,
136         p_csi_instance_id               => null,
137         x_evaluation_status             => l_evaluation_status,
138         p_x_error_table                 => l_error_table,
139         x_return_status                 => x_return_status,
140         x_msg_count                     => x_msg_count,
141         x_msg_data                      => x_msg_data
142       );
143 
144      -- SATHAPLI::Service Bulletin Effectivity, 15-Mar-2011
145      -- Check for SB rules
146      AHL_SB_RULES_PVT.Check_Unit_Completeness(
147         p_api_version        => 1.0,
148         p_init_msg_list      => p_init_msg_list,
149         p_validation_level   => p_validation_level,
150         p_uc_header_id       => p_unit_header_id,
151         p_visit_id           => p_visit_id,
152         p_x_erring_rules_tbl => l_error_table,
153         x_return_status      => x_return_status,
154         x_msg_count          => x_msg_count,
155         x_msg_data           => x_msg_data
156      );
157 
158      -- Check Error Message stack.
159      x_msg_count := FND_MSG_PUB.count_msg;
160      IF x_msg_count > 0 THEN
161        RAISE  FND_API.G_EXC_ERROR;
162      END IF;
163 
164    --validate the uc header id
165    OPEN validate_uc_header_id_csr(p_unit_header_id);
166    FETCH validate_uc_header_id_csr INTO l_uc_status_code;
167    IF (validate_uc_header_id_csr%NOTFOUND) THEN
168        FND_MESSAGE.Set_Name('AHL','AHL_UC_HEADER_ID_INVALID');
169        FND_MESSAGE.Set_Token('UC_HEADER_ID', p_unit_header_id);
170        FND_MSG_PUB.ADD;
171        CLOSE validate_uc_header_id_csr;
172        RAISE  FND_API.G_EXC_ERROR;
173    END IF;
174    CLOSE validate_uc_header_id_csr;
175 
176    IF (l_uc_status_code = 'INCOMPLETE' AND
177        l_error_table.COUNT = 0) THEN
178       UPDATE AHL_UNIT_CONFIG_HEADERS
179          SET UNIT_CONFIG_STATUS_CODE = 'COMPLETE',
180          OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER+1,
181          LAST_UPDATE_DATE      = sysdate,
182          LAST_UPDATED_BY       = fnd_global.USER_ID,
183          LAST_UPDATE_LOGIN     = fnd_global.LOGIN_ID
184     WHERE unit_config_header_id = p_unit_header_id;
185    ELSIF (l_error_table.COUNT >0 AND
186        l_uc_status_code = 'COMPLETE') THEN
187        UPDATE AHL_UNIT_CONFIG_HEADERS
188          SET UNIT_CONFIG_STATUS_CODE = 'INCOMPLETE',
189          OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER+1,
190          LAST_UPDATE_DATE      = sysdate,
191          LAST_UPDATED_BY       = fnd_global.USER_ID,
192          LAST_UPDATE_LOGIN     = fnd_global.LOGIN_ID
193     WHERE unit_config_header_id = p_unit_header_id;
194   END IF;
195 
196   --Setting output parameters
197   x_error_tbl := l_error_table;
198 
199   -- Standard check of p_commit
200   IF FND_API.TO_BOOLEAN(p_commit) THEN
201       COMMIT WORK;
202   END IF;
203 
204   -- Standard call to get message count and if count is 1, get message info
205   FND_MSG_PUB.Count_And_Get
206     ( p_count => x_msg_count,
207       p_data  => x_msg_data,
208       p_encoded => fnd_api.g_false
209     );
210 
211 EXCEPTION
212     WHEN FND_API.G_EXC_ERROR THEN
213       x_return_status := FND_API.G_RET_STS_ERROR;
214       Rollback to Validate_Completeness;
215       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
216                                  p_data  => x_msg_data,
217                                  p_encoded => fnd_api.g_false);
218     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
219       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
220       Rollback to Validate_Completeness;
221       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
222                                  p_data  => x_msg_data,
223                                  p_encoded => fnd_api.g_false);
224     WHEN OTHERS THEN
225       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
226       Rollback to Validate_Completeness;
227       FND_MSG_PUB.add_exc_msg( p_pkg_name       => G_PKG_NAME,
228                                p_procedure_name => l_api_name,
229                                p_error_text     => SQLERRM);
230 
231       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
232                                  p_data  => x_msg_data,
233                                  p_encoded => fnd_api.g_false);
234 
235 END Validate_Completeness;
236 
237 
238 --------------------------------
239 -- Start of Comments --
240 --  Procedure name    : Validate_Complete_For_Pos
241 --  Type        : Private
242 --  Function    : Validates the unit's completeness and checks for ALL validations.
243 --  Pre-reqs    :
244 --  Parameters  :
245 --
246 --  Validate_Complete_For_Pos Parameters:
247 --   p_unit_header_id         IN    NUMBER Required.
248 --       p_csi_instance_id            IN   NUMBER Required.
249 --       x_error_tbl     OUT NOCOPY   AHL_MC_VALIDATION_PUB.error_tbl_Type Required
250 --
251 --  End of Comments.
252 
253 PROCEDURE Validate_Complete_For_Pos (
254     p_api_version         IN           NUMBER,
255     p_init_msg_list       IN           VARCHAR2  := FND_API.G_FALSE,
256     p_commit              IN           VARCHAR2  := FND_API.G_FALSE,
257     p_validation_level    IN           NUMBER    := FND_API.G_VALID_LEVEL_FULL,
258     x_return_status       OUT  NOCOPY    VARCHAR2,
259     x_msg_count           OUT  NOCOPY    NUMBER,
260     x_msg_data            OUT  NOCOPY    VARCHAR2,
261     p_csi_instance_id     IN           NUMBER,
262     x_error_tbl       OUT NOCOPY       Error_Tbl_Type)
263 IS
264 --
265   l_api_version      CONSTANT NUMBER := 1.0;
266   l_api_name         CONSTANT VARCHAR2(30) := 'Validate_Complete_For_Pos';
267   l_error_table       Error_Tbl_Type;
268   l_evaluation_status VARCHAR2(1);
269 --
270 BEGIN
271 
272   -- Standard start of API savepoint
273   SAVEPOINT Validate_Complete_For_Pos;
274 
275   -- Standard call to check for call compatibility
276   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
277                                      G_PKG_NAME) THEN
278     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
279   END IF;
280 
281     -- Initialize message list if p_init_msg_list is set to TRUE
282   IF FND_API.To_Boolean(p_init_msg_list) THEN
283     FND_MSG_PUB.Initialize;
284   END IF;
285 
286   -- Initialize API return status to success
287   x_return_status := FND_API.G_RET_STS_SUCCESS;
288 
289   --List Extra nodes
290   AHL_UC_POS_NECES_PVT.list_extra_nodes(
291         p_api_version                   => 1.0,
292         p_init_msg_list                 => p_init_msg_list,
293         p_validation_level              => p_validation_level,
294         p_uc_header_id                  => null,
295     p_csi_instance_id               => p_csi_instance_id,
296         x_evaluation_status             => l_evaluation_status,
297         p_x_error_table                 => l_error_table,
298         x_return_status                 => x_return_status,
299         x_msg_count                     => x_msg_count,
300         x_msg_data                      => x_msg_data
301       );
302 
303   --List Missing Positions
304   AHL_UC_POS_NECES_PVT.list_missing_positions(
305         p_api_version                   => 1.0,
306         p_init_msg_list                 => p_init_msg_list,
307         p_validation_level              => p_validation_level,
308         p_uc_header_id                  => null,
309         p_csi_instance_id               => p_csi_instance_id,
310         x_evaluation_status             => l_evaluation_status,
311         p_x_error_table                 => l_error_table,
312         x_return_status                 => x_return_status,
313         x_msg_count                     => x_msg_count,
314         x_msg_data                      => x_msg_data
315       );
316 
317 
318    --Validate Rules
319     AHL_MC_RULE_ENGINE_PVT.Validate_Rules_For_Position (
320             p_api_version                   => 1.0,
321             p_init_msg_list                 => p_init_msg_list,
322             p_validation_level              => p_validation_level,
323             x_return_status                 => x_return_status,
324             x_msg_count                     => x_msg_count,
325             x_msg_data                      => x_msg_data,
326             p_item_instance_id              => p_csi_instance_id,
327             p_rule_type                     => 'MANDATORY',
328             p_x_error_tbl                   => l_error_table,
329         x_evaluation_status             => l_evaluation_status
330           );
331 
332    -- SATHAPLI::FP OGMA Issue# 105 - Non-Serialized Item Maintenance, 05-Dec-2007
333    -- Perform Quantity Validations
334    AHL_UC_POS_NECES_PVT.Validate_Position_Quantities (
335         p_api_version                   => 1.0,
336         p_init_msg_list                 => p_init_msg_list,
337         p_validation_level              => p_validation_level,
338         p_uc_header_id                  => null,
339         p_csi_instance_id               => p_csi_instance_id,
340         x_evaluation_status             => l_evaluation_status,
341         p_x_error_table                 => l_error_table,
342         x_return_status                 => x_return_status,
343         x_msg_count                     => x_msg_count,
344         x_msg_data                      => x_msg_data
345       );
346 
347      -- SATHAPLI::Service Bulletin Effectivity, 28-Mar-2011
348      -- Check for SB rules
349      AHL_SB_RULES_PVT.Check_Inst_Completeness(
350         p_api_version        => 1.0,
351         p_init_msg_list      => p_init_msg_list,
352         p_validation_level   => p_validation_level,
353         p_csi_instance_id    => p_csi_instance_id,
354         p_x_erring_rules_tbl => l_error_table,
355         x_return_status      => x_return_status,
356         x_msg_count          => x_msg_count,
357         x_msg_data           => x_msg_data
358      );
359 
360      -- Check Error Message stack.
361      x_msg_count := FND_MSG_PUB.count_msg;
362      IF x_msg_count > 0 THEN
363        RAISE  FND_API.G_EXC_ERROR;
364      END IF;
365 
366   --Setting output parameters
367   x_error_tbl := l_error_table;
368 
369   -- Standard check of p_commit
370   IF FND_API.TO_BOOLEAN(p_commit) THEN
371       COMMIT WORK;
372   END IF;
373 
374   -- Standard call to get message count and if count is 1, get message info
375   FND_MSG_PUB.Count_And_Get
376     ( p_count => x_msg_count,
377       p_data  => x_msg_data,
378       p_encoded => fnd_api.g_false
379     );
380 
381 EXCEPTION
382     WHEN FND_API.G_EXC_ERROR THEN
383       x_return_status := FND_API.G_RET_STS_ERROR;
384       Rollback to Validate_Complete_For_Pos;
385       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
386                                  p_data  => x_msg_data,
387                                  p_encoded => fnd_api.g_false);
388     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
389       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
390       Rollback to Validate_Complete_For_Pos;
391       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
392                                  p_data  => x_msg_data,
393                                  p_encoded => fnd_api.g_false);
394     WHEN OTHERS THEN
395       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
396       Rollback to Validate_Complete_For_Pos;
397       FND_MSG_PUB.add_exc_msg( p_pkg_name       => G_PKG_NAME,
398                                p_procedure_name => l_api_name,
399                                p_error_text     => SQLERRM);
400 
401       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
402                                  p_data  => x_msg_data,
403                                  p_encoded => fnd_api.g_false);
404 END Validate_Complete_For_Pos;
405 
406 
407 -------------------------------------------------------------------------------
408 -- Start of Comments --
409 --  Procedure name    : Check_Completeness
410 --  Type        : Private
411 --  Function    : Check the unit's completeness
412 --   Complete/Incomplete status if current status is complete or incomplete..
413 --  Pre-reqs    :
414 --  Parameters  :
415 --
416 --  Check_Completeness Parameters:
417 --   p_unit_header_id         IN            NUMBER Required.
418 --          The header identifier of the Unit Configuration
419 --   x_evaluation_status     OUT  NOCOPY    VARCHAR2
420 --          The evaluation status of the Unit Configutation.Returns a FND_API.G_TRUE or FND_API.G_FALSE
421 --  End of Comments.
422 -------------------------------------------------------------------------------
423 PROCEDURE Check_Completeness (
424     p_api_version         IN             NUMBER,
425     p_init_msg_list       IN             VARCHAR2  := FND_API.G_FALSE,
426     p_commit              IN             VARCHAR2  := FND_API.G_FALSE,
427     p_validation_level    IN             NUMBER    := FND_API.G_VALID_LEVEL_FULL,
428     x_return_status       OUT  NOCOPY    VARCHAR2,
429     x_msg_count           OUT  NOCOPY    NUMBER,
430     x_msg_data            OUT  NOCOPY    VARCHAR2,
431     p_unit_header_id      IN             NUMBER,
432     x_evaluation_status   OUT  NOCOPY    VARCHAR2)
433 IS
434 --
435   l_api_version      CONSTANT NUMBER := 1.0;
436   l_api_name         CONSTANT VARCHAR2(30) := 'Check_Completeness';
437 --
438 BEGIN
439 
440   -- Standard start of API savepoint
441   SAVEPOINT Check_Completeness;
442 
443   -- Standard call to check for call compatibility
444   IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
445                                      G_PKG_NAME) THEN
446     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
447   END IF;
448 
449     -- Initialize message list if p_init_msg_list is set to TRUE
450   IF FND_API.To_Boolean(p_init_msg_list) THEN
451     FND_MSG_PUB.Initialize;
452   END IF;
453 
454   -- Initialize API return status to success
455   x_return_status := FND_API.G_RET_STS_SUCCESS;
456   x_evaluation_status := 'U';
457 
458   IF (p_unit_header_id IS NULL OR p_unit_header_id = FND_API.G_MISS_NUM) THEN
459     FND_MESSAGE.set_name('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
460     FND_MESSAGE.set_token('PROCEDURE', G_PKG_NAME);
461     FND_MSG_PUB.add;
462     RAISE  FND_API.G_EXC_ERROR;
463   END IF;
464 
465   --Check for Extra nodes
466   AHL_UC_POS_NECES_PVT.check_extra_nodes(
467         p_api_version                   => 1.0,
468         p_init_msg_list                 => p_init_msg_list,
469         p_validation_level              => p_validation_level,
470         p_uc_header_id                  => p_unit_header_id,
471         x_evaluation_status             => x_evaluation_status,
472         x_return_status                 => x_return_status,
473         x_msg_count                     => x_msg_count,
474         x_msg_data                      => x_msg_data
475       );
476    -- Check Error Message stack.
477    x_msg_count := FND_MSG_PUB.count_msg;
478    IF x_msg_count > 0 THEN
479        RAISE  FND_API.G_EXC_ERROR;
480    END IF;
481 
482 
483   IF ( x_evaluation_status = FND_API.G_TRUE ) THEN
484     --Check for Missing Positions
485     AHL_UC_POS_NECES_PVT.check_missing_positions(
486             p_api_version                   => 1.0,
487             p_init_msg_list                 => p_init_msg_list,
488             p_validation_level              => p_validation_level,
489             p_uc_header_id                  => p_unit_header_id,
490             x_evaluation_status             => x_evaluation_status,
491             x_return_status                 => x_return_status,
492             x_msg_count                     => x_msg_count,
493             x_msg_data                      => x_msg_data
494         );
495      -- Check Error Message stack.
496      x_msg_count := FND_MSG_PUB.count_msg;
497      IF x_msg_count > 0 THEN
498        RAISE  FND_API.G_EXC_ERROR;
499      END IF;
500 
501   END IF;
502 
503   IF ( x_evaluation_status = FND_API.G_TRUE ) THEN
504     --Check for Rules
505     AHL_MC_RULE_ENGINE_PVT.Check_Rules_For_Unit (
506             p_api_version                   => 1.0,
507             p_init_msg_list                 => p_init_msg_list,
508             p_validation_level              => p_validation_level,
509             p_unit_header_id                => p_unit_header_id,
510         p_rule_type                     => 'MANDATORY',
511             p_check_subconfig_flag          => FND_API.G_TRUE,
512             x_evaluation_status               => x_evaluation_status,
513             x_return_status                 => x_return_status,
514             x_msg_count                     => x_msg_count,
515             x_msg_data                      => x_msg_data
516         );
517      -- Check Error Message stack.
518      x_msg_count := FND_MSG_PUB.count_msg;
519      IF x_msg_count > 0 THEN
520        RAISE  FND_API.G_EXC_ERROR;
521      END IF;
522 
523     -- SATHAPLI::FP OGMA Issue# 105 - Non-Serialized Item Maintenance, 05-Dec-2007
524     IF (x_evaluation_status <> 'F') THEN
525       -- Perform Quantity Checks
526       AHL_UC_POS_NECES_PVT.Check_Position_Quantities (
527         p_api_version                   => 1.0,
528         p_init_msg_list                 => p_init_msg_list,
529         p_validation_level              => p_validation_level,
530         p_uc_header_id                  => p_unit_header_id,
531         x_evaluation_status             => x_evaluation_status,
532         x_return_status                 => x_return_status,
533         x_msg_count                     => x_msg_count,
534         x_msg_data                      => x_msg_data
535       );
536 
537       -- Check Error Message stack.
538       x_msg_count := FND_MSG_PUB.count_msg;
539       IF x_msg_count > 0 THEN
540         RAISE  FND_API.G_EXC_ERROR;
541       END IF;
542     END IF;
543 
544    END IF;
545 
546   -- Standard check of p_commit
547   IF FND_API.TO_BOOLEAN(p_commit) THEN
548       COMMIT WORK;
549   END IF;
550 
551   -- Standard call to get message count and if count is 1, get message info
552   FND_MSG_PUB.Count_And_Get
553     ( p_count => x_msg_count,
554       p_data  => x_msg_data,
555       p_encoded => fnd_api.g_false
556     );
557 
558   EXCEPTION
559     WHEN FND_API.G_EXC_ERROR THEN
560       x_return_status := FND_API.G_RET_STS_ERROR;
561       Rollback to Check_Completeness;
562       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
563                                  p_data  => x_msg_data,
564                                  p_encoded => fnd_api.g_false);
565 
566     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
567       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
568       Rollback to Check_Completeness;
569       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
570                                  p_data  => x_msg_data,
571                                  p_encoded => fnd_api.g_false);
572 
573     WHEN OTHERS THEN
574       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
575       Rollback to Check_Completeness;
576       FND_MSG_PUB.add_exc_msg( p_pkg_name       => G_PKG_NAME,
577                                p_procedure_name => l_api_name,
578                                p_error_text     => SQLERRM);
579 
580       FND_MSG_PUB.count_and_get( p_count => x_msg_count,
581                                  p_data  => x_msg_data,
582                                  p_encoded => fnd_api.g_false);
583 
584 END Check_Completeness;
585 
586 
587 END AHL_UC_VALIDATION_PUB;