2915: END IF;
2916: IF p_restrict_entity = 'CONTACTS'
2917: THEN
2918: OPEN x_cursor FOR
2919: SELECT /*+ USE_NL(d stage) ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2920: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2921: WHERE contains( concat_col, p_contains_str)>0
2922: AND d.search_context_id = p_search_ctx_id
2923: AND( (l_search_merged ='Y' )
2916: IF p_restrict_entity = 'CONTACTS'
2917: THEN
2918: OPEN x_cursor FOR
2919: SELECT /*+ USE_NL(d stage) ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2920: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2921: WHERE contains( concat_col, p_contains_str)>0
2922: AND d.search_context_id = p_search_ctx_id
2923: AND( (l_search_merged ='Y' )
2924: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2927: END IF;
2928: IF p_restrict_entity = 'PARTY_SITES'
2929: THEN
2930: OPEN x_cursor FOR
2931: SELECT /*+ USE_NL(d stage) ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N3) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2932: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2933: WHERE contains( concat_col, p_contains_str)>0
2934: AND d.search_context_id = p_search_ctx_id
2935: AND( (l_search_merged ='Y' )
2928: IF p_restrict_entity = 'PARTY_SITES'
2929: THEN
2930: OPEN x_cursor FOR
2931: SELECT /*+ USE_NL(d stage) ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N3) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2932: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2933: WHERE contains( concat_col, p_contains_str)>0
2934: AND d.search_context_id = p_search_ctx_id
2935: AND( (l_search_merged ='Y' )
2936: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2944: hz_utility_v2pub.debug(p_message=>'Single Party Scenario',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2945: END IF;
2946: IF p_search_rel_cpts = 'N' THEN
2947: OPEN x_cursor FOR
2948: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2949: FROM HZ_STAGED_CONTACT_POINTS stage
2950: WHERE contains( concat_col, p_contains_str)>0
2951: AND( (l_search_merged ='Y' )
2952: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2945: END IF;
2946: IF p_search_rel_cpts = 'N' THEN
2947: OPEN x_cursor FOR
2948: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2949: FROM HZ_STAGED_CONTACT_POINTS stage
2950: WHERE contains( concat_col, p_contains_str)>0
2951: AND( (l_search_merged ='Y' )
2952: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2953: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2953: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2954: AND stage.party_id = p_party_id;
2955: ELSE
2956: OPEN x_cursor FOR
2957: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2958: FROM HZ_STAGED_CONTACT_POINTS stage
2959: WHERE contains( concat_col, p_contains_str)>0
2960: AND( (l_search_merged ='Y' )
2961: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2954: AND stage.party_id = p_party_id;
2955: ELSE
2956: OPEN x_cursor FOR
2957: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2958: FROM HZ_STAGED_CONTACT_POINTS stage
2959: WHERE contains( concat_col, p_contains_str)>0
2960: AND( (l_search_merged ='Y' )
2961: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2962: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2961: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2962: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2963: AND stage.party_id = p_party_id
2964: UNION
2965: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ stage.CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, stage.PARTY_SITE_ID, stage.ORG_CONTACT_ID , TX1, TX5
2966: FROM HZ_STAGED_CONTACT_POINTS stage, hz_relationships r, hz_org_contacts oc
2967: WHERE contains( concat_col, p_contains_str)>0
2968: AND r.object_id = p_party_id
2969: AND( (l_search_merged ='Y' )
2962: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2963: AND stage.party_id = p_party_id
2964: UNION
2965: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ stage.CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, stage.PARTY_SITE_ID, stage.ORG_CONTACT_ID , TX1, TX5
2966: FROM HZ_STAGED_CONTACT_POINTS stage, hz_relationships r, hz_org_contacts oc
2967: WHERE contains( concat_col, p_contains_str)>0
2968: AND r.object_id = p_party_id
2969: AND( (l_search_merged ='Y' )
2970: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2984: hz_utility_v2pub.debug(p_message=>'Either Search context id is null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2985: END IF;
2986: OPEN x_cursor FOR
2987: SELECT CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
2988: FROM HZ_STAGED_CONTACT_POINTS stage
2989: WHERE contains( concat_col, p_contains_str)>0
2990: AND EXISTS (
2991: SELECT 1 FROM HZ_STAGED_PARTIES p
2992: WHERE p.PARTY_ID = stage.PARTY_ID
3003: hz_utility_v2pub.debug(p_message=>'Search_context_id is not null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3004: END IF;
3005: IF p_person_api = 'Y' THEN
3006: OPEN x_cursor FOR
3007: SELECT /*+ ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
3008: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
3009: WHERE contains( concat_col, p_contains_str)>0
3010: AND d.search_context_id = p_search_ctx_id
3011: AND d.party_id = stage.party_id
3004: END IF;
3005: IF p_person_api = 'Y' THEN
3006: OPEN x_cursor FOR
3007: SELECT /*+ ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
3008: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
3009: WHERE contains( concat_col, p_contains_str)>0
3010: AND d.search_context_id = p_search_ctx_id
3011: AND d.party_id = stage.party_id
3012: AND( (l_search_merged ='Y' )
3013: OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
3014: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
3015: AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id)
3016: UNION
3017: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, r.subject_id, stage.PARTY_SITE_ID, stage.ORG_CONTACT_ID , TX1, TX5
3018: FROM HZ_DQM_PARTIES_GT d, HZ_RELATIONSHIPS r, HZ_ORG_CONTACTS oc, HZ_STAGED_CONTACT_POINTS stage
3019: WHERE contains( concat_col, p_contains_str)>0
3020: AND d.search_context_id = p_search_ctx_id
3021: AND d.party_id = r.subject_id
3014: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
3015: AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id)
3016: UNION
3017: SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, r.subject_id, stage.PARTY_SITE_ID, stage.ORG_CONTACT_ID , TX1, TX5
3018: FROM HZ_DQM_PARTIES_GT d, HZ_RELATIONSHIPS r, HZ_ORG_CONTACTS oc, HZ_STAGED_CONTACT_POINTS stage
3019: WHERE contains( concat_col, p_contains_str)>0
3020: AND d.search_context_id = p_search_ctx_id
3021: AND d.party_id = r.subject_id
3022: AND r.relationship_id = oc.party_relationship_id
3026: OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
3027: AND (p_dup_party_id IS NULL OR r.subject_id <> p_dup_party_id);
3028: ELSE
3029: OPEN x_cursor FOR
3030: SELECT /*+ ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
3031: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
3032: WHERE contains( concat_col, p_contains_str)>0
3033: AND d.search_context_id = p_search_ctx_id
3034: AND d.party_id = stage.party_id
3027: AND (p_dup_party_id IS NULL OR r.subject_id <> p_dup_party_id);
3028: ELSE
3029: OPEN x_cursor FOR
3030: SELECT /*+ ORDERED INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5
3031: FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
3032: WHERE contains( concat_col, p_contains_str)>0
3033: AND d.search_context_id = p_search_ctx_id
3034: AND d.party_id = stage.party_id
3035: AND( (l_search_merged ='Y' )
3047: IF (l_check_dt > 0 ) THEN
3048: IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3049: hz_utility_v2pub.debug(p_message=>'Restrict Sql has the selective_cpt hint',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3050: END IF;
3051: l_hint := '/*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_U1) */';
3052: ELSIF (l_check > 0 ) THEN
3053: IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3054: hz_utility_v2pub.debug(p_message=>'Restrict Sql has the selective hint',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3055: END IF;
3052: ELSIF (l_check > 0 ) THEN
3053: IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3054: hz_utility_v2pub.debug(p_message=>'Restrict Sql has the selective hint',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3055: END IF;
3056: l_hint := '/*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */';
3057: END IF;
3058: IF l_search_merged = 'Y' THEN
3059: l_status_sql := ' ' ;
3060: ELSIF l_search_merged = 'I' THEN
3071: p_restrict_sql1 := replace( p_restrict_sql, 'stage.', 'stage1.');
3072: ELSE
3073: p_restrict_sql1 := 'stage1.'||p_restrict_sql;
3074: END IF;
3075: l_sqlstr := ' SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5'||
3076: ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3077: ' WHERE contains( concat_col, :cont)>0 '||
3078: ' AND (stage.org_contact_id is null '||
3079: ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3072: ELSE
3073: p_restrict_sql1 := 'stage1.'||p_restrict_sql;
3074: END IF;
3075: l_sqlstr := ' SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5'||
3076: ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3077: ' WHERE contains( concat_col, :cont)>0 '||
3078: ' AND (stage.org_contact_id is null '||
3079: ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3080: ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3081: ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
3082: ' AND ('||p_restrict_sql||'))' ||
3083: ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ' ||
3084: ' UNION ' ||
3085: ' SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5'||
3086: ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3087: ' WHERE contains( concat_col, :cont)>0 '||
3088: ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3089: ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3082: ' AND ('||p_restrict_sql||'))' ||
3083: ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ' ||
3084: ' UNION ' ||
3085: ' SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5'||
3086: ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3087: ' WHERE contains( concat_col, :cont)>0 '||
3088: ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3089: ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3090: ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
3097: OPEN x_cursor FOR l_sqlstr USING p_contains_str,
3098: p_dup_party_id, p_dup_party_id, p_contains_str, p_dup_party_id, p_dup_party_id;
3099: ELSE
3100: l_sqlstr := 'SELECT ' || l_hint ||' CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5'||
3101: ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3102: ' WHERE contains( concat_col, :cont)>0'||
3103: ' AND EXISTS ('||
3104: ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
3105: ' WHERE p.party_id = stage.party_id ' ||
3114: ,p_dup_party_id, p_dup_party_id;
3115: END IF;
3116: ELSE
3117: l_sqlstr := 'SELECT ' || l_hint ||' CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX5'||
3118: ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3119: ' WHERE contains( concat_col, :cont)>0'||
3120: ' AND EXISTS ('||
3121: ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
3122: ' WHERE p.party_id = stage.party_id ' ||