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