[Home] [Help]
PACKAGE BODY: APPS.XNP_XDP_LINE_DONE_U
Source
1 PACKAGE BODY XNP_XDP_LINE_DONE_U AS
2 /*$Header: XNPLIDNB.pls 120.1 2005/06/09 02:56:28 appldev $*/
3 PROCEDURE CREATE_MSG ( XNP$LINE_ITEM_ID NUMBER,
4 x_msg_header OUT NOCOPY XNP_MESSAGE.MSG_HEADER_REC_TYPE,
5 x_msg_text OUT NOCOPY VARCHAR2,
6 x_error_code OUT NOCOPY NUMBER,
7 x_error_message OUT NOCOPY VARCHAR2,
8 p_sender_name IN VARCHAR2 DEFAULT NULL,
9 p_recipient_list IN VARCHAR2 DEFAULT NULL,
10
11 p_version IN NUMBER DEFAULT 1,
12 p_reference_id IN VARCHAR2 DEFAULT NULL,
13 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
14 p_order_id IN NUMBER DEFAULT NULL,
15 p_wi_instance_id IN NUMBER DEFAULT NULL,
16 p_fa_instance_id IN NUMBER DEFAULT NULL,
17 p_delay IN NUMBER DEFAULT NULL,
18 p_interval IN NUMBER DEFAULT NULL ) IS
19 e_MISSING_MANDATORY_DATA EXCEPTION ;
20 e_NO_DESTINATION EXCEPTION ;
21 l_xml_body VARCHAR2(32767) ;
22 l_xml_doc VARCHAR2(32767) ;
23 l_xml_header VARCHAR2(32767) ;
24
25 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
26 l_loop_index_1 NUMBER ;
27 BEGIN
28 x_error_code := 0 ;
29 x_error_message := NULL ;
30 XNP_XML_UTILS.initialize_doc ( ) ;
31 /*construct the XML header */
32 /* retreive the next message ID */
33 XNP_MESSAGE.get_sequence ( l_msg_header.message_id ) ;
34 IF (p_reference_id IS NULL) THEN
35 l_msg_header.reference_id := l_msg_header.message_id ;
36 ELSE
37 l_msg_header.reference_id := p_reference_id ;
38
39 END IF ;
40 /* append header parameters to make header */
41 XNP_XML_UTILS.write_element ( 'MESSAGE_ID',l_msg_header.message_id ) ;
42 XNP_XML_UTILS.write_leaf_element ( 'REFERENCE_ID',l_msg_header.reference_id ) ;
43
44 l_msg_header.opp_reference_id := p_opp_reference_id ;
45 XNP_XML_UTILS.write_leaf_element ( 'OPP_REFERENCE_ID',l_msg_header.opp_reference_id ) ;
46
47 l_msg_header.message_code := 'XDP_LINE_DONE' ;
48 XNP_XML_UTILS.write_leaf_element ( 'MESSAGE_CODE',l_msg_header.message_code ) ;
49 l_msg_header.version := p_version ;
50 XNP_XML_UTILS.write_leaf_element ( 'VERSION',l_msg_header.version ) ;
51 l_msg_header.creation_date := SYSDATE ;
52 l_msg_header.recipient_name := p_recipient_list ;
53 XNP_XML_UTILS.write_element ( 'CREATION_DATE',l_msg_header.creation_date ) ;
54 l_msg_header.sender_name := p_sender_name ;
55 XNP_XML_UTILS.write_leaf_element ( 'SENDER_NAME',l_msg_header.sender_name ) ;
56 XNP_XML_UTILS.write_leaf_element ( 'RECIPIENT_NAME',l_msg_header.recipient_name ) ;
57
58 l_msg_header.direction_indr := 'E' ;
59 l_msg_header.order_id := p_order_id ;
60
61 l_msg_header.wi_instance_id := p_wi_instance_id ;
62 l_msg_header.fa_instance_id := p_fa_instance_id ;
63 XNP_XML_UTILS.write_leaf_element ( 'LINE_ITEM_ID', XNP$LINE_ITEM_ID );
64 /* retreieve the XML header */
65 XNP_XML_UTILS.get_document ( l_xml_header ) ;
66 /* append the XML headerto message */
67 XNP_XML_UTILS.initialize_doc ( ) ;
68 XNP_XML_UTILS.xml_decl ;
69 XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
70 XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
71 /* construct the message body */
72 XNP_XML_UTILS.begin_segment ( 'XDP_LINE_DONE' ) ;
73 l_loop_index_1 := 0 ;
74
75 FOR XNP$XDP_LINE_DONE IN (SELECT ORDER_ID,
76 LINE_ITEM_ID,
77 STATUS_CODE
78 FROM XDP_ORDER_LINE_ITEMS WHERE
79 LINE_ITEM_ID=XNP$LINE_ITEM_ID)
80 LOOP
81 l_loop_index_1 := l_loop_index_1 + 1 ;
82 IF ( XNP$XDP_LINE_DONE.ORDER_ID IS NULL) THEN
83 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
84 fnd_message.set_token( 'ATTRIBUTE','ORDER_ID' ) ;
85 x_error_message := fnd_message.get ;
86 RAISE e_MISSING_MANDATORY_DATA ;
87 END IF ;
88
89 XNP_XML_UTILS.write_leaf_element ( 'ORDER_ID', XNP$XDP_LINE_DONE.ORDER_ID ) ;
90
91 IF ( XNP$LINE_ITEM_ID IS NULL) THEN
92 x_error_message :='Missing Mandatory Attribute - LINE_ITEM_ID' ;
93 fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
94 fnd_message.set_token('ATTRIBUTE','LINE_ITEM_ID' ) ;
95 x_error_message := fnd_message.get ;
96 RAISE e_MISSING_MANDATORY_DATA ;
97 END IF ;
98 XNP_XML_UTILS.write_leaf_element ( 'LINE_ITEM_ID', XNP$LINE_ITEM_ID ) ;
99 XNP_XML_UTILS.write_leaf_element ( 'LINE_ITEM_STATUS', XNP$XDP_LINE_DONE.STATUS_CODE ) ;
100 XNP_XML_UTILS.write_leaf_element ( 'SDP_RESULT_CODE', XNP$XDP_LINE_DONE.STATUS_CODE ) ;
101
102 EXIT ;
103 END LOOP ;
104 IF ( l_loop_index_1 = 0 ) THEN
105 fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_DATA' );
106 fnd_message.set_token( 'ELEMENT',', ORDER_ID, LINE_ITEM_ID' ) ;
107 x_error_message := fnd_message.get ;
108 RAISE e_MISSING_MANDATORY_DATA ;
109 END IF ;
110 XNP_XML_UTILS.end_segment ( 'XDP_LINE_DONE' ) ;
111
112 XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
113 XNP_XML_UTILS.get_document( l_xml_doc ) ;
114 /* assign the header and msg text to output parameters */
115 x_msg_header := l_msg_header ;
116 x_msg_text := l_xml_doc ;
117 /* handle exceptions */
118 EXCEPTION
119 WHEN e_MISSING_MANDATORY_DATA THEN
120 x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
121 WHEN OTHERS THEN
122 x_error_code := SQLCODE ;
123 x_error_message := 'XDP_LINE_DONE.create_msg()::' || SQLERRM ;
124 END ;
125
126 PROCEDURE PUBLISH ( XNP$LINE_ITEM_ID NUMBER,
127 x_message_id OUT NOCOPY NUMBER,
128 x_error_code OUT NOCOPY NUMBER,
129 x_error_message OUT NOCOPY VARCHAR2,
130 p_consumer_list IN VARCHAR2 DEFAULT NULL,
131 p_sender_name IN VARCHAR2 DEFAULT NULL,
132 p_recipient_list IN VARCHAR2 DEFAULT NULL,
133 p_version IN NUMBER DEFAULT 1,
134 p_reference_id IN VARCHAR2 DEFAULT NULL,
135 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
136 p_order_id IN NUMBER DEFAULT NULL,
137 p_wi_instance_id IN NUMBER DEFAULT NULL,
138 p_fa_instance_id IN NUMBER DEFAULT NULL ) IS
139
140 e_NO_DESTINATION EXCEPTION ;
141 l_recipient_list VARCHAR2 (2000) ;
142 l_consumer_list VARCHAR2 (4000) ;
143 l_queue_name VARCHAR2 (2000) ;
144 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
145 l_msg_text VARCHAR2(32767) ;
146 BEGIN
147 x_error_code := 0 ;
148 x_error_message := NULL ;
149 /* check if the consumer list is NULL */
150 l_consumer_list := p_consumer_list ;
151 IF (l_consumer_list IS NULL) THEN
152 XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'XDP_LINE_DONE', l_consumer_list );
153
154 END IF;
155 l_recipient_list := p_recipient_list ;
156 l_queue_name := 'XNP_IN_EVT_Q';
157 /* create the XML message */
158 CREATE_MSG (
159 XNP$LINE_ITEM_ID=>XNP$LINE_ITEM_ID,
160 x_msg_header=>l_msg_header,
161 x_msg_text=>l_msg_text,
162 x_error_code=>x_error_code,
163 x_error_message=>x_error_message,
164 p_sender_name=>p_sender_name,
165 p_recipient_list=>l_recipient_list,
166 p_version=>p_version,
167 p_reference_id=>p_reference_id,
168 p_opp_reference_id=>p_opp_reference_id,
169 p_order_id=>p_order_id,
170 p_wi_instance_id=>p_wi_instance_id,
171 p_fa_instance_id=>p_fa_instance_id ) ;
172 x_message_id := l_msg_header.message_id ;
173 /* enqueue the XML message for delivery */
174 IF (x_error_code = 0) THEN
175 XNP_MESSAGE.push (
176 p_msg_header => l_msg_header,
177 p_body_text => l_msg_text,
178 p_queue_name => xnp_event.c_internal_evt_q,
179 p_correlation_id => l_msg_header.message_code,
180 p_priority=>'1',
181 p_commit_mode => XNP_MESSAGE.C_ON_COMMIT );
182 IF (l_consumer_list IS NOT NULL) THEN
183 XNP_MESSAGE.GET_SEQUENCE(l_msg_header.message_id) ;
184 XNP_MESSAGE.push (
185 p_msg_header => l_msg_header,
186 p_body_text => l_msg_text,
187 p_queue_name => xnp_event.c_outbound_msg_q,
188 p_recipient_list => l_consumer_list,
189 p_correlation_id => l_msg_header.message_code,
190 p_priority=>'1' ) ;
191 END IF ;
192 /* out processing logic */
193 NULL;
194 END IF ;
195 EXCEPTION
196 WHEN e_NO_DESTINATION THEN
197 x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
198 WHEN OTHERS THEN
199 x_error_code := SQLCODE ;
200 x_error_message := SQLERRM ;
201 END ;
202 PROCEDURE SEND ( XNP$LINE_ITEM_ID NUMBER,
203 x_message_id OUT NOCOPY NUMBER,
204 x_error_code OUT NOCOPY NUMBER,
205 x_error_message OUT NOCOPY VARCHAR2,
206 p_consumer_name IN VARCHAR2,
207 p_sender_name IN VARCHAR2 DEFAULT NULL,
208 p_recipient_name IN VARCHAR2 DEFAULT NULL,
209 p_version IN NUMBER DEFAULT 1,
210 p_reference_id IN VARCHAR2 DEFAULT NULL,
211 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
212 p_order_id IN NUMBER DEFAULT NULL,
213 p_wi_instance_id IN NUMBER DEFAULT NULL,
214 p_fa_instance_id IN NUMBER DEFAULT NULL ) IS
215
216 l_recipient_name VARCHAR2(80);
217
218 BEGIN
219 x_error_code := 0;
220 x_error_message := NULL ;
221
222 l_recipient_name := p_recipient_name ;
223 IF (l_recipient_name IS NULL) THEN
224 l_recipient_name := p_consumer_name ;
225 END IF;
226 PUBLISH (
227 XNP$LINE_ITEM_ID=>XNP$LINE_ITEM_ID,
228 x_message_id=>x_message_id,
229 x_error_code=>x_error_code,
230 x_error_message=>x_error_message,
231 p_consumer_list=>p_consumer_name,
232 p_sender_name=>p_sender_name,
233 p_recipient_list=>l_recipient_name,
234 p_version=>p_version,
235 p_reference_id=>p_reference_id,
236 p_opp_reference_id=>p_opp_reference_id,
237 p_order_id=>p_order_id,
238 p_wi_instance_id=>p_wi_instance_id,
239 p_fa_instance_id=>p_fa_instance_id ) ;
240 END ;
241 PROCEDURE PROCESS ( p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
242 p_msg_text IN VARCHAR2,
243 x_error_code OUT NOCOPY NUMBER,
244 x_error_message OUT NOCOPY VARCHAR2,
245 p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
246 BEGIN
247 NULL ;
248
249 NULL;
250 END ;
251 PROCEDURE DEFAULT_PROCESS ( p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
252 p_msg_text IN VARCHAR2,
253 x_error_code OUT NOCOPY NUMBER,
254 x_error_message OUT NOCOPY VARCHAR2 ) IS
255 BEGIN
256 NULL ;
257 NULL;
258 END ;
259 PROCEDURE VALIDATE ( p_msg_header IN OUT NOCOPY XNP_MESSAGE.MSG_HEADER_REC_TYPE,
260 p_msg_text IN VARCHAR2,
261 x_error_code OUT NOCOPY NUMBER,
262 x_error_message OUT NOCOPY VARCHAR2 ) IS
263 BEGIN
264 NULL ;
265 NULL;
266 END ;
267
268 END XNP_XDP_LINE_DONE_U;