DBA Data[Home] [Help]

PACKAGE BODY: APPS.EDR_EVIDENCESTORE_PUB

Source


1 PACKAGE body EDR_EvidenceStore_PUB AS
2 /* $Header: EDRPEVRB.pls 120.0.12000000.1 2007/01/18 05:54:25 appldev ship $  */
3 
4 -- Global variables
5 G_PKG_NAME CONSTANT varchar2(100) := 'EDR_EvidenceStore_PUB';
6 
7 
8 -- --------------------------------------
9 -- IN Parameters common to all APIs
10 --	p_api_version	NUMBER		version num param compared with local version num
11 --	x_return_status	VARCHAR2	return status indicates the final state of API
12 --	x_msg_count	NUMBER		message count
13 --	x_msg_data	VARCHAR2	message stack
14 -- ----------------------------------------
15 -- API name 	: Open_Document
16 -- Type		: Public
17 -- Pre-reqs	: None
18 -- Function	: create a document instance for signature
19 --		: and can associate signatures before closing the docuemnt
20 -- Parameters
21 -- IN	: p_psig_xml		CLOB 		[null] source xml
22 --	: p_psig_document	CLOB 		[null] source document
23 --	: p_psig_documentFormat	VARCHAR2	[null] source document format
24 --	: p_psig_requester	VARCHAR2	eSig requester user name
25 --	: p_psig_source		VARCHAR2 	[null] eSig source platform (DB, Form, sswa)
26 --	: p_event_name		VARCHAR2 	[null] eSig event name
27 --	: p_event_key		VARCHAR2 	[null] eSig event key
28 --	: p_wf_notif_id		NUMBER 		[null] workflow notification id
29 -- OUT	: x_document_id		NUMBER		opened document id
30 -- Versions	: 1.0	17-Jul-03	created from edr_psig.openDocument
31 -- ---------------------------------------
32 
33 PROCEDURE Open_Document	(
34 	p_api_version		IN 	NUMBER,
35 	p_init_msg_list		IN 	VARCHAR2,
36 	p_commit		IN 	VARCHAR2,
37 	x_return_status		OUT 	NOCOPY VARCHAR2,
38 	x_msg_count		OUT	NOCOPY NUMBER,
39 	x_msg_data		OUT	NOCOPY VARCHAR2,
40 	p_psig_xml    		IN 	CLOB,
41        	p_psig_document  	IN 	CLOB,
42         p_psig_documentFormat  	IN 	VARCHAR2,
43         p_psig_REQUESTER	IN 	VARCHAR2,
44         p_psig_SOURCE    	IN 	VARCHAR2,
45         P_EVENT_NAME  		IN 	VARCHAR2,
46         P_EVENT_KEY  		IN 	VARCHAR2,
47         p_wf_notif_id           IN 	NUMBER,
48         x_document_id          	OUT 	NOCOPY NUMBER )
49 IS
50 	l_api_version CONSTANT NUMBER := 1.0;
51 	l_api_name CONSTANT VARCHAR2(50) := 'Open_Document';
52 	l_error_code 	NUMBER;
53 	l_error_mesg	VARCHAR2(1000);
54 BEGIN
55     -- Standard call to check for call compatibility
56     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
57     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
58     END IF;
59 
60     -- Initialize message list if the caller asks me to do so
61     IF FND_API.to_Boolean( p_init_msg_list ) THEN
62 	FND_MSG_PUB.initialize;
63     END IF;
64 
65     --  Initialize API return status to success
66     x_return_status := FND_API.G_RET_STS_SUCCESS;
67 
68     	edr_psig.openDocument( 	P_PSIG_XML 		=> p_psig_xml,
69 				P_PSIG_DOCUMENT		=> p_psig_document,
70          			P_PSIG_DOCUMENTFORMAT	=> p_psig_documentFormat,
71          			P_PSIG_REQUESTER	=> p_psig_REQUESTER,
72          			P_PSIG_SOURCE 		=> p_psig_SOURCE,
73          			P_EVENT_NAME 		=> P_EVENT_NAME,
74          			P_EVENT_KEY  		=> P_EVENT_KEY,
75          			p_WF_NID     		=> p_wf_notif_id,
76          			P_DOCUMENT_ID  		=> x_document_id,
77          			P_ERROR        		=> l_error_code,
78          			P_ERROR_MSG  		=> l_error_mesg );
79        IF l_error_code > 0  THEN		-- l_error_code = 21000 refers to TIMEZONE
80 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
81 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
82 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
83 	   	fnd_msg_pub.Add;
84 	   	raise fnd_api.G_EXC_ERROR;
85        END IF;
86     -- fetch the message off the dictionary stack and add to API message list
87     -- would only add the last one message in the above api call
88     -- need to do this in the above api after each fnd_message.set_name/set_token
89     FND_MSG_PUB.Add;
90 
91     IF  FND_API.To_Boolean( p_commit )  THEN
92 	COMMIT WORK;
93     END IF;
94     -- Standard call to get message count, and if count is 1, get message info
95     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
96 
97 EXCEPTION
98     WHEN FND_API.G_EXC_ERROR THEN
99 	x_return_status := FND_API.G_RET_STS_ERROR ;
100 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
101     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
102 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
103 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
104     WHEN OTHERS THEN
105 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
106 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
107 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
108 	END IF;
109 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
110 END Open_Document;
111 
112 
113 -- --------------------------------------
114 -- API name 	: Change_Document_Status
115 -- Type		: Public
116 -- Pre-reqs	: None
117 -- Function	: Manually change the status of a document
118 -- Parameters
119 -- IN	:	p_document_id   NUMBER		the document id
120 --		p_status	VARCHAR2	new document status
121 -- Versions	: 1.0	17-Jul-03	created from edr_psig.ChangeDocumentStatus
122 -- ---------------------------------------
123 
124 PROCEDURE Change_DocumentStatus  (
125 	p_api_version		IN 	NUMBER,
126 	p_init_msg_list		IN 	VARCHAR2,
127 	p_commit		IN 	VARCHAR2,
128 	x_return_status		OUT 	NOCOPY VARCHAR2,
129 	x_msg_count		OUT	NOCOPY NUMBER,
130 	x_msg_data		OUT	NOCOPY VARCHAR2,
131         p_document_id          	IN  	NUMBER,
132         p_document_status  	IN 	VARCHAR2  )
133 IS
134 	l_count		NUMBER;
135 	l_api_name CONSTANT VARCHAR2(50) := 'Change_DocumentStatus';
136 	l_api_version CONSTANT NUMBER := 1.0;
137 	l_error_code 	NUMBER;
138 	l_error_mesg	VARCHAR2(1000);
139 BEGIN
140     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
141     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
142     END IF;
143 
144     -- Initialize message list if the caller asks me to do so
145     IF FND_API.to_Boolean( p_init_msg_list ) THEN
146 	FND_MSG_PUB.initialize;
147     END IF;
148 
149     --  Initialize API return status to success
150     x_return_status := FND_API.G_RET_STS_SUCCESS;
151 
152     	edr_psig.changeDocumentStatus(
153 				P_DOCUMENT_ID  	=> p_document_id,
154 				p_status	=> p_document_status,
155          			P_ERROR        	=> l_error_code,
156          			P_ERROR_MSG  	=> l_error_mesg );
157 
158 	   IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
159 	   	fnd_message.Set_Name('EDR', 'EDR_PLS_STDMSG_GENERATED' );
160 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
161 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
162 	   	fnd_msg_pub.Add;
163             raise fnd_api.G_EXC_ERROR;
164 	   END IF;
165 
166     IF  FND_API.To_Boolean( p_commit )  THEN
167 	COMMIT WORK;
168     END IF;
169     FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data );
170 
171 EXCEPTION
172     WHEN FND_API.G_EXC_ERROR THEN
173 	x_return_status := FND_API.G_RET_STS_ERROR ;
174 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
175     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
176 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
177 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
178     WHEN OTHERS THEN
179 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
180 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
181 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
182 	END IF;
183 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
184 END Change_DocumentStatus;
185 
186 
187 -- --------------------------------------
188 -- API name 	: Update_Document
189 -- Type		: Public
190 -- Pre-reqs	: None
191 -- Function	: Update a document for its xml/docu/requester etc
192 -- Parameters
193 -- IN	: DOCUMENT_ID		NUMBER		id of the document to update
194 --	: PSIG_XML       	CLOB		the xml to set
195 --	: PSIG_DOCUMENT  	CLOB		the document to set
196 --	: PSIG_DOCUMENTFORMAT	VARCHAR2	the document parameter format
197 --	: PSIG_REQUESTER	VARCHAR2	the requester for the update
198 --	: PSIG_SOURCE    	VARCHAR2	[null] the source of the update (DB, FORM, SSWA)
199 --	: EVENT_NAME  		VARCHAR2	[null] the event name to update
200 --	: EVENT_KEY 		VARCHAR2	[null] the event key to update
201 --	: p_wf_notif_id		NUMBER		[null] the workflow notifcation id
202 -- Versions	: 1.0	17-Jul-03	created from edr_psig.UpdateDocument
203 -- ---------------------------------------
204 
205 PROCEDURE Update_Document  (
206 	p_api_version		IN 	NUMBER,
207 	p_init_msg_list		IN 	VARCHAR2,
208 	p_commit		IN 	VARCHAR2,
209 	x_return_status		OUT 	NOCOPY VARCHAR2,
210 	x_msg_count		OUT	NOCOPY NUMBER,
211 	x_msg_data		OUT	NOCOPY VARCHAR2,
212         P_DOCUMENT_ID           IN 	NUMBER,
213  	P_PSIG_XML    		IN 	CLOB DEFAULT NULL,
214        	P_PSIG_DOCUMENT  	IN 	CLOB DEFAULT NULL,
215         P_PSIG_DOCUMENTFORMAT   IN 	VARCHAR2 DEFAULT NULL,
216         P_PSIG_REQUESTER	IN 	VARCHAR2,
217         P_PSIG_SOURCE    	IN 	VARCHAR2 DEFAULT NULL,
218         P_EVENT_NAME  		IN 	VARCHAR2 DEFAULT NULL,
219         P_EVENT_KEY  		IN 	VARCHAR2 DEFAULT NULL,
220         p_wf_notif_ID           IN 	NUMBER   DEFAULT NULL  )
221 IS
222 	l_api_name CONSTANT VARCHAR2(50) := 'Update_Document';
223 	l_api_version CONSTANT NUMBER := 1.0;
224 	l_error_code 	NUMBER;
225 	l_error_mesg	VARCHAR2(1000);
226 BEGIN
227     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
228     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
229     END IF;
230 
231     -- Initialize message list if the caller asks me to do so
232     IF FND_API.to_Boolean( p_init_msg_list ) THEN
233 	FND_MSG_PUB.initialize;
234     END IF;
235 
236     --  Initialize API return status to success
237     x_return_status := FND_API.G_RET_STS_SUCCESS;
238 
239     	edr_psig.updateDocument( P_DOCUMENT_ID  	=> p_document_id,
240          			P_PSIG_XML 		=> p_psig_xml,
241 				P_PSIG_DOCUMENT		=> p_psig_document,
242          			P_PSIG_DOCUMENTFORMAT	=> p_psig_documentFormat,
243          			P_PSIG_REQUESTER	=> p_psig_REQUESTER,
244          			P_PSIG_SOURCE 		=> p_psig_SOURCE,
245          			P_EVENT_NAME 		=> P_EVENT_NAME,
246          			P_EVENT_KEY  		=> P_EVENT_KEY,
247          			p_WF_NID     		=> p_wf_notif_id,
248          			P_ERROR        		=> l_error_code,
249          			P_ERROR_MSG  		=> l_error_mesg );
250 	   IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
251 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
252 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
253 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
254 	   	fnd_msg_pub.Add;
255 	   	raise fnd_api.G_EXC_ERROR;
256    	   END IF;
257     FND_MSG_PUB.Add;
258 
259     IF  FND_API.To_Boolean( p_commit )  THEN
260 	COMMIT WORK;
261     END IF;
262     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
263 
264 EXCEPTION
265     WHEN FND_API.G_EXC_ERROR THEN
266 	x_return_status := FND_API.G_RET_STS_ERROR ;
267 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
268     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
269 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
270 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
271     WHEN OTHERS THEN
272 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
273 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
274 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
275 	END IF;
276 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
277 END Update_Document;
278 
279 
280 -- --------------------------------------
281 -- API name 	: Post_DocumentParameters
282 -- Type		: Public
283 -- Pre-reqs	: None
284 -- Function	: Make a copy of eSignature notification
285 -- Parameters
286 -- IN	:	p_document_id   	NUMBER		source document id
287 --		p_parameters_tbl	params_table	a table of parameters to delete
288 -- Versions	: 1.0	17-Jul-03	created from edr_psig.PostDocumentParameters
289 -- ---------------------------------------
290 
291 PROCEDURE Post_DocumentParameters  (
292 	p_api_version		IN 	NUMBER,
293 	p_init_msg_list		IN 	VARCHAR2,
294 	p_commit		IN 	VARCHAR2,
295 	x_return_status		OUT 	NOCOPY VARCHAR2,
296 	x_msg_count		OUT	NOCOPY NUMBER,
297 	x_msg_data		OUT	NOCOPY VARCHAR2,
298    	p_document_id       	IN  	NUMBER,
299   	p_doc_parameters_tbl  	IN  	EDR_EvidenceStore_PUB.Params_tbl_type    )
300 IS
301 	l_api_name CONSTANT VARCHAR2(50) := 'Post_DocumentParameters';
302 	l_api_version CONSTANT NUMBER := 1.0;
303 	l_error_code 	NUMBER;
304 	l_error_mesg	VARCHAR2(1000);
305 	l_params_tbl	edr_psig.params_table;
306 	lth	NUMBER;
307 BEGIN
308     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
309     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
310     END IF;
311 
312     -- Initialize message list if the caller asks me to do so
313     IF FND_API.to_Boolean( p_init_msg_list ) THEN
314 	FND_MSG_PUB.initialize;
315     END IF;
316 
317     --  Initialize API return status to success
318     x_return_status := FND_API.G_RET_STS_SUCCESS;
319 
320 	FOR lth in 1..p_doc_parameters_tbl.COUNT  LOOP
321 	  l_params_tbl(lth) := p_doc_parameters_tbl(lth);
322 	END LOOP;
323     	edr_psig.postDocumentParameter(
324 			P_DOCUMENT_ID  		=> p_document_id,
325 			P_PARAMETERS		=> l_params_tbl,
326          		P_ERROR        		=> l_error_code,
327          		P_ERROR_MSG  		=> l_error_mesg );
328 	   IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
329 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
330 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
331 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
332 	   	fnd_msg_pub.Add;
333 	   	raise fnd_api.G_EXC_ERROR;
334    	   END IF;
335     IF  FND_API.To_Boolean( p_commit )  THEN
336 	COMMIT WORK;
337     END IF;
338     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
339 
340 EXCEPTION
341     WHEN FND_API.G_EXC_ERROR THEN
342 	x_return_status := FND_API.G_RET_STS_ERROR ;
343 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
344     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
345 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
346 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
347     WHEN OTHERS THEN
348 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
349 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
350 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
351 	END IF;
352 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
353 END Post_DocumentParameters;
354 
355 
356 -- --------------------------------------
357 
358 -- --------------------------------------
359 -- API name 	: Close_Document
360 -- Type		: Public
361 -- Pre-reqs	: None
362 -- Function	: Close a document
363 -- Parameters
364 -- IN	:	p_document_id   NUMBER		source document id
365 -- Versions	: 1.0	17-Jul-03	created from edr_psig.CloseDocument
366 -- ---------------------------------------
367 
368 PROCEDURE Close_Document  (
369 	p_api_version		IN 	NUMBER,
370 	p_init_msg_list		IN 	VARCHAR2,
371 	p_commit		IN 	VARCHAR2,
372 	x_return_status		OUT 	NOCOPY VARCHAR2,
373 	x_msg_count		OUT	NOCOPY NUMBER,
374 	x_msg_data		OUT	NOCOPY VARCHAR2,
375         p_document_id          	IN  	NUMBER )
376 IS
377 	l_api_name CONSTANT VARCHAR2(50) := 'Close_Document';
378 	l_api_version CONSTANT NUMBER := 1.0;
379 	l_error_code 	NUMBER;
380 	l_error_mesg	VARCHAR2(1000);
381         l_mesg_text  varchar2(4000);
382 BEGIN
383     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
384     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
385     END IF;
386 
390     END IF;
387     -- Initialize message list if the caller asks me to do so
388     IF FND_API.to_Boolean( p_init_msg_list ) THEN
389 	FND_MSG_PUB.initialize;
391 
392     --  Initialize API return status to success
393     x_return_status := FND_API.G_RET_STS_SUCCESS;
394 
395     	edr_psig.closeDocument( P_DOCUMENT_ID  		=> p_document_id,
396          			P_ERROR        		=> l_error_code,
397          			P_ERROR_MSG  		=> l_error_mesg );
398          IF l_error_code > 0  THEN
399                 fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
400 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
401 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
402 	   	fnd_msg_pub.Add;
403 	   	raise fnd_api.G_EXC_ERROR;
404 	 END IF;
405 
406     IF  FND_API.To_Boolean( p_commit )  THEN
407 	COMMIT WORK;
408     END IF;
409     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
410 
411 EXCEPTION
412     WHEN FND_API.G_EXC_ERROR THEN
413 	x_return_status := FND_API.G_RET_STS_ERROR ;
414         FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
415     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
416 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
417 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
418     WHEN OTHERS THEN
419 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
420 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
421 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
422 	END IF;
423 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
424 END Close_Document;
425 
426 
427 -- --------------------------------------
428 -- API name 	: Cancel_Document
429 -- Type		: Public
430 -- Pre-reqs	: None
431 -- Function	: Make a copy of eSignature notification
432 -- Parameters
433 -- IN	:	p_document_id   NUMBER	source document id
434 -- Versions	: 1.0	17-Jul-03	created from edr_psig.cancelDocument
435 -- ---------------------------------------
436 
437 PROCEDURE Cancel_Document  (
438 	p_api_version		IN 	NUMBER,
439 	p_init_msg_list		IN 	VARCHAR2,
440 	p_commit		IN 	VARCHAR2,
441 	x_return_status		OUT 	NOCOPY VARCHAR2,
442 	x_msg_count		OUT	NOCOPY NUMBER,
443 	x_msg_data		OUT	NOCOPY VARCHAR2,
444         p_document_id          	IN  	NUMBER )
445 
446 IS
447 	l_api_name CONSTANT VARCHAR2(50) := 'Cancel_Document';
448 	l_api_version CONSTANT NUMBER := 1.0;
449 	l_error_code 	NUMBER;
450 	l_error_mesg	VARCHAR2(1000);
451 BEGIN
452     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
453     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
454     END IF;
455 
456     -- Initialize message list if the caller asks me to do so
457     IF FND_API.to_Boolean( p_init_msg_list ) THEN
458 	FND_MSG_PUB.initialize;
459     END IF;
460 
461     --  Initialize API return status to success
462     x_return_status := FND_API.G_RET_STS_SUCCESS;
463 
464 
465     	edr_psig.cancelDocument( P_DOCUMENT_ID  	=> p_document_id,
466          			P_ERROR        		=> l_error_code,
467          			P_ERROR_MSG  		=> l_error_mesg );
468 
469 	   IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
470                	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
471 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
472 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
473 	   	fnd_msg_pub.Add;
474 	   	raise fnd_api.G_EXC_ERROR;
475 	   END IF;
476 
477     IF  FND_API.To_Boolean( p_commit )  THEN
478 	COMMIT WORK;
479     END IF;
480     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
481 
482 EXCEPTION
483     WHEN FND_API.G_EXC_ERROR THEN
484 	x_return_status := FND_API.G_RET_STS_ERROR ;
485 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
486     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
487 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
488 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
489     WHEN OTHERS THEN
490 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
491 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
492 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
493 	END IF;
494 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
495 END Cancel_Document;
496 
497 
498 -- --------------------------------------
499 -- API name 	: Request_Signature
500 -- Type		: Public
501 -- Pre-reqs	: None
502 -- Function	: Request the signature with detail information
503 -- Parameters
504 -- IN	: P_DOCUMENT_ID		NUMBER		source document id
505 --	: P_USER_NAME		VARCHAR2	request user name
506 --	: P_original_recipient	VARCHAR2	[null] original recipient of notification if transferred
507 --	: P_overriding_comment	varchar2	[null] user overriding comment if it's transferred
508 -- OUT	: x_signature_id	NUMBER		generated signature id
509 -- Versions	: 1.0	17-Jul-03	created from edr_psig.RequestSignature
510 -- ---------------------------------------
511 
512 PROCEDURE Request_Signature   (
513 	p_api_version		IN 	NUMBER,
514 	p_init_msg_list		IN 	VARCHAR2,
515 	p_commit		IN 	VARCHAR2,
516 	x_return_status		OUT 	NOCOPY VARCHAR2,
517 	x_msg_count		OUT	NOCOPY NUMBER,
518 	x_msg_data		OUT	NOCOPY VARCHAR2,
519       p_document_id        	IN 	NUMBER,
520 	p_user_name         	IN 	VARCHAR2,
524 
521       p_original_recipient  	IN 	VARCHAR2,
522       p_overriding_comment 	IN 	VARCHAR2,
523 	x_signature_id         	OUT 	NOCOPY NUMBER  )
525 IS
526 	l_api_name CONSTANT VARCHAR2(50) := 'Request_Signature';
527 	l_api_version CONSTANT NUMBER := 1.0;
528 	l_error_code 	NUMBER;
529 	l_error_mesg	VARCHAR2(1000);
530 BEGIN
531     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
532     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
533     END IF;
534 
535     -- Initialize message list if the caller asks me to do so
536     IF FND_API.to_Boolean( p_init_msg_list ) THEN
537 	FND_MSG_PUB.initialize;
538     END IF;
539 
540     --  Initialize API return status to success
541     x_return_status := FND_API.G_RET_STS_SUCCESS;
542 
543     	edr_psig.requestSignature( P_DOCUMENT_ID  	   => p_document_id,
544          			         P_USER_NAME  		   => p_user_name,
545          			         P_ORIGINAL_RECIPIENT    => p_original_recipient,
546          			         P_OVERRIDING_COMMENTS   => p_overriding_comment,
547          			         P_SIGNATURE_ID  	   => x_signature_id,
548          			         P_ERROR        	   => l_error_code,
549          			         P_ERROR_MSG  		   => l_error_mesg );
550 
551 	    IF l_error_code > 0  THEN
552 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
553 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
554 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
555 	   	fnd_msg_pub.Add;
556 	   	raise fnd_api.G_EXC_ERROR;
557 	    END IF;
558 
559 
560     IF  FND_API.To_Boolean( p_commit )  THEN
561 	COMMIT WORK;
562     END IF;
563     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
564 
565 EXCEPTION
566     WHEN FND_API.G_EXC_ERROR THEN
567       FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
568 	x_return_status := FND_API.G_RET_STS_ERROR ;
569       --FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
570     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
571 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
572 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
573     WHEN OTHERS THEN
574 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
575 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
576 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
577 	END IF;
578 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
579 END Request_Signature;
580 
581 
582 -- --------------------------------------
583 -- API name 	: Post_Signature
584 -- Type		: Public
585 -- Pre-reqs	: None
586 -- Function	:
587 -- Parameters
588 -- IN	: P_DOCUMENT_ID		NUMBER		source document id
589 --	: P_EVIDENCESTORE_ID	NUMBER 		source evidence store id
590 --	: P_USER_NAME          	VARCHAR2	posting user name
591 --	: P_USER_RESPONSE     	VARCHAR2	user response/comment
592 --	: P_ORIGINAL_RECIPIENT 	VARCHAR2	[null] original recipient of notification if transferred
593 --	: P_OVERRIDING_COMMENT	VARCHAR2	[null] user overriding comment if it's transferred notif
594 -- OUT	: P_SIGNATURE_ID  	NUMBER		generated signature id
595 -- Versions	: 1.0	17-Jul-03	created from edr_psig.PostSignature
596 -- ---------------------------------------
597 
598 PROCEDURE Post_Signature     (
599 	p_api_version		IN 	NUMBER,
600 	p_init_msg_list		IN 	VARCHAR2,
601 	p_commit		IN 	VARCHAR2,
602 	x_return_status		OUT 	NOCOPY VARCHAR2,
603 	x_msg_count		OUT	NOCOPY NUMBER,
604 	x_msg_data		OUT	NOCOPY VARCHAR2,
605         p_document_id         	IN 	NUMBER,
606 	p_evidenceStore_id  	IN 	VARCHAR2,
607         p_user_name          	IN 	VARCHAR2,
608    	p_user_response     	IN 	VARCHAR2,
609         p_original_recipient 	IN 	VARCHAR2,
610         p_overriding_comment	IN 	VARCHAR2,
611 	x_signature_id         	OUT 	NOCOPY NUMBER  )
612 
613 IS
614 	l_api_name CONSTANT VARCHAR2(50) := 'Post_Signature';
615 	l_api_version CONSTANT NUMBER := 1.0;
616 	l_error_code 	NUMBER;
617 	l_error_mesg	VARCHAR2(1000);
618 BEGIN
619     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
620     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
621     END IF;
622 
623     -- Initialize message list if the caller asks me to do so
624     IF FND_API.to_Boolean( p_init_msg_list ) THEN
625 	FND_MSG_PUB.initialize;
626     END IF;
627 
628     --  Initialize API return status to success
629     x_return_status := FND_API.G_RET_STS_SUCCESS;
630 
631     	edr_psig.postSignature( P_DOCUMENT_ID  		=> p_document_id,
632          			P_EVIDENCE_STORE_ID  	=> p_evidenceStore_id,
633          			P_USER_NAME  		=> p_user_name,
634          			P_USER_RESPONSE  	=> p_user_response,
635          			P_ORIGINAL_RECIPIENT  	=> p_original_recipient,
636          			P_OVERRIDING_COMMENTS  	=> p_overriding_comment,
637          			P_SIGNATURE_ID  	=> x_signature_id,
638          			P_ERROR        		=> l_error_code,
639          			P_ERROR_MSG  		=> l_error_mesg );
640 
641 	   IF l_error_code > 0  THEN
642 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
643 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
644 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
645 	   	fnd_msg_pub.Add;
646 	   	raise fnd_api.G_EXC_ERROR;
647    	   END IF;
651     END IF;
648 
649     IF  FND_API.To_Boolean( p_commit )  THEN
650 	COMMIT WORK;
652     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
653 
654 EXCEPTION
655     WHEN FND_API.G_EXC_ERROR THEN
656 	x_return_status := FND_API.G_RET_STS_ERROR ;
657 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
658     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
659 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
660 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
661     WHEN OTHERS THEN
662 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
663 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
664 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
665 	END IF;
666 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
667 END Post_Signature;
668 
669 
670 -- --------------------------------------
671 -- API name 	: Post_SignatureParameters
672 -- Type		: Public
673 -- Pre-reqs	: None
674 -- Function	: Make a copy of eSignature notification
675 -- Parameters
676 -- IN	:	p_signature_id   	NUMBER		source signature id
677 --		p_parameters_tbl	params_table	the parameters to post as a table
678 -- Versions	: 1.0	17-Jul-03	created from edr_psig.PostSignatureParameters
679 -- ---------------------------------------
680 
681 PROCEDURE Post_SignatureParameters  (
682 	p_api_version		IN 	NUMBER,
683 	p_init_msg_list		IN 	VARCHAR2,
684 	p_commit		IN 	VARCHAR2,
685 	x_return_status		OUT 	NOCOPY VARCHAR2,
686 	x_msg_count		OUT	NOCOPY NUMBER,
687 	x_msg_data		OUT	NOCOPY VARCHAR2,
688       	p_signature_id         	IN  	NUMBER,
689      	p_sig_parameters_tbl  	IN  	EDR_EvidenceStore_PUB.Params_tbl_type    )
690 IS
691 	l_api_name CONSTANT VARCHAR2(50) := 'Post_SignatureParameters';
692 	l_api_version CONSTANT NUMBER := 1.0;
693 	l_error_code 	NUMBER;
694 	l_error_mesg	VARCHAR2(1000);
695 	l_params_tbl	edr_psig.Params_Table;
696 	lth	NUMBER;
697 BEGIN
698     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
699     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
700     END IF;
701 
702     -- Initialize message list if the caller asks me to do so
703     IF FND_API.to_Boolean( p_init_msg_list ) THEN
704 	FND_MSG_PUB.initialize;
705     END IF;
706 
707     --  Initialize API return status to success
708     x_return_status := FND_API.G_RET_STS_SUCCESS;
709 
710 
711 	FOR lth in 1..p_sig_parameters_tbl.COUNT  LOOP
712 	  l_params_tbl(lth) := p_sig_parameters_tbl(lth);
713 	END LOOP;
714     	edr_psig.postSignatureParameter (
715 			P_SIGNATURE_ID  	=> p_signature_id,
716          		P_PARAMETERS  		=> l_params_tbl,
717          		P_ERROR        		=> l_error_code,
718          		P_ERROR_MSG  		=> l_error_mesg );
719 
720 	   IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
721 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
722 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
723 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
724 	   	fnd_msg_pub.Add;
725 	   	raise fnd_api.G_EXC_ERROR;
726    	   END IF;
727     IF  FND_API.To_Boolean( p_commit )  THEN
728 	COMMIT WORK;
729     END IF;
730     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
731 
732 EXCEPTION
733     WHEN FND_API.G_EXC_ERROR THEN
734 	x_return_status := FND_API.G_RET_STS_ERROR ;
735 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
736     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
737 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
738 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
739     WHEN OTHERS THEN
740 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
741 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
742 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
743 	END IF;
744 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
745 END Post_SignatureParameters;
746 
747 
748 
749 -- --------------------------------------
750 -- API name 	: Get_DocumentDetails
751 -- Type		: Public
752 -- Pre-reqs	: None
753 -- Function	: Make a copy of eSignature notification
754 -- Parameters
755 -- IN	:	p_document_id 		NUMBER		source document id
756 -- OUT	:	x_document_rec		Document_rec	document details as a record
757 --		x_document_params_tbl	params_table	document parameters as a table
758 --		x_signatures_tbl	Signature_tbl	all signatures as a table on this document
759 -- Versions	: 1.0	17-Jul-03	created from edr_psig.GetDocumentDetails
760 -- ---------------------------------------
761 
762 PROCEDURE Get_DocumentDetails  (
763 	p_api_version		IN 	NUMBER,
764 	p_init_msg_list		IN 	VARCHAR2,
765 	x_return_status		OUT 	NOCOPY VARCHAR2,
766 	x_msg_count		OUT	NOCOPY NUMBER,
767 	x_msg_data		OUT	NOCOPY VARCHAR2,
768      	p_document_id          	IN  	NUMBER,
769      	x_document_rec      	OUT 	NOCOPY edr_psig_documents%ROWTYPE,
770         x_doc_parameters_tbl 	OUT 	NOCOPY EDR_EvidenceStore_PUB.Params_tbl_type,
771 	x_signatures_tbl     	OUT 	NOCOPY EDR_EvidenceStore_PUB.Signature_tbl_type  )
772 IS
773 	l_api_name CONSTANT VARCHAR2(50) := 'Get_DocumentDetails';
774 	l_api_version CONSTANT NUMBER := 1.0;
778 	l_params_tbl	edr_psig.Params_Table;
775 	l_error_code 	NUMBER;
776 	l_error_mesg	VARCHAR2(1000);
777 	l_docDetl_rec	edr_psig.Document;
779 	l_sig_tbl	edr_psig.SignatureTable;
780 	lth	NUMBER;
781 BEGIN
782     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
783     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
784     END IF;
785 
786     -- Initialize message list if the caller asks me to do so
787     IF FND_API.to_Boolean( p_init_msg_list ) THEN
788 	FND_MSG_PUB.initialize;
789     END IF;
790 
791     --  Initialize API return status to success
792     x_return_status := FND_API.G_RET_STS_SUCCESS;
793 
794     	edr_psig.getDocumentDetails (
795 			P_DOCUMENT_ID  		=> p_document_id,
796          		P_DOCUMENT  		=> l_docDetl_rec,
797          		P_DOCPARAMS  		=> l_params_tbl,
798          		P_SIGNATURES  		=> l_sig_tbl,
799          		P_ERROR        		=> l_error_code,
800          		P_ERROR_MSG  		=> l_error_mesg );
801 	FOR lth in 1..l_params_tbl.COUNT  LOOP
802 	  x_doc_parameters_tbl(lth) := l_params_tbl(lth);
803 	END LOOP;
804 	FOR lth in 1..l_sig_tbl.COUNT  LOOP
805 	  x_signatures_tbl(lth) := l_sig_tbl(lth);
806 	END LOOP;
807 	x_document_rec.DOCUMENT_ID 	:= l_docDetl_rec.DOCUMENT_ID;
808 	x_document_rec.PSIG_XML 	:= l_docDetl_rec.PSIG_XML;
809 	x_document_rec.PSIG_DOCUMENT 	:= l_docDetl_rec.PSIG_DOCUMENT;
810 	x_document_rec.PSIG_DOCUMENTFORMAT := l_docDetl_rec.PSIG_DOCUMENTFORMAT;
811 	x_document_rec.PSIG_TIMESTAMP 	:= l_docDetl_rec.PSIG_TIMESTAMP;
812 	x_document_rec.PSIG_TIMEZONE 	:= l_docDetl_rec.PSIG_TIMEZONE;
813 	x_document_rec.DOCUMENT_REQUESTER  := l_docDetl_rec.DOCUMENT_REQUESTER;
814 	x_document_rec.PSIG_STATUS 	:= l_docDetl_rec.PSIG_STATUS;
815 	x_document_rec.PSIG_SOURCE 	:= l_docDetl_rec.PSIG_SOURCE;
816 	x_document_rec.EVENT_NAME 	:= l_docDetl_rec.EVENT_NAME;
817 	x_document_rec.EVENT_KEY 	:= l_docDetl_rec.EVENT_KEY;
818 	x_document_rec.PRINT_COUNT 	:= l_docDetl_rec.PRINT_COUNT;
819 	x_document_rec.CREATION_DATE 	:= l_docDetl_rec.CREATION_DATE;
820 	x_document_rec.CREATED_BY 	:= l_docDetl_rec.CREATED_BY;
821 	x_document_rec.LAST_UPDATE_DATE := l_docDetl_rec.LAST_UPDATE_DATE;
822 	x_document_rec.LAST_UPDATED_BY 	:= l_docDetl_rec.LAST_UPDATED_BY;
823 	x_document_rec.LAST_UPDATE_LOGIN := l_docDetl_rec.LAST_UPDATE_LOGIN;
824    IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
825 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
826 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
827 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
828 	   	fnd_msg_pub.Add;
829 	   	raise fnd_api.G_EXC_ERROR;
830    END IF;
831    FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
832 
833 EXCEPTION
834     WHEN FND_API.G_EXC_ERROR THEN
835 	x_return_status := FND_API.G_RET_STS_ERROR ;
836 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
837     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
838 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
839 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
840     WHEN OTHERS THEN
841 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
842 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
843 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
844 	END IF;
845 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
846 END Get_DocumentDetails;
847 
848 
849 
850 -- Bug 4135005 : Start
851 
852 -- --------------------------------------
853 -- API name 	: Get_SignatureDetails
854 -- Type		: Public
855 -- Pre-reqs	: None
856 -- Function	: To Return the Signature parameters
857 -- Parameters
858 -- IN	:	p_signature_id 		NUMBER		Signature id
859 -- OUT	:	x_signaturedetails	Signature	Signature details as a record
860 --		x_document_params_tbl	params_table	Signature parameters as a table
861 -- Versions	: 1.0	28-Jul-05	created from edr_psig.GetSignatureDetails
862 -- ---------------------------------------
863 
864 
865 
866  PROCEDURE GET_SignatureDetails (
867 	p_api_version		IN 	NUMBER,
868 	p_init_msg_list		IN 	VARCHAR2 default NULL,
869 	x_return_status		OUT 	NOCOPY VARCHAR2,
870 	x_msg_count		OUT	NOCOPY NUMBER,
871 	x_msg_data		OUT	NOCOPY VARCHAR2,
872         P_SIGNATURE_ID          IN      NUMBER DEFAULT NULL,
873         X_SIGNATUREDETAILS      OUT     NOCOPY EDR_PSIG_DETAILS%ROWTYPE,
874         X_SIGNATUREPARAMS       OUT     NOCOPY EDR_EvidenceStore_PUB.params_tbl_type  )
875 
876 	IS
877 	l_api_name CONSTANT VARCHAR2(50) := 'Get_SignatureDetails';
878 	l_api_version CONSTANT NUMBER := 1.0;
879 	l_error_code 	NUMBER;
880 	l_error_mesg	VARCHAR2(1000);
881 	l_signaturedetails  EDR_PSIG.Signature;
882 	l_signatureparams   EDR_PSIG.params_table;
883 	lth	NUMBER;
884 
885 	BEGIN
886 	    IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
887 	    THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
888 	    END IF;
889 
890 	    -- Initialize message list if the caller asks me to do so
891 	    IF FND_API.to_Boolean( p_init_msg_list ) THEN
892 		FND_MSG_PUB.initialize;
893 	    END IF;
894 
895 	    --  Initialize API return status to success
896 	    x_return_status := FND_API.G_RET_STS_SUCCESS;
897 
898 	  EDR_PSIG.getSignatureDetails
899           (
900            P_SIGNATURE_ID   => p_signature_id,
904            P_ERROR_MSG => l_error_mesg );
901 	   P_SIGNATUREDETAILS => l_signaturedetails,
902            P_SIGNATUREPARAMS => l_signatureparams,
903            P_ERROR => l_error_code,
905 
906 	   FOR lth in 1..l_signatureparams.COUNT  LOOP
907 	   X_SIGNATUREPARAMS(lth) := l_signatureparams(lth);
908 	   END LOOP;
909 
910            X_SIGNATUREDETAILS.SIGNATURE_ID := l_SIGNATUREDETAILS.SIGNATURE_ID;
911  	   X_SIGNATUREDETAILS.DOCUMENT_ID  := l_SIGNATUREDETAILS.DOCUMENT_ID;
912            X_SIGNATUREDETAILS.EVIDENCE_STORE_ID := l_SIGNATUREDETAILS.EVIDENCE_STORE_ID;
913            X_SIGNATUREDETAILS.USER_NAME  := l_SIGNATUREDETAILS.USER_NAME;
914            X_SIGNATUREDETAILS.USER_RESPONSE := l_SIGNATUREDETAILS.USER_RESPONSE;
915            X_SIGNATUREDETAILS.SIGNATURE_TIMESTAMP := l_SIGNATUREDETAILS.SIGNATURE_TIMESTAMP;
916            X_SIGNATUREDETAILS.SIGNATURE_TIMEZONE := l_SIGNATUREDETAILS.SIGNATURE_TIMEZONE;
917            X_SIGNATUREDETAILS.SIGNATURE_STATUS := l_SIGNATUREDETAILS.SIGNATURE_STATUS;
918            X_SIGNATUREDETAILS.CREATION_DATE := l_SIGNATUREDETAILS.CREATION_DATE;
919            X_SIGNATUREDETAILS.CREATED_BY := l_SIGNATUREDETAILS.CREATED_BY;
920            X_SIGNATUREDETAILS.LAST_UPDATE_DATE := l_SIGNATUREDETAILS.LAST_UPDATE_DATE;
921            X_SIGNATUREDETAILS.LAST_UPDATE_LOGIN := l_SIGNATUREDETAILS.LAST_UPDATE_LOGIN;
922            X_SIGNATUREDETAILS.LAST_UPDATED_BY := l_SIGNATUREDETAILS.LAST_UPDATED_BY;
923            X_SIGNATUREDETAILS.USER_DISPLAY_NAME := l_SIGNATUREDETAILS.USER_DISPLAY_NAME;
924 
925      IF l_error_code > 0  THEN		-- l_error_code = 21001 document closed or not exist
926 	   	fnd_message.Set_Name( 'EDR', 'EDR_PLS_STDMSG_GENERATED' );
927 	   	fnd_message.Set_Token( 'ERR_CODE', l_error_code );
928 	   	fnd_message.Set_Token( 'ERR_MESG', l_error_mesg );
929 	   	fnd_msg_pub.Add;
930 	   	raise fnd_api.G_EXC_ERROR;
931    END IF;
932    FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
933 
934    EXCEPTION
935     WHEN FND_API.G_EXC_ERROR THEN
936 	x_return_status := FND_API.G_RET_STS_ERROR ;
937 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
938     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
939 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
940 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
941     WHEN OTHERS THEN
942 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
943 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )  THEN
944 		FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
945 	END IF;
946 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
947 
948 END Get_SignatureDetails;
949 
950 
951 -- Bug 4135005 : End
952 
953 
954 
955 
956 
957 
958 
959 -- ----------------------------------------
960 -- API name 	: Capture_Signature
961 -- Type		: Public
962 -- Function	: capture the signature for single event and generate document id + signature id
963 -- Parameters
964 -- IN	: p_psig_xml		CLOB 	[null] source xml
965 --	: p_psig_document	CLOB 	[null] source document
966 --	: p_psig_documentFormat	VARCHAR2	source document format
967 --	: p_psig_requester	VARCHAR2	eSig requester user name
968 --	: p_psig_source		VARCHAR2 	eSig source platform (DB, Form, sswa)
969 --	: p_event_name		VARCHAR2 	eSig event name
970 --	: p_event_key		VARCHAR2 	eSig event key
971 --	: p_wf_notif_id		NUMBER 		workflow notification id
972 --	: p_doc_parameters_tbl	EDR_EvidenceStore_PUB.Params_tbl_type
973 --	: p_user_name		VARCHAR2
974 --	: p_original_recipient	VARCHAR2 	[null]
975 --	: p_overriding_comment	VARCHAR2 	[null]
976 --	: p_evidenceStore_id	NUMBER,
977 --	: p_user_response	VARCHAR2,
978 --	: p_sig_parameters_tbl
979 -- OUT	: x_document_id		NUMBER		generated document id
980 --	: x_signature_id	NUMBER		captured signature id
981 -- Versions	: 1.0	17-Jul-03	created
982 -- ---------------------------------------
983 
984 PROCEDURE Capture_Signature  (
985 	p_api_version		IN 	NUMBER,
986 	p_init_msg_list		IN 	VARCHAR2,
987 	p_commit		IN 	VARCHAR2,
988 	x_return_status		OUT 	NOCOPY VARCHAR2,
989 	x_msg_count		OUT	NOCOPY NUMBER,
990 	x_msg_data		OUT	NOCOPY VARCHAR2,
991 	p_psig_xml		IN 	CLOB,
992 	p_psig_document		IN 	CLOB,
993 	p_psig_docFormat	IN 	VARCHAR2,
994 	p_psig_requester	IN 	VARCHAR2,
995 	p_psig_source		IN 	VARCHAR2,
996 	p_event_name		IN 	VARCHAR2,
997 	p_event_key		IN 	VARCHAR2,
998 	p_wf_notif_id		IN 	NUMBER,
999 	x_document_id		OUT	NOCOPY NUMBER,
1000 	p_doc_parameters_tbl	IN	EDR_EvidenceStore_PUB.Params_tbl_type,
1001 	p_user_name		IN	VARCHAR2,
1002 	p_original_recipient	IN	VARCHAR2,
1003 	p_overriding_comment	IN	VARCHAR2,
1004 	x_signature_id		OUT	NOCOPY NUMBER,
1005 	p_evidenceStore_id	IN	NUMBER,
1006 	p_user_response		IN	VARCHAR2,
1007 	p_sig_parameters_tbl	IN	EDR_EvidenceStore_PUB.Params_tbl_type  )
1008 IS
1009     	l_api_name CONSTANT VARCHAR2(50)	:= 'Capture_Signature';
1010     	l_api_version	CONSTANT NUMBER	:= 1.0;
1011     	l_document_id	NUMBER;
1012     	l_signature_id	NUMBER;
1013 BEGIN
1014     IF NOT fnd_api.Compatible_API_Call ( l_api_version, p_api_version, l_api_name, G_PKG_NAME )
1015     THEN	RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
1016     END IF;
1017 
1018     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1019 	FND_MSG_PUB.initialize;
1020     END IF;
1021 
1022     x_return_status := FND_API.G_RET_STS_SUCCESS;
1023 
1024     Open_Document ( 	p_api_version, p_init_msg_list, p_commit, x_return_status, x_msg_count,
1025 			x_msg_data, p_psig_xml, p_psig_document, p_psig_docFormat,
1026 			p_psig_requester, p_psig_source, p_event_name, p_event_key,
1027 			p_wf_notif_id, x_document_id );
1028     l_document_id := x_document_id;
1029 
1030     Post_DocumentParameters ( 	p_api_version, p_init_msg_list, p_commit, x_return_status,
1031 				x_msg_count, x_msg_data, l_document_id, p_doc_parameters_tbl );
1032 
1033     Request_Signature ( p_api_version, p_init_msg_list, p_commit, x_return_status, x_msg_count,
1034 			x_msg_data, l_document_id, p_user_name, p_original_recipient,
1035 			p_overriding_comment, x_signature_Id );
1036     l_signature_id := x_signature_Id;
1037 
1038     Post_Signature ( 	p_api_version, p_init_msg_list, p_commit, x_return_status, x_msg_count,
1039 			x_msg_data, l_document_id, p_evidenceStore_id, p_user_name, p_user_response,
1040 			p_original_recipient, p_overriding_comment, x_signature_Id );
1041     l_signature_id := x_signature_Id;
1042 
1043     Post_SignatureParameters ( p_api_version, p_init_msg_list, p_commit, x_return_status,
1044 				x_msg_count, x_msg_data, l_signature_id, p_sig_parameters_tbl );
1045 
1046     Close_Document( 	p_api_version, p_init_msg_list, p_commit, x_return_status,
1047 			x_msg_count, x_msg_data, l_document_id );
1048 
1049     FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
1050 EXCEPTION
1051     WHEN FND_API.G_EXC_ERROR THEN
1052 	x_return_status := FND_API.G_RET_STS_ERROR ;
1053 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
1054     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1055 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1056 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
1057     WHEN OTHERS THEN
1058 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1059 	IF  FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1060 	THEN    FND_MSG_PUB.Add_Exc_Msg ( g_pkg_name, l_api_name );
1061 	END IF;
1062 	FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data );
1063 END Capture_Signature;
1064 
1065 
1066 END EDR_EvidenceStore_PUB;
1067