[Home] [Help]
PACKAGE BODY: APPS.XNP_XDP_PERF_BM_EVT_U
Source
1 PACKAGE BODY XNP_XDP_PERF_BM_EVT_U AS
2 PROCEDURE CREATE_MSG ( x_msg_header OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
3 x_msg_text OUT VARCHAR2,
4 x_error_code OUT NUMBER,
5 x_error_message OUT VARCHAR2,
6 p_sender_name IN VARCHAR2 DEFAULT NULL,
7 p_recipient_list IN VARCHAR2 DEFAULT NULL,
8 p_version IN NUMBER DEFAULT 1,
9 p_reference_id IN VARCHAR2 DEFAULT NULL,
10 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
11 p_order_id IN NUMBER DEFAULT NULL,
12 p_wi_instance_id IN NUMBER DEFAULT NULL,
13 p_fa_instance_id IN NUMBER DEFAULT NULL,
14 p_delay IN NUMBER DEFAULT NULL,
15 p_interval IN NUMBER DEFAULT NULL ) IS
16 e_MISSING_MANDATORY_DATA EXCEPTION ;
17 e_NO_DESTINATION EXCEPTION ;
18 l_xml_body VARCHAR2(32767) ;
19 l_xml_doc VARCHAR2(32767) ;
20 l_xml_header VARCHAR2(32767) ;
21 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
22 XNP$SUBSCRIPTION_TN VARCHAR2( 16000) ;
23 XNP$CUSTOMER_NAME VARCHAR2( 16000) ;
24 XNP$ADDRESS_LINE1 VARCHAR2( 16000) ;
25 XNP$ADDRESS_LINE2 VARCHAR2( 16000) ;
26 XNP$CITY VARCHAR2( 16000) ;
27 XNP$ZIP_CODE VARCHAR2( 16000) ;
28 XNP$SERVICE_TYPE VARCHAR2( 16000) ;
29 XNP$STATUS VARCHAR2( 16000) ;
30 XNP$CUSTOMER_TYPE VARCHAR2( 16000) ;
31 XNP$FEATURE_TYPE VARCHAR2( 16000) ;
32 BEGIN
33 x_error_code := 0 ;
34 x_error_message := NULL ;
35 XNP_XML_UTILS.initialize_doc ( ) ;
36 /*construct the XML header */
37 /* retreive the next message ID */
38 XNP_MESSAGE.get_sequence ( l_msg_header.message_id ) ;
39 IF (p_reference_id IS NULL) THEN
40 l_msg_header.reference_id := l_msg_header.message_id ;
41 ELSE
42 l_msg_header.reference_id := p_reference_id ;
43 END IF ;
44 /* append header parameters to make header */
45 XNP_XML_UTILS.write_element ( 'MESSAGE_ID',l_msg_header.message_id ) ;
46 XNP_XML_UTILS.write_leaf_element ( 'REFERENCE_ID',l_msg_header.reference_id ) ;
47 l_msg_header.opp_reference_id := p_opp_reference_id ;
48 XNP_XML_UTILS.write_leaf_element ( 'OPP_REFERENCE_ID',l_msg_header.opp_reference_id ) ;
49 l_msg_header.message_code := 'XDP_PERF_BM_EVT' ;
50 XNP_XML_UTILS.write_leaf_element ( 'MESSAGE_CODE',l_msg_header.message_code ) ;
51 l_msg_header.version := p_version ;
52 XNP_XML_UTILS.write_leaf_element ( 'VERSION',l_msg_header.version ) ;
53 l_msg_header.creation_date := SYSDATE ;
54 l_msg_header.recipient_name := p_recipient_list ;
55 XNP_XML_UTILS.write_element ( 'CREATION_DATE',l_msg_header.creation_date ) ;
56 l_msg_header.sender_name := p_sender_name ;
57 XNP_XML_UTILS.write_leaf_element ( 'SENDER_NAME',l_msg_header.sender_name ) ;
58 XNP_XML_UTILS.write_leaf_element ( 'RECIPIENT_NAME',l_msg_header.recipient_name ) ;
59 l_msg_header.direction_indr := 'E' ;
60 l_msg_header.order_id := p_order_id ;
61 l_msg_header.wi_instance_id := p_wi_instance_id ;
62 l_msg_header.fa_instance_id := p_fa_instance_id ;
63 /* retreieve the XML header */
64 XNP_XML_UTILS.get_document ( l_xml_header ) ;
65 /* append the XML headerto message */
66 XNP_XML_UTILS.initialize_doc ( ) ;
67 XNP_XML_UTILS.xml_decl ;
68 XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
69 XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
70 /* construct the message body */
71 XNP_XML_UTILS.begin_segment ( 'XDP_PERF_BM_EVT' ) ;
72 BEGIN
73 XNP$SUBSCRIPTION_TN := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
74 'SUBSCRIPTION_TN' );
75 EXCEPTION WHEN NO_DATA_FOUND THEN
76 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
77 fnd_message.set_token( 'PARAMETER','SUBSCRIPTION_TN' ) ;
78 x_error_message := fnd_message.get ;
79 END;
80 IF ( XNP$SUBSCRIPTION_TN IS NULL) THEN
81 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
82 fnd_message.set_token( 'ATTRIBUTE','SUBSCRIPTION_TN' ) ;
83 x_error_message := fnd_message.get ;
84 RAISE e_MISSING_MANDATORY_DATA ;
85 END IF ;
86 XNP_XML_UTILS.write_leaf_element ( 'SUBSCRIPTION_TN', XNP$SUBSCRIPTION_TN ) ;
87 BEGIN
88 XNP$CUSTOMER_NAME := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
89 'CUSTOMER_NAME' );
90 EXCEPTION WHEN NO_DATA_FOUND THEN
91 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
92 fnd_message.set_token( 'PARAMETER','CUSTOMER_NAME' ) ;
93 x_error_message := fnd_message.get ;
94 END;
95 IF ( XNP$CUSTOMER_NAME IS NULL) THEN
96 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
97 fnd_message.set_token( 'ATTRIBUTE','CUSTOMER_NAME' ) ;
98 x_error_message := fnd_message.get ;
99 RAISE e_MISSING_MANDATORY_DATA ;
100 END IF ;
101 XNP_XML_UTILS.write_leaf_element ( 'CUSTOMER_NAME', XNP$CUSTOMER_NAME ) ;
102 BEGIN
103 XNP$ADDRESS_LINE1 := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
104 'ADDRESS_LINE1' );
105 EXCEPTION WHEN NO_DATA_FOUND THEN
106 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
107 fnd_message.set_token( 'PARAMETER','ADDRESS_LINE1' ) ;
108 x_error_message := fnd_message.get ;
109 END;
110 IF ( XNP$ADDRESS_LINE1 IS NULL) THEN
111 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
112 fnd_message.set_token( 'ATTRIBUTE','ADDRESS_LINE1' ) ;
113 x_error_message := fnd_message.get ;
114 RAISE e_MISSING_MANDATORY_DATA ;
115 END IF ;
116 XNP_XML_UTILS.write_leaf_element ( 'ADDRESS_LINE1', XNP$ADDRESS_LINE1 ) ;
117 BEGIN
118 XNP$ADDRESS_LINE2 := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
119 'ADDRESS_LINE2' );
120 EXCEPTION WHEN NO_DATA_FOUND THEN
121 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
122 fnd_message.set_token( 'PARAMETER','ADDRESS_LINE2' ) ;
123 x_error_message := fnd_message.get ;
124 END;
125 IF ( XNP$ADDRESS_LINE2 IS NULL) THEN
126 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
127 fnd_message.set_token( 'ATTRIBUTE','ADDRESS_LINE2' ) ;
128 x_error_message := fnd_message.get ;
129 RAISE e_MISSING_MANDATORY_DATA ;
130 END IF ;
131 XNP_XML_UTILS.write_leaf_element ( 'ADDRESS_LINE2', XNP$ADDRESS_LINE2 ) ;
132 BEGIN
133 XNP$CITY := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
134 'CITY' );
135 EXCEPTION WHEN NO_DATA_FOUND THEN
136 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
137 fnd_message.set_token( 'PARAMETER','CITY' ) ;
138 x_error_message := fnd_message.get ;
139 END;
140 IF ( XNP$CITY IS NULL) THEN
141 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
142 fnd_message.set_token( 'ATTRIBUTE','CITY' ) ;
143 x_error_message := fnd_message.get ;
144 RAISE e_MISSING_MANDATORY_DATA ;
145 END IF ;
146 XNP_XML_UTILS.write_leaf_element ( 'CITY', XNP$CITY ) ;
147 BEGIN
148 XNP$ZIP_CODE := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
149 'ZIP_CODE' );
150 EXCEPTION WHEN NO_DATA_FOUND THEN
151 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
152 fnd_message.set_token( 'PARAMETER','ZIP_CODE' ) ;
153 x_error_message := fnd_message.get ;
154 END;
155 IF ( XNP$ZIP_CODE IS NULL) THEN
156 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
157 fnd_message.set_token( 'ATTRIBUTE','ZIP_CODE' ) ;
158 x_error_message := fnd_message.get ;
159 RAISE e_MISSING_MANDATORY_DATA ;
160 END IF ;
161 XNP_XML_UTILS.write_leaf_element ( 'ZIP_CODE', XNP$ZIP_CODE ) ;
162 BEGIN
163 XNP$SERVICE_TYPE := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
164 'SERVICE_TYPE' );
165 EXCEPTION WHEN NO_DATA_FOUND THEN
166 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
167 fnd_message.set_token( 'PARAMETER','SERVICE_TYPE' ) ;
168 x_error_message := fnd_message.get ;
169 END;
170 IF ( XNP$SERVICE_TYPE IS NULL) THEN
171 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
172 fnd_message.set_token( 'ATTRIBUTE','SERVICE_TYPE' ) ;
173 x_error_message := fnd_message.get ;
174 RAISE e_MISSING_MANDATORY_DATA ;
175 END IF ;
176 XNP_XML_UTILS.write_leaf_element ( 'SERVICE_TYPE', XNP$SERVICE_TYPE ) ;
177 BEGIN
178 XNP$STATUS := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
179 'STATUS' );
180 EXCEPTION WHEN NO_DATA_FOUND THEN
181 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
182 fnd_message.set_token( 'PARAMETER','STATUS' ) ;
183 x_error_message := fnd_message.get ;
184 END;
185 IF ( XNP$STATUS IS NULL) THEN
186 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
187 fnd_message.set_token( 'ATTRIBUTE','STATUS' ) ;
188 x_error_message := fnd_message.get ;
189 RAISE e_MISSING_MANDATORY_DATA ;
190 END IF ;
191 XNP_XML_UTILS.write_leaf_element ( 'STATUS', XNP$STATUS ) ;
192 BEGIN
193 XNP$CUSTOMER_TYPE := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
194 'CUSTOMER_TYPE' );
195 EXCEPTION WHEN NO_DATA_FOUND THEN
196 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
197 fnd_message.set_token( 'PARAMETER','CUSTOMER_TYPE' ) ;
198 x_error_message := fnd_message.get ;
199 END;
200 IF ( XNP$CUSTOMER_TYPE IS NULL) THEN
201 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
202 fnd_message.set_token( 'ATTRIBUTE','CUSTOMER_TYPE' ) ;
203 x_error_message := fnd_message.get ;
204 RAISE e_MISSING_MANDATORY_DATA ;
205 END IF ;
206 XNP_XML_UTILS.write_leaf_element ( 'CUSTOMER_TYPE', XNP$CUSTOMER_TYPE ) ;
207 BEGIN
208 XNP$FEATURE_TYPE := XDP_ENGINE.get_workitem_param_value ( p_wi_instance_id,
209 'FEATURE_TYPE' );
210 EXCEPTION WHEN NO_DATA_FOUND THEN
211 fnd_message.set_name('XNP', 'XNP_WI_DATA_NOT_FOUND' );
212 fnd_message.set_token( 'PARAMETER','FEATURE_TYPE' ) ;
213 x_error_message := fnd_message.get ;
214 END;
215 IF ( XNP$FEATURE_TYPE IS NULL) THEN
216 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
217 fnd_message.set_token( 'ATTRIBUTE','FEATURE_TYPE' ) ;
218 x_error_message := fnd_message.get ;
219 RAISE e_MISSING_MANDATORY_DATA ;
220 END IF ;
221 XNP_XML_UTILS.write_leaf_element ( 'FEATURE_TYPE', XNP$FEATURE_TYPE ) ;
222 XNP_XML_UTILS.end_segment ( 'XDP_PERF_BM_EVT' ) ;
223 XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
224 XNP_XML_UTILS.get_document( l_xml_doc ) ;
225 /* assign the header and msg text to output parameters */
226 x_msg_header := l_msg_header ;
227 x_msg_text := l_xml_doc ;
228 /* handle exceptions */
229 EXCEPTION
230 WHEN e_MISSING_MANDATORY_DATA THEN
231 x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
232 WHEN OTHERS THEN
233 x_error_code := SQLCODE ;
234 x_error_message := 'XDP_PERF_BM_EVT.create_msg()::' || SQLERRM ;
235 END ;
236 PROCEDURE PUBLISH ( x_message_id OUT NUMBER,
237 x_error_code OUT NUMBER,
238 x_error_message OUT VARCHAR2,
239 p_consumer_list IN VARCHAR2 DEFAULT NULL,
240 p_sender_name IN VARCHAR2 DEFAULT NULL,
241 p_recipient_list IN VARCHAR2 DEFAULT NULL,
242 p_version IN NUMBER DEFAULT 1,
243 p_reference_id IN VARCHAR2 DEFAULT NULL,
244 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
245 p_order_id IN NUMBER DEFAULT NULL,
246 p_wi_instance_id IN NUMBER DEFAULT NULL,
247 p_fa_instance_id IN NUMBER DEFAULT NULL ) IS
248 e_NO_DESTINATION EXCEPTION ;
249 l_recipient_list VARCHAR2 (2000) ;
250 l_consumer_list VARCHAR2 (4000) ;
251 l_queue_name VARCHAR2 (2000) ;
252 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
253 l_msg_text VARCHAR2(32767) ;
254 BEGIN
255 x_error_code := 0 ;
256 x_error_message := NULL ;
257 /* check if the consumer list is NULL */
258 l_consumer_list := p_consumer_list ;
259 IF (l_consumer_list IS NULL) THEN
260 XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'XDP_PERF_BM_EVT', l_consumer_list );
261 END IF;
262 l_recipient_list := p_recipient_list ;
263 l_queue_name := 'XNP_IN_EVT_Q';
264 /* create the XML message */
265 CREATE_MSG (
266 x_msg_header=>l_msg_header,
267 x_msg_text=>l_msg_text,
268 x_error_code=>x_error_code,
269 x_error_message=>x_error_message,
270 p_sender_name=>p_sender_name,
271 p_recipient_list=>l_recipient_list,
272 p_version=>p_version,
273 p_reference_id=>p_reference_id,
274 p_opp_reference_id=>p_opp_reference_id,
275 p_order_id=>p_order_id,
276 p_wi_instance_id=>p_wi_instance_id,
277 p_fa_instance_id=>p_fa_instance_id ) ;
278 x_message_id := l_msg_header.message_id ;
279 /* enqueue the XML message for delivery */
280 IF (x_error_code = 0) THEN
281 XNP_MESSAGE.push (
282 p_msg_header => l_msg_header,
283 p_body_text => l_msg_text,
284 p_queue_name => xnp_event.c_internal_evt_q,
285 p_correlation_id => l_msg_header.message_code,
286 p_priority=>'3',
287 p_commit_mode => XNP_MESSAGE.C_ON_COMMIT );
288 IF (l_consumer_list IS NOT NULL) THEN
289 XNP_MESSAGE.GET_SEQUENCE(l_msg_header.message_id) ;
290 l_msg_header.direction_indr := 'O';
291 XNP_MESSAGE.push (
292 p_msg_header => l_msg_header,
293 p_body_text => l_msg_text,
294 p_queue_name => xnp_event.c_outbound_msg_q,
295 p_recipient_list => l_consumer_list,
296 p_correlation_id => l_msg_header.message_code,
297 p_priority=>'3' ) ;
298 END IF ;
299 /* out processing logic */
300 END IF ;
301 EXCEPTION
302 WHEN e_NO_DESTINATION THEN
303 x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
304 WHEN OTHERS THEN
305 x_error_code := SQLCODE ;
306 x_error_message := SQLERRM ;
307 END ;
308 PROCEDURE SEND ( x_message_id OUT NUMBER,
309 x_error_code OUT NUMBER,
310 x_error_message OUT VARCHAR2,
311 p_consumer_name IN VARCHAR2,
312 p_sender_name IN VARCHAR2 DEFAULT NULL,
313 p_recipient_name IN VARCHAR2 DEFAULT NULL,
314 p_version IN NUMBER DEFAULT 1,
315 p_reference_id IN VARCHAR2 DEFAULT NULL,
316 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
317 p_order_id IN NUMBER DEFAULT NULL,
318 p_wi_instance_id IN NUMBER DEFAULT NULL,
319 p_fa_instance_id IN NUMBER DEFAULT NULL ) IS
320 l_recipient_name VARCHAR2(80);
321 BEGIN
322 x_error_code := 0;
323 x_error_message := NULL ;
324 l_recipient_name := p_recipient_name ;
325 IF (l_recipient_name IS NULL) THEN
326 l_recipient_name := p_consumer_name ;
327 END IF;
328 PUBLISH (
329 x_message_id=>x_message_id,
330 x_error_code=>x_error_code,
331 x_error_message=>x_error_message,
332 p_consumer_list=>p_consumer_name,
333 p_sender_name=>p_sender_name,
334 p_recipient_list=>l_recipient_name,
335 p_version=>p_version,
336 p_reference_id=>p_reference_id,
337 p_opp_reference_id=>p_opp_reference_id,
338 p_order_id=>p_order_id,
339 p_wi_instance_id=>p_wi_instance_id,
340 p_fa_instance_id=>p_fa_instance_id ) ;
341 END ;
342 PROCEDURE PROCESS ( p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
343 p_msg_text IN VARCHAR2,
344 x_error_code OUT NUMBER,
345 x_error_message OUT VARCHAR2,
346 p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
347 BEGIN
348 NULL ;
349 END ;
350 PROCEDURE DEFAULT_PROCESS ( p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
351 p_msg_text IN VARCHAR2,
352 x_error_code OUT NUMBER,
353 x_error_message OUT VARCHAR2 ) IS
354 BEGIN
355 NULL ;
356 END ;
357 PROCEDURE VALIDATE ( p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
358 p_msg_text IN VARCHAR2,
359 x_error_code OUT NUMBER,
360 x_error_message OUT VARCHAR2 ) IS
361 BEGIN
362 NULL ;
363 END ;
364
365 END XNP_XDP_PERF_BM_EVT_U;