1 PACKAGE BODY HZ_MATCH_RULE_34 AS
2 /*=======================================================================+
3 | Copyright (c) 1999 Oracle Corporation Redwood Shores, California, USA|
4 | All rights reserved. |
5 +=======================================================================+
6 | NAME
7 | HZ_MATCH_RULE_34
8 |
9 | DESCRIPTION
10 |
11 | Compiled by the HZ Match Rule Compiler
12 | -- Do Not Modify --
13 |
14 | PUBLIC PROCEDURES
15 | find_parties
16 | get_matching_party_sites
17 | get_matching_contacts
18 | get_matching_contact_points
19 | get_score_details
20 |
21 | HISTORY
22 | 28-NOV-2012 Generated by HZ Match Rule Compiler
23 |
24 *=======================================================================*/
25
26 -- ==========================================================================================
27 -- ============MATCH RULE COMPILER GENERATED CODE FOR SEARCH MATCH RULES ====================
28 -- ==========================================================================================
29
30 TYPE vlisttype IS TABLE of VARCHAR2(255) INDEX BY BINARY_INTEGER ;
31 call_order vlisttype;
32 call_max_score HZ_PARTY_SEARCH.IDList;
33 call_type vlisttype;
34 g_party_stage_rec HZ_PARTY_STAGE.party_stage_rec_type;
35 g_party_site_stage_list HZ_PARTY_STAGE.party_site_stage_list;
36 g_contact_stage_list HZ_PARTY_STAGE.contact_stage_list;
37 g_contact_pt_stage_list HZ_PARTY_STAGE.contact_pt_stage_list;
38 g_mappings HZ_PARTY_SEARCH.IDList;
39 g_max_id NUMBER:=2000000000;
40 g_other_party_level_attribs BOOLEAN;
41
42 g_debug_count NUMBER := 0;
43 g_score_until_thresh BOOLEAN:=false;
44
45 g_thres_score NUMBER:=1000;
46 g_ps_den_only BOOLEAN;
47 g_index_owner VARCHAR2(255);
48 distinct_search_cpt_types NUMBER ;
49
50 PROCEDURE output_long_strings(input_str VARCHAR2 DEFAULT NULL)
51 IS
52 remainder_str VARCHAR2(4000);
53 current_pos NUMBER ;
54 temp VARCHAR2(300) ;
55 BEGIN
56 remainder_str := input_str ;
57 current_pos := 1 ;
58 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
59 WHILE remainder_str IS NOT NULL
60 LOOP
61 temp := substr(remainder_str, 1 , 255 );
62 hz_utility_v2pub.debug(p_message=>' '||temp,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
63 current_pos := current_pos + 255 ;
64 remainder_str := substr(input_str,current_pos );
65 END LOOP ;
66 END IF;
67 END ;
68 FUNCTION check_estimate_hits (
69 p_entity VARCHAR2,
70 p_contains_str VARCHAR2) RETURN NUMBER IS
71
72 ustatus VARCHAR2(255);
73 dstatus VARCHAR2(255);
74 l_bool BOOLEAN;
75 l_hits NUMBER := 0;
76 BEGIN
77 IF g_index_owner IS NULL THEN
78 l_bool := fnd_installation.GET_APP_INFO('AR',ustatus,dstatus,g_index_owner);
79 END IF;
80 IF p_entity='PARTY' THEN
81
82 l_hits := CTX_QUERY.count_hits(
83 g_index_owner||'.'||'HZ_STAGE_PARTIES_T1',p_contains_str, false);
84 ELSIF p_entity='PARTY_SITES' THEN
85 l_hits := CTX_QUERY.count_hits(
86 g_index_owner||'.'||'HZ_STAGE_PARTY_SITES_T1',p_contains_str, false);
87 ELSIF p_entity='CONTACTS' THEN
88 l_hits := CTX_QUERY.count_hits(
89 g_index_owner||'.'||'HZ_STAGE_CONTACT_T1',p_contains_str, false);
90 ELSIF p_entity='CONTACT_POINTS' THEN
91 l_hits := CTX_QUERY.count_hits(
92 g_index_owner||'.'||'HZ_STAGE_CPT_T1',p_contains_str, false);
93 END IF;
94 RETURN floor(l_hits/2) ;
95
96
97 exception
98 when others then
99 if (instrb(SQLERRM,'DRG-51030')>0) then
100 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_WILDCARD_ERR');
101 FND_MSG_PUB.ADD;
102 RAISE FND_API.G_EXC_ERROR;
103 elsif (instrb(SQLERRM,'DRG-50943')>0) then
104 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
105 FND_MSG_PUB.ADD;
106 RAISE FND_API.G_EXC_ERROR;
107 else
108 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
109 end if;
110 END;
111
112
113 FUNCTION get_adjusted_restrict_sql (p_restrict_sql VARCHAR2)
114 RETURN VARCHAR2
115 IS
116 p_person_restrict_sql VARCHAR2(32767);
117 p_restrict1_sql VARCHAR2(32767);
118 p_final_restrict_sql VARCHAR2(32767);
119 BEGIN
120 p_final_restrict_sql := p_restrict_sql ;
121 IF p_restrict_sql IS NOT NULL
122 THEN
123 IF instrb(p_restrict_sql, 'STAGE.') > 0
124 THEN
125 p_restrict1_sql := replace( p_restrict_sql, 'STAGE.', 'stage1.');
126 ELSIF instrb(p_restrict_sql, 'stage.') > 0
127 THEN
128 p_restrict1_sql := replace( p_restrict_sql, 'stage.', 'stage1.');
129 END IF;
130 p_person_restrict_sql := 'exists ( SELECT 1 from HZ_ORG_CONTACTS oc, hz_relationships r'
131 || ' where oc.org_contact_id = stage.org_contact_id and'
132 || ' r.relationship_id = oc.party_relationship_id'
133 || ' and r.subject_type = ''PERSON'' AND r.object_type = ''ORGANIZATION'' '
134 || ' and exists ( SELECT 1 FROM HZ_PARTIES stage1 where stage1.party_id = r.subject_id'
135 || ' and ' || p_restrict1_sql || ' ) )' ;
136 p_final_restrict_sql := '((stage.org_contact_id is null and ' || p_restrict_sql || ') or (stage.org_contact_id is not null and '
137 || p_person_restrict_sql || ' ))';
138 END IF;
139 return p_final_restrict_sql ;
140 END;
141 FUNCTION map_id (in_id NUMBER) RETURN NUMBER IS
142 l_newidx NUMBER;
143 BEGIN
144 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
145 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
146 hz_utility_v2pub.debug(p_message=>'calling the function map_id',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
147 END IF;
148 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
149 hz_utility_v2pub.debug(p_message=>'argument in_id = '||in_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
150 END IF;
151 IF in_id<g_max_id THEN
152 RETURN in_id;
153 ELSE
154 FOR I in 1..g_mappings.COUNT LOOP
155 IF in_id = g_mappings(I) THEN
156 RETURN (g_max_id+I);
157 END IF;
158 END LOOP;
159 l_newidx := g_mappings.COUNT+1;
160 g_mappings(l_newidx) := in_id;
161 RETURN (g_max_id+l_newidx);
162 END IF;
163 END;
164 FUNCTION GET_PARTY_SCORE
165 (
166 p_table_TX32 VARCHAR2
167 ,p_table_TX34 VARCHAR2
168 ,p_table_TX35 VARCHAR2
169 ,p_table_TX39 VARCHAR2
170 ,p_table_TX158 VARCHAR2
171 ,p_table_TX40 VARCHAR2
172 ,p_table_TX43 VARCHAR2
173 ,p_table_TX42 VARCHAR2
174 ,p_table_TX44 VARCHAR2
175 ,p_table_TX46 VARCHAR2
176 ,p_table_TX47 VARCHAR2
177 ,p_table_TX48 VARCHAR2
178 ,p_table_TX156 VARCHAR2
179 ,p_table_TX157 VARCHAR2
180 ) RETURN NUMBER IS
181 total NUMBER := 0;
182 BEGIN
183 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
184 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
185 hz_utility_v2pub.debug(p_message=>'calling the function get_party_score',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
186 END IF;
187 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
188 hz_utility_v2pub.debug(p_message=>'GET_PARTY_SCORE ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
189 END IF;
190 IF g_score_until_thresh AND (total)>=g_thres_score THEN
191 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
192 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
193 END IF;
194 RETURN total;
195 END IF;
196 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX32, p_table_TX32,36) THEN
197 total := total+60;
198 IF g_score_until_thresh AND (total)>=g_thres_score THEN
199 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
200 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
201 END IF;
202 RETURN total;
203 END IF;
204 END IF;
205 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX34, p_table_TX34,38) THEN
206 total := total+100;
207 IF g_score_until_thresh AND (total)>=g_thres_score THEN
208 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
209 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
210 END IF;
211 RETURN total;
212 END IF;
213 END IF;
214 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX35, p_table_TX35,39) THEN
215 total := total+100;
216 IF g_score_until_thresh AND (total)>=g_thres_score THEN
217 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
218 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
219 END IF;
220 RETURN total;
221 END IF;
222 END IF;
223 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX39, p_table_TX39,43) THEN
224 total := total+60;
225 IF g_score_until_thresh AND (total)>=g_thres_score THEN
226 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
227 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
228 END IF;
229 RETURN total;
230 END IF;
231 ELSIF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX40, p_table_TX40,44) THEN
232 total := total+48;
233 IF g_score_until_thresh AND (total)>=g_thres_score THEN
234 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
235 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
236 END IF;
237 RETURN total;
238 END IF;
239 ELSIF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX158, p_table_TX158,123) THEN
240 total := total+36;
241 IF g_score_until_thresh AND (total)>=g_thres_score THEN
242 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
243 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
244 END IF;
245 RETURN total;
246 END IF;
247 END IF;
248 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX42, p_table_TX42,46) THEN
249 total := total+30;
250 IF g_score_until_thresh AND (total)>=g_thres_score THEN
251 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
252 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
253 END IF;
254 RETURN total;
255 END IF;
256 ELSIF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX43, p_table_TX43,47) THEN
257 total := total+24;
258 IF g_score_until_thresh AND (total)>=g_thres_score THEN
259 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
260 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
261 END IF;
262 RETURN total;
263 END IF;
264 END IF;
265 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX44, p_table_TX44,49) THEN
266 total := total+56;
267 IF g_score_until_thresh AND (total)>=g_thres_score THEN
268 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
269 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
270 END IF;
271 RETURN total;
272 END IF;
273 END IF;
274 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX46, p_table_TX46,51) THEN
275 total := total+30;
276 IF g_score_until_thresh AND (total)>=g_thres_score THEN
277 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
278 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
279 END IF;
280 RETURN total;
281 END IF;
282 END IF;
283 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX47, p_table_TX47,52) THEN
284 total := total+10;
285 IF g_score_until_thresh AND (total)>=g_thres_score THEN
286 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
287 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
288 END IF;
289 RETURN total;
290 END IF;
291 END IF;
292 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX48, p_table_TX48,53) THEN
293 total := total+10;
294 IF g_score_until_thresh AND (total)>=g_thres_score THEN
295 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
296 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
297 END IF;
298 RETURN total;
299 END IF;
300 END IF;
301 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX156, p_table_TX156,121) THEN
302 total := total+20;
303 IF g_score_until_thresh AND (total)>=g_thres_score THEN
304 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
305 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
306 END IF;
307 RETURN total;
308 END IF;
309 END IF;
310 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_stage_rec.TX157, p_table_TX157,122) THEN
311 total := total+30;
312 IF g_score_until_thresh AND (total)>=g_thres_score THEN
313 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
314 hz_utility_v2pub.debug(p_message=>'get_party_score returned total = '||total,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
315 END IF;
316 RETURN total;
317 END IF;
318 END IF;
319 RETURN total;
320 END;
321 FUNCTION GET_PARTY_SITES_SCORE (
322 x_matchidx OUT NUMBER
323 ,p_table_TX9 VARCHAR2
324 ,p_table_TX10 VARCHAR2
325 ,p_table_TX11 VARCHAR2
326 ,p_table_TX13 VARCHAR2
327 ,p_table_TX14 VARCHAR2
328 ,p_table_TX15 VARCHAR2
329 ,p_table_TX20 VARCHAR2
330 ,p_table_TX21 VARCHAR2
331 ,p_table_TX22 VARCHAR2
332 ) RETURN NUMBER IS
333 maxscore NUMBER := 0;
334 l_current_score NUMBER := 0;
335 BEGIN
336 x_matchidx := 0;
337 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
338 RETURN l_current_score;
339 END IF;
340 FOR J IN 1..g_party_site_stage_list.COUNT LOOP
341 l_current_score := 0;
342 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX9, p_table_TX9,(50000*(J-1)+72)) THEN
343 l_current_score:=l_current_score+ 30;
344 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
345 x_matchidx:=J;
346 RETURN l_current_score;
347 END IF;
348 ELSIF -- l_current_score<24 AND
349 HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX10, p_table_TX10,(50000*(J-1)+73)) THEN
350 l_current_score:=l_current_score+ 24;
351 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
352 x_matchidx:=J;
353 RETURN l_current_score;
354 END IF;
355 END IF;
356 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX11, p_table_TX11,(50000*(J-1)+74)) THEN
357 l_current_score:=l_current_score+ 35;
358 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
359 x_matchidx:=J;
360 RETURN l_current_score;
361 END IF;
362 END IF;
363 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX13, p_table_TX13,(50000*(J-1)+76)) THEN
364 l_current_score:=l_current_score+ 14;
365 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
366 x_matchidx:=J;
367 RETURN l_current_score;
368 END IF;
369 END IF;
370 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX14, p_table_TX14,(50000*(J-1)+77)) THEN
371 l_current_score:=l_current_score+ 20;
372 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
373 x_matchidx:=J;
374 RETURN l_current_score;
375 END IF;
376 ELSIF -- l_current_score<16 AND
377 HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX15, p_table_TX15,(50000*(J-1)+78)) THEN
378 l_current_score:=l_current_score+ 16;
379 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
380 x_matchidx:=J;
381 RETURN l_current_score;
382 END IF;
383 END IF;
384 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX20, p_table_TX20,(50000*(J-1)+83)) THEN
385 l_current_score:=l_current_score+ 20;
386 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
387 x_matchidx:=J;
388 RETURN l_current_score;
389 END IF;
390 ELSIF -- l_current_score<16 AND
391 HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX21, p_table_TX21,(50000*(J-1)+84)) THEN
392 l_current_score:=l_current_score+ 16;
393 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
394 x_matchidx:=J;
395 RETURN l_current_score;
396 END IF;
397 END IF;
398 IF HZ_DQM_SEARCH_UTIL.is_match(g_party_site_stage_list(J).TX22, p_table_TX22,(50000*(J-1)+85)) THEN
399 l_current_score:=l_current_score+ 30;
400 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
401 x_matchidx:=J;
402 RETURN l_current_score;
403 END IF;
404 END IF;
405 IF maxscore<l_current_score THEN
406 maxscore:=l_current_score;
407 x_matchidx:=J;
408 END IF;
409 END LOOP;
410 RETURN maxscore;
411 END;
412 FUNCTION GET_CONTACTS_SCORE (
413 x_matchidx OUT NUMBER
414 ) RETURN NUMBER IS
415 maxscore NUMBER := 0;
416 l_current_score NUMBER := 0;
417 BEGIN
418 x_matchidx := 0;
419 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
420 RETURN l_current_score;
421 END IF;
422 FOR J IN 1..g_contact_stage_list.COUNT LOOP
423 l_current_score := 0;
424 IF maxscore<l_current_score THEN
425 maxscore:=l_current_score;
426 x_matchidx:=J;
427 END IF;
428 END LOOP;
429 RETURN maxscore;
430 END;
431 FUNCTION GET_CONTACT_POINTS_SCORE (
432 x_matchidx OUT NUMBER
433 ,p_table_TX1 VARCHAR2
434 ,p_table_TX3 VARCHAR2
435 ,p_table_TX4 VARCHAR2
436 ) RETURN NUMBER IS
437 maxscore NUMBER := 0;
438 l_current_score NUMBER := 0;
439 BEGIN
440 x_matchidx := 0;
441 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
442 RETURN l_current_score;
443 END IF;
444 FOR J IN 1..g_contact_pt_stage_list.COUNT LOOP
445 l_current_score := 0;
446 IF HZ_DQM_SEARCH_UTIL.is_match(g_contact_pt_stage_list(J).TX1, p_table_TX1,(50000*(J-1)+110)) THEN
447 l_current_score:=l_current_score+ 80;
448 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
449 x_matchidx:=J;
450 RETURN l_current_score;
451 END IF;
452 END IF;
453 IF HZ_DQM_SEARCH_UTIL.is_match(g_contact_pt_stage_list(J).TX3, p_table_TX3,(50000*(J-1)+112)) THEN
454 l_current_score:=l_current_score+ 30;
455 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
456 x_matchidx:=J;
457 RETURN l_current_score;
458 END IF;
459 END IF;
460 IF HZ_DQM_SEARCH_UTIL.is_match(g_contact_pt_stage_list(J).TX4, p_table_TX4,(50000*(J-1)+113)) THEN
461 l_current_score:=l_current_score+ 10;
462 IF g_score_until_thresh AND (l_current_score)>=g_thres_score THEN
463 x_matchidx:=J;
464 RETURN l_current_score;
465 END IF;
466 END IF;
467 IF maxscore<l_current_score THEN
468 maxscore:=l_current_score;
469 x_matchidx:=J;
470 END IF;
471 END LOOP;
472 RETURN maxscore;
473 END;
474 FUNCTION get_attrib_val(
475 p_record_id NUMBER
476 ,p_entity VARCHAR2
477 ,p_attribute VARCHAR2
478 ) RETURN VARCHAR2 IS
479 l_matched_value VARCHAR2(2000);
480 l_party_type VARCHAR2(255);
481 BEGIN
482 IF p_entity = 'PARTY' THEN
483 IF p_attribute = 'ALL_ACCOUNT_NAMES' THEN
484
485 l_matched_value := HZ_PARTY_ACQUIRE.get_account_info (p_record_id, p_entity,'ALL_ACCOUNT_NAMES','Y');
486 RETURN l_matched_value;
487 END IF;
488 IF p_attribute = 'PARTY_NUMBER' THEN
489
490 SELECT party_type INTO l_party_type
491 FROM HZ_PARTIES
492 WHERE party_id = p_record_id;
493 IF l_party_type = 'ORGANIZATION' THEN
494 SELECT PARTY_NUMBER INTO l_matched_value
495 FROM HZ_PARTIES
496 WHERE party_id = p_record_id
497 and rownum = 1;
498 ELSIF l_party_type = 'PERSON' THEN
499 SELECT PARTY_NUMBER INTO l_matched_value
500 FROM HZ_PARTIES
501 WHERE party_id = p_record_id
502 and rownum = 1;
503 END IF;
504 RETURN l_matched_value;
505 END IF;
506 IF p_attribute = 'ALL_ACCOUNT_NUMBERS' THEN
507
508 l_matched_value := HZ_PARTY_ACQUIRE.get_account_info (p_record_id, p_entity,'ALL_ACCOUNT_NUMBERS','Y');
509 RETURN l_matched_value;
510 END IF;
511 IF p_attribute = 'PARTY_ALL_NAMES' THEN
512
513 l_matched_value := HZ_PARTY_ACQUIRE.get_known_as (p_record_id, p_entity,'PARTY_ALL_NAMES','Y');
514 RETURN l_matched_value;
515 END IF;
516 IF p_attribute = 'TAX_NAME' THEN
517
518 SELECT party_type INTO l_party_type
519 FROM HZ_PARTIES
520 WHERE party_id = p_record_id;
521 IF l_party_type = 'ORGANIZATION' THEN
522 SELECT TAX_NAME INTO l_matched_value
523 FROM HZ_ORGANIZATION_PROFILES
524 WHERE party_id = p_record_id
525 and effective_end_date is null
526 and rownum = 1;
527 ELSIF l_party_type = 'PERSON' THEN
528 SELECT TAX_NAME INTO l_matched_value
529 FROM HZ_PERSON_PROFILES
530 WHERE party_id = p_record_id
531 and effective_end_date is null
532 and rownum = 1;
533 END IF;
534 RETURN l_matched_value;
535 END IF;
536 IF p_attribute = 'TAX_REFERENCE' THEN
537
538 SELECT party_type INTO l_party_type
539 FROM HZ_PARTIES
540 WHERE party_id = p_record_id;
541 IF l_party_type = 'ORGANIZATION' THEN
542 SELECT TAX_REFERENCE INTO l_matched_value
543 FROM HZ_ORGANIZATION_PROFILES
544 WHERE party_id = p_record_id
545 and effective_end_date is null
546 and rownum = 1;
547 ELSIF l_party_type = 'PERSON' THEN
548 SELECT TAX_REFERENCE INTO l_matched_value
549 FROM HZ_PERSON_PROFILES
550 WHERE party_id = p_record_id
551 and effective_end_date is null
552 and rownum = 1;
553 END IF;
554 RETURN l_matched_value;
555 END IF;
556 IF p_attribute = 'SIC_CODE' THEN
557
558 SELECT party_type INTO l_party_type
559 FROM HZ_PARTIES
560 WHERE party_id = p_record_id;
561 IF l_party_type = 'ORGANIZATION' THEN
562 SELECT SIC_CODE INTO l_matched_value
563 FROM HZ_ORGANIZATION_PROFILES
564 WHERE party_id = p_record_id
565 and effective_end_date is null
566 and rownum = 1;
567 ELSIF l_party_type = 'PERSON' THEN
568 SELECT SIC_CODE INTO l_matched_value
569 FROM HZ_ORGANIZATION_PROFILES
570 WHERE party_id = p_record_id
571 and rownum = 1;
572 END IF;
573 RETURN l_matched_value;
574 END IF;
575 IF p_attribute = 'SIC_CODE_TYPE' THEN
576
577 SELECT party_type INTO l_party_type
578 FROM HZ_PARTIES
579 WHERE party_id = p_record_id;
580 IF l_party_type = 'ORGANIZATION' THEN
581 SELECT SIC_CODE_TYPE INTO l_matched_value
582 FROM HZ_ORGANIZATION_PROFILES
583 WHERE party_id = p_record_id
584 and effective_end_date is null
585 and rownum = 1;
586 ELSIF l_party_type = 'PERSON' THEN
587 SELECT SIC_CODE_TYPE INTO l_matched_value
588 FROM HZ_ORGANIZATION_PROFILES
589 WHERE party_id = p_record_id
590 and rownum = 1;
591 END IF;
592 RETURN l_matched_value;
593 END IF;
594 IF p_attribute = 'CATEGORY_CODE' THEN
595
596 SELECT party_type INTO l_party_type
597 FROM HZ_PARTIES
598 WHERE party_id = p_record_id;
602 WHERE party_id = p_record_id
599 IF l_party_type = 'ORGANIZATION' THEN
600 SELECT CATEGORY_CODE INTO l_matched_value
601 FROM HZ_PARTIES
603 and rownum = 1;
604 ELSIF l_party_type = 'PERSON' THEN
605 SELECT CATEGORY_CODE INTO l_matched_value
606 FROM HZ_PARTIES
607 WHERE party_id = p_record_id
611 END IF;
608 and rownum = 1;
609 END IF;
610 RETURN l_matched_value;
612 IF p_attribute = 'REFERENCE_USE_FLAG' THEN
613
614 SELECT party_type INTO l_party_type
615 FROM HZ_PARTIES
616 WHERE party_id = p_record_id;
617 IF l_party_type = 'ORGANIZATION' THEN
618 SELECT REFERENCE_USE_FLAG INTO l_matched_value
619 FROM HZ_PARTIES
620 WHERE party_id = p_record_id
621 and rownum = 1;
622 ELSIF l_party_type = 'PERSON' THEN
623 SELECT REFERENCE_USE_FLAG INTO l_matched_value
624 FROM HZ_PARTIES
625 WHERE party_id = p_record_id
626 and rownum = 1;
627 END IF;
628 RETURN l_matched_value;
629 END IF;
630 IF p_attribute = 'CORPORATION_CLASS' THEN
631
632 SELECT party_type INTO l_party_type
633 FROM HZ_PARTIES
634 WHERE party_id = p_record_id;
635 IF l_party_type = 'ORGANIZATION' THEN
636 SELECT CORPORATION_CLASS INTO l_matched_value
637 FROM HZ_ORGANIZATION_PROFILES
638 WHERE party_id = p_record_id
639 and effective_end_date is null
640 and rownum = 1;
641 ELSIF l_party_type = 'PERSON' THEN
642 SELECT CORPORATION_CLASS INTO l_matched_value
643 FROM HZ_ORGANIZATION_PROFILES
644 WHERE party_id = p_record_id
645 and rownum = 1;
646 END IF;
647 RETURN l_matched_value;
648 END IF;
649 NULL;
650 END IF;
651 IF p_entity = 'PARTY_SITES' THEN
652 IF p_attribute = 'CITY' THEN
653 BEGIN
654 SELECT HZ_LOCATIONS.CITY
655 INTO l_matched_value
656 FROM HZ_PARTY_SITES, HZ_LOCATIONS
657 WHERE HZ_PARTY_SITES.party_site_id = p_record_id
658 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id and rownum=1;
659 EXCEPTION
660 WHEN NO_DATA_FOUND THEN
661 l_matched_value := 'Err';
662 END;
663 RETURN l_matched_value;
664 END IF;
665 IF p_attribute = 'POSTAL_CODE' THEN
666 BEGIN
667 SELECT HZ_LOCATIONS.POSTAL_CODE
668 INTO l_matched_value
669 FROM HZ_PARTY_SITES, HZ_LOCATIONS
670 WHERE HZ_PARTY_SITES.party_site_id = p_record_id
671 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id and rownum=1;
672 EXCEPTION
673 WHEN NO_DATA_FOUND THEN
674 l_matched_value := 'Err';
675 END;
676 RETURN l_matched_value;
677 END IF;
678 IF p_attribute = 'PROVINCE' THEN
679 BEGIN
680 SELECT HZ_LOCATIONS.PROVINCE
681 INTO l_matched_value
682 FROM HZ_PARTY_SITES, HZ_LOCATIONS
683 WHERE HZ_PARTY_SITES.party_site_id = p_record_id
684 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id and rownum=1;
685 EXCEPTION
686 WHEN NO_DATA_FOUND THEN
687 l_matched_value := 'Err';
688 END;
689 RETURN l_matched_value;
690 END IF;
691 IF p_attribute = 'STATE' THEN
692 BEGIN
693 SELECT HZ_LOCATIONS.STATE
694 INTO l_matched_value
695 FROM HZ_PARTY_SITES, HZ_LOCATIONS
696 WHERE HZ_PARTY_SITES.party_site_id = p_record_id
697 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id and rownum=1;
698 EXCEPTION
699 WHEN NO_DATA_FOUND THEN
700 l_matched_value := 'Err';
701 END;
702 RETURN l_matched_value;
703 END IF;
704 IF p_attribute = 'COUNTY' THEN
705 BEGIN
706 SELECT HZ_LOCATIONS.COUNTY
707 INTO l_matched_value
708 FROM HZ_PARTY_SITES, HZ_LOCATIONS
709 WHERE HZ_PARTY_SITES.party_site_id = p_record_id
710 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id and rownum=1;
711 EXCEPTION
712 WHEN NO_DATA_FOUND THEN
713 l_matched_value := 'Err';
714 END;
715 RETURN l_matched_value;
716 END IF;
717 IF p_attribute = 'COUNTRY' THEN
718 BEGIN
719 SELECT HZ_LOCATIONS.COUNTRY
720 INTO l_matched_value
721 FROM HZ_PARTY_SITES, HZ_LOCATIONS
722 WHERE HZ_PARTY_SITES.party_site_id = p_record_id
723 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id and rownum=1;
724 EXCEPTION
725 WHEN NO_DATA_FOUND THEN
729 END IF;
726 l_matched_value := 'Err';
727 END;
728 RETURN l_matched_value;
730 NULL;
731 END IF;
732 IF p_entity = 'CONTACTS' THEN
733 NULL;
734 END IF;
735 IF p_entity = 'CONTACT_POINTS' THEN
736 IF p_attribute = 'FLEX_FORMAT_PHONE_NUMBER' THEN
737 l_matched_value := HZ_PARTY_ACQUIRE.get_phone_number (p_record_id, p_entity,'FLEX_FORMAT_PHONE_NUMBER','Y');
738 RETURN l_matched_value;
739 END IF;
740 IF p_attribute = 'PHONE_AREA_CODE' THEN
741 BEGIN
742 SELECT PHONE_AREA_CODE INTO l_matched_value
743 FROM HZ_CONTACT_POINTS
744 WHERE contact_point_id = p_record_id and rownum=1;
745 EXCEPTION
746 WHEN NO_DATA_FOUND THEN
747 l_matched_value := 'Err';
748 END;
749 RETURN l_matched_value;
750 END IF;
751 IF p_attribute = 'PHONE_COUNTRY_CODE' THEN
752 BEGIN
753 SELECT PHONE_COUNTRY_CODE INTO l_matched_value
754 FROM HZ_CONTACT_POINTS
755 WHERE contact_point_id = p_record_id and rownum=1;
756 EXCEPTION
757 WHEN NO_DATA_FOUND THEN
758 l_matched_value := 'Err';
759 END;
760 RETURN l_matched_value;
761 END IF;
762 NULL;
763 END IF;
764 END;
765 PROCEDURE INSERT_PARTY_SCORE (
766 p_party_id IN NUMBER
767 ,p_record_id IN NUMBER
768 ,p_search_ctx_id IN NUMBER
769 ,p_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type
770 ,p_stage_rec IN HZ_PARTY_STAGE.party_stage_rec_type
771 ,p_table_TX32 VARCHAR2
772 ,p_table_TX34 VARCHAR2
773 ,p_table_TX35 VARCHAR2
774 ,p_table_TX39 VARCHAR2
775 ,p_table_TX158 VARCHAR2
776 ,p_table_TX40 VARCHAR2
777 ,p_table_TX43 VARCHAR2
778 ,p_table_TX42 VARCHAR2
779 ,p_table_TX44 VARCHAR2
780 ,p_table_TX46 VARCHAR2
781 ,p_table_TX47 VARCHAR2
782 ,p_table_TX48 VARCHAR2
783 ,p_table_TX156 VARCHAR2
784 ,p_table_TX157 VARCHAR2
785 ,p_idx IN NUMBER) IS
786 l_current_score NUMBER:=0;
787 l_score NUMBER;
788 l_attrib_value VARCHAR2(2000);
789 BEGIN
790 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
794 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX32, p_table_TX32,(50000*(p_idx-1)+36)) THEN
791 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - INSERT_PARTY_SCORE',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
792 END IF;
793 l_score :=0;
795 l_score :=60;
796 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
797 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
798 END IF;
799 END IF;
800 IF l_score>0 THEN
801 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
802 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
803 END IF;
804 l_attrib_value := get_attrib_val(p_record_id,'PARTY','ALL_ACCOUNT_NAMES');
805 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
806 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
807 END IF;
808 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
809 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
810 VALUES (
811 p_party_id,p_record_id,p_search_ctx_id,'ALL_ACCOUNT_NAMES',
812 'PARTY', p_search_rec.ALL_ACCOUNT_NAMES,
813 l_attrib_value,l_score);
814 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
815 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
816 END IF;
817 END IF;
818 l_score :=0;
819 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX34, p_table_TX34,(50000*(p_idx-1)+38)) THEN
820 l_score :=100;
821 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
822 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
823 END IF;
824 END IF;
825 IF l_score>0 THEN
826 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
830 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
827 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
828 END IF;
829 l_attrib_value := get_attrib_val(p_record_id,'PARTY','PARTY_NUMBER');
831 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
832 END IF;
833 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
834 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
835 VALUES (
836 p_party_id,p_record_id,p_search_ctx_id,'PARTY_NUMBER',
837 'PARTY', p_search_rec.PARTY_NUMBER,
838 l_attrib_value,l_score);
839 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
840 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
841 END IF;
842 END IF;
843 l_score :=0;
844 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX35, p_table_TX35,(50000*(p_idx-1)+39)) THEN
845 l_score :=100;
846 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
847 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
848 END IF;
849 END IF;
850 IF l_score>0 THEN
851 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
852 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
853 END IF;
854 l_attrib_value := get_attrib_val(p_record_id,'PARTY','ALL_ACCOUNT_NUMBERS');
855 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
856 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
857 END IF;
858 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
859 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
860 VALUES (
861 p_party_id,p_record_id,p_search_ctx_id,'ALL_ACCOUNT_NUMBERS',
862 'PARTY', p_search_rec.ALL_ACCOUNT_NUMBERS,
863 l_attrib_value,l_score);
864 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
865 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
866 END IF;
867 END IF;
868 l_score :=0;
869 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX39, p_table_TX39,(50000*(p_idx-1)+43)) THEN
870 l_score :=60;
871 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
872 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
873 END IF;
874 ELSIF l_current_score<48 AND
875 HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX40, p_table_TX40,(50000*(p_idx-1)+44)) THEN
876 l_score :=48;
877 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
878 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
879 END IF;
880 ELSIF l_current_score<36 AND
881 HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX158, p_table_TX158,(50000*(p_idx-1)+123)) THEN
882 l_score :=36;
883 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
884 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
885 END IF;
886 END IF;
887 IF l_score>0 THEN
888 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
889 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
890 END IF;
891 l_attrib_value := get_attrib_val(p_record_id,'PARTY','PARTY_ALL_NAMES');
892 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
893 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
894 END IF;
895 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
896 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
897 VALUES (
898 p_party_id,p_record_id,p_search_ctx_id,'PARTY_ALL_NAMES',
899 'PARTY', p_search_rec.PARTY_ALL_NAMES,
900 l_attrib_value,l_score);
901 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
902 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
903 END IF;
904 END IF;
905 l_score :=0;
906 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX42, p_table_TX42,(50000*(p_idx-1)+46)) THEN
907 l_score :=30;
908 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
909 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
910 END IF;
911 ELSIF l_current_score<24 AND
912 HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX43, p_table_TX43,(50000*(p_idx-1)+47)) THEN
913 l_score :=24;
914 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
918 IF l_score>0 THEN
915 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
916 END IF;
917 END IF;
919 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
920 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
921 END IF;
922 l_attrib_value := get_attrib_val(p_record_id,'PARTY','TAX_NAME');
923 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
924 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
925 END IF;
926 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
927 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
928 VALUES (
929 p_party_id,p_record_id,p_search_ctx_id,'TAX_NAME',
930 'PARTY', p_search_rec.TAX_NAME,
931 l_attrib_value,l_score);
932 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
933 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
934 END IF;
935 END IF;
936 l_score :=0;
937 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX44, p_table_TX44,(50000*(p_idx-1)+49)) THEN
938 l_score :=56;
939 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
940 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
941 END IF;
942 END IF;
943 IF l_score>0 THEN
944 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
945 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
946 END IF;
947 l_attrib_value := get_attrib_val(p_record_id,'PARTY','TAX_REFERENCE');
948 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
949 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
950 END IF;
951 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
952 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
953 VALUES (
954 p_party_id,p_record_id,p_search_ctx_id,'TAX_REFERENCE',
955 'PARTY', p_search_rec.TAX_REFERENCE,
956 l_attrib_value,l_score);
957 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
958 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
959 END IF;
960 END IF;
961 l_score :=0;
962 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX46, p_table_TX46,(50000*(p_idx-1)+51)) THEN
963 l_score :=30;
964 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
965 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
966 END IF;
967 END IF;
968 IF l_score>0 THEN
969 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
970 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
971 END IF;
972 l_attrib_value := get_attrib_val(p_record_id,'PARTY','SIC_CODE');
973 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
974 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
975 END IF;
976 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
977 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
978 VALUES (
979 p_party_id,p_record_id,p_search_ctx_id,'SIC_CODE',
980 'PARTY', p_search_rec.SIC_CODE,
981 l_attrib_value,l_score);
982 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
983 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
984 END IF;
985 END IF;
986 l_score :=0;
987 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX47, p_table_TX47,(50000*(p_idx-1)+52)) THEN
988 l_score :=10;
989 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
990 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
991 END IF;
992 END IF;
993 IF l_score>0 THEN
994 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
995 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
996 END IF;
1000 END IF;
997 l_attrib_value := get_attrib_val(p_record_id,'PARTY','SIC_CODE_TYPE');
998 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
999 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1001 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1002 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1003 VALUES (
1004 p_party_id,p_record_id,p_search_ctx_id,'SIC_CODE_TYPE',
1005 'PARTY', p_search_rec.SIC_CODE_TYPE,
1006 l_attrib_value,l_score);
1007 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1008 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1009 END IF;
1010 END IF;
1011 l_score :=0;
1012 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX48, p_table_TX48,(50000*(p_idx-1)+53)) THEN
1013 l_score :=10;
1014 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1015 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1016 END IF;
1017 END IF;
1018 IF l_score>0 THEN
1019 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1020 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1021 END IF;
1022 l_attrib_value := get_attrib_val(p_record_id,'PARTY','CATEGORY_CODE');
1023 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1024 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1025 END IF;
1026 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1027 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1028 VALUES (
1029 p_party_id,p_record_id,p_search_ctx_id,'CATEGORY_CODE',
1030 'PARTY', p_search_rec.CATEGORY_CODE,
1031 l_attrib_value,l_score);
1032 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1033 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1034 END IF;
1035 END IF;
1036 l_score :=0;
1037 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX156, p_table_TX156,(50000*(p_idx-1)+121)) THEN
1038 l_score :=20;
1039 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1040 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1041 END IF;
1042 END IF;
1043 IF l_score>0 THEN
1044 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1045 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1046 END IF;
1047 l_attrib_value := get_attrib_val(p_record_id,'PARTY','REFERENCE_USE_FLAG');
1048 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1049 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1050 END IF;
1051 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1052 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1053 VALUES (
1054 p_party_id,p_record_id,p_search_ctx_id,'REFERENCE_USE_FLAG',
1055 'PARTY', p_search_rec.REFERENCE_USE_FLAG,
1056 l_attrib_value,l_score);
1057 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1058 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1059 END IF;
1060 END IF;
1061 l_score :=0;
1062 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX157, p_table_TX157,(50000*(p_idx-1)+122)) THEN
1063 l_score :=30;
1064 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1065 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1066 END IF;
1067 END IF;
1068 IF l_score>0 THEN
1069 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1070 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1071 END IF;
1072 l_attrib_value := get_attrib_val(p_record_id,'PARTY','CORPORATION_CLASS');
1073 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1074 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1075 END IF;
1076 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1080 'PARTY', p_search_rec.CORPORATION_CLASS,
1077 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1078 VALUES (
1079 p_party_id,p_record_id,p_search_ctx_id,'CORPORATION_CLASS',
1081 l_attrib_value,l_score);
1082 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1083 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1084 END IF;
1085 END IF;
1086 NULL;
1087 END;
1088 PROCEDURE INSERT_PARTY_SITES_SCORE (
1089 p_party_id IN NUMBER
1090 ,p_record_id IN NUMBER
1091 ,p_search_ctx_id IN NUMBER
1092 ,p_search_rec IN HZ_PARTY_SEARCH.party_site_search_rec_type
1093 ,p_stage_rec IN HZ_PARTY_STAGE.party_site_stage_rec_type
1094 ,p_table_TX9 VARCHAR2
1095 ,p_table_TX10 VARCHAR2
1096 ,p_table_TX11 VARCHAR2
1097 ,p_table_TX13 VARCHAR2
1098 ,p_table_TX14 VARCHAR2
1099 ,p_table_TX15 VARCHAR2
1100 ,p_table_TX20 VARCHAR2
1101 ,p_table_TX21 VARCHAR2
1102 ,p_table_TX22 VARCHAR2
1103 ,p_idx IN NUMBER) IS
1104 l_current_score NUMBER:=0;
1105 l_score NUMBER;
1106 l_attrib_value VARCHAR2(2000);
1107 BEGIN
1108 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1109 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - INSERT_PARTY_SITES_SCORE',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1110 END IF;
1111 l_score :=0;
1112 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX9, p_table_TX9,(50000*(p_idx-1)+72)) THEN
1113 l_score :=30;
1114 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1115 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1116 END IF;
1117 ELSIF l_current_score<24 AND
1118 HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX10, p_table_TX10,(50000*(p_idx-1)+73)) THEN
1119 l_score :=24;
1120 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1121 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1122 END IF;
1123 END IF;
1124 IF l_score>0 THEN
1125 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1126 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1127 END IF;
1128 l_attrib_value := get_attrib_val(p_record_id,'PARTY_SITES','CITY');
1129 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1130 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1131 END IF;
1132 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1133 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1134 VALUES (
1135 p_party_id,p_record_id,p_search_ctx_id,'CITY',
1136 'PARTY_SITES', p_search_rec.CITY,
1137 l_attrib_value,l_score);
1138 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1139 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1140 END IF;
1141 END IF;
1142 l_score :=0;
1143 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX11, p_table_TX11,(50000*(p_idx-1)+74)) THEN
1144 l_score :=35;
1145 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1146 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1147 END IF;
1148 END IF;
1149 IF l_score>0 THEN
1150 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1151 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1152 END IF;
1153 l_attrib_value := get_attrib_val(p_record_id,'PARTY_SITES','POSTAL_CODE');
1154 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1155 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1156 END IF;
1157 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1158 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1159 VALUES (
1160 p_party_id,p_record_id,p_search_ctx_id,'POSTAL_CODE',
1161 'PARTY_SITES', p_search_rec.POSTAL_CODE,
1162 l_attrib_value,l_score);
1163 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1164 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1165 END IF;
1166 END IF;
1167 l_score :=0;
1168 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX13, p_table_TX13,(50000*(p_idx-1)+76)) THEN
1169 l_score :=14;
1170 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1171 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1172 END IF;
1173 END IF;
1174 IF l_score>0 THEN
1175 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1176 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1177 END IF;
1178 l_attrib_value := get_attrib_val(p_record_id,'PARTY_SITES','PROVINCE');
1179 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1180 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1181 END IF;
1182 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1183 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1184 VALUES (
1185 p_party_id,p_record_id,p_search_ctx_id,'PROVINCE',
1186 'PARTY_SITES', p_search_rec.PROVINCE,
1187 l_attrib_value,l_score);
1188 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1189 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1190 END IF;
1191 END IF;
1192 l_score :=0;
1193 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX14, p_table_TX14,(50000*(p_idx-1)+77)) THEN
1194 l_score :=20;
1195 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1196 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1197 END IF;
1198 ELSIF l_current_score<16 AND
1199 HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX15, p_table_TX15,(50000*(p_idx-1)+78)) THEN
1200 l_score :=16;
1201 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1202 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1203 END IF;
1204 END IF;
1205 IF l_score>0 THEN
1206 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1207 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1208 END IF;
1209 l_attrib_value := get_attrib_val(p_record_id,'PARTY_SITES','STATE');
1210 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1211 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1212 END IF;
1213 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1214 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1215 VALUES (
1216 p_party_id,p_record_id,p_search_ctx_id,'STATE',
1217 'PARTY_SITES', p_search_rec.STATE,
1218 l_attrib_value,l_score);
1219 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1220 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1221 END IF;
1222 END IF;
1223 l_score :=0;
1224 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX20, p_table_TX20,(50000*(p_idx-1)+83)) THEN
1225 l_score :=20;
1226 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1227 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1228 END IF;
1229 ELSIF l_current_score<16 AND
1230 HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX21, p_table_TX21,(50000*(p_idx-1)+84)) THEN
1231 l_score :=16;
1232 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1233 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1234 END IF;
1235 END IF;
1236 IF l_score>0 THEN
1237 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1238 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1239 END IF;
1240 l_attrib_value := get_attrib_val(p_record_id,'PARTY_SITES','COUNTY');
1241 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1242 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1243 END IF;
1244 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1245 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1246 VALUES (
1247 p_party_id,p_record_id,p_search_ctx_id,'COUNTY',
1248 'PARTY_SITES', p_search_rec.COUNTY,
1249 l_attrib_value,l_score);
1250 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1251 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1252 END IF;
1253 END IF;
1254 l_score :=0;
1255 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX22, p_table_TX22,(50000*(p_idx-1)+85)) THEN
1256 l_score :=30;
1257 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1258 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1259 END IF;
1260 END IF;
1261 IF l_score>0 THEN
1262 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1263 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1264 END IF;
1265 l_attrib_value := get_attrib_val(p_record_id,'PARTY_SITES','COUNTRY');
1266 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1267 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1268 END IF;
1269 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1270 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1271 VALUES (
1272 p_party_id,p_record_id,p_search_ctx_id,'COUNTRY',
1273 'PARTY_SITES', p_search_rec.COUNTRY,
1274 l_attrib_value,l_score);
1275 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1276 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1277 END IF;
1278 END IF;
1279 NULL;
1280 END;
1281 PROCEDURE INSERT_CONTACTS_SCORE (
1282 p_party_id IN NUMBER
1283 ,p_record_id IN NUMBER
1284 ,p_search_ctx_id IN NUMBER
1285 ,p_search_rec IN HZ_PARTY_SEARCH.contact_search_rec_type
1286 ,p_stage_rec IN HZ_PARTY_STAGE.contact_stage_rec_type
1287 ,p_idx IN NUMBER) IS
1288 l_current_score NUMBER:=0;
1289 l_score NUMBER;
1290 l_attrib_value VARCHAR2(2000);
1291 BEGIN
1292 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1293 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - INSERT_CONTACTS_SCORE',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1294 END IF;
1295 NULL;
1296 END;
1297 PROCEDURE INSERT_CONTACT_POINTS_SCORE (
1298 p_party_id IN NUMBER
1299 ,p_record_id IN NUMBER
1300 ,p_search_ctx_id IN NUMBER
1301 ,p_search_rec IN HZ_PARTY_SEARCH.contact_point_search_rec_type
1302 ,p_stage_rec IN HZ_PARTY_STAGE.contact_pt_stage_rec_type
1303 ,p_table_TX1 VARCHAR2
1304 ,p_table_TX3 VARCHAR2
1305 ,p_table_TX4 VARCHAR2
1306 ,p_idx IN NUMBER) IS
1307 l_current_score NUMBER:=0;
1308 l_score NUMBER;
1309 l_attrib_value VARCHAR2(2000);
1310 BEGIN
1311 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1312 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - INSERT_CONTACT_POINTS_SCORE',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1313 END IF;
1314 l_score :=0;
1315 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX1, p_table_TX1,(50000*(p_idx-1)+110)) THEN
1316 l_score :=80;
1317 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1318 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1319 END IF;
1320 END IF;
1321 IF l_score>0 THEN
1322 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1323 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1324 END IF;
1325 l_attrib_value := get_attrib_val(p_record_id,'CONTACT_POINTS','FLEX_FORMAT_PHONE_NUMBER');
1326 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1327 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1328 END IF;
1329 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1330 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1331 VALUES (
1332 p_party_id,p_record_id,p_search_ctx_id,'FLEX_FORMAT_PHONE_NUMBER',
1333 'CONTACT_POINTS', p_search_rec.FLEX_FORMAT_PHONE_NUMBER,
1334 l_attrib_value,l_score);
1335 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1336 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1337 END IF;
1338 END IF;
1339 l_score :=0;
1340 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX3, p_table_TX3,(50000*(p_idx-1)+112)) THEN
1341 l_score :=30;
1342 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1343 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1344 END IF;
1345 END IF;
1346 IF l_score>0 THEN
1347 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1348 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1349 END IF;
1350 l_attrib_value := get_attrib_val(p_record_id,'CONTACT_POINTS','PHONE_AREA_CODE');
1351 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1352 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1353 END IF;
1354 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1355 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1356 VALUES (
1357 p_party_id,p_record_id,p_search_ctx_id,'PHONE_AREA_CODE',
1358 'CONTACT_POINTS', p_search_rec.PHONE_AREA_CODE,
1359 l_attrib_value,l_score);
1360 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1361 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1362 END IF;
1363 END IF;
1364 l_score :=0;
1365 IF HZ_DQM_SEARCH_UTIL.is_match(p_stage_rec.TX4, p_table_TX4,(50000*(p_idx-1)+113)) THEN
1366 l_score :=10;
1367 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1368 hz_utility_v2pub.debug(p_message=>'l_score is - '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1369 END IF;
1370 END IF;
1371 IF l_score>0 THEN
1372 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1373 hz_utility_v2pub.debug(p_message=>'l_score > 0',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1374 END IF;
1375 l_attrib_value := get_attrib_val(p_record_id,'CONTACT_POINTS','PHONE_COUNTRY_CODE');
1376 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1377 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1378 END IF;
1379 INSERT INTO HZ_PARTY_SCORE_DTLS_GT (PARTY_ID, RECORD_ID, SEARCH_CONTEXT_ID,
1380 ATTRIBUTE,ENTITY,ENTERED_VALUE, MATCHED_VALUE, ASSIGNED_SCORE)
1381 VALUES (
1382 p_party_id,p_record_id,p_search_ctx_id,'PHONE_COUNTRY_CODE',
1383 'CONTACT_POINTS', p_search_rec.PHONE_COUNTRY_CODE,
1384 l_attrib_value,l_score);
1385 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1386 hz_utility_v2pub.debug(p_message=>'Inserting into HZ_PARTY_SCORE_DTLS_GT ... Done',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1387 END IF;
1388 END IF;
1389 NULL;
1390 END;
1391
1392 /************************************************
1393 This procedure populates global cond record
1394 for the PARTY Entity
1395 ************************************************/
1396
1397 PROCEDURE POP_PARTY_COND_REC(
1398 p_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type
1399 ) IS
1400 BEGIN
1401 NULL ;
1402 EXCEPTION
1403 WHEN OTHERS THEN
1404 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
1405 FND_MESSAGE.SET_TOKEN('PROC' , 'POP_PARTY_COND_REC');
1406 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1407 FND_MSG_PUB.ADD;
1408 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1409 END;
1410
1411
1412 /************************************************
1413 This procedure populates global cond record
1414 for the PARTY_SITES Entity
1415 ************************************************/
1416
1417 PROCEDURE POP_PARTY_SITES_COND_REC(
1418 p_search_list IN HZ_PARTY_SEARCH.party_site_list
1419 ) IS
1420 BEGIN
1421 ---------POPULATE THE GLOBAL WORD CONDITION REC FOR PARTY_SITES-------------
1422 ------ Populate global condition record only if search list is not empty -----------
1423 IF p_search_list.COUNT > 0
1424 THEN
1425 HZ_WORD_CONDITIONS_PKG.set_gbl_condition_rec (36,p_search_list(1).COUNTRY);
1426 END IF ;
1427 EXCEPTION
1428 WHEN OTHERS THEN
1429 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
1430 FND_MESSAGE.SET_TOKEN('PROC' , 'POP_PARTY_SITES_COND_REC');
1431 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1432 FND_MSG_PUB.ADD;
1433 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1434 END;
1435
1436
1437 /************************************************
1438 This procedure populates global cond record
1439 for the CONTACTS Entity
1440 ************************************************/
1441
1442 PROCEDURE POP_CONTACTS_COND_REC(
1443 p_search_list IN HZ_PARTY_SEARCH.contact_list
1444 ) IS
1445 BEGIN
1446 NULL ;
1447 EXCEPTION
1448 WHEN OTHERS THEN
1449 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
1450 FND_MESSAGE.SET_TOKEN('PROC' , 'POP_CONTACTS_COND_REC');
1451 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1452 FND_MSG_PUB.ADD;
1453 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1454 END;
1455
1456
1457 /************************************************
1458 This procedure populates global cond record
1459 for the CONTACT_POINTS Entity
1460 ************************************************/
1461
1462 PROCEDURE POP_CONTACT_POINTS_COND_REC(
1463 p_search_list IN HZ_PARTY_SEARCH.contact_point_list
1464 ) IS
1465 BEGIN
1466 NULL ;
1467 EXCEPTION
1468 WHEN OTHERS THEN
1469 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
1470 FND_MESSAGE.SET_TOKEN('PROC' , 'POP_CONTACT_POINTS_COND_REC');
1471 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1472 FND_MSG_PUB.ADD;
1473 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1474 END;
1475
1476 PROCEDURE init_score_context (
1477 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type:=
1478 HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC,
1479 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list:=
1480 HZ_PARTY_SEARCH.G_MISS_PARTY_SITE_LIST,
1481 p_contact_list IN HZ_PARTY_SEARCH.contact_list:=
1482 HZ_PARTY_SEARCH.G_MISS_CONTACT_LIST,
1483 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list:=
1484 HZ_PARTY_SEARCH.G_MISS_CONTACT_POINT_LIST
1485 ) IS
1486 l_dummy NUMBER;
1487 BEGIN
1488 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1489 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1490 hz_utility_v2pub.debug(p_message=>'calling the procedure init_score_context',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1491 END IF;
1492 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1493 hz_utility_v2pub.debug(p_message=>'In init_score_context calling the Map procedures',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1494 END IF;
1495 -- Transform search criteria
1496 HZ_TRANS_PKG.clear_globals;
1497 MAP_PARTY_REC(FALSE,p_party_search_rec, l_dummy, g_party_stage_rec);
1498 MAP_PARTY_SITE_REC(FALSE,p_party_site_list, l_dummy, g_party_site_stage_list);
1499 MAP_CONTACT_REC(FALSE,p_contact_list, l_dummy, g_contact_stage_list);
1500 MAP_CONTACT_POINT_REC(FALSE,p_contact_point_list, l_dummy, g_contact_pt_stage_list);
1501
1502 END;
1503 FUNCTION init_search(
1504 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type:=
1505 HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC,
1506 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list:=
1507 HZ_PARTY_SEARCH.G_MISS_PARTY_SITE_LIST,
1508 p_contact_list IN HZ_PARTY_SEARCH.contact_list:=
1509 HZ_PARTY_SEARCH.G_MISS_CONTACT_LIST,
1510 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list:=
1511 HZ_PARTY_SEARCH.G_MISS_CONTACT_POINT_LIST,
1512 p_match_type IN VARCHAR2,
1513 x_party_max_score OUT NUMBER,
1514 x_ps_max_score OUT NUMBER,
1515 x_contact_max_score OUT NUMBER,
1516 x_cpt_max_score OUT NUMBER
1517 ) RETURN NUMBER IS
1518 l_entered_max_score NUMBER:=0;
1519 l_ps_entered_max_score NUMBER:=0;
1520 l_ct_entered_max_score NUMBER:=0;
1521 l_cpt_entered_max_score NUMBER:=0;
1522 vlist vlisttype;
1523 maxscore HZ_PARTY_SEARCH.IDList;
1524 l_name VARCHAR2(200);
1525 l_idx NUMBER;
1526 l_num NUMBER;
1527 total NUMBER;
1528 threshold NUMBER;
1529 BEGIN
1530 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1531 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1532 hz_utility_v2pub.debug(p_message=>'calling the function init_search',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1533 END IF;
1534 IF NOT check_prim_cond (p_party_search_rec,
1535 p_party_site_list,
1536 p_contact_list,
1537 p_contact_point_list) THEN
1538 FND_MESSAGE.SET_NAME('AR', 'HZ_NO_PRIMARY_COND');
1539 FND_MSG_PUB.ADD;
1540 RAISE FND_API.G_EXC_ERROR;
1541 END IF;
1542 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1543 hz_utility_v2pub.debug(p_message=>'In init_search calling util package set_score',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1544 END IF;
1545 HZ_DQM_SEARCH_UTIL.set_score;
1546 g_mappings.DELETE;
1547 g_party_site_stage_list.DELETE;
1548 g_contact_stage_list.DELETE;
1549 g_contact_pt_stage_list.DELETE;
1550 call_order.DELETE;
1551 call_max_score.DELETE;
1552 HZ_DQM_SEARCH_UTIL.new_search;
1553 HZ_TRANS_PKG.set_party_type(p_party_search_rec.PARTY_TYPE);
1554 HZ_DQM_SEARCH_UTIL.set_num_eval(0);
1555
1556 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1557 hz_utility_v2pub.debug(p_message=>'In init_search calling the Map procedures',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1558 END IF;
1559 -- Transform search criteria
1560 POP_PARTY_COND_REC(p_party_search_rec);
1561
1562 POP_PARTY_SITES_COND_REC(p_party_site_list);
1563
1564 POP_CONTACTS_COND_REC(p_contact_list);
1565
1566 POP_CONTACT_POINTS_COND_REC(p_contact_point_list);
1567
1568 MAP_PARTY_REC(TRUE,p_party_search_rec, l_entered_max_score, g_party_stage_rec);
1569 MAP_PARTY_SITE_REC(TRUE,p_party_site_list, l_ps_entered_max_score, g_party_site_stage_list);
1570 MAP_CONTACT_REC(TRUE,p_contact_list, l_ct_entered_max_score, g_contact_stage_list);
1571 MAP_CONTACT_POINT_REC(TRUE,p_contact_point_list, l_cpt_entered_max_score, g_contact_pt_stage_list);
1572
1573
1574 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1575 hz_utility_v2pub.debug(p_message=>'In init_search determining call order of entities',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1576 END IF;
1577 l_idx := l_entered_max_score+1;
1578 vlist (l_idx) := 'PARTY';
1579 maxscore (l_idx) := l_entered_max_score;
1580 l_idx := l_ps_entered_max_score+1;
1581 WHILE vlist.EXISTS(l_idx) LOOP
1582 l_idx := l_idx+1;
1583 END LOOP;
1584 vlist (l_idx) := 'PARTY_SITE';
1585 maxscore (l_idx) := l_ps_entered_max_score;
1586
1587 l_idx := l_ct_entered_max_score+1;
1588 WHILE vlist.EXISTS(l_idx) LOOP
1589 l_idx := l_idx+1;
1590 END LOOP;
1591 vlist (l_idx) := 'CONTACT';
1592 maxscore (l_idx) := l_ct_entered_max_score;
1593
1594 l_idx := l_cpt_entered_max_score+1;
1595 WHILE vlist.EXISTS(l_idx) LOOP
1596 l_idx := l_idx+1;
1597 END LOOP;
1598 vlist (l_idx) := 'CONTACT_POINT';
1599 maxscore (l_idx) := l_cpt_entered_max_score;
1600
1601 l_num := 1;
1602 l_idx := vlist.LAST;
1603 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1604 hz_utility_v2pub.debug(p_message=>'Call order is the following',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1605 END IF;
1606 WHILE l_idx IS NOT NULL LOOP
1607 call_order(l_num) := vlist(l_idx);
1608 call_max_score(l_num) := maxscore(l_idx);
1609 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1610 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1611 END IF;
1612 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1613 hz_utility_v2pub.debug(p_message=>'l_num = '||l_num,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1614 hz_utility_v2pub.debug(p_message=>'entity = '||vlist(l_idx),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1615 hz_utility_v2pub.debug(p_message=>'call_max_score for entity = '||maxscore(l_idx),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1616 END IF;
1617 l_idx := vlist.PRIOR(l_idx);
1618 l_num := l_num+1;
1619 END LOOP;
1620 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1621 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1622 END IF;
1623 call_order(5):='NONE';
1624 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1625 hz_utility_v2pub.debug(p_message=>'In init_search determining call type of entities',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1626 END IF;
1627 IF p_match_type = ' OR ' THEN
1628 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1629 hz_utility_v2pub.debug(p_message=>'This is an OR Match Rule',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1630 END IF;
1631 threshold := round((72/805)*(l_entered_max_score+l_ps_entered_max_score+l_ct_entered_max_score+l_cpt_entered_max_score));
1632 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1633 hz_utility_v2pub.debug(p_message=>'This is a search Match Rule',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1634 END IF;
1635 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1636 hz_utility_v2pub.debug(p_message=>'Threshold defined in Match Rule, after rounding off is '||threshold,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1637 END IF;
1638 l_idx := vlist.FIRST;
1639 total := 0;
1640 l_num := 4;
1641 WHILE l_idx IS NOT NULL LOOP
1642 total := total+maxscore(l_idx);
1643 IF total<threshold THEN
1644 call_type(l_num) := 'AND';
1645 ELSE
1646 call_type(l_num) := 'OR';
1647 END IF;
1648 l_idx := vlist.NEXT(l_idx);
1649 l_num := l_num-1;
1650 END LOOP;
1651 ELSE
1652 call_type(1) := 'OR';
1653 call_type(2) := 'AND';
1654 call_type(3) := 'AND';
1655 call_type(4) := 'AND';
1656 END IF;
1657 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1658 hz_utility_v2pub.debug(p_message=>'Call types are the following',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1659 END IF;
1660 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1661 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1662 END IF;
1663 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1664 hz_utility_v2pub.debug(p_message=>'call type 1 = '||call_type(1),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1665 hz_utility_v2pub.debug(p_message=>'call type 2 = '||call_type(2),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1666 hz_utility_v2pub.debug(p_message=>'call type 3 = '||call_type(3),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1667 hz_utility_v2pub.debug(p_message=>'call type 4 = '||call_type(4),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1668 END IF;
1669 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1670 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1671 END IF;
1672 x_party_max_score := l_entered_max_score;
1673 x_ps_max_score := l_ps_entered_max_score;
1674 x_contact_max_score := l_ct_entered_max_score;
1675 x_cpt_max_score := l_cpt_entered_max_score;
1676 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1677 hz_utility_v2pub.debug(p_message=>'init_search returned with the following max scores at each level',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1678 END IF;
1679 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1680 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1681 END IF;
1682 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1683 hz_utility_v2pub.debug(p_message=>'entered party max score = '||l_entered_max_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1684 hz_utility_v2pub.debug(p_message=>'entered paty site max score = '||l_ps_entered_max_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1685 hz_utility_v2pub.debug(p_message=>'entered contact max score = '||l_ct_entered_max_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1686 hz_utility_v2pub.debug(p_message=>'entered contact point max score = '||l_cpt_entered_max_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1687 END IF;
1688 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1689 hz_utility_v2pub.debug(p_message=>'entered total score = '||(l_entered_max_score+l_ps_entered_max_score+l_ct_entered_max_score+l_cpt_entered_max_score),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1690 END IF;
1691 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1692 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1693 END IF;
1694 RETURN (l_entered_max_score+l_ps_entered_max_score+l_ct_entered_max_score+l_cpt_entered_max_score);
1695 END;
1696 FUNCTION INIT_PARTY_QUERY(p_match_str VARCHAR2,
1697 p_denorm_str VARCHAR2,
1698 p_party_max_score NUMBER,
1699 p_denorm_max_score NUMBER,
1700 p_non_denorm_max_score NUMBER,
1701 p_threshold NUMBER) RETURN VARCHAR2 IS
1702 l_party_contains_str VARCHAR2(32000);
1703 l_party_filter VARCHAR2(1) := null;
1704 l_prim_temp VARCHAR2(4000);
1705 l_denorm_str VARCHAR2(4000);
1706 BEGIN
1707 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1708 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1712 hz_utility_v2pub.debug(p_message=>'passed in p_match_str is '||p_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1709 hz_utility_v2pub.debug(p_message=>'calling the function init_party_query',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1710 END IF;
1711 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1713 END IF;
1714 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1715 hz_utility_v2pub.debug(p_message=>'passed in p_denorm_str is '||p_denorm_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1716 END IF;
1717 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1718 hz_utility_v2pub.debug(p_message=>'passed in p_denorm_max_score is '||p_denorm_max_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1719 END IF;
1720 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1721 hz_utility_v2pub.debug(p_message=>'passed in p_non_denorm_max_score is '||p_non_denorm_max_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1722 END IF;
1723 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1724 hz_utility_v2pub.debug(p_message=>'passed in p_threshold is '||p_threshold,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1725 END IF;
1726 IF p_party_max_score<=p_threshold OR p_match_str=' AND ' THEN
1727 l_denorm_str := NULL;
1728 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1729 hz_utility_v2pub.debug(p_message=>'calculated denorm string l_denorm_str is '||l_denorm_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1730 END IF;
1731 ELSE
1732 l_denorm_str := p_denorm_str;
1733 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1734 hz_utility_v2pub.debug(p_message=>'calculated denorm string l_denorm_str is '||l_denorm_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1735 END IF;
1736 END IF;
1737
1738 -- Setup query string for SIC_CODE_TYPE
1739 l_prim_temp := null;
1740 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
1741 g_party_stage_rec.TX47,'A21',l_prim_temp);
1742
1743 IF l_denorm_str IS NOT NULL THEN
1744 IF (p_non_denorm_max_score+10)>=p_threshold THEN
1745 l_denorm_str := NULL;
1746 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1747 ELSIF (p_non_denorm_max_score+p_denorm_max_score+10)>=p_threshold THEN
1748 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1749 l_denorm_str := NULL;
1750 END IF;
1751 ELSE
1752 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1753 END IF;
1754
1755 -- Setup query string for CATEGORY_CODE
1756 l_prim_temp := null;
1757 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
1758 g_party_stage_rec.TX48,'A22',l_prim_temp);
1759
1760 IF l_denorm_str IS NOT NULL THEN
1761 IF (p_non_denorm_max_score+10)>=p_threshold THEN
1762 l_denorm_str := NULL;
1763 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1764 ELSIF (p_non_denorm_max_score+p_denorm_max_score+10)>=p_threshold THEN
1765 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1766 l_denorm_str := NULL;
1767 END IF;
1768 ELSE
1769 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1770 END IF;
1771
1772 -- Setup query string for REFERENCE_USE_FLAG
1773 l_prim_temp := null;
1774 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
1775 g_party_stage_rec.TX156,'A53',l_prim_temp);
1776
1777 IF l_denorm_str IS NOT NULL THEN
1778 IF (p_non_denorm_max_score+20)>=p_threshold THEN
1779 l_denorm_str := NULL;
1780 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1781 ELSIF (p_non_denorm_max_score+p_denorm_max_score+20)>=p_threshold THEN
1782 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1783 l_denorm_str := NULL;
1784 END IF;
1785 ELSE
1786 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1787 END IF;
1788
1789 -- Setup query string for TAX_NAME
1790 l_prim_temp := null;
1791 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
1792 g_party_stage_rec.TX43,'A17',l_prim_temp);
1793
1794 IF l_denorm_str IS NOT NULL THEN
1795 IF (p_non_denorm_max_score+30)>=p_threshold THEN
1796 l_denorm_str := NULL;
1797 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1798 ELSIF (p_non_denorm_max_score+p_denorm_max_score+30)>=p_threshold THEN
1799 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1800 l_denorm_str := NULL;
1801 END IF;
1802 ELSE
1803 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1804 END IF;
1805
1806 -- Setup query string for SIC_CODE
1807 l_prim_temp := null;
1808 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
1809 g_party_stage_rec.TX46,'A20',l_prim_temp);
1810
1811 IF l_denorm_str IS NOT NULL THEN
1812 IF (p_non_denorm_max_score+30)>=p_threshold THEN
1813 l_denorm_str := NULL;
1814 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1815 ELSIF (p_non_denorm_max_score+p_denorm_max_score+30)>=p_threshold THEN
1816 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1817 l_denorm_str := NULL;
1818 END IF;
1819 ELSE
1820 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1821 END IF;
1822
1823 -- Setup query string for CORPORATION_CLASS
1824 l_prim_temp := null;
1825 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
1826 g_party_stage_rec.TX157,'A54',l_prim_temp);
1827
1828 IF l_denorm_str IS NOT NULL THEN
1829 IF (p_non_denorm_max_score+30)>=p_threshold THEN
1830 l_denorm_str := NULL;
1831 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1832 ELSIF (p_non_denorm_max_score+p_denorm_max_score+30)>=p_threshold THEN
1833 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1834 l_denorm_str := NULL;
1835 END IF;
1836 ELSE
1837 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1838 END IF;
1839
1840 -- Setup query string for PARTY_ALL_NAMES
1841 l_prim_temp := null;
1842 HZ_DQM_SEARCH_UTIL.add_transformation( -- SOUNDEX
1843 g_party_stage_rec.TX158,'A15',l_prim_temp);
1844 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE SPECIAL + WRNAMES
1845 g_party_stage_rec.TX40,'A15',l_prim_temp);
1846
1847 IF l_denorm_str IS NOT NULL THEN
1848 IF (p_non_denorm_max_score+60)>=p_threshold THEN
1849 l_denorm_str := NULL;
1850 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1851 ELSIF (p_non_denorm_max_score+p_denorm_max_score+60)>=p_threshold THEN
1852 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1853 l_denorm_str := NULL;
1854 END IF;
1855 ELSE
1856 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1857 END IF;
1858
1859 -- Setup query string for ALL_ACCOUNT_NAMES
1860 l_prim_temp := null;
1861 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE SPECIAL + WRNAMES
1862 g_party_stage_rec.TX33,'A11',l_prim_temp);
1863
1864 IF l_denorm_str IS NOT NULL THEN
1865 IF (p_non_denorm_max_score+60)>=p_threshold THEN
1866 l_denorm_str := NULL;
1867 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1868 ELSIF (p_non_denorm_max_score+p_denorm_max_score+60)>=p_threshold THEN
1869 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1870 l_denorm_str := NULL;
1871 END IF;
1872 ELSE
1873 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1874 END IF;
1875
1876 -- Setup query string for TAX_REFERENCE
1877 l_prim_temp := null;
1878 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT SPECIAL
1879 g_party_stage_rec.TX44,'A18',l_prim_temp);
1880
1881 IF l_denorm_str IS NOT NULL THEN
1882 IF (p_non_denorm_max_score+80)>=p_threshold THEN
1883 l_denorm_str := NULL;
1884 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1885 ELSIF (p_non_denorm_max_score+p_denorm_max_score+80)>=p_threshold THEN
1886 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1887 l_denorm_str := NULL;
1888 END IF;
1889 ELSE
1890 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1891 END IF;
1892
1893 -- Setup query string for PARTY_NUMBER
1894 l_prim_temp := null;
1895 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT SPECIAL
1896 g_party_stage_rec.TX34,'A12',l_prim_temp);
1897
1898 IF l_denorm_str IS NOT NULL THEN
1899 IF (p_non_denorm_max_score+100)>=p_threshold THEN
1900 l_denorm_str := NULL;
1901 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1902 ELSIF (p_non_denorm_max_score+p_denorm_max_score+100)>=p_threshold THEN
1903 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1904 l_denorm_str := NULL;
1905 END IF;
1906 ELSE
1907 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1908 END IF;
1909
1910 -- Setup query string for ALL_ACCOUNT_NUMBERS
1911 l_prim_temp := null;
1912 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT SPECIAL
1913 g_party_stage_rec.TX35,'A13',l_prim_temp);
1914
1915 IF l_denorm_str IS NOT NULL THEN
1916 IF (p_non_denorm_max_score+100)>=p_threshold THEN
1917 l_denorm_str := NULL;
1918 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1919 ELSIF (p_non_denorm_max_score+p_denorm_max_score+100)>=p_threshold THEN
1920 HZ_DQM_SEARCH_UTIL.add_attribute_with_denorm(l_prim_temp, p_match_str, l_denorm_str, l_party_contains_str);
1921 l_denorm_str := NULL;
1922 END IF;
1923 ELSE
1924 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, p_match_str, l_party_contains_str);
1925 END IF;
1926 IF lengthb(l_party_contains_str) > 4000 THEN
1927 FND_MESSAGE.SET_NAME('AR', 'HZ_SEARCH_CRIT_LARGE_ERROR');
1928 FND_MESSAGE.SET_TOKEN('ENTITY','PARTY');
1929 FND_MSG_PUB.ADD;
1930 RAISE FND_API.G_EXC_ERROR;
1931 END IF;
1932 IF (p_match_str = ' AND ' OR p_party_max_score<p_threshold) AND l_party_contains_str IS NOT NULL AND p_denorm_str IS NOT NULL THEN
1933 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1934 hz_utility_v2pub.debug(p_message=>'party contains string returned by init_search is an AND between these strings ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1935 END IF;
1936 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1937 hz_utility_v2pub.debug(p_message=>'l_party_contains_str = '||l_party_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1938 END IF;
1939 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1940 hz_utility_v2pub.debug(p_message=>'p_denorm_str = '||p_denorm_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1941 END IF;
1942 RETURN '('||l_party_contains_str||') AND ('||p_denorm_str||')';
1943 ELSE
1947 END IF;
1944 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1945 hz_utility_v2pub.debug(p_message=>'party contains string returned by init_search is ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1946 hz_utility_v2pub.debug(p_message=>'l_party_contains_str',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1948 RETURN l_party_contains_str;
1949 END IF;
1950 END;
1951 FUNCTION INIT_PARTY_SITES_QUERY(p_match_str VARCHAR2, x_denorm_str OUT VARCHAR2) RETURN VARCHAR2 IS
1952 l_contains_str VARCHAR2(32000);
1953 l_contains_str_temp VARCHAR2(32000);
1954 l_den_contains_str VARCHAR2(32000);
1955 l_den_contains_str_temp VARCHAR2(32000);
1956 l_filter_str VARCHAR2(4000) := null;
1957 l_prim_temp VARCHAR2(4000) := null;
1958 l_prim_temp_den VARCHAR2(4000) := null;
1959 BEGIN
1960 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1961 hz_utility_v2pub.debug(p_message=>'INIT_PARTY_SITES_QUERY ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1962 END IF;
1963 x_denorm_str := NULL;
1964
1965 -- Dynamic setup of party site contains str
1966 --
1967 -- For each primary transformation add to intermedia query if it
1968 -- is not null
1969 FOR I IN 1..g_party_site_stage_list.COUNT LOOP
1970 l_contains_str_temp := null;
1971 l_den_contains_str_temp := null;
1972 l_filter_str := null;
1973
1974 -- Setup query string for CITY
1975 l_prim_temp := null;
1976 l_prim_temp_den := null;
1977 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
1978 g_party_site_stage_list(I).TX10,'A29',l_prim_temp);
1979 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
1980 g_party_site_stage_list(I).TX10,'D_PS',l_prim_temp_den);
1981 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp_den, ' AND ', l_den_contains_str_temp);
1982 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
1983
1984 -- Setup query string for POSTAL_CODE
1985 l_prim_temp := null;
1986 l_prim_temp_den := null;
1987 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT SPECIAL NOSPC
1988 g_party_site_stage_list(I).TX11,'A30',l_prim_temp);
1989 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT SPECIAL NOSPC
1990 g_party_site_stage_list(I).TX11,'D_PS',l_prim_temp_den);
1991 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp_den, ' AND ', l_den_contains_str_temp);
1992 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
1993
1994 -- Setup query string for PROVINCE
1995 l_prim_temp := null;
1996 l_prim_temp_den := null;
1997 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
1998 g_party_site_stage_list(I).TX13,'A31',l_prim_temp);
1999 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
2000 g_party_site_stage_list(I).TX13,'D_PS',l_prim_temp_den);
2001 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp_den, ' AND ', l_den_contains_str_temp);
2002 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
2003
2004 -- Setup query string for STATE
2005 l_prim_temp := null;
2006 l_prim_temp_den := null;
2007 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE + WRSTATE
2008 g_party_site_stage_list(I).TX15,'A32',l_prim_temp);
2009 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE + WRSTATE
2010 g_party_site_stage_list(I).TX15,'D_PS',l_prim_temp_den);
2011 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp_den, ' AND ', l_den_contains_str_temp);
2012 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
2013
2014 -- Setup query string for COUNTY
2015 l_prim_temp := null;
2016 l_prim_temp_den := null;
2017 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
2018 g_party_site_stage_list(I).TX21,'A35',l_prim_temp);
2019 HZ_DQM_SEARCH_UTIL.add_transformation( -- CLEANSE
2020 g_party_site_stage_list(I).TX21,'D_PS',l_prim_temp_den);
2021 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp_den, ' AND ', l_den_contains_str_temp);
2022 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
2023
2024 -- Setup query string for COUNTRY
2025 l_prim_temp := null;
2026 l_prim_temp_den := null;
2027 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
2028 g_party_site_stage_list(I).TX22,'A36',l_prim_temp);
2029 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT
2030 g_party_site_stage_list(I).TX22,'D_PS',l_prim_temp_den);
2031 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp_den, ' AND ', l_den_contains_str_temp);
2032 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
2033
2034 HZ_DQM_SEARCH_UTIL.add_search_record(l_contains_str_temp, l_filter_str, l_contains_str);
2035 HZ_DQM_SEARCH_UTIL.add_search_record(l_den_contains_str_temp, null, l_den_contains_str);
2036 END LOOP;
2037 -- Add the search criteria to query string
2038 IF lengthb(l_contains_str) > 4000 THEN
2039 FND_MESSAGE.SET_NAME('AR', 'HZ_SEARCH_CRIT_LARGE_ERROR');
2040 FND_MESSAGE.SET_TOKEN('ENTITY','PARTY_SITES');
2041 FND_MSG_PUB.ADD;
2042 RAISE FND_API.G_EXC_ERROR;
2043 END IF;
2044 x_denorm_str := l_den_contains_str;
2045 RETURN l_contains_str;
2046 END;
2047
2048 FUNCTION INIT_CONTACTS_QUERY(p_match_str VARCHAR2, x_denorm_str OUT VARCHAR2) RETURN VARCHAR2 IS
2049 l_contains_str VARCHAR2(32000);
2050 l_contains_str_temp VARCHAR2(32000);
2051 l_den_contains_str VARCHAR2(32000);
2052 l_den_contains_str_temp VARCHAR2(32000);
2053 l_filter_str VARCHAR2(4000) := null;
2054 l_prim_temp VARCHAR2(4000) := null;
2055 l_prim_temp_den VARCHAR2(4000) := null;
2056 BEGIN
2057 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2058 hz_utility_v2pub.debug(p_message=>'INIT_CONTACTS_QUERY ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
2059 END IF;
2060 x_denorm_str := NULL;
2061 RETURN NULL;
2062 END;
2063
2064 FUNCTION INIT_CONTACT_POINTS_QUERY(p_match_str VARCHAR2, x_denorm_str OUT VARCHAR2) RETURN VARCHAR2 IS
2065 l_contains_str VARCHAR2(32000);
2066 l_contains_str_temp VARCHAR2(32000);
2067 l_den_contains_str VARCHAR2(32000);
2068 l_den_contains_str_temp VARCHAR2(32000);
2069 l_filter_str VARCHAR2(4000) := null;
2070 l_prim_temp VARCHAR2(4000) := null;
2071 l_prim_temp_den VARCHAR2(4000) := null;
2072 TYPE CONTACT_PT_REC_TYPE IS RECORD (
2073 contact_pt_type VARCHAR2(100)) ;
2074 TYPE contact_pt_list IS TABLE of CONTACT_PT_REC_TYPE INDEX BY BINARY_INTEGER;
2075 l_cnt_pt_type contact_pt_list;
2076 N NUMBER:=1;
2077 x_modify VARCHAR2(1);
2078 BEGIN
2079 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2080 hz_utility_v2pub.debug(p_message=>'INIT_CONTACT_POINTS_QUERY ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
2081 END IF;
2082 x_denorm_str := NULL;
2083
2084 -- Dynamic setup of party site contains str
2085 --
2086 -- For each primary transformation add to intermedia query if it
2087 -- is not null
2088 FOR I IN 1..g_contact_pt_stage_list.COUNT LOOP
2089 l_contains_str_temp := null;
2090 l_den_contains_str_temp := null;
2091 l_filter_str := null;
2092 l_filter_str := '('||g_contact_pt_stage_list(I).CONTACT_POINT_TYPE||') ';
2093 if(l_cnt_pt_type.count>0) then
2094 x_modify := 'Y';
2095 FOR J IN 1..l_cnt_pt_type.COUNT LOOP
2096 IF (l_cnt_pt_type(J).contact_pt_type=g_contact_pt_stage_list(I).CONTACT_POINT_TYPE) THEN
2097 x_modify := 'N';
2098 END IF;
2099 END LOOP;
2100 if x_modify = 'Y' then
2101 l_cnt_pt_type(N).contact_pt_type := g_contact_pt_stage_list(I).CONTACT_POINT_TYPE;
2102 N := N+1;
2103 end if;
2104 else
2105 l_cnt_pt_type(N).contact_pt_type := g_contact_pt_stage_list(I).CONTACT_POINT_TYPE;
2106 N := N+1;
2107 end if;
2108
2109 -- Setup query string for FLEX_FORMAT_PHONE_NUMBER
2110 l_prim_temp := null;
2111 l_prim_temp_den := null;
2112 HZ_DQM_SEARCH_UTIL.add_transformation( -- EXACT SPECIAL CTX
2113 g_contact_pt_stage_list(I).TX1,'A44',l_prim_temp);
2114 HZ_DQM_SEARCH_UTIL.add_attribute(l_prim_temp, ' AND ', l_contains_str_temp);
2115
2116 HZ_DQM_SEARCH_UTIL.add_search_record(l_contains_str_temp, l_filter_str, l_contains_str);
2117 HZ_DQM_SEARCH_UTIL.add_search_record(l_den_contains_str_temp, null, l_den_contains_str);
2118 IF N>1 THEN
2119 distinct_search_cpt_types := N-1;
2120 ELSE
2121 distinct_search_cpt_types := N;
2122 END IF;
2123 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2124 hz_utility_v2pub.debug(p_message=>'distinct_search_cpt_types is - '||distinct_search_cpt_types,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2125 END IF;
2126 END LOOP;
2127 -- Add the search criteria to query string
2128 IF lengthb(l_contains_str) > 4000 THEN
2129 FND_MESSAGE.SET_NAME('AR', 'HZ_SEARCH_CRIT_LARGE_ERROR');
2130 FND_MESSAGE.SET_TOKEN('ENTITY','CONTACT_POINTS');
2131 FND_MSG_PUB.ADD;
2132 RAISE FND_API.G_EXC_ERROR;
2133 END IF;
2134 x_denorm_str := l_den_contains_str;
2135 RETURN l_contains_str;
2136 END;
2137
2138 PROCEDURE open_party_cursor_direct (
2139 p_dup_party_id NUMBER,
2140 p_restrict_sql VARCHAR2,
2141 p_match_str VARCHAR2,
2142 p_search_merged VARCHAR2,
2143 p_party_contains_str VARCHAR2,
2144 x_cursor OUT HZ_PARTY_STAGE.StageCurTyp) IS
2145 l_sqlstr VARCHAR2(4000);
2146 l_search_merged VARCHAR2(1);
2147 BEGIN
2148 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2149 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2150 hz_utility_v2pub.debug(p_message=>'calling procedure open party cursor direct',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2151 END IF;
2152 IF (p_search_merged is null) then
2153 l_search_merged := 'N';
2154 ELSE
2155 l_search_merged := p_search_merged;
2156 END IF;
2157 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2158 hz_utility_v2pub.debug(p_message=>'Search Merged Flag - '||l_search_merged,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2159 END IF;
2160 IF p_restrict_sql IS NULL AND NOT g_other_party_level_attribs AND NOT (p_party_contains_str IS NOT NULL AND instrb(p_party_contains_str,'D_PS')>0 AND g_party_site_stage_list.COUNT=1) THEN
2161 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2162 hz_utility_v2pub.debug(p_message=>'Restrict SQL is NULL and other conditions met to OPEN x_cursor',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2163 END IF;
2164 OPEN x_cursor FOR
2165 SELECT PARTY_ID , TX32, TX34, TX35, TX39, TX158, TX40, TX43, TX42, TX44, TX46, TX47, TX48, TX156, TX157
2166 FROM hz_staged_parties
2167 WHERE TX8 LIKE g_party_stage_rec.TX8||' %'
2168 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = TX36))
2169 AND( (l_search_merged ='Y' )
2170 OR (l_search_merged = 'I' AND nvl(status, 'A') in ('A', 'I'))
2171 OR (l_search_merged = 'N' AND nvl(status, 'A') in ('A')))
2172 AND (p_dup_party_id IS NULL OR party_id <> p_dup_party_id);
2173 ELSE
2174 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2175 hz_utility_v2pub.debug(p_message=>'Restrict SQL is NOT NULL OR other conditions not met, Else Part',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2176 END IF;
2177 l_sqlstr := 'SELECT PARTY_ID , TX32, TX34, TX35, TX39, TX158, TX40, TX43, TX42, TX44, TX46, TX47, TX48, TX156, TX157 FROM hz_staged_parties stage ';
2178 l_sqlstr := l_sqlstr || ' WHERE TX8 like :TX8||'' %'' ';
2179 l_sqlstr := l_sqlstr || ' AND (:TX36 IS NULL OR :TX36||'' '' = TX36) ';
2180 IF l_search_merged = 'N' THEN
2181 l_sqlstr := l_sqlstr || ' AND nvl(status,''A'')=''A'' ';
2182 ELSIF l_search_merged = 'I' THEN
2183 l_sqlstr := l_sqlstr || ' AND nvl(status,''A'') in (''A'',''I'') ';
2184 END IF;
2185 l_sqlstr := l_sqlstr || ' AND (:p_dup IS NULL OR party_id <> :p_dup ) ';
2186 IF g_other_party_level_attribs THEN
2187 l_sqlstr := l_sqlstr || ' AND ((:attr IS NULL OR ';
2188 l_sqlstr := l_sqlstr || ' (TX33 like :TX33||'' %'' ';
2189 l_sqlstr := l_sqlstr || ' )) ';
2190 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2191 l_sqlstr := l_sqlstr || ' (TX34 like :TX34||'' %'' ';
2192 l_sqlstr := l_sqlstr || ' )) ';
2193 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2194 l_sqlstr := l_sqlstr || ' (TX35 like :TX35||'' %'' ';
2195 l_sqlstr := l_sqlstr || ' )) ';
2196 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2197 l_sqlstr := l_sqlstr || ' (TX158 like :TX158||'' %'' ';
2198 l_sqlstr := l_sqlstr || ' OR TX40 like :TX40||'' %'' ';
2199 l_sqlstr := l_sqlstr || ' )) ';
2200 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2201 l_sqlstr := l_sqlstr || ' (TX43 like :TX43||'' %'' ';
2202 l_sqlstr := l_sqlstr || ' )) ';
2203 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2204 l_sqlstr := l_sqlstr || ' (TX44 like :TX44||'' %'' ';
2205 l_sqlstr := l_sqlstr || ' )) ';
2206 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2207 l_sqlstr := l_sqlstr || ' (TX46 like :TX46||'' %'' ';
2208 l_sqlstr := l_sqlstr || ' )) ';
2209 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2210 l_sqlstr := l_sqlstr || ' (TX47 like :TX47||'' %'' ';
2211 l_sqlstr := l_sqlstr || ' )) ';
2212 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2213 l_sqlstr := l_sqlstr || ' (TX48 like :TX48||'' %'' ';
2214 l_sqlstr := l_sqlstr || ' )) ';
2215 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2216 l_sqlstr := l_sqlstr || ' (TX156 like :TX156||'' %'' ';
2217 l_sqlstr := l_sqlstr || ' )) ';
2218 l_sqlstr := l_sqlstr || ' '||p_match_str||' (:attr IS NULL OR ';
2219 l_sqlstr := l_sqlstr || ' (TX157 like :TX157||'' %'' ';
2220 l_sqlstr := l_sqlstr || ' )) ';
2221 l_sqlstr := l_sqlstr || ' ) ';
2222 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2223 l_sqlstr := l_sqlstr || ' (TX36 like :TX36||'' %'' ';
2224 l_sqlstr := l_sqlstr || ' )) ';
2225 END IF;
2226 IF p_party_contains_str IS NOT NULL AND instrb(p_party_contains_str,'D_PS')>0 AND g_party_site_stage_list.COUNT=1 THEN
2227 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2228 hz_utility_v2pub.debug(p_message=>'p_party_contains_str string is NOT NULL and other conditions met',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2229 END IF;
2230 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2231 l_sqlstr := l_sqlstr || ' (D_PS like ''% ''||:TX10||'' %'' ';
2232 l_sqlstr := l_sqlstr || ' )) ';
2233 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2234 l_sqlstr := l_sqlstr || ' (D_PS like ''% ''||:TX11||'' %'' ';
2235 l_sqlstr := l_sqlstr || ' )) ';
2236 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2237 l_sqlstr := l_sqlstr || ' (D_PS like ''% ''||:TX13||'' %'' ';
2238 l_sqlstr := l_sqlstr || ' )) ';
2239 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2240 l_sqlstr := l_sqlstr || ' (D_PS like ''% ''||:TX15||'' %'' ';
2241 l_sqlstr := l_sqlstr || ' )) ';
2242 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2243 l_sqlstr := l_sqlstr || ' (D_PS like ''% ''||:TX21||'' %'' ';
2244 l_sqlstr := l_sqlstr || ' )) ';
2245 l_sqlstr := l_sqlstr || ' AND (:attr IS NULL OR ';
2246 l_sqlstr := l_sqlstr || ' (D_PS like ''% ''||:TX22||'' %'' ';
2247 l_sqlstr := l_sqlstr || ' )) ';
2248 END IF;
2249 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2250 hz_utility_v2pub.debug(p_message=>'l_sqlstr before appending restrict_sql',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2251 END IF;
2252 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2253 hz_utility_v2pub.debug(p_message=>'l_sqlstr is - '||l_sqlstr,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2254 END IF;
2255 IF p_restrict_sql IS NOT NULL THEN
2256 l_sqlstr := l_sqlstr || ' AND '||p_restrict_sql||' ';
2257 END IF;
2258 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2259 hz_utility_v2pub.debug(p_message=>'l_sqlstr after appending restrict_sql',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2260 END IF;
2261 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2262 hz_utility_v2pub.debug(p_message=>'l_sqlstr is - '||l_sqlstr,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2263 END IF;
2264 IF g_other_party_level_attribs AND p_party_contains_str IS NOT NULL AND instrb(p_party_contains_str,'D_PS')>0 AND g_party_site_stage_list.COUNT=1 THEN
2265 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2266 hz_utility_v2pub.debug(p_message=>'IF g_other_party_level_attribs AND p_party_contains_str IS NOT NULL AND ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2267 END IF;
2268 OPEN x_cursor FOR l_sqlstr USING g_party_stage_rec.TX8,g_party_stage_rec.TX36,g_party_stage_rec.TX36,p_dup_party_id,p_dup_party_id
2269 ,g_party_stage_rec.TX33
2270 ,g_party_stage_rec.TX33
2271 ,g_party_stage_rec.TX34
2272 ,g_party_stage_rec.TX34
2273 ,g_party_stage_rec.TX35
2274 ,g_party_stage_rec.TX35
2275 ,g_party_stage_rec.TX158
2276 ,g_party_stage_rec.TX158
2277 ,g_party_stage_rec.TX40
2278 ,g_party_stage_rec.TX43
2279 ,g_party_stage_rec.TX43
2280 ,g_party_stage_rec.TX44
2281 ,g_party_stage_rec.TX44
2282 ,g_party_stage_rec.TX46
2283 ,g_party_stage_rec.TX46
2284 ,g_party_stage_rec.TX47
2285 ,g_party_stage_rec.TX47
2286 ,g_party_stage_rec.TX48
2287 ,g_party_stage_rec.TX48
2288 ,g_party_stage_rec.TX156
2289 ,g_party_stage_rec.TX156
2290 ,g_party_stage_rec.TX157
2291 ,g_party_stage_rec.TX157
2292 ,g_party_stage_rec.TX36
2293 ,g_party_stage_rec.TX36
2294 ,g_party_site_stage_list(1).TX10
2295 ,g_party_site_stage_list(1).TX10
2296 ,g_party_site_stage_list(1).TX11
2297 ,g_party_site_stage_list(1).TX11
2298 ,g_party_site_stage_list(1).TX13
2299 ,g_party_site_stage_list(1).TX13
2300 ,g_party_site_stage_list(1).TX15
2301 ,g_party_site_stage_list(1).TX15
2302 ,g_party_site_stage_list(1).TX21
2303 ,g_party_site_stage_list(1).TX21
2304 ,g_party_site_stage_list(1).TX22
2305 ,g_party_site_stage_list(1).TX22
2306 ;
2307 ELSIF g_other_party_level_attribs THEN
2308 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2309 hz_utility_v2pub.debug(p_message=>'ELSIF g_other_party_level_attribs THEN',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2310 END IF;
2311 OPEN x_cursor FOR l_sqlstr USING g_party_stage_rec.TX8,g_party_stage_rec.TX36,g_party_stage_rec.TX36,p_dup_party_id,p_dup_party_id
2312 ,g_party_stage_rec.TX33
2313 ,g_party_stage_rec.TX33
2314 ,g_party_stage_rec.TX34
2315 ,g_party_stage_rec.TX34
2316 ,g_party_stage_rec.TX35
2317 ,g_party_stage_rec.TX35
2318 ,g_party_stage_rec.TX158
2319 ,g_party_stage_rec.TX158
2320 ,g_party_stage_rec.TX40
2321 ,g_party_stage_rec.TX43
2322 ,g_party_stage_rec.TX43
2323 ,g_party_stage_rec.TX44
2324 ,g_party_stage_rec.TX44
2325 ,g_party_stage_rec.TX46
2326 ,g_party_stage_rec.TX46
2327 ,g_party_stage_rec.TX47
2328 ,g_party_stage_rec.TX47
2329 ,g_party_stage_rec.TX48
2330 ,g_party_stage_rec.TX48
2331 ,g_party_stage_rec.TX156
2332 ,g_party_stage_rec.TX156
2333 ,g_party_stage_rec.TX157
2334 ,g_party_stage_rec.TX157
2335 ,g_party_stage_rec.TX36
2336 ,g_party_stage_rec.TX36
2337 ;
2338 ELSIF p_party_contains_str IS NOT NULL AND instrb(p_party_contains_str,'D_PS')>0 AND g_party_site_stage_list.COUNT=1 THEN
2339 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2340 hz_utility_v2pub.debug(p_message=>'ELSIF p_party_contains_str IS NOT NULL AND ...',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2341 END IF;
2342 OPEN x_cursor FOR l_sqlstr USING g_party_stage_rec.TX8,g_party_stage_rec.TX36,g_party_stage_rec.TX36,p_dup_party_id,p_dup_party_id
2343 ,g_party_site_stage_list(1).TX10
2344 ,g_party_site_stage_list(1).TX10
2345 ,g_party_site_stage_list(1).TX11
2346 ,g_party_site_stage_list(1).TX11
2347 ,g_party_site_stage_list(1).TX13
2348 ,g_party_site_stage_list(1).TX13
2349 ,g_party_site_stage_list(1).TX15
2350 ,g_party_site_stage_list(1).TX15
2351 ,g_party_site_stage_list(1).TX21
2352 ,g_party_site_stage_list(1).TX21
2353 ,g_party_site_stage_list(1).TX22
2354 ,g_party_site_stage_list(1).TX22
2355 ;
2356 ELSE
2357 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2358 hz_utility_v2pub.debug(p_message=>'ELSE code fork',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2359 END IF;
2360 OPEN x_cursor FOR l_sqlstr USING g_party_stage_rec.TX8,g_party_stage_rec.TX36,g_party_stage_rec.TX36,p_dup_party_id,p_dup_party_id;
2361 END IF;
2362 END IF;
2363 END;
2364 PROCEDURE open_party_cursor(
2365 p_dup_party_id NUMBER,
2366 p_restrict_sql VARCHAR2,
2367 p_contains_str VARCHAR2,
2368 p_search_ctx_id NUMBER,
2369 p_match_str VARCHAR2,
2370 p_search_merged VARCHAR2,
2371 x_cursor OUT HZ_PARTY_STAGE.StageCurTyp) IS
2372 l_sqlstr VARCHAR2(4000);
2373 l_hint VARCHAR2(100);
2374 l_check NUMBER;
2375 l_search_merged VARCHAR2(1);
2376 BEGIN
2377 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2378 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2379 hz_utility_v2pub.debug(p_message=>'calling procedure open party cursor',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2380 END IF;
2381 IF (p_search_merged is null) then
2382 l_search_merged := 'N';
2383 ELSE
2384 l_search_merged := p_search_merged;
2385 END IF;
2386 IF p_contains_str IS NULL THEN
2387 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2388 hz_utility_v2pub.debug(p_message=>'part contains string is null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2389 END IF;
2390 OPEN x_cursor FOR
2391 SELECT PARTY_ID , TX32, TX34, TX35, TX39, TX158, TX40, TX43, TX42, TX44, TX46, TX47, TX48, TX156, TX157
2392 FROM HZ_STAGED_PARTIES stage
2393 WHERE PARTY_ID = p_dup_party_id;
2394 ELSIF p_restrict_sql IS NULL OR p_search_ctx_id IS NOT NULL THEN
2395 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2396 hz_utility_v2pub.debug(p_message=>'Either restrict sql is null or 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);
2397 END IF;
2398 IF p_search_ctx_id IS NULL THEN
2399 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2400 hz_utility_v2pub.debug(p_message=>'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);
2401 END IF;
2402 OPEN x_cursor FOR
2403 SELECT /*+ INDEX(stage HZ_STAGE_PARTIES_T1) */ PARTY_ID , TX32, TX34, TX35, TX39, TX158, TX40, TX43, TX42, TX44, TX46, TX47, TX48, TX156, TX157
2404 FROM HZ_STAGED_PARTIES stage
2405 WHERE contains( concat_col, p_contains_str)>0
2406 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = stage.TX36))
2407 AND( (l_search_merged ='Y' )
2408 OR (l_search_merged = 'I' AND nvl(stage.status, 'A') in ('A', 'I'))
2409 OR (l_search_merged = 'N' AND nvl(stage.status, 'A') in ('A')) )
2410 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
2411 ELSE
2412 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2413 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);
2414 END IF;
2415 OPEN x_cursor FOR
2416 SELECT /*+ ORDERED INDEX(stage HZ_STAGED_PARTIES_U1) */ stage.PARTY_ID , TX32, TX34, TX35, TX39, TX158, TX40, TX43, TX42, TX44, TX46, TX47, TX48, TX156, TX157
2417 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_PARTIES stage
2418 WHERE contains( concat_col, p_contains_str)>0
2419 AND d.SEARCH_CONTEXT_ID=p_search_ctx_id
2420 AND d.party_id = stage.party_id
2421 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = stage.TX36))
2422 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id)
2423 AND( (l_search_merged ='Y' )
2424 OR (l_search_merged = 'I' AND nvl(stage.status, 'A') in ('A', 'I'))
2425 OR (l_search_merged = 'N' AND nvl(stage.status, 'A') in ('A')) );
2426 END IF;
2427 ELSE
2428 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2429 hz_utility_v2pub.debug(p_message=>'Restrict sql is not null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2430 END IF;
2431 l_check := instrb(p_restrict_sql, 'SELECTIVE');
2432 IF (l_check > 0 ) THEN
2433 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2434 hz_utility_v2pub.debug(p_message=>'Restrict sql has a Selective Hint',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2435 END IF;
2436 l_hint := '/*+ INDEX(stage HZ_STAGED_PARTIES_U1) */';
2437 ELSE
2438 l_hint := '/*+ INDEX(stage HZ_STAGE_PARTIES_T1) */';
2439 END IF;
2440 IF p_search_ctx_id IS NULL THEN
2441 l_sqlstr := 'SELECT ' || l_hint || ' PARTY_ID , TX32, TX34, TX35, TX39, TX158, TX40, TX43, TX42, TX44, TX46, TX47, TX48, TX156, TX157'||
2442 ' FROM HZ_STAGED_PARTIES stage'||
2443 ' WHERE contains( concat_col, :cont)>0'||
2444 ' AND ((:TX36 IS NULL OR :TX36||'' '' = stage.TX36))'||
2445 ' AND ('||p_restrict_sql||')' ||
2446 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
2447 IF l_search_merged = 'Y' THEN
2448 l_sqlstr := l_sqlstr ;
2449 ELSIF l_search_merged = 'I' THEN
2450 l_sqlstr := l_sqlstr ||' AND nvl(stage.status,''A'') in (''A'', ''I'')';
2451 ELSE
2452 l_sqlstr := l_sqlstr ||' AND nvl(stage.status,''A'') in (''A'')';
2453 END IF;
2454 output_long_strings('----------------------------------------------------------');
2455 output_long_strings('Party Contains String = '||p_contains_str);
2456 output_long_strings('Restrict Sql = '||p_restrict_sql);
2457 OPEN x_cursor FOR l_sqlstr USING p_contains_str
2458 ,g_party_stage_rec.TX36,g_party_stage_rec.TX36
2459 ,p_dup_party_id, p_dup_party_id;
2460 END IF;
2461 END IF;
2462 exception
2463 when others then
2464 if (instrb(SQLERRM,'DRG-51030')>0) then
2465 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_WILDCARD_ERR');
2466 FND_MSG_PUB.ADD;
2467 RAISE FND_API.G_EXC_ERROR;
2468 elsif (instrb(SQLERRM,'DRG-50943')>0) then
2469 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
2470 FND_MSG_PUB.ADD;
2471 RAISE FND_API.G_EXC_ERROR;
2472 elsif (instrb(SQLERRM,'ORA-20000')>0) then
2473 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
2474 FND_MSG_PUB.ADD;
2475 RAISE FND_API.G_EXC_ERROR;
2476 else
2477 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2478 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2479 FND_MSG_PUB.ADD;
2480 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2481 end if;
2482 END;
2483
2484 PROCEDURE open_party_site_cursor(
2485 p_dup_party_id NUMBER,
2486 p_party_id NUMBER,
2487 p_restrict_sql VARCHAR2,
2488 p_contains_str VARCHAR2,
2489 p_search_ctx_id NUMBER,
2490 p_search_merged VARCHAR2,
2491 p_search_rel_sites VARCHAR2,
2492 p_person_api VARCHAR2,
2493 x_cursor OUT HZ_PARTY_STAGE.StageCurTyp) IS
2494 l_sqlstr VARCHAR2(4000);
2495 l_hint VARCHAR2(100);
2496 l_check NUMBER;
2497 l_check_dt NUMBER;
2498 l_search_merged VARCHAR2(1);
2499 l_status_sql VARCHAR2(100);
2500 p_restrict_sql1 VARCHAR2(4000);
2501
2502 BEGIN
2503 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2504 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2505 hz_utility_v2pub.debug(p_message=>'calling the procedure open_party_site_cursor',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2506 END IF;
2507 IF (p_search_merged is null) then
2508 l_search_merged := 'N';
2509 ELSE
2510 l_search_merged := p_search_merged;
2511 END IF;
2512 IF p_party_id IS NOT NULL THEN
2513 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2514 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);
2515 END IF;
2516 IF p_search_rel_sites = 'N' THEN
2517 OPEN x_cursor FOR
2518 SELECT /*+ INDEX(stage HZ_STAGED_PARTY_SITES_N1) */ PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2519 FROM HZ_STAGED_PARTY_SITES stage
2520 WHERE contains( concat_col, p_contains_str)>0
2521 AND( (l_search_merged ='Y' )
2522 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2523 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2524 AND stage.party_id = p_party_id;
2525 ELSE
2526 OPEN x_cursor FOR
2527 SELECT /*+ INDEX(stage HZ_STAGED_PARTY_SITES_N1) */ PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2528 FROM HZ_STAGED_PARTY_SITES stage
2529 WHERE contains( concat_col, p_contains_str)>0
2530 AND( (l_search_merged ='Y' )
2531 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2532 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2533 AND stage.party_id = p_party_id
2534 UNION
2535 SELECT /*+ INDEX(stage HZ_STAGED_PARTY_SITES_N2) */ stage.PARTY_SITE_ID, stage.PARTY_ID, stage.ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2536 FROM HZ_STAGED_PARTY_SITES stage, hz_relationships r, hz_org_contacts oc
2537 WHERE contains( concat_col, p_contains_str)>0
2538 AND( (l_search_merged ='Y' )
2539 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2540 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2541 AND r.object_id = p_party_id
2542 AND r.subject_id = stage.party_id
2543 AND r.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
2544 AND r.OBJECT_TABLE_NAME = 'HZ_PARTIES'
2545 AND r.relationship_id = oc.party_relationship_id
2546 AND oc.org_contact_id = stage.org_contact_id;
2547 END IF;
2548 ELSIF p_restrict_sql IS NULL OR p_search_ctx_id IS NOT NULL THEN
2549 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2550 hz_utility_v2pub.debug(p_message=>'Either restrict sql is null or 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);
2551 END IF;
2552 IF p_search_ctx_id IS NULL THEN
2553 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2554 hz_utility_v2pub.debug(p_message=>'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);
2555 END IF;
2556 OPEN x_cursor FOR
2557 SELECT PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2558 FROM HZ_STAGED_PARTY_SITES stage
2559 WHERE contains( concat_col, p_contains_str)>0
2560 AND EXISTS (
2561 SELECT 1 FROM HZ_STAGED_PARTIES p
2562 WHERE p.PARTY_ID = stage.PARTY_ID
2563 AND( (l_search_merged ='Y' )
2564 OR (l_search_merged = 'I' AND nvl(p.status, 'A') in ('A', 'I'))
2565 OR (l_search_merged = 'N' AND nvl(p.status, 'A') in ('A')) )
2566 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = p.TX36)))
2567 AND( (l_search_merged ='Y' )
2568 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2569 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2570 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
2571 ELSE
2572 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2573 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);
2574 END IF;
2575 IF p_person_api = 'Y' THEN
2576 OPEN x_cursor FOR
2577 SELECT PARTY_SITE_ID, stage.PARTY_ID, ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2578 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_PARTY_SITES stage
2579 WHERE contains( concat_col, p_contains_str)>0
2580 AND( (l_search_merged ='Y' )
2581 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2582 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2583 AND d.search_context_id = p_search_ctx_id
2584 AND d.party_id = stage.party_id
2585 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id)
2586 UNION
2587 SELECT /*+ INDEX(stage HZ_STAGED_PARTY_SITES_N2) */ stage.PARTY_SITE_ID, r.subject_id, stage.ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2588 FROM HZ_DQM_PARTIES_GT d, hz_relationships r,hz_org_contacts oc, HZ_STAGED_PARTY_SITES stage
2589 WHERE contains( concat_col, p_contains_str)>0
2590 AND( (l_search_merged ='Y' )
2591 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2592 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2593 AND d.search_context_id = p_search_ctx_id
2594 AND d.party_id = r.subject_id
2595 AND r.relationship_id = oc.party_relationship_id
2596 AND oc.org_contact_id = stage.org_contact_id
2597 AND (p_dup_party_id IS NULL OR r.subject_id <> p_dup_party_id);
2598 ELSE
2599 OPEN x_cursor FOR
2600 SELECT PARTY_SITE_ID, stage.PARTY_ID, ORG_CONTACT_ID, TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22
2601 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_PARTY_SITES stage
2602 WHERE contains( concat_col, p_contains_str)>0
2603 AND( (l_search_merged ='Y' )
2604 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2605 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2606 AND d.search_context_id = p_search_ctx_id
2607 AND d.party_id = stage.party_id
2608 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
2609 END IF;
2610 END IF;
2611 ELSE
2612 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2613 hz_utility_v2pub.debug(p_message=>'Restrict sql is not null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2614 END IF;
2615 l_check := instrb(p_restrict_sql, 'SELECTIVE');
2616 l_check_dt := instrb(p_restrict_sql, 'SELECTIVE_PS');
2617 IF (l_check_dt > 0 ) THEN
2618 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2619 hz_utility_v2pub.debug(p_message=>'Restrict sql has the selective_ps hint',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2620 END IF;
2621 l_hint := '/*+ INDEX(stage HZ_STAGED_PARTY_SITES_U1) */';
2622 ELSIF (l_check > 0 ) THEN
2623 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2624 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);
2625 END IF;
2626 l_hint := '/*+ INDEX(stage HZ_STAGED_PARTY_SITES_N1) */';
2627 END IF;
2628 IF l_search_merged = 'Y' THEN
2629 l_status_sql := ' ' ;
2630 ELSIF l_search_merged = 'I' THEN
2631 l_status_sql := ' AND nvl(p.status,''A'') in (''A'', ''I'')';
2632 ELSE
2633 l_status_sql := ' AND nvl(p.status,''A'') in (''A'')';
2634 END IF;
2635 /*Performance fix for Bug:4589953*/
2636 IF(p_person_api='Y') THEN
2637 IF (l_check > 0 ) THEN
2638 IF instrb(p_restrict_sql, 'STAGE.') > 0 THEN
2639 p_restrict_sql1 := replace( p_restrict_sql, 'STAGE.', 'stage1.');
2640 ELSIF instrb(p_restrict_sql, 'stage.') > 0 THEN
2641 p_restrict_sql1 := replace( p_restrict_sql, 'stage.', 'stage1.');
2642 ELSE
2643 p_restrict_sql1 := 'stage1.'||p_restrict_sql;
2644 END IF;
2645 l_sqlstr := 'SELECT /*+ INDEX(stage HZ_STAGED_PARTY_SITES_N1) */ PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID , TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22'||
2646 ' FROM HZ_STAGED_PARTY_SITES stage'||
2647 ' WHERE contains( concat_col, :cont)>0'||
2648 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
2649 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
2650 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
2651 ' AND (ORG_CONTACT_ID IS NULL ' ||
2652 ' AND ('||p_restrict_sql||'))' ||
2653 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ' ||
2654 ' UNION ' ||
2655 'SELECT /*+ INDEX(stage HZ_STAGED_PARTY_SITES_N2) */ PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID , TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22'||
2656 ' FROM HZ_STAGED_PARTY_SITES stage'||
2657 ' WHERE contains( concat_col, :cont)>0'||
2658 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
2659 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
2660 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
2661 ' AND ORG_CONTACT_ID IN ' ||
2662 ' ( SELECT org_contact_id from HZ_ORG_CONTACTS oc, (select object_id, relationship_id, subject_id party_id from hz_relationships ' ||
2663 ' where subject_type = ''PERSON'' AND object_type = ''ORGANIZATION'') stage1 ' ||
2664 ' where stage1.relationship_id = oc.party_relationship_id ' ||
2665 ' and ('||p_restrict_sql1|| ') )' ||
2666 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
2667 OPEN x_cursor FOR l_sqlstr USING p_contains_str,
2668 p_dup_party_id, p_dup_party_id, p_contains_str, p_dup_party_id, p_dup_party_id;
2669 ELSE
2670 l_sqlstr := 'SELECT PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID , TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22'||
2671 ' FROM HZ_STAGED_PARTY_SITES stage'||
2672 ' WHERE contains( concat_col, :cont)>0'||
2673 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
2674 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
2675 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
2676 ' AND EXISTS ('||
2677 ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
2678 ' WHERE p.party_id = stage.party_id ' ||
2679 ' AND ((:TX36 IS NULL OR :TX36||'' '' = p.TX36)) '|| l_status_sql ||' ) ' ||
2680 ' AND ('||get_adjusted_restrict_sql(p_restrict_sql)||')' ||
2681 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
2682 OPEN x_cursor FOR l_sqlstr USING p_contains_str
2683 ,g_party_stage_rec.TX36,g_party_stage_rec.TX36
2684 ,p_dup_party_id, p_dup_party_id;
2685 END IF;
2686 ELSE
2687 l_sqlstr := 'SELECT PARTY_SITE_ID, PARTY_ID, ORG_CONTACT_ID , TX9, TX10, TX11, TX13, TX14, TX15, TX20, TX21, TX22'||
2688 ' FROM HZ_STAGED_PARTY_SITES stage'||
2689 ' WHERE contains( concat_col, :cont)>0'||
2690 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
2691 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
2692 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
2693 ' AND EXISTS ('||
2694 ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
2695 ' WHERE p.party_id = stage.party_id ' ||
2696 ' AND ((:TX36 IS NULL OR :TX36||'' '' = p.TX36)) '|| l_status_sql ||' ) ' ||
2697 ' AND ('||p_restrict_sql||')' ||
2698 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
2699 OPEN x_cursor FOR l_sqlstr USING p_contains_str
2700 ,g_party_stage_rec.TX36,g_party_stage_rec.TX36
2701 ,p_dup_party_id, p_dup_party_id;
2702 END IF;
2703 END IF;
2704 output_long_strings('----------------------------------------------------------');
2705 output_long_strings('Party Site Contains String = '||p_contains_str);
2706 output_long_strings('Restrict Sql = '||p_restrict_sql);
2707 exception
2708 when others then
2709 if (instrb(SQLERRM,'DRG-51030')>0) then
2710 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_WILDCARD_ERR');
2711 FND_MSG_PUB.ADD;
2712 RAISE FND_API.G_EXC_ERROR;
2713 elsif (instrb(SQLERRM,'DRG-50943')>0) then
2714 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
2715 FND_MSG_PUB.ADD;
2716 RAISE FND_API.G_EXC_ERROR;
2717 elsif (instrb(SQLERRM,'ORA-20000')>0) then
2718 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
2719 FND_MSG_PUB.ADD;
2720 RAISE FND_API.G_EXC_ERROR;
2721 else
2722 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2723 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2724 FND_MSG_PUB.ADD;
2725 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2726 end if;
2727 END;
2728
2729 PROCEDURE open_contact_cursor(
2730 p_dup_party_id NUMBER,
2731 p_party_id NUMBER,
2732 p_restrict_sql VARCHAR2,
2733 p_contains_str VARCHAR2,
2734 p_search_ctx_id NUMBER,
2735 p_search_merged VARCHAR2,
2736 x_cursor OUT HZ_PARTY_STAGE.StageCurTyp) IS
2737 l_sqlstr VARCHAR2(4000);
2738 l_hint VARCHAR2(100);
2739 l_check NUMBER;
2740 l_check_dt NUMBER;
2741 l_search_merged VARCHAR2(1);
2742 l_status_sql VARCHAR2(100);
2743
2744 BEGIN
2745 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2746 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2747 hz_utility_v2pub.debug(p_message=>'calling the procedure open_contact_cursor',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2748 END IF;
2749 IF (p_search_merged is null) then
2750 l_search_merged := 'N';
2751 ELSE
2752 l_search_merged := p_search_merged;
2753 END IF;
2754 IF p_party_id IS NOT NULL THEN
2755 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2756 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);
2757 END IF;
2758 OPEN x_cursor FOR
2759 SELECT /*+ INDEX(stage HZ_STAGED_CONTACTS_N1) */ ORG_CONTACT_ID, PARTY_ID
2760 FROM HZ_STAGED_CONTACTS stage
2761 WHERE contains( concat_col, p_contains_str)>0
2762 AND EXISTS (
2763 SELECT 1 FROM HZ_STAGED_PARTIES p
2764 WHERE p.PARTY_ID = stage.PARTY_ID
2765 AND( (l_search_merged ='Y' )
2766 OR (l_search_merged = 'I' AND nvl(p.status, 'A') in ('A', 'I'))
2767 OR (l_search_merged = 'N' AND nvl(p.status, 'A') in ('A')) )
2768 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = p.TX36)))
2769 AND( (l_search_merged ='Y' )
2770 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2771 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2772 AND stage.party_id = p_party_id;
2773 ELSIF p_restrict_sql IS NULL OR p_search_ctx_id IS NOT NULL THEN
2774 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2775 hz_utility_v2pub.debug(p_message=>'Either Restrict sql is null or 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);
2776 END IF;
2777 IF p_search_ctx_id IS NULL THEN
2778 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2779 hz_utility_v2pub.debug(p_message=>'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);
2780 END IF;
2781 OPEN x_cursor FOR
2782 SELECT ORG_CONTACT_ID, PARTY_ID
2783 FROM HZ_STAGED_CONTACTS stage
2784 WHERE contains( concat_col, p_contains_str)>0
2785 AND EXISTS (
2786 SELECT 1 FROM HZ_STAGED_PARTIES p
2787 WHERE p.PARTY_ID = stage.PARTY_ID
2788 AND( (l_search_merged ='Y' )
2789 OR (l_search_merged = 'I' AND nvl(p.status, 'A') in ('A', 'I'))
2790 OR (l_search_merged = 'N' AND nvl(p.status, 'A') in ('A')) )
2791 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = p.TX36)))
2792 AND( (l_search_merged ='Y' )
2793 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2794 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2795 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
2796 ELSE
2797 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2798 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);
2799 END IF;
2800 OPEN x_cursor FOR
2801 SELECT /*+ ORDERED INDEX(stage HZ_STAGED_CONTACTS_N1) */ ORG_CONTACT_ID, stage.PARTY_ID
2802 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACTS stage
2803 WHERE contains( concat_col, p_contains_str)>0
2804 AND d.search_context_id = p_search_ctx_id
2805 AND d.party_id = stage.party_id
2806 AND( (l_search_merged ='Y' )
2807 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2808 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2809 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
2810 END IF;
2811 ELSE
2812 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2813 hz_utility_v2pub.debug(p_message=>'Restrict Sql is not null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2814 END IF;
2815 l_check := instrb(p_restrict_sql, 'SELECTIVE');
2816 l_check_dt := instrb(p_restrict_sql, 'SELECTIVE_CT');
2817 IF (l_check_dt > 0 ) THEN
2818 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2819 hz_utility_v2pub.debug(p_message=>'Restrict sql has the selective_ct hint',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2820 END IF;
2821 l_hint := '/*+ INDEX(stage HZ_STAGED_CONTACTS_U1) */';
2822 ELSIF (l_check > 0 ) THEN
2823 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2824 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);
2825 END IF;
2826 l_hint := '/*+ INDEX(stage HZ_STAGED_CONTACTS_N1) */';
2827 END IF;
2828 IF l_search_merged = 'Y' THEN
2829 l_status_sql := ' ' ;
2830 ELSIF l_search_merged = 'I' THEN
2831 l_status_sql := ' AND nvl(p.status,''A'') in (''A'', ''I'')';
2832 ELSE
2833 l_status_sql := ' AND nvl(p.status,''A'') in (''A'')';
2834 END IF;
2835 l_sqlstr := 'SELECT ' || l_hint || ' ORG_CONTACT_ID, PARTY_ID '||
2836 ' FROM HZ_STAGED_CONTACTS stage'||
2837 ' WHERE contains( concat_col, :cont)>0'||
2838 ' AND EXISTS ('||
2839 ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
2840 ' WHERE p.party_id = stage.party_id ' ||
2841 ' AND ((:TX36 IS NULL OR :TX36||'' '' = p.TX36)) '|| l_status_sql ||' ) ' ||
2842 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
2843 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
2844 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
2845 ' AND ('||p_restrict_sql||')' ||
2846 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
2847 OPEN x_cursor FOR l_sqlstr USING p_contains_str
2848 ,g_party_stage_rec.TX36,g_party_stage_rec.TX36
2849 ,p_dup_party_id, p_dup_party_id;
2850 END IF;
2851 output_long_strings('----------------------------------------------------------');
2852 output_long_strings('Contacts Contains String = '||p_contains_str);
2853 output_long_strings('Restrict Sql = '||p_restrict_sql);
2854 exception
2855 when others then
2856 if (instrb(SQLERRM,'DRG-51030')>0) then
2857 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_WILDCARD_ERR');
2858 FND_MSG_PUB.ADD;
2859 RAISE FND_API.G_EXC_ERROR;
2860 elsif (instrb(SQLERRM,'DRG-50943')>0) then
2861 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
2862 FND_MSG_PUB.ADD;
2863 RAISE FND_API.G_EXC_ERROR;
2864 elsif (instrb(SQLERRM,'ORA-20000')>0) then
2865 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
2866 FND_MSG_PUB.ADD;
2867 RAISE FND_API.G_EXC_ERROR;
2868 else
2869 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
2870 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2871 FND_MSG_PUB.ADD;
2872 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2873 end if;
2874 END;
2875
2876 PROCEDURE open_contact_pt_cursor(
2877 p_dup_party_id NUMBER,
2878 p_party_id NUMBER,
2879 p_restrict_sql VARCHAR2,
2880 p_contains_str VARCHAR2,
2881 p_search_ctx_id NUMBER,
2882 p_search_merged VARCHAR2,
2883 p_search_rel_cpts VARCHAR2,
2884 p_person_api VARCHAR2,
2885 x_cursor OUT HZ_PARTY_STAGE.StageCurTyp,
2886 p_restrict_entity VARCHAR2 DEFAULT NULL) IS
2887 l_sqlstr VARCHAR2(4000);
2888 l_hint VARCHAR2(100);
2889 l_check NUMBER;
2890 l_check_dt NUMBER;
2891 l_search_merged VARCHAR2(1);
2892 l_status_sql VARCHAR2(100);
2893 p_restrict_sql1 VARCHAR2(4000);
2894
2895 BEGIN
2896 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2897 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2898 hz_utility_v2pub.debug(p_message=>'calling the procedure open_contact_pt_cursor',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2899 END IF;
2900 IF (p_search_merged is null) then
2901 l_search_merged := 'N';
2902 ELSE
2903 l_search_merged := p_search_merged;
2904 END IF;
2905 IF p_restrict_entity = 'CONTACTS'
2906 THEN
2907 OPEN x_cursor FOR
2908 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, TX3, TX4
2909 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2910 WHERE contains( concat_col, p_contains_str)>0
2911 AND d.search_context_id = p_search_ctx_id
2912 AND( (l_search_merged ='Y' )
2913 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2914 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2915 AND d.party_id = stage.org_contact_id ;
2916 END IF;
2917 IF p_restrict_entity = 'PARTY_SITES'
2918 THEN
2919 OPEN x_cursor FOR
2920 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, TX3, TX4
2921 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2922 WHERE contains( concat_col, p_contains_str)>0
2923 AND d.search_context_id = p_search_ctx_id
2924 AND( (l_search_merged ='Y' )
2925 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2926 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2927 AND d.party_id = stage.party_site_id ;
2928 END IF;
2929 IF p_restrict_entity IS NULL
2930 THEN
2931 IF p_party_id IS NOT NULL THEN
2932 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2933 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);
2934 END IF;
2935 IF p_search_rel_cpts = 'N' THEN
2936 OPEN x_cursor FOR
2937 SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4
2938 FROM HZ_STAGED_CONTACT_POINTS stage
2939 WHERE contains( concat_col, p_contains_str)>0
2940 AND( (l_search_merged ='Y' )
2941 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2942 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2943 AND stage.party_id = p_party_id;
2944 ELSE
2945 OPEN x_cursor FOR
2946 SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4
2947 FROM HZ_STAGED_CONTACT_POINTS stage
2948 WHERE contains( concat_col, p_contains_str)>0
2949 AND( (l_search_merged ='Y' )
2950 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2951 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2952 AND stage.party_id = p_party_id
2953 UNION
2954 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, TX3, TX4
2955 FROM HZ_STAGED_CONTACT_POINTS stage, hz_relationships r, hz_org_contacts oc
2956 WHERE contains( concat_col, p_contains_str)>0
2957 AND r.object_id = p_party_id
2958 AND( (l_search_merged ='Y' )
2959 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2960 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2961 AND r.subject_id = stage.party_id
2962 AND r.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
2963 AND r.OBJECT_TABLE_NAME = 'HZ_PARTIES'
2964 AND r.relationship_id = oc.party_relationship_id
2965 AND oc.org_contact_id = stage.org_contact_id;
2966 END IF;
2967 ELSIF p_restrict_sql IS NULL OR p_search_ctx_id IS NOT NULL THEN
2968 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2969 hz_utility_v2pub.debug(p_message=>'Either Restrict sql is null or 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);
2970 END IF;
2971 IF p_search_ctx_id IS NULL THEN
2972 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2973 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);
2974 END IF;
2975 OPEN x_cursor FOR
2976 SELECT CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4
2977 FROM HZ_STAGED_CONTACT_POINTS stage
2978 WHERE contains( concat_col, p_contains_str)>0
2979 AND EXISTS (
2980 SELECT 1 FROM HZ_STAGED_PARTIES p
2981 WHERE p.PARTY_ID = stage.PARTY_ID
2982 AND( (l_search_merged ='Y' )
2983 OR (l_search_merged = 'I' AND nvl(p.status, 'A') in ('A', 'I'))
2984 OR (l_search_merged = 'N' AND nvl(p.status, 'A') in ('A')) )
2985 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = p.TX36)))
2986 AND( (l_search_merged ='Y' )
2987 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
2988 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
2989 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
2990 ELSE
2991 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2992 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);
2993 END IF;
2994 IF p_person_api = 'Y' THEN
2995 OPEN x_cursor FOR
2996 SELECT CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4
2997 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
2998 WHERE contains( concat_col, p_contains_str)>0
2999 AND d.search_context_id = p_search_ctx_id
3000 AND d.party_id = stage.party_id
3001 AND( (l_search_merged ='Y' )
3002 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
3003 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
3004 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id)
3005 UNION
3006 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, TX3, TX4
3007 FROM HZ_DQM_PARTIES_GT d, HZ_RELATIONSHIPS r, HZ_ORG_CONTACTS oc, HZ_STAGED_CONTACT_POINTS stage
3008 WHERE contains( concat_col, p_contains_str)>0
3009 AND d.search_context_id = p_search_ctx_id
3010 AND d.party_id = r.subject_id
3011 AND r.relationship_id = oc.party_relationship_id
3012 AND oc.org_contact_id = stage.org_contact_id
3013 AND( (l_search_merged ='Y' )
3014 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
3015 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
3016 AND (p_dup_party_id IS NULL OR r.subject_id <> p_dup_party_id);
3017 ELSE
3018 OPEN x_cursor FOR
3019 SELECT CONTACT_POINT_ID, stage.contact_point_type, stage.PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4
3020 FROM HZ_DQM_PARTIES_GT d, HZ_STAGED_CONTACT_POINTS stage
3021 WHERE contains( concat_col, p_contains_str)>0
3022 AND d.search_context_id = p_search_ctx_id
3023 AND d.party_id = stage.party_id
3024 AND( (l_search_merged ='Y' )
3025 OR (l_search_merged = 'I' AND nvl(stage.status_flag, 'A') in ('A', 'I'))
3026 OR (l_search_merged = 'N' AND nvl(stage.status_flag, 'A') = 'A') )
3027 AND (p_dup_party_id IS NULL OR stage.party_id <> p_dup_party_id);
3028 END IF;
3029 END IF;
3030 ELSE
3031 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3032 hz_utility_v2pub.debug(p_message=>'Restrict sql is not null',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3033 END IF;
3034 l_check := instrb(p_restrict_sql, 'SELECTIVE');
3035 l_check_dt := instrb(p_restrict_sql, 'SELECTIVE_CPT');
3036 IF (l_check_dt > 0 ) THEN
3037 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3038 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);
3039 END IF;
3040 l_hint := '/*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_U1) */';
3041 ELSIF (l_check > 0 ) THEN
3042 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3043 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);
3044 END IF;
3045 l_hint := '/*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N1) */';
3046 END IF;
3047 IF l_search_merged = 'Y' THEN
3048 l_status_sql := ' ' ;
3049 ELSIF l_search_merged = 'I' THEN
3050 l_status_sql := ' AND nvl(p.status,''A'') in (''A'', ''I'')';
3051 ELSE
3052 l_status_sql := ' AND nvl(p.status,''A'') in (''A'')';
3053 END IF;
3054 IF p_person_api = 'Y' THEN
3055 /*Performance fix for Bug:4589953*/
3056 IF (l_check > 0 ) THEN
3057 IF instrb(p_restrict_sql, 'STAGE.') > 0 THEN
3058 p_restrict_sql1 := replace( p_restrict_sql, 'STAGE.', 'stage1.');
3059 ELSIF instrb(p_restrict_sql, 'stage.') > 0 THEN
3060 p_restrict_sql1 := replace( p_restrict_sql, 'stage.', 'stage1.');
3061 ELSE
3062 p_restrict_sql1 := 'stage1.'||p_restrict_sql;
3063 END IF;
3064 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, TX3, TX4'||
3065 ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3066 ' WHERE contains( concat_col, :cont)>0 '||
3067 ' AND (stage.org_contact_id is null '||
3068 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3069 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3070 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
3071 ' AND ('||p_restrict_sql||'))' ||
3072 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ' ||
3073 ' UNION ' ||
3074 ' SELECT /*+ INDEX(stage HZ_STAGED_CONTACT_POINTS_N2) */ CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4'||
3075 ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3076 ' WHERE contains( concat_col, :cont)>0 '||
3077 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3078 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3079 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
3080 ' AND (stage.org_contact_id in ' ||
3081 ' ( SELECT org_contact_id from HZ_ORG_CONTACTS oc, (select object_id, relationship_id, subject_id party_id from hz_relationships r ' ||
3082 ' where subject_type = ''PERSON'' AND object_type = ''ORGANIZATION'') stage1 ' ||
3083 ' where stage1.relationship_id = oc.party_relationship_id ' ||
3084 ' and ('||p_restrict_sql1 || ') ) )' ||
3085 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
3086 OPEN x_cursor FOR l_sqlstr USING p_contains_str,
3087 p_dup_party_id, p_dup_party_id, p_contains_str, p_dup_party_id, p_dup_party_id;
3088 ELSE
3089 l_sqlstr := 'SELECT ' || l_hint ||' CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4'||
3090 ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3091 ' WHERE contains( concat_col, :cont)>0'||
3092 ' AND EXISTS ('||
3093 ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
3094 ' WHERE p.party_id = stage.party_id ' ||
3095 ' AND ((:TX36 IS NULL OR :TX36||'' '' = p.TX36)) '|| l_status_sql ||' ) ' ||
3096 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3097 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3098 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
3099 ' AND ('||get_adjusted_restrict_sql(p_restrict_sql)||')' ||
3100 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
3101 OPEN x_cursor FOR l_sqlstr USING p_contains_str
3102 ,g_party_stage_rec.TX36,g_party_stage_rec.TX36
3103 ,p_dup_party_id, p_dup_party_id;
3104 END IF;
3105 ELSE
3106 l_sqlstr := 'SELECT ' || l_hint ||' CONTACT_POINT_ID, stage.contact_point_type, PARTY_ID, PARTY_SITE_ID, ORG_CONTACT_ID , TX1, TX3, TX4'||
3107 ' FROM HZ_STAGED_CONTACT_POINTS stage'||
3108 ' WHERE contains( concat_col, :cont)>0'||
3109 ' AND EXISTS ('||
3110 ' SELECT 1 FROM HZ_STAGED_PARTIES p ' ||
3111 ' WHERE p.party_id = stage.party_id ' ||
3112 ' AND ((:TX36 IS NULL OR :TX36||'' '' = p.TX36)) '|| l_status_sql ||' ) ' ||
3113 ' AND( ('''||l_search_merged||''' =''Y'' ) '||
3114 ' OR ('''||l_search_merged||''' = ''I'' AND nvl(stage.status_flag, ''A'') in (''A'', ''I'')) '||
3115 ' OR ('''||l_search_merged||''' = ''N'' AND nvl(stage.status_flag, ''A'') = ''A'') ) '||
3116 ' AND ('||p_restrict_sql||')' ||
3117 ' AND (:p_dup IS NULL OR stage.party_id <> :p_dup) ';
3118 OPEN x_cursor FOR l_sqlstr USING p_contains_str
3119 ,g_party_stage_rec.TX36,g_party_stage_rec.TX36
3120 ,p_dup_party_id, p_dup_party_id;
3121 END IF;
3122 END IF;
3123 END IF;
3124 output_long_strings('----------------------------------------------------------');
3125 output_long_strings('Contact Points Contains String = '||p_contains_str);
3126 output_long_strings('Restrict Sql = '||p_restrict_sql);
3127 exception
3128 when others then
3129 if (instrb(SQLERRM,'DRG-51030')>0) then
3130 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_WILDCARD_ERR');
3131 FND_MSG_PUB.ADD;
3132 RAISE FND_API.G_EXC_ERROR;
3133 elsif (instrb(SQLERRM,'DRG-50943')>0) then
3134 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
3135 FND_MSG_PUB.ADD;
3136 RAISE FND_API.G_EXC_ERROR;
3137 elsif (instrb(SQLERRM,'ORA-20000')>0) then
3138 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
3139 FND_MSG_PUB.ADD;
3140 RAISE FND_API.G_EXC_ERROR;
3141 else
3142 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
3143 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3144 FND_MSG_PUB.ADD;
3145 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3146 end if;
3147 END;
3148
3149
3150 PROCEDURE return_direct_matches(p_restrict_sql VARCHAR2, p_match_str VARCHAR2, p_thresh NUMBER, p_search_ctx_id NUMBER, p_search_merged VARCHAR2, p_dup_party_id NUMBER, x_num_matches OUT NUMBER) IS
3151 l_sqlstr VARCHAR2(4000);
3152 l_search_merged VARCHAR2(1);
3153 BEGIN
3154 IF (p_search_merged is null) then
3155 l_search_merged := 'N';
3156 ELSE
3157 l_search_merged := p_search_merged;
3158 END IF;
3159 IF p_restrict_sql IS NULL THEN
3160 INSERT INTO HZ_MATCHED_PARTIES_GT (SEARCH_CONTEXT_ID, PARTY_ID, SCORE)
3161 SELECT p_search_ctx_id, PARTY_ID, decode(TX8,g_party_stage_rec.TX8||' ',100,90)
3162 FROM hz_staged_parties
3163 WHERE TX8 LIKE g_party_stage_rec.TX8||' %'
3164 AND ((g_party_stage_rec.TX36 IS NULL OR g_party_stage_rec.TX36||' ' = TX36))
3165 AND( (l_search_merged ='Y' )
3166 OR (l_search_merged = 'I' AND nvl(status, 'A') in ('A', 'I'))
3167 OR (l_search_merged = 'N' AND nvl(status, 'A') in ('A')))
3168 AND (p_dup_party_id IS NULL OR party_id <> p_dup_party_id)
3169 AND rownum <= p_thresh;
3170 ELSE
3171 l_sqlstr := 'INSERT INTO HZ_MATCHED_PARTIES_GT (SEARCH_CONTEXT_ID, PARTY_ID, SCORE) SELECT :ctx_id, PARTY_ID, decode(TX8,:TX8||'' '',100,90) FROM hz_staged_parties stage ';
3172 l_sqlstr := l_sqlstr || ' WHERE TX8 like :TX8||'' %'' ';
3173 l_sqlstr := l_sqlstr || ' AND (:TX36 IS NULL OR :TX36||'' '' = TX36) ';
3174 IF l_search_merged = 'N' THEN
3175 l_sqlstr := l_sqlstr || ' AND nvl(status,''A'')=''A'' ';
3176 ELSIF l_search_merged = 'Y' THEN
3177 l_sqlstr := l_sqlstr || ' AND nvl(status,''A'') in (''A'',''I'') ';
3178 END IF;
3179 l_sqlstr := l_sqlstr || ' AND (:p_dup IS NULL OR party_id <> :p_dup ) ';
3180 l_sqlstr := l_sqlstr || ' AND '||p_restrict_sql||' ';
3181 l_sqlstr := l_sqlstr || ' AND ROWNUM <= :thresh ';
3182 EXECUTE IMMEDIATE l_sqlstr USING p_search_ctx_id, g_party_stage_rec.TX8,g_party_stage_rec.TX8,g_party_stage_rec.TX36,g_party_stage_rec.TX36,p_dup_party_id,p_dup_party_id,p_thresh;
3183 END IF;
3184 x_num_matches := SQL%ROWCOUNT;
3185 END;
3186
3187 FUNCTION get_new_score_rec (
3188 p_init_total_score NUMBER,
3189 p_init_party_score NUMBER,
3190 p_init_party_site_score NUMBER,
3191 p_init_contact_score NUMBER,
3192 p_init_contact_point_score NUMBER,
3193 p_party_id NUMBER,
3194 p_party_site_id NUMBER,
3195 p_org_contact_id NUMBER,
3196 p_contact_point_id NUMBER)
3197 RETURN HZ_PARTY_SEARCH.score_rec IS
3198 l_score_rec HZ_PARTY_SEARCH.score_rec;
3199 BEGIN
3200 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3201 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3202 hz_utility_v2pub.debug(p_message=>'calling the function get_new_score_rec to set the l_score_rec structure',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3203 END IF;
3204 l_score_rec.TOTAL_SCORE := p_init_total_score;
3205 l_score_rec.PARTY_SCORE := p_init_party_score;
3206 l_score_rec.PARTY_SITE_SCORE := p_init_party_site_score;
3207 l_score_rec.CONTACT_SCORE := p_init_contact_score;
3208 l_score_rec.CONTACT_POINT_SCORE := p_init_contact_point_score;
3209 l_score_rec.PARTY_ID := p_party_id;
3210 l_score_rec.PARTY_SITE_ID := p_party_site_id;
3211 l_score_rec.ORG_CONTACT_ID := p_org_contact_id;
3212 l_score_rec.CONTACT_POINT_ID := p_contact_point_id;
3213 RETURN l_score_rec;
3214 END;
3215
3216 /**********************************************************
3217 This procedure finds the set of parties that match the search
3218 criteria and returns a scored set of parties
3219
3220 The steps in executing the search are as follows
3221 1. Initialization and error checks
3222 2. Setup of intermedia query strings for Acquisition query
3223 3. Execution of Acquisition query
3224 4. Execution of Secondary queries to score results
3225 5. Setup of data temporary table to return search results
3226 **********************************************************/
3227
3228 PROCEDURE find_parties (
3229 p_rule_id IN NUMBER,
3230 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
3231 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
3232 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
3233 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
3234 p_restrict_sql IN VARCHAR2,
3235 p_match_type IN VARCHAR2,
3236 p_search_merged IN VARCHAR2,
3237 p_dup_party_id IN NUMBER,
3238 p_dup_set_id IN NUMBER,
3239 p_dup_batch_id IN NUMBER,
3240 p_ins_details IN VARCHAR2,
3241 x_search_ctx_id OUT NUMBER,
3242 x_num_matches OUT NUMBER
3243 ) IS
3244
3245 -- Strings to hold the generated Intermedia query strings
3246 l_party_contains_str VARCHAR2(32000);
3247 l_party_site_contains_str VARCHAR2(32000);
3248 l_contact_contains_str VARCHAR2(32000);
3249 l_contact_pt_contains_str VARCHAR2(32000);
3250 l_denorm_str VARCHAR2(32000);
3251 l_ps_denorm_str VARCHAR2(32000);
3252 l_ct_denorm_str VARCHAR2(32000);
3253 l_cpt_denorm_str VARCHAR2(32000);
3254
3255 -- Other local variables
3256 l_match_str VARCHAR2(30); -- Match type (AND or OR)
3257 l_sqlstr VARCHAR2(32000); -- Dynamic SQL String
3258 -- For Score calculation
3259 l_max_score NUMBER;
3260 l_match_idx NUMBER;
3261 l_entered_max_score NUMBER;
3262 FIRST BOOLEAN;
3263 l_search_ctx_id NUMBER; -- Generated Search Context ID
3264
3265 l_TX39 VARCHAR2(2000);
3266 l_TX13 VARCHAR2(2000);
3267 l_TX20 VARCHAR2(2000);
3268 l_TX42 VARCHAR2(2000);
3269 l_TX32 VARCHAR2(2000);
3270 l_TX46 VARCHAR2(2000);
3271 l_TX9 VARCHAR2(2000);
3272 l_TX22 VARCHAR2(2000);
3273 l_TX43 VARCHAR2(2000);
3274 l_TX44 VARCHAR2(2000);
3275 l_TX35 VARCHAR2(2000);
3276 l_TX1 VARCHAR2(2000);
3277 l_TX158 VARCHAR2(2000);
3278 l_TX47 VARCHAR2(2000);
3279 l_TX15 VARCHAR2(2000);
3280 l_TX21 VARCHAR2(2000);
3281 l_TX3 VARCHAR2(2000);
3282 l_TX10 VARCHAR2(2000);
3283 l_TX11 VARCHAR2(2000);
3284 l_TX4 VARCHAR2(2000);
3285 l_TX157 VARCHAR2(2000);
3286 l_TX40 VARCHAR2(2000);
3287 l_TX34 VARCHAR2(2000);
3288 l_TX48 VARCHAR2(2000);
3289 l_TX156 VARCHAR2(2000);
3290 l_TX14 VARCHAR2(2000);
3291 H_SCORES HZ_PARTY_SEARCH.score_list;
3292 H_PARTY_ID HZ_PARTY_SEARCH.IDList;
3293 H_PARTY_ID_LIST HZ_PARTY_SEARCH.IDList;
3294
3295 l_score NUMBER;
3296 l_idx NUMBER;
3297 l_party_cur HZ_PARTY_STAGE.StageCurTyp;
3298 l_party_site_cur HZ_PARTY_STAGE.StageCurTyp;
3299 l_contact_cur HZ_PARTY_STAGE.StageCurTyp;
3300 l_contact_pt_cur HZ_PARTY_STAGE.StageCurTyp;
3301 l_party_id NUMBER;
3302 l_ps_party_id NUMBER;
3303 l_ct_party_id NUMBER;
3304 l_cpt_party_id NUMBER;
3305 l_cpt_ps_id NUMBER;
3306 l_cpt_contact_id NUMBER;
3307 l_cpt_type VARCHAR2(100);
3308 l_party_site_id NUMBER;
3309 l_org_contact_id NUMBER;
3310 l_contact_pt_id NUMBER;
3311 l_ps_contact_id NUMBER;
3312 l_party_max_score NUMBER;
3313 l_ps_max_score NUMBER;
3314 l_contact_max_score NUMBER;
3315 l_cpt_max_score NUMBER;
3316 l_denorm_max_score NUMBER;
3317 l_non_denorm_max_score NUMBER;
3318
3319 defpt NUMBER :=0;
3320 defps NUMBER :=0;
3321 defct NUMBER :=0;
3322 defcpt NUMBER :=0;
3323 l_index NUMBER;
3324 l_max_thresh NUMBER;
3325 l_tmp NUMBER;
3326 l_merge_flag VARCHAR2(1);
3327 l_num_eval NUMBER:=0;
3328
3329 --Fix for bug 4417124
3330 l_use_contact_addr_info BOOLEAN := TRUE;
3331 l_use_contact_cpt_info BOOLEAN := TRUE;
3332 l_use_contact_addr_flag VARCHAR2(1) := 'Y';
3333 l_use_contact_cpt_flag VARCHAR2(1) := 'Y';
3334
3335 L_RETURN_IMM_EXC EXCEPTION;
3336
3337
3338 /********************* Find Parties private procedures *******/
3339 PROCEDURE push_eval IS
3340 BEGIN
3341 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3342 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3343 hz_utility_v2pub.debug(p_message=>'calling the procedure push_eval',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3344 END IF;
3345 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3346 hz_utility_v2pub.debug(p_message=>'Emptying the lists H_PARTY_ID, H_PARTY_ID_LIST and H_SCORES',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3347 END IF;
3348 H_PARTY_ID.DELETE;
3349 H_PARTY_ID_LIST.DELETE;
3350 H_SCORES.DELETE;
3351 g_mappings.DELETE;
3352 HZ_DQM_SEARCH_UTIL.set_num_eval(0);
3353 call_order(5) := call_order(1);
3354 call_type(5) := 'AND';
3355 call_max_score(5) := call_max_score(1);
3356 call_type(2) := 'OR';
3357 END;
3358
3359 /** Private procedure to acquire and score at party level ***/
3360 PROCEDURE eval_party_level(p_party_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER) IS
3361 l_party_id_idx NUMBER:=1;
3362 l_ctx_id NUMBER;
3363 l_precalc_score BOOLEAN := FALSE;
3364 l_TX35_new varchar2(4000);
3365 BEGIN
3366 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3367 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3368 hz_utility_v2pub.debug(p_message=>'calling the procedure eval_party_level',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3369 END IF;
3370 SAVEPOINT eval_start;
3371 IF l_match_str = ' AND ' AND p_call_type = 'AND' THEN
3372 l_ctx_id := l_search_ctx_id;
3373 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3374 hz_utility_v2pub.debug(p_message=>'Match rule is AND and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3375 END IF;
3376 FORALL I in 1..H_PARTY_ID.COUNT
3377 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3378 l_search_ctx_id,H_PARTY_ID(I));
3379 H_PARTY_ID.DELETE;
3380 H_PARTY_ID_LIST.DELETE;
3381 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
3382 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3383 hz_utility_v2pub.debug(p_message=>'Match rule is OR and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3384 END IF;
3385 l_ctx_id := l_search_ctx_id;
3386 FORALL I in 1..H_PARTY_ID.COUNT
3387 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3388 l_search_ctx_id,H_PARTY_ID(I));
3389 l_party_id_idx := H_PARTY_ID.COUNT+1;
3390 ELSE
3391 IF (p_restrict_sql IS NULL OR instrb(p_restrict_sql, 'SELECTIVE')=0)
3392 and check_estimate_hits('PARTY',p_party_contains_str)>l_max_thresh THEN
3393 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3394 hz_utility_v2pub.debug(p_message=>'In eval party level estimated hits exceed threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3395 END IF;
3396 IF g_party_stage_rec.TX8 IS NOT NULL AND nvl(FND_PROFILE.VALUE('HZ_DQM_PN_THRESH_RESOLUTION'),'NONE')='SQL' AND p_dup_batch_id IS NULL THEN
3397 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3398 hz_utility_v2pub.debug(p_message=>'In eval party level resolution options is set to SQL search.',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3399 END IF;
3400 IF (l_party_site_contains_str IS NULL AND
3401 l_contact_contains_str IS NULL AND
3402 l_contact_pt_contains_str IS NULL) AND NOT g_other_party_level_attribs AND p_dup_set_id IS NULL THEN
3403 return_direct_matches(p_restrict_sql,l_match_str,l_max_thresh,l_search_ctx_id,p_search_merged,p_dup_party_id, x_num_matches);
3404 RAISE L_RETURN_IMM_EXC;
3405 ELSE
3406 open_party_cursor_direct(p_dup_party_id, p_restrict_sql, l_match_str,p_search_merged,p_party_contains_str,l_party_cur);
3407 END IF;
3408 ELSE
3409 IF p_index>1 THEN
3410 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3411 hz_utility_v2pub.debug(p_message=>'In eval party level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3412 END IF;
3413 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3414 FND_MSG_PUB.ADD;
3415 RAISE FND_API.G_EXC_ERROR;
3416 ELSE
3417 push_eval;
3418 RETURN;
3419 END IF;
3420 END IF;
3421 END IF;
3422 l_ctx_id := NULL;
3423 l_party_id_idx := H_PARTY_ID.COUNT+1;
3424 END IF;
3425 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3426 hz_utility_v2pub.debug(p_message=>'========== START LOOPING THROUGH WHAT IS RETURNED BY OPEN_PARTY_CURSOR ================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3427 END IF;
3428 IF l_party_cur IS NULL OR (not l_party_cur%ISOPEN) THEN
3429 open_party_cursor(p_dup_party_id, p_restrict_sql, p_party_contains_str,l_ctx_id, l_match_str,p_search_merged,l_party_cur);
3430 END IF;
3431 LOOP
3432 FETCH l_party_cur INTO
3433 l_party_id , l_TX32, l_TX34, l_TX35, l_TX39, l_TX158, l_TX40, l_TX43, l_TX42, l_TX44, l_TX46, l_TX47, l_TX48, l_TX156, l_TX157;
3434 EXIT WHEN l_party_cur%NOTFOUND;
3435 l_index := map_id(l_party_id);
3436 l_TX35_new:=RTRIM(LTRIM(l_TX35));
3437 l_TX35_new:=(CASE l_TX35_new WHEN 'SYNC' THEN HZ_STAGE_MAP_TRANSFORM.den_acc_number (l_party_id) ELSE l_TX35_new END);
3438 l_score := GET_PARTY_SCORE(l_TX32,l_TX34,l_TX35_new,l_TX39,l_TX158,l_TX40,l_TX43,l_TX42,l_TX44,l_TX46,l_TX47,l_TX48,l_TX156,l_TX157);
3439 IF NOT H_SCORES.EXISTS(l_index) THEN
3440 H_SCORES(l_index) := get_new_score_rec(l_score,l_score,defps,defct,defcpt, l_party_id, null, null,null);
3441 ELSE
3442 H_SCORES(l_index).TOTAL_SCORE :=
3443 H_SCORES(l_index).TOTAL_SCORE+l_score;
3444 H_SCORES(l_index).PARTY_SCORE := l_score;
3445 END IF;
3446 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) THEN
3447 H_PARTY_ID_LIST(l_index) := 1;
3448 H_PARTY_ID(l_party_id_idx) := l_party_id;
3449 l_party_id_idx:= l_party_id_idx+1;
3450 END IF;
3451 IF (l_party_id_idx-1)>l_max_thresh THEN
3452 IF p_index=1 AND call_order(2) = 'PARTY_SITE'
3453 AND call_type(2) = 'AND' AND l_contact_contains_str IS NULL
3454 AND nvl(FND_PROFILE.VALUE('HZ_DQM_PN_THRESH_RESOLUTION'),'NONE')='SQL'
3455 AND l_contact_pt_contains_str IS NULL THEN
3456 EXIT;
3457 END IF;
3458 CLOSE l_party_cur;
3459 IF p_index>1 THEN
3460 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3461 hz_utility_v2pub.debug(p_message=>'In eval party level estimated hits exceed threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3462 END IF;
3463 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3464 FND_MSG_PUB.ADD;
3465 RAISE FND_API.G_EXC_ERROR;
3466 ELSE
3467 push_eval;
3468 RETURN;
3469 END IF;
3470 END IF;
3471 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3472 hz_utility_v2pub.debug(p_message=>'In eval_party_level l_party_id = '||l_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3473 hz_utility_v2pub.debug(p_message=>'In eval_party_level l_score = '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3474 END IF;
3475 END LOOP;
3476 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3477 hz_utility_v2pub.debug(p_message=>'===========END of LOOP=====================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3478 END IF;
3479 CLOSE l_party_cur;
3480 ROLLBACK to eval_start;
3481 END;
3482
3483 /** Private procedure to acquire and score at party site level ***/
3484 PROCEDURE eval_party_site_level(p_party_site_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER,p_ins_details VARCHAR2,p_emax_score NUMBER) IS
3485 l_party_id_idx NUMBER:=1;
3486 l_ctx_id NUMBER;
3487 h_ps_id HZ_PARTY_SEARCH.IDList;
3488 h_ps_party_id HZ_PARTY_SEARCH.IDList;
3489 h_ps_score HZ_PARTY_SEARCH.IDList;
3490 detcnt NUMBER := 1;
3491 BEGIN
3492 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3493 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3494 hz_utility_v2pub.debug(p_message=>'calling the procedure eval_party_site_level',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3495 END IF;
3496 IF (l_party_contains_str IS NOT NULL AND instrb(l_party_contains_str,'D_PS')>0
3497 AND l_contact_contains_str IS NULL and H_PARTY_ID.COUNT > 0 and
3498 l_contact_pt_contains_str IS NULL) AND g_ps_den_only AND p_ins_details <> 'Y' THEN
3499 l_party_id := H_SCORES.FIRST;
3500 WHILE l_party_id IS NOT NULL LOOP
3501 H_SCORES(l_party_id).TOTAL_SCORE := H_SCORES(l_party_id).TOTAL_SCORE + p_emax_score;
3502 l_party_id:=H_SCORES.NEXT(l_party_id);
3503 END LOOP;
3504 RETURN;
3505 END IF;
3506 SAVEPOINT eval_start;
3507 IF l_match_str = ' AND ' AND p_call_type = 'AND' THEN
3508 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3509 hz_utility_v2pub.debug(p_message=>'Match rule is AND and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3510 END IF;
3511 l_ctx_id := l_search_ctx_id;
3512 FORALL I in 1..H_PARTY_ID.COUNT
3513 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3514 l_search_ctx_id,H_PARTY_ID(I));
3515 H_PARTY_ID.DELETE;
3516 H_PARTY_ID_LIST.DELETE;
3517 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
3518 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3519 hz_utility_v2pub.debug(p_message=>'Match rule is OR and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3520 END IF;
3521 l_ctx_id := l_search_ctx_id;
3522 FORALL I in 1..H_PARTY_ID.COUNT
3523 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3524 l_search_ctx_id,H_PARTY_ID(I));
3525 l_party_id_idx := H_PARTY_ID.COUNT+1;
3526 ELSE
3527 IF (p_restrict_sql IS NULL OR instrb(p_restrict_sql, 'SELECTIVE')=0)
3528 and check_estimate_hits('PARTY_SITES',p_party_site_contains_str)>l_max_thresh THEN
3529 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3530 hz_utility_v2pub.debug(p_message=>'In eval party site level estimated hits exceed threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3531 END IF;
3532 IF p_index>1 THEN
3533 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3534 hz_utility_v2pub.debug(p_message=>'In eval party site level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3535 END IF;
3536 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3537 FND_MSG_PUB.ADD;
3538 RAISE FND_API.G_EXC_ERROR;
3539 ELSE
3540 push_eval;
3541 RETURN;
3542 END IF;
3543 END IF;
3544 l_party_id_idx := H_PARTY_ID.COUNT+1;
3545 l_ctx_id := NULL;
3546 END IF;
3547 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3548 hz_utility_v2pub.debug(p_message=>'========== START LOOPING THROUGH WHAT IS RETURNED BY OPEN_PARTY_SITE_CURSOR ================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3549 END IF;
3550 open_party_site_cursor(p_dup_party_id,NULL, p_restrict_sql, p_party_site_contains_str,l_ctx_id, p_search_merged, 'N','N',l_party_site_cur);
3551 LOOP
3552 FETCH l_party_site_cur INTO
3553 l_party_site_id, l_ps_party_id, l_ps_contact_id , l_TX9, l_TX10, l_TX11, l_TX13, l_TX14, l_TX15, l_TX20, l_TX21, l_TX22;
3554 EXIT WHEN l_party_site_cur%NOTFOUND;
3555 --Fix for bug 4417124
3556 IF l_use_contact_addr_info OR l_ps_contact_id IS NULL THEN
3557 l_index := map_id(l_ps_party_id);
3558 l_score := GET_PARTY_SITES_SCORE(l_match_idx,l_TX9,l_TX10,l_TX11,l_TX13,l_TX14,l_TX15,l_TX20,l_TX21,l_TX22);
3559 IF NOT H_SCORES.EXISTS(l_index) THEN
3560 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,l_score,defct,defcpt, l_ps_party_id, l_party_site_id, null,null);
3561 ELSE
3562 IF l_score > H_SCORES(l_index).PARTY_SITE_SCORE THEN
3563 H_SCORES(l_index).TOTAL_SCORE :=
3564 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).PARTY_SITE_SCORE+l_score;
3565 H_SCORES(l_index).PARTY_SITE_SCORE := l_score;
3566 END IF;
3567 END IF;
3568 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) THEN
3569 H_PARTY_ID_LIST(l_index) := 1;
3570 H_PARTY_ID(l_party_id_idx) := l_ps_party_id;
3571 l_party_id_idx:= l_party_id_idx+1;
3572 END IF;
3573 IF p_ins_details = 'Y' THEN
3574 h_ps_id(detcnt) := l_party_site_id;
3575 h_ps_party_id(detcnt) := l_ps_party_id;
3576 IF (p_emax_score > 0) THEN
3577 h_ps_score(detcnt) := round((l_score/p_emax_score)*100);
3578 ELSE
3579 h_ps_score(detcnt) := 0;
3580 END IF;
3581 detcnt := detcnt +1;
3582 END IF;
3583 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3584 hz_utility_v2pub.debug(p_message=>'In eval_party_site_level l_party_site_id = '||l_party_site_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3585 hz_utility_v2pub.debug(p_message=>'In eval_paty_site_level l_ps_party_id = '||l_ps_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3586 hz_utility_v2pub.debug(p_message=>'In eval_party_site_level l_score = '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3587 END IF;
3588 END IF;
3589 END LOOP;
3590 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3591 hz_utility_v2pub.debug(p_message=>'===========END of LOOP=====================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3592 END IF;
3593 CLOSE l_party_site_cur;
3594 ROLLBACK to eval_start;
3595 IF p_ins_details = 'Y' THEN
3596 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3597 hz_utility_v2pub.debug(p_message=>'In eval_party_site_level inserting into HZ_MATCHED_PARTY_SITES_GT from the H_PS_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3598 END IF;
3599 FORALL I in 1..h_ps_id.COUNT
3600 INSERT INTO HZ_MATCHED_PARTY_SITES_GT (SEARCH_CONTEXT_ID,PARTY_SITE_ID,PARTY_ID,SCORE) VALUES (
3601 l_search_ctx_id, h_ps_id(I), h_ps_party_id(I), h_ps_score(I));
3602 END IF;
3603 END;
3604
3605 /** Private procedure to acquire and score at contact point level ***/
3606 PROCEDURE eval_contact_level(p_contact_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER,p_ins_details VARCHAR2,p_emax_score NUMBER) IS
3607 l_party_id_idx NUMBER:=1;
3608 l_ctx_id NUMBER;
3609 h_ct_id HZ_PARTY_SEARCH.IDList;
3610 h_ct_party_id HZ_PARTY_SEARCH.IDList;
3611 h_ct_score HZ_PARTY_SEARCH.IDList;
3612 detcnt NUMBER := 1;
3613 BEGIN
3614 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3615 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3616 hz_utility_v2pub.debug(p_message=>'calling the procedure eval_contact_level',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3617 END IF;
3618 SAVEPOINT eval_start;
3619 IF l_match_str = ' AND ' AND p_call_type='AND' THEN
3620 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3621 hz_utility_v2pub.debug(p_message=>'Match rule is AND and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3622 END IF;
3623 l_ctx_id := l_search_ctx_id;
3624 FORALL I in 1..H_PARTY_ID.COUNT
3625 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3626 l_search_ctx_id,H_PARTY_ID(I));
3627 H_PARTY_ID.DELETE;
3628 H_PARTY_ID_LIST.DELETE;
3629 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
3630 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3631 hz_utility_v2pub.debug(p_message=>'Match rule is OR and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3632 END IF;
3633 l_ctx_id := l_search_ctx_id;
3634 FORALL I in 1..H_PARTY_ID.COUNT
3635 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3636 l_search_ctx_id,H_PARTY_ID(I));
3637 l_party_id_idx := H_PARTY_ID.COUNT+1;
3638 ELSE
3639 IF (p_restrict_sql IS NULL OR instrb(p_restrict_sql, 'SELECTIVE')=0)
3640 and check_estimate_hits('CONTACTS',p_contact_contains_str)>l_max_thresh THEN
3641 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3642 hz_utility_v2pub.debug(p_message=>'In eval contact level estimated hits exceed threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3643 END IF;
3644 IF p_index>1 THEN
3645 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3646 hz_utility_v2pub.debug(p_message=>'In eval contact level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3647 END IF;
3648 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3649 FND_MSG_PUB.ADD;
3650 RAISE FND_API.G_EXC_ERROR;
3651 ELSE
3652 push_eval;
3653 RETURN;
3654 END IF;
3655 END IF;
3656 l_ctx_id := NULL;
3657 l_party_id_idx := H_PARTY_ID.COUNT+1;
3658 END IF;
3659 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3660 hz_utility_v2pub.debug(p_message=>'========== START LOOPING THROUGH WHAT IS RETURNED BY OPEN_CONTACT_CURSOR ================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3661 END IF;
3662 open_contact_cursor(p_dup_party_id,NULL, p_restrict_sql, p_contact_contains_str,l_ctx_id, p_search_merged, l_contact_cur);
3663 LOOP
3664 FETCH l_contact_cur INTO
3665 l_org_contact_id, l_ct_party_id ;
3666 EXIT WHEN l_contact_cur%NOTFOUND;
3667 l_index := map_id(l_ct_party_id);
3668 l_score := GET_CONTACTS_SCORE(l_match_idx);
3669 IF NOT H_SCORES.EXISTS(l_index) THEN
3670 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,l_score,defcpt, l_ct_party_id, null, l_org_contact_id,null);
3671 ELSE
3672 IF l_score > H_SCORES(l_index).CONTACT_SCORE THEN
3673 H_SCORES(l_index).TOTAL_SCORE :=
3674 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).CONTACT_SCORE+l_score;
3675 H_SCORES(l_index).CONTACT_SCORE := l_score;
3676 END IF;
3677 END IF;
3678 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) THEN
3679 H_PARTY_ID_LIST(l_index) := 1;
3680 H_PARTY_ID(l_party_id_idx) := l_ct_party_id;
3681 l_party_id_idx:= l_party_id_idx+1;
3682 END IF;
3683 IF p_ins_details = 'Y' THEN
3684 h_ct_id(detcnt) := l_org_contact_id;
3685 h_ct_party_id(detcnt) := l_ct_party_id;
3686 IF (p_emax_score > 0) THEN
3687 h_ct_score(detcnt) := round((l_score/p_emax_score)*100);
3688 ELSE
3689 h_ct_score(detcnt) := 0;
3690 END IF;
3691 detcnt := detcnt +1;
3692 END IF;
3693 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3694 hz_utility_v2pub.debug(p_message=>'In eval_contact_level l_org_contact_id = '||l_org_contact_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3695 hz_utility_v2pub.debug(p_message=>'In eval_contact_level l_ct_party_id = '||l_ct_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3696 hz_utility_v2pub.debug(p_message=>'In eval_contact_level l_score = '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3697 END IF;
3698 END LOOP;
3699 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3700 hz_utility_v2pub.debug(p_message=>'===========END of LOOP=====================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3701 END IF;
3702 CLOSE l_contact_cur;
3703 ROLLBACK to eval_start;
3704 IF p_ins_details = 'Y' THEN
3705 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3706 hz_utility_v2pub.debug(p_message=>'In eval_contact_level inserting into HZ_MATCHED_CONTACTS_GT from the H_CT_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3707 END IF;
3708 FORALL I in 1..h_ct_id.COUNT
3709 INSERT INTO HZ_MATCHED_CONTACTS_GT (SEARCH_CONTEXT_ID,ORG_CONTACT_ID,PARTY_ID,SCORE) VALUES (
3710 l_search_ctx_id, h_ct_id(I), h_ct_party_id(I), h_ct_score(I));
3711 END IF;
3712 END;
3713
3714 /** Private procedure to acquire and score at contact point level ***/
3715 PROCEDURE eval_cpt_level(p_contact_pt_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER, p_ins_details VARCHAR2,p_emax_score NUMBER) IS
3716 l_party_id_idx NUMBER:=1;
3717 l_ctx_id NUMBER;
3718 h_cpt_id HZ_PARTY_SEARCH.IDList;
3719 h_cpt_party_id HZ_PARTY_SEARCH.IDList;
3720 h_cpt_score HZ_PARTY_SEARCH.IDList;
3721 detcnt NUMBER := 1;
3722 l_cpt_flag VARCHAR2(1) := 'N';
3723 is_a_match VARCHAR2(1) := 'Y';
3724 BEGIN
3725 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3726 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3727 hz_utility_v2pub.debug(p_message=>'calling the procedure eval_cpt_level',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3728 END IF;
3729 SAVEPOINT eval_start;
3730 IF l_match_str = ' AND ' AND p_call_type = 'AND' THEN
3731 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3732 hz_utility_v2pub.debug(p_message=>'Match rule is AND and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3733 END IF;
3734 l_ctx_id := l_search_ctx_id;
3735 FORALL I in 1..H_PARTY_ID.COUNT
3736 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3737 l_search_ctx_id,H_PARTY_ID(I));
3738 H_PARTY_ID.DELETE;
3739 H_PARTY_ID_LIST.DELETE;
3740 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
3741 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3742 hz_utility_v2pub.debug(p_message=>'Match rule is OR and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3743 END IF;
3744 l_ctx_id := l_search_ctx_id;
3745 FORALL I in 1..H_PARTY_ID.COUNT
3746 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
3747 l_search_ctx_id,H_PARTY_ID(I));
3748 l_party_id_idx := H_PARTY_ID.COUNT+1;
3749 ELSE
3750 IF (p_restrict_sql IS NULL OR instrb(p_restrict_sql, 'SELECTIVE')=0)
3751 and check_estimate_hits('CONTACT_POINTS',p_contact_pt_contains_str)>l_max_thresh THEN
3752 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3753 hz_utility_v2pub.debug(p_message=>'In eval contact point level estimated hits exceed threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3754 END IF;
3755 IF p_index>1 THEN
3756 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3757 hz_utility_v2pub.debug(p_message=>'In eval contact point level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3758 END IF;
3759 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3760 FND_MSG_PUB.ADD;
3761 RAISE FND_API.G_EXC_ERROR;
3762 ELSE
3763 push_eval;
3764 RETURN;
3765 END IF;
3766 END IF;
3767 l_ctx_id := NULL;
3768 l_party_id_idx := H_PARTY_ID.COUNT+1;
3769 END IF;
3770 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3771 hz_utility_v2pub.debug(p_message=>'========== START LOOPING THROUGH WHAT IS RETURNED BY OPEN_CONTACT_PT_CURSOR ================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3772 END IF;
3773 open_contact_pt_cursor(p_dup_party_id,NULL, p_restrict_sql, p_contact_pt_contains_str,l_ctx_id, p_search_merged, 'N', 'N',l_contact_pt_cur);
3774 LOOP
3775 FETCH l_contact_pt_cur INTO
3776 l_contact_pt_id, l_cpt_type, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id , l_TX1, l_TX3, l_TX4;
3777 EXIT WHEN l_contact_pt_cur%NOTFOUND;
3778 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3779 hz_utility_v2pub.debug(p_message=>'----------------------------------------------------------------------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3780 END IF;
3781 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3782 hz_utility_v2pub.debug(p_message=>'Processing party_id - '||l_cpt_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3783 END IF;
3784 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3785 hz_utility_v2pub.debug(p_message=>'Contact Point Type - '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3786 END IF;
3787 --Fix for bug 4417124
3788 IF l_use_contact_cpt_info OR l_cpt_contact_id IS NULL THEN
3789 l_index := map_id(l_cpt_party_id);
3790 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
3791 IF NOT H_SCORES.EXISTS(l_index) THEN
3792 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,defct,l_score, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id,l_contact_pt_id);
3793 H_SCORES(l_index).cpt_type_match(l_cpt_type) := l_score;
3794 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3795 hz_utility_v2pub.debug(p_message=>'Processing second Time for this party',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3796 END IF;
3797 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3798 hz_utility_v2pub.debug(p_message=>'l_index is - '||l_index,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3799 END IF;
3800 ELSE
3801 IF(H_SCORES(l_index).cpt_type_match.EXISTS(l_cpt_type)) then
3802 IF l_score > H_SCORES(l_index).cpt_type_match(l_cpt_type) then
3803 H_SCORES(l_index).TOTAL_SCORE :=
3804 H_SCORES(l_index).TOTAL_SCORE-(H_SCORES(l_index).CONTACT_POINT_SCORE-H_SCORES(l_index).cpt_type_match(l_cpt_type))+l_score;
3805 H_SCORES(l_index).CONTACT_POINT_SCORE := H_SCORES(l_index).CONTACT_POINT_SCORE-H_SCORES(l_index).cpt_type_match(l_cpt_type) + l_score;
3806 H_SCORES(l_index).cpt_type_match(l_cpt_type) := l_score;
3807 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3808 hz_utility_v2pub.debug(p_message=>'Passed in score greater than existing score',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3809 END IF;
3810 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3811 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).TOTAL_SCORE is - '||H_SCORES(l_index).TOTAL_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3812 END IF;
3813 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3814 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).CONTACT_POINT_SCORE is - '||H_SCORES(l_index).CONTACT_POINT_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3815 END IF;
3816 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3817 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).cpt_type_match(l_cpt_type) is - '||H_SCORES(l_index).cpt_type_match(l_cpt_type),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3818 END IF;
3819 END IF;
3820 ELSE
3821 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3825 H_SCORES(l_index).TOTAL_SCORE+l_score;
3822 hz_utility_v2pub.debug(p_message=>'Passed in score less than or equal to the existing score ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3823 END IF;
3824 H_SCORES(l_index).TOTAL_SCORE :=
3826 H_SCORES(l_index).CONTACT_POINT_SCORE := H_SCORES(l_index).CONTACT_POINT_SCORE+l_score;
3827 H_SCORES(l_index).cpt_type_match(l_cpt_type) := l_score;
3828 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3829 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).TOTAL_SCORE is - '||H_SCORES(l_index).TOTAL_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3830 END IF;
3831 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3832 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).CONTACT_POINT_SCORE is - '||H_SCORES(l_index).CONTACT_POINT_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3833 END IF;
3834 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3835 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).cpt_type_match(l_cpt_type) is - '||H_SCORES(l_index).cpt_type_match(l_cpt_type),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3836 END IF;
3837 END IF;
3838 END IF;
3839 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3840 hz_utility_v2pub.debug(p_message=>'call type is - '||p_call_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3841 END IF;
3842 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3843 hz_utility_v2pub.debug(p_message=>'match string is - '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3844 END IF;
3845 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) THEN
3846 -- If rule is match all
3847 IF l_match_str = ' AND ' THEN
3848 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3849 hz_utility_v2pub.debug(p_message=>'Match string is AND ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3850 END IF;
3851 IF H_SCORES(l_index).cpt_type_match.count = distinct_search_cpt_types then
3852 is_a_match := 'Y';
3853 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3854 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3855 END IF;
3856 ELSE
3857 is_a_match := 'N';
3858 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3859 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3860 END IF;
3861 END IF;
3862 -- Else it is construed to be a match anyway
3863 ELSE
3864 is_a_match := 'Y';
3865 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3866 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3867 END IF;
3868 END IF;
3869 IF (is_a_match='Y') then
3870 H_PARTY_ID_LIST(l_index) := 1;
3871 H_PARTY_ID(l_party_id_idx) := l_cpt_party_id;
3872 l_party_id_idx:= l_party_id_idx+1;
3873 end if;
3874 END IF;
3875 IF p_ins_details = 'Y' THEN
3876 IF l_match_str = ' AND ' THEN
3877 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3878 hz_utility_v2pub.debug(p_message=>'Match string is AND ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3879 END IF;
3880 IF H_SCORES(l_index).cpt_type_match.count = distinct_search_cpt_types then
3881 is_a_match := 'Y';
3882 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3883 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3884 END IF;
3885 ELSE
3886 is_a_match := 'N';
3887 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3888 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3889 END IF;
3890 END IF;
3891 ELSE
3892 is_a_match := 'Y';
3893 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3894 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3895 END IF;
3896 END IF;
3897 IF (is_a_match='Y') THEN
3898 FOR I IN 1..h_cpt_id.COUNT LOOP
3899 IF h_cpt_id(I)=l_contact_pt_id THEN
3900 l_cpt_flag := 'Y';
3901 END IF;
3902 END LOOP;
3903 IF l_cpt_flag = 'Y' THEN
3904 NULL;
3905 ELSE
3906 h_cpt_id(detcnt) := l_contact_pt_id;
3907 h_cpt_party_id(detcnt) := l_cpt_party_id;
3908 IF (p_emax_score > 0) THEN
3909 h_cpt_score(detcnt) := round((l_score/p_emax_score)*100);
3910 ELSE
3911 h_cpt_score(detcnt) := 0;
3912 END IF;
3913 detcnt := detcnt +1;
3914 END IF;
3915 end if;
3916 END IF;
3917 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3918 hz_utility_v2pub.debug(p_message=>'In eval_cpt_level l_contact_pt_id = '||l_contact_pt_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3919 hz_utility_v2pub.debug(p_message=>'In eval_cpt_level l_cpt_party_id = '||l_cpt_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3920 hz_utility_v2pub.debug(p_message=>'In eval_cpt_level l_score = '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3921 END IF;
3922 END IF;
3923 END LOOP;
3924 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3925 hz_utility_v2pub.debug(p_message=>'===========END of LOOP=====================',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3926 END IF;
3927 CLOSE l_contact_pt_cur;
3928 ROLLBACK to eval_start;
3929 IF p_ins_details = 'Y' THEN
3930 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3931 hz_utility_v2pub.debug(p_message=>'In eval_contact_point_level inserting into HZ_MATCHED_CPTS_GT from the H_CPT_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3932 END IF;
3933 FORALL I in 1..h_cpt_id.COUNT
3934 INSERT INTO HZ_MATCHED_CPTS_GT (SEARCH_CONTEXT_ID,CONTACT_POINT_ID,PARTY_ID,SCORE) VALUES (
3935 l_search_ctx_id, h_cpt_id(I), h_cpt_party_id(I), h_cpt_score(I));
3936 END IF;
3937 END eval_cpt_level;
3938
3939 /** Private procedure to call the eval procedure at each entity in the correct order ***/
3940 PROCEDURE do_eval (p_index NUMBER) IS
3941 l_ctx_id NUMBER;
3942 l_threshold NUMBER;
3943 other_acq_criteria_exists BOOLEAN;
3944 acq_cnt NUMBER;
3945 BEGIN
3946 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3947 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3948 hz_utility_v2pub.debug(p_message=>'calling the procedure do_eval',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3949 END IF;
3950 IF (p_index=5 AND call_order(5) <> 'NONE' AND H_PARTY_ID.COUNT=0) THEN
3951 l_threshold := round(( l_entered_max_score / 805) * 72);
3952 other_acq_criteria_exists := TRUE ;
3953 --check if acquisition criteria exists for any other entity
3954 IF l_party_contains_str IS NOT NULL THEN
3955 acq_cnt := 1;
3956 END IF;
3957 IF l_party_site_contains_str IS NOT NULL THEN
3958 acq_cnt := acq_cnt+1;
3959 END IF;
3960 IF l_contact_contains_str IS NOT NULL THEN
3961 acq_cnt := acq_cnt+1;
3962 END IF;
3963 IF l_contact_pt_contains_str IS NOT NULL THEN
3964 acq_cnt := acq_cnt+1;
3965 END IF;
3966 IF acq_cnt>1 THEN
3967 other_acq_criteria_exists := TRUE;
3968 ELSE
3969 other_acq_criteria_exists := FALSE;
3970 END IF;
3971 hz_utility_v2pub.debug(p_message=>'count of entities having acquisition attributes = '||acq_cnt,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3972 hz_utility_v2pub.debug(p_message=>'call_max_score(p_index) = '||call_max_score(p_index),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3973 hz_utility_v2pub.debug(p_message=>'l_threshold = '||l_threshold,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3974 IF(l_match_str = ' AND ' AND other_acq_criteria_exists) THEN
3975 IF ( call_max_score(p_index) < l_threshold) THEN
3976 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3977 hz_utility_v2pub.debug(p_message=>'When max score of entity level<l_threshold, do not evaluate ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3978 END IF;
3979 RETURN;
3980 ELSE
3981 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3982 hz_utility_v2pub.debug(p_message=>'In do eval number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3983 END IF;
3984 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3985 FND_MSG_PUB.ADD;
3986 RAISE FND_API.G_EXC_ERROR;
3987 END IF;
3988 ELSE
3989 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3990 hz_utility_v2pub.debug(p_message=>'In do eval number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3991 END IF;
3992 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
3993 FND_MSG_PUB.ADD;
3994 RAISE FND_API.G_EXC_ERROR;
3995 END IF;
3996 END IF;
3997 IF call_order(p_index) = 'PARTY' AND l_party_contains_str IS NOT NULL THEN
3998 eval_party_level(l_party_contains_str,call_type(p_index), p_index);
3999 ELSIF call_order(p_index) = 'PARTY_SITE' AND l_party_site_contains_str IS NOT NULL THEN
4000 eval_party_site_level(l_party_site_contains_str,call_type(p_index), p_index,p_ins_details,call_max_score(p_index));
4001 ELSIF call_order(p_index) = 'CONTACT' AND l_contact_contains_str IS NOT NULL THEN
4002 eval_contact_level(l_contact_contains_str,call_type(p_index), p_index,p_ins_details,call_max_score(p_index));
4003 ELSIF call_order(p_index) = 'CONTACT_POINT' AND l_contact_pt_contains_str IS NOT NULL THEN
4004 eval_cpt_level(l_contact_pt_contains_str,call_type(p_index), p_index,p_ins_details,call_max_score(p_index));
4005 END IF;
4006 END;
4007 /************ End of find_parties private procedures **********/
4008
4009 BEGIN
4010
4011 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4012 hz_utility_v2pub.debug(p_message=>'--------------------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4013 END IF;
4014 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4015 hz_utility_v2pub.debug(p_message=>'Entering Procedure find_parties',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4016 END IF;
4017 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4018 hz_utility_v2pub.debug(p_message=>'Input Parameters are :',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4019 hz_utility_v2pub.debug(p_message=>'p_match_type = '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4020 hz_utility_v2pub.debug(p_message=>'p_restrict_sql = '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4021 hz_utility_v2pub.debug(p_message=>'p_dup_set_id = '||p_dup_set_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4022 hz_utility_v2pub.debug(p_message=>'p_search_merged = '||p_search_merged,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4023 hz_utility_v2pub.debug(p_message=>'p_dup_party_id = '||p_dup_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4024 END IF;
4025 -- ************************************
4026 -- STEP 1. Initialization and error checks
4027
4028 l_match_str := ' AND ';
4029 IF p_match_type = 'AND' THEN
4030 l_match_str := ' AND ';
4031 ELSIF p_match_type = 'OR' THEN
4032 l_match_str := ' OR ';
4033 END IF;
4034 l_entered_max_score:= init_search(p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list, l_match_str, l_party_max_score, l_ps_max_score, l_contact_max_score, l_cpt_max_score);
4035 IF l_entered_max_score = 0 THEN l_entered_max_score:=1; END IF;
4036
4037
4038 --Fix for bug 4417124
4039
4040 SELECT use_contact_addr_flag, use_contact_cpt_flag
4041 INTO l_use_contact_addr_flag, l_use_contact_cpt_flag
4042 FROM hz_match_rules_b
4043 WHERE match_rule_id = 34;
4044
4045 IF NVL(l_use_contact_addr_flag, 'Y') = 'N' THEN
4046 l_use_contact_addr_info := FALSE;
4047 END IF;
4048
4049 IF NVL(l_use_contact_cpt_flag, 'Y') = 'N' THEN
4050 l_use_contact_cpt_info := FALSE;
4051 END IF;
4052
4053 --End fix for bug 4417124
4054
4055 IF p_dup_batch_id IS NOT NULL THEN
4056 l_max_thresh:=nvl(FND_PROFILE.VALUE('HZ_DQM_MAX_EVAL_THRESH_BATCH'),10000);
4057 ELSE
4058 l_max_thresh:=nvl(FND_PROFILE.VALUE('HZ_DQM_MAX_EVAL_THRESH'),200);
4059 END IF;
4060 IF nvl(FND_PROFILE.VALUE('HZ_DQM_SCORE_UNTIL_THRESH'),'N')='Y' THEN
4061 g_score_until_thresh := true;
4062 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4063 hz_utility_v2pub.debug(p_message=>'g_score_until_thresh is true',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4064 END IF;
4065 ELSE
4066 g_score_until_thresh := false;
4067 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4068 hz_utility_v2pub.debug(p_message=>'g_score_until_thresh is false',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4069 END IF;
4070 END IF;
4071 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4072 hz_utility_v2pub.debug(p_message=>'Maximum records that will be evaluated is '||l_max_thresh,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4073 END IF;
4074 -- ************************************************************
4075 -- STEP 2. Setup of intermedia query strings for Acquisition query
4076 l_party_site_contains_str := INIT_PARTY_SITES_QUERY(l_match_str,l_ps_denorm_str);
4077 l_contact_contains_str := INIT_CONTACTS_QUERY(l_match_str,l_ct_denorm_str);
4078 l_contact_pt_contains_str := INIT_CONTACT_POINTS_QUERY(l_match_str,l_cpt_denorm_str);
4079 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4080 hz_utility_v2pub.debug(p_message=>'Commencing the DENORM LOGIC in find_parties',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4081 END IF;
4082 l_denorm_max_score:=0;
4083 l_non_denorm_max_score:=0;
4084 IF l_ps_denorm_str IS NOT NULL THEN
4085 l_denorm_max_score := l_denorm_max_score+l_ps_max_score;
4086 l_denorm_str := l_ps_denorm_str;
4087 ELSE
4088 l_non_denorm_max_score := l_non_denorm_max_score+l_ps_max_score;
4089 END IF;
4090 IF l_ct_denorm_str IS NOT NULL THEN
4091 l_denorm_max_score := l_denorm_max_score+l_contact_max_score;
4092 IF l_denorm_str IS NOT NULL THEN
4093 l_denorm_str := l_denorm_str || ' OR ' ||l_ct_denorm_str;
4094 ELSE
4095 l_denorm_str := l_ct_denorm_str;
4096 END IF;
4097 ELSE
4098 l_non_denorm_max_score := l_non_denorm_max_score+l_contact_max_score;
4099 END IF;
4100 IF l_cpt_denorm_str IS NOT NULL THEN
4101 l_denorm_max_score := l_denorm_max_score+l_cpt_max_score;
4102 IF l_denorm_str IS NOT NULL THEN
4103 l_denorm_str := l_denorm_str || ' OR ' ||l_cpt_denorm_str;
4104 ELSE
4105 l_denorm_str := l_cpt_denorm_str;
4106 END IF;
4107 ELSE
4108 l_non_denorm_max_score := l_non_denorm_max_score+l_cpt_max_score;
4109 END IF;
4110 l_party_contains_str := INIT_PARTY_QUERY(l_match_str, l_denorm_str, l_party_max_score, l_denorm_max_score, l_non_denorm_max_score, round((72/805)*l_entered_max_score));
4111 init_score_context(p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list);
4112
4113 -- Setup Search Context ID
4114 SELECT hz_search_ctx_s.nextval INTO l_search_ctx_id FROM dual;
4115 x_search_ctx_id := l_search_ctx_id;
4116
4117 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4118 hz_utility_v2pub.debug(p_message=>'Search context id in find_parties is '||x_search_ctx_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4119 END IF;
4120 IF l_party_contains_str IS NULL THEN
4121 defpt := 1;
4122 END IF;
4123 IF l_party_site_contains_str IS NULL THEN
4124 defps := 1;
4125 END IF;
4126 IF l_contact_contains_str IS NULL THEN
4127 defct := 1;
4128 END IF;
4129 IF l_contact_pt_contains_str IS NULL THEN
4130 defcpt := 1;
4131 END IF;
4132
4133 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4134 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4135 hz_utility_v2pub.debug(p_message=>'------------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4136 END IF;
4137 hz_utility_v2pub.debug(p_message=>'In find_parties l_match_str = '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4138 hz_utility_v2pub.debug(p_message=>'In find_parties l_party_contains_str = '||l_party_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4139 hz_utility_v2pub.debug(p_message=>'In find_parties l_party_site_contains_str = '||l_party_site_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4140 hz_utility_v2pub.debug(p_message=>'In find_parties l_contact_contains_str = '||l_contact_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4141 hz_utility_v2pub.debug(p_message=>'In find_parties l_contact_pt_contains_str = '||l_contact_pt_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4142 hz_utility_v2pub.debug(p_message=>'In find_parties l_search_ctx_id = '||l_search_ctx_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4143 END IF;
4144 FOR I in 1..5 LOOP
4145 do_eval(I);
4146 END LOOP;
4147 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4148 hz_utility_v2pub.debug(p_message=>'In find_parties. This is a Search Rule. Evaluating Matches. Threshold : 9 ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4149 END IF;
4150 x_num_matches := 0;
4151 l_num_eval := 0;
4152 IF l_match_str = ' OR ' THEN
4153 l_party_id := H_SCORES.FIRST;
4154 ELSE
4155 l_party_id := H_PARTY_ID_LIST.FIRST;
4156 END IF;
4157 WHILE l_party_id IS NOT NULL LOOP
4158 l_num_eval:= l_num_eval+1;
4159 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4160 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4161 hz_utility_v2pub.debug(p_message=>'----------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4162 END IF;
4163 hz_utility_v2pub.debug(p_message=>'In find_parties Match Party ID = '||H_SCORES(l_party_id).PARTY_ID,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4164 hz_utility_v2pub.debug(p_message=>'In find_parties Score = '||round((H_SCORES(l_party_id).TOTAL_SCORE/l_entered_max_score)*100),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4165 END IF;
4166 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4167 hz_utility_v2pub.debug(p_message=>'In find_parties inserting Search Rule results into HZ_MATCHED_PARTIES_GT',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4168 END IF;
4169 IF (H_SCORES(l_party_id).TOTAL_SCORE/l_entered_max_score)>=(72/805) THEN
4170 INSERT INTO HZ_MATCHED_PARTIES_GT (SEARCH_CONTEXT_ID, PARTY_ID, SCORE)
4171 VALUES (l_search_ctx_id,H_SCORES(l_party_id).PARTY_ID,round((H_SCORES(l_party_id).TOTAL_SCORE/l_entered_max_score)*100));
4172 x_num_matches := x_num_matches+1;
4173 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4174 hz_utility_v2pub.debug(p_message=>'----------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4175 END IF;
4176 END IF;
4177 IF l_match_str = ' OR ' THEN
4178 l_party_id:=H_SCORES.NEXT(l_party_id);
4179 ELSE
4180 l_party_id:=H_PARTY_ID_LIST.NEXT(l_party_id);
4181 END IF;
4182 END LOOP;
4183 HZ_DQM_SEARCH_UTIL.set_num_eval(l_num_eval);
4184 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4185 hz_utility_v2pub.debug(p_message=>'Exiting Procedure find_parties',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4186 END IF;
4187 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4188 hz_utility_v2pub.debug(p_message=>'--------------------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4189 END IF;
4190 EXCEPTION
4191 WHEN L_RETURN_IMM_EXC THEN
4192 RETURN;
4193 WHEN FND_API.G_EXC_ERROR THEN
4194 RAISE FND_API.G_EXC_ERROR;
4195 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4196 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4197 WHEN OTHERS THEN
4198 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4199 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_parties');
4200 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
4201 FND_MSG_PUB.ADD;
4202 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4203 END find_parties;
4204
4205 PROCEDURE find_persons (
4206 p_rule_id IN NUMBER,
4207 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
4208 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
4209 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
4210 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
4211 p_restrict_sql IN VARCHAR2,
4212 p_match_type IN VARCHAR2,
4213 p_search_merged IN VARCHAR2,
4214 p_dup_party_id IN NUMBER,
4215 p_dup_set_id IN NUMBER,
4216 p_dup_batch_id IN NUMBER,
4217 p_ins_details IN VARCHAR2,
4218 x_search_ctx_id OUT NUMBER,
4219 x_num_matches OUT NUMBER
4220 ) IS
4221
4222 -- Strings to hold the generated Intermedia query strings
4223 l_party_contains_str VARCHAR2(32000);
4224 l_party_site_contains_str VARCHAR2(32000);
4225 l_contact_contains_str VARCHAR2(32000);
4226 l_contact_pt_contains_str VARCHAR2(32000);
4227 l_denorm_str VARCHAR2(32000);
4228 l_ps_denorm_str VARCHAR2(32000);
4229 l_ct_denorm_str VARCHAR2(32000);
4230 l_cpt_denorm_str VARCHAR2(32000);
4231
4232 -- Other local variables
4233 l_match_str VARCHAR2(30); -- Match type (AND or OR)
4234 l_sqlstr VARCHAR2(32000); -- Dynamic SQL String
4235 -- For Score calculation
4236 l_max_score NUMBER;
4237 l_match_idx NUMBER;
4238 l_entered_max_score NUMBER;
4239 FIRST BOOLEAN;
4240 l_search_ctx_id NUMBER; -- Generated Search Context ID
4241
4242 l_TX39 VARCHAR2(2000);
4243 l_TX13 VARCHAR2(2000);
4244 l_TX20 VARCHAR2(2000);
4245 l_TX42 VARCHAR2(2000);
4246 l_TX32 VARCHAR2(2000);
4247 l_TX46 VARCHAR2(2000);
4248 l_TX9 VARCHAR2(2000);
4249 l_TX22 VARCHAR2(2000);
4250 l_TX43 VARCHAR2(2000);
4251 l_TX44 VARCHAR2(2000);
4252 l_TX35 VARCHAR2(2000);
4253 l_TX1 VARCHAR2(2000);
4254 l_TX158 VARCHAR2(2000);
4255 l_TX47 VARCHAR2(2000);
4256 l_TX15 VARCHAR2(2000);
4257 l_TX21 VARCHAR2(2000);
4258 l_TX3 VARCHAR2(2000);
4259 l_TX10 VARCHAR2(2000);
4260 l_TX11 VARCHAR2(2000);
4261 l_TX4 VARCHAR2(2000);
4262 l_TX157 VARCHAR2(2000);
4263 l_TX40 VARCHAR2(2000);
4264 l_TX34 VARCHAR2(2000);
4265 l_TX48 VARCHAR2(2000);
4266 l_TX156 VARCHAR2(2000);
4267 l_TX14 VARCHAR2(2000);
4268 H_SCORES HZ_PARTY_SEARCH.score_list;
4269 H_PARTY_ID HZ_PARTY_SEARCH.IDList;
4270 H_PARTY_ID_LIST HZ_PARTY_SEARCH.IDList;
4271
4272 l_score NUMBER;
4273 l_idx NUMBER;
4274 l_party_cur HZ_PARTY_STAGE.StageCurTyp;
4275 l_party_site_cur HZ_PARTY_STAGE.StageCurTyp;
4276 l_contact_cur HZ_PARTY_STAGE.StageCurTyp;
4277 l_contact_pt_cur HZ_PARTY_STAGE.StageCurTyp;
4278 l_party_id NUMBER;
4279 l_ps_party_id NUMBER;
4280 l_ct_party_id NUMBER;
4281 l_cpt_party_id NUMBER;
4282 l_cpt_ps_id NUMBER;
4283 l_cpt_contact_id NUMBER;
4284 l_cpt_type VARCHAR2(100);
4285 l_party_site_id NUMBER;
4286 l_org_contact_id NUMBER;
4287 l_contact_pt_id NUMBER;
4288 l_cpt_level VARCHAR2(100);
4289 l_ps_contact_id NUMBER;
4290 l_party_max_score NUMBER;
4291 l_ps_max_score NUMBER;
4292 l_contact_max_score NUMBER;
4293 l_cpt_max_score NUMBER;
4294 l_denorm_max_score NUMBER;
4295 l_non_denorm_max_score NUMBER;
4296
4297 defpt NUMBER :=0;
4298 defps NUMBER :=0;
4299 defct NUMBER :=0;
4300 defcpt NUMBER :=0;
4301 l_index NUMBER;
4302 l_max_thresh NUMBER;
4303 l_tmp NUMBER;
4304 l_merge_flag VARCHAR2(1);
4305 l_num_eval NUMBER:=0;
4306
4307 L_RETURN_IMM_EXC Exception;
4308
4309
4310 /********************* Find Parties private procedures *******/
4311 PROCEDURE set_person_party_type IS
4312 BEGIN
4313 g_party_stage_rec.TX36:=
4314 HZ_TRANS_PKG.EXACT(
4315 'PERSON'
4316 ,null,'PARTY_TYPE'
4317 ,'PARTY');
4318 END;
4319
4320 PROCEDURE unset_person_party_type IS
4321 BEGIN
4322 g_party_stage_rec.TX36 := '';
4323 END;
4324
4325 FUNCTION get_person_id(p_party_id NUMBER, p_contact_id NUMBER)
4326 RETURN NUMBER IS
4327 l_party_type VARCHAR2(255);
4328 l_person_id NUMBER(15);
4329 BEGIN
4330 SELECT party_type INTO l_party_type from hz_parties where party_id = p_party_id;
4331 IF l_party_type = 'PERSON' THEN
4332 RETURN p_party_id;
4333 ELSIF p_contact_id IS NULL THEN
4334 RETURN NULL;
4335 ELSE
4336 BEGIN
4337 SELECT subject_id INTO l_person_id FROM HZ_RELATIONSHIPS r, HZ_ORG_CONTACTS oc, hz_parties p
4338 WHERE oc.org_contact_id = p_contact_id
4339 AND r.relationship_id = oc.party_relationship_id
4340 AND r.object_id = p_party_id
4341 AND p.party_id = r.subject_id
4342 AND p.party_type = 'PERSON'
4343 AND ROWNUM=1;
4344
4345 RETURN l_person_id;
4346 EXCEPTION
4347 WHEN NO_DATA_FOUND THEN
4348 RETURN NULL;
4349 END;
4350 END IF;
4351 END;
4352
4353 PROCEDURE push_eval IS
4354 BEGIN
4355 H_PARTY_ID.DELETE;
4356 H_PARTY_ID_LIST.DELETE;
4357 H_SCORES.DELETE;
4358 g_mappings.DELETE;
4359 HZ_DQM_SEARCH_UTIL.set_num_eval(0);
4360 call_order(5) := call_order(1);
4361 call_type(5) := 'AND';
4362 call_max_score(5) := call_max_score(1);
4363 call_type(2) := 'OR';
4364 END;
4365
4366 /** Private procedure to acquire and score at party level ***/
4367 PROCEDURE eval_party_level(p_party_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER) IS
4368 l_party_id_idx NUMBER:=1;
4369 l_ctx_id NUMBER;
4370 l_TX35_new varchar2(4000);
4371 BEGIN
4372 SAVEPOINT eval_start;
4373 set_person_party_type;
4374 IF l_match_str = ' AND ' AND p_call_type = 'AND' THEN
4375 l_ctx_id := l_search_ctx_id;
4376 FORALL I in 1..H_PARTY_ID.COUNT
4377 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4378 l_search_ctx_id,H_PARTY_ID(I));
4379 H_PARTY_ID.DELETE;
4380 H_PARTY_ID_LIST.DELETE;
4381 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
4382 l_ctx_id := l_search_ctx_id;
4383 FORALL I in 1..H_PARTY_ID.COUNT
4384 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4385 l_search_ctx_id,H_PARTY_ID(I));
4386 l_party_id_idx := H_PARTY_ID.COUNT+1;
4387 ELSE
4388 IF (p_restrict_sql IS NULL OR instrb(p_restrict_sql, 'SELECTIVE')=0)
4389 and check_estimate_hits('PARTY',p_party_contains_str)>l_max_thresh THEN
4390 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4391 hz_utility_v2pub.debug(p_message=>'In eval party level estimated hits exceed threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4392 END IF;
4393 IF g_party_stage_rec.TX8 IS NOT NULL AND nvl(FND_PROFILE.VALUE('HZ_DQM_PN_THRESH_RESOLUTION'),'NONE')='SQL' THEN
4394 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4395 hz_utility_v2pub.debug(p_message=>'In eval party level resolution option is set to SQL search.',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4396 END IF;
4397 IF (l_party_site_contains_str IS NULL AND
4398 l_contact_contains_str IS NULL AND
4399 l_contact_pt_contains_str IS NULL) AND NOT g_other_party_level_attribs IS NULL THEN
4400 return_direct_matches(p_restrict_sql,l_match_str,l_max_thresh,l_search_ctx_id,null,null, x_num_matches);
4401 RAISE L_RETURN_IMM_EXC;
4402 ELSE
4403 open_party_cursor_direct(p_dup_party_id, p_restrict_sql, l_match_str,null,p_party_contains_str,l_party_cur);
4404 END IF;
4405 ELSE
4406 IF p_index>1 THEN
4407 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4408 hz_utility_v2pub.debug(p_message=>'In eval party level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4409 END IF;
4410 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
4411 FND_MSG_PUB.ADD;
4412 RAISE FND_API.G_EXC_ERROR;
4413 ELSE
4414 push_eval;
4415 RETURN;
4416 END IF;
4417 END IF;
4418 END IF;
4419 l_ctx_id := NULL;
4420 l_party_id_idx := H_PARTY_ID.COUNT+1;
4421 END IF;
4422 IF l_party_cur IS NULL OR (not l_party_cur%ISOPEN) THEN
4423 open_party_cursor(p_dup_party_id, p_restrict_sql, p_party_contains_str,l_ctx_id, l_match_str,p_search_merged,l_party_cur);
4424 END IF;
4425 LOOP
4426 FETCH l_party_cur INTO
4427 l_party_id , l_TX32, l_TX34, l_TX35, l_TX39, l_TX158, l_TX40, l_TX43, l_TX42, l_TX44, l_TX46, l_TX47, l_TX48, l_TX156, l_TX157;
4428 EXIT WHEN l_party_cur%NOTFOUND;
4429 l_index := map_id(l_party_id);
4430 l_TX35_new:=RTRIM(LTRIM(l_TX35));
4431 l_TX35_new:=(CASE l_TX35_new WHEN 'SYNC' THEN HZ_STAGE_MAP_TRANSFORM.den_acc_number (l_party_id) ELSE l_TX35_new END);
4432 l_score := GET_PARTY_SCORE(l_TX32,l_TX34,l_TX35_new,l_TX39,l_TX158,l_TX40,l_TX43,l_TX42,l_TX44,l_TX46,l_TX47,l_TX48,l_TX156,l_TX157);
4433 IF NOT H_SCORES.EXISTS(l_index) THEN
4434 H_SCORES(l_index) := get_new_score_rec(l_score,l_score,defps,defct,defcpt, l_party_id, null, null,null);
4435 ELSE
4436 H_SCORES(l_index).TOTAL_SCORE :=
4437 H_SCORES(l_index).TOTAL_SCORE+l_score;
4438 H_SCORES(l_index).PARTY_SCORE := l_score;
4439 END IF;
4440 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) AND H_SCORES.EXISTS(l_index) THEN
4441 H_PARTY_ID_LIST(l_index) := 1;
4442 H_PARTY_ID(l_party_id_idx) := l_party_id;
4443 l_party_id_idx:= l_party_id_idx+1;
4444 END IF;
4445 IF (l_party_id_idx-1)>l_max_thresh THEN
4446 IF p_index=1 AND call_order(2) = 'PARTY_SITE'
4447 AND call_type(2) = 'AND' AND l_contact_contains_str IS NULL
4448 AND nvl(FND_PROFILE.VALUE('HZ_DQM_PN_THRESH_RESOLUTION'),'NONE')='SQL'
4449 AND l_contact_pt_contains_str IS NULL THEN
4450 H_PARTY_ID.DELETE(l_party_id_idx-1);
4451 H_PARTY_ID_LIST.DELETE(l_index);
4452 H_SCORES.DELETE(l_index);
4453 EXIT;
4454 END IF;
4455 CLOSE l_party_cur;
4456 IF p_index>1 THEN
4457 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4458 hz_utility_v2pub.debug(p_message=>'In eval party level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4459 END IF;
4460 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
4461 FND_MSG_PUB.ADD;
4462 RAISE FND_API.G_EXC_ERROR;
4463 ELSE
4464 push_eval;
4465 RETURN;
4466 END IF;
4467 END IF;
4468 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4469 hz_utility_v2pub.debug(p_message=>'Party Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4470 hz_utility_v2pub.debug(p_message=>'l_party_id '||l_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4471 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4472 END IF;
4473 END LOOP;
4474 CLOSE l_party_cur;
4475 ROLLBACK to eval_start;
4476 END;
4477 PROCEDURE open_person_contact_cursor(
4478 p_contains_str VARCHAR2,
4479 p_search_ctx_id NUMBER,
4480 x_cursor OUT HZ_PARTY_STAGE.StageCurTyp) IS
4481 BEGIN
4482 OPEN x_cursor FOR
4483 SELECT /*+ INDEX(stage HZ_STAGED_CONTACTS_U1) */ ORG_CONTACT_ID, PARTY_ID
4484 FROM HZ_STAGED_CONTACTS stage
4485 WHERE contains( concat_col, p_contains_str)>0
4486 AND ORG_CONTACT_ID in (
4487 SELECT /*+ ORDERED INDEX(d hz_dqm_parties_gt_n1) USE_NL(d r)*/
4488 org_contact_id
4489 from hz_dqm_parties_gt d, hz_relationships r, hz_org_contacts oc
4490 where d.party_id = r.subject_id
4491 and oc.party_relationship_id = r.relationship_id
4492 and d.search_context_id = p_search_ctx_id);
4493 exception
4494 when others then
4495 if (instrb(SQLERRM,'DRG-51030')>0) then
4496 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_WILDCARD_ERR');
4497 FND_MSG_PUB.ADD;
4498 RAISE FND_API.G_EXC_ERROR;
4499 elsif (instrb(SQLERRM,'DRG-50943')>0) then
4500 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_SEARCH_ERROR');
4501 FND_MSG_PUB.ADD;
4502 RAISE FND_API.G_EXC_ERROR;
4503 else
4504 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4505 end if;
4506 END;
4507
4508 /** Private procedure to acquire and score at party site level ***/
4509 PROCEDURE eval_party_site_level(p_party_site_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER,p_ins_details VARCHAR2,p_emax_score NUMBER) IS
4510 l_party_id_idx NUMBER:=1;
4511 l_ctx_id NUMBER;
4512 h_ps_id HZ_PARTY_SEARCH.IDList;
4513 h_ps_party_id HZ_PARTY_SEARCH.IDList;
4514 h_ps_score HZ_PARTY_SEARCH.IDList;
4515 detcnt NUMBER := 1;
4516 l_person_id NUMBER;
4517 BEGIN
4518 SAVEPOINT eval_start;
4519 unset_person_party_type;
4520 IF l_match_str = ' AND ' AND p_call_type = 'AND' THEN
4521 l_ctx_id := l_search_ctx_id;
4522 FORALL I in 1..H_PARTY_ID.COUNT
4523 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4524 l_search_ctx_id,H_PARTY_ID(I));
4525 H_PARTY_ID.DELETE;
4526 H_PARTY_ID_LIST.DELETE;
4527 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
4528 l_ctx_id := l_search_ctx_id;
4529 FORALL I in 1..H_PARTY_ID.COUNT
4530 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4531 l_search_ctx_id,H_PARTY_ID(I));
4532 l_party_id_idx := H_PARTY_ID.COUNT+1;
4533 ELSE
4534 l_party_id_idx := H_PARTY_ID.COUNT+1;
4535 l_ctx_id := NULL;
4536 END IF;
4537 open_party_site_cursor(p_dup_party_id,NULL, p_restrict_sql, p_party_site_contains_str,l_ctx_id, p_search_merged,'N', 'Y',l_party_site_cur);
4538 LOOP
4539 FETCH l_party_site_cur INTO
4540 l_party_site_id, l_ps_party_id, l_ps_contact_id , l_TX9, l_TX10, l_TX11, l_TX13, l_TX14, l_TX15, l_TX20, l_TX21, l_TX22;
4541 EXIT WHEN l_party_site_cur%NOTFOUND;
4542 IF l_ctx_id IS NULL THEN
4543 l_person_id := get_person_id(l_ps_party_id, l_ps_contact_id);
4544 ELSE
4545 l_person_id := l_ps_party_id;
4546 END IF;
4547 IF l_person_id IS NOT NULL AND l_person_id<>nvl(p_dup_party_id,-1) THEN
4548 l_index := map_id(l_person_id);
4549 l_score := GET_PARTY_SITES_SCORE(l_match_idx,l_TX9,l_TX10,l_TX11,l_TX13,l_TX14,l_TX15,l_TX20,l_TX21,l_TX22);
4550 IF NOT H_SCORES.EXISTS(l_index) THEN
4551 IF l_ctx_id IS NULL THEN
4552 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,l_score,defct,defcpt, l_person_id, l_party_site_id, null,null);
4553 END IF;
4554 ELSE
4555 IF l_score > H_SCORES(l_index).PARTY_SITE_SCORE THEN
4556 H_SCORES(l_index).TOTAL_SCORE :=
4557 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).PARTY_SITE_SCORE+l_score;
4558 H_SCORES(l_index).PARTY_SITE_SCORE := l_score;
4559 END IF;
4560 END IF;
4561 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) AND H_SCORES.EXISTS(l_index) THEN
4562 H_PARTY_ID_LIST(l_index) := 1;
4563 H_PARTY_ID(l_party_id_idx) := l_person_id;
4564 l_party_id_idx:= l_party_id_idx+1;
4565 END IF;
4566 IF (l_party_id_idx-1)>l_max_thresh THEN
4567 CLOSE l_party_site_cur;
4568 IF p_index>1 THEN
4569 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4570 hz_utility_v2pub.debug(p_message=>'In eval party site level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4571 END IF;
4572 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
4573 FND_MSG_PUB.ADD;
4574 RAISE FND_API.G_EXC_ERROR;
4575 ELSE
4576 push_eval;
4577 RETURN;
4578 END IF;
4579 END IF;
4580 IF p_ins_details = 'Y' THEN
4581 h_ps_id(detcnt) := l_party_site_id;
4582 h_ps_party_id(detcnt) := l_person_id;
4583 IF (p_emax_score > 0) THEN
4584 h_ps_score(detcnt) := round((l_score/p_emax_score)*100);
4585 ELSE
4586 h_ps_score(detcnt) := 0;
4587 END IF;
4588 detcnt := detcnt +1;
4589 END IF;
4590 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4591 hz_utility_v2pub.debug(p_message=>'Party Site Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4592 hz_utility_v2pub.debug(p_message=>'l_party_site_id '||l_party_site_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4593 hz_utility_v2pub.debug(p_message=>'l_ps_party_id '||l_person_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4594 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4595 END IF;
4596 END IF;
4597 END LOOP;
4598 CLOSE l_party_site_cur;
4599 ROLLBACK to eval_start;
4600 IF p_ins_details = 'Y' THEN
4601 FORALL I in 1..h_ps_id.COUNT
4602 INSERT INTO HZ_MATCHED_PARTY_SITES_GT (SEARCH_CONTEXT_ID,PARTY_SITE_ID,PARTY_ID,SCORE) VALUES (
4603 l_search_ctx_id, h_ps_id(I), h_ps_party_id(I), h_ps_score(I));
4604 END IF;
4605 END;
4606
4607 /** Private procedure to acquire and score at party site level ***/
4608 PROCEDURE eval_contact_level(p_contact_contains_str VARCHAR2,p_ins_details VARCHAR2,p_emax_score NUMBER) IS
4609 l_party_id_idx NUMBER:=1;
4610 l_ctx_id NUMBER;
4611 h_ct_id HZ_PARTY_SEARCH.IDList;
4612 h_ct_party_id HZ_PARTY_SEARCH.IDList;
4613 h_ct_score HZ_PARTY_SEARCH.IDList;
4614 detcnt NUMBER := 1;
4615 l_person_id NUMBER;
4616 BEGIN
4617 SAVEPOINT eval_start;
4618 l_ctx_id := l_search_ctx_id;
4619 unset_person_party_type;
4620 FORALL I in 1..H_PARTY_ID.COUNT
4621 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4622 l_search_ctx_id,H_PARTY_ID(I));
4623 l_party_id_idx := H_PARTY_ID.COUNT+1;
4624 open_person_contact_cursor(p_contact_contains_str,l_ctx_id, l_contact_cur);
4625 LOOP
4626 FETCH l_contact_cur INTO
4627 l_org_contact_id, l_ct_party_id ;
4628 EXIT WHEN l_contact_cur%NOTFOUND;
4629 l_person_id := get_person_id(l_ct_party_id, l_org_contact_id);
4630 l_index := map_id(l_person_id);
4631 IF l_person_id IS NOT NULL AND H_SCORES.EXISTS(l_index) AND l_person_id<>nvl(p_dup_party_id,-1) THEN
4632 l_score := GET_CONTACTS_SCORE(l_match_idx);
4633 IF l_score > H_SCORES(l_index).CONTACT_SCORE THEN
4634 H_SCORES(l_index).TOTAL_SCORE :=
4635 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).CONTACT_SCORE+l_score;
4636 H_SCORES(l_index).CONTACT_SCORE := l_score;
4637 END IF;
4638 END IF;
4639 IF p_ins_details = 'Y' THEN
4640 h_ct_id(detcnt) := l_org_contact_id;
4641 h_ct_party_id(detcnt) := l_person_id;
4642 IF (p_emax_score > 0) THEN
4643 h_ct_score(detcnt) := round((l_score/p_emax_score)*100);
4644 ELSE
4645 h_ct_score(detcnt) := 0;
4646 END IF;
4647 detcnt := detcnt +1;
4648 END IF;
4649 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4650 hz_utility_v2pub.debug(p_message=>'Contact Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4651 hz_utility_v2pub.debug(p_message=>'l_org_contact_id '||l_org_contact_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4652 hz_utility_v2pub.debug(p_message=>'l_ct_party_id '||l_person_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4653 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4654 END IF;
4655 END LOOP;
4656 CLOSE l_contact_cur;
4657 ROLLBACK to eval_start;
4658 IF p_ins_details = 'Y' THEN
4659 FORALL I in 1..h_ct_id.COUNT
4660 INSERT INTO HZ_MATCHED_CONTACTS_GT (SEARCH_CONTEXT_ID,ORG_CONTACT_ID,PARTY_ID,SCORE) VALUES (
4661 l_search_ctx_id, h_ct_id(I), h_ct_party_id(I), h_ct_score(I));
4662 END IF;
4663 END;
4664
4665 /** Private procedure to acquire and score at contact point level ***/
4666 PROCEDURE eval_cpt_level(p_contact_pt_contains_str VARCHAR2,p_call_type VARCHAR2, p_index NUMBER, p_ins_details VARCHAR2,p_emax_score NUMBER) IS
4667 l_party_id_idx NUMBER:=1;
4668 l_ctx_id NUMBER;
4669 h_cpt_id HZ_PARTY_SEARCH.IDList;
4670 h_cpt_party_id HZ_PARTY_SEARCH.IDList;
4671 h_cpt_score HZ_PARTY_SEARCH.IDList;
4672 detcnt NUMBER := 1;
4673 l_person_id NUMBER;
4674 is_a_match VARCHAR2(1) := 'Y';
4675 l_cpt_flag VARCHAR2(1) := 'N';
4676 BEGIN
4677 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4678 hz_utility_v2pub.debug(p_message=>'-----------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4679 END IF;
4680 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4681 hz_utility_v2pub.debug(p_message=>'calling the procedure eval_cpt_level - from find_persons',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4682 END IF;
4683 SAVEPOINT eval_start;
4684 unset_person_party_type;
4685 IF l_match_str = ' AND ' AND p_call_type = 'AND' THEN
4686 l_ctx_id := l_search_ctx_id;
4687 FORALL I in 1..H_PARTY_ID.COUNT
4688 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4689 l_search_ctx_id,H_PARTY_ID(I));
4690 H_PARTY_ID.DELETE;
4691 H_PARTY_ID_LIST.DELETE;
4692 ELSIF l_match_str = ' OR ' AND p_call_type = 'AND' THEN
4693 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4694 hz_utility_v2pub.debug(p_message=>'Match rule is AND and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4695 END IF;
4696 l_ctx_id := l_search_ctx_id;
4697 FORALL I in 1..H_PARTY_ID.COUNT
4698 INSERT INTO HZ_DQM_PARTIES_GT (SEARCH_CONTEXT_ID,PARTY_ID) VALUES (
4699 l_search_ctx_id,H_PARTY_ID(I));
4700 l_party_id_idx := H_PARTY_ID.COUNT+1;
4701 ELSE
4702 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4703 hz_utility_v2pub.debug(p_message=>'Match rule is OR and call type is AND. Inserting into HZ_DQM_PARTIES_GT, from the H_PARTY_ID list',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4704 END IF;
4705 l_ctx_id := NULL;
4706 l_party_id_idx := H_PARTY_ID.COUNT+1;
4707 END IF;
4708 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4709 hz_utility_v2pub.debug(p_message=>'====== START LOOPING THROUGH WHAT IS RETURNED BY OPEN_CONTACT_PT_CURSOR =======',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4710 END IF;
4711 open_contact_pt_cursor(p_dup_party_id,NULL, p_restrict_sql, p_contact_pt_contains_str,l_ctx_id, p_search_merged,'N', 'Y',l_contact_pt_cur);
4712 LOOP
4713 FETCH l_contact_pt_cur INTO
4714 l_contact_pt_id, l_cpt_type, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id , l_TX1, l_TX3, l_TX4;
4715 EXIT WHEN l_contact_pt_cur%NOTFOUND;
4716 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4717 hz_utility_v2pub.debug(p_message=>' ------------------------------------',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4718 END IF;
4719 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4720 hz_utility_v2pub.debug(p_message=>'Processing party_id - '||l_cpt_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4721 END IF;
4722 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4723 hz_utility_v2pub.debug(p_message=>'contact point type - '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4724 END IF;
4725 IF l_ctx_id IS NULL THEN
4726 l_person_id := get_person_id(l_cpt_party_id, l_cpt_contact_id);
4727 ELSE
4728 l_person_id := l_cpt_party_id;
4729 END IF;
4730 IF l_person_id IS NOT NULL AND l_person_id<>nvl(p_dup_party_id,-1) THEN
4731 l_index := map_id(l_person_id);
4732 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
4733 IF NOT H_SCORES.EXISTS(l_index) THEN
4734 IF l_ctx_id IS NULL THEN
4735 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,defct,l_score, l_person_id, l_cpt_ps_id, l_cpt_contact_id,l_contact_pt_id);
4736 H_SCORES(l_index).cpt_type_match(l_cpt_type) := l_score;
4737 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4738 hz_utility_v2pub.debug(p_message=>'Processing first time for this party',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4739 END IF;
4740 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4741 hz_utility_v2pub.debug(p_message=>'l_index is - '||l_index,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4742 END IF;
4743 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4744 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).cpt_type_match(l_cpt_type) is - '||H_SCORES(l_index).cpt_type_match(l_cpt_type),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4745 END IF;
4746 END IF;
4747 ELSE
4748 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4749 hz_utility_v2pub.debug(p_message=>'Processing Second time for this party',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4750 END IF;
4751 IF(H_SCORES(l_index).cpt_type_match.EXISTS(l_cpt_type)) then
4752 IF l_score > H_SCORES(l_index).cpt_type_match(l_cpt_type) then
4753 H_SCORES(l_index).TOTAL_SCORE :=
4754 H_SCORES(l_index).TOTAL_SCORE-(H_SCORES(l_index).CONTACT_POINT_SCORE - H_SCORES(l_index).cpt_type_match(l_cpt_type) )+l_score;
4755 H_SCORES(l_index).CONTACT_POINT_SCORE := H_SCORES(l_index).CONTACT_POINT_SCORE - H_SCORES(l_index).cpt_type_match(l_cpt_type) + l_score;
4756 H_SCORES(l_index).cpt_type_match(l_cpt_type) := l_score;
4757 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4758 hz_utility_v2pub.debug(p_message=>'Passed in score greater than existing score',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4759 END IF;
4760 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4761 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).TOTAL_SCORE is - '||H_SCORES(l_index).TOTAL_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4762 END IF;
4763 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4764 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).CONTACT_POINT_SCORE is - '||H_SCORES(l_index).CONTACT_POINT_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4765 END IF;
4766 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4767 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).cpt_type_match(l_cpt_type) is - '||H_SCORES(l_index).cpt_type_match(l_cpt_type),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4768 END IF;
4769 END IF;
4770 ELSE
4771 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4772 hz_utility_v2pub.debug(p_message=>'Passed in score less than or equal to the existing score ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4773 END IF;
4774 H_SCORES(l_index).TOTAL_SCORE :=
4775 H_SCORES(l_index).TOTAL_SCORE+l_score;
4776 H_SCORES(l_index).CONTACT_POINT_SCORE := H_SCORES(l_index).CONTACT_POINT_SCORE+l_score;
4777 H_SCORES(l_index).cpt_type_match(l_cpt_type) := l_score;
4778 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4779 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).TOTAL_SCORE is - '||H_SCORES(l_index).TOTAL_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4780 END IF;
4781 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4782 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).CONTACT_POINT_SCORE is - '||H_SCORES(l_index).CONTACT_POINT_SCORE,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4783 END IF;
4784 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4785 hz_utility_v2pub.debug(p_message=>'H_SCORES(l_index).cpt_type_match(l_cpt_type) is - '||H_SCORES(l_index).cpt_type_match(l_cpt_type),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4786 END IF;
4787 END IF;
4788 END IF;
4789 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4790 hz_utility_v2pub.debug(p_message=>'call type is - '||p_call_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4791 END IF;
4792 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4793 hz_utility_v2pub.debug(p_message=>'match string is - '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4794 END IF;
4795 IF NOT H_PARTY_ID_LIST.EXISTS(l_index) AND H_SCORES.EXISTS(l_index) THEN
4796 -- If rule is match all
4797 IF l_match_str = ' AND ' THEN
4798 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4799 hz_utility_v2pub.debug(p_message=>'Match String is - AND ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4800 END IF;
4801 IF H_SCORES(l_index).cpt_type_match.count = distinct_search_cpt_types then
4802 is_a_match := 'Y';
4803 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4804 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4805 END IF;
4806 ELSE
4807 is_a_match := 'N';
4808 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4809 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4810 END IF;
4811 END IF;
4812 -- Else it is construed as a match anyway
4813 ELSE
4814 is_a_match := 'Y';
4815 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4816 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4817 END IF;
4818 END IF;
4819 IF (is_a_match='Y') THEN
4820 H_PARTY_ID_LIST(l_index) := 1;
4821 H_PARTY_ID(l_party_id_idx) := l_person_id;
4822 l_party_id_idx:= l_party_id_idx+1;
4823 end if;
4824 END IF;
4825 IF (l_party_id_idx-1)>l_max_thresh THEN
4826 CLOSE l_contact_pt_cur;
4827 IF p_index>1 THEN
4828 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4829 hz_utility_v2pub.debug(p_message=>'In eval contact point level number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4830 END IF;
4831 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
4832 FND_MSG_PUB.ADD;
4833 RAISE FND_API.G_EXC_ERROR;
4834 ELSE
4835 push_eval;
4836 RETURN;
4837 END IF;
4838 END IF;
4839 IF p_ins_details = 'Y' THEN
4840 -- If rule is match all
4841 IF l_match_str = ' AND ' THEN
4842 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4843 hz_utility_v2pub.debug(p_message=>'Match String is - AND ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4844 END IF;
4845 IF H_SCORES(l_index).cpt_type_match.count = distinct_search_cpt_types then
4846 is_a_match := 'Y';
4847 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4848 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4849 END IF;
4850 ELSE
4851 is_a_match := 'N';
4852 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4853 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4854 END IF;
4855 END IF;
4856 -- Else it is construed as a match anyway
4857 ELSE
4858 is_a_match := 'Y';
4859 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4860 hz_utility_v2pub.debug(p_message=>'is_a_match is '||is_a_match,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4861 END IF;
4862 END IF;
4863 IF (is_a_match='Y') THEN
4864 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4865 hz_utility_v2pub.debug(p_message=>'Inserting into the final array, the person_id - '||l_person_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4866 END IF;
4867 FOR I IN 1..h_cpt_id.COUNT LOOP
4868 IF h_cpt_id(I)=l_contact_pt_id THEN
4869 l_cpt_flag := 'Y';
4870 END IF;
4871 END LOOP;
4872 IF l_cpt_flag = 'Y' THEN
4873 NULL;
4874 ELSE
4875 h_cpt_id(detcnt) := l_contact_pt_id;
4876 h_cpt_party_id(detcnt) := l_person_id;
4877 IF (p_emax_score > 0) THEN
4878 h_cpt_score(detcnt) := round((l_score/p_emax_score)*100);
4879 ELSE
4880 h_cpt_score(detcnt) := 0;
4881 END IF;
4882 detcnt := detcnt +1;
4883 END IF;
4884 end if;
4885 END IF;
4886 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4887 hz_utility_v2pub.debug(p_message=>'Contact pt Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4888 hz_utility_v2pub.debug(p_message=>'l_contact_pt_id '||l_contact_pt_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4889 hz_utility_v2pub.debug(p_message=>'l_cpt_party_id '||l_person_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4890 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4891 END IF;
4892 END IF;
4893 END LOOP;
4894 CLOSE l_contact_pt_cur;
4895 ROLLBACK to eval_start;
4896 IF p_ins_details = 'Y' THEN
4897 FORALL I in 1..h_cpt_id.COUNT
4898 INSERT INTO HZ_MATCHED_CPTS_GT (SEARCH_CONTEXT_ID,CONTACT_POINT_ID,PARTY_ID,SCORE) VALUES (
4899 l_search_ctx_id, h_cpt_id(I), h_cpt_party_id(I), h_cpt_score(I));
4900 END IF;
4901 END;
4902
4903 /** Private procedure to call the eval procedure at each entity in the correct order ***/
4904 PROCEDURE do_eval (p_index NUMBER) IS
4905 l_ctx_id NUMBER;
4906 l_threshold NUMBER;
4907 other_acq_criteria_exists BOOLEAN;
4908 acq_cnt NUMBER;
4909 BEGIN
4910 IF (p_index=5 AND call_order(5) <> 'NONE' AND H_PARTY_ID.COUNT=0) THEN
4911 l_threshold := round(( l_entered_max_score / 805) * 72);
4912 other_acq_criteria_exists := TRUE ;
4913 --check if acquisition criteria exists for any other entity
4914 IF l_party_contains_str IS NOT NULL THEN
4915 acq_cnt := 1;
4916 END IF;
4917 IF l_party_site_contains_str IS NOT NULL THEN
4918 acq_cnt := acq_cnt+1;
4919 END IF;
4920 IF l_contact_contains_str IS NOT NULL THEN
4921 acq_cnt := acq_cnt+1;
4922 END IF;
4923 IF l_contact_pt_contains_str IS NOT NULL THEN
4924 acq_cnt := acq_cnt+1;
4925 END IF;
4926 IF acq_cnt>1 THEN
4927 other_acq_criteria_exists := TRUE;
4928 ELSE
4929 other_acq_criteria_exists := FALSE;
4930 END IF;
4931 hz_utility_v2pub.debug(p_message=>'count of entities having acquisition attributes = '||acq_cnt,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4932 hz_utility_v2pub.debug(p_message=>'call_max_score(p_index) = '||call_max_score(p_index),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4933 hz_utility_v2pub.debug(p_message=>'l_threshold = '||l_threshold,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4934 IF(l_match_str = ' AND ' AND other_acq_criteria_exists) THEN
4935 IF ( call_max_score(p_index) < l_threshold) THEN
4936 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4937 hz_utility_v2pub.debug(p_message=>'When max score of entity level<l_threshold, do not evaluate ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4938 END IF;
4939 RETURN;
4940 ELSE
4941 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4942 hz_utility_v2pub.debug(p_message=>'In do eval number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4943 END IF;
4944 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
4945 FND_MSG_PUB.ADD;
4946 RAISE FND_API.G_EXC_ERROR;
4947 END IF;
4948 ELSE
4949 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4950 hz_utility_v2pub.debug(p_message=>'In do eval number of matches found exceeded threshold',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4951 END IF;
4952 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_THRESH_EXCEEDED');
4953 FND_MSG_PUB.ADD;
4954 RAISE FND_API.G_EXC_ERROR;
4955 END IF;
4956 END IF;
4957 IF call_order(p_index) = 'PARTY' AND l_party_contains_str IS NOT NULL THEN
4958 eval_party_level(l_party_contains_str,call_type(p_index), p_index);
4959 ELSIF call_order(p_index) = 'PARTY_SITE' AND l_party_site_contains_str IS NOT NULL THEN
4960 eval_party_site_level(l_party_site_contains_str,call_type(p_index), p_index,p_ins_details,call_max_score(p_index));
4961 ELSIF call_order(p_index) = 'CONTACT_POINT' AND l_contact_pt_contains_str IS NOT NULL THEN
4962 eval_cpt_level(l_contact_pt_contains_str,call_type(p_index), p_index,p_ins_details,call_max_score(p_index));
4963 END IF;
4964 END;
4965 /************ End of find_persons private procedures **********/
4966
4967 BEGIN
4968
4969 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4970 hz_utility_v2pub.debug(p_message=>'find_persons(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4971 END IF;
4972 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4973 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4974 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4975 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4976 END IF;
4977 -- ************************************
4978 -- STEP 1. Initialization and error checks
4979
4980 l_match_str := ' AND ';
4981 IF p_match_type = 'AND' THEN
4982 l_match_str := ' AND ';
4983 ELSIF p_match_type = 'OR' THEN
4984 l_match_str := ' OR ';
4985 END IF;
4986 l_entered_max_score:= init_search(p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list, l_match_str, l_party_max_score, l_ps_max_score, l_contact_max_score, l_cpt_max_score);
4987 IF l_entered_max_score = 0 THEN l_entered_max_score:=1; END IF;
4988
4989 l_max_thresh:=nvl(FND_PROFILE.VALUE('HZ_DQM_MAX_EVAL_THRESH'),200);
4990 IF nvl(FND_PROFILE.VALUE('HZ_DQM_SCORE_UNTIL_THRESH'),'N')='Y' THEN
4991 g_score_until_thresh := true;
4992 ELSE
4993 g_score_until_thresh := false;
4994 END IF;
4995 -- ************************************************************
4996 -- STEP 2. Setup of intermedia query strings for Acquisition query
4997 l_party_site_contains_str := INIT_PARTY_SITES_QUERY(l_match_str,l_ps_denorm_str);
4998 l_contact_contains_str := INIT_CONTACTS_QUERY(l_match_str,l_ct_denorm_str);
4999 l_contact_pt_contains_str := INIT_CONTACT_POINTS_QUERY(l_match_str,l_cpt_denorm_str);
5000 l_party_contains_str := INIT_PARTY_QUERY(l_match_str, null, 0, 0, 0,0);
5001 init_score_context(p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list);
5002
5003 -- Setup Search Context ID
5004 SELECT hz_search_ctx_s.nextval INTO l_search_ctx_id FROM dual;
5005 x_search_ctx_id := l_search_ctx_id;
5006
5007 IF l_party_contains_str IS NULL THEN
5008 defpt := 1;
5009 END IF;
5010 IF l_party_site_contains_str IS NULL THEN
5011 defps := 1;
5012 END IF;
5013 IF l_contact_contains_str IS NULL THEN
5014 defct := 1;
5015 END IF;
5016 IF l_contact_pt_contains_str IS NULL THEN
5017 defcpt := 1;
5018 END IF;
5019
5020 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5021 hz_utility_v2pub.debug(p_message=>'l_match_str '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5022 hz_utility_v2pub.debug(p_message=>'l_party_contains_str '||l_party_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5023 hz_utility_v2pub.debug(p_message=>'l_party_site_contains_str '||l_party_site_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5024 hz_utility_v2pub.debug(p_message=>'l_contact_contains_str '||l_contact_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5025 hz_utility_v2pub.debug(p_message=>'l_contact_pt_contains_str '||l_contact_pt_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5026 hz_utility_v2pub.debug(p_message=>'l_search_ctx_id '||l_search_ctx_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5027 END IF;
5028 FOR I in 1..5 LOOP
5029 do_eval(I);
5030 END LOOP;
5031 IF l_contact_contains_str IS NOT NULL THEN
5032 eval_contact_level(l_contact_contains_str,p_ins_details,l_contact_max_score);
5033 END IF;
5034 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5035 hz_utility_v2pub.debug(p_message=>'Evaluating Matches. Threshold : 9 ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5036 END IF;
5037 x_num_matches := 0;
5038 l_num_eval := 0;
5039 IF l_match_str = ' OR ' THEN
5040 l_party_id := H_SCORES.FIRST;
5041 ELSE
5042 l_party_id := H_PARTY_ID_LIST.FIRST;
5043 END IF;
5044 WHILE l_party_id IS NOT NULL LOOP
5045 l_num_eval:= l_num_eval+1;
5046 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5047 hz_utility_v2pub.debug(p_message=>'Match Party ID '||H_SCORES(l_party_id).PARTY_ID,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5048 hz_utility_v2pub.debug(p_message=>'Score '||round((H_SCORES(l_party_id).TOTAL_SCORE/l_entered_max_score)*100),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5049 END IF;
5050 IF (H_SCORES(l_party_id).TOTAL_SCORE/l_entered_max_score)>=(72/805) THEN
5051 INSERT INTO HZ_MATCHED_PARTIES_GT (SEARCH_CONTEXT_ID, PARTY_ID, SCORE)
5052 VALUES (l_search_ctx_id,H_SCORES(l_party_id).PARTY_ID,round((H_SCORES(l_party_id).TOTAL_SCORE/l_entered_max_score)*100));
5053 x_num_matches := x_num_matches+1;
5054 END IF;
5055 IF l_match_str = ' OR ' THEN
5056 l_party_id:=H_SCORES.NEXT(l_party_id);
5057 ELSE
5058 l_party_id:=H_PARTY_ID_LIST.NEXT(l_party_id);
5059 END IF;
5060 END LOOP;
5061 HZ_DQM_SEARCH_UTIL.set_num_eval(l_num_eval);
5062 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5063 hz_utility_v2pub.debug(p_message=>'find_persons(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5064 END IF;
5065 EXCEPTION
5066 WHEN L_RETURN_IMM_EXC THEN
5067 RETURN;
5068 WHEN FND_API.G_EXC_ERROR THEN
5069 RAISE FND_API.G_EXC_ERROR;
5070 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5071 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5072 WHEN OTHERS THEN
5073 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5074 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_persons');
5075 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5076 FND_MSG_PUB.ADD;
5077 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5078 END find_persons;
5079
5080 PROCEDURE find_persons (
5081 p_rule_id IN NUMBER,
5082 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
5083 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
5084 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
5085 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
5086 p_restrict_sql IN VARCHAR2,
5087 p_match_type IN VARCHAR2,
5088 p_search_merged IN VARCHAR2,
5089 p_ins_details IN VARCHAR2,
5090 x_search_ctx_id OUT NUMBER,
5091 x_num_matches OUT NUMBER
5092 ) IS
5093
5094 BEGIN
5095 find_persons(p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,null,null,null,p_ins_details,x_search_ctx_id,x_num_matches);
5096 END;
5097 PROCEDURE find_party_details (
5098 p_rule_id IN NUMBER,
5099 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
5100 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
5101 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
5102 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
5103 p_restrict_sql IN VARCHAR2,
5104 p_match_type IN VARCHAR2,
5105 p_search_merged IN VARCHAR2,
5106 x_search_ctx_id OUT NUMBER,
5107 x_num_matches OUT NUMBER
5108 ) IS
5109
5110 BEGIN
5111 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5112 hz_utility_v2pub.debug(p_message=>'find_party_details(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5113 END IF;
5114 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5115 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5116 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5117 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5118 hz_utility_v2pub.debug(p_message=>'p_search_merged '||p_search_merged,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5119 END IF;
5120 find_parties(p_rule_id,p_party_search_rec,p_party_site_list, p_contact_list, p_contact_point_list,
5121 p_restrict_sql,p_match_type,p_search_merged,null,null, null,'Y',
5122 x_search_ctx_id,x_num_matches);
5123 DELETE FROM HZ_MATCHED_PARTY_SITES_GT ps WHERE SEARCH_CONTEXT_ID = x_search_ctx_id
5124 AND NOT EXISTS
5125 (SELECT 1 FROM HZ_MATCHED_PARTIES_GT p WHERE SEARCH_CONTEXT_ID = x_search_ctx_id AND p.PARTY_ID = ps.PARTY_ID);
5126 DELETE FROM HZ_MATCHED_CONTACTS_GT ct WHERE SEARCH_CONTEXT_ID = x_search_ctx_id
5127 AND NOT EXISTS
5128 (SELECT 1 FROM HZ_MATCHED_PARTIES_GT p WHERE SEARCH_CONTEXT_ID = x_search_ctx_id AND p.PARTY_ID = ct.PARTY_ID);
5129 DELETE FROM HZ_MATCHED_CPTS_GT cpt WHERE SEARCH_CONTEXT_ID = x_search_ctx_id
5130 AND NOT EXISTS
5131 (SELECT 1 FROM HZ_MATCHED_PARTIES_GT p WHERE SEARCH_CONTEXT_ID = x_search_ctx_id AND p.PARTY_ID = cpt.PARTY_ID);
5132 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5133 hz_utility_v2pub.debug(p_message=>'find_party_details(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5134 END IF;
5135 EXCEPTION
5136 WHEN FND_API.G_EXC_ERROR THEN
5137 RAISE FND_API.G_EXC_ERROR;
5138 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5139 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5140 WHEN OTHERS THEN
5141 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5142 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_party_details');
5143 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5144 FND_MSG_PUB.ADD;
5145 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5146 END find_party_details;
5147
5148 PROCEDURE find_duplicate_parties (
5149 p_rule_id IN NUMBER,
5150 p_party_id IN NUMBER,
5151 p_restrict_sql IN VARCHAR2,
5152 p_match_type IN VARCHAR2,
5153 p_dup_batch_id IN NUMBER,
5154 p_search_merged IN VARCHAR2,
5155 x_dup_set_id OUT NUMBER,
5156 x_search_ctx_id OUT NUMBER,
5157 x_num_matches OUT NUMBER
5158 ) IS
5159 l_party_rec HZ_PARTY_SEARCH.party_search_rec_type;
5160 l_party_site_list HZ_PARTY_SEARCH.party_site_list;
5161 l_contact_list HZ_PARTY_SEARCH.contact_list;
5162 l_cpt_list HZ_PARTY_SEARCH.contact_point_list;
5163 l_match_idx NUMBER;
5164
5165 --Fix for bug 4417124
5166 l_use_contact_addr_info BOOLEAN := TRUE;
5167 l_use_contact_cpt_info BOOLEAN := TRUE;
5168 l_use_contact_addr_flag VARCHAR2(1) := 'Y';
5169 l_use_contact_cpt_flag VARCHAR2(1) := 'Y';
5170
5171 BEGIN
5172
5173 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5174 hz_utility_v2pub.debug(p_message=>'find_duplicate_parties(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5175 END IF;
5176 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5177 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5178 hz_utility_v2pub.debug(p_message=>'p_party_id '||p_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5179 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5180 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5181 hz_utility_v2pub.debug(p_message=>'p_dup_batch_id '||p_dup_batch_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5182 hz_utility_v2pub.debug(p_message=>'p_search_merged '||p_search_merged,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5183 END IF;
5184
5185 --Fix for bug 4417124
5186
5187 SELECT use_contact_addr_flag, use_contact_cpt_flag
5188 INTO l_use_contact_addr_flag, l_use_contact_cpt_flag
5189 FROM hz_match_rules_b
5190 WHERE match_rule_id = 34;
5191
5192 IF NVL(l_use_contact_addr_flag, 'Y') = 'N' THEN
5193 l_use_contact_addr_info := FALSE;
5194 END IF;
5195
5196 IF NVL(l_use_contact_cpt_flag, 'Y') = 'N' THEN
5197 l_use_contact_cpt_info := FALSE;
5198 END IF;
5199
5200 --End fix for bug 4417124
5201
5202 get_party_for_search(
5203 p_party_id, l_party_rec,l_party_site_list, l_contact_list, l_cpt_list);
5204
5205 IF NOT check_prim_cond (l_party_rec,
5206 l_party_site_list,
5207 l_contact_list,
5208 l_cpt_list) THEN
5209 x_dup_set_id:=NULL;
5210 x_search_ctx_id:=NULL;
5211 x_num_matches:=0;
5212 RETURN;
5213 END IF;
5214 x_dup_set_id := NULL;
5215 IF p_dup_batch_id IS NOT NULL THEN
5216 SELECT HZ_MERGE_BATCH_S.nextval INTO x_dup_set_id FROM DUAL;
5217 END IF;
5218
5219 --Fix for bug 4417124
5220 IF l_party_rec.PARTY_TYPE = 'PERSON' AND (l_use_contact_addr_info OR l_use_contact_cpt_info) THEN
5221 find_persons(p_rule_id,l_party_rec,l_party_site_list, l_contact_list, l_cpt_list,
5222 p_restrict_sql,p_match_type,p_search_merged,p_party_id,x_dup_set_id,p_dup_batch_id,'N',
5223 x_search_ctx_id,x_num_matches);
5224 ELSE
5225 find_parties(p_rule_id,l_party_rec,l_party_site_list, l_contact_list, l_cpt_list,
5226 p_restrict_sql,p_match_type,p_search_merged,p_party_id,x_dup_set_id,p_dup_batch_id,'N',
5227 x_search_ctx_id,x_num_matches);
5228 END IF;
5229
5230 IF x_num_matches > 0 AND p_dup_batch_id IS NOT NULL THEN
5231 INSERT INTO HZ_DUP_SETS ( DUP_SET_ID, DUP_BATCH_ID, WINNER_PARTY_ID,
5232 STATUS, MERGE_TYPE, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN,
5233 LAST_UPDATE_DATE, LAST_UPDATED_BY)
5234 VALUES (x_dup_set_id, p_dup_batch_id, p_party_id, 'SYSBATCH',
5235 'PARTY_MERGE', hz_utility_pub.created_by, hz_utility_pub.creation_date,
5236 hz_utility_pub.last_update_login, hz_utility_pub.last_update_date,
5237 hz_utility_pub.user_id);
5238
5239 INSERT INTO HZ_DUP_SET_PARTIES (DUP_PARTY_ID,DUP_SET_ID,MERGE_SEQ_ID,
5240 MERGE_BATCH_ID,merge_flag,SCORE,CREATED_BY,CREATION_DATE,LAST_UPDATE_LOGIN,
5241 LAST_UPDATE_DATE,LAST_UPDATED_BY,DUP_SET_BATCH_ID)
5242 VALUES (p_party_id,x_dup_set_id,0,0,
5243 'Y',100,hz_utility_pub.created_by,hz_utility_pub.creation_date,
5244 hz_utility_pub.last_update_login,hz_utility_pub.last_update_date,
5245 hz_utility_pub.user_id,p_dup_batch_id);
5246 ELSE
5247 x_dup_set_id := NULL;
5248 END IF;
5249 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5250 hz_utility_v2pub.debug(p_message=>'find_duplicate_parties(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5251 END IF;
5252 EXCEPTION
5253 WHEN FND_API.G_EXC_ERROR THEN
5254 RAISE FND_API.G_EXC_ERROR;
5255 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5256 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5257 WHEN OTHERS THEN
5258 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5259 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_duplicate_parties');
5260 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5261 FND_MSG_PUB.ADD;
5262 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5263 END find_duplicate_parties;
5264
5265 PROCEDURE find_duplicate_party_sites (
5266 p_rule_id IN NUMBER,
5267 p_party_site_id IN NUMBER,
5268 p_party_id IN NUMBER,
5269 p_restrict_sql IN VARCHAR2,
5270 p_match_type IN VARCHAR2,
5271 x_search_ctx_id OUT NUMBER,
5272 x_num_matches OUT NUMBER
5273 ) IS
5274
5275 l_party_search_rec HZ_PARTY_SEARCH.party_search_rec_type;
5276 l_party_site_list HZ_PARTY_SEARCH.party_site_list;
5277 l_contact_list HZ_PARTY_SEARCH.contact_list;
5278 l_contact_point_list HZ_PARTY_SEARCH.contact_point_list;
5279 contact_point_ids HZ_PARTY_SEARCH.IDList;
5280 p_party_site_list HZ_PARTY_SEARCH.IDList;
5281 p_contact_ids HZ_PARTY_SEARCH.IDList;
5282 l_match_idx NUMBER;
5283 cursor get_cpts_for_party_sites is select contact_point_id
5284 from hz_contact_points
5285 where owner_table_name = 'HZ_PARTY_SITES'
5286 and primary_flag='Y'
5287 and owner_table_id = p_party_site_id;
5288 BEGIN
5289 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5290 hz_utility_v2pub.debug(p_message=>'find_duplicate_party_sites(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5291 END IF;
5292 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5293 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5294 hz_utility_v2pub.debug(p_message=>'p_party_site_id '||p_party_site_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5295 hz_utility_v2pub.debug(p_message=>'p_party_id '||p_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5296 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5297 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5298 END IF;
5299 p_party_site_list(1) := p_party_site_id;
5300 OPEN get_cpts_for_party_sites;
5301 LOOP
5302 FETCH get_cpts_for_party_sites BULK COLLECT INTO contact_point_ids;
5303 EXIT WHEN get_cpts_for_party_sites%NOTFOUND;
5304 END LOOP;
5305 CLOSE get_cpts_for_party_sites;
5306
5307 get_search_criteria (
5308 null,
5309 p_party_site_list,
5310 HZ_PARTY_SEARCH.G_MISS_ID_LIST,
5311 contact_point_ids,
5312 l_party_search_rec,
5313 l_party_site_list,
5314 l_contact_list,
5315 l_contact_point_list) ;
5316 IF NOT check_prim_cond (l_party_search_rec,
5317 l_party_site_list,
5318 l_contact_list,
5319 l_contact_point_list) THEN
5320 x_search_ctx_id:=NULL;
5321 x_num_matches:=0;
5322 RETURN;
5323 END IF;
5324
5325 get_matching_party_sites (p_rule_id,
5326 p_party_id,
5327 l_party_site_list,
5328 l_contact_point_list,
5329 p_restrict_sql,
5330 p_match_type,
5331 p_party_site_id,
5332 x_search_ctx_id,
5333 x_num_matches);
5334 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5335 hz_utility_v2pub.debug(p_message=>'find_duplicate_party_sites(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5336 END IF;
5337 EXCEPTION
5338 WHEN FND_API.G_EXC_ERROR THEN
5339 RAISE FND_API.G_EXC_ERROR;
5340 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5341 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5342 WHEN OTHERS THEN
5343 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5344 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_duplicate_party_sites');
5345 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5346 FND_MSG_PUB.ADD;
5347 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5348 END find_duplicate_party_sites;
5349
5350 PROCEDURE find_duplicate_contacts (
5351 p_rule_id IN NUMBER,
5352 p_org_contact_id IN NUMBER,
5353 p_party_id IN NUMBER,
5354 p_restrict_sql IN VARCHAR2,
5355 p_match_type IN VARCHAR2,
5356 x_search_ctx_id OUT NUMBER,
5357 x_num_matches OUT NUMBER
5358 ) IS
5359
5360 l_party_search_rec HZ_PARTY_SEARCH.party_search_rec_type;
5361 l_party_site_list HZ_PARTY_SEARCH.party_site_list;
5362 l_contact_list HZ_PARTY_SEARCH.contact_list;
5363 l_contact_point_list HZ_PARTY_SEARCH.contact_point_list;
5364 contact_point_ids HZ_PARTY_SEARCH.IDList;
5365 p_party_site_list HZ_PARTY_SEARCH.IDList;
5366 p_contact_ids HZ_PARTY_SEARCH.IDList;
5367 l_match_idx NUMBER;
5368 cursor get_cpt_for_contact_id is select contact_point_id
5369 from hz_org_contacts a, hz_relationships b, hz_contact_points c
5370 where a.party_relationship_id = b.relationship_id
5371 and c.owner_table_name = 'HZ_PARTIES'
5372 and c.primary_flag='Y'
5373 and c.owner_table_id = b.party_id
5374 and b.directional_flag = 'F'
5375 and a.org_contact_id = p_org_contact_id;
5376 BEGIN
5377 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5378 hz_utility_v2pub.debug(p_message=>'find_duplicate_contacts(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5379 END IF;
5380 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5381 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5382 hz_utility_v2pub.debug(p_message=>'p_org_contact_id '||p_org_contact_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5383 hz_utility_v2pub.debug(p_message=>'p_party_id '||p_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5384 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5385 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5386 END IF;
5387 p_contact_ids(1) := p_org_contact_id;
5388 OPEN get_cpt_for_contact_id;
5389 LOOP
5390 FETCH get_cpt_for_contact_id BULK COLLECT INTO contact_point_ids;
5391 EXIT WHEN get_cpt_for_contact_id%NOTFOUND;
5392 END LOOP;
5393 CLOSE get_cpt_for_contact_id;
5394
5395 get_search_criteria (
5396 null,
5397 HZ_PARTY_SEARCH.G_MISS_ID_LIST,
5398 p_contact_ids,
5399 contact_point_ids,
5400 l_party_search_rec,
5401 l_party_site_list,
5402 l_contact_list,
5403 l_contact_point_list) ;
5404 IF NOT check_prim_cond (l_party_search_rec,
5405 l_party_site_list,
5406 l_contact_list,
5407 l_contact_point_list) THEN
5408 x_search_ctx_id:=NULL;
5409 x_num_matches:=0;
5410 RETURN;
5411 END IF;
5412
5413 get_matching_contacts (p_rule_id,
5414 p_party_id,
5415 l_contact_list,
5416 l_contact_point_list,
5417 p_restrict_sql,
5418 p_match_type,
5419 p_org_contact_id,
5420 x_search_ctx_id,
5421 x_num_matches);
5422
5423 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5424 hz_utility_v2pub.debug(p_message=>'find_duplicate_contacts(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5425 END IF;
5426 EXCEPTION
5427 WHEN FND_API.G_EXC_ERROR THEN
5428 RAISE FND_API.G_EXC_ERROR;
5429 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5430 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5431 WHEN OTHERS THEN
5432 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5433 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_duplicate_contacts');
5434 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5435 FND_MSG_PUB.ADD;
5436 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5437 END find_duplicate_contacts;
5438
5439 PROCEDURE find_duplicate_contact_points (
5440 p_rule_id IN NUMBER,
5441 p_contact_point_id IN NUMBER,
5442 p_party_id IN NUMBER,
5443 p_restrict_sql IN VARCHAR2,
5444 p_match_type IN VARCHAR2,
5445 x_search_ctx_id OUT NUMBER,
5446 x_num_matches OUT NUMBER
5447 ) IS
5448 l_party_search_rec HZ_PARTY_SEARCH.party_search_rec_type;
5449 l_party_site_list HZ_PARTY_SEARCH.party_site_list;
5450 l_contact_list HZ_PARTY_SEARCH.contact_list;
5451 l_contact_point_list HZ_PARTY_SEARCH.contact_point_list;
5452 contact_point_ids HZ_PARTY_SEARCH.IDList;
5453 p_party_site_list HZ_PARTY_SEARCH.IDList;
5454 p_contact_ids HZ_PARTY_SEARCH.IDList;
5455 l_match_idx NUMBER;
5456
5457 BEGIN
5458 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5459 hz_utility_v2pub.debug(p_message=>'find_duplicate_contact_points(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5460 END IF;
5461 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5462 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5463 hz_utility_v2pub.debug(p_message=>'p_contact_point_id '||p_contact_point_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5464 hz_utility_v2pub.debug(p_message=>'p_party_id '||p_party_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5465 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5466 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5467 END IF;
5468 contact_point_ids(1) := p_contact_point_id;
5469 get_search_criteria (
5470 null,
5471 HZ_PARTY_SEARCH.G_MISS_ID_LIST,
5472 HZ_PARTY_SEARCH.G_MISS_ID_LIST,
5473 contact_point_ids,
5474 l_party_search_rec,
5475 l_party_site_list,
5476 l_contact_list,
5477 l_contact_point_list );
5478
5479 IF NOT check_prim_cond (l_party_search_rec,
5480 l_party_site_list,
5481 l_contact_list,
5482 l_contact_point_list) THEN
5483 x_search_ctx_id:=NULL;
5484 x_num_matches:=0;
5485 RETURN;
5486 END IF;
5487 get_matching_contact_points (
5488 p_rule_id,
5489 p_party_id,
5490 l_contact_point_list,
5491 p_restrict_sql,
5492 p_match_type,
5493 p_contact_point_id,
5494 x_search_ctx_id,
5495 x_num_matches );
5496 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5497 hz_utility_v2pub.debug(p_message=>'find_duplicate_contact_points(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5498 END IF;
5499 EXCEPTION
5500 WHEN FND_API.G_EXC_ERROR THEN
5501 RAISE FND_API.G_EXC_ERROR;
5502 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5503 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5504 WHEN OTHERS THEN
5505 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5506 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.find_duplicate_contact_points');
5507 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5508 FND_MSG_PUB.ADD;
5509 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5510 END find_duplicate_contact_points;
5511
5512 PROCEDURE find_parties_dynamic (
5513 p_rule_id IN NUMBER,
5514 p_attrib_id1 IN NUMBER,
5515 p_attrib_id2 IN NUMBER,
5516 p_attrib_id3 IN NUMBER,
5517 p_attrib_id4 IN NUMBER,
5518 p_attrib_id5 IN NUMBER,
5519 p_attrib_id6 IN NUMBER,
5520 p_attrib_id7 IN NUMBER,
5521 p_attrib_id8 IN NUMBER,
5522 p_attrib_id9 IN NUMBER,
5523 p_attrib_id10 IN NUMBER,
5524 p_attrib_id11 IN NUMBER,
5525 p_attrib_id12 IN NUMBER,
5526 p_attrib_id13 IN NUMBER,
5527 p_attrib_id14 IN NUMBER,
5528 p_attrib_id15 IN NUMBER,
5529 p_attrib_id16 IN NUMBER,
5530 p_attrib_id17 IN NUMBER,
5531 p_attrib_id18 IN NUMBER,
5532 p_attrib_id19 IN NUMBER,
5533 p_attrib_id20 IN NUMBER,
5534 p_attrib_val1 IN VARCHAR2,
5535 p_attrib_val2 IN VARCHAR2,
5536 p_attrib_val3 IN VARCHAR2,
5537 p_attrib_val4 IN VARCHAR2,
5538 p_attrib_val5 IN VARCHAR2,
5539 p_attrib_val6 IN VARCHAR2,
5540 p_attrib_val7 IN VARCHAR2,
5541 p_attrib_val8 IN VARCHAR2,
5542 p_attrib_val9 IN VARCHAR2,
5543 p_attrib_val10 IN VARCHAR2,
5544 p_attrib_val11 IN VARCHAR2,
5545 p_attrib_val12 IN VARCHAR2,
5546 p_attrib_val13 IN VARCHAR2,
5547 p_attrib_val14 IN VARCHAR2,
5548 p_attrib_val15 IN VARCHAR2,
5549 p_attrib_val16 IN VARCHAR2,
5550 p_attrib_val17 IN VARCHAR2,
5551 p_attrib_val18 IN VARCHAR2,
5552 p_attrib_val19 IN VARCHAR2,
5553 p_attrib_val20 IN VARCHAR2,
5554 p_restrict_sql IN VARCHAR2,
5555 p_match_type IN VARCHAR2,
5556 p_search_merged IN VARCHAR2,
5557 x_search_ctx_id OUT NUMBER,
5558 x_num_matches OUT NUMBER
5559 ) IS
5560 BEGIN
5561 call_api_dynamic(p_rule_id,p_attrib_id1, p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
5562 p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
5563 p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
5564 p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
5565 p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
5566 p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
5567 p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
5568 p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
5569 p_restrict_sql,'FIND_PARTIES',p_match_type,null,p_search_merged,x_search_ctx_id,x_num_matches);
5570 END;
5571
5572 PROCEDURE call_api_dynamic (
5573 p_rule_id IN NUMBER,
5574 p_attrib_id1 IN NUMBER,
5575 p_attrib_id2 IN NUMBER,
5576 p_attrib_id3 IN NUMBER,
5577 p_attrib_id4 IN NUMBER,
5578 p_attrib_id5 IN NUMBER,
5579 p_attrib_id6 IN NUMBER,
5580 p_attrib_id7 IN NUMBER,
5581 p_attrib_id8 IN NUMBER,
5582 p_attrib_id9 IN NUMBER,
5583 p_attrib_id10 IN NUMBER,
5584 p_attrib_id11 IN NUMBER,
5585 p_attrib_id12 IN NUMBER,
5586 p_attrib_id13 IN NUMBER,
5587 p_attrib_id14 IN NUMBER,
5588 p_attrib_id15 IN NUMBER,
5589 p_attrib_id16 IN NUMBER,
5590 p_attrib_id17 IN NUMBER,
5591 p_attrib_id18 IN NUMBER,
5592 p_attrib_id19 IN NUMBER,
5593 p_attrib_id20 IN NUMBER,
5594 p_attrib_val1 IN VARCHAR2,
5595 p_attrib_val2 IN VARCHAR2,
5596 p_attrib_val3 IN VARCHAR2,
5597 p_attrib_val4 IN VARCHAR2,
5598 p_attrib_val5 IN VARCHAR2,
5599 p_attrib_val6 IN VARCHAR2,
5600 p_attrib_val7 IN VARCHAR2,
5601 p_attrib_val8 IN VARCHAR2,
5602 p_attrib_val9 IN VARCHAR2,
5603 p_attrib_val10 IN VARCHAR2,
5604 p_attrib_val11 IN VARCHAR2,
5605 p_attrib_val12 IN VARCHAR2,
5606 p_attrib_val13 IN VARCHAR2,
5607 p_attrib_val14 IN VARCHAR2,
5608 p_attrib_val15 IN VARCHAR2,
5609 p_attrib_val16 IN VARCHAR2,
5610 p_attrib_val17 IN VARCHAR2,
5611 p_attrib_val18 IN VARCHAR2,
5612 p_attrib_val19 IN VARCHAR2,
5613 p_attrib_val20 IN VARCHAR2,
5614 p_restrict_sql IN VARCHAR2,
5615 p_api_name IN VARCHAR2,
5616 p_match_type IN VARCHAR2,
5617 p_party_id IN NUMBER,
5618 p_search_merged IN VARCHAR2,
5619 x_search_ctx_id OUT NUMBER,
5620 x_num_matches OUT NUMBER
5621 ) IS
5622 TYPE AttrList IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
5623 l_match_idx NUMBER;
5624 AttrVals AttrList;
5625 l_party_rec HZ_PARTY_SEARCH.party_search_rec_type;
5626 l_party_site_list HZ_PARTY_SEARCH.party_site_list;
5627 l_contact_list HZ_PARTY_SEARCH.contact_list;
5628 l_cpt_list HZ_PARTY_SEARCH.contact_point_list;
5629 l_dup_set_id NUMBER;
5630 l_idx NUMBER;
5631 l_cpt_type VARCHAR2(255);
5632 FIRST BOOLEAN := TRUE;
5633
5634 BEGIN
5635 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5636 hz_utility_v2pub.debug(p_message=>'call_api_dynamic(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5637 END IF;
5638
5639 IF p_attrib_id1 IS NOT NULL THEN
5640 AttrVals(p_attrib_id1):=p_attrib_val1;
5641 END IF;
5642 IF p_attrib_id2 IS NOT NULL THEN
5643 AttrVals(p_attrib_id2):=p_attrib_val2;
5644 END IF;
5645 IF p_attrib_id3 IS NOT NULL THEN
5646 AttrVals(p_attrib_id3):=p_attrib_val3;
5647 END IF;
5648 IF p_attrib_id4 IS NOT NULL THEN
5649 AttrVals(p_attrib_id4):=p_attrib_val4;
5650 END IF;
5651 IF p_attrib_id5 IS NOT NULL THEN
5652 AttrVals(p_attrib_id5):=p_attrib_val5;
5653 END IF;
5654 IF p_attrib_id6 IS NOT NULL THEN
5655 AttrVals(p_attrib_id6):=p_attrib_val6;
5656 END IF;
5657 IF p_attrib_id7 IS NOT NULL THEN
5658 AttrVals(p_attrib_id7):=p_attrib_val7;
5659 END IF;
5660 IF p_attrib_id8 IS NOT NULL THEN
5661 AttrVals(p_attrib_id8):=p_attrib_val8;
5662 END IF;
5663 IF p_attrib_id9 IS NOT NULL THEN
5664 AttrVals(p_attrib_id9):=p_attrib_val9;
5665 END IF;
5666 IF p_attrib_id10 IS NOT NULL THEN
5667 AttrVals(p_attrib_id10):=p_attrib_val10;
5668 END IF;
5669 IF p_attrib_id11 IS NOT NULL THEN
5670 AttrVals(p_attrib_id11):=p_attrib_val11;
5671 END IF;
5672 IF p_attrib_id12 IS NOT NULL THEN
5673 AttrVals(p_attrib_id12):=p_attrib_val12;
5674 END IF;
5675 IF p_attrib_id13 IS NOT NULL THEN
5676 AttrVals(p_attrib_id13):=p_attrib_val13;
5677 END IF;
5678 IF p_attrib_id14 IS NOT NULL THEN
5679 AttrVals(p_attrib_id14):=p_attrib_val14;
5680 END IF;
5681 IF p_attrib_id15 IS NOT NULL THEN
5682 AttrVals(p_attrib_id15):=p_attrib_val15;
5683 END IF;
5684 IF p_attrib_id16 IS NOT NULL THEN
5685 AttrVals(p_attrib_id16):=p_attrib_val16;
5686 END IF;
5687 IF p_attrib_id17 IS NOT NULL THEN
5688 AttrVals(p_attrib_id17):=p_attrib_val17;
5689 END IF;
5690 IF p_attrib_id18 IS NOT NULL THEN
5691 AttrVals(p_attrib_id18):=p_attrib_val18;
5692 END IF;
5693 IF p_attrib_id19 IS NOT NULL THEN
5694 AttrVals(p_attrib_id19):=p_attrib_val19;
5695 END IF;
5696 IF p_attrib_id20 IS NOT NULL THEN
5697 AttrVals(p_attrib_id20):=p_attrib_val20;
5698 END IF;
5699 IF AttrVals.EXISTS(11) THEN
5700 l_party_rec.ALL_ACCOUNT_NAMES:= AttrVals(11);
5701 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5702 hz_utility_v2pub.debug(p_message=>'l_party_rec.ALL_ACCOUNT_NAMES '||AttrVals(11),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5703 END IF;
5704 END IF;
5705
5706 IF AttrVals.EXISTS(12) THEN
5707 l_party_rec.PARTY_NUMBER:= AttrVals(12);
5708 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5709 hz_utility_v2pub.debug(p_message=>'l_party_rec.PARTY_NUMBER '||AttrVals(12),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5710 END IF;
5711 END IF;
5712
5713 IF AttrVals.EXISTS(13) THEN
5714 l_party_rec.ALL_ACCOUNT_NUMBERS:= AttrVals(13);
5715 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5716 hz_utility_v2pub.debug(p_message=>'l_party_rec.ALL_ACCOUNT_NUMBERS '||AttrVals(13),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5717 END IF;
5718 END IF;
5719
5720 IF AttrVals.EXISTS(14) THEN
5721 l_party_rec.PARTY_TYPE:= AttrVals(14);
5722 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5723 hz_utility_v2pub.debug(p_message=>'l_party_rec.PARTY_TYPE '||AttrVals(14),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5724 END IF;
5725 END IF;
5726
5727 IF AttrVals.EXISTS(15) THEN
5728 l_party_rec.PARTY_ALL_NAMES:= AttrVals(15);
5729 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5730 hz_utility_v2pub.debug(p_message=>'l_party_rec.PARTY_ALL_NAMES '||AttrVals(15),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5731 END IF;
5732 END IF;
5733
5734 IF AttrVals.EXISTS(17) THEN
5735 l_party_rec.TAX_NAME:= AttrVals(17);
5736 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5737 hz_utility_v2pub.debug(p_message=>'l_party_rec.TAX_NAME '||AttrVals(17),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5738 END IF;
5739 END IF;
5740
5741 IF AttrVals.EXISTS(18) THEN
5742 l_party_rec.TAX_REFERENCE:= AttrVals(18);
5743 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5744 hz_utility_v2pub.debug(p_message=>'l_party_rec.TAX_REFERENCE '||AttrVals(18),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5745 END IF;
5746 END IF;
5747
5748 IF AttrVals.EXISTS(20) THEN
5749 l_party_rec.SIC_CODE:= AttrVals(20);
5750 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5751 hz_utility_v2pub.debug(p_message=>'l_party_rec.SIC_CODE '||AttrVals(20),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5752 END IF;
5753 END IF;
5754
5755 IF AttrVals.EXISTS(21) THEN
5756 l_party_rec.SIC_CODE_TYPE:= AttrVals(21);
5757 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5758 hz_utility_v2pub.debug(p_message=>'l_party_rec.SIC_CODE_TYPE '||AttrVals(21),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5759 END IF;
5760 END IF;
5761
5762 IF AttrVals.EXISTS(22) THEN
5763 l_party_rec.CATEGORY_CODE:= AttrVals(22);
5764 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5765 hz_utility_v2pub.debug(p_message=>'l_party_rec.CATEGORY_CODE '||AttrVals(22),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5766 END IF;
5767 END IF;
5768
5769 IF AttrVals.EXISTS(29) THEN
5770 l_party_site_list(1).CITY:= AttrVals(29);
5771 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5772 hz_utility_v2pub.debug(p_message=>'l_party_site_list(1).CITY '||AttrVals(29),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5773 END IF;
5774 END IF;
5775
5776 IF AttrVals.EXISTS(30) THEN
5777 l_party_site_list(1).POSTAL_CODE:= AttrVals(30);
5778 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5779 hz_utility_v2pub.debug(p_message=>'l_party_site_list(1).POSTAL_CODE '||AttrVals(30),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5780 END IF;
5781 END IF;
5782
5783 IF AttrVals.EXISTS(31) THEN
5784 l_party_site_list(1).PROVINCE:= AttrVals(31);
5785 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5786 hz_utility_v2pub.debug(p_message=>'l_party_site_list(1).PROVINCE '||AttrVals(31),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5787 END IF;
5788 END IF;
5789
5790 IF AttrVals.EXISTS(32) THEN
5791 l_party_site_list(1).STATE:= AttrVals(32);
5792 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5793 hz_utility_v2pub.debug(p_message=>'l_party_site_list(1).STATE '||AttrVals(32),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5794 END IF;
5795 END IF;
5796
5797 IF AttrVals.EXISTS(35) THEN
5798 l_party_site_list(1).COUNTY:= AttrVals(35);
5799 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5800 hz_utility_v2pub.debug(p_message=>'l_party_site_list(1).COUNTY '||AttrVals(35),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5801 END IF;
5802 END IF;
5803
5804 IF AttrVals.EXISTS(36) THEN
5805 l_party_site_list(1).COUNTRY:= AttrVals(36);
5806 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5807 hz_utility_v2pub.debug(p_message=>'l_party_site_list(1).COUNTRY '||AttrVals(36),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5808 END IF;
5809 END IF;
5810
5811 IF AttrVals.EXISTS(44) THEN
5812 l_cpt_type := 'PHONE';
5813 FIRST := FALSE;
5814 FOR I in 1..l_cpt_list.COUNT LOOP
5815 IF l_cpt_list(I).CONTACT_POINT_TYPE=l_cpt_type THEN
5816 l_cpt_list(I).FLEX_FORMAT_PHONE_NUMBER:= AttrVals(44);
5817 FIRST := TRUE;
5818 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5819 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||I||').CONTACT_POINT_TYPE '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5820 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||I||').FLEX_FORMAT_PHONE_NUMBER '||AttrVals(44),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5821 END IF;
5822 END IF;
5823 END LOOP;
5824 IF not FIRST THEN
5825 l_idx := l_cpt_list.COUNT+1;
5826 l_cpt_list(l_idx).CONTACT_POINT_TYPE:=l_cpt_type;
5827 l_cpt_list(l_idx).FLEX_FORMAT_PHONE_NUMBER:= AttrVals(44);
5828 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5829 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||l_idx||').CONTACT_POINT_TYPE '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5830 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||l_idx||').FLEX_FORMAT_PHONE_NUMBER '||AttrVals(44),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5831 END IF;
5832 END IF;
5833 END IF;
5834
5835 IF AttrVals.EXISTS(46) THEN
5836 l_cpt_type := 'PHONE';
5837 FIRST := FALSE;
5838 FOR I in 1..l_cpt_list.COUNT LOOP
5839 IF l_cpt_list(I).CONTACT_POINT_TYPE=l_cpt_type THEN
5840 l_cpt_list(I).PHONE_AREA_CODE:= AttrVals(46);
5841 FIRST := TRUE;
5842 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5843 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||I||').CONTACT_POINT_TYPE '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5844 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||I||').PHONE_AREA_CODE '||AttrVals(46),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5845 END IF;
5846 END IF;
5847 END LOOP;
5848 IF not FIRST THEN
5849 l_idx := l_cpt_list.COUNT+1;
5850 l_cpt_list(l_idx).CONTACT_POINT_TYPE:=l_cpt_type;
5851 l_cpt_list(l_idx).PHONE_AREA_CODE:= AttrVals(46);
5852 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5853 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||l_idx||').CONTACT_POINT_TYPE '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5854 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||l_idx||').PHONE_AREA_CODE '||AttrVals(46),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5855 END IF;
5856 END IF;
5857 END IF;
5858
5859 IF AttrVals.EXISTS(47) THEN
5860 l_cpt_type := 'PHONE';
5861 FIRST := FALSE;
5862 FOR I in 1..l_cpt_list.COUNT LOOP
5863 IF l_cpt_list(I).CONTACT_POINT_TYPE=l_cpt_type THEN
5864 l_cpt_list(I).PHONE_COUNTRY_CODE:= AttrVals(47);
5865 FIRST := TRUE;
5866 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5867 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||I||').CONTACT_POINT_TYPE '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5868 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||I||').PHONE_COUNTRY_CODE '||AttrVals(47),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5869 END IF;
5870 END IF;
5871 END LOOP;
5872 IF not FIRST THEN
5873 l_idx := l_cpt_list.COUNT+1;
5874 l_cpt_list(l_idx).CONTACT_POINT_TYPE:=l_cpt_type;
5875 l_cpt_list(l_idx).PHONE_COUNTRY_CODE:= AttrVals(47);
5876 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5877 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||l_idx||').CONTACT_POINT_TYPE '||l_cpt_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5878 hz_utility_v2pub.debug(p_message=>'l_cpt_list('||l_idx||').PHONE_COUNTRY_CODE '||AttrVals(47),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5879 END IF;
5880 END IF;
5881 END IF;
5882
5883 IF AttrVals.EXISTS(53) THEN
5884 l_party_rec.REFERENCE_USE_FLAG:= AttrVals(53);
5885 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5886 hz_utility_v2pub.debug(p_message=>'l_party_rec.REFERENCE_USE_FLAG '||AttrVals(53),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5887 END IF;
5888 END IF;
5889
5890 IF AttrVals.EXISTS(54) THEN
5891 l_party_rec.CORPORATION_CLASS:= AttrVals(54);
5892 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5893 hz_utility_v2pub.debug(p_message=>'l_party_rec.CORPORATION_CLASS '||AttrVals(54),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5894 END IF;
5895 END IF;
5896
5897
5898 IF AttrVals.EXISTS(14) THEN
5899 l_party_rec.PARTY_TYPE:= AttrVals(14);
5900 END IF;
5901 IF upper(p_api_name) = 'FIND_PARTIES' THEN
5902 find_parties(p_rule_id,l_party_rec,l_party_site_list, l_contact_list, l_cpt_list,
5903 p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',
5904 x_search_ctx_id,x_num_matches);
5905 ELSIF upper(p_api_name) = 'FIND_PARTY_DETAILS' THEN
5906 find_party_details(p_rule_id,l_party_rec,l_party_site_list, l_contact_list, l_cpt_list,
5907 p_restrict_sql,p_match_type,p_search_merged,
5908 x_search_ctx_id,x_num_matches);
5909 ELSIF upper(p_api_name) = 'FIND_PERSONS' THEN
5910 find_persons(p_rule_id,l_party_rec,l_party_site_list, l_contact_list, l_cpt_list,
5911 p_restrict_sql,p_match_type,p_search_merged,'N',
5912 x_search_ctx_id,x_num_matches);
5913 ELSIF upper(p_api_name) = 'GET_MATCHING_PARTY_SITES' THEN
5914 get_matching_party_sites(p_rule_id,p_party_id,l_party_site_list, l_cpt_list,
5915 p_restrict_sql,p_match_type,NULL,
5916 x_search_ctx_id,x_num_matches);
5917 ELSIF upper(p_api_name) = 'GET_MATCHING_CONTACTS' THEN
5918 get_matching_contacts(p_rule_id,p_party_id,l_contact_list, l_cpt_list,
5919 p_restrict_sql,p_match_type,NULL,
5920 x_search_ctx_id,x_num_matches);
5921 ELSIF upper(p_api_name) = 'GET_MATCHING_CONTACT_POINTS' THEN
5922 get_matching_contact_points(p_rule_id,p_party_id, l_cpt_list,
5923 p_restrict_sql,p_match_type,NULL,
5924 x_search_ctx_id,x_num_matches);
5925 END IF;
5926 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5927 hz_utility_v2pub.debug(p_message=>'call_api_dynamic(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5928 END IF;
5929 EXCEPTION
5930 WHEN FND_API.G_EXC_ERROR THEN
5931 RAISE FND_API.G_EXC_ERROR;
5932 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5933 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5934 WHEN OTHERS THEN
5935 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5936 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.call_api_dynamic');
5937 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
5938 FND_MSG_PUB.ADD;
5939 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5940 END call_api_dynamic;
5941
5942
5943 PROCEDURE get_matching_party_sites (
5944 p_rule_id IN NUMBER,
5945 p_party_id IN NUMBER,
5946 p_party_site_list IN HZ_PARTY_SEARCH.PARTY_SITE_LIST,
5947 p_contact_point_list IN HZ_PARTY_SEARCH.CONTACT_POINT_LIST,
5948 p_restrict_sql IN VARCHAR2,
5949 p_match_type IN VARCHAR2,
5950 p_dup_party_site_id IN NUMBER,
5951 x_search_ctx_id OUT NUMBER,
5952 x_num_matches OUT NUMBER
5953 ) IS
5954
5955 -- Strings to hold the generated Intermedia query strings
5956 l_party_contains_str VARCHAR2(32000);
5957 l_match_idx NUMBER;
5958 l_party_site_contains_str VARCHAR2(32000);
5959 l_contact_contains_str VARCHAR2(32000);
5960 l_contact_pt_contains_str VARCHAR2(32000);
5961 l_tmp VARCHAR2(32000);
5962
5963 -- Other local variables
5964 l_match_str VARCHAR2(30); -- Match type (AND or OR)
5965 l_sqlstr VARCHAR2(32000); -- Dynamic SQL String
5966 -- For Score calculation
5967 l_max_score NUMBER;
5968 l_entered_max_score NUMBER;
5969 FIRST BOOLEAN;
5970 l_search_ctx_id NUMBER; -- Generated Search Context ID
5971
5972 l_TX13 VARCHAR2(2000);
5973 l_TX20 VARCHAR2(2000);
5974 l_TX9 VARCHAR2(2000);
5975 l_TX22 VARCHAR2(2000);
5976 l_TX1 VARCHAR2(2000);
5977 l_TX15 VARCHAR2(2000);
5978 l_TX21 VARCHAR2(2000);
5979 l_TX3 VARCHAR2(2000);
5980 l_TX10 VARCHAR2(2000);
5981 l_TX11 VARCHAR2(2000);
5982 l_TX4 VARCHAR2(2000);
5983 l_TX14 VARCHAR2(2000);
5984 H_SCORES HZ_PARTY_SEARCH.score_list;
5985
5986 l_score NUMBER;
5987 l_idx NUMBER;
5988 l_party_cur HZ_PARTY_STAGE.StageCurTyp;
5989 l_party_site_cur HZ_PARTY_STAGE.StageCurTyp;
5990 l_contact_cur HZ_PARTY_STAGE.StageCurTyp;
5991 l_contact_pt_cur HZ_PARTY_STAGE.StageCurTyp;
5992 l_party_id NUMBER;
5993 l_ps_party_id NUMBER;
5994 l_ct_party_id NUMBER;
5995 l_cpt_party_id NUMBER;
5996 l_cpt_ps_id NUMBER;
5997 l_cpt_contact_id NUMBER;
5998 l_cpt_type VARCHAR2(100);
5999 l_cpt_level VARCHAR2(100);
6000 l_party_site_id NUMBER;
6001 l_org_contact_id NUMBER;
6002 l_contact_pt_id NUMBER;
6003 l_cpt_level VARCHAR2(100);
6004 l_ps_contact_id NUMBER;
6005 l_party_max_score NUMBER;
6006 l_ps_max_score NUMBER;
6007 l_contact_max_score NUMBER;
6008 l_cpt_max_score NUMBER;
6009
6010 defpt NUMBER :=0;
6011 defps NUMBER :=0;
6012 defct NUMBER :=0;
6013 defcpt NUMBER :=0;
6014 l_index NUMBER;
6015 l_match_ps_list HZ_PARTY_SEARCH.IDList;
6016 l_cnt NUMBER:=1;
6017
6018
6019 BEGIN
6020 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6021 hz_utility_v2pub.debug(p_message=>'get_matching_party_sites(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6022 END IF;
6023 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6024 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6025 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6026 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6027 hz_utility_v2pub.debug(p_message=>'p_dup_party_site_id '||p_dup_party_site_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6028 END IF;
6029
6030 -- ************************************
6031 -- STEP 1. Initialization and error checks
6032
6033 l_match_str := ' AND ';
6034 IF p_match_type = 'AND' THEN
6035 l_match_str := ' AND ';
6036 ELSIF p_match_type = 'OR' THEN
6037 l_match_str := ' OR ';
6038 END IF;
6039 l_entered_max_score:= init_search( HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC, p_party_site_list, HZ_PARTY_SEARCH.G_MISS_CONTACT_LIST, p_contact_point_list,l_match_str, l_party_max_score, l_ps_max_score, l_contact_max_score, l_cpt_max_score);
6040 g_score_until_thresh := false;
6041 IF l_entered_max_score = 0 THEN l_entered_max_score:=1; END IF;
6042
6043 -- ************************************************************
6044 -- STEP 2. Setup of intermedia query strings for Acquisition query
6045 l_party_site_contains_str := INIT_PARTY_SITES_QUERY(l_match_str,l_tmp);
6046 l_contact_pt_contains_str := INIT_CONTACT_POINTS_QUERY(l_match_str,l_tmp);
6047 init_score_context(HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC,p_party_site_list,HZ_PARTY_SEARCH.G_MISS_CONTACT_LIST,p_contact_point_list);
6048
6049 -- Setup Search Context ID
6050 SELECT hz_search_ctx_s.nextval INTO l_search_ctx_id FROM dual;
6051 x_search_ctx_id := l_search_ctx_id;
6052
6053 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6054 hz_utility_v2pub.debug(p_message=>'l_match_str '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6055 hz_utility_v2pub.debug(p_message=>'l_party_site_contains_str '||l_party_site_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6056 hz_utility_v2pub.debug(p_message=>'l_contact_pt_contains_str '||l_contact_pt_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6057 hz_utility_v2pub.debug(p_message=>'l_search_ctx_id '||l_search_ctx_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6058 END IF;
6059 IF l_party_site_contains_str IS NULL THEN
6060 defps := 1;
6061 END IF;
6062 IF l_contact_pt_contains_str IS NULL THEN
6063 defcpt := 1;
6064 END IF;
6065
6066 IF l_party_site_contains_str IS NOT NULL THEN
6067 open_party_site_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_party_site_contains_str,NULL, null,'N', 'N',l_party_site_cur);
6068 LOOP
6069 FETCH l_party_site_cur INTO
6070 l_party_site_id, l_ps_party_id, l_ps_contact_id , l_TX9, l_TX10, l_TX11, l_TX13, l_TX14, l_TX15, l_TX20, l_TX21, l_TX22;
6071 EXIT WHEN l_party_site_cur%NOTFOUND;
6072 IF (p_dup_party_site_id IS NULL OR (
6073 p_dup_party_site_id IS NOT NULL AND l_ps_contact_id IS NULL AND
6074 l_party_site_id <> p_dup_party_site_id)) THEN
6075 l_index := map_id(l_party_site_id);
6076 l_match_ps_list(l_cnt):= l_party_site_id ;
6077 l_cnt:=l_cnt+1;
6078 l_score := GET_PARTY_SITES_SCORE(l_match_idx,l_TX9,l_TX10,l_TX11,l_TX13,l_TX14,l_TX15,l_TX20,l_TX21,l_TX22);
6079 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,l_score,defct,defcpt, l_ps_party_id, l_party_site_id, null,null);
6080 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6081 hz_utility_v2pub.debug(p_message=>'Party Site Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6082 hz_utility_v2pub.debug(p_message=>'l_party_site_id '||l_party_site_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6083 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6084 END IF;
6085 END IF;
6086 END LOOP;
6087 CLOSE l_party_site_cur;
6088 END IF;
6089
6090 IF l_contact_pt_contains_str IS NOT NULL THEN
6091 SAVEPOINT eval_start;
6092 IF l_match_str = ' AND ' OR (
6093 ((l_cpt_max_score/l_entered_max_score)<(72/805))
6094 ) THEN
6095 FORALL I in 1..l_match_ps_list.COUNT
6096 INSERT INTO HZ_DQM_PARTIES_GT (search_context_id, party_id)
6097 values (l_search_ctx_id,l_match_ps_list(I));
6098 open_contact_pt_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_contact_pt_contains_str,NULL, null,'N', 'N',l_contact_pt_cur,'PARTY_SITES');
6099 ELSE
6100 open_contact_pt_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_contact_pt_contains_str,NULL, null,'N', 'N',l_contact_pt_cur);
6101 END IF;
6102 LOOP
6103 FETCH l_contact_pt_cur INTO
6104 l_contact_pt_id, l_cpt_type, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id , l_TX1, l_TX3, l_TX4;
6105 EXIT WHEN l_contact_pt_cur%NOTFOUND;
6106 IF (l_cpt_ps_id IS NOT NULL AND (p_dup_party_site_id IS NULL OR (
6107 p_dup_party_site_id IS NOT NULL AND l_cpt_contact_id IS NULL AND p_dup_party_site_id <> l_cpt_ps_id))) THEN
6108 l_index := map_id(l_cpt_ps_id);
6109 IF l_match_str = ' OR ' THEN
6110 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6111 IF NOT H_SCORES.EXISTS(l_index) THEN
6112 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,defct,l_score,l_cpt_party_id,l_cpt_ps_id,l_cpt_contact_id,l_contact_pt_id);
6113 ELSE
6114 IF l_score > H_SCORES(l_index).CONTACT_POINT_SCORE THEN
6115 H_SCORES(l_index).TOTAL_SCORE :=
6116 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).CONTACT_POINT_SCORE+l_score;
6117 H_SCORES(l_index).CONTACT_POINT_SCORE := l_score;
6118 END IF;
6119 END IF;
6120 ELSE
6121 IF H_SCORES.EXISTS(l_index) THEN
6122 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6123 IF l_score > H_SCORES(l_index).CONTACT_POINT_SCORE THEN
6124 H_SCORES(l_index).TOTAL_SCORE :=
6125 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).CONTACT_POINT_SCORE+l_score;
6126 H_SCORES(l_index).CONTACT_POINT_SCORE := l_score;
6127 END IF;
6128 ELSIF defps=1 THEN
6129 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6130 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,defct,l_score,l_cpt_party_id,l_cpt_ps_id,l_cpt_contact_id,l_contact_pt_id);
6131 END IF;
6132 END IF;
6133 END IF;
6134 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6135 hz_utility_v2pub.debug(p_message=>'Contact_point Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6136 hz_utility_v2pub.debug(p_message=>'l_party_site_id '||l_cpt_ps_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6137 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6138 END IF;
6139 END LOOP;
6140 CLOSE l_contact_pt_cur;
6141 ROLLBACK TO eval_start;
6142 END IF;
6143 x_num_matches := 0;
6144 l_party_site_id := H_SCORES.FIRST;
6145 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6146 hz_utility_v2pub.debug(p_message=>'Evaluating Matches. Threshold : 9 ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6147 END IF;
6148 WHILE l_party_site_id IS NOT NULL LOOP
6149 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6150 hz_utility_v2pub.debug(p_message=>'Match Party Site ID '||H_SCORES(l_party_site_id).PARTY_SITE_ID,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6151 hz_utility_v2pub.debug(p_message=>'Score '||round((H_SCORES(l_party_site_id).TOTAL_SCORE/l_entered_max_score)*100),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6152 END IF;
6153 IF l_match_str = ' OR ' THEN
6154 IF (H_SCORES(l_party_site_id).TOTAL_SCORE/l_entered_max_score)>=( 72/805 ) THEN
6155 INSERT INTO HZ_MATCHED_PARTY_SITES_GT (SEARCH_CONTEXT_ID, PARTY_ID, PARTY_SITE_ID, SCORE)
6156 VALUES (l_search_ctx_id,H_SCORES(l_party_site_id).PARTY_ID, H_SCORES(l_party_site_id).PARTY_SITE_ID, (H_SCORES(l_party_site_id).TOTAL_SCORE/l_entered_max_score)*100);
6157 x_num_matches := x_num_matches+1;
6158 END IF;
6159 ELSE
6160 IF H_SCORES(l_party_site_id).PARTY_SITE_SCORE>0 AND
6161 H_SCORES(l_party_site_id).CONTACT_POINT_SCORE>0 AND
6162 (H_SCORES(l_party_site_id).TOTAL_SCORE/l_entered_max_score)>=(72/805) THEN
6163 INSERT INTO HZ_MATCHED_PARTY_SITES_GT (SEARCH_CONTEXT_ID, PARTY_ID, PARTY_SITE_ID, SCORE)
6164 VALUES (l_search_ctx_id,H_SCORES(l_party_site_id).PARTY_ID, H_SCORES(l_party_site_id).PARTY_SITE_ID, round((H_SCORES(l_party_site_id).TOTAL_SCORE/l_entered_max_score)*100));
6165 x_num_matches := x_num_matches+1;
6166 END IF;
6167 END IF;
6168 l_party_site_id:=H_SCORES.NEXT(l_party_site_id);
6169 END LOOP;
6170 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6171 hz_utility_v2pub.debug(p_message=>'get_matching_party_sites(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6172 END IF;
6173 EXCEPTION
6174 WHEN FND_API.G_EXC_ERROR THEN
6175 RAISE FND_API.G_EXC_ERROR;
6176 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6177 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6178 WHEN OTHERS THEN
6179 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6180 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.get_matching_party_sites');
6181 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
6182 FND_MSG_PUB.ADD;
6183 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6184 END get_matching_party_sites;
6185
6186
6187 PROCEDURE get_matching_contacts (
6188 p_rule_id IN NUMBER,
6189 p_party_id IN NUMBER,
6190 p_contact_list IN HZ_PARTY_SEARCH.CONTACT_LIST,
6191 p_contact_point_list IN HZ_PARTY_SEARCH.CONTACT_POINT_LIST,
6192 p_restrict_sql IN VARCHAR2,
6193 p_match_type IN VARCHAR2,
6194 p_dup_contact_id IN NUMBER,
6195 x_search_ctx_id OUT NUMBER,
6196 x_num_matches OUT NUMBER
6197 ) IS
6198
6199 -- Strings to hold the generated Intermedia query strings
6200 l_party_contains_str VARCHAR2(32000);
6201 l_party_site_contains_str VARCHAR2(32000);
6202 l_contact_contains_str VARCHAR2(32000);
6203 l_contact_pt_contains_str VARCHAR2(32000);
6204 l_tmp VARCHAR2(32000);
6205
6206 -- Other local variables
6207 l_match_str VARCHAR2(30); -- Match type (AND or OR)
6208 l_match_idx NUMBER;
6209 l_sqlstr VARCHAR2(32000); -- Dynamic SQL String
6210 -- For Score calculation
6211 l_max_score NUMBER;
6212 l_entered_max_score NUMBER;
6213 FIRST BOOLEAN;
6214 l_search_ctx_id NUMBER; -- Generated Search Context ID
6215
6216 l_TX1 VARCHAR2(2000);
6217 l_TX3 VARCHAR2(2000);
6218 l_TX4 VARCHAR2(2000);
6219 H_SCORES HZ_PARTY_SEARCH.score_list;
6220
6221 l_score NUMBER;
6222 l_idx NUMBER;
6223 l_party_cur HZ_PARTY_STAGE.StageCurTyp;
6224 l_party_site_cur HZ_PARTY_STAGE.StageCurTyp;
6225 l_contact_cur HZ_PARTY_STAGE.StageCurTyp;
6226 l_contact_pt_cur HZ_PARTY_STAGE.StageCurTyp;
6227 l_party_id NUMBER;
6228 l_ps_party_id NUMBER;
6229 l_ct_party_id NUMBER;
6230 l_cpt_party_id NUMBER;
6231 l_cpt_ps_id NUMBER;
6232 l_cpt_contact_id NUMBER;
6233 l_cpt_type VARCHAR2(100);
6234 l_party_site_id NUMBER;
6235 l_org_contact_id NUMBER;
6236 l_contact_pt_id NUMBER;
6237
6238 defpt NUMBER :=0;
6239 defps NUMBER :=0;
6240 defct NUMBER :=0;
6241 defcpt NUMBER :=0;
6242 l_index NUMBER;
6243 l_party_max_score NUMBER;
6244 l_ps_max_score NUMBER;
6245 l_contact_max_score NUMBER;
6246 l_cpt_max_score NUMBER;
6247 l_match_contact_list HZ_PARTY_SEARCH.IDList;
6248 l_cnt NUMBER:=1;
6249
6250
6251 BEGIN
6252 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6253 hz_utility_v2pub.debug(p_message=>'get_matching_contacts(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6254 END IF;
6255 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6256 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6257 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6258 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6259 hz_utility_v2pub.debug(p_message=>'p_dup_contact_id '||p_dup_contact_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6260 END IF;
6261
6262 -- ************************************
6263 -- STEP 1. Initialization and error checks
6264
6265 l_match_str := ' AND ';
6266 IF p_match_type = 'AND' THEN
6267 l_match_str := ' AND ';
6268 ELSIF p_match_type = 'OR' THEN
6269 l_match_str := ' OR ';
6270 END IF;
6271 l_entered_max_score:= init_search( HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC, HZ_PARTY_SEARCH.G_MISS_PARTY_SITE_LIST, p_contact_list, p_contact_point_list,l_match_str, l_party_max_score, l_ps_max_score, l_contact_max_score, l_cpt_max_score);
6272 g_score_until_thresh := false;
6273 IF l_entered_max_score = 0 THEN l_entered_max_score:=1; END IF;
6274
6275 -- ************************************************************
6276 -- STEP 2. Setup of intermedia query strings for Acquisition query
6277 l_contact_contains_str := INIT_CONTACTS_QUERY(l_match_str,l_tmp);
6278 l_contact_pt_contains_str := INIT_CONTACT_POINTS_QUERY(l_match_str,l_tmp);
6279 init_score_context(HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC,HZ_PARTY_SEARCH.G_MISS_PARTY_SITE_LIST,p_contact_list,p_contact_point_list);
6280
6281 -- Setup Search Context ID
6282 SELECT hz_search_ctx_s.nextval INTO l_search_ctx_id FROM dual;
6283 x_search_ctx_id := l_search_ctx_id;
6284
6285 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6286 hz_utility_v2pub.debug(p_message=>'l_match_str '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6287 hz_utility_v2pub.debug(p_message=>'l_contact_contains_str '||l_contact_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6288 hz_utility_v2pub.debug(p_message=>'l_contact_pt_contains_str '||l_contact_pt_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6289 hz_utility_v2pub.debug(p_message=>'l_search_ctx_id '||l_search_ctx_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6290 END IF;
6291 IF l_contact_contains_str IS NULL THEN
6292 defct := 1;
6293 END IF;
6294 IF l_contact_pt_contains_str IS NULL THEN
6295 defcpt := 1;
6296 END IF;
6297
6298 IF l_contact_contains_str IS NOT NULL THEN
6299 open_contact_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_contact_contains_str,NULL, null, l_contact_cur);
6300 LOOP
6301 FETCH l_contact_cur INTO
6302 l_org_contact_id, l_ct_party_id ;
6303 EXIT WHEN l_contact_cur%NOTFOUND;
6304 IF (p_dup_contact_id IS NULL OR l_org_contact_id <> p_dup_contact_id) THEN
6305 l_index := map_id(l_org_contact_id);
6306 l_match_contact_list(l_cnt):=l_org_contact_id;
6307 l_cnt:=l_cnt+1;
6308 l_score := GET_CONTACTS_SCORE(l_match_idx);
6309 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,l_score,defcpt, l_ct_party_id, null, l_org_contact_id, null);
6310 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6311 hz_utility_v2pub.debug(p_message=>'Contact Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6312 hz_utility_v2pub.debug(p_message=>'l_org_contact_id '||l_org_contact_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6313 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6314 END IF;
6315 END IF;
6316 END LOOP;
6317 CLOSE l_contact_cur;
6318 END IF;
6319
6320 IF l_contact_pt_contains_str IS NOT NULL THEN
6321 SAVEPOINT eval_start;
6322 IF l_match_str = ' AND ' OR (
6323 ((l_cpt_max_score/l_entered_max_score)<(72/805))
6324 ) THEN
6325 FORALL I in 1..l_match_contact_list.COUNT
6326 INSERT INTO HZ_DQM_PARTIES_GT (search_context_id, party_id)
6327 values (l_search_ctx_id,l_match_contact_list(I));
6328 open_contact_pt_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_contact_pt_contains_str,NULL, null,'N', 'N',l_contact_pt_cur,'CONTACTS');
6329 ELSE
6330 open_contact_pt_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_contact_pt_contains_str,NULL, null,'N', 'N',l_contact_pt_cur);
6331 END IF;
6332 LOOP
6333 FETCH l_contact_pt_cur INTO
6334 l_contact_pt_id, l_cpt_type, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id , l_TX1, l_TX3, l_TX4;
6335 EXIT WHEN l_contact_pt_cur%NOTFOUND;
6336 IF (l_cpt_contact_id IS NOT NULL AND (p_dup_contact_id IS NULL OR l_cpt_contact_id <> p_dup_contact_id)) THEN
6337 l_index := map_id(l_cpt_contact_id);
6338 IF l_match_str = ' OR ' THEN
6339 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6340 IF NOT H_SCORES.EXISTS(l_index) THEN
6341 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,defct,l_score,l_cpt_party_id,l_cpt_ps_id,l_cpt_contact_id,l_contact_pt_id);
6342 ELSE
6343 IF l_score > H_SCORES(l_index).CONTACT_POINT_SCORE THEN
6344 H_SCORES(l_index).TOTAL_SCORE :=
6345 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).CONTACT_POINT_SCORE+l_score;
6346 H_SCORES(l_index).CONTACT_POINT_SCORE := l_score;
6347 END IF;
6348 END IF;
6349 ELSE
6350 IF H_SCORES.EXISTS(l_index) THEN
6351 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6352 IF l_score > H_SCORES(l_index).CONTACT_POINT_SCORE THEN
6353 H_SCORES(l_index).TOTAL_SCORE :=
6354 H_SCORES(l_index).TOTAL_SCORE-H_SCORES(l_index).CONTACT_POINT_SCORE+l_score;
6355 H_SCORES(l_index).CONTACT_POINT_SCORE := l_score;
6356 END IF;
6357 ELSIF defps=1 THEN
6358 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6359 H_SCORES(l_index) := get_new_score_rec(l_score,defpt,defps,defct,l_score,l_cpt_party_id,l_cpt_ps_id,l_cpt_contact_id,l_contact_pt_id);
6360 END IF;
6361 END IF;
6362 END IF;
6363 END LOOP;
6364 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6365 hz_utility_v2pub.debug(p_message=>'Contact_point Level Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6366 hz_utility_v2pub.debug(p_message=>'l_org_contact_id '||l_cpt_contact_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6367 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6368 END IF;
6369 CLOSE l_contact_pt_cur;
6370 END IF;
6371 x_num_matches := 0;
6372 l_org_contact_id := H_SCORES.FIRST;
6373 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6374 hz_utility_v2pub.debug(p_message=>'Evaluating Matches. Threshold : 9 ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6375 END IF;
6376 WHILE l_org_contact_id IS NOT NULL LOOP
6377 IF l_match_str = ' OR ' THEN
6378 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6379 hz_utility_v2pub.debug(p_message=>'Match Contact ID '||H_SCORES(l_org_contact_id).ORG_CONTACT_ID,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6380 hz_utility_v2pub.debug(p_message=>'Score '||round((H_SCORES(l_org_contact_id).TOTAL_SCORE/l_entered_max_score)*100),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6381 END IF;
6382 IF (H_SCORES(l_org_contact_id).TOTAL_SCORE/l_entered_max_score)>=(72/805) THEN
6383 INSERT INTO HZ_MATCHED_CONTACTS_GT (SEARCH_CONTEXT_ID, PARTY_ID, ORG_CONTACT_ID, SCORE)
6384 VALUES (l_search_ctx_id,H_SCORES(l_org_contact_id).PARTY_ID, H_SCORES(l_org_contact_id).ORG_CONTACT_ID, (H_SCORES(l_org_contact_id).TOTAL_SCORE/l_entered_max_score)*100);
6385 x_num_matches := x_num_matches+1;
6386 END IF;
6387 ELSE
6388 IF H_SCORES(l_org_contact_id).CONTACT_SCORE>0 AND
6389 H_SCORES(l_org_contact_id).CONTACT_POINT_SCORE>0 AND
6390 (H_SCORES(l_org_contact_id).TOTAL_SCORE/l_entered_max_score)>=(72/805) THEN
6391 INSERT INTO HZ_MATCHED_CONTACTS_GT (SEARCH_CONTEXT_ID, PARTY_ID, ORG_CONTACT_ID, SCORE)
6392 VALUES (l_search_ctx_id,H_SCORES(l_org_contact_id).PARTY_ID, H_SCORES(l_org_contact_id).ORG_CONTACT_ID, round((H_SCORES(l_org_contact_id).TOTAL_SCORE/l_entered_max_score)*100));
6393 x_num_matches := x_num_matches+1;
6394 END IF;
6395 END IF;
6396 l_org_contact_id:=H_SCORES.NEXT(l_org_contact_id);
6397 END LOOP;
6398 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6399 hz_utility_v2pub.debug(p_message=>'get_matching_contacts(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6400 END IF;
6401 EXCEPTION
6402 WHEN FND_API.G_EXC_ERROR THEN
6403 RAISE FND_API.G_EXC_ERROR;
6404 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6405 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6406 WHEN OTHERS THEN
6407 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6408 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.get_matching_contacts');
6409 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
6410 FND_MSG_PUB.ADD;
6411 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6412 END get_matching_contacts;
6413
6414
6415 PROCEDURE get_matching_contact_points (
6416 p_rule_id IN NUMBER,
6417 p_party_id IN NUMBER,
6418 p_contact_point_list IN HZ_PARTY_SEARCH.CONTACT_POINT_LIST,
6419 p_restrict_sql IN VARCHAR2,
6420 p_match_type IN VARCHAR2,
6421 p_dup_contact_point_id IN NUMBER,
6422 x_search_ctx_id OUT NUMBER,
6423 x_num_matches OUT NUMBER
6424 ) IS
6425
6426
6427 -- Strings to hold the generated Intermedia query strings
6428 l_contact_pt_contains_str VARCHAR2(32000);
6429 l_tmp VARCHAR2(32000);
6430
6431 -- Other local variables
6432 l_match_str VARCHAR2(30); -- Match type (AND or OR)
6433 l_match_idx NUMBER;
6434 -- For Score calculation
6435 l_entered_max_score NUMBER;
6436 l_search_ctx_id NUMBER; -- Generated Search Context ID
6437
6438 l_TX1 VARCHAR2(2000);
6439 l_TX3 VARCHAR2(2000);
6440 l_TX4 VARCHAR2(2000);
6441
6442 l_score NUMBER;
6443 l_idx NUMBER;
6444 l_contact_pt_cur HZ_PARTY_STAGE.StageCurTyp;
6445 l_cpt_party_id NUMBER;
6446 l_cpt_ps_id NUMBER;
6447 l_cpt_contact_id NUMBER;
6448 l_contact_pt_id NUMBER;
6449 l_cpt_type VARCHAR2(100);
6450 H_PARTY_ID HZ_PARTY_SEARCH.IDList;
6451 H_CONTACT_POINT_ID HZ_PARTY_SEARCH.IDList;
6452 H_SCORE HZ_PARTY_SEARCH.IDList;
6453
6454 cnt NUMBER :=0;
6455 l_party_max_score NUMBER;
6456 l_ps_max_score NUMBER;
6457 l_contact_max_score NUMBER;
6458 l_cpt_max_score NUMBER;
6459
6460
6461 BEGIN
6462 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6463 hz_utility_v2pub.debug(p_message=>'get_matching_contact_points(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6464 END IF;
6465 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6466 hz_utility_v2pub.debug(p_message=>'Input Parameters:',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6467 hz_utility_v2pub.debug(p_message=>'p_match_type '||p_match_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6468 hz_utility_v2pub.debug(p_message=>'p_restrict_sql '||p_restrict_sql,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6469 hz_utility_v2pub.debug(p_message=>'p_dup_contact_point_id '||p_dup_contact_point_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6470 END IF;
6471
6472 -- ************************************
6473 -- STEP 1. Initialization and error checks
6474
6475 l_match_str := ' AND ';
6476 IF p_match_type = 'AND' THEN
6477 l_match_str := ' AND ';
6478 ELSIF p_match_type = 'OR' THEN
6479 l_match_str := ' OR ';
6480 END IF;
6481 l_entered_max_score:= init_search(HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC,
6482 HZ_PARTY_SEARCH.G_MISS_PARTY_SITE_LIST, HZ_PARTY_SEARCH.G_MISS_CONTACT_LIST,
6483 p_contact_point_list,l_match_str, l_party_max_score, l_ps_max_score, l_contact_max_score, l_cpt_max_score);
6484 g_score_until_thresh := false;
6485 IF l_entered_max_score = 0 THEN l_entered_max_score:=1; END IF;
6486
6487 -- ************************************************************
6488 -- STEP 2. Setup of intermedia query strings for Acquisition query
6489 l_contact_pt_contains_str := INIT_CONTACT_POINTS_QUERY(l_match_str,l_tmp);
6490 init_score_context(HZ_PARTY_SEARCH.G_MISS_PARTY_SEARCH_REC,HZ_PARTY_SEARCH.G_MISS_PARTY_SITE_LIST,HZ_PARTY_SEARCH.G_MISS_CONTACT_LIST,p_contact_point_list);
6491
6492 -- Setup Search Context ID
6493 SELECT hz_search_ctx_s.nextval INTO l_search_ctx_id FROM dual;
6494 x_search_ctx_id := l_search_ctx_id;
6495 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6496 hz_utility_v2pub.debug(p_message=>'l_match_str '||l_match_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6497 hz_utility_v2pub.debug(p_message=>'l_contact_pt_contains_str '||l_contact_pt_contains_str,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6498 hz_utility_v2pub.debug(p_message=>'l_search_ctx_id '||l_search_ctx_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6499 END IF;
6500
6501 IF l_contact_pt_contains_str IS NOT NULL THEN
6502 open_contact_pt_cursor(NULL, P_PARTY_ID, p_restrict_sql, l_contact_pt_contains_str,NULL, null,'N', 'N',l_contact_pt_cur);
6503 cnt := 1;
6504 LOOP
6505 FETCH l_contact_pt_cur INTO
6506 l_contact_pt_id, l_cpt_type, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id , l_TX1, l_TX3, l_TX4;
6507 EXIT WHEN l_contact_pt_cur%NOTFOUND;
6508 IF (p_dup_contact_point_id IS NULL OR (
6509 p_dup_contact_point_id IS NOT NULL AND
6510 l_cpt_ps_id IS NULL AND l_cpt_contact_id IS NULL AND
6511 p_dup_contact_point_id <> l_contact_pt_id)) THEN
6512 H_CONTACT_POINT_ID(cnt) := l_contact_pt_id;
6513 H_PARTY_ID(cnt) := l_cpt_party_id;
6514 H_SCORE(cnt) := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6515 cnt := cnt+1;
6516 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6517 hz_utility_v2pub.debug(p_message=>'Contact Point Matches',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6518 hz_utility_v2pub.debug(p_message=>'l_contact_pt_id '||l_contact_pt_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6519 hz_utility_v2pub.debug(p_message=>'l_score '||l_score,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6520 END IF;
6521 END IF;
6522 END LOOP;
6523 CLOSE l_contact_pt_cur;
6524 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6525 hz_utility_v2pub.debug(p_message=>'Evaluating Matches. Threshold : 9 ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6526 END IF;
6527 x_num_matches := 0;
6528 FOR I in 1..H_CONTACT_POINT_ID.COUNT LOOP
6529 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6530 hz_utility_v2pub.debug(p_message=>'Match Contact Point ID '||H_CONTACT_POINT_ID(I),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6531 hz_utility_v2pub.debug(p_message=>'Score '||round((H_SCORE(I)/l_entered_max_score)*100),p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6532 END IF;
6533 IF (H_SCORE(I)/l_entered_max_score) >= (72/805) THEN
6534 INSERT INTO HZ_MATCHED_CPTS_GT(SEARCH_CONTEXT_ID,CONTACT_POINT_ID,PARTY_ID,SCORE) VALUES (
6535 l_search_ctx_id,H_CONTACT_POINT_ID(I),H_PARTY_ID(I),round(H_SCORE(I)/l_entered_max_score)*100);
6536 x_num_matches := x_num_matches + 1;
6537 END IF;
6538 END LOOP;
6539 END IF;
6540 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6541 hz_utility_v2pub.debug(p_message=>'get_matching_contact_points(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6542 END IF;
6543 EXCEPTION
6544 WHEN FND_API.G_EXC_ERROR THEN
6545 RAISE FND_API.G_EXC_ERROR;
6546 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6547 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6548 WHEN OTHERS THEN
6549 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6550 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.get_matching_contact_points');
6551 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
6552 FND_MSG_PUB.ADD;
6553 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6554 END get_matching_contact_points;
6555
6556 /**********************************************************
6557 This procedure finds the score details for a specific party that
6558 matched
6559
6560 **********************************************************/
6561
6562 PROCEDURE get_score_details (
6563 p_rule_id IN NUMBER,
6564 p_party_id IN NUMBER,
6565 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
6566 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
6567 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
6568 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
6569 x_search_ctx_id IN OUT NUMBER
6570 ) IS
6571
6572 -- Strings to hold the generated Intermedia query strings
6573 l_party_contains_str VARCHAR2(32000);
6574 l_party_site_contains_str VARCHAR2(32000);
6575 l_contact_contains_str VARCHAR2(32000);
6576 l_contact_pt_contains_str VARCHAR2(32000);
6577 l_tmp VARCHAR2(32000);
6578
6579 -- Other local variables
6580 l_match_str VARCHAR2(30); -- Match type (AND or OR)
6581 -- For Score calculation
6582 l_max_score NUMBER;
6583 l_entered_max_score NUMBER;
6584 FIRST BOOLEAN;
6585 l_search_ctx_id NUMBER; -- Generated Search Context ID
6586
6587 l_TX39 VARCHAR2(2000);
6588 l_max_TX39 VARCHAR2(2000);
6589 l_TX13 VARCHAR2(2000);
6590 l_max_TX13 VARCHAR2(2000);
6591 l_TX20 VARCHAR2(2000);
6592 l_max_TX20 VARCHAR2(2000);
6593 l_TX42 VARCHAR2(2000);
6594 l_max_TX42 VARCHAR2(2000);
6595 l_TX32 VARCHAR2(2000);
6596 l_max_TX32 VARCHAR2(2000);
6597 l_TX46 VARCHAR2(2000);
6598 l_max_TX46 VARCHAR2(2000);
6599 l_TX9 VARCHAR2(2000);
6600 l_max_TX9 VARCHAR2(2000);
6601 l_TX22 VARCHAR2(2000);
6602 l_max_TX22 VARCHAR2(2000);
6603 l_TX43 VARCHAR2(2000);
6604 l_max_TX43 VARCHAR2(2000);
6605 l_TX44 VARCHAR2(2000);
6606 l_max_TX44 VARCHAR2(2000);
6607 l_TX35 VARCHAR2(2000);
6608 l_max_TX35 VARCHAR2(2000);
6609 l_TX1 VARCHAR2(2000);
6610 l_max_TX1 VARCHAR2(2000);
6611 l_TX158 VARCHAR2(2000);
6612 l_max_TX158 VARCHAR2(2000);
6613 l_TX47 VARCHAR2(2000);
6614 l_max_TX47 VARCHAR2(2000);
6615 l_TX15 VARCHAR2(2000);
6616 l_max_TX15 VARCHAR2(2000);
6617 l_TX21 VARCHAR2(2000);
6618 l_max_TX21 VARCHAR2(2000);
6619 l_TX3 VARCHAR2(2000);
6620 l_max_TX3 VARCHAR2(2000);
6621 l_TX10 VARCHAR2(2000);
6622 l_max_TX10 VARCHAR2(2000);
6623 l_TX11 VARCHAR2(2000);
6624 l_max_TX11 VARCHAR2(2000);
6625 l_TX4 VARCHAR2(2000);
6626 l_max_TX4 VARCHAR2(2000);
6627 l_TX157 VARCHAR2(2000);
6628 l_max_TX157 VARCHAR2(2000);
6629 l_TX40 VARCHAR2(2000);
6630 l_max_TX40 VARCHAR2(2000);
6631 l_TX34 VARCHAR2(2000);
6632 l_max_TX34 VARCHAR2(2000);
6633 l_TX48 VARCHAR2(2000);
6634 l_max_TX48 VARCHAR2(2000);
6635 l_TX156 VARCHAR2(2000);
6636 l_max_TX156 VARCHAR2(2000);
6637 l_TX14 VARCHAR2(2000);
6638 l_max_TX14 VARCHAR2(2000);
6639 H_SCORES HZ_PARTY_SEARCH.score_list;
6640
6641 l_score NUMBER;
6642 l_match_idx NUMBER;
6643 l_idx NUMBER;
6644 l_party_cur HZ_PARTY_STAGE.StageCurTyp;
6645 l_party_site_cur HZ_PARTY_STAGE.StageCurTyp;
6646 l_contact_cur HZ_PARTY_STAGE.StageCurTyp;
6647 l_contact_pt_cur HZ_PARTY_STAGE.StageCurTyp;
6648 l_party_id NUMBER;
6649 l_ps_party_id NUMBER;
6650 l_ct_party_id NUMBER;
6651 l_cpt_party_id NUMBER;
6652 l_cpt_ps_id NUMBER;
6653 l_cpt_contact_id NUMBER;
6654 l_cpt_type VARCHAR2(100);
6655 l_party_site_id NUMBER;
6656 l_org_contact_id NUMBER;
6657 l_contact_pt_id NUMBER;
6658 l_ps_contact_id NUMBER;
6659 l_max_id NUMBER;
6660 l_max_idx NUMBER;
6661
6662 l_index NUMBER;
6663 l_party_max_score NUMBER;
6664 l_ps_max_score NUMBER;
6665 l_contact_max_score NUMBER;
6666 l_cpt_max_score NUMBER;
6667
6668 --Fix for bug 4417124
6669 l_use_contact_addr_info BOOLEAN:=TRUE;
6670 l_use_contact_cpt_info BOOLEAN:=TRUE;
6671 l_TX35_new VARCHAR2(4000);
6672
6673 BEGIN
6674
6675 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6676 hz_utility_v2pub.debug(p_message=>'get_score_details(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6677 END IF;
6678 -- ************************************
6679 -- STEP 1. Initialization and error checks
6680
6681 l_entered_max_score:= init_search(p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list,' OR ', l_party_max_score, l_ps_max_score, l_contact_max_score, l_cpt_max_score);
6682 g_score_until_thresh := false;
6683 IF l_entered_max_score = 0 THEN l_entered_max_score:=1; END IF;
6684 -- ************************************************************
6685 -- STEP 2. Setup of intermedia query strings for Acquisition query
6686 l_party_site_contains_str := INIT_PARTY_SITES_QUERY(l_match_str,l_tmp);
6687 l_contact_contains_str := INIT_CONTACTS_QUERY(l_match_str,l_tmp);
6688 l_contact_pt_contains_str := INIT_CONTACT_POINTS_QUERY(l_match_str,l_tmp);
6689 init_score_context(p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list);
6690
6691 -- Setup Search Context ID
6692 IF x_search_ctx_id IS NULL THEN
6693 SELECT hz_search_ctx_s.nextval INTO l_search_ctx_id FROM dual;
6694 x_search_ctx_id := l_search_ctx_id;
6695 ELSE
6696 l_search_ctx_id := x_search_ctx_id;
6697 END IF;
6698
6699 open_party_cursor(p_party_id, null, null,null,null,null,l_party_cur);
6700 LOOP
6701 FETCH l_party_cur INTO
6702 l_party_id , l_TX32, l_TX34, l_TX35, l_TX39, l_TX158, l_TX40, l_TX43, l_TX42, l_TX44, l_TX46, l_TX47, l_TX48, l_TX156, l_TX157;
6703 EXIT WHEN l_party_cur%NOTFOUND;
6704 l_TX35_new:=RTRIM(LTRIM(l_TX35));
6705 l_TX35_new:=(CASE l_TX35_new WHEN 'SYNC' THEN HZ_STAGE_MAP_TRANSFORM.den_acc_number (l_party_id) ELSE l_TX35_new END);
6706 INSERT_PARTY_SCORE(p_party_id, p_party_id, l_search_ctx_id, p_party_search_rec, g_party_stage_rec, l_TX32,l_TX34,l_TX35_new,l_TX39,l_TX158,l_TX40,l_TX43,l_TX42,l_TX44,l_TX46,l_TX47,l_TX48,l_TX156,l_TX157,1);
6707 END LOOP;
6708 CLOSE l_party_cur;
6709
6710 IF l_party_site_contains_str IS NOT NULL THEN
6711 l_max_score := 0;
6712 l_max_id := 0;
6713 l_max_idx := 0;
6714 IF p_party_search_rec.PARTY_TYPE = 'PERSON' AND l_use_contact_addr_info THEN
6715 open_party_site_cursor(null, p_party_id, null, l_party_site_contains_str,NULL,NULL, 'Y','N',l_party_site_cur);
6716 ELSE
6717 open_party_site_cursor(null, p_party_id, null, l_party_site_contains_str,NULL,NULL, 'N','N',l_party_site_cur);
6718 END IF;
6719 LOOP
6720 FETCH l_party_site_cur INTO
6721 l_party_site_id, l_ps_party_id,l_ps_contact_id , l_TX9, l_TX10, l_TX11, l_TX13, l_TX14, l_TX15, l_TX20, l_TX21, l_TX22;
6722 EXIT WHEN l_party_site_cur%NOTFOUND;
6723 l_score := GET_PARTY_SITES_SCORE(l_match_idx,l_TX9,l_TX10,l_TX11,l_TX13,l_TX14,l_TX15,l_TX20,l_TX21,l_TX22);
6724 IF l_score > l_max_score THEN
6725 l_max_score := l_score;
6726 l_max_id := l_party_site_id;
6727 l_max_idx := l_match_idx;
6728 l_max_TX13 := l_TX13;
6729 l_max_TX20 := l_TX20;
6730 l_max_TX9 := l_TX9;
6731 l_max_TX22 := l_TX22;
6732 l_max_TX15 := l_TX15;
6733 l_max_TX21 := l_TX21;
6734 l_max_TX10 := l_TX10;
6735 l_max_TX11 := l_TX11;
6736 l_max_TX14 := l_TX14;
6737 END IF;
6738 END LOOP;
6739 CLOSE l_party_site_cur;
6740 IF l_max_score>0 THEN
6741 INSERT_PARTY_SITES_SCORE(p_party_id,l_max_id,l_search_ctx_id, p_party_site_list(l_max_idx), g_party_site_stage_list(l_max_idx) ,l_max_TX9,l_max_TX10,l_max_TX11,l_max_TX13,l_max_TX14,l_max_TX15,l_max_TX20,l_max_TX21,l_max_TX22,l_max_idx);
6742 END IF;
6743 END IF;
6744
6745 IF l_contact_contains_str IS NOT NULL THEN
6746 l_max_score := 0;
6747 l_max_id := 0;
6748 l_max_idx := 0;
6749 open_contact_cursor(null, p_party_id, null, l_contact_contains_str,NULL, null, l_contact_cur);
6750 LOOP
6751 FETCH l_contact_cur INTO
6752 l_org_contact_id, l_ct_party_id ;
6753 EXIT WHEN l_contact_cur%NOTFOUND;
6754 l_score := GET_CONTACTS_SCORE(l_match_idx);
6755 IF l_score > l_max_score THEN
6756 l_max_score := l_score;
6757 l_max_id := l_org_contact_id;
6758 l_max_idx := l_match_idx;
6759 END IF;
6760 END LOOP;
6761 CLOSE l_contact_cur;
6762 IF l_max_score>0 THEN
6763 INSERT_CONTACTS_SCORE(p_party_id,l_max_id,l_search_ctx_id, p_contact_list(l_max_idx), g_contact_stage_list(l_max_idx) ,l_max_idx);
6764 END IF;
6765 END IF;
6766
6767 IF l_contact_pt_contains_str IS NOT NULL THEN
6768 l_max_score := 0;
6769 l_max_id := 0;
6770 l_max_idx := 0;
6771 IF p_party_search_rec.PARTY_TYPE = 'PERSON' AND l_use_contact_cpt_info THEN
6772 open_contact_pt_cursor(null, p_party_id, null, l_contact_pt_contains_str,NULL,NULL, 'Y','N',l_contact_pt_cur);
6773 ELSE
6774 open_contact_pt_cursor(null, p_party_id, null, l_contact_pt_contains_str,NULL,NULL, 'N','N',l_contact_pt_cur);
6775 END IF;
6776 LOOP
6777 FETCH l_contact_pt_cur INTO
6778 l_contact_pt_id, l_cpt_type, l_cpt_party_id, l_cpt_ps_id, l_cpt_contact_id , l_TX1, l_TX3, l_TX4;
6779 EXIT WHEN l_contact_pt_cur%NOTFOUND;
6780 l_score := GET_CONTACT_POINTS_SCORE(l_match_idx,l_TX1,l_TX3,l_TX4);
6781 IF l_score > l_max_score THEN
6782 l_max_score := l_score;
6783 l_max_id := l_contact_pt_id;
6784 l_max_idx := l_match_idx;
6785 l_max_TX1 := l_TX1;
6786 l_max_TX3 := l_TX3;
6787 l_max_TX4 := l_TX4;
6788 END IF;
6789 END LOOP;
6790 IF l_max_score>0 THEN
6791 INSERT_CONTACT_POINTS_SCORE(p_party_id,l_max_id,l_search_ctx_id, p_contact_point_list(l_max_idx), g_contact_pt_stage_list(l_max_idx) ,l_max_TX1,l_max_TX3,l_max_TX4,l_max_idx);
6792 END IF;
6793 CLOSE l_contact_pt_cur;
6794 END IF;
6795 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6796 hz_utility_v2pub.debug(p_message=>'get_score_details(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6797 END IF;
6798 EXCEPTION
6799 WHEN FND_API.G_EXC_ERROR THEN
6800 RAISE FND_API.G_EXC_ERROR;
6801 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6802 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6803 WHEN OTHERS THEN
6804 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6805 FND_MESSAGE.SET_TOKEN('PROC','HZ_MATCH_RULE_34.get_score_details');
6806 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
6807 FND_MSG_PUB.ADD;
6808 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6809 END get_score_details;
6810
6811
6812 /************************************************
6813 This procedure retrieves the match rule attributes into
6814 the search record structures
6815 ************************************************/
6816
6817 PROCEDURE get_party_for_search (
6818 p_party_id IN NUMBER,
6819 x_party_search_rec OUT NOCOPY HZ_PARTY_SEARCH.party_search_rec_type,
6820 x_party_site_list OUT NOCOPY HZ_PARTY_SEARCH.party_site_list,
6821 x_contact_list OUT NOCOPY HZ_PARTY_SEARCH.contact_list,
6822 x_contact_point_list OUT NOCOPY HZ_PARTY_SEARCH.contact_point_list
6823 ) IS
6824 l_party_id NUMBER;
6825 l_party_site_ids HZ_PARTY_SEARCH.IDList;
6826 l_contact_ids HZ_PARTY_SEARCH.IDList;
6827 l_contact_pt_ids HZ_PARTY_SEARCH.IDList;
6828 ps NUMBER :=1;
6829 cpt NUMBER :=1;
6830 ct NUMBER :=1;
6831 l_use_contact_info varchar2(1);
6832 BEGIN
6833
6834 l_use_contact_info := 'Y';
6835 IF nvl(FND_PROFILE.VALUE('HZ_DQM_REL_PARTY_MATCH'),'N')='Y' THEN
6836 l_use_contact_info := 'N';
6837 END IF;
6838 l_party_id := p_party_id;
6839 FOR PARTY_SITES IN (
6840 SELECT party_site_id FROM (
6841 SELECT party_site_id,identifying_address_flag
6842 FROM HZ_PARTY_SITES
6843 WHERE party_id = p_party_id
6844 AND (status is null OR status = 'A')
6845 AND identifying_address_flag='Y'
6846 UNION
6847
6848 SELECT party_site_id,NVL(identifying_address_flag,'N') identifying_address_flag
6849 FROM HZ_PARTY_SITES
6850 WHERE party_id = p_party_id
6851 AND (status is null OR status = 'A')
6852 AND (identifying_address_flag IS NULL OR identifying_address_flag = 'N')
6853 AND ROWNUM<6
6854 UNION
6855
6856 SELECT party_site_id,NVL(identifying_address_flag,'N') identifying_address_flag
6857 FROM HZ_PARTY_SITES
6858 WHERE (status is null OR status = 'A')
6859 AND party_id in (
6860 SELECT party_id
6861 FROM HZ_ORG_CONTACTS, HZ_RELATIONSHIPS
6862 WHERE HZ_RELATIONSHIPS.object_id = p_party_id
6863 AND HZ_RELATIONSHIPS.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
6864 AND HZ_RELATIONSHIPS.OBJECT_TABLE_NAME = 'HZ_PARTIES'
6865 AND HZ_ORG_CONTACTS.party_relationship_id = HZ_RELATIONSHIPS.relationship_id
6866 and l_use_contact_info = 'Y'
6867 )
6868 AND ROWNUM<6
6869 ) order by identifying_address_flag desc
6870 ) LOOP
6871 l_party_site_ids(ps) := PARTY_SITES.party_site_id;
6872 ps:=ps+1;
6873 END LOOP;
6874 FOR CONTACT_POINTS IN (
6875 SELECT CONTACT_POINT_ID
6876 FROM HZ_CONTACT_POINTS
6877 WHERE PRIMARY_FLAG = 'Y'
6878 AND owner_table_name = 'HZ_PARTIES'
6879 AND owner_table_id = p_party_id
6880
6881 UNION
6882
6883 SELECT CONTACT_POINT_ID
6884 FROM HZ_CONTACT_POINTS,HZ_ORG_CONTACTS, HZ_RELATIONSHIPS
6885 WHERE PRIMARY_FLAG = 'Y'
6886 AND owner_table_name = 'HZ_PARTIES'
6887 AND OWNER_TABLE_ID = HZ_RELATIONSHIPS.party_id
6888 AND HZ_RELATIONSHIPS.object_id = p_party_id
6889 AND HZ_RELATIONSHIPS.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
6890 AND HZ_RELATIONSHIPS.OBJECT_TABLE_NAME = 'HZ_PARTIES'
6891 AND HZ_ORG_CONTACTS.party_relationship_id = HZ_RELATIONSHIPS.relationship_id
6892 and l_use_contact_info = 'Y'
6893 AND ROWNUM<6
6894 UNION
6895
6896 SELECT CONTACT_POINT_ID
6897 FROM HZ_CONTACT_POINTS,HZ_PARTY_SITES
6898 WHERE PRIMARY_FLAG = 'Y'
6899 AND owner_table_name = 'HZ_PARTY_SITES'
6900 AND owner_table_id = party_site_id
6901 AND PARTY_ID = p_party_id
6902 AND IDENTIFYING_ADDRESS_FLAG = 'Y') LOOP
6903 l_contact_pt_ids(cpt) := CONTACT_POINTS.CONTACT_POINT_ID;
6904 cpt := cpt+1;
6905 END LOOP;
6906 get_search_criteria(l_party_id,l_party_site_ids,l_contact_ids,l_contact_pt_ids,
6907 x_party_search_rec,x_party_site_list,x_contact_list,x_contact_point_list);
6908 EXCEPTION
6909 WHEN FND_API.G_EXC_ERROR THEN
6910 RAISE FND_API.G_EXC_ERROR;
6911 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6912 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6913 WHEN OTHERS THEN
6914 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6915 FND_MESSAGE.SET_TOKEN('PROC','get_party_for_search');
6916 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
6917 FND_MSG_PUB.ADD;
6918 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6919 END get_party_for_search;
6920
6921 PROCEDURE get_search_criteria (
6922 p_party_id IN NUMBER,
6923 p_party_site_ids IN HZ_PARTY_SEARCH.IDList,
6924 p_contact_ids IN HZ_PARTY_SEARCH.IDList,
6925 p_contact_pt_ids IN HZ_PARTY_SEARCH.IDList,
6926 x_party_search_rec OUT NOCOPY HZ_PARTY_SEARCH.party_search_rec_type,
6927 x_party_site_list OUT NOCOPY HZ_PARTY_SEARCH.party_site_list,
6928 x_contact_list OUT NOCOPY HZ_PARTY_SEARCH.contact_list,
6929 x_contact_point_list OUT NOCOPY HZ_PARTY_SEARCH.contact_point_list
6930 ) IS
6931 BEGIN
6932
6933 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6934 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - get_search_criteria',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6935 END IF;
6936 IF p_party_id IS NOT NULL THEN
6937 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6938 hz_utility_v2pub.debug(p_message=>'Before Calling Procedure - get_party_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6939 END IF;
6940 get_party_rec(p_party_id, x_party_search_rec);
6941 END IF;
6942 IF p_party_site_ids IS NOT NULL AND p_party_site_ids.COUNT>0 THEN
6943 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6944 hz_utility_v2pub.debug(p_message=>'Before Calling Procedure - get_party_site_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6945 END IF;
6946 get_party_site_rec(p_party_site_ids, x_party_site_list);
6947 END IF;
6948 IF p_contact_pt_ids IS NOT NULL AND p_contact_pt_ids.COUNT>0 THEN
6949 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6950 hz_utility_v2pub.debug(p_message=>'Before Calling Procedure - get_contact_point_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6951 END IF;
6952 get_contact_point_rec(p_contact_pt_ids, x_contact_point_list);
6953 END IF;
6954 EXCEPTION
6955 WHEN FND_API.G_EXC_ERROR THEN
6956 RAISE FND_API.G_EXC_ERROR;
6957 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6958 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6959 WHEN OTHERS THEN
6960 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6961 FND_MESSAGE.SET_TOKEN('PROC','get_search_criteria');
6962 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
6963 FND_MSG_PUB.ADD;
6964 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6965 END get_search_criteria;
6966
6967
6968 /************************************************
6969 This procedure retrieves the match rule party attributes into
6970 the party search record structure
6971 ************************************************/
6972
6973 PROCEDURE get_party_rec (
6974 p_party_id IN NUMBER,
6975 x_party_search_rec OUT NOCOPY HZ_PARTY_SEARCH.party_search_rec_type
6976 ) IS
6977 l_party_type VARCHAR2(255);
6978 BEGIN
6979
6980 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6981 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - get_party_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6982 END IF;
6983 SELECT PARTY_TYPE INTO l_party_type
6984 FROM HZ_PARTIES
6985 WHERE PARTY_ID = p_party_id;
6986
6987 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6988 hz_utility_v2pub.debug(p_message=>'l_party_type is - '||l_party_type,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6989 END IF;
6990 IF l_party_type = 'ORGANIZATION' THEN
6991 SELECT
6992 translate(HZ_PARTIES.CATEGORY_CODE, '%',' ')
6993 ,translate(HZ_ORGANIZATION_PROFILES.CORPORATION_CLASS, '%',' ')
6994 ,translate(HZ_PARTIES.PARTY_NUMBER, '%',' ')
6995 ,translate(HZ_PARTIES.PARTY_TYPE, '%',' ')
6996 ,translate(HZ_PARTIES.REFERENCE_USE_FLAG, '%',' ')
6997 ,translate(HZ_ORGANIZATION_PROFILES.SIC_CODE, '%',' ')
6998 ,translate(HZ_ORGANIZATION_PROFILES.SIC_CODE_TYPE, '%',' ')
6999 ,translate(HZ_ORGANIZATION_PROFILES.TAX_NAME, '%',' ')
7000 ,translate(HZ_ORGANIZATION_PROFILES.TAX_REFERENCE, '%',' ')
7001 INTO
7002 x_party_search_rec.CATEGORY_CODE
7003 ,x_party_search_rec.CORPORATION_CLASS
7004 ,x_party_search_rec.PARTY_NUMBER
7005 ,x_party_search_rec.PARTY_TYPE
7006 ,x_party_search_rec.REFERENCE_USE_FLAG
7007 ,x_party_search_rec.SIC_CODE
7008 ,x_party_search_rec.SIC_CODE_TYPE
7009 ,x_party_search_rec.TAX_NAME
7010 ,x_party_search_rec.TAX_REFERENCE
7011 FROM HZ_PARTIES, HZ_ORGANIZATION_PROFILES
7012 WHERE HZ_PARTIES.party_id = HZ_ORGANIZATION_PROFILES.party_id
7013 AND HZ_ORGANIZATION_PROFILES.effective_end_date is NULL
7014 AND HZ_PARTIES.party_id = p_party_id;
7015 ELSIF l_party_type = 'PERSON' THEN
7016 SELECT
7017 translate(HZ_PARTIES.CATEGORY_CODE, '%',' ')
7018 ,translate(HZ_PARTIES.PARTY_NUMBER, '%',' ')
7019 ,translate(HZ_PARTIES.PARTY_TYPE, '%',' ')
7020 ,translate(HZ_PARTIES.REFERENCE_USE_FLAG, '%',' ')
7021 ,translate(HZ_PERSON_PROFILES.TAX_NAME, '%',' ')
7022 ,translate(HZ_PERSON_PROFILES.TAX_REFERENCE, '%',' ')
7023 INTO
7024 x_party_search_rec.CATEGORY_CODE
7025 ,x_party_search_rec.PARTY_NUMBER
7026 ,x_party_search_rec.PARTY_TYPE
7027 ,x_party_search_rec.REFERENCE_USE_FLAG
7028 ,x_party_search_rec.TAX_NAME
7029 ,x_party_search_rec.TAX_REFERENCE
7030 FROM HZ_PARTIES, HZ_PERSON_PROFILES
7031 WHERE HZ_PARTIES.party_id = HZ_PERSON_PROFILES.party_id
7032 AND HZ_PERSON_PROFILES.effective_end_date is NULL
7033 AND HZ_PARTIES.party_id = p_party_id;
7034 END IF;
7035 x_party_search_rec.PARTY_TYPE := l_party_type;
7036 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7037 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - generate_custom_code',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7038 END IF;
7039 x_party_search_rec.ALL_ACCOUNT_NAMES:=
7040 HZ_PARTY_ACQUIRE.get_account_info(p_party_id , 'PARTY','ALL_ACCOUNT_NAMES');
7041 x_party_search_rec.ALL_ACCOUNT_NUMBERS:=
7042 HZ_PARTY_ACQUIRE.get_account_info(p_party_id , 'PARTY','ALL_ACCOUNT_NUMBERS');
7043 x_party_search_rec.PARTY_ALL_NAMES:=
7044 HZ_PARTY_ACQUIRE.get_known_as(p_party_id , 'PARTY','PARTY_ALL_NAMES');
7045
7046 EXCEPTION
7047 WHEN OTHERS THEN
7048 FND_MESSAGE.SET_NAME('AR', 'HZ_PARTY_QUERY_ERROR');
7049 FND_MESSAGE.SET_TOKEN('PROC','get_party_rec');
7050 FND_MESSAGE.SET_TOKEN('PARTY_ID',p_party_id);
7051 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
7052 FND_MSG_PUB.ADD;
7053 RAISE FND_API.G_EXC_ERROR;
7054 END get_party_rec;
7055
7056 /************************************************
7057 This procedure retrieves the match rule party site attributes into
7058 the party site search record structure
7059 ************************************************/
7060
7061 PROCEDURE get_party_site_rec (
7062 p_party_site_ids IN HZ_PARTY_SEARCH.IDList,
7063 x_party_site_list OUT NOCOPY HZ_PARTY_SEARCH.party_site_list
7064 ) IS
7065 CURSOR c_party_sites(cp_party_site_id NUMBER) IS
7066 SELECT party_site_id
7067 ,translate(HZ_LOCATIONS.CITY, '%',' ')
7068 ,translate(HZ_LOCATIONS.COUNTRY, '%',' ')
7069 ,translate(HZ_LOCATIONS.COUNTY, '%',' ')
7070 ,translate(HZ_LOCATIONS.POSTAL_CODE, '%',' ')
7071 ,translate(HZ_LOCATIONS.PROVINCE, '%',' ')
7072 ,translate(HZ_LOCATIONS.STATE, '%',' ')
7073 FROM HZ_PARTY_SITES, HZ_LOCATIONS
7074 WHERE HZ_PARTY_SITES.party_site_id = cp_party_site_id
7075 AND HZ_PARTY_SITES.location_id = HZ_LOCATIONS.location_id;
7076
7077 I NUMBER;
7078 J NUMBER:=1;
7079 l_party_site_id NUMBER;
7080
7081 BEGIN
7082
7083 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7084 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - get_party_site_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7085 END IF;
7086 FOR I IN 1..p_party_site_ids.COUNT LOOP
7087 l_party_site_id := p_party_site_ids(I);
7088 OPEN c_party_sites(p_party_site_ids(I));
7089 LOOP
7090 FETCH c_party_sites INTO
7091 l_party_site_id
7092 ,x_party_site_list(J).CITY
7093 ,x_party_site_list(J).COUNTRY
7094 ,x_party_site_list(J).COUNTY
7095 ,x_party_site_list(J).POSTAL_CODE
7096 ,x_party_site_list(J).PROVINCE
7097 ,x_party_site_list(J).STATE
7098 ;
7099 EXIT WHEN c_party_sites%NOTFOUND;
7100
7101 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7102 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - generate_custom_code',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7103 END IF;
7104 J:=J+1;
7105
7106 END LOOP;
7107 CLOSE c_party_sites;
7108 END LOOP;
7109
7110 EXCEPTION
7111 WHEN OTHERS THEN
7112 FND_MESSAGE.SET_NAME('AR', 'HZ_PARTY_QUERY_ERROR');
7113 FND_MESSAGE.SET_TOKEN('PROC','get_party_site_rec');
7114 FND_MESSAGE.SET_TOKEN('PARTY_ID',l_party_site_id);
7115 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
7116 FND_MSG_PUB.ADD;
7117 RAISE FND_API.G_EXC_ERROR;
7118 END get_party_site_rec;
7119
7120 /************************************************
7121 This procedure retrieves the match rule contact attributes into
7122 the contact search record structure
7123 ************************************************/
7124
7125 PROCEDURE get_contact_rec (
7126 p_contact_ids IN HZ_PARTY_SEARCH.IDList,
7127 x_contact_list OUT NOCOPY HZ_PARTY_SEARCH.contact_list
7128 ) IS
7129 CURSOR c_contacts(cp_org_contact_id NUMBER) IS
7130 SELECT org_contact_id
7131 FROM HZ_ORG_CONTACTS, HZ_RELATIONSHIPS, HZ_PERSON_PROFILES
7132 WHERE HZ_ORG_CONTACTS.org_contact_id = cp_org_contact_id
7133 AND HZ_RELATIONSHIPS.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
7134 AND HZ_RELATIONSHIPS.OBJECT_TABLE_NAME = 'HZ_PARTIES'
7135 AND HZ_RELATIONSHIPS.DIRECTIONAL_FLAG = 'F'
7136 AND HZ_ORG_CONTACTS.party_relationship_id = HZ_RELATIONSHIPS.relationship_id
7137 AND HZ_RELATIONSHIPS.subject_id = HZ_PERSON_PROFILES.party_id
7138 AND HZ_PERSON_PROFILES.effective_end_date IS NULL;
7139
7140 I NUMBER;
7141 l_org_contact_id NUMBER;
7142 J NUMBER:=1;
7143 BEGIN
7144
7145 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7146 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - get_contact_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7147 END IF;
7148 FOR I IN 1..p_contact_ids.COUNT LOOP
7149 l_org_contact_id := p_contact_ids(I);
7150 OPEN c_contacts(p_contact_ids(I));
7151 LOOP
7152 FETCH c_contacts INTO
7153 l_org_contact_id
7154 ;
7155 EXIT WHEN c_contacts%NOTFOUND;
7156
7157 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7158 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - generate_custom_code',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7159 END IF;
7160
7161 J:=J+1;
7162 END LOOP;
7163 CLOSE c_contacts;
7164 END LOOP;
7165
7166 EXCEPTION
7167 WHEN OTHERS THEN
7168 FND_MESSAGE.SET_NAME('AR', 'HZ_PARTY_QUERY_ERROR');
7169 FND_MESSAGE.SET_TOKEN('PROC','get_contact_rec');
7170 FND_MESSAGE.SET_TOKEN('PARTY_ID',l_org_contact_id);
7171 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
7172 FND_MSG_PUB.ADD;
7173 RAISE FND_API.G_EXC_ERROR;
7174 END get_contact_rec;
7175
7176 /************************************************
7177 This procedure retrieves the match rule contact point attributes into
7178 the contact point search record structure
7179 ************************************************/
7180
7181 PROCEDURE get_contact_point_rec (
7182 p_contact_point_ids IN HZ_PARTY_SEARCH.IDList,
7183 x_contact_point_list OUT NOCOPY HZ_PARTY_SEARCH.contact_point_list
7184 ) IS
7185
7186 -- Cursor to fetch primary contact points for party
7187 CURSOR c_cpts(cp_contact_point_id NUMBER) IS
7188 SELECT contact_point_id, contact_point_type
7189 ,translate(HZ_CONTACT_POINTS.PHONE_AREA_CODE, '%',' ')
7190 ,translate(HZ_CONTACT_POINTS.PHONE_COUNTRY_CODE, '%',' ')
7191 FROM HZ_CONTACT_POINTS
7192 WHERE contact_point_id = cp_contact_point_id;
7193
7194 I NUMBER;
7195 l_contact_point_id NUMBER;
7196 J NUMBER:=1;
7197 BEGIN
7198
7199 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7200 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - get_contact_point_rec',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7201 END IF;
7202 FOR I in 1..p_contact_point_ids.COUNT LOOP
7203 l_contact_point_id := p_contact_point_ids(I);
7204 OPEN c_cpts(p_contact_point_ids(I));
7205 LOOP
7206 FETCH c_cpts INTO
7207 l_contact_point_id, x_contact_point_list(J).contact_point_type
7208 ,x_contact_point_list(J).PHONE_AREA_CODE
7209 ,x_contact_point_list(J).PHONE_COUNTRY_CODE
7210 ;
7211 EXIT WHEN c_cpts%NOTFOUND;
7212
7213 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7214 hz_utility_v2pub.debug(p_message=>'Inside calling procedure - generate_custom_code',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7215 END IF;
7216 x_contact_point_list(J).FLEX_FORMAT_PHONE_NUMBER:=
7217 HZ_PARTY_ACQUIRE.get_phone_number(l_contact_point_id , 'CONTACT_POINTS','FLEX_FORMAT_PHONE_NUMBER');
7218 J:=J+1;
7219
7220 END LOOP;
7221 CLOSE c_cpts;
7222 END LOOP;
7223
7224 EXCEPTION
7225 WHEN OTHERS THEN
7226 FND_MESSAGE.SET_NAME('AR', 'HZ_PARTY_QUERY_ERROR');
7227 FND_MESSAGE.SET_TOKEN('PROC','get_contact_point_rec');
7228 FND_MESSAGE.SET_TOKEN('PARTY_ID',l_contact_point_id);
7229 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
7230 FND_MSG_PUB.ADD;
7231 RAISE FND_API.G_EXC_ERROR;
7232 END get_contact_point_rec;
7233
7234 /************************************************
7235 This procedure maps a search record from the logical
7236 record structure to the stage schema structure
7237 for the PARTY Entity after applying
7238 the defined transformations
7239 ************************************************/
7240
7241 PROCEDURE MAP_PARTY_REC(
7242 p_search_ctx IN BOOLEAN,
7243 p_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
7244 x_entered_max_score OUT NUMBER,
7245 x_stage_rec IN OUT NOCOPY HZ_PARTY_STAGE.party_stage_rec_type
7246 ) IS
7247 tmp VARCHAR2(4000);
7248 l_party_name VARCHAR2(4000);
7249 BEGIN
7250 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7251 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - MAP_PARTY_REC',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7252 END IF;
7253 IF p_search_ctx THEN
7254 x_stage_rec.TX8 := NULL;
7255 g_other_party_level_attribs:=FALSE;
7256 IF p_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL
7257 OR p_search_rec.PARTY_NUMBER IS NOT NULL
7258 OR p_search_rec.ALL_ACCOUNT_NUMBERS IS NOT NULL
7259 OR p_search_rec.TAX_NAME IS NOT NULL
7260 OR p_search_rec.TAX_REFERENCE IS NOT NULL
7261 OR p_search_rec.SIC_CODE IS NOT NULL
7262 OR p_search_rec.SIC_CODE_TYPE IS NOT NULL
7263 OR p_search_rec.CATEGORY_CODE IS NOT NULL
7264 OR p_search_rec.REFERENCE_USE_FLAG IS NOT NULL
7265 OR p_search_rec.CORPORATION_CLASS IS NOT NULL
7266 THEN
7267 g_other_party_level_attribs:=TRUE;
7268 END IF;
7269 x_entered_max_score:=0;
7270 IF p_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL THEN
7271 x_entered_max_score := x_entered_max_score+60;
7272 END IF;
7273 IF p_search_rec.PARTY_NUMBER IS NOT NULL THEN
7274 x_entered_max_score := x_entered_max_score+100;
7275 END IF;
7276 IF p_search_rec.ALL_ACCOUNT_NUMBERS IS NOT NULL THEN
7277 x_entered_max_score := x_entered_max_score+100;
7278 END IF;
7279 IF p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7280 x_entered_max_score := x_entered_max_score+60;
7281 END IF;
7282 IF p_search_rec.TAX_NAME IS NOT NULL THEN
7283 x_entered_max_score := x_entered_max_score+30;
7284 END IF;
7285 IF p_search_rec.TAX_REFERENCE IS NOT NULL THEN
7286 x_entered_max_score := x_entered_max_score+80;
7287 END IF;
7288 IF p_search_rec.SIC_CODE IS NOT NULL THEN
7289 x_entered_max_score := x_entered_max_score+30;
7290 END IF;
7291 IF p_search_rec.SIC_CODE_TYPE IS NOT NULL THEN
7292 x_entered_max_score := x_entered_max_score+10;
7293 END IF;
7294 IF p_search_rec.CATEGORY_CODE IS NOT NULL THEN
7295 x_entered_max_score := x_entered_max_score+10;
7296 END IF;
7297 IF p_search_rec.REFERENCE_USE_FLAG IS NOT NULL THEN
7298 x_entered_max_score := x_entered_max_score+20;
7299 END IF;
7300 IF p_search_rec.CORPORATION_CLASS IS NOT NULL THEN
7301 x_entered_max_score := x_entered_max_score+30;
7302 END IF;
7303 END IF;
7304 IF p_search_ctx THEN
7305 IF p_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL THEN
7306 x_stage_rec.TX33 :=
7307 HZ_TRANS_PKG.WRNAMES_CLEANSE(
7308 p_search_rec.ALL_ACCOUNT_NAMES
7309 ,null,'ALL_ACCOUNT_NAMES'
7310 ,'PARTY','SEARCH');
7311 ELSE
7312 x_stage_rec.TX33 := '';
7313 END IF;
7314 ELSE
7315 IF p_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL THEN
7316 tmp :=HZ_TRANS_PKG.WRNAMES_CLEANSE(
7317 x_stage_rec.TX33
7318 ,null,'ALL_ACCOUNT_NAMES'
7319 ,'PARTY','SCORE');
7320 IF tmp IS NOT NULL THEN
7321 x_stage_rec.TX33 := tmp;
7322 END IF;
7323 END IF;
7324 END IF;
7325 IF p_search_ctx THEN
7326 IF p_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL THEN
7327 x_stage_rec.TX32 :=
7328 HZ_TRANS_PKG.WRNAMES_EXACT(
7329 p_search_rec.ALL_ACCOUNT_NAMES
7330 ,null,'ALL_ACCOUNT_NAMES'
7331 ,'PARTY','SEARCH');
7332 ELSE
7333 x_stage_rec.TX32 := '';
7334 END IF;
7335 ELSE
7336 IF p_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL THEN
7337 tmp :=HZ_TRANS_PKG.WRNAMES_EXACT(
7338 x_stage_rec.TX32
7339 ,null,'ALL_ACCOUNT_NAMES'
7340 ,'PARTY','SCORE');
7341 IF tmp IS NOT NULL THEN
7342 x_stage_rec.TX32 := tmp;
7343 END IF;
7344 END IF;
7345 END IF;
7346 IF p_search_ctx THEN
7347 IF p_search_rec.ALL_ACCOUNT_NUMBERS IS NOT NULL THEN
7348 x_stage_rec.TX35 :=
7349 HZ_TRANS_PKG.RM_SPLCHAR(
7350 p_search_rec.ALL_ACCOUNT_NUMBERS
7351 ,null,'ALL_ACCOUNT_NUMBERS'
7352 ,'PARTY','SEARCH');
7353 ELSE
7354 x_stage_rec.TX35 := '';
7355 END IF;
7356 ELSE
7357 IF p_search_rec.ALL_ACCOUNT_NUMBERS IS NOT NULL THEN
7358 tmp :=HZ_TRANS_PKG.RM_SPLCHAR(
7359 x_stage_rec.TX35
7360 ,null,'ALL_ACCOUNT_NUMBERS'
7361 ,'PARTY','SCORE');
7362 IF tmp IS NOT NULL THEN
7363 x_stage_rec.TX35 := tmp;
7364 END IF;
7365 END IF;
7366 END IF;
7367 IF p_search_ctx THEN
7368 IF p_search_rec.CATEGORY_CODE IS NOT NULL THEN
7369 x_stage_rec.TX48 :=
7370 HZ_TRANS_PKG.EXACT(
7371 p_search_rec.CATEGORY_CODE
7372 ,null,'CATEGORY_CODE'
7373 ,'PARTY');
7374 ELSE
7375 x_stage_rec.TX48 := '';
7376 END IF;
7377 END IF;
7378 IF p_search_ctx THEN
7379 IF p_search_rec.CORPORATION_CLASS IS NOT NULL THEN
7380 x_stage_rec.TX157 :=
7381 HZ_TRANS_PKG.EXACT(
7382 p_search_rec.CORPORATION_CLASS
7383 ,null,'CORPORATION_CLASS'
7384 ,'PARTY');
7385 ELSE
7386 x_stage_rec.TX157 := '';
7387 END IF;
7388 END IF;
7389 IF p_search_ctx THEN
7390 IF p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7391 x_stage_rec.TX158 :=
7392 HZ_TRANS_PKG.SOUNDX(
7393 p_search_rec.PARTY_ALL_NAMES
7394 ,null,'PARTY_ALL_NAMES'
7395 ,'PARTY');
7396 ELSE
7397 x_stage_rec.TX158 := '';
7398 END IF;
7399 END IF;
7400 IF p_search_ctx THEN
7401 IF p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7402 x_stage_rec.TX40 :=
7403 HZ_TRANS_PKG.WRNAMES_CLEANSE(
7404 p_search_rec.PARTY_ALL_NAMES
7405 ,null,'PARTY_ALL_NAMES'
7406 ,'PARTY','SEARCH');
7407 ELSE
7408 x_stage_rec.TX40 := '';
7409 END IF;
7410 ELSE
7411 IF p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7412 tmp :=HZ_TRANS_PKG.WRNAMES_CLEANSE(
7413 x_stage_rec.TX40
7414 ,null,'PARTY_ALL_NAMES'
7415 ,'PARTY','SCORE');
7416 IF tmp IS NOT NULL THEN
7417 x_stage_rec.TX40 := tmp;
7418 END IF;
7419 END IF;
7420 END IF;
7421 IF p_search_ctx THEN
7422 IF p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7423 x_stage_rec.TX39 :=
7424 HZ_TRANS_PKG.WRNAMES_EXACT(
7425 p_search_rec.PARTY_ALL_NAMES
7426 ,null,'PARTY_ALL_NAMES'
7427 ,'PARTY','SEARCH');
7428 ELSE
7429 x_stage_rec.TX39 := '';
7430 END IF;
7431 ELSE
7432 IF p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7433 tmp :=HZ_TRANS_PKG.WRNAMES_EXACT(
7434 x_stage_rec.TX39
7435 ,null,'PARTY_ALL_NAMES'
7436 ,'PARTY','SCORE');
7437 IF tmp IS NOT NULL THEN
7438 x_stage_rec.TX39 := tmp;
7439 END IF;
7440 END IF;
7441 END IF;
7442 IF p_search_ctx THEN
7443 IF p_search_rec.PARTY_NUMBER IS NOT NULL THEN
7444 x_stage_rec.TX34 :=
7445 HZ_TRANS_PKG.RM_SPLCHAR(
7446 p_search_rec.PARTY_NUMBER
7447 ,null,'PARTY_NUMBER'
7448 ,'PARTY','SEARCH');
7449 ELSE
7450 x_stage_rec.TX34 := '';
7451 END IF;
7452 ELSE
7453 IF p_search_rec.PARTY_NUMBER IS NOT NULL THEN
7454 tmp :=HZ_TRANS_PKG.RM_SPLCHAR(
7455 x_stage_rec.TX34
7456 ,null,'PARTY_NUMBER'
7457 ,'PARTY','SCORE');
7458 IF tmp IS NOT NULL THEN
7459 x_stage_rec.TX34 := tmp;
7460 END IF;
7461 END IF;
7462 END IF;
7463 IF p_search_rec.PARTY_TYPE IS NOT NULL THEN
7464 x_stage_rec.TX36 :=
7465 HZ_TRANS_PKG.EXACT(
7466 p_search_rec.PARTY_TYPE
7467 ,null,'PARTY_TYPE'
7468 ,'PARTY');
7469 ELSE
7470 x_stage_rec.TX36 := '';
7471 END IF;
7472 IF p_search_ctx THEN
7473 IF p_search_rec.REFERENCE_USE_FLAG IS NOT NULL THEN
7474 x_stage_rec.TX156 :=
7475 HZ_TRANS_PKG.EXACT(
7476 p_search_rec.REFERENCE_USE_FLAG
7477 ,null,'REFERENCE_USE_FLAG'
7478 ,'PARTY');
7479 ELSE
7480 x_stage_rec.TX156 := '';
7481 END IF;
7482 END IF;
7483 IF p_search_ctx THEN
7484 IF p_search_rec.SIC_CODE IS NOT NULL THEN
7485 x_stage_rec.TX46 :=
7486 HZ_TRANS_PKG.EXACT(
7487 p_search_rec.SIC_CODE
7488 ,null,'SIC_CODE'
7489 ,'PARTY');
7490 ELSE
7491 x_stage_rec.TX46 := '';
7492 END IF;
7493 END IF;
7494 IF p_search_ctx THEN
7495 IF p_search_rec.SIC_CODE_TYPE IS NOT NULL THEN
7496 x_stage_rec.TX47 :=
7497 HZ_TRANS_PKG.EXACT(
7498 p_search_rec.SIC_CODE_TYPE
7499 ,null,'SIC_CODE_TYPE'
7500 ,'PARTY');
7501 ELSE
7502 x_stage_rec.TX47 := '';
7503 END IF;
7504 END IF;
7505 IF p_search_ctx THEN
7506 IF p_search_rec.TAX_NAME IS NOT NULL THEN
7507 x_stage_rec.TX43 :=
7508 HZ_TRANS_PKG.CLEANSE(
7509 p_search_rec.TAX_NAME
7510 ,null,'TAX_NAME'
7511 ,'PARTY');
7512 ELSE
7513 x_stage_rec.TX43 := '';
7514 END IF;
7515 END IF;
7516 IF p_search_ctx THEN
7517 IF p_search_rec.TAX_NAME IS NOT NULL THEN
7518 x_stage_rec.TX42 :=
7519 HZ_TRANS_PKG.EXACT(
7520 p_search_rec.TAX_NAME
7521 ,null,'TAX_NAME'
7522 ,'PARTY');
7523 ELSE
7524 x_stage_rec.TX42 := '';
7525 END IF;
7526 END IF;
7527 IF p_search_ctx THEN
7528 IF p_search_rec.TAX_REFERENCE IS NOT NULL THEN
7529 x_stage_rec.TX44 :=
7530 HZ_TRANS_PKG.RM_SPLCHAR(
7531 p_search_rec.TAX_REFERENCE
7532 ,null,'TAX_REFERENCE'
7533 ,'PARTY','SEARCH');
7534 ELSE
7535 x_stage_rec.TX44 := '';
7536 END IF;
7537 ELSE
7538 IF p_search_rec.TAX_REFERENCE IS NOT NULL THEN
7539 tmp :=HZ_TRANS_PKG.RM_SPLCHAR(
7540 x_stage_rec.TX44
7541 ,null,'TAX_REFERENCE'
7542 ,'PARTY','SCORE');
7543 IF tmp IS NOT NULL THEN
7544 x_stage_rec.TX44 := tmp;
7545 END IF;
7546 END IF;
7547 END IF;
7548 l_party_name := p_search_rec.PARTY_NAME;
7549 IF l_party_name IS NULL AND p_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7550 l_party_name := p_search_rec.PARTY_ALL_NAMES;
7551 END IF;
7552 IF l_party_name IS NOT NULL AND x_stage_rec.TX8 IS NULL THEN
7553 x_stage_rec.TX8 := HZ_TRANS_PKG.WRNAMES_EXACT(l_party_name,null,'PARTY_NAME','PARTY','SEARCH');
7554 END IF;
7555 EXCEPTION
7556 WHEN OTHERS THEN
7557 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
7558 FND_MESSAGE.SET_TOKEN('PROC' , 'MAP_PARTY_REC');
7559 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
7560 FND_MSG_PUB.ADD;
7561 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7562 END;
7563
7564
7565 /************************************************
7566 This procedure maps a search record from the logical
7567 record structure to the stage schema structure
7568 for the PARTY_SITES Entity after applying
7569 the defined transformations
7570 ************************************************/
7571
7572 PROCEDURE MAP_PARTY_SITE_REC(
7573 p_search_ctx IN BOOLEAN,
7574 p_search_list IN HZ_PARTY_SEARCH.party_site_list,
7575 x_entered_max_score OUT NUMBER,
7576 x_stage_list IN OUT NOCOPY HZ_PARTY_STAGE.party_site_stage_list
7577 ) IS
7578 l_current_max_score NUMBER;
7579 tmp VARCHAR2(4000);
7580 BEGIN
7581 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7582 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - MAP_PARTY_SITE_REC',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7583 END IF;
7584 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7585 hz_utility_v2pub.debug(p_message=>'p_entity - PARTY_SITES',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7586 END IF;
7587 IF p_search_ctx THEN
7588 g_ps_den_only:=TRUE;
7589 x_entered_max_score:=0;
7590 FOR I IN 1..p_search_list.COUNT LOOP
7591 l_current_max_score:=0;
7592 IF p_search_list(I).CITY IS NOT NULL THEN
7593 l_current_max_score := l_current_max_score+30;
7594 END IF;
7595 IF p_search_list(I).POSTAL_CODE IS NOT NULL THEN
7596 l_current_max_score := l_current_max_score+35;
7597 END IF;
7598 IF p_search_list(I).PROVINCE IS NOT NULL THEN
7599 l_current_max_score := l_current_max_score+20;
7600 END IF;
7601 IF p_search_list(I).STATE IS NOT NULL THEN
7602 l_current_max_score := l_current_max_score+20;
7603 END IF;
7604 IF p_search_list(I).COUNTY IS NOT NULL THEN
7605 l_current_max_score := l_current_max_score+20;
7606 END IF;
7607 IF p_search_list(I).COUNTRY IS NOT NULL THEN
7608 l_current_max_score := l_current_max_score+30;
7609 END IF;
7610 IF l_current_max_score>x_entered_max_score THEN
7611 x_entered_max_score:=l_current_max_score;
7612 END IF;
7613 END LOOP;
7614 END IF;
7615 FOR I IN 1..p_search_list.COUNT LOOP
7616 IF p_search_ctx THEN
7617 IF p_search_list(I).CITY IS NOT NULL THEN
7618 x_stage_list(I).TX10 :=
7619 HZ_TRANS_PKG.CLEANSE(
7620 p_search_list(I).CITY
7621 ,null,'CITY'
7622 ,'PARTY_SITES');
7623 ELSE
7624 x_stage_list(I).TX10 := '';
7625 END IF;
7626 END IF;
7627 END LOOP;
7628 FOR I IN 1..p_search_list.COUNT LOOP
7629 IF p_search_ctx THEN
7630 IF p_search_list(I).CITY IS NOT NULL THEN
7631 x_stage_list(I).TX9 :=
7632 HZ_TRANS_PKG.EXACT(
7633 p_search_list(I).CITY
7634 ,null,'CITY'
7635 ,'PARTY_SITES');
7636 ELSE
7637 x_stage_list(I).TX9 := '';
7638 END IF;
7639 END IF;
7640 END LOOP;
7641 FOR I IN 1..p_search_list.COUNT LOOP
7642 IF p_search_ctx THEN
7643 IF p_search_list(I).COUNTRY IS NOT NULL THEN
7644 x_stage_list(I).TX22 :=
7645 HZ_TRANS_PKG.EXACT(
7646 p_search_list(I).COUNTRY
7647 ,null,'COUNTRY'
7648 ,'PARTY_SITES');
7649 ELSE
7650 x_stage_list(I).TX22 := '';
7651 END IF;
7652 END IF;
7653 END LOOP;
7654 FOR I IN 1..p_search_list.COUNT LOOP
7655 IF p_search_ctx THEN
7656 IF p_search_list(I).COUNTY IS NOT NULL THEN
7657 x_stage_list(I).TX21 :=
7658 HZ_TRANS_PKG.CLEANSE(
7659 p_search_list(I).COUNTY
7660 ,null,'COUNTY'
7661 ,'PARTY_SITES');
7662 ELSE
7663 x_stage_list(I).TX21 := '';
7664 END IF;
7665 END IF;
7666 END LOOP;
7667 FOR I IN 1..p_search_list.COUNT LOOP
7668 IF p_search_ctx THEN
7669 IF p_search_list(I).COUNTY IS NOT NULL THEN
7670 x_stage_list(I).TX20 :=
7671 HZ_TRANS_PKG.EXACT(
7672 p_search_list(I).COUNTY
7673 ,null,'COUNTY'
7674 ,'PARTY_SITES');
7675 ELSE
7676 x_stage_list(I).TX20 := '';
7677 END IF;
7678 END IF;
7679 END LOOP;
7680 FOR I IN 1..p_search_list.COUNT LOOP
7681 IF p_search_ctx THEN
7682 IF p_search_list(I).POSTAL_CODE IS NOT NULL THEN
7683 x_stage_list(I).TX11 :=
7684 HZ_TRANS_PKG.RM_SPLCHAR(
7685 p_search_list(I).POSTAL_CODE
7686 ,null,'POSTAL_CODE'
7687 ,'PARTY_SITES','SEARCH');
7688 ELSE
7689 x_stage_list(I).TX11 := '';
7690 END IF;
7691 ELSE
7692 IF p_search_list(I).POSTAL_CODE IS NOT NULL THEN
7693 tmp := HZ_TRANS_PKG.RM_SPLCHAR(
7694 x_stage_list(I).TX11
7695 ,null,'POSTAL_CODE'
7696 ,'PARTY_SITES','SCORE');
7697 IF tmp IS NOT NULL THEN
7698 x_stage_list(I).TX11 := tmp;
7699 END IF;
7700 END IF;
7701 END IF;
7702 END LOOP;
7703 FOR I IN 1..p_search_list.COUNT LOOP
7704 IF p_search_ctx THEN
7705 IF p_search_list(I).PROVINCE IS NOT NULL THEN
7706 x_stage_list(I).TX13 :=
7707 HZ_TRANS_PKG.CLEANSE(
7708 p_search_list(I).PROVINCE
7709 ,null,'PROVINCE'
7710 ,'PARTY_SITES');
7711 ELSE
7712 x_stage_list(I).TX13 := '';
7713 END IF;
7714 END IF;
7715 END LOOP;
7716 FOR I IN 1..p_search_list.COUNT LOOP
7717 IF p_search_ctx THEN
7718 IF p_search_list(I).STATE IS NOT NULL THEN
7719 x_stage_list(I).TX15 :=
7720 HZ_TRANS_PKG.WRSTATE_CLEANSE(
7721 p_search_list(I).STATE
7722 ,null,'STATE'
7723 ,'PARTY_SITES','SEARCH');
7724 ELSE
7725 x_stage_list(I).TX15 := '';
7726 END IF;
7727 ELSE
7728 IF p_search_list(I).STATE IS NOT NULL THEN
7729 tmp := HZ_TRANS_PKG.WRSTATE_CLEANSE(
7730 x_stage_list(I).TX15
7731 ,null,'STATE'
7732 ,'PARTY_SITES','SCORE');
7733 IF tmp IS NOT NULL THEN
7734 x_stage_list(I).TX15 := tmp;
7735 END IF;
7736 END IF;
7737 END IF;
7738 END LOOP;
7739 FOR I IN 1..p_search_list.COUNT LOOP
7740 IF p_search_ctx THEN
7741 IF p_search_list(I).STATE IS NOT NULL THEN
7742 x_stage_list(I).TX14 :=
7743 HZ_TRANS_PKG.WRSTATE_EXACT(
7744 p_search_list(I).STATE
7745 ,null,'STATE'
7746 ,'PARTY_SITES','SEARCH');
7747 ELSE
7748 x_stage_list(I).TX14 := '';
7749 END IF;
7750 ELSE
7751 IF p_search_list(I).STATE IS NOT NULL THEN
7752 tmp := HZ_TRANS_PKG.WRSTATE_EXACT(
7753 x_stage_list(I).TX14
7754 ,null,'STATE'
7755 ,'PARTY_SITES','SCORE');
7756 IF tmp IS NOT NULL THEN
7757 x_stage_list(I).TX14 := tmp;
7758 END IF;
7759 END IF;
7760 END IF;
7761 END LOOP;
7762 EXCEPTION
7763 WHEN OTHERS THEN
7764 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
7765 FND_MESSAGE.SET_TOKEN('PROC' , 'MAP_PARTY_SITE_REC');
7766 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
7767 FND_MSG_PUB.ADD;
7768 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7769 END;
7770
7771
7772 /************************************************
7773 This procedure maps a search record from the logical
7774 record structure to the stage schema structure
7775 for the CONTACTS Entity after applying
7776 the defined transformations
7777 ************************************************/
7778
7779 PROCEDURE MAP_CONTACT_REC(
7780 p_search_ctx IN BOOLEAN,
7781 p_search_list IN HZ_PARTY_SEARCH.contact_list,
7782 x_entered_max_score OUT NUMBER,
7783 x_stage_list IN OUT NOCOPY HZ_PARTY_STAGE.contact_stage_list
7784 ) IS
7785 l_current_max_score NUMBER;
7786 tmp VARCHAR2(4000);
7787 BEGIN
7788 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7789 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - MAP_CONTACT_REC',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7790 END IF;
7791 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7792 hz_utility_v2pub.debug(p_message=>'p_entity - CONTACTS',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7793 END IF;
7794 IF p_search_ctx THEN
7795 x_entered_max_score:=0;
7796 FOR I IN 1..p_search_list.COUNT LOOP
7797 l_current_max_score:=0;
7798 IF l_current_max_score>x_entered_max_score THEN
7799 x_entered_max_score:=l_current_max_score;
7800 END IF;
7801 END LOOP;
7802 END IF;
7803 NULL;
7804 EXCEPTION
7805 WHEN OTHERS THEN
7806 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
7807 FND_MESSAGE.SET_TOKEN('PROC' , 'MAP_CONTACT_REC');
7808 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
7809 FND_MSG_PUB.ADD;
7810 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7811 END;
7812
7813
7814 /************************************************
7815 This procedure maps a search record from the logical
7816 record structure to the stage schema structure
7817 for the CONTACT_POINTS Entity after applying
7818 the defined transformations
7819 ************************************************/
7820
7821 PROCEDURE MAP_CONTACT_POINT_REC(
7822 p_search_ctx IN BOOLEAN,
7823 p_search_list IN HZ_PARTY_SEARCH.contact_point_list,
7824 x_entered_max_score OUT NUMBER,
7825 x_stage_list IN OUT NOCOPY HZ_PARTY_STAGE.contact_pt_stage_list
7826 ) IS
7827 l_current_max_score NUMBER;
7828 tmp VARCHAR2(4000);
7829 TYPE INDEX_VARCHAR100_TBL IS TABLE OF NUMBER INDEX BY VARCHAR2(100);
7830 l_cnt_pt_type_index INDEX_VARCHAR100_TBL;
7831 TYPE CONTACT_PT_REC_TYPE IS RECORD (
7832 contact_pt_type VARCHAR2(100),
7833 max_score NUMBER) ;
7834 TYPE contact_pt_list IS TABLE of CONTACT_PT_REC_TYPE INDEX BY BINARY_INTEGER;
7835 l_cnt_pt_type contact_pt_list;
7836 N NUMBER := 1;
7837 x_modify VARCHAR2(1);
7838 BEGIN
7839 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7840 hz_utility_v2pub.debug(p_message=>'Inside Calling Procedure - MAP_CONTACT_POINT_REC',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7841 END IF;
7842 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
7843 hz_utility_v2pub.debug(p_message=>'p_entity - CONTACT_POINTS',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
7844 END IF;
7845 IF p_search_ctx THEN
7846 x_entered_max_score:=0;
7847 FOR I IN 1..p_search_list.COUNT LOOP
7848 l_current_max_score:=0;
7849 x_stage_list(I).CONTACT_POINT_TYPE := p_search_list(I).CONTACT_POINT_TYPE;
7850 IF p_search_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL THEN
7851 l_current_max_score := l_current_max_score+80;
7852 END IF;
7853 IF p_search_list(I).PHONE_AREA_CODE IS NOT NULL THEN
7854 l_current_max_score := l_current_max_score+30;
7855 END IF;
7856 IF p_search_list(I).PHONE_COUNTRY_CODE IS NOT NULL THEN
7857 l_current_max_score := l_current_max_score+10;
7858 END IF;
7859 x_modify := 'N';
7860 FOR J IN 1..l_cnt_pt_type.count LOOP
7861 if (l_cnt_pt_type(J).contact_pt_type = x_stage_list(I).CONTACT_POINT_TYPE) then
7862 x_modify := 'Y';
7863 IF l_cnt_pt_type(J).max_score<l_current_max_score THEN
7864 l_cnt_pt_type(J).max_score :=l_current_max_score;
7865 EXIT;
7866 END IF;
7867 end if;
7868 END LOOP;
7869 if x_modify='N' then
7870 l_cnt_pt_type(N).contact_pt_type := x_stage_list(I).CONTACT_POINT_TYPE;
7871 l_cnt_pt_type(N).max_score := l_current_max_score;
7872 N:= N+1;
7873 end if;
7874 END LOOP;
7875 FOR M IN 1..l_cnt_pt_type.count LOOP
7876 x_entered_max_score := x_entered_max_score+l_cnt_pt_type(M).max_score;
7877 END LOOP;
7878 END IF;
7879 FOR I IN 1..p_search_list.COUNT LOOP
7880 IF p_search_ctx THEN
7881 IF p_search_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL THEN
7882 x_stage_list(I).TX1 :=
7883 HZ_TRANS_PKG.RM_SPLCHAR_CTX(
7884 p_search_list(I).FLEX_FORMAT_PHONE_NUMBER
7885 ,null,'FLEX_FORMAT_PHONE_NUMBER'
7886 ,'CONTACT_POINTS','SEARCH');
7887 ELSE
7888 x_stage_list(I).TX1 := '';
7889 END IF;
7890 ELSE
7891 IF p_search_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL THEN
7892 tmp := HZ_TRANS_PKG.RM_SPLCHAR_CTX(
7893 x_stage_list(I).TX1
7894 ,null,'FLEX_FORMAT_PHONE_NUMBER'
7895 ,'CONTACT_POINTS','SCORE');
7896 IF tmp IS NOT NULL THEN
7897 x_stage_list(I).TX1 := tmp;
7898 END IF;
7899 END IF;
7900 END IF;
7901 END LOOP;
7902 FOR I IN 1..p_search_list.COUNT LOOP
7903 IF p_search_ctx THEN
7904 IF p_search_list(I).PHONE_AREA_CODE IS NOT NULL THEN
7905 x_stage_list(I).TX3 :=
7906 HZ_TRANS_PKG.RM_SPLCHAR(
7907 p_search_list(I).PHONE_AREA_CODE
7908 ,null,'PHONE_AREA_CODE'
7909 ,'CONTACT_POINTS','SEARCH');
7910 ELSE
7911 x_stage_list(I).TX3 := '';
7912 END IF;
7913 ELSE
7914 IF p_search_list(I).PHONE_AREA_CODE IS NOT NULL THEN
7915 tmp := HZ_TRANS_PKG.RM_SPLCHAR(
7916 x_stage_list(I).TX3
7917 ,null,'PHONE_AREA_CODE'
7918 ,'CONTACT_POINTS','SCORE');
7919 IF tmp IS NOT NULL THEN
7920 x_stage_list(I).TX3 := tmp;
7921 END IF;
7922 END IF;
7923 END IF;
7924 END LOOP;
7925 FOR I IN 1..p_search_list.COUNT LOOP
7926 IF p_search_ctx THEN
7927 IF p_search_list(I).PHONE_COUNTRY_CODE IS NOT NULL THEN
7928 x_stage_list(I).TX4 :=
7929 HZ_TRANS_PKG.RM_SPLCHAR(
7930 p_search_list(I).PHONE_COUNTRY_CODE
7931 ,null,'PHONE_COUNTRY_CODE'
7932 ,'CONTACT_POINTS','SEARCH');
7933 ELSE
7934 x_stage_list(I).TX4 := '';
7935 END IF;
7936 ELSE
7937 IF p_search_list(I).PHONE_COUNTRY_CODE IS NOT NULL THEN
7938 tmp := HZ_TRANS_PKG.RM_SPLCHAR(
7939 x_stage_list(I).TX4
7940 ,null,'PHONE_COUNTRY_CODE'
7941 ,'CONTACT_POINTS','SCORE');
7942 IF tmp IS NOT NULL THEN
7943 x_stage_list(I).TX4 := tmp;
7944 END IF;
7945 END IF;
7946 END IF;
7947 END LOOP;
7948 EXCEPTION
7949 WHEN OTHERS THEN
7950 FND_MESSAGE.SET_NAME('AR', 'HZ_TRANSFORM_PROC_ERROR');
7951 FND_MESSAGE.SET_TOKEN('PROC' , 'MAP_CONTACT_POINT_REC');
7952 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
7953 FND_MSG_PUB.ADD;
7954 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7955 END;
7956
7957
7958 /************************************************
7959 This procedure checks if the input search criteria
7960 is valid. It checks if :
7961 1. At least one primary condition is passed
7962 2. Contact Point Type is not null for each condition
7963 ************************************************/
7964
7965 FUNCTION check_prim_cond(
7966 p_party_search_rec IN HZ_PARTY_SEARCH.party_search_rec_type,
7967 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
7968 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
7969 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list)
7970 RETURN BOOLEAN IS
7971 BEGIN
7972 FOR I IN 1..p_contact_point_list.COUNT LOOP
7973 IF p_contact_point_list(I).CONTACT_POINT_TYPE IS NULL AND (
7974 p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
7975 ) THEN
7976 FND_MESSAGE.SET_NAME('AR', 'HZ_NO_CONTACT_POINT_TYPE');
7977 FND_MSG_PUB.ADD;
7978 RAISE FND_API.G_EXC_ERROR;
7979 END IF;
7980 END LOOP;
7981
7982 IF p_party_search_rec.ALL_ACCOUNT_NAMES IS NOT NULL THEN
7983 RETURN TRUE;
7984 END IF;
7985 IF p_party_search_rec.PARTY_NUMBER IS NOT NULL THEN
7986 RETURN TRUE;
7987 END IF;
7988 IF p_party_search_rec.ALL_ACCOUNT_NUMBERS IS NOT NULL THEN
7989 RETURN TRUE;
7990 END IF;
7991 IF p_party_search_rec.PARTY_ALL_NAMES IS NOT NULL THEN
7992 RETURN TRUE;
7993 END IF;
7994 IF p_party_search_rec.TAX_NAME IS NOT NULL THEN
7995 RETURN TRUE;
7996 END IF;
7997 IF p_party_search_rec.TAX_REFERENCE IS NOT NULL THEN
7998 RETURN TRUE;
7999 END IF;
8000 IF p_party_search_rec.SIC_CODE IS NOT NULL THEN
8001 RETURN TRUE;
8002 END IF;
8003 IF p_party_search_rec.SIC_CODE_TYPE IS NOT NULL THEN
8004 RETURN TRUE;
8005 END IF;
8006 IF p_party_search_rec.CATEGORY_CODE IS NOT NULL THEN
8007 RETURN TRUE;
8008 END IF;
8009 IF p_party_search_rec.REFERENCE_USE_FLAG IS NOT NULL THEN
8010 RETURN TRUE;
8011 END IF;
8012 IF p_party_search_rec.CORPORATION_CLASS IS NOT NULL THEN
8013 RETURN TRUE;
8014 END IF;
8015 FOR I IN 1..p_party_site_list.COUNT LOOP
8016 IF p_party_site_list(I).CITY IS NOT NULL THEN
8017 RETURN TRUE;
8018 END IF;
8019 END LOOP;
8020 FOR I IN 1..p_party_site_list.COUNT LOOP
8021 IF p_party_site_list(I).POSTAL_CODE IS NOT NULL THEN
8022 RETURN TRUE;
8023 END IF;
8024 END LOOP;
8025 FOR I IN 1..p_party_site_list.COUNT LOOP
8026 IF p_party_site_list(I).PROVINCE IS NOT NULL THEN
8027 RETURN TRUE;
8028 END IF;
8029 END LOOP;
8030 FOR I IN 1..p_party_site_list.COUNT LOOP
8031 IF p_party_site_list(I).STATE IS NOT NULL THEN
8032 RETURN TRUE;
8033 END IF;
8034 END LOOP;
8035 FOR I IN 1..p_party_site_list.COUNT LOOP
8036 IF p_party_site_list(I).COUNTY IS NOT NULL THEN
8037 RETURN TRUE;
8038 END IF;
8039 END LOOP;
8040 FOR I IN 1..p_party_site_list.COUNT LOOP
8041 IF p_party_site_list(I).COUNTRY IS NOT NULL THEN
8042 RETURN TRUE;
8043 END IF;
8044 END LOOP;
8045 FOR I IN 1..p_contact_point_list.COUNT LOOP
8046 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL THEN
8047 RETURN TRUE;
8048 END IF;
8049 END LOOP;
8050 RETURN FALSE;
8051 EXCEPTION
8052 WHEN FND_API.G_EXC_ERROR THEN
8053 RAISE FND_API.G_EXC_ERROR;
8054 WHEN OTHERS THEN
8055 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
8056 FND_MESSAGE.SET_TOKEN('PROC','check_prim_cond');
8057 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
8058 FND_MSG_PUB.ADD;
8059 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8060 END check_prim_cond;
8061
8062 /************************************************
8063 This procedure checks if the input search condition
8064 has party site criteria.
8065 ************************************************/
8066
8067 PROCEDURE check_party_site_cond(
8068 p_party_site_list IN HZ_PARTY_SEARCH.party_site_list,
8069 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
8070 x_secondary OUT BOOLEAN,
8071 x_primary OUT BOOLEAN
8072 ) IS
8073 BEGIN
8074 x_primary:= FALSE;
8075 x_secondary:= FALSE;
8076 FOR I IN 1..p_party_site_list.COUNT LOOP
8077 IF p_party_site_list(I).CITY IS NOT NULL
8078 OR p_party_site_list(I).POSTAL_CODE IS NOT NULL
8079 OR p_party_site_list(I).PROVINCE IS NOT NULL
8080 OR p_party_site_list(I).STATE IS NOT NULL
8081 OR p_party_site_list(I).COUNTY IS NOT NULL
8082 OR p_party_site_list(I).COUNTRY IS NOT NULL
8083 THEN
8084 x_primary := TRUE;
8085 END IF;
8086 EXIT WHEN x_primary;
8087 END LOOP;
8088 FOR I IN 1..p_contact_point_list.COUNT LOOP
8089 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
8090 THEN
8091 x_primary := TRUE;
8092 END IF;
8093 EXIT WHEN x_primary;
8094 END LOOP;
8095
8096 FOR I IN 1..p_party_site_list.COUNT LOOP
8097 IF p_party_site_list(I).CITY IS NOT NULL
8098 OR p_party_site_list(I).POSTAL_CODE IS NOT NULL
8099 OR p_party_site_list(I).PROVINCE IS NOT NULL
8100 OR p_party_site_list(I).STATE IS NOT NULL
8101 OR p_party_site_list(I).COUNTY IS NOT NULL
8102 OR p_party_site_list(I).COUNTRY IS NOT NULL
8103 THEN
8104 x_secondary := TRUE;
8105 END IF;
8106 EXIT WHEN x_secondary;
8107 END LOOP;
8108 FOR I IN 1..p_contact_point_list.COUNT LOOP
8109 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
8110 OR p_contact_point_list(I).PHONE_AREA_CODE IS NOT NULL
8111 OR p_contact_point_list(I).PHONE_COUNTRY_CODE IS NOT NULL
8112 THEN
8113 x_secondary := TRUE;
8114 END IF;
8115 EXIT WHEN x_secondary;
8116 END LOOP;
8117 EXCEPTION
8118 WHEN OTHERS THEN
8119 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
8120 FND_MESSAGE.SET_TOKEN('PROC','check_party_site_cond');
8121 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
8122 FND_MSG_PUB.ADD;
8123 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8124 END check_party_site_cond;
8125
8126 /************************************************
8127 This procedure checks if the input search condition
8128 has contact criteria.
8129 ************************************************/
8130
8131 PROCEDURE check_contact_cond(
8132 p_contact_list IN HZ_PARTY_SEARCH.contact_list,
8133 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
8134 x_secondary OUT BOOLEAN,
8135 x_primary OUT BOOLEAN
8136 ) IS
8137 BEGIN
8138 x_primary:= FALSE;
8139 x_secondary:= FALSE;
8140 FOR I IN 1..p_contact_list.COUNT LOOP
8141 NULL;
8142 END LOOP;
8143
8144 FOR I IN 1..p_contact_point_list.COUNT LOOP
8145 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
8146 THEN
8147 x_primary := TRUE;
8148 END IF;
8149 EXIT WHEN x_primary;
8150 END LOOP;
8151
8152 FOR I IN 1..p_contact_list.COUNT LOOP
8153 NULL;
8154 END LOOP;
8155
8156 FOR I IN 1..p_contact_point_list.COUNT LOOP
8157 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
8158 OR p_contact_point_list(I).PHONE_AREA_CODE IS NOT NULL
8159 OR p_contact_point_list(I).PHONE_COUNTRY_CODE IS NOT NULL
8160 THEN
8161 x_secondary := TRUE;
8162 END IF;
8163 EXIT WHEN x_secondary;
8164 END LOOP;
8165 EXCEPTION
8166 WHEN OTHERS THEN
8167 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
8168 FND_MESSAGE.SET_TOKEN('PROC','check_contact_cond');
8169 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
8170 FND_MSG_PUB.ADD;
8171 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8172 END check_contact_cond;
8173
8174 /************************************************
8175 This procedure checks if the input search condition
8176 has valid contact point criteria.
8177 ************************************************/
8178
8179 PROCEDURE check_contact_point_cond(
8180 p_contact_point_list IN HZ_PARTY_SEARCH.contact_point_list,
8181 x_secondary OUT BOOLEAN,
8182 x_primary OUT BOOLEAN
8183 ) IS
8184 BEGIN
8185 x_primary:= FALSE;
8186 x_secondary:= FALSE;
8187
8188 FOR I IN 1..p_contact_point_list.COUNT LOOP
8189 IF p_contact_point_list(I).CONTACT_POINT_TYPE IS NULL THEN
8190 FND_MESSAGE.SET_NAME('AR', 'HZ_NO_CONTACT_POINT_TYPE');
8191 FND_MSG_PUB.ADD;
8192 RAISE FND_API.G_EXC_ERROR;
8193 END IF;
8194 END LOOP;
8195
8196 FOR I IN 1..p_contact_point_list.COUNT LOOP
8197 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
8198 THEN
8199 x_primary := TRUE;
8200 END IF;
8201 EXIT WHEN x_primary;
8202 END LOOP;
8203 FOR I IN 1..p_contact_point_list.COUNT LOOP
8204 IF p_contact_point_list(I).FLEX_FORMAT_PHONE_NUMBER IS NOT NULL
8205 OR p_contact_point_list(I).PHONE_AREA_CODE IS NOT NULL
8206 OR p_contact_point_list(I).PHONE_COUNTRY_CODE IS NOT NULL
8207 THEN
8208 x_secondary := TRUE;
8209 END IF;
8210 EXIT WHEN x_secondary;
8211 END LOOP;
8212 EXCEPTION
8213 WHEN OTHERS THEN
8214 FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
8215 FND_MESSAGE.SET_TOKEN('PROC','check_contact_point_cond');
8216 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM );
8217 FND_MSG_PUB.ADD;
8218 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8219 END check_contact_point_cond;
8220
8221 FUNCTION check_staged RETURN BOOLEAN IS
8222
8223 CURSOR c_check_staged IS
8224 SELECT 1 FROM HZ_TRANS_FUNCTIONS_VL
8225 WHERE nvl(STAGED_FLAG,'N') = 'N'
8226 AND FUNCTION_ID in (
8227 36
8228 ,37
8229 ,38
8230 ,39
8231 ,40
8232 ,43
8233 ,44
8234 ,46
8235 ,47
8236 ,49
8237 ,51
8238 ,52
8239 ,53
8240 ,72
8241 ,73
8242 ,74
8243 ,76
8244 ,77
8245 ,78
8246 ,83
8247 ,84
8248 ,85
8249 ,110
8250 ,112
8251 ,113
8252 ,121
8253 ,122
8254 ,123
8255 );
8256 l_tmp NUMBER;
8257 BEGIN
8258 IF g_staged = 1 THEN
8259 RETURN TRUE;
8260 ELSIF g_staged = 0 THEN
8261 RETURN FALSE;
8262 END IF;
8263
8264 OPEN c_check_staged;
8265 FETCH c_check_staged INTO l_tmp;
8266 IF c_check_staged%FOUND THEN
8267 CLOSE c_check_staged;
8268 g_staged := 0;
8269 RETURN FALSE;
8270 ELSE
8271 CLOSE c_check_staged;
8272 g_staged := 1;
8273 RETURN TRUE;
8274 END IF;
8275 END check_staged;
8276
8277 -- Fix for Bug 4736139
8278 FUNCTION check_staged_var RETURN VARCHAR2 IS
8279 l_staged VARCHAR2(1);
8280 l_staged_bool BOOLEAN;
8281 BEGIN
8282 l_staged_bool := check_staged;
8283 IF l_staged_bool THEN
8284 l_staged := 'Y';
8285 ELSE
8286 l_staged := 'N';
8287 END IF;
8288 RETURN l_staged;
8289 END check_staged_var;
8290 -- End fix for Bug 4736139
8291
8292 END;
8293