DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CSIEAMWC_U

Source


1 PACKAGE BODY XNP_CSIEAMWC_U AS 
2 PROCEDURE CREATE_MSG  (   XNP$ORGANIZATION_ID NUMBER,
3   XNP$WIP_ENTITY_ID NUMBER,
4   x_msg_header OUT  XNP_MESSAGE.MSG_HEADER_REC_TYPE,
5   x_msg_text   OUT  VARCHAR2,
6   x_error_code OUT  NUMBER,
7   x_error_message OUT VARCHAR2,
8   p_sender_name IN VARCHAR2 DEFAULT NULL,
9   p_recipient_list IN VARCHAR2 DEFAULT NULL,
10   p_version IN NUMBER DEFAULT 1,
11   p_reference_id IN VARCHAR2 DEFAULT NULL,
12   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
13   p_order_id IN NUMBER DEFAULT NULL,
14   p_wi_instance_id  IN NUMBER DEFAULT NULL,
15   p_fa_instance_id  IN NUMBER  DEFAULT NULL,
16   p_delay  IN NUMBER  DEFAULT NULL,
17   p_interval  IN NUMBER  DEFAULT NULL )  IS
18   e_MISSING_MANDATORY_DATA EXCEPTION ;
19   e_NO_DESTINATION EXCEPTION ;
20   l_xml_body VARCHAR2(32767) ;
21   l_xml_doc  VARCHAR2(32767) ;
22   l_xml_header VARCHAR2(32767) ;
23   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
24 BEGIN
25   x_error_code := 0 ;
26   x_error_message := NULL ;
27   XNP_XML_UTILS.initialize_doc ( ) ;
28 /*construct the XML header */
29 /* retreive the next message ID */
30   XNP_MESSAGE.get_sequence ( l_msg_header.message_id ) ;
31   IF (p_reference_id IS NULL) THEN
32     l_msg_header.reference_id := l_msg_header.message_id ;
33   ELSE
34     l_msg_header.reference_id := p_reference_id ;
35   END IF ;
36 /* append header parameters to make header */
37   XNP_XML_UTILS.write_element ( 'MESSAGE_ID',l_msg_header.message_id ) ;
38   XNP_XML_UTILS.write_leaf_element ( 'REFERENCE_ID',l_msg_header.reference_id ) ;
39   l_msg_header.opp_reference_id := p_opp_reference_id ;
40   XNP_XML_UTILS.write_leaf_element ( 'OPP_REFERENCE_ID',l_msg_header.opp_reference_id ) ;
41   l_msg_header.message_code := 'CSIEAMWC' ;
42   XNP_XML_UTILS.write_leaf_element ( 'MESSAGE_CODE',l_msg_header.message_code ) ;
43   l_msg_header.version := p_version ;
44   XNP_XML_UTILS.write_leaf_element ( 'VERSION',l_msg_header.version ) ;
45   l_msg_header.creation_date := SYSDATE ;
46   l_msg_header.recipient_name := p_recipient_list ;
47   XNP_XML_UTILS.write_element ( 'CREATION_DATE',l_msg_header.creation_date ) ;
48   l_msg_header.sender_name := p_sender_name ;
49   XNP_XML_UTILS.write_leaf_element ( 'SENDER_NAME',l_msg_header.sender_name ) ;
50   XNP_XML_UTILS.write_leaf_element ( 'RECIPIENT_NAME',l_msg_header.recipient_name ) ;
51   l_msg_header.direction_indr := 'E' ;
52   l_msg_header.order_id := p_order_id ;
53   l_msg_header.wi_instance_id := p_wi_instance_id ;
54   l_msg_header.fa_instance_id := p_fa_instance_id ;
55   XNP_XML_UTILS.write_leaf_element ( 'ORGANIZATION_ID', XNP$ORGANIZATION_ID );
56   XNP_XML_UTILS.write_leaf_element ( 'WIP_ENTITY_ID', XNP$WIP_ENTITY_ID );
57 /* retreieve the XML header */
58   XNP_XML_UTILS.get_document ( l_xml_header ) ;
59 /* append the XML headerto message */
60   XNP_XML_UTILS.initialize_doc ( ) ;
61   XNP_XML_UTILS.xml_decl ;
62   XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
63   XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
64 /* construct the message body */
65     XNP_XML_UTILS.begin_segment ( 'CSIEAMWC' ) ;
66     IF ( XNP$WIP_ENTITY_ID IS NULL) THEN
67       x_error_message :='Missing Mandatory Attribute - WIP_ENTITY_ID' ;
68      fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
69      fnd_message.set_token('ATTRIBUTE','WIP_ENTITY_ID' ) ;
70      x_error_message := fnd_message.get ; 
71       RAISE e_MISSING_MANDATORY_DATA ;
72     END IF ;
73     XNP_XML_UTILS.write_leaf_element ( 'WIP_ENTITY_ID', XNP$WIP_ENTITY_ID ) ;
74     IF ( XNP$ORGANIZATION_ID IS NULL) THEN
75       x_error_message :='Missing Mandatory Attribute - ORGANIZATION_ID' ;
76      fnd_message.set_name('XNP','XNP_MISSING_MANDATORY_ATTR');
77      fnd_message.set_token('ATTRIBUTE','ORGANIZATION_ID' ) ;
78      x_error_message := fnd_message.get ; 
79       RAISE e_MISSING_MANDATORY_DATA ;
80     END IF ;
81     XNP_XML_UTILS.write_leaf_element ( 'ORGANIZATION_ID', XNP$ORGANIZATION_ID ) ;
82     XNP_XML_UTILS.end_segment ( 'CSIEAMWC' ) ;
83   XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
84   XNP_XML_UTILS.get_document( l_xml_doc ) ;
85 /* assign the header and msg text to output parameters */
86   x_msg_header := l_msg_header ;
87   x_msg_text   := l_xml_doc ;
88 /* handle exceptions */
89   EXCEPTION
90   WHEN e_MISSING_MANDATORY_DATA THEN
91     x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
92   WHEN OTHERS THEN
93     x_error_code := SQLCODE ;
94     x_error_message := 'CSIEAMWC.create_msg()::' || SQLERRM ;
95 END ;
96 PROCEDURE PUBLISH  (   XNP$ORGANIZATION_ID NUMBER,
97   XNP$WIP_ENTITY_ID NUMBER,
98   x_message_id OUT  NUMBER,
99   x_error_code OUT  NUMBER,
100   x_error_message OUT VARCHAR2,  
101   p_consumer_list IN VARCHAR2 DEFAULT NULL,  
102   p_sender_name IN VARCHAR2 DEFAULT NULL,  
103   p_recipient_list IN VARCHAR2 DEFAULT NULL,
104   p_version IN NUMBER DEFAULT 1,
105   p_reference_id IN VARCHAR2 DEFAULT NULL,
106   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
107   p_order_id IN NUMBER DEFAULT NULL,
108   p_wi_instance_id  IN NUMBER DEFAULT NULL,
109   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
110   e_NO_DESTINATION EXCEPTION ;
111   l_recipient_list VARCHAR2 (2000) ;
112   l_consumer_list VARCHAR2 (4000) ;
113   l_queue_name VARCHAR2 (2000) ;
114   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
115   l_msg_text VARCHAR2(32767) ;
116 BEGIN
117   x_error_code := 0 ;
118   x_error_message := NULL ;
119 /* check if the consumer list is NULL */
120   l_consumer_list := p_consumer_list ;
121   IF (l_consumer_list IS NULL) THEN
122     XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'CSIEAMWC', l_consumer_list );
123   END IF;
124   l_recipient_list := p_recipient_list ;
125 l_queue_name := 'XNP_IN_EVT_Q';
126 /* create the XML message */
127   CREATE_MSG (
128     XNP$ORGANIZATION_ID=>XNP$ORGANIZATION_ID,
129     XNP$WIP_ENTITY_ID=>XNP$WIP_ENTITY_ID,
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=>'1', 
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=>'1' ) ; 
162     END IF ;
163 /* out processing logic */
164 NULL;
165   END IF ;
166 EXCEPTION
167   WHEN e_NO_DESTINATION THEN
168     x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
169   WHEN OTHERS THEN
170     x_error_code := SQLCODE ;
171     x_error_message := SQLERRM ;
172 END ;
173 PROCEDURE SEND  (   XNP$ORGANIZATION_ID NUMBER,
174   XNP$WIP_ENTITY_ID NUMBER,
175   x_message_id OUT  NUMBER,
176   x_error_code OUT  NUMBER,
177   x_error_message OUT VARCHAR2,  
178   p_consumer_name  IN VARCHAR2,  
179   p_sender_name  IN VARCHAR2 DEFAULT NULL,  
180   p_recipient_name  IN VARCHAR2 DEFAULT NULL,  
181   p_version  IN NUMBER DEFAULT 1,  
182   p_reference_id IN VARCHAR2 DEFAULT NULL,
183   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
184   p_order_id IN NUMBER DEFAULT NULL,
185   p_wi_instance_id  IN NUMBER DEFAULT NULL,
186   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
187 l_recipient_name  VARCHAR2(80);
188 BEGIN
189   x_error_code := 0;
190   x_error_message := NULL ;
191   l_recipient_name := p_recipient_name ;
192   IF (l_recipient_name IS NULL) THEN
193     l_recipient_name := p_consumer_name ;
194   END IF;
195   PUBLISH (
196     XNP$ORGANIZATION_ID=>XNP$ORGANIZATION_ID,
197     XNP$WIP_ENTITY_ID=>XNP$WIP_ENTITY_ID,
198     x_message_id=>x_message_id,
199     x_error_code=>x_error_code,
200     x_error_message=>x_error_message,
201     p_consumer_list=>p_consumer_name,
202     p_sender_name=>p_sender_name,
203     p_recipient_list=>l_recipient_name,
204     p_version=>p_version,
205     p_reference_id=>p_reference_id,
206     p_opp_reference_id=>p_opp_reference_id,
207     p_order_id=>p_order_id,
208     p_wi_instance_id=>p_wi_instance_id,
209     p_fa_instance_id=>p_fa_instance_id ) ;
210 END ;
211 PROCEDURE PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
212   p_msg_text IN VARCHAR2,
213   x_error_code OUT  NUMBER,
214   x_error_message  OUT VARCHAR2,
215   p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
216 BEGIN
217 NULL ;
218 NULL;
219 END ;
220 PROCEDURE DEFAULT_PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
221   p_msg_text IN VARCHAR2,
222   x_error_code OUT  NUMBER,
223   x_error_message  OUT VARCHAR2 )  IS
224 BEGIN
225 NULL ;
226 DECLARE
227    l_txn_type varchar2(8) := 'CSIEAMWC';
228    l_txn_type_id number := 92;
229    l_wip_entity_id number;
230    l_org_id number;
231    l_error_rec csi_datastructures_pub.transaction_error_rec;
232    l_return_status varchar2(1);
233    dpl_error exception;
234    PROCEDURE debug(p_message in varchar2) IS
235    BEGIN
236      csi_t_gen_utility_pvt.add(p_message);
237    END debug;
238    PROCEDURE init_debug_file IS
239    BEGIN
240      csi_t_gen_utility_pvt.build_file_name(
241        p_file_segment1 => 'csi', p_file_segment2 => to_char(sysdate,'DDMONYYYY'));
242    END init_debug_file;
243  BEGIN
244    savepoint dpl_sp;
245    init_debug_file;
246    debug('  ');
247    debug('START '||l_txn_type||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
248    debug('  XML String: '||p_msg_text);
249    l_error_rec.source_type := l_txn_type;
250    l_error_rec.transaction_type_id := l_txn_type_id;
251    l_error_rec.message_id := p_msg_header.message_id;
252    l_error_rec.message_string := p_msg_text;
253    xnp_xml_utils.decode(
254      p_msg_text => p_msg_text, p_tag => 'WIP_ENTITY_ID', x_value => l_wip_entity_id);
255    IF l_wip_entity_id is null THEN
256      l_error_rec.error_text := 'xnp_xml_utils.decode failed. could not derive wip_entity_id.';
257      RAISE dpl_error;
258    END IF;
259    l_error_rec.source_id := l_wip_entity_id;
260    debug('  wip_entity_id   : '||l_wip_entity_id);
261    xnp_xml_utils.decode(
262      p_msg_text => p_msg_text, p_tag => 'ORGANIZATION_ID', x_value => l_org_id);
263    IF l_org_id is null THEN
264      l_error_rec.error_text := 'xnp_xml_utils.decode failed. could not derive organization_id.';
265      RAISE dpl_error;
266    END IF;
267    debug('  organization_id :'||l_org_id);
268    csi_wip_trxs_pkg.eam_wip_completion(
269      p_wip_entity_id    => l_wip_entity_id,
270      p_organization_id  => l_org_id,
271      px_trx_error_rec   => l_error_rec,
272      x_return_status    => l_return_status);
273    init_debug_file;
274    debug('  Transaction completed successfully.');
275    debug('END '||l_txn_type||'-'||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
276  EXCEPTION
277    WHEN dpl_error THEN
278      rollback to dpl_sp;
279      init_debug_file;
280      debug('  Transaction '||l_wip_entity_id||' failed. '||l_error_rec.error_text);
281      csi_inv_trxs_pkg.log_csi_error(l_error_rec);
282    WHEN others THEN
283      rollback to dpl_sp;
284      l_error_rec.error_text := substr(sqlerrm, 1, 540);
285      init_debug_file;
286      debug('  Transaction '||l_wip_entity_id||' failed. '||l_error_rec.error_text);
287      IF l_wip_entity_id is not null THEN
288        csi_inv_trxs_pkg.log_csi_error(l_error_rec);
289      ELSE
290        RAISE;
291      END IF;
292  END;
293 END ;
294 PROCEDURE VALIDATE (    p_msg_header IN OUT XNP_MESSAGE.MSG_HEADER_REC_TYPE,
295   p_msg_text IN VARCHAR2,
296   x_error_code OUT  NUMBER,
297   x_error_message  OUT VARCHAR2 )  IS
298 BEGIN
299 NULL ;
300 NULL;
301 END ;
302  
303  END XNP_CSIEAMWC_U;