DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_ESG_TRANSPORT_PVT

Source


1 PACKAGE BODY OKL_ESG_TRANSPORT_PVT AS
2 /* $Header: OKLESTRB.pls 120.0.12010000.2 2009/02/19 20:21:59 djanaswa ship $ */
3 
4   ---------------------------------------------------------------------------
5   -- PRIVATE MEMBER VARIABLES
6   ---------------------------------------------------------------------------
7   G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
8   G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
9   G_IS_DEBUG_EXCEPTION_ON BOOLEAN;
10   G_IS_DEBUG_ERROR_ON BOOLEAN;
11   G_IS_DEBUG_PROCEDURE_ON BOOLEAN;
12 
13   PROCEDURE transport(p_transaction_number  IN NUMBER)
14   IS
15     request   utl_http.req;
16     response  utl_http.resp;
17 
18     CURSOR c_tp IS
19     SELECT p.party_id, tp.tp_header_id, tp.party_site_id, tp.party_type
20       FROM ecx_tp_headers tp
21          , hz_parties p
22      WHERE tp.party_id = p.party_id
23        AND p.party_name = 'SuperTrump';
24 
25     CURSOR c_tt (b_transaction_number NUMBER) is
26     SELECT t.ext_subtype, t.protocol_address, t.username, t.password,
27            t.protocol_type   -- added bug8209104
28       FROM ecx_tp_details_v t
29          , okl_stream_interfaces si
30      WHERE t.transaction_type = 'OKL_ST'
31        AND t.transaction_subtype = si.deal_type
32        AND si.transaction_number = b_transaction_number;
33 
34     rec  c_tp%ROWTYPE;
35     rec2 c_tt%ROWTYPE;
36 
37     l_url VARCHAR2(255);
38     l_path VARCHAR2(255);
39     l_password VARCHAR2(255);
40 
41     l_max_timeout NUMBER := 3600; -- seconds
42     inbound_buffer VARCHAR2(32767);
43     l_parameter_data VARCHAR2(4096);
44 
45     ctime DATE;
46 
47     l_api_name CONSTANT VARCHAR2(30) := 'transport';
48     l_module VARCHAR2(255) := G_MODULE||'.'||l_api_name||'.'||p_transaction_number;
49   BEGIN
50     IF(G_IS_DEBUG_PROCEDURE_ON) THEN
51       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': begin okl_esg_transport_pvt.transport');
52     END IF;
53 
54     OPEN c_tp;
55     FETCH c_tp INTO rec;
56     CLOSE c_tp;
57 
58     OPEN c_tt(p_transaction_number);
59     FETCH c_tt INTO rec2;
60     CLOSE c_tt;
61 
62     l_url := rec2.protocol_address;
63 
64     l_parameter_data :=
65              'TRANSACTION_TYPE=OKL_ST'||
66              '&'||'TRANSACTION_SUBTYPE='||rec2.ext_subtype||
67              '&'||'DOCUMENT_NUMBER='||p_transaction_number||
68              '&'||'PARTYID='||rec.party_id||
69              '&'||'PARTY_SITE_ID='||rec.party_site_id||
70              '&'||'PARTY_TYPE='||rec.party_type||
71              '&'||'PROTOCOL_TYPE='||rec2.protocol_type||
72              '&'||'PROTOCOL_ADDRESS='||rec2.protocol_address||
73              '&'||'USERNAME='||rec2.username||
74              '&'||'PASSWORD=XXXX'||'&';
75 
76     ----------------------------------------------------------------------------------
77     -- 1. Send the outbound xml to Proxy Server
78     ----------------------------------------------------------------------------------
79     utl_http.set_transfer_timeout(l_max_timeout);
80    -- bug8209104 start
81     IF upper(rec2.protocol_type) = 'HTTPS' THEN
82        IF(G_IS_DEBUG_PROCEDURE_ON) THEN
83             OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': calling UTL_HTTP.SET_WALLET');
84          END IF;
85 
86       l_path :=  'file:' || fnd_profile.value('FND_DB_WALLET_DIR');
87       l_password := fnd_preference.eget('#INTERNAL','WF_WEBSERVICES','EWALLETPWD', 'WFWS_PWD');
88 
89       UTL_HTTP.SET_WALLET (l_path, l_password);
90 
91     END IF;
92    -- bug8209104 end
93 
94     -- request := utl_http.begin_request(l_url, 'POST', 'HTTP/1.0');  -- commented bug8209104
95 IF(G_IS_DEBUG_PROCEDURE_ON) THEN
96       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': calling utl_http.begin_request');
97 END IF;
98     request := utl_http.begin_request(url=>l_url,  method=>'POST');   -- added bug8209104
99 IF(G_IS_DEBUG_PROCEDURE_ON) THEN
100       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': calling utl_http.set_header');
101 END IF;
102     utl_http.set_header(request, 'Content-Type', 'application/x-www-form-urlencoded');
103     utl_http.set_header(request, 'Content-Length', lengthb(l_parameter_data));
104     utl_http.write_text(request, l_parameter_data);
105 
106     ----------------------------------------------------------------------------------
107     -- 2. Get response from Proxy Server
108     ----------------------------------------------------------------------------------
109     response := utl_http.get_response(request);
110     utl_http.read_text(response, inbound_buffer);
111     utl_http.end_response(response);
112 
113     IF(G_IS_DEBUG_PROCEDURE_ON) THEN
114       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': end okl_esg_transport_pvt.transport');
115     END IF;
116   END transport;
117 
118   PROCEDURE store_outxml(p_transaction_number IN NUMBER, p_xml IN CLOB)
119   IS
120     PRAGMA AUTONOMOUS_TRANSACTION;
121 
122     l_api_name CONSTANT VARCHAR2(30) := 'store_outxml';
123     l_module VARCHAR2(255) := G_MODULE||'.'||l_api_name||'.'||p_transaction_number;
124   BEGIN
125     IF(G_IS_DEBUG_PROCEDURE_ON) THEN
126       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': begin okl_esg_transport_pvt.store_outxml');
127     END IF;
128 
129     INSERT INTO OKL_STREAM_TRX_DATA
130     (id, transaction_number, out_xml)
131     VALUES
132     (p_transaction_number
133     ,p_transaction_number
134     ,p_xml
135     );
136 
137     COMMIT;
138 
139     IF(G_IS_DEBUG_PROCEDURE_ON) THEN
140       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': end okl_esg_transport_pvt.store_outxml');
141     END IF;
142 
143   END store_outxml;
144 
145   PROCEDURE process_esg(p_transaction_number  IN NUMBER
146                        ,x_return_status      OUT NOCOPY VARCHAR2)
147   IS
148     l_api_name CONSTANT VARCHAR2(30) := 'process_esg';
149     l_outbound_xml CLOB;
150     l_inbound_xml CLOB;
151 
152     l_resultout VARCHAR2(1);
153     amount     Binary_integer := 0;
154 
155     l_return_status VARCHAR2(1);
156     l_timeout NUMBER;
157 
158     ctime DATE;
159 
160     l_module VARCHAR2(255) := G_MODULE||'.'||l_api_name||'.'||p_transaction_number;
161   BEGIN
162     x_return_status := G_RET_STS_SUCCESS;
163 
164     IF(G_DEBUG_ENABLED = 'Y') THEN
165       G_IS_DEBUG_EXCEPTION_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_EXCEPTION);
166     END IF;
167 
168     IF(G_DEBUG_ENABLED = 'Y') THEN
169       G_IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_PROCEDURE);
170     END IF;
171 
172     IF(G_DEBUG_ENABLED = 'Y') THEN
173       G_IS_DEBUG_ERROR_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_ERROR);
174     END IF;
175 
176     IF(G_IS_DEBUG_PROCEDURE_ON) THEN
177       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': begin okl_esg_transport_pvt.process_esg');
178     END IF;
179 
180     ----------------------------------------------------------------------------------
181     -- 1. Generate an outbound xml document from XML Gateway
182     ----------------------------------------------------------------------------------
183     l_outbound_xml := okl_xmlgen_pvt.generate_xmldocument(p_transaction_number);
184 
185     ----------------------------------------------------------------------------------
186     -- 2. Store the outbound xml into OKL_STREAM_TRX_DATA table
187     ----------------------------------------------------------------------------------
188     store_outxml(p_transaction_number, l_outbound_xml);
189 
190     ----------------------------------------------------------------------------------
191     -- 3. Transporting outbound xml to Proxy Server
192     ----------------------------------------------------------------------------------
193     transport(p_transaction_number);
194 
195     IF(G_IS_DEBUG_PROCEDURE_ON) THEN
196       OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_PROCEDURE, l_module, p_transaction_number||': end okl_esg_transport_pvt.process_esg');
197     END IF;
198 
199   EXCEPTION
200     WHEN OTHERS THEN
201       IF(G_IS_DEBUG_ERROR_ON) THEN
202         OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_ERROR, l_module, p_transaction_number||': '||SQLERRM(SQLCODE));
203       END IF;
204 
205       OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
206                           p_msg_name     => G_UNEXPECTED_ERROR,
207                           p_token1       => G_SQLCODE_TOKEN,
208                           p_token1_value => SQLCODE,
209                           p_token2       => G_SQLERRM_TOKEN,
210                           p_token2_value => SQLERRM
211                          );
212       x_return_status := G_RET_STS_UNEXP_ERROR;
213   END process_esg;
214 
215 END OKL_ESG_TRANSPORT_PVT;