31: -- CREATE_NODE --
32: -----------------
33: PROCEDURE CREATE_NODE (
34: p_api_version IN NUMBER,
35: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
36: p_commit IN VARCHAR2 := FND_API.G_FALSE,
37: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
38: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
39: X_return_status OUT NOCOPY VARCHAR2,
32: -----------------
33: PROCEDURE CREATE_NODE (
34: p_api_version IN NUMBER,
35: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
36: p_commit IN VARCHAR2 := FND_API.G_FALSE,
37: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
38: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
39: X_return_status OUT NOCOPY VARCHAR2,
40: X_msg_count OUT NOCOPY NUMBER,
33: PROCEDURE CREATE_NODE (
34: p_api_version IN NUMBER,
35: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
36: p_commit IN VARCHAR2 := FND_API.G_FALSE,
37: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
38: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
39: X_return_status OUT NOCOPY VARCHAR2,
40: X_msg_count OUT NOCOPY NUMBER,
41: X_msg_data OUT NOCOPY VARCHAR2
55: -- Standard start of API savepoint
56: SAVEPOINT CREATE_NODE_PVT;
57:
58: -- Standard call to check for call compatibility
59: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
60: THEN
61: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
62: END IF;
63:
57:
58: -- Standard call to check for call compatibility
59: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
60: THEN
61: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
62: END IF;
63:
64: -- Initialize message list if p_init_msg_list is set to TRUE
65: IF FND_API.To_Boolean(p_init_msg_list)
61: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
62: END IF;
63:
64: -- Initialize message list if p_init_msg_list is set to TRUE
65: IF FND_API.To_Boolean(p_init_msg_list)
66: THEN
67: FND_MSG_PUB.Initialize;
68: END IF;
69:
67: FND_MSG_PUB.Initialize;
68: END IF;
69:
70: -- Initialize API return status to success
71: X_return_status := FND_API.G_RET_STS_SUCCESS;
72:
73:
74: IF (p_x_node_rec.operation_flag = G_DML_CREATE)
75: THEN
78:
79: -- Check Error Message stack.
80: x_msg_count := FND_MSG_PUB.count_msg;
81: IF X_msg_count > 0 THEN
82: RAISE FND_API.G_EXC_ERROR;
83: END IF;
84:
85: IF p_x_node_rec.OPERATION_FLAG = G_DML_LINK
86: THEN
138:
139: SET_PC_HEADER_STATUS (p_x_node_rec.pc_header_id);
140:
141: -- Standard check for p_commit
142: IF FND_API.To_Boolean (p_commit)
143: THEN
144: COMMIT WORK;
145: END IF;
146:
146:
147: -- Standard call to get message count and if count is 1, get message info
148: FND_MSG_PUB.Count_And_Get ( p_count => X_msg_count,
149: p_data => X_msg_data,
150: p_encoded => fnd_api.g_false );
151:
152: EXCEPTION
153: WHEN FND_API.G_EXC_ERROR THEN
154: X_return_status := FND_API.G_RET_STS_ERROR;
149: p_data => X_msg_data,
150: p_encoded => fnd_api.g_false );
151:
152: EXCEPTION
153: WHEN FND_API.G_EXC_ERROR THEN
154: X_return_status := FND_API.G_RET_STS_ERROR;
155: Rollback to CREATE_NODE_PVT;
156: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
157: p_data => X_msg_data,
150: p_encoded => fnd_api.g_false );
151:
152: EXCEPTION
153: WHEN FND_API.G_EXC_ERROR THEN
154: X_return_status := FND_API.G_RET_STS_ERROR;
155: Rollback to CREATE_NODE_PVT;
156: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
157: p_data => X_msg_data,
158: p_encoded => fnd_api.g_false );
154: X_return_status := FND_API.G_RET_STS_ERROR;
155: Rollback to CREATE_NODE_PVT;
156: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
157: p_data => X_msg_data,
158: p_encoded => fnd_api.g_false );
159:
160: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
161: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
162: Rollback to CREATE_NODE_PVT;
156: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
157: p_data => X_msg_data,
158: p_encoded => fnd_api.g_false );
159:
160: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
161: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
162: Rollback to CREATE_NODE_PVT;
163: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
164: p_data => X_msg_data,
157: p_data => X_msg_data,
158: p_encoded => fnd_api.g_false );
159:
160: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
161: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
162: Rollback to CREATE_NODE_PVT;
163: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
164: p_data => X_msg_data,
165: p_encoded => fnd_api.g_false );
161: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
162: Rollback to CREATE_NODE_PVT;
163: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
164: p_data => X_msg_data,
165: p_encoded => fnd_api.g_false );
166:
167: WHEN OTHERS THEN
168: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
169: Rollback to CREATE_NODE_PVT;
164: p_data => X_msg_data,
165: p_encoded => fnd_api.g_false );
166:
167: WHEN OTHERS THEN
168: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
169: Rollback to CREATE_NODE_PVT;
170: IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
171: THEN
172: fnd_msg_pub.add_exc_msg( p_pkg_name => G_PKG_NAME,
174: p_error_text => SUBSTR(SQLERRM,1,240) );
175: END IF;
176: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
177: p_data => X_msg_data,
178: p_encoded => fnd_api.g_false );
179:
180: END CREATE_NODE;
181:
182: ------------------
183: -- UPDATE_NODE --
184: ------------------
185: PROCEDURE UPDATE_NODE (
186: p_api_version IN NUMBER,
187: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
188: p_commit IN VARCHAR2 := FND_API.G_FALSE,
189: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
190: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
191: X_return_status OUT NOCOPY VARCHAR2,
184: ------------------
185: PROCEDURE UPDATE_NODE (
186: p_api_version IN NUMBER,
187: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
188: p_commit IN VARCHAR2 := FND_API.G_FALSE,
189: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
190: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
191: X_return_status OUT NOCOPY VARCHAR2,
192: X_msg_count OUT NOCOPY NUMBER,
185: PROCEDURE UPDATE_NODE (
186: p_api_version IN NUMBER,
187: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
188: p_commit IN VARCHAR2 := FND_API.G_FALSE,
189: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
190: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
191: X_return_status OUT NOCOPY VARCHAR2,
192: X_msg_count OUT NOCOPY NUMBER,
193: X_msg_data OUT NOCOPY VARCHAR2
213: -- Standard start of API savepoint
214: SAVEPOINT UPDATE_NODE_PVT;
215:
216: -- Standard call to check for call compatibility
217: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
218: THEN
219: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
220: END IF;
221:
215:
216: -- Standard call to check for call compatibility
217: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
218: THEN
219: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
220: END IF;
221:
222: -- Initialize message list if p_init_msg_list is set to TRUE
223: IF FND_API.To_Boolean(p_init_msg_list)
219: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
220: END IF;
221:
222: -- Initialize message list if p_init_msg_list is set to TRUE
223: IF FND_API.To_Boolean(p_init_msg_list)
224: THEN
225: FND_MSG_PUB.Initialize;
226: END IF;
227:
225: FND_MSG_PUB.Initialize;
226: END IF;
227:
228: -- Initialize API return status to success
229: X_return_status := FND_API.G_RET_STS_SUCCESS;
230:
231: IF (p_x_node_rec.operation_flag = G_DML_UPDATE)
232: THEN
233: VALIDATE_NODE (p_x_node_rec);
235:
236: -- Check Error Message stack.
237: X_msg_count := FND_MSG_PUB.count_msg;
238: IF X_msg_count > 0 THEN
239: RAISE FND_API.G_EXC_ERROR;
240: END IF;
241:
242: IF p_x_node_rec.OPERATION_FLAG <> G_DML_LINK
243: THEN
249: THEN
250: CLOSE pc_node_csr;
251: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_NOT_FOUND');
252: FND_MSG_PUB.ADD;
253: RAISE FND_API.G_EXC_ERROR;
254: END IF;
255: CLOSE pc_node_csr;
256:
257: END IF;
276:
277: -- Check Error Message stack.
278: X_msg_count := FND_MSG_PUB.count_msg;
279: IF X_msg_count > 0 THEN
280: RAISE FND_API.G_EXC_ERROR;
281: END IF;
282:
283: -- Retrieve link id for this node; this is non-updatable field for this package
284: SELECT LINK_TO_NODE_ID
323:
324: SET_PC_HEADER_STATUS (p_x_node_rec.pc_header_id);
325:
326: -- Standard check for p_commit
327: IF FND_API.To_Boolean (p_commit)
328: THEN
329: COMMIT WORK;
330: END IF;
331:
331:
332: -- Standard call to get message count and if count is 1, get message info
333: FND_MSG_PUB.Count_And_Get ( p_count => X_msg_count,
334: p_data => X_msg_data,
335: p_encoded => fnd_api.g_false );
336:
337: EXCEPTION
338: WHEN FND_API.G_EXC_ERROR THEN
339: X_return_status := FND_API.G_RET_STS_ERROR;
334: p_data => X_msg_data,
335: p_encoded => fnd_api.g_false );
336:
337: EXCEPTION
338: WHEN FND_API.G_EXC_ERROR THEN
339: X_return_status := FND_API.G_RET_STS_ERROR;
340: Rollback to UPDATE_NODE_PVT;
341: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
342: p_data => X_msg_data,
335: p_encoded => fnd_api.g_false );
336:
337: EXCEPTION
338: WHEN FND_API.G_EXC_ERROR THEN
339: X_return_status := FND_API.G_RET_STS_ERROR;
340: Rollback to UPDATE_NODE_PVT;
341: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
342: p_data => X_msg_data,
343: p_encoded => fnd_api.g_false );
339: X_return_status := FND_API.G_RET_STS_ERROR;
340: Rollback to UPDATE_NODE_PVT;
341: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
342: p_data => X_msg_data,
343: p_encoded => fnd_api.g_false );
344:
345: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
346: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
347: Rollback to UPDATE_NODE_PVT;
341: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
342: p_data => X_msg_data,
343: p_encoded => fnd_api.g_false );
344:
345: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
346: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
347: Rollback to UPDATE_NODE_PVT;
348: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
349: p_data => X_msg_data,
342: p_data => X_msg_data,
343: p_encoded => fnd_api.g_false );
344:
345: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
346: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
347: Rollback to UPDATE_NODE_PVT;
348: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
349: p_data => X_msg_data,
350: p_encoded => fnd_api.g_false );
346: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
347: Rollback to UPDATE_NODE_PVT;
348: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
349: p_data => X_msg_data,
350: p_encoded => fnd_api.g_false );
351:
352: WHEN OTHERS THEN
353: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
354: Rollback to UPDATE_NODE_PVT;
349: p_data => X_msg_data,
350: p_encoded => fnd_api.g_false );
351:
352: WHEN OTHERS THEN
353: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
354: Rollback to UPDATE_NODE_PVT;
355: IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
356: THEN
357: fnd_msg_pub.add_exc_msg( p_pkg_name => G_PKG_NAME,
359: p_error_text => SUBSTR(SQLERRM,1,240) );
360: END IF;
361: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
362: p_data => X_msg_data,
363: p_encoded => fnd_api.g_false );
364:
365: END UPDATE_NODE;
366:
367: ------------------
368: -- DELETE_NODES --
369: ------------------
370: PROCEDURE DELETE_NODES (
371: p_api_version IN NUMBER,
372: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
373: p_commit IN VARCHAR2 := FND_API.G_FALSE,
374: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
375: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
376: X_return_status OUT NOCOPY VARCHAR2,
369: ------------------
370: PROCEDURE DELETE_NODES (
371: p_api_version IN NUMBER,
372: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
373: p_commit IN VARCHAR2 := FND_API.G_FALSE,
374: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
375: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
376: X_return_status OUT NOCOPY VARCHAR2,
377: X_msg_count OUT NOCOPY NUMBER,
370: PROCEDURE DELETE_NODES (
371: p_api_version IN NUMBER,
372: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
373: p_commit IN VARCHAR2 := FND_API.G_FALSE,
374: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
375: p_x_node_rec IN OUT NOCOPY AHL_PC_NODE_PUB.PC_NODE_REC,
376: X_return_status OUT NOCOPY VARCHAR2,
377: X_msg_count OUT NOCOPY NUMBER,
378: X_msg_data OUT NOCOPY VARCHAR2
389: l_debug_module CONSTANT VARCHAR2(100) := 'ahl.plsql.'||G_PKG_NAME||'.'||l_api_name;
390:
391: -- Bug 5130623
392: -- Added default values below.
393: l_ump_node_attached VARCHAR2(1) := FND_API.G_FALSE;
394: l_ump_unit_attached VARCHAR2(1) := FND_API.G_FALSE;
395: l_ump_part_attached VARCHAR2(1) := FND_API.G_FALSE;
396: l_fmp_attached VARCHAR2(1) := FND_API.G_FALSE;
397: l_open_nr VARCHAR2(1) := FND_API.G_FALSE;
390:
391: -- Bug 5130623
392: -- Added default values below.
393: l_ump_node_attached VARCHAR2(1) := FND_API.G_FALSE;
394: l_ump_unit_attached VARCHAR2(1) := FND_API.G_FALSE;
395: l_ump_part_attached VARCHAR2(1) := FND_API.G_FALSE;
396: l_fmp_attached VARCHAR2(1) := FND_API.G_FALSE;
397: l_open_nr VARCHAR2(1) := FND_API.G_FALSE;
398: l_mel_cdl_attached VARCHAR2(1) := FND_API.G_FALSE;
391: -- Bug 5130623
392: -- Added default values below.
393: l_ump_node_attached VARCHAR2(1) := FND_API.G_FALSE;
394: l_ump_unit_attached VARCHAR2(1) := FND_API.G_FALSE;
395: l_ump_part_attached VARCHAR2(1) := FND_API.G_FALSE;
396: l_fmp_attached VARCHAR2(1) := FND_API.G_FALSE;
397: l_open_nr VARCHAR2(1) := FND_API.G_FALSE;
398: l_mel_cdl_attached VARCHAR2(1) := FND_API.G_FALSE;
399:
392: -- Added default values below.
393: l_ump_node_attached VARCHAR2(1) := FND_API.G_FALSE;
394: l_ump_unit_attached VARCHAR2(1) := FND_API.G_FALSE;
395: l_ump_part_attached VARCHAR2(1) := FND_API.G_FALSE;
396: l_fmp_attached VARCHAR2(1) := FND_API.G_FALSE;
397: l_open_nr VARCHAR2(1) := FND_API.G_FALSE;
398: l_mel_cdl_attached VARCHAR2(1) := FND_API.G_FALSE;
399:
400: l_node_tbl T_ID_TBL;
393: l_ump_node_attached VARCHAR2(1) := FND_API.G_FALSE;
394: l_ump_unit_attached VARCHAR2(1) := FND_API.G_FALSE;
395: l_ump_part_attached VARCHAR2(1) := FND_API.G_FALSE;
396: l_fmp_attached VARCHAR2(1) := FND_API.G_FALSE;
397: l_open_nr VARCHAR2(1) := FND_API.G_FALSE;
398: l_mel_cdl_attached VARCHAR2(1) := FND_API.G_FALSE;
399:
400: l_node_tbl T_ID_TBL;
401: l_assos_tbl T_ID_TBL;
394: l_ump_unit_attached VARCHAR2(1) := FND_API.G_FALSE;
395: l_ump_part_attached VARCHAR2(1) := FND_API.G_FALSE;
396: l_fmp_attached VARCHAR2(1) := FND_API.G_FALSE;
397: l_open_nr VARCHAR2(1) := FND_API.G_FALSE;
398: l_mel_cdl_attached VARCHAR2(1) := FND_API.G_FALSE;
399:
400: l_node_tbl T_ID_TBL;
401: l_assos_tbl T_ID_TBL;
402: l_docs_tbl T_ID_TBL;
414: -- Standard start of API savepoint
415: SAVEPOINT DELETE_NODES_PVT;
416:
417: -- Standard call to check for call compatibility
418: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
419: THEN
420: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
421: END IF;
422:
416:
417: -- Standard call to check for call compatibility
418: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
419: THEN
420: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
421: END IF;
422:
423: -- Initialize message list if p_init_msg_list is set to TRUE
424: IF FND_API.To_Boolean(p_init_msg_list)
420: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
421: END IF;
422:
423: -- Initialize message list if p_init_msg_list is set to TRUE
424: IF FND_API.To_Boolean(p_init_msg_list)
425: THEN
426: FND_MSG_PUB.Initialize;
427: END IF;
428:
426: FND_MSG_PUB.Initialize;
427: END IF;
428:
429: -- Initialize API return status to success
430: X_return_status := FND_API.G_RET_STS_SUCCESS;
431:
432: VALIDATE_NODE (p_x_node_rec);
433:
434: -- Check Error Message stack.
433:
434: -- Check Error Message stack.
435: X_msg_count := FND_MSG_PUB.count_msg;
436: IF X_msg_count > 0 THEN
437: RAISE FND_API.G_EXC_ERROR;
438: END IF;
439:
440: -- API Body here...
441: IF (p_x_node_rec.pc_node_id IS NULL)
515: START WITH pc_node_id = l_linked_node_id
516: );
517:
518:
519: l_fmp_attached := FND_API.G_TRUE;
520:
521: EXCEPTION
522: WHEN NO_DATA_FOUND THEN
523: l_fmp_attached := FND_API.G_FALSE;
519: l_fmp_attached := FND_API.G_TRUE;
520:
521: EXCEPTION
522: WHEN NO_DATA_FOUND THEN
523: l_fmp_attached := FND_API.G_FALSE;
524: WHEN OTHERS THEN
525: l_fmp_attached := FND_API.G_FALSE;
526: END;
527:
521: EXCEPTION
522: WHEN NO_DATA_FOUND THEN
523: l_fmp_attached := FND_API.G_FALSE;
524: WHEN OTHERS THEN
525: l_fmp_attached := FND_API.G_FALSE;
526: END;
527:
528: IF (l_is_pc_primary = 'Y')
529: THEN
541: CONNECT BY parent_node_id = PRIOR pc_node_id
542: START WITH pc_node_id = l_linked_node_id
543: );
544:
545: l_mel_cdl_attached := FND_API.G_TRUE;
546:
547: EXCEPTION
548: WHEN NO_DATA_FOUND THEN
549: l_mel_cdl_attached := FND_API.G_FALSE;
545: l_mel_cdl_attached := FND_API.G_TRUE;
546:
547: EXCEPTION
548: WHEN NO_DATA_FOUND THEN
549: l_mel_cdl_attached := FND_API.G_FALSE;
550: WHEN OTHERS THEN
551: l_mel_cdl_attached := FND_API.G_FALSE;
552: END;
553:
547: EXCEPTION
548: WHEN NO_DATA_FOUND THEN
549: l_mel_cdl_attached := FND_API.G_FALSE;
550: WHEN OTHERS THEN
551: l_mel_cdl_attached := FND_API.G_FALSE;
552: END;
553:
554: -- Checking if the linked Node has any open NRs
555:
552: END;
553:
554: -- Checking if the linked Node has any open NRs
555:
556: l_open_nr := FND_API.G_FALSE;
557:
558: AHL_UMP_NONROUTINES_PVT.Check_Open_NRs
559: (
560: x_return_status => l_return_status,
561: p_pc_node_id => l_linked_node_id
562: );
563: -- Need to verify whether to pass all PC nodes within the tree, etc or not
564:
565: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
566: THEN
567: l_open_nr := FND_API.G_TRUE;
568: END IF;
569: -- R12 [priyan MEL/CDL]
563: -- Need to verify whether to pass all PC nodes within the tree, etc or not
564:
565: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
566: THEN
567: l_open_nr := FND_API.G_TRUE;
568: END IF;
569: -- R12 [priyan MEL/CDL]
570:
571: -- Checking if the linked node has any utilization forecasts, etc
581: CONNECT BY parent_node_id = PRIOR pc_node_id
582: START WITH pc_node_id = l_linked_node_id
583: );
584:
585: l_ump_node_attached := FND_API.G_TRUE;
586:
587: EXCEPTION
588: WHEN NO_DATA_FOUND THEN
589: l_ump_node_attached := FND_API.G_FALSE;
585: l_ump_node_attached := FND_API.G_TRUE;
586:
587: EXCEPTION
588: WHEN NO_DATA_FOUND THEN
589: l_ump_node_attached := FND_API.G_FALSE;
590: WHEN OTHERS THEN
591: l_ump_node_attached := FND_API.G_FALSE;
592: END;
593:
587: EXCEPTION
588: WHEN NO_DATA_FOUND THEN
589: l_ump_node_attached := FND_API.G_FALSE;
590: WHEN OTHERS THEN
591: l_ump_node_attached := FND_API.G_FALSE;
592: END;
593:
594: -- Checking if the units/items attached within the tree of the linked node has any utilization forecasts, etc
595: IF (l_assos_type = G_UNIT)
607: CONNECT BY parent_node_id = PRIOR pc_node_id
608: START WITH pc_node_id = l_linked_node_id
609: );
610:
611: l_ump_unit_attached := FND_API.G_TRUE;
612:
613: EXCEPTION
614: WHEN NO_DATA_FOUND THEN
615: l_ump_unit_attached := FND_API.G_FALSE;
611: l_ump_unit_attached := FND_API.G_TRUE;
612:
613: EXCEPTION
614: WHEN NO_DATA_FOUND THEN
615: l_ump_unit_attached := FND_API.G_FALSE;
616: WHEN OTHERS THEN
617: l_ump_unit_attached := FND_API.G_FALSE;
618: END;
619:
613: EXCEPTION
614: WHEN NO_DATA_FOUND THEN
615: l_ump_unit_attached := FND_API.G_FALSE;
616: WHEN OTHERS THEN
617: l_ump_unit_attached := FND_API.G_FALSE;
618: END;
619:
620: ELSE
621: BEGIN
632: CONNECT BY parent_node_id = PRIOR pc_node_id
633: START WITH pc_node_id = l_linked_node_id
634: );
635:
636: l_ump_part_attached := FND_API.G_TRUE;
637:
638: EXCEPTION
639: WHEN NO_DATA_FOUND THEN
640: l_ump_part_attached := FND_API.G_FALSE;
636: l_ump_part_attached := FND_API.G_TRUE;
637:
638: EXCEPTION
639: WHEN NO_DATA_FOUND THEN
640: l_ump_part_attached := FND_API.G_FALSE;
641: WHEN OTHERS THEN
642: l_ump_part_attached := FND_API.G_FALSE;
643: END;
644:
638: EXCEPTION
639: WHEN NO_DATA_FOUND THEN
640: l_ump_part_attached := FND_API.G_FALSE;
641: WHEN OTHERS THEN
642: l_ump_part_attached := FND_API.G_FALSE;
643: END;
644:
645: END IF;
646:
679: END IF;
680:
681: -- R12 [priyan MEL/CDL]
682: IF (
683: l_fmp_attached = FND_API.G_FALSE AND
684: l_ump_node_attached = FND_API.G_FALSE AND
685: l_ump_unit_attached = FND_API.G_FALSE AND
686: l_ump_part_attached = FND_API.G_FALSE AND
687: l_open_nr = FND_API.G_FALSE AND
680:
681: -- R12 [priyan MEL/CDL]
682: IF (
683: l_fmp_attached = FND_API.G_FALSE AND
684: l_ump_node_attached = FND_API.G_FALSE AND
685: l_ump_unit_attached = FND_API.G_FALSE AND
686: l_ump_part_attached = FND_API.G_FALSE AND
687: l_open_nr = FND_API.G_FALSE AND
688: l_mel_cdl_attached = FND_API.G_FALSE
681: -- R12 [priyan MEL/CDL]
682: IF (
683: l_fmp_attached = FND_API.G_FALSE AND
684: l_ump_node_attached = FND_API.G_FALSE AND
685: l_ump_unit_attached = FND_API.G_FALSE AND
686: l_ump_part_attached = FND_API.G_FALSE AND
687: l_open_nr = FND_API.G_FALSE AND
688: l_mel_cdl_attached = FND_API.G_FALSE
689: )
682: IF (
683: l_fmp_attached = FND_API.G_FALSE AND
684: l_ump_node_attached = FND_API.G_FALSE AND
685: l_ump_unit_attached = FND_API.G_FALSE AND
686: l_ump_part_attached = FND_API.G_FALSE AND
687: l_open_nr = FND_API.G_FALSE AND
688: l_mel_cdl_attached = FND_API.G_FALSE
689: )
690: THEN
683: l_fmp_attached = FND_API.G_FALSE AND
684: l_ump_node_attached = FND_API.G_FALSE AND
685: l_ump_unit_attached = FND_API.G_FALSE AND
686: l_ump_part_attached = FND_API.G_FALSE AND
687: l_open_nr = FND_API.G_FALSE AND
688: l_mel_cdl_attached = FND_API.G_FALSE
689: )
690: THEN
691:
684: l_ump_node_attached = FND_API.G_FALSE AND
685: l_ump_unit_attached = FND_API.G_FALSE AND
686: l_ump_part_attached = FND_API.G_FALSE AND
687: l_open_nr = FND_API.G_FALSE AND
688: l_mel_cdl_attached = FND_API.G_FALSE
689: )
690: THEN
691:
692: If(l_assos_tbl.COUNT > 0)
727:
728: -- Check Error Message stack.
729: X_msg_count := FND_MSG_PUB.count_msg;
730: IF X_msg_count > 0 THEN
731: RAISE FND_API.G_EXC_ERROR;
732: END IF;
733:
734: IF ((l_node_tbl.COUNT > 0) AND (p_x_node_rec.pc_node_id IS NOT NULL))
735: THEN
740:
741: SET_PC_HEADER_STATUS (p_x_node_rec.pc_header_id);
742:
743: -- R12 [priyan MEL/CDL]
744: ELSIF (l_open_nr <> FND_API.G_FALSE)
745: THEN
746: -- Priyan :
747: -- Fix for Bug #5514157
748: -- When the PC header is being deleted and if open NRs exists, add an error
763: --There exists open Non-routines for units associated to the corresponding complete PC,
764: -- hence cannot delete the draft version.
765: FND_MESSAGE.Set_Name('AHL','AHL_PC_HEADER_DEL_OPEN_NR');
766: FND_MSG_PUB.ADD;
767: RAISE FND_API.G_EXC_ERROR;
768: END IF;
769: ELSIF (l_mel_cdl_attached <> FND_API.G_FALSE)
770: THEN
771: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_DEL_MELCDL_ASSOS');
765: FND_MESSAGE.Set_Name('AHL','AHL_PC_HEADER_DEL_OPEN_NR');
766: FND_MSG_PUB.ADD;
767: RAISE FND_API.G_EXC_ERROR;
768: END IF;
769: ELSIF (l_mel_cdl_attached <> FND_API.G_FALSE)
770: THEN
771: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_DEL_MELCDL_ASSOS');
772: FND_MSG_PUB.ADD;
773: -- R12 [priyan MEL/CDL]
770: THEN
771: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_DEL_MELCDL_ASSOS');
772: FND_MSG_PUB.ADD;
773: -- R12 [priyan MEL/CDL]
774: ELSIF (l_fmp_attached <> FND_API.G_FALSE)
775: THEN
776: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_DEL_FMP_ASSOS');
777: FND_MSG_PUB.ADD;
778: -- Bug 5130623
776: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_DEL_FMP_ASSOS');
777: FND_MSG_PUB.ADD;
778: -- Bug 5130623
779: -- TYPO - Added l_ump_unit_attached check below
780: ELSIF (l_ump_node_attached <> FND_API.G_FALSE OR l_ump_part_attached <> FND_API.G_FALSE OR l_ump_unit_attached <> FND_API.G_FALSE)
781: THEN
782: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_DEL_UMP_ASSOS');
783: FND_MSG_PUB.ADD;
784: -- Bug 5130623
792:
793: -- Check Error Message stack.
794: X_msg_count := FND_MSG_PUB.count_msg;
795: IF X_msg_count > 0 THEN
796: RAISE FND_API.G_EXC_ERROR;
797: END IF;
798:
799: -- Standard check for p_commit
800: IF FND_API.To_Boolean (p_commit)
796: RAISE FND_API.G_EXC_ERROR;
797: END IF;
798:
799: -- Standard check for p_commit
800: IF FND_API.To_Boolean (p_commit)
801: THEN
802: COMMIT WORK;
803: END IF;
804:
804:
805: -- Standard call to get message count and if count is 1, get message info
806: FND_MSG_PUB.Count_And_Get ( p_count => X_msg_count,
807: p_data => X_msg_data,
808: p_encoded => fnd_api.g_false );
809:
810: EXCEPTION
811: WHEN FND_API.G_EXC_ERROR THEN
812: X_return_status := FND_API.G_RET_STS_ERROR;
807: p_data => X_msg_data,
808: p_encoded => fnd_api.g_false );
809:
810: EXCEPTION
811: WHEN FND_API.G_EXC_ERROR THEN
812: X_return_status := FND_API.G_RET_STS_ERROR;
813: Rollback to DELETE_NODES_PVT;
814: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
815: p_data => X_msg_data,
808: p_encoded => fnd_api.g_false );
809:
810: EXCEPTION
811: WHEN FND_API.G_EXC_ERROR THEN
812: X_return_status := FND_API.G_RET_STS_ERROR;
813: Rollback to DELETE_NODES_PVT;
814: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
815: p_data => X_msg_data,
816: p_encoded => fnd_api.g_false );
812: X_return_status := FND_API.G_RET_STS_ERROR;
813: Rollback to DELETE_NODES_PVT;
814: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
815: p_data => X_msg_data,
816: p_encoded => fnd_api.g_false );
817:
818: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
819: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
820: Rollback to DELETE_NODES_PVT;
814: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
815: p_data => X_msg_data,
816: p_encoded => fnd_api.g_false );
817:
818: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
819: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
820: Rollback to DELETE_NODES_PVT;
821: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
822: p_data => X_msg_data,
815: p_data => X_msg_data,
816: p_encoded => fnd_api.g_false );
817:
818: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
819: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
820: Rollback to DELETE_NODES_PVT;
821: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
822: p_data => X_msg_data,
823: p_encoded => fnd_api.g_false );
819: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
820: Rollback to DELETE_NODES_PVT;
821: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
822: p_data => X_msg_data,
823: p_encoded => fnd_api.g_false );
824:
825: WHEN OTHERS THEN
826: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
827: Rollback to DELETE_NODES_PVT;
822: p_data => X_msg_data,
823: p_encoded => fnd_api.g_false );
824:
825: WHEN OTHERS THEN
826: X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
827: Rollback to DELETE_NODES_PVT;
828: IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
829: THEN
830: fnd_msg_pub.add_exc_msg( p_pkg_name => G_PKG_NAME,
832: p_error_text => SUBSTR(SQLERRM,1,240) );
833: END IF;
834: FND_MSG_PUB.count_and_get( p_count => X_msg_count,
835: p_data => X_msg_data,
836: p_encoded => fnd_api.g_false );
837:
838: END DELETE_NODES;
839:
840: ------------------------
954: IF (l_object_version_number <> p_node_rec.object_version_number)
955: THEN
956: FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
957: FND_MSG_PUB.ADD;
958: RAISE FND_API.G_EXC_ERROR;
959: END IF;
960: END IF;
961:
962: -- Check if PC exists
965: IF (check_header_id_exists%NOTFOUND)
966: THEN
967: FND_MESSAGE.Set_Name('AHL','AHL_PC_NOT_FOUND');
968: FND_MSG_PUB.ADD;
969: RAISE FND_API.G_EXC_ERROR;
970: END IF;
971:
972: -- If PC status is DRAFT/APPROVAL_REJECTED, allow node operations
973: IF (l_pc_status <> 'DRAFT' and l_pc_status <> 'APPROVAL_REJECTED')
973: IF (l_pc_status <> 'DRAFT' and l_pc_status <> 'APPROVAL_REJECTED')
974: THEN
975: FND_MESSAGE.Set_Name('AHL','AHL_PC_STATUS_COMPLETE');
976: FND_MSG_PUB.ADD;
977: RAISE FND_API.G_EXC_ERROR;
978: END IF;
979: CLOSE check_header_id_exists;
980:
981: -- Check for parent node id in the PC - it should exist
986: IF (check_parent_exists%NOTFOUND)
987: THEN
988: FND_MESSAGE.Set_Name('AHL','AHL_PC_PARENT_NODE_NOT_FOUND');
989: FND_MSG_PUB.ADD;
990: RAISE FND_API.G_EXC_ERROR;
991: END IF;
992: CLOSE check_parent_exists;
993: END IF;
994:
1003: IF (check_name_exists%FOUND)
1004: THEN
1005: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_NAME_EXISTS');
1006: FND_MSG_PUB.ADD;
1007: RAISE FND_API.G_EXC_ERROR;
1008: END IF;
1009: CLOSE check_name_exists;
1010: ELSE
1011: -- added the following 1 line code for Bug# 2561404
1016: IF (check_root_node_exists%FOUND)
1017: THEN
1018: FND_MESSAGE.Set_Name('AHL','AHL_PC_ROOT_NODE_EXISTS');
1019: FND_MSG_PUB.ADD;
1020: RAISE FND_API.G_EXC_ERROR;
1021: END IF;
1022: CLOSE check_root_node_exists;
1023: END IF;
1024: END IF;
1032: IF (check_id_exists%NOTFOUND)
1033: THEN
1034: FND_MESSAGE.Set_Name('AHL','AHL_PC_NODE_NOT_FOUND');
1035: FND_MSG_PUB.ADD;
1036: RAISE FND_API.G_EXC_ERROR;
1037: END IF;
1038: CLOSE check_id_exists;
1039: END IF;
1040:
1046: IF (check_leaf_node%FOUND)
1047: THEN
1048: FND_MESSAGE.Set_Name('AHL','AHL_PC_LEAF_NODE');
1049: FND_MSG_PUB.ADD;
1050: RAISE FND_API.G_EXC_ERROR;
1051: END IF;
1052: CLOSE check_leaf_node;
1053: END IF;
1054: