1 PACKAGE BODY OZF_claim_Utility_pvt as
2 /* $Header: ozfvcutb.pls 120.2 2005/09/25 02:56:39 kdhulipa ship $ */
3 -- Start of Comments
4 -- Package name : OZF_claim_Utility_pvt
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- End of Comments
9
10 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OZF_CLAIM_UTILITY_PVT';
11
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'ozfvcutb.pls';
13
14 OZF_DEBUG_HIGH_ON CONSTANT BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
15
16 -- *******************************************************
17 -- Start of Comments
18 -- *******************************************************
19 -- API Name: Check_Claim_Access
20 -- Type : Public
21 -- Pre-Req :
22 -- Parameters:
23 -- IN
24 -- p_api_version_number IN NUMBER Required
25 -- p_init_msg_list IN VARCHAR2 Optional Default = FND_API_G_FALSE
26 -- p_commit IN VARCHAR2 Optional Default = FND_API.G_FALSE
27 -- p_validation_level IN NUMBER Optional Default = FND_API.G_VALID_LEVEL_FULL
28 -- P_object_id IN NUMBER
29 -- P_object_type IN VARCHAR2
30 -- P_user_id IN NUMBER
31 --
32 -- OUT:
33 -- x_return_status OUT VARCHAR2
34 -- x_msg_count OUT NUMBER
35 -- x_msg_data OUT VARCHAR2
36 -- x_access OUT VARCHAR2 F : FULL: User can update any data
37 -- R : RESTRICTED : User can only update data other than owner
38 -- N : NULL : User has no update priviledge
39 -- Version : Current version 1.0
40 --
41 -- Note: This procedure checks security access to a claim of a user
42 --
43 -- End of Comments
44 --
45 PROCEDURE Check_Claim_access(
46 P_Api_Version_Number IN NUMBER,
47 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
48 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
49 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
50 P_object_id IN NUMBER,
51 P_object_type IN VARCHAR2,
52 P_user_id IN NUMBER,
53
54 X_Return_Status OUT NOCOPY VARCHAR2,
55 X_Msg_Count OUT NOCOPY NUMBER,
56 X_Msg_Data OUT NOCOPY VARCHAR2,
57 x_access OUT NOCOPY VARCHAR2
58 )
59 IS
60 l_api_name CONSTANT VARCHAR2(30) := 'Check_Claim_access';
61 l_api_version_number CONSTANT NUMBER := 1.0;
62 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
63 l_profile_value VARCHAR2(30);
64
65 l_access varchar2(1) :='N'; -- F : FULL: User can update sensitive metric data
66 -- R : RESTRICTED : User can only update data other than sensitive metric data
67 -- N : NULL : User is no
68 BEGIN
69 -- Standard Start of API savepoint
70 SAVEPOINT Check_Claim_ACC;
71
72 IF OZF_DEBUG_HIGH_ON THEN
73 OZF_Utility_PVT.debug_message(l_full_name||': start');
74 END IF;
75
76 -- Standard call to check for call compatibility.
77 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
78 p_api_version_number,
79 l_api_name,
80 G_PKG_NAME)
81 THEN
82 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
83 END IF;
84
85 -- Initialize message list if p_init_msg_list is set to TRUE.
86 IF FND_API.to_Boolean( p_init_msg_list )
87 THEN
88 FND_MSG_PUB.initialize;
89 END IF;
90
91 -- Initialize API return status to SUCCESS
92 x_return_status := FND_API.G_RET_STS_SUCCESS;
93
94 /* IF AMS_access_PVT.check_owner(
95 p_object_id IN NUMBER,
96 p_object_type IN VARCHAR2,
97 p_user_or_role_id IN NUMBER,
98 p_user_or_role_type ) OR
99 */
100 -- There is no need to check the owner since owner and group memeber has the same update priviledge.
101 l_access :=AMS_access_PVT.check_update_access(
102 p_object_id => P_object_id,
103 p_object_type => P_object_type,
104 p_user_or_role_id => p_user_id,
105 p_user_or_role_type => 'USER'
106 );
107
108 IF l_access = 'F' OR AMS_access_PVT.Check_Admin_access(p_resource_id => p_user_id) THEN
109 x_access := 'F';
110 ELSE
111 l_profile_value := NVL(fnd_profile.value('OZF_CLAIM_UPDATE_ACCESS'), 'VIEW');
112 IF l_profile_value = 'UPDATE' THEN
113 x_access := 'R';
114 ELSE
115 x_access := 'N';
116 END IF;
117 END IF;
118
119 IF OZF_DEBUG_HIGH_ON THEN
120 OZF_Utility_PVT.debug_message('user_id='||p_user_id||' update_access is '||l_access);
121 OZF_Utility_PVT.debug_message('claim access is '||x_access);
122 END IF;
123
124 --
125 -- End of API body
126 --
127 -- Standard check for p_commit
128 IF FND_API.to_Boolean( p_commit )
129 THEN
130 COMMIT WORK;
131 END IF;
132
133 IF OZF_DEBUG_HIGH_ON THEN
134 OZF_Utility_PVT.debug_message(l_full_name||': end');
135 END IF;
136
137 -- Standard call to get message count and if count is 1, get message info.
138 FND_MSG_PUB.Count_And_Get
139 (p_count => x_msg_count,
140 p_data => x_msg_data
141 );
142 EXCEPTION
143 WHEN FND_API.G_EXC_ERROR THEN
144 ROLLBACK TO Check_Claim_ACC;
145 x_return_status := FND_API.G_RET_STS_ERROR;
146 -- Standard call to get message count and if count=1, get the message
147 FND_MSG_PUB.Count_And_Get (
148 p_encoded => FND_API.G_FALSE,
149 p_count => x_msg_count,
150 p_data => x_msg_data
151 );
152 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
153 ROLLBACK TO Check_Claim_ACC;
154 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
155 -- Standard call to get message count and if count=1, get the message
156 FND_MSG_PUB.Count_And_Get (
157 p_encoded => FND_API.G_FALSE,
158 p_count => x_msg_count,
159 p_data => x_msg_data
160 );
161 WHEN OTHERS THEN
162 ROLLBACK TO Check_Claim_ACC;
163 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
164 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
165 FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CHK_ACS_ERR');
166 FND_MSG_PUB.add;
167 END IF;
168 -- Standard call to get message count and if count=1, get the message
169 FND_MSG_PUB.Count_And_Get (
170 p_encoded => FND_API.G_FALSE,
171 p_count => x_msg_count,
172 p_data => x_msg_data
173 );
174 End Check_Claim_access;
175
176 -- *******************************************************
177 -- Start of Comments
178 -- *******************************************************
179 -- API Name: Normalize_Customer_Reference
180 -- Type : Public
181 -- Pre-Req :
182 -- Parameters:
183 -- IN
184 -- p_customer_reference IN VARCHAR2
185 --
186 -- OUT:
187 -- x_normalized_reference OUT VARCHAR2
188 -- Version : Current version 1.0
189 --
190 -- Note: This procedure normalizes the customer reference number.
191 --
192 -- End of Comments
193 --
194 PROCEDURE Normalize_Customer_Reference (
195 p_customer_reference IN VARCHAR2
196 ,x_normalized_reference OUT NOCOPY VARCHAR2
197 )
198 IS
199
200 l_normalized_reference VARCHAR2(30) := '';
201 l_char VARCHAR2(1);
202
203 BEGIN
204 -- loop over all characters
205 FOR i IN 1..LENGTH(p_customer_reference) LOOP
206 l_char := SUBSTRB(p_customer_reference, i, 1);
207
208 -- change 'O' and 'o' to '0'
209 IF l_char = 'O' OR l_char = 'o' THEN
210 l_normalized_reference := l_normalized_reference || '0';
211
212 -- change 'I' and 'l' to '1'
213 ELSIF l_char = 'I' OR l_char = 'l' THEN
214 l_normalized_reference := l_normalized_reference || '1';
215
216 -- ignore special characters; change characters to upper case
217 ELSIF INSTR(' !"#$%&''()*+,-./:;<>=?@[\]^{|}~', l_char) = 0 THEN
218 l_normalized_reference := l_normalized_reference || UPPER(l_char);
219 END IF;
220 END LOOP;
221
222 -- remove prefix 'DM'
223 l_normalized_reference := LTRIM(l_normalized_reference, 'DM');
224
225 -- remove leading '0's
226 l_normalized_reference := LTRIM(l_normalized_reference, '0');
227
228 x_normalized_reference := l_normalized_reference;
229 END Normalize_Customer_Reference;
230
231 End OZF_claim_Utility_pvt;