DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_XDP_LINE_DONE_U

Source


1 PACKAGE BODY XNP_XDP_LINE_DONE_U AS
2 /*$Header: XNPLIDNB.pls 120.1 2005/06/09 02:56:28 appldev  $*/
3 PROCEDURE CREATE_MSG  (   XNP$LINE_ITEM_ID NUMBER,
4   x_msg_header OUT NOCOPY  XNP_MESSAGE.MSG_HEADER_REC_TYPE,
5   x_msg_text   OUT NOCOPY  VARCHAR2,
6   x_error_code OUT NOCOPY  NUMBER,
7   x_error_message OUT NOCOPY VARCHAR2,
8   p_sender_name IN VARCHAR2 DEFAULT NULL,
9   p_recipient_list IN VARCHAR2 DEFAULT NULL,
10 
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 
25   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
26   l_loop_index_1 NUMBER ;
27 BEGIN
28   x_error_code := 0 ;
29   x_error_message := NULL ;
30   XNP_XML_UTILS.initialize_doc ( ) ;
31 /*construct the XML header */
32 /* retreive the next message ID */
33   XNP_MESSAGE.get_sequence ( l_msg_header.message_id ) ;
34   IF (p_reference_id IS NULL) THEN
35     l_msg_header.reference_id := l_msg_header.message_id ;
36   ELSE
37     l_msg_header.reference_id := p_reference_id ;
38 
39   END IF ;
40 /* append header parameters to make header */
41   XNP_XML_UTILS.write_element ( 'MESSAGE_ID',l_msg_header.message_id ) ;
42   XNP_XML_UTILS.write_leaf_element ( 'REFERENCE_ID',l_msg_header.reference_id ) ;
43 
44   l_msg_header.opp_reference_id := p_opp_reference_id ;
45   XNP_XML_UTILS.write_leaf_element ( 'OPP_REFERENCE_ID',l_msg_header.opp_reference_id ) ;
46 
47   l_msg_header.message_code := 'XDP_LINE_DONE' ;
48   XNP_XML_UTILS.write_leaf_element ( 'MESSAGE_CODE',l_msg_header.message_code ) ;
49   l_msg_header.version := p_version ;
50   XNP_XML_UTILS.write_leaf_element ( 'VERSION',l_msg_header.version ) ;
51   l_msg_header.creation_date := SYSDATE ;
52   l_msg_header.recipient_name := p_recipient_list ;
53   XNP_XML_UTILS.write_element ( 'CREATION_DATE',l_msg_header.creation_date ) ;
54   l_msg_header.sender_name := p_sender_name ;
55   XNP_XML_UTILS.write_leaf_element ( 'SENDER_NAME',l_msg_header.sender_name ) ;
56   XNP_XML_UTILS.write_leaf_element ( 'RECIPIENT_NAME',l_msg_header.recipient_name ) ;
57 
58   l_msg_header.direction_indr := 'E' ;
59   l_msg_header.order_id := p_order_id ;
60 
61   l_msg_header.wi_instance_id := p_wi_instance_id ;
62   l_msg_header.fa_instance_id := p_fa_instance_id ;
63   XNP_XML_UTILS.write_leaf_element ( 'LINE_ITEM_ID', XNP$LINE_ITEM_ID );
64 /* retreieve the XML header */
65   XNP_XML_UTILS.get_document ( l_xml_header ) ;
66 /* append the XML headerto message */
67   XNP_XML_UTILS.initialize_doc ( ) ;
68   XNP_XML_UTILS.xml_decl ;
69   XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
70   XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
71 /* construct the message body */
72     XNP_XML_UTILS.begin_segment ( 'XDP_LINE_DONE' ) ;
73   l_loop_index_1 := 0 ;
74 
75   FOR XNP$XDP_LINE_DONE  IN (SELECT ORDER_ID,
76               LINE_ITEM_ID,
77               STATUS_CODE
78 FROM XDP_ORDER_LINE_ITEMS WHERE
79 LINE_ITEM_ID=XNP$LINE_ITEM_ID)
80  LOOP
81     l_loop_index_1 := l_loop_index_1 + 1 ;
82     IF ( XNP$XDP_LINE_DONE.ORDER_ID IS NULL) THEN
83        fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_ATTR' );
84        fnd_message.set_token( 'ATTRIBUTE','ORDER_ID' ) ;
85       x_error_message := fnd_message.get ;
86       RAISE e_MISSING_MANDATORY_DATA ;
87     END IF ;
88 
89     XNP_XML_UTILS.write_leaf_element ( 'ORDER_ID', XNP$XDP_LINE_DONE.ORDER_ID ) ;
90 
91     IF ( XNP$LINE_ITEM_ID IS NULL) THEN
92       x_error_message :='Missing Mandatory Attribute - LINE_ITEM_ID' ;
93      fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
94      fnd_message.set_token('ATTRIBUTE','LINE_ITEM_ID' ) ;
95      x_error_message := fnd_message.get ;
96       RAISE e_MISSING_MANDATORY_DATA ;
97     END IF ;
98     XNP_XML_UTILS.write_leaf_element ( 'LINE_ITEM_ID', XNP$LINE_ITEM_ID ) ;
99     XNP_XML_UTILS.write_leaf_element ( 'LINE_ITEM_STATUS', XNP$XDP_LINE_DONE.STATUS_CODE ) ;
100     XNP_XML_UTILS.write_leaf_element ( 'SDP_RESULT_CODE', XNP$XDP_LINE_DONE.STATUS_CODE ) ;
101 
102     EXIT ;
103   END LOOP ;
104   IF ( l_loop_index_1 = 0 ) THEN
105        fnd_message.set_name('XNP', 'XNP_MISSING_MANDATORY_DATA' );
106        fnd_message.set_token( 'ELEMENT',', ORDER_ID, LINE_ITEM_ID' ) ;
107       x_error_message := fnd_message.get ;
108     RAISE e_MISSING_MANDATORY_DATA ;
109   END IF ;
110     XNP_XML_UTILS.end_segment ( 'XDP_LINE_DONE' ) ;
111 
112   XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
113   XNP_XML_UTILS.get_document( l_xml_doc ) ;
114 /* assign the header and msg text to output parameters */
115   x_msg_header := l_msg_header ;
116   x_msg_text   := l_xml_doc ;
117 /* handle exceptions */
118   EXCEPTION
119   WHEN e_MISSING_MANDATORY_DATA THEN
120     x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
121   WHEN OTHERS THEN
122     x_error_code := SQLCODE ;
123     x_error_message := 'XDP_LINE_DONE.create_msg()::' || SQLERRM ;
124 END ;
125 
126 PROCEDURE PUBLISH  (   XNP$LINE_ITEM_ID NUMBER,
127   x_message_id OUT NOCOPY  NUMBER,
128   x_error_code OUT NOCOPY  NUMBER,
129   x_error_message OUT NOCOPY VARCHAR2,
130   p_consumer_list IN VARCHAR2 DEFAULT NULL,
131   p_sender_name IN VARCHAR2 DEFAULT NULL,
132   p_recipient_list IN VARCHAR2 DEFAULT NULL,
133   p_version IN NUMBER DEFAULT 1,
134   p_reference_id IN VARCHAR2 DEFAULT NULL,
135   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
136   p_order_id IN NUMBER DEFAULT NULL,
137   p_wi_instance_id  IN NUMBER DEFAULT NULL,
138   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
139 
140   e_NO_DESTINATION EXCEPTION ;
141   l_recipient_list VARCHAR2 (2000) ;
142   l_consumer_list VARCHAR2 (4000) ;
143   l_queue_name VARCHAR2 (2000) ;
144   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
145   l_msg_text VARCHAR2(32767) ;
146 BEGIN
147   x_error_code := 0 ;
148   x_error_message := NULL ;
149 /* check if the consumer list is NULL */
150   l_consumer_list := p_consumer_list ;
151   IF (l_consumer_list IS NULL) THEN
152     XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'XDP_LINE_DONE', l_consumer_list );
153 
154   END IF;
155   l_recipient_list := p_recipient_list ;
156 l_queue_name := 'XNP_IN_EVT_Q';
157 /* create the XML message */
158   CREATE_MSG (
159     XNP$LINE_ITEM_ID=>XNP$LINE_ITEM_ID,
160     x_msg_header=>l_msg_header,
161     x_msg_text=>l_msg_text,
162     x_error_code=>x_error_code,
163     x_error_message=>x_error_message,
164     p_sender_name=>p_sender_name,
165     p_recipient_list=>l_recipient_list,
166     p_version=>p_version,
167     p_reference_id=>p_reference_id,
168     p_opp_reference_id=>p_opp_reference_id,
169     p_order_id=>p_order_id,
170     p_wi_instance_id=>p_wi_instance_id,
171     p_fa_instance_id=>p_fa_instance_id ) ;
172   x_message_id := l_msg_header.message_id ;
173 /* enqueue the XML message for delivery */
174   IF (x_error_code = 0) THEN
175     XNP_MESSAGE.push (
176       p_msg_header => l_msg_header,
177       p_body_text => l_msg_text,
178       p_queue_name => xnp_event.c_internal_evt_q,
179       p_correlation_id => l_msg_header.message_code,
180       p_priority=>'1',
181       p_commit_mode => XNP_MESSAGE.C_ON_COMMIT );
182     IF (l_consumer_list IS NOT NULL) THEN
183       XNP_MESSAGE.GET_SEQUENCE(l_msg_header.message_id) ;
184       XNP_MESSAGE.push (
185         p_msg_header => l_msg_header,
186         p_body_text => l_msg_text,
187       p_queue_name => xnp_event.c_outbound_msg_q,
188         p_recipient_list => l_consumer_list,
189       p_correlation_id => l_msg_header.message_code,
190         p_priority=>'1' ) ;
191     END IF ;
192 /* out processing logic */
193     NULL;
194   END IF ;
195 EXCEPTION
196   WHEN e_NO_DESTINATION THEN
197     x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
198   WHEN OTHERS THEN
199     x_error_code := SQLCODE ;
200     x_error_message := SQLERRM ;
201 END ;
202 PROCEDURE SEND  (   XNP$LINE_ITEM_ID NUMBER,
203   x_message_id OUT NOCOPY  NUMBER,
204   x_error_code OUT NOCOPY  NUMBER,
205   x_error_message OUT NOCOPY VARCHAR2,
206   p_consumer_name  IN VARCHAR2,
207   p_sender_name  IN VARCHAR2 DEFAULT NULL,
208   p_recipient_name  IN VARCHAR2 DEFAULT NULL,
209   p_version  IN NUMBER DEFAULT 1,
210   p_reference_id IN VARCHAR2 DEFAULT NULL,
211   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
212   p_order_id IN NUMBER DEFAULT NULL,
213   p_wi_instance_id  IN NUMBER DEFAULT NULL,
214   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
215 
216 l_recipient_name  VARCHAR2(80);
217 
218 BEGIN
219   x_error_code := 0;
220   x_error_message := NULL ;
221 
222   l_recipient_name := p_recipient_name ;
223   IF (l_recipient_name IS NULL) THEN
224     l_recipient_name := p_consumer_name ;
225   END IF;
226   PUBLISH (
227     XNP$LINE_ITEM_ID=>XNP$LINE_ITEM_ID,
228     x_message_id=>x_message_id,
229     x_error_code=>x_error_code,
230     x_error_message=>x_error_message,
231     p_consumer_list=>p_consumer_name,
232     p_sender_name=>p_sender_name,
233     p_recipient_list=>l_recipient_name,
234     p_version=>p_version,
235     p_reference_id=>p_reference_id,
236     p_opp_reference_id=>p_opp_reference_id,
237     p_order_id=>p_order_id,
238     p_wi_instance_id=>p_wi_instance_id,
239     p_fa_instance_id=>p_fa_instance_id ) ;
240 END ;
241 PROCEDURE PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
242   p_msg_text IN VARCHAR2,
243   x_error_code OUT NOCOPY  NUMBER,
244   x_error_message  OUT NOCOPY VARCHAR2,
245   p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
246 BEGIN
247 NULL ;
248 
249 NULL;
250 END ;
251 PROCEDURE DEFAULT_PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
252   p_msg_text IN VARCHAR2,
253   x_error_code OUT NOCOPY  NUMBER,
254   x_error_message  OUT NOCOPY VARCHAR2 )  IS
255 BEGIN
256 NULL ;
257 NULL;
258 END ;
259 PROCEDURE VALIDATE (    p_msg_header IN OUT NOCOPY XNP_MESSAGE.MSG_HEADER_REC_TYPE,
260   p_msg_text IN VARCHAR2,
261   x_error_code OUT NOCOPY  NUMBER,
262   x_error_message  OUT NOCOPY VARCHAR2 )  IS
263 BEGIN
264 NULL ;
265 NULL;
266 END ;
267 
268 END XNP_XDP_LINE_DONE_U;