DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_PYD_PVT

Source


1 PACKAGE BODY OKL_PYD_PVT AS
2 /* $Header: OKLSPYDB.pls 120.4.12010000.2 2009/07/17 23:27:43 sechawla ship $ */
3 
4   CURSOR party_cur(p_cpl_id IN NUMBER) IS
5   SELECT dnz_chr_id
6   FROM   okc_k_party_roles_b WHERE
7          id = p_cpl_id;
8   party_rec party_cur%ROWTYPE;
9 
10   ---------------------------------------------------------------------------
11   -- PROCEDURE load_error_tbl
12   ---------------------------------------------------------------------------
13   PROCEDURE load_error_tbl (
14     px_error_rec                   IN OUT NOCOPY  OKL_API.ERROR_REC_TYPE,
15     px_error_tbl                   IN OUT NOCOPY  OKL_API.ERROR_TBL_TYPE) IS
16 
17     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
18     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
19     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
20   BEGIN
21     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
22     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
23     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
24     -- automatically increments the index by 1, (making it 2), however, when the GET function
25     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn'tany
26     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
27     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
28     -- will only update the index variable when 1 and only 1 message is on the stack.
29     IF (last_msg_idx = 1) THEN
30       l_msg_idx := FND_MSG_PUB.G_FIRST;
31     END IF;
32     LOOP
33       fnd_msg_pub.get(
34             p_msg_index     => l_msg_idx,
35             p_encoded       => fnd_api.g_false,
36             p_data          => px_error_rec.msg_data,
37             p_msg_index_out => px_error_rec.msg_count);
38       px_error_tbl(j) := px_error_rec;
39       j := j + 1;
40     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
41     END LOOP;
42   END load_error_tbl;
43   ---------------------------------------------------------------------------
44   -- FUNCTION find_highest_exception
45   ---------------------------------------------------------------------------
46   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
47   -- in a OKL_API.ERROR_TBL_TYPE, and returns it.
48   FUNCTION find_highest_exception(
49     p_error_tbl                    IN OKL_API.ERROR_TBL_TYPE
50   ) RETURN VARCHAR2 IS
51     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
52     i                              INTEGER := 1;
53   BEGIN
54     IF (p_error_tbl.COUNT > 0) THEN
55       i := p_error_tbl.FIRST;
56       LOOP
57         IF (p_error_tbl(i).error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
58           IF (l_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
59             l_return_status := p_error_tbl(i).error_type;
60           END IF;
61         END IF;
62         EXIT WHEN (i = p_error_tbl.LAST);
63         i := p_error_tbl.NEXT(i);
64       END LOOP;
65     END IF;
66     RETURN(l_return_status);
67   END find_highest_exception;
68   ---------------------------------------------------------------------------
69   -- FUNCTION get_seq_id
70   ---------------------------------------------------------------------------
71   FUNCTION get_seq_id RETURN NUMBER IS
72   BEGIN
73     RETURN(okc_p_util.raw_to_number(sys_guid()));
74   END get_seq_id;
75 
76   ---------------------------------------------------------------------------
77   -- PROCEDURE qc
78   ---------------------------------------------------------------------------
79   PROCEDURE qc IS
80   BEGIN
81     null;
82   END qc;
83 
84   ---------------------------------------------------------------------------
85   -- PROCEDURE change_version
86   ---------------------------------------------------------------------------
87   PROCEDURE change_version IS
88   BEGIN
89     null;
90   END change_version;
91 
92   ---------------------------------------------------------------------------
93   -- PROCEDURE api_copy
94   ---------------------------------------------------------------------------
95   PROCEDURE api_copy IS
96   BEGIN
97     null;
98   END api_copy;
99 
100   ---------------------------------------------------------------------------
101   -- FUNCTION get_rec for: OKL_PARTY_PAYMENT_DTLS_V
102   ---------------------------------------------------------------------------
103   FUNCTION get_rec (
104     p_ppydv_rec                    IN ppydv_rec_type,
105     x_no_data_found                OUT NOCOPY BOOLEAN
106   ) RETURN ppydv_rec_type IS
107     CURSOR okl_party_payment_d1 (p_id IN NUMBER) IS
108     SELECT
109             ID,
110             OBJECT_VERSION_NUMBER,
111             CPL_ID,
112             VENDOR_ID,
113             PAY_SITE_ID,
114             PAYMENT_TERM_ID,
115             PAYMENT_METHOD_CODE,
116             PAY_GROUP_CODE,
117 			PAYMENT_HDR_ID,
118 			PAYMENT_START_DATE,
119 			PAYMENT_FREQUENCY,
120 			REMIT_DAYS,
121 			DISBURSEMENT_BASIS,
122 			DISBURSEMENT_FIXED_AMOUNT,
123 			DISBURSEMENT_PERCENT,
124 			PROCESSING_FEE_BASIS,
125 			PROCESSING_FEE_FIXED_AMOUNT,
126 			PROCESSING_FEE_PERCENT,
127 			--INCLUDE_IN_YIELD_FLAG,
128 			--PROCESSING_FEE_FORMULA,
129 			PAYMENT_BASIS,
130             ATTRIBUTE_CATEGORY,
131             ATTRIBUTE1,
132             ATTRIBUTE2,
133             ATTRIBUTE3,
134             ATTRIBUTE4,
135             ATTRIBUTE5,
136             ATTRIBUTE6,
137             ATTRIBUTE7,
138             ATTRIBUTE8,
139             ATTRIBUTE9,
140             ATTRIBUTE10,
141             ATTRIBUTE11,
142             ATTRIBUTE12,
143             ATTRIBUTE13,
144             ATTRIBUTE14,
145             ATTRIBUTE15,
146             CREATED_BY,
147             CREATION_DATE,
148             LAST_UPDATED_BY,
149             LAST_UPDATE_DATE,
150             LAST_UPDATE_LOGIN,
151             ORIG_CONTRACT_LINE_ID
152       FROM Okl_Party_Payment_Dtls_V
153      WHERE okl_party_payment_dtls_v.id = p_id;
154     l_okl_party_payment_dtls_v_pk  okl_party_payment_d1%ROWTYPE;
155     l_ppydv_rec                    ppydv_rec_type;
156   BEGIN
157     x_no_data_found := TRUE;
158     -- Get current database values
159     OPEN okl_party_payment_d1 (p_ppydv_rec.id);
160     FETCH okl_party_payment_d1 INTO
161               l_ppydv_rec.id,
162               l_ppydv_rec.object_version_number,
163               l_ppydv_rec.cpl_id,
164               l_ppydv_rec.vendor_id,
165               l_ppydv_rec.pay_site_id,
166               l_ppydv_rec.payment_term_id,
167               l_ppydv_rec.payment_method_code,
168               l_ppydv_rec.pay_group_code,
169 			  l_ppydv_rec.payment_hdr_id,
170 			  l_ppydv_rec.payment_start_date,
171 			  l_ppydv_rec.payment_frequency,
172 			  l_ppydv_rec.remit_days,
173 			  l_ppydv_rec.disbursement_basis,
174 			  l_ppydv_rec.disbursement_fixed_amount,
175 			  l_ppydv_rec.disbursement_percent,
176 			  l_ppydv_rec.processing_fee_basis,
177 			  l_ppydv_rec.processing_fee_fixed_amount,
178 			  l_ppydv_rec.processing_fee_percent,
179 			  --l_ppydv_rec.include_in_yield_flag,
180 			  --l_ppydv_rec.processing_fee_formula,
181 			  l_ppydv_rec.payment_basis,
182               l_ppydv_rec.attribute_category,
183               l_ppydv_rec.attribute1,
184               l_ppydv_rec.attribute2,
185               l_ppydv_rec.attribute3,
186               l_ppydv_rec.attribute4,
187               l_ppydv_rec.attribute5,
188               l_ppydv_rec.attribute6,
189               l_ppydv_rec.attribute7,
190               l_ppydv_rec.attribute8,
191               l_ppydv_rec.attribute9,
192               l_ppydv_rec.attribute10,
193               l_ppydv_rec.attribute11,
194               l_ppydv_rec.attribute12,
195               l_ppydv_rec.attribute13,
196               l_ppydv_rec.attribute14,
197               l_ppydv_rec.attribute15,
198               l_ppydv_rec.created_by,
199               l_ppydv_rec.creation_date,
200               l_ppydv_rec.last_updated_by,
201               l_ppydv_rec.last_update_date,
202               l_ppydv_rec.last_update_login,
203 			  l_ppydv_rec.ORIG_CONTRACT_LINE_ID;
204     x_no_data_found := okl_party_payment_d1%NOTFOUND;
205     CLOSE okl_party_payment_d1;
206     RETURN(l_ppydv_rec);
207   END get_rec;
208 
209   ------------------------------------------------------------------
210   -- This version of get_rec sets error messages if no data found --
211   ------------------------------------------------------------------
212   FUNCTION get_rec (
213     p_ppydv_rec                    IN ppydv_rec_type,
214     x_return_status                OUT NOCOPY VARCHAR2
215   ) RETURN ppydv_rec_type IS
216     l_ppydv_rec                    ppydv_rec_type;
217     l_row_notfound                 BOOLEAN := TRUE;
218   BEGIN
219     x_return_status := OKL_API.G_RET_STS_SUCCESS;
220     l_ppydv_rec := get_rec(p_ppydv_rec, l_row_notfound);
221     IF (l_row_notfound) THEN
222       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
223       x_return_status := OKL_API.G_RET_STS_ERROR;
224     END IF;
225     RETURN(l_ppydv_rec);
226   END get_rec;
227   -----------------------------------------------------------
228   -- So we don't have to pass an "l_row_notfound" variable --
229   -----------------------------------------------------------
230   FUNCTION get_rec (
231     p_ppydv_rec                    IN ppydv_rec_type
232   ) RETURN ppydv_rec_type IS
233     l_row_not_found                BOOLEAN := TRUE;
234   BEGIN
235     RETURN(get_rec(p_ppydv_rec, l_row_not_found));
236   END get_rec;
237   ---------------------------------------------------------------------------
238   -- FUNCTION get_rec for: OKL_PARTY_PAYMENT_DTLS
239   ---------------------------------------------------------------------------
240   FUNCTION get_rec (
241     p_ppyd_rec                     IN ppyd_rec_type,
242     x_no_data_found                OUT NOCOPY BOOLEAN
243   ) RETURN ppyd_rec_type IS
244     CURSOR okl_party_payment_dtls_pk_csr (p_id IN NUMBER) IS
245     SELECT
246             ID,
247             OBJECT_VERSION_NUMBER,
248             CPL_ID,
249             VENDOR_ID,
250             PAY_SITE_ID,
251             PAYMENT_TERM_ID,
252             PAYMENT_METHOD_CODE,
253             PAY_GROUP_CODE,
254 			PAYMENT_HDR_ID,
255 			PAYMENT_START_DATE,
256 			PAYMENT_FREQUENCY,
257 			REMIT_DAYS,
258 			DISBURSEMENT_BASIS,
259 			DISBURSEMENT_FIXED_AMOUNT,
260 			DISBURSEMENT_PERCENT,
261 			PROCESSING_FEE_BASIS,
262 			PROCESSING_FEE_FIXED_AMOUNT,
263 			PROCESSING_FEE_PERCENT,
264 			--INCLUDE_IN_YIELD_FLAG,
265 			--PROCESSING_FEE_FORMULA,
266 			PAYMENT_BASIS,
267             ATTRIBUTE_CATEGORY,
268             ATTRIBUTE1,
269             ATTRIBUTE2,
270             ATTRIBUTE3,
271             ATTRIBUTE4,
272             ATTRIBUTE5,
273             ATTRIBUTE6,
274             ATTRIBUTE7,
275             ATTRIBUTE8,
276             ATTRIBUTE9,
277             ATTRIBUTE10,
278             ATTRIBUTE11,
279             ATTRIBUTE12,
280             ATTRIBUTE13,
281             ATTRIBUTE14,
282             ATTRIBUTE15,
283             CREATED_BY,
284             CREATION_DATE,
285             LAST_UPDATED_BY,
286             LAST_UPDATE_DATE,
287             LAST_UPDATE_LOGIN,
288             ORIG_CONTRACT_LINE_ID
289       FROM Okl_Party_Payment_Dtls
290      WHERE okl_party_payment_dtls.id = p_id;
291     l_okl_party_payment_dtls_pk    okl_party_payment_dtls_pk_csr%ROWTYPE;
292     l_ppyd_rec                     ppyd_rec_type;
293   BEGIN
294     x_no_data_found := TRUE;
295     -- Get current database values
296     OPEN okl_party_payment_dtls_pk_csr (p_ppyd_rec.id);
297     FETCH okl_party_payment_dtls_pk_csr INTO
298               l_ppyd_rec.id,
299               l_ppyd_rec.object_version_number,
300               l_ppyd_rec.cpl_id,
301               l_ppyd_rec.vendor_id,
302               l_ppyd_rec.pay_site_id,
303               l_ppyd_rec.payment_term_id,
304               l_ppyd_rec.payment_method_code,
305               l_ppyd_rec.pay_group_code,
306 			  l_ppyd_rec.payment_hdr_id,
307 			  l_ppyd_rec.payment_start_date,
308 			  l_ppyd_rec.payment_frequency,
309 			  l_ppyd_rec.remit_days,
310 			  l_ppyd_rec.disbursement_basis,
311 			  l_ppyd_rec.disbursement_fixed_amount,
312 			  l_ppyd_rec.disbursement_percent,
313 			  l_ppyd_rec.processing_fee_basis,
314 			  l_ppyd_rec.processing_fee_fixed_amount,
315 			  l_ppyd_rec.processing_fee_percent,
316 			  --l_ppyd_rec.include_in_yield_flag,
317 			  --l_ppyd_rec.processing_fee_formula,
318 			  l_ppyd_rec.payment_basis,
319               l_ppyd_rec.attribute_category,
320               l_ppyd_rec.attribute1,
321               l_ppyd_rec.attribute2,
322               l_ppyd_rec.attribute3,
323               l_ppyd_rec.attribute4,
324               l_ppyd_rec.attribute5,
325               l_ppyd_rec.attribute6,
326               l_ppyd_rec.attribute7,
327               l_ppyd_rec.attribute8,
328               l_ppyd_rec.attribute9,
329               l_ppyd_rec.attribute10,
330               l_ppyd_rec.attribute11,
331               l_ppyd_rec.attribute12,
332               l_ppyd_rec.attribute13,
333               l_ppyd_rec.attribute14,
334               l_ppyd_rec.attribute15,
335               l_ppyd_rec.created_by,
336               l_ppyd_rec.creation_date,
337               l_ppyd_rec.last_updated_by,
338               l_ppyd_rec.last_update_date,
339               l_ppyd_rec.last_update_login,
340 			  l_ppyd_rec.ORIG_CONTRACT_LINE_ID;
341     x_no_data_found := okl_party_payment_dtls_pk_csr%NOTFOUND;
342     CLOSE okl_party_payment_dtls_pk_csr;
343     RETURN(l_ppyd_rec);
344   END get_rec;
345 
346   ------------------------------------------------------------------
347   -- This version of get_rec sets error messages if no data found --
348   ------------------------------------------------------------------
349   FUNCTION get_rec (
350     p_ppyd_rec                     IN ppyd_rec_type,
351     x_return_status                OUT NOCOPY VARCHAR2
352   ) RETURN ppyd_rec_type IS
353     l_ppyd_rec                     ppyd_rec_type;
354     l_row_notfound                 BOOLEAN := TRUE;
355   BEGIN
356     x_return_status := OKL_API.G_RET_STS_SUCCESS;
357     l_ppyd_rec := get_rec(p_ppyd_rec, l_row_notfound);
358     IF (l_row_notfound) THEN
359       OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
360       x_return_status := OKL_API.G_RET_STS_ERROR;
361     END IF;
362     RETURN(l_ppyd_rec);
363   END get_rec;
364   -----------------------------------------------------------
365   -- So we don't have to pass an "l_row_notfound" variable --
366   -----------------------------------------------------------
367   FUNCTION get_rec (
368     p_ppyd_rec                     IN ppyd_rec_type
369   ) RETURN ppyd_rec_type IS
370     l_row_not_found                BOOLEAN := TRUE;
371   BEGIN
372     RETURN(get_rec(p_ppyd_rec, l_row_not_found));
373   END get_rec;
374   ---------------------------------------------------------------------------
375   -- FUNCTION null_out_defaults for: OKL_PARTY_PAYMENT_DTLS_V
376   ---------------------------------------------------------------------------
377   FUNCTION null_out_defaults (
378     p_ppydv_rec   IN ppydv_rec_type
379   ) RETURN ppydv_rec_type IS
380     l_ppydv_rec                    ppydv_rec_type := p_ppydv_rec;
381   BEGIN
382     IF (l_ppydv_rec.id = OKL_API.G_MISS_NUM ) THEN
383       l_ppydv_rec.id := NULL;
384     END IF;
385     IF (l_ppydv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
386       l_ppydv_rec.object_version_number := NULL;
387     END IF;
388     IF (l_ppydv_rec.cpl_id = OKL_API.G_MISS_NUM ) THEN
389       l_ppydv_rec.cpl_id := NULL;
390     END IF;
391     IF (l_ppydv_rec.vendor_id = OKL_API.G_MISS_NUM ) THEN
392       l_ppydv_rec.vendor_id := NULL;
393     END IF;
394     IF (l_ppydv_rec.pay_site_id = OKL_API.G_MISS_NUM ) THEN
395       l_ppydv_rec.pay_site_id := NULL;
396     END IF;
397     IF (l_ppydv_rec.payment_term_id = OKL_API.G_MISS_NUM ) THEN
398       l_ppydv_rec.payment_term_id := NULL;
399     END IF;
400     IF (l_ppydv_rec.payment_method_code = OKL_API.G_MISS_CHAR ) THEN
401       l_ppydv_rec.payment_method_code := NULL;
402     END IF;
403     IF (l_ppydv_rec.pay_group_code = OKL_API.G_MISS_CHAR ) THEN
404       l_ppydv_rec.pay_group_code := NULL;
405     END IF;
406     IF (l_ppydv_rec.payment_hdr_id = OKL_API.G_MISS_NUM ) THEN
407       l_ppydv_rec.payment_hdr_id := NULL;
408     END IF;
409     IF (l_ppydv_rec.payment_start_date = OKL_API.G_MISS_DATE ) THEN
410       l_ppydv_rec.payment_start_date := NULL;
411     END IF;
412     IF (l_ppydv_rec.payment_frequency = OKL_API.G_MISS_CHAR ) THEN
413       l_ppydv_rec.payment_frequency := NULL;
414     END IF;
415     IF (l_ppydv_rec.remit_days = OKL_API.G_MISS_NUM ) THEN
416       l_ppydv_rec.remit_days := NULL;
417     END IF;
418     IF (l_ppydv_rec.disbursement_basis = OKL_API.G_MISS_CHAR ) THEN
419       l_ppydv_rec.disbursement_basis := NULL;
420     END IF;
421     IF (l_ppydv_rec.disbursement_fixed_amount = OKL_API.G_MISS_NUM ) THEN
422       l_ppydv_rec.disbursement_fixed_amount := NULL;
423     END IF;
424     IF (l_ppydv_rec.disbursement_percent = OKL_API.G_MISS_NUM ) THEN
425       l_ppydv_rec.disbursement_percent := NULL;
426     END IF;
427     IF (l_ppydv_rec.processing_fee_basis = OKL_API.G_MISS_CHAR ) THEN
428       l_ppydv_rec.processing_fee_basis := NULL;
429     END IF;
430     IF (l_ppydv_rec.processing_fee_fixed_amount = OKL_API.G_MISS_NUM ) THEN
431       l_ppydv_rec.processing_fee_fixed_amount := NULL;
432     END IF;
433     IF (l_ppydv_rec.processing_fee_percent = OKL_API.G_MISS_NUM ) THEN
434       l_ppydv_rec.processing_fee_percent := NULL;
435     END IF;
436 	/*
437     IF (l_ppydv_rec.include_in_yield_flag = OKL_API.G_MISS_CHAR ) THEN
438       l_ppydv_rec.include_in_yield_flag := NULL;
439     END IF;
440     IF (l_ppydv_rec.processing_fee_formula = OKL_API.G_MISS_CHAR ) THEN
441       l_ppydv_rec.processing_fee_formula := NULL;
442     END IF; */
443     IF (l_ppydv_rec.payment_basis = OKL_API.G_MISS_CHAR ) THEN
444       l_ppydv_rec.payment_basis := NULL;
445     END IF;
446     IF (l_ppydv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
447       l_ppydv_rec.attribute_category := NULL;
448     END IF;
449     IF (l_ppydv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
450       l_ppydv_rec.attribute1 := NULL;
451     END IF;
452     IF (l_ppydv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
453       l_ppydv_rec.attribute2 := NULL;
454     END IF;
455     IF (l_ppydv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
456       l_ppydv_rec.attribute3 := NULL;
457     END IF;
458     IF (l_ppydv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
459       l_ppydv_rec.attribute4 := NULL;
460     END IF;
461     IF (l_ppydv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
462       l_ppydv_rec.attribute5 := NULL;
463     END IF;
464     IF (l_ppydv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
465       l_ppydv_rec.attribute6 := NULL;
466     END IF;
467     IF (l_ppydv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
468       l_ppydv_rec.attribute7 := NULL;
469     END IF;
470     IF (l_ppydv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
471       l_ppydv_rec.attribute8 := NULL;
472     END IF;
473     IF (l_ppydv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
474       l_ppydv_rec.attribute9 := NULL;
475     END IF;
476     IF (l_ppydv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
477       l_ppydv_rec.attribute10 := NULL;
478     END IF;
479     IF (l_ppydv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
480       l_ppydv_rec.attribute11 := NULL;
481     END IF;
482     IF (l_ppydv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
483       l_ppydv_rec.attribute12 := NULL;
484     END IF;
485     IF (l_ppydv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
486       l_ppydv_rec.attribute13 := NULL;
487     END IF;
488     IF (l_ppydv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
489       l_ppydv_rec.attribute14 := NULL;
490     END IF;
491     IF (l_ppydv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
492       l_ppydv_rec.attribute15 := NULL;
493     END IF;
494     IF (l_ppydv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
495       l_ppydv_rec.created_by := NULL;
496     END IF;
497     IF (l_ppydv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
498       l_ppydv_rec.creation_date := NULL;
499     END IF;
500     IF (l_ppydv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
501       l_ppydv_rec.last_updated_by := NULL;
502     END IF;
503     IF (l_ppydv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
504       l_ppydv_rec.last_update_date := NULL;
505     END IF;
506     IF (l_ppydv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
507       l_ppydv_rec.last_update_login := NULL;
508     END IF;
509 
510     IF (l_ppydv_rec.ORIG_CONTRACT_LINE_ID = OKL_API.G_MISS_NUM ) THEN
511       l_ppydv_rec.ORIG_CONTRACT_LINE_ID := NULL;
512     END IF;
513 
514 
515     RETURN(l_ppydv_rec);
516   END null_out_defaults;
517   ---------------------------------
518   -- Validate_Attributes for: ID --
519   ---------------------------------
520   PROCEDURE validate_id(
521     x_return_status                OUT NOCOPY VARCHAR2,
522     p_id                           IN NUMBER) IS
523   BEGIN
524     x_return_status := OKL_API.G_RET_STS_SUCCESS;
525     IF (p_id = OKL_API.G_MISS_NUM OR
526         p_id IS NULL)
527     THEN
528       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
529       x_return_status := OKL_API.G_RET_STS_ERROR;
530       RAISE G_EXCEPTION_HALT_VALIDATION;
531     END IF;
532   EXCEPTION
533     WHEN G_EXCEPTION_HALT_VALIDATION THEN
534       null;
535     WHEN OTHERS THEN
536       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
537                           ,p_msg_name     => G_UNEXPECTED_ERROR
538                           ,p_token1       => G_SQLCODE_TOKEN
539                           ,p_token1_value => SQLCODE
540                           ,p_token2       => G_SQLERRM_TOKEN
541                           ,p_token2_value => SQLERRM);
542       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
543   END validate_id;
544   ----------------------------------------------------
545   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
546   ----------------------------------------------------
547   PROCEDURE validate_object_version_number(
548     x_return_status                OUT NOCOPY VARCHAR2,
549     p_object_version_number        IN NUMBER) IS
550   BEGIN
551     x_return_status := OKL_API.G_RET_STS_SUCCESS;
552     IF (p_object_version_number = OKL_API.G_MISS_NUM OR
553         p_object_version_number IS NULL)
554     THEN
555       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
556       x_return_status := OKL_API.G_RET_STS_ERROR;
557       RAISE G_EXCEPTION_HALT_VALIDATION;
558     END IF;
559   EXCEPTION
560     WHEN G_EXCEPTION_HALT_VALIDATION THEN
561       null;
562     WHEN OTHERS THEN
563       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
564                           ,p_msg_name     => G_UNEXPECTED_ERROR
565                           ,p_token1       => G_SQLCODE_TOKEN
566                           ,p_token1_value => SQLCODE
567                           ,p_token2       => G_SQLERRM_TOKEN
568                           ,p_token2_value => SQLERRM);
569       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
570   END validate_object_version_number;
571   ----------------------------------------------------
572   -- Validate_Attributes for: cpl_id --
573   ----------------------------------------------------
574   PROCEDURE validate_cpl_id(
575     x_return_status                OUT NOCOPY VARCHAR2,
576     p_cpl_id                       IN NUMBER) IS
577 
578    CURSOR l_cpl_csr (p_cpl_id in number) IS
579       SELECT 'Y'
580       FROM  okc_k_party_roles_b cplb
581       WHERE cplb.id = p_cpl_id;
582 
583       l_exists varchar2(1) default 'N';
584 
585   BEGIN
586     x_return_status := OKL_API.G_RET_STS_SUCCESS;
587     IF (p_cpl_id = OKL_API.G_MISS_NUM OR
588         p_cpl_id IS NULL)
589     THEN
590       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'cpl_id');
591       x_return_status := OKL_API.G_RET_STS_ERROR;
592       RAISE G_EXCEPTION_HALT_VALIDATION;
593     ELSIF (p_cpl_id <> OKL_API.G_MISS_NUM AND p_cpl_id is NOT NULL) then
594         l_exists := 'N';
595         Open l_cpl_csr (p_cpl_id => p_cpl_id);
596         Fetch l_cpl_csr into l_exists;
597         If l_cpl_csr%NOTFOUND then
598             Null;
599         End If;
600         Close l_cpl_csr;
601         IF l_exists = 'N' then
602             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'cpl_id');
603             x_return_status := OKL_API.G_RET_STS_ERROR;
604             RAISE G_EXCEPTION_HALT_VALIDATION;
605         END IF;
606 
607     END IF;
608   EXCEPTION
609     WHEN G_EXCEPTION_HALT_VALIDATION THEN
610       null;
611     WHEN OTHERS THEN
612       If l_cpl_csr%ISOPEN then
613           close l_cpl_csr;
614       End If;
615       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
616                           ,p_msg_name     => G_UNEXPECTED_ERROR
617                           ,p_token1       => G_SQLCODE_TOKEN
618                           ,p_token1_value => SQLCODE
619                           ,p_token2       => G_SQLERRM_TOKEN
620                           ,p_token2_value => SQLERRM);
621       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
622   END validate_cpl_id;
623   ----------------------------------------------------
624   -- Validate_Attributes for: vendor_id --
625   ----------------------------------------------------
626   PROCEDURE validate_vendor_id(
627     x_return_status                OUT NOCOPY VARCHAR2,
628     p_vendor_id                       IN NUMBER) IS
629 
630    CURSOR l_vendor_csr (p_vendor_id in number) IS
631       SELECT 'Y'
632       FROM  po_vendors pov
633       WHERE pov.vendor_id = p_vendor_id;
634 
635       l_exists varchar2(1) default 'N';
636 
637   BEGIN
638     x_return_status := OKL_API.G_RET_STS_SUCCESS;
639     IF (p_vendor_id = OKL_API.G_MISS_NUM OR
640         p_vendor_id IS NULL)
641     THEN
642       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Vendor');
643       x_return_status := OKL_API.G_RET_STS_ERROR;
644       RAISE G_EXCEPTION_HALT_VALIDATION;
645     ELSIF (p_vendor_id <> OKL_API.G_MISS_NUM AND p_vendor_id is NOT NULL) then
646         l_exists := 'N';
647         Open l_vendor_csr (p_vendor_id => p_vendor_id);
648         Fetch l_vendor_csr into l_exists;
649         If l_vendor_csr%NOTFOUND then
650             Null;
651         End If;
652         Close l_vendor_csr;
653         IF l_exists = 'N' then
654             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Vendor');
655             x_return_status := OKL_API.G_RET_STS_ERROR;
656             RAISE G_EXCEPTION_HALT_VALIDATION;
657         END IF;
658 
659     END IF;
660   EXCEPTION
661     WHEN G_EXCEPTION_HALT_VALIDATION THEN
662       null;
663     WHEN OTHERS THEN
664       If l_vendor_csr%ISOPEN then
665           close l_vendor_csr;
666       End If;
667       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
668                           ,p_msg_name     => G_UNEXPECTED_ERROR
669                           ,p_token1       => G_SQLCODE_TOKEN
670                           ,p_token1_value => SQLCODE
671                           ,p_token2       => G_SQLERRM_TOKEN
672                           ,p_token2_value => SQLERRM);
673       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
674   END validate_vendor_id;
675   ----------------------------------------------------
676  -- Validate_Attributes for: vendor_pay_term_id --
677   ----------------------------------------------------
678   PROCEDURE validate_pay_term_id(
679     x_return_status                OUT NOCOPY VARCHAR2,
680     p_pay_term_id                  IN NUMBER) IS
681 
682    CURSOR l_payterm_csr (p_pay_term_id in number) IS
683       SELECT 'Y'
684       FROM  OKX_PAYABLES_TERMS_V
685       WHERE   id1 = p_pay_term_id
686       AND    nvl(b_status,'N') = 'Y'
687       AND    sysdate between (start_date_active) and nvl(end_date_active,sysdate);
688 
689       l_exists varchar2(1) default 'N';
690 
691   BEGIN
692     x_return_status := OKL_API.G_RET_STS_SUCCESS;
693     IF (p_pay_term_id = OKL_API.G_MISS_NUM OR
694         p_pay_term_id IS NULL)
695     THEN
696         NULL; --null values allowed at TAPI level
697     ELSIF (p_pay_term_id <> OKL_API.G_MISS_NUM AND p_pay_term_id is NOT NULL) then
698         l_exists := 'N';
699         Open l_payterm_csr (p_pay_term_id => p_pay_term_id);
700         Fetch l_payterm_csr into l_exists;
701         If l_payterm_csr%NOTFOUND then
702             Null;
703         End If;
704         Close l_payterm_csr;
705         IF l_exists = 'N' then
706             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Payment Term');
707             x_return_status := OKL_API.G_RET_STS_ERROR;
708             RAISE G_EXCEPTION_HALT_VALIDATION;
709         END IF;
710 
711     END IF;
712   EXCEPTION
713     WHEN G_EXCEPTION_HALT_VALIDATION THEN
714       null;
715     WHEN OTHERS THEN
716       If l_payterm_csr%ISOPEN then
717           close l_payterm_csr;
718       End If;
719       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
720                           ,p_msg_name     => G_UNEXPECTED_ERROR
721                           ,p_token1       => G_SQLCODE_TOKEN
722                           ,p_token1_value => SQLCODE
723                           ,p_token2       => G_SQLERRM_TOKEN
724                           ,p_token2_value => SQLERRM);
725       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
726   END validate_pay_term_id;
727   ----------------------------------------------------
728  -- Validate_Attributes for: vendor_payment_method --
729   ----------------------------------------------------
730   PROCEDURE validate_payment_method(
731     x_return_status                OUT NOCOPY VARCHAR2,
732     p_payment_method               IN VARCHAR2) IS
733 
734    CURSOR l_paymethod_csr (p_payment_method in varchar2) IS
735       SELECT 'Y'
736       From AP_LOOKUP_CODES
737       Where lookup_type = 'PAYMENT METHOD'
738       And  nvl(enabled_flag,'N') = 'Y'
739       And sysdate between nvl(start_date_active,sysdate) and nvl(inactive_date,sysdate)
740       And lookup_code = p_payment_method;
741 
742       l_exists varchar2(1) default 'N';
743 
744   BEGIN
745     x_return_status := OKL_API.G_RET_STS_SUCCESS;
746     IF (p_payment_method = OKL_API.G_MISS_CHAR OR
747         p_payment_method IS NULL)
748     THEN
749         NULL; --null values allowed at TAPI level
750     ELSIF (p_payment_method <> OKL_API.G_MISS_CHAR AND p_payment_method is NOT NULL) then
751         l_exists := 'N';
752         Open l_paymethod_csr (p_payment_method => p_payment_method);
753         Fetch l_paymethod_csr into l_exists;
754         If l_paymethod_csr%NOTFOUND then
755             Null;
756         End If;
757         Close l_paymethod_csr;
758         IF l_exists = 'N' then
759             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Payment Method');
760             x_return_status := OKL_API.G_RET_STS_ERROR;
761             RAISE G_EXCEPTION_HALT_VALIDATION;
762         END IF;
763 
764     END IF;
765   EXCEPTION
766     WHEN G_EXCEPTION_HALT_VALIDATION THEN
767       null;
768     WHEN OTHERS THEN
769       If l_paymethod_csr%ISOPEN then
770           close l_paymethod_csr;
771       End If;
772       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
773                           ,p_msg_name     => G_UNEXPECTED_ERROR
774                           ,p_token1       => G_SQLCODE_TOKEN
775                           ,p_token1_value => SQLCODE
776                           ,p_token2       => G_SQLERRM_TOKEN
777                           ,p_token2_value => SQLERRM);
778       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
779   END validate_payment_method;
780   -----------------------------------------------------------------
781   --Validate attributes for PAY_GROUP
782   -----------------------------------------------------------------
783   PROCEDURE validate_pay_group(
784     x_return_status                OUT NOCOPY VARCHAR2,
785     p_pay_group                    IN VARCHAR2) IS
786 
787    CURSOR l_paygroup_csr (p_pay_group in  varchar2) IS
788       SELECT 'Y'
789       From  PO_LOOKUP_CODES
790       Where lookup_type = 'PAY GROUP'
791       --Bug# 3566580 : 11.5.8 enabled flag is not there in table po_lookup_codes
792       --And  nvl(enabled_flag,'N') = 'Y'
793       And sysdate <=  nvl(inactive_date,sysdate)
794       And lookup_code = p_pay_group;
795 
796       l_exists varchar2(1) default 'N';
797 
798   BEGIN
799     x_return_status := OKL_API.G_RET_STS_SUCCESS;
800     IF (p_pay_group = OKL_API.G_MISS_CHAR OR
801         p_pay_group IS NULL)
802     THEN
803         NULL; --null values allowed at TAPI level
804     ELSIF (p_pay_group <> OKL_API.G_MISS_CHAR AND p_pay_group is NOT NULL) then
805         l_exists := 'N';
806         Open l_paygroup_csr (p_pay_group => p_pay_group);
807         Fetch l_paygroup_csr into l_exists;
808         If l_paygroup_csr%NOTFOUND then
809             Null;
810         End If;
811         Close l_paygroup_csr;
812         IF l_exists = 'N' then
813             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Pay Group');
814             x_return_status := OKL_API.G_RET_STS_ERROR;
815             RAISE G_EXCEPTION_HALT_VALIDATION;
816         END IF;
817 
818     END IF;
819   EXCEPTION
820     WHEN G_EXCEPTION_HALT_VALIDATION THEN
821       null;
822     WHEN OTHERS THEN
823       If l_paygroup_csr%ISOPEN then
824           close l_paygroup_csr;
825       End If;
826       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
827                           ,p_msg_name     => G_UNEXPECTED_ERROR
828                           ,p_token1       => G_SQLCODE_TOKEN
829                           ,p_token1_value => SQLCODE
830                           ,p_token2       => G_SQLERRM_TOKEN
831                           ,p_token2_value => SQLERRM);
832       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
833   END validate_pay_group;
834   ----------------------------------------------------
835   -- Validate_Attributes for: disbursement_basis --
836   ----------------------------------------------------
837   PROCEDURE validate_disbursement_basis(
838     x_return_status                OUT NOCOPY VARCHAR2,
839     p_disbursement_basis           IN VARCHAR2) IS
840 
841    CURSOR l_disbursement_basis_csr (p_disbursement_basis in varchar2) IS
842       SELECT 'Y'
843       From FND_LOOKUPS
844       Where lookup_type = 'OKL_DISBURSE_BASIS'
845       And  nvl(enabled_flag,'N') = 'Y'
846       And sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
847       And lookup_code = p_disbursement_basis;
848 
849       l_exists varchar2(1) default 'N';
850 
851   BEGIN
852     x_return_status := OKL_API.G_RET_STS_SUCCESS;
853     IF (p_disbursement_basis = OKL_API.G_MISS_CHAR OR
854         p_disbursement_basis IS NULL)
855     THEN
856         NULL; --null values allowed at TAPI level
857     ELSIF (p_disbursement_basis <> OKL_API.G_MISS_CHAR AND p_disbursement_basis is NOT NULL) then
858         l_exists := 'N';
859         Open l_disbursement_basis_csr (p_disbursement_basis => p_disbursement_basis);
860         Fetch l_disbursement_basis_csr into l_exists;
861         If l_disbursement_basis_csr%NOTFOUND then
862             Null;
863         End If;
864         Close l_disbursement_basis_csr;
865         IF l_exists = 'N' then
866             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Disbursement Basis');
867             x_return_status := OKL_API.G_RET_STS_ERROR;
868             RAISE G_EXCEPTION_HALT_VALIDATION;
869         END IF;
870 
871     END IF;
872   EXCEPTION
873     WHEN G_EXCEPTION_HALT_VALIDATION THEN
874       null;
875     WHEN OTHERS THEN
876       If l_disbursement_basis_csr%ISOPEN then
877           close l_disbursement_basis_csr;
878       End If;
879       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
880                           ,p_msg_name     => G_UNEXPECTED_ERROR
881                           ,p_token1       => G_SQLCODE_TOKEN
882                           ,p_token1_value => SQLCODE
883                           ,p_token2       => G_SQLERRM_TOKEN
884                           ,p_token2_value => SQLERRM);
885       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
886   END validate_disbursement_basis;
887   ----------------------------------------------------
888   -- Validate_Attributes for: processing_fee_basis --
889   ----------------------------------------------------
890   PROCEDURE validate_processing_fee_basis(
891     x_return_status                OUT NOCOPY VARCHAR2,
892     p_processing_fee_basis         IN VARCHAR2) IS
893 
894    CURSOR l_processing_fee_basis_csr (p_processing_fee_basis in varchar2) IS
895       SELECT 'Y'
896       From FND_LOOKUPS
897       Where lookup_type = 'OKL_PROC_FEE_BASIS'
898       And  nvl(enabled_flag,'N') = 'Y'
899       And sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
900       And lookup_code = p_processing_fee_basis;
901 
902       l_exists varchar2(1) default 'N';
903 
904   BEGIN
905     x_return_status := OKL_API.G_RET_STS_SUCCESS;
906     IF (p_processing_fee_basis = OKL_API.G_MISS_CHAR OR
907         p_processing_fee_basis IS NULL)
908     THEN
909         NULL; --null values allowed at TAPI level
910     ELSIF (p_processing_fee_basis <> OKL_API.G_MISS_CHAR AND p_processing_fee_basis is NOT NULL) then
911         l_exists := 'N';
912         Open l_processing_fee_basis_csr (p_processing_fee_basis => p_processing_fee_basis);
913         Fetch l_processing_fee_basis_csr into l_exists;
914         If l_processing_fee_basis_csr%NOTFOUND then
915             Null;
916         End If;
917         Close l_processing_fee_basis_csr;
918         IF l_exists = 'N' then
919             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Processing Fee Basis');
920             x_return_status := OKL_API.G_RET_STS_ERROR;
921             RAISE G_EXCEPTION_HALT_VALIDATION;
922         END IF;
923 
924     END IF;
925   EXCEPTION
926     WHEN G_EXCEPTION_HALT_VALIDATION THEN
927       null;
928     WHEN OTHERS THEN
929       If l_processing_fee_basis_csr%ISOPEN then
930           close l_processing_fee_basis_csr;
931       End If;
932       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
933                           ,p_msg_name     => G_UNEXPECTED_ERROR
934                           ,p_token1       => G_SQLCODE_TOKEN
935                           ,p_token1_value => SQLCODE
936                           ,p_token2       => G_SQLERRM_TOKEN
937                           ,p_token2_value => SQLERRM);
938       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
939   END validate_processing_fee_basis;
940   ----------------------------------------------------
941   -- Validate_Attributes for: payment_basis --
942   ----------------------------------------------------
943   PROCEDURE validate_payment_basis(
944     x_return_status                OUT NOCOPY VARCHAR2,
945     p_payment_basis                IN VARCHAR2) IS
946 
947    CURSOR l_payment_basis_csr (p_payment_basis in varchar2) IS
948       SELECT 'Y'
949       From FND_LOOKUPS
950       Where lookup_type = 'OKL_PAYMENT_BASIS'
951       And  nvl(enabled_flag,'N') = 'Y'
952       And sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
953       And lookup_code = p_payment_basis;
954 
955       l_exists varchar2(1) default 'N';
956 
957   BEGIN
958     x_return_status := OKL_API.G_RET_STS_SUCCESS;
959     IF (p_payment_basis = OKL_API.G_MISS_CHAR OR
960         p_payment_basis IS NULL)
961     THEN
962         NULL; --null values allowed at TAPI level
963     ELSIF (p_payment_basis <> OKL_API.G_MISS_CHAR AND p_payment_basis is NOT NULL) then
964         l_exists := 'N';
965         Open l_payment_basis_csr (p_payment_basis => p_payment_basis);
966         Fetch l_payment_basis_csr into l_exists;
967         If l_payment_basis_csr%NOTFOUND then
968             Null;
969         End If;
970         Close l_payment_basis_csr;
971         IF l_exists = 'N' then
972             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Payment Basis');
973             x_return_status := OKL_API.G_RET_STS_ERROR;
974             RAISE G_EXCEPTION_HALT_VALIDATION;
975         END IF;
976 
977     END IF;
978   EXCEPTION
979     WHEN G_EXCEPTION_HALT_VALIDATION THEN
980       null;
981     WHEN OTHERS THEN
982       If l_payment_basis_csr%ISOPEN then
983           close l_payment_basis_csr;
984       End If;
985       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
986                           ,p_msg_name     => G_UNEXPECTED_ERROR
987                           ,p_token1       => G_SQLCODE_TOKEN
988                           ,p_token1_value => SQLCODE
989                           ,p_token2       => G_SQLERRM_TOKEN
990                           ,p_token2_value => SQLERRM);
991       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
992   END validate_payment_basis;
993   ----------------------------------------------------
994   -- Validate_Attributes for: payment_frequency --
995   ----------------------------------------------------
996   PROCEDURE validate_payment_frequency(
997     x_return_status                OUT NOCOPY VARCHAR2,
998     p_payment_frequency            IN VARCHAR2) IS
999 
1000    CURSOR l_payment_frequency_csr (p_payment_frequency in varchar2) IS
1001       SELECT 'Y'
1002       From FND_LOOKUPS
1003       Where lookup_type = 'OKL_PAYMENT_FRQ'
1004       And  nvl(enabled_flag,'N') = 'Y'
1005       And sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
1006       And lookup_code = p_payment_frequency;
1007 
1008       l_exists varchar2(1) default 'N';
1009 
1010   BEGIN
1011     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1012     IF (p_payment_frequency = OKL_API.G_MISS_CHAR OR
1013         p_payment_frequency IS NULL)
1014     THEN
1015         NULL; --null values allowed at TAPI level
1016     ELSIF (p_payment_frequency <> OKL_API.G_MISS_CHAR AND p_payment_frequency is NOT NULL) then
1017         l_exists := 'N';
1018         Open l_payment_frequency_csr (p_payment_frequency => p_payment_frequency);
1019         Fetch l_payment_frequency_csr into l_exists;
1020         If l_payment_frequency_csr%NOTFOUND then
1021             Null;
1022         End If;
1023         Close l_payment_frequency_csr;
1024         IF l_exists = 'N' then
1025             OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Payment Frequency');
1026             x_return_status := OKL_API.G_RET_STS_ERROR;
1027             RAISE G_EXCEPTION_HALT_VALIDATION;
1028         END IF;
1029 
1030     END IF;
1031   EXCEPTION
1032     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1033       null;
1034     WHEN OTHERS THEN
1035       If l_payment_frequency_csr%ISOPEN then
1036           close l_payment_frequency_csr;
1037       End If;
1038       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1039                           ,p_msg_name     => G_UNEXPECTED_ERROR
1040                           ,p_token1       => G_SQLCODE_TOKEN
1041                           ,p_token1_value => SQLCODE
1042                           ,p_token2       => G_SQLERRM_TOKEN
1043                           ,p_token2_value => SQLERRM);
1044       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1045   END validate_payment_frequency;
1046   ----------------------------------------------------
1047   -- Validate_Attributes for: disbursement_percent --
1048   ----------------------------------------------------
1049   PROCEDURE validate_disbursement_percent(
1050     x_return_status                OUT NOCOPY VARCHAR2,
1051     p_disbursement_percent         IN VARCHAR2) IS
1052 
1053     l_exists varchar2(1) default 'N';
1054 
1055   BEGIN
1056     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1057     IF (p_disbursement_percent = OKL_API.G_MISS_CHAR OR
1058         p_disbursement_percent IS NULL)
1059     THEN
1060         NULL; --null values allowed at TAPI level
1061     ELSIF (p_disbursement_percent <> OKL_API.G_MISS_CHAR AND
1062 	       p_disbursement_percent IS NOT NULL AND
1063 	      (p_disbursement_percent < 0 OR
1064 		   p_disbursement_percent > 100) ) THEN
1065        OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,
1066 		                    G_COL_NAME_TOKEN,'Disbursement Percent');
1067        x_return_status := OKL_API.G_RET_STS_ERROR;
1068        RAISE G_EXCEPTION_HALT_VALIDATION;
1069     END IF;
1070   EXCEPTION
1071     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1072       null;
1073     WHEN OTHERS THEN
1074       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1075                           ,p_msg_name     => G_UNEXPECTED_ERROR
1076                           ,p_token1       => G_SQLCODE_TOKEN
1077                           ,p_token1_value => SQLCODE
1078                           ,p_token2       => G_SQLERRM_TOKEN
1079                           ,p_token2_value => SQLERRM);
1080       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1081   END validate_disbursement_percent;
1082 
1083   ----------------------------------------------------
1084   -- Validate_Attributes for: processing_fee_percent --
1085   ----------------------------------------------------
1086   PROCEDURE validate_process_fee_percent(
1087     x_return_status                OUT NOCOPY VARCHAR2,
1088     p_processing_fee_percent       IN VARCHAR2) IS
1089 
1090   BEGIN
1091     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1092     IF (p_processing_fee_percent = OKL_API.G_MISS_CHAR OR
1093         p_processing_fee_percent IS NULL)
1094     THEN
1095         NULL; --null values allowed at TAPI level
1096     ELSIF (p_processing_fee_percent <> OKL_API.G_MISS_CHAR AND
1097 	       p_processing_fee_percent IS NOT NULL AND
1098 	      (p_processing_fee_percent < 0 OR
1099 		   p_processing_fee_percent > 100) ) THEN
1100        OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,
1101 		                    G_COL_NAME_TOKEN,'Processing Fee Percent');
1102        x_return_status := OKL_API.G_RET_STS_ERROR;
1103        RAISE G_EXCEPTION_HALT_VALIDATION;
1104     END IF;
1105   EXCEPTION
1106     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1107       null;
1108     WHEN OTHERS THEN
1109       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1110                           ,p_msg_name     => G_UNEXPECTED_ERROR
1111                           ,p_token1       => G_SQLCODE_TOKEN
1112                           ,p_token1_value => SQLCODE
1113                           ,p_token2       => G_SQLERRM_TOKEN
1114                           ,p_token2_value => SQLERRM);
1115       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1116   END validate_process_fee_percent;
1117   ---------------------------------------------------------------------------
1118   -- FUNCTION Validate_Attributes
1119   ---------------------------------------------------------------------------
1120 
1121   ------------------------------------------------------
1122   -- Validate_Attributes for:OKL_PARTY_PAYMENT_DTLS_V --
1123   ------------------------------------------------------
1124   FUNCTION Validate_Attributes (
1125     p_ppydv_rec                    IN ppydv_rec_type
1126   ) RETURN VARCHAR2 IS
1127     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1128     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1129   BEGIN
1130     -----------------------------
1131     -- Column Level Validation --
1132     -----------------------------
1133     -- ***
1134     -- id
1135     -- ***
1136     validate_id(x_return_status, p_ppydv_rec.id);
1137     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1138       l_return_status := x_return_status;
1139       RAISE G_EXCEPTION_HALT_VALIDATION;
1140     END IF;
1141 
1142     -- ***
1143     -- object_version_number
1144     -- ***
1145     validate_object_version_number(x_return_status, p_ppydv_rec.object_version_number);
1146     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1147       l_return_status := x_return_status;
1148       RAISE G_EXCEPTION_HALT_VALIDATION;
1149     END IF;
1150 
1151     -- ***
1152     -- cpl_id
1153     -- ***
1154     validate_cpl_id(x_return_status, p_ppydv_rec.cpl_id);
1155     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1156       l_return_status := x_return_status;
1157       RAISE G_EXCEPTION_HALT_VALIDATION;
1158     END IF;
1159 
1160     -- ***
1161     -- vendor_id
1162     -- ***
1163     validate_vendor_id(x_return_status, p_ppydv_rec.vendor_id);
1164     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1165       l_return_status := x_return_status;
1166       RAISE G_EXCEPTION_HALT_VALIDATION;
1167     END IF;
1168 
1169     -- ***
1170     -- payment_term_id
1171     -- ***
1172     validate_pay_term_id(x_return_status, p_ppydv_rec.payment_term_id);
1173     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1174       l_return_status := x_return_status;
1175       RAISE G_EXCEPTION_HALT_VALIDATION;
1176     END IF;
1177 
1178     -- ***
1179     -- payment_method_code
1180     -- ***
1181     validate_payment_method(x_return_status, p_ppydv_rec.payment_method_code);
1182     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1183       l_return_status := x_return_status;
1184       RAISE G_EXCEPTION_HALT_VALIDATION;
1185     END IF;
1186 
1187     -- ***
1188     -- pay_group_code
1189     -- ***
1190     validate_pay_group(x_return_status, p_ppydv_rec.pay_group_code);
1191     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1192       l_return_status := x_return_status;
1193       RAISE G_EXCEPTION_HALT_VALIDATION;
1194     END IF;
1195 
1196     -- ***
1197     -- payment_basis
1198     -- ***
1199     validate_payment_basis(x_return_status, p_ppydv_rec.payment_basis);
1200     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1201       l_return_status := x_return_status;
1202       RAISE G_EXCEPTION_HALT_VALIDATION;
1203     END IF;
1204 
1205     -- ***
1206     -- payment_frequency
1207     -- ***
1208     validate_payment_frequency(x_return_status, p_ppydv_rec.payment_frequency);
1209     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1210       l_return_status := x_return_status;
1211       RAISE G_EXCEPTION_HALT_VALIDATION;
1212     END IF;
1213 
1214     -- ***
1215     -- disbursement_basis
1216     -- ***
1217     validate_disbursement_basis(x_return_status, p_ppydv_rec.disbursement_basis);
1218     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1219       l_return_status := x_return_status;
1220       RAISE G_EXCEPTION_HALT_VALIDATION;
1221     END IF;
1222 
1223     -- ***
1224     -- processing_fee_basis
1225     -- ***
1226     validate_processing_fee_basis(x_return_status, p_ppydv_rec.processing_fee_basis);
1227     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1228       l_return_status := x_return_status;
1229       RAISE G_EXCEPTION_HALT_VALIDATION;
1230     END IF;
1231 
1232     -- ***
1233     -- disbursement_percent
1234     -- ***
1235     validate_disbursement_percent(x_return_status, p_ppydv_rec.disbursement_percent);
1236     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1237       l_return_status := x_return_status;
1238       RAISE G_EXCEPTION_HALT_VALIDATION;
1239     END IF;
1240 
1241     -- ***
1242     -- processing_fee_percent
1243     -- ***
1244     validate_process_fee_percent(x_return_status, p_ppydv_rec.processing_fee_percent);
1245     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1246       l_return_status := x_return_status;
1247       RAISE G_EXCEPTION_HALT_VALIDATION;
1248     END IF;
1249 
1250     RETURN(l_return_status);
1251   EXCEPTION
1252     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1253       RETURN(l_return_status);
1254     WHEN OTHERS THEN
1255       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1256                           ,p_msg_name     => G_UNEXPECTED_ERROR
1257                           ,p_token1       => G_SQLCODE_TOKEN
1258                           ,p_token1_value => SQLCODE
1259                           ,p_token2       => G_SQLERRM_TOKEN
1260                           ,p_token2_value => SQLERRM);
1261       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1262       RETURN(l_return_status);
1263   END Validate_Attributes;
1264   ---------------------------------------------------------------------------
1265   -- PROCEDURE Validate_Record
1266   ---------------------------------------------------------------------------
1267   --------------------------------------------------
1268   -- Validate Record for:OKL_PARTY_PAYMENT_DTLS_V --
1269   --------------------------------------------------
1270   FUNCTION Validate_Record (
1271     p_ppydv_rec IN ppydv_rec_type,
1272     p_db_ppydv_rec IN ppydv_rec_type
1273   ) RETURN VARCHAR2 IS
1274     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1275     --function to validate rfrential integrity and cross-validations
1276     FUNCTION validate_ref_integrity ( p_ppydv_rec IN ppydv_rec_type,
1277                                       p_db_ppydv_rec IN ppydv_rec_type)
1278     RETURN VARCHAR2 IS
1279     --cursor to check whether pay to site is valid
1280     CURSOR l_paysite_csr (p_paysite_id IN NUMBER,
1281                           p_cpl_id     IN NUMBER,
1282                           p_vendor_id  IN NUMBER) is
1283     SELECT 'Y'
1284     FROM    po_vendor_sites_all pvs,
1285             okc_k_headers_b     chrb,
1286             okc_k_party_roles_b cplb
1287     WHERE   pvs.vendor_id                    = p_vendor_id
1288     AND     pvs.org_id                       = chrb.authoring_org_id
1289     AND     pvs.vendor_site_id               = p_paysite_id
1290     AND     nvl(pvs.pay_site_flag,'N')       = 'Y'
1291     AND     sysdate                          <= nvl(pvs.inactive_date,sysdate)
1292     AND     chrb.id                          = cplb.dnz_chr_id
1293     AND     cplb.id                          = p_cpl_id;
1294 
1295     l_exists   VARCHAR2(1) default 'N';
1296 
1297     violated_ref_integrity EXCEPTION;
1298     l_return_status Varchar2(1) := OKL_API.G_RET_STS_SUCCESS;
1299 
1300     BEGIN
1301         l_return_status := OKL_API.G_RET_STS_SUCCESS;
1302         -------------------------------------------
1303         --1. Validate pay site id :
1304         ------------------------------------------
1305         If p_ppydv_rec.pay_site_id is NOT NULL then
1306             l_exists := 'N';
1307             OPEN l_paysite_csr (p_paysite_id => p_ppydv_rec.pay_site_id,
1308                                 p_cpl_id     => p_ppydv_rec.cpl_id,
1309                                 p_vendor_id  => p_ppydv_rec.vendor_id);
1310             FETCH l_paysite_csr into l_exists;
1311             IF l_paysite_csr%NOTFOUND then
1312                 NULL;
1313             END IF;
1314             CLOSE l_paysite_csr;
1315 
1316             If l_exists = 'N' then
1317                  OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Pay Site');
1318                  RAISE violated_ref_integrity;
1319            END IF;
1320         End If;
1321         return(l_return_status);
1322         Exception
1323          When violated_ref_integrity then
1324               l_return_status := OKL_API.G_RET_STS_ERROR;
1325               return(l_return_status);
1326     END validate_ref_integrity;
1327 
1328   BEGIN
1329     l_return_status := validate_ref_integrity(p_ppydv_rec,p_db_ppydv_rec);
1330     RETURN (l_return_status);
1331   END Validate_Record;
1332   FUNCTION Validate_Record (
1333     p_ppydv_rec IN ppydv_rec_type
1334   ) RETURN VARCHAR2 IS
1335     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1336     l_db_ppydv_rec                 ppydv_rec_type := get_rec(p_ppydv_rec);
1337   BEGIN
1338     l_return_status := Validate_Record(p_ppydv_rec => p_ppydv_rec,
1339                                        p_db_ppydv_rec => l_db_ppydv_rec);
1340     RETURN (l_return_status);
1341   END Validate_Record;
1342 
1343   ---------------------------------------------------------------------------
1344   -- PROCEDURE Migrate
1345   ---------------------------------------------------------------------------
1346   PROCEDURE migrate (
1347     p_from IN ppydv_rec_type,
1348     p_to   IN OUT NOCOPY ppyd_rec_type
1349   ) IS
1350   BEGIN
1351     p_to.id := p_from.id;
1352     p_to.object_version_number := p_from.object_version_number;
1353     p_to.cpl_id := p_from.cpl_id;
1354     p_to.vendor_id := p_from.vendor_id;
1355     p_to.pay_site_id := p_from.pay_site_id;
1356     p_to.payment_term_id := p_from.payment_term_id;
1357     p_to.payment_method_code := p_from.payment_method_code;
1358     p_to.pay_group_code := p_from.pay_group_code;
1359     p_to.payment_hdr_id := p_from.payment_hdr_id;
1360     p_to.payment_start_date := p_from.payment_start_date;
1361     p_to.payment_frequency := p_from.payment_frequency;
1362     p_to.remit_days := p_from.remit_days;
1363     p_to.disbursement_basis := p_from.disbursement_basis;
1364     p_to.disbursement_fixed_amount := p_from.disbursement_fixed_amount;
1365     p_to.disbursement_percent := p_from.disbursement_percent;
1366     p_to.processing_fee_basis := p_from.processing_fee_basis;
1367     p_to.processing_fee_fixed_amount := p_from.processing_fee_fixed_amount;
1368     p_to.processing_fee_percent := p_from.processing_fee_percent;
1369     --p_to.include_in_yield_flag := p_from.include_in_yield_flag;
1370     --p_to.processing_fee_formula := p_from.processing_fee_formula;
1371     p_to.payment_basis := p_from.payment_basis;
1372     p_to.attribute_category := p_from.attribute_category;
1373     p_to.attribute1 := p_from.attribute1;
1374     p_to.attribute2 := p_from.attribute2;
1375     p_to.attribute3 := p_from.attribute3;
1376     p_to.attribute4 := p_from.attribute4;
1377     p_to.attribute5 := p_from.attribute5;
1378     p_to.attribute6 := p_from.attribute6;
1379     p_to.attribute7 := p_from.attribute7;
1380     p_to.attribute8 := p_from.attribute8;
1381     p_to.attribute9 := p_from.attribute9;
1382     p_to.attribute10 := p_from.attribute10;
1383     p_to.attribute11 := p_from.attribute11;
1384     p_to.attribute12 := p_from.attribute12;
1385     p_to.attribute13 := p_from.attribute13;
1386     p_to.attribute14 := p_from.attribute14;
1387     p_to.attribute15 := p_from.attribute15;
1388     p_to.created_by := p_from.created_by;
1389     p_to.creation_date := p_from.creation_date;
1390     p_to.last_updated_by := p_from.last_updated_by;
1391     p_to.last_update_date := p_from.last_update_date;
1392     p_to.last_update_login := p_from.last_update_login;
1393     p_to.ORIG_CONTRACT_LINE_ID := p_from.ORIG_CONTRACT_LINE_ID;
1394   END migrate;
1395   PROCEDURE migrate (
1396     p_from IN ppyd_rec_type,
1397     p_to   IN OUT NOCOPY ppydv_rec_type
1398   ) IS
1399   BEGIN
1400     p_to.id := p_from.id;
1401     p_to.object_version_number := p_from.object_version_number;
1402     p_to.cpl_id := p_from.cpl_id;
1403     p_to.vendor_id := p_from.vendor_id;
1404     p_to.pay_site_id := p_from.pay_site_id;
1405     p_to.payment_term_id := p_from.payment_term_id;
1406     p_to.payment_method_code := p_from.payment_method_code;
1407     p_to.pay_group_code := p_from.pay_group_code;
1408     p_to.payment_hdr_id := p_from.payment_hdr_id;
1409     p_to.payment_start_date := p_from.payment_start_date;
1410     p_to.payment_frequency := p_from.payment_frequency;
1411     p_to.remit_days := p_from.remit_days;
1412     p_to.disbursement_basis := p_from.disbursement_basis;
1413     p_to.disbursement_fixed_amount := p_from.disbursement_fixed_amount;
1414     p_to.disbursement_percent := p_from.disbursement_percent;
1415     p_to.processing_fee_basis := p_from.processing_fee_basis;
1416     p_to.processing_fee_fixed_amount := p_from.processing_fee_fixed_amount;
1417     p_to.processing_fee_percent := p_from.processing_fee_percent;
1418     --p_to.include_in_yield_flag := p_from.include_in_yield_flag;
1419     --p_to.processing_fee_formula := p_from.processing_fee_formula;
1420     p_to.payment_basis := p_from.payment_basis;
1421     p_to.attribute_category := p_from.attribute_category;
1422     p_to.attribute1 := p_from.attribute1;
1423     p_to.attribute2 := p_from.attribute2;
1424     p_to.attribute3 := p_from.attribute3;
1425     p_to.attribute4 := p_from.attribute4;
1426     p_to.attribute5 := p_from.attribute5;
1427     p_to.attribute6 := p_from.attribute6;
1428     p_to.attribute7 := p_from.attribute7;
1429     p_to.attribute8 := p_from.attribute8;
1430     p_to.attribute9 := p_from.attribute9;
1431     p_to.attribute10 := p_from.attribute10;
1432     p_to.attribute11 := p_from.attribute11;
1433     p_to.attribute12 := p_from.attribute12;
1434     p_to.attribute13 := p_from.attribute13;
1435     p_to.attribute14 := p_from.attribute14;
1436     p_to.attribute15 := p_from.attribute15;
1437     p_to.created_by := p_from.created_by;
1438     p_to.creation_date := p_from.creation_date;
1439     p_to.last_updated_by := p_from.last_updated_by;
1440     p_to.last_update_date := p_from.last_update_date;
1441     p_to.last_update_login := p_from.last_update_login;
1442     p_to.ORIG_CONTRACT_LINE_ID := p_from.ORIG_CONTRACT_LINE_ID;
1443   END migrate;
1444   ---------------------------------------------------------------------------
1445   -- PROCEDURE validate_row
1446   ---------------------------------------------------------------------------
1447   -----------------------------------------------
1448   -- validate_row for:OKL_PARTY_PAYMENT_DTLS_V --
1449   -----------------------------------------------
1450   PROCEDURE validate_row(
1451     p_api_version                  IN NUMBER,
1452     p_init_msg_list                IN VARCHAR2,
1453     x_return_status                OUT NOCOPY VARCHAR2,
1454     x_msg_count                    OUT NOCOPY NUMBER,
1455     x_msg_data                     OUT NOCOPY VARCHAR2,
1456     p_ppydv_rec                    IN ppydv_rec_type) IS
1457 
1458     l_api_version                  CONSTANT NUMBER := 1;
1459     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1460     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1461     l_ppydv_rec                    ppydv_rec_type := p_ppydv_rec;
1462     l_ppyd_rec                     ppyd_rec_type;
1463     l_ppyd_rec                     ppyd_rec_type;
1464   BEGIN
1465     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1466                                               G_PKG_NAME,
1467                                               p_init_msg_list,
1468                                               l_api_version,
1469                                               p_api_version,
1470                                               '_PVT',
1471                                               x_return_status);
1472     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1473       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1474     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1475       RAISE OKL_API.G_EXCEPTION_ERROR;
1476     END IF;
1477     --- Validate all non-missing attributes (Item Level Validation)
1478     l_return_status := Validate_Attributes(l_ppydv_rec);
1479     --- If any errors happen abort API
1480     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1481       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1482     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1483       RAISE OKL_API.G_EXCEPTION_ERROR;
1484     END IF;
1485     l_return_status := Validate_Record(l_ppydv_rec);
1486     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1487       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1488     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1489       RAISE OKL_API.G_EXCEPTION_ERROR;
1490     END IF;
1491     x_return_status := l_return_status;
1492   EXCEPTION
1493     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1494       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1495       (
1496         l_api_name,
1497         G_PKG_NAME,
1498         'OKL_API.G_RET_STS_ERROR',
1499         x_msg_count,
1500         x_msg_data,
1501         '_PVT'
1502       );
1503     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1504       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1505       (
1506         l_api_name,
1507         G_PKG_NAME,
1508         'OKL_API.G_RET_STS_UNEXP_ERROR',
1509         x_msg_count,
1510         x_msg_data,
1511         '_PVT'
1512       );
1513     WHEN OTHERS THEN
1514       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1515       (
1516         l_api_name,
1517         G_PKG_NAME,
1518         'OTHERS',
1519         x_msg_count,
1520         x_msg_data,
1521         '_PVT'
1522       );
1523   END validate_row;
1524   ----------------------------------------------------------
1525   -- PL/SQL TBL validate_row for:OKL_PARTY_PAYMENT_DTLS_V --
1526   ----------------------------------------------------------
1527   PROCEDURE validate_row(
1528     p_api_version                  IN NUMBER,
1529     p_init_msg_list                IN VARCHAR2,
1530     x_return_status                OUT NOCOPY VARCHAR2,
1531     x_msg_count                    OUT NOCOPY NUMBER,
1532     x_msg_data                     OUT NOCOPY VARCHAR2,
1533     p_ppydv_tbl                    IN ppydv_tbl_type,
1534     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1535 
1536     l_api_version                  CONSTANT NUMBER := 1;
1537     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1538     i                              NUMBER := 0;
1539   BEGIN
1540     OKL_API.init_msg_list(p_init_msg_list);
1541     -- Make sure PL/SQL table has records in it before passing
1542     IF (p_ppydv_tbl.COUNT > 0) THEN
1543       i := p_ppydv_tbl.FIRST;
1544       LOOP
1545         DECLARE
1546           l_error_rec         OKL_API.ERROR_REC_TYPE;
1547         BEGIN
1548           l_error_rec.api_name := l_api_name;
1549           l_error_rec.api_package := G_PKG_NAME;
1550           l_error_rec.idx := i;
1551           validate_row (
1552             p_api_version                  => p_api_version,
1553             p_init_msg_list                => OKL_API.G_FALSE,
1554             x_return_status                => l_error_rec.error_type,
1555             x_msg_count                    => l_error_rec.msg_count,
1556             x_msg_data                     => l_error_rec.msg_data,
1557             p_ppydv_rec                    => p_ppydv_tbl(i));
1558           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1559             l_error_rec.sqlcode := SQLCODE;
1560             load_error_tbl(l_error_rec, px_error_tbl);
1561           ELSE
1562             x_msg_count := l_error_rec.msg_count;
1563             x_msg_data := l_error_rec.msg_data;
1564           END IF;
1565         EXCEPTION
1566           WHEN OKL_API.G_EXCEPTION_ERROR THEN
1567             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1568             l_error_rec.sqlcode := SQLCODE;
1569             load_error_tbl(l_error_rec, px_error_tbl);
1570           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1571             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1572             l_error_rec.sqlcode := SQLCODE;
1573             load_error_tbl(l_error_rec, px_error_tbl);
1574           WHEN OTHERS THEN
1575             l_error_rec.error_type := 'OTHERS';
1576             l_error_rec.sqlcode := SQLCODE;
1577             load_error_tbl(l_error_rec, px_error_tbl);
1578         END;
1579         EXIT WHEN (i = p_ppydv_tbl.LAST);
1580         i := p_ppydv_tbl.NEXT(i);
1581       END LOOP;
1582     END IF;
1583     -- Loop through the error_tbl to find the error with the highest severity
1584     -- and return it.
1585     x_return_status := find_highest_exception(px_error_tbl);
1586     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1587   EXCEPTION
1588     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1589       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1590       (
1591         l_api_name,
1592         G_PKG_NAME,
1593         'OKL_API.G_RET_STS_ERROR',
1594         x_msg_count,
1595         x_msg_data,
1596         '_PVT'
1597       );
1598     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1599       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1600       (
1601         l_api_name,
1602         G_PKG_NAME,
1603         'OKL_API.G_RET_STS_UNEXP_ERROR',
1604         x_msg_count,
1605         x_msg_data,
1606         '_PVT'
1607       );
1608     WHEN OTHERS THEN
1609       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1610       (
1611         l_api_name,
1612         G_PKG_NAME,
1613         'OTHERS',
1614         x_msg_count,
1615         x_msg_data,
1616         '_PVT'
1617       );
1618   END validate_row;
1619 
1620   ----------------------------------------------------------
1621   -- PL/SQL TBL validate_row for:OKL_PARTY_PAYMENT_DTLS_V --
1622   ----------------------------------------------------------
1623   PROCEDURE validate_row(
1624     p_api_version                  IN NUMBER,
1625     p_init_msg_list                IN VARCHAR2,
1626     x_return_status                OUT NOCOPY VARCHAR2,
1627     x_msg_count                    OUT NOCOPY NUMBER,
1628     x_msg_data                     OUT NOCOPY VARCHAR2,
1629     p_ppydv_tbl                    IN ppydv_tbl_type) IS
1630 
1631     l_api_version                  CONSTANT NUMBER := 1;
1632     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1633     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1634     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
1635   BEGIN
1636     OKL_API.init_msg_list(p_init_msg_list);
1637     -- Make sure PL/SQL table has records in it before passing
1638     IF (p_ppydv_tbl.COUNT > 0) THEN
1639       validate_row (
1640         p_api_version                  => p_api_version,
1641         p_init_msg_list                => OKL_API.G_FALSE,
1642         x_return_status                => x_return_status,
1643         x_msg_count                    => x_msg_count,
1644         x_msg_data                     => x_msg_data,
1645         p_ppydv_tbl                    => p_ppydv_tbl,
1646         px_error_tbl                   => l_error_tbl);
1647     END IF;
1648     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1649   EXCEPTION
1650     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1651       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1652       (
1653         l_api_name,
1654         G_PKG_NAME,
1655         'OKL_API.G_RET_STS_ERROR',
1656         x_msg_count,
1657         x_msg_data,
1658         '_PVT'
1659       );
1660     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1661       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1662       (
1663         l_api_name,
1664         G_PKG_NAME,
1665         'OKL_API.G_RET_STS_UNEXP_ERROR',
1666         x_msg_count,
1667         x_msg_data,
1668         '_PVT'
1669       );
1670     WHEN OTHERS THEN
1671       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1672       (
1673         l_api_name,
1674         G_PKG_NAME,
1675         'OTHERS',
1676         x_msg_count,
1677         x_msg_data,
1678         '_PVT'
1679       );
1680   END validate_row;
1681 
1682   ---------------------------------------------------------------------------
1683   -- PROCEDURE insert_row
1684   ---------------------------------------------------------------------------
1685   -------------------------------------------
1686   -- insert_row for:OKL_PARTY_PAYMENT_DTLS --
1687   -------------------------------------------
1688   PROCEDURE insert_row(
1689     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1690     x_return_status                OUT NOCOPY VARCHAR2,
1691     x_msg_count                    OUT NOCOPY NUMBER,
1692     x_msg_data                     OUT NOCOPY VARCHAR2,
1693     p_ppyd_rec                     IN ppyd_rec_type,
1694     x_ppyd_rec                     OUT NOCOPY ppyd_rec_type) IS
1695 
1696     l_api_version                  CONSTANT NUMBER := 1;
1697     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1698     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1699     l_ppyd_rec                     ppyd_rec_type := p_ppyd_rec;
1700     l_def_ppyd_rec                 ppyd_rec_type;
1701     -----------------------------------------------
1702     -- Set_Attributes for:OKL_PARTY_PAYMENT_DTLS --
1703     -----------------------------------------------
1704     FUNCTION Set_Attributes (
1705       p_ppyd_rec IN ppyd_rec_type,
1706       x_ppyd_rec OUT NOCOPY ppyd_rec_type
1707     ) RETURN VARCHAR2 IS
1708       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1709     BEGIN
1710       x_ppyd_rec := p_ppyd_rec;
1711       RETURN(l_return_status);
1712     END Set_Attributes;
1713   BEGIN
1714     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1715                                               p_init_msg_list,
1716                                               '_PVT',
1717                                               x_return_status);
1718     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1719       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1720     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1721       RAISE OKL_API.G_EXCEPTION_ERROR;
1722     END IF;
1723     --- Setting item atributes
1724     l_return_status := Set_Attributes(
1725       p_ppyd_rec,                        -- IN
1726       l_ppyd_rec);                       -- OUT
1727     --- If any errors happen abort API
1728     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1729       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1730     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1731       RAISE OKL_API.G_EXCEPTION_ERROR;
1732     END IF;
1733     INSERT INTO OKL_PARTY_PAYMENT_DTLS(
1734       id,
1735       object_version_number,
1736       cpl_id,
1737       vendor_id,
1738       pay_site_id,
1739       payment_term_id,
1740       payment_method_code,
1741       pay_group_code,
1742 	  payment_hdr_id,
1743 	  payment_start_date,
1744 	  payment_frequency,
1745 	  remit_days,
1746 	  disbursement_basis,
1747 	  disbursement_fixed_amount,
1748 	  disbursement_percent,
1749 	  processing_fee_basis,
1750 	  processing_fee_fixed_amount,
1751 	  processing_fee_percent,
1752 	 -- include_in_yield_flag,
1753 	  --processing_fee_formula,
1754 	  payment_basis,
1755       attribute_category,
1756       attribute1,
1757       attribute2,
1758       attribute3,
1759       attribute4,
1760       attribute5,
1761       attribute6,
1762       attribute7,
1763       attribute8,
1764       attribute9,
1765       attribute10,
1766       attribute11,
1767       attribute12,
1768       attribute13,
1769       attribute14,
1770       attribute15,
1771       created_by,
1772       creation_date,
1773       last_updated_by,
1774       last_update_date,
1775       last_update_login,
1776 	  ORIG_CONTRACT_LINE_ID)
1777     VALUES (
1778       l_ppyd_rec.id,
1779       l_ppyd_rec.object_version_number,
1780       l_ppyd_rec.cpl_id,
1781       l_ppyd_rec.vendor_id,
1782       l_ppyd_rec.pay_site_id,
1783       l_ppyd_rec.payment_term_id,
1784       l_ppyd_rec.payment_method_code,
1785       l_ppyd_rec.pay_group_code,
1786 	  l_ppyd_rec.payment_hdr_id,
1787 	  l_ppyd_rec.payment_start_date,
1788 	  l_ppyd_rec.payment_frequency,
1789 	  l_ppyd_rec.remit_days,
1790 	  l_ppyd_rec.disbursement_basis,
1791 	  l_ppyd_rec.disbursement_fixed_amount,
1792 	  l_ppyd_rec.disbursement_percent,
1793 	  l_ppyd_rec.processing_fee_basis,
1794 	  l_ppyd_rec.processing_fee_fixed_amount,
1795 	  l_ppyd_rec.processing_fee_percent,
1796 	  --l_ppyd_rec.include_in_yield_flag,
1797 	  --l_ppyd_rec.processing_fee_formula,
1798 	  l_ppyd_rec.payment_basis,
1799       l_ppyd_rec.attribute_category,
1800       l_ppyd_rec.attribute1,
1801       l_ppyd_rec.attribute2,
1802       l_ppyd_rec.attribute3,
1803       l_ppyd_rec.attribute4,
1804       l_ppyd_rec.attribute5,
1805       l_ppyd_rec.attribute6,
1806       l_ppyd_rec.attribute7,
1807       l_ppyd_rec.attribute8,
1808       l_ppyd_rec.attribute9,
1809       l_ppyd_rec.attribute10,
1810       l_ppyd_rec.attribute11,
1811       l_ppyd_rec.attribute12,
1812       l_ppyd_rec.attribute13,
1813       l_ppyd_rec.attribute14,
1814       l_ppyd_rec.attribute15,
1815       l_ppyd_rec.created_by,
1816       l_ppyd_rec.creation_date,
1817       l_ppyd_rec.last_updated_by,
1818       l_ppyd_rec.last_update_date,
1819       l_ppyd_rec.last_update_login,
1820 	  l_ppyd_rec.ORIG_CONTRACT_LINE_ID);
1821     -- Set OUT values
1822     x_ppyd_rec := l_ppyd_rec;
1823     x_return_status := l_return_status;
1824     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1825   EXCEPTION
1826     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1827       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1828       (
1829         l_api_name,
1830         G_PKG_NAME,
1831         'OKL_API.G_RET_STS_ERROR',
1832         x_msg_count,
1833         x_msg_data,
1834         '_PVT'
1835       );
1836     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1837       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1838       (
1839         l_api_name,
1840         G_PKG_NAME,
1841         'OKL_API.G_RET_STS_UNEXP_ERROR',
1842         x_msg_count,
1843         x_msg_data,
1844         '_PVT'
1845       );
1846     WHEN OTHERS THEN
1847       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1848       (
1849         l_api_name,
1850         G_PKG_NAME,
1851         'OTHERS',
1852         x_msg_count,
1853         x_msg_data,
1854         '_PVT'
1855       );
1856   END insert_row;
1857   ----------------------------------------------
1858   -- insert_row for :OKL_PARTY_PAYMENT_DTLS_V --
1859   ----------------------------------------------
1860   PROCEDURE insert_row(
1861     p_api_version                  IN NUMBER,
1862     p_init_msg_list                IN VARCHAR2,
1863     x_return_status                OUT NOCOPY VARCHAR2,
1864     x_msg_count                    OUT NOCOPY NUMBER,
1865     x_msg_data                     OUT NOCOPY VARCHAR2,
1866     p_ppydv_rec                    IN ppydv_rec_type,
1867     x_ppydv_rec                    OUT NOCOPY ppydv_rec_type) IS
1868 
1869     l_api_version                  CONSTANT NUMBER := 1;
1870     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1871     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1872     l_ppydv_rec                    ppydv_rec_type := p_ppydv_rec;
1873     l_def_ppydv_rec                ppydv_rec_type;
1874     l_ppyd_rec                     ppyd_rec_type;
1875     lx_ppyd_rec                    ppyd_rec_type;
1876 
1877     -------------------------------
1878     -- FUNCTION fill_who_columns --
1879     -------------------------------
1880     FUNCTION fill_who_columns (
1881       p_ppydv_rec IN ppydv_rec_type
1882     ) RETURN ppydv_rec_type IS
1883       l_ppydv_rec ppydv_rec_type := p_ppydv_rec;
1884     BEGIN
1885       l_ppydv_rec.CREATION_DATE := SYSDATE;
1886       l_ppydv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1887       l_ppydv_rec.LAST_UPDATE_DATE := l_ppydv_rec.CREATION_DATE;
1888       l_ppydv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1889       l_ppydv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1890       RETURN(l_ppydv_rec);
1891     END fill_who_columns;
1892     -------------------------------------------------
1893     -- Set_Attributes for:OKL_PARTY_PAYMENT_DTLS_V --
1894     -------------------------------------------------
1895     FUNCTION Set_Attributes (
1896       p_ppydv_rec IN ppydv_rec_type,
1897       x_ppydv_rec OUT NOCOPY ppydv_rec_type
1898     ) RETURN VARCHAR2 IS
1899       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1900     BEGIN
1901       x_ppydv_rec := p_ppydv_rec;
1902       x_ppydv_rec.OBJECT_VERSION_NUMBER := 1;
1903       RETURN(l_return_status);
1904     END Set_Attributes;
1905   BEGIN
1906     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1907                                               G_PKG_NAME,
1908                                               p_init_msg_list,
1909                                               l_api_version,
1910                                               p_api_version,
1911                                               '_PVT',
1912                                               x_return_status);
1913     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1914       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1915     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1916       RAISE OKL_API.G_EXCEPTION_ERROR;
1917     END IF;
1918     l_ppydv_rec := null_out_defaults(p_ppydv_rec);
1919     -- Set primary key value
1920     l_ppydv_rec.ID := get_seq_id;
1921     -- Setting item attributes
1922     l_return_Status := Set_Attributes(
1923       l_ppydv_rec,                       -- IN
1924       l_def_ppydv_rec);                  -- OUT
1925     --- If any errors happen abort API
1926     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1927       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1928     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1929       RAISE OKL_API.G_EXCEPTION_ERROR;
1930     END IF;
1931     l_def_ppydv_rec := fill_who_columns(l_def_ppydv_rec);
1932     --- Validate all non-missing attributes (Item Level Validation)
1933     l_return_status := Validate_Attributes(l_def_ppydv_rec);
1934     --- If any errors happen abort API
1935     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1936       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1937     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1938       RAISE OKL_API.G_EXCEPTION_ERROR;
1939     END IF;
1940     l_return_status := Validate_Record(l_def_ppydv_rec);
1941     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1942       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1943     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1944       RAISE OKL_API.G_EXCEPTION_ERROR;
1945     END IF;
1946     -----------------------------------------
1947     -- Move VIEW record to "Child" records --
1948     -----------------------------------------
1949     migrate(l_def_ppydv_rec, l_ppyd_rec);
1950     -----------------------------------------------
1951     -- Call the INSERT_ROW for each child record --
1952     -----------------------------------------------
1953     insert_row(
1954       p_init_msg_list,
1955       l_return_status,
1956       x_msg_count,
1957       x_msg_data,
1958       l_ppyd_rec,
1959       lx_ppyd_rec
1960     );
1961     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1962       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1963     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1964       RAISE OKL_API.G_EXCEPTION_ERROR;
1965     END IF;
1966 
1967     OPEN party_cur(p_cpl_id => l_ppyd_rec.cpl_id);
1968     FETCH party_cur INTO party_rec;
1969     CLOSE party_cur;
1970     okl_contract_status_pub.cascade_lease_status_edit
1971           (p_api_version     => p_api_version,
1972            p_init_msg_list   => p_init_msg_list,
1973            x_return_status   => l_return_status,
1974            x_msg_count       => x_msg_count,
1975            x_msg_data        => x_msg_data,
1976            p_chr_id          => party_rec.dnz_chr_id);
1977     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1978       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1979     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1980       RAISE OKL_API.G_EXCEPTION_ERROR;
1981     END IF;
1982 
1983     migrate(lx_ppyd_rec, l_def_ppydv_rec);
1984     -- Set OUT values
1985     x_ppydv_rec := l_def_ppydv_rec;
1986     x_return_status := l_return_status;
1987     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1988   EXCEPTION
1989     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1990       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1991       (
1992         l_api_name,
1993         G_PKG_NAME,
1994         'OKL_API.G_RET_STS_ERROR',
1995         x_msg_count,
1996         x_msg_data,
1997         '_PVT'
1998       );
1999     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2000       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2001       (
2002         l_api_name,
2003         G_PKG_NAME,
2004         'OKL_API.G_RET_STS_UNEXP_ERROR',
2005         x_msg_count,
2006         x_msg_data,
2007         '_PVT'
2008       );
2009     WHEN OTHERS THEN
2010       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2011       (
2012         l_api_name,
2013         G_PKG_NAME,
2014         'OTHERS',
2015         x_msg_count,
2016         x_msg_data,
2017         '_PVT'
2018       );
2019   END insert_row;
2020   -----------------------------------------
2021   -- PL/SQL TBL insert_row for:PPYDV_TBL --
2022   -----------------------------------------
2023   PROCEDURE insert_row(
2024     p_api_version                  IN NUMBER,
2025     p_init_msg_list                IN VARCHAR2,
2026     x_return_status                OUT NOCOPY VARCHAR2,
2027     x_msg_count                    OUT NOCOPY NUMBER,
2028     x_msg_data                     OUT NOCOPY VARCHAR2,
2029     p_ppydv_tbl                    IN ppydv_tbl_type,
2030     x_ppydv_tbl                    OUT NOCOPY  ppydv_tbl_type,
2031     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2032 
2033     l_api_version                  CONSTANT NUMBER := 1;
2034     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
2035     i                              NUMBER := 0;
2036   BEGIN
2037     OKL_API.init_msg_list(p_init_msg_list);
2038     -- Make sure PL/SQL table has records in it before passing
2039     IF (p_ppydv_tbl.COUNT > 0) THEN
2040       i := p_ppydv_tbl.FIRST;
2041       LOOP
2042         DECLARE
2043           l_error_rec         OKL_API.ERROR_REC_TYPE;
2044         BEGIN
2045           l_error_rec.api_name := l_api_name;
2046           l_error_rec.api_package := G_PKG_NAME;
2047           l_error_rec.idx := i;
2048           insert_row (
2049             p_api_version                  => p_api_version,
2050             p_init_msg_list                => OKL_API.G_FALSE,
2051             x_return_status                => l_error_rec.error_type,
2052             x_msg_count                    => l_error_rec.msg_count,
2053             x_msg_data                     => l_error_rec.msg_data,
2054             p_ppydv_rec                    => p_ppydv_tbl(i),
2055             x_ppydv_rec                    => x_ppydv_tbl(i));
2056           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2057             l_error_rec.sqlcode := SQLCODE;
2058             load_error_tbl(l_error_rec, px_error_tbl);
2059           ELSE
2060             x_msg_count := l_error_rec.msg_count;
2061             x_msg_data := l_error_rec.msg_data;
2062           END IF;
2063         EXCEPTION
2064           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2065             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2066             l_error_rec.sqlcode := SQLCODE;
2067             load_error_tbl(l_error_rec, px_error_tbl);
2068           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2069             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2070             l_error_rec.sqlcode := SQLCODE;
2071             load_error_tbl(l_error_rec, px_error_tbl);
2072           WHEN OTHERS THEN
2073             l_error_rec.error_type := 'OTHERS';
2074             l_error_rec.sqlcode := SQLCODE;
2075             load_error_tbl(l_error_rec, px_error_tbl);
2076         END;
2077         EXIT WHEN (i = p_ppydv_tbl.LAST);
2078         i := p_ppydv_tbl.NEXT(i);
2079       END LOOP;
2080     END IF;
2081     -- Loop through the error_tbl to find the error with the highest severity
2082     -- and return it.
2083     x_return_status := find_highest_exception(px_error_tbl);
2084     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2085   EXCEPTION
2086     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2087       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2088       (
2089         l_api_name,
2090         G_PKG_NAME,
2091         'OKL_API.G_RET_STS_ERROR',
2092         x_msg_count,
2093         x_msg_data,
2094         '_PVT'
2095       );
2096     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2097       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2098       (
2099         l_api_name,
2100         G_PKG_NAME,
2101         'OKL_API.G_RET_STS_UNEXP_ERROR',
2102         x_msg_count,
2103         x_msg_data,
2104         '_PVT'
2105       );
2106     WHEN OTHERS THEN
2107       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2108       (
2109         l_api_name,
2110         G_PKG_NAME,
2111         'OTHERS',
2112         x_msg_count,
2113         x_msg_data,
2114         '_PVT'
2115       );
2116   END insert_row;
2117 
2118   -----------------------------------------
2119   -- PL/SQL TBL insert_row for:PPYDV_TBL --
2120   -----------------------------------------
2121   PROCEDURE insert_row(
2122     p_api_version                  IN NUMBER,
2123     p_init_msg_list                IN VARCHAR2,
2124     x_return_status                OUT NOCOPY VARCHAR2,
2125     x_msg_count                    OUT NOCOPY NUMBER,
2126     x_msg_data                     OUT NOCOPY VARCHAR2,
2127     p_ppydv_tbl                    IN ppydv_tbl_type,
2128     x_ppydv_tbl                    OUT NOCOPY ppydv_tbl_type) IS
2129 
2130     l_api_version                  CONSTANT NUMBER := 1;
2131     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
2132     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2133     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2134   BEGIN
2135     OKL_API.init_msg_list(p_init_msg_list);
2136     -- Make sure PL/SQL table has records in it before passing
2137     IF (p_ppydv_tbl.COUNT > 0) THEN
2138       insert_row (
2139         p_api_version                  => p_api_version,
2140         p_init_msg_list                => OKL_API.G_FALSE,
2141         x_return_status                => x_return_status,
2142         x_msg_count                    => x_msg_count,
2143         x_msg_data                     => x_msg_data,
2144         p_ppydv_tbl                    => p_ppydv_tbl,
2145         x_ppydv_tbl                    => x_ppydv_tbl,
2146         px_error_tbl                   => l_error_tbl);
2147     END IF;
2148     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2149   EXCEPTION
2150     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2151       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2152       (
2153         l_api_name,
2154         G_PKG_NAME,
2155         'OKL_API.G_RET_STS_ERROR',
2156         x_msg_count,
2157         x_msg_data,
2158         '_PVT'
2159       );
2160     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2161       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2162       (
2163         l_api_name,
2164         G_PKG_NAME,
2165         'OKL_API.G_RET_STS_UNEXP_ERROR',
2166         x_msg_count,
2167         x_msg_data,
2168         '_PVT'
2169       );
2170     WHEN OTHERS THEN
2171       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2172       (
2173         l_api_name,
2174         G_PKG_NAME,
2175         'OTHERS',
2176         x_msg_count,
2177         x_msg_data,
2178         '_PVT'
2179       );
2180   END insert_row;
2181 
2182   ---------------------------------------------------------------------------
2183   -- PROCEDURE lock_row
2184   ---------------------------------------------------------------------------
2185   -----------------------------------------
2186   -- lock_row for:OKL_PARTY_PAYMENT_DTLS --
2187   -----------------------------------------
2188   PROCEDURE lock_row(
2189     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2190     x_return_status                OUT NOCOPY VARCHAR2,
2191     x_msg_count                    OUT NOCOPY NUMBER,
2192     x_msg_data                     OUT NOCOPY VARCHAR2,
2193     p_ppyd_rec                     IN ppyd_rec_type) IS
2194 
2195     E_Resource_Busy                EXCEPTION;
2196     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2197     CURSOR lock_csr (p_ppyd_rec IN ppyd_rec_type) IS
2198     SELECT OBJECT_VERSION_NUMBER
2199       FROM OKL_PARTY_PAYMENT_DTLS
2200      WHERE ID = p_ppyd_rec.id
2201        AND OBJECT_VERSION_NUMBER = p_ppyd_rec.object_version_number
2202     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
2203 
2204     CURSOR lchk_csr (p_ppyd_rec IN ppyd_rec_type) IS
2205     SELECT OBJECT_VERSION_NUMBER
2206       FROM OKL_PARTY_PAYMENT_DTLS
2207      WHERE ID = p_ppyd_rec.id;
2208     l_api_version                  CONSTANT NUMBER := 1;
2209     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
2210     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2211     l_object_version_number        OKL_PARTY_PAYMENT_DTLS.OBJECT_VERSION_NUMBER%TYPE;
2212     lc_object_version_number       OKL_PARTY_PAYMENT_DTLS.OBJECT_VERSION_NUMBER%TYPE;
2213     l_row_notfound                 BOOLEAN := FALSE;
2214     lc_row_notfound                BOOLEAN := FALSE;
2215   BEGIN
2216     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2217                                               p_init_msg_list,
2218                                               '_PVT',
2219                                               x_return_status);
2220     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2221       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2222     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2223       RAISE OKL_API.G_EXCEPTION_ERROR;
2224     END IF;
2225     BEGIN
2226       OPEN lock_csr(p_ppyd_rec);
2227       FETCH lock_csr INTO l_object_version_number;
2228       l_row_notfound := lock_csr%NOTFOUND;
2229       CLOSE lock_csr;
2230     EXCEPTION
2231       WHEN E_Resource_Busy THEN
2232         IF (lock_csr%ISOPEN) THEN
2233           CLOSE lock_csr;
2234         END IF;
2235         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2236         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2237     END;
2238 
2239     IF ( l_row_notfound ) THEN
2240       OPEN lchk_csr(p_ppyd_rec);
2241       FETCH lchk_csr INTO lc_object_version_number;
2242       lc_row_notfound := lchk_csr%NOTFOUND;
2243       CLOSE lchk_csr;
2244     END IF;
2245     IF (lc_row_notfound) THEN
2246       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2247       RAISE OKL_API.G_EXCEPTION_ERROR;
2248     ELSIF lc_object_version_number > p_ppyd_rec.object_version_number THEN
2249       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2250       RAISE OKL_API.G_EXCEPTION_ERROR;
2251     ELSIF lc_object_version_number <> p_ppyd_rec.object_version_number THEN
2252       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2253       RAISE OKL_API.G_EXCEPTION_ERROR;
2254     ELSIF lc_object_version_number = -1 THEN
2255       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
2256       RAISE OKL_API.G_EXCEPTION_ERROR;
2257     END IF;
2258     x_return_status := l_return_status;
2259     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2260   EXCEPTION
2261     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2262       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2263       (
2264         l_api_name,
2265         G_PKG_NAME,
2266         'OKL_API.G_RET_STS_ERROR',
2267         x_msg_count,
2268         x_msg_data,
2269         '_PVT'
2270       );
2271     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2272       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2273       (
2274         l_api_name,
2275         G_PKG_NAME,
2276         'OKL_API.G_RET_STS_UNEXP_ERROR',
2277         x_msg_count,
2278         x_msg_data,
2279         '_PVT'
2280       );
2281     WHEN OTHERS THEN
2282       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2283       (
2284         l_api_name,
2285         G_PKG_NAME,
2286         'OTHERS',
2287         x_msg_count,
2288         x_msg_data,
2289         '_PVT'
2290       );
2291   END lock_row;
2292   --------------------------------------------
2293   -- lock_row for: OKL_PARTY_PAYMENT_DTLS_V --
2294   --------------------------------------------
2295   PROCEDURE lock_row(
2296     p_api_version                  IN NUMBER,
2297     p_init_msg_list                IN VARCHAR2,
2298     x_return_status                OUT NOCOPY VARCHAR2,
2299     x_msg_count                    OUT NOCOPY NUMBER,
2300     x_msg_data                     OUT NOCOPY VARCHAR2,
2301     p_ppydv_rec                    IN ppydv_rec_type) IS
2302 
2303     l_api_version                  CONSTANT NUMBER := 1;
2304     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
2305     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2306     l_ppyd_rec                     ppyd_rec_type;
2307   BEGIN
2308     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2309                                               G_PKG_NAME,
2310                                               p_init_msg_list,
2311                                               l_api_version,
2312                                               p_api_version,
2313                                               '_PVT',
2314                                               x_return_status);
2315     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2316       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2317     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2318       RAISE OKL_API.G_EXCEPTION_ERROR;
2319     END IF;
2320     -----------------------------------------
2321     -- Move VIEW record to "Child" records --
2322     -----------------------------------------
2323     migrate(p_ppydv_rec, l_ppyd_rec);
2324     ---------------------------------------------
2325     -- Call the LOCK_ROW for each child record --
2326     ---------------------------------------------
2327     lock_row(
2328       p_init_msg_list,
2329       l_return_status,
2330       x_msg_count,
2331       x_msg_data,
2332       l_ppyd_rec
2333     );
2334     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2335       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2336     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2337       RAISE OKL_API.G_EXCEPTION_ERROR;
2338     END IF;
2339     x_return_status := l_return_status;
2340     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2341   EXCEPTION
2342     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2343       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2344       (
2345         l_api_name,
2346         G_PKG_NAME,
2347         'OKL_API.G_RET_STS_ERROR',
2348         x_msg_count,
2349         x_msg_data,
2350         '_PVT'
2351       );
2352     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2353       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2354       (
2355         l_api_name,
2356         G_PKG_NAME,
2357         'OKL_API.G_RET_STS_UNEXP_ERROR',
2358         x_msg_count,
2359         x_msg_data,
2360         '_PVT'
2361       );
2362     WHEN OTHERS THEN
2363       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2364       (
2365         l_api_name,
2366         G_PKG_NAME,
2367         'OTHERS',
2368         x_msg_count,
2369         x_msg_data,
2370         '_PVT'
2371       );
2372   END lock_row;
2373   ---------------------------------------
2374   -- PL/SQL TBL lock_row for:PPYDV_TBL --
2375   ---------------------------------------
2376   PROCEDURE lock_row(
2377     p_api_version                  IN NUMBER,
2378     p_init_msg_list                IN VARCHAR2,
2379     x_return_status                OUT NOCOPY VARCHAR2,
2380     x_msg_count                    OUT NOCOPY NUMBER,
2381     x_msg_data                     OUT NOCOPY VARCHAR2,
2382     p_ppydv_tbl                    IN ppydv_tbl_type,
2383     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2384 
2385     l_api_version                  CONSTANT NUMBER := 1;
2386     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
2387     i                              NUMBER := 0;
2388   BEGIN
2389     OKL_API.init_msg_list(p_init_msg_list);
2390     -- Make sure PL/SQL table has recrods in it before passing
2391     IF (p_ppydv_tbl.COUNT > 0) THEN
2392       i := p_ppydv_tbl.FIRST;
2393       LOOP
2394         DECLARE
2395           l_error_rec         OKL_API.ERROR_REC_TYPE;
2396         BEGIN
2397           l_error_rec.api_name := l_api_name;
2398           l_error_rec.api_package := G_PKG_NAME;
2399           l_error_rec.idx := i;
2400           lock_row(
2401             p_api_version                  => p_api_version,
2402             p_init_msg_list                => OKL_API.G_FALSE,
2403             x_return_status                => l_error_rec.error_type,
2404             x_msg_count                    => l_error_rec.msg_count,
2405             x_msg_data                     => l_error_rec.msg_data,
2406             p_ppydv_rec                    => p_ppydv_tbl(i));
2407           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2408             l_error_rec.sqlcode := SQLCODE;
2409             load_error_tbl(l_error_rec, px_error_tbl);
2410           ELSE
2411             x_msg_count := l_error_rec.msg_count;
2412             x_msg_data := l_error_rec.msg_data;
2413           END IF;
2414         EXCEPTION
2415           WHEN OKL_API.G_EXCEPTION_ERROR THEN
2416             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2417             l_error_rec.sqlcode := SQLCODE;
2418             load_error_tbl(l_error_rec, px_error_tbl);
2419           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2420             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2421             l_error_rec.sqlcode := SQLCODE;
2422             load_error_tbl(l_error_rec, px_error_tbl);
2423           WHEN OTHERS THEN
2424             l_error_rec.error_type := 'OTHERS';
2425             l_error_rec.sqlcode := SQLCODE;
2426             load_error_tbl(l_error_rec, px_error_tbl);
2427         END;
2428         EXIT WHEN (i = p_ppydv_tbl.LAST);
2429         i := p_ppydv_tbl.NEXT(i);
2430       END LOOP;
2431     END IF;
2432     -- Loop through the error_tbl to find the error with the highest severity
2433     -- and return it.
2434     x_return_status := find_highest_exception(px_error_tbl);
2435     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2436   EXCEPTION
2437     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2438       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2439       (
2440         l_api_name,
2441         G_PKG_NAME,
2442         'OKL_API.G_RET_STS_ERROR',
2443         x_msg_count,
2444         x_msg_data,
2445         '_PVT'
2446       );
2447     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2448       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2449       (
2450         l_api_name,
2451         G_PKG_NAME,
2452         'OKL_API.G_RET_STS_UNEXP_ERROR',
2453         x_msg_count,
2454         x_msg_data,
2455         '_PVT'
2456       );
2457     WHEN OTHERS THEN
2458       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2459       (
2460         l_api_name,
2461         G_PKG_NAME,
2462         'OTHERS',
2463         x_msg_count,
2464         x_msg_data,
2465         '_PVT'
2466       );
2467   END lock_row;
2468   ---------------------------------------
2469   -- PL/SQL TBL lock_row for:PPYDV_TBL --
2470   ---------------------------------------
2471   PROCEDURE lock_row(
2472     p_api_version                  IN NUMBER,
2473     p_init_msg_list                IN VARCHAR2,
2474     x_return_status                OUT NOCOPY VARCHAR2,
2475     x_msg_count                    OUT NOCOPY NUMBER,
2476     x_msg_data                     OUT NOCOPY VARCHAR2,
2477     p_ppydv_tbl                    IN ppydv_tbl_type) IS
2478 
2479     l_api_version                  CONSTANT NUMBER := 1;
2480     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
2481     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2482     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
2483   BEGIN
2484     OKL_API.init_msg_list(p_init_msg_list);
2485     -- Make sure PL/SQL table has recrods in it before passing
2486     IF (p_ppydv_tbl.COUNT > 0) THEN
2487       lock_row(
2488         p_api_version                  => p_api_version,
2489         p_init_msg_list                => OKL_API.G_FALSE,
2490         x_return_status                => x_return_status,
2491         x_msg_count                    => x_msg_count,
2492         x_msg_data                     => x_msg_data,
2493         p_ppydv_tbl                    => p_ppydv_tbl,
2494         px_error_tbl                   => l_error_tbl);
2495     END IF;
2496     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2497   EXCEPTION
2498     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2499       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2500       (
2501         l_api_name,
2502         G_PKG_NAME,
2503         'OKL_API.G_RET_STS_ERROR',
2504         x_msg_count,
2505         x_msg_data,
2506         '_PVT'
2507       );
2508     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2509       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2510       (
2511         l_api_name,
2512         G_PKG_NAME,
2513         'OKL_API.G_RET_STS_UNEXP_ERROR',
2514         x_msg_count,
2515         x_msg_data,
2516         '_PVT'
2517       );
2518     WHEN OTHERS THEN
2519       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2520       (
2521         l_api_name,
2522         G_PKG_NAME,
2523         'OTHERS',
2524         x_msg_count,
2525         x_msg_data,
2526         '_PVT'
2527       );
2528   END lock_row;
2529   ---------------------------------------------------------------------------
2530   -- PROCEDURE update_row
2531   ---------------------------------------------------------------------------
2532   -------------------------------------------
2533   -- update_row for:OKL_PARTY_PAYMENT_DTLS --
2534   -------------------------------------------
2535   PROCEDURE update_row(
2536     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2537     x_return_status                OUT NOCOPY VARCHAR2,
2538     x_msg_count                    OUT NOCOPY NUMBER,
2539     x_msg_data                     OUT NOCOPY VARCHAR2,
2540     p_ppyd_rec                     IN ppyd_rec_type,
2541     x_ppyd_rec                     OUT NOCOPY ppyd_rec_type) IS
2542 
2543     l_api_version                  CONSTANT NUMBER := 1;
2544     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
2545     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2546     l_ppyd_rec                     ppyd_rec_type := p_ppyd_rec;
2547     l_def_ppyd_rec                 ppyd_rec_type;
2548     l_row_notfound                 BOOLEAN := TRUE;
2549     ----------------------------------
2550     -- FUNCTION populate_new_record --
2551     ----------------------------------
2552     FUNCTION populate_new_record (
2553       p_ppyd_rec IN ppyd_rec_type,
2554       x_ppyd_rec OUT NOCOPY ppyd_rec_type
2555     ) RETURN VARCHAR2 IS
2556       l_ppyd_rec                     ppyd_rec_type;
2557       l_row_notfound                 BOOLEAN := TRUE;
2558       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2559     BEGIN
2560       x_ppyd_rec := p_ppyd_rec;
2561       -- Get current database values
2562       l_ppyd_rec := get_rec(p_ppyd_rec, l_return_status);
2563       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2564         IF (x_ppyd_rec.id = OKL_API.G_MISS_NUM)
2565         THEN
2566           x_ppyd_rec.id := l_ppyd_rec.id;
2567         END IF;
2568         IF (x_ppyd_rec.object_version_number = OKL_API.G_MISS_NUM)
2569         THEN
2570           x_ppyd_rec.object_version_number := l_ppyd_rec.object_version_number;
2571         END IF;
2572         IF (x_ppyd_rec.cpl_id = OKL_API.G_MISS_NUM)
2573         THEN
2574           x_ppyd_rec.cpl_id := l_ppyd_rec.cpl_id;
2575         END IF;
2576         IF (x_ppyd_rec.vendor_id = OKL_API.G_MISS_NUM)
2577         THEN
2578           x_ppyd_rec.vendor_id := l_ppyd_rec.vendor_id;
2579         END IF;
2580         IF (x_ppyd_rec.pay_site_id = OKL_API.G_MISS_NUM)
2581         THEN
2582           x_ppyd_rec.pay_site_id := l_ppyd_rec.pay_site_id;
2583         END IF;
2584         IF (x_ppyd_rec.payment_term_id = OKL_API.G_MISS_NUM)
2585         THEN
2586           x_ppyd_rec.payment_term_id := l_ppyd_rec.payment_term_id;
2587         END IF;
2588         IF (x_ppyd_rec.payment_method_code = OKL_API.G_MISS_CHAR)
2589         THEN
2590           x_ppyd_rec.payment_method_code := l_ppyd_rec.payment_method_code;
2591         END IF;
2592         IF (x_ppyd_rec.pay_group_code = OKL_API.G_MISS_CHAR)
2593         THEN
2594           x_ppyd_rec.pay_group_code := l_ppyd_rec.pay_group_code;
2595         END IF;
2596         IF (x_ppyd_rec.payment_hdr_id = OKL_API.G_MISS_NUM)
2597         THEN
2598           x_ppyd_rec.payment_hdr_id := l_ppyd_rec.payment_hdr_id;
2599         END IF;
2600         IF (x_ppyd_rec.payment_start_date = OKL_API.G_MISS_DATE)
2601         THEN
2602           x_ppyd_rec.payment_start_date := l_ppyd_rec.payment_start_date;
2603         END IF;
2604         IF (x_ppyd_rec.payment_frequency = OKL_API.G_MISS_CHAR)
2605         THEN
2606           x_ppyd_rec.payment_frequency := l_ppyd_rec.payment_frequency;
2607         END IF;
2608         IF (x_ppyd_rec.remit_days = OKL_API.G_MISS_NUM)
2609         THEN
2610           x_ppyd_rec.remit_days := l_ppyd_rec.remit_days;
2611         END IF;
2612         IF (x_ppyd_rec.disbursement_basis = OKL_API.G_MISS_CHAR)
2613         THEN
2614           x_ppyd_rec.disbursement_basis := l_ppyd_rec.disbursement_basis;
2615         END IF;
2616         IF (x_ppyd_rec.disbursement_fixed_amount = OKL_API.G_MISS_NUM)
2617         THEN
2618           x_ppyd_rec.disbursement_fixed_amount := l_ppyd_rec.disbursement_fixed_amount;
2619         END IF;
2620         IF (x_ppyd_rec.disbursement_percent = OKL_API.G_MISS_NUM)
2621         THEN
2622           x_ppyd_rec.disbursement_percent := l_ppyd_rec.disbursement_percent;
2623         END IF;
2624         IF (x_ppyd_rec.processing_fee_basis = OKL_API.G_MISS_CHAR)
2625         THEN
2626           x_ppyd_rec.processing_fee_basis := l_ppyd_rec.processing_fee_basis;
2627         END IF;
2628         IF (x_ppyd_rec.processing_fee_fixed_amount = OKL_API.G_MISS_NUM)
2629         THEN
2630           x_ppyd_rec.processing_fee_fixed_amount := l_ppyd_rec.processing_fee_fixed_amount;
2631         END IF;
2632         IF (x_ppyd_rec.processing_fee_percent = OKL_API.G_MISS_NUM)
2633         THEN
2634           x_ppyd_rec.processing_fee_percent := l_ppyd_rec.processing_fee_percent;
2635         END IF;
2636 		/*
2637         IF (x_ppyd_rec.include_in_yield_flag = OKL_API.G_MISS_CHAR)
2638         THEN
2639           x_ppyd_rec.include_in_yield_flag := l_ppyd_rec.include_in_yield_flag;
2640         END IF;
2641         IF (x_ppyd_rec.processing_fee_formula = OKL_API.G_MISS_CHAR)
2642         THEN
2643           x_ppyd_rec.processing_fee_formula := l_ppyd_rec.processing_fee_formula;
2644         END IF; */
2645         IF (x_ppyd_rec.payment_basis = OKL_API.G_MISS_CHAR)
2646         THEN
2647           x_ppyd_rec.payment_basis := l_ppyd_rec.payment_basis;
2648         END IF;
2649         IF (x_ppyd_rec.attribute_category = OKL_API.G_MISS_CHAR)
2650         THEN
2651           x_ppyd_rec.attribute_category := l_ppyd_rec.attribute_category;
2652         END IF;
2653         IF (x_ppyd_rec.attribute1 = OKL_API.G_MISS_CHAR)
2654         THEN
2655           x_ppyd_rec.attribute1 := l_ppyd_rec.attribute1;
2656         END IF;
2657         IF (x_ppyd_rec.attribute2 = OKL_API.G_MISS_CHAR)
2658         THEN
2659           x_ppyd_rec.attribute2 := l_ppyd_rec.attribute2;
2660         END IF;
2661         IF (x_ppyd_rec.attribute3 = OKL_API.G_MISS_CHAR)
2662         THEN
2663           x_ppyd_rec.attribute3 := l_ppyd_rec.attribute3;
2664         END IF;
2665         IF (x_ppyd_rec.attribute4 = OKL_API.G_MISS_CHAR)
2666         THEN
2667           x_ppyd_rec.attribute4 := l_ppyd_rec.attribute4;
2668         END IF;
2669         IF (x_ppyd_rec.attribute5 = OKL_API.G_MISS_CHAR)
2670         THEN
2671           x_ppyd_rec.attribute5 := l_ppyd_rec.attribute5;
2672         END IF;
2673         IF (x_ppyd_rec.attribute6 = OKL_API.G_MISS_CHAR)
2674         THEN
2675           x_ppyd_rec.attribute6 := l_ppyd_rec.attribute6;
2676         END IF;
2677         IF (x_ppyd_rec.attribute7 = OKL_API.G_MISS_CHAR)
2678         THEN
2679           x_ppyd_rec.attribute7 := l_ppyd_rec.attribute7;
2680         END IF;
2681         IF (x_ppyd_rec.attribute8 = OKL_API.G_MISS_CHAR)
2682         THEN
2683           x_ppyd_rec.attribute8 := l_ppyd_rec.attribute8;
2684         END IF;
2685         IF (x_ppyd_rec.attribute9 = OKL_API.G_MISS_CHAR)
2686         THEN
2687           x_ppyd_rec.attribute9 := l_ppyd_rec.attribute9;
2688         END IF;
2689         IF (x_ppyd_rec.attribute10 = OKL_API.G_MISS_CHAR)
2690         THEN
2691           x_ppyd_rec.attribute10 := l_ppyd_rec.attribute10;
2692         END IF;
2693         IF (x_ppyd_rec.attribute11 = OKL_API.G_MISS_CHAR)
2694         THEN
2695           x_ppyd_rec.attribute11 := l_ppyd_rec.attribute11;
2696         END IF;
2697         IF (x_ppyd_rec.attribute12 = OKL_API.G_MISS_CHAR)
2698         THEN
2699           x_ppyd_rec.attribute12 := l_ppyd_rec.attribute12;
2700         END IF;
2701         IF (x_ppyd_rec.attribute13 = OKL_API.G_MISS_CHAR)
2702         THEN
2703           x_ppyd_rec.attribute13 := l_ppyd_rec.attribute13;
2704         END IF;
2705         IF (x_ppyd_rec.attribute14 = OKL_API.G_MISS_CHAR)
2706         THEN
2707           x_ppyd_rec.attribute14 := l_ppyd_rec.attribute14;
2708         END IF;
2709         IF (x_ppyd_rec.attribute15 = OKL_API.G_MISS_CHAR)
2710         THEN
2711           x_ppyd_rec.attribute15 := l_ppyd_rec.attribute15;
2712         END IF;
2713         IF (x_ppyd_rec.created_by = OKL_API.G_MISS_NUM)
2714         THEN
2715           x_ppyd_rec.created_by := l_ppyd_rec.created_by;
2716         END IF;
2717         IF (x_ppyd_rec.creation_date = OKL_API.G_MISS_DATE)
2718         THEN
2719           x_ppyd_rec.creation_date := l_ppyd_rec.creation_date;
2720         END IF;
2721         IF (x_ppyd_rec.last_updated_by = OKL_API.G_MISS_NUM)
2722         THEN
2723           x_ppyd_rec.last_updated_by := l_ppyd_rec.last_updated_by;
2724         END IF;
2725         IF (x_ppyd_rec.last_update_date = OKL_API.G_MISS_DATE)
2726         THEN
2727           x_ppyd_rec.last_update_date := l_ppyd_rec.last_update_date;
2728         END IF;
2729         IF (x_ppyd_rec.last_update_login = OKL_API.G_MISS_NUM)
2730         THEN
2731           x_ppyd_rec.last_update_login := l_ppyd_rec.last_update_login;
2732         END IF;
2733 
2734         IF (x_ppyd_rec.ORIG_CONTRACT_LINE_ID = OKL_API.G_MISS_NUM)
2735         THEN
2736           x_ppyd_rec.ORIG_CONTRACT_LINE_ID := l_ppyd_rec.ORIG_CONTRACT_LINE_ID;
2737         END IF;
2738 
2739 
2740       END IF;
2741       RETURN(l_return_status);
2742     END populate_new_record;
2743     -----------------------------------------------
2744     -- Set_Attributes for:OKL_PARTY_PAYMENT_DTLS --
2745     -----------------------------------------------
2746     FUNCTION Set_Attributes (
2747       p_ppyd_rec IN ppyd_rec_type,
2748       x_ppyd_rec OUT NOCOPY ppyd_rec_type
2749     ) RETURN VARCHAR2 IS
2750       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2751     BEGIN
2752       x_ppyd_rec := p_ppyd_rec;
2753       RETURN(l_return_status);
2754     END Set_Attributes;
2755   BEGIN
2756     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2757                                               p_init_msg_list,
2758                                               '_PVT',
2759                                               x_return_status);
2760     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2761       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2762     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2763       RAISE OKL_API.G_EXCEPTION_ERROR;
2764     END IF;
2765     --- Setting item attributes
2766     l_return_status := Set_Attributes(
2767       p_ppyd_rec,                        -- IN
2768       l_ppyd_rec);                       -- OUT
2769     --- If any errors happen abort API
2770     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2771       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2772     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2773       RAISE OKL_API.G_EXCEPTION_ERROR;
2774     END IF;
2775     l_return_status := populate_new_record(l_ppyd_rec, l_def_ppyd_rec);
2776     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2777       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2778     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2779       RAISE OKL_API.G_EXCEPTION_ERROR;
2780     END IF;
2781     UPDATE OKL_PARTY_PAYMENT_DTLS
2782     SET OBJECT_VERSION_NUMBER = l_def_ppyd_rec.object_version_number,
2783         CPL_ID = l_def_ppyd_rec.cpl_id,
2784         VENDOR_ID = l_def_ppyd_rec.vendor_id,
2785         PAY_SITE_ID = l_def_ppyd_rec.pay_site_id,
2786         PAYMENT_TERM_ID = l_def_ppyd_rec.payment_term_id,
2787         PAYMENT_METHOD_CODE = l_def_ppyd_rec.payment_method_code,
2788         PAY_GROUP_CODE = l_def_ppyd_rec.pay_group_code,
2789 		PAYMENT_HDR_ID = l_def_ppyd_rec.payment_hdr_id,
2790 		PAYMENT_START_DATE = l_def_ppyd_rec.payment_start_date,
2791 		PAYMENT_FREQUENCY = l_def_ppyd_rec.payment_frequency,
2792 		REMIT_DAYS = l_def_ppyd_rec.remit_days,
2793 		DISBURSEMENT_BASIS = l_def_ppyd_rec.disbursement_basis,
2794 		DISBURSEMENT_FIXED_AMOUNT = l_def_ppyd_rec.disbursement_fixed_amount,
2795 		DISBURSEMENT_PERCENT = l_def_ppyd_rec.disbursement_percent,
2796 		PROCESSING_FEE_BASIS = l_def_ppyd_rec.processing_fee_basis,
2797 		PROCESSING_FEE_FIXED_AMOUNT = l_def_ppyd_rec.processing_fee_fixed_amount,
2798 		PROCESSING_FEE_PERCENT = l_def_ppyd_rec.processing_fee_percent,
2799 		--INCLUDE_IN_YIELD_FLAG = l_def_ppyd_rec.include_in_yield_flag,
2800 		--PROCESSING_FEE_FORMULA = l_def_ppyd_rec.processing_fee_formula,
2801 		PAYMENT_BASIS = l_def_ppyd_rec.payment_basis,
2802         ATTRIBUTE_CATEGORY = l_def_ppyd_rec.attribute_category,
2803         ATTRIBUTE1 = l_def_ppyd_rec.attribute1,
2804         ATTRIBUTE2 = l_def_ppyd_rec.attribute2,
2805         ATTRIBUTE3 = l_def_ppyd_rec.attribute3,
2806         ATTRIBUTE4 = l_def_ppyd_rec.attribute4,
2807         ATTRIBUTE5 = l_def_ppyd_rec.attribute5,
2808         ATTRIBUTE6 = l_def_ppyd_rec.attribute6,
2809         ATTRIBUTE7 = l_def_ppyd_rec.attribute7,
2810         ATTRIBUTE8 = l_def_ppyd_rec.attribute8,
2811         ATTRIBUTE9 = l_def_ppyd_rec.attribute9,
2812         ATTRIBUTE10 = l_def_ppyd_rec.attribute10,
2813         ATTRIBUTE11 = l_def_ppyd_rec.attribute11,
2814         ATTRIBUTE12 = l_def_ppyd_rec.attribute12,
2815         ATTRIBUTE13 = l_def_ppyd_rec.attribute13,
2816         ATTRIBUTE14 = l_def_ppyd_rec.attribute14,
2817         ATTRIBUTE15 = l_def_ppyd_rec.attribute15,
2818         CREATED_BY = l_def_ppyd_rec.created_by,
2819         CREATION_DATE = l_def_ppyd_rec.creation_date,
2820         LAST_UPDATED_BY = l_def_ppyd_rec.last_updated_by,
2821         LAST_UPDATE_DATE = l_def_ppyd_rec.last_update_date,
2822         LAST_UPDATE_LOGIN = l_def_ppyd_rec.last_update_login,
2823         ORIG_CONTRACT_LINE_ID = l_def_ppyd_rec.ORIG_CONTRACT_LINE_ID
2824     WHERE ID = l_def_ppyd_rec.id;
2825 
2826     x_ppyd_rec := l_ppyd_rec;
2827     x_return_status := l_return_status;
2828     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2829   EXCEPTION
2830     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2831       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2832       (
2833         l_api_name,
2834         G_PKG_NAME,
2835         'OKL_API.G_RET_STS_ERROR',
2836         x_msg_count,
2837         x_msg_data,
2838         '_PVT'
2839       );
2840     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2841       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2842       (
2843         l_api_name,
2844         G_PKG_NAME,
2845         'OKL_API.G_RET_STS_UNEXP_ERROR',
2846         x_msg_count,
2847         x_msg_data,
2848         '_PVT'
2849       );
2850     WHEN OTHERS THEN
2851       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2852       (
2853         l_api_name,
2854         G_PKG_NAME,
2855         'OTHERS',
2856         x_msg_count,
2857         x_msg_data,
2858         '_PVT'
2859       );
2860   END update_row;
2861   ---------------------------------------------
2862   -- update_row for:OKL_PARTY_PAYMENT_DTLS_V --
2863   ---------------------------------------------
2864   PROCEDURE update_row(
2865     p_api_version                  IN NUMBER,
2866     p_init_msg_list                IN VARCHAR2,
2867     x_return_status                OUT NOCOPY VARCHAR2,
2868     x_msg_count                    OUT NOCOPY NUMBER,
2869     x_msg_data                     OUT NOCOPY VARCHAR2,
2870     p_ppydv_rec                    IN ppydv_rec_type,
2871     x_ppydv_rec                    OUT NOCOPY ppydv_rec_type) IS
2872 
2873     l_api_version                  CONSTANT NUMBER := 1;
2874     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2875     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2876     l_ppydv_rec                    ppydv_rec_type := p_ppydv_rec;
2877     l_def_ppydv_rec                ppydv_rec_type;
2878     l_db_ppydv_rec                 ppydv_rec_type;
2879     l_ppyd_rec                     ppyd_rec_type;
2880     lx_ppyd_rec                    ppyd_rec_type;
2881 
2882     -------------------------------
2883     -- FUNCTION fill_who_columns --
2884     -------------------------------
2885     FUNCTION fill_who_columns (
2886       p_ppydv_rec IN ppydv_rec_type
2887     ) RETURN ppydv_rec_type IS
2888       l_ppydv_rec ppydv_rec_type := p_ppydv_rec;
2889     BEGIN
2890       l_ppydv_rec.LAST_UPDATE_DATE := SYSDATE;
2891       l_ppydv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2892       l_ppydv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2893       RETURN(l_ppydv_rec);
2894     END fill_who_columns;
2895     ----------------------------------
2896     -- FUNCTION populate_new_record --
2897     ----------------------------------
2898     FUNCTION populate_new_record (
2899       p_ppydv_rec IN ppydv_rec_type,
2900       x_ppydv_rec OUT NOCOPY ppydv_rec_type
2901     ) RETURN VARCHAR2 IS
2902       l_row_notfound                 BOOLEAN := TRUE;
2903       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2904     BEGIN
2905       x_ppydv_rec := p_ppydv_rec;
2906       -- Get current database values
2907       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
2908       --       so it may be verified through LOCK_ROW.
2909       l_db_ppydv_rec := get_rec(p_ppydv_rec, l_return_status);
2910       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2911         IF (x_ppydv_rec.id = OKL_API.G_MISS_NUM)
2912         THEN
2913           x_ppydv_rec.id := l_db_ppydv_rec.id;
2914         END IF;
2915         IF (x_ppydv_rec.object_version_number = OKC_API.G_MISS_NUM)
2916         THEN
2917           x_ppydv_rec.object_version_number := l_db_ppydv_rec.object_version_number;
2918         END IF;
2919         IF (x_ppydv_rec.cpl_id = OKL_API.G_MISS_NUM)
2920         THEN
2921           x_ppydv_rec.cpl_id := l_db_ppydv_rec.cpl_id;
2922         END IF;
2923         IF (x_ppydv_rec.vendor_id = OKL_API.G_MISS_NUM)
2924         THEN
2925           x_ppydv_rec.vendor_id := l_db_ppydv_rec.vendor_id;
2926         END IF;
2927         IF (x_ppydv_rec.pay_site_id = OKL_API.G_MISS_NUM)
2928         THEN
2929           x_ppydv_rec.pay_site_id := l_db_ppydv_rec.pay_site_id;
2930         END IF;
2931         IF (x_ppydv_rec.payment_term_id = OKL_API.G_MISS_NUM)
2932         THEN
2933           x_ppydv_rec.payment_term_id := l_db_ppydv_rec.payment_term_id;
2934         END IF;
2935         IF (x_ppydv_rec.payment_method_code = OKL_API.G_MISS_CHAR)
2936         THEN
2937           x_ppydv_rec.payment_method_code := l_db_ppydv_rec.payment_method_code;
2938         END IF;
2939         IF (x_ppydv_rec.pay_group_code = OKL_API.G_MISS_CHAR)
2940         THEN
2941           x_ppydv_rec.pay_group_code := l_db_ppydv_rec.pay_group_code;
2942         END IF;
2943         IF (x_ppydv_rec.payment_hdr_id = OKL_API.G_MISS_NUM)
2944         THEN
2945           x_ppydv_rec.payment_hdr_id := l_db_ppydv_rec.payment_hdr_id;
2946         END IF;
2947         IF (x_ppydv_rec.payment_start_date = OKL_API.G_MISS_DATE)
2948         THEN
2949           x_ppydv_rec.payment_start_date := l_db_ppydv_rec.payment_start_date;
2950         END IF;
2951         IF (x_ppydv_rec.payment_frequency = OKL_API.G_MISS_CHAR)
2952         THEN
2953           x_ppydv_rec.payment_frequency := l_db_ppydv_rec.payment_frequency;
2954         END IF;
2955         IF (x_ppydv_rec.remit_days = OKL_API.G_MISS_NUM)
2956         THEN
2957           x_ppydv_rec.remit_days := l_db_ppydv_rec.remit_days;
2958         END IF;
2959         IF (x_ppydv_rec.disbursement_basis = OKL_API.G_MISS_CHAR)
2960         THEN
2961           x_ppydv_rec.disbursement_basis := l_db_ppydv_rec.disbursement_basis;
2962         END IF;
2963         IF (x_ppydv_rec.disbursement_fixed_amount = OKL_API.G_MISS_NUM)
2964         THEN
2965           x_ppydv_rec.disbursement_fixed_amount := l_db_ppydv_rec.disbursement_fixed_amount;
2966         END IF;
2967         IF (x_ppydv_rec.disbursement_percent = OKL_API.G_MISS_NUM)
2968         THEN
2969           x_ppydv_rec.disbursement_percent := l_db_ppydv_rec.disbursement_percent;
2970         END IF;
2971         IF (x_ppydv_rec.processing_fee_basis = OKL_API.G_MISS_CHAR)
2972         THEN
2973           x_ppydv_rec.processing_fee_basis := l_db_ppydv_rec.processing_fee_basis;
2974         END IF;
2975         IF (x_ppydv_rec.processing_fee_fixed_amount = OKL_API.G_MISS_NUM)
2976         THEN
2977           x_ppydv_rec.processing_fee_fixed_amount := l_db_ppydv_rec.processing_fee_fixed_amount;
2978         END IF;
2979         IF (x_ppydv_rec.processing_fee_percent = OKL_API.G_MISS_NUM)
2980         THEN
2981           x_ppydv_rec.processing_fee_percent := l_db_ppydv_rec.processing_fee_percent;
2982         END IF;/*
2983         IF (x_ppydv_rec.include_in_yield_flag = OKL_API.G_MISS_CHAR)
2984         THEN
2985           x_ppydv_rec.include_in_yield_flag := l_db_ppydv_rec.include_in_yield_flag;
2986         END IF;
2987         IF (x_ppydv_rec.processing_fee_formula = OKL_API.G_MISS_CHAR)
2988         THEN
2989           x_ppydv_rec.processing_fee_formula := l_db_ppydv_rec.processing_fee_formula;
2990         END IF; */
2991         IF (x_ppydv_rec.payment_basis = OKL_API.G_MISS_CHAR)
2992         THEN
2993           x_ppydv_rec.payment_basis := l_db_ppydv_rec.payment_basis;
2994         END IF;
2995         IF (x_ppydv_rec.attribute_category = OKL_API.G_MISS_CHAR)
2996         THEN
2997           x_ppydv_rec.attribute_category := l_db_ppydv_rec.attribute_category;
2998         END IF;
2999         IF (x_ppydv_rec.attribute1 = OKL_API.G_MISS_CHAR)
3000         THEN
3001           x_ppydv_rec.attribute1 := l_db_ppydv_rec.attribute1;
3002         END IF;
3003         IF (x_ppydv_rec.attribute2 = OKL_API.G_MISS_CHAR)
3004         THEN
3005           x_ppydv_rec.attribute2 := l_db_ppydv_rec.attribute2;
3006         END IF;
3007         IF (x_ppydv_rec.attribute3 = OKL_API.G_MISS_CHAR)
3008         THEN
3009           x_ppydv_rec.attribute3 := l_db_ppydv_rec.attribute3;
3010         END IF;
3011         IF (x_ppydv_rec.attribute4 = OKL_API.G_MISS_CHAR)
3012         THEN
3013           x_ppydv_rec.attribute4 := l_db_ppydv_rec.attribute4;
3014         END IF;
3015         IF (x_ppydv_rec.attribute5 = OKL_API.G_MISS_CHAR)
3016         THEN
3017           x_ppydv_rec.attribute5 := l_db_ppydv_rec.attribute5;
3018         END IF;
3019         IF (x_ppydv_rec.attribute6 = OKL_API.G_MISS_CHAR)
3020         THEN
3021           x_ppydv_rec.attribute6 := l_db_ppydv_rec.attribute6;
3022         END IF;
3023         IF (x_ppydv_rec.attribute7 = OKL_API.G_MISS_CHAR)
3024         THEN
3025           x_ppydv_rec.attribute7 := l_db_ppydv_rec.attribute7;
3026         END IF;
3027         IF (x_ppydv_rec.attribute8 = OKL_API.G_MISS_CHAR)
3028         THEN
3029           x_ppydv_rec.attribute8 := l_db_ppydv_rec.attribute8;
3030         END IF;
3031         IF (x_ppydv_rec.attribute9 = OKL_API.G_MISS_CHAR)
3032         THEN
3033           x_ppydv_rec.attribute9 := l_db_ppydv_rec.attribute9;
3034         END IF;
3035         IF (x_ppydv_rec.attribute10 = OKL_API.G_MISS_CHAR)
3036         THEN
3037           x_ppydv_rec.attribute10 := l_db_ppydv_rec.attribute10;
3038         END IF;
3039         IF (x_ppydv_rec.attribute11 = OKL_API.G_MISS_CHAR)
3040         THEN
3041           x_ppydv_rec.attribute11 := l_db_ppydv_rec.attribute11;
3042         END IF;
3043         IF (x_ppydv_rec.attribute12 = OKL_API.G_MISS_CHAR)
3044         THEN
3045           x_ppydv_rec.attribute12 := l_db_ppydv_rec.attribute12;
3046         END IF;
3047         IF (x_ppydv_rec.attribute13 = OKL_API.G_MISS_CHAR)
3048         THEN
3049           x_ppydv_rec.attribute13 := l_db_ppydv_rec.attribute13;
3050         END IF;
3051         IF (x_ppydv_rec.attribute14 = OKL_API.G_MISS_CHAR)
3052         THEN
3053           x_ppydv_rec.attribute14 := l_db_ppydv_rec.attribute14;
3054         END IF;
3055         IF (x_ppydv_rec.attribute15 = OKL_API.G_MISS_CHAR)
3056         THEN
3057           x_ppydv_rec.attribute15 := l_db_ppydv_rec.attribute15;
3058         END IF;
3059         IF (x_ppydv_rec.created_by = OKL_API.G_MISS_NUM)
3060         THEN
3061           x_ppydv_rec.created_by := l_db_ppydv_rec.created_by;
3062         END IF;
3063         IF (x_ppydv_rec.creation_date = OKL_API.G_MISS_DATE)
3064         THEN
3065           x_ppydv_rec.creation_date := l_db_ppydv_rec.creation_date;
3066         END IF;
3067         IF (x_ppydv_rec.last_updated_by = OKL_API.G_MISS_NUM)
3068         THEN
3069           x_ppydv_rec.last_updated_by := l_db_ppydv_rec.last_updated_by;
3070         END IF;
3071         IF (x_ppydv_rec.last_update_date = OKL_API.G_MISS_DATE)
3072         THEN
3073           x_ppydv_rec.last_update_date := l_db_ppydv_rec.last_update_date;
3074         END IF;
3075         IF (x_ppydv_rec.last_update_login = OKL_API.G_MISS_NUM)
3076         THEN
3077           x_ppydv_rec.last_update_login := l_db_ppydv_rec.last_update_login;
3078         END IF;
3079 
3080          IF (x_ppydv_rec.ORIG_CONTRACT_LINE_ID = OKL_API.G_MISS_NUM)
3081         THEN
3082           x_ppydv_rec.ORIG_CONTRACT_LINE_ID := l_db_ppydv_rec.ORIG_CONTRACT_LINE_ID;
3083         END IF;
3084 
3085 
3086       END IF;
3087       RETURN(l_return_status);
3088     END populate_new_record;
3089     -------------------------------------------------
3090     -- Set_Attributes for:OKL_PARTY_PAYMENT_DTLS_V --
3091     -------------------------------------------------
3092     FUNCTION Set_Attributes (
3093       p_ppydv_rec IN ppydv_rec_type,
3094       x_ppydv_rec OUT NOCOPY ppydv_rec_type
3095     ) RETURN VARCHAR2 IS
3096       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3097     BEGIN
3098       x_ppydv_rec := p_ppydv_rec;
3099       x_ppydv_rec.OBJECT_VERSION_NUMBER := NVL(x_ppydv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
3100       RETURN(l_return_status);
3101     END Set_Attributes;
3102 
3103   BEGIN
3104     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3105                                               G_PKG_NAME,
3106                                               p_init_msg_list,
3107                                               l_api_version,
3108                                               p_api_version,
3109                                               '_PVT',
3110                                               x_return_status);
3111     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3112       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3113     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3114       RAISE OKL_API.G_EXCEPTION_ERROR;
3115     END IF;
3116     --- Setting item attributes
3117     l_return_status := Set_Attributes(
3118       p_ppydv_rec,                       -- IN
3119       x_ppydv_rec);                      -- OUT
3120     --- If any errors happen abort API
3121     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3122       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3123     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3124       RAISE OKL_API.G_EXCEPTION_ERROR;
3125     END IF;
3126     l_return_status := populate_new_record(l_ppydv_rec, l_def_ppydv_rec);
3127     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3128       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3129     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3130       RAISE OKL_API.G_EXCEPTION_ERROR;
3131     END IF;
3132     l_def_ppydv_rec := fill_who_columns(l_def_ppydv_rec);
3133     --- Validate all non-missing attributes (Item Level Validation)
3134     l_return_status := Validate_Attributes(l_def_ppydv_rec);
3135     --- If any errors happen abort API
3136     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3137       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3138     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3139       RAISE OKL_API.G_EXCEPTION_ERROR;
3140     END IF;
3141     l_return_status := Validate_Record(l_def_ppydv_rec, l_db_ppydv_rec);
3142     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3143       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3144     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3145       RAISE OKL_API.G_EXCEPTION_ERROR;
3146     END IF;
3147 /****Commented**********
3148     --avsingh
3149     -- Lock the Record
3150     lock_row(
3151       p_api_version                  => p_api_version,
3152       p_init_msg_list                => p_init_msg_list,
3153       x_return_status                => l_return_status,
3154       x_msg_count                    => x_msg_count,
3155       x_msg_data                     => x_msg_data,
3156       p_ppydv_rec                    => p_ppydv_rec);
3157     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3158       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3159     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3160       RAISE OKL_API.G_EXCEPTION_ERROR;
3161     END IF;
3162 ***********************/
3163     -----------------------------------------
3164     -- Move VIEW record to "Child" records --
3165     -----------------------------------------
3166     migrate(l_def_ppydv_rec, l_ppyd_rec);
3167     -----------------------------------------------
3168     -- Call the UPDATE_ROW for each child record --
3169     -----------------------------------------------
3170     update_row(
3171       p_init_msg_list,
3172       l_return_status,
3173       x_msg_count,
3174       x_msg_data,
3175       l_ppyd_rec,
3176       lx_ppyd_rec
3177     );
3178     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3179       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3180     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3181       RAISE OKL_API.G_EXCEPTION_ERROR;
3182     END IF;
3183 
3184     OPEN party_cur(p_cpl_id => l_ppyd_rec.cpl_id);
3185     FETCH party_cur INTO party_rec;
3186     CLOSE party_cur;
3187     okl_contract_status_pub.cascade_lease_status_edit
3188           (p_api_version     => p_api_version,
3189            p_init_msg_list   => p_init_msg_list,
3190            x_return_status   => l_return_status,
3191            x_msg_count       => x_msg_count,
3192            x_msg_data        => x_msg_data,
3193            p_chr_id          => party_rec.dnz_chr_id);
3194     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3195       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3196     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3197       RAISE OKL_API.G_EXCEPTION_ERROR;
3198     END IF;
3199 
3200     migrate(lx_ppyd_rec, l_def_ppydv_rec);
3201     x_ppydv_rec := l_def_ppydv_rec;
3202     x_return_status := l_return_status;
3203     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3204   EXCEPTION
3205     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3206       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3207       (
3208         l_api_name,
3209         G_PKG_NAME,
3210         'OKL_API.G_RET_STS_ERROR',
3211         x_msg_count,
3212         x_msg_data,
3213         '_PVT'
3214       );
3215     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3216       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3217       (
3218         l_api_name,
3219         G_PKG_NAME,
3220         'OKL_API.G_RET_STS_UNEXP_ERROR',
3221         x_msg_count,
3222         x_msg_data,
3223         '_PVT'
3224       );
3225     WHEN OTHERS THEN
3226       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3227       (
3228         l_api_name,
3229         G_PKG_NAME,
3230         'OTHERS',
3231         x_msg_count,
3232         x_msg_data,
3233         '_PVT'
3234       );
3235   END update_row;
3236   -----------------------------------------
3237   -- PL/SQL TBL update_row for:ppydv_tbl --
3238   -----------------------------------------
3239   PROCEDURE update_row(
3240     p_api_version                  IN NUMBER,
3241     p_init_msg_list                IN VARCHAR2,
3242     x_return_status                OUT NOCOPY VARCHAR2,
3243     x_msg_count                    OUT NOCOPY NUMBER,
3244     x_msg_data                     OUT NOCOPY VARCHAR2,
3245     p_ppydv_tbl                    IN ppydv_tbl_type,
3246     x_ppydv_tbl                    OUT NOCOPY ppydv_tbl_type,
3247     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3248 
3249     l_api_version                  CONSTANT NUMBER := 1;
3250     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
3251     i                              NUMBER := 0;
3252   BEGIN
3253     OKL_API.init_msg_list(p_init_msg_list);
3254     -- Make sure PL/SQL table has records in it before passing
3255     IF (p_ppydv_tbl.COUNT > 0) THEN
3256       i := p_ppydv_tbl.FIRST;
3257       LOOP
3258         DECLARE
3259           l_error_rec         OKL_API.ERROR_REC_TYPE;
3260         BEGIN
3261           l_error_rec.api_name := l_api_name;
3262           l_error_rec.api_package := G_PKG_NAME;
3263           l_error_rec.idx := i;
3264           update_row (
3265             p_api_version                  => p_api_version,
3266             p_init_msg_list                => OKL_API.G_FALSE,
3267             x_return_status                => l_error_rec.error_type,
3268             x_msg_count                    => l_error_rec.msg_count,
3269             x_msg_data                     => l_error_rec.msg_data,
3270             p_ppydv_rec                    => p_ppydv_tbl(i),
3271             x_ppydv_rec                    => x_ppydv_tbl(i));
3272           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3273             l_error_rec.sqlcode := SQLCODE;
3274             load_error_tbl(l_error_rec, px_error_tbl);
3275           ELSE
3276             x_msg_count := l_error_rec.msg_count;
3277             x_msg_data := l_error_rec.msg_data;
3278           END IF;
3279         EXCEPTION
3280           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3281             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3282             l_error_rec.sqlcode := SQLCODE;
3283             load_error_tbl(l_error_rec, px_error_tbl);
3284           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3285             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3286             l_error_rec.sqlcode := SQLCODE;
3287             load_error_tbl(l_error_rec, px_error_tbl);
3288           WHEN OTHERS THEN
3289             l_error_rec.error_type := 'OTHERS';
3290             l_error_rec.sqlcode := SQLCODE;
3291             load_error_tbl(l_error_rec, px_error_tbl);
3292         END;
3293         EXIT WHEN (i = p_ppydv_tbl.LAST);
3294         i := p_ppydv_tbl.NEXT(i);
3295       END LOOP;
3296     END IF;
3297     -- Loop through the error_tbl to find the error with the highest severity
3298     -- and return it.
3299     x_return_status := find_highest_exception(px_error_tbl);
3300     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3301   EXCEPTION
3302     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3303       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3304       (
3305         l_api_name,
3306         G_PKG_NAME,
3307         'OKL_API.G_RET_STS_ERROR',
3308         x_msg_count,
3309         x_msg_data,
3310         '_PVT'
3311       );
3312     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3313       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3314       (
3315         l_api_name,
3316         G_PKG_NAME,
3317         'OKL_API.G_RET_STS_UNEXP_ERROR',
3318         x_msg_count,
3319         x_msg_data,
3320         '_PVT'
3321       );
3322     WHEN OTHERS THEN
3323       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3324       (
3325         l_api_name,
3326         G_PKG_NAME,
3327         'OTHERS',
3328         x_msg_count,
3329         x_msg_data,
3330         '_PVT'
3331       );
3332   END update_row;
3333 
3334   -----------------------------------------
3335   -- PL/SQL TBL update_row for:PPYDV_TBL --
3336   -----------------------------------------
3337   PROCEDURE update_row(
3338     p_api_version                  IN NUMBER,
3339     p_init_msg_list                IN VARCHAR2,
3340     x_return_status                OUT NOCOPY VARCHAR2,
3341     x_msg_count                    OUT NOCOPY NUMBER,
3342     x_msg_data                     OUT NOCOPY VARCHAR2,
3343     p_ppydv_tbl                    IN ppydv_tbl_type,
3344     x_ppydv_tbl                    OUT NOCOPY ppydv_tbl_type) IS
3345 
3346     l_api_version                  CONSTANT NUMBER := 1;
3347     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
3348     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3349     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3350   BEGIN
3351     OKL_API.init_msg_list(p_init_msg_list);
3352     -- Make sure PL/SQL table has records in it before passing
3353     IF (p_ppydv_tbl.COUNT > 0) THEN
3354       update_row (
3355         p_api_version                  => p_api_version,
3356         p_init_msg_list                => OKL_API.G_FALSE,
3357         x_return_status                => x_return_status,
3358         x_msg_count                    => x_msg_count,
3359         x_msg_data                     => x_msg_data,
3360         p_ppydv_tbl                    => p_ppydv_tbl,
3361         x_ppydv_tbl                    => x_ppydv_tbl,
3362         px_error_tbl                   => l_error_tbl);
3363     END IF;
3364     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3365   EXCEPTION
3366     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3367       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3368       (
3369         l_api_name,
3370         G_PKG_NAME,
3371         'OKL_API.G_RET_STS_ERROR',
3372         x_msg_count,
3373         x_msg_data,
3374         '_PVT'
3375       );
3376     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3377       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3378       (
3379         l_api_name,
3380         G_PKG_NAME,
3381         'OKL_API.G_RET_STS_UNEXP_ERROR',
3382         x_msg_count,
3383         x_msg_data,
3384         '_PVT'
3385       );
3386     WHEN OTHERS THEN
3387       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3388       (
3389         l_api_name,
3390         G_PKG_NAME,
3391         'OTHERS',
3392         x_msg_count,
3393         x_msg_data,
3394         '_PVT'
3395       );
3396   END update_row;
3397 
3398   ---------------------------------------------------------------------------
3399   -- PROCEDURE delete_row
3400   ---------------------------------------------------------------------------
3401   -------------------------------------------
3402   -- delete_row for:OKL_PARTY_PAYMENT_DTLS --
3403   -------------------------------------------
3404   PROCEDURE delete_row(
3405     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3406     x_return_status                OUT NOCOPY VARCHAR2,
3407     x_msg_count                    OUT NOCOPY NUMBER,
3408     x_msg_data                     OUT NOCOPY VARCHAR2,
3409     p_ppyd_rec                     IN ppyd_rec_type) IS
3410 
3411     l_api_version                  CONSTANT NUMBER := 1;
3412     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
3413     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3414     l_ppyd_rec                     ppyd_rec_type := p_ppyd_rec;
3415     l_row_notfound                 BOOLEAN := TRUE;
3416   BEGIN
3417     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3418                                               p_init_msg_list,
3419                                               '_PVT',
3420                                               x_return_status);
3421     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3422       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3423     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3424       RAISE OKL_API.G_EXCEPTION_ERROR;
3425     END IF;
3426 
3427     DELETE FROM OKL_PARTY_PAYMENT_DTLS
3428      WHERE ID = p_ppyd_rec.id;
3429 
3430     x_return_status := l_return_status;
3431     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3432   EXCEPTION
3433     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3434       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3435       (
3436         l_api_name,
3437         G_PKG_NAME,
3438         'OKL_API.G_RET_STS_ERROR',
3439         x_msg_count,
3440         x_msg_data,
3441         '_PVT'
3442       );
3443     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3444       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3445       (
3446         l_api_name,
3447         G_PKG_NAME,
3448         'OKL_API.G_RET_STS_UNEXP_ERROR',
3449         x_msg_count,
3450         x_msg_data,
3451         '_PVT'
3452       );
3453     WHEN OTHERS THEN
3454       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3455       (
3456         l_api_name,
3457         G_PKG_NAME,
3458         'OTHERS',
3459         x_msg_count,
3460         x_msg_data,
3461         '_PVT'
3462       );
3463   END delete_row;
3464   ---------------------------------------------
3465   -- delete_row for:OKL_PARTY_PAYMENT_DTLS_V --
3466   ---------------------------------------------
3467   PROCEDURE delete_row(
3468     p_api_version                  IN NUMBER,
3469     p_init_msg_list                IN VARCHAR2,
3470     x_return_status                OUT NOCOPY VARCHAR2,
3471     x_msg_count                    OUT NOCOPY NUMBER,
3472     x_msg_data                     OUT NOCOPY VARCHAR2,
3473     p_ppydv_rec                    IN ppydv_rec_type) IS
3474 
3475     l_api_version                  CONSTANT NUMBER := 1;
3476     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
3477     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3478     l_ppydv_rec                    ppydv_rec_type := p_ppydv_rec;
3479     l_ppyd_rec                     ppyd_rec_type;
3480 
3481     CURSOR l_get_cpl_id_csr(p_id IN NUMBER) IS
3482     SELECT cpl_id FROM okl_party_payment_dtls_v
3483     WHERE id = p_id;
3484     l_cpl_id NUMBER;
3485   BEGIN
3486     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3487                                               G_PKG_NAME,
3488                                               p_init_msg_list,
3489                                               l_api_version,
3490                                               p_api_version,
3491                                               '_PVT',
3492                                               x_return_status);
3493     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3494       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3495     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3496       RAISE OKL_API.G_EXCEPTION_ERROR;
3497     END IF;
3498 
3499     -----------------------------------------
3500     -- Move VIEW record to "Child" records --
3501     -----------------------------------------
3502     migrate(l_ppydv_rec, l_ppyd_rec);
3503     OPEN l_get_cpl_id_csr(p_id => l_ppyd_rec.id);
3504     FETCH l_get_cpl_id_csr INTO l_cpl_id;
3505     CLOSE l_get_cpl_id_csr;
3506     -----------------------------------------------
3507     -- Call the DELETE_ROW for each child record --
3508     -----------------------------------------------
3509     delete_row(
3510       p_init_msg_list,
3511       l_return_status,
3512       x_msg_count,
3513       x_msg_data,
3514       l_ppyd_rec
3515     );
3516     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3517       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3518     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3519       RAISE OKL_API.G_EXCEPTION_ERROR;
3520     END IF;
3521 
3522     OPEN party_cur(p_cpl_id => l_cpl_id);
3523     FETCH party_cur INTO party_rec;
3524     CLOSE party_cur;
3525     okl_contract_status_pub.cascade_lease_status_edit
3526           (p_api_version     => p_api_version,
3527            p_init_msg_list   => p_init_msg_list,
3528            x_return_status   => l_return_status,
3529            x_msg_count       => x_msg_count,
3530            x_msg_data        => x_msg_data,
3531            p_chr_id          => party_rec.dnz_chr_id);
3532     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3533       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3534     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3535       RAISE OKL_API.G_EXCEPTION_ERROR;
3536     END IF;
3537 
3538     x_return_status := l_return_status;
3539     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3540   EXCEPTION
3541     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3542       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3543       (
3544         l_api_name,
3545         G_PKG_NAME,
3546         'OKL_API.G_RET_STS_ERROR',
3547         x_msg_count,
3548         x_msg_data,
3549         '_PVT'
3550       );
3551     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3552       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3553       (
3554         l_api_name,
3555         G_PKG_NAME,
3556         'OKL_API.G_RET_STS_UNEXP_ERROR',
3557         x_msg_count,
3558         x_msg_data,
3559         '_PVT'
3560       );
3561     WHEN OTHERS THEN
3562       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3563       (
3564         l_api_name,
3565         G_PKG_NAME,
3566         'OTHERS',
3567         x_msg_count,
3568         x_msg_data,
3569         '_PVT'
3570       );
3571   END delete_row;
3572   --------------------------------------------------------
3573   -- PL/SQL TBL delete_row for:OKL_PARTY_PAYMENT_DTLS_V --
3574   --------------------------------------------------------
3575   PROCEDURE delete_row(
3576     p_api_version                  IN NUMBER,
3577     p_init_msg_list                IN VARCHAR2,
3578     x_return_status                OUT NOCOPY VARCHAR2,
3579     x_msg_count                    OUT NOCOPY NUMBER,
3580     x_msg_data                     OUT NOCOPY VARCHAR2,
3581     p_ppydv_tbl                    IN ppydv_tbl_type,
3582     px_error_tbl                   IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
3583 
3584     l_api_version                  CONSTANT NUMBER := 1;
3585     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
3586     i                              NUMBER := 0;
3587   BEGIN
3588     OKL_API.init_msg_list(p_init_msg_list);
3589     -- Make sure PL/SQL table has records in it before passing
3590     IF (p_ppydv_tbl.COUNT > 0) THEN
3591       i := p_ppydv_tbl.FIRST;
3592       LOOP
3593         DECLARE
3594           l_error_rec         OKL_API.ERROR_REC_TYPE;
3595         BEGIN
3596           l_error_rec.api_name := l_api_name;
3597           l_error_rec.api_package := G_PKG_NAME;
3598           l_error_rec.idx := i;
3599           delete_row (
3600             p_api_version                  => p_api_version,
3601             p_init_msg_list                => OKL_API.G_FALSE,
3602             x_return_status                => l_error_rec.error_type,
3603             x_msg_count                    => l_error_rec.msg_count,
3604             x_msg_data                     => l_error_rec.msg_data,
3605             p_ppydv_rec                    => p_ppydv_tbl(i));
3606           IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
3607             l_error_rec.sqlcode := SQLCODE;
3608             load_error_tbl(l_error_rec, px_error_tbl);
3609           ELSE
3610             x_msg_count := l_error_rec.msg_count;
3611             x_msg_data := l_error_rec.msg_data;
3612           END IF;
3613         EXCEPTION
3614           WHEN OKL_API.G_EXCEPTION_ERROR THEN
3615             l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
3616             l_error_rec.sqlcode := SQLCODE;
3617             load_error_tbl(l_error_rec, px_error_tbl);
3618           WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3619             l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
3620             l_error_rec.sqlcode := SQLCODE;
3621             load_error_tbl(l_error_rec, px_error_tbl);
3622           WHEN OTHERS THEN
3623             l_error_rec.error_type := 'OTHERS';
3624             l_error_rec.sqlcode := SQLCODE;
3625             load_error_tbl(l_error_rec, px_error_tbl);
3626         END;
3627         EXIT WHEN (i = p_ppydv_tbl.LAST);
3628         i := p_ppydv_tbl.NEXT(i);
3629       END LOOP;
3630     END IF;
3631     -- Loop through the error_tbl to find the error with the highest severity
3632     -- and return it.
3633     x_return_status := find_highest_exception(px_error_tbl);
3634     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3635   EXCEPTION
3636     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3637       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3638       (
3639         l_api_name,
3640         G_PKG_NAME,
3641         'OKL_API.G_RET_STS_ERROR',
3642         x_msg_count,
3643         x_msg_data,
3644         '_PVT'
3645       );
3646     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3647       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3648       (
3649         l_api_name,
3650         G_PKG_NAME,
3651         'OKL_API.G_RET_STS_UNEXP_ERROR',
3652         x_msg_count,
3653         x_msg_data,
3654         '_PVT'
3655       );
3656     WHEN OTHERS THEN
3657       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3658       (
3659         l_api_name,
3660         G_PKG_NAME,
3661         'OTHERS',
3662         x_msg_count,
3663         x_msg_data,
3664         '_PVT'
3665       );
3666   END delete_row;
3667 
3668   --------------------------------------------------------
3669   -- PL/SQL TBL delete_row for:OKL_PARTY_PAYMENT_DTLS_V --
3670   --------------------------------------------------------
3671   PROCEDURE delete_row(
3672     p_api_version                  IN NUMBER,
3673     p_init_msg_list                IN VARCHAR2,
3674     x_return_status                OUT NOCOPY VARCHAR2,
3675     x_msg_count                    OUT NOCOPY NUMBER,
3676     x_msg_data                     OUT NOCOPY VARCHAR2,
3677     p_ppydv_tbl                    IN ppydv_tbl_type) IS
3678 
3679     l_api_version                  CONSTANT NUMBER := 1;
3680     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
3681     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3682     l_error_tbl                    OKL_API.ERROR_TBL_TYPE;
3683   BEGIN
3684     OKL_API.init_msg_list(p_init_msg_list);
3685     -- Make sure PL/SQL table has records in it before passing
3686     IF (p_ppydv_tbl.COUNT > 0) THEN
3687       delete_row (
3688         p_api_version                  => p_api_version,
3689         p_init_msg_list                => OKL_API.G_FALSE,
3690         x_return_status                => x_return_status,
3691         x_msg_count                    => x_msg_count,
3692         x_msg_data                     => x_msg_data,
3693         p_ppydv_tbl                    => p_ppydv_tbl,
3694         px_error_tbl                   => l_error_tbl);
3695     END IF;
3696     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3697   EXCEPTION
3698     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3699       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3700       (
3701         l_api_name,
3702         G_PKG_NAME,
3703         'OKL_API.G_RET_STS_ERROR',
3704         x_msg_count,
3705         x_msg_data,
3706         '_PVT'
3707       );
3708     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3709       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3710       (
3711         l_api_name,
3712         G_PKG_NAME,
3713         'OKL_API.G_RET_STS_UNEXP_ERROR',
3714         x_msg_count,
3715         x_msg_data,
3716         '_PVT'
3717       );
3718     WHEN OTHERS THEN
3719       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3720       (
3721         l_api_name,
3722         G_PKG_NAME,
3723         'OTHERS',
3724         x_msg_count,
3725         x_msg_data,
3726         '_PVT'
3727       );
3728   END delete_row;
3729 
3730   ---------------------------------------------------------------------------
3731   -- PROCEDURE versioning
3732   ---------------------------------------------------------------------------
3733 
3734   FUNCTION create_version(
3735     p_chr_id IN NUMBER,
3736     p_major_version IN NUMBER) RETURN VARCHAR2 IS
3737 
3738   l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS;
3739 
3740 BEGIN
3741 INSERT INTO OKL_PARTY_PYMT_DTLS_H
3742   (
3743 ID
3744 ,OBJECT_VERSION_NUMBER
3745 ,MAJOR_VERSION
3746 ,CPL_ID
3747 ,VENDOR_ID
3748 ,PAY_SITE_ID
3749 ,PAYMENT_TERM_ID
3750 ,PAYMENT_METHOD_CODE
3751 ,PAY_GROUP_CODE
3752 ,PAYMENT_HDR_ID
3753 ,PAYMENT_START_DATE
3754 ,PAYMENT_FREQUENCY
3755 ,REMIT_DAYS
3756 ,DISBURSEMENT_BASIS
3757 ,DISBURSEMENT_FIXED_AMOUNT
3758 ,DISBURSEMENT_PERCENT
3759 ,PROCESSING_FEE_BASIS
3760 ,PROCESSING_FEE_FIXED_AMOUNT
3761 ,PROCESSING_FEE_PERCENT
3762 --,INCLUDE_IN_YIELD_FLAG
3763 --,PROCESSING_FEE_FORMULA
3764 ,PAYMENT_BASIS
3765 ,ATTRIBUTE_CATEGORY
3766 ,ATTRIBUTE1
3767 ,ATTRIBUTE2
3768 ,ATTRIBUTE3
3769 ,ATTRIBUTE4
3770 ,ATTRIBUTE5
3771 ,ATTRIBUTE6
3772 ,ATTRIBUTE7
3773 ,ATTRIBUTE8
3774 ,ATTRIBUTE9
3775 ,ATTRIBUTE10
3776 ,ATTRIBUTE11
3777 ,ATTRIBUTE12
3778 ,ATTRIBUTE13
3779 ,ATTRIBUTE14
3780 ,ATTRIBUTE15
3781 ,CREATED_BY
3782 ,CREATION_DATE
3783 ,LAST_UPDATED_BY
3784 ,LAST_UPDATE_DATE
3785 ,LAST_UPDATE_LOGIN
3786 ,ORIG_CONTRACT_LINE_ID
3787 )
3788   SELECT
3789  ID
3790 ,OBJECT_VERSION_NUMBER
3791 ,p_major_version
3792 ,CPL_ID
3793 ,VENDOR_ID
3794 ,PAY_SITE_ID
3795 ,PAYMENT_TERM_ID
3796 ,PAYMENT_METHOD_CODE
3797 ,PAY_GROUP_CODE
3798 ,PAYMENT_HDR_ID
3799 ,PAYMENT_START_DATE
3800 ,PAYMENT_FREQUENCY
3801 ,REMIT_DAYS
3802 ,DISBURSEMENT_BASIS
3803 ,DISBURSEMENT_FIXED_AMOUNT
3804 ,DISBURSEMENT_PERCENT
3805 ,PROCESSING_FEE_BASIS
3806 ,PROCESSING_FEE_FIXED_AMOUNT
3807 ,PROCESSING_FEE_PERCENT
3808 --,INCLUDE_IN_YIELD_FLAG
3809 --,PROCESSING_FEE_FORMULA
3810 ,PAYMENT_BASIS
3811 ,ATTRIBUTE_CATEGORY
3812 ,ATTRIBUTE1
3813 ,ATTRIBUTE2
3814 ,ATTRIBUTE3
3815 ,ATTRIBUTE4
3816 ,ATTRIBUTE5
3817 ,ATTRIBUTE6
3818 ,ATTRIBUTE7
3819 ,ATTRIBUTE8
3820 ,ATTRIBUTE9
3821 ,ATTRIBUTE10
3822 ,ATTRIBUTE11
3823 ,ATTRIBUTE12
3824 ,ATTRIBUTE13
3825 ,ATTRIBUTE14
3826 ,ATTRIBUTE15
3827 ,CREATED_BY
3828 ,CREATION_DATE
3829 ,LAST_UPDATED_BY
3830 ,LAST_UPDATE_DATE
3831 ,LAST_UPDATE_LOGIN
3832 ,ORIG_CONTRACT_LINE_ID
3833   FROM OKL_PARTY_PAYMENT_DTLS
3834   WHERE cpl_id in (select id from okc_k_party_roles_b  where dnz_chr_id = p_chr_id);
3835 
3836   RETURN l_return_status;
3837   EXCEPTION
3838        -- other appropriate handlers
3839     WHEN OTHERS THEN
3840        -- store SQL error message on message stack
3841              OKC_API.SET_MESSAGE(p_app_name     => okc_version_pvt.G_APP_NAME,
3842                                  p_msg_name     => okc_version_pvt.G_UNEXPECTED_ERROR,
3843                                  p_token1       => okc_version_pvt.G_SQLCODE_TOKEN,
3844                                  p_token1_value => sqlcode,
3845                                  p_token2       => okc_version_pvt.G_SQLERRM_TOKEN,
3846                                  p_token2_value => sqlerrm);
3847 
3848        -- notify  UNEXPECTED error
3849              l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3850              return l_return_status;
3851 END create_version;
3852 
3853 --------------------------------------------------------------------
3854 --Restore version
3855 --------------------------------------------------------------------
3856 FUNCTION restore_version(
3857     p_chr_id IN NUMBER,
3858     p_major_version IN NUMBER) RETURN VARCHAR2 IS
3859 
3860   l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS;
3861 
3862 BEGIN
3863 INSERT INTO OKL_PARTY_PAYMENT_DTLS
3864   (
3865 ID
3866 ,OBJECT_VERSION_NUMBER
3867 ,CPL_ID
3868 ,VENDOR_ID
3869 ,PAY_SITE_ID
3870 ,PAYMENT_TERM_ID
3871 ,PAYMENT_METHOD_CODE
3872 ,PAY_GROUP_CODE
3873 ,PAYMENT_HDR_ID
3874 ,PAYMENT_START_DATE
3875 ,PAYMENT_FREQUENCY
3876 ,REMIT_DAYS
3877 ,DISBURSEMENT_BASIS
3878 ,DISBURSEMENT_FIXED_AMOUNT
3879 ,DISBURSEMENT_PERCENT
3880 ,PROCESSING_FEE_BASIS
3881 ,PROCESSING_FEE_FIXED_AMOUNT
3882 ,PROCESSING_FEE_PERCENT
3883 --,INCLUDE_IN_YIELD_FLAG
3884 --,PROCESSING_FEE_FORMULA
3885 ,PAYMENT_BASIS
3886 ,ATTRIBUTE_CATEGORY
3887 ,ATTRIBUTE1
3888 ,ATTRIBUTE2
3889 ,ATTRIBUTE3
3890 ,ATTRIBUTE4
3891 ,ATTRIBUTE5
3892 ,ATTRIBUTE6
3893 ,ATTRIBUTE7
3894 ,ATTRIBUTE8
3895 ,ATTRIBUTE9
3896 ,ATTRIBUTE10
3897 ,ATTRIBUTE11
3898 ,ATTRIBUTE12
3899 ,ATTRIBUTE13
3900 ,ATTRIBUTE14
3901 ,ATTRIBUTE15
3902 ,CREATED_BY
3903 ,CREATION_DATE
3904 ,LAST_UPDATED_BY
3905 ,LAST_UPDATE_DATE
3906 ,LAST_UPDATE_LOGIN
3907 ,ORIG_CONTRACT_LINE_ID
3908 )
3909   SELECT
3910 ID
3911 ,OBJECT_VERSION_NUMBER
3912 ,CPL_ID
3913 ,VENDOR_ID
3914 ,PAY_SITE_ID
3915 ,PAYMENT_TERM_ID
3916 ,PAYMENT_METHOD_CODE
3917 ,PAY_GROUP_CODE
3918 ,PAYMENT_HDR_ID
3919 ,PAYMENT_START_DATE
3920 ,PAYMENT_FREQUENCY
3921 ,REMIT_DAYS
3922 ,DISBURSEMENT_BASIS
3923 ,DISBURSEMENT_FIXED_AMOUNT
3924 ,DISBURSEMENT_PERCENT
3925 ,PROCESSING_FEE_BASIS
3926 ,PROCESSING_FEE_FIXED_AMOUNT
3927 ,PROCESSING_FEE_PERCENT
3928 --,INCLUDE_IN_YIELD_FLAG
3929 --,PROCESSING_FEE_FORMULA
3930 ,PAYMENT_BASIS
3931 ,ATTRIBUTE_CATEGORY
3932 ,ATTRIBUTE1
3933 ,ATTRIBUTE2
3934 ,ATTRIBUTE3
3935 ,ATTRIBUTE4
3936 ,ATTRIBUTE5
3937 ,ATTRIBUTE6
3938 ,ATTRIBUTE7
3939 ,ATTRIBUTE8
3940 ,ATTRIBUTE9
3941 ,ATTRIBUTE10
3942 ,ATTRIBUTE11
3943 ,ATTRIBUTE12
3944 ,ATTRIBUTE13
3945 ,ATTRIBUTE14
3946 ,ATTRIBUTE15
3947 ,CREATED_BY
3948 ,CREATION_DATE
3949 ,LAST_UPDATED_BY
3950 ,LAST_UPDATE_DATE
3951 ,LAST_UPDATE_LOGIN
3952 ,ORIG_CONTRACT_LINE_ID
3953 
3954   FROM OKL_PARTY_PYMT_DTLS_H
3955   WHERE cpl_id in (select id from okc_k_party_roles_b where dnz_chr_id = p_chr_id) and major_version = p_major_version;
3956 
3957 
3958   RETURN l_return_status;
3959   EXCEPTION
3960        -- other appropriate handlers
3961     WHEN OTHERS THEN
3962        -- store SQL error message on message stack
3963              OKC_API.SET_MESSAGE(p_app_name     => okc_version_pvt.G_APP_NAME,
3964                                  p_msg_name     => okc_version_pvt.G_UNEXPECTED_ERROR,
3965                                  p_token1       => okc_version_pvt.G_SQLCODE_TOKEN,
3966                                  p_token1_value => sqlcode,
3967                                  p_token2       => okc_version_pvt.G_SQLERRM_TOKEN,
3968                                  p_token2_value => sqlerrm);
3969 
3970        -- notify  UNEXPECTED error
3971              l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3972              return l_return_status;
3973 END restore_version;
3974 
3975 END OKL_PYD_PVT;