[Home] [Help]
1: PACKAGE BODY CS_KB_SET_LINKS_PKG AS
2: /* $Header: cskbslb.pls 120.1.12010000.2 2010/01/25 13:30:39 isugavan ship $ */
3:
4: --
5: -- Clone_link is to duplicate all data with previous verion set_id to new set_id
13: l_count number;
14: l_id number;
15: l_rowid varchar2(30);
16: cursor l_link_csr is
17: select * from cs_kb_set_links
18: where set_id = p_set_source_id;
19: BEGIN
20: -- Validate Set Id
21: select count(*) into l_count
29:
30: -- Copying data with previous set id to new set_id.
31: for rec_link in l_link_csr loop
32: -- dtian: use table handler instead
33: select cs_kb_set_links_s.nextval into l_id from dual;
34:
35: CS_KB_SET_LINKS_PKG.Insert_Row(
36: X_Rowid => l_rowid,
37: X_Link_Id => l_id,
31: for rec_link in l_link_csr loop
32: -- dtian: use table handler instead
33: select cs_kb_set_links_s.nextval into l_id from dual;
34:
35: CS_KB_SET_LINKS_PKG.Insert_Row(
36: X_Rowid => l_rowid,
37: X_Link_Id => l_id,
38: X_Link_type => REC_LINK.LINK_TYPE,
39: X_Object_Code => REC_LINK.OBJECT_CODE,
134: l_ext_obj_count NUMBER;
135:
136: CURSOR Check_Duplicate IS
137: SELECT count(*)
138: FROM CS_KB_SET_LINKS
139: WHERE set_id = P_SET_ID
140: AND other_id = P_OTHER_ID
141: AND object_code = P_OBJECT_CODE;
142:
166: -- from a particular object
167: CURSOR Count_Links_to_Soln_Ver(c_soln_id NUMBER, c_object_code VARCHAR2,
168: c_other_id NUMBER) IS
169: SELECT count(*)
170: FROM CS_KB_SET_LINKS
171: WHERE set_id = c_soln_id
172: AND object_code = c_object_code
173: AND other_id = c_other_id;
174:
270: -- End of Validation
271:
272: --prepare data, then insert new set link
273: IF( x_link_id is null ) THEN
274: select cs_kb_set_links_s.nextval into l_id from dual;
275: ELSE
276: l_id := x_link_id;
277: END IF;
278: --Start of Bugfix8513725
291: -- l_date := sysdate; -- Commented for Bugfix8513725
292: l_created_by := fnd_global.user_id;
293: l_login := fnd_global.login_id;
294:
295: CS_KB_SET_LINKS_PKG.Insert_Row(
296: X_Rowid => l_rowid,
297: X_Link_Id => l_id,
298: X_Link_type => p_link_type,
299: X_Object_Code => p_object_code,
322: X_ATTRIBUTE15 => P_ATTRIBUTE15
323: );
324:
325: -- Raise Business Event when a solution is linked
326: CS_KB_SET_LINKS_PKG.Raise_Solution_Linked_Event(
327: p_set_id => p_set_id,
328: p_object_code => p_object_code,
329: p_object_id => p_other_id,
330: p_link_id => l_id,
379: End ;
380: --End Of Bugfix8513725
381:
382: IF ( l_links_to_soln_ver_ct = 0 ) THEN
383: select cs_kb_set_links_s.nextval into l_other_link_id from dual;
384: CS_KB_SET_LINKS_PKG.Insert_Row(
385: X_Rowid => l_other_rowid,
386: X_Link_Id => l_other_link_id,
387: X_Link_type => p_link_type,
380: --End Of Bugfix8513725
381:
382: IF ( l_links_to_soln_ver_ct = 0 ) THEN
383: select cs_kb_set_links_s.nextval into l_other_link_id from dual;
384: CS_KB_SET_LINKS_PKG.Insert_Row(
385: X_Rowid => l_other_rowid,
386: X_Link_Id => l_other_link_id,
387: X_Link_type => p_link_type,
388: X_Object_Code => p_object_code,
421: WHEN OTHERS THEN
422: --dbms_output.put_line('in csl when others ');
423: ROLLBACK TO Create_Link_SP;
424: if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
425: fnd_log.string(fnd_log.LEVEL_UNEXPECTED, 'cs.plsql.cs_kb_set_links.create_set_link', SQLERRM );
426: end if;
427: FND_MESSAGE.set_name('CS', 'CS_KB_C_UNEXP_ERR');
428: FND_MSG_PUB.Add;
429: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR ;
707:
708: -- Validation Cursors
709: CURSOR Validate_Link IS
710: SELECT sl.set_id, sl.object_code, sl.other_id, sb.set_number, sb.status
711: FROM CS_KB_SET_LINKS sl, CS_KB_SETS_B sb
712: WHERE sl.link_id = P_LINK_ID
713: AND sl.set_id = sb.set_id
714: AND ( sb.status = 'PUB' OR sb.latest_version_flag = 'Y' );
715:
716: -- Cursor to fetch link to latest in-progress version of a solution
717: CURSOR Get_Link_To_Latest_Ver(c_soln_number VARCHAR2, c_object_code VARCHAR2,
718: c_other_id NUMBER) IS
719: SELECT sl.link_id, sl.set_id
720: FROM CS_KB_SET_LINKS sl, CS_KB_SETS_B sb
721: WHERE sb.set_number = c_soln_number
722: AND sb.latest_version_flag = 'Y'
723: AND sb.set_id = sl.set_id
724: AND sl.object_code = c_object_code
727: -- Cursor to fetch link to published version of a solution
728: CURSOR Get_Link_To_Published_Ver(c_soln_number VARCHAR2, c_object_code VARCHAR2,
729: c_other_id NUMBER) IS
730: SELECT sl.link_id, sl.set_id
731: FROM CS_KB_SET_LINKS sl, CS_KB_SETS_B sb
732: WHERE sb.set_number = c_soln_number
733: AND sb.status = 'PUB'
734: AND sb.set_id = sl.set_id
735: AND sl.object_code = c_object_code
815: l_date := sysdate;
816: l_updated_by := fnd_global.user_id;
817: l_login := fnd_global.login_id;
818:
819: CS_KB_SET_LINKS_PKG.Update_Row(
820: X_Link_Id => p_link_id,
821: X_Link_type => p_link_type,
822: X_Object_Code => p_object_code,
823: X_Set_Id => p_set_id,
842: X_ATTRIBUTE14 => P_ATTRIBUTE14,
843: X_ATTRIBUTE15 => P_ATTRIBUTE15);
844:
845: -- Raise Business Event when a solution link is updated
846: CS_KB_SET_LINKS_PKG.Raise_Soln_Link_Updated_Event(
847: p_set_id => p_set_id,
848: p_object_code => p_object_code,
849: p_object_id => p_other_id,
850: p_link_id => p_link_id,
874: CLOSE Get_Link_To_Published_Ver;
875: END IF;
876: IF ( l_other_link_id is not null
877: and l_other_link_id <> p_link_id ) THEN
878: CS_KB_SET_LINKS_PKG.Update_Row(
879: X_Link_Id => l_other_link_id,
880: X_Link_type => p_link_type,
881: X_Object_Code => p_object_code,
882: X_Set_Id => l_other_soln_id,
906: exception
907: when others then
908: ROLLBACK TO Update_Link_SP;
909: if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
910: fnd_log.string(fnd_log.LEVEL_UNEXPECTED, 'cs.plsql.cs_kb_set_links.update_set_link', SQLERRM );
911: end if;
912: FND_MESSAGE.set_name('CS', 'CS_KB_C_UNEXP_ERR');
913: FND_MSG_PUB.Add;
914: X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR ;
984: ) return number is
985: cursor get_link_id( c_set_id NUMBER, c_object_code VARCHAR2,
986: c_other_id NUMBER )IS
987: select link_id
988: from cs_kb_set_links
989: where set_id = c_set_id
990: and object_code = c_object_code
991: and other_id = c_other_id;
992:
1025: -- Cursor to validate link exists and is to either a published solution
1026: -- version or an in-progress version.
1027: cursor Valid_Link IS
1028: select sb.set_number, sb.status, sl.object_code, sl.other_id
1029: from cs_kb_set_links sl, cs_kb_sets_b sb
1030: where sl.link_id = P_LINK_ID
1031: and sl.set_id = sb.set_id
1032: and ( sb.status = 'PUB' or sb.latest_version_flag = 'Y' );
1033:
1034: -- Cursor to fetch link to latest in-progress version of a solution
1035: CURSOR Get_Link_To_Other_Ver(c_soln_number VARCHAR2, c_object_code VARCHAR2,
1036: c_other_id NUMBER) IS
1037: SELECT sl.link_id
1038: FROM CS_KB_SET_LINKS sl, CS_KB_SETS_B sb
1039: WHERE sb.set_number = c_soln_number
1040: AND (sb.latest_version_flag = 'Y' or sb.status = 'PUB')
1041: AND sb.set_id = sl.set_id
1042: AND sl.object_code = c_object_code
1077: CLOSE Valid_Link;
1078:
1079: -- End Validation
1080:
1081: delete from CS_KB_SET_LINKS
1082: where LINK_ID = P_LINK_ID;
1083:
1084: -- If the link being deleted is to the published version of a solution,
1085: -- see if there is a corresponding link to the latest in-progress version.
1096:
1097: -- The link which link id is P_LINK_ID is already deleted. l_link_other_id is
1098: -- not null, then it must be the extra verion to be deleted.
1099: IF ( l_other_link_id is not null) THEN
1100: delete from CS_KB_SET_LINKS
1101: where LINK_ID = l_other_link_id;
1102: END IF;
1103:
1104: return OKAY_STATUS;
1105: EXCEPTION
1106: WHEN OTHERS THEN
1107: ROLLBACK TO Delete_Link_SP;
1108: if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
1109: fnd_log.string(fnd_log.LEVEL_UNEXPECTED, 'cs.plsql.cs_kb_set_links.delete_set_link', SQLERRM );
1110: end if;
1111: if fnd_msg_pub.Check_Msg_Level( fnd_msg_pub.G_MSG_LVL_ERROR) then
1112: FND_MESSAGE.set_name('CS', 'CS_KB_C_UNEXP_ERR');
1113: FND_MSG_PUB.Add;
1144: X_ATTRIBUTE13 in VARCHAR2,
1145: X_ATTRIBUTE14 in VARCHAR2,
1146: X_ATTRIBUTE15 in VARCHAR2) IS
1147:
1148: cursor C is select ROWID from CS_KB_SET_LINKS where LINK_ID = X_LINK_ID;
1149:
1150:
1151: BEGIN
1152:
1150:
1151: BEGIN
1152:
1153:
1154: insert into CS_KB_SET_LINKS (
1155: LINK_ID,
1156: LINK_TYPE,
1157: OBJECT_CODE,
1158: SET_ID,
1250: ) IS
1251:
1252: BEGIN
1253:
1254: update CS_KB_SET_LINKS set
1255:
1256: LINK_TYPE = X_LINK_TYPE,
1257: OBJECT_CODE = X_OBJECT_CODE,
1258: SET_ID = X_SET_ID,
1471:
1472: end Raise_Soln_Link_Updated_Event;
1473:
1474:
1475: end CS_KB_SET_LINKS_PKG;