DBA Data[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;