[Home] [Help]
PACKAGE BODY: APPS.EAM_ASSET_LOG_PUB
Source
1 PACKAGE BODY EAM_ASSET_LOG_PUB AS
2 /* $Header: EAMPALGB.pls 120.8 2012/01/27 10:50:53 vchidura ship $ */
3
4 /*
5 --Start of comments
6 -- API name : EAM_ASSET_LOG_PUB
7 -- Type : Public
8 -- Function : Inserts Asset Log into EAM ASSET LOG Table
9 -- Pre-reqs : None.
10 */
11
12 PROCEDURE LOG_EVENT(
13 p_api_version IN number := 1.0,
14 p_init_msg_list IN varchar2 := fnd_api.g_false,
15 p_commit IN varchar2 := fnd_api.g_false,
16 p_validation_level IN number := fnd_api.g_valid_level_full,
17 p_event_date IN date := sysdate,
18 p_event_type IN varchar2,
19 p_event_id IN number,
20 p_organization_id IN number := null,
21 p_instance_id IN number := null,
22 p_instance_number IN varchar2 := null,
23 p_comments IN varchar2 := null,
24 p_reference IN varchar2 := null,
25 p_ref_id IN number,
26 p_operable_flag IN number := null,
27 p_reason_code IN number := null,
28 p_equipment_gen_object_id IN number := null,
29 p_resource_id IN number := null,
30 p_downcode IN number := null,
31 p_employee_id IN number := null,
32 p_department_id IN number := null,
33 p_expected_up_date IN date := null,
34 x_return_status OUT NOCOPY varchar2,
35 x_msg_count OUT NOCOPY number,
36 x_msg_data OUT NOCOPY varchar2)
37 IS
38 l_api_name CONSTANT varchar2(30) :='EAM_ASSET_LOG_PUB';
39 l_api_version CONSTANT number := 1.0;
40 l_association_id number;
41 l_validated boolean;
42 l_item_type number;
43 l_exists boolean;
44 l_instance_id number;
45 l_instance_number varchar2(30);
46 l_count number;
47 l_source_log_id number;
48 l_log_id number :=null;
49 l_equipment_gen_object_id number;
50 l_organization_id number :=null;
51
52 CURSOR cresid IS
53 SELECT instance_id, instance_number
54 FROM csi_item_instances
55 WHERE equipment_gen_object_id = nvl(p_equipment_gen_object_id, equipment_gen_object_id) ;
56
57 CURSOR corgid IS
58 SELECT mp.maint_organization_id
59 FROM csi_item_instances cii, mtl_parameters mp
60 WHERE cii.equipment_gen_object_id = nvl(p_equipment_gen_object_id, cii.equipment_gen_object_id) AND
61 p_event_date BETWEEN active_start_date AND
62 NVL(active_end_date, SYSDATE) AND
63 cii.last_vld_organization_id = mp.organization_id;
64
65 BEGIN
66 /* Standard Start of API savepoint */
67 SAVEPOINT EAM_ASSET_LOG_PUB_SV;
68
69 /* Standard call to check for call compatibility. */
70 IF NOT FND_API.Compatible_API_Call
71 ( l_api_version ,
72 p_api_version ,
73 l_api_name ,
74 G_PKG_NAME
75 )
76 THEN
77 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
78 END IF;
79
80 /* Initialize message list if p_init_msg_list is set to TRUE. */
81 IF FND_API.to_Boolean( p_init_msg_list ) THEN
82 FND_MSG_PUB.initialize;
83 END IF;
84
85 /* Initialize API return status to success */
86 x_return_status := FND_API.G_RET_STS_SUCCESS;
87
88 /* API body */
89
90 /* Start validation calls */
91 /* Validation to prevent System Events Log through Public API calls */
92 IF
93 (p_event_type is null OR p_event_type NOT IN ('EAM_USER_EVENTS', 'EAM_OPERATIONAL_EVENTS'))
94 THEN
95 -- fnd_msg_pub.eventtype;
96 fnd_message.set_name
97 ( application => 'EAM'
98 , name => 'EAM_EVENT_TYPE_INVALID'
99 );
100 fnd_msg_pub.add;
101 x_return_status:= fnd_api.g_ret_sts_error;
102 fnd_msg_pub.count_and_get
103 ( p_count => x_msg_count,
104 p_data => x_msg_data
105 );
106 return;
107 END IF;
108 /* End validation calls */
109
110 -- Default organization_id
111 IF p_equipment_gen_object_id IS NULL THEN
112 l_organization_id := p_organization_id;
113 ELSE
114 OPEN corgid;
115 FETCH corgid INTO l_organization_id;
116 IF corgid%NOTFOUND THEN
117 l_organization_id:=null;
118 END IF;
119 CLOSE corgid;
120 END IF;
121
122 /* For Multiple Record Situation*/
123
124 BEGIN
125 SELECT 1 INTO l_count
126 FROM csi_item_instances
127 WHERE equipment_gen_object_id = p_equipment_gen_object_id;
128
129 EXCEPTION
130 WHEN NO_DATA_FOUND THEN
131 l_count := 0;
132 WHEN TOO_MANY_ROWS THEN
133 l_count := 2;
134 END;
135
136
137 IF l_count = 0 THEN
138 eam_asset_log_pvt.insert_row(
139 p_event_date => p_event_date,
140 p_event_type => p_event_type,
141 p_event_id => p_event_id,
142 p_organization_id => l_organization_id,
143 p_instance_id => p_instance_id,
144 p_comments => p_comments,
145 p_reference => p_reference,
146 p_ref_id => p_ref_id,
147 p_operable_flag => p_operable_flag,
148 p_reason_code => p_reason_code,
149 p_resource_id => p_resource_id,
150 p_equipment_gen_object_id => p_equipment_gen_object_id,
151 p_instance_number => p_instance_number,
152 p_downcode => p_downcode,
153 p_expected_up_date => p_expected_up_date,
154 p_employee_id => p_employee_id,
155 p_department_id => p_department_id,
156 x_return_status => x_return_status,
157 x_msg_count => x_msg_count,
158 x_msg_data => x_msg_data
159 );
160 END IF;
161
162 IF l_count > 0 THEN
163 -- insert into log table with out asset id context and store the log id generated;
164
165 SELECT eam_asset_log_s.NEXTVAL INTO l_log_id FROM DUAL;
166
167 eam_asset_log_pvt.insert_row
168 (p_log_id => l_log_id,
169 p_event_type => p_event_type,
170 p_event_id => p_event_id,
171 p_organization_id => l_organization_id,
172 p_instance_id => p_instance_id,
173 p_comments => p_comments,
174 p_reference => p_reference,
175 p_ref_id => p_ref_id,
176 p_operable_flag => p_operable_flag,
177 p_reason_code => p_reason_code,
178 p_resource_id => p_resource_id,
179 p_equipment_gen_object_id => p_equipment_gen_object_id,
180 p_source_log_id => null,
181 p_expected_up_date => p_expected_up_date,
182 p_employee_id => p_employee_id,
183 p_department_id => p_department_id,
184 x_return_status => x_return_status,
185 x_msg_count => x_msg_count,
186 x_msg_data => x_msg_data
187 );
188
189
190
191 FOR l_cresid IN cresid LOOP
192 l_instance_id := l_cresid.instance_id;
193 l_instance_number := l_cresid.instance_number;
194
195 -- Default organization_id
196 IF p_equipment_gen_object_id IS NULL THEN
197 l_organization_id := p_organization_id;
198 ELSE
199 OPEN corgid;
200 FETCH corgid INTO l_organization_id;
201 IF corgid%NOTFOUND THEN
202 l_organization_id:=null;
203 END IF;
204 CLOSE corgid;
205 END IF;
206
207 IF x_return_status = fnd_api.g_ret_sts_success THEN
208 IF l_log_id IS NOT NULL THEN
209 l_equipment_gen_object_id := NULL;
210 ELSE
211 l_equipment_gen_object_id := p_equipment_gen_object_id;
212 END IF;
213
214 eam_asset_log_pvt.insert_row
215 ( p_event_date => p_event_date,
216 p_event_type => p_event_type,
217 p_event_id => p_event_id,
218 p_organization_id => l_organization_id,
219 p_instance_id => l_instance_id,
220 p_comments => p_comments,
221 p_reference => p_reference,
222 p_ref_id => p_ref_id,
223 p_operable_flag => p_operable_flag,
224 p_reason_code => p_reason_code,
225 p_resource_id => p_resource_id,
226 p_equipment_gen_object_id => l_equipment_gen_object_id,
227 p_source_log_id => l_log_id,
228 p_instance_number => l_instance_number,
229 p_downcode => p_downcode,
230 p_expected_up_date => p_expected_up_date,
231 p_employee_id => p_employee_id,
232 p_department_id => p_department_id,
233 x_return_status => x_return_status,
234 x_msg_count => x_msg_count,
235 x_msg_data => x_msg_data
236 );
237 END IF;
238
239 /* For Multiple Record Situation*/
240
241 END LOOP;
242
243 END IF; --l_count > 0
244
245 /* Standard check of p_commit. */
246 IF FND_API.TO_BOOLEAN( P_COMMIT ) THEN
247 COMMIT WORK;
248 END IF;
249 -- Standard call to get message count and if count is 1, get message info.
250 FND_MSG_PUB.GET
251 ( p_msg_index_out => x_msg_count ,
252 p_data => x_msg_data
253 );
254
255 EXCEPTION
256 WHEN FND_API.G_EXC_ERROR THEN
257 ROLLBACK TO EAM_ASSET_LOG_PUB_SV;
258 x_return_status := FND_API.G_RET_STS_ERROR ;
259 FND_MSG_PUB.Get
260 ( p_msg_index_out => x_msg_count ,
261 p_data => x_msg_data
262 );
263
264 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
265 ROLLBACK TO EAM_ASSET_LOG_PUB_SV;
266 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
267 FND_MSG_PUB.get
268 ( p_msg_index_out => x_msg_count ,
269 p_data => x_msg_data
270 );
271
272 WHEN OTHERS THEN
273 ROLLBACK TO EAM_ASSET_LOG_PUB_SV;
274 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
275
276 IF FND_MSG_PUB.Check_Msg_Level
277 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
278 THEN
279 FND_MSG_PUB.Add_Exc_Msg
280 ( G_PKG_NAME ,
281 l_api_name
282 );
283 END IF;
284
285 FND_MSG_PUB.get
286 ( p_msg_index_out => x_msg_count ,
287 p_data => x_msg_data
288 );
289
290 END LOG_EVENT;
291
292 END EAM_ASSET_LOG_PUB;