[Home] [Help]
PACKAGE BODY: APPS.XNP_CSIINTSR_U
Source
1 PACKAGE BODY XNP_CSIINTSR_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 := 'CSIINTSR' ;
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 ( 'CSIINTSR' ) ;
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 ( 'CSIINTSR' ) ;
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 := 'CSIINTSR.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( 'CSIINTSR', 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_api_version NUMBER := 1.0;
242 l_commit VARCHAR2(1) := FND_API.G_FALSE;
243 l_init_msg_list VARCHAR2(1) := FND_API.G_TRUE;
244 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
245 l_trx_error_message VARCHAR2(2000);
246 l_trx_return_status VARCHAR2(1);
247 l_fnd_success VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
248 l_mtl_trx_rec CSI_INV_TRXS_PKG.MTL_TRX_TYPE;
249 l_trx_error_rec CSI_DATASTRUCTURES_PUB.TRANSACTION_ERROR_REC;
250 l_msg_count NUMBER;
251 l_msg_data VARCHAR2(2000);
252 l_txn_error_id NUMBER;
253 l_debug NUMBER := csi_t_gen_utility_pvt.g_debug_level;
254 e_dpl_error EXCEPTION;
255 l_date date;
256 BEGIN
257 l_trx_return_status := l_fnd_success;
258 l_trx_error_message := NULL;
259 IF (l_debug > 0) THEN
260 csi_t_gen_utility_pvt.build_file_name(p_file_segment1 => 'csi',
261 p_file_segment2 => to_char(sysdate,'DDMONYYYY'));
262 END IF;
263 csi_t_gen_utility_pvt.add(' ');
264 csi_t_gen_utility_pvt.add('CSIINTSR'||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
265 csi_t_gen_utility_pvt.add(' XML String: '||p_msg_text);
266 savepoint one;
267 xnp_xml_utils.decode(p_msg_text => p_msg_text,p_tag => 'MTL_TRANSACTION_ID',x_value => l_mtl_trx_rec.mtl_transaction_id);
268 IF l_mtl_trx_rec.mtl_transaction_id is null THEN
269 fnd_message.set_name('CSI','CSI_DECODE_MGS_ERROR');
270 fnd_message.set_token('MESSAGE_ID',p_msg_header.message_id);
271 fnd_message.set_token('MESSAGE_CODE',p_msg_header.message_code);
272 l_trx_error_rec.error_text := fnd_message.get;
273 l_trx_error_rec.transaction_type_id := 131;
274 l_trx_error_rec.source_type := 'CSIINTSR';
275 csi_t_gen_utility_pvt.add(' Inv Transaction ID was NULL so raising Error');
276 RAISE e_dpl_error;
277 END IF;
278 csi_t_gen_utility_pvt.add(' Invoking Trans: '||l_mtl_trx_rec.mtl_transaction_id);
279 csi_inv_txnstub_pkg.execute_trx_dpl('CSIINTSR',
280 l_mtl_trx_rec.mtl_transaction_id,
281 l_trx_return_status,
282 l_trx_error_rec);
283 IF NOT l_trx_return_status = l_fnd_success THEN
284 RAISE e_dpl_error;
285 END IF;
286 IF (l_debug > 0) THEN
287 csi_t_gen_utility_pvt.build_file_name(p_file_segment1 => 'csi',
288 p_file_segment2 => to_char(sysdate,'DDMONYYYY'));
289 END IF;
290 csi_t_gen_utility_pvt.add(' Transaction '||l_mtl_trx_rec.mtl_transaction_id||' completed Successfully');
291 EXCEPTION
292 WHEN e_dpl_error THEN
293 csi_t_gen_utility_pvt.add(' Transaction '||l_mtl_trx_rec.mtl_transaction_id||' completed with error'||l_trx_error_rec.error_text);
294 l_trx_error_rec.message_id := p_msg_header.message_id;
295 l_trx_error_rec.message_string := p_msg_text;
296 l_trx_error_rec.error_stage := csi_inv_trxs_pkg.g_ib_update;
297 l_trx_error_rec.processed_flag := csi_inv_trxs_pkg.g_txn_error;
298 rollback to one;
299 csi_inv_trxs_pkg.log_csi_error(l_trx_error_rec);
300 WHEN others THEN
301 IF l_mtl_trx_rec.mtl_transaction_id IS NOT NULL THEN
302 csi_t_gen_utility_pvt.add('Transaction '||l_mtl_trx_rec.mtl_transaction_id||' completed with error'||l_trx_error_rec.error_text);
303 l_trx_error_rec.message_id := p_msg_header.message_id;
304 l_trx_error_rec.message_string := p_msg_text;
305 l_trx_error_rec.error_text := SQLERRM;
306 l_trx_error_rec.transaction_type_id := 131;
307 l_trx_error_rec.source_type := 'CSIINTSR';
308 l_trx_error_rec.source_id := l_mtl_trx_rec.mtl_transaction_id;
309 l_trx_error_rec.inv_material_transaction_id := l_trx_error_rec.source_id;
310 rollback to one;
311 csi_inv_trxs_pkg.log_csi_error(l_trx_error_rec);
312 ELSE
313 csi_t_gen_utility_pvt.add('Transaction '||l_mtl_trx_rec.mtl_transaction_id||' completed with error - passing out to calling XNP Program'||l_trx_error_rec.error_text);
314 raise;
315 END IF;
316 END;
317 END ;
318 PROCEDURE VALIDATE ( p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
319 p_msg_text IN VARCHAR2,
320 x_error_code OUT NUMBER,
321 x_error_message OUT VARCHAR2 ) IS
322 BEGIN
323 NULL ;
324 NULL;
325 END ;
326
327 END XNP_CSIINTSR_U;