DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CSIWIPBR_U

Source


1 PACKAGE BODY XNP_CSIWIPBR_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 := 'CSIWIPBR' ;
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 ( 'CSIWIPBR' ) ;
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 ( 'CSIWIPBR' ) ;
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 := 'CSIWIPBR.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( 'CSIWIPBR', 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(8) := 'CSIWIPBR';
242    l_txn_type_id number   := 76;
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    PROCEDURE debug(p_message in varchar2) IS
248    BEGIN
249      csi_t_gen_utility_pvt.add(p_message);
250    END debug;
251    PROCEDURE init_debug_file IS
252    BEGIN
253      csi_t_gen_utility_pvt.build_file_name(
254        p_file_segment1 => 'csi', p_file_segment2 => to_char(sysdate,'DDMONYYYY'));
255    END init_debug_file;
256  BEGIN
257    savepoint dpl_sp;
258    init_debug_file;
259    debug('  ');
260    debug('START '||l_txn_type||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
261    debug('  XML String: '||p_msg_text);
262    l_error_rec.source_type := l_txn_type;
263    l_error_rec.transaction_type_id := l_txn_type_id;
264    l_error_rec.message_id := p_msg_header.message_id;
265    l_error_rec.message_string := p_msg_text;
266    xnp_xml_utils.decode(
267      p_msg_text => p_msg_text, p_tag => 'MTL_TRANSACTION_ID', x_value => l_txn_id);
268    IF l_txn_id is null THEN
269      l_error_rec.error_text := 'xnp_xml_utils.decode failed. could not derive mtl_txn_id.';
270      RAISE dpl_error;
271    END IF;
272    l_error_rec.source_id := l_txn_id;
273    debug('  mtl_transaction_id : '||l_txn_id);
274    csi_inv_txnstub_pkg.execute_trx_dpl(
275      p_transaction_type  => l_txn_type,
276      p_transaction_id    => l_txn_id,
277      x_trx_return_status => l_return_status,
278      x_trx_error_rec     => l_error_rec);
279    IF l_return_status <> fnd_api.g_ret_sts_success THEN
280      RAISE dpl_error;
281    END IF;
282    init_debug_file;
283    debug('  Transaction completed successfully.');
284    debug('END '||l_txn_type||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
285  EXCEPTION
286    WHEN dpl_error THEN
287      rollback to dpl_sp;
288      init_debug_file;
289      debug('  Transaction '||l_txn_id||' failed. '||l_error_rec.error_text);
290      csi_inv_trxs_pkg.log_csi_error(l_error_rec);
291    WHEN others THEN
292      rollback to dpl_sp;
293      l_error_rec.error_text := substr(sqlerrm, 1, 540);
294      init_debug_file;
295      debug('  Transaction '||l_txn_id||' failed. '||l_error_rec.error_text);
296      IF l_txn_id is not null THEN
297        csi_inv_trxs_pkg.log_csi_error(l_error_rec);
298      ELSE
299        RAISE;
300      END IF;
301  END;
302 END ;
303 PROCEDURE VALIDATE (    p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
304   p_msg_text IN VARCHAR2,
305   x_error_code OUT  NUMBER,
306   x_error_message  OUT VARCHAR2 )  IS
307 BEGIN
308 NULL ;
309 NULL;
310 END ;
311  
312  END XNP_CSIWIPBR_U;