DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CSISOFUL_U

Source


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