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