[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;