DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_PYD_PVT

Source


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