DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CSEPORCV_U

Source


1 PACKAGE BODY XNP_CSEPORCV_U AS 
2 PROCEDURE CREATE_MSG  (   XNP$RCV_TRANSACTION_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 := 'CSEPORCV' ;
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 ( 'RCV_TRANSACTION_ID', XNP$RCV_TRANSACTION_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 ( 'CSEPORCV' ) ;
64     IF ( XNP$RCV_TRANSACTION_ID IS NULL) THEN
65       x_error_message :='Missing Mandatory Attribute - RCV_TRANSACTION_ID' ;
66      fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
67      fnd_message.set_token('ATTRIBUTE','RCV_TRANSACTION_ID' ) ;
68      x_error_message := fnd_message.get ; 
69       RAISE e_MISSING_MANDATORY_DATA ;
70     END IF ;
71     XNP_XML_UTILS.write_leaf_element ( 'RCV_TRANSACTION_ID', XNP$RCV_TRANSACTION_ID ) ;
72     XNP_XML_UTILS.end_segment ( 'CSEPORCV' ) ;
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 := 'CSEPORCV.create_msg()::' || SQLERRM ;
85 END ;
86 PROCEDURE PUBLISH  (   XNP$RCV_TRANSACTION_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( 'CSEPORCV', 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$RCV_TRANSACTION_ID=>XNP$RCV_TRANSACTION_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$RCV_TRANSACTION_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$RCV_TRANSACTION_ID=>XNP$RCV_TRANSACTION_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_api_version        	NUMBER := 1.0;
214 l_commit               	VARCHAR2(1) := FND_API.G_FALSE;
215 l_init_msg_list       	VARCHAR2(1) := FND_API.G_TRUE;
216 l_validation_level 	NUMBER := FND_API.G_VALID_LEVEL_FULL;
217 l_error_message  	VARCHAR2(2000);
218 l_return_status     	VARCHAR2(1);
219 l_fnd_success       	VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
220 l_rcv_attributes_rec    	CSE_DATASTRUCTURES_PUB.RCV_ATTRIBUTES_REC_TYPE;
221 l_Rcv_Txn_tbl         CSE_Datastructures_Pub.Rcv_Txn_Tbl_Type;
222 l_trx_error_rec     	CSI_DATASTRUCTURES_PUB.TRANSACTION_ERROR_REC;
223 l_msg_count        	NUMBER;
224 l_msg_data          	VARCHAR2(2000);
225 l_txn_error_id      	NUMBER;
226 e_dpl_error         	EXCEPTION;
227 l_type_id               NUMBER;
228 l_xml_string            VARCHAR2(2000);
229 l_error_stage           VARCHAR2(30);
230 BEGIN
231   l_return_status     := l_fnd_success;
232   l_error_message  := NULL;
233   savepoint one;
234 l_Type_Id:= CSE_UTIL_PKG.Get_Txn_Type_Id('PO_RECEIPT_INTO_PROJECT','PO');
235   cse_po_receipt_into_project.decode_message
236        (p_msg_header,p_msg_text,l_return_status,l_error_message,
237         l_rcv_attributes_rec);
238   IF NOT l_return_status = l_fnd_success THEN
239     RAISE e_dpl_error;
240   END IF;
241   l_error_stage := cse_datastructures_pub.g_ib_update;
242   cse_po_receipt_into_project.update_csi_data
243       (l_rcv_attributes_rec, l_Rcv_Txn_Tbl,
244        l_return_status,l_error_message);
245   IF NOT l_return_status = l_fnd_success THEN
246     RAISE e_dpl_error;
247   END IF;
248   savepoint one;
249   l_error_stage := cse_datastructures_pub.g_pa_interface;
250   cse_po_receipt_into_project.interface_nl_to_Pa
251       (l_Rcv_Txn_Tbl,
252        l_return_status,l_error_message);
253   IF NOT l_return_status = l_fnd_success THEN
254     RAISE e_dpl_error;
255   END IF;
256   cse_po_receipt_into_project.cleanup_transaction_temps(
257     l_rcv_attributes_rec.rcv_transaction_id);
258   EXCEPTION
259     WHEN e_dpl_error THEN
260       IF l_rcv_attributes_rec.rcv_transaction_id is null THEN
261         RAISE;
262       END IF;
263       l_trx_error_rec                        := cse_util_pkg.Init_Txn_Error_Rec;
264       cse_util_pkg.build_error_string(l_xml_string,'RCV_TRANSACTION_ID',l_rcv_attributes_rec.rcv_transaction_id);
265       l_trx_error_rec.message_id             := l_rcv_attributes_rec.message_id;
266       l_trx_error_rec.error_text             := l_error_message;
267       l_trx_error_rec.source_type            := 'RCV_TRANSACTIONS';
268       l_trx_error_rec.source_id              := l_rcv_attributes_rec.rcv_transaction_id;
269       l_Trx_error_rec.Transaction_Type_ID              := l_type_id;
270       l_Trx_Error_Rec.message_string         := l_xml_string;
271       l_trx_error_rec.error_stage            := l_error_stage;
272       rollback to one;
273       csi_transactions_pvt.create_txn_error
274            (l_api_version, l_init_msg_list, l_commit, l_validation_level,
275             l_trx_error_rec, l_return_status, l_msg_count,l_msg_data,
276             l_txn_error_id);
277     WHEN OTHERS THEN
278       IF l_rcv_attributes_rec.rcv_transaction_id is null THEN
279         RAISE;
280       END IF;
281       l_trx_error_rec                        := cse_util_pkg.Init_Txn_Error_Rec;
282       cse_util_pkg.build_error_string(l_xml_string,'RCV_TRANSACTION_ID',l_rcv_attributes_rec.rcv_transaction_id);
283       l_trx_error_rec.message_id             := l_rcv_attributes_rec.message_id;
284       l_trx_error_rec.error_text             := 'When Others in CSEPORCV DPL '||'-'||SQLERRM;
285       l_trx_error_rec.source_type            := 'RCV_TRANSACTIONS';
286       l_trx_error_rec.source_id              := l_rcv_attributes_rec.rcv_transaction_id;
287       l_Trx_Error_Rec.Transaction_Type_ID    := l_type_id;
288       l_Trx_Error_Rec.message_string         := l_xml_string;
289       l_trx_error_rec.error_stage            := l_error_stage;
290       rollback to one;
291       csi_transactions_pvt.create_txn_error
292            (l_api_version, l_init_msg_list, l_commit, l_validation_level,
293             l_trx_error_rec, l_return_status, l_msg_count,l_msg_data,
294             l_txn_error_id);
295   END;
296 END ;
297 PROCEDURE VALIDATE (    p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
298   p_msg_text IN VARCHAR2,
299   x_error_code OUT  NUMBER,
300   x_error_message  OUT VARCHAR2 )  IS
301 BEGIN
302 NULL ;
303 NULL;
304 END ;
305  
306  END XNP_CSEPORCV_U;