DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_PARTNER_MIGRATIONS_PUB

Source


1 PACKAGE BODY PV_PARTNER_MIGRATIONS_PUB
2 /* $Header: pvxpmigb.pls 120.9 2006/09/01 12:40:38 rdsharma noship $ */
3 as
4 
5 
6 /*============================================================================
7 -- Start of comments
8 --  API name  : Update_Primary_Partner
9 --  Type      : Private.
10 --  Function  : This API is a private api used to update the partner types of
11 --              of a partner. This api would make one of the partner type as primary
12 --
13 --  Pre-reqs  : None.
14 --  Parameters  :
15 --  IN    : p_entity_id                IN  integer,
16 --			p_primary_partner_type     IN  VARCHAR2,
17 --
18 --  OUT   : x_return_status    OUT VARCHAR2(1)
19 --          x_msg_count        OUT NUMBER
20 --          x_msg_data         OUT VARCHAR2(2000)
21 --
22 --  Version : Current version   1.0
23 --            Initial version   1.0
24 --
25 --  Notes   : Note text
26 --
27 --  History :
28 --            Created     2005/12/26  pinagara
29 --            Modified    2006/08/30  rdsharma  Fix the bug# 5486739.
30 -- End of comments
31 ============================================================================*/
32 
33 PROCEDURE Update_Primary_Partner(
34                 p_entity_id                IN  integer,
35 		p_primary_partner_type     IN  VARCHAR2,
36 		x_return_status            OUT NOCOPY VARCHAR2,
37 		x_msg_count                OUT NOCOPY NUMBER,
38 		x_msg_data                 OUT NOCOPY VARCHAR
39 )
40 IS
41 
42  l_entity_id		integer;
43  l_party_id		integer;
44  l_version	        integer;
45  l_attr_value		varchar2(2000);
46  l_attr_value_extn	varchar2(4000);
47  l_count		integer;
48  l_attr_val_tbl	        PV_ENTY_ATTR_VALUE_PUB.attr_value_tbl_type;
49  l_partner_name         varchar2(2000);
50  l_primary_partner_type varchar2(2000);
51  l_addtl_partner_type   varchar2(2000);
52 
53  -- Local variable declaration for Standard Out variables.
54  l_return_status        VARCHAR2(1);
55  l_msg_count            NUMBER;
56  l_msg_data             VARCHAR2(2000);
57 
58 
59  CURSOR GET_PARTNER_TYPES IS
60         SELECT
61         	entity_id,
62         	version,
63         	attr_value,
64         	attr_value_extn
65         from
66                 pv_enty_attr_values
67         where
68                 entity_id = p_entity_id and
69                 latest_flag = 'Y' AND
70                 attribute_id = 3;
71 
72 
73  CURSOR GET_PARTY_NAME(CV_PARTNER_ID INTEGER) IS
74   SELECT
75             PARTY_NAME, PARTY_ID
76     FROM
77             PV_PARTNER_PROFILES,
78             HZ_PARTIES
79     WHERE
80             HZ_PARTIES.PARTY_ID = PV_PARTNER_PROFILES.PARTNER_PARTY_ID AND
81             PV_PARTNER_PROFILES.PARTNER_ID = CV_PARTNER_ID;
82 
83 
84  CURSOR GET_PARTNER_TYPE_DTLS(CV_PARTNER_ID INTEGER) is
85 		select ATTR_VALUE from pv_enty_attr_values tabl where entity_id = CV_PARTNER_ID and ATTRIBUTE_id= 3
86         	and version =  (SELECT
87                             MAX(case (version -1)
88                             when 0 then
89                                 1
90                             else
91                                 (version -1)
92                             end ) fROM pv_enty_attr_values
93                             WHERE
94                             entity_id = CV_PARTNER_ID AND
95                             ATTRIBUTE_ID = 3 AND
96                             LAST_UPDATE_DATE = (SELECT MIN(LAST_UPDATE_DATE) FROM pv_enty_attr_values WHERE ATTR_VALUE_EXTN = 'Y' AND
97                                                         ENTITY_ID = tabl.entity_id and attribute_id = 3)
98                        )
99         union
100 
101         SELECT ATTR_VALUE FROM pv_enty_attr_values
102         WHERE
103             entity_id = CV_PARTNER_ID and
104             ATTRIBUTE_ID = 3 AND
105             ENTITY_ID not IN (SELECT ENTITY_ID FROM pv_enty_attr_values WHERE entity_id = CV_PARTNER_ID  and ATTRIBUTE_ID = 3 and ATTR_VALUE_eXTN is not NULL) AND
106             LATEST_FLAG = 'Y';
107 
108 begin
109 
110     l_addtl_partner_type := null;
111     l_count := 1;
112 
113     open GET_PARTNER_TYPE_DTLS(CV_PARTNER_ID => p_entity_id);
114     fetch GET_PARTNER_TYPE_DTLS into l_attr_value;
115     while GET_PARTNER_TYPE_DTLS%found
116     loop
117 --        if l_attr_value <> p_primary_partner_type then
118             if length(l_addtl_partner_type) > 0 then
119                    l_addtl_partner_type := l_addtl_partner_type || ',' || l_attr_value;
120                 else
121                     l_addtl_partner_type := l_attr_value;
122             end if;
123 --        end if;
124         fetch GET_PARTNER_TYPE_DTLS into l_attr_value;
125     end loop;
126     close GET_PARTNER_TYPE_DTLS;
127 
128 
129 	OPEN GET_PARTNER_TYPES;
130     	Fetch GET_PARTNER_TYPES INTO
131     			l_entity_id,
132     			l_version,
133     			l_attr_value,
134     			l_attr_value_extn;
135 
136     	if GET_PARTNER_TYPES%found then
137     		l_attr_val_tbl(l_count).attr_value := p_primary_partner_type;
138     		l_attr_val_tbl(l_count).attr_value_extn := 'Y';
139         end if;
140     close GET_PARTNER_TYPES;
141 
142 --    dbms_output.put_line ('entity:' || l_entity_id || ', Type :' || p_primary_partner_type);
143 
144     -- Get the Partner name for the supplied PARTNER_ID.
145     for x in GET_PARTY_NAME(CV_PARTNER_ID => l_entity_id)
146     loop
147         l_partner_name := x.party_name;
148 	l_party_id := x.party_id;
149     end loop;
150 
151     IF l_partner_name IS NULL  then
152         l_partner_name := 'N/A';
153     end if;
154 
155     PV_ENTY_ATTR_VALUE_PUB.Upsert_Attr_Value (
156 		  p_api_version_number=> 1.0
157 		 ,p_init_msg_list    => FND_API.g_false
158 		 ,p_commit           => FND_API.g_false
159 		 ,p_validation_level => FND_API.g_valid_level_full
160 		 ,x_return_status    => l_return_status
161 		 ,x_msg_count        => l_msg_count
162 		 ,x_msg_data         => l_msg_data
163 		 ,p_attribute_id     => 3
164 		 ,p_entity	     => 'PARTNER'
165 		 ,p_entity_id	     => l_entity_id
166 		 ,p_version          => l_version
167 		 ,p_attr_val_tbl     => l_attr_val_tbl
168 	);
169 
170      FND_FILE.PUT_LINE(FND_FILE.LOG, '' );
171      FND_FILE.PUT_LINE(FND_FILE.LOG,'   ' ||  RPAD(l_partner_name||'('||l_entity_id||')',45) || RPAD(p_primary_partner_type,42) || l_addtl_partner_type );
172 
173      IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
174          IF ( l_msg_count > 1 ) THEN
175 	   FOR l_msg_index IN 1..l_msg_count LOOP
176                apps.fnd_message.set_encoded(apps.fnd_msg_pub.get(l_msg_index));
177 	       FND_FILE.PUT_LINE(FND_FILE.LOG,'        ' ||  substr(apps.fnd_message.get,1,254) );
178            END LOOP;
179          ELSE
180 	   -- Standard call to get message count and if count=1, get the message
181 	   FND_MSG_PUB.Count_And_Get (
182 		p_encoded => FND_API.G_FALSE
183 		,p_count => l_msg_count
184 		,p_data  => l_msg_data
185 	   );
186            FND_FILE.PUT_LINE(FND_FILE.LOG,'        ' ||  l_msg_data );
187          END IF;
188      END IF;
189 
190 END Update_Primary_Partner;
191 
192 /*============================================================================
193 -- Start of comments
194 --  API name  : Convert_Partner_Type
195 --  Type      : Public.
196 --  Function  : This api is used to migrate the partners from multiple partner
197 --              types to single partners with primary partner type
198 --
199 --  Pre-reqs  : None.
200 --  Parameters  :
201 --  IN    : p_running_mode                IN  integer,
202 --			p_overwrite                   IN  VARCHAR2,
203 --
204 --  OUT   : Errbuf          OUT VARCHAR2
205 --          retcode         OUT VARCHAR2
206 --
207 --  Version : Current version   1.0
208 --            Initial version   1.0
209 --
210 --  Notes   : Note text
211 --
212 -- End of comments
213 ============================================================================*/
214 PROCEDURE Convert_Partner_Type
215      (
216         Errbuf                         OUT NOCOPY VARCHAR2,
217         Retcode                        OUT NOCOPY VARCHAR2,
218         p_Running_Mode        IN varchar2 DEFAULT 'EVALUATION',
219         p_OverWrite           IN varchar2 DEFAULT 'N'
220 ) is
221 
222   l_count		integer;
223   l_distinct_count	integer;
224   l_attr_value		varchar2(2000);
225   l_processed_count	integer;
226   l_unprocessed_count	integer;
227   l_entity_id		integer;
228 
229   -- Local variable declaration for Standard Out variables.
230   l_return_status	VARCHAR2(1);
231   l_msg_count		NUMBER;
232   l_msg_data		VARCHAR2(2000);
233 
234   -- Cursor to get all the configured partner types under
235   -- PV_PARTNER_TYPE_RANKING lookup type.
236   CURSOR Get_Ranked_Partner_types is
237          select
238 		lookup_code,
239                 tag
240          from
241                 fnd_lookup_values
242          where
243                 lookup_type = 'PV_PARTNER_TYPE_RANKING' and
244                 enabled_flag = 'Y' AND
245                 language = userenv('LANG') and
246                 TAG IS NOT NULL
247          order by tag asc ;
248 
249   -- Cursor to get the count for all unprocessed partners.
250   CURSOR Get_Unprocessed_Record_Count IS
251          select
252                 count(distinct entity_id) as partner_count
253          from
254                 pv_enty_attr_values
255          where
256                 attribute_id = 3 and
257                 attr_value_extn = 'Y';
258 
259   -- Cursor to get the count of all partners with each Partner type.
260   CURSOR Get_Primary_Partner_Type_count is
261 	select
262 		attr_value , count(attr_value) as partner_count
263         from
264                 pv_enty_attr_values
265         where
266                 attribute_id = 3 and latest_flag = 'Y' and attr_value_extn = 'Y'
267         group by
268                 attr_value
269         having
270                 count(attr_value) > 0
271         order by
272                 count(attr_value) desc;
273 
274   -- Cursor to get the count for all 'Active' and 'Inactive' Partners.
275   CURSOR Get_Partner_Status_Count is
276          SELECT
277                 (select count(status)  from pv_partner_profiles where status = 'A') Active,
278                 (select count(status)  from pv_partner_profiles where status = 'I') Inactive
279 
280          FROM DUAL;
281 
282   -- Cursor to get all partners with VAD partner types.
283   CURSOR Get_VAD_Prtnr_Typ_Migrn_OvWrt is
284 	SELECT
285 		ATTR_VALUE,
286 		entity_id
287 	FROM (
288 		SELECT
289 			ATTR_VALUE,
290 			entity_id
291 		FROM pv_enty_attr_values tabl
292 		WHERE
293 		ATTRIBUTE_ID = 3
294 		AND	 ATTR_VALUE = 'VAD'
295 		AND  VERSION = (SELECT
296 					MAX(case (version -1)
297 					when 0 then
298 						1
299 					else
300 						(version -1)
301 					end )
302 				FROM pv_enty_attr_values
303 				WHERE
304 					entity_id = tabl.entity_id AND
305 					LAST_UPDATE_DATE = (	SELECT MIN(LAST_UPDATE_DATE)
306 								FROM pv_enty_attr_values
307 								WHERE ATTR_VALUE_EXTN = 'Y'
308 								AND ENTITY_ID = tabl.entity_id
309 								AND attribute_id = 3
310 							    )
311 				)
312 	UNION
313 		SELECT
314 			ATTR_VALUE,
315 			entity_id
316 		FROM  pv_enty_attr_values
317 		WHERE
318 			ATTRIBUTE_ID = 3
319 		AND	LATEST_FLAG = 'Y'
320 		AND	ATTR_VALUE = 'VAD'
321 		AND	entity_id in (	SELECT	entity_id
322 				FROM	pv_enty_attr_values
323 				WHERE	ATTRIBUTE_ID = 3
324 				AND	attr_value = 'VAD'
325 				AND	latest_flag = 'Y'
326 			      )
327 		AND	ENTITY_ID NOT IN (SELECT ENTITY_ID
328                                     FROM pv_enty_attr_values
329                                    WHERE ATTRIBUTE_ID = 3
330                                    AND attr_value_extn is not null
331 				 )
332 	    )
333 	   partners,
334 	   pv_partner_profiles profiles
335 	WHERE partners.entity_id = profiles.partner_id
336 	AND profiles.status in ('A', 'I');
337 
338    -- Cursor to get all partners with other partner types.
339    CURSOR  Get_Prtnr_Typ_Migrn_Overwrite IS
340                       select distinct
341                   details.attr_value,
342                   details.entity_id
343            from
344               (
345                   SELECT
346 			min(tag) as tag,
347                         entity_id
348                   FROM
349 		     (
350 			SELECT ATTR_VALUE,entity_id
351 			FROM pv_enty_attr_values tabl
352                         WHERE
353                               ENTITY_ID IN (SELECT ENTITY_ID FROM pv_enty_attr_values WHERE ATTRIBUTE_ID = 3 AND ATTR_VALUE_EXTN = 'Y') AND
354                               ATTRIBUTE_ID = 3 AND
355                               VERSION = (SELECT
356                                             MAX(case (version -1)
357                                             when 0 then
358                                                  1
359                                             else
360                                                  (version -1)
361                                             end )
362 					 FROM pv_enty_attr_values
363 					 WHERE
364                                               entity_id = tabl.entity_id and
365                                               LAST_UPDATE_DATE = (SELECT MIN(LAST_UPDATE_DATE)
366 								  FROM pv_enty_attr_values
367 								  WHERE ATTR_VALUE_EXTN = 'Y'
368 								  AND ENTITY_ID = tabl.entity_id
369 								  AND attribute_id = 3)
370                                          )
371 
372                                         UNION
373 
374                                         SELECT ATTR_VALUE,entity_id
375 					FROM pv_enty_attr_values
376                                         WHERE
377                                              ATTRIBUTE_ID = 3 AND
378                                              ENTITY_ID NOT IN (SELECT ENTITY_ID
379 					                       FROM pv_enty_attr_values
380 							       WHERE ATTRIBUTE_ID = 3
381 							       AND attr_value_extn is not null ) AND
382                                              LATEST_FLAG = 'Y'
383 
384 
385                                 )  attr,
386                                 fnd_lookup_values lkp where
387                                              ENTITY_ID NOT IN (SELECT ENTITY_ID FROM pv_enty_attr_values WHERE ENTITY_ID = attr.entity_id and ATTR_VALUE = 'VAD') and
388                                              attr.attr_value = lkp.lookup_code and
389                                              lkp.language = userenv('LANG') and
390                                              lkp.lookup_type =  'PV_PARTNER_TYPE_RANKING'
391                                 group by entity_id
392                     ) sorted,
393                     pv_enty_attr_values details,
394                     fnd_lookup_values match,
395                     pv_partner_profiles ppp
396                     where
397                     details.attr_value = lookup_code and
398                     match.lookup_type =  'PV_PARTNER_TYPE_RANKING' and
399                     match.language = userenv('LANG') and
400                     sorted. entity_id = details.entity_id and
401                     details.entity_id = ppp.partner_id and
402 	                ppp.status IN ('A' , 'I') and
403                    to_number(sorted.tag)  = to_number(match.tag)
404 
405                 order by details.entity_id;
406 
407 
408     CURSOR GET_VAD_PRTNR_TYP_MIGRN IS
409 	SELECT distinct
410 		attr_value,
411 		entity_id
412 	FROM
413 	    pv_enty_attr_values partners,
414 	    pv_partner_profiles profiles
415 	WHERE
416 	    partners.attribute_id = 3
417 	AND partners.latest_flag = 'Y'
418 	AND partners.attr_value = 'VAD'
419 	AND partners.entity_id not in (
420 				SELECT
421 				    distinct entity_id
422 				FROM
423 				    pv_enty_attr_values
424 				WHERE
425 				    attribute_id = 3
426 				AND attr_value_extn is not null
427 				AND latest_flag = 'Y'
428 			     )
429 	AND partners.entity_id = profiles.partner_id
430 	AND profiles.status in ('A', 'I');
431 
432     CURSOR GET_PRTNR_TYP_MIGRN IS
433 	SELECT distinct
434 		attr_value,
435 		entity_id
436 	FROM    pv_enty_attr_values attr,
437 		fnd_lookup_values lkp,
438 		pv_partner_profiles ppp
439         WHERE
440                 attribute_id = 3
441 	AND     latest_flag = 'Y'
442 	AND     entity_id not in (
443 				  select
444 					distinct entity_id
445 				  from
449 					latest_flag = 'Y' AND
446 					pv_enty_attr_values
447 				  where
448 					attribute_id = 3 and
450 					(attr_value = 'VAD' OR attr_value_extn is not null )
451                                  )
452         AND	attr.attr_value = lkp.lookup_code
453 	AND	lkp.lookup_type =  'PV_PARTNER_TYPE_RANKING'
454 	AND	lkp.language = userenv('LANG')
455 	AND	attr.entity_id = ppp.partner_id
456 	AND	ppp.status IN ('A' , 'I')
457 	AND	to_number(tag) = (select min(to_number(tag))
458 				  from fnd_lookup_values
459 				  where
460                                        lookup_code in (select attr_value
461 							 from pv_enty_attr_values
462 							where attribute_id=3
463 							and entity_id  = attr.entity_id
464 							and latest_flag = 'Y')
465 				  and  lookup_type =  'PV_PARTNER_TYPE_RANKING'
466 				  and tag is not null
467 				  and language = userenv('LANG')
468 				  and lookup_code <> 'VAD'
469                                   );
470 
471 
472 
473 BEGIN
474 
475   fnd_message.set_name('PV','PV_MIGR_HEADER');
476   FND_MESSAGE.SET_TOKEN('STARTDATE',TO_char(SYSDATE,'MM/DD/YYYY hh:mm:ss'));
477   FND_MESSAGE.SET_TOKEN('USER',fnd_global.user_name);
478 
479   FND_MESSAGE.SET_TOKEN('PARAM1','Running_Mode');
480   FND_MESSAGE.SET_TOKEN('PARAM2','Overwrite');
481   FND_MESSAGE.SET_TOKEN('PARAMVALUE1',p_running_mode);
482   FND_MESSAGE.SET_TOKEN('PARAMVALUE2',p_Overwrite);
483 
484   FND_FILE.PUT_LINE(FND_FILE.LOG, FND_MESSAGE.GET);
485 
486   SAVEPOINT migrate_partner_type;
487 
488   --Validating the PV_PARTNER_TYPE_RNKING lookup setup.
489   -- If setup is not available then Exit the program.
490   select count(*)
491          into l_count
492   from fnd_lookup_values
493   where lookup_type = 'PV_PARTNER_TYPE_RANKING'
494   and language = userenv('LANG')
495   and enabled_flag = 'Y';
496 
497   if not l_count > 0 then
498      FND_MESSAGE.set_name('PV','PV_MIGR_LKUP_SETUP');
499      FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
500 
501      RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
502   end if;
503 
504   -- Validate that all different partner types code are included
505   -- in PV_PARTNER_TYPE_RNKING lookup setup.
506   select
507          COUNT(*) into l_count
508   from
509          pv_attribute_codes_b
510   where
511          attribute_id = 3 and
512          attr_code <> 'VAD' AND
513             ATTR_CODE NOT IN
514             (
515                  SELECT
516                         LOOKUP_CODE
517                 FROM
518                         FND_LOOKUP_VALUES
519                 WHERE
520                         LOOKUP_CODE<> 'VAD' AND
521                         language = userenv('LANG') and
522                         lookup_type = 'PV_PARTNER_TYPE_RANKING'and
523                         enabled_flag = 'Y'
524             );
525     IF l_count > 0 THEN
526         FND_MESSAGE.set_name('PV','PV_MIGR_LKUP_INCOMPL');
527         FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
528     	RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
529     end if;
530 
531 
532   --Validate that all partner types have been ranked, if yes check if they are numbers
533   select
534        count(*) into l_count
535   from
536        FND_LOOKUP_VALUES
537   where
538        LOOKUP_CODE <> 'VAD' AND
539        lookup_type = 'PV_PARTNER_TYPE_RANKING' AND
540        language = userenv('LANG') and
541        enabled_flag = 'Y' and
542        TAG IS NULL;
543 
544   if l_count > 0 then
545       FND_MESSAGE.set_name('PV','PV_MIGR_RANK_INCOMPL');
546       FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
547 
548       RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
549   end if;
550 
551   --Check for the integer
552     begin
553          select
554                count(to_number(TAG)) into l_count
555          from
556                FND_LOOKUP_VALUES
557          where
558                LOOKUP_CODE <> 'VAD' AND
559                lookup_type = 'PV_PARTNER_TYPE_RANKING' AND
560                enabled_flag = 'Y' and
561                language = userenv('LANG') and
562                TAG IS NOT NULL;
563     exception
564         when INVALID_NUMBER then
565             FND_MESSAGE.set_name('PV','PV_MIGR_RANK_NUMBER');
566             FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
567 
568             RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
569     end;
570 
571 
572   --Make sure that the same ranking is not used by more than one partner_type
573 
574     select
575             count(distinct tag) into l_distinct_count
576     from
577             FND_LOOKUP_VALUES
578     where
579             LOOKUP_CODE <> 'VAD' AND
580             lookup_type = 'PV_PARTNER_TYPE_RANKING' AND
581             language = userenv('LANG') and
582             TAG IS NOT NULL;
583 
584     select
585             count(tag) into l_count
586     from
587             FND_LOOKUP_VALUES
588     where
589             LOOKUP_CODE <> 'VAD' AND
590             lookup_type = 'PV_PARTNER_TYPE_RANKING' AND
591             language = userenv('LANG') and
592             TAG IS NOT NULL;
593 
594 
595     if l_count <> l_distinct_count then
596         FND_MESSAGE.set_name('PV','PV_MIGR_RANK_UNIQUE');
597         FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
598 
599     	RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
600     end if;
601 
602 
603    -- Writing the header information of the Log report.
604    FND_FILE.PUT_LINE(FND_FILE.LOG, '');
605    FND_MESSAGE.set_name('PV','PV_MIGR_RANKING');
606    FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
610    loop
607    FND_FILE.PUT_LINE(FND_FILE.LOG, '');
608 
609    for x in Get_Ranked_Partner_types
611          FND_FILE.PUT_LINE(FND_FILE.LOG, '                       ' || RPAD(x.lookup_code,50) || '  ' || x.tag);
612    end loop;
613 
614    FND_FILE.PUT_LINE(FND_FILE.LOG, '');
615 
616 
617    -- Writing the 'Active' and 'Inactive' partner type count in the Log report.
618    for x in Get_Partner_Status_Count
619     loop
620        FND_MESSAGE.set_name('PV','PV_MIGR_DETAILS');
621        FND_MESSAGE.SET_TOKEN('ACTIVEPARTNERS',x.Active);
622        FND_MESSAGE.SET_TOKEN('INACTIVEPARTNERS',x.InActive);
623        FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
624    end loop;
625 
626    if p_OverWrite = 'N' then
627         for x in Get_Unprocessed_Record_Count
628         loop
629            l_unprocessed_count := x.partner_count;
630         end loop;
631     else
632            l_unprocessed_count := 0;
633     end if;
634 
635     -- Start processing all VAD partner types.
636     IF p_OverWrite = 'Y' then
637 
638 	l_processed_count := 0;
639 	-- OPEN the Cursor for all VAD partners for processing with Overwrite(Y)
640 	OPEN Get_VAD_Prtnr_Typ_Migrn_OvWrt;
641 
642         -- FETCH first VAD partner for processing.
643 	FETCH Get_VAD_Prtnr_Typ_Migrn_OvWrt
644            INTO
645              l_attr_value,
646              l_entity_id;
647 
648         WHILE Get_VAD_Prtnr_Typ_Migrn_OvWrt%FOUND
649          LOOP
650             BEGIN
651 
652 	        -- Standard Start of savepoint
653 		SAVEPOINT VAD_Partner_OWRTY;
654 
655 		-- Initialize return variables before the procedure call.
656 		l_return_status := FND_API.G_RET_STS_SUCCESS;
657 		l_msg_count := 0;
658 		l_msg_data := NULL;
659 
660 		Update_Primary_Partner
661 		(
662 		   p_entity_id		  => l_entity_id,
663 		   p_primary_partner_type => l_attr_value,
664 		   x_return_status	  => l_return_status,
665 		   x_msg_count		  => l_msg_count,
666 		   x_msg_data		  => l_msg_data
667 		);
668 
669 		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
670 			RAISE FND_API.G_EXC_ERROR;
671 		END IF;
672 
673               EXCEPTION
674 	      	WHEN FND_API.G_EXC_ERROR THEN
675 		    ROLLBACK TO VAD_Partner_OWRTY;
676 	        WHEN OTHERS THEN
677 		    ROLLBACK TO VAD_Partner_OWRTY;
678 	    END;
679 
680 
681             l_processed_count := l_processed_count + 1;
682 	    if mod(l_processed_count,50) = 0 then
683 		if p_running_mode = 'EXECUTION' then
684 			commit;
685 		end if;
686 	    end if;
687 
688                 FETCH Get_VAD_Prtnr_Typ_Migrn_OvWrt
689                    INTO
690                       l_attr_value,
691                       l_entity_id;
692 
693                 -- Commented by Rahul Dev Sharma
694 		-- CLOSE Get_VAD_Prtnr_Typ_Migrn_OvWrt;
695 
696 	 END LOOP;  -- Finish the LOOP for all the VAD partners.
697 
698 	 -- CLOSE the cursor Get_VAD_Prtnr_Typ_Migrn_OvWrt after processing all VAD partners.
699 	 CLOSE Get_VAD_Prtnr_Typ_Migrn_OvWrt;
700 
701 	---- ********************************************************* ----
702 	---- Process all Other Partners second, when p_OverWrite = 'Y' ----
703 	---- ********************************************************* ----
704 
705 	-- OPEN the Cursor for all other types partners for processing with Overwrite(Y).
706 	OPEN Get_Prtnr_Typ_Migrn_Overwrite;
707 
708         --   BEGIN
709         l_processed_count := l_processed_count + Get_Prtnr_Typ_Migrn_Overwrite%RowCount;
710         FETCH
711                 Get_Prtnr_Typ_Migrn_Overwrite
712             INTO
713 		l_attr_value,
714                 l_entity_id;
715 
716         WHILE Get_Prtnr_Typ_Migrn_Overwrite%FOUND
717         LOOP
718 	    BEGIN
719 
720 		-- Standard Start of savepoint
721 		SAVEPOINT OTHER_Partner_OWRTY;
722 
723 		-- Initialize return variables before the procedure call.
724 		l_return_status := FND_API.G_RET_STS_SUCCESS;
725 		l_msg_count := 0;
726 		l_msg_data := NULL;
727 
728                 Update_Primary_Partner
729 		(
730 			p_entity_id		=> l_entity_id,
731 			p_primary_partner_type	=> l_attr_value ,
732 			x_return_status		=> l_return_status,
733 			x_msg_count		=> l_msg_count,
734 			x_msg_data		=> l_msg_data
735                );
736 
737 		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
738 			RAISE FND_API.G_EXC_ERROR;
739 		END IF;
740 
741               EXCEPTION
742 	         WHEN FND_API.G_EXC_ERROR THEN
743 			ROLLBACK TO OTHER_Partner_OWRTY;
744 		 WHEN OTHERS THEN
745 			ROLLBACK TO OTHER_Partner_OWRTY;
746 	    END;
747 
748             l_processed_count := l_processed_count + 1;
749             if mod(l_processed_count,50) = 0 then
750 		if p_running_mode = 'EXECUTION' then
751                     commit;
752 		end if;
753             end if;
754 
755             FETCH Get_Prtnr_Typ_Migrn_Overwrite
756                   INTO
757 			l_attr_value,
758                         l_entity_id;
759 
760 	   END LOOP;
761 
762 	 -- CLOSE the cursor Get_Prtnr_Typ_Migrn_OvWrt after processing all other types partners.
763 	 CLOSE Get_Prtnr_Typ_Migrn_Overwrite;
764 else
765   ---- ***************************************************** ----
766   ---- Process all VAD Partners first when p_OverWrite = 'N' ----
767   ---- ***************************************************** ----
768 	l_processed_count := 0;
769         OPEN Get_VAD_Prtnr_Typ_Migrn;
770         l_processed_count := Get_VAD_Prtnr_Typ_Migrn%RowCount;
771 
772         FETCH
776 		l_entity_id;
773             Get_VAD_Prtnr_Typ_Migrn
774 	INTO
775 		l_attr_value,
777 
778 	WHILE   Get_VAD_Prtnr_Typ_Migrn%FOUND
779 	LOOP
780 	   BEGIN
781 
782 
783 	        -- Standard Start of savepoint
784 		SAVEPOINT VAD_Partner_OWRTN;
785 
786 		-- Initialize return variables before the procedure call.
787 		l_return_status := FND_API.G_RET_STS_SUCCESS;
788 		l_msg_count := 0;
789 		l_msg_data := NULL;
790 
791 		Update_Primary_Partner(
792 			p_entity_id => l_entity_id,
793 			p_primary_partner_type => l_attr_value ,
794 			x_return_status    => l_return_status,
795 			x_msg_count        => l_msg_count,
796 			x_msg_data         => l_msg_data
797 		);
798 
799 		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
800 			RAISE FND_API.G_EXC_ERROR;
801 		END IF;
802 
803               EXCEPTION
804 	      	WHEN FND_API.G_EXC_ERROR THEN
805 			ROLLBACK TO VAD_Partner_OWRTN;
806 		WHEN OTHERS THEN
807 			ROLLBACK TO VAD_Partner_OWRTN;
808 	   END;
809 
810 	   l_processed_count := l_processed_count + 1;
811 	   if mod(l_processed_count,50) = 0 then
812 		if p_running_mode = 'EXECUTION' then
813 			commit;
814                 end if;
815 	   end if;
816 
817 	   FETCH
818                Get_VAD_Prtnr_Typ_Migrn
819 		INTO
820 		    l_attr_value,
821 		    l_entity_id;
822         END LOOP;
823 
824         CLOSE Get_VAD_Prtnr_Typ_Migrn;
825 
826   ---- ********************************************************* ----
827   ---- Process all Other Partners second, when p_OverWrite = 'N' ----
828   ---- ********************************************************* ----
829         OPEN Get_Prtnr_Typ_Migrn;
830         l_processed_count := l_processed_count + Get_Prtnr_Typ_Migrn%RowCount;
831         FETCH   Get_Prtnr_Typ_Migrn
832 		INTO
833 		  l_attr_value,
834 		  l_entity_id;
835 
836 	WHILE Get_Prtnr_Typ_Migrn%FOUND
837         LOOP
838 	   BEGIN
839 	        -- Standard Start of savepoint
840 		SAVEPOINT OTHER_Partner_OWRTN;
841 
842 		-- Initialize return variables before the procedure call.
843 		l_return_status := FND_API.G_RET_STS_SUCCESS;
844 		l_msg_count := 0;
845 		l_msg_data := NULL;
846 
847 		Update_Primary_Partner(
848 			p_entity_id => l_entity_id,
849 			p_primary_partner_type => l_attr_value ,
850 			x_return_status    => l_return_status,
851 			x_msg_count        => l_msg_count,
852 			x_msg_data         => l_msg_data
853 		);
854 
855 		IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
856 			RAISE FND_API.G_EXC_ERROR;
857 		END IF;
858 
859               EXCEPTION
860 	      	WHEN FND_API.G_EXC_ERROR THEN
861 			ROLLBACK TO OTHER_Partner_OWRTN;
862 		WHEN OTHERS THEN
863 			ROLLBACK TO OTHER_Partner_OWRTN;
864 	   END;
865 
866 	   l_processed_count := l_processed_count + 1;
867 	   if mod(l_processed_count,50) = 0 then
868 		if p_running_mode = 'EXECUTION' then
869 			commit;
870 		end if;
871 	   end if;
872 
873 	   FETCH   Get_Prtnr_Typ_Migrn
874 		INTO
875 		  l_attr_value,
876 		  l_entity_id;
877 
878 	END LOOP;
879 
880         CLOSE Get_Prtnr_Typ_Migrn;
881 
882 END IF;
883 --         FND_FILE.PUT_LINE(FND_FILE.LOG, '      Partner Type                              Number of Primary Partners');
884 
885          FND_MESSAGE.set_name('PV','PV_MIGR_PTNRTYP_COUNT');
886          FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
887 
888         FND_FILE.PUT_LINE(FND_FILE.LOG, '');
889 
890         for x in Get_Primary_Partner_Type_count
891         loop
892            FND_FILE.PUT_LINE(FND_FILE.LOG, '                        ' || rpad(x.attr_value,62) || '     ' || x.partner_count );
893         end loop;
894 
895         FND_FILE.PUT_LINE(FND_FILE.LOG, '');
896 
897      FND_MESSAGE.set_name('PV','PV_MIGR_FOOTER');
898      FND_MESSAGE.SET_TOKEN('PROCESSED',lpad(l_processed_count,5));
899      FND_MESSAGE.SET_TOKEN('UNPROCESSED',lpad(l_unprocessed_count,5));
900      FND_MESSAGE.SET_TOKEN('ENDDATE',TO_char(SYSDATE,'MM/DD/YYYY hh:mm:ss'));
901 
902      FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
903 
904     if p_Running_Mode = 'EVALUATION' then
905         ROLLBACK TO migrate_partner_type;
906     else
907         commit;
908     end if;
909 
910     EXCEPTION
911     WHEN OTHERS THEN
912 --            ROLLBACK;
913             FND_MESSAGE.SET_NAME('PV', 'PV_MIGR_ERROR');
914             FND_MESSAGE.SET_TOKEN('ERROR', SQLERRM);
915             errbuf  := FND_MESSAGE.get;
916             retcode := 2;
917             FND_FILE.PUT_LINE(FND_FILE.LOG, 'SQLERRM: ' || SQLERRM);
918             FOR I IN 1..FND_MSG_PUB.Count_Msg LOOP
919               FND_FILE.PUT_LINE(FND_FILE.LOG, 'message[' ||I||']=');
920               FND_FILE.PUT_LINE(FND_FILE.LOG, Substr(FND_MSG_PUB.Get(p_encoded => FND_API.G_FALSE ),1,255));
921             END LOOP;
922     END;
923 
924 
925 END;