DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CSILOSHP_U

Source


1 PACKAGE BODY XNP_CSILOSHP_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 := 'CSILOSHP' ;
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 ( 'CSILOSHP' ) ;
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 ( 'CSILOSHP' ) ;
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 := 'CSILOSHP.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( 'CSILOSHP', 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) := 'CSILOSHP';
242       l_txn_type_id number := 51;
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_CSILOSHP_U;