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