[Home] [Help]
PACKAGE BODY: APPS.PA_PT_CO_IMPL_STATUSES_PKG
Source
1 PACKAGE BODY PA_PT_CO_IMPL_STATUSES_PKG AS
2 /* $Header: PAFPCOIB.pls 120.1 2005/08/19 16:25:31 mwasowic noship $ */
3
4 g_module_name VARCHAR2(100) := 'pa.plsql.PA_PT_CO_IMPL_STATUSES_PKG';
5
6 /*==================================================================
7 API for inserting into the table
8 ==================================================================*/
9 PROCEDURE INSERT_ROW (
10 p_pt_co_impl_statuses_id IN pa_pt_co_impl_statuses.pt_co_impl_statuses_id%TYPE,
11 p_fin_plan_type_id IN pa_pt_co_impl_statuses.fin_plan_type_id%TYPE,
12 p_ci_type_id IN pa_pt_co_impl_statuses.ci_type_id%TYPE,
13 p_version_type IN pa_pt_co_impl_statuses.version_type%TYPE,
14 p_status_code IN pa_pt_co_impl_statuses.status_code%TYPE,
15 p_impl_default_flag IN pa_pt_co_impl_statuses.impl_default_flag%TYPE,
16 x_row_id OUT NOCOPY ROWID, --File.Sql.39 bug 4440895
17 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
18 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
19 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
20 IS
21
22 BEGIN
23
24 x_return_status := FND_API.G_RET_STS_SUCCESS;
25
26 INSERT
27 INTO PA_PT_CO_IMPL_STATUSES (
28 pt_co_impl_statuses_id,
29 fin_plan_type_id,
30 ci_type_id,
31 version_type,
32 status_code,
33 impl_default_flag,
34 record_version_number,
35 creation_date,
36 created_by,
37 last_update_login,
38 last_updated_by,
39 last_update_date)
40 VALUES(
41 p_pt_co_impl_statuses_id,
42 p_fin_plan_type_id,
43 p_ci_type_id,
44 p_version_type,
45 p_status_code,
46 p_impl_default_flag,
47 1,
48 sysdate,
49 fnd_global.user_id,
50 fnd_global.login_id,
51 fnd_global.user_id,
52 sysdate)
53 RETURNING ROWID INTO x_row_id;
54
55 EXCEPTION
56 WHEN OTHERS THEN
57 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
58 x_msg_count := 1;
59 x_msg_data := SQLERRM;
60 FND_MSG_PUB.add_exc_msg( p_pkg_name =>
61 'PA_PT_CO_IMPL_STATUSES_PKG',
62 p_procedure_name => 'INSERT_ROW');
63 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
64
65 END Insert_Row;
66
67 /*==================================================================
68 API for updating records of the table
69 ==================================================================*/
70 PROCEDURE UPDATE_ROW (
71 p_pt_co_impl_statuses_id IN pa_pt_co_impl_statuses.pt_co_impl_statuses_id%TYPE,
72 p_fin_plan_type_id IN pa_pt_co_impl_statuses.fin_plan_type_id%TYPE,
73 p_ci_type_id IN pa_pt_co_impl_statuses.ci_type_id%TYPE,
74 p_version_type IN pa_pt_co_impl_statuses.version_type%TYPE,
75 p_status_code IN pa_pt_co_impl_statuses.status_code%TYPE,
76 p_impl_default_flag IN pa_pt_co_impl_statuses.impl_default_flag%TYPE,
77 p_record_version_number IN pa_pt_co_impl_statuses.record_version_number%TYPE,
78 p_lock_row IN VARCHAR2,
79 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
80 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
81 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
82
83 IS
84 l_record_version_number NUMBER;
85
86 l_debug_mode VARCHAR2(1);
87 l_debug_level3 CONSTANT NUMBER := 3;
88 l_module_name VARCHAR2(100) := 'UPDATE_ROW' || g_module_name;
89 l_return_status VARCHAR2(30);
90 l_msg_count NUMBER;
91 l_msg_index_out NUMBER;
92 l_data VARCHAR2(2000);
93 l_msg_data VARCHAR2(2000);
94
95 BEGIN
96
97 x_return_status := FND_API.G_RET_STS_SUCCESS;
98
99 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
100
101 IF l_debug_mode = 'Y' THEN
102 pa_debug.set_curr_function( p_function => 'UPDATE_ROW',
103 p_debug_mode => l_debug_mode );
104 END IF;
105 IF l_debug_mode = 'Y' THEN
106 pa_debug.g_err_stage:= 'Entering UPDATE_ROW ';
107 pa_debug.write(l_module_name,pa_debug.g_err_stage,
108 l_debug_level3);
109 END IF;
110
111 IF l_debug_mode = 'Y' THEN
112 pa_debug.g_err_stage:= 'The Co Impl Id : ' || p_pt_co_impl_statuses_id;
113 pa_debug.write(l_module_name,pa_debug.g_err_stage,
114 l_debug_level3);
115 END IF;
116
117 IF p_pt_co_impl_statuses_id IS NOT NULL THEN
118
119 IF p_lock_row = 'Y' THEN
120 /* Calling Lock_Row */
121 IF l_debug_mode = 'Y' THEN
122 pa_debug.g_err_stage:= 'Calling Lock_Row when p_pt_co_impl_statuses_id is not null';
123 pa_debug.write(l_module_name,pa_debug.g_err_stage,
124 l_debug_level3);
125 END IF;
126
127 Lock_Row(p_row_id => null,
128 p_pt_co_impl_statuses_id => p_pt_co_impl_statuses_id,
129 p_record_version_number => p_record_version_number,
130 p_fin_plan_type_id => null,
131 p_ci_type_id => null,
132 p_version_type => null,
133 p_status_code => null,
134 x_return_status => l_return_status,
135 x_msg_count => l_msg_count,
136 x_msg_data => l_msg_data);
137
138 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
139 IF l_debug_mode = 'Y' THEN
140 pa_debug.g_err_stage:= 'Error in Lock_Row';
141 pa_debug.write(l_module_name,pa_debug.g_err_stage,l_debug_level3);
142 END IF;
143 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
144 END IF;
145 END IF;
146
147 IF l_debug_mode = 'Y' THEN
148 pa_debug.g_err_stage:= 'Updating with p_pt_co_impl_statuses_id';
149 pa_debug.write(l_module_name,pa_debug.g_err_stage,
150 l_debug_level3);
151 END IF;
152
153 UPDATE PA_PT_CO_IMPL_STATUSES
154 SET
155 pt_co_impl_statuses_id = DECODE (p_pt_co_impl_statuses_id, FND_API.G_MISS_NUM,
156 NULL, NVL(p_pt_co_impl_statuses_id, pt_co_impl_statuses_id)),
157 fin_plan_type_id = DECODE (p_fin_plan_type_id, FND_API.G_MISS_NUM, NULL,
158 NVL(p_fin_plan_type_id, fin_plan_type_id)),
159 ci_type_id = DECODE (p_ci_type_id, FND_API.G_MISS_NUM, NULL,
160 NVL(p_ci_type_id, ci_type_id)),
161 version_type = DECODE (p_version_type, FND_API.G_MISS_CHAR, NULL,
162 NVL(p_version_type, version_type)),
163 status_code = DECODE (p_status_code, FND_API.G_MISS_NUM, NULL,
164 NVL(p_status_code, status_code)),
165 impl_default_flag = DECODE (p_impl_default_flag, FND_API.G_MISS_CHAR, NULL,
166 NVL(p_impl_default_flag, impl_default_flag)),
167 record_version_number = p_record_version_number + 1,
168 last_update_date = SYSDATE,
169 last_updated_by = FND_GLOBAL.USER_ID,
170 last_update_login = FND_GLOBAL.LOGIN_ID
171 WHERE pt_co_impl_statuses_id = p_pt_co_impl_statuses_id;
172
173 ELSE
174 IF p_lock_row = 'Y' THEN
175 /* Calling Lock_Row */
176 IF l_debug_mode = 'Y' THEN
177 pa_debug.g_err_stage:= 'Calling Lock_Row when p_pt_co_impl_statuses_id is null';
178 pa_debug.write(l_module_name,pa_debug.g_err_stage,
179 l_debug_level3);
180 END IF;
181
182 Lock_Row(p_row_id => null,
183 p_pt_co_impl_statuses_id => null,
184 p_record_version_number => p_record_version_number,
185 p_fin_plan_type_id => p_fin_plan_type_id,
186 p_ci_type_id => p_ci_type_id,
187 p_version_type => p_version_type,
188 p_status_code => p_status_code,
189 x_return_status => l_return_status,
190 x_msg_count => l_msg_count,
191 x_msg_data => l_msg_data);
192
193 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
194 IF l_debug_mode = 'Y' THEN
195 pa_debug.g_err_stage:= 'Error in Lock_Row';
196 pa_debug.write(l_module_name,pa_debug.g_err_stage,l_debug_level3);
197 END IF;
198 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
199 END IF;
200 END IF;
201
202 IF l_debug_mode = 'Y' THEN
203 pa_debug.g_err_stage:= 'Updating without p_pt_co_impl_statuses_id';
204 pa_debug.write(l_module_name,pa_debug.g_err_stage,
205 l_debug_level3);
206 END IF;
207
208 UPDATE PA_PT_CO_IMPL_STATUSES
209 SET
210 pt_co_impl_statuses_id = DECODE (p_pt_co_impl_statuses_id, FND_API.G_MISS_NUM,
211 NULL, NVL(p_pt_co_impl_statuses_id, pt_co_impl_statuses_id)),
212 fin_plan_type_id = DECODE (p_fin_plan_type_id, FND_API.G_MISS_NUM, NULL,
213 NVL(p_fin_plan_type_id, fin_plan_type_id)),
214 ci_type_id = DECODE (p_ci_type_id, FND_API.G_MISS_NUM, NULL,
215 NVL(p_ci_type_id, ci_type_id)),
216 version_type = DECODE (p_version_type, FND_API.G_MISS_CHAR, NULL,
217 NVL(p_version_type, version_type)),
218 status_code = DECODE (p_status_code, FND_API.G_MISS_CHAR, NULL,
219 NVL(p_status_code, status_code)),
220 impl_default_flag = DECODE (p_impl_default_flag, FND_API.G_MISS_CHAR, NULL,
221 NVL(p_impl_default_flag, impl_default_flag)),
222 record_version_number = nvl(p_record_version_number,record_version_number) + 1,
223 last_update_login = FND_GLOBAL.LOGIN_ID,
224 last_updated_by = FND_GLOBAL.USER_ID,
225 last_update_date = SYSDATE
226 WHERE fin_plan_type_id = p_fin_plan_type_id
227 AND ci_type_id = p_ci_type_id
228 AND version_type = DECODE(p_version_type,
229 PA_FP_CONSTANTS_PKG.G_ELEMENT_TYPE_BOTH, version_type,
230 Nvl(p_version_type,version_type))
231 AND status_code = Nvl (p_status_code, status_code);
232
233 END IF;
234
235 IF SQL%NOTFOUND THEN
236 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
237 ,p_msg_name => 'PA_XC_RECORD_CHANGED');
238 x_return_status := FND_API.G_RET_STS_ERROR;
239 END IF;
240
241 IF l_debug_mode = 'Y' THEN
242 pa_debug.reset_curr_function;
243 END IF;
244
245 l_msg_count := FND_MSG_PUB.count_msg;
246
247 IF l_msg_count > 0 THEN
248 IF l_msg_count = 1 THEN
249 PA_INTERFACE_UTILS_PUB.get_messages
250 (p_encoded => FND_API.G_TRUE,
251 p_msg_index => 1,
252 p_msg_count => l_msg_count,
253 p_msg_data => l_msg_data,
254 p_data => l_data,
255 p_msg_index_out => l_msg_index_out);
256 x_msg_data := l_data;
257 x_msg_count := l_msg_count;
258 ELSE
259 x_msg_count := l_msg_count;
260 END IF;
261 RETURN;
262 END IF;
263
264 IF l_debug_mode = 'Y' THEN
265 pa_debug.g_err_stage:= 'Leaving UPDATE_ROW ';
266 pa_debug.write(l_module_name,pa_debug.g_err_stage,
267 l_debug_level3);
268 END IF;
269
270 EXCEPTION
271 WHEN PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc THEN
272 x_return_status := FND_API.G_RET_STS_ERROR;
273
274 IF l_debug_mode = 'Y' THEN
275 pa_debug.reset_curr_function;
276 END IF;
277
278 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_PT_CO_IMPL_STATUSES_PKG' ,
279 p_procedure_name => 'Update_Row');
280
281 WHEN OTHERS THEN
282 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
283 x_msg_count := 1;
284 x_msg_data := SQLERRM;
285 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_PT_CO_IMPL_STATUSES_PKG',
286 p_procedure_name => 'Update_Row');
287 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
288
289 END UPDATE_ROW;
290
291 /*==================================================================
292 API for deleting records of the table
293 ==================================================================*/
294 PROCEDURE DELETE_ROW (
295 p_pt_co_impl_statuses_id IN pa_pt_co_impl_statuses.pt_co_impl_statuses_id%TYPE,
296 p_fin_plan_type_id IN pa_pt_co_impl_statuses.fin_plan_type_id%TYPE,
297 p_ci_type_id IN pa_pt_co_impl_statuses.ci_type_id%TYPE,
298 p_version_type IN pa_pt_co_impl_statuses.version_type%TYPE,
299 p_status_code IN pa_pt_co_impl_statuses.status_code%TYPE,
300 p_record_version_number IN pa_pt_co_impl_statuses.record_version_number%TYPE,
301 p_lock_row IN VARCHAR2,
302 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
303 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
304 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
305 IS
306 l_debug_mode VARCHAR2(1);
307 l_debug_level3 CONSTANT NUMBER := 3;
308 l_module_name VARCHAR2(100) := 'UPDATE_ROW' || g_module_name;
309 l_return_status VARCHAR2(30);
310 l_msg_count NUMBER;
311 l_msg_index_out NUMBER;
312 l_data VARCHAR2(2000);
313 l_msg_data VARCHAR2(2000);
314 BEGIN
315
316 x_return_status := FND_API.G_RET_STS_SUCCESS;
317
318 IF p_pt_co_impl_statuses_id IS NOT NULL THEN
319 IF p_lock_row = 'Y' THEN
323 pa_debug.write(l_module_name,pa_debug.g_err_stage,
320 /* Calling Lock_Row */
321 IF l_debug_mode = 'Y' THEN
322 pa_debug.g_err_stage:= 'Calling Lock_Row when p_pt_co_impl_statuses_id is not null';
324 l_debug_level3);
325 END IF;
326
327 Lock_Row(p_row_id => null,
328 p_pt_co_impl_statuses_id => p_pt_co_impl_statuses_id,
329 p_record_version_number => p_record_version_number,
330 p_fin_plan_type_id => null,
331 p_ci_type_id => null,
332 p_version_type => null,
333 p_status_code => null,
334 x_return_status => l_return_status,
335 x_msg_count => l_msg_count,
336 x_msg_data => l_msg_data);
337
338 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
339 IF l_debug_mode = 'Y' THEN
340 pa_debug.g_err_stage:= 'Error in Lock_Row';
341 pa_debug.write(l_module_name,pa_debug.g_err_stage,l_debug_level3);
342 END IF;
343 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
344 END IF;
345 END IF;
346
347 IF l_debug_mode = 'Y' THEN
348 pa_debug.g_err_stage:= 'Calling Delte_Row ';
349 pa_debug.write(l_module_name,pa_debug.g_err_stage,
350 l_debug_level3);
351 END IF;
352
353 DELETE
354 FROM pa_pt_co_impl_statuses
355 WHERE pt_co_impl_statuses_id = p_pt_co_impl_statuses_id;
356
357 IF l_debug_mode = 'Y' THEN
358 pa_debug.g_err_stage:= 'Row Deleted';
359 pa_debug.write(l_module_name,pa_debug.g_err_stage,
360 l_debug_level3);
361 END IF;
362
363 ELSE
364 IF p_lock_row = 'Y' THEN
365 /* Calling Lock_Row */
366 IF l_debug_mode = 'Y' THEN
367 pa_debug.g_err_stage:= 'Calling Lock_Row when p_pt_co_impl_statuses_id is null';
368 pa_debug.write(l_module_name,pa_debug.g_err_stage,
369 l_debug_level3);
370 END IF;
371
372 Lock_Row(p_row_id => null,
373 p_pt_co_impl_statuses_id => null,
374 p_record_version_number => p_record_version_number,
375 p_fin_plan_type_id => p_fin_plan_type_id,
376 p_ci_type_id => p_ci_type_id,
377 p_version_type => p_version_type,
378 p_status_code => p_status_code,
379 x_return_status => l_return_status,
380 x_msg_count => l_msg_count,
381 x_msg_data => l_msg_data);
382
383 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
384 IF l_debug_mode = 'Y' THEN
385 pa_debug.g_err_stage:= 'Error in Lock_Row';
386 pa_debug.write(l_module_name,pa_debug.g_err_stage,l_debug_level3);
387 END IF;
388 RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
389 END IF;
390 END IF;
391
392 IF l_debug_mode = 'Y' THEN
393 pa_debug.g_err_stage:= 'Calling Delte_Row ';
394 pa_debug.write(l_module_name,pa_debug.g_err_stage,
395 l_debug_level3);
396 END IF;
397
398 DELETE
399 FROM pa_pt_co_impl_statuses
400 WHERE fin_plan_type_id = p_fin_plan_type_id
401 AND ci_type_id = p_ci_type_id
402 AND version_type = DECODE(p_version_type,
403 PA_FP_CONSTANTS_PKG.G_ELEMENT_TYPE_BOTH, version_type,
404 Nvl(p_version_type,version_type))
405 AND status_code = Nvl (p_status_code, status_code);
406
407 IF l_debug_mode = 'Y' THEN
408 pa_debug.g_err_stage:= 'Row Deleted';
409 pa_debug.write(l_module_name,pa_debug.g_err_stage,
410 l_debug_level3);
411 END IF;
412 END IF;
413
414 IF (SQL%NOTFOUND) THEN
415 PA_UTILS.Add_Message ( p_app_short_name => 'PA',
416 p_msg_name => 'PA_XC_RECORD_CHANGED');
417 x_return_status := FND_API.G_RET_STS_ERROR;
418 END IF;
419
420 EXCEPTION
421 WHEN OTHERS THEN
422 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
423 x_msg_count := 1;
424 x_msg_data := SQLERRM;
425 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_PT_CO_IMPL_STATUSES_PKG',
426 p_procedure_name => 'DELETE_ROW');
427 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
428
429 END DELETE_ROW;
430
431 /*==================================================================
432 API for locking records of the table
433 ==================================================================*/
434 PROCEDURE LOCK_ROW (
435 p_row_id IN ROWID,
439 p_ci_type_id IN pa_pt_co_impl_statuses.ci_type_id%TYPE,
436 p_pt_co_impl_statuses_id IN pa_pt_co_impl_statuses.pt_co_impl_statuses_id%TYPE,
437 p_record_version_number IN pa_pt_co_impl_statuses.record_version_number%TYPE,
438 p_fin_plan_type_id IN pa_pt_co_impl_statuses.fin_plan_type_id%TYPE,
440 p_version_type IN pa_pt_co_impl_statuses.version_type%TYPE,
441 p_status_code IN pa_pt_co_impl_statuses.status_code%TYPE,
442 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
443 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
444 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
445
446 IS
447 l_row_id ROWID;
448
449 l_debug_mode VARCHAR2(1);
450 l_debug_level3 CONSTANT NUMBER := 3;
451 l_module_name VARCHAR2(100) := 'UPDATE_ROW' || g_module_name;
452
453 CURSOR lock_rows_crs
454 IS
455 SELECT ROWID
456 FROM pa_pt_co_impl_statuses
457 WHERE fin_plan_type_id = p_fin_plan_type_id
458 AND ci_type_id = p_ci_type_id
459 AND version_type = DECODE(p_version_type,
460 PA_FP_CONSTANTS_PKG.G_ELEMENT_TYPE_BOTH, version_type,
461 Nvl(p_version_type,version_type))
462 AND status_code = Nvl (p_status_code, status_code)
463 FOR UPDATE NOWAIT;
464
465 l_row_id_rec lock_rows_crs%ROWTYPE;
466
467 BEGIN
468 x_return_status := FND_API.G_RET_STS_SUCCESS;
469
470 IF p_pt_co_impl_statuses_id IS NOT NULL THEN
471 IF l_debug_mode = 'Y' THEN
472 pa_debug.g_err_stage:= 'Lockin Row when p_pt_co_impl_statuses_id is not null';
473 pa_debug.write(l_module_name,pa_debug.g_err_stage,
474 l_debug_level3);
475 END IF;
476
477 SELECT ROWID
478 INTO l_row_id
479 FROM pa_pt_co_impl_statuses
480 WHERE pt_co_impl_statuses_id = p_pt_co_impl_statuses_id
481 AND record_version_number = Nvl(p_record_version_number, record_version_number)
482 FOR UPDATE NOWAIT;
483
484 IF l_debug_mode = 'Y' THEN
485 pa_debug.g_err_stage:= 'Row Locked when p_pt_co_impl_statuses_id is not null';
486 pa_debug.write(l_module_name,pa_debug.g_err_stage,
487 l_debug_level3);
488 END IF;
489 ELSE
490 IF l_debug_mode = 'Y' THEN
491 pa_debug.g_err_stage:= 'Locking Row when p_pt_co_impl_statuses_id is null';
492 pa_debug.write(l_module_name,pa_debug.g_err_stage,
493 l_debug_level3);
494 END IF;
495
496 OPEN lock_rows_crs;
497
498 LOOP
499 FETCH lock_rows_crs INTO l_row_id_rec;
500 EXIT WHEN lock_rows_crs%NOTFOUND;
501 END LOOP;
502
503 CLOSE lock_rows_crs;
504
505 END IF;
506
507 EXCEPTION
508 WHEN OTHERS THEN
509 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
510 x_msg_count := 1;
511 x_msg_data := SQLERRM;
512 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_PT_CO_IMPL_STATUSES_PKG',
513 p_procedure_name => 'LOCK_ROW');
514 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
515
516 END Lock_Row;
517
518 END PA_PT_CO_IMPL_STATUSES_PKG;