DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CSIINTSS_U

Source


1 PACKAGE BODY XNP_CSIINTSS_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 := 'CSIINTSS' ;
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 ( 'CSIINTSS' ) ;
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 ( 'CSIINTSS' ) ;
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 := 'CSIINTSS.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( 'CSIINTSS', 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('CSIINTSS'||'-'||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  := 130;
274     l_trx_error_rec.source_type          := 'CSIINTSS';
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('CSIINTSS',
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  := 130;
307         l_trx_error_rec.source_type := 'CSIINTSS';
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_CSIINTSS_U;