[Home] [Help]
PACKAGE BODY: APPS.OKL_SETUPFUNCTIONS_PVT
Source
1 PACKAGE BODY OKL_SETUPFUNCTIONS_PVT AS
2 /* $Header: OKLRSDFB.pls 115.12 2003/07/23 19:05:22 sgorantl noship $ */
3 -- Start of wraper code generated automatically by Debug code generator
4 L_MODULE VARCHAR2(40) := 'LEASE.SETUP.FUNCTIONS';
5 L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 L_LEVEL_PROCEDURE NUMBER;
7 IS_DEBUG_PROCEDURE_ON BOOLEAN;
8 -- End of wraper code generated automatically by Debug code generator
9
10 -- Not required as new version will not be creatd while updating the function
11 /*
12 ---------------------------------------------------------------------------
13 -- PROCEDURE get_version to calculate the new version number for the
14 -- function to be created
15 ---------------------------------------------------------------------------
16 PROCEDURE get_version(p_dsfv_rec IN dsfv_rec_type,
17 x_return_status OUT NOCOPY VARCHAR2,
18 x_new_version OUT NOCOPY VARCHAR2) IS
19 CURSOR okl_dsf_laterversionsexist_csr (p_name IN Okl_Data_Src_Fnctns_V.NAME%TYPE,
20 p_date IN Okl_Data_Src_Fnctns_V.END_DATE%TYPE
21 ) IS
22 SELECT '1'
23 FROM Okl_Data_Src_Fnctns_V
24 WHERE name = p_name
25 AND NVL(end_date,OKL_API.G_MISS_DATE) > p_date;
26
27 l_check VARCHAR2(1) := '?';
28 l_row_not_found BOOLEAN := FALSE;
29 BEGIN
30 IF p_dsfv_rec.version = OKL_API.G_MISS_CHAR THEN
31 x_new_version := G_INIT_VERSION;
32 ELSE
33 -- Check for future versions of the same formula
34 OPEN okl_dsf_laterversionsexist_csr (p_dsfv_rec.name,
35 p_dsfv_rec.end_date);
36 FETCH okl_dsf_laterversionsexist_csr INTO l_check;
37 l_row_not_found := okl_dsf_laterversionsexist_csr%NOTFOUND;
38 CLOSE okl_dsf_laterversionsexist_csr;
39
40 IF l_row_not_found = TRUE then
41 x_new_version := TO_CHAR(TO_NUMBER(p_dsfv_rec.version, G_VERSION_FORMAT)
42 + G_VERSION_MAJOR_INCREMENT, G_VERSION_FORMAT);
43 ELSE
44 x_new_version := TO_CHAR(TO_NUMBER(p_dsfv_rec.version, G_VERSION_FORMAT)
45 + G_VERSION_MINOR_INCREMENT, G_VERSION_FORMAT);
46 END IF;
47 END IF;
48
49 x_return_status := OKL_API.G_RET_STS_SUCCESS;
50 EXCEPTION
51 WHEN OTHERS THEN
52 -- store SQL error message on message stack
53 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
54 p_msg_name => G_UNEXPECTED_ERROR,
55 p_token1 => G_SQLCODE_TOKEN,
56 p_token1_value => sqlcode,
57 p_token2 => G_SQLERRM_TOKEN,
58 p_token2_value => sqlerrm);
59 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
60
61 IF (okl_dsf_laterversionsexist_csr%ISOPEN) THEN
62 CLOSE okl_dsf_laterversionsexist_csr;
63 END IF;
64
65 END get_version;
66
67 */
68
69 ---------------------------------------------------------------------------
70 -- PROCEDURE get_rec for: OKL_DATA_SRC_FNCTNS_V
71 -- Fix this once the view data structure is fixed
72 ---------------------------------------------------------------------------
73 PROCEDURE get_rec (
74 p_dsfv_rec IN dsfv_rec_type,
75 x_return_status OUT NOCOPY VARCHAR2,
76 x_no_data_found OUT NOCOPY BOOLEAN,
77 x_dsfv_rec OUT NOCOPY dsfv_rec_type
78 ) IS
79 CURSOR okl_dsfv_pk_csr (p_id IN NUMBER) IS
80 SELECT
81 ID,
82 OBJECT_VERSION_NUMBER,
83 SFWT_FLAG,
84 NVL(FNCTN_CODE, OKL_API.G_MISS_CHAR) FNCTN_CODE,
85 NAME,
86 NVL(DESCRIPTION,OKL_API.G_MISS_CHAR) DESCRIPTION,
87 VERSION,
88 START_DATE,
89 NVL(END_DATE,OKL_API.G_MISS_DATE) END_DATE,
90 SOURCE,
91 NVL(ATTRIBUTE_CATEGORY, OKL_API.G_MISS_CHAR) ATTRIBUTE_CATEGORY,
92 NVL(ATTRIBUTE1, OKL_API.G_MISS_CHAR) ATTRIBUTE1,
93 NVL(ATTRIBUTE2, OKL_API.G_MISS_CHAR) ATTRIBUTE2,
94 NVL(ATTRIBUTE3, OKL_API.G_MISS_CHAR) ATTRIBUTE3,
95 NVL(ATTRIBUTE4, OKL_API.G_MISS_CHAR) ATTRIBUTE4,
96 NVL(ATTRIBUTE5, OKL_API.G_MISS_CHAR) ATTRIBUTE5,
97 NVL(ATTRIBUTE6, OKL_API.G_MISS_CHAR) ATTRIBUTE6,
98 NVL(ATTRIBUTE7, OKL_API.G_MISS_CHAR) ATTRIBUTE7,
99 NVL(ATTRIBUTE8, OKL_API.G_MISS_CHAR) ATTRIBUTE8,
100 NVL(ATTRIBUTE9, OKL_API.G_MISS_CHAR) ATTRIBUTE9,
101 NVL(ATTRIBUTE10, OKL_API.G_MISS_CHAR) ATTRIBUTE10,
102 NVL(ATTRIBUTE11, OKL_API.G_MISS_CHAR) ATTRIBUTE11,
103 NVL(ATTRIBUTE12, OKL_API.G_MISS_CHAR) ATTRIBUTE12,
104 NVL(ATTRIBUTE13, OKL_API.G_MISS_CHAR) ATTRIBUTE13,
105 NVL(ATTRIBUTE14, OKL_API.G_MISS_CHAR) ATTRIBUTE14,
106 NVL(ATTRIBUTE15, OKL_API.G_MISS_CHAR) ATTRIBUTE15,
107 NVL(ORG_ID, OKL_API.G_MISS_NUM) ORG_ID,
108 CREATED_BY,
109 CREATION_DATE,
110 LAST_UPDATED_BY,
111 LAST_UPDATE_DATE,
112 NVL(LAST_UPDATE_LOGIN, OKL_API.G_MISS_NUM) LAST_UPDATE_LOGIN
113 FROM Okl_Data_Src_Fnctns_V
114 WHERE okl_Data_Src_Fnctns_v.id = p_id;
115 l_okl_dsfv_pk okl_dsfv_pk_csr%ROWTYPE;
116 l_dsfv_rec dsfv_rec_type;
117 BEGIN
118 x_return_status := OKL_API.G_RET_STS_SUCCESS;
119 x_no_data_found := TRUE;
120
121 -- Get current database values
122 OPEN okl_dsfv_pk_csr (p_dsfv_rec.id);
123 FETCH okl_dsfv_pk_csr INTO
124 l_dsfv_rec.ID,
125 l_dsfv_rec.OBJECT_VERSION_NUMBER,
126 l_dsfv_rec.SFWT_FLAG,
127 l_dsfv_rec.FNCTN_CODE,
128 l_dsfv_rec.NAME,
129 l_dsfv_rec.DESCRIPTION,
130 l_dsfv_rec.VERSION,
131 l_dsfv_rec.START_DATE,
132 l_dsfv_rec.END_DATE,
133 l_dsfv_rec.SOURCE,
134 l_dsfv_rec.ATTRIBUTE_CATEGORY,
135 l_dsfv_rec.ATTRIBUTE1,
136 l_dsfv_rec.ATTRIBUTE2,
137 l_dsfv_rec.ATTRIBUTE3,
138 l_dsfv_rec.ATTRIBUTE4,
139 l_dsfv_rec.ATTRIBUTE5,
140 l_dsfv_rec.ATTRIBUTE6,
141 l_dsfv_rec.ATTRIBUTE7,
142 l_dsfv_rec.ATTRIBUTE8,
143 l_dsfv_rec.ATTRIBUTE9,
144 l_dsfv_rec.ATTRIBUTE10,
145 l_dsfv_rec.ATTRIBUTE11,
146 l_dsfv_rec.ATTRIBUTE12,
147 l_dsfv_rec.ATTRIBUTE13,
148 l_dsfv_rec.ATTRIBUTE14,
149 l_dsfv_rec.ATTRIBUTE15,
150 l_dsfv_rec.ORG_ID,
151 l_dsfv_rec.CREATED_BY,
152 l_dsfv_rec.CREATION_DATE,
153 l_dsfv_rec.LAST_UPDATED_BY,
154 l_dsfv_rec.LAST_UPDATE_DATE,
155 l_dsfv_rec.LAST_UPDATE_LOGIN;
156 x_no_data_found := okl_dsfv_pk_csr%NOTFOUND;
157 CLOSE okl_dsfv_pk_csr;
158 x_dsfv_rec := l_dsfv_rec;
159 EXCEPTION
160 WHEN OTHERS THEN
161 -- store SQL error message on message stack
162 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
163 p_msg_name => G_UNEXPECTED_ERROR,
164 p_token1 => G_SQLCODE_TOKEN,
165 p_token1_value => sqlcode,
166 p_token2 => G_SQLERRM_TOKEN,
167 p_token2_value => sqlerrm);
168 -- notify UNEXPECTED error for calling API.
169 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
170
171 IF (okl_dsfv_pk_csr%ISOPEN) THEN
172 CLOSE okl_dsfv_pk_csr;
173 END IF;
174
175 END get_rec;
176
177 -- Not required as new version will not be creatd while updating the function
178 /*
179 ---------------------------------------------------------------------------
180 -- PROCEDURE check_overlaps for: OKL_DATA_SRC_FNCTNS_V
181 -- To avoid overlapping of dates with other versions of the same function
182 ---------------------------------------------------------------------------
183 PROCEDURE check_overlaps (
184 p_dsfv_rec IN dsfv_rec_type,
185 x_return_status OUT NOCOPY VARCHAR2,
186 x_valid OUT NOCOPY BOOLEAN
187 ) IS
188 CURSOR okl_dsf_overlaps_csr (p_id IN Okl_Data_Src_Fnctns_V.ID%TYPE,
189 p_name IN Okl_Data_Src_Fnctns_V.NAME%TYPE,
190 p_start_date IN Okl_Data_Src_Fnctns_V.START_DATE%TYPE,
191 p_end_date IN Okl_Data_Src_Fnctns_V.END_DATE%TYPE
192 ) IS
193 SELECT '1'
194 FROM Okl_Data_Src_Fnctns_V
195 WHERE NAME = p_name
196 AND ID <> p_id
197 AND (p_start_date BETWEEN START_DATE AND NVL(END_DATE, OKL_API.G_MISS_DATE) OR
198 p_end_date BETWEEN START_DATE AND NVL(END_DATE, OKL_API.G_MISS_DATE))
199 UNION ALL
200 SELECT '2'
201 FROM Okl_Data_Src_Fnctns_V
202 WHERE NAME = p_name
203 AND ID <> p_id
204 AND p_start_date <= START_DATE
205 AND p_end_date >= NVL(END_DATE, OKL_API.G_MISS_DATE);
206
207 l_check VARCHAR2(1) := '?';
208 l_row_not_found BOOLEAN := FALSE;
209 BEGIN
210 x_valid := TRUE;
211 x_return_status := OKL_API.G_RET_STS_SUCCESS;
212
213 -- Check for functions overlaps
214 OPEN okl_dsf_overlaps_csr (p_dsfv_rec.id,
215 p_dsfv_rec.name,
216 p_dsfv_rec.start_date,
217 p_dsfv_rec.end_date);
218 FETCH okl_dsf_overlaps_csr INTO l_check;
219 l_row_not_found := okl_dsf_overlaps_csr%NOTFOUND;
220 CLOSE okl_dsf_overlaps_csr;
221
222 IF l_row_not_found = FALSE then
223 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
224 p_msg_name => G_DSF_VERSION_OVERLAPS);
225 x_valid := FALSE;
226 x_return_status := OKL_API.G_RET_STS_ERROR;
227 END IF;
228
229 EXCEPTION
230 WHEN OTHERS THEN
231 -- store SQL error message on message stack
232 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
233 p_msg_name => G_UNEXPECTED_ERROR,
234 p_token1 => G_SQLCODE_TOKEN,
235 p_token1_value => sqlcode,
236 p_token2 => G_SQLERRM_TOKEN,
237 p_token2_value => sqlerrm);
238 x_valid := FALSE;
239 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
240
241 IF (okl_dsf_overlaps_csr%ISOPEN) THEN
242 CLOSE okl_dsf_overlaps_csr;
243 END IF;
244
245
246 END check_overlaps;
247
248 */
249
250 ---------------------------------------------------------------------------
251 -- PROCEDURE reorganize_inputs
252 -- This procedure is to reset the attributes in the input structure based
253 -- on the data from database
254 ---------------------------------------------------------------------------
255 PROCEDURE reorganize_inputs (
256 p_upd_dsfv_rec IN OUT NOCOPY dsfv_rec_type,
257 p_db_dsfv_rec IN dsfv_rec_type
258 ) IS
259 l_upd_dsfv_rec dsfv_rec_type;
260 l_db_dsfv_rec dsfv_rec_type;
261 BEGIN
262 /* create a temporary record with all relevant details from db and upd records */
263 l_upd_dsfv_rec := p_upd_dsfv_rec;
264 l_db_dsfv_rec := p_db_dsfv_rec;
265
266 IF l_upd_dsfv_rec.description = l_db_dsfv_rec.description THEN
267 l_upd_dsfv_rec.description := OKL_API.G_MISS_CHAR;
268 END IF;
269
270 IF to_date(to_char(l_upd_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') = to_date(to_char(l_db_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') THEN
271 l_upd_dsfv_rec.start_date := OKL_API.G_MISS_DATE;
272 END IF;
273
274 IF to_date(to_char(l_upd_dsfv_rec.end_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') = to_date(to_char(l_db_dsfv_rec.end_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') THEN
275 l_upd_dsfv_rec.end_date := OKL_API.G_MISS_DATE;
276 END IF;
277
278 IF l_upd_dsfv_rec.fnctn_code = l_db_dsfv_rec.fnctn_code THEN
279 l_upd_dsfv_rec.fnctn_code := OKL_API.G_MISS_CHAR;
280 END IF;
281
282 IF l_upd_dsfv_rec.source = l_db_dsfv_rec.source THEN
283 l_upd_dsfv_rec.source := OKL_API.G_MISS_CHAR;
284 END IF;
285
286 IF l_upd_dsfv_rec.attribute_category = l_db_dsfv_rec.attribute_category THEN
287 l_upd_dsfv_rec.attribute_category := OKL_API.G_MISS_CHAR;
288 END IF;
289
290 IF l_upd_dsfv_rec.attribute1 = l_db_dsfv_rec.attribute1 THEN
291 l_upd_dsfv_rec.attribute1 := OKL_API.G_MISS_CHAR;
292 END IF;
293
294 IF l_upd_dsfv_rec.attribute2 = l_db_dsfv_rec.attribute2 THEN
295 l_upd_dsfv_rec.attribute2 := OKL_API.G_MISS_CHAR;
296 END IF;
297
298 IF l_upd_dsfv_rec.attribute3 = l_db_dsfv_rec.attribute3 THEN
299 l_upd_dsfv_rec.attribute3 := OKL_API.G_MISS_CHAR;
300 END IF;
301
302 IF l_upd_dsfv_rec.attribute4 = l_db_dsfv_rec.attribute4 THEN
303 l_upd_dsfv_rec.attribute4 := OKL_API.G_MISS_CHAR;
304 END IF;
305
306 IF l_upd_dsfv_rec.attribute5 = l_db_dsfv_rec.attribute5 THEN
307 l_upd_dsfv_rec.attribute5 := OKL_API.G_MISS_CHAR;
308 END IF;
309
310 IF l_upd_dsfv_rec.attribute6 = l_db_dsfv_rec.attribute6 THEN
311 l_upd_dsfv_rec.attribute6 := OKL_API.G_MISS_CHAR;
312 END IF;
313
314 IF l_upd_dsfv_rec.attribute7 = l_db_dsfv_rec.attribute7 THEN
315 l_upd_dsfv_rec.attribute7 := OKL_API.G_MISS_CHAR;
316 END IF;
317
318 IF l_upd_dsfv_rec.attribute8 = l_db_dsfv_rec.attribute8 THEN
319 l_upd_dsfv_rec.attribute8 := OKL_API.G_MISS_CHAR;
320 END IF;
321
322 IF l_upd_dsfv_rec.attribute9 = l_db_dsfv_rec.attribute9 THEN
323 l_upd_dsfv_rec.attribute9 := OKL_API.G_MISS_CHAR;
324 END IF;
325
326 IF l_upd_dsfv_rec.attribute10 = l_db_dsfv_rec.attribute10 THEN
327 l_upd_dsfv_rec.attribute10 := OKL_API.G_MISS_CHAR;
328 END IF;
329
330 IF l_upd_dsfv_rec.attribute11 = l_db_dsfv_rec.attribute11 THEN
331 l_upd_dsfv_rec.attribute11 := OKL_API.G_MISS_CHAR;
332 END IF;
333
334 IF l_upd_dsfv_rec.attribute12 = l_db_dsfv_rec.attribute12 THEN
335 l_upd_dsfv_rec.attribute12 := OKL_API.G_MISS_CHAR;
336 END IF;
337
338 IF l_upd_dsfv_rec.attribute13 = l_db_dsfv_rec.attribute13 THEN
339 l_upd_dsfv_rec.attribute13 := OKL_API.G_MISS_CHAR;
340 END IF;
341
342 IF l_upd_dsfv_rec.attribute14 = l_db_dsfv_rec.attribute14 THEN
343 l_upd_dsfv_rec.attribute14 := OKL_API.G_MISS_CHAR;
344 END IF;
345
346 IF l_upd_dsfv_rec.attribute15 = l_db_dsfv_rec.attribute15 THEN
347 l_upd_dsfv_rec.attribute15 := OKL_API.G_MISS_CHAR;
348 END IF;
349
350 IF l_upd_dsfv_rec.org_id = l_db_dsfv_rec.org_id THEN
351 l_upd_dsfv_rec.org_id := OKL_API.G_MISS_NUM;
352 END IF;
353
354 p_upd_dsfv_rec := l_upd_dsfv_rec;
355
356 END reorganize_inputs;
357
358 ---------------------------------------------------------------------------
359 -- FUNCTION defaults_to_actuals
360 -- This function creates an output record with changed information from the
361 -- input structure and unchanged details from the database
362 ---------------------------------------------------------------------------
363 FUNCTION defaults_to_actuals (
364 p_upd_dsfv_rec IN dsfv_rec_type,
365 p_db_dsfv_rec IN dsfv_rec_type
366 ) RETURN dsfv_rec_type IS
367 l_dsfv_rec dsfv_rec_type;
368 BEGIN
369 /* create a temporary record with all relevant details from db and upd records */
370 l_dsfv_rec := p_db_dsfv_rec;
371
372 IF p_upd_dsfv_rec.description <> OKL_API.G_MISS_CHAR THEN
373 l_dsfv_rec.description := p_upd_dsfv_rec.description;
374 END IF;
375
376 IF p_upd_dsfv_rec.start_date <> OKL_API.G_MISS_DATE THEN
377 l_dsfv_rec.start_date := p_upd_dsfv_rec.start_date;
378 END IF;
379
380 IF p_upd_dsfv_rec.end_date <> OKL_API.G_MISS_DATE THEN
381 l_dsfv_rec.end_date := p_upd_dsfv_rec.end_date;
382 END IF;
383
384 IF p_upd_dsfv_rec.fnctn_code <> OKL_API.G_MISS_CHAR THEN
385 l_dsfv_rec.fnctn_code := p_upd_dsfv_rec.fnctn_code;
386 END IF;
387
388 IF p_upd_dsfv_rec.source <> OKL_API.G_MISS_CHAR THEN
389 l_dsfv_rec.source := p_upd_dsfv_rec.source;
390 END IF;
391
392 IF p_upd_dsfv_rec.attribute_category <> OKL_API.G_MISS_CHAR THEN
393 l_dsfv_rec.attribute_category := p_upd_dsfv_rec.attribute_category;
394 END IF;
395
396 IF p_upd_dsfv_rec.attribute1 <> OKL_API.G_MISS_CHAR THEN
397 l_dsfv_rec.attribute1 := p_upd_dsfv_rec.attribute1;
398 END IF;
399
400 IF p_upd_dsfv_rec.attribute2 <> OKL_API.G_MISS_CHAR THEN
401 l_dsfv_rec.attribute2 := p_upd_dsfv_rec.attribute2;
402 END IF;
403
404 IF p_upd_dsfv_rec.attribute3 <> OKL_API.G_MISS_CHAR THEN
405 l_dsfv_rec.attribute3 := p_upd_dsfv_rec.attribute3;
406 END IF;
407
408 IF p_upd_dsfv_rec.attribute4 <> OKL_API.G_MISS_CHAR THEN
409 l_dsfv_rec.attribute4 := p_upd_dsfv_rec.attribute4;
410 END IF;
411
412 IF p_upd_dsfv_rec.attribute5 <> OKL_API.G_MISS_CHAR THEN
413 l_dsfv_rec.attribute5 := p_upd_dsfv_rec.attribute5;
414 END IF;
415
416 IF p_upd_dsfv_rec.attribute6 <> OKL_API.G_MISS_CHAR THEN
417 l_dsfv_rec.attribute6 := p_upd_dsfv_rec.attribute6;
418 END IF;
419
420 IF p_upd_dsfv_rec.attribute7 <> OKL_API.G_MISS_CHAR THEN
421 l_dsfv_rec.attribute7 := p_upd_dsfv_rec.attribute7;
422 END IF;
423
424 IF p_upd_dsfv_rec.attribute8 <> OKL_API.G_MISS_CHAR THEN
425 l_dsfv_rec.attribute8 := p_upd_dsfv_rec.attribute8;
426 END IF;
427
428 IF p_upd_dsfv_rec.attribute9 <> OKL_API.G_MISS_CHAR THEN
429 l_dsfv_rec.attribute9 := p_upd_dsfv_rec.attribute9;
430 END IF;
431
432 IF p_upd_dsfv_rec.attribute10 <> OKL_API.G_MISS_CHAR THEN
433 l_dsfv_rec.attribute10 := p_upd_dsfv_rec.attribute10;
434 END IF;
435
436 IF p_upd_dsfv_rec.attribute11 <> OKL_API.G_MISS_CHAR THEN
437 l_dsfv_rec.attribute11 := p_upd_dsfv_rec.attribute11;
438 END IF;
439
440 IF p_upd_dsfv_rec.attribute12 <> OKL_API.G_MISS_CHAR THEN
441 l_dsfv_rec.attribute12 := p_upd_dsfv_rec.attribute12;
442 END IF;
443
444 IF p_upd_dsfv_rec.attribute13 <> OKL_API.G_MISS_CHAR THEN
445 l_dsfv_rec.attribute13 := p_upd_dsfv_rec.attribute13;
446 END IF;
447
448 IF p_upd_dsfv_rec.attribute14 <> OKL_API.G_MISS_CHAR THEN
449 l_dsfv_rec.attribute14 := p_upd_dsfv_rec.attribute14;
450 END IF;
451
452 IF p_upd_dsfv_rec.attribute15 <> OKL_API.G_MISS_CHAR THEN
453 l_dsfv_rec.attribute15 := p_upd_dsfv_rec.attribute15;
454 END IF;
455
456 IF p_upd_dsfv_rec.org_id <> OKL_API.G_MISS_NUM THEN
457 l_dsfv_rec.org_id := p_upd_dsfv_rec.org_id;
458 END IF;
459
460 RETURN l_dsfv_rec;
461 END defaults_to_actuals;
462
463 ---------------------------------------------------------------------------
464 -- PROCEDURE check_dsf_opd_dates for: OKL_DATA_SRC_FNCTNS_V
465 -- To fetch the operands that are attached to the existing version of the
466 -- function and verify the dates for the both
467 ---------------------------------------------------------------------------
468 PROCEDURE check_dsf_opd_dates (p_upd_dsfv_rec IN dsfv_rec_type,
469 p_dsfv_rec IN dsfv_rec_type,
470 x_return_status OUT NOCOPY VARCHAR2
471 ) IS
472
473 CURSOR okl_dsf_linkedopds_csr (p_dsf_id IN Okl_Operands_V.dsf_id%TYPE,
474 p_start_date DATE, p_end_date DATE) IS
475 SELECT '1'
476 FROM Okl_Operands_B opd
477 WHERE opd.DSF_ID = p_dsf_id
478 AND ((opd.start_date < p_start_date) OR
479 (NVL(opd.end_date, TO_DATE('31/12/9999', 'DD/MM/YYYY')) > p_end_date )) ;
480
481
482 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
483 l_min_start_date DATE := NULL;
484 l_max_end_date DATE := OKL_API.G_MISS_DATE;
485 l_check VARCHAR2(1);
486 l_not_found BOOLEAN;
487
488 BEGIN
489 x_return_status := OKL_API.G_RET_STS_SUCCESS;
490
491 OPEN okl_dsf_linkedopds_csr (p_upd_dsfv_rec.id, p_upd_dsfv_rec.start_date, p_upd_dsfv_rec.end_date);
492 FETCH okl_dsf_linkedopds_csr INTO l_check;
493 l_not_found := okl_dsf_linkedopds_csr%NOTFOUND;
494 CLOSE okl_dsf_linkedopds_csr;
495
496 IF NOT l_not_found THEN
497 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
498 p_msg_name => G_DATES_MISMATCH,
499 p_token1 => G_PARENT_TABLE_TOKEN,
500 p_token1_value => 'Okl_Data_Src_Fnctns_V',
501 p_token2 => G_CHILD_TABLE_TOKEN,
502 p_token2_value => 'Okl_Operands_V');
503 RAISE G_EXCEPTION_HALT_PROCESSING;
504 END IF;
505
506 EXCEPTION
507 WHEN G_EXCEPTION_HALT_PROCESSING THEN
508 -- no processing necessary; validation can continue
509 -- with the next column
510 x_return_status := OKL_API.G_RET_STS_ERROR;
511
512 IF (okl_dsf_linkedopds_csr%ISOPEN) THEN
513 CLOSE okl_dsf_linkedopds_csr;
514 END IF;
515
516 WHEN OTHERS THEN
517 -- store SQL error message on message stack
518 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
519 p_msg_name => G_UNEXPECTED_ERROR,
520 p_token1 => G_SQLCODE_TOKEN,
521 p_token1_value => sqlcode,
522 p_token2 => G_SQLERRM_TOKEN,
523 p_token2_value => sqlerrm);
524 -- notify UNEXPECTED error for calling API.
525 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
526
527 IF (okl_dsf_linkedopds_csr%ISOPEN) THEN
528 CLOSE okl_dsf_linkedopds_csr;
529 END IF;
530
531 END check_dsf_opd_dates;
532
533
534 -- Not required as new version will not be creatd while updating the function
535 /*
536 ---------------------------------------------------------------------------
537 -- PROCEDURE check_updates
538 -- To verify whether the requested changes from the screen are valid or not
539 ---------------------------------------------------------------------------
540 PROCEDURE check_updates (
541 p_upd_dsfv_rec IN dsfv_rec_type,
542 p_db_dsfv_rec IN dsfv_rec_type,
543 p_dsfv_rec IN dsfv_rec_type,
544 x_return_status OUT NOCOPY VARCHAR2,
545 x_msg_data OUT NOCOPY VARCHAR2
546 ) IS
547 l_dsfv_rec dsfv_rec_type;
548 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
549 l_valid BOOLEAN;
550 l_attrib_tbl okl_accounting_util.overlap_attrib_tbl_type;
551 BEGIN
552 x_return_status := OKL_API.G_RET_STS_SUCCESS;
553 l_dsfv_rec := p_dsfv_rec;
554
555 IF p_upd_dsfv_rec.start_date <> OKL_API.G_MISS_DATE OR
556 p_upd_dsfv_rec.end_date <> OKL_API.G_MISS_DATE THEN
557
558
559 -- call check_overlaps
560 l_attrib_tbl(1).attribute := 'NAME';
561 l_attrib_tbl(1).attrib_type := okl_accounting_util.G_VARCHAR2;
562 l_attrib_tbl(1).value := l_dsfv_rec.name;
563
564 okl_accounting_util.check_overlaps (p_id => l_dsfv_rec.id,
565 p_attrib_tbl => l_attrib_tbl,
566 p_start_date_attribute_name => 'START_DATE',
567 p_start_date => l_dsfv_rec.start_date,
568 p_end_date_attribute_name => 'END_DATE',
569 p_end_date => l_dsfv_rec.end_date,
570 p_view => 'Okl_Data_Src_Fnctns_V',
571 x_return_status => l_return_status,
572 x_valid => l_valid);
573
574
575 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
576 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
577 RAISE G_EXCEPTION_HALT_PROCESSING;
578 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) OR
579 (l_return_status = OKL_API.G_RET_STS_SUCCESS AND
580 l_valid <> TRUE) THEN
581 x_return_status := OKL_API.G_RET_STS_ERROR;
582 RAISE G_EXCEPTION_HALT_PROCESSING;
583 END IF;
584
585 END IF;
586
587 -- call check_dsf_fma_dates
588 check_dsf_opd_dates (p_upd_dsfv_rec => p_upd_dsfv_rec,
589 p_dsfv_rec => l_dsfv_rec,
590 x_return_status => l_return_status);
591 IF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
592 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
593 RAISE G_EXCEPTION_HALT_PROCESSING;
594 ELSIF l_return_status = OKL_API.G_RET_STS_ERROR THEN
595 x_return_status := OKL_API.G_RET_STS_ERROR;
596 RAISE G_EXCEPTION_HALT_PROCESSING;
597 END IF;
598
599 EXCEPTION
600 WHEN G_EXCEPTION_HALT_PROCESSING THEN
601 -- no processing necessary; validation can continue
602 -- with the next column
603 NULL;
604
605 WHEN OTHERS THEN
606 -- store SQL error message on message stack for caller
607 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME,
608 p_msg_name => G_UNEXPECTED_ERROR,
609 p_token1 => G_SQLCODE_TOKEN,
610 p_token1_value => sqlcode,
611 p_token2 => G_SQLERRM_TOKEN,
612 p_token2_value => sqlerrm );
613 -- notify caller of an UNEXPECTED error
614 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
615
616 END check_updates;
617 */
618
619 -- Not required as new version will not be creatd while updating the function
620 /*
621
622 ---------------------------------------------------------------------------
623 -- PROCEDURE determine_action for: OKL_DATA_SRC_FNCTNS_V
624 -- This function helps in determining the various checks to be performed
625 -- for the new/updated record and also helps in determining whether a new
626 -- version is required or not
627 ---------------------------------------------------------------------------
628 FUNCTION determine_action (
629 p_upd_dsfv_rec IN dsfv_rec_type,
630 p_db_dsfv_rec IN dsfv_rec_type,
631 p_date IN DATE
632 ) RETURN VARCHAR2 IS
633 l_action VARCHAR2(1);
634 l_sysdate DATE := trunc(SYSDATE);
635 BEGIN
636 -- Scenario 1: Only description and/or descriptive flexfield
637 -- changes
638 IF p_upd_dsfv_rec.start_date = OKL_API.G_MISS_DATE AND
639 p_upd_dsfv_rec.end_date = OKL_API.G_MISS_DATE AND
640 p_upd_dsfv_rec.fnctn_code = OKL_API.G_MISS_CHAR AND
641 p_upd_dsfv_rec.source = OKL_API.G_MISS_CHAR THEN
642 l_action := '1';
643 -- Scenario 2: only changing description/descriptive flexfield changes
644 -- and end date for all records or changing anything for a future record other
645 -- than start date or modified start date is less than existing start date
646
647 ELSIF (p_upd_dsfv_rec.start_date = OKL_API.G_MISS_DATE AND
648 (p_upd_dsfv_rec.end_date <> OKL_API.G_MISS_DATE OR
649 p_upd_dsfv_rec.end_date IS NULL) AND
650 p_upd_dsfv_rec.fnctn_code = OKL_API.G_MISS_CHAR AND
651 p_upd_dsfv_rec.source = OKL_API.G_MISS_CHAR) OR
652 (p_upd_dsfv_rec.start_date = OKL_API.G_MISS_DATE AND
653 p_db_dsfv_rec.start_date >= p_date AND
654 (p_upd_dsfv_rec.fnctn_code <> OKL_API.G_MISS_CHAR OR
655 p_upd_dsfv_rec.source <> OKL_API.G_MISS_CHAR)) OR
656 (p_upd_dsfv_rec.start_date <> OKL_API.G_MISS_DATE AND
657 p_db_dsfv_rec.start_date > p_date AND
658 p_upd_dsfv_rec.start_date < p_db_dsfv_rec.start_date) THEN
659 l_action := '2';
660 ELSE
661 l_action := '3';
662 END IF;
663 RETURN(l_action);
664 END determine_action;
665 */
666
667 ---------------------------------------------------------------------------
668 -- PROCEDURE insert_operands for: OKL_DATA_SRC_FNCTNS_V
669 ---------------------------------------------------------------------------
670 PROCEDURE insert_functions(p_api_version IN NUMBER,
671 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
672 x_return_status OUT NOCOPY VARCHAR2,
673 x_msg_count OUT NOCOPY NUMBER,
674 x_msg_data OUT NOCOPY VARCHAR2,
675 p_dsfv_rec IN dsfv_rec_type,
676 x_dsfv_rec OUT NOCOPY dsfv_rec_type
677 ) IS
678 l_api_version CONSTANT NUMBER := 1;
679 l_api_name CONSTANT VARCHAR2(30) := 'insert_functions';
680 l_valid BOOLEAN := TRUE;
681 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
682 l_dsfv_rec dsfv_rec_type;
683 l_sysdate DATE := to_date(to_char(SYSDATE, 'DD/MM/YYYY'), 'DD/MM/YYYY');
684 BEGIN
685 x_return_status := OKL_API.G_RET_STS_SUCCESS;
686 l_dsfv_rec := p_dsfv_rec;
687
688 l_return_status := OKL_API.START_ACTIVITY(p_api_name => l_api_name,
689 p_pkg_name => G_PKG_NAME,
690 p_init_msg_list => p_init_msg_list,
691 l_api_version => l_api_version,
692 p_api_version => p_api_version,
693 p_api_type => '_PVT',
694 x_return_status => l_return_status);
695 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
696 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
697 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
698 RAISE OKL_API.G_EXCEPTION_ERROR;
699 END IF;
700
701 /* check for the records with start and end dates less than sysdate */
702
703 /* IF to_date(l_dsfv_rec.start_date, 'DD/MM/YYYY') < l_sysdate OR
704 to_date(l_dsfv_rec.end_date, 'DD/MM/YYYY') < l_sysdate THEN
705 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
706 p_msg_name => G_PAST_RECORDS);
707 RAISE OKL_API.G_EXCEPTION_ERROR;
708 END IF;
709 */
710 IF to_date(to_char(l_dsfv_rec.end_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') < l_sysdate THEN
711 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
712 p_msg_name => G_PAST_RECORDS);
713 RAISE OKL_API.G_EXCEPTION_ERROR;
714 END IF;
715
716 /* public api to insert functions */
717 -- Start of wraper code generated automatically by Debug code generator for okl_data_src_fnctns_pub.insert_data_src_fnctns
718 IF(L_DEBUG_ENABLED='Y') THEN
719 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
720 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
721 END IF;
722 IF(IS_DEBUG_PROCEDURE_ON) THEN
723 BEGIN
724 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRSDFB.pls call okl_data_src_fnctns_pub.insert_data_src_fnctns ');
725 END;
726 END IF;
727 okl_data_src_fnctns_pub.insert_data_src_fnctns(p_api_version => p_api_version,
728 p_init_msg_list => p_init_msg_list,
729 x_return_status => l_return_status,
730 x_msg_count => x_msg_count,
731 x_msg_data => x_msg_data,
732 p_dsfv_rec => l_dsfv_rec,
733 x_dsfv_rec => x_dsfv_rec);
734 IF(IS_DEBUG_PROCEDURE_ON) THEN
735 BEGIN
736 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRSDFB.pls call okl_data_src_fnctns_pub.insert_data_src_fnctns ');
737 END;
738 END IF;
739 -- End of wraper code generated automatically by Debug code generator for okl_data_src_fnctns_pub.insert_data_src_fnctns
740
741 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
742 RAISE OKL_API.G_EXCEPTION_ERROR;
743 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
744 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
745 END IF;
746
747 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
748 x_msg_data => x_msg_data);
749 EXCEPTION
750 WHEN OKL_API.G_EXCEPTION_ERROR THEN
751 x_return_status := OKL_API.HANDLE_EXCEPTIONS(p_api_name => l_api_name,
752 p_pkg_name => G_PKG_NAME,
753 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
754 x_msg_count => x_msg_count,
755 x_msg_data => x_msg_data,
756 p_api_type => '_PVT');
757 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
758 x_return_status := OKL_API.HANDLE_EXCEPTIONS(p_api_name => l_api_name,
759 p_pkg_name => G_PKG_NAME,
760 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
761 x_msg_count => x_msg_count,
762 x_msg_data => x_msg_data,
763 p_api_type => '_PVT');
764 WHEN OTHERS THEN
765 x_return_status := OKL_API.HANDLE_EXCEPTIONS(p_api_name => l_api_name,
766 p_pkg_name => G_PKG_NAME,
767 p_exc_name => 'OTHERS',
768 x_msg_count => x_msg_count,
769 x_msg_data => x_msg_data,
770 p_api_type => '_PVT');
771
772 END insert_functions;
773
774 ---------------------------------------------------------------------------
775 -- PROCEDURE update_functions for: OKL_DATA_SRC_FNCTNS_V
776 ---------------------------------------------------------------------------
777 PROCEDURE update_functions(p_api_version IN NUMBER,
778 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
779 x_return_status OUT NOCOPY VARCHAR2,
780 x_msg_count OUT NOCOPY NUMBER,
781 x_msg_data OUT NOCOPY VARCHAR2,
782 p_dsfv_rec IN dsfv_rec_type,
783 x_dsfv_rec OUT NOCOPY dsfv_rec_type
784 ) IS
785 l_api_version CONSTANT NUMBER := 1;
786 l_api_name CONSTANT VARCHAR2(30) := 'update_functions';
787 l_no_data_found BOOLEAN := TRUE;
788 l_valid BOOLEAN := TRUE;
789 l_oldversion_enddate DATE := to_date(to_char(SYSDATE, 'DD/MM/YYYY'), 'DD/MM/YYYY');
790 l_sysdate DATE := to_date(to_char(SYSDATE, 'DD/MM/YYYY'), 'DD/MM/YYYY');
791 l_db_dsfv_rec dsfv_rec_type; /* database copy */
792 l_upd_dsfv_rec dsfv_rec_type; /* input copy */
793 l_dsfv_rec dsfv_rec_type; /* latest with the retained changes */
794 l_tmp_dsfv_rec dsfv_rec_type; /* for any other purposes */
795 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
796 l_action VARCHAR2(1);
797 l_new_version VARCHAR2(100);
798 l_attrib_tbl okl_accounting_util.overlap_attrib_tbl_type;
799 BEGIN
800 x_return_status := OKL_API.G_RET_STS_SUCCESS;
801 l_upd_dsfv_rec := p_dsfv_rec;
802
803 l_return_status := OKL_API.START_ACTIVITY(p_api_name => l_api_name,
804 p_pkg_name => G_PKG_NAME,
805 p_init_msg_list => p_init_msg_list,
806 l_api_version => l_api_version,
807 p_api_version => p_api_version,
808 p_api_type => '_PVT',
809 x_return_status => l_return_status);
810 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
811 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
812 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
813 RAISE OKL_API.G_EXCEPTION_ERROR;
814 END IF;
815
816 /* fetch old details from the database */
817 get_rec(p_dsfv_rec => l_upd_dsfv_rec,
818 x_return_status => l_return_status,
819 x_no_data_found => l_no_data_found,
820 x_dsfv_rec => l_db_dsfv_rec);
821 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS OR
822 l_no_data_found = TRUE THEN
823 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
824 END IF;
825
826 /* to reorganize the input accordingly */
827 reorganize_inputs(p_upd_dsfv_rec => l_upd_dsfv_rec,
828 p_db_dsfv_rec => l_db_dsfv_rec);
829
830 /* check for start date greater than sysdate */
831 /* IF to_date(l_upd_dsfv_rec.start_date, 'DD/MM/YYYY') <> to_date(OKL_API.G_MISS_DATE,'DD/MM/YYYY') AND
832 to_date(l_upd_dsfv_rec.start_date, 'DD/MM/YYYY') < l_sysdate THEN
833 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
834 p_msg_name => G_START_DATE);
835 RAISE OKL_API.G_EXCEPTION_ERROR;
836 END IF;
837 */
838
839 /* check for start date greater than sysdate */
840 IF to_date(to_char(l_upd_dsfv_rec.end_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') <> to_date(to_char(OKL_API.G_MISS_DATE, 'DD/MM/YYYY'),'DD/MM/YYYY') AND
841 to_date(to_char(l_upd_dsfv_rec.end_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') < l_sysdate THEN
842 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
843 p_msg_name => 'OKL_END_DATE');
844 RAISE OKL_API.G_EXCEPTION_ERROR;
845 END IF;
846
847 /*
848
849 -- check for start date greater than sysdate
850 IF to_date(to_char(l_upd_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') <> to_date(to_char(OKL_API.G_MISS_DATE, 'DD/MM/YYYY'),'DD/MM/YYYY') AND
851 to_date(to_char(l_db_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') <> to_date(to_char(l_upd_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') AND
852 to_date(to_char(l_db_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') < l_sysdate THEN
853 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
854 p_msg_name => G_PAST_RECORDS);
855 RAISE OKL_API.G_EXCEPTION_ERROR;
856 END IF;
857
858
859 -- check for the records with start and end dates less than sysdate
860 IF to_date(to_char(l_db_dsfv_rec.start_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') < l_sysdate AND
861 to_date(to_char(l_db_dsfv_rec.end_date, 'DD/MM/YYYY'), 'DD/MM/YYYY') < l_sysdate THEN
862 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
863 p_msg_name => G_PAST_RECORDS);
864 RAISE OKL_API.G_EXCEPTION_ERROR;
865 END IF;
866
867 */
868
869 -- Check if the linked operands are within the date range of function
870
871 check_dsf_opd_dates (p_upd_dsfv_rec => l_upd_dsfv_rec,
872 p_dsfv_rec => l_db_dsfv_rec,
873 x_return_status => l_return_status );
874
875 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
876 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
877 END IF;
878
879 /* public api to update functions */
880 -- Start of wraper code generated automatically by Debug code generator for okl_data_src_fnctns_pub.update_data_src_fnctns
881 IF(L_DEBUG_ENABLED='Y') THEN
882 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
883 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
884 END IF;
885 IF(IS_DEBUG_PROCEDURE_ON) THEN
886 BEGIN
887 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRSDFB.pls call okl_data_src_fnctns_pub.update_data_src_fnctns ');
888 END;
889 END IF;
890 okl_data_src_fnctns_pub.update_data_src_fnctns(p_api_version => p_api_version,
891 p_init_msg_list => p_init_msg_list,
892 x_return_status => l_return_status,
893 x_msg_count => x_msg_count,
894 x_msg_data => x_msg_data,
895 p_dsfv_rec => l_upd_dsfv_rec,
896 x_dsfv_rec => x_dsfv_rec);
897 IF(IS_DEBUG_PROCEDURE_ON) THEN
898 BEGIN
899 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRSDFB.pls call okl_data_src_fnctns_pub.update_data_src_fnctns ');
900 END;
901 END IF;
902 -- End of wraper code generated automatically by Debug code generator for okl_data_src_fnctns_pub.update_data_src_fnctns
903 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
904 RAISE OKL_API.G_EXCEPTION_ERROR;
905 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
906 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
907 END IF;
908
909
910
911 -- Not required as new version will not be creatd while updating the function
912 /*
913 -- determine how the processing to be done
914 l_action := determine_action(p_upd_dsfv_rec => l_upd_dsfv_rec,
915 p_db_dsfv_rec => l_db_dsfv_rec,
916 p_date => l_sysdate);
917
918 -- Scenario 1: only changing description and/or source and/or descriptive flexfields
919 IF l_action = '1' THEN
920 -- public api to update functions
921 okl_data_src_fnctns_pub.update_data_src_fnctns(p_api_version => p_api_version,
922 p_init_msg_list => p_init_msg_list,
923 x_return_status => l_return_status,
924 x_msg_count => x_msg_count,
925 x_msg_data => x_msg_data,
926 p_dsfv_rec => l_upd_dsfv_rec,
927 x_dsfv_rec => x_dsfv_rec);
928 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
929 RAISE OKL_API.G_EXCEPTION_ERROR;
930 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
931 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
932 END IF;
933
934 -- Scenario 2: only changing description/source/descriptive flexfield changes
935 and end date for all records or changing anything for a future record other
936 than start date or modified start date is less than existing start date
937 ELSIF l_action = '2' THEN
938 create a temporary record with all relevant details from db and upd records
939 l_dsfv_rec := defaults_to_actuals(p_upd_dsfv_rec => l_upd_dsfv_rec,
940 p_db_dsfv_rec => l_db_dsfv_rec);
941
942 check_updates(p_upd_dsfv_rec => l_upd_dsfv_rec,
943 p_db_dsfv_rec => l_db_dsfv_rec,
944 p_dsfv_rec => l_dsfv_rec,
945 x_return_status => l_return_status,
946 x_msg_data => x_msg_data);
947 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
948 RAISE OKL_API.G_EXCEPTION_ERROR;
949 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
950 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
951 END IF;
952
953 -- public api to update functions
954 okl_data_src_fnctns_pub.update_data_src_fnctns(p_api_version => p_api_version,
955 p_init_msg_list => p_init_msg_list,
956 x_return_status => l_return_status,
957 x_msg_count => x_msg_count,
958 x_msg_data => x_msg_data,
959 p_dsfv_rec => l_upd_dsfv_rec,
960 x_dsfv_rec => x_dsfv_rec);
961 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
962 RAISE OKL_API.G_EXCEPTION_ERROR;
963 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
964 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
965 END IF;
966
967 -- Scenario 3: changing anything else i.e., anything including start date + start date
968 always greater than system date for current records or anything + start date always
969 greater than existing start date for future records
970 ELSIF l_action = '3' THEN
971
972 -- for old version
973 IF l_upd_dsfv_rec.start_date <> OKL_API.G_MISS_DATE THEN
974 l_oldversion_enddate := l_upd_dsfv_rec.start_date - 1;
975 ELSE
976 l_oldversion_enddate := l_sysdate - 1;
977 END IF;
978
979 l_dsfv_rec := l_db_dsfv_rec;
980 l_dsfv_rec.end_date := l_oldversion_enddate;
981
982 call verify changes to update the database
983 IF l_oldversion_enddate > l_db_dsfv_rec.end_date THEN
984 check_updates(p_upd_dsfv_rec => l_upd_dsfv_rec,
985 p_db_dsfv_rec => l_db_dsfv_rec,
986 p_dsfv_rec => l_dsfv_rec,
987 x_return_status => l_return_status,
988 x_msg_data => x_msg_data);
989 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
990 RAISE OKL_API.G_EXCEPTION_ERROR;
991 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
992 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
993 END IF;
994 END IF;
995
996 -- public api to update functions
997 okl_data_src_fnctns_pub.update_data_src_fnctns(p_api_version => p_api_version,
998 p_init_msg_list => p_init_msg_list,
999 x_return_status => l_return_status,
1000 x_msg_count => x_msg_count,
1001 x_msg_data => x_msg_data,
1002 p_dsfv_rec => l_dsfv_rec,
1003 x_dsfv_rec => x_dsfv_rec);
1004 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
1005 RAISE OKL_API.G_EXCEPTION_ERROR;
1006 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
1007 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1008 END IF;
1009
1010 -- for new version
1011 -- create a temporary record with all relevant details from db and upd records
1012 l_dsfv_rec := defaults_to_actuals(p_upd_dsfv_rec => l_upd_dsfv_rec,
1013 p_db_dsfv_rec => l_db_dsfv_rec);
1014
1015 IF l_upd_dsfv_rec.start_date = OKL_API.G_MISS_DATE THEN
1016 l_dsfv_rec.start_date := l_sysdate;
1017 END IF;
1018
1019
1020 l_attrib_tbl(1).attribute := 'NAME';
1021 l_attrib_tbl(1).attrib_type := okl_accounting_util.G_VARCHAR2;
1022 l_attrib_tbl(1).value := l_dsfv_rec.name;
1023
1024 okl_accounting_util.get_version(p_attrib_tbl => l_attrib_tbl,
1025 p_cur_version => l_dsfv_rec.version,
1026 p_end_date_attribute_name => 'END_DATE',
1027 p_end_date => l_dsfv_rec.end_date,
1028 p_view => 'Okl_Data_Src_Fnctns_V',
1029 x_return_status => l_return_status,
1030 x_new_version => l_new_version);
1031
1032 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1033 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1034 ELSE
1035 l_dsfv_rec.version := l_new_version;
1036 END IF;
1037
1038 -- call verify changes to update the database
1039 l_dsfv_rec.id := OKL_API.G_MISS_NUM;
1040
1041 IF l_dsfv_rec.end_date > l_db_dsfv_rec.end_date THEN
1042 check_updates(p_upd_dsfv_rec => l_upd_dsfv_rec,
1043 p_db_dsfv_rec => l_db_dsfv_rec,
1044 p_dsfv_rec => l_dsfv_rec,
1045 x_return_status => l_return_status,
1046 x_msg_data => x_msg_data);
1047 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
1048 RAISE OKL_API.G_EXCEPTION_ERROR;
1049 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
1050 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1051 END IF;
1052 END IF;
1053
1054 -- public api to insert functions
1055 okl_data_src_fnctns_pub.insert_data_src_fnctns(p_api_version => p_api_version,
1056 p_init_msg_list => p_init_msg_list,
1057 x_return_status => l_return_status,
1058 x_msg_count => x_msg_count,
1059 x_msg_data => x_msg_data,
1060 p_dsfv_rec => l_dsfv_rec,
1061 x_dsfv_rec => x_dsfv_rec);
1062 IF l_return_status = OKL_API.G_RET_STS_ERROR THEN
1063 RAISE OKL_API.G_EXCEPTION_ERROR;
1064 ELSIF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
1065 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1066 END IF;
1067
1068 END IF;
1069
1070 */
1071
1072
1073 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
1074 x_msg_data => x_msg_data);
1075 EXCEPTION
1076 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1077 x_return_status := OKL_API.HANDLE_EXCEPTIONS(p_api_name => l_api_name,
1078 p_pkg_name => G_PKG_NAME,
1079 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1080 x_msg_count => x_msg_count,
1081 x_msg_data => x_msg_data,
1082 p_api_type => '_PVT');
1083 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1084 x_return_status := OKL_API.HANDLE_EXCEPTIONS(p_api_name => l_api_name,
1085 p_pkg_name => G_PKG_NAME,
1086 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1087 x_msg_count => x_msg_count,
1088 x_msg_data => x_msg_data,
1089 p_api_type => '_PVT');
1090 WHEN OTHERS THEN
1091 x_return_status := OKL_API.HANDLE_EXCEPTIONS(p_api_name => l_api_name,
1092 p_pkg_name => G_PKG_NAME,
1093 p_exc_name => 'OTHERS',
1094 x_msg_count => x_msg_count,
1095 x_msg_data => x_msg_data,
1096 p_api_type => '_PVT');
1097
1098 END update_functions;
1099
1100 END OKL_SETUPFUNCTIONS_PVT;