[Home] [Help]
PACKAGE BODY: APPS.OKL_DRV_PVT
Source
1 PACKAGE BODY OKL_DRV_PVT AS
2 /* $Header: OKLSDRVB.pls 120.4 2007/08/14 14:36:45 gkhuntet noship $ */
3 ---------------------------------------------------------------------------
4 -- PROCEDURE load_error_tbl
5 ---------------------------------------------------------------------------
6 PROCEDURE load_error_tbl (
7 px_error_rec IN OUT NOCOPY OKL_API.ERROR_REC_TYPE,
8 px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
9
10 j INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11 last_msg_idx INTEGER := FND_MSG_PUB.COUNT_MSG;
12 l_msg_idx INTEGER := FND_MSG_PUB.G_NEXT;
13 BEGIN
14 -- FND_MSG_PUB has a small error in it. If we call FND_MSG_PUB.COUNT_AND_GET before
15 -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
16 -- message stack gets set to 1. This makes sense until we call FND_MSG_PUB.GET which
17 -- automatically increments the index by 1, (making it 2), however, when the GET function
18 -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
19 -- message 2. To circumvent this problem, check the amount of messages and compensate.
20 -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
21 -- will only update the index variable when 1 and only 1 message is on the stack.
22 IF (last_msg_idx = 1) THEN
23 l_msg_idx := FND_MSG_PUB.G_FIRST;
24 END IF;
25 LOOP
26 fnd_msg_pub.get(
27 p_msg_index => l_msg_idx,
28 p_encoded => fnd_api.g_false,
29 p_data => px_error_rec.msg_data,
30 p_msg_index_out => px_error_rec.msg_count);
31 px_error_tbl(j) := px_error_rec;
32 j := j + 1;
33 EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
34 END LOOP;
35 END load_error_tbl;
36 ---------------------------------------------------------------------------
37 -- FUNCTION find_highest_exception
38 ---------------------------------------------------------------------------
39 -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
40 -- in a OKL_API.ERROR_TBL_TYPE, and returns it.
41 FUNCTION find_highest_exception(
42 p_error_tbl IN OKL_API.ERROR_TBL_TYPE
43 ) RETURN VARCHAR2 IS
44 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
45 i INTEGER := 1;
46 BEGIN
47 IF (p_error_tbl.COUNT > 0) THEN
48 i := p_error_tbl.FIRST;
49 LOOP
50 IF (p_error_tbl(i).error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
51 IF (l_return_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
52 l_return_status := p_error_tbl(i).error_type;
53 END IF;
54 END IF;
55 EXIT WHEN (i = p_error_tbl.LAST);
56 i := p_error_tbl.NEXT(i);
57 END LOOP;
58 END IF;
59 RETURN(l_return_status);
60 END find_highest_exception;
61 ---------------------------------------------------------------------------
62 -- FUNCTION get_seq_id
63 ---------------------------------------------------------------------------
64 FUNCTION get_seq_id RETURN NUMBER IS
65 l_pk_value NUMBER;
66 CURSOR c_pk_csr IS SELECT okl_disb_rule_vendor_sites_s.NEXTVAL FROM DUAL;
67 BEGIN
68 /* Fetch the pk value from the sequence */
69 OPEN c_pk_csr;
70 FETCH c_pk_csr INTO l_pk_value;
71 CLOSE c_pk_csr;
72 RETURN l_pk_value;
73 END get_seq_id;
74
75 ---------------------------------------------------------------------------
76 -- PROCEDURE qc
77 ---------------------------------------------------------------------------
78 PROCEDURE qc IS
79 BEGIN
80 null;
81 END qc;
82
83 ---------------------------------------------------------------------------
84 -- PROCEDURE change_version
85 ---------------------------------------------------------------------------
86 PROCEDURE change_version IS
87 BEGIN
88 null;
89 END change_version;
90
91 ---------------------------------------------------------------------------
92 -- PROCEDURE api_copy
93 ---------------------------------------------------------------------------
94 PROCEDURE api_copy IS
95 BEGIN
96 null;
97 END api_copy;
98
99 ---------------------------------------------------------------------------
100 -- FUNCTION get_rec for: OKL_DISB_RULE_VENDOR_SITES
101 ---------------------------------------------------------------------------
102 FUNCTION get_rec (
103 p_drv_rec IN drv_rec_type,
104 x_no_data_found OUT NOCOPY BOOLEAN
105 ) RETURN drv_rec_type IS
106 CURSOR okl_drv_pk_csr (p_disb_rule_vendor_site_id IN NUMBER) IS
107 SELECT
108 DISB_RULE_VENDOR_SITE_ID,
109 OBJECT_VERSION_NUMBER,
110 DISB_RULE_ID,
111 VENDOR_ID,
112 VENDOR_SITE_ID,
113 START_DATE,
114 END_DATE,
115 INVOICE_SEQ_START,
116 INVOICE_SEQ_END,
117 NEXT_INV_SEQ,
118 ATTRIBUTE_CATEGORY,
119 ATTRIBUTE1,
120 ATTRIBUTE2,
121 ATTRIBUTE3,
122 ATTRIBUTE4,
123 ATTRIBUTE5,
124 ATTRIBUTE6,
125 ATTRIBUTE7,
126 ATTRIBUTE8,
127 ATTRIBUTE9,
128 ATTRIBUTE10,
129 ATTRIBUTE11,
130 ATTRIBUTE12,
131 ATTRIBUTE13,
132 ATTRIBUTE14,
133 ATTRIBUTE15,
134 CREATED_BY,
135 CREATION_DATE,
136 LAST_UPDATED_BY,
137 LAST_UPDATE_DATE,
138 LAST_UPDATE_LOGIN
139 FROM Okl_Disb_Rule_Vendor_Sites
140 WHERE okl_disb_rule_vendor_sites.disb_rule_vendor_site_id = p_disb_rule_vendor_site_id;
141 l_okl_drv_pk okl_drv_pk_csr%ROWTYPE;
142 l_drv_rec drv_rec_type;
143 BEGIN
144 x_no_data_found := TRUE;
145 -- Get current database values
146 OPEN okl_drv_pk_csr (p_drv_rec.disb_rule_vendor_site_id);
147 FETCH okl_drv_pk_csr INTO
148 l_drv_rec.disb_rule_vendor_site_id,
149 l_drv_rec.object_version_number,
150 l_drv_rec.disb_rule_id,
151 l_drv_rec.vendor_id,
152 l_drv_rec.vendor_site_id,
153 l_drv_rec.start_date,
154 l_drv_rec.end_date,
155 l_drv_rec.invoice_seq_start,
156 l_drv_rec.invoice_seq_end,
157 l_drv_rec.next_inv_seq,
158 l_drv_rec.attribute_category,
159 l_drv_rec.attribute1,
160 l_drv_rec.attribute2,
161 l_drv_rec.attribute3,
162 l_drv_rec.attribute4,
163 l_drv_rec.attribute5,
164 l_drv_rec.attribute6,
165 l_drv_rec.attribute7,
166 l_drv_rec.attribute8,
167 l_drv_rec.attribute9,
168 l_drv_rec.attribute10,
169 l_drv_rec.attribute11,
170 l_drv_rec.attribute12,
171 l_drv_rec.attribute13,
172 l_drv_rec.attribute14,
173 l_drv_rec.attribute15,
174 l_drv_rec.created_by,
175 l_drv_rec.creation_date,
176 l_drv_rec.last_updated_by,
177 l_drv_rec.last_update_date,
178 l_drv_rec.last_update_login;
179 x_no_data_found := okl_drv_pk_csr%NOTFOUND;
180 CLOSE okl_drv_pk_csr;
181 RETURN(l_drv_rec);
182 END get_rec;
183
184 ------------------------------------------------------------------
185 -- This version of get_rec sets error messages if no data found --
186 ------------------------------------------------------------------
187 FUNCTION get_rec (
188 p_drv_rec IN drv_rec_type,
189 x_return_status OUT NOCOPY VARCHAR2
190 ) RETURN drv_rec_type IS
191 l_drv_rec drv_rec_type;
192 l_row_notfound BOOLEAN := TRUE;
193 BEGIN
194 x_return_status := OKL_API.G_RET_STS_SUCCESS;
195 l_drv_rec := get_rec(p_drv_rec, l_row_notfound);
196 IF (l_row_notfound) THEN
197 OKL_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'DISB_RULE_VENDOR_SITE_ID');
198 x_return_status := OKL_API.G_RET_STS_ERROR;
199 END IF;
200 RETURN(l_drv_rec);
201 END get_rec;
202 -----------------------------------------------------------
203 -- So we don't have to pass an "l_row_notfound" variable --
204 -----------------------------------------------------------
205 FUNCTION get_rec (
206 p_drv_rec IN drv_rec_type
207 ) RETURN drv_rec_type IS
208 l_row_not_found BOOLEAN := TRUE;
209 BEGIN
210 RETURN(get_rec(p_drv_rec, l_row_not_found));
211 END get_rec;
212 ---------------------------------------------------------------------------
213 -- FUNCTION null_out_defaults for: OKL_DISB_RULE_VENDOR_SITES
214 ---------------------------------------------------------------------------
215 FUNCTION null_out_defaults (
216 p_drv_rec IN drv_rec_type
217 ) RETURN drv_rec_type IS
218 l_drv_rec drv_rec_type := p_drv_rec;
219 BEGIN
220 IF (l_drv_rec.disb_rule_vendor_site_id = OKL_API.G_MISS_NUM ) THEN
221 l_drv_rec.disb_rule_vendor_site_id := NULL;
222 END IF;
223 IF (l_drv_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
224 l_drv_rec.object_version_number := NULL;
225 END IF;
226 IF (l_drv_rec.disb_rule_id = OKL_API.G_MISS_NUM ) THEN
227 l_drv_rec.disb_rule_id := NULL;
228 END IF;
229 IF (l_drv_rec.vendor_id = OKL_API.G_MISS_NUM ) THEN
230 l_drv_rec.vendor_id := NULL;
231 END IF;
232 IF (l_drv_rec.vendor_site_id = OKL_API.G_MISS_NUM ) THEN
233 l_drv_rec.vendor_site_id := NULL;
234 END IF;
235 IF (l_drv_rec.start_date = OKL_API.G_MISS_DATE ) THEN
236 l_drv_rec.start_date := NULL;
237 END IF;
238 IF (l_drv_rec.end_date = OKL_API.G_MISS_DATE ) THEN
239 l_drv_rec.end_date := NULL;
240 END IF;
241 IF (l_drv_rec.invoice_seq_start = OKL_API.G_MISS_NUM ) THEN
242 l_drv_rec.invoice_seq_start := NULL;
243 END IF;
244 IF (l_drv_rec.invoice_seq_end = OKL_API.G_MISS_NUM ) THEN
245 l_drv_rec.invoice_seq_end := NULL;
246 END IF;
247 IF (l_drv_rec.next_inv_seq = OKL_API.G_MISS_NUM ) THEN
248 l_drv_rec.next_inv_seq := NULL;
249 END IF;
250 IF (l_drv_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
251 l_drv_rec.attribute_category := NULL;
252 END IF;
253 IF (l_drv_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
254 l_drv_rec.attribute1 := NULL;
255 END IF;
256 IF (l_drv_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
257 l_drv_rec.attribute2 := NULL;
258 END IF;
259 IF (l_drv_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
260 l_drv_rec.attribute3 := NULL;
261 END IF;
262 IF (l_drv_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
263 l_drv_rec.attribute4 := NULL;
264 END IF;
265 IF (l_drv_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
266 l_drv_rec.attribute5 := NULL;
267 END IF;
268 IF (l_drv_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
269 l_drv_rec.attribute6 := NULL;
270 END IF;
271 IF (l_drv_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
272 l_drv_rec.attribute7 := NULL;
273 END IF;
274 IF (l_drv_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
275 l_drv_rec.attribute8 := NULL;
276 END IF;
277 IF (l_drv_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
278 l_drv_rec.attribute9 := NULL;
279 END IF;
280 IF (l_drv_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
281 l_drv_rec.attribute10 := NULL;
282 END IF;
283 IF (l_drv_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
284 l_drv_rec.attribute11 := NULL;
285 END IF;
286 IF (l_drv_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
287 l_drv_rec.attribute12 := NULL;
288 END IF;
289 IF (l_drv_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
290 l_drv_rec.attribute13 := NULL;
291 END IF;
292 IF (l_drv_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
293 l_drv_rec.attribute14 := NULL;
294 END IF;
295 IF (l_drv_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
296 l_drv_rec.attribute15 := NULL;
297 END IF;
298 IF (l_drv_rec.created_by = OKL_API.G_MISS_NUM ) THEN
299 l_drv_rec.created_by := NULL;
300 END IF;
301 IF (l_drv_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
302 l_drv_rec.creation_date := NULL;
303 END IF;
304 IF (l_drv_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
305 l_drv_rec.last_updated_by := NULL;
306 END IF;
307 IF (l_drv_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
308 l_drv_rec.last_update_date := NULL;
309 END IF;
310 IF (l_drv_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
311 l_drv_rec.last_update_login := NULL;
312 END IF;
313 RETURN(l_drv_rec);
314 END null_out_defaults;
315 -------------------------------------------------------
316 -- Validate_Attributes for: DISB_RULE_VENDOR_SITE_ID --
317 -------------------------------------------------------
318 PROCEDURE validate_disb_rule_1(
319 x_return_status OUT NOCOPY VARCHAR2,
320 p_disb_rule_vendor_site_id IN NUMBER) IS
321 BEGIN
322 x_return_status := OKL_API.G_RET_STS_SUCCESS;
323 IF (p_disb_rule_vendor_site_id IS NULL) THEN
324 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'disb_rule_vendor_site_id');
325 x_return_status := OKL_API.G_RET_STS_ERROR;
326 RAISE G_EXCEPTION_HALT_VALIDATION;
327 END IF;
328 EXCEPTION
329 WHEN G_EXCEPTION_HALT_VALIDATION THEN
330 null;
331 WHEN OTHERS THEN
332 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
333 ,p_msg_name => G_UNEXPECTED_ERROR
334 ,p_token1 => G_SQLCODE_TOKEN
335 ,p_token1_value => SQLCODE
336 ,p_token2 => G_SQLERRM_TOKEN
337 ,p_token2_value => SQLERRM);
338 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
339 END validate_disb_rule_1;
340 ----------------------------------------------------
341 -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
342 ----------------------------------------------------
343 PROCEDURE validate_object_version_number(
344 x_return_status OUT NOCOPY VARCHAR2,
345 p_object_version_number IN NUMBER) IS
346 BEGIN
347 x_return_status := OKL_API.G_RET_STS_SUCCESS;
348 IF (p_object_version_number IS NULL) THEN
349 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
350 x_return_status := OKL_API.G_RET_STS_ERROR;
351 RAISE G_EXCEPTION_HALT_VALIDATION;
352 END IF;
353 EXCEPTION
354 WHEN G_EXCEPTION_HALT_VALIDATION THEN
355 null;
356 WHEN OTHERS THEN
357 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
358 ,p_msg_name => G_UNEXPECTED_ERROR
359 ,p_token1 => G_SQLCODE_TOKEN
360 ,p_token1_value => SQLCODE
361 ,p_token2 => G_SQLERRM_TOKEN
362 ,p_token2_value => SQLERRM);
363 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
364 END validate_object_version_number;
365 -------------------------------------------
366 -- Validate_Attributes for: DISB_RULE_ID --
367 -------------------------------------------
368 PROCEDURE validate_disb_rule_id(
369 x_return_status OUT NOCOPY VARCHAR2,
370 p_disb_rule_id IN NUMBER) IS
371 BEGIN
372 x_return_status := OKL_API.G_RET_STS_SUCCESS;
373 IF (p_disb_rule_id IS NULL) THEN
374 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'disb_rule_id');
375 x_return_status := OKL_API.G_RET_STS_ERROR;
376 RAISE G_EXCEPTION_HALT_VALIDATION;
377 END IF;
378 EXCEPTION
379 WHEN G_EXCEPTION_HALT_VALIDATION THEN
380 null;
381 WHEN OTHERS THEN
382 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
383 ,p_msg_name => G_UNEXPECTED_ERROR
384 ,p_token1 => G_SQLCODE_TOKEN
385 ,p_token1_value => SQLCODE
386 ,p_token2 => G_SQLERRM_TOKEN
387 ,p_token2_value => SQLERRM);
388 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
389 END validate_disb_rule_id;
390 ----------------------------------------
391 -- Validate_Attributes for: VENDOR_ID --
392 ----------------------------------------
393 PROCEDURE validate_vendor_id(
394 x_return_status OUT NOCOPY VARCHAR2,
395 p_vendor_id IN NUMBER) IS
396 BEGIN
397 x_return_status := OKL_API.G_RET_STS_SUCCESS;
398 IF (p_vendor_id IS NULL) THEN
399 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'vendor_id');
400 x_return_status := OKL_API.G_RET_STS_ERROR;
401 RAISE G_EXCEPTION_HALT_VALIDATION;
402 END IF;
403 EXCEPTION
404 WHEN G_EXCEPTION_HALT_VALIDATION THEN
405 null;
406 WHEN OTHERS THEN
407 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
408 ,p_msg_name => G_UNEXPECTED_ERROR
409 ,p_token1 => G_SQLCODE_TOKEN
410 ,p_token1_value => SQLCODE
411 ,p_token2 => G_SQLERRM_TOKEN
412 ,p_token2_value => SQLERRM);
413 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
414 END validate_vendor_id;
415 ---------------------------------------------
416 -- Validate_Attributes for: VENDOR_SITE_ID --
417 ---------------------------------------------
418 PROCEDURE validate_vendor_site_id(
419 x_return_status OUT NOCOPY VARCHAR2,
420 p_vendor_site_id IN NUMBER) IS
421 BEGIN
422 x_return_status := OKL_API.G_RET_STS_SUCCESS;
423 IF (p_vendor_site_id IS NULL) THEN
424 OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'vendor_site_id');
425 x_return_status := OKL_API.G_RET_STS_ERROR;
426 RAISE G_EXCEPTION_HALT_VALIDATION;
427 END IF;
428 EXCEPTION
429 WHEN G_EXCEPTION_HALT_VALIDATION THEN
430 null;
431 WHEN OTHERS THEN
432 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
433 ,p_msg_name => G_UNEXPECTED_ERROR
434 ,p_token1 => G_SQLCODE_TOKEN
435 ,p_token1_value => SQLCODE
436 ,p_token2 => G_SQLERRM_TOKEN
437 ,p_token2_value => SQLERRM);
438 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
439 END validate_vendor_site_id;
440 ---------------------------------------------------------------------------
441 -- FUNCTION Validate_Attributes
442 ---------------------------------------------------------------------------
443 --------------------------------------------------------
444 -- Validate_Attributes for:OKL_DISB_RULE_VENDOR_SITES --
445 --------------------------------------------------------
446 FUNCTION Validate_Attributes (
447 p_drv_rec IN drv_rec_type
448 ) RETURN VARCHAR2 IS
449 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
450 x_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
451 BEGIN
452 -----------------------------
453 -- Column Level Validation --
454 -----------------------------
455 -- ***
456 -- disb_rule_vendor_site_id
457 -- ***
458 validate_disb_rule_1(x_return_status, p_drv_rec.disb_rule_vendor_site_id);
459 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
460 l_return_status := x_return_status;
461 RAISE G_EXCEPTION_HALT_VALIDATION;
462 END IF;
463
464 -- ***
465 -- object_version_number
466 -- ***
467 validate_object_version_number(x_return_status, p_drv_rec.object_version_number);
468 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
469 l_return_status := x_return_status;
470 RAISE G_EXCEPTION_HALT_VALIDATION;
471 END IF;
472
473 -- ***
474 -- disb_rule_id
475 -- ***
476 validate_disb_rule_id(x_return_status, p_drv_rec.disb_rule_id);
477 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
478 l_return_status := x_return_status;
479 RAISE G_EXCEPTION_HALT_VALIDATION;
480 END IF;
481
482 -- ***
483 -- vendor_id
484 -- ***
485 validate_vendor_id(x_return_status, p_drv_rec.vendor_id);
486 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
487 l_return_status := x_return_status;
488 RAISE G_EXCEPTION_HALT_VALIDATION;
489 END IF;
490
491 -- ***
492 -- vendor_site_id
493 -- ***
494 validate_vendor_site_id(x_return_status, p_drv_rec.vendor_site_id);
495 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
496 l_return_status := x_return_status;
497 RAISE G_EXCEPTION_HALT_VALIDATION;
498 END IF;
499
500 RETURN(l_return_status);
501 EXCEPTION
502 WHEN G_EXCEPTION_HALT_VALIDATION THEN
503 RETURN(l_return_status);
504 WHEN OTHERS THEN
505 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
506 ,p_msg_name => G_UNEXPECTED_ERROR
507 ,p_token1 => G_SQLCODE_TOKEN
508 ,p_token1_value => SQLCODE
509 ,p_token2 => G_SQLERRM_TOKEN
510 ,p_token2_value => SQLERRM);
511 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
512 RETURN(l_return_status);
513 END Validate_Attributes;
514 ---------------------------------------------------------------------------
515 -- PROCEDURE Validate_Record
516 ---------------------------------------------------------------------------
517 ----------------------------------------------------
518 -- Validate Record for:OKL_DISB_RULE_VENDOR_SITES --
519 ----------------------------------------------------
520 FUNCTION Validate_Record (
521 p_drv_rec IN drv_rec_type,
522 p_db_drv_rec IN drv_rec_type
523 ) RETURN VARCHAR2 IS
524 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
525 BEGIN
526 RETURN (l_return_status);
527 END Validate_Record;
528 FUNCTION Validate_Record (
529 p_drv_rec IN drv_rec_type
530 ) RETURN VARCHAR2 IS
531 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
532 l_db_drv_rec drv_rec_type := get_rec(p_drv_rec);
533 BEGIN
534 l_return_status := Validate_Record(p_drv_rec => p_drv_rec,
535 p_db_drv_rec => l_db_drv_rec);
536 RETURN (l_return_status);
537 END Validate_Record;
538
539 ---------------------------------------------------------------------------
540 -- PROCEDURE Migrate
541 ---------------------------------------------------------------------------
542 ---------------------------------------------------------------------------
543 -- PROCEDURE validate_row
544 ---------------------------------------------------------------------------
545 -------------------------------------------------
546 -- validate_row for:OKL_DISB_RULE_VENDOR_SITES --
547 -------------------------------------------------
548 PROCEDURE validate_row(
549 p_api_version IN NUMBER,
550 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
551 x_return_status OUT NOCOPY VARCHAR2,
552 x_msg_count OUT NOCOPY NUMBER,
553 x_msg_data OUT NOCOPY VARCHAR2,
554 p_drv_rec IN drv_rec_type) IS
555
556 l_api_version CONSTANT NUMBER := 1;
557 l_api_name CONSTANT VARCHAR2(30) := 'V_validate_row';
558 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
559 l_drv_rec drv_rec_type := p_drv_rec;
560 BEGIN
561 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
562 G_PKG_NAME,
563 p_init_msg_list,
564 l_api_version,
565 p_api_version,
566 '_PVT',
567 x_return_status);
568 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
569 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
570 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
571 RAISE OKL_API.G_EXCEPTION_ERROR;
572 END IF;
573 --- Validate all non-missing attributes (Item Level Validation)
574 l_return_status := Validate_Attributes(l_drv_rec);
575 --- If any errors happen abort API
576 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
577 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
578 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
579 RAISE OKL_API.G_EXCEPTION_ERROR;
580 END IF;
581 l_return_status := Validate_Record(l_drv_rec);
582 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
583 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
584 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
585 RAISE OKL_API.G_EXCEPTION_ERROR;
586 END IF;
587 x_return_status := l_return_status;
588 EXCEPTION
589 WHEN OKL_API.G_EXCEPTION_ERROR THEN
590 x_return_status := OKL_API.HANDLE_EXCEPTIONS
591 (
592 l_api_name,
593 G_PKG_NAME,
594 'OKL_API.G_RET_STS_ERROR',
595 x_msg_count,
596 x_msg_data,
597 '_PVT'
598 );
599 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
600 x_return_status := OKL_API.HANDLE_EXCEPTIONS
601 (
602 l_api_name,
603 G_PKG_NAME,
604 'OKL_API.G_RET_STS_UNEXP_ERROR',
605 x_msg_count,
606 x_msg_data,
607 '_PVT'
608 );
609 WHEN OTHERS THEN
610 x_return_status := OKL_API.HANDLE_EXCEPTIONS
611 (
612 l_api_name,
613 G_PKG_NAME,
614 'OTHERS',
615 x_msg_count,
616 x_msg_data,
617 '_PVT'
618 );
619 END validate_row;
620 ------------------------------------------------------------
621 -- PL/SQL TBL validate_row for:OKL_DISB_RULE_VENDOR_SITES --
622 ------------------------------------------------------------
623 PROCEDURE validate_row(
624 p_api_version IN NUMBER,
625 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
626 x_return_status OUT NOCOPY VARCHAR2,
627 x_msg_count OUT NOCOPY NUMBER,
628 x_msg_data OUT NOCOPY VARCHAR2,
629 p_drv_tbl IN drv_tbl_type,
630 px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
631
632 l_api_version CONSTANT NUMBER := 1;
633 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
634 i NUMBER := 0;
635 BEGIN
636 OKL_API.init_msg_list(p_init_msg_list);
637 -- Make sure PL/SQL table has records in it before passing
638 IF (p_drv_tbl.COUNT > 0) THEN
639 i := p_drv_tbl.FIRST;
640 LOOP
641 DECLARE
642 l_error_rec OKL_API.ERROR_REC_TYPE;
643 BEGIN
644 l_error_rec.api_name := l_api_name;
645 l_error_rec.api_package := G_PKG_NAME;
646 l_error_rec.idx := i;
647 validate_row (
648 p_api_version => p_api_version,
649 p_init_msg_list => OKL_API.G_FALSE,
650 x_return_status => l_error_rec.error_type,
651 x_msg_count => l_error_rec.msg_count,
652 x_msg_data => l_error_rec.msg_data,
653 p_drv_rec => p_drv_tbl(i));
654 IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
655 l_error_rec.sqlcode := SQLCODE;
656 load_error_tbl(l_error_rec, px_error_tbl);
657 ELSE
658 x_msg_count := l_error_rec.msg_count;
659 x_msg_data := l_error_rec.msg_data;
660 END IF;
661 EXCEPTION
662 WHEN OKL_API.G_EXCEPTION_ERROR THEN
663 l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
664 l_error_rec.sqlcode := SQLCODE;
665 load_error_tbl(l_error_rec, px_error_tbl);
666 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
667 l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
668 l_error_rec.sqlcode := SQLCODE;
669 load_error_tbl(l_error_rec, px_error_tbl);
670 WHEN OTHERS THEN
671 l_error_rec.error_type := 'OTHERS';
672 l_error_rec.sqlcode := SQLCODE;
673 load_error_tbl(l_error_rec, px_error_tbl);
674 END;
675 EXIT WHEN (i = p_drv_tbl.LAST);
676 i := p_drv_tbl.NEXT(i);
677 END LOOP;
678 END IF;
679 -- Loop through the error_tbl to find the error with the highest severity
680 -- and return it.
681 x_return_status := find_highest_exception(px_error_tbl);
682 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
683 EXCEPTION
684 WHEN OKL_API.G_EXCEPTION_ERROR THEN
685 x_return_status := OKL_API.HANDLE_EXCEPTIONS
686 (
687 l_api_name,
688 G_PKG_NAME,
689 'OKL_API.G_RET_STS_ERROR',
690 x_msg_count,
691 x_msg_data,
692 '_PVT'
693 );
694 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
695 x_return_status := OKL_API.HANDLE_EXCEPTIONS
696 (
697 l_api_name,
698 G_PKG_NAME,
699 'OKL_API.G_RET_STS_UNEXP_ERROR',
700 x_msg_count,
701 x_msg_data,
702 '_PVT'
703 );
704 WHEN OTHERS THEN
705 x_return_status := OKL_API.HANDLE_EXCEPTIONS
706 (
707 l_api_name,
708 G_PKG_NAME,
709 'OTHERS',
710 x_msg_count,
711 x_msg_data,
712 '_PVT'
713 );
714 END validate_row;
715
716 ------------------------------------------------------------
717 -- PL/SQL TBL validate_row for:OKL_DISB_RULE_VENDOR_SITES --
718 ------------------------------------------------------------
719 PROCEDURE validate_row(
720 p_api_version IN NUMBER,
721 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
722 x_return_status OUT NOCOPY VARCHAR2,
723 x_msg_count OUT NOCOPY NUMBER,
724 x_msg_data OUT NOCOPY VARCHAR2,
725 p_drv_tbl IN drv_tbl_type) IS
726
727 l_api_version CONSTANT NUMBER := 1;
728 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
729 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
730 l_error_tbl OKL_API.ERROR_TBL_TYPE;
731 BEGIN
732 OKL_API.init_msg_list(p_init_msg_list);
733 -- Make sure PL/SQL table has records in it before passing
734 IF (p_drv_tbl.COUNT > 0) THEN
735 validate_row (
736 p_api_version => p_api_version,
737 p_init_msg_list => OKL_API.G_FALSE,
738 x_return_status => x_return_status,
739 x_msg_count => x_msg_count,
740 x_msg_data => x_msg_data,
741 p_drv_tbl => p_drv_tbl,
742 px_error_tbl => l_error_tbl);
743 END IF;
744 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
745 EXCEPTION
746 WHEN OKL_API.G_EXCEPTION_ERROR THEN
747 x_return_status := OKL_API.HANDLE_EXCEPTIONS
748 (
749 l_api_name,
750 G_PKG_NAME,
751 'OKL_API.G_RET_STS_ERROR',
752 x_msg_count,
753 x_msg_data,
754 '_PVT'
755 );
756 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
757 x_return_status := OKL_API.HANDLE_EXCEPTIONS
758 (
759 l_api_name,
760 G_PKG_NAME,
761 'OKL_API.G_RET_STS_UNEXP_ERROR',
762 x_msg_count,
763 x_msg_data,
764 '_PVT'
765 );
766 WHEN OTHERS THEN
767 x_return_status := OKL_API.HANDLE_EXCEPTIONS
768 (
769 l_api_name,
770 G_PKG_NAME,
771 'OTHERS',
772 x_msg_count,
773 x_msg_data,
774 '_PVT'
775 );
776 END validate_row;
777
778 ---------------------------------------------------------------------------
779 -- PROCEDURE insert_row
780 ---------------------------------------------------------------------------
781 -----------------------------------------------
782 -- insert_row for:OKL_DISB_RULE_VENDOR_SITES --
783 -----------------------------------------------
784 PROCEDURE insert_row(
785 p_api_version IN NUMBER,
786 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
787 x_return_status OUT NOCOPY VARCHAR2,
788 x_msg_count OUT NOCOPY NUMBER,
789 x_msg_data OUT NOCOPY VARCHAR2,
790 p_drv_rec IN drv_rec_type,
791 x_drv_rec OUT NOCOPY drv_rec_type) IS
792
793 l_api_version CONSTANT NUMBER := 1;
794 l_api_name CONSTANT VARCHAR2(30) := 'B_insert_row';
795 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
796 l_drv_rec drv_rec_type := p_drv_rec;
797 l_def_drv_rec drv_rec_type;
798 -------------------------------
799 -- FUNCTION fill_who_columns --
800 -------------------------------
801 FUNCTION fill_who_columns (
802 p_drv_rec IN drv_rec_type
803 ) RETURN drv_rec_type IS
804 l_drv_rec drv_rec_type := p_drv_rec;
805 BEGIN
806 l_drv_rec.CREATION_DATE := SYSDATE;
807 l_drv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
808 l_drv_rec.LAST_UPDATE_DATE := l_drv_rec.CREATION_DATE;
809 l_drv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
810 l_drv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
811 RETURN(l_drv_rec);
812 END fill_who_columns;
813 ---------------------------------------------------
814 -- Set_Attributes for:OKL_DISB_RULE_VENDOR_SITES --
815 ---------------------------------------------------
816 FUNCTION Set_Attributes (
817 p_drv_rec IN drv_rec_type,
818 x_drv_rec OUT NOCOPY drv_rec_type
819 ) RETURN VARCHAR2 IS
820 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
821 BEGIN
822 x_drv_rec := p_drv_rec;
823 x_drv_rec.OBJECT_VERSION_NUMBER := 1;
824 RETURN(l_return_status);
825 END Set_Attributes;
826 BEGIN
827 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
828 G_PKG_NAME,
829 p_init_msg_list,
830 l_api_version,
831 p_api_version,
832 '_PVT',
833 x_return_status);
834 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
835 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
836 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
837 RAISE OKL_API.G_EXCEPTION_ERROR;
838 END IF;
839 l_drv_rec := null_out_defaults(p_drv_rec);
840 -- Set primary key value
841 l_drv_rec.DISB_RULE_VENDOR_SITE_ID := get_seq_id;
842 -- Setting item attributes
843 l_return_Status := Set_Attributes(
844 l_drv_rec, -- IN
845 l_def_drv_rec); -- OUT
846 --- If any errors happen abort API
847 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
848 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
849 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
850 RAISE OKL_API.G_EXCEPTION_ERROR;
851 END IF;
852 l_def_drv_rec := fill_who_columns(l_def_drv_rec);
853 --- Validate all non-missing attributes (Item Level Validation)
854 l_return_status := Validate_Attributes(l_def_drv_rec);
855 --- If any errors happen abort API
856 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
857 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
858 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
859 RAISE OKL_API.G_EXCEPTION_ERROR;
860 END IF;
861 l_return_status := Validate_Record(l_def_drv_rec);
862 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
863 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
864 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
865 RAISE OKL_API.G_EXCEPTION_ERROR;
866 END IF;
867
868 --DBMS_OUTPUT.put_line('Before insert in DRV PVT');
869 --DBMS_OUTPUT.put_line('l_drv_rec.created_by' || l_def_drv_rec.created_by);
870
871
872 INSERT INTO OKL_DISB_RULE_VENDOR_SITES(
873 disb_rule_vendor_site_id,
874 object_version_number,
875 disb_rule_id,
876 vendor_id,
877 vendor_site_id,
878 start_date,
879 end_date,
880 invoice_seq_start,
881 invoice_seq_end,
882 next_inv_seq,
883 attribute_category,
884 attribute1,
885 attribute2,
886 attribute3,
887 attribute4,
888 attribute5,
889 attribute6,
890 attribute7,
891 attribute8,
892 attribute9,
893 attribute10,
894 attribute11,
895 attribute12,
896 attribute13,
897 attribute14,
898 attribute15,
899 created_by,
900 creation_date,
901 last_updated_by,
902 last_update_date,
903 last_update_login)
904 VALUES (
905 l_def_drv_rec.disb_rule_vendor_site_id,
906 l_def_drv_rec.object_version_number,
907 l_def_drv_rec.disb_rule_id,
908 l_def_drv_rec.vendor_id,
909 l_def_drv_rec.vendor_site_id,
910 l_def_drv_rec.start_date,
911 l_def_drv_rec.end_date,
912 l_def_drv_rec.invoice_seq_start,
913 l_def_drv_rec.invoice_seq_end,
914 l_def_drv_rec.next_inv_seq,
915 l_def_drv_rec.attribute_category,
916 l_def_drv_rec.attribute1,
917 l_def_drv_rec.attribute2,
918 l_def_drv_rec.attribute3,
919 l_def_drv_rec.attribute4,
920 l_def_drv_rec.attribute5,
921 l_def_drv_rec.attribute6,
922 l_def_drv_rec.attribute7,
923 l_def_drv_rec.attribute8,
924 l_def_drv_rec.attribute9,
925 l_def_drv_rec.attribute10,
926 l_def_drv_rec.attribute11,
927 l_def_drv_rec.attribute12,
928 l_def_drv_rec.attribute13,
929 l_def_drv_rec.attribute14,
930 l_def_drv_rec.attribute15,
931 l_def_drv_rec.created_by,
932 l_def_drv_rec.creation_date,
933 l_def_drv_rec.last_updated_by,
934 l_def_drv_rec.last_update_date,
935 l_def_drv_rec.last_update_login);
936 -- Set OUT values
937 x_drv_rec := l_drv_rec;
938 x_return_status := l_return_status;
939 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
940 EXCEPTION
941 WHEN OKL_API.G_EXCEPTION_ERROR THEN
942 x_return_status := OKL_API.HANDLE_EXCEPTIONS
943 (
944 l_api_name,
945 G_PKG_NAME,
946 'OKL_API.G_RET_STS_ERROR',
947 x_msg_count,
948 x_msg_data,
949 '_PVT'
950 );
951 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
952 x_return_status := OKL_API.HANDLE_EXCEPTIONS
953 (
954 l_api_name,
955 G_PKG_NAME,
956 'OKL_API.G_RET_STS_UNEXP_ERROR',
957 x_msg_count,
958 x_msg_data,
959 '_PVT'
960 );
961 WHEN OTHERS THEN
962 x_return_status := OKL_API.HANDLE_EXCEPTIONS
963 (
964 l_api_name,
965 G_PKG_NAME,
966 'OTHERS',
967 x_msg_count,
968 x_msg_data,
969 '_PVT'
970 );
971 END insert_row;
972 ---------------------------------------
973 -- PL/SQL TBL insert_row for:DRV_TBL --
974 ---------------------------------------
975 PROCEDURE insert_row(
976 p_api_version IN NUMBER,
977 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
978 x_return_status OUT NOCOPY VARCHAR2,
979 x_msg_count OUT NOCOPY NUMBER,
980 x_msg_data OUT NOCOPY VARCHAR2,
981 p_drv_tbl IN drv_tbl_type,
982 x_drv_tbl OUT NOCOPY drv_tbl_type,
983 px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
984
985 l_api_version CONSTANT NUMBER := 1;
986 l_api_name CONSTANT VARCHAR2(30) := 'error_tbl_insert_row';
987 i NUMBER := 0;
988 BEGIN
989 OKL_API.init_msg_list(p_init_msg_list);
990 -- Make sure PL/SQL table has records in it before passing
991 IF (p_drv_tbl.COUNT > 0) THEN
992 i := p_drv_tbl.FIRST;
993 LOOP
994 DECLARE
995 l_error_rec OKL_API.ERROR_REC_TYPE;
996 BEGIN
997 l_error_rec.api_name := l_api_name;
998 l_error_rec.api_package := G_PKG_NAME;
999 l_error_rec.idx := i;
1000 insert_row (
1001 p_api_version => p_api_version,
1002 p_init_msg_list => OKL_API.G_FALSE,
1003 x_return_status => l_error_rec.error_type,
1004 x_msg_count => l_error_rec.msg_count,
1005 x_msg_data => l_error_rec.msg_data,
1006 p_drv_rec => p_drv_tbl(i),
1007 x_drv_rec => x_drv_tbl(i));
1008 IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1009 l_error_rec.sqlcode := SQLCODE;
1010 load_error_tbl(l_error_rec, px_error_tbl);
1011 ELSE
1012 x_msg_count := l_error_rec.msg_count;
1013 x_msg_data := l_error_rec.msg_data;
1014 END IF;
1015 EXCEPTION
1016 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1017 l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1018 l_error_rec.sqlcode := SQLCODE;
1019 load_error_tbl(l_error_rec, px_error_tbl);
1020 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1021 l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1022 l_error_rec.sqlcode := SQLCODE;
1023 load_error_tbl(l_error_rec, px_error_tbl);
1024 WHEN OTHERS THEN
1025 l_error_rec.error_type := 'OTHERS';
1026 l_error_rec.sqlcode := SQLCODE;
1027 load_error_tbl(l_error_rec, px_error_tbl);
1028 END;
1029 EXIT WHEN (i = p_drv_tbl.LAST);
1030 i := p_drv_tbl.NEXT(i);
1031 END LOOP;
1032 END IF;
1033 -- Loop through the error_tbl to find the error with the highest severity
1034 -- and return it.
1035 x_return_status := find_highest_exception(px_error_tbl);
1036 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1037 EXCEPTION
1038 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1039 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1040 (
1041 l_api_name,
1042 G_PKG_NAME,
1043 'OKL_API.G_RET_STS_ERROR',
1044 x_msg_count,
1045 x_msg_data,
1046 '_PVT'
1047 );
1048 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1049 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1050 (
1051 l_api_name,
1052 G_PKG_NAME,
1053 'OKL_API.G_RET_STS_UNEXP_ERROR',
1054 x_msg_count,
1055 x_msg_data,
1056 '_PVT'
1057 );
1058 WHEN OTHERS THEN
1059 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1060 (
1061 l_api_name,
1062 G_PKG_NAME,
1063 'OTHERS',
1064 x_msg_count,
1065 x_msg_data,
1066 '_PVT'
1067 );
1068 END insert_row;
1069
1070 ---------------------------------------
1071 -- PL/SQL TBL insert_row for:DRV_TBL --
1072 ---------------------------------------
1073 PROCEDURE insert_row(
1074 p_api_version IN NUMBER,
1075 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1076 x_return_status OUT NOCOPY VARCHAR2,
1077 x_msg_count OUT NOCOPY NUMBER,
1078 x_msg_data OUT NOCOPY VARCHAR2,
1079 p_drv_tbl IN drv_tbl_type,
1080 x_drv_tbl OUT NOCOPY drv_tbl_type) IS
1081
1082 l_api_version CONSTANT NUMBER := 1;
1083 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1084 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1085 l_error_tbl OKL_API.ERROR_TBL_TYPE;
1086 BEGIN
1087 OKL_API.init_msg_list(p_init_msg_list);
1088 -- Make sure PL/SQL table has records in it before passing
1089 IF (p_drv_tbl.COUNT > 0) THEN
1090 insert_row (
1091 p_api_version => p_api_version,
1092 p_init_msg_list => OKL_API.G_FALSE,
1093 x_return_status => x_return_status,
1094 x_msg_count => x_msg_count,
1095 x_msg_data => x_msg_data,
1096 p_drv_tbl => p_drv_tbl,
1097 x_drv_tbl => x_drv_tbl,
1098 px_error_tbl => l_error_tbl);
1099 END IF;
1100 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1101 EXCEPTION
1102 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1103 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1104 (
1105 l_api_name,
1106 G_PKG_NAME,
1107 'OKL_API.G_RET_STS_ERROR',
1108 x_msg_count,
1109 x_msg_data,
1110 '_PVT'
1111 );
1112 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1113 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1114 (
1115 l_api_name,
1116 G_PKG_NAME,
1117 'OKL_API.G_RET_STS_UNEXP_ERROR',
1118 x_msg_count,
1119 x_msg_data,
1120 '_PVT'
1121 );
1122 WHEN OTHERS THEN
1123 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1124 (
1125 l_api_name,
1126 G_PKG_NAME,
1127 'OTHERS',
1128 x_msg_count,
1129 x_msg_data,
1130 '_PVT'
1131 );
1132 END insert_row;
1133 ---------------------------------------------------------------------------
1134 -- PROCEDURE lock_row
1135 ---------------------------------------------------------------------------
1136 ---------------------------------------------
1137 -- lock_row for:OKL_DISB_RULE_VENDOR_SITES --
1138 ---------------------------------------------
1139 PROCEDURE lock_row(
1140 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1141 x_return_status OUT NOCOPY VARCHAR2,
1142 x_msg_count OUT NOCOPY NUMBER,
1143 x_msg_data OUT NOCOPY VARCHAR2,
1144 p_drv_rec IN drv_rec_type) IS
1145
1146 E_Resource_Busy EXCEPTION;
1147 PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1148 CURSOR lock_csr (p_drv_rec IN drv_rec_type) IS
1149 SELECT OBJECT_VERSION_NUMBER
1150 FROM OKL_DISB_RULE_VENDOR_SITES
1151 WHERE DISB_RULE_VENDOR_SITE_ID = p_drv_rec.disb_rule_vendor_site_id
1152 AND OBJECT_VERSION_NUMBER = p_drv_rec.object_version_number
1153 FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1154
1155 CURSOR lchk_csr (p_drv_rec IN drv_rec_type) IS
1156 SELECT OBJECT_VERSION_NUMBER
1157 FROM OKL_DISB_RULE_VENDOR_SITES
1158 WHERE DISB_RULE_VENDOR_SITE_ID = p_drv_rec.disb_rule_vendor_site_id;
1159 l_api_version CONSTANT NUMBER := 1;
1160 l_api_name CONSTANT VARCHAR2(30) := 'B_lock_row';
1161 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1162 l_object_version_number OKL_DISB_RULE_VENDOR_SITES.OBJECT_VERSION_NUMBER%TYPE;
1163 lc_object_version_number OKL_DISB_RULE_VENDOR_SITES.OBJECT_VERSION_NUMBER%TYPE;
1164 l_row_notfound BOOLEAN := FALSE;
1165 lc_row_notfound BOOLEAN := FALSE;
1166 BEGIN
1167 --debug_proc('Lock disb_rule_vendor_site_id' || p_drv_rec.disb_rule_vendor_site_id);
1168 -- debug_proc('Lock object_version_number' || p_drv_rec.object_version_number);
1169
1170 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1171 p_init_msg_list,
1172 '_PVT',
1173 x_return_status);
1174 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1175 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1176 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1177 RAISE OKL_API.G_EXCEPTION_ERROR;
1178 END IF;
1179 BEGIN
1180 OPEN lock_csr(p_drv_rec);
1181 FETCH lock_csr INTO l_object_version_number;
1182 l_row_notfound := lock_csr%NOTFOUND;
1183 CLOSE lock_csr;
1184 EXCEPTION
1185 WHEN E_Resource_Busy THEN
1186 IF (lock_csr%ISOPEN) THEN
1187 CLOSE lock_csr;
1188 END IF;
1189 OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1190 RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1191 END;
1192
1193 IF ( l_row_notfound ) THEN
1194 OPEN lchk_csr(p_drv_rec);
1195 FETCH lchk_csr INTO lc_object_version_number;
1196 lc_row_notfound := lchk_csr%NOTFOUND;
1197 CLOSE lchk_csr;
1198 END IF;
1199 IF (lc_row_notfound) THEN
1200 OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1201 RAISE OKL_API.G_EXCEPTION_ERROR;
1202 ELSIF lc_object_version_number > p_drv_rec.object_version_number THEN
1203 OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1204 RAISE OKL_API.G_EXCEPTION_ERROR;
1205 ELSIF lc_object_version_number <> p_drv_rec.object_version_number THEN
1206 OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1207 RAISE OKL_API.G_EXCEPTION_ERROR;
1208 ELSIF lc_object_version_number = -1 THEN
1209 OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1210 RAISE OKL_API.G_EXCEPTION_ERROR;
1211 END IF;
1212 x_return_status := l_return_status;
1213 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1214 EXCEPTION
1215 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1216 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1217 (
1218 l_api_name,
1219 G_PKG_NAME,
1220 'OKL_API.G_RET_STS_ERROR',
1221 x_msg_count,
1222 x_msg_data,
1223 '_PVT'
1224 );
1225 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1226 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1227 (
1228 l_api_name,
1229 G_PKG_NAME,
1230 'OKL_API.G_RET_STS_UNEXP_ERROR',
1231 x_msg_count,
1232 x_msg_data,
1233 '_PVT'
1234 );
1235 WHEN OTHERS THEN
1236 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1237 (
1238 l_api_name,
1239 G_PKG_NAME,
1240 'OTHERS',
1241 x_msg_count,
1242 x_msg_data,
1243 '_PVT'
1244 );
1245 END lock_row;
1246 ----------------------------------------------
1247 -- lock_row for: OKL_DISB_RULE_VENDOR_SITES --
1248 ----------------------------------------------
1249 PROCEDURE lock_row(
1250 p_api_version IN NUMBER,
1251 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1252 x_return_status OUT NOCOPY VARCHAR2,
1253 x_msg_count OUT NOCOPY NUMBER,
1254 x_msg_data OUT NOCOPY VARCHAR2,
1255 p_drv_rec IN drv_rec_type) IS
1256
1257 l_api_version CONSTANT NUMBER := 1;
1258 l_api_name CONSTANT VARCHAR2(30) := 'V_lock_row';
1259 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1260 l_drv_rec drv_rec_type:=p_drv_rec;
1261 BEGIN
1262 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1263 G_PKG_NAME,
1264 p_init_msg_list,
1265 l_api_version,
1266 p_api_version,
1267 '_PVT',
1268 x_return_status);
1269 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1270 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1271 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1272 RAISE OKL_API.G_EXCEPTION_ERROR;
1273 END IF;
1274 -----------------------------------------
1275 -- Move VIEW record to "Child" records --
1276 -----------------------------------------
1277 ---------------------------------------------
1278 -- Call the LOCK_ROW for each child record --
1279 ---------------------------------------------
1280 lock_row(
1281 p_init_msg_list,
1282 l_return_status,
1283 x_msg_count,
1284 x_msg_data,
1285 l_drv_rec
1286 );
1287 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1288 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1289 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1290 RAISE OKL_API.G_EXCEPTION_ERROR;
1291 END IF;
1292 x_return_status := l_return_status;
1293 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1294 EXCEPTION
1295 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1296 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1297 (
1298 l_api_name,
1299 G_PKG_NAME,
1300 'OKL_API.G_RET_STS_ERROR',
1301 x_msg_count,
1302 x_msg_data,
1303 '_PVT'
1304 );
1305 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1306 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1307 (
1308 l_api_name,
1309 G_PKG_NAME,
1310 'OKL_API.G_RET_STS_UNEXP_ERROR',
1311 x_msg_count,
1312 x_msg_data,
1313 '_PVT'
1314 );
1315 WHEN OTHERS THEN
1316 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1317 (
1318 l_api_name,
1319 G_PKG_NAME,
1320 'OTHERS',
1321 x_msg_count,
1322 x_msg_data,
1323 '_PVT'
1324 );
1325 END lock_row;
1326 -------------------------------------
1327 -- PL/SQL TBL lock_row for:DRV_TBL --
1328 -------------------------------------
1329 PROCEDURE lock_row(
1330 p_api_version IN NUMBER,
1331 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1332 x_return_status OUT NOCOPY VARCHAR2,
1333 x_msg_count OUT NOCOPY NUMBER,
1334 x_msg_data OUT NOCOPY VARCHAR2,
1335 p_drv_tbl IN drv_tbl_type,
1336 px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
1337
1338 l_api_version CONSTANT NUMBER := 1;
1339 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
1340 i NUMBER := 0;
1341 BEGIN
1342 OKL_API.init_msg_list(p_init_msg_list);
1343 -- Make sure PL/SQL table has recrods in it before passing
1344 IF (p_drv_tbl.COUNT > 0) THEN
1345 i := p_drv_tbl.FIRST;
1346 LOOP
1347 DECLARE
1348 l_error_rec OKL_API.ERROR_REC_TYPE;
1349 BEGIN
1350 l_error_rec.api_name := l_api_name;
1351 l_error_rec.api_package := G_PKG_NAME;
1352 l_error_rec.idx := i;
1353 lock_row(
1354 p_api_version => p_api_version,
1355 p_init_msg_list => OKL_API.G_FALSE,
1356 x_return_status => l_error_rec.error_type,
1357 x_msg_count => l_error_rec.msg_count,
1358 x_msg_data => l_error_rec.msg_data,
1359 p_drv_rec => p_drv_tbl(i));
1360 IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
1361 l_error_rec.sqlcode := SQLCODE;
1362 load_error_tbl(l_error_rec, px_error_tbl);
1363 ELSE
1364 x_msg_count := l_error_rec.msg_count;
1365 x_msg_data := l_error_rec.msg_data;
1366 END IF;
1367 EXCEPTION
1368 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1369 l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
1370 l_error_rec.sqlcode := SQLCODE;
1371 load_error_tbl(l_error_rec, px_error_tbl);
1372 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1373 l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
1374 l_error_rec.sqlcode := SQLCODE;
1375 load_error_tbl(l_error_rec, px_error_tbl);
1376 WHEN OTHERS THEN
1377 l_error_rec.error_type := 'OTHERS';
1378 l_error_rec.sqlcode := SQLCODE;
1379 load_error_tbl(l_error_rec, px_error_tbl);
1380 END;
1381 EXIT WHEN (i = p_drv_tbl.LAST);
1382 i := p_drv_tbl.NEXT(i);
1383 END LOOP;
1384 END IF;
1385 -- Loop through the error_tbl to find the error with the highest severity
1386 -- and return it.
1387 x_return_status := find_highest_exception(px_error_tbl);
1388 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1389 EXCEPTION
1390 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1391 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1392 (
1393 l_api_name,
1394 G_PKG_NAME,
1395 'OKL_API.G_RET_STS_ERROR',
1396 x_msg_count,
1397 x_msg_data,
1398 '_PVT'
1399 );
1400 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1401 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1402 (
1403 l_api_name,
1404 G_PKG_NAME,
1405 'OKL_API.G_RET_STS_UNEXP_ERROR',
1406 x_msg_count,
1407 x_msg_data,
1408 '_PVT'
1409 );
1410 WHEN OTHERS THEN
1411 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1412 (
1413 l_api_name,
1414 G_PKG_NAME,
1415 'OTHERS',
1416 x_msg_count,
1417 x_msg_data,
1418 '_PVT'
1419 );
1420 END lock_row;
1421 -------------------------------------
1422 -- PL/SQL TBL lock_row for:DRV_TBL --
1423 -------------------------------------
1424 PROCEDURE lock_row(
1425 p_api_version IN NUMBER,
1426 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1427 x_return_status OUT NOCOPY VARCHAR2,
1428 x_msg_count OUT NOCOPY NUMBER,
1429 x_msg_data OUT NOCOPY VARCHAR2,
1430 p_drv_tbl IN drv_tbl_type) IS
1431
1432 l_api_version CONSTANT NUMBER := 1;
1433 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1434 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1435 l_error_tbl OKL_API.ERROR_TBL_TYPE;
1436 BEGIN
1437 OKL_API.init_msg_list(p_init_msg_list);
1438 -- Make sure PL/SQL table has recrods in it before passing
1439 IF (p_drv_tbl.COUNT > 0) THEN
1440 lock_row(
1441 p_api_version => p_api_version,
1442 p_init_msg_list => OKL_API.G_FALSE,
1443 x_return_status => x_return_status,
1444 x_msg_count => x_msg_count,
1445 x_msg_data => x_msg_data,
1446 p_drv_tbl => p_drv_tbl,
1447 px_error_tbl => l_error_tbl);
1448 END IF;
1449 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1450 EXCEPTION
1451 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1452 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1453 (
1454 l_api_name,
1455 G_PKG_NAME,
1456 'OKL_API.G_RET_STS_ERROR',
1457 x_msg_count,
1458 x_msg_data,
1459 '_PVT'
1460 );
1461 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1462 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1463 (
1464 l_api_name,
1465 G_PKG_NAME,
1466 'OKL_API.G_RET_STS_UNEXP_ERROR',
1467 x_msg_count,
1468 x_msg_data,
1469 '_PVT'
1470 );
1471 WHEN OTHERS THEN
1472 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1473 (
1474 l_api_name,
1475 G_PKG_NAME,
1476 'OTHERS',
1477 x_msg_count,
1478 x_msg_data,
1479 '_PVT'
1480 );
1481 END lock_row;
1482 ---------------------------------------------------------------------------
1483 -- PROCEDURE update_row
1484 ---------------------------------------------------------------------------
1485 -----------------------------------------------
1486 -- update_row for:OKL_DISB_RULE_VENDOR_SITES --
1487 -----------------------------------------------
1488 PROCEDURE update_row(
1489 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1490 x_return_status OUT NOCOPY VARCHAR2,
1491 x_msg_count OUT NOCOPY NUMBER,
1492 x_msg_data OUT NOCOPY VARCHAR2,
1493 p_drv_rec IN drv_rec_type,
1494 x_drv_rec OUT NOCOPY drv_rec_type) IS
1495
1496 l_api_version CONSTANT NUMBER := 1;
1497 l_api_name CONSTANT VARCHAR2(30) := 'B_update_row';
1498 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1499 l_drv_rec drv_rec_type := p_drv_rec;
1500 l_def_drv_rec drv_rec_type;
1501 l_row_notfound BOOLEAN := TRUE;
1502 ----------------------------------
1503 -- FUNCTION populate_new_record --
1504 ----------------------------------
1505 FUNCTION populate_new_record (
1506 p_drv_rec IN drv_rec_type,
1507 x_drv_rec OUT NOCOPY drv_rec_type
1508 ) RETURN VARCHAR2 IS
1509 l_drv_rec drv_rec_type;
1510 l_row_notfound BOOLEAN := TRUE;
1511 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1512 BEGIN
1513 x_drv_rec := p_drv_rec;
1514 -- Get current database values
1515 --g_debug_proc('IN main update');
1516 l_drv_rec := get_rec(p_drv_rec, l_return_status);
1517
1518 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
1519 IF x_drv_rec.disb_rule_vendor_site_id IS NULL THEN
1520 x_drv_rec.disb_rule_vendor_site_id := l_drv_rec.disb_rule_vendor_site_id;
1521 END IF;
1522 IF x_drv_rec.object_version_number IS NULL THEN
1523 x_drv_rec.object_version_number := l_drv_rec.object_version_number;
1524 END IF;
1525 IF x_drv_rec.disb_rule_id IS NULL THEN
1526 x_drv_rec.disb_rule_id := l_drv_rec.disb_rule_id;
1527 END IF;
1528 IF x_drv_rec.vendor_id IS NULL THEN
1529 x_drv_rec.vendor_id := l_drv_rec.vendor_id;
1530 END IF;
1531 IF x_drv_rec.vendor_site_id IS NULL THEN
1532 x_drv_rec.vendor_site_id := l_drv_rec.vendor_site_id;
1533 END IF;
1534 --Code commented by gkhuntet.
1535
1536 IF x_drv_rec.start_date IS NULL THEN
1537 x_drv_rec.start_date := l_drv_rec.start_date;
1538 END IF;
1539 IF x_drv_rec.end_date IS NULL THEN
1540 x_drv_rec.end_date := l_drv_rec.end_date;
1541 END IF;
1542 IF x_drv_rec.invoice_seq_start IS NULL THEN
1543 x_drv_rec.invoice_seq_start := l_drv_rec.invoice_seq_start;
1544 END IF;
1545 IF x_drv_rec.invoice_seq_end IS NULL THEN
1546 x_drv_rec.invoice_seq_end := l_drv_rec.invoice_seq_end;
1547 END IF;
1548
1549 IF x_drv_rec.next_inv_seq IS NULL THEN
1550 x_drv_rec.next_inv_seq := l_drv_rec.next_inv_seq;
1551 END IF;
1552 IF x_drv_rec.attribute_category IS NULL THEN
1553 x_drv_rec.attribute_category := l_drv_rec.attribute_category;
1554 END IF;
1555 IF x_drv_rec.attribute1 IS NULL THEN
1556 x_drv_rec.attribute1 := l_drv_rec.attribute1;
1557 END IF;
1558 IF x_drv_rec.attribute2 IS NULL THEN
1559 x_drv_rec.attribute2 := l_drv_rec.attribute2;
1560 END IF;
1561 IF x_drv_rec.attribute3 IS NULL THEN
1562 x_drv_rec.attribute3 := l_drv_rec.attribute3;
1563 END IF;
1564 IF x_drv_rec.attribute4 IS NULL THEN
1565 x_drv_rec.attribute4 := l_drv_rec.attribute4;
1566 END IF;
1567 IF x_drv_rec.attribute5 IS NULL THEN
1568 x_drv_rec.attribute5 := l_drv_rec.attribute5;
1569 END IF;
1570 IF x_drv_rec.attribute6 IS NULL THEN
1571 x_drv_rec.attribute6 := l_drv_rec.attribute6;
1572 END IF;
1573 IF x_drv_rec.attribute7 IS NULL THEN
1574 x_drv_rec.attribute7 := l_drv_rec.attribute7;
1575 END IF;
1576 IF x_drv_rec.attribute8 IS NULL THEN
1577 x_drv_rec.attribute8 := l_drv_rec.attribute8;
1578 END IF;
1579 IF x_drv_rec.attribute9 IS NULL THEN
1580 x_drv_rec.attribute9 := l_drv_rec.attribute9;
1581 END IF;
1582 IF x_drv_rec.attribute10 IS NULL THEN
1583 x_drv_rec.attribute10 := l_drv_rec.attribute10;
1584 END IF;
1585 IF x_drv_rec.attribute11 IS NULL THEN
1586 x_drv_rec.attribute11 := l_drv_rec.attribute11;
1587 END IF;
1588 IF x_drv_rec.attribute12 IS NULL THEN
1589 x_drv_rec.attribute12 := l_drv_rec.attribute12;
1590 END IF;
1591 IF x_drv_rec.attribute13 IS NULL THEN
1592 x_drv_rec.attribute13 := l_drv_rec.attribute13;
1593 END IF;
1594 IF x_drv_rec.attribute14 IS NULL THEN
1595 x_drv_rec.attribute14 := l_drv_rec.attribute14;
1596 END IF;
1597 IF x_drv_rec.attribute15 IS NULL THEN
1598 x_drv_rec.attribute15 := l_drv_rec.attribute15;
1599 END IF;
1600 IF x_drv_rec.created_by IS NULL THEN
1601 x_drv_rec.created_by := l_drv_rec.created_by;
1602 END IF;
1603 IF x_drv_rec.creation_date IS NULL THEN
1604 x_drv_rec.creation_date := l_drv_rec.creation_date;
1605 END IF;
1606 IF x_drv_rec.last_updated_by IS NULL THEN
1607 x_drv_rec.last_updated_by := l_drv_rec.last_updated_by;
1608 END IF;
1609 IF x_drv_rec.last_update_date IS NULL THEN
1610 x_drv_rec.last_update_date := l_drv_rec.last_update_date;
1611 END IF;
1612 IF x_drv_rec.last_update_login IS NULL THEN
1613 x_drv_rec.last_update_login := l_drv_rec.last_update_login;
1614 END IF;
1615 END IF;
1616 RETURN(l_return_status);
1617 END populate_new_record;
1618 ---------------------------------------------------
1619 -- Set_Attributes for:OKL_DISB_RULE_VENDOR_SITES --
1620 ---------------------------------------------------
1621 FUNCTION Set_Attributes (
1622 p_drv_rec IN drv_rec_type,
1623 x_drv_rec OUT NOCOPY drv_rec_type
1624 ) RETURN VARCHAR2 IS
1625 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1626 BEGIN
1627 x_drv_rec := p_drv_rec;
1628 x_drv_rec.OBJECT_VERSION_NUMBER := p_drv_rec.OBJECT_VERSION_NUMBER + 1;
1629 RETURN(l_return_status);
1630 END Set_Attributes;
1631 BEGIN
1632 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1633 p_init_msg_list,
1634 '_PVT',
1635 x_return_status);
1636 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1637 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1638 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1639 RAISE OKL_API.G_EXCEPTION_ERROR;
1640 END IF;
1641
1642 --g_debug_proc('Params ' || p_drv_rec.START_DATE || ' , ' || p_drv_rec.invoice_seq_start || ' , ' || p_drv_rec.disb_rule_vendor_site_id);
1643 --- Setting item attributes
1644 l_return_status := Set_Attributes(
1645 p_drv_rec, -- IN
1646 l_drv_rec); -- OUT
1647 --- If any errors happen abort API
1648 --g_debug_proc('OBJECT_VERSION_NUMBER ' || l_drv_rec.OBJECT_VERSION_NUMBER);
1649 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1650 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1651 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1652 RAISE OKL_API.G_EXCEPTION_ERROR;
1653 END IF;
1654 l_return_status := populate_new_record(l_drv_rec, l_def_drv_rec);
1655 --g_debug_proc('OBJECT_VERSION_NUMBER ' || l_def_drv_rec.OBJECT_VERSION_NUMBER);
1656
1657 --g_debug_proc('Params ' || l_def_drv_rec.START_DATE || ' , ' || l_def_drv_rec.invoice_seq_start || ' , ' || l_def_drv_rec.disb_rule_vendor_site_id);
1658 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1659 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1660 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1661 RAISE OKL_API.G_EXCEPTION_ERROR;
1662 END IF;
1663 --g_debug_proc('update query ');
1664
1665
1666
1667 UPDATE OKL_DISB_RULE_VENDOR_SITES
1668 SET OBJECT_VERSION_NUMBER = l_def_drv_rec.object_version_number,
1669 DISB_RULE_ID = l_def_drv_rec.disb_rule_id,
1670 VENDOR_ID = l_def_drv_rec.vendor_id,
1671 VENDOR_SITE_ID = l_def_drv_rec.vendor_site_id,
1672 START_DATE = l_def_drv_rec.start_date,
1673 END_DATE = l_def_drv_rec.end_date,
1674 INVOICE_SEQ_START = l_def_drv_rec.invoice_seq_start,
1675 INVOICE_SEQ_END = l_def_drv_rec.invoice_seq_end,
1676 NEXT_INV_SEQ = l_def_drv_rec.next_inv_seq,
1677 ATTRIBUTE_CATEGORY = l_def_drv_rec.attribute_category,
1678 ATTRIBUTE1 = l_def_drv_rec.attribute1,
1679 ATTRIBUTE2 = l_def_drv_rec.attribute2,
1680 ATTRIBUTE3 = l_def_drv_rec.attribute3,
1681 ATTRIBUTE4 = l_def_drv_rec.attribute4,
1682 ATTRIBUTE5 = l_def_drv_rec.attribute5,
1683 ATTRIBUTE6 = l_def_drv_rec.attribute6,
1684 ATTRIBUTE7 = l_def_drv_rec.attribute7,
1685 ATTRIBUTE8 = l_def_drv_rec.attribute8,
1686 ATTRIBUTE9 = l_def_drv_rec.attribute9,
1687 ATTRIBUTE10 = l_def_drv_rec.attribute10,
1688 ATTRIBUTE11 = l_def_drv_rec.attribute11,
1689 ATTRIBUTE12 = l_def_drv_rec.attribute12,
1690 ATTRIBUTE13 = l_def_drv_rec.attribute13,
1691 ATTRIBUTE14 = l_def_drv_rec.attribute14,
1692 ATTRIBUTE15 = l_def_drv_rec.attribute15,
1693 CREATED_BY = l_def_drv_rec.created_by,
1694 CREATION_DATE = l_def_drv_rec.creation_date,
1695 LAST_UPDATED_BY = l_def_drv_rec.last_updated_by,
1696 LAST_UPDATE_DATE = l_def_drv_rec.last_update_date,
1697 LAST_UPDATE_LOGIN = l_def_drv_rec.last_update_login
1698 WHERE DISB_RULE_VENDOR_SITE_ID = l_def_drv_rec.disb_rule_vendor_site_id;
1699
1700 x_drv_rec := l_drv_rec;
1701 x_return_status := l_return_status;
1702 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1703 EXCEPTION
1704 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1705 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1706 (
1707 l_api_name,
1708 G_PKG_NAME,
1709 'OKL_API.G_RET_STS_ERROR',
1710 x_msg_count,
1711 x_msg_data,
1712 '_PVT'
1713 );
1714 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1715 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1716 (
1717 l_api_name,
1718 G_PKG_NAME,
1719 'OKL_API.G_RET_STS_UNEXP_ERROR',
1720 x_msg_count,
1721 x_msg_data,
1722 '_PVT'
1723 );
1724 WHEN OTHERS THEN
1725 x_return_status := OKL_API.HANDLE_EXCEPTIONS
1726 (
1727 l_api_name,
1728 G_PKG_NAME,
1729 'OTHERS',
1730 x_msg_count,
1731 x_msg_data,
1732 '_PVT'
1733 );
1734 END update_row;
1735 -----------------------------------------------
1736 -- update_row for:OKL_DISB_RULE_VENDOR_SITES --
1737 -----------------------------------------------
1738 PROCEDURE update_row(
1739 p_api_version IN NUMBER,
1740 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1741 x_return_status OUT NOCOPY VARCHAR2,
1742 x_msg_count OUT NOCOPY NUMBER,
1743 x_msg_data OUT NOCOPY VARCHAR2,
1744 p_drv_rec IN drv_rec_type,
1745 x_drv_rec OUT NOCOPY drv_rec_type) IS
1746
1747 l_api_version CONSTANT NUMBER := 1;
1748 l_api_name CONSTANT VARCHAR2(30) := 'V_update_row';
1749 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1750 l_drv_rec drv_rec_type := p_drv_rec;
1751 l_def_drv_rec drv_rec_type;
1752 l_db_drv_rec drv_rec_type;
1753 lx_drv_rec drv_rec_type;
1754 -------------------------------
1755 -- FUNCTION fill_who_columns --
1756 -------------------------------
1757 FUNCTION fill_who_columns (
1758 p_drv_rec IN drv_rec_type
1759 ) RETURN drv_rec_type IS
1760 l_drv_rec drv_rec_type := p_drv_rec;
1761 BEGIN
1762 l_drv_rec.LAST_UPDATE_DATE := SYSDATE;
1763 l_drv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1764 l_drv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1765 RETURN(l_drv_rec);
1766 END fill_who_columns;
1767 ----------------------------------
1768 -- FUNCTION populate_new_record --
1769 ----------------------------------
1770 FUNCTION populate_new_record (
1771 p_drv_rec IN drv_rec_type,
1772 x_drv_rec OUT NOCOPY drv_rec_type
1773 ) RETURN VARCHAR2 IS
1774 l_row_notfound BOOLEAN := TRUE;
1775 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1776 BEGIN
1777 x_drv_rec := p_drv_rec;
1778 -- Get current database values
1779 -- NOTE: Never assign the OBJECT_VERSION_NUMBER. Force the user to pass it
1780 -- so it may be verified through LOCK_ROW.
1781 l_db_drv_rec := get_rec(p_drv_rec, l_return_status);
1782 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
1783 IF x_drv_rec.disb_rule_vendor_site_id IS NULL THEN
1784 x_drv_rec.disb_rule_vendor_site_id := l_db_drv_rec.disb_rule_vendor_site_id;
1785 END IF;
1786 IF x_drv_rec.disb_rule_id IS NULL THEN
1787 x_drv_rec.disb_rule_id := l_db_drv_rec.disb_rule_id;
1788 END IF;
1789 IF x_drv_rec.vendor_id IS NULL THEN
1790 x_drv_rec.vendor_id := l_db_drv_rec.vendor_id;
1791 END IF;
1792 IF x_drv_rec.vendor_site_id IS NULL THEN
1793 x_drv_rec.vendor_site_id := l_db_drv_rec.vendor_site_id;
1794 END IF;
1795 --Code commented by gkhuntet.
1796
1797 IF x_drv_rec.start_date IS NULL THEN
1798 x_drv_rec.start_date := l_db_drv_rec.start_date;
1799 END IF;
1800 IF x_drv_rec.end_date IS NULL THEN
1801 x_drv_rec.end_date := l_db_drv_rec.end_date;
1802 END IF;
1803 IF x_drv_rec.invoice_seq_start IS NULL THEN
1804 x_drv_rec.invoice_seq_start := l_db_drv_rec.invoice_seq_start;
1805 END IF;
1806 IF x_drv_rec.invoice_seq_end IS NULL THEN
1807 x_drv_rec.invoice_seq_end := l_db_drv_rec.invoice_seq_end;
1808 END IF;
1809
1810 IF x_drv_rec.next_inv_seq IS NULL THEN
1811 x_drv_rec.next_inv_seq := l_db_drv_rec.next_inv_seq;
1812 END IF;
1813 IF x_drv_rec.attribute_category IS NULL THEN
1814 x_drv_rec.attribute_category := l_db_drv_rec.attribute_category;
1815 END IF;
1816 IF x_drv_rec.object_version_number IS NULL or x_drv_rec.object_version_number = Okl_Api.G_MISS_NUM THEN
1817 x_drv_rec.object_version_number := l_db_drv_rec.object_version_number;
1818 END IF;
1819 IF x_drv_rec.attribute1 IS NULL THEN
1820 x_drv_rec.attribute1 := l_db_drv_rec.attribute1;
1821 END IF;
1822 IF x_drv_rec.attribute2 IS NULL THEN
1823 x_drv_rec.attribute2 := l_db_drv_rec.attribute2;
1824 END IF;
1825 IF x_drv_rec.attribute3 IS NULL THEN
1826 x_drv_rec.attribute3 := l_db_drv_rec.attribute3;
1827 END IF;
1828 IF x_drv_rec.attribute4 IS NULL THEN
1829 x_drv_rec.attribute4 := l_db_drv_rec.attribute4;
1830 END IF;
1831 IF x_drv_rec.attribute5 IS NULL THEN
1832 x_drv_rec.attribute5 := l_db_drv_rec.attribute5;
1833 END IF;
1834 IF x_drv_rec.attribute6 IS NULL THEN
1835 x_drv_rec.attribute6 := l_db_drv_rec.attribute6;
1836 END IF;
1837 IF x_drv_rec.attribute7 IS NULL THEN
1838 x_drv_rec.attribute7 := l_db_drv_rec.attribute7;
1839 END IF;
1840 IF x_drv_rec.attribute8 IS NULL THEN
1841 x_drv_rec.attribute8 := l_db_drv_rec.attribute8;
1842 END IF;
1843 IF x_drv_rec.attribute9 IS NULL THEN
1844 x_drv_rec.attribute9 := l_db_drv_rec.attribute9;
1845 END IF;
1846 IF x_drv_rec.attribute10 IS NULL THEN
1847 x_drv_rec.attribute10 := l_db_drv_rec.attribute10;
1848 END IF;
1849 IF x_drv_rec.attribute11 IS NULL THEN
1850 x_drv_rec.attribute11 := l_db_drv_rec.attribute11;
1851 END IF;
1852 IF x_drv_rec.attribute12 IS NULL THEN
1853 x_drv_rec.attribute12 := l_db_drv_rec.attribute12;
1854 END IF;
1855 IF x_drv_rec.attribute13 IS NULL THEN
1856 x_drv_rec.attribute13 := l_db_drv_rec.attribute13;
1857 END IF;
1858 IF x_drv_rec.attribute14 IS NULL THEN
1859 x_drv_rec.attribute14 := l_db_drv_rec.attribute14;
1860 END IF;
1861 IF x_drv_rec.attribute15 IS NULL THEN
1862 x_drv_rec.attribute15 := l_db_drv_rec.attribute15;
1863 END IF;
1864 IF x_drv_rec.created_by IS NULL THEN
1865 x_drv_rec.created_by := l_db_drv_rec.created_by;
1866 END IF;
1867 IF x_drv_rec.creation_date IS NULL THEN
1868 x_drv_rec.creation_date := l_db_drv_rec.creation_date;
1869 END IF;
1870 IF x_drv_rec.last_updated_by IS NULL THEN
1871 x_drv_rec.last_updated_by := l_db_drv_rec.last_updated_by;
1872 END IF;
1873 IF x_drv_rec.last_update_date IS NULL THEN
1874 x_drv_rec.last_update_date := l_db_drv_rec.last_update_date;
1875 END IF;
1876 IF x_drv_rec.last_update_login IS NULL THEN
1877 x_drv_rec.last_update_login := l_db_drv_rec.last_update_login;
1878 END IF;
1879 END IF;
1880 RETURN(l_return_status);
1881 END populate_new_record;
1882 ---------------------------------------------------
1883 -- Set_Attributes for:OKL_DISB_RULE_VENDOR_SITES --
1884 ---------------------------------------------------
1885 FUNCTION Set_Attributes (
1886 p_drv_rec IN drv_rec_type,
1887 x_drv_rec OUT NOCOPY drv_rec_type
1888 ) RETURN VARCHAR2 IS
1889 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1890 BEGIN
1891 x_drv_rec := p_drv_rec;
1892 --x_drv_rec.OBJECT_VERSION_NUMBER := p_drv_rec.OBJECT_VERSION_NUMBER + 1;
1893 RETURN(l_return_status);
1894 END Set_Attributes;
1895 BEGIN
1896 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1897 G_PKG_NAME,
1898 p_init_msg_list,
1899 l_api_version,
1900 p_api_version,
1901 '_PVT',
1902 x_return_status);
1903 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1904 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1905 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1906 RAISE OKL_API.G_EXCEPTION_ERROR;
1907 END IF;
1908 --- Setting item attributes
1909 /*l_return_status := Set_Attributes(
1910 p_drv_rec, -- IN
1911 x_drv_rec); */ -- OUT
1912
1913 l_return_status := Set_Attributes(
1914 p_drv_rec, -- IN
1915 l_drv_rec); -- OUT
1916
1917 --g_debug_proc('Version Number ' || l_drv_rec.OBJECT_VERSION_NUMBER);
1918
1919 --g_debug_proc('Params1 ' || l_drv_rec.START_DATE || ' , ' || l_drv_rec.invoice_seq_start || ' , ' || l_drv_rec.disb_rule_vendor_site_id);
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 := populate_new_record(l_drv_rec, l_def_drv_rec);
1927 --debug_proc('Version Number ' || l_def_drv_rec.OBJECT_VERSION_NUMBER);
1928 --g_debug_proc('Params2 ' || l_def_drv_rec.START_DATE || ' , ' || l_def_drv_rec.invoice_seq_start || ' , ' || l_def_drv_rec.disb_rule_vendor_site_id);
1929
1930 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1931 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1932 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1933 RAISE OKL_API.G_EXCEPTION_ERROR;
1934 END IF;
1935
1936 /* l_return_status := populate_new_record(p_drv_rec, l_drv_rec);
1937
1938 --debug_proc('Version Number ' || l_drv_rec.OBJECT_VERSION_NUMBER);
1939
1940 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1941 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1942 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1943 RAISE OKL_API.G_EXCEPTION_ERROR;
1944 END IF;
1945
1946 l_return_status := Set_Attributes(
1947 l_drv_rec, -- IN
1948 l_def_drv_rec); -- OUT
1949
1950 --debug_proc('Version Number ' || l_def_drv_rec.OBJECT_VERSION_NUMBER);
1951 --- If any errors happen abort API
1952 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1953 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1954 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1955 RAISE OKL_API.G_EXCEPTION_ERROR;
1956 END IF;*/
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967 l_def_drv_rec := null_out_defaults(l_def_drv_rec);
1968 --debug_proc('Version Number null_out_defaults' || l_def_drv_rec.OBJECT_VERSION_NUMBER);
1969
1970 --g_debug_proc('Params3 ' || l_def_drv_rec.START_DATE || ' , ' || l_def_drv_rec.invoice_seq_start || ' , ' || l_def_drv_rec.disb_rule_vendor_site_id);
1971
1972 l_def_drv_rec := fill_who_columns(l_def_drv_rec);
1973
1974 --g_debug_proc('Params4 ' || l_def_drv_rec.START_DATE || ' , ' || l_def_drv_rec.invoice_seq_start || ' , ' || l_def_drv_rec.disb_rule_vendor_site_id);
1975
1976 --debug_proc('Version Number fill_who_columns' || l_def_drv_rec.OBJECT_VERSION_NUMBER);
1977 --- Validate all non-missing attributes (Item Level Validation)
1978 l_return_status := Validate_Attributes(l_def_drv_rec);
1979
1980 --g_debug_proc('Params5 ' || l_def_drv_rec.START_DATE || ' , ' || l_def_drv_rec.invoice_seq_start || ' , ' || l_def_drv_rec.disb_rule_vendor_site_id);
1981 --- If any errors happen abort API
1982 --debug_proc('Version Number Validate_Attributes' || l_def_drv_rec.OBJECT_VERSION_NUMBER);
1983 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1984 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1985 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1986 RAISE OKL_API.G_EXCEPTION_ERROR;
1987 END IF;
1988 l_return_status := Validate_Record(l_def_drv_rec, l_db_drv_rec);
1989 --g_debug_proc('Params6 ' || l_def_drv_rec.START_DATE || ' , ' || l_def_drv_rec.invoice_seq_start || ' , ' || l_def_drv_rec.disb_rule_vendor_site_id);
1990
1991 -- debug_proc('Version Number Validate_Record' || l_db_drv_rec.OBJECT_VERSION_NUMBER);
1992
1993 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1994 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1995 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1996 RAISE OKL_API.G_EXCEPTION_ERROR;
1997 END IF;
1998
1999 -- debug_proc('Version Number ' || l_db_drv_rec.OBJECT_VERSION_NUMBER);
2000
2001 --g_debug_proc('Lock ROw');
2002 -- Lock the Record
2003 lock_row(
2004 p_api_version => p_api_version,
2005 p_init_msg_list => p_init_msg_list,
2006 x_return_status => l_return_status,
2007 x_msg_count => x_msg_count,
2008 x_msg_data => x_msg_data,
2009 p_drv_rec => l_def_drv_rec);
2010 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2011 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2012 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2013 RAISE OKL_API.G_EXCEPTION_ERROR;
2014 END IF;
2015 --g_debug_proc('befor update');
2016 -----------------------------------------
2017 -- Move VIEW record to "Child" records --
2018 -----------------------------------------
2019 -----------------------------------------------
2020 -- Call the UPDATE_ROW for each child record --
2021 -----------------------------------------------
2022 update_row(
2023 p_init_msg_list,
2024 l_return_status,
2025 x_msg_count,
2026 x_msg_data,
2027 l_def_drv_rec,
2028 lx_drv_rec
2029 );
2030 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2031 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2032 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2033 RAISE OKL_API.G_EXCEPTION_ERROR;
2034 END IF;
2035 x_drv_rec := l_def_drv_rec;
2036 x_return_status := l_return_status;
2037 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2038 EXCEPTION
2039 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2040 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2041 (
2042 l_api_name,
2043 G_PKG_NAME,
2044 'OKL_API.G_RET_STS_ERROR',
2045 x_msg_count,
2046 x_msg_data,
2047 '_PVT'
2048 );
2049 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2050 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2051 (
2052 l_api_name,
2053 G_PKG_NAME,
2054 'OKL_API.G_RET_STS_UNEXP_ERROR',
2055 x_msg_count,
2056 x_msg_data,
2057 '_PVT'
2058 );
2059 WHEN OTHERS THEN
2060 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2061 (
2062 l_api_name,
2063 G_PKG_NAME,
2064 'OTHERS',
2065 x_msg_count,
2066 x_msg_data,
2067 '_PVT'
2068 );
2069 END update_row;
2070 ---------------------------------------
2071 -- PL/SQL TBL update_row for:drv_tbl --
2072 ---------------------------------------
2073 PROCEDURE update_row(
2074 p_api_version IN NUMBER,
2075 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2076 x_return_status OUT NOCOPY VARCHAR2,
2077 x_msg_count OUT NOCOPY NUMBER,
2078 x_msg_data OUT NOCOPY VARCHAR2,
2079 p_drv_tbl IN drv_tbl_type,
2080 x_drv_tbl OUT NOCOPY drv_tbl_type,
2081 px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2082
2083 l_api_version CONSTANT NUMBER := 1;
2084 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
2085 i NUMBER := 0;
2086 BEGIN
2087 OKL_API.init_msg_list(p_init_msg_list);
2088 -- Make sure PL/SQL table has records in it before passing
2089 IF (p_drv_tbl.COUNT > 0) THEN
2090 i := p_drv_tbl.FIRST;
2091 LOOP
2092 DECLARE
2093 l_error_rec OKL_API.ERROR_REC_TYPE;
2094 BEGIN
2095 l_error_rec.api_name := l_api_name;
2096 l_error_rec.api_package := G_PKG_NAME;
2097 l_error_rec.idx := i;
2098 update_row (
2099 p_api_version => p_api_version,
2100 p_init_msg_list => OKL_API.G_FALSE,
2101 x_return_status => l_error_rec.error_type,
2102 x_msg_count => l_error_rec.msg_count,
2103 x_msg_data => l_error_rec.msg_data,
2104 p_drv_rec => p_drv_tbl(i),
2105 x_drv_rec => x_drv_tbl(i));
2106 IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2107 l_error_rec.sqlcode := SQLCODE;
2108 load_error_tbl(l_error_rec, px_error_tbl);
2109 ELSE
2110 x_msg_count := l_error_rec.msg_count;
2111 x_msg_data := l_error_rec.msg_data;
2112 END IF;
2113 EXCEPTION
2114 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2115 l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2116 l_error_rec.sqlcode := SQLCODE;
2117 load_error_tbl(l_error_rec, px_error_tbl);
2118 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2119 l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2120 l_error_rec.sqlcode := SQLCODE;
2121 load_error_tbl(l_error_rec, px_error_tbl);
2122 WHEN OTHERS THEN
2123 l_error_rec.error_type := 'OTHERS';
2124 l_error_rec.sqlcode := SQLCODE;
2125 load_error_tbl(l_error_rec, px_error_tbl);
2126 END;
2127 EXIT WHEN (i = p_drv_tbl.LAST);
2128 i := p_drv_tbl.NEXT(i);
2129 END LOOP;
2130 END IF;
2131 -- Loop through the error_tbl to find the error with the highest severity
2132 -- and return it.
2133 x_return_status := find_highest_exception(px_error_tbl);
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 update_row;
2167
2168 ---------------------------------------
2169 -- PL/SQL TBL update_row for:DRV_TBL --
2170 ---------------------------------------
2171 PROCEDURE update_row(
2172 p_api_version IN NUMBER,
2173 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2174 x_return_status OUT NOCOPY VARCHAR2,
2175 x_msg_count OUT NOCOPY NUMBER,
2176 x_msg_data OUT NOCOPY VARCHAR2,
2177 p_drv_tbl IN drv_tbl_type,
2178 x_drv_tbl OUT NOCOPY drv_tbl_type) IS
2179
2180 l_api_version CONSTANT NUMBER := 1;
2181 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
2182 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2183 l_error_tbl OKL_API.ERROR_TBL_TYPE;
2184 BEGIN
2185 OKL_API.init_msg_list(p_init_msg_list);
2186 -- Make sure PL/SQL table has records in it before passing
2187 IF (p_drv_tbl.COUNT > 0) THEN
2188 update_row (
2189 p_api_version => p_api_version,
2190 p_init_msg_list => OKL_API.G_FALSE,
2191 x_return_status => x_return_status,
2192 x_msg_count => x_msg_count,
2193 x_msg_data => x_msg_data,
2194 p_drv_tbl => p_drv_tbl,
2195 x_drv_tbl => x_drv_tbl,
2196 px_error_tbl => l_error_tbl);
2197 END IF;
2198 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2199 EXCEPTION
2200 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2201 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2202 (
2203 l_api_name,
2204 G_PKG_NAME,
2205 'OKL_API.G_RET_STS_ERROR',
2206 x_msg_count,
2207 x_msg_data,
2208 '_PVT'
2209 );
2210 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2211 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2212 (
2213 l_api_name,
2214 G_PKG_NAME,
2215 'OKL_API.G_RET_STS_UNEXP_ERROR',
2216 x_msg_count,
2217 x_msg_data,
2218 '_PVT'
2219 );
2220 WHEN OTHERS THEN
2221 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2222 (
2223 l_api_name,
2224 G_PKG_NAME,
2225 'OTHERS',
2226 x_msg_count,
2227 x_msg_data,
2228 '_PVT'
2229 );
2230 END update_row;
2231
2232 ---------------------------------------------------------------------------
2233 -- PROCEDURE delete_row
2234 ---------------------------------------------------------------------------
2235 -----------------------------------------------
2236 -- delete_row for:OKL_DISB_RULE_VENDOR_SITES --
2237 -----------------------------------------------
2238 PROCEDURE delete_row(
2239 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2240 x_return_status OUT NOCOPY VARCHAR2,
2241 x_msg_count OUT NOCOPY NUMBER,
2242 x_msg_data OUT NOCOPY VARCHAR2,
2243 p_drv_rec IN drv_rec_type) IS
2244
2245 l_api_version CONSTANT NUMBER := 1;
2246 l_api_name CONSTANT VARCHAR2(30) := 'B_delete_row';
2247 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2248 l_drv_rec drv_rec_type := p_drv_rec;
2249 l_row_notfound BOOLEAN := TRUE;
2250 BEGIN
2251 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2252 p_init_msg_list,
2253 '_PVT',
2254 x_return_status);
2255 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2256 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2257 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2258 RAISE OKL_API.G_EXCEPTION_ERROR;
2259 END IF;
2260
2261 DELETE FROM OKL_DISB_RULE_VENDOR_SITES
2262 WHERE DISB_RULE_VENDOR_SITE_ID = p_drv_rec.disb_rule_vendor_site_id;
2263
2264 x_return_status := l_return_status;
2265 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2266 EXCEPTION
2267 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2268 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2269 (
2270 l_api_name,
2271 G_PKG_NAME,
2272 'OKL_API.G_RET_STS_ERROR',
2273 x_msg_count,
2274 x_msg_data,
2275 '_PVT'
2276 );
2277 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2278 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2279 (
2280 l_api_name,
2281 G_PKG_NAME,
2282 'OKL_API.G_RET_STS_UNEXP_ERROR',
2283 x_msg_count,
2284 x_msg_data,
2285 '_PVT'
2286 );
2287 WHEN OTHERS THEN
2288 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2289 (
2290 l_api_name,
2291 G_PKG_NAME,
2292 'OTHERS',
2293 x_msg_count,
2294 x_msg_data,
2295 '_PVT'
2296 );
2297 END delete_row;
2298 -----------------------------------------------
2299 -- delete_row for:OKL_DISB_RULE_VENDOR_SITES --
2300 -----------------------------------------------
2301 PROCEDURE delete_row(
2302 p_api_version IN NUMBER,
2303 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2304 x_return_status OUT NOCOPY VARCHAR2,
2305 x_msg_count OUT NOCOPY NUMBER,
2306 x_msg_data OUT NOCOPY VARCHAR2,
2307 p_drv_rec IN drv_rec_type) IS
2308
2309 l_api_version CONSTANT NUMBER := 1;
2310 l_api_name CONSTANT VARCHAR2(30) := 'V_delete_row';
2311 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2312 l_drv_rec drv_rec_type := p_drv_rec;
2313 BEGIN
2314 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2315 G_PKG_NAME,
2316 p_init_msg_list,
2317 l_api_version,
2318 p_api_version,
2319 '_PVT',
2320 x_return_status);
2321 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2322 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2323 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2324 RAISE OKL_API.G_EXCEPTION_ERROR;
2325 END IF;
2326 -----------------------------------------
2327 -- Move VIEW record to "Child" records --
2328 -----------------------------------------
2329 -----------------------------------------------
2330 -- Call the DELETE_ROW for each child record --
2331 -----------------------------------------------
2332 delete_row(
2333 p_init_msg_list,
2334 l_return_status,
2335 x_msg_count,
2336 x_msg_data,
2337 l_drv_rec
2338 );
2339 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2340 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2341 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2342 RAISE OKL_API.G_EXCEPTION_ERROR;
2343 END IF;
2344 x_return_status := l_return_status;
2345 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2346 EXCEPTION
2347 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2348 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2349 (
2350 l_api_name,
2351 G_PKG_NAME,
2352 'OKL_API.G_RET_STS_ERROR',
2353 x_msg_count,
2354 x_msg_data,
2355 '_PVT'
2356 );
2357 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2358 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2359 (
2360 l_api_name,
2361 G_PKG_NAME,
2362 'OKL_API.G_RET_STS_UNEXP_ERROR',
2363 x_msg_count,
2364 x_msg_data,
2365 '_PVT'
2366 );
2367 WHEN OTHERS THEN
2368 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2369 (
2370 l_api_name,
2371 G_PKG_NAME,
2372 'OTHERS',
2373 x_msg_count,
2374 x_msg_data,
2375 '_PVT'
2376 );
2377 END delete_row;
2378 ----------------------------------------------------------
2379 -- PL/SQL TBL delete_row for:OKL_DISB_RULE_VENDOR_SITES --
2380 ----------------------------------------------------------
2381 PROCEDURE delete_row(
2382 p_api_version IN NUMBER,
2383 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2384 x_return_status OUT NOCOPY VARCHAR2,
2385 x_msg_count OUT NOCOPY NUMBER,
2386 x_msg_data OUT NOCOPY VARCHAR2,
2387 p_drv_tbl IN drv_tbl_type,
2388 px_error_tbl IN OUT NOCOPY OKL_API.ERROR_TBL_TYPE) IS
2389
2390 l_api_version CONSTANT NUMBER := 1;
2391 l_api_name CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
2392 i NUMBER := 0;
2393 BEGIN
2394 OKL_API.init_msg_list(p_init_msg_list);
2395 -- Make sure PL/SQL table has records in it before passing
2396 IF (p_drv_tbl.COUNT > 0) THEN
2397 i := p_drv_tbl.FIRST;
2398 LOOP
2399 DECLARE
2400 l_error_rec OKL_API.ERROR_REC_TYPE;
2401 BEGIN
2402 l_error_rec.api_name := l_api_name;
2403 l_error_rec.api_package := G_PKG_NAME;
2404 l_error_rec.idx := i;
2405 delete_row (
2406 p_api_version => p_api_version,
2407 p_init_msg_list => OKL_API.G_FALSE,
2408 x_return_status => l_error_rec.error_type,
2409 x_msg_count => l_error_rec.msg_count,
2410 x_msg_data => l_error_rec.msg_data,
2411 p_drv_rec => p_drv_tbl(i));
2412 IF (l_error_rec.error_type <> OKL_API.G_RET_STS_SUCCESS) THEN
2413 l_error_rec.sqlcode := SQLCODE;
2414 load_error_tbl(l_error_rec, px_error_tbl);
2415 ELSE
2416 x_msg_count := l_error_rec.msg_count;
2417 x_msg_data := l_error_rec.msg_data;
2418 END IF;
2419 EXCEPTION
2420 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2421 l_error_rec.error_type := OKL_API.G_RET_STS_ERROR;
2422 l_error_rec.sqlcode := SQLCODE;
2423 load_error_tbl(l_error_rec, px_error_tbl);
2424 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2425 l_error_rec.error_type := OKL_API.G_RET_STS_UNEXP_ERROR;
2426 l_error_rec.sqlcode := SQLCODE;
2427 load_error_tbl(l_error_rec, px_error_tbl);
2428 WHEN OTHERS THEN
2429 l_error_rec.error_type := 'OTHERS';
2430 l_error_rec.sqlcode := SQLCODE;
2431 load_error_tbl(l_error_rec, px_error_tbl);
2432 END;
2433 EXIT WHEN (i = p_drv_tbl.LAST);
2434 i := p_drv_tbl.NEXT(i);
2435 END LOOP;
2436 END IF;
2437 -- Loop through the error_tbl to find the error with the highest severity
2438 -- and return it.
2439 x_return_status := find_highest_exception(px_error_tbl);
2440 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2441 EXCEPTION
2442 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2443 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2444 (
2445 l_api_name,
2446 G_PKG_NAME,
2447 'OKL_API.G_RET_STS_ERROR',
2448 x_msg_count,
2449 x_msg_data,
2450 '_PVT'
2451 );
2452 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2453 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2454 (
2455 l_api_name,
2456 G_PKG_NAME,
2457 'OKL_API.G_RET_STS_UNEXP_ERROR',
2458 x_msg_count,
2459 x_msg_data,
2460 '_PVT'
2461 );
2462 WHEN OTHERS THEN
2463 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2464 (
2465 l_api_name,
2466 G_PKG_NAME,
2467 'OTHERS',
2468 x_msg_count,
2469 x_msg_data,
2470 '_PVT'
2471 );
2472 END delete_row;
2473
2474 ----------------------------------------------------------
2475 -- PL/SQL TBL delete_row for:OKL_DISB_RULE_VENDOR_SITES --
2476 ----------------------------------------------------------
2477 PROCEDURE delete_row(
2478 p_api_version IN NUMBER,
2479 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2480 x_return_status OUT NOCOPY VARCHAR2,
2481 x_msg_count OUT NOCOPY NUMBER,
2482 x_msg_data OUT NOCOPY VARCHAR2,
2483 p_drv_tbl IN drv_tbl_type) IS
2484
2485 l_api_version CONSTANT NUMBER := 1;
2486 l_api_name CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2487 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2488 l_error_tbl OKL_API.ERROR_TBL_TYPE;
2489 BEGIN
2490 OKL_API.init_msg_list(p_init_msg_list);
2491 -- Make sure PL/SQL table has records in it before passing
2492 IF (p_drv_tbl.COUNT > 0) THEN
2493 delete_row (
2494 p_api_version => p_api_version,
2495 p_init_msg_list => OKL_API.G_FALSE,
2496 x_return_status => x_return_status,
2497 x_msg_count => x_msg_count,
2498 x_msg_data => x_msg_data,
2499 p_drv_tbl => p_drv_tbl,
2500 px_error_tbl => l_error_tbl);
2501 END IF;
2502 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2503 EXCEPTION
2504 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2505 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2506 (
2507 l_api_name,
2508 G_PKG_NAME,
2509 'OKL_API.G_RET_STS_ERROR',
2510 x_msg_count,
2511 x_msg_data,
2512 '_PVT'
2513 );
2514 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2515 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2516 (
2517 l_api_name,
2518 G_PKG_NAME,
2519 'OKL_API.G_RET_STS_UNEXP_ERROR',
2520 x_msg_count,
2521 x_msg_data,
2522 '_PVT'
2523 );
2524 WHEN OTHERS THEN
2525 x_return_status := OKL_API.HANDLE_EXCEPTIONS
2526 (
2527 l_api_name,
2528 G_PKG_NAME,
2529 'OTHERS',
2530 x_msg_count,
2531 x_msg_data,
2532 '_PVT'
2533 );
2534 END delete_row;
2535
2536 END OKL_DRV_PVT;