[Home] [Help]
PACKAGE BODY: APPS.XNP_CSIEAMWC_U
Source
1 PACKAGE BODY XNP_CSIEAMWC_U AS
2 PROCEDURE CREATE_MSG ( XNP$ORGANIZATION_ID NUMBER,
3 XNP$WIP_ENTITY_ID NUMBER,
4 x_msg_header OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
5 x_msg_text OUT VARCHAR2,
6 x_error_code OUT NUMBER,
7 x_error_message OUT VARCHAR2,
8 p_sender_name IN VARCHAR2 DEFAULT NULL,
9 p_recipient_list IN VARCHAR2 DEFAULT NULL,
10 p_version IN NUMBER DEFAULT 1,
11 p_reference_id IN VARCHAR2 DEFAULT NULL,
12 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
13 p_order_id IN NUMBER DEFAULT NULL,
14 p_wi_instance_id IN NUMBER DEFAULT NULL,
15 p_fa_instance_id IN NUMBER DEFAULT NULL,
16 p_delay IN NUMBER DEFAULT NULL,
17 p_interval IN NUMBER DEFAULT NULL ) IS
18 e_MISSING_MANDATORY_DATA EXCEPTION ;
19 e_NO_DESTINATION EXCEPTION ;
20 l_xml_body VARCHAR2(32767) ;
21 l_xml_doc VARCHAR2(32767) ;
22 l_xml_header VARCHAR2(32767) ;
23 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
24 BEGIN
25 x_error_code := 0 ;
26 x_error_message := NULL ;
27 XNP_XML_UTILS.initialize_doc ( ) ;
28 /*construct the XML header */
29 /* retreive the next message ID */
30 XNP_MESSAGE.get_sequence ( l_msg_header.message_id ) ;
31 IF (p_reference_id IS NULL) THEN
32 l_msg_header.reference_id := l_msg_header.message_id ;
33 ELSE
34 l_msg_header.reference_id := p_reference_id ;
35 END IF ;
36 /* append header parameters to make header */
37 XNP_XML_UTILS.write_element ( 'MESSAGE_ID',l_msg_header.message_id ) ;
38 XNP_XML_UTILS.write_leaf_element ( 'REFERENCE_ID',l_msg_header.reference_id ) ;
39 l_msg_header.opp_reference_id := p_opp_reference_id ;
40 XNP_XML_UTILS.write_leaf_element ( 'OPP_REFERENCE_ID',l_msg_header.opp_reference_id ) ;
41 l_msg_header.message_code := 'CSIEAMWC' ;
42 XNP_XML_UTILS.write_leaf_element ( 'MESSAGE_CODE',l_msg_header.message_code ) ;
43 l_msg_header.version := p_version ;
44 XNP_XML_UTILS.write_leaf_element ( 'VERSION',l_msg_header.version ) ;
45 l_msg_header.creation_date := SYSDATE ;
46 l_msg_header.recipient_name := p_recipient_list ;
47 XNP_XML_UTILS.write_element ( 'CREATION_DATE',l_msg_header.creation_date ) ;
48 l_msg_header.sender_name := p_sender_name ;
49 XNP_XML_UTILS.write_leaf_element ( 'SENDER_NAME',l_msg_header.sender_name ) ;
50 XNP_XML_UTILS.write_leaf_element ( 'RECIPIENT_NAME',l_msg_header.recipient_name ) ;
51 l_msg_header.direction_indr := 'E' ;
52 l_msg_header.order_id := p_order_id ;
53 l_msg_header.wi_instance_id := p_wi_instance_id ;
54 l_msg_header.fa_instance_id := p_fa_instance_id ;
55 XNP_XML_UTILS.write_leaf_element ( 'ORGANIZATION_ID', XNP$ORGANIZATION_ID );
56 XNP_XML_UTILS.write_leaf_element ( 'WIP_ENTITY_ID', XNP$WIP_ENTITY_ID );
57 /* retreieve the XML header */
58 XNP_XML_UTILS.get_document ( l_xml_header ) ;
59 /* append the XML headerto message */
60 XNP_XML_UTILS.initialize_doc ( ) ;
61 XNP_XML_UTILS.xml_decl ;
62 XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
63 XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
64 /* construct the message body */
65 XNP_XML_UTILS.begin_segment ( 'CSIEAMWC' ) ;
66 IF ( XNP$WIP_ENTITY_ID IS NULL) THEN
67 x_error_message :='Missing Mandatory Attribute - WIP_ENTITY_ID' ;
68 fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
69 fnd_message.set_token('ATTRIBUTE','WIP_ENTITY_ID' ) ;
70 x_error_message := fnd_message.get ;
71 RAISE e_MISSING_MANDATORY_DATA ;
72 END IF ;
73 XNP_XML_UTILS.write_leaf_element ( 'WIP_ENTITY_ID', XNP$WIP_ENTITY_ID ) ;
74 IF ( XNP$ORGANIZATION_ID IS NULL) THEN
75 x_error_message :='Missing Mandatory Attribute - ORGANIZATION_ID' ;
76 fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
77 fnd_message.set_token('ATTRIBUTE','ORGANIZATION_ID' ) ;
78 x_error_message := fnd_message.get ;
79 RAISE e_MISSING_MANDATORY_DATA ;
80 END IF ;
81 XNP_XML_UTILS.write_leaf_element ( 'ORGANIZATION_ID', XNP$ORGANIZATION_ID ) ;
82 XNP_XML_UTILS.end_segment ( 'CSIEAMWC' ) ;
83 XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
84 XNP_XML_UTILS.get_document( l_xml_doc ) ;
85 /* assign the header and msg text to output parameters */
86 x_msg_header := l_msg_header ;
87 x_msg_text := l_xml_doc ;
88 /* handle exceptions */
89 EXCEPTION
90 WHEN e_MISSING_MANDATORY_DATA THEN
91 x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
92 WHEN OTHERS THEN
93 x_error_code := SQLCODE ;
94 x_error_message := 'CSIEAMWC.create_msg()::' || SQLERRM ;
95 END ;
96 PROCEDURE PUBLISH ( XNP$ORGANIZATION_ID NUMBER,
97 XNP$WIP_ENTITY_ID NUMBER,
98 x_message_id OUT NUMBER,
99 x_error_code OUT NUMBER,
100 x_error_message OUT VARCHAR2,
101 p_consumer_list IN VARCHAR2 DEFAULT NULL,
102 p_sender_name IN VARCHAR2 DEFAULT NULL,
103 p_recipient_list IN VARCHAR2 DEFAULT NULL,
104 p_version IN NUMBER DEFAULT 1,
105 p_reference_id IN VARCHAR2 DEFAULT NULL,
106 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
107 p_order_id IN NUMBER DEFAULT NULL,
108 p_wi_instance_id IN NUMBER DEFAULT NULL,
109 p_fa_instance_id IN NUMBER DEFAULT NULL ) IS
110 e_NO_DESTINATION EXCEPTION ;
111 l_recipient_list VARCHAR2 (2000) ;
112 l_consumer_list VARCHAR2 (4000) ;
113 l_queue_name VARCHAR2 (2000) ;
114 l_msg_header XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
115 l_msg_text VARCHAR2(32767) ;
116 BEGIN
117 x_error_code := 0 ;
118 x_error_message := NULL ;
119 /* check if the consumer list is NULL */
120 l_consumer_list := p_consumer_list ;
121 IF (l_consumer_list IS NULL) THEN
122 XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'CSIEAMWC', l_consumer_list );
123 END IF;
124 l_recipient_list := p_recipient_list ;
125 l_queue_name := 'XNP_IN_EVT_Q';
126 /* create the XML message */
127 CREATE_MSG (
128 XNP$ORGANIZATION_ID=>XNP$ORGANIZATION_ID,
129 XNP$WIP_ENTITY_ID=>XNP$WIP_ENTITY_ID,
130 x_msg_header=>l_msg_header,
131 x_msg_text=>l_msg_text,
132 x_error_code=>x_error_code,
133 x_error_message=>x_error_message,
134 p_sender_name=>p_sender_name,
135 p_recipient_list=>l_recipient_list,
136 p_version=>p_version,
137 p_reference_id=>p_reference_id,
138 p_opp_reference_id=>p_opp_reference_id,
139 p_order_id=>p_order_id,
140 p_wi_instance_id=>p_wi_instance_id,
141 p_fa_instance_id=>p_fa_instance_id ) ;
142 x_message_id := l_msg_header.message_id ;
143 /* enqueue the XML message for delivery */
144 IF (x_error_code = 0) THEN
145 XNP_MESSAGE.push (
146 p_msg_header => l_msg_header,
147 p_body_text => l_msg_text,
148 p_queue_name => xnp_event.c_internal_evt_q,
149 p_correlation_id => l_msg_header.message_code,
150 p_priority=>'1',
151 p_commit_mode => XNP_MESSAGE.C_ON_COMMIT );
152 IF (l_consumer_list IS NOT NULL) THEN
153 XNP_MESSAGE.GET_SEQUENCE(l_msg_header.message_id) ;
154 l_msg_header.direction_indr := 'O';
155 XNP_MESSAGE.push (
156 p_msg_header => l_msg_header,
157 p_body_text => l_msg_text,
158 p_queue_name => xnp_event.c_outbound_msg_q,
159 p_recipient_list => l_consumer_list,
160 p_correlation_id => l_msg_header.message_code,
161 p_priority=>'1' ) ;
162 END IF ;
163 /* out processing logic */
164 NULL;
165 END IF ;
166 EXCEPTION
167 WHEN e_NO_DESTINATION THEN
168 x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
169 WHEN OTHERS THEN
170 x_error_code := SQLCODE ;
171 x_error_message := SQLERRM ;
172 END ;
173 PROCEDURE SEND ( XNP$ORGANIZATION_ID NUMBER,
174 XNP$WIP_ENTITY_ID NUMBER,
175 x_message_id OUT NUMBER,
176 x_error_code OUT NUMBER,
177 x_error_message OUT VARCHAR2,
178 p_consumer_name IN VARCHAR2,
179 p_sender_name IN VARCHAR2 DEFAULT NULL,
180 p_recipient_name IN VARCHAR2 DEFAULT NULL,
181 p_version IN NUMBER DEFAULT 1,
182 p_reference_id IN VARCHAR2 DEFAULT NULL,
183 p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
184 p_order_id IN NUMBER DEFAULT NULL,
185 p_wi_instance_id IN NUMBER DEFAULT NULL,
186 p_fa_instance_id IN NUMBER DEFAULT NULL ) IS
187 l_recipient_name VARCHAR2(80);
188 BEGIN
189 x_error_code := 0;
190 x_error_message := NULL ;
191 l_recipient_name := p_recipient_name ;
192 IF (l_recipient_name IS NULL) THEN
193 l_recipient_name := p_consumer_name ;
194 END IF;
195 PUBLISH (
196 XNP$ORGANIZATION_ID=>XNP$ORGANIZATION_ID,
197 XNP$WIP_ENTITY_ID=>XNP$WIP_ENTITY_ID,
198 x_message_id=>x_message_id,
199 x_error_code=>x_error_code,
200 x_error_message=>x_error_message,
201 p_consumer_list=>p_consumer_name,
202 p_sender_name=>p_sender_name,
203 p_recipient_list=>l_recipient_name,
204 p_version=>p_version,
205 p_reference_id=>p_reference_id,
206 p_opp_reference_id=>p_opp_reference_id,
207 p_order_id=>p_order_id,
208 p_wi_instance_id=>p_wi_instance_id,
209 p_fa_instance_id=>p_fa_instance_id ) ;
210 END ;
211 PROCEDURE PROCESS ( p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
212 p_msg_text IN VARCHAR2,
213 x_error_code OUT NUMBER,
214 x_error_message OUT VARCHAR2,
215 p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
216 BEGIN
217 NULL ;
218 NULL;
219 END ;
220 PROCEDURE DEFAULT_PROCESS ( p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
221 p_msg_text IN VARCHAR2,
222 x_error_code OUT NUMBER,
223 x_error_message OUT VARCHAR2 ) IS
224 BEGIN
225 NULL ;
226 DECLARE
227 l_txn_type varchar2(8) := 'CSIEAMWC';
228 l_txn_type_id number := 92;
229 l_wip_entity_id number;
230 l_org_id number;
231 l_error_rec csi_datastructures_pub.transaction_error_rec;
232 l_return_status varchar2(1);
233 dpl_error exception;
234 PROCEDURE debug(p_message in varchar2) IS
235 BEGIN
236 csi_t_gen_utility_pvt.add(p_message);
237 END debug;
238 PROCEDURE init_debug_file IS
239 BEGIN
240 csi_t_gen_utility_pvt.build_file_name(
241 p_file_segment1 => 'csi', p_file_segment2 => to_char(sysdate,'DDMONYYYY'));
242 END init_debug_file;
243 BEGIN
244 savepoint dpl_sp;
245 init_debug_file;
246 debug(' ');
247 debug('START '||l_txn_type||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
248 debug(' XML String: '||p_msg_text);
249 l_error_rec.source_type := l_txn_type;
250 l_error_rec.transaction_type_id := l_txn_type_id;
251 l_error_rec.message_id := p_msg_header.message_id;
252 l_error_rec.message_string := p_msg_text;
253 xnp_xml_utils.decode(
254 p_msg_text => p_msg_text, p_tag => 'WIP_ENTITY_ID', x_value => l_wip_entity_id);
255 IF l_wip_entity_id is null THEN
256 l_error_rec.error_text := 'xnp_xml_utils.decode failed. could not derive wip_entity_id.';
257 RAISE dpl_error;
258 END IF;
259 l_error_rec.source_id := l_wip_entity_id;
260 debug(' wip_entity_id : '||l_wip_entity_id);
261 xnp_xml_utils.decode(
262 p_msg_text => p_msg_text, p_tag => 'ORGANIZATION_ID', x_value => l_org_id);
263 IF l_org_id is null THEN
264 l_error_rec.error_text := 'xnp_xml_utils.decode failed. could not derive organization_id.';
265 RAISE dpl_error;
266 END IF;
267 debug(' organization_id :'||l_org_id);
268 csi_wip_trxs_pkg.eam_wip_completion(
269 p_wip_entity_id => l_wip_entity_id,
270 p_organization_id => l_org_id,
271 px_trx_error_rec => l_error_rec,
272 x_return_status => l_return_status);
273 init_debug_file;
274 debug(' Transaction completed successfully.');
275 debug('END '||l_txn_type||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
276 EXCEPTION
277 WHEN dpl_error THEN
278 rollback to dpl_sp;
279 init_debug_file;
280 debug(' Transaction '||l_wip_entity_id||' failed. '||l_error_rec.error_text);
281 csi_inv_trxs_pkg.log_csi_error(l_error_rec);
282 WHEN others THEN
283 rollback to dpl_sp;
284 l_error_rec.error_text := substr(sqlerrm, 1, 540);
285 init_debug_file;
286 debug(' Transaction '||l_wip_entity_id||' failed. '||l_error_rec.error_text);
287 IF l_wip_entity_id is not null THEN
288 csi_inv_trxs_pkg.log_csi_error(l_error_rec);
289 ELSE
290 RAISE;
291 END IF;
292 END;
293 END ;
294 PROCEDURE VALIDATE ( p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
295 p_msg_text IN VARCHAR2,
296 x_error_code OUT NUMBER,
297 x_error_message OUT VARCHAR2 ) IS
298 BEGIN
299 NULL ;
300 NULL;
301 END ;
302
303 END XNP_CSIEAMWC_U;