DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEX_REPOSSESSION_PVT

Source


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