DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_UC_UNITCONFIG_PUB

Source


1 PACKAGE BODY AHL_UC_UNITCONFIG_PUB AS
2 /* $Header: AHLPUCXB.pls 115.9 2003/10/28 23:12:40 jeli noship $ */
3 
4 -- Define global internal variables
5 G_PKG_NAME VARCHAR2(30) := 'AHL_UC_UNITCONFIG_PUB';
6 
7 -- Define Procedure process_uc_header --
8 -- This API is used to create, update or expire a UC header record in ahl_unit_config_headers
9 PROCEDURE process_uc_header(
10   p_api_version           IN  NUMBER    := 1.0,
11   p_init_msg_list         IN  VARCHAR2  := FND_API.G_FALSE,
12   p_commit                IN  VARCHAR2  := FND_API.G_FALSE,
13   p_validation_level      IN  NUMBER    := FND_API.G_VALID_LEVEL_FULL,
14   x_return_status         OUT NOCOPY VARCHAR2,
15   x_msg_count             OUT NOCOPY NUMBER,
16   x_msg_data              OUT NOCOPY VARCHAR2,
17   p_dml_flag              IN  VARCHAR2,
18   p_x_uc_header_rec       IN OUT NOCOPY ahl_uc_instance_pvt.uc_header_rec_type)
19 IS
20   l_api_name       CONSTANT   VARCHAR2(30)   := 'process_uc_header';
21   l_api_version    CONSTANT   NUMBER         := 1.0;
22   l_uc_header_ovn             NUMBER;
23   l_csi_instance_ovn          NUMBEr;
24   l_return_status             VARCHAR2(1);
25   l_msg_count                 NUMBER;
26   l_msg_data                  VARCHAR2(2000);
27 
28   CURSOR get_ovns(c_uc_header_id number) IS
29   SELECT u.object_version_number,
30          c.object_version_number
31     FROM ahl_unit_config_headers u,
32          csi_item_instances c
33    WHERE u.unit_config_header_id = c_uc_header_id
34      AND u.csi_item_instance_id = c.instance_id
35      AND trunc(nvl(u.active_end_date, SYSDATE+1)) > trunc(SYSDATE);
36 
37 BEGIN
38   --Initialize API return status to success
39   x_return_status := FND_API.G_RET_STS_SUCCESS;
40 
41   --Standard Start of API savepoint
42   SAVEPOINT process_uc_header;
43 
44   --Standard call to check for call compatibility.
45   IF NOT FND_API.compatible_api_call(
46     l_api_version,
47     p_api_version,
48     l_api_name,
49     G_PKG_NAME)
50   THEN
51     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
52   END IF;
53 
54   --Initialize message list if p_init_msg_list is set to TRUE.
55   IF FND_API.to_boolean(p_init_msg_list) THEN
56     FND_MSG_PUB.initialize;
57   END IF;
58 
59   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
60 	FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
61                    'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name||': Begin API',
62 			       'At the start of the procedure');
63   END IF;
64 
65   --Validate p_dml_flag is one of 'C', 'U' or 'D', where
66   --'C','U','D' refer to 'CREATE','UPDATE','DELETE(EXPIRE)' respectively
67   IF (p_dml_flag NOT IN ('C', 'U', 'D')) THEN
68     FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
69     FND_MESSAGE.set_token('NAME', 'dml_flag');
70     FND_MESSAGE.set_token('VALUE', p_dml_flag);
71     FND_MSG_PUB.add;
72     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
73   END IF;
74 
75   IF p_dml_flag = 'C' THEN
76     IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
77 	  FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
78                    'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
79 			       ': before calling ahl_uc_unitconfig_pvt.create_uc_header');
80     END IF;
81     ahl_uc_unitconfig_pvt.create_uc_header(
82         p_api_version           => 1.0,
83         p_init_msg_list         => FND_API.G_FALSE,
84         p_commit                => FND_API.G_FALSE,
85         p_validation_level      => FND_API.G_VALID_LEVEL_FULL,
86         p_module_type           => NULL,
87         x_return_status         => l_return_status,
88         x_msg_count             => l_msg_count,
89         x_msg_data              => l_msg_data,
90         p_x_uc_header_rec       => p_x_uc_header_rec);
91   ELSIF p_dml_flag = 'U' THEN
92     IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
93 	  FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
94                    'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
95 			       ': before calling ahl_uc_unitconfig_pvt.update_uc_header');
96     END IF;
97     ahl_uc_unitconfig_pvt.update_uc_header(
98         p_api_version           => 1.0,
99         p_init_msg_list         => FND_API.G_FALSE,
100         p_commit                => FND_API.G_FALSE,
101         p_validation_level      => FND_API.G_VALID_LEVEL_FULL,
102         p_module_type           => NULL,
103         x_return_status         => l_return_status,
104         x_msg_count             => l_msg_count,
105         x_msg_data              => l_msg_data,
106         p_x_uc_header_rec       => p_x_uc_header_rec,
107         p_uc_instance_rec       => NULL);
108   ELSIF p_dml_flag = 'D' THEN
109     IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
110 	  FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
111                    'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name,
112 			       ': before calling ahl_uc_unitconfig_pvt.delete_uc_header');
113     END IF;
114 
115     --Get the object_version_number of the uc_header and csi instance record
116     OPEN get_ovns(p_x_uc_header_rec.uc_header_id);
117     FETCH get_ovns INTO l_uc_header_ovn, l_csi_instance_ovn;
118     IF get_ovns%NOTFOUND THEN
119       FND_MESSAGE.set_name('AHL','AHL_UC_API_PARAMETER_INVALID');
120       FND_MESSAGE.set_token('NAME', 'uc_header_id');
121       FND_MESSAGE.set_token('VALUE', p_x_uc_header_rec.uc_header_id);
122       FND_MSG_PUB.add;
123       CLOSE get_ovns;
124       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
125     END IF;
126     CLOSE get_ovns;
127     ahl_uc_unitconfig_pvt.delete_uc_header(
128         p_api_version           => 1.0,
129         p_init_msg_list         => FND_API.G_FALSE,
130         p_commit                => FND_API.G_FALSE,
131         p_validation_level      => FND_API.G_VALID_LEVEL_FULL,
132         x_return_status         => l_return_status,
133         x_msg_count             => l_msg_count,
134         x_msg_data              => l_msg_data,
135         p_uc_header_id          => p_x_uc_header_rec.uc_header_id,
136         p_object_version_number => l_uc_header_ovn,
137         p_csi_instance_ovn      => l_csi_instance_ovn);
138   END IF;
139 
140   --Check the return status after calling private APIs
141   IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
142     RAISE FND_API.G_EXC_ERROR;
143   ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
144     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
145   END IF;
146 
147   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
148 	FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
149                    'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name||': After normal execution','At the end of the procedure');
150   END IF;
151 
152   -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
153   l_msg_count := FND_MSG_PUB.count_msg;
154   IF l_msg_count > 0 THEN
155     RAISE FND_API.G_EXC_ERROR;
156   END IF;
157   -- Perform the Commit (if requested)
158   IF FND_API.to_boolean( p_commit ) THEN
159     COMMIT;
160   END IF;
161   -- Count and Get messages (optional)
162   FND_MSG_PUB.count_and_get(
163     p_encoded  => FND_API.G_FALSE,
164     p_count    => x_msg_count,
165     p_data     => x_msg_data);
166 
167 EXCEPTION
168   WHEN FND_API.G_EXC_ERROR THEN
169     ROLLBACK TO process_uc_header;
170     x_return_status := FND_API.G_RET_STS_ERROR ;
171     FND_MSG_PUB.count_and_get(
172       p_encoded  => FND_API.G_FALSE,
173       p_count    => x_msg_count,
174       p_data     => x_msg_data);
175   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
176     ROLLBACK TO process_uc_header;
177     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
178     FND_MSG_PUB.count_and_get(
179       p_encoded  => FND_API.G_FALSE,
180       p_count    => x_msg_count,
181       p_data     => x_msg_data);
182   WHEN OTHERS THEN
183     ROLLBACK TO process_uc_header;
184     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
185     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
186     THEN
187       FND_MSG_PUB.add_exc_msg(
188         p_pkg_name         => G_PKG_NAME,
189         p_procedure_name   => l_api_name,
190         p_error_text       => SUBSTRB(SQLERRM,1,240));
191     END IF;
192     FND_MSG_PUB.count_and_get(
193       p_encoded  => FND_API.G_FALSE,
194       p_count    => x_msg_count,
195       p_data     => x_msg_data);
196 END process_uc_header;
197 
198 END AHL_UC_UNITCONFIG_PUB; -- Package Body