DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEX_REPOSSESSION_PVT

Source


1 PACKAGE BODY IEX_REPOSSESSION_PVT as
2 /* $Header: iexvrpsb.pls 120.4 2010/09/27 09:51:17 gnramasa ship $ */
3 -- Start of Comments
4 -- Package name     : IEX_REPOSSESSION_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'IEX_REPOSSESSION_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'iexvrpsb.pls';
13 
14 
15 -- Hint: Primary key needs to be returned.
16 PG_DEBUG NUMBER(2) := TO_NUMBER(NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'), '20'));
17 
18 PROCEDURE Create_repossession(
19     P_Api_Version_Number         IN   NUMBER,
20     P_Init_Msg_List              IN   VARCHAR2   := FND_API.G_FALSE,
21     P_Commit                     IN   VARCHAR2   := FND_API.G_FALSE,
22     p_validation_level           IN   NUMBER     := FND_API.G_VALID_LEVEL_FULL,
23     P_Check_Access_Flag          IN   VARCHAR2   := FND_API.G_FALSE,
24     P_Admin_Flag                 IN   VARCHAR2   := FND_API.G_FALSE,
25     P_Admin_Group_Id             IN   NUMBER,
26     P_Identity_Salesforce_Id     IN   NUMBER,
27     --P_profile_tbl                IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
28     P_RPS_Rec     IN    RPS_Rec_Type  := G_MISS_RPS_REC,
29   --Hint: Add detail tables as parameter lists if it's master-detail relationship.
30     X_REPOSSESSION_ID     OUT NOCOPY  NUMBER,
31     X_Return_Status              OUT NOCOPY  VARCHAR2,
32     X_Msg_Count                  OUT NOCOPY  NUMBER,
33     X_Msg_Data                   OUT NOCOPY  VARCHAR2
34     )
35 
36  IS
37 l_api_name                CONSTANT VARCHAR2(30) := 'Create_repossession';
38 l_api_version_number      CONSTANT NUMBER   := 2.0;
39 l_return_status_full        VARCHAR2(1);
40 l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
41 l_access_flag               VARCHAR2(1);
42 BEGIN
43       -- Standard Start of API savepoint
44       SAVEPOINT CREATE_REPOSSESSION_PVT;
45 
46       -- Standard call to check for call compatibility.
47       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
48                                            p_api_version_number,
49                                            l_api_name,
50                                            G_PKG_NAME)
51       THEN
52           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
53       END IF;
54 
55 
56       -- Initialize message list if p_init_msg_list is set to TRUE.
57       IF FND_API.to_Boolean( p_init_msg_list )
58       THEN
59           FND_MSG_PUB.initialize;
60       END IF;
61 
62 
63 
64       -- Initialize API return status to SUCCESS
65       x_return_status := FND_API.G_RET_STS_SUCCESS;
66 
67       --
68       -- API body
69       --
70       -- ******************************************************************
71       -- Validate Environment
72       -- ******************************************************************
73       IF FND_GLOBAL.User_Id IS NULL
74       THEN
75           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
76           THEN
77               FND_MESSAGE.Set_Name('IEX', 'UT_CANNOT_GET_PROFILE_VALUE');
78               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
79               FND_MSG_PUB.ADD;
80           END IF;
81           RAISE FND_API.G_EXC_ERROR;
82       END IF;
83 
84 
85       IF p_validation_level = FND_API.G_VALID_LEVEL_FULL
86       THEN
87           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
88               p_api_version_number => 2.0
89              ,p_init_msg_list      => p_init_msg_list
90              ,p_salesforce_id => NULL
91              ,p_admin_group_id => p_admin_group_id
92              ,x_return_status => x_return_status
93              ,x_msg_count => x_msg_count
94              ,x_msg_data => x_msg_data
95              ,x_sales_member_rec => l_identity_sales_member_rec);
96 
97 
98           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
99               RAISE FND_API.G_EXC_ERROR;
100           END IF;
101 
102       END IF;
103 
104 
105       -- Invoke validation procedures
106       Validate_repossession(
107           p_init_msg_list    => FND_API.G_FALSE,
108           p_validation_level => p_validation_level,
109           p_validation_mode  => AS_UTILITY_PVT.G_CREATE,
110           P_RPS_Rec  =>  P_RPS_Rec,
111           x_return_status    => x_return_status,
112           x_msg_count        => x_msg_count,
113           x_msg_data         => x_msg_data);
114 
115       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
116           RAISE FND_API.G_EXC_ERROR;
117       END IF;
118 
119 
120       IF p_check_access_flag = 'Y'
121       THEN
122           -- Please un-comment here and complete it
123 --        AS_ACCESS_PUB.Has_???Access(
124 --            p_api_version_number     => 2.0
125 --           ,p_init_msg_list          => p_init_msg_list
126 --           ,p_validation_level       => p_validation_level
127 --           ,p_profile_tbl            => p_profile_tbl
128 --           ,p_admin_flag             => p_admin_flag
129 --           ,p_admin_group_id         => p_admin_group_id
130 --           ,p_person_id              => l_identity_sales_member_rec.employee_person_id
131 --           ,p_customer_id            =>
132 --           ,p_check_access_flag      => 'Y'
133 --           ,p_identity_salesforce_id => p_identity_salesforce_id
134 --           ,p_partner_cont_party_id  => NULL
135 --           ,x_return_status          => x_return_status
136 --           ,x_msg_count              => x_msg_count
137 --           ,x_msg_data               => x_msg_data
138 --           ,x_access_flag            => l_access_flag);
139 
140 
141 
142           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
143               RAISE FND_API.G_EXC_ERROR;
144           END IF;
145 
146       END IF;
147       -- Hint: Add corresponding Master-Detail business logic here if necessary.
148 
149 
150       -- Invoke table handler(IEX_REPOSSESSIONS_PKG.Insert_Row)
151       IEX_REPOSSESSIONS_PKG.Insert_Row(
152           px_REPOSSESSION_ID  => x_REPOSSESSION_ID
153          ,p_DELINQUENCY_ID  => p_RPS_rec.DELINQUENCY_ID
154          ,p_PARTY_ID  => p_RPS_rec.PARTY_ID
155          ,p_CUST_ACCOUNT_ID  => p_RPS_rec.CUST_ACCOUNT_ID
156          ,p_UNPAID_REASON_CODE  => p_RPS_rec.UNPAID_REASON_CODE
157          ,p_REMARKET_FLAG  => p_RPS_rec.REMARKET_FLAG
158          ,p_REPOSSESSION_DATE  => p_RPS_rec.REPOSSESSION_DATE
159          ,p_ASSET_ID  => p_RPS_rec.ASSET_ID
160          ,p_ASSET_VALUE  => p_RPS_rec.ASSET_VALUE
161          ,p_ASSET_NUMBER  => p_RPS_rec.ASSET_NUMBER
162          ,p_REQUEST_ID  => p_RPS_rec.REQUEST_ID
163          ,p_PROGRAM_APPLICATION_ID  => p_RPS_rec.PROGRAM_APPLICATION_ID
164          ,p_PROGRAM_ID  => p_RPS_rec.PROGRAM_ID
165          ,p_PROGRAM_UPDATE_DATE  => p_RPS_rec.PROGRAM_UPDATE_DATE
166          ,p_ATTRIBUTE_CATEGORY  => p_RPS_rec.ATTRIBUTE_CATEGORY
167          ,p_ATTRIBUTE1  => p_RPS_rec.ATTRIBUTE1
168          ,p_ATTRIBUTE2  => p_RPS_rec.ATTRIBUTE2
169          ,p_ATTRIBUTE3  => p_RPS_rec.ATTRIBUTE3
170          ,p_ATTRIBUTE4  => p_RPS_rec.ATTRIBUTE4
171          ,p_ATTRIBUTE5  => p_RPS_rec.ATTRIBUTE5
172          ,p_ATTRIBUTE6  => p_RPS_rec.ATTRIBUTE6
173          ,p_ATTRIBUTE7  => p_RPS_rec.ATTRIBUTE7
174          ,p_ATTRIBUTE8  => p_RPS_rec.ATTRIBUTE8
175          ,p_ATTRIBUTE9  => p_RPS_rec.ATTRIBUTE9
176          ,p_ATTRIBUTE10  => p_RPS_rec.ATTRIBUTE10
177          ,p_ATTRIBUTE11  => p_RPS_rec.ATTRIBUTE11
178          ,p_ATTRIBUTE12  => p_RPS_rec.ATTRIBUTE12
179          ,p_ATTRIBUTE13  => p_RPS_rec.ATTRIBUTE13
180          ,p_ATTRIBUTE14  => p_RPS_rec.ATTRIBUTE14
181          ,p_ATTRIBUTE15  => p_RPS_rec.ATTRIBUTE15
182          ,p_CREATED_BY  => FND_GLOBAL.USER_ID
183          ,p_CREATION_DATE  => SYSDATE
184          ,p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID
185          ,p_LAST_UPDATE_DATE  => SYSDATE
186          --,p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID   --commented for bug 10034220 gnramasa 24th Sep 10
187 	 ,p_LAST_UPDATE_LOGIN  => FND_GLOBAL.USER_ID
188          ,p_CREDIT_HOLD_REQUEST_FLAG  => p_RPS_rec.CREDIT_HOLD_REQUEST_FLAG
189          ,p_CREDIT_HOLD_APPROVED_FLAG  => p_RPS_rec.CREDIT_HOLD_APPROVED_FLAG
190          ,p_SERVICE_HOLD_REQUEST_FLAG  => p_RPS_rec.SERVICE_HOLD_REQUEST_FLAG
191          ,p_SERVICE_HOLD_APPROVED_FLAG  => p_RPS_rec.SERVICE_HOLD_APPROVED_FLAG
192          ,p_SUGGESTION_APPROVED_FLAG  => p_RPS_rec.SUGGESTION_APPROVED_FLAG
193          ,p_DISPOSITION_CODE          => P_RPS_REC.DISPOSITION_CODE
194          ,p_CUSTOMER_SITE_USE_ID      => p_rps_rec.CUSTOMER_SITE_USE_ID
195          ,p_ORG_ID                    => p_rps_rec.ORG_ID
196          ,p_CONTRACT_ID               => p_rps_rec.CONTRACT_ID
197          ,p_CONTRACT_NUMBER           => p_rps_rec.CONTRACT_NUMBER
198          );
199       -- Hint: Primary key should be returned.
200       -- x_REPOSSESSION_ID := px_REPOSSESSION_ID;
201 
202           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
203               RAISE FND_API.G_EXC_ERROR;
204           END IF;
205 
206       --
207       -- End of API body
208       --
209 
210       -- Standard check for p_commit
211       IF FND_API.to_Boolean( p_commit )
212       THEN
213           COMMIT WORK;
214       END IF;
215 
216 
217 
218       -- Standard call to get message count and if count is 1, get message info.
219       FND_MSG_PUB.Count_And_Get
220       (  p_count          =>   x_msg_count,
221          p_data           =>   x_msg_data
222       );
223 
224       EXCEPTION
225           WHEN FND_API.G_EXC_ERROR THEN
226               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
227                    P_API_NAME => L_API_NAME
228                   ,P_PKG_NAME => G_PKG_NAME
229                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
230                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
231                   ,X_MSG_COUNT => X_MSG_COUNT
232                   ,X_MSG_DATA => X_MSG_DATA
233                   ,X_RETURN_STATUS => X_RETURN_STATUS);
234 
235           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
236               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
237                    P_API_NAME => L_API_NAME
238                   ,P_PKG_NAME => G_PKG_NAME
239                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
240                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
241                   ,X_MSG_COUNT => X_MSG_COUNT
242                   ,X_MSG_DATA => X_MSG_DATA
243                   ,X_RETURN_STATUS => X_RETURN_STATUS);
244 
245           WHEN OTHERS THEN
246               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
247                    P_API_NAME => L_API_NAME
248                   ,P_PKG_NAME => G_PKG_NAME
249                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
250                   ,P_SQLCODE => SQLCODE
251                   ,P_SQLERRM => SQLERRM
252                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
253                   ,X_MSG_COUNT => X_MSG_COUNT
254                   ,X_MSG_DATA => X_MSG_DATA
255                   ,X_RETURN_STATUS => X_RETURN_STATUS);
256 End Create_repossession;
257 
258 
259 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
260 PROCEDURE Update_repossession(
261     P_Api_Version_Number         IN   NUMBER,
262     P_Init_Msg_List              IN   VARCHAR2   := FND_API.G_FALSE,
263     P_Commit                     IN   VARCHAR2   := FND_API.G_FALSE,
264     p_validation_level           IN   NUMBER     := FND_API.G_VALID_LEVEL_FULL,
265     P_Check_Access_Flag          IN   VARCHAR2   := FND_API.G_FALSE,
266     P_Admin_Flag                 IN   VARCHAR2   := FND_API.G_FALSE,
267     P_Admin_Group_Id             IN   NUMBER,
268     P_Identity_Salesforce_Id     IN   NUMBER,
269     --P_profile_tbl                IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
270     P_RPS_Rec     IN    RPS_Rec_Type,
271     X_Return_Status              OUT NOCOPY  VARCHAR2,
272     X_Msg_Count                  OUT NOCOPY  NUMBER,
273     X_Msg_Data                   OUT NOCOPY  VARCHAR2
274     )
275 
276  IS
277 /*
278 Cursor C_Get_repossession(REPOSSESSION_ID Number) IS
279     Select rowid,
280            REPOSSESSION_ID,
281            DELINQUENCY_ID,
282            PARTY_ID,
283            CUST_ACCOUNT_ID,
284            UNPAID_REASON_CODE,
285            REMARKET_FLAG,
286            REPOSSESSION_DATE,
287            ASSET_ID,
288            ASSET_VALUE,
289            ASSET_NUMBER,
290            REQUEST_ID,
291            PROGRAM_APPLICATION_ID,
292            PROGRAM_ID,
293            PROGRAM_UPDATE_DATE,
294            ATTRIBUTE_CATEGORY,
295            ATTRIBUTE1,
296            ATTRIBUTE2,
297            ATTRIBUTE3,
298            ATTRIBUTE4,
299            ATTRIBUTE5,
300            ATTRIBUTE6,
301            ATTRIBUTE7,
302            ATTRIBUTE8,
303            ATTRIBUTE9,
304            ATTRIBUTE10,
305            ATTRIBUTE11,
306            ATTRIBUTE12,
307            ATTRIBUTE13,
308            ATTRIBUTE14,
309            ATTRIBUTE15,
310            CREATED_BY,
311            CREATION_DATE,
312            LAST_UPDATED_BY,
313            LAST_UPDATE_DATE,
314            LAST_UPDATE_LOGIN,
315            CREDIT_HOLD_REQUEST_FLAG,
316            CREDIT_HOLD_APPROVED_FLAG,
317            SERVICE_HOLD_REQUEST_FLAG,
318            SERVICE_HOLD_APPROVED_FLAG,
319            SUGGESTION_APPROVED_FLAG,
320            DISPOSITION_CODE
321     From  IEX_REPOSSESSIONS
322     -- Hint: Developer need to provide Where clause
323     For Update NOWAIT;
324 */
325 l_api_name                CONSTANT VARCHAR2(30) := 'Update_repossession';
326 l_api_version_number      CONSTANT NUMBER   := 2.0;
327 -- Local Variables
328 l_identity_sales_member_rec   AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
329 l_ref_RPS_rec  IEX_repossession_PVT.RPS_Rec_Type;
330 l_tar_RPS_rec  IEX_repossession_PVT.RPS_Rec_Type := P_RPS_Rec;
331 l_rowid  ROWID;
332 BEGIN
333       -- Standard Start of API savepoint
334       SAVEPOINT UPDATE_REPOSSESSION_PVT;
335 
336       -- Standard call to check for call compatibility.
337       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
338                                            p_api_version_number,
339                                            l_api_name,
340                                            G_PKG_NAME)
341       THEN
342           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
343       END IF;
344 
345 
346       -- Initialize message list if p_init_msg_list is set to TRUE.
347       IF FND_API.to_Boolean( p_init_msg_list )
348       THEN
349           FND_MSG_PUB.initialize;
350       END IF;
351 
352 
353 
354       -- Initialize API return status to SUCCESS
355       x_return_status := FND_API.G_RET_STS_SUCCESS;
356 
357       --
358       -- Api body
359       --
360 
361       IF p_validation_level = FND_API.G_VALID_LEVEL_FULL
362       THEN
363           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
364               p_api_version_number => 2.0
365              ,p_init_msg_list      => p_init_msg_list
366              ,p_salesforce_id => p_identity_salesforce_id
367              ,p_admin_group_id => p_admin_group_id
368              ,x_return_status => x_return_status
369              ,x_msg_count => x_msg_count
370              ,x_msg_data => x_msg_data
371              ,x_sales_member_rec => l_identity_sales_member_rec);
372 
373 
374           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
375               RAISE FND_API.G_EXC_ERROR;
376           END IF;
377 
378       END IF;
379 
380 /*
381       Open C_Get_repossession( l_tar_RPS_rec.REPOSSESSION_ID);
382 
383       Fetch C_Get_repossession into
384                l_rowid,
385                l_ref_RPS_rec.REPOSSESSION_ID,
386                l_ref_RPS_rec.DELINQUENCY_ID,
387                l_ref_RPS_rec.PARTY_ID,
388                l_ref_RPS_rec.CUST_ACCOUNT_ID,
389                l_ref_RPS_rec.UNPAID_REASON_CODE,
390                l_ref_RPS_rec.REMARKET_FLAG,
391                l_ref_RPS_rec.REPOSSESSION_DATE,
392                l_ref_RPS_rec.ASSET_ID,
393                l_ref_RPS_rec.ASSET_VALUE,
394                l_ref_RPS_rec.ASSET_NUMBER,
395                l_ref_RPS_rec.REQUEST_ID,
396                l_ref_RPS_rec.PROGRAM_APPLICATION_ID,
397                l_ref_RPS_rec.PROGRAM_ID,
398                l_ref_RPS_rec.PROGRAM_UPDATE_DATE,
399                l_ref_RPS_rec.ATTRIBUTE_CATEGORY,
400                l_ref_RPS_rec.ATTRIBUTE1,
401                l_ref_RPS_rec.ATTRIBUTE2,
402                l_ref_RPS_rec.ATTRIBUTE3,
403                l_ref_RPS_rec.ATTRIBUTE4,
404                l_ref_RPS_rec.ATTRIBUTE5,
405                l_ref_RPS_rec.ATTRIBUTE6,
406                l_ref_RPS_rec.ATTRIBUTE7,
407                l_ref_RPS_rec.ATTRIBUTE8,
408                l_ref_RPS_rec.ATTRIBUTE9,
409                l_ref_RPS_rec.ATTRIBUTE10,
410                l_ref_RPS_rec.ATTRIBUTE11,
411                l_ref_RPS_rec.ATTRIBUTE12,
412                l_ref_RPS_rec.ATTRIBUTE13,
413                l_ref_RPS_rec.ATTRIBUTE14,
414                l_ref_RPS_rec.ATTRIBUTE15,
415                l_ref_RPS_rec.CREATED_BY,
416                l_ref_RPS_rec.CREATION_DATE,
417                l_ref_RPS_rec.LAST_UPDATED_BY,
418                l_ref_RPS_rec.LAST_UPDATE_DATE,
419                l_ref_RPS_rec.LAST_UPDATE_LOGIN,
420                l_ref_RPS_rec.CREDIT_HOLD_REQUEST_FLAG,
421                l_ref_RPS_rec.CREDIT_HOLD_APPROVED_FLAG,
422                l_ref_RPS_rec.SERVICE_HOLD_REQUEST_FLAG,
423                l_ref_RPS_rec.SERVICE_HOLD_APPROVED_FLAG,
424                l_ref_RPS_rec.SUGGESTION_APPROVED_FLAG,
425                l_ref_rps_rec.DISPOSITION_CODE;
426 
427        If ( C_Get_repossession%NOTFOUND) Then
428            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
429            THEN
430                FND_MESSAGE.Set_Name('IEX', 'API_MISSING_UPDATE_TARGET');
431                FND_MESSAGE.Set_Token ('INFO', 'repossession', FALSE);
432                FND_MSG_PUB.Add;
433            END IF;
434            Close C_Get_repossession;
435            raise FND_API.G_EXC_ERROR;
436        END IF;
437        Close     C_Get_repossession;
438 */
439 
440 
441       If (l_tar_RPS_rec.last_update_date is NULL or
442           l_tar_RPS_rec.last_update_date = FND_API.G_MISS_Date ) Then
443           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
444           THEN
445               FND_MESSAGE.Set_Name('IEX', 'API_MISSING_ID');
446               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
447               FND_MSG_PUB.ADD;
448           END IF;
449           raise FND_API.G_EXC_ERROR;
450       End if;
451       -- Check Whether record has been changed by someone else
452       /*
453       If (l_tar_RPS_rec.last_update_date <> l_ref_RPS_rec.last_update_date) Then
454           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
455           THEN
456               FND_MESSAGE.Set_Name('IEX', 'API_RECORD_CHANGED');
457               FND_MESSAGE.Set_Token('INFO', 'repossession', FALSE);
458               FND_MSG_PUB.ADD;
459           END IF;
460           raise FND_API.G_EXC_ERROR;
461       End if;
462       */
463 
464       -- Invoke validation procedures
465       Validate_repossession(
466           p_init_msg_list    => FND_API.G_FALSE,
467           p_validation_level => p_validation_level,
468           p_validation_mode  => AS_UTILITY_PVT.G_UPDATE,
469           P_RPS_Rec  =>  P_RPS_Rec,
470           x_return_status    => x_return_status,
471           x_msg_count        => x_msg_count,
472           x_msg_data         => x_msg_data);
473 
474       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
475           RAISE FND_API.G_EXC_ERROR;
476       END IF;
477 
478 
479       IF p_check_access_flag = 'Y'
480       THEN
481           -- Please un-comment here and complete it
482 --        AS_ACCESS_PUB.Has_???Access(
483 --            p_api_version_number     => 2.0
484 --           ,p_init_msg_list          => p_init_msg_list
485 --           ,p_validation_level       => p_validation_level
486 --           ,p_profile_tbl            => p_profile_tbl
487 --           ,p_admin_flag             => p_admin_flag
488 --           ,p_admin_group_id         => p_admin_group_id
489 --           ,p_person_id              => l_identity_sales_member_rec.employee_person_id
490 --           ,p_customer_id            =>
491 --           ,p_check_access_flag      => 'Y'
492 --           ,p_identity_salesforce_id => p_identity_salesforce_id
493 --           ,p_partner_cont_party_id  => NULL
494 --           ,x_return_status          => x_return_status
495 --           ,x_msg_count              => x_msg_count
496 --           ,x_msg_data               => x_msg_data
497 --           ,x_access_flag            => l_access_flag);
498 
499 --          END IF;
500 
501 
502           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
503               RAISE FND_API.G_EXC_ERROR;
504           END IF;
505 
506       END IF;
507       -- Hint: Add corresponding Master-Detail business logic here if necessary.
508 
509 
510       -- Invoke table handler(IEX_REPOSSESSIONS_PKG.Update_Row)
511       IEX_REPOSSESSIONS_PKG.Update_Row(
512           p_REPOSSESSION_ID  => p_RPS_rec.REPOSSESSION_ID
513          ,p_DELINQUENCY_ID  => p_RPS_rec.DELINQUENCY_ID
514          ,p_PARTY_ID  => p_RPS_rec.PARTY_ID
515          ,p_CUST_ACCOUNT_ID  => p_RPS_rec.CUST_ACCOUNT_ID
516          ,p_UNPAID_REASON_CODE  => p_RPS_rec.UNPAID_REASON_CODE
517          ,p_REMARKET_FLAG  => p_RPS_rec.REMARKET_FLAG
518          ,p_REPOSSESSION_DATE  => p_RPS_rec.REPOSSESSION_DATE
519          ,p_ASSET_ID  => p_RPS_rec.ASSET_ID
520          ,p_ASSET_VALUE  => p_RPS_rec.ASSET_VALUE
521          ,p_ASSET_NUMBER  => p_RPS_rec.ASSET_NUMBER
522          ,p_REQUEST_ID  => p_RPS_rec.REQUEST_ID
523          ,p_PROGRAM_APPLICATION_ID  => p_RPS_rec.PROGRAM_APPLICATION_ID
524          ,p_PROGRAM_ID  => p_RPS_rec.PROGRAM_ID
525          ,p_PROGRAM_UPDATE_DATE  => p_RPS_rec.PROGRAM_UPDATE_DATE
526          ,p_ATTRIBUTE_CATEGORY  => p_RPS_rec.ATTRIBUTE_CATEGORY
527          ,p_ATTRIBUTE1  => p_RPS_rec.ATTRIBUTE1
528          ,p_ATTRIBUTE2  => p_RPS_rec.ATTRIBUTE2
529          ,p_ATTRIBUTE3  => p_RPS_rec.ATTRIBUTE3
530          ,p_ATTRIBUTE4  => p_RPS_rec.ATTRIBUTE4
531          ,p_ATTRIBUTE5  => p_RPS_rec.ATTRIBUTE5
532          ,p_ATTRIBUTE6  => p_RPS_rec.ATTRIBUTE6
533          ,p_ATTRIBUTE7  => p_RPS_rec.ATTRIBUTE7
534          ,p_ATTRIBUTE8  => p_RPS_rec.ATTRIBUTE8
535          ,p_ATTRIBUTE9  => p_RPS_rec.ATTRIBUTE9
536          ,p_ATTRIBUTE10  => p_RPS_rec.ATTRIBUTE10
537          ,p_ATTRIBUTE11  => p_RPS_rec.ATTRIBUTE11
538          ,p_ATTRIBUTE12  => p_RPS_rec.ATTRIBUTE12
539          ,p_ATTRIBUTE13  => p_RPS_rec.ATTRIBUTE13
540          ,p_ATTRIBUTE14  => p_RPS_rec.ATTRIBUTE14
541          ,p_ATTRIBUTE15  => p_RPS_rec.ATTRIBUTE15
542          ,p_CREATED_BY     => FND_API.G_MISS_NUM
543          ,p_CREATION_DATE  => FND_API.G_MISS_DATE
544          ,p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID
545          ,p_LAST_UPDATE_DATE  => SYSDATE
546          --,p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID   --commented for bug 10034220 gnramasa 24th Sep 10
547          ,p_LAST_UPDATE_LOGIN  => FND_GLOBAL.USER_ID
548 	 ,p_CREDIT_HOLD_REQUEST_FLAG  => p_RPS_rec.CREDIT_HOLD_REQUEST_FLAG
549          ,p_CREDIT_HOLD_APPROVED_FLAG  => p_RPS_rec.CREDIT_HOLD_APPROVED_FLAG
550          ,p_SERVICE_HOLD_REQUEST_FLAG  => p_RPS_rec.SERVICE_HOLD_REQUEST_FLAG
551          ,p_SERVICE_HOLD_APPROVED_FLAG  => p_RPS_rec.SERVICE_HOLD_APPROVED_FLAG
552          ,p_SUGGESTION_APPROVED_FLAG  => p_RPS_rec.SUGGESTION_APPROVED_FLAG
553          ,p_DISPOSITION_CODE          => p_RPS_REC.DISPOSITION_CODE
554          ,p_CUSTOMER_SITE_USE_ID      => p_rps_rec.CUSTOMER_SITE_USE_ID
555          ,p_ORG_ID                    => p_rps_rec.ORG_ID
556          ,p_CONTRACT_ID               => p_rps_rec.CONTRACT_ID
557          ,p_CONTRACT_NUMBER           => p_rps_rec.CONTRACT_NUMBER
558          );
559       --
560       -- End of API body.
561       --
562 
563       -- Standard check for p_commit
564       IF FND_API.to_Boolean( p_commit )
565       THEN
566           COMMIT WORK;
567       END IF;
568 
569 
570 
571       -- Standard call to get message count and if count is 1, get message info.
572       FND_MSG_PUB.Count_And_Get
573       (  p_count          =>   x_msg_count,
574          p_data           =>   x_msg_data
575       );
576 
577       EXCEPTION
578           WHEN FND_API.G_EXC_ERROR THEN
579               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
580                    P_API_NAME => L_API_NAME
581                   ,P_PKG_NAME => G_PKG_NAME
582                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
583                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
584                   ,X_MSG_COUNT => X_MSG_COUNT
585                   ,X_MSG_DATA => X_MSG_DATA
586                   ,X_RETURN_STATUS => X_RETURN_STATUS);
587 
588           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
589               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
590                    P_API_NAME => L_API_NAME
591                   ,P_PKG_NAME => G_PKG_NAME
592                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
593                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
594                   ,X_MSG_COUNT => X_MSG_COUNT
595                   ,X_MSG_DATA => X_MSG_DATA
596                   ,X_RETURN_STATUS => X_RETURN_STATUS);
597 
598           WHEN OTHERS THEN
599               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
600                    P_API_NAME => L_API_NAME
601                   ,P_PKG_NAME => G_PKG_NAME
602                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
603                   ,P_SQLCODE => SQLCODE
604                   ,P_SQLERRM => SQLERRM
605                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
606                   ,X_MSG_COUNT => X_MSG_COUNT
607                   ,X_MSG_DATA => X_MSG_DATA
608                   ,X_RETURN_STATUS => X_RETURN_STATUS);
609 End Update_repossession;
610 
611 
612 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
613 --       The Master delete procedure may not be needed depends on different business requirements.
614 PROCEDURE Delete_repossession(
615     P_Api_Version_Number         IN   NUMBER,
616     P_Init_Msg_List              IN   VARCHAR2   := FND_API.G_FALSE,
617     P_Commit                     IN   VARCHAR2   := FND_API.G_FALSE,
618     p_validation_level           IN   NUMBER     := FND_API.G_VALID_LEVEL_FULL,
619     P_Check_Access_Flag          IN   VARCHAR2   := FND_API.G_FALSE,
620     P_Admin_Flag                 IN   VARCHAR2   := FND_API.G_FALSE,
621     P_Admin_Group_Id             IN   NUMBER,
622     P_Identity_Salesforce_Id     IN   NUMBER,
623     P_Profile_Tbl                IN   AS_UTILITY_PUB.PROFILE_TBL_TYPE,
624     P_RPS_Rec     IN RPS_Rec_Type,
625     X_Return_Status              OUT NOCOPY  VARCHAR2,
626     X_Msg_Count                  OUT NOCOPY  NUMBER,
627     X_Msg_Data                   OUT NOCOPY  VARCHAR2
628     )
629 
630  IS
631 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_repossession';
632 l_api_version_number      CONSTANT NUMBER   := 2.0;
633 l_identity_sales_member_rec  AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
634 BEGIN
635       -- Standard Start of API savepoint
636       SAVEPOINT DELETE_REPOSSESSION_PVT;
637 
638       -- Standard call to check for call compatibility.
639       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
640                                            p_api_version_number,
641                                            l_api_name,
642                                            G_PKG_NAME)
643       THEN
644           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
645       END IF;
646 
647 
648       -- Initialize message list if p_init_msg_list is set to TRUE.
649       IF FND_API.to_Boolean( p_init_msg_list )
650       THEN
651           FND_MSG_PUB.initialize;
652       END IF;
653 
654 
655 
656 
657       -- Initialize API return status to SUCCESS
658       x_return_status := FND_API.G_RET_STS_SUCCESS;
659 
660       --
661       -- Api body
662       --
663 
664       IF p_validation_level = FND_API.G_VALID_LEVEL_FULL
665       THEN
666           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
667               p_api_version_number => 2.0
668              ,p_init_msg_list      => p_init_msg_list
669              ,p_salesforce_id => p_identity_salesforce_id
670              ,p_admin_group_id => p_admin_group_id
671              ,x_return_status => x_return_status
672              ,x_msg_count => x_msg_count
673              ,x_msg_data => x_msg_data
674              ,x_sales_member_rec => l_identity_sales_member_rec);
675 
676 
677           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
678               RAISE FND_API.G_EXC_ERROR;
679           END IF;
680 
681       END IF;
682 
683       IF p_check_access_flag = 'Y'
684       THEN
685           -- Please un-comment here and complete it
686 --        AS_ACCESS_PUB.Has_???Access(
687 --            p_api_version_number     => 2.0
688 --           ,p_init_msg_list          => p_init_msg_list
689 --           ,p_validation_level       => p_validation_level
690 --           ,p_profile_tbl            => p_profile_tbl
691 --           ,p_admin_flag             => p_admin_flag
692 --           ,p_admin_group_id         => p_admin_group_id
693 --           ,p_person_id              => l_identity_sales_member_rec.employee_person_id
694 --           ,p_customer_id            =>
695 --           ,p_check_access_flag      => 'Y'
696 --           ,p_identity_salesforce_id => p_identity_salesforce_id
697 --           ,p_partner_cont_party_id  => NULL
698 --           ,x_return_status          => x_return_status
699 --           ,x_msg_count              => x_msg_count
700 --           ,x_msg_data               => x_msg_data
701 --           ,x_access_flag            => l_access_flag);
702 
703 
704           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
705               RAISE FND_API.G_EXC_ERROR;
706           END IF;
707 
708       END IF;
709 
710       -- Invoke table handler(IEX_REPOSSESSIONS_PKG.Delete_Row)
711       IEX_REPOSSESSIONS_PKG.Delete_Row(
712           p_REPOSSESSION_ID  => p_RPS_rec.REPOSSESSION_ID);
713       --
714       -- End of API body
715       --
716 
717       -- Standard check for p_commit
718       IF FND_API.to_Boolean( p_commit )
719       THEN
720           COMMIT WORK;
721       END IF;
722 
723 
724 
725       -- Standard call to get message count and if count is 1, get message info.
726       FND_MSG_PUB.Count_And_Get
727       (  p_count          =>   x_msg_count,
728          p_data           =>   x_msg_data
729       );
730 
731       EXCEPTION
732           WHEN FND_API.G_EXC_ERROR THEN
733               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
734                    P_API_NAME => L_API_NAME
735                   ,P_PKG_NAME => G_PKG_NAME
736                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
737                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
738                   ,X_MSG_COUNT => X_MSG_COUNT
739                   ,X_MSG_DATA => X_MSG_DATA
740                   ,X_RETURN_STATUS => X_RETURN_STATUS);
741 
742           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
743               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
744                    P_API_NAME => L_API_NAME
745                   ,P_PKG_NAME => G_PKG_NAME
746                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
747                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
748                   ,X_MSG_COUNT => X_MSG_COUNT
749                   ,X_MSG_DATA => X_MSG_DATA
750                   ,X_RETURN_STATUS => X_RETURN_STATUS);
751 
752           WHEN OTHERS THEN
753               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
754                    P_API_NAME => L_API_NAME
755                   ,P_PKG_NAME => G_PKG_NAME
756                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
757                   ,P_SQLCODE => SQLCODE
758                   ,P_SQLERRM => SQLERRM
759                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
760                   ,X_MSG_COUNT => X_MSG_COUNT
761                   ,X_MSG_DATA => X_MSG_DATA
762                   ,X_RETURN_STATUS => X_RETURN_STATUS);
763 End Delete_repossession;
764 
765 
766 -- This procudure defines the columns for the Dynamic SQL.
767 PROCEDURE Define_Columns(
768     P_RPS_Rec   IN  RPS_Rec_Type,
769     p_cur_get_RPS   IN   NUMBER
770 )
771 IS
772 BEGIN
773 
774       -- define all columns for IEX_REPOSSESSIONS view
775       dbms_sql.define_column(p_cur_get_RPS, 1, P_RPS_Rec.REPOSSESSION_ID);
776       dbms_sql.define_column(p_cur_get_RPS, 2, P_RPS_Rec.DELINQUENCY_ID);
777       dbms_sql.define_column(p_cur_get_RPS, 3, P_RPS_Rec.PARTY_ID);
778       dbms_sql.define_column(p_cur_get_RPS, 4, P_RPS_Rec.CUST_ACCOUNT_ID);
779       dbms_sql.define_column(p_cur_get_RPS, 5, P_RPS_Rec.UNPAID_REASON_CODE, 30);
780       dbms_sql.define_column(p_cur_get_RPS, 6, P_RPS_Rec.REMARKET_FLAG, 1);
781       dbms_sql.define_column(p_cur_get_RPS, 7, P_RPS_Rec.REPOSSESSION_DATE);
782       dbms_sql.define_column(p_cur_get_RPS, 8, P_RPS_Rec.ASSET_ID);
783       dbms_sql.define_column(p_cur_get_RPS, 9, P_RPS_Rec.ASSET_VALUE);
784       dbms_sql.define_column(p_cur_get_RPS, 10, P_RPS_Rec.ASSET_NUMBER);
785       dbms_sql.define_column(p_cur_get_RPS, 11, P_RPS_Rec.REQUEST_ID);
786       dbms_sql.define_column(p_cur_get_RPS, 12, P_RPS_Rec.ATTRIBUTE_CATEGORY, 240);
787       dbms_sql.define_column(p_cur_get_RPS, 13, P_RPS_Rec.ATTRIBUTE1, 240);
788       dbms_sql.define_column(p_cur_get_RPS, 14, P_RPS_Rec.ATTRIBUTE2, 240);
789       dbms_sql.define_column(p_cur_get_RPS, 15, P_RPS_Rec.ATTRIBUTE3, 240);
790       dbms_sql.define_column(p_cur_get_RPS, 16, P_RPS_Rec.ATTRIBUTE4, 240);
791       dbms_sql.define_column(p_cur_get_RPS, 17, P_RPS_Rec.ATTRIBUTE5, 240);
792       dbms_sql.define_column(p_cur_get_RPS, 18, P_RPS_Rec.ATTRIBUTE6, 240);
793       dbms_sql.define_column(p_cur_get_RPS, 19, P_RPS_Rec.ATTRIBUTE7, 240);
794       dbms_sql.define_column(p_cur_get_RPS, 20, P_RPS_Rec.ATTRIBUTE8, 240);
795       dbms_sql.define_column(p_cur_get_RPS, 21, P_RPS_Rec.ATTRIBUTE9, 240);
796       dbms_sql.define_column(p_cur_get_RPS, 22, P_RPS_Rec.ATTRIBUTE10, 240);
797       dbms_sql.define_column(p_cur_get_RPS, 23, P_RPS_Rec.ATTRIBUTE11, 240);
798       dbms_sql.define_column(p_cur_get_RPS, 24, P_RPS_Rec.ATTRIBUTE12, 240);
799       dbms_sql.define_column(p_cur_get_RPS, 25, P_RPS_Rec.ATTRIBUTE13, 240);
800       dbms_sql.define_column(p_cur_get_RPS, 26, P_RPS_Rec.ATTRIBUTE14, 240);
801       dbms_sql.define_column(p_cur_get_RPS, 27, P_RPS_Rec.ATTRIBUTE15, 240);
802       dbms_sql.define_column(p_cur_get_RPS, 28, P_RPS_Rec.CREDIT_HOLD_REQUEST_FLAG, 1);
803       dbms_sql.define_column(p_cur_get_RPS, 29, P_RPS_Rec.CREDIT_HOLD_APPROVED_FLAG, 1);
804       dbms_sql.define_column(p_cur_get_RPS, 30, P_RPS_Rec.SERVICE_HOLD_REQUEST_FLAG, 1);
805       dbms_sql.define_column(p_cur_get_RPS, 31, P_RPS_Rec.SERVICE_HOLD_APPROVED_FLAG, 1);
806       dbms_sql.define_column(p_cur_get_RPS, 32, P_RPS_Rec.SUGGESTION_APPROVED_FLAG, 1);
807       dbms_sql.define_column(p_cur_get_RPS, 33, P_RPS_Rec.DISPOSITION_CODE, 30);
808       dbms_sql.define_column(p_cur_get_RPS, 34, P_RPS_Rec.CUSTOMER_SITE_USE_ID);
809       dbms_sql.define_column(p_cur_get_RPS, 35, P_RPS_Rec.ORG_ID);
810       dbms_sql.define_column(p_cur_get_RPS, 36, P_RPS_Rec.CONTRACT_ID);
811       dbms_sql.define_column(p_cur_get_RPS, 37, P_RPS_Rec.CONTRACT_NUMBER, 250);
812 
813 END Define_Columns;
814 
815 -- This procudure gets column values by the Dynamic SQL.
816 PROCEDURE Get_Column_Values(
817     p_cur_get_RPS   IN   NUMBER,
818     X_RPS_Rec   OUT NOCOPY  rps_rec_type --IEX_REPOSSESSION_PUB.RPS_Rec_Type
819 )
820 IS
821 BEGIN
822 
823       -- get all column values for IEX_REPOSSESSIONS table
824       dbms_sql.column_value(p_cur_get_RPS, 1, X_RPS_Rec.REPOSSESSION_ID);
825       dbms_sql.column_value(p_cur_get_RPS, 2, X_RPS_Rec.DELINQUENCY_ID);
826       dbms_sql.column_value(p_cur_get_RPS, 3, X_RPS_Rec.PARTY_ID);
827       dbms_sql.column_value(p_cur_get_RPS, 4, X_RPS_Rec.CUST_ACCOUNT_ID);
828       dbms_sql.column_value(p_cur_get_RPS, 5, X_RPS_Rec.UNPAID_REASON_CODE);
829       dbms_sql.column_value(p_cur_get_RPS, 6, X_RPS_Rec.REMARKET_FLAG);
830       dbms_sql.column_value(p_cur_get_RPS, 7, X_RPS_Rec.REPOSSESSION_DATE);
831       dbms_sql.column_value(p_cur_get_RPS, 8, X_RPS_Rec.ASSET_ID);
832       dbms_sql.column_value(p_cur_get_RPS, 9, X_RPS_Rec.ASSET_VALUE);
833       dbms_sql.column_value(p_cur_get_RPS, 10, X_RPS_Rec.ASSET_NUMBER);
834       dbms_sql.column_value(p_cur_get_RPS, 11, X_RPS_Rec.REQUEST_ID);
835       dbms_sql.column_value(p_cur_get_RPS, 12, X_RPS_Rec.ATTRIBUTE_CATEGORY);
836       dbms_sql.column_value(p_cur_get_RPS, 13, X_RPS_Rec.ATTRIBUTE1);
837       dbms_sql.column_value(p_cur_get_RPS, 14, X_RPS_Rec.ATTRIBUTE2);
838       dbms_sql.column_value(p_cur_get_RPS, 15, X_RPS_Rec.ATTRIBUTE3);
839       dbms_sql.column_value(p_cur_get_RPS, 16, X_RPS_Rec.ATTRIBUTE4);
840       dbms_sql.column_value(p_cur_get_RPS, 17, X_RPS_Rec.ATTRIBUTE5);
841       dbms_sql.column_value(p_cur_get_RPS, 18, X_RPS_Rec.ATTRIBUTE6);
842       dbms_sql.column_value(p_cur_get_RPS, 19, X_RPS_Rec.ATTRIBUTE7);
843       dbms_sql.column_value(p_cur_get_RPS, 20, X_RPS_Rec.ATTRIBUTE8);
844       dbms_sql.column_value(p_cur_get_RPS, 21, X_RPS_Rec.ATTRIBUTE9);
845       dbms_sql.column_value(p_cur_get_RPS, 22, X_RPS_Rec.ATTRIBUTE10);
846       dbms_sql.column_value(p_cur_get_RPS, 23, X_RPS_Rec.ATTRIBUTE11);
847       dbms_sql.column_value(p_cur_get_RPS, 24, X_RPS_Rec.ATTRIBUTE12);
848       dbms_sql.column_value(p_cur_get_RPS, 25, X_RPS_Rec.ATTRIBUTE13);
849       dbms_sql.column_value(p_cur_get_RPS, 26, X_RPS_Rec.ATTRIBUTE14);
850       dbms_sql.column_value(p_cur_get_RPS, 27, X_RPS_Rec.ATTRIBUTE15);
851       dbms_sql.column_value(p_cur_get_RPS, 28, X_RPS_Rec.CREDIT_HOLD_REQUEST_FLAG);
852       dbms_sql.column_value(p_cur_get_RPS, 29, X_RPS_Rec.CREDIT_HOLD_APPROVED_FLAG);
853       dbms_sql.column_value(p_cur_get_RPS, 30, X_RPS_Rec.SERVICE_HOLD_REQUEST_FLAG);
854       dbms_sql.column_value(p_cur_get_RPS, 31, X_RPS_Rec.SERVICE_HOLD_APPROVED_FLAG);
855       dbms_sql.column_value(p_cur_get_RPS, 32, X_RPS_Rec.SUGGESTION_APPROVED_FLAG);
856       dbms_sql.column_value(p_cur_get_RPS, 33, X_RPS_Rec.DISPOSITION_CODE);
857       dbms_sql.column_value(p_cur_get_RPS, 34, X_RPS_Rec.CUSTOMER_SITE_USE_ID);
858       dbms_sql.column_value(p_cur_get_RPS, 35, X_RPS_Rec.ORG_ID);
859       dbms_sql.column_value(p_cur_get_RPS, 36, X_RPS_Rec.CONTRACT_ID);
860       dbms_sql.column_value(p_cur_get_RPS, 37, X_RPS_Rec.CONTRACT_NUMBER);
861 
862 END Get_Column_Values;
863 
864 PROCEDURE Gen_RPS_order_cl(
865     p_order_by_rec   IN   RPS_sort_rec_type, -- IEX_REPOSSESSION_PUB.RPS_sort_rec_type,
866     x_order_by_cl    OUT NOCOPY  VARCHAR2,
867     x_return_status  OUT NOCOPY  VARCHAR2,
868     x_msg_count      OUT NOCOPY  NUMBER,
869     x_msg_data       OUT NOCOPY  VARCHAR2
870 )
871 IS
872 l_order_by_cl        VARCHAR2(1000)   := NULL;
873 l_util_order_by_tbl  AS_UTILITY_PVT.Util_order_by_tbl_type;
874 BEGIN
875 
876       -- Hint: Developer should add more statements according to IEX_sort_rec_type
877       -- Ex:
878       -- l_util_order_by_tbl(1).col_choice := p_order_by_rec.customer_name;
879       -- l_util_order_by_tbl(1).col_name := 'Customer_Name';
880 
881 
882       AS_UTILITY_PVT.Translate_OrderBy(
883           p_api_version_number   =>   1.0
884          ,p_init_msg_list        =>   FND_API.G_FALSE
885          ,p_validation_level     =>   FND_API.G_VALID_LEVEL_FULL
886          ,p_order_by_tbl         =>   l_util_order_by_tbl
887          ,x_order_by_clause      =>   l_order_by_cl
888          ,x_return_status        =>   x_return_status
889          ,x_msg_count            =>   x_msg_count
890          ,x_msg_data             =>   x_msg_data);
891 
892       IF(l_order_by_cl IS NOT NULL) THEN
893           x_order_by_cl := 'order by' || l_order_by_cl;
894       ELSE
895           x_order_by_cl := NULL;
896       END IF;
897 
898 END Gen_RPS_order_cl;
899 
900 -- This procedure bind the variables for the Dynamic SQL
901 PROCEDURE Bind(
902     P_RPS_Rec   IN   RPS_Rec_Type, --IEX_REPOSSESSION_PUB.RPS_Rec_Type,
903     -- Hint: Add more binding variables here
904     p_cur_get_RPS   IN   NUMBER
905 )
906 IS
907 BEGIN
908       -- Bind variables
909       -- Only those that are not NULL
910 
911       -- The following example applies to all columns,
912       -- developers can copy and paste them.
913       IF( (P_RPS_Rec.REPOSSESSION_ID IS NOT NULL) AND (P_RPS_Rec.REPOSSESSION_ID <> FND_API.G_MISS_NUM) )
914       THEN
915           DBMS_SQL.BIND_VARIABLE(p_cur_get_RPS, ':p_REPOSSESSION_ID', P_RPS_Rec.REPOSSESSION_ID);
916       END IF;
917 
918 END Bind;
919 
920 PROCEDURE Gen_Select(
921     x_select_cl   OUT NOCOPY   VARCHAR2
922 )
923 IS
924 BEGIN
925 
926       x_select_cl := 'Select ' ||
927                 'IEX_REPOSSESSIONS.REPOSSESSION_ID,' ||
928                 'IEX_REPOSSESSIONS.DELINQUENCY_ID,' ||
929                 'IEX_REPOSSESSIONS.PARTY_ID,' ||
930                 'IEX_REPOSSESSIONS.CUST_ACCOUNT_ID,' ||
931                 'IEX_REPOSSESSIONS.UNPAID_REASON_CODE,' ||
932                 'IEX_REPOSSESSIONS.REMARKET_FLAG,' ||
933                 'IEX_REPOSSESSIONS.REPOSSESSION_DATE,' ||
934                 'IEX_REPOSSESSIONS.ASSET_ID,' ||
935                 'IEX_REPOSSESSIONS.ASSET_VALUE,' ||
936                 'IEX_REPOSSESSIONS.ASSET_NUMBER,' ||
937                 'IEX_REPOSSESSIONS.REQUEST_ID,' ||
938                 'IEX_REPOSSESSIONS.PROGRAM_APPLICATION_ID,' ||
939                 'IEX_REPOSSESSIONS.PROGRAM_ID,' ||
940                 'IEX_REPOSSESSIONS.PROGRAM_UPDATE_DATE,' ||
941                 'IEX_REPOSSESSIONS.ATTRIBUTE_CATEGORY,' ||
942                 'IEX_REPOSSESSIONS.ATTRIBUTE1,' ||
943                 'IEX_REPOSSESSIONS.ATTRIBUTE2,' ||
944                 'IEX_REPOSSESSIONS.ATTRIBUTE3,' ||
945                 'IEX_REPOSSESSIONS.ATTRIBUTE4,' ||
946                 'IEX_REPOSSESSIONS.ATTRIBUTE5,' ||
947                 'IEX_REPOSSESSIONS.ATTRIBUTE6,' ||
948                 'IEX_REPOSSESSIONS.ATTRIBUTE7,' ||
949                 'IEX_REPOSSESSIONS.ATTRIBUTE8,' ||
950                 'IEX_REPOSSESSIONS.ATTRIBUTE9,' ||
951                 'IEX_REPOSSESSIONS.ATTRIBUTE10,' ||
952                 'IEX_REPOSSESSIONS.ATTRIBUTE11,' ||
953                 'IEX_REPOSSESSIONS.ATTRIBUTE12,' ||
954                 'IEX_REPOSSESSIONS.ATTRIBUTE13,' ||
955                 'IEX_REPOSSESSIONS.ATTRIBUTE14,' ||
956                 'IEX_REPOSSESSIONS.ATTRIBUTE15,' ||
957                 'IEX_REPOSSESSIONS.CREATED_BY,' ||
958                 'IEX_REPOSSESSIONS.CREATION_DATE,' ||
959                 'IEX_REPOSSESSIONS.LAST_UPDATED_BY,' ||
960                 'IEX_REPOSSESSIONS.LAST_UPDATE_DATE,' ||
961                 'IEX_REPOSSESSIONS.LAST_UPDATE_LOGIN,' ||
962                 'IEX_REPOSSESSIONS.SECURITY_GROUP_ID,' ||
963                 'IEX_REPOSSESSIONS.CREDIT_HOLD_REQUEST_FLAG,' ||
964                 'IEX_REPOSSESSIONS.CREDIT_HOLD_APPROVED_FLAG,' ||
965                 'IEX_REPOSSESSIONS.SERVICE_HOLD_REQUEST_FLAG,' ||
966                 'IEX_REPOSSESSIONS.SERVICE_HOLD_APPROVED_FLAG,' ||
967                 'IEX_REPOSSESSIONS.SUGGESTION_APPROVED_FLAG,' ||
968                 'IEX_REPOSSESSIONS.DISPOSITION_CODE,' ||
969                 'IEX_REPOSSESSIONS.CUSTOMER_SITE_USE_ID,' ||
970                 'IEX_REPOSSESSIONS.ORG_ID,' ||
971                 'IEX_REPOSSESSIONS.CONTRACT_ID,' ||
972                 'IEX_REPOSSESSIONS.CONTRACT_NUMBER' ||
973                 'from IEX_REPOSSESSIONS';
974 
975 END Gen_Select;
976 
977 PROCEDURE Gen_RPS_Where(
978     P_RPS_Rec     IN   RPS_Rec_Type, --IEX_REPOSSESSION_PUB.RPS_Rec_Type,
979     x_RPS_where   OUT NOCOPY   VARCHAR2
980 )
981 IS
982 -- cursors to check if wildcard values '%' and '_' have been passed
983 -- as item values
984 CURSOR c_chk_str1(p_rec_item VARCHAR2) IS
985     SELECT INSTR(p_rec_item, '%', 1, 1)
986     FROM DUAL;
987 CURSOR c_chk_str2(p_rec_item VARCHAR2) IS
988     SELECT INSTR(p_rec_item, '_', 1, 1)
989     FROM DUAL;
990 
991 -- return values from cursors
992 str_csr1   NUMBER;
993 str_csr2   NUMBER;
994 l_operator VARCHAR2(10);
995 BEGIN
996 
997       -- There are three examples for each kind of datatype:
998       -- NUMBER, DATE, VARCHAR2.
999       -- Developer can copy and paste the following codes for your own record.
1000 
1001       -- example for NUMBER datatype
1002       IF( (P_RPS_Rec.REPOSSESSION_ID IS NOT NULL) AND (P_RPS_Rec.REPOSSESSION_ID <> FND_API.G_MISS_NUM) )
1003       THEN
1004           IF(x_RPS_where IS NULL) THEN
1005               x_RPS_where := 'Where';
1006           ELSE
1007               x_RPS_where := x_RPS_where || ' AND ';
1008           END IF;
1009           x_RPS_where := x_RPS_where || 'P_RPS_Rec.REPOSSESSION_ID = :p_REPOSSESSION_ID';
1010       END IF;
1011 
1012       -- example for DATE datatype
1013       IF( (P_RPS_Rec.REPOSSESSION_DATE IS NOT NULL) AND (P_RPS_Rec.REPOSSESSION_DATE <> FND_API.G_MISS_DATE) )
1014       THEN
1015           -- check if item value contains '%' wildcard
1016           OPEN c_chk_str1(P_RPS_Rec.REPOSSESSION_DATE);
1017           FETCH c_chk_str1 INTO str_csr1;
1018           CLOSE c_chk_str1;
1019 
1020           IF(str_csr1 <> 0) THEN
1021               l_operator := ' LIKE ';
1022           ELSE
1023               l_operator := ' = ';
1024           END IF;
1025 
1026           -- check if item value contains '_' wildcard
1027           OPEN c_chk_str2(P_RPS_Rec.REPOSSESSION_DATE);
1028           FETCH c_chk_str2 INTO str_csr2;
1029           CLOSE c_chk_str2;
1030 
1031           IF(str_csr2 <> 0) THEN
1032               l_operator := ' LIKE ';
1033           ELSE
1034               l_operator := ' = ';
1035           END IF;
1036 
1037           IF(x_RPS_where IS NULL) THEN
1038               x_RPS_where := 'Where ';
1039           ELSE
1040               x_RPS_where := x_RPS_where || ' AND ';
1041           END IF;
1042           x_RPS_where := x_RPS_where || 'P_RPS_Rec.REPOSSESSION_DATE ' || l_operator || ' :p_REPOSSESSION_DATE';
1043       END IF;
1044 
1045       -- example for VARCHAR2 datatype
1046       IF( (P_RPS_Rec.UNPAID_REASON_CODE IS NOT NULL) AND (P_RPS_Rec.UNPAID_REASON_CODE <> FND_API.G_MISS_CHAR) )
1047       THEN
1048           -- check if item value contains '%' wildcard
1049           OPEN c_chk_str1(P_RPS_Rec.UNPAID_REASON_CODE);
1050           FETCH c_chk_str1 INTO str_csr1;
1051           CLOSE c_chk_str1;
1052 
1053           IF(str_csr1 <> 0) THEN
1054               l_operator := ' LIKE ';
1055           ELSE
1056               l_operator := ' = ';
1057           END IF;
1058 
1059           -- check if item value contains '_' wildcard
1060           OPEN c_chk_str2(P_RPS_Rec.UNPAID_REASON_CODE);
1061           FETCH c_chk_str2 INTO str_csr2;
1062           CLOSE c_chk_str2;
1063 
1064           IF(str_csr2 <> 0) THEN
1065               l_operator := ' LIKE ';
1066           ELSE
1067               l_operator := ' = ';
1068           END IF;
1069 
1070           IF(x_RPS_where IS NULL) THEN
1071               x_RPS_where := 'Where ';
1072           ELSE
1073               x_RPS_where := x_RPS_where || ' AND ';
1074           END IF;
1075           x_RPS_where := x_RPS_where || 'P_RPS_Rec.UNPAID_REASON_CODE ' || l_operator || ' :p_UNPAID_REASON_CODE';
1076       END IF;
1077 
1078       -- Add more IF statements for each column below
1079 
1080 
1081 END Gen_RPS_Where;
1082 
1083 PROCEDURE Get_repossession(
1084     P_Api_Version_Number         IN   NUMBER,
1085     P_Init_Msg_List              IN   VARCHAR2   := FND_API.G_FALSE,
1086     p_validation_level           IN   NUMBER     := FND_API.G_VALID_LEVEL_FULL,
1087     P_Admin_Group_id             IN   NUMBER,
1088     P_identity_salesforce_id     IN   NUMBER     := NULL,
1089     P_RPS_Rec     IN    RPS_Rec_Type, --IEX_repossession_PUB.RPS_Rec_Type,
1090   -- Hint: Add list of bind variables here
1091     p_rec_requested              IN   NUMBER  := G_DEFAULT_NUM_REC_FETCH,
1092     p_start_rec_prt              IN   NUMBER  := 1,
1093     p_return_tot_count           IN   NUMBER  := FND_API.G_FALSE,
1094   -- Hint: user defined record type
1095     p_order_by_rec               IN   RPS_sort_Rec_Type,--IEX_repossession_PUB.RPS_sort_rec_type,
1096     x_return_status              OUT NOCOPY  VARCHAR2,
1097     x_msg_count                  OUT NOCOPY  NUMBER,
1098     x_msg_data                   OUT NOCOPY  VARCHAR2,
1099     X_RPS_Tbl  OUT NOCOPY  rps_tbl_type, --IEX_repossession_PUB.RPS_Tbl_Type,
1100     x_returned_rec_count         OUT NOCOPY  NUMBER,
1101     x_next_rec_ptr               OUT NOCOPY  NUMBER,
1102     x_tot_rec_count              OUT NOCOPY  NUMBER
1103   -- other optional parameters
1104 --  x_tot_rec_amount             OUT NOCOPY  NUMBER
1105     )
1106 
1107  IS
1108 l_api_name                CONSTANT VARCHAR2(30) := 'Get_repossession';
1109 l_api_version_number      CONSTANT NUMBER   := 2.0;
1110 
1111 -- Local identity variables
1112 l_identity_sales_member_rec  AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
1113 
1114 -- Local record counters
1115 l_returned_rec_count     NUMBER := 0; -- number of records returned in x_X_RPS_Rec
1116 l_next_record_ptr        NUMBER := 1;
1117 l_ignore                 NUMBER;
1118 
1119 -- total number of records accessable by caller
1120 l_tot_rec_count          NUMBER := 0;
1121 l_tot_rec_amount         NUMBER := 0;
1122 
1123 -- Status local variables
1124 l_return_status          VARCHAR2(1); -- Return value from procedures
1125 l_return_status_full     VARCHAR2(1); -- Calculated return status from
1126 
1127 -- Dynamic SQL statement elements
1128 l_cur_get_RPS            NUMBER;
1129 l_select_cl              VARCHAR2(2000) := '';
1130 l_order_by_cl            VARCHAR2(2000);
1131 l_RPS_where    VARCHAR2(2000) := '';
1132 
1133 -- For flex field query
1134 l_flex_where_tbl_type    AS_FOUNDATION_PVT.flex_where_tbl_type;
1135 l_flex_where             VARCHAR2(2000) := NULL;
1136 l_counter                NUMBER;
1137 
1138 -- Local scratch record
1139 l_RPS_rec rps_rec_type; --IEX_REPOSSESSION_PUB.RPS_Rec_Type;
1140 l_crit_RPS_rec rps_rec_type; --IEX_REPOSSESSION_PUB.RPS_Rec_Type;
1141 BEGIN
1142       -- Standard Start of API savepoint
1143       SAVEPOINT GET_REPOSSESSION_PVT;
1144 
1145       -- Standard call to check for call compatibility.
1146       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1147                                            p_api_version_number,
1148                                            l_api_name,
1149                                            G_PKG_NAME)
1150       THEN
1151           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1152       END IF;
1153 
1154 
1155       -- Initialize message list if p_init_msg_list is set to TRUE.
1156       IF FND_API.to_Boolean( p_init_msg_list )
1157       THEN
1158           FND_MSG_PUB.initialize;
1159       END IF;
1160 
1161 
1162 
1163 
1164       -- Initialize API return status to SUCCESS
1165       x_return_status := FND_API.G_RET_STS_SUCCESS;
1166 
1167       --
1168       -- Api body
1169       --
1170 
1171       IF p_validation_level = FND_API.G_VALID_LEVEL_FULL
1172       THEN
1173           AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
1174               p_api_version_number => 2.0
1175              ,p_init_msg_list      => p_init_msg_list
1176              ,p_salesforce_id => p_identity_salesforce_id
1177              ,p_admin_group_id => p_admin_group_id
1178              ,x_return_status => x_return_status
1179              ,x_msg_count => x_msg_count
1180              ,x_msg_data => x_msg_data
1181              ,x_sales_member_rec => l_identity_sales_member_rec);
1182 
1183 
1184           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1185               RAISE FND_API.G_EXC_ERROR;
1186           END IF;
1187 
1188       END IF;
1189       -- *************************************************
1190       -- Generate Dynamic SQL based on criteria passed in.
1191       -- Doing this for performance. Indexes are disabled when using NVL within static SQL statement.
1192       -- Ignore condition when criteria is NULL
1193       -- Generate Select clause and From clause
1194       -- Hint: Developer should modify Gen_Select procedure.
1195       Gen_Select(l_select_cl);
1196 
1197       -- Hint: Developer should modify and implement Gen_Where precedure.
1198       Gen_RPS_Where(l_crit_RPS_rec, l_RPS_where);
1199 
1200       -- Generate Where clause for flex fields
1201       -- Hint: Developer can use table/view alias in the From clause generated in Gen_Select procedure
1202 
1203       FOR l_counter IN 1..15 LOOP
1204           l_flex_where_tbl_type(l_counter).name := 'IEX_REPOSSESSIONS.attribute' || l_counter;
1205       END LOOP;
1206 
1207       l_flex_where_tbl_type(16).name := 'IEX_REPOSSESSIONS.attribute_category';
1208       l_flex_where_tbl_type(1).value := P_RPS_Rec.attribute1;
1209       l_flex_where_tbl_type(2).value := P_RPS_Rec.attribute2;
1210       l_flex_where_tbl_type(3).value := P_RPS_Rec.attribute3;
1211       l_flex_where_tbl_type(4).value := P_RPS_Rec.attribute4;
1212       l_flex_where_tbl_type(5).value := P_RPS_Rec.attribute5;
1213       l_flex_where_tbl_type(6).value := P_RPS_Rec.attribute6;
1214       l_flex_where_tbl_type(7).value := P_RPS_Rec.attribute7;
1215       l_flex_where_tbl_type(8).value := P_RPS_Rec.attribute8;
1216       l_flex_where_tbl_type(9).value := P_RPS_Rec.attribute9;
1217       l_flex_where_tbl_type(10).value := P_RPS_Rec.attribute10;
1218       l_flex_where_tbl_type(11).value := P_RPS_Rec.attribute11;
1219       l_flex_where_tbl_type(12).value := P_RPS_Rec.attribute12;
1220       l_flex_where_tbl_type(13).value := P_RPS_Rec.attribute13;
1221       l_flex_where_tbl_type(14).value := P_RPS_Rec.attribute14;
1222       l_flex_where_tbl_type(15).value := P_RPS_Rec.attribute15;
1223       l_flex_where_tbl_type(16).value := P_RPS_Rec.attribute_category;
1224 
1225       AS_FOUNDATION_PVT.Gen_Flexfield_Where(
1226           p_flex_where_tbl_type   => l_flex_where_tbl_type,
1227           x_flex_where_clause     => l_flex_where);
1228 
1229       -- Hint: if master/detail relationship, generate Where clause for lines level criteria
1230       -- Generate order by clause
1231       Gen_RPS_order_cl(p_order_by_rec, l_order_by_cl, l_return_status, x_msg_count, x_msg_data);
1232 
1233 
1234       l_cur_get_RPS := dbms_sql.open_cursor;
1235 
1236       -- Hint: concatenate all where clause (include flex field/line level if any applies)
1237       --    dbms_sql.parse(l_cur_get_RPS, l_select_cl || l_head_where || l_flex_where || l_lines_where
1238       --    || l_steam_where || l_order_by_cl, dbms_sql.native);
1239 
1240       -- Hint: Developer should implement Bind Variables procedure according to bind variables in the parameter list
1241       -- Bind(l_crit_RPS_rec, l_crit_exp_purchase_rec, p_start_date, p_end_date,
1242       --      p_crit_exp_salesforce_id, p_crit_ptr_salesforce_id,
1243       --      p_crit_salesgroup_id, p_crit_ptr_manager_person_id,
1244       --      p_win_prob_ceiling, p_win_prob_floor,
1245       --      p_total_amt_ceiling, p_total_amt_floor,
1246       --      l_cur_get_RPS);
1247 
1248       -- Bind flexfield variables
1249       AS_FOUNDATION_PVT.Bind_Flexfield_Where(
1250           p_cursor_id   =>   l_cur_get_RPS,
1251           p_flex_where_tbl_type => l_flex_where_tbl_type);
1252 
1253       -- Define all Select Columns
1254       Define_Columns(l_crit_RPS_rec, l_cur_get_RPS);
1255 
1256       -- Execute
1257 
1258       l_ignore := dbms_sql.execute(l_cur_get_RPS);
1259 
1260 
1261       -- This loop is here to avoid calling a function in the main
1262       -- cursor. Basically, calling this function seems to disable
1263       -- index, but verification is needed. This is a good
1264       -- place to optimize the code if required.
1265 
1266       LOOP
1267       -- 1. There are more rows in the cursor.
1268       -- 2. User does not care about total records, and we need to return more.
1269       -- 3. Or user cares about total number of records.
1270       IF((dbms_sql.fetch_rows(l_cur_get_RPS)>0) AND ((p_return_tot_count = FND_API.G_TRUE)
1271         OR (l_returned_rec_count<p_rec_requested) OR (p_rec_requested=FND_API.G_MISS_NUM)))
1272       THEN
1273 
1274           -- Hint: Developer need to implement this part
1275           --      dbms_sql.column_value(l_cur_get_opp, 1, l_opp_rec.lead_id);
1276           --      dbms_sql.column_value(l_cur_get_opp, 7, l_opp_rec.customer_id);
1277           --      dbms_sql.column_value(l_cur_get_opp, 8, l_opp_rec.address_id);
1278 
1279           -- Hint: Check access for this record (e.x. AS_ACCESS_PVT.Has_OpportunityAccess)
1280           -- Return this particular record if
1281           -- 1. The caller has access to record.
1282           -- 2. The number of records returned < number of records caller requested in this run.
1283           -- 3. The record comes AFTER or Equal to the start index the caller requested.
1284 
1285           -- Developer should check whether there is access privilege here
1286 --          IF(l_RPS_rec.member_access <> 'N' OR l_RPS_rec.member_role <> 'N') THEN
1287               Get_Column_Values(l_cur_get_RPS, l_RPS_rec);
1288               l_tot_rec_count := l_tot_rec_count + 1;
1289               IF(l_returned_rec_count < p_rec_requested) AND (l_tot_rec_count >= p_start_rec_prt) THEN
1290                   l_returned_rec_count := l_returned_rec_count + 1;
1291                   -- insert into resultant tables
1292                   X_RPS_Tbl(l_returned_rec_count) := l_RPS_rec;
1293               END IF;
1294 --          END IF;
1295       ELSE
1296           EXIT;
1297       END IF;
1298       END LOOP;
1299       --
1300       -- End of API body
1301       --
1302 
1303 
1304 
1305       -- Standard call to get message count and if count is 1, get message info.
1306       FND_MSG_PUB.Count_And_Get
1307       (  p_count          =>   x_msg_count,
1308          p_data           =>   x_msg_data
1309       );
1310 
1311       EXCEPTION
1312           WHEN FND_API.G_EXC_ERROR THEN
1313               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1314                    P_API_NAME => L_API_NAME
1315                   ,P_PKG_NAME => G_PKG_NAME
1316                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1317                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1318                   ,X_MSG_COUNT => X_MSG_COUNT
1319                   ,X_MSG_DATA => X_MSG_DATA
1320                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1321 
1322           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1323               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1324                    P_API_NAME => L_API_NAME
1325                   ,P_PKG_NAME => G_PKG_NAME
1326                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1327                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1328                   ,X_MSG_COUNT => X_MSG_COUNT
1329                   ,X_MSG_DATA => X_MSG_DATA
1330                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1331 
1332           WHEN OTHERS THEN
1333               AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1334                    P_API_NAME => L_API_NAME
1335                   ,P_PKG_NAME => G_PKG_NAME
1336                   ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
1337                   ,P_SQLCODE => SQLCODE
1338                   ,P_SQLERRM => SQLERRM
1339                   ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1340                   ,X_MSG_COUNT => X_MSG_COUNT
1341                   ,X_MSG_DATA => X_MSG_DATA
1342                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1343 End Get_repossession;
1344 
1345 
1346 -- Item-level validation procedures
1347 PROCEDURE Validate_REPOSSESSION_ID (
1348     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1349     P_Validation_mode            IN   VARCHAR2,
1350     P_REPOSSESSION_ID                IN   NUMBER,
1351     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1352     X_Return_Status              OUT NOCOPY  VARCHAR2,
1353     X_Msg_Count                  OUT NOCOPY  NUMBER,
1354     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1355     )
1356 IS
1357 BEGIN
1358 
1359       -- Initialize message list if p_init_msg_list is set to TRUE.
1360       IF FND_API.to_Boolean( p_init_msg_list )
1361       THEN
1362           FND_MSG_PUB.initialize;
1363       END IF;
1364 
1365 
1366       -- Initialize API return status to SUCCESS
1367       x_return_status := FND_API.G_RET_STS_SUCCESS;
1368 
1369       -- validate NOT NULL column
1370       IF(p_REPOSSESSION_ID is NULL)
1371       THEN
1372           x_return_status := FND_API.G_RET_STS_ERROR;
1373       END IF;
1374 
1375       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1376       THEN
1377           -- Hint: Validate data
1378           -- IF p_REPOSSESSION_ID is not NULL and p_REPOSSESSION_ID <> G_MISS_CHAR
1379           -- verify if data is valid
1380           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1381           NULL;
1382       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1383       THEN
1384           -- Hint: Validate data
1385           -- IF p_REPOSSESSION_ID <> G_MISS_CHAR
1386           -- verify if data is valid
1387           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1388           NULL;
1389       END IF;
1390 
1391       -- Standard call to get message count and if count is 1, get message info.
1392       FND_MSG_PUB.Count_And_Get
1393       (  p_count          =>   x_msg_count,
1394          p_data           =>   x_msg_data
1395       );
1396 
1397 END Validate_REPOSSESSION_ID;
1398 
1399 
1400 PROCEDURE Validate_DELINQUENCY_ID (
1401     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1402     P_Validation_mode            IN   VARCHAR2,
1403     P_DELINQUENCY_ID                IN   NUMBER,
1404     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1405     X_Return_Status              OUT NOCOPY  VARCHAR2,
1406     X_Msg_Count                  OUT NOCOPY  NUMBER,
1407     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1408     )
1409 IS
1410 BEGIN
1411 
1412       -- Initialize message list if p_init_msg_list is set to TRUE.
1413       IF FND_API.to_Boolean( p_init_msg_list )
1414       THEN
1415           FND_MSG_PUB.initialize;
1416       END IF;
1417 
1418 
1419       -- Initialize API return status to SUCCESS
1420       x_return_status := FND_API.G_RET_STS_SUCCESS;
1421 
1422       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1423       THEN
1424           -- Hint: Validate data
1425           -- IF p_DELINQUENCY_ID is not NULL and p_DELINQUENCY_ID <> G_MISS_CHAR
1426           -- verify if data is valid
1427           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1428           NULL;
1429       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1430       THEN
1431           -- Hint: Validate data
1432           -- IF p_DELINQUENCY_ID <> G_MISS_CHAR
1433           -- verify if data is valid
1434           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1435           NULL;
1436       END IF;
1437 
1438       -- Standard call to get message count and if count is 1, get message info.
1439       FND_MSG_PUB.Count_And_Get
1440       (  p_count          =>   x_msg_count,
1441          p_data           =>   x_msg_data
1442       );
1443 
1444 END Validate_DELINQUENCY_ID;
1445 
1446 
1447 PROCEDURE Validate_PARTY_ID (
1448     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1449     P_Validation_mode            IN   VARCHAR2,
1450     P_PARTY_ID                IN   NUMBER,
1451     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1452     X_Return_Status              OUT NOCOPY  VARCHAR2,
1453     X_Msg_Count                  OUT NOCOPY  NUMBER,
1454     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1455     )
1456 IS
1457 BEGIN
1458 
1459       -- Initialize message list if p_init_msg_list is set to TRUE.
1460       IF FND_API.to_Boolean( p_init_msg_list )
1461       THEN
1462           FND_MSG_PUB.initialize;
1463       END IF;
1464 
1465 
1466       -- Initialize API return status to SUCCESS
1467       x_return_status := FND_API.G_RET_STS_SUCCESS;
1468 
1469       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1470       THEN
1471           -- Hint: Validate data
1472           -- IF p_PARTY_ID is not NULL and p_PARTY_ID <> G_MISS_CHAR
1473           -- verify if data is valid
1474           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1475           NULL;
1476       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1477       THEN
1478           -- Hint: Validate data
1479           -- IF p_PARTY_ID <> G_MISS_CHAR
1480           -- verify if data is valid
1481           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1482           NULL;
1483       END IF;
1484 
1485       -- Standard call to get message count and if count is 1, get message info.
1486       FND_MSG_PUB.Count_And_Get
1487       (  p_count          =>   x_msg_count,
1488          p_data           =>   x_msg_data
1489       );
1490 
1491 END Validate_PARTY_ID;
1492 
1493 
1494 PROCEDURE Validate_CUST_ACCOUNT_ID (
1495     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1496     P_Validation_mode            IN   VARCHAR2,
1497     P_CUST_ACCOUNT_ID                IN   NUMBER,
1498     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1499     X_Return_Status              OUT NOCOPY  VARCHAR2,
1500     X_Msg_Count                  OUT NOCOPY  NUMBER,
1501     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1502     )
1503 IS
1504 BEGIN
1505 
1506       -- Initialize message list if p_init_msg_list is set to TRUE.
1507       IF FND_API.to_Boolean( p_init_msg_list )
1508       THEN
1509           FND_MSG_PUB.initialize;
1510       END IF;
1511 
1512 
1513       -- Initialize API return status to SUCCESS
1514       x_return_status := FND_API.G_RET_STS_SUCCESS;
1515 
1516       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1517       THEN
1518           -- Hint: Validate data
1519           -- IF p_CUST_ACCOUNT_ID is not NULL and p_CUST_ACCOUNT_ID <> G_MISS_CHAR
1520           -- verify if data is valid
1521           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1522           NULL;
1523       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1524       THEN
1525           -- Hint: Validate data
1526           -- IF p_CUST_ACCOUNT_ID <> G_MISS_CHAR
1527           -- verify if data is valid
1528           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1529           NULL;
1530       END IF;
1531 
1532       -- Standard call to get message count and if count is 1, get message info.
1533       FND_MSG_PUB.Count_And_Get
1534       (  p_count          =>   x_msg_count,
1535          p_data           =>   x_msg_data
1536       );
1537 
1538 END Validate_CUST_ACCOUNT_ID;
1539 
1540 
1541 PROCEDURE Validate_UNPAID_REASON_CODE (
1542     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1543     P_Validation_mode            IN   VARCHAR2,
1544     P_UNPAID_REASON_CODE                IN   VARCHAR2,
1545     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1546     X_Return_Status              OUT NOCOPY  VARCHAR2,
1547     X_Msg_Count                  OUT NOCOPY  NUMBER,
1548     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1549     )
1550 IS
1551 BEGIN
1552 
1553       -- Initialize message list if p_init_msg_list is set to TRUE.
1554       IF FND_API.to_Boolean( p_init_msg_list )
1555       THEN
1556           FND_MSG_PUB.initialize;
1557       END IF;
1558 
1559 
1560       -- Initialize API return status to SUCCESS
1561       x_return_status := FND_API.G_RET_STS_SUCCESS;
1562 
1563       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1564       THEN
1565           -- Hint: Validate data
1566           -- IF p_UNPAID_REASON_CODE is not NULL and p_UNPAID_REASON_CODE <> G_MISS_CHAR
1567           -- verify if data is valid
1568           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1569           NULL;
1570       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1571       THEN
1572           -- Hint: Validate data
1573           -- IF p_UNPAID_REASON_CODE <> G_MISS_CHAR
1574           -- verify if data is valid
1575           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1576           NULL;
1577       END IF;
1578 
1579       -- Standard call to get message count and if count is 1, get message info.
1580       FND_MSG_PUB.Count_And_Get
1581       (  p_count          =>   x_msg_count,
1582          p_data           =>   x_msg_data
1583       );
1584 
1585 END Validate_UNPAID_REASON_CODE;
1586 
1587 
1588 PROCEDURE Validate_REMARKET_FLAG (
1589     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1590     P_Validation_mode            IN   VARCHAR2,
1591     P_REMARKET_FLAG                IN   VARCHAR2,
1592     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1593     X_Return_Status              OUT NOCOPY  VARCHAR2,
1594     X_Msg_Count                  OUT NOCOPY  NUMBER,
1595     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1596     )
1597 IS
1598 BEGIN
1599 
1600       -- Initialize message list if p_init_msg_list is set to TRUE.
1601       IF FND_API.to_Boolean( p_init_msg_list )
1602       THEN
1603           FND_MSG_PUB.initialize;
1604       END IF;
1605 
1606 
1607       -- Initialize API return status to SUCCESS
1608       x_return_status := FND_API.G_RET_STS_SUCCESS;
1609 
1610       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1611       THEN
1612           -- Hint: Validate data
1613           -- IF p_REMARKET_FLAG is not NULL and p_REMARKET_FLAG <> G_MISS_CHAR
1614           -- verify if data is valid
1615           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1616           NULL;
1617       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1618       THEN
1619           -- Hint: Validate data
1620           -- IF p_REMARKET_FLAG <> G_MISS_CHAR
1621           -- verify if data is valid
1622           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1623           NULL;
1624       END IF;
1625 
1626       -- Standard call to get message count and if count is 1, get message info.
1627       FND_MSG_PUB.Count_And_Get
1628       (  p_count          =>   x_msg_count,
1629          p_data           =>   x_msg_data
1630       );
1631 
1632 END Validate_REMARKET_FLAG;
1633 
1634 
1635 PROCEDURE Validate_REPOSSESSION_DATE (
1636     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1637     P_Validation_mode            IN   VARCHAR2,
1638     P_REPOSSESSION_DATE                IN   DATE,
1639     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1640     X_Return_Status              OUT NOCOPY  VARCHAR2,
1641     X_Msg_Count                  OUT NOCOPY  NUMBER,
1642     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1643     )
1644 IS
1645 BEGIN
1646 
1647       -- Initialize message list if p_init_msg_list is set to TRUE.
1648       IF FND_API.to_Boolean( p_init_msg_list )
1649       THEN
1650           FND_MSG_PUB.initialize;
1651       END IF;
1652 
1653 
1654       -- Initialize API return status to SUCCESS
1655       x_return_status := FND_API.G_RET_STS_SUCCESS;
1656 
1657       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1658       THEN
1659           -- Hint: Validate data
1660           -- IF p_REPOSSESSION_DATE is not NULL and p_REPOSSESSION_DATE <> G_MISS_CHAR
1661           -- verify if data is valid
1662           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1663           NULL;
1664       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1665       THEN
1666           -- Hint: Validate data
1667           -- IF p_REPOSSESSION_DATE <> G_MISS_CHAR
1668           -- verify if data is valid
1669           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1670           NULL;
1671       END IF;
1672 
1673       -- Standard call to get message count and if count is 1, get message info.
1674       FND_MSG_PUB.Count_And_Get
1675       (  p_count          =>   x_msg_count,
1676          p_data           =>   x_msg_data
1677       );
1678 
1679 END Validate_REPOSSESSION_DATE;
1680 
1681 
1682 PROCEDURE Validate_ASSET_ID (
1683     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1684     P_Validation_mode            IN   VARCHAR2,
1685     P_ASSET_ID                IN   NUMBER,
1686     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1687     X_Return_Status              OUT NOCOPY  VARCHAR2,
1688     X_Msg_Count                  OUT NOCOPY  NUMBER,
1689     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1690     )
1691 IS
1692 BEGIN
1693 
1694       -- Initialize message list if p_init_msg_list is set to TRUE.
1695       IF FND_API.to_Boolean( p_init_msg_list )
1696       THEN
1697           FND_MSG_PUB.initialize;
1698       END IF;
1699 
1700 
1701       -- Initialize API return status to SUCCESS
1702       x_return_status := FND_API.G_RET_STS_SUCCESS;
1703 
1704       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1705       THEN
1706           -- Hint: Validate data
1707           -- IF p_ASSET_ID is not NULL and p_ASSET_ID <> G_MISS_CHAR
1708           -- verify if data is valid
1709           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1710           NULL;
1711       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1712       THEN
1713           -- Hint: Validate data
1714           -- IF p_ASSET_ID <> G_MISS_CHAR
1715           -- verify if data is valid
1716           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1717           NULL;
1718       END IF;
1719 
1720       -- Standard call to get message count and if count is 1, get message info.
1721       FND_MSG_PUB.Count_And_Get
1722       (  p_count          =>   x_msg_count,
1723          p_data           =>   x_msg_data
1724       );
1725 
1726 END Validate_ASSET_ID;
1727 
1728 
1729 PROCEDURE Validate_ASSET_VALUE (
1730     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1731     P_Validation_mode            IN   VARCHAR2,
1732     P_ASSET_VALUE                IN   NUMBER,
1733     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1734     X_Return_Status              OUT NOCOPY  VARCHAR2,
1735     X_Msg_Count                  OUT NOCOPY  NUMBER,
1736     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1737     )
1738 IS
1739 BEGIN
1740 
1741       -- Initialize message list if p_init_msg_list is set to TRUE.
1742       IF FND_API.to_Boolean( p_init_msg_list )
1743       THEN
1744           FND_MSG_PUB.initialize;
1745       END IF;
1746 
1747 
1748       -- Initialize API return status to SUCCESS
1749       x_return_status := FND_API.G_RET_STS_SUCCESS;
1750 
1751       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1752       THEN
1753           -- Hint: Validate data
1754           -- IF p_ASSET_VALUE is not NULL and p_ASSET_VALUE <> G_MISS_CHAR
1755           -- verify if data is valid
1756           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1757           NULL;
1758       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1759       THEN
1760           -- Hint: Validate data
1761           -- IF p_ASSET_VALUE <> G_MISS_CHAR
1762           -- verify if data is valid
1763           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1764           NULL;
1765       END IF;
1766 
1767       -- Standard call to get message count and if count is 1, get message info.
1768       FND_MSG_PUB.Count_And_Get
1769       (  p_count          =>   x_msg_count,
1770          p_data           =>   x_msg_data
1771       );
1772 
1773 END Validate_ASSET_VALUE;
1774 
1775 
1776 PROCEDURE Validate_ASSET_NUMBER (
1777     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1778     P_Validation_mode            IN   VARCHAR2,
1779     P_ASSET_NUMBER                IN   NUMBER,
1780     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1781     X_Return_Status              OUT NOCOPY  VARCHAR2,
1782     X_Msg_Count                  OUT NOCOPY  NUMBER,
1783     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1784     )
1785 IS
1786 BEGIN
1787 
1788       -- Initialize message list if p_init_msg_list is set to TRUE.
1789       IF FND_API.to_Boolean( p_init_msg_list )
1790       THEN
1791           FND_MSG_PUB.initialize;
1792       END IF;
1793 
1794 
1795       -- Initialize API return status to SUCCESS
1796       x_return_status := FND_API.G_RET_STS_SUCCESS;
1797 
1798       -- validate NOT NULL column
1799       IF(p_ASSET_NUMBER is NULL)
1800       THEN
1801           x_return_status := FND_API.G_RET_STS_ERROR;
1802       END IF;
1803 
1804       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1805       THEN
1806           -- Hint: Validate data
1807           -- IF p_ASSET_NUMBER is not NULL and p_ASSET_NUMBER <> G_MISS_CHAR
1808           -- verify if data is valid
1809           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1810           NULL;
1811       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1812       THEN
1813           -- Hint: Validate data
1814           -- IF p_ASSET_NUMBER <> G_MISS_CHAR
1815           -- verify if data is valid
1816           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1817           NULL;
1818       END IF;
1819 
1820       -- Standard call to get message count and if count is 1, get message info.
1821       FND_MSG_PUB.Count_And_Get
1822       (  p_count          =>   x_msg_count,
1823          p_data           =>   x_msg_data
1824       );
1825 
1826 END Validate_ASSET_NUMBER;
1827 
1828 
1829 PROCEDURE v_CREDIT_HOLD_REQUEST_FLAG (
1830     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1831     P_Validation_mode            IN   VARCHAR2,
1832     P_CREDIT_HOLD_REQUEST_FLAG                IN   VARCHAR2,
1833     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1834     X_Return_Status              OUT NOCOPY  VARCHAR2,
1835     X_Msg_Count                  OUT NOCOPY  NUMBER,
1836     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1837     )
1838 IS
1839 BEGIN
1840 
1841       -- Initialize message list if p_init_msg_list is set to TRUE.
1842       IF FND_API.to_Boolean( p_init_msg_list )
1843       THEN
1844           FND_MSG_PUB.initialize;
1845       END IF;
1846 
1847 
1848       -- Initialize API return status to SUCCESS
1849       x_return_status := FND_API.G_RET_STS_SUCCESS;
1850 
1851       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1852       THEN
1853           -- Hint: Validate data
1854           -- IF p_CREDIT_HOLD_REQUEST_FLAG is not NULL and p_CREDIT_HOLD_REQUEST_FLAG <> G_MISS_CHAR
1855           -- verify if data is valid
1856           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1857           NULL;
1858       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1859       THEN
1860           -- Hint: Validate data
1861           -- IF p_CREDIT_HOLD_REQUEST_FLAG <> G_MISS_CHAR
1862           -- verify if data is valid
1863           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1864           NULL;
1865       END IF;
1866 
1867       -- Standard call to get message count and if count is 1, get message info.
1868       FND_MSG_PUB.Count_And_Get
1869       (  p_count          =>   x_msg_count,
1870          p_data           =>   x_msg_data
1871       );
1872 
1873 END v_CREDIT_HOLD_REQUEST_FLAG;
1874 
1875 
1876 PROCEDURE v_CREDIT_HOLD_APPROVED_FLAG (
1877     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1878     P_Validation_mode            IN   VARCHAR2,
1879     P_CREDIT_HOLD_APPROVED_FLAG                IN   VARCHAR2,
1880     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1881     X_Return_Status              OUT NOCOPY  VARCHAR2,
1882     X_Msg_Count                  OUT NOCOPY  NUMBER,
1883     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1884     )
1885 IS
1886 BEGIN
1887 
1888       -- Initialize message list if p_init_msg_list is set to TRUE.
1889       IF FND_API.to_Boolean( p_init_msg_list )
1890       THEN
1891           FND_MSG_PUB.initialize;
1892       END IF;
1893 
1894 
1895       -- Initialize API return status to SUCCESS
1896       x_return_status := FND_API.G_RET_STS_SUCCESS;
1897 
1898       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1899       THEN
1900           -- Hint: Validate data
1901           -- IF p_CREDIT_HOLD_APPROVED_FLAG is not NULL and p_CREDIT_HOLD_APPROVED_FLAG <> G_MISS_CHAR
1902           -- verify if data is valid
1903           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1904           NULL;
1905       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1906       THEN
1907           -- Hint: Validate data
1908           -- IF p_CREDIT_HOLD_APPROVED_FLAG <> G_MISS_CHAR
1909           -- verify if data is valid
1910           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1911           NULL;
1912       END IF;
1913 
1914       -- Standard call to get message count and if count is 1, get message info.
1915       FND_MSG_PUB.Count_And_Get
1916       (  p_count          =>   x_msg_count,
1917          p_data           =>   x_msg_data
1918       );
1919 
1920 END v_CREDIT_HOLD_APPROVED_FLAG;
1921 
1922 
1923 PROCEDURE v_SERVICE_HOLD_REQUEST_FLAG (
1924     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1925     P_Validation_mode            IN   VARCHAR2,
1926     P_SERVICE_HOLD_REQUEST_FLAG                IN   VARCHAR2,
1927     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1928     X_Return_Status              OUT NOCOPY  VARCHAR2,
1929     X_Msg_Count                  OUT NOCOPY  NUMBER,
1930     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1931     )
1932 IS
1933 BEGIN
1934 
1935       -- Initialize message list if p_init_msg_list is set to TRUE.
1936       IF FND_API.to_Boolean( p_init_msg_list )
1937       THEN
1938           FND_MSG_PUB.initialize;
1939       END IF;
1940 
1941 
1942       -- Initialize API return status to SUCCESS
1943       x_return_status := FND_API.G_RET_STS_SUCCESS;
1944 
1945       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1946       THEN
1947           -- Hint: Validate data
1948           -- IF p_SERVICE_HOLD_REQUEST_FLAG is not NULL and p_SERVICE_HOLD_REQUEST_FLAG <> G_MISS_CHAR
1949           -- verify if data is valid
1950           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1951           NULL;
1952       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1953       THEN
1954           -- Hint: Validate data
1955           -- IF p_SERVICE_HOLD_REQUEST_FLAG <> G_MISS_CHAR
1956           -- verify if data is valid
1957           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1958           NULL;
1959       END IF;
1960 
1961       -- Standard call to get message count and if count is 1, get message info.
1962       FND_MSG_PUB.Count_And_Get
1963       (  p_count          =>   x_msg_count,
1964          p_data           =>   x_msg_data
1965       );
1966 
1967 END v_SERVICE_HOLD_REQUEST_FLAG;
1968 
1969 
1970 PROCEDURE v_SERVICE_HOLD_APPROVED_FLAG (
1971     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1972     P_Validation_mode            IN   VARCHAR2,
1973     P_SERVICE_HOLD_APPROVED_FLAG                IN   VARCHAR2,
1974     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1975     X_Return_Status              OUT NOCOPY  VARCHAR2,
1976     X_Msg_Count                  OUT NOCOPY  NUMBER,
1977     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1978     )
1979 IS
1980 BEGIN
1981 
1982       -- Initialize message list if p_init_msg_list is set to TRUE.
1983       IF FND_API.to_Boolean( p_init_msg_list )
1984       THEN
1985           FND_MSG_PUB.initialize;
1986       END IF;
1987 
1988 
1989       -- Initialize API return status to SUCCESS
1990       x_return_status := FND_API.G_RET_STS_SUCCESS;
1991 
1992       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1993       THEN
1994           -- Hint: Validate data
1995           -- IF p_SERVICE_HOLD_APPROVED_FLAG is not NULL and p_SERVICE_HOLD_APPROVED_FLAG <> G_MISS_CHAR
1996           -- verify if data is valid
1997           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1998           NULL;
1999       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
2000       THEN
2001           -- Hint: Validate data
2002           -- IF p_SERVICE_HOLD_APPROVED_FLAG <> G_MISS_CHAR
2003           -- verify if data is valid
2004           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
2005           NULL;
2006       END IF;
2007 
2008       -- Standard call to get message count and if count is 1, get message info.
2009       FND_MSG_PUB.Count_And_Get
2010       (  p_count          =>   x_msg_count,
2011          p_data           =>   x_msg_data
2012       );
2013 
2014 END v_SERVICE_HOLD_APPROVED_FLAG;
2015 
2016 
2017 PROCEDURE v_SUGGESTION_APPROVED_FLAG (
2018     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
2019     P_Validation_mode            IN   VARCHAR2,
2020     P_SUGGESTION_APPROVED_FLAG                IN   VARCHAR2,
2021     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     AS_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
2022     X_Return_Status              OUT NOCOPY  VARCHAR2,
2023     X_Msg_Count                  OUT NOCOPY  NUMBER,
2024     X_Msg_Data                   OUT NOCOPY  VARCHAR2
2025     )
2026 IS
2027 BEGIN
2028 
2029       -- Initialize message list if p_init_msg_list is set to TRUE.
2030       IF FND_API.to_Boolean( p_init_msg_list )
2031       THEN
2032           FND_MSG_PUB.initialize;
2033       END IF;
2034 
2035 
2036       -- Initialize API return status to SUCCESS
2037       x_return_status := FND_API.G_RET_STS_SUCCESS;
2038 
2039       IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
2040       THEN
2041           -- Hint: Validate data
2042           -- IF p_SUGGESTION_APPROVED_FLAG is not NULL and p_SUGGESTION_APPROVED_FLAG <> G_MISS_CHAR
2043           -- verify if data is valid
2044           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
2045           NULL;
2046       ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
2047       THEN
2048           -- Hint: Validate data
2049           -- IF p_SUGGESTION_APPROVED_FLAG <> G_MISS_CHAR
2050           -- verify if data is valid
2051           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
2052           NULL;
2053       END IF;
2054 
2055       -- Standard call to get message count and if count is 1, get message info.
2056       FND_MSG_PUB.Count_And_Get
2057       (  p_count          =>   x_msg_count,
2058          p_data           =>   x_msg_data
2059       );
2060 
2061 END v_SUGGESTION_APPROVED_FLAG;
2062 
2063 
2064 -- Hint: inter-field level validation can be added here.
2065 -- Hint: If p_validation_mode = AS_UTILITY_PVT.G_VALIDATE_UPDATE, we should use cursor
2066 --       to get old values for all fields used in inter-field validation and set all G_MISS_XXX fields to original value
2067 --       stored in database table.
2068 PROCEDURE Validate_RPS_rec(
2069     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
2070     P_Validation_mode            IN   VARCHAR2,
2071     P_RPS_Rec     IN    RPS_Rec_Type,
2072     X_Return_Status              OUT NOCOPY  VARCHAR2,
2073     X_Msg_Count                  OUT NOCOPY  NUMBER,
2074     X_Msg_Data                   OUT NOCOPY  VARCHAR2
2075     )
2076 IS
2077 BEGIN
2078 
2079       -- Initialize message list if p_init_msg_list is set to TRUE.
2080       IF FND_API.to_Boolean( p_init_msg_list )
2081       THEN
2082           FND_MSG_PUB.initialize;
2083       END IF;
2084 
2085 
2086       -- Initialize API return status to SUCCESS
2087       x_return_status := FND_API.G_RET_STS_SUCCESS;
2088 
2089       -- Hint: Validate data
2090       -- If data not valid
2091       -- THEN
2092       -- x_return_status := FND_API.G_RET_STS_ERROR;
2093 
2094 
2095       -- Standard call to get message count and if count is 1, get message info.
2096       FND_MSG_PUB.Count_And_Get
2097       (  p_count          =>   x_msg_count,
2098          p_data           =>   x_msg_data
2099       );
2100 
2101 END Validate_RPS_Rec;
2102 
2103 PROCEDURE Validate_repossession(
2104     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
2105     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
2106     P_Validation_mode            IN   VARCHAR2,
2107     P_RPS_Rec     IN    RPS_Rec_Type,
2108     X_Return_Status              OUT NOCOPY  VARCHAR2,
2109     X_Msg_Count                  OUT NOCOPY  NUMBER,
2110     X_Msg_Data                   OUT NOCOPY  VARCHAR2
2111     )
2112 IS
2113 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_repossession';
2114 BEGIN
2115 
2116 
2117       -- Initialize API return status to SUCCESS
2118       x_return_status := FND_API.G_RET_STS_SUCCESS;
2119 
2120       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_ITEM) THEN
2121           -- Hint: We provide validation procedure for every column. Developer should delete
2122           --       unnecessary validation procedures.
2123           Validate_REPOSSESSION_ID(
2124               p_init_msg_list          => FND_API.G_FALSE,
2125               p_validation_mode        => p_validation_mode,
2126               p_REPOSSESSION_ID   => P_RPS_Rec.REPOSSESSION_ID,
2127               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2128               x_return_status          => x_return_status,
2129               x_msg_count              => x_msg_count,
2130               x_msg_data               => x_msg_data);
2131 
2132           Validate_DELINQUENCY_ID(
2133               p_init_msg_list          => FND_API.G_FALSE,
2134               p_validation_mode        => p_validation_mode,
2135               p_DELINQUENCY_ID   => P_RPS_Rec.DELINQUENCY_ID,
2136               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2137               x_return_status          => x_return_status,
2138               x_msg_count              => x_msg_count,
2139               x_msg_data               => x_msg_data);
2140 
2141           Validate_PARTY_ID(
2142               p_init_msg_list          => FND_API.G_FALSE,
2143               p_validation_mode        => p_validation_mode,
2144               p_PARTY_ID   => P_RPS_Rec.PARTY_ID,
2145               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2146               x_return_status          => x_return_status,
2147               x_msg_count              => x_msg_count,
2148               x_msg_data               => x_msg_data);
2149 
2150           Validate_CUST_ACCOUNT_ID(
2151               p_init_msg_list          => FND_API.G_FALSE,
2152               p_validation_mode        => p_validation_mode,
2153               p_CUST_ACCOUNT_ID   => P_RPS_Rec.CUST_ACCOUNT_ID,
2154               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2155               x_return_status          => x_return_status,
2156               x_msg_count              => x_msg_count,
2157               x_msg_data               => x_msg_data);
2158 
2159           Validate_UNPAID_REASON_CODE(
2160               p_init_msg_list          => FND_API.G_FALSE,
2161               p_validation_mode        => p_validation_mode,
2162               p_UNPAID_REASON_CODE   => P_RPS_Rec.UNPAID_REASON_CODE,
2163               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2164               x_return_status          => x_return_status,
2165               x_msg_count              => x_msg_count,
2166               x_msg_data               => x_msg_data);
2167 
2168           Validate_REMARKET_FLAG(
2169               p_init_msg_list          => FND_API.G_FALSE,
2170               p_validation_mode        => p_validation_mode,
2171               p_REMARKET_FLAG   => P_RPS_Rec.REMARKET_FLAG,
2172               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2173               x_return_status          => x_return_status,
2174               x_msg_count              => x_msg_count,
2175               x_msg_data               => x_msg_data);
2176 
2177           Validate_REPOSSESSION_DATE(
2178               p_init_msg_list          => FND_API.G_FALSE,
2179               p_validation_mode        => p_validation_mode,
2180               p_REPOSSESSION_DATE   => P_RPS_Rec.REPOSSESSION_DATE,
2181               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2182               x_return_status          => x_return_status,
2183               x_msg_count              => x_msg_count,
2184               x_msg_data               => x_msg_data);
2185 
2186           Validate_ASSET_ID(
2187               p_init_msg_list          => FND_API.G_FALSE,
2188               p_validation_mode        => p_validation_mode,
2189               p_ASSET_ID   => P_RPS_Rec.ASSET_ID,
2190               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2191               x_return_status          => x_return_status,
2192               x_msg_count              => x_msg_count,
2193               x_msg_data               => x_msg_data);
2194 
2195           Validate_ASSET_VALUE(
2196               p_init_msg_list          => FND_API.G_FALSE,
2197               p_validation_mode        => p_validation_mode,
2198               p_ASSET_VALUE   => P_RPS_Rec.ASSET_VALUE,
2199               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2200               x_return_status          => x_return_status,
2201               x_msg_count              => x_msg_count,
2202               x_msg_data               => x_msg_data);
2203 
2204           Validate_ASSET_NUMBER(
2205               p_init_msg_list          => FND_API.G_FALSE,
2206               p_validation_mode        => p_validation_mode,
2207               p_ASSET_NUMBER   => P_RPS_Rec.ASSET_NUMBER,
2208               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2209               x_return_status          => x_return_status,
2210               x_msg_count              => x_msg_count,
2211               x_msg_data               => x_msg_data);
2212 
2213           v_CREDIT_HOLD_REQUEST_FLAG(
2214               p_init_msg_list          => FND_API.G_FALSE,
2215               p_validation_mode        => p_validation_mode,
2216               p_CREDIT_HOLD_REQUEST_FLAG   => P_RPS_Rec.CREDIT_HOLD_REQUEST_FLAG,
2217               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2218               x_return_status          => x_return_status,
2219               x_msg_count              => x_msg_count,
2220               x_msg_data               => x_msg_data);
2221 
2222           v_CREDIT_HOLD_APPROVED_FLAG(
2223               p_init_msg_list          => FND_API.G_FALSE,
2224               p_validation_mode        => p_validation_mode,
2225               p_CREDIT_HOLD_APPROVED_FLAG   => P_RPS_Rec.CREDIT_HOLD_APPROVED_FLAG,
2226               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2227               x_return_status          => x_return_status,
2228               x_msg_count              => x_msg_count,
2229               x_msg_data               => x_msg_data);
2230 
2231           v_SERVICE_HOLD_REQUEST_FLAG(
2232               p_init_msg_list          => FND_API.G_FALSE,
2233               p_validation_mode        => p_validation_mode,
2234               p_SERVICE_HOLD_REQUEST_FLAG   => P_RPS_Rec.SERVICE_HOLD_REQUEST_FLAG,
2235               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2236               x_return_status          => x_return_status,
2237               x_msg_count              => x_msg_count,
2238               x_msg_data               => x_msg_data);
2239 
2240           v_SERVICE_HOLD_APPROVED_FLAG(
2241               p_init_msg_list          => FND_API.G_FALSE,
2242               p_validation_mode        => p_validation_mode,
2243               p_SERVICE_HOLD_APPROVED_FLAG   => P_RPS_Rec.SERVICE_HOLD_APPROVED_FLAG,
2244               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2245               x_return_status          => x_return_status,
2246               x_msg_count              => x_msg_count,
2247               x_msg_data               => x_msg_data);
2248 
2249           v_SUGGESTION_APPROVED_FLAG(
2250               p_init_msg_list          => FND_API.G_FALSE,
2251               p_validation_mode        => p_validation_mode,
2252               p_SUGGESTION_APPROVED_FLAG   => P_RPS_Rec.SUGGESTION_APPROVED_FLAG,
2253               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY parameter if you'd like to pass back item property.
2254               x_return_status          => x_return_status,
2255               x_msg_count              => x_msg_count,
2256               x_msg_data               => x_msg_data);
2257 
2258       END IF;
2259 
2260       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_RECORD) THEN
2261           -- Hint: Inter-field level validation can be added here
2262           -- invoke record level validation procedures
2263           Validate_RPS_Rec(
2264               p_init_msg_list          => FND_API.G_FALSE,
2265               p_validation_mode        => p_validation_mode,
2266           P_RPS_Rec     =>    P_RPS_Rec,
2267               x_return_status          => x_return_status,
2268               x_msg_count              => x_msg_count,
2269               x_msg_data               => x_msg_data);
2270 
2271           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2272               raise FND_API.G_EXC_ERROR;
2273           END IF;
2274       END IF;
2275 
2276       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_RECORD) THEN
2277           -- invoke inter-record level validation procedures
2278           NULL;
2279       END IF;
2280 
2281       IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_INTER_ENTITY) THEN
2282           -- invoke inter-entity level validation procedures
2283           NULL;
2284       END IF;
2285 
2286 
2287 END Validate_repossession;
2288 
2289 End IEX_REPOSSESSION_PVT;