DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSC_RESPONSE_CENTER_PKG

Source


1 PACKAGE BODY CSC_RESPONSE_CENTER_PKG   AS
2 /* $Header: CSCCCRCB.pls 120.4 2005/09/14 17:07:45 akalidin noship $ */
3 
4 --  Constants used as tokens for unexpected error messages.
5     G_PKG_NAME	CONSTANT    VARCHAR2(25):=  'CSC_RESPONSE_CENTER_PKG';
6 
7    -- Local Function.  Returns the Value of the Constant FND_API.G_MISS_NUM
8    FUNCTION G_MISS_NUM RETURN NUMBER IS
9    BEGIN
10 	RETURN FND_API.G_MISS_NUM ;
11    END G_MISS_NUM ;
12 
13    -- Local Function.  Returns the Value of the Constant FND_API.G_MISS_CHAR to the caller
14    FUNCTION G_MISS_CHAR RETURN VARCHAR2 IS
15    BEGIN
16 	RETURN FND_API.G_MISS_CHAR ;
17    END G_MISS_CHAR ;
18 
19    -- Local Function.  REturns the Value of the Constant FND_API.G_MISS_DATE to the caller
20    FUNCTION G_MISS_DATE RETURN DATE IS
21    BEGIN
22 	RETURN FND_API.G_MISS_DATE ;
23    END G_MISS_DATE ;
24 
25    -- Local Function.  REturns the Value of the Constants
26    -- FND_API.G_VALID_LEVEL_NONE , FND_API.G_VALID_LEVEL_FULL to the caller
27    FUNCTION G_VALID_LEVEL(p_level varchar2) RETURN NUMBER IS
28    BEGIN
29    IF p_level = ('NONE') then
30 	RETURN FND_API.G_VALID_LEVEL_NONE ;
31    ELSIF p_level = ('FULL') then
32 	RETURN FND_API.G_VALID_LEVEL_FULL ;
33    ELSE
34 	--  Unrecognized parameter.
35 	FND_MSG_PUB.Add_Exc_Msg
36     	(   p_pkg_name			=>  G_PKG_NAME			,
37     	    p_procedure_name	=>  'G_VALID_LEVEL'		,
38     	    p_error_text		=>  'Unrecognized Value : '||p_level
39 	);
40 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
41 	END IF;
42    END G_VALID_LEVEL ;
43 
44    -- Local Function.  REturns the Value of the Constants
45    -- FND_API.G_TRUE , FND_API.G_FALSE To the caller
46    FUNCTION G_BOOLEAN(p_FLAG varchar2) RETURN VARCHAR2 IS
47    BEGIN
48    if p_flag = 'TRUE' then
49 	return FND_API.G_TRUE ;
50    elsif p_flag = 'FALSE' then
51 	return FND_API.G_FALSE ;
52    ELSE
53 	--  Unrecognized parameter.
54 	FND_MSG_PUB.Add_Exc_Msg
55     	(   p_pkg_name			=>  G_PKG_NAME				,
56     	    p_procedure_name	=>  'G_BOOLEAN'		,
57     	    p_error_text		=>  'Unrecognized Value : '||p_flag
58 	);
59 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
60 	END if;
61    END G_BOOLEAN;
62 
63  FUNCTION GET_ERROR_CONSTANT(err_msg VARCHAR2) RETURN VARCHAR2 IS
64 
65  BEGIN
66     IF err_msg = 'G_RET_STS_ERROR' THEN
67        RETURN FND_API.G_RET_STS_ERROR;
68     ELSIF err_msg = 'G_RET_STS_UNEXP_ERROR' THEN
69        RETURN FND_API.G_RET_STS_UNEXP_ERROR;
70     ELSIF err_msg = 'G_RET_STS_SUCCESS' THEN
71        RETURN FND_API.G_RET_STS_SUCCESS;
72     END IF;
73 
74  END GET_ERROR_CONSTANT;
75 
76 
77 
78  FUNCTION INIT_CC_SR_INT RETURN CC_SR_INT IS
79  TMP_CC_SR_INT CC_SR_INT;
80  BEGIN
81   RETURN TMP_CC_SR_INT;
82  END INIT_CC_SR_INT;
83 
84  FUNCTION GET_ADDRESS_REC_TYPE RETURN CSC_RESPONSE_CENTER_PKG.ADDRESS_REC_TYPE IS
85  TMP_ADDRESS_REC_TYPE CSC_RESPONSE_CENTER_PKG.ADDRESS_REC_TYPE;
86  BEGIN
87   RETURN TMP_ADDRESS_REC_TYPE;
88  END GET_ADDRESS_REC_TYPE;
89 
90 --
91 --    28AUG00  Bug 1379490 - create account
92 --
93 
94  Procedure Put_in_CC_SR_Buffer (
95  p_cc_sr_int_rec	IN CC_SR_INT) Is
96  Begin
97    CC_SR_BUFFER := p_cc_sr_int_rec;
98  End Put_in_CC_SR_Buffer;
99 
100  Procedure Get_From_CC_SR_Buffer (
101  x_cc_sr_int_rec	OUT NOCOPY  CC_SR_INT) Is
102  Begin
103    x_cc_sr_int_rec := CC_SR_BUFFER;
104  End Get_From_CC_SR_Buffer;
105 
106  Procedure Init_CC_SR_Buffer
107  Is
108  Begin
109    CC_SR_BUFFER := G_MISS_CC_SR_INT;
110  End Init_CC_SR_Buffer;
111 
112 	-- Wrapper for HZ procedure : phone_format for phone number globalization
113 	FUNCTION phone_format_Wrap(	p_phone_country_code 	in varchar2,
114 							p_phone_area_code 		in varchar2,
115 							p_phone_number 		in varchar2)
116 	RETURN varchar2 is
117    		l_return_status VARCHAR2(1);
118    		l_msg_count NUMBER;
119    		l_msg_data  VARCHAR2(2000);
120 		l_phone_country_code varchar2(30):= NULL;
121 		l_phone_area_code varchar2(30);
122 		l_phone_number varchar2(30);
123 		l_territory_code varchar2(30):= NULL;
124 		l_formatted_phone_number varchar2(100);
125                 l_raw_phone_number varchar2(10);
126 	Begin
127 
128 		if p_phone_country_code is null then
129 			FND_PROFILE.get('CSC_CC_DEFAULT_TERRITORY_CODE',l_territory_code);
130 		else
131 			l_phone_country_code := p_phone_country_code;
132 		end if;
133 
134 		l_phone_area_code := p_phone_area_code;
135 		l_phone_number := p_phone_number;
136 
137 	    /* HZ_CONTACT_POINT_PUB.phone_format (
138 									p_api_version				=> 1.0,
139 									p_init_msg_list    			=> FND_API.G_FALSE,
140 									p_territory_code 			=> l_territory_code,
141 									x_formatted_phone_number 	=> l_formatted_phone_number,
142 									x_phone_country_code 		=> l_phone_country_code,
143 									x_phone_area_code 			=> l_phone_area_code,
144 									x_phone_number 			=> l_phone_number,
145 									x_return_status			=> l_return_status,
146 									x_msg_count				=> l_msg_count,
147 									x_msg_data				=> l_msg_data);
148 */
149              HZ_CONTACT_POINT_V2PUB.phone_format (
150                                                       p_init_msg_list                 => FND_API.G_FALSE,
151                                                       p_raw_phone_number              => l_raw_phone_number,
152                                                       x_formatted_phone_number        => l_formatted_phone_number,
153                                                       p_territory_code                => l_territory_code,
154                                                       x_phone_country_code            => l_phone_country_code,
155                                                       x_phone_area_code               => l_phone_area_code,
156                                                       x_phone_number                  => l_phone_number,
157                                                       x_return_status                 => l_return_status,
158                                                       x_msg_count                     => l_msg_count,
159                                                       x_msg_data                      => l_msg_data);
160 
161 		-- If procedure does not return success then pass back null (since will be used in view definition)
162 		if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
163 		-- return FND_MSG_PUB.Get(p_msg_index=>1,p_encoded =>'F' );
164 			return null;
165 		else
166 			return l_formatted_phone_number;
167 		end if;
168 	End phone_format_wrap;
169 
170 /* New SEARCH window related objects */
171 PROCEDURE get_account_details(x_account_rec IN OUT  NOCOPY AccountRecTabType)
172 IS
173   row_count               NUMBER;
174   l_Account_Name          VARCHAR2(240);
175   l_Account_Number        VARCHAR2(30);
176   l_Cust_Account_Id       NUMBER;
177   l_Acct_object_version_number NUMBER;
178   l_account_status        VARCHAR2(1);
179   l_multi_accounts        VARCHAR2(1);
180 
181  --
182  CURSOR Get_Oldest_Acct(p_party_id NUMBER) IS
183     SELECT account_name, account_number,cust_account_id, object_version_number
184     FROM hz_cust_accounts
185     WHERE party_id=p_party_id
186     AND ((status = 'A' AND l_account_status = 'Y') OR (l_account_status = 'N'))
187     AND status not in ('M', 'D')
188     ORDER BY creation_date ASC;
189 
190  CURSOR Get_Latest_Acct(p_party_id NUMBER) IS
191     SELECT account_name, account_number,cust_account_id, object_version_number
192     FROM hz_cust_accounts
193     WHERE party_id=p_party_id
194     AND ((status = 'A' AND l_account_status = 'Y') OR (l_account_status = 'N'))
195     AND status not in ('M', 'D')
196     ORDER BY creation_date DESC;
197 BEGIN
198     Fnd_Profile.Get('CSC_CONTACT_CENTER_SHOW_ACTIVE_ACCOUNTS',l_account_status);
199     Fnd_Profile.Get('CSC_CC_DEFAULT_ACCT',l_multi_accounts);
200     l_account_status := nvl(l_account_status, 'N');
201     row_count := x_account_rec.COUNT;
202     FOR i IN 1..row_count LOOP
203         l_Account_name := NULL;
204         l_Account_number := NULL;
205         l_Cust_Account_Id := NULL;
206         l_Acct_object_version_number := NULL;
207         IF NVL(l_multi_accounts, 'N')  = 'Y' THEN
208            OPEN Get_Oldest_Acct(x_Account_Rec(i).party_id);
209            FETCH Get_Oldest_Acct INTO   l_Account_name, l_Account_number, l_Cust_Account_Id, l_Acct_object_version_number;
210            CLOSE Get_Oldest_Acct;
211 
212            x_Account_Rec(i).Account_Name := l_Account_Name;
213            x_Account_Rec(i).Account_Number := l_Account_Number;
214            x_Account_Rec(i).Cust_Account_id := l_Cust_Account_Id;
215            x_Account_Rec(i).object_version_number := l_Acct_object_version_number;
216 
217         ELSIF NVL(l_multi_accounts, 'N')  = 'L' THEN
218           OPEN Get_Latest_Acct(x_Account_Rec(i).party_id);
219           FETCH Get_Latest_Acct INTO   l_Account_name, l_Account_number, l_Cust_Account_Id, l_Acct_object_version_number;
220           CLOSE Get_Latest_Acct;
221 
222           x_Account_Rec(i).Account_Name := l_Account_Name;
223           x_Account_Rec(i).Account_Number := l_Account_Number;
224           x_Account_Rec(i).Cust_Account_id := l_Cust_Account_Id;
225           x_Account_Rec(i).object_version_number := l_Acct_object_version_number;
226        ELSE
227           OPEN Get_Oldest_Acct(x_Account_Rec(i).party_id);
228           LOOP
229           FETCH Get_Oldest_Acct INTO   l_Account_name, l_Account_number, l_Cust_Account_Id, l_Acct_object_version_number;
230             IF Get_Oldest_Acct%ROWCOUNT = 2 THEN
231                l_Account_name := NULL;
232                l_Account_number := NULL;
233                l_Cust_Account_Id := NULL;
234                l_Acct_object_version_number := NULL;
235                EXIT;
236             END IF;
237             IF Get_Oldest_Acct%NOTFOUND THEN
238                EXIT;
239             END IF;
240           END LOOP;
241           CLOSE Get_Oldest_Acct;
242 
243           x_Account_Rec(i).Account_Name := l_Account_Name;
244           x_Account_Rec(i).Account_Number := l_Account_Number;
245           x_Account_Rec(i).Cust_Account_id := l_Cust_Account_Id;
246           x_Account_Rec(i).object_version_number := l_Acct_object_version_number;
247 
248        END IF;
249     END LOOP;
250 EXCEPTION
251 WHEN OTHERS THEN
252 NULL;
253 END get_account_details;
254 
255 PROCEDURE get_phone_details(x_phone_rec IN OUT  NOCOPY PhoneRecTabType)
256 IS
257   row_count                NUMBER;
258   l_Phone_Country_Code	   VARCHAR2(10);
259   l_Phone_Area_Code	   VARCHAR2(10);
260   l_Phone_Number           VARCHAR2(40);
261   l_Phone_Line_Type        VARCHAR2(80);
262   l_phone_Line_Code        VARCHAR2(30);
263   l_Phone_Id               NUMBER;
264   l_Phone_object_version_number NUMBER;
265   l_Phone_extension 	   VARCHAR2(20);
266   l_Full_Phone		   VARCHAR2(60);
267 BEGIN
268 
269    row_count := x_phone_rec.COUNT;
270    FOR i IN 1..row_count LOOP
271      BEGIN
272        SELECT ph.phone_country_code, ph.phone_area_code, ph.phone_number,
273 	      lkup.meaning, ph.phone_line_type,
274               ph.contact_point_id, ph.object_version_number, phone_extension,
275 	      ph.phone_country_code||ph.phone_area_code||ph.phone_number
276        INTO   l_phone_country_code, l_phone_area_code, l_phone_number,
277               l_phone_line_type, l_phone_line_code,
278 	      l_phone_id, l_phone_object_version_number, l_phone_extension,
279               l_full_phone
280        FROM   hz_contact_points ph, ar_lookups lkup
281        WHERE  ph.phone_line_type = lkup.lookup_code
282        AND lkup.lookup_type = 'PHONE_LINE_TYPE'
283        AND lkup.enabled_flag = 'Y'
284        AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(lkup.start_date_active, SYSDATE))
285        AND TRUNC(NVL(lkup.end_date_active,SYSDATE))
286        AND ph.owner_table_id = x_Phone_Rec(i).party_id
287        AND ph.owner_table_name = 'HZ_PARTIES'
288        AND ph.contact_point_type = 'PHONE'
289        AND ph.primary_flag = 'Y';
290 
291        x_Phone_Rec(i).Phone_Country_Code := l_Phone_Country_Code;
292        x_Phone_Rec(i).Phone_Area_Code := l_Phone_Area_Code;
293        x_Phone_Rec(i).Phone_Number := l_Phone_Number;
294        x_Phone_Rec(i).Phone_Line_Type := l_Phone_Line_Type;
295        x_Phone_Rec(i).Phone_Line_Code := l_Phone_Line_Code;
296        x_Phone_Rec(i).Phone_Id := l_Phone_Id;
297        x_Phone_Rec(i).object_version_number := l_Phone_object_version_number;
298        x_Phone_Rec(i).Phone_Extension := l_phone_extension;
299        x_phone_rec(i).Full_Phone := l_full_phone;
300      EXCEPTION
301      WHEN OTHERS THEN
302         NULL;
303      END;
304 
305   END LOOP;
306 EXCEPTION
307 WHEN OTHERS THEN
308 NULL;
309 END get_phone_details;
310 
311 --This procedure calls the Open_MediaItem API to log a media item.
312 --This procedure has been moved to the server side because JTF_IH_PUB.media_rec_type
313 --references FND_API package (G_MISS_NUM) which cannot be accessed directly from libraries
314 PROCEDURE start_media_item( p_resp_appl_id in number,
315                             p_resp_id      in number,
316                             p_user_id      in number,
317                             p_login_id     in number,
318                             x_return_status out nocopy  varchar2,
319                             x_msg_count     out nocopy  number,
320                             x_msg_data      out nocopy  varchar2,
321                             x_media_id      out nocopy  number) IS
322 
323    v_true             VARCHAR2(5)  := CSC_CORE_UTILS_PVT.G_TRUE;
324    v_false            VARCHAR2(5)  := CSC_CORE_UTILS_PVT.G_FALSE;
325    v_ret_sts_failure  VARCHAR2(1)  := 'E';
326    p_media_rec        JTF_IH_PUB.media_rec_type;
327 
328 BEGIN
329 
330    p_media_rec.media_id := NULL;
331    p_media_rec.media_item_type := 'TELEPHONE';
332    p_media_rec.start_date_time := sysdate;
333    p_media_rec.direction := 'OUTBOUND';
334 
335    jtf_ih_pub.open_mediaitem( p_api_version     => 1.0,
336                               p_init_msg_list   => v_true,
337                               p_commit          => v_true,
338                               p_resp_appl_id    => p_resp_appl_id,
339                               p_resp_id         => p_resp_id,
340                               p_user_id         => p_user_id,
341                               p_login_id        => p_login_id,
342                               x_return_status   => x_return_status,
343                               x_msg_count       => x_msg_count,
344                               x_msg_data        => x_msg_data,
345                               p_media_rec       => p_media_rec,
346                               x_media_id        => x_media_id);
347 
348    if x_media_id is null then
349       x_return_status := v_ret_sts_failure;
350    end if;
351 
352 END start_media_item;
353 
354 
355 /* End of SEARCH window related objects */
356 
357 END CSC_RESPONSE_CENTER_PKG;