DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_XDP_ORDER_DONE_U

Source


1 PACKAGE BODY XNP_XDP_ORDER_DONE_U AS 
2 PROCEDURE CREATE_MSG  (   x_msg_header OUT  XNP_MESSAGE.MSG_HEADER_REC_TYPE,
3   x_msg_text   OUT  VARCHAR2,
4   x_error_code OUT  NUMBER,
5   x_error_message OUT VARCHAR2,
6   p_sender_name IN VARCHAR2 DEFAULT NULL,
7   p_recipient_list IN VARCHAR2 DEFAULT NULL,
8   p_version IN NUMBER DEFAULT 1,
9   p_reference_id IN VARCHAR2 DEFAULT NULL,
10   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
11   p_order_id IN NUMBER DEFAULT NULL,
12   p_wi_instance_id  IN NUMBER DEFAULT NULL,
13   p_fa_instance_id  IN NUMBER  DEFAULT NULL,
14   p_delay  IN NUMBER  DEFAULT NULL,
15   p_interval  IN NUMBER  DEFAULT NULL )  IS
16   e_MISSING_MANDATORY_DATA EXCEPTION ;
17   e_NO_DESTINATION EXCEPTION ;
18   l_xml_body VARCHAR2(32767) ;
19   l_xml_doc  VARCHAR2(32767) ;
20   l_xml_header VARCHAR2(32767) ;
21   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
22   l_loop_index_1 NUMBER ;
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 := 'XDP_ORDER_DONE' ;
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 /* retreieve the XML header */
55   XNP_XML_UTILS.get_document ( l_xml_header ) ;
56 /* append the XML headerto message */
57   XNP_XML_UTILS.initialize_doc ( ) ;
58   XNP_XML_UTILS.xml_decl ;
59   XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
60   XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
61 /* construct the message body */
62     XNP_XML_UTILS.begin_segment ( 'XDP_ORDER_DONE' ) ;
63   l_loop_index_1 := 0 ;
64   FOR XNP$XDP_ORDER_DONE  IN (SELECT STATUS_CODE FROM
65 XDP_ORDER_HEADERS WHERE
66 ORDER_ID=P_ORDER_ID)
67  LOOP 
68     l_loop_index_1 := l_loop_index_1 + 1 ;
69     IF ( p_order_id IS NULL) THEN
70        fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
71        fnd_message.set_token( 'ATTRIBUTE','ORDER_ID' ) ;
72       x_error_message := fnd_message.get ; 
73       RAISE e_MISSING_MANDATORY_DATA ;
74     END IF ;
75     XNP_XML_UTILS.write_leaf_element ( 'ORDER_ID', p_order_id ) ;
76     XNP_XML_UTILS.write_leaf_element ( 'ORDER_STATUS', XNP$XDP_ORDER_DONE.STATUS_CODE ) ;
77     XNP_XML_UTILS.write_leaf_element ( 'SDP_RESULT_CODE', XNP$XDP_ORDER_DONE.STATUS_CODE ) ;
78     EXIT ;
79   END LOOP ;
80   IF ( l_loop_index_1 = 0 ) THEN
81        fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_DATA' );
82        fnd_message.set_token( 'ELEMENT',', ORDER_ID' ) ;
83       x_error_message := fnd_message.get ; 
84     RAISE e_MISSING_MANDATORY_DATA ;
85   END IF ;
86     XNP_XML_UTILS.end_segment ( 'XDP_ORDER_DONE' ) ;
87   XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
88   XNP_XML_UTILS.get_document( l_xml_doc ) ;
89 /* assign the header and msg text to output parameters */
90   x_msg_header := l_msg_header ;
91   x_msg_text   := l_xml_doc ;
92 /* handle exceptions */
93   EXCEPTION
94   WHEN e_MISSING_MANDATORY_DATA THEN
95     x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
96   WHEN OTHERS THEN
97     x_error_code := SQLCODE ;
98     x_error_message := 'XDP_ORDER_DONE.create_msg()::' || SQLERRM ;
99 END ;
100 PROCEDURE PUBLISH  (   x_message_id OUT  NUMBER,
101   x_error_code OUT  NUMBER,
102   x_error_message OUT VARCHAR2,  
103   p_consumer_list IN VARCHAR2 DEFAULT NULL,  
104   p_sender_name IN VARCHAR2 DEFAULT NULL,  
105   p_recipient_list IN VARCHAR2 DEFAULT NULL,
106   p_version IN NUMBER DEFAULT 1,
107   p_reference_id IN VARCHAR2 DEFAULT NULL,
108   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
109   p_order_id IN NUMBER DEFAULT NULL,
110   p_wi_instance_id  IN NUMBER DEFAULT NULL,
111   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
112   e_NO_DESTINATION EXCEPTION ;
113   l_recipient_list VARCHAR2 (2000) ;
114   l_consumer_list VARCHAR2 (4000) ;
115   l_queue_name VARCHAR2 (2000) ;
116   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
117   l_msg_text VARCHAR2(32767) ;
118 BEGIN
119   x_error_code := 0 ;
120   x_error_message := NULL ;
121 /* check if the consumer list is NULL */
122   l_consumer_list := p_consumer_list ;
123   IF (l_consumer_list IS NULL) THEN
124     XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'XDP_ORDER_DONE', l_consumer_list );
125   END IF;
126   l_recipient_list := p_recipient_list ;
127 l_queue_name := 'XNP_IN_EVT_Q';
128 /* create the XML message */
129   CREATE_MSG (
130     x_msg_header=>l_msg_header,
131     x_msg_text=>l_msg_text,
132     x_error_code=>x_error_code,
133     x_error_message=>x_error_message,
134     p_sender_name=>p_sender_name,
135     p_recipient_list=>l_recipient_list,
136     p_version=>p_version,
137     p_reference_id=>p_reference_id,
138     p_opp_reference_id=>p_opp_reference_id,
139     p_order_id=>p_order_id,
140     p_wi_instance_id=>p_wi_instance_id,
141     p_fa_instance_id=>p_fa_instance_id ) ;
142   x_message_id := l_msg_header.message_id ;
143 /* enqueue the XML message for delivery */
144   IF (x_error_code = 0) THEN
145     XNP_MESSAGE.push ( 
146       p_msg_header => l_msg_header, 
147       p_body_text => l_msg_text, 
148       p_queue_name => xnp_event.c_internal_evt_q, 
149       p_correlation_id => l_msg_header.message_code, 
150       p_priority=>'3', 
151       p_commit_mode => XNP_MESSAGE.C_ON_COMMIT ); 
152     IF (l_consumer_list IS NOT NULL) THEN
153       XNP_MESSAGE.GET_SEQUENCE(l_msg_header.message_id) ;
154       l_msg_header.direction_indr := 'O';
155       XNP_MESSAGE.push ( 
156         p_msg_header => l_msg_header, 
157         p_body_text => l_msg_text, 
158       p_queue_name => xnp_event.c_outbound_msg_q, 
159         p_recipient_list => l_consumer_list, 
160       p_correlation_id => l_msg_header.message_code, 
161         p_priority=>'3' ) ; 
162     END IF ;
163 /* out processing logic */
164   END IF ;
165 EXCEPTION
166   WHEN e_NO_DESTINATION THEN
167     x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
168   WHEN OTHERS THEN
169     x_error_code := SQLCODE ;
170     x_error_message := SQLERRM ;
171 END ;
172 PROCEDURE SEND  (   x_message_id OUT  NUMBER,
173   x_error_code OUT  NUMBER,
174   x_error_message OUT VARCHAR2,  
175   p_consumer_name  IN VARCHAR2,  
176   p_sender_name  IN VARCHAR2 DEFAULT NULL,  
177   p_recipient_name  IN VARCHAR2 DEFAULT NULL,  
178   p_version  IN NUMBER DEFAULT 1,  
179   p_reference_id IN VARCHAR2 DEFAULT NULL,
180   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
181   p_order_id IN NUMBER DEFAULT NULL,
182   p_wi_instance_id  IN NUMBER DEFAULT NULL,
183   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
184 l_recipient_name  VARCHAR2(80);
185 BEGIN
186   x_error_code := 0;
187   x_error_message := NULL ;
188   l_recipient_name := p_recipient_name ;
189   IF (l_recipient_name IS NULL) THEN
190     l_recipient_name := p_consumer_name ;
191   END IF;
192   PUBLISH (
193     x_message_id=>x_message_id,
194     x_error_code=>x_error_code,
195     x_error_message=>x_error_message,
196     p_consumer_list=>p_consumer_name,
197     p_sender_name=>p_sender_name,
198     p_recipient_list=>l_recipient_name,
199     p_version=>p_version,
200     p_reference_id=>p_reference_id,
201     p_opp_reference_id=>p_opp_reference_id,
202     p_order_id=>p_order_id,
203     p_wi_instance_id=>p_wi_instance_id,
204     p_fa_instance_id=>p_fa_instance_id ) ;
205 END ;
206 PROCEDURE 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,
210   p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
211 BEGIN
212 NULL ;
213 END ;
214 PROCEDURE DEFAULT_PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
215   p_msg_text IN VARCHAR2,
216   x_error_code OUT  NUMBER,
217   x_error_message  OUT VARCHAR2 )  IS
218 BEGIN
219 NULL ;
220 END ;
221 PROCEDURE VALIDATE (    p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
222   p_msg_text IN VARCHAR2,
223   x_error_code OUT  NUMBER,
224   x_error_message  OUT VARCHAR2 )  IS
225 BEGIN
226 NULL ;
227 END ;
228  
229  END XNP_XDP_ORDER_DONE_U;