DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_BULK_LOADER_PUB

Source


1 PACKAGE BODY QP_BULK_LOADER_PUB AS
2 /* $Header: QPXVBLKB.pls 120.24.12010000.5 2008/11/05 12:04:38 kdurgasi ship $ */
3 
4 FUNCTION GET_NULL_DATE RETURN DATE IS
5 BEGIN
6    RETURN G_NULL_DATE;
7 END;
8 
9 FUNCTION GET_NULL_CHAR RETURN VARCHAR2 IS
10 BEGIN
11    RETURN G_NULL_CHAR;
12 END;
13 
14 FUNCTION GET_NULL_NUMBER RETURN NUMBER IS
15 BEGIN
16    RETURN G_NULL_NUMBER;
17 END;
18 
19 PROCEDURE LOAD_PRICING_DATA
20 (
21   err_buff     OUT NOCOPY  VARCHAR2
22  ,retcode      OUT NOCOPY  NUMBER
23  ,p_entity                 VARCHAR2
24  ,p_entity_name		   VARCHAR2
25  ,p_process_id	           NUMBER
26  ,p_process_type           VARCHAR2
27  ,p_process_parent	   VARCHAR2
28  ,p_no_of_threads	   NUMBER   DEFAULT 1
29  ,p_spawned_request	   VARCHAR2
30  ,p_request_id  NUMBER   DEFAULT NULL
31  ,p_debug_on		   VARCHAR2
32  ,p_enable_dup_ln_check		   VARCHAR2
33 )
34 IS
35    BEGIN
36 
37 --added for moac
38 --Initialize MOAC and set org context to Multiple
39 
40   IF MO_GLOBAL.get_access_mode is null THEN
41     MO_GLOBAL.Init('QP');
42 --    MO_GLOBAL.set_policy_context('M', null);--commented as MO_GLOBAL.Init will set_policy_context  to 'M' or 'S' based on profile settings
43   END IF;--MO_GLOBAL
44 
45 
46    -- ENH duplicate line check flag RAVI
47    G_QP_ENABLE_DUP_LINE_CHECK  :=p_enable_dup_ln_check;
48    write_log('Duplicate Line Check: '||p_enable_dup_ln_check);
49 
50    G_QP_DEBUG := p_debug_on;
51    FND_FILE.PUT_LINE(FND_FILE.LOG, 'Debug On: '||G_QP_DEBUG);
52    FND_PROFILE.GET('QP_BATCH_SIZE_FOR_BULK_UPLOAD',g_qp_batch_size);
53    if g_qp_batch_size is NULL or g_qp_batch_size < 1 then
54 	g_qp_batch_size := 1000;
55    end if;
56    write_log('Batch Size: '||to_char(g_qp_batch_size));
57 
58    IF p_entity = 'PRL' THEN
59 
60       FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'------Processing Price List Entity--------');
61 
62       load_lists
63       ( err_buff=>err_buff
64 	,retcode=>retcode
65 	,p_entity_name=>p_entity_name
66 	,p_process_id=>p_process_id
67 	,p_process_type=>p_process_type
68 	,p_process_parent=>p_process_parent
69 	,p_no_of_threads=>p_no_of_threads
70 	,p_spawned_request=>p_spawned_request
71 	,p_request_id =>p_request_id);
72    ELSE
73         FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Only Price List Entity processing allowed');
74    END IF;
75 
76 END LOAD_PRICING_DATA;
77 
78 
79 PROCEDURE LOAD_LISTS
80  (
81         err_buff           OUT NOCOPY   VARCHAR2
82 	,retcode           OUT NOCOPY   NUMBER
83 	,p_entity_name                  VARCHAR2
84 	,p_process_id                   NUMBER
85 	,p_process_type                 VARCHAR2
86 	,p_process_parent               VARCHAR2
87 	,p_no_of_threads                NUMBER
88 	,p_spawned_request              VARCHAR2
89 	,p_request_id                   NUMBER   )
90 IS
91 
92      l_rows NATURAL;
93      l_request_id NUMBER;
94      l_no_of_lines NUMBER:=0;
95      l_batch_size NUMBER:=0;
96      l_mod NUMBER:=0;
97      l_req_data VARCHAR2(10);
98      l_req_data_counter NUMBER;
99      l_new_request_id NUMBER;
100      l_no_of_threads NUMBER;
101      l_retcode NUMBER;
102      l_err_buff VARCHAR2(240);
103      l_min_hdr_id NUMBER;
104      l_max_hdr_id NUMBER;
105      l_min_list_line_id NUMBER;
106      l_max_list_line_id NUMBER;
107      l_list_header_id NUMBER;
108      l_process_parent VARCHAR2(50);
109      l_count NUMBER;
110      l_source_system_code VARCHAR2(30);
111      l_pte_code VARCHAR2(30);
112 
113      l_suc_line NUMBER;
114      l_err_line NUMBER;
115      l_suc_pr_attr NUMBER;
116      l_err_pr_attr NUMBER;
117 
118     l_start_time number;
119     l_end_time number;
120 
121     --Bug#3604426 RAVI
122     l_msg_txt VARCHAR2(2000);
123 
124     --ENH Update Functionality RAVI
125     /**
126     local variables for holding the number of headers and header qualifeirs
127     to be processed.
128     **/
129     l_header_count NUMBER:=0;
130     l_qualifier_count NUMBER:=0;
131 
132      BEGIN
133 
134      l_no_of_threads :=p_no_of_threads;
135      l_process_parent := p_process_parent;
136    /*-----------------------------------------------------------
137                    HEADER PROCESSING
138    -------------------------------------------------------------*/
139 
140       IF p_spawned_request = 'N' or p_spawned_request IS NULL
141       THEN
142 
143 	 FND_PROFILE.Get('CONC_REQUEST_ID', l_request_id);
144 	 write_log('Parent Request Id: '||l_request_id);
145 
146          IF p_no_of_threads IS NULL THEN
147 	    l_no_of_threads := 1;
148 	 END IF;
149 
150 	 IF p_process_parent IS NULL THEN
151 	    l_process_parent := 'Y';
152 	 END IF;
153 
154 	 l_req_data := fnd_conc_global.request_data;
155 
156 	 IF ( l_req_data IS NOT NULL)
157 	 THEN
158 	    write_log( 'Second call');
159 
160 	  select hsecs into l_start_time from v$timer;
161           write_log( 'Start time :'||to_char(sysdate,'MM/DD/YYYY:HH:MM:SS'));
162 
163 	 l_req_data_counter:=to_number(l_req_data) + 1;
164 
165 	   select min(list_header_id), max(list_header_id)
166 	     into l_min_hdr_id, l_max_hdr_id
167 	     from qp_list_headers_b
168 	    where request_id = l_request_id;
169 
170          write_log( 'LOW HEADER ID: '||l_min_hdr_id);
171          write_log( 'HIGH HEADER ID: '||l_max_hdr_id);
172 
173 	 IF l_min_hdr_id IS NOT NULL  AND l_max_hdr_id IS NOT NULL THEN
174 	     QP_Maintain_Denormalized_Data.Update_Qualifiers
175 		(err_buff => l_err_buff,
176 		 retcode => l_retcode,
177 		 p_List_Header_Id => l_min_hdr_id,
178 		 p_List_Header_Id_high => l_max_hdr_id,
179 		 p_update_type => 'QUAL_IND'
180 		 );
181 
182 	    Begin
183 	     update qp_pte_segments
184 	     set used_in_setup='Y'
185 	     where nvl(used_in_setup,'N')='N'
186 	     and segment_id in
187 		(select a.segment_id
188 		from qp_segments_b a, qp_prc_contexts_b b, qp_qualifiers c, qp_list_headers_b h
189 		where h.list_header_id  BETWEEN  l_min_hdr_id  and l_max_hdr_id
190 		and  h.active_flag = 'Y'
191 		and   c.list_header_id = h.list_header_id
192 		and   a.segment_mapping_column = c.qualifier_attribute
193 		and   a.prc_context_id         = b.prc_context_id
194 		and   b.prc_context_type       = 'QUALIFIER'
195 		and   b.prc_context_code       = c.qualifier_context);
196 
197 	     update qp_pte_segments
198 	     set used_in_setup='Y'
199 	     where nvl(used_in_setup,'N')='N'
200 		and segment_id in
201 		(select  a.segment_id
202 		from qp_segments_b a, qp_prc_contexts_b b, qp_pricing_attributes c, qp_list_headers_b h
203 		where h.list_header_id BETWEEN  l_min_hdr_id  and l_max_hdr_id
204 		and    h.active_flag = 'Y'
205 		and   c.list_header_id         = h.list_header_id
206 		and   a.segment_mapping_column = c.pricing_attribute
207 		and   a.prc_context_id         = b.prc_context_id
208 		and   b.prc_context_type       = 'PRICING_ATTRIBUTE'
209 		and   b.prc_context_code       = c.pricing_attribute_context);
210 
211 	     update qp_pte_segments
212 	     set used_in_setup='Y'
213 	     where nvl(used_in_setup,'N')='N'
214 		and segment_id in
215 		(select  a.segment_id
216 		from qp_segments_b a, qp_prc_contexts_b b, qp_pricing_attributes c, qp_list_headers_b h
217 		where h.list_header_id BETWEEN  l_min_hdr_id  and l_max_hdr_id
218 		and    h.active_flag = 'Y'
219 		and   c.list_header_id         = h.list_header_id
220 		and   a.segment_mapping_column = c.product_attribute
221 		and   a.prc_context_id         = b.prc_context_id
222 		and   b.prc_context_type       = 'PRODUCT'
223 		and   b.prc_context_code       = c.product_attribute_context);
224 	     Exception
225 		when others then
226 			null;
227 	     End;
228 
229 	   IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Installed = 'Y' THEN
230 	     for l_list_header_id in l_min_hdr_id..l_max_hdr_id
231 	     loop
232 		begin
233 		    select min(list_line_id), max(list_line_id)
234 		    into   l_min_list_line_id, l_max_list_line_id
235 		    from   qp_list_lines
236 		    where  list_header_id = l_list_header_id;
237 
238 		  QP_ATTR_GRP_PVT.Update_Qual_Segment_id(l_list_header_id,
239 							    null,
240 							    -1,
241 							    -1);
242 		  QP_ATTR_GRP_PVT.Update_Prod_Pric_Segment_id(l_list_header_id,
243 						    l_min_list_line_id,l_max_list_line_id);
244 		  QP_ATTR_GRP_PVT.generate_hp_atgrps(l_list_header_id,null);
245 		  QP_ATTR_GRP_PVT.update_pp_lines(l_list_header_id,
246 						    l_min_list_line_id,l_max_list_line_id);
247 		exception
248 			when others then
249 				null;
250 		end;
251 	     end loop;
252 	    END IF;
253 	 END IF;
254 
255          IF l_retcode <> 0 THEN
256 	    retcode := 2;
257 	    write_log( 'Error in procedure QP_Maintain_Denormalized_Data.Update_Qualifiers');
258          END IF;
259 
260 	 --clean up code
261 	 CLEAN_UP_CODE(l_request_id);
262 
263 	select hsecs into l_end_time from v$timer;
264 	write_log( 'End time :'||to_char(sysdate,'MM/DD/YYYY:HH:MM:SS'));
265 	FND_FILE.PUT_LINE(FND_FILE.LOG, 'Time taken for the header process 2 (sec):' ||(l_end_time - l_start_time)/100);
266 	 Return;
267       ELSE -- ( l_req_data IS NULL)
268 	 write_log( 'First Call');
269 	 l_req_data_counter:=1;
270 
271       END IF; -- ( l_req_data IS NOT NULL)
272 
273   ----   Header Started
274 
275 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'-----------Bulk Pricelist Data Loader---------');
276 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Paremeters');
277 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Entity Name: '||p_entity_name);
278 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Process Id: '||p_process_id);
279 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Process Type:'||p_process_type);
280 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Process Parent: '||p_process_parent);
281 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Number Of Threads: '||p_no_of_threads);
282 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '------------------------------');
283 
284      select hsecs into l_start_time from v$timer;
285      write_log( 'Start time :'||to_char(sysdate,'MM/DD/YYYY:HH:MM:SS'));
286 
287        FND_PROFILE.GET('QP_SOURCE_SYSTEM_CODE', l_source_system_code);
288        FND_PROFILE.GET('QP_PRICING_TRANSACTION_ENTITY',l_pte_code);
289 
290        write_log('Source system code (Profile) :'||l_source_system_code);
291        write_log('PTE_Code (Profile) :'||l_pte_code);
292 
293 	 IF p_entity_name IS NOT NULL
294          THEN
295 
296             -- Bug#3604226 RAVI START
297             -- Orig_Sys_Hdr_ref has to be unique for insertion
298             fnd_message.set_name('QP', 'QP_HDR_REF_NOT_UNIQUE');
299             l_msg_txt := FND_MESSAGE.GET;
300 
301             INSERT INTO QP_INTERFACE_ERRORS
302              (error_id,last_update_date, last_updated_by, creation_date,
303               created_by, last_update_login, request_id, program_application_id,
304               program_id, program_update_date, entity_type, table_name, column_name,
305               orig_sys_header_ref,orig_sys_line_ref,orig_sys_qualifier_ref,
306               orig_sys_pricing_attr_ref,  error_message)
307               SELECT
308                qp_interface_errors_s.nextval, sysdate ,FND_GLOBAL.USER_ID, sysdate,
309                FND_GLOBAL.USER_ID, FND_GLOBAL.CONC_LOGIN_ID, l_request_id, 661,
310                NULL,NULL, 'PRL', 'QP_INTERFACE_LIST_HEADERS',  'ORIG_SYS_HEADER_REF',
311                qpih.orig_sys_header_ref,null,null,null,l_msg_txt
312               FROM QP_INTERFACE_LIST_HEADERS qpih
313               WHERE qpih.name = p_entity_name
314                 AND qpih.process_status_flag ='P' --is null
315                 AND qpih.interface_action_code ='INSERT'
316                 AND EXISTS(
317                       select 1 from qp_list_headers_b qplh
318                       where qplh.orig_system_header_ref=qpih.orig_sys_header_ref
319                       );
320             IF SQL%ROWCOUNT > 0 THEN
321               Write_Log('ERROR: Hdr_Ref not Unique');
322             END IF;
323             -- Bug#3604226 RAVI END
324 
325 
326             -- Bug 4958784 RAVI
327             /**
328             Load only if header with same orig_sys_hdr_ref is non existent
329             in qp tables for INSERT action
330             **/
331 	    UPDATE qp_interface_list_headers qpih
332             SET    qpih.request_id = l_request_id, qpih.process_status_flag = 'P'
333 	    WHERE  qpih.name = p_entity_name
334 	    AND    (qpih.source_system_code IS NULL
335 		or (qpih.source_system_code = nvl(l_source_system_code, qpih.source_system_code)))
336 	    AND    (qpih.pte_code IS NULL or (qpih.pte_code = nvl(l_pte_code, qpih.pte_code)))
337 	    AND    nvl(qpih.list_source_code, '*') <> 'BSO'
338 	    AND    nvl(qpih.process_id,0) = nvl(p_process_id, nvl(qpih.process_id,0))
339             AND    qpih.list_type_code = 'PRL'
340 	    AND    qpih.process_flag = 'Y'
341 	    AND    nvl(qpih.process_type,' ') = nvl(p_process_type, nvl(qpih.process_type,' '))
342 	    AND    qpih.interface_action_code IN ('INSERT','UPDATE','DELETE')
343             -- Bug 5208480(5208112,4188784) RAVI
344             -- Should not be able to update list type code
345             AND NOT EXISTS(
346                select 1 from qp_list_headers qplh
347                where qpih.interface_action_code = 'UPDATE'
348                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
349                and qplh.list_type_code <> qpih.list_type_code
350             )
351             -- Should not be able to update list header id
352             AND NOT EXISTS(
353                select 1 from qp_list_headers qplh
354                where qpih.interface_action_code = 'UPDATE'
355                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
356                and qpih.list_header_id is not null
357                and qplh.list_header_id <> qpih.list_header_id
358             )
359             -- Should not be able to update rounding factor
360             --Bug#5208112 RAVI
361             --Validation shifted to QP_BULK_VALIDATE package.
362             /**
363             AND NOT EXISTS(
364                select 1 from qp_list_headers qplh
365                where qpih.interface_action_code = 'UPDATE'
366                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
367                and qpih.rounding_factor is not null
368                and qplh.rounding_factor <> qpih.rounding_factor
369             )
370             **/
371             -- Bug# 5246745 RAVI
372             -- Should not be able to update list source code
373             AND NOT EXISTS(
374                select 1 from qp_list_headers qplh
375                where qpih.interface_action_code = 'UPDATE'
376                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
377                and qpih.list_source_code is not null
378                and qplh.list_source_code <> qpih.list_source_code
379             )
380             -- Bug# 5246745 RAVI
381             -- Should not be able to update list source code
382             AND NOT EXISTS(
383                select 1 from qp_list_headers qplh
384                where qpih.interface_action_code = 'UPDATE'
385                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
386                and qpih.source_system_code is not null
387                and qplh.source_system_code <> qpih.source_system_code
388             )
389             -- Bug# 5246745 RAVI
390             -- Should not be able to update list source code
391             AND NOT EXISTS(
392                select 1 from qp_list_headers qplh
393                where qpih.interface_action_code = 'UPDATE'
394                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
395                and qpih.source_system_code is not null
396                and qplh.source_system_code <> qpih.source_system_code
397             )
398             AND NOT EXISTS(
402             /**
399               select 1 from qp_list_headers qplh
400               where qpih.interface_action_code = 'INSERT'
401             -- ENH undo alcoa changes RAVI
403             The key between interface and qp tables is only orig_sys_hdr_ref
404             (not list_header_id)
405             **/
406               and qplh.orig_system_header_ref=qpih.orig_sys_header_ref);
407 
408           --ENH Update Functionality RAVI
409           /**
410           The number of interface headers loaded for processing
411           (insert,update,delete)
412           **/
413 	  l_header_count:=SQL%ROWCOUNT;
414 
415           --ENH Update Functionality RAVI
416           /**
417           If interface action is update then load all null value interface columns
418           with values from corresponding qp table columns
419           **/
420           UPDATE qp_interface_list_headers qpih
421           SET ( creation_date,
422 	      created_by,
423               program_application_id,
424               program_id,
425               program_update_date,
426               list_type_code,
427               start_date_active,
428               end_date_active,
429               source_lang,
430               automatic_flag,
431               name,
432               description,
433               currency_code,
434               version_no,
435               rounding_factor,
436               ship_method_code,
437               freight_terms_code,
438               terms_id,
439               comments,
440               discount_lines_flag,
441               gsa_indicator,
442               prorate_flag,
443               source_system_code,
444               ask_for_flag,
445               active_flag,
446               parent_list_header_id,
447               active_date_first_type,
448               start_date_active_first,
449               end_date_active_first,
450               active_date_second_type,
451               start_date_active_second,
452               end_date_active_second,
453               context,
454               attribute1,
455               attribute2,
456               attribute3,
457               attribute4,
458               attribute5,
459               attribute6,
460               attribute7,
461               attribute8,
462               attribute9,
463               attribute10,
464               attribute11,
465               attribute12,
466               attribute13,
467               attribute14,
468               attribute15,
469               language,
470               mobile_download,
471               currency_header_id,
472               orig_sys_header_ref,
473               orig_org_id,
474               global_flag
475              ) = ( select
476              		decode(qpih.creation_date, null, qplh.creation_date,
477                               decode(qpih.creation_date,
478                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
479                                      null,
480                                      qpih.creation_date
481                                      )
482                               ),
483                         decode(qpih.created_by, null, qplh.created_by,
484                               decode(qpih.created_by,
485                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
486                                      null,
487                                      qpih.created_by
488                                      )
489                               ),
490                         decode(qpih.program_application_id, null, qplh.program_application_id,
491                               decode(qpih.program_application_id,
492                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
493                                      null,
494                                      qpih.program_application_id
495                                      )
496                               ),
497                         decode(qpih.program_id, null, qplh.program_id,
498                               decode(qpih.program_id,
499                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
500                                      null,
501                                      qpih.program_id
502                                      )
503                               ),
504                         decode(qpih.program_update_date, null, qplh.program_update_date,
505                               decode(qpih.program_update_date,
506                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
507                                      null,
508                                      qpih.program_update_date
509                                      )
510                               ),
511                         decode(qpih.list_type_code, null, qplh.list_type_code,
512                               decode(qpih.list_type_code,
513                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
514                                      null,
515                                      qpih.list_type_code
516                                      )
517                               ),
518        			--Bug# 5228368 RAVI
519                         decode(qpih.start_date_active, null, to_char(qplh.start_date_active,'YYYY/MM/DD'),
520                               decode(qpih.start_date_active,
521                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
522                                      null,
523                                      qpih.start_date_active
524                                      )
525                               ),
526        			--Bug# 5228368 RAVI
527                         decode(qpih.end_date_active, null, to_char(qplh.end_date_active,'YYYY/MM/DD'),
528                               decode(qpih.end_date_active,
529                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
530                                      null,
531                                      qpih.end_date_active
532                                      )
533                               ),
534                         decode(qpih.source_lang, null, userenv('lang'),
535                               decode(qpih.source_lang,
536                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
537                                      null,
538                                      qpih.source_lang
539                                      )
540                               ),
541                         decode(qpih.automatic_flag, null, qplh.automatic_flag,
542                               decode(qpih.automatic_flag,
543                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
544                                      null,
545                                      qpih.automatic_flag
546                                      )
547                               ),
548                         decode(qpih.name, null, qplh.name,
549                               decode(qpih.name,
550                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
551                                      null,
552                                      qpih.name
553                                      )
554                               ),
555                         decode(qpih.description, null, qplh.description,
556                               decode(qpih.description,
557                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
558                                      null,
559                                      qpih.description
560                                      )
561                               ),
562                         decode(qpih.currency_code, null, qplh.currency_code,
563                               decode(qpih.currency_code,
564                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
565                                      null,
566                                      qpih.currency_code
567                                      )
568                               ),
569                         decode(qpih.version_no, null, qplh.version_no,
570                               decode(qpih.version_no,
571                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
572                                      null,
573                                      qpih.version_no
574                                      )
575                               ),
576                         decode(qpih.rounding_factor, null, qplh.rounding_factor,
577                               decode(qpih.rounding_factor,
578                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
579                                      null,
580                                      qpih.rounding_factor
581                                      )
582                               ),
583                         --Bug# 5412029 RAVI START
584                         /**
585                          * If VALUE=null then
586                          *    If ID=null update ID to existing data
587                          *    If ID=id update ID to id
588                          *    If ID=G_NULL update ID to null
589                          * If VALUE<>null then
590                          *    If ID=null update ID to existing data
591                          *    If ID=id update ID to id
592                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
593                          **/
594                         decode(qpih.ship_method,
595                                null,
596                                decode(qpih.ship_method_code, null, qplh.ship_method_code,
597                                       decode(qpih.ship_method_code,
598                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
599                                              null,
600                                              qpih.ship_method_code
601                                              )
605                                       qpih.ship_method_code
602                                      ),
603                                decode(qpih.ship_method_code, null, null,
604                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
606                                      )
607                               ),
608                         decode(qpih.freight_terms,
609                                null,
610                                decode(qpih.freight_terms_code, null, qplh.freight_terms_code,
611                                       decode(qpih.freight_terms_code,
612                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
613                                              null,
614                                              qpih.freight_terms_code
615                                              )
616                                      ),
617                                decode(qpih.freight_terms_code, null, null,
618                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
619                                       qpih.freight_terms_code
620                                      )
621                               ),
622                         decode(qpih.terms,
623                                null,
624                                decode(qpih.terms_id, null, qplh.terms_id,
625                                       decode(qpih.terms_id,
626                                              QP_BULK_LOADER_PUB.G_NULL_NUMBER,
627                                              null,
628                                              qpih.terms_id
629                                              )
630                                      ),
631                                decode(qpih.terms_id, null, null,
632                                       QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
633                                       qpih.terms_id
634                                      )
635                               ),
636                         --Bug# 5412029 RAVI END
637                         decode(qpih.comments, null, qplh.comments,
638                               decode(qpih.comments,
639                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
640                                      null,
641                                      qpih.comments
642                                      )
643                               ),
644                         decode(qpih.discount_lines_flag, null, qplh.discount_lines_flag,
645                               decode(qpih.discount_lines_flag,
646                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
647                                      null,
648                                      qpih.discount_lines_flag
649                                      )
650                               ),
651                         decode(qpih.gsa_indicator, null, qplh.gsa_indicator,
652                               decode(qpih.gsa_indicator,
653                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
654                                      null,
655                                      qpih.gsa_indicator
656                                      )
657                               ),
658                         decode(qpih.prorate_flag, null, qplh.prorate_flag,
659                               decode(qpih.prorate_flag,
660                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
661                                      null,
662                                      qpih.prorate_flag
663                                      )
664                               ),
665                         decode(qpih.source_system_code, null, qplh.source_system_code,
666                               decode(qpih.source_system_code,
667                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
668                                      null,
669                                      qpih.source_system_code
670                                      )
671                               ),
672                         decode(qpih.ask_for_flag, null, qplh.ask_for_flag,
673                               decode(qpih.ask_for_flag,
674                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
675                                      null,
676                                      qpih.ask_for_flag
677                                      )
678                               ),
679                         decode(qpih.active_flag, null, qplh.active_flag,
680                               decode(qpih.active_flag,
681                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
682                                      null,
683                                      qpih.active_flag
684                                      )
685                               ),
686                         decode(qpih.parent_list_header_id, null, qplh.parent_list_header_id,
687                               decode(qpih.parent_list_header_id,
688                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
689                                      null,
690                                      qpih.parent_list_header_id
691                                      )
692                               ),
693                         decode(qpih.active_date_first_type, null, qplh.active_date_first_type,
694                               decode(qpih.active_date_first_type,
695                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
696                                      null,
697                                      qpih.active_date_first_type
698                                      )
699                               ),
703                                      null,
700                         decode(qpih.start_date_active_first, null, qplh.start_date_active_first,
701                               decode(qpih.start_date_active_first,
702                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
704                                      qpih.start_date_active_first
705                                      )
706                               ),
707                         decode(qpih.end_date_active_first, null, qplh.end_date_active_first,
708                               decode(qpih.end_date_active_first,
709                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
710                                      null,
711                                      qpih.end_date_active_first
712                                      )
713                               ),
714                         decode(qpih.active_date_second_type, null, qplh.active_date_second_type,
715                               decode(qpih.active_date_second_type,
716                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
717                                      null,
718                                      qpih.active_date_second_type
719                                     )
720                               ),
721                         decode(qpih.start_date_active_second, null, qplh.start_date_active_second,
722                               decode(qpih.start_date_active_second,
723                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
724                                      null,
725                                      qpih.start_date_active_second
726                                      )
727                               ),
728                         decode(qpih.end_date_active_second, null, qplh.end_date_active_second,
729                               decode(qpih.end_date_active_second,
730                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
731                                      null,
732                                      qpih.end_date_active_second
733                                      )
734                               ),
735                         decode(qpih.context, null, qplh.context,
736                               decode(qpih.context,
737                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
738                                      null,
739                                      qpih.context
740                                      )
741                               ),
742                         decode(qpih.attribute1, null, qplh.attribute1,
743                               decode(qpih.attribute1,
744                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
745                                      null,
746                                      qpih.attribute1
747                                      )
748                               ),
749                         decode(qpih.attribute2, null, qplh.attribute2,
750                               decode(qpih.attribute2,
751                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
752                                      null,
753                                      qpih.attribute2
754                                      )
755                               ),
756                         decode(qpih.attribute3, null, qplh.attribute3,
757                               decode(qpih.attribute3,
758                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
759                                      null,
760                                      qpih.attribute3
761                                      )
762                               ),
763                         decode(qpih.attribute4, null, qplh.attribute4,
764                               decode(qpih.attribute4,
765                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
766                                      null,
767                                      qpih.attribute4
768                                      )
769                               ),
770                         decode(qpih.attribute5, null, qplh.attribute5,
771                               decode(qpih.attribute5,
772                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
773                                      null,
774                                      qpih.attribute5
775                                      )
776                               ),
777                         decode(qpih.attribute6, null, qplh.attribute6,
778                               decode(qpih.attribute6,
779                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
780                                      null,
781                                      qpih.attribute6
782                                      )
783                               ),
784                         decode(qpih.attribute7, null, qplh.attribute7,
785                               decode(qpih.attribute7,
786                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
787                                      null,
788                                      qpih.attribute7
789                                      )
790                               ),
791                         decode(qpih.attribute8, null, qplh.attribute8,
792                               decode(qpih.attribute8,
793                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
794                                      null,
795                                      qpih.attribute8
796                                      )
797                               ),
801                                      null,
798                         decode(qpih.attribute9, null, qplh.attribute9,
799                               decode(qpih.attribute9,
800                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
802                                      qpih.attribute9
803                                      )
804                               ),
805                         decode(qpih.attribute10, null, qplh.attribute10,
806                               decode(qpih.attribute10,
807                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
808                                      null,
809                                      qpih.attribute10
810                                      )
811                               ),
812                         decode(qpih.attribute11, null, qplh.attribute11,
813                               decode(qpih.attribute11,
814                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
815                                      null,
816                                      qpih.attribute11
817                                      )
818                               ),
819                         decode(qpih.attribute12, null, qplh.attribute12,
820                               decode(qpih.attribute12,
821                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
822                                      null,
823                                      qpih.attribute12
824                                      )
825                               ),
826                         decode(qpih.attribute13, null, qplh.attribute13,
827                               decode(qpih.attribute13,
828                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
829                                      null,
830                                      qpih.attribute13
831                                      )
832                               ),
833                         decode(qpih.attribute14, null, qplh.attribute14,
834                               decode(qpih.attribute14,
835                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
836                                      null,
837                                      qpih.attribute14
838                                      )
839                               ),
840                         decode(qpih.attribute15, null, qplh.attribute15,
841                               decode(qpih.attribute15,
842                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
843                                      null,
844                                      qpih.attribute15
845                                      )
846                               ),
847                         decode(qpih.language, null, userenv('lang'),
848                               decode(qpih.language,
849                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
850                                      null,
851                                      qpih.language
852                                      )
853                               ),
854                         decode(qpih.mobile_download, null, qplh.mobile_download,
855                               decode(qpih.mobile_download,
856                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
857                                      null,
858                                      qpih.mobile_download
859                                      )
860                               ),
861                         --Bug# 5412029 RAVI START
862                         /**
863                          * If VALUE=null then
864                          *    If ID=null update ID to existing data
865                          *    If ID=id update ID to id
866                          *    If ID=G_NULL update ID to null
867                          * If VALUE<>null then
868                          *    If ID=null update ID to existing data
869                          *    If ID=id update ID to id
870                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
871                          **/
872                         decode(qpih.currency_header,
873                                null,
874                                decode(qpih.currency_header_id, null, qplh.currency_header_id,
875                                       decode(qpih.currency_header_id,
876                                              QP_BULK_LOADER_PUB.G_NULL_NUMBER,
877                                              null,
878                                              qpih.currency_header_id
879                                              )
880                                      ),
881                                decode(qpih.currency_header_id, null, null,
882                                       QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
883                                       qpih.currency_header_id
884                                      )
885                               ),
886                         --Bug# 5412029 RAVI END
887                         decode(qpih.orig_sys_header_ref, null, qplh.orig_system_header_ref,
888                               decode(qpih.orig_sys_header_ref,
889                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
890                                      null,
891                                      qpih.orig_sys_header_ref
892                                      )
893                               ),
894                         decode(qpih.orig_org_id, null, qplh.orig_org_id,
895                               decode(qpih.orig_org_id,
899                                      )
896                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
897                                      null,
898                                      qpih.orig_org_id
900                               ),
901                         decode(qpih.global_flag, null, qplh.global_flag,
902                               decode(qpih.global_flag,
903                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
904                                      null,
905                                      qpih.global_flag
906                                      )
907                               )
908                    from  qp_list_headers qplh
909                    where qplh.orig_system_header_ref=qpih.orig_sys_header_ref
910                   )
911             where qpih.request_id = l_request_id
912             and qpih.process_status_flag = 'P'
913             and qpih.interface_action_code = 'UPDATE';
914 
915 	 ELSE
916 
917             -- Bug#3604226 RAVI START
918             -- Orig_Sys_Hdr_ref has to be unique for insertion
919 
920             fnd_message.set_name('QP', 'QP_HDR_REF_NOT_UNIQUE');
921             l_msg_txt := FND_MESSAGE.GET;
922 
923             INSERT INTO QP_INTERFACE_ERRORS
924              (error_id,last_update_date, last_updated_by, creation_date,
925               created_by, last_update_login, request_id, program_application_id,
926               program_id, program_update_date, entity_type, table_name, column_name,
927               orig_sys_header_ref,orig_sys_line_ref,orig_sys_qualifier_ref,
928               orig_sys_pricing_attr_ref,  error_message)
929               SELECT
930                qp_interface_errors_s.nextval, sysdate ,FND_GLOBAL.USER_ID, sysdate,
931                FND_GLOBAL.USER_ID, FND_GLOBAL.CONC_LOGIN_ID, l_request_id, 661,
932                NULL,NULL, 'PRL', 'QP_INTERFACE_LIST_HEADERS',  'ORIG_SYS_HEADER_REF',
933                qpih.orig_sys_header_ref,null,null,null,l_msg_txt
934               FROM QP_INTERFACE_LIST_HEADERS qpih
935               WHERE nvl(qpih.process_type,' ') = nvl(p_process_type, nvl(qpih.process_type,' '))
936                 AND nvl(qpih.process_id,0) = nvl(p_process_id, nvl(qpih.process_id,0))
937                 AND qpih.process_status_flag ='P' --is null
938                 AND qpih.interface_action_code ='INSERT'
939                 AND EXISTS(
940                       select 1 from qp_list_headers_b qplh
941                       where qplh.orig_system_header_ref=qpih.orig_sys_header_ref
942                       );
943             IF SQL%ROWCOUNT > 0 THEN
944               Write_Log('ERROR: Hdr_Ref not Unique');
945             END IF;
946             -- Bug#3604226 RAVI END
947 
948             -- Bug 4958784 RAVI
949             /**
950             Load only if header with same orig_sys_hdr_ref is non existent
951             in qp tables for INSERT action
952             **/
953             write_log('Entity Name Is null');
954 	    UPDATE qp_interface_list_headers qpih
955 	    SET    qpih.request_id = l_request_id
956 	    WHERE  qpih.request_id is null
957 	    AND    (qpih.source_system_code IS NULL
958 		or (qpih.source_system_code = nvl(l_source_system_code, qpih.source_system_code)))
959 	    AND    (qpih.pte_code IS NULL or (qpih.pte_code = nvl(l_pte_code, qpih.pte_code)))
960 	    AND    nvl(qpih.list_source_code, '*') <> 'BSO'
961             AND    process_status_flag = 'P'
962             AND    nvl(qpih.process_id,0) = nvl(p_process_id, nvl(qpih.process_id,0))
963             AND    qpih.list_type_code = 'PRL'
964 	    AND    decode(p_process_id, null,qpih.process_flag,'Y') = 'Y'
965 	    AND    nvl(qpih.process_type,' ') = nvl(p_process_type, nvl(qpih.process_type,' '))
966 	    AND    qpih.interface_action_code IN ('INSERT','UPDATE','DELETE')
967             -- Bug 5208480(5208112,4188784) RAVI
968             AND NOT EXISTS(
969                select 1 from qp_list_headers qplh
970                where qpih.interface_action_code = 'UPDATE'
971                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
972                and qplh.list_type_code <> qpih.list_type_code
973             )
974             AND NOT EXISTS(
975                select 1 from qp_list_headers qplh
976                where qpih.interface_action_code = 'UPDATE'
977                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
978                and qpih.list_header_id is not null
979                and qplh.list_header_id <> qpih.list_header_id
980             )
981             AND NOT EXISTS(
982                select 1 from qp_list_headers qplh
983                where qpih.interface_action_code = 'UPDATE'
984                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
985                and qpih.rounding_factor is not null
986                and qplh.rounding_factor <> qpih.rounding_factor
987             )
988             -- Bug# 5246745 RAVI
989             -- Should not be able to update list source code
990             AND NOT EXISTS(
991                select 1 from qp_list_headers qplh
992                where qpih.interface_action_code = 'UPDATE'
993                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
994                and qpih.list_source_code is not null
995                and qplh.list_source_code <> qpih.list_source_code
996             )
997             -- Bug# 5246745 RAVI
998             -- Should not be able to update list source code
1002                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
999             AND NOT EXISTS(
1000                select 1 from qp_list_headers qplh
1001                where qpih.interface_action_code = 'UPDATE'
1003                and qpih.source_system_code is not null
1004                and qplh.source_system_code <> qpih.source_system_code
1005             )
1006             -- Bug# 5246745 RAVI
1007             -- Should not be able to update list source code
1008             AND NOT EXISTS(
1009                select 1 from qp_list_headers qplh
1010                where qpih.interface_action_code = 'UPDATE'
1011                and qplh.orig_system_header_ref=qpih.orig_sys_header_ref
1012                and qpih.source_system_code is not null
1013                and qplh.source_system_code <> qpih.source_system_code
1014             )
1015             AND NOT EXISTS(
1016             select 1 from qp_list_headers qplh
1017             where qpih.interface_action_code = 'INSERT'
1018             -- ENH undo alcoa changes RAVI
1019             /**
1020             The key between interface and qp tables is only orig_sys_hdr_ref
1021             (not list_header_id)
1022             **/
1023             and qplh.orig_system_header_ref=qpih.orig_sys_header_ref);
1024 
1025           --ENH Update Functionality RAVI
1026           /**
1027           The number of interface headers loaded for processing
1028           (insert,update,delete)
1029           **/
1030 	  l_header_count:=SQL%ROWCOUNT;
1031 
1032           --ENH Update Functionality RAVI
1033           /**
1034           If interface action is update then load all null value interface columns
1035           with values from corresponding qp table columns
1036           **/
1037           UPDATE qp_interface_list_headers qpih
1038           SET ( creation_date,
1039 	      created_by,
1040               program_application_id,
1041               program_id,
1042               program_update_date,
1043               list_type_code,
1044               start_date_active,
1045               end_date_active,
1046               source_lang,
1047               automatic_flag,
1048               name,
1049               description,
1050               currency_code,
1051               version_no,
1052               rounding_factor,
1053               ship_method_code,
1054               freight_terms_code,
1055               terms_id,
1056               comments,
1057               discount_lines_flag,
1058               gsa_indicator,
1059               prorate_flag,
1060               source_system_code,
1061               ask_for_flag,
1062               active_flag,
1063               parent_list_header_id,
1064               active_date_first_type,
1065               start_date_active_first,
1066               end_date_active_first,
1067               active_date_second_type,
1068               start_date_active_second,
1069               end_date_active_second,
1070               context,
1071               attribute1,
1072               attribute2,
1073               attribute3,
1074               attribute4,
1075               attribute5,
1076               attribute6,
1077               attribute7,
1078               attribute8,
1079               attribute9,
1080               attribute10,
1081               attribute11,
1082               attribute12,
1083               attribute13,
1084               attribute14,
1085               attribute15,
1086               language,
1087               mobile_download,
1088               currency_header_id,
1089               orig_sys_header_ref,
1090               orig_org_id,
1091               global_flag
1092              ) = ( select
1093              		decode(qpih.creation_date, null, qplh.creation_date,
1094                               decode(qpih.creation_date,
1095                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
1096                                      null,
1097                                      qpih.creation_date
1098                                      )
1099                               ),
1100                         decode(qpih.created_by, null, qplh.created_by,
1101                               decode(qpih.created_by,
1102                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1103                                      null,
1104                                      qpih.created_by
1105                                      )
1106                               ),
1107                         decode(qpih.program_application_id, null, qplh.program_application_id,
1108                               decode(qpih.program_application_id,
1109                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1110                                      null,
1111                                      qpih.program_application_id
1112                                      )
1113                               ),
1114                         decode(qpih.program_id, null, qplh.program_id,
1115                               decode(qpih.program_id,
1116                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1117                                      null,
1118                                      qpih.program_id
1119                                      )
1120                               ),
1121                         decode(qpih.program_update_date, null, qplh.program_update_date,
1125                                      qpih.program_update_date
1122                               decode(qpih.program_update_date,
1123                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
1124                                      null,
1126                                      )
1127                               ),
1128                         decode(qpih.list_type_code, null, qplh.list_type_code,
1129                               decode(qpih.list_type_code,
1130                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1131                                      null,
1132                                      qpih.list_type_code
1133                                      )
1134                               ),
1135        			--Bug# 5228368 RAVI
1136                         decode(qpih.start_date_active, null, to_char(qplh.start_date_active,'YYYY/MM/DD'),
1137                               decode(qpih.start_date_active,
1138                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1139                                      null,
1140                                      qpih.start_date_active
1141                                      )
1142                               ),
1143        			--Bug# 5228368 RAVI
1144                         decode(qpih.end_date_active, null, to_char(qplh.end_date_active,'YYYY/MM/DD'),
1145                               decode(qpih.end_date_active,
1146                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1147                                      null,
1148                                      qpih.end_date_active
1149                                      )
1150                               ),
1151                         decode(qpih.source_lang, null, userenv('lang'),
1152                               decode(qpih.source_lang,
1153                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1154                                      null,
1155                                      qpih.source_lang
1156                                      )
1157                               ),
1158                         decode(qpih.automatic_flag, null, qplh.automatic_flag,
1159                               decode(qpih.automatic_flag,
1160                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1161                                      null,
1162                                      qpih.automatic_flag
1163                                      )
1164                               ),
1165                         decode(qpih.name, null, qplh.name,
1166                               decode(qpih.name,
1167                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1168                                      null,
1169                                      qpih.name
1170                                      )
1171                               ),
1172                         decode(qpih.description, null, qplh.description,
1173                               decode(qpih.description,
1174                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1175                                      null,
1176                                      qpih.description
1177                                      )
1178                               ),
1179                         decode(qpih.currency_code, null, qplh.currency_code,
1180                               decode(qpih.currency_code,
1181                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1182                                      null,
1183                                      qpih.currency_code
1184                                      )
1185                               ),
1186                         decode(qpih.version_no, null, qplh.version_no,
1187                               decode(qpih.version_no,
1188                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1189                                      null,
1190                                      qpih.version_no
1191                                      )
1192                               ),
1193                         decode(qpih.rounding_factor, null, qplh.rounding_factor,
1194                               decode(qpih.rounding_factor,
1195                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1196                                      null,
1197                                      qpih.rounding_factor
1198                                      )
1199                               ),
1200                         --Bug# 5412029 RAVI START
1201                         /**
1202                          * If VALUE=null then
1203                          *    If ID=null update ID to existing data
1204                          *    If ID=id update ID to id
1205                          *    If ID=G_NULL update ID to null
1206                          * If VALUE<>null then
1207                          *    If ID=null update ID to existing data
1208                          *    If ID=id update ID to id
1209                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
1210                          **/
1211                         decode(qpih.ship_method,
1212                                null,
1213                                decode(qpih.ship_method_code, null, qplh.ship_method_code,
1214                                       decode(qpih.ship_method_code,
1215                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
1216                                              null,
1217                                              qpih.ship_method_code
1218                                              )
1219                                      ),
1223                                      )
1220                                decode(qpih.ship_method_code, null, null,
1221                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
1222                                       qpih.ship_method_code
1224                               ),
1225                         decode(qpih.freight_terms,
1226                                null,
1227                                decode(qpih.freight_terms_code, null, qplh.freight_terms_code,
1228                                       decode(qpih.freight_terms_code,
1229                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
1230                                              null,
1231                                              qpih.freight_terms_code
1232                                              )
1233                                      ),
1234                                decode(qpih.freight_terms_code, null, null,
1235                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
1236                                       qpih.freight_terms_code
1237                                      )
1238                               ),
1239                         decode(qpih.terms,
1240                                null,
1241                                decode(qpih.terms_id, null, qplh.terms_id,
1242                                       decode(qpih.terms_id,
1243                                              QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1244                                              null,
1245                                              qpih.terms_id
1246                                              )
1247                                      ),
1248                                decode(qpih.terms_id, null, null,
1249                                       QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
1250                                       qpih.terms_id
1251                                      )
1252                               ),
1253                         --Bug# 5412029 RAVI END
1254                         decode(qpih.comments, null, qplh.comments,
1255                               decode(qpih.comments,
1256                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1257                                      null,
1258                                      qpih.comments
1259                                      )
1260                               ),
1261                         decode(qpih.discount_lines_flag, null, qplh.discount_lines_flag,
1262                               decode(qpih.discount_lines_flag,
1263                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1264                                      null,
1265                                      qpih.discount_lines_flag
1266                                      )
1267                               ),
1268                         decode(qpih.gsa_indicator, null, qplh.gsa_indicator,
1269                               decode(qpih.gsa_indicator,
1270                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1271                                      null,
1272                                      qpih.gsa_indicator
1273                                      )
1274                               ),
1275                         decode(qpih.prorate_flag, null, qplh.prorate_flag,
1276                               decode(qpih.prorate_flag,
1277                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1278                                      null,
1279                                      qpih.prorate_flag
1280                                      )
1281                               ),
1282                         decode(qpih.source_system_code, null, qplh.source_system_code,
1283                               decode(qpih.source_system_code,
1284                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1285                                      null,
1286                                      qpih.source_system_code
1287                                      )
1288                               ),
1289                         decode(qpih.ask_for_flag, null, qplh.ask_for_flag,
1290                               decode(qpih.ask_for_flag,
1291                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1292                                      null,
1293                                      qpih.ask_for_flag
1294                                      )
1295                               ),
1296                         decode(qpih.active_flag, null, qplh.active_flag,
1297                               decode(qpih.active_flag,
1298                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1299                                      null,
1300                                      qpih.active_flag
1301                                      )
1302                               ),
1303                         decode(qpih.parent_list_header_id, null, qplh.parent_list_header_id,
1304                               decode(qpih.parent_list_header_id,
1305                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1306                                      null,
1307                                      qpih.parent_list_header_id
1308                                      )
1309                               ),
1310                         decode(qpih.active_date_first_type, null, qplh.active_date_first_type,
1311                               decode(qpih.active_date_first_type,
1312                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1313                                      null,
1314                                      qpih.active_date_first_type
1315                                      )
1319                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
1316                               ),
1317                         decode(qpih.start_date_active_first, null, qplh.start_date_active_first,
1318                               decode(qpih.start_date_active_first,
1320                                      null,
1321                                      qpih.start_date_active_first
1322                                      )
1323                               ),
1324                         decode(qpih.end_date_active_first, null, qplh.end_date_active_first,
1325                               decode(qpih.end_date_active_first,
1326                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
1327                                      null,
1328                                      qpih.end_date_active_first
1329                                      )
1330                               ),
1331                         decode(qpih.active_date_second_type, null, qplh.active_date_second_type,
1332                               decode(qpih.active_date_second_type,
1333                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1334                                      null,
1335                                      qpih.active_date_second_type
1336                                     )
1337                               ),
1338                         decode(qpih.start_date_active_second, null, qplh.start_date_active_second,
1339                               decode(qpih.start_date_active_second,
1340                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
1341                                      null,
1342                                      qpih.start_date_active_second
1343                                      )
1344                               ),
1345                         decode(qpih.end_date_active_second, null, qplh.end_date_active_second,
1346                               decode(qpih.end_date_active_second,
1347                                      QP_BULK_LOADER_PUB.G_NULL_DATE,
1348                                      null,
1349                                      qpih.end_date_active_second
1350                                      )
1351                               ),
1352                         decode(qpih.context, null, qplh.context,
1353                               decode(qpih.context,
1354                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1355                                      null,
1356                                      qpih.context
1357                                      )
1358                               ),
1359                         decode(qpih.attribute1, null, qplh.attribute1,
1360                               decode(qpih.attribute1,
1361                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1362                                      null,
1363                                      qpih.attribute1
1364                                      )
1365                               ),
1366                         decode(qpih.attribute2, null, qplh.attribute2,
1367                               decode(qpih.attribute2,
1368                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1369                                      null,
1370                                      qpih.attribute2
1371                                      )
1372                               ),
1373                         decode(qpih.attribute3, null, qplh.attribute3,
1374                               decode(qpih.attribute3,
1375                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1376                                      null,
1377                                      qpih.attribute3
1378                                      )
1379                               ),
1380                         decode(qpih.attribute4, null, qplh.attribute4,
1381                               decode(qpih.attribute4,
1382                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1383                                      null,
1384                                      qpih.attribute4
1385                                      )
1386                               ),
1387                         decode(qpih.attribute5, null, qplh.attribute5,
1388                               decode(qpih.attribute5,
1389                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1390                                      null,
1391                                      qpih.attribute5
1392                                      )
1393                               ),
1394                         decode(qpih.attribute6, null, qplh.attribute6,
1395                               decode(qpih.attribute6,
1396                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1397                                      null,
1398                                      qpih.attribute6
1399                                      )
1400                               ),
1401                         decode(qpih.attribute7, null, qplh.attribute7,
1402                               decode(qpih.attribute7,
1403                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1404                                      null,
1405                                      qpih.attribute7
1406                                      )
1407                               ),
1408                         decode(qpih.attribute8, null, qplh.attribute8,
1409                               decode(qpih.attribute8,
1410                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1411                                      null,
1412                                      qpih.attribute8
1416                               decode(qpih.attribute9,
1413                                      )
1414                               ),
1415                         decode(qpih.attribute9, null, qplh.attribute9,
1417                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1418                                      null,
1419                                      qpih.attribute9
1420                                      )
1421                               ),
1422                         decode(qpih.attribute10, null, qplh.attribute10,
1423                               decode(qpih.attribute10,
1424                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1425                                      null,
1426                                      qpih.attribute10
1427                                      )
1428                               ),
1429                         decode(qpih.attribute11, null, qplh.attribute11,
1430                               decode(qpih.attribute11,
1431                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1432                                      null,
1433                                      qpih.attribute11
1434                                      )
1435                               ),
1436                         decode(qpih.attribute12, null, qplh.attribute12,
1437                               decode(qpih.attribute12,
1438                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1439                                      null,
1440                                      qpih.attribute12
1441                                      )
1442                               ),
1443                         decode(qpih.attribute13, null, qplh.attribute13,
1444                               decode(qpih.attribute13,
1445                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1446                                      null,
1447                                      qpih.attribute13
1448                                      )
1449                               ),
1450                         decode(qpih.attribute14, null, qplh.attribute14,
1451                               decode(qpih.attribute14,
1452                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1453                                      null,
1454                                      qpih.attribute14
1455                                      )
1456                               ),
1457                         decode(qpih.attribute15, null, qplh.attribute15,
1458                               decode(qpih.attribute15,
1459                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1460                                      null,
1461                                      qpih.attribute15
1462                                      )
1463                               ),
1464                         decode(qpih.language, null, userenv('lang'),
1465                               decode(qpih.language,
1466                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1467                                      null,
1468                                      qpih.language
1469                                      )
1470                               ),
1471                         decode(qpih.mobile_download, null, qplh.mobile_download,
1472                               decode(qpih.mobile_download,
1473                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1474                                      null,
1475                                      qpih.mobile_download
1476                                      )
1477                               ),
1478                         --Bug# 5412029 RAVI START
1479                         /**
1480                          * If VALUE=null then
1481                          *    If ID=null update ID to existing data
1482                          *    If ID=id update ID to id
1483                          *    If ID=G_NULL update ID to null
1484                          * If VALUE<>null then
1485                          *    If ID=null update ID to existing data
1486                          *    If ID=id update ID to id
1487                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
1488                          **/
1489                         decode(qpih.currency_header,
1490                                null,
1491                                decode(qpih.currency_header_id, null, qplh.currency_header_id,
1492                                       decode(qpih.currency_header_id,
1493                                              QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1494                                              null,
1495                                              qpih.currency_header_id
1496                                              )
1497                                      ),
1498                                decode(qpih.currency_header_id, null, null,
1499                                       QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
1500                                       qpih.currency_header_id
1501                                      )
1502                               ),
1503                         --Bug# 5412029 RAVI END
1504                         decode(qpih.orig_sys_header_ref, null, qplh.orig_system_header_ref,
1505                               decode(qpih.orig_sys_header_ref,
1506                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1507                                      null,
1508                                      qpih.orig_sys_header_ref
1509                                      )
1510                               ),
1514                                      null,
1511                         decode(qpih.orig_org_id, null, qplh.orig_org_id,
1512                               decode(qpih.orig_org_id,
1513                                      QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1515                                      qpih.orig_org_id
1516                                      )
1517                               ),
1518                         decode(qpih.global_flag, null, qplh.global_flag,
1519                               decode(qpih.global_flag,
1520                                      QP_BULK_LOADER_PUB.G_NULL_CHAR,
1521                                      null,
1522                                      qpih.global_flag
1523                                      )
1524                               )
1525                    from  qp_list_headers qplh
1526                    where qplh.orig_system_header_ref=qpih.orig_sys_header_ref
1527                   )
1528             where qpih.request_id = l_request_id
1529             and qpih.process_status_flag = 'P'
1530             and qpih.interface_action_code = 'UPDATE';
1531 
1532 	 END IF;
1533 
1534          --ENH Update Functionality RAVI
1535           /**
1536           If number of interface headers loaded for processing
1537           (insert,update,delete) is zero then log a message and exit
1538           else log a message and process the header and related info
1539           **/
1540 	 IF l_header_count = 0
1541 	 THEN
1542 	    write_log( 'NO LIST HEADER RECORDS TO PROCESS');
1543 	 ELSE
1544              write_log('List Headers picked: '||l_header_count);
1545 
1546              --Bug# 5412029
1547              --ID is to be got from Code
1548 	     --Value to ID conversion before validation
1549 	     QP_BULK_VALUE_TO_ID.Header(l_request_id);
1550 
1551 	     -- Attribute level validation for headers
1552 
1553 	     QP_BULK_VALIDATE.Attribute_Header(l_request_id);
1554 
1555 	     --setting process_status_flag
1556 	     QP_BULK_VALIDATE.Mark_Errored_Interface_Record
1557 					      ( p_table_type=>'HEADER',
1558 						p_request_id=>l_request_id);
1559 
1560 	     --Value to ID conversion
1561 	     --QP_BULK_VALUE_TO_ID.Header(l_request_id);
1562 
1563 	     --Insert Error messages into db caused by value-ID conversion
1564 	     QP_BULK_VALUE_TO_ID.Insert_Header_Error_Messages(l_request_id);
1565 
1566 
1567 	     --Bulk load into pl/sql table, entity-validation and Insert/Delete/Update operation
1568 	     Process_Header(l_request_id);
1569 
1570 	 END IF;
1571 
1572           -- Bug 5208480(5208112,4188784) RAVI
1573 	  UPDATE qp_interface_qualifiers qpiq
1574 	    SET    qpiq.request_id = l_request_id
1575 	    WHERE    qpiq.rowid IN
1576 	       (SELECT q.rowid
1577 	        FROM   qp_interface_qualifiers q,qp_interface_list_headers h
1578 	        WHERE  q.orig_sys_header_ref = h.orig_sys_header_ref
1579 	        AND    q.request_id IS NULL
1580 	        AND    q.process_status_flag = 'P'
1581 	        AND    h.process_status_flag = 'I'
1582 	        AND    nvl(q.process_id,0) = nvl(p_process_id, nvl(q.process_id,0))
1583 	        AND    nvl(q.process_type,' ') = nvl(p_process_type, nvl(q.process_type,' '))
1584 	        AND    decode(p_process_id, null,q.process_flag,'Y') = 'Y'
1585 	        AND    q.interface_action_code IN ('INSERT','UPDATE','DELETE')
1586 	       )
1587                -- Bug 5208480(5208112,4188784) RAVI
1588                AND NOT EXISTS
1589                (
1590                   select 1 from qp_qualifiers qpq
1591                   where qpiq.interface_action_code = 'UPDATE'
1592                   and qpiq.orig_sys_qualifier_ref = qpq.orig_sys_qualifier_ref
1593                   and qpq.qualifier_id is not null
1594                   and qpiq.qualifier_id <> qpq.qualifier_id
1595                )
1596 	      ;
1597 
1598           --ENH Update Functionality RAVI
1599           /**
1600           The number of interface header qualifiers loaded for processing
1601           (insert,update,delete)
1602           **/
1603           l_qualifier_count:=SQL%ROWCOUNT;
1604 
1605         --ENH Update Functionality RAVI
1606         /**
1607         If interface action is update then load all null value interface columns
1608         with values from corresponding qp table columns
1609         **/
1610         UPDATE 	qp_interface_qualifiers qpiq
1611         SET ( 	active_flag,
1612                 attribute1,
1613                 attribute10,
1614                 attribute11,
1615                 attribute12,
1616                 attribute13,
1617                 attribute14,
1618                 attribute15,
1619                 attribute2,
1620                 attribute3,
1621                 attribute4,
1622                 attribute5,
1623                 attribute6,
1624                 attribute7,
1625                 attribute8,
1626                 attribute9,
1627                 comparison_operator_code,
1628                 context,
1629                 created_by,
1630                 created_from_rule_id,
1631             	creation_date,
1632             	distinct_row_count,
1633                 end_date_active,
1634                 excluder_flag,
1635                 header_quals_exist_flag,
1636                 list_header_id,
1640                 orig_sys_line_ref,
1637                 list_line_id,
1638                 list_type_code,
1639                 orig_sys_header_ref,
1641                 orig_sys_qualifier_ref,
1642                 program_application_id,
1643                 program_id,
1644                 program_update_date,
1645                 qual_attr_value_from_number,
1646                 qual_attr_value_to_number,
1647                 qualifier_attr_value,
1648                 qualifier_attribute,
1649                 qualifier_context,
1650                 qualifier_datatype,
1651                 qualifier_group_cnt,
1652                 qualifier_grouping_no,
1653                 qualifier_id,
1654                 qualifier_precedence,
1655                 qualifier_rule_id,
1656                 qualify_hier_descendents_flag,
1657                 search_ind,
1658                 start_date_active,
1659                 --Bug# 5456164 RAVI
1660                 qualifier_attr_value_code
1661 	    ) = ( select
1662 	    		decode(qpiq.active_flag, null, qphq.active_flag,
1663 				decode(qpiq.active_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1664 					null,qpiq.active_flag
1665 				)
1666 			),
1667         	        decode(qpiq.attribute1, null, qphq.attribute1,
1668 				decode(qpiq.attribute1,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1669 					null,qpiq.attribute1
1670 				)
1671 			),
1672                 	decode(qpiq.attribute10, null, qphq.attribute10,
1673 				decode(qpiq.attribute10,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1674 					null,qpiq.attribute10
1675 				)
1676 			),
1677 	                decode(qpiq.attribute11, null, qphq.attribute11,
1678 				decode(qpiq.attribute11,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1679 					null,qpiq.attribute11
1680 				)
1681 			),
1682 	                decode(qpiq.attribute12, null, qphq.attribute12,
1683 				decode(qpiq.attribute12,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1684 					null,qpiq.attribute12
1685 				)
1686 			),
1687 	                decode(qpiq.attribute13, null, qphq.attribute13,
1688 				decode(qpiq.attribute13,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1689 					null,qpiq.attribute13
1690 				)
1691 			),
1692 	                decode(qpiq.attribute14, null, qphq.attribute14,
1693 				decode(qpiq.attribute14,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1694 					null,qpiq.attribute14
1695 				)
1696 			),
1697         	        decode(qpiq.attribute15, null, qphq.attribute15,
1698 				decode(qpiq.attribute15,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1699 					null,qpiq.attribute15
1700 				)
1701 			),
1702                 	decode(qpiq.attribute2, null, qphq.attribute2,
1703 				decode(qpiq.attribute2,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1704 					null,qpiq.attribute2
1705 				)
1706 			),
1707 	                decode(qpiq.attribute3, null, qphq.attribute3,
1708 				decode(qpiq.attribute3,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1709 					null,qpiq.attribute3
1710 				)
1711 			),
1712         	        decode(qpiq.attribute4, null, qphq.attribute4,
1713 				decode(qpiq.attribute4,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1714 					null,qpiq.attribute4
1715 				)
1716 			),
1717                 	decode(qpiq.attribute5, null, qphq.attribute5,
1718 				decode(qpiq.attribute5,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1719 					null,qpiq.attribute5
1720 				)
1721 			),
1722                 	decode(qpiq.attribute6, null, qphq.attribute6,
1723 				decode(qpiq.attribute6,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1724 					null,qpiq.attribute6
1725 				)
1726 			),
1727                 	decode(qpiq.attribute7, null, qphq.attribute7,
1728 				decode(qpiq.attribute7,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1729 					null,qpiq.attribute7
1730 				)
1731 			),
1732         	        decode(qpiq.attribute8, null, qphq.attribute8,
1733 				decode(qpiq.attribute8,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1734 					null,qpiq.attribute8
1735 				)
1736 			),
1737                 	decode(qpiq.attribute9, null, qphq.attribute9,
1738 				decode(qpiq.attribute9,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1739 					null,qpiq.attribute9
1740 				)
1741 			),
1742                 	decode(qpiq.comparison_operator_code, null, qphq.comparison_operator_code,
1743 				decode(qpiq.comparison_operator_code,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1744 					null,qpiq.comparison_operator_code
1745 				)
1746 			),
1747                 	decode(qpiq.context, null, qphq.context,
1748 				decode(qpiq.context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1749 					null,qpiq.context
1750 				)
1751 			),
1752                 	decode(qpiq.created_by, null, qphq.created_by,
1753 				decode(qpiq.created_by,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1754 					null,qpiq.created_by
1755 				)
1756 			),
1757                         --Bug# 5456164 RAVI START
1758                         /**
1759                          * If VALUE=null then
1760                          *    If ID=null update ID to existing data
1761                          *    If ID=id update ID to id
1762                          *    If ID=G_NULL update ID to null
1763                          * If VALUE<>null then
1764                          *    If ID=null update ID to existing data
1765                          *    If ID=id update ID to id
1766                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
1767                         **/
1771                                       decode(qpiq.created_from_rule_id,
1768                         decode(qpiq.created_from_rule,
1769                                null,
1770                                decode(qpiq.created_from_rule_id, null, qphq.created_from_rule_id,
1772                                              QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1773                                              null,
1774                                              qpiq.created_from_rule_id
1775                                             )
1776                                      ),
1777                                decode(qpiq.created_from_rule_id, null, null,
1778                                       QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
1779                                       qpiq.created_from_rule_id
1780                                      )
1781                         ),
1782                         --Bug# 5456164 RAVI END
1783             		decode(qpiq.creation_date, null, qphq.creation_date,
1784 				decode(qpiq.creation_date,QP_BULK_LOADER_PUB.G_NULL_DATE,
1785 					null,qpiq.creation_date
1786 				)
1787 			),
1788             		decode(qpiq.distinct_row_count, null, qphq.distinct_row_count,
1789 				decode(qpiq.distinct_row_count,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1790 					null,qpiq.distinct_row_count
1791 				)
1792 			),
1793                 	decode(qpiq.end_date_active, null, qphq.end_date_active,
1794 				decode(qpiq.end_date_active,QP_BULK_LOADER_PUB.G_NULL_DATE,
1795 					null,qpiq.end_date_active
1796 				)
1797 			),
1798                 	decode(qpiq.excluder_flag, null, qphq.excluder_flag,
1799 				decode(qpiq.excluder_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1800 					null,qpiq.excluder_flag
1801 				)
1802 			),
1803                 	decode(qpiq.header_quals_exist_flag, null, qphq.header_quals_exist_flag,
1804 				decode(qpiq.header_quals_exist_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1805 					null,qpiq.header_quals_exist_flag
1806 				)
1807 			),
1808 	                decode(qpiq.list_header_id, null, qphq.list_header_id,
1809 				decode(qpiq.list_header_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1810 					null,qpiq.list_header_id
1811 				)
1812 			),
1813 	                decode(qpiq.list_line_id, null, qphq.list_line_id,
1814 				decode(qpiq.list_line_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1815 					null,qpiq.list_line_id
1816 				)
1817 			),
1818 	                decode(qpiq.list_type_code, null, qphq.list_type_code,
1819 				decode(qpiq.list_type_code,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1820 					null,qpiq.list_type_code
1821 				)
1822 			),
1823 	                decode(qpiq.orig_sys_header_ref, null, qphq.orig_sys_header_ref,
1824 				decode(qpiq.orig_sys_header_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1825 					null,qpiq.orig_sys_header_ref
1826 				)
1827 			),
1828 	                decode(qpiq.orig_sys_line_ref, null, qphq.orig_sys_line_ref,
1829 				decode(qpiq.orig_sys_line_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1830 					null,qpiq.orig_sys_line_ref
1831 				)
1832 			),
1833 	                decode(qpiq.orig_sys_qualifier_ref, null, qphq.orig_sys_qualifier_ref,
1834 				decode(qpiq.orig_sys_qualifier_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1835 					null,qpiq.orig_sys_qualifier_ref
1836 				)
1837 			),
1838 	                decode(qpiq.program_application_id, null, qphq.program_application_id,
1839 				decode(qpiq.program_application_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1840 					null,qpiq.program_application_id
1841 				)
1842 			),
1843 	                decode(qpiq.program_id, null, qphq.program_id,
1844 				decode(qpiq.program_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1845 					null,qpiq.program_id
1846 				)
1847 			),
1848 	                decode(qpiq.program_update_date, null, qphq.program_update_date,
1849 				decode(qpiq.program_update_date,QP_BULK_LOADER_PUB.G_NULL_DATE,
1850 					null,qpiq.program_update_date
1851 				)
1852 			),
1853 	                decode(qpiq.qual_attr_value_from_number, null, qphq.qual_attr_value_from_number,
1854 				decode(qpiq.qual_attr_value_from_number,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1855 					null,qpiq.qual_attr_value_from_number
1856 				)
1857 			),
1858 	                decode(qpiq.qual_attr_value_to_number, null, qphq.qual_attr_value_to_number,
1859 				decode(qpiq.qual_attr_value_to_number,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1860 					null,qpiq.qual_attr_value_to_number
1861 				)
1862 			),
1863                         --Bug# 5456164 RAVI START
1864                         /**
1865                          * If VALUE=null then
1866                          *    If ID=null update ID to existing data
1867                          *    If ID=id update ID to id
1868                          *    If ID=G_NULL update ID to null
1869                          * If VALUE<>null then
1870                          *    If ID=null update ID to existing data
1871                          *    If ID=id update ID to id
1872                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
1873                         **/
1874                         decode(qpiq.qualifier_attr_value_code,
1875                                null,
1876                                decode(qpiq.qualifier_attr_value, null, qphq.qualifier_attr_value,
1877                                       decode(qpiq.qualifier_attr_value,
1878                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
1879                                              null,
1880                                              qpiq.qualifier_attr_value
1881                                             )
1882                                      ),
1886                                      )
1883                                decode(qpiq.qualifier_attr_value, null, null,
1884                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
1885                                       qpiq.qualifier_attr_value
1887                         ),
1888                         decode(qpiq.qualifier_attribute_code,
1889                                null,
1890                                decode(qpiq.qualifier_attribute, null, qphq.qualifier_attribute,
1891                                       decode(qpiq.qualifier_attribute,
1892                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
1893                                              null,
1894                                              qpiq.qualifier_attribute
1895                                             )
1896                                      ),
1897                                decode(qpiq.qualifier_attribute, null, null,
1898                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
1899                                       qpiq.qualifier_attribute
1900                                      )
1901                         ),
1902                         --Bug# 5456164 RAVI END
1903 	                decode(qpiq.qualifier_context, null, qphq.qualifier_context,
1904 				decode(qpiq.qualifier_context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1905 					null,qpiq.qualifier_context
1906 				)
1907 			),
1908 	                decode(qpiq.qualifier_datatype, null, qphq.qualifier_datatype,
1909 				decode(qpiq.qualifier_datatype,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1910 					null,qpiq.qualifier_datatype
1911 				)
1912 			),
1913 	                decode(qpiq.qualifier_group_cnt, null, qphq.qualifier_group_cnt,
1914 				decode(qpiq.qualifier_group_cnt,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1915 					null,qpiq.qualifier_group_cnt
1916 				)
1917 			),
1918 	                decode(qpiq.qualifier_grouping_no, null, qphq.qualifier_grouping_no,
1919 				decode(qpiq.qualifier_grouping_no,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1920 					null,qpiq.qualifier_grouping_no
1921 				)
1922 			),
1923 	                decode(qpiq.qualifier_id, null, qphq.qualifier_id,
1924 				decode(qpiq.qualifier_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1925 					null,qpiq.qualifier_id
1926 				)
1927 			),
1928 	                decode(qpiq.qualifier_precedence, null, qphq.qualifier_precedence,
1929 				decode(qpiq.qualifier_precedence,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1930 					null,qpiq.qualifier_precedence
1931 				)
1932 			),
1933                         --Bug# 5456164 RAVI START
1934                         /**
1935                          * If VALUE=null then
1936                          *    If ID=null update ID to existing data
1937                          *    If ID=id update ID to id
1938                          *    If ID=G_NULL update ID to null
1939                          * If VALUE<>null then
1940                          *    If ID=null update ID to existing data
1941                          *    If ID=id update ID to id
1942                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
1943                         **/
1944                         decode(qpiq.qualifier_rule,
1945                                null,
1946                                decode(qpiq.qualifier_rule_id, null, qphq.qualifier_rule_id,
1947                                       decode(qpiq.qualifier_rule_id,
1948                                              QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1949                                              null,
1950                                              qpiq.qualifier_rule_id
1951                                             )
1952                                      ),
1953                                decode(qpiq.qualifier_rule_id, null, null,
1954                                       QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
1955                                       qpiq.qualifier_rule_id
1956                                      )
1957                         ),
1958                         --Bug# 5456164 RAVI END
1959 	                decode(qpiq.qualify_hier_descendents_flag, null, qphq.qualify_hier_descendents_flag,
1960 				decode(qpiq.qualify_hier_descendents_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
1961 					null,qpiq.qualify_hier_descendents_flag
1962 				)
1963 			),
1964 	                decode(qpiq.search_ind, null, qphq.search_ind,
1965 				decode(qpiq.search_ind,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
1966 					null,qpiq.search_ind
1967 				)
1968 			),
1969 	                decode(qpiq.start_date_active, null, qphq.start_date_active,
1970 				decode(qpiq.start_date_active,QP_BULK_LOADER_PUB.G_NULL_DATE,
1971 					null,qpiq.start_date_active
1972 				)
1973 			),
1974                         --Bug# 5456164 RAVI
1975 	                decode(qpiq.qualifier_attr_value_code,
1976 	                       QP_BULK_LOADER_PUB.G_NULL_CHAR, null,
1977 				qpiq.qualifier_attr_value_code
1978 			)
1979                    	from 	qp_qualifiers qphq,
1980                         	qp_list_headers_b qplh
1981                    	where -- CAUSES FTS AS NO INDEX ON LINE_REF
1982                    		qpiq.orig_sys_qualifier_ref = qphq.orig_sys_qualifier_ref
1983                    		and qphq.list_header_id = qplh.list_header_id
1984                    		and qplh.orig_system_header_ref=qpiq.orig_sys_header_ref
1985                    )
1986               where qpiq.request_id = l_request_id
1987               and   qpiq.process_status_flag = 'P'
1988               and   qpiq.interface_action_code = 'UPDATE';
1989 
1990          --ENH Update Functionality RAVI
1994           else log a message and process the header qualifier and related info
1991           /**
1992           If number of interface header qualifiers loaded for processing
1993           (insert,update,delete) is zero then log a message and exit
1995           **/
1996 	 IF l_qualifier_count = 0
1997 	 THEN
1998 	    write_log( 'NO QUALIFIER RECORDS TO PROCESS');
1999 	 ELSE
2000 	     write_log('Number of qualifier records picked: '||l_qualifier_count);
2001 
2002              --Bug# 5412029
2003              --ID is to be got from Code
2004 	     --Value to ID conversion before validation
2005 	     QP_BULK_VALUE_TO_ID.Qualifier(l_request_id);
2006 
2007 	     -- Attribute level validation for Qualifier
2008 	     QP_BULK_VALIDATE.Attribute_Qualifier(l_request_id);
2009 
2010 
2011 	     --setting process_status_flag
2012 	     QP_BULK_VALIDATE.Mark_Errored_Interface_Record
2013 			      ( p_table_type=>'QUALIFIER',
2014 				p_request_id=>l_request_id);
2015 
2016 	     --Insert Error messages into db caused by value-ID conversion
2017 	     QP_BULK_VALUE_TO_ID.Insert_Qual_Error_Message(l_request_id);
2018 
2019 	     --Bulk load into pl/sql table, entity-validation and Insert/Delete/Update operation
2020 	     Process_Qualifier(l_request_id);
2021 
2022 	 END IF;
2023 
2024 	 --Delete all the inserted errored records
2025 	 Post_cleanup(l_request_id);
2026 	 write_log('----Header and qualifier processind complete----');
2027 
2028 	 END IF; -- p_entity_name IS NOT NULL
2029  /*--------------------------- END PROCESSING HEADER----------------------------------*/
2030 
2031 
2032 
2033   /*--------------------------------------------------------------------------------
2034                                PROCESS LINES
2035   ---------------------------------------------------------------------------------*/
2036 
2037   IF p_spawned_request = 'N' or p_spawned_request IS NULL  THEN
2038 
2039      -- Update the all the lines to be processed with request_id
2040             -- Bug 5208480(5208112,4188784) RAVI
2041 	    Update qp_interface_list_lines qpil
2042 	    Set qpil.request_id= l_request_id
2043 	    Where qpil.rowid IN
2044 	    (select l.rowid
2045 	     from qp_interface_list_lines l, qp_interface_list_headers h
2046 	     where  h.process_status_flag='I'
2047 	     and	l.process_status_flag = 'P'
2048 	     and    l.request_id is null
2049 	     and    h.request_id = l_request_id
2050 	     and    h.orig_sys_header_ref=l.orig_sys_header_ref
2051 	     and     decode(p_process_id, null,l.process_flag,'Y') = 'Y'
2052 	     and    nvl(l.process_id,0) = nvl(p_process_id, nvl(l.process_id,0))
2053 	     and    nvl(l.process_type,' ') = nvl(p_process_type, nvl(l.process_type,' '))
2054 	     and    l.interface_action_code IN ('INSERT','UPDATE','DELETE')	)
2055              -- Bug 5208480(5208112,4188784) RAVI
2056                AND NOT EXISTS
2057                (
2058                   select 1 from qp_list_lines qpll
2059                   where qpil.interface_action_code = 'UPDATE'
2060                   and qpil.orig_sys_line_ref = qpll.orig_sys_line_ref
2061                   and qpll.list_line_id is not null
2062                   and qpil.list_line_id <> qpll.list_line_id
2063                )
2064 	     ;
2065 
2066 	  write_log('Number of Lines picked: '||SQL%ROWCOUNT);
2067 
2068 
2069         --ENH Update Functionality RAVI
2070         /**
2071         If interface action is update then load all null value interface columns
2072         with values from corresponding qp table columns
2073         **/
2074         UPDATE 	qp_interface_list_lines qpil
2075         SET ( 	accrual_conversion_rate,
2076                 accrual_flag,
2077                 accrual_qty,
2078                 accrual_uom_code,
2079                 arithmetic_operator,
2080                 attribute1,
2081                 attribute10,
2082                 attribute11,
2083                 attribute12,
2084                 attribute13,
2085                 attribute14,
2086                 attribute15,
2087                 attribute2,
2088                 attribute3,
2089                 attribute4,
2090                 attribute5,
2091                 attribute6,
2092                 attribute7,
2093                 attribute8,
2094                 attribute9,
2095                 automatic_flag,
2096                 base_qty,
2097                 base_uom_code,
2098                 benefit_limit,
2099                 benefit_price_list_line_id,
2100                 benefit_qty,
2101                 benefit_uom_code,
2102                 charge_subtype_code,
2103                 charge_type_code,
2104                 comments,
2105                 context,
2106                 continuous_price_break_flag,
2107                 created_by,
2108             	creation_date,
2109             	effective_period_uom,
2110                 end_date_active,
2111                 estim_accrual_rate,
2112                 estim_gl_value,
2113                 expiration_date,
2114                 expiration_period_start_date,
2115                 expiration_period_uom,
2116                 generate_using_formula_id,
2117                 include_on_returns_flag,
2118                 incompatibility_grp_code,
2119                 inventory_item_id,
2120                 list_header_id,
2124                 list_price,
2121                 list_line_id,
2122                 list_line_no,
2123                 list_line_type_code,
2125                 list_price_uom_code,
2126                 modifier_level_code,
2127                 net_amount_flag,
2128                 number_effective_periods,
2129                 number_expiration_periods,
2130                 operand,
2131                 organization_id,
2132                 orig_sys_header_ref,
2133                 orig_sys_line_ref,
2134                 override_flag,
2135                 percent_price,
2136                 price_break_header_ref,--change
2137                 price_break_type_code,
2138                 price_by_formula_id,
2139                 pricing_group_sequence,
2140                 pricing_phase_id,
2141                 primary_uom_flag,
2142                 print_on_invoice_flag,
2143                 product_precedence,
2144                 program_application_id,
2145                 program_id,
2146                 program_update_date,
2147                 proration_type_code,
2148                 qualification_ind,
2149                 rebate_transaction_type_code,
2150                 recurring_flag,
2151                 recurring_value,
2152                 related_item_id,
2153                 relationship_type_id,
2154                 reprice_flag,
2155                 revision,
2156                 revision_date,
2157                 revision_reason_code,
2158                 rltd_modifier_grp_type,--change
2159                 start_date_active,
2160                 substitution_attribute,
2161                 substitution_context,
2162                 substitution_value
2163 	    ) = ( select
2164 	    		     decode(qpil.accrual_conversion_rate, null, qpll.accrual_conversion_rate,
2165                               	 decode(qpil.accrual_conversion_rate,
2166                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2167                                         null,
2168                                         qpil.accrual_conversion_rate
2169                                         )
2170                                  ),
2171                              decode(qpil.accrual_flag, null, qpll.accrual_flag,
2172                                  decode(qpil.accrual_flag,
2173                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2174                                         null,
2175                                         qpil.accrual_flag
2176                                         )
2177                                  ),
2178                              decode(qpil.accrual_qty, null, qpll.accrual_qty,
2179                                  decode(qpil.accrual_qty,
2180                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2181                                         null,
2182                                         qpil.accrual_qty
2183                                         )
2184                                  ),
2185                              decode(qpil.accrual_uom_code, null, qpll.accrual_uom_code,
2186                                  decode(qpil.accrual_uom_code,
2187                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2188                                         null,
2189                                         qpil.accrual_uom_code
2190                                         )
2191                                  ),
2192                              decode(qpil.arithmetic_operator, null, qpll.arithmetic_operator,
2193                                  decode(qpil.arithmetic_operator,
2194                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2195                                         null,
2196                                         qpil.arithmetic_operator
2197                                         )
2198                                  ),
2199                              decode(qpil.attribute1, null, qpll.attribute1,
2200                                  decode(qpil.attribute1,
2201                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2202                                         null,
2203                                         qpil.attribute1
2204                                         )
2205                                  ),
2206                              decode(qpil.attribute10, null, qpll.attribute10,
2207                                  decode(qpil.attribute10,
2208                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2209                                         null,
2210                                         qpil.attribute10
2211                                         )
2212                                  ),
2213                              decode(qpil.attribute11, null, qpll.attribute11,
2214                                  decode(qpil.attribute11,
2215                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2216                                         null,
2217                                         qpil.attribute11
2218                                         )
2219                                  ),
2220                              decode(qpil.attribute12, null, qpll.attribute12,
2221                                  decode(qpil.attribute12,
2222                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2223                                         null,
2224                                         qpil.attribute12
2225                                         )
2226                                  ),
2230                                         null,
2227                              decode(qpil.attribute13, null, qpll.attribute13,
2228                                  decode(qpil.attribute13,
2229                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2231                                         qpil.attribute13
2232                                         )
2233                                  ),
2234                              decode(qpil.attribute14, null, qpll.attribute14,
2235                                  decode(qpil.attribute14,
2236                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2237                                         null,
2238                                         qpil.attribute14
2239                                         )
2240                                  ),
2241                              decode(qpil.attribute15, null, qpll.attribute15,
2242                                  decode(qpil.attribute15,
2243                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2244                                         null,
2245                                         qpil.attribute15
2246                                         )
2247                                  ),
2248                              decode(qpil.attribute2, null, qpll.attribute2,
2249                                  decode(qpil.attribute2,
2250                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2251                                         null,
2252                                         qpil.attribute2
2253                                         )
2254                                  ),
2255                              decode(qpil.attribute3, null, qpll.attribute3,
2256                                  decode(qpil.attribute3,
2257                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2258                                         null,
2259                                         qpil.attribute3
2260                                         )
2261                                  ),
2262                              decode(qpil.attribute4, null, qpll.attribute4,
2263                                  decode(qpil.attribute4,
2264                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2265                                         null,
2266                                         qpil.attribute4
2267                                         )
2268                                  ),
2269                              decode(qpil.attribute5, null, qpll.attribute5,
2270                                  decode(qpil.attribute5,
2271                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2272                                         null,
2273                                         qpil.attribute5
2274                                         )
2275                                  ),
2276                              decode(qpil.attribute6, null, qpll.attribute6,
2277                                  decode(qpil.attribute6,
2278                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2279                                         null,
2280                                         qpil.attribute6
2281                                         )
2282                                  ),
2283                              decode(qpil.attribute7, null, qpll.attribute7,
2284                                  decode(qpil.attribute7,
2285                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2286                                         null,
2287                                         qpil.attribute7
2288                                         )
2289                                  ),
2290                              decode(qpil.attribute8, null, qpll.attribute8,
2291                                  decode(qpil.attribute8,
2292                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2293                                         null,
2294                                         qpil.attribute8
2295                                         )
2296                                  ),
2297                              decode(qpil.attribute9, null, qpll.attribute9,
2298                                  decode(qpil.attribute9,
2299                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2300                                         null,
2301                                         qpil.attribute9
2302                                         )
2303                                  ),
2304                              decode(qpil.automatic_flag, null, qpll.automatic_flag,
2305                                  decode(qpil.automatic_flag,
2306                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2307                                         null,
2308                                         qpil.automatic_flag
2309                                         )
2310                                  ),
2311                              decode(qpil.base_qty, null, qpll.base_qty,
2312                                  decode(qpil.base_qty,
2313                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2314                                         null,
2315                                         qpil.base_qty
2316                                         )
2317                                  ),
2318                              decode(qpil.base_uom_code, null, qpll.base_uom_code,
2319                                  decode(qpil.base_uom_code,
2320                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2321                                         null,
2322                                         qpil.base_uom_code
2326                                  decode(qpil.benefit_limit,
2323                                         )
2324                                  ),
2325                              decode(qpil.benefit_limit, null, qpll.benefit_limit,
2327                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2328                                         null,
2329                                         qpil.benefit_limit
2330                                         )
2331                                  ),
2332                              decode(qpil.benefit_price_list_line_id, null, qpll.benefit_price_list_line_id,
2333                                  decode(qpil.benefit_price_list_line_id,
2334                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2335                                         null,
2336                                         qpil.benefit_price_list_line_id
2337                                         )
2338                                  ),
2339                              decode(qpil.benefit_qty, null, qpll.benefit_qty,
2340                                  decode(qpil.benefit_qty,
2341                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2342                                         null,
2343                                         qpil.benefit_qty
2344                                         )
2345                                  ),
2346                              decode(qpil.benefit_uom_code, null, qpll.benefit_uom_code,
2347                                  decode(qpil.benefit_uom_code,
2348                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2349                                         null,
2350                                         qpil.benefit_uom_code
2351                                         )
2352                                  ),
2353                              decode(qpil.charge_subtype_code, null, qpll.charge_subtype_code,
2354                                  decode(qpil.charge_subtype_code,
2355                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2356                                         null,
2357                                         qpil.charge_subtype_code
2358                                         )
2359                                  ),
2360                              decode(qpil.charge_type_code, null, qpll.charge_type_code,
2361                                  decode(qpil.charge_type_code,
2362                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2363                                         null,
2364                                         qpil.charge_type_code
2365                                         )
2366                                  ),
2367                              decode(qpil.comments, null, qpll.comments,
2368                                  decode(qpil.comments,
2369                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2370                                         null,
2371                                         qpil.comments
2372                                         )
2373                                  ),
2374                              decode(qpil.context, null, qpll.context,
2375                                  decode(qpil.context,
2376                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2377                                         null,
2378                                         qpil.context
2379                                         )
2380                                  ),
2381                              decode(qpil.continuous_price_break_flag, null, qpll.continuous_price_break_flag,
2382                                  decode(qpil.continuous_price_break_flag,
2383                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2384                                         null,
2385                                         qpil.continuous_price_break_flag
2386                                         )
2387                                  ),
2388                              decode(qpil.created_by, null, qpll.created_by,
2389                                  decode(qpil.created_by,
2390                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2391                                         null,
2392                                         qpil.created_by
2393                                         )
2394                                  ),
2395         		     decode(qpil.creation_date, null, qpll.creation_date,
2396         		         decode(qpil.creation_date,
2397         		                QP_BULK_LOADER_PUB.G_NULL_DATE,
2398         		                null,
2399         		                qpil.creation_date
2400         		                )
2401         		         ),
2402         		     decode(qpil.effective_period_uom, null, qpll.effective_period_uom,
2403         		         decode(qpil.effective_period_uom,
2404         		                QP_BULK_LOADER_PUB.G_NULL_CHAR,
2405         		                null,
2406         		                qpil.effective_period_uom
2407         		                )
2408         		         ),
2409                              decode(qpil.end_date_active, null, qpll.end_date_active,
2410                                  decode(qpil.end_date_active,
2411                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
2412                                         null,
2413                                         qpil.end_date_active
2414                                         )
2415                                  ),
2416                              decode(qpil.estim_accrual_rate, null, qpll.estim_accrual_rate,
2420                                         qpil.estim_accrual_rate
2417                                  decode(qpil.estim_accrual_rate,
2418                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2419                                         null,
2421                                         )
2422                                  ),
2423                              decode(qpil.estim_gl_value, null, qpll.estim_gl_value,
2424                                  decode(qpil.estim_gl_value,
2425                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2426                                         null,
2427                                         qpil.estim_gl_value
2428                                         )
2429                                  ),
2430                              decode(qpil.expiration_date, null, qpll.expiration_date,
2431                                  decode(qpil.expiration_date,
2432                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
2433                                         null,
2434                                         qpil.expiration_date
2435                                         )
2436                                  ),
2437                              decode(qpil.expiration_period_start_date, null, qpll.expiration_period_start_date,
2438                                  decode(qpil.expiration_period_start_date,
2439                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
2440                                         null,
2441                                         qpil.expiration_period_start_date
2442                                         )
2443                                  ),
2444                              decode(qpil.expiration_period_uom, null, qpll.expiration_period_uom,
2445                                  decode(qpil.expiration_period_uom,
2446                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2447                                         null,
2448                                         qpil.expiration_period_uom
2449                                         )
2450                                  ),
2451                              --Bug# 5412029 RAVI START
2452                              /**
2453                               * If VALUE=null then
2454                               *    If ID=null update ID to existing data
2455                               *    If ID=id update ID to id
2456                               *    If ID=G_NULL update ID to null
2457                               * If VALUE<>null then
2458                               *    If ID=null update ID to existing data
2459                               *    If ID=id update ID to id
2460                               *    If ID<>id update ID to null (conversion is done as required in ValueToId)
2461                               **/
2462                              decode(qpil.generate_using_formula,
2463                                     null,
2464                                     decode(qpil.generate_using_formula_id, null, qpll.generate_using_formula_id,
2465                                            decode(qpil.generate_using_formula_id,
2466                                                   QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2467                                                   null,
2468                                                   qpil.generate_using_formula_id
2469                                                  )
2470                                           ),
2471                                     decode(qpil.generate_using_formula_id, null, null,
2472                                            QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
2473                                            qpil.generate_using_formula_id
2474                                           )
2475                                    ),
2476                              --Bug# 5412029 RAVI END
2477                              decode(qpil.include_on_returns_flag, null, qpll.include_on_returns_flag,
2478                                  decode(qpil.include_on_returns_flag,
2479                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2480                                         null,
2481                                         qpil.include_on_returns_flag
2482                                         )
2483                                  ),
2484                              decode(qpil.incompatibility_grp_code, null, qpll.incompatibility_grp_code,
2485                                  decode(qpil.incompatibility_grp_code,
2486                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2487                                         null,
2488                                         qpil.incompatibility_grp_code
2489                                         )
2490                                  ),
2491                              decode(qpil.inventory_item_id, null, qpll.inventory_item_id,
2492                                  decode(qpil.inventory_item_id,
2493                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2494                                         null,
2495                                         qpil.inventory_item_id
2496                                         )
2497                                  ),
2498                              decode(qpil.list_header_id, null, qpll.list_header_id,
2499                                  decode(qpil.list_header_id,
2500                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2501                                         null,
2502                                         qpil.list_header_id
2503                                         )
2504                                  ),
2505                              decode(qpil.list_line_id, null, qpll.list_line_id,
2509                                         qpil.list_line_id
2506                                  decode(qpil.list_line_id,
2507                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2508                                         null,
2510                                         )
2511                                  ),
2512                              decode(qpil.list_line_no, null, qpll.list_line_no,
2513                                  decode(qpil.list_line_no,
2514                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2515                                         null,
2516                                         qpil.list_line_no
2517                                         )
2518                                  ),
2519                              decode(qpil.list_line_type_code, null, qpll.list_line_type_code,
2520                                  decode(qpil.list_line_type_code,
2521                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2522                                         null,
2523                                         qpil.list_line_type_code
2524                                         )
2525                                  ),
2526                              decode(qpil.list_price, null, qpll.list_price,
2527                                  decode(qpil.list_price,
2528                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2529                                         null,
2530                                         qpil.list_price
2531                                         )
2532                                  ),
2533                              decode(qpil.list_price_uom_code, null, qpll.list_price_uom_code,
2534                                  decode(qpil.list_price_uom_code,
2535                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2536                                         null,
2537                                         qpil.list_price_uom_code
2538                                         )
2539                                  ),
2540                              decode(qpil.modifier_level_code, null, qpll.modifier_level_code,
2541                                  decode(qpil.modifier_level_code,
2542                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2543                                         null,
2544                                         qpil.modifier_level_code
2545                                         )
2546                                  ),
2547                              decode(qpil.net_amount_flag, null, qpll.net_amount_flag,
2548                                  decode(qpil.net_amount_flag,
2549                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2550                                         null,
2551                                         qpil.net_amount_flag
2552                                         )
2553                                  ),
2554                              decode(qpil.number_effective_periods, null, qpll.number_effective_periods,
2555                                  decode(qpil.number_effective_periods,
2556                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2557                                         null,
2558                                         qpil.number_effective_periods
2559                                         )
2560                                  ),
2561                              decode(qpil.number_expiration_periods, null, qpll.number_expiration_periods,
2562                                  decode(qpil.number_expiration_periods,
2563                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2564                                         null,
2565                                         qpil.number_expiration_periods
2566                                         )
2567                                  ),
2568                              decode(qpil.operand, null, qpll.operand,
2569                                  decode(qpil.operand,
2570                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2571                                         null,
2572                                         qpil.operand
2573                                         )
2574                                  ),
2575                              decode(qpil.organization_id, null, qpll.organization_id,
2576                                  decode(qpil.organization_id,
2577                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2578                                         null,
2579                                         qpil.organization_id
2580                                         )
2581                                  ),
2582                              decode(qpil.orig_sys_header_ref, null, qpll.orig_sys_header_ref,
2583                                  decode(qpil.orig_sys_header_ref,
2584                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2585                                         null,
2586                                         qpil.orig_sys_header_ref
2587                                         )
2588                                  ),
2589                              decode(qpil.orig_sys_line_ref, null, qpll.orig_sys_line_ref,
2590                                  decode(qpil.orig_sys_line_ref,
2591                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2592                                         null,
2593                                         qpil.orig_sys_line_ref
2594                                         )
2595                                  ),
2596                              decode(qpil.override_flag, null, qpll.override_flag,
2597                                  decode(qpil.override_flag,
2598                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2602                                  ),
2599                                         null,
2600                                         qpil.override_flag
2601                                         )
2603                              decode(qpil.percent_price, null, qpll.percent_price,
2604                                  decode(qpil.percent_price,
2605                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2606                                         null,
2607                                         qpil.percent_price
2608                                         )
2609                                  ),
2610                              decode(qpil.price_break_header_ref, null,
2611                              	        (select pll.orig_sys_line_ref
2612                                          from qp_list_lines pll, qp_rltd_modifiers rm
2613                                          where rm.to_rltd_modifier_id = qpll.list_line_id
2614                                          and rm.from_rltd_modifier_id = pll.list_line_id
2615                                          and rm.RLTD_MODIFIER_GRP_TYPE='PRICE BREAK'
2616                                          ),
2617                                  decode(qpil.price_break_header_ref,
2618                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2619                                         null,
2620                                         qpil.price_break_header_ref
2621                                        )
2622                                  ),
2623                              decode(qpil.price_break_type_code, null, qpll.price_break_type_code,
2624                                  decode(qpil.price_break_type_code,
2625                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2626                                         null,
2627                                         qpil.price_break_type_code
2628                                         )
2629                                  ),
2630                              --Bug# 5412029 RAVI START
2631                              /**
2632                               * If VALUE=null then
2633                               *    If ID=null update ID to existing data
2634                               *    If ID=id update ID to id
2635                               *    If ID=G_NULL update ID to null
2636                               * If VALUE<>null then
2637                               *    If ID=null update ID to existing data
2638                               *    If ID=id update ID to id
2639                               *    If ID<>id update ID to null (conversion is done as required in ValueToId)
2640                               **/
2641                              decode(qpil.price_by_formula,
2642                                     null,
2643                                     decode(qpil.price_by_formula_id, null, qpll.price_by_formula_id,
2644                                            decode(qpil.price_by_formula_id,
2645                                                   QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2646                                                   null,
2647                                                   qpil.price_by_formula_id
2648                                                  )
2649                                           ),
2650                                     decode(qpil.price_by_formula_id, null, null,
2651                                            QP_BULK_LOADER_PUB.G_NULL_NUMBER,null,
2652                                            qpil.price_by_formula_id
2653                                           )
2654                                    ),
2655                              --Bug# 5412029 RAVI END
2656                              decode(qpil.pricing_group_sequence, null, qpll.pricing_group_sequence,
2657                                  decode(qpil.pricing_group_sequence,
2658                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2659                                         null,
2660                                         qpil.pricing_group_sequence
2661                                         )
2662                                  ),
2663                              decode(qpil.pricing_phase_id, null, qpll.pricing_phase_id,
2664                                  decode(qpil.pricing_phase_id,
2665                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2666                                         null,
2667                                         qpil.pricing_phase_id
2668                                         )
2669                                  ),
2670                              decode(qpil.primary_uom_flag, null, qpll.primary_uom_flag,
2671                                  decode(qpil.primary_uom_flag,
2672                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2673                                         null,
2674                                         qpil.primary_uom_flag
2675                                         )
2676                                  ),
2677                              decode(qpil.print_on_invoice_flag, null, qpll.print_on_invoice_flag,
2678                                  decode(qpil.print_on_invoice_flag,
2679                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2680                                         null,
2681                                         qpil.print_on_invoice_flag
2682                                         )
2683                                  ),
2684                              decode(qpil.product_precedence, null, qpll.product_precedence,
2685                                  decode(qpil.product_precedence,
2686                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2687                                         null,
2688                                         qpil.product_precedence
2689                                         )
2693                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2690                                  ),
2691                              decode(qpil.program_application_id, null, qpll.program_application_id,
2692                                  decode(qpil.program_application_id,
2694                                         null,
2695                                         qpil.program_application_id
2696                                         )
2697                                  ),
2698                              decode(qpil.program_id, null, qpll.program_id,
2699                                  decode(qpil.program_id,
2700                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2701                                         null,
2702                                         qpil.program_id
2703                                         )
2704                                  ),
2705                              decode(qpil.program_update_date, null, qpll.program_update_date,
2706                                  decode(qpil.program_update_date,
2707                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
2708                                         null,
2709                                         qpil.program_update_date
2710                                         )
2711                                  ),
2712                              decode(qpil.proration_type_code, null, qpll.proration_type_code,
2713                                  decode(qpil.proration_type_code,
2714                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2715                                         null,
2716                                         qpil.proration_type_code
2717                                         )
2718                                  ),
2719                              decode(qpil.qualification_ind, null, qpll.qualification_ind,
2720                                  decode(qpil.qualification_ind,
2721                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2722                                         null,
2723                                         qpil.qualification_ind
2724                                         )
2725                                  ),
2726                              decode(qpil.rebate_transaction_type_code, null, qpll.rebate_transaction_type_code,
2727                                  decode(qpil.rebate_transaction_type_code,
2728                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2729                                         null,
2730                                         qpil.rebate_transaction_type_code
2731                                         )
2732                                  ),
2733                              decode(qpil.recurring_flag, null, qpll.recurring_flag,
2734                                  decode(qpil.recurring_flag,
2735                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2736                                         null,
2737                                         qpil.recurring_flag
2738                                         )
2739                                  ),
2740                              decode(qpil.recurring_value, null, qpll.recurring_value,
2741                                  decode(qpil.recurring_value,
2742                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2743                                         null,
2744                                         qpil.recurring_value
2745                                         )
2746                                  ),
2747                              decode(qpil.related_item_id, null, qpll.related_item_id,
2748                                  decode(qpil.related_item_id,
2749                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2750                                         null,
2751                                         qpil.related_item_id
2752                                         )
2753                                  ),
2754                              decode(qpil.relationship_type_id, null, qpll.relationship_type_id,
2755                                  decode(qpil.relationship_type_id,
2756                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2757                                         null,
2758                                         qpil.relationship_type_id
2759                                         )
2760                                  ),
2761                              decode(qpil.reprice_flag, null, qpll.reprice_flag,
2762                                  decode(qpil.reprice_flag,
2763                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2764                                         null,
2765                                         qpil.reprice_flag
2766                                         )
2767                                  ),
2768                              decode(qpil.revision, null, qpll.revision,
2769                                  decode(qpil.revision,
2770                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2771                                         null,
2772                                         qpil.revision
2773                                         )
2774                                  ),
2775                              decode(qpil.revision_date, null, qpll.revision_date,
2776                                  decode(qpil.revision_date,
2777                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
2778                                         null,
2779                                         qpil.revision_date
2780                                         )
2781                                  ),
2782                              decode(qpil.revision_reason_code, null, qpll.revision_reason_code,
2786                                         qpil.revision_reason_code
2783                                  decode(qpil.revision_reason_code,
2784                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2785                                         null,
2787                                         )
2788                                  ),
2789                              decode(qpil.rltd_modifier_grp_type, null,
2790                                         (select rm.RLTD_MODIFIER_GRP_TYPE
2791                                          from qp_list_lines pll, qp_rltd_modifiers rm
2792                                          where rm.to_rltd_modifier_id = qpll.list_line_id
2793                                          and rm.from_rltd_modifier_id = pll.list_line_id
2794                                          and rm.RLTD_MODIFIER_GRP_TYPE='PRICE BREAK'
2795                                          ),
2796                                  decode(qpil.rltd_modifier_grp_type,
2797                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2798                                         null,
2799                                         qpil.rltd_modifier_grp_type
2800                                         )
2801                                  ),
2802                              decode(qpil.start_date_active, null, qpll.start_date_active,
2803                                  decode(qpil.start_date_active,
2804                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
2805                                         null,
2806                                         qpil.start_date_active
2807                                         )
2808                                  ),
2809                              decode(qpil.substitution_attribute, null, qpll.substitution_attribute,
2810                                  decode(qpil.substitution_attribute,
2811                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2812                                         null,
2813                                         qpil.substitution_attribute
2814                                         )
2815                                  ),
2816                              decode(qpil.substitution_context, null, qpll.substitution_context,
2817                                  decode(qpil.substitution_context,
2818                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2819                                         null,
2820                                         qpil.substitution_context
2821                                         )
2822                                  ),
2823                              decode(qpil.substitution_value, null, qpll.substitution_value,
2824                                  decode(qpil.substitution_value,
2825                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
2826                                         null,
2827                                         qpil.substitution_value
2828                                         )
2829                                  )
2830                    	from 	qp_list_headers qplh,
2831                         	qp_list_lines qpll
2832                    	where -- CAUSES FTS AS NO INDEX ON LINE_REF
2833                    		qpil.orig_sys_line_ref = qpll.orig_sys_line_ref
2834                    		and qpll.list_header_id = qplh.list_header_id
2835                    		and qplh.orig_system_header_ref=qpil.orig_sys_header_ref
2836                    )
2837               where qpil.request_id = l_request_id
2838               and   qpil.process_status_flag = 'P'
2839               --Bug# 5236656
2840               -- The interface lines record should be updated in case of both update or delete action.
2841               and   qpil.interface_action_code IN ('UPDATE','DELETE');
2842 
2843 
2844           -- Bug 5208480(5208112,4188784) RAVI
2845 	  UPDATE qp_interface_pricing_attribs qpip
2846 	  SET    qpip.request_id = l_request_id
2847 	  WHERE  qpip.rowid IN
2848 	     (SELECT pa.rowid
2849 	      FROM  qp_interface_pricing_attribs pa, qp_interface_list_headers h
2850 	      WHERE h.process_status_flag='I'
2851 	      AND   h.orig_sys_header_ref=pa.orig_sys_header_ref
2852 	      AND   h.request_id = l_request_id
2853 	      AND   pa.request_id IS NULL
2854 	      AND   pa.process_status_flag = 'P'
2855 	      AND   decode(p_process_id, null,pa.process_flag,'Y') = 'Y'
2856 	      AND   nvl(pa.process_id,0) = nvl(p_process_id, nvl(pa.process_id,0))
2857 	      AND   nvl(pa.process_type,' ') = nvl(p_process_type, nvl(pa.process_type,' '))
2858 	      AND   pa.interface_action_code IN ('INSERT','UPDATE','DELETE') )
2859               -- Bug 5208480(5208112,4188784) RAVI
2860               AND NOT EXISTS
2861               (
2862                select 1 from qp_pricing_attributes qppa
2863                where qpip.interface_action_code = 'UPDATE'
2864                and qpip.orig_sys_line_ref = qppa.orig_sys_line_ref
2865                and qppa.list_line_id is not null
2866                and qpip.list_line_id <> qppa.list_line_id
2867               )
2868               -- Bug# 5246745 RAVI
2869               -- Should not be able to update product attribute context
2870               AND NOT EXISTS
2871               (
2872                select 1 from qp_pricing_attributes qppa
2873                where qpip.interface_action_code = 'UPDATE'
2874                and qpip.orig_sys_line_ref = qppa.orig_sys_line_ref
2875                and qppa.product_attribute_context is not null
2876                and qpip.product_attribute_context <> qppa.product_attribute_context
2877               )
2878               -- Bug# 5246745 RAVI
2879               -- Should not be able to update product attribute
2880               AND NOT EXISTS
2881               (
2885                and qppa.product_attribute is not null
2882                select 1 from qp_pricing_attributes qppa
2883                where qpip.interface_action_code = 'UPDATE'
2884                and qpip.orig_sys_line_ref = qppa.orig_sys_line_ref
2886                and qpip.product_attribute <> qppa.product_attribute
2887               )
2888               -- Bug# 5246745 RAVI
2889               -- Should not be able to update product attribute Value
2890               AND NOT EXISTS
2891               (
2892                select 1 from qp_pricing_attributes qppa
2893                where qpip.interface_action_code = 'UPDATE'
2894                and qpip.orig_sys_line_ref = qppa.orig_sys_line_ref
2895                and qppa.product_attr_value is not null
2896                and qpip.product_attr_value <> qppa.product_attr_value
2897               )
2898 	    ;
2899 
2900         write_log('Number of Pricing Attributes picked: '||SQL%ROWCOUNT);
2901 
2902         --ENH Update Functionality RAVI
2903         /**
2904         If interface action is update then load all null value interface columns
2905         with values from corresponding qp table columns
2906         **/
2907         UPDATE 	qp_interface_pricing_attribs qpip
2908         SET ( 	accumulate_flag,
2909                 attribute_grouping_no,
2910                 attribute1,
2911                 attribute10,
2912                 attribute11,
2913                 attribute12,
2914                 attribute13,
2915                 attribute14,
2916                 attribute15,
2917                 attribute2,
2918                 attribute3,
2919                 attribute4,
2920                 attribute5,
2921                 attribute6,
2922                 attribute7,
2923                 attribute8,
2924                 attribute9,
2925                 comparison_operator_code,
2926                 context,
2927                 created_by,
2928                 excluder_flag,
2929                 list_header_id,
2930                 list_line_id,
2931                 orig_sys_header_ref,
2932                 orig_sys_line_ref,
2933                 orig_sys_pricing_attr_ref,
2934                 pricing_attr_value_from,
2935                 pricing_attr_value_from_number,
2936                 pricing_attr_value_to,
2937                 pricing_attr_value_to_number,
2938                 pricing_attribute,
2939                 pricing_attribute_context,
2940                 pricing_attribute_datatype,
2941                 pricing_attribute_id,
2942                 pricing_phase_id,
2943                 product_attr_value,
2944                 product_attribute,
2945                 product_attribute_context,
2946                 product_attribute_datatype,
2947                 product_uom_code,
2948                 program_application_id,
2949                 program_id,
2950                 program_update_date,
2951                 qualification_ind,
2952                 --Bug#5456164 RAVI START
2953                 --If ID in ID_to_VAL is G_CHAR then set it null
2954                 product_attr_val_disp,
2955                 pricing_attr_value_from_disp,
2956                 pricing_attr_value_to_disp
2957                 --Bug#5456164 RAVI START
2958 	    ) = ( select
2959 	    		decode(qpip.accumulate_flag, null, qppa.accumulate_flag,
2960 				decode(qpip.accumulate_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2961 					null,qpip.accumulate_flag
2962 				)
2963 			),
2964 	    		decode(qpip.attribute_grouping_no, null, qppa.attribute_grouping_no,
2965 				decode(qpip.attribute_grouping_no,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
2966 					null,qpip.attribute_grouping_no
2967 				)
2968 			),
2969         	        decode(qpip.attribute1, null, qppa.attribute1,
2970 				decode(qpip.attribute1,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2971 					null,qpip.attribute1
2972 				)
2973 			),
2974                 	decode(qpip.attribute10, null, qppa.attribute10,
2975 				decode(qpip.attribute10,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2976 					null,qpip.attribute10
2977 				)
2978 			),
2979 	                decode(qpip.attribute11, null, qppa.attribute11,
2980 				decode(qpip.attribute11,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2981 					null,qpip.attribute11
2982 				)
2983 			),
2984 	                decode(qpip.attribute12, null, qppa.attribute12,
2985 				decode(qpip.attribute12,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2986 					null,qpip.attribute12
2987 				)
2988 			),
2989 	                decode(qpip.attribute13, null, qppa.attribute13,
2990 				decode(qpip.attribute13,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2991 					null,qpip.attribute13
2992 				)
2993 			),
2994 	                decode(qpip.attribute14, null, qppa.attribute14,
2995 				decode(qpip.attribute14,QP_BULK_LOADER_PUB.G_NULL_CHAR,
2996 					null,qpip.attribute14
2997 				)
2998 			),
2999         	        decode(qpip.attribute15, null, qppa.attribute15,
3000 				decode(qpip.attribute15,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3001 					null,qpip.attribute15
3002 				)
3003 			),
3004                 	decode(qpip.attribute2, null, qppa.attribute2,
3005 				decode(qpip.attribute2,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3006 					null,qpip.attribute2
3007 				)
3008 			),
3009 	                decode(qpip.attribute3, null, qppa.attribute3,
3010 				decode(qpip.attribute3,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3011 					null,qpip.attribute3
3012 				)
3013 			),
3014         	        decode(qpip.attribute4, null, qppa.attribute4,
3015 				decode(qpip.attribute4,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3019                 	decode(qpip.attribute5, null, qppa.attribute5,
3016 					null,qpip.attribute4
3017 				)
3018 			),
3020 				decode(qpip.attribute5,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3021 					null,qpip.attribute5
3022 				)
3023 			),
3024                 	decode(qpip.attribute6, null, qppa.attribute6,
3025 				decode(qpip.attribute6,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3026 					null,qpip.attribute6
3027 				)
3028 			),
3029                 	decode(qpip.attribute7, null, qppa.attribute7,
3030 				decode(qpip.attribute7,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3031 					null,qpip.attribute7
3032 				)
3033 			),
3034         	        decode(qpip.attribute8, null, qppa.attribute8,
3035 				decode(qpip.attribute8,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3036 					null,qpip.attribute8
3037 				)
3038 			),
3039                 	decode(qpip.attribute9, null, qppa.attribute9,
3040 				decode(qpip.attribute9,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3041 					null,qpip.attribute9
3042 				)
3043 			),
3044                 	decode(qpip.comparison_operator_code, null, qppa.comparison_operator_code,
3045 				decode(qpip.comparison_operator_code,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3046 					null,qpip.comparison_operator_code
3047 				)
3048 			),
3049                 	decode(qpip.context, null, qppa.context,
3050 				decode(qpip.context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3051 					null,qpip.context
3052 				)
3053 			),
3054                 	decode(qpip.created_by, null, qppa.created_by,
3055 				decode(qpip.created_by,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3056 					null,qpip.created_by
3057 				)
3058 			),
3059                 	decode(qpip.excluder_flag, null, qppa.excluder_flag,
3060 				decode(qpip.excluder_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3061 					null,qpip.excluder_flag
3062 				)
3063 			),
3064 	                decode(qpip.list_header_id, null, qppa.list_header_id,
3065 				decode(qpip.list_header_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3066 					null,qpip.list_header_id
3067 				)
3068 			),
3069 	                decode(qpip.list_line_id, null, qppa.list_line_id,
3070 				decode(qpip.list_line_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3071 					null,qpip.list_line_id
3072 				)
3073 			),
3074 	                decode(qpip.orig_sys_header_ref, null, qppa.orig_sys_header_ref,
3075 				decode(qpip.orig_sys_header_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3076 					null,qpip.orig_sys_header_ref
3077 				)
3078 			),
3079 	                decode(qpip.orig_sys_line_ref, null, qppa.orig_sys_line_ref,
3080 				decode(qpip.orig_sys_line_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3081 					null,qpip.orig_sys_line_ref
3082 				)
3083 			),
3084 	                decode(qpip.orig_sys_pricing_attr_ref, null, qppa.orig_sys_pricing_attr_ref,
3085 				decode(qpip.orig_sys_pricing_attr_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3086 					null,qpip.orig_sys_pricing_attr_ref
3087 				)
3088 			),
3089                         --Bug# 5456164 RAVI START
3090                         /**
3091                          * If VALUE=null then
3092                          *    If ID=null update ID to existing data
3093                          *    If ID=id update ID to id
3094                          *    If ID=G_NULL update ID to null
3095                          * If VALUE<>null then
3096                          *    If ID=null update ID to existing data
3097                          *    If ID=id update ID to id
3098                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
3099                          **/
3100                         decode(qpip.pricing_attr_value_from_disp,
3101                                null,
3102                                decode(qpip.pricing_attr_value_from, null, qppa.pricing_attr_value_from,
3103                                       decode(qpip.pricing_attr_value_from,
3104                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
3105                                              null,
3106                                              qpip.pricing_attr_value_from
3107                                             )
3108                                       ),
3109                                decode(qpip.pricing_attr_value_from, null, null,
3110                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
3111                                       qpip.pricing_attr_value_from
3112                                      )
3113                         ),
3114                         --Bug# 5456164 RAVI END
3115 	                decode(qpip.pricing_attr_value_from_number, null, qppa.pricing_attr_value_from_number,
3116 				decode(qpip.pricing_attr_value_from_number,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3117 					null,qpip.pricing_attr_value_from_number
3118 				)
3119 			),
3120                         --Bug# 5456164 RAVI START
3121                         /**
3122                          * If VALUE=null then
3123                          *    If ID=null update ID to existing data
3124                          *    If ID=id update ID to id
3125                          *    If ID=G_NULL update ID to null
3126                          * If VALUE<>null then
3127                          *    If ID=null update ID to existing data
3128                          *    If ID=id update ID to id
3129                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
3130                          **/
3131                         decode(qpip.pricing_attr_value_to_disp,
3132                                null,
3133                                decode(qpip.pricing_attr_value_to, null, qppa.pricing_attr_value_to,
3137                                              qpip.pricing_attr_value_to
3134                                       decode(qpip.pricing_attr_value_to,
3135                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
3136                                              null,
3138                                             )
3139                                       ),
3140                                decode(qpip.pricing_attr_value_to, null, null,
3141                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
3142                                       qpip.pricing_attr_value_to
3143                                      )
3144                         ),
3145                         --Bug# 5456164 RAVI END
3146 	                decode(qpip.pricing_attr_value_to_number, null, qppa.pricing_attr_value_to_number,
3147 				decode(qpip.pricing_attr_value_to_number,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3148 					null,qpip.pricing_attr_value_to_number
3149 				)
3150 			),
3151                         --Bug# 5456164 RAVI START
3152                         /**
3153                          * If VALUE=null then
3154                          *    If ID=null update ID to existing data
3155                          *    If ID=id update ID to id
3156                          *    If ID=G_NULL update ID to null
3157                          * If VALUE<>null then
3158                          *    If ID=null update ID to existing data
3159                          *    If ID=id update ID to id
3160                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
3161                          **/
3162                         decode(qpip.pricing_attr_code,
3163                                null,
3164                                decode(qpip.pricing_attribute, null, qppa.pricing_attribute,
3165                                       decode(qpip.pricing_attribute,
3166                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
3167                                              null,
3168                                              qpip.pricing_attribute
3169                                             )
3170                                       ),
3171                                decode(qpip.pricing_attribute, null, null,
3172                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
3173                                       qpip.pricing_attribute
3174                                      )
3175                         ),
3176                         --Bug# 5456164 RAVI END
3177 	                decode(qpip.pricing_attribute_context, null, qppa.pricing_attribute_context,
3178 				decode(qpip.pricing_attribute_context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3179 					null,qpip.pricing_attribute_context
3180 				)
3181 			),
3182 	                decode(qpip.pricing_attribute_datatype, null, qppa.pricing_attribute_datatype,
3183 				decode(qpip.pricing_attribute_datatype,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3184 					null,qpip.pricing_attribute_datatype
3185 				)
3186 			),
3187 	                decode(qpip.pricing_attribute_id, null, qppa.pricing_attribute_id,
3188 				decode(qpip.pricing_attribute_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3189 					null,qpip.pricing_attribute_id
3190 				)
3191 			),
3192 	                decode(qpip.pricing_phase_id, null, qppa.pricing_phase_id,
3193 				decode(qpip.pricing_phase_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3194 					null,qpip.pricing_phase_id
3195 				)
3196 			),
3197                         --Bug# 5456164 RAVI START
3198                         /**
3199                          * If VALUE=null then
3200                          *    If ID=null update ID to existing data
3201                          *    If ID=id update ID to id
3202                          *    If ID=G_NULL update ID to null
3203                          * If VALUE<>null then
3204                          *    If ID=null update ID to existing data
3205                          *    If ID=id update ID to id
3206                          *    If ID<>id update ID to null (conversion is done as required in ValueToId)
3207                          **/
3208                         decode(qpip.product_attr_val_disp,
3209                                null,
3210                                decode(qpip.product_attr_value, null, qppa.product_attr_value,
3211                                       decode(qpip.product_attr_value,
3212                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
3213                                              null,
3214                                              qpip.product_attr_value
3215                                             )
3216                                       ),
3217                                decode(qpip.product_attr_value, null, null,
3218                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
3219                                       qpip.product_attr_value
3220                                      )
3221                         ),
3222                         decode(qpip.product_attr_code,
3223                                null,
3224                                decode(qpip.product_attribute, null, qppa.product_attribute,
3225                                       decode(qpip.product_attribute,
3226                                              QP_BULK_LOADER_PUB.G_NULL_CHAR,
3227                                              null,
3228                                              qpip.product_attribute
3229                                             )
3230                                       ),
3231                                decode(qpip.product_attribute, null, null,
3235                         ),
3232                                       QP_BULK_LOADER_PUB.G_NULL_CHAR,null,
3233                                       qpip.product_attribute
3234                                      )
3236                         --Bug# 5456164 RAVI END
3237 	                decode(qpip.product_attribute_context, null, qppa.product_attribute_context,
3238 				decode(qpip.product_attribute_context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3239 					null,qpip.product_attribute_context
3240 				)
3241 			),
3242 	                decode(qpip.product_attribute_datatype, null, qppa.product_attribute_datatype,
3243 				decode(qpip.product_attribute_datatype,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3244 					null,qpip.product_attribute_datatype
3245 				)
3246 			),
3247 	                decode(qpip.product_uom_code, null, qppa.product_uom_code,
3248 				decode(qpip.product_uom_code,QP_BULK_LOADER_PUB.G_NULL_CHAR,
3249 					null,qpip.product_uom_code
3250 				)
3251 			),
3252 	                decode(qpip.program_application_id, null, qppa.program_application_id,
3253 				decode(qpip.program_application_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3254 					null,qpip.program_application_id
3255 				)
3256 			),
3257 	                decode(qpip.program_id, null, qppa.program_id,
3258 				decode(qpip.program_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3259 					null,qpip.program_id
3260 				)
3261 			),
3262 	                decode(qpip.program_update_date, null, qppa.program_update_date,
3263 				decode(qpip.program_update_date,QP_BULK_LOADER_PUB.G_NULL_DATE,
3264 					null,qpip.program_update_date
3265 				)
3266 			),
3267 	                decode(qpip.qualification_ind, null, qppa.qualification_ind,
3268 				decode(qpip.qualification_ind,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3269 					null,qpip.qualification_ind
3270 				)
3271 			),
3272                         --Bug# 5456164 RAVI START
3273                 	--If ID in ID_to_VAL is G_CHAR then set it null
3274 	                decode(qpip.product_attr_val_disp,
3275 	                       QP_BULK_LOADER_PUB.G_NULL_CHAR, null,
3276 				qpip.product_attr_val_disp
3277 			),
3278 	                decode(qpip.pricing_attr_value_from_disp,
3279 	                       QP_BULK_LOADER_PUB.G_NULL_CHAR, null,
3280 				qpip.pricing_attr_value_from_disp
3281 			),
3282 	                decode(qpip.pricing_attr_value_to_disp,
3283 	                       QP_BULK_LOADER_PUB.G_NULL_CHAR, null,
3284 				qpip.pricing_attr_value_to_disp
3285 			)
3286                         --Bug# 5456164 RAVI END
3287                    	from 	qp_pricing_attributes qppa,
3288                         	qp_list_headers_b qplh
3289                    	where -- CAUSES FTS AS NO INDEX ON PRICNG_ATTR_REF
3290                    		qpip.orig_sys_pricing_attr_ref = qppa.orig_sys_pricing_attr_ref
3291                    		and qppa.list_header_id = qplh.list_header_id
3292                    		and qplh.orig_system_header_ref=qpip.orig_sys_header_ref
3293                    )
3294               where qpip.request_id = l_request_id
3295               and   qpip.process_status_flag = 'P'
3296               and   qpip.interface_action_code IN ('UPDATE','DELETE');
3297 
3298       --Highest Price Break Value To '9999...999' if it is null
3299       UPDATE qp_interface_pricing_attribs qpip
3300       SET    qpip.pricing_attr_value_to = '999999999999999'
3301       WHERE  qpip.request_id = l_request_id
3302       AND EXISTS (
3303             SELECT 'YES'
3304             FROM   qp_interface_list_lines qpil
3305             WHERE  qpil.request_id = qpip.request_id
3306             AND    qpip.orig_sys_line_ref = qpil.orig_sys_line_ref
3307             AND    qpil.price_break_header_ref is not null
3308             AND    qpip.pricing_attr_value_to is null
3309       );
3310 
3311       --Value to ID Conversion of lines and pricing attributes
3312       QP_BULK_VALUE_TO_ID.Line(l_request_id);
3313 
3314       QP_BULK_VALUE_TO_ID.Insert_Line_Error_Message(l_request_id);
3315 
3316       -- ENH duplicate line check flag RAVI
3317       IF G_QP_ENABLE_DUP_LINE_CHECK='Y' THEN
3318          QP_BULK_VALIDATE.Dup_line_Check(l_request_id);
3319       END IF;
3320 
3321       write_log('After duplicate Line Check');
3322 
3323       /*----------------Breaking the lines among the threads -----------------------------------*/
3324 
3325       --Number of lines to be processed
3326 
3327       SELECT count(*) INTO l_no_of_lines
3328       FROM   qp_interface_list_lines
3329       WHERE  request_id = l_request_id
3330       AND    process_status_flag = 'P'
3331       AND    price_break_header_ref is null
3332       AND    rltd_modifier_grp_type is null;
3333 
3334       write_log('No of Lines to be processed:'||l_no_of_lines);
3335 
3336       IF l_no_of_lines = 0 THEN
3337 
3338 	   SELECT count(*) INTO l_count
3339 		FROM (SELECT 'Y'
3340 			FROM qp_interface_list_lines
3341 		       WHERE request_id = l_request_id
3342 			 AND process_status_flag = 'P'
3343 		       UNION
3344 		      SELECT 'Y'
3345 			FROM qp_interface_pricing_attribs
3346 		       WHERE request_id = l_request_id
3347 			 AND process_status_flag = 'P');
3348 
3349 	        IF l_count > 0 THEN
3350 		   l_no_of_lines := 1;
3351 		ELSE
3352 		   l_no_of_lines := 0;
3353 		   write_log( 'No Lines to process');
3354 		END IF;
3355       END IF;
3356 
3357       IF l_no_of_lines = 0
3358       THEN
3362       END IF;
3359 	 write_log( 'No Lines to Process');
3360 	 CLEAN_UP_CODE(l_request_id);
3361 	 Return;
3363 
3364       IF p_no_of_threads > l_no_of_lines
3365       THEN
3366 	 l_no_of_threads:=l_no_of_lines;
3367       END IF;
3368 
3369 
3370       l_batch_size := floor(l_no_of_lines/l_no_of_threads);
3371       l_mod        := mod(l_no_of_lines, l_no_of_threads);
3372 
3373       write_log( 'Batch Size: '||l_batch_size);
3374       write_log( 'Mod: '||l_mod);
3375 
3376       FOR I in 1..l_no_of_threads
3377       LOOP
3378 
3379          -- ENH duplicate line check flag RAVI
3380 	 l_new_request_id := fnd_request.submit_request('QP','QPXVBLK','Pricelist Import'||
3381 							l_req_data, NULL, TRUE,
3382 							'PRL',
3383 							p_entity_name,p_process_id, p_process_type -- Bug No: 6235177, change NULL to p_process_typ
3384 							,p_process_parent,l_no_of_threads,
3385 							'Y',l_request_id,g_qp_debug, G_QP_ENABLE_DUP_LINE_CHECK);
3386 	 write_log( 'Child '||I||' request_id: '||l_new_request_id);
3387 
3388 	 IF l_new_request_id=0
3389 	 THEN
3390 	    FND_FILE.put_line(FND_FILE.OUTPUT, 'Error in spawning child process');
3391 	    retcode := 2;
3392 	    err_buff  := FND_MESSAGE.GET;
3393 	    Return;
3394 	 ELSE
3395 	    G_thread_info_table(I).request_id := l_new_request_id;
3396 
3397 	    IF I=p_no_of_threads
3398 	    THEN
3399 	       UPDATE qp_interface_list_lines
3400                SET    request_id = l_new_request_id
3401 	       WHERE  request_id = l_request_id
3402 	       AND    process_status_flag = 'P'
3403                AND    price_break_header_ref IS NULL
3404                AND    rltd_modifier_grp_type IS NULL
3405                AND    rownum <= l_batch_size+l_mod;
3406 	    ELSE
3407 	       UPDATE qp_interface_list_lines
3408                SET    request_id = l_new_request_id
3409 	       WHERE  request_id = l_request_id
3410 	       AND    process_status_flag = 'P'
3411                AND    price_break_header_ref IS NULL
3412                AND    rltd_modifier_grp_type IS NULL
3413                AND    rownum <= l_batch_size;
3414 	    END IF;
3415 	    G_thread_info_table(I).total_lines := SQL%ROWCOUNT;
3416 	    COMMIT;
3417 	 END IF;
3418 
3419     END LOOP;
3420 
3421     select hsecs into l_end_time from v$timer;
3422     write_log( 'End time :'||to_char(sysdate,'MM/DD/YYYY:HH:MM:SS'));
3423     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Time taken for the header process 1 (sec):' ||(l_end_time - l_start_time)/100);
3424 
3425     --Parents waits untill all the threads complete
3426     fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
3427 				    request_data =>to_char(l_req_data_counter));
3428 
3429 
3430 
3431     write_log( 'Parent process waiting for childs to complete....');
3432 
3433   ELSE
3434   /*------------------------------- Child Thread processing lines -----------------------*/
3435 
3436     --child threads request id
3437     write_log( '-----Begining of Child Process-----');
3438 
3439     FND_PROFILE.Get('CONC_REQUEST_ID', l_request_id);
3440 
3441     write_log( 'Request ID: '||l_request_id);
3442 
3443     -- Update PBH child lines with request id.
3444 
3445       select hsecs into l_start_time from v$timer;
3446       write_log( 'Start time :'||to_char(sysdate,'MM/DD/YYYY:HH:MM:SS'));
3447 
3448     -- Bug 5208480(5208112,4188784) RAVI
3449     UPDATE qp_interface_list_lines qpil
3450     SET    qpil.request_id = l_request_id
3451     WHERE qpil.rowid IN
3452      ((SELECT c.rowid
3453       FROM   qp_interface_list_lines p,qp_interface_list_lines c
3454       WHERE  p.request_id = l_request_id
3455       AND    c.request_id = p_request_id
3456       AND    c.price_break_header_ref = p.orig_sys_line_ref
3457       AND    c.rltd_modifier_grp_type = 'PRICE BREAK'
3458       AND    c.process_status_flag = 'P'
3459       AND    p.process_status_flag = 'P' )
3460       UNION
3461      (SELECT c.rowid
3462       FROM   qp_interface_list_lines p,qp_interface_list_lines c
3463       WHERE  p.process_status_flag = 'I'
3464       AND    c.request_id = p_request_id
3465       AND    c.price_break_header_ref = p.orig_sys_line_ref
3466       AND    c.rltd_modifier_grp_type = 'PRICE BREAK'
3467       AND    c.process_status_flag = 'P'))
3468       -- Bug 5208480(5208112,4188784) RAVI
3469       AND NOT EXISTS
3470          (
3471           select 1 from qp_list_lines qpll
3472           where qpil.interface_action_code = 'UPDATE'
3473           and qpil.orig_sys_line_ref = qpll.orig_sys_line_ref
3474           and qpll.list_line_id is not null
3475           and qpil.list_line_id <> qpll.list_line_id
3476          )
3477       ;
3478 
3479       write_log( 'Number of PBH child lines picked: '||SQL%ROWCOUNT);
3480 
3481         --ENH Update Functionality RAVI
3482         /**
3483         If interface action is update then load all null value interface columns
3484         with values from corresponding qp table columns
3485         **/
3486         -- Bug#5353889 RAVI START
3487         -- Comment the update as the updates are already done.
3488         /**
3489         UPDATE 	qp_interface_list_lines qpil
3490         SET ( 	accrual_conversion_rate,
3491                 accrual_flag,
3492                 accrual_qty,
3493                 accrual_uom_code,
3494                 arithmetic_operator,
3498                 attribute12,
3495                 attribute1,
3496                 attribute10,
3497                 attribute11,
3499                 attribute13,
3500                 attribute14,
3501                 attribute15,
3502                 attribute2,
3503                 attribute3,
3504                 attribute4,
3505                 attribute5,
3506                 attribute6,
3507                 attribute7,
3508                 attribute8,
3509                 attribute9,
3510                 automatic_flag,
3511                 base_qty,
3512                 base_uom_code,
3513                 benefit_limit,
3514                 benefit_price_list_line_id,
3515                 benefit_qty,
3516                 benefit_uom_code,
3517                 charge_subtype_code,
3518                 charge_type_code,
3519                 comments,
3520                 context,
3521                 continuous_price_break_flag,
3522                 created_by,
3523             	creation_date,
3524             	effective_period_uom,
3525                 end_date_active,
3526                 estim_accrual_rate,
3527                 estim_gl_value,
3528                 expiration_date,
3529                 expiration_period_start_date,
3530                 expiration_period_uom,
3531                 generate_using_formula_id,
3532                 include_on_returns_flag,
3533                 incompatibility_grp_code,
3534                 inventory_item_id,
3535                 list_header_id,
3536                 list_line_id,
3537                 list_line_no,
3538                 list_line_type_code,
3539                 list_price,
3540                 list_price_uom_code,
3541                 modifier_level_code,
3542                 net_amount_flag,
3543                 number_effective_periods,
3544                 number_expiration_periods,
3545                 operand,
3546                 organization_id,
3547                 orig_sys_header_ref,
3548                 orig_sys_line_ref,
3549                 override_flag,
3550                 percent_price,
3551                 price_break_header_ref,--change
3552                 price_break_type_code,
3553                 price_by_formula_id,
3554                 pricing_group_sequence,
3555                 pricing_phase_id,
3556                 primary_uom_flag,
3557                 print_on_invoice_flag,
3558                 product_precedence,
3559                 program_application_id,
3560                 program_id,
3561                 program_update_date,
3562                 proration_type_code,
3563                 qualification_ind,
3564                 rebate_transaction_type_code,
3565                 recurring_flag,
3566                 recurring_value,
3567                 related_item_id,
3568                 relationship_type_id,
3569                 reprice_flag,
3570                 revision,
3571                 revision_date,
3572                 revision_reason_code,
3573                 rltd_modifier_grp_type,--change
3574                 start_date_active,
3575                 substitution_attribute,
3576                 substitution_context,
3577                 substitution_value
3578 	    ) = ( select
3579 	    		     decode(qpil.accrual_conversion_rate, null, qpll.accrual_conversion_rate,
3580                               	 decode(qpil.accrual_conversion_rate,
3581                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3582                                         null,
3583                                         qpil.accrual_conversion_rate
3584                                         )
3585                                  ),
3586                              decode(qpil.accrual_flag, null, qpll.accrual_flag,
3587                                  decode(qpil.accrual_flag,
3588                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3589                                         null,
3590                                         qpil.accrual_flag
3591                                         )
3592                                  ),
3593                              decode(qpil.accrual_qty, null, qpll.accrual_qty,
3594                                  decode(qpil.accrual_qty,
3595                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3596                                         null,
3597                                         qpil.accrual_qty
3598                                         )
3599                                  ),
3600                              decode(qpil.accrual_uom_code, null, qpll.accrual_uom_code,
3601                                  decode(qpil.accrual_uom_code,
3602                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3603                                         null,
3604                                         qpil.accrual_uom_code
3605                                         )
3606                                  ),
3607                              decode(qpil.arithmetic_operator, null, qpll.arithmetic_operator,
3608                                  decode(qpil.arithmetic_operator,
3609                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3610                                         null,
3611                                         qpil.arithmetic_operator
3612                                         )
3613                                  ),
3614                              decode(qpil.attribute1, null, qpll.attribute1,
3615                                  decode(qpil.attribute1,
3619                                         )
3616                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3617                                         null,
3618                                         qpil.attribute1
3620                                  ),
3621                              decode(qpil.attribute10, null, qpll.attribute10,
3622                                  decode(qpil.attribute10,
3623                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3624                                         null,
3625                                         qpil.attribute10
3626                                         )
3627                                  ),
3628                              decode(qpil.attribute11, null, qpll.attribute11,
3629                                  decode(qpil.attribute11,
3630                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3631                                         null,
3632                                         qpil.attribute11
3633                                         )
3634                                  ),
3635                              decode(qpil.attribute12, null, qpll.attribute12,
3636                                  decode(qpil.attribute12,
3637                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3638                                         null,
3639                                         qpil.attribute12
3640                                         )
3641                                  ),
3642                              decode(qpil.attribute13, null, qpll.attribute13,
3643                                  decode(qpil.attribute13,
3644                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3645                                         null,
3646                                         qpil.attribute13
3647                                         )
3648                                  ),
3649                              decode(qpil.attribute14, null, qpll.attribute14,
3650                                  decode(qpil.attribute14,
3651                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3652                                         null,
3653                                         qpil.attribute14
3654                                         )
3655                                  ),
3656                              decode(qpil.attribute15, null, qpll.attribute15,
3657                                  decode(qpil.attribute15,
3658                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3659                                         null,
3660                                         qpil.attribute15
3661                                         )
3662                                  ),
3663                              decode(qpil.attribute2, null, qpll.attribute2,
3664                                  decode(qpil.attribute2,
3665                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3666                                         null,
3667                                         qpil.attribute2
3668                                         )
3669                                  ),
3670                              decode(qpil.attribute3, null, qpll.attribute3,
3671                                  decode(qpil.attribute3,
3672                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3673                                         null,
3674                                         qpil.attribute3
3675                                         )
3676                                  ),
3677                              decode(qpil.attribute4, null, qpll.attribute4,
3678                                  decode(qpil.attribute4,
3679                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3680                                         null,
3681                                         qpil.attribute4
3682                                         )
3683                                  ),
3684                              decode(qpil.attribute5, null, qpll.attribute5,
3685                                  decode(qpil.attribute5,
3686                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3687                                         null,
3688                                         qpil.attribute5
3689                                         )
3690                                  ),
3691                              decode(qpil.attribute6, null, qpll.attribute6,
3692                                  decode(qpil.attribute6,
3693                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3694                                         null,
3695                                         qpil.attribute6
3696                                         )
3697                                  ),
3698                              decode(qpil.attribute7, null, qpll.attribute7,
3699                                  decode(qpil.attribute7,
3700                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3701                                         null,
3702                                         qpil.attribute7
3703                                         )
3704                                  ),
3705                              decode(qpil.attribute8, null, qpll.attribute8,
3706                                  decode(qpil.attribute8,
3707                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3708                                         null,
3709                                         qpil.attribute8
3710                                         )
3711                                  ),
3712                              decode(qpil.attribute9, null, qpll.attribute9,
3716                                         qpil.attribute9
3713                                  decode(qpil.attribute9,
3714                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3715                                         null,
3717                                         )
3718                                  ),
3719                              decode(qpil.automatic_flag, null, qpll.automatic_flag,
3720                                  decode(qpil.automatic_flag,
3721                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3722                                         null,
3723                                         qpil.automatic_flag
3724                                         )
3725                                  ),
3726                              decode(qpil.base_qty, null, qpll.base_qty,
3727                                  decode(qpil.base_qty,
3728                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3729                                         null,
3730                                         qpil.base_qty
3731                                         )
3732                                  ),
3733                              decode(qpil.base_uom_code, null, qpll.base_uom_code,
3734                                  decode(qpil.base_uom_code,
3735                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3736                                         null,
3737                                         qpil.base_uom_code
3738                                         )
3739                                  ),
3740                              decode(qpil.benefit_limit, null, qpll.benefit_limit,
3741                                  decode(qpil.benefit_limit,
3742                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3743                                         null,
3744                                         qpil.benefit_limit
3745                                         )
3746                                  ),
3747                              decode(qpil.benefit_price_list_line_id, null, qpll.benefit_price_list_line_id,
3748                                  decode(qpil.benefit_price_list_line_id,
3749                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3750                                         null,
3751                                         qpil.benefit_price_list_line_id
3752                                         )
3753                                  ),
3754                              decode(qpil.benefit_qty, null, qpll.benefit_qty,
3755                                  decode(qpil.benefit_qty,
3756                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3757                                         null,
3758                                         qpil.benefit_qty
3759                                         )
3760                                  ),
3761                              decode(qpil.benefit_uom_code, null, qpll.benefit_uom_code,
3762                                  decode(qpil.benefit_uom_code,
3763                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3764                                         null,
3765                                         qpil.benefit_uom_code
3766                                         )
3767                                  ),
3768                              decode(qpil.charge_subtype_code, null, qpll.charge_subtype_code,
3769                                  decode(qpil.charge_subtype_code,
3770                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3771                                         null,
3772                                         qpil.charge_subtype_code
3773                                         )
3774                                  ),
3775                              decode(qpil.charge_type_code, null, qpll.charge_type_code,
3776                                  decode(qpil.charge_type_code,
3777                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3778                                         null,
3779                                         qpil.charge_type_code
3780                                         )
3781                                  ),
3782                              decode(qpil.comments, null, qpll.comments,
3783                                  decode(qpil.comments,
3784                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3785                                         null,
3786                                         qpil.comments
3787                                         )
3788                                  ),
3789                              decode(qpil.context, null, qpll.context,
3790                                  decode(qpil.context,
3791                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3792                                         null,
3793                                         qpil.context
3794                                         )
3795                                  ),
3796                              decode(qpil.continuous_price_break_flag, null, qpll.continuous_price_break_flag,
3797                                  decode(qpil.continuous_price_break_flag,
3798                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3799                                         null,
3800                                         qpil.continuous_price_break_flag
3801                                         )
3802                                  ),
3803                              decode(qpil.created_by, null, qpll.created_by,
3804                                  decode(qpil.created_by,
3808                                         )
3805                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3806                                         null,
3807                                         qpil.created_by
3809                                  ),
3810         		     decode(qpil.creation_date, null, qpll.creation_date,
3811         		         decode(qpil.creation_date,
3812         		                QP_BULK_LOADER_PUB.G_NULL_DATE,
3813         		                null,
3814         		                qpil.creation_date
3815         		                )
3816         		         ),
3817         		     decode(qpil.effective_period_uom, null, qpll.effective_period_uom,
3818         		         decode(qpil.effective_period_uom,
3819         		                QP_BULK_LOADER_PUB.G_NULL_CHAR,
3820         		                null,
3821         		                qpil.effective_period_uom
3822         		                )
3823         		         ),
3824                              decode(qpil.end_date_active, null, qpll.end_date_active,
3825                                  decode(qpil.end_date_active,
3826                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
3827                                         null,
3828                                         qpil.end_date_active
3829                                         )
3830                                  ),
3831                              decode(qpil.estim_accrual_rate, null, qpll.estim_accrual_rate,
3832                                  decode(qpil.estim_accrual_rate,
3833                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3834                                         null,
3835                                         qpil.estim_accrual_rate
3836                                         )
3837                                  ),
3838                              decode(qpil.estim_gl_value, null, qpll.estim_gl_value,
3839                                  decode(qpil.estim_gl_value,
3840                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3841                                         null,
3842                                         qpil.estim_gl_value
3843                                         )
3844                                  ),
3845                              decode(qpil.expiration_date, null, qpll.expiration_date,
3846                                  decode(qpil.expiration_date,
3847                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
3848                                         null,
3849                                         qpil.expiration_date
3850                                         )
3851                                  ),
3852                              decode(qpil.expiration_period_start_date, null, qpll.expiration_period_start_date,
3853                                  decode(qpil.expiration_period_start_date,
3854                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
3855                                         null,
3856                                         qpil.expiration_period_start_date
3857                                         )
3858                                  ),
3859                              decode(qpil.expiration_period_uom, null, qpll.expiration_period_uom,
3860                                  decode(qpil.expiration_period_uom,
3861                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3862                                         null,
3863                                         qpil.expiration_period_uom
3864                                         )
3865                                  ),
3866                              decode(qpil.generate_using_formula_id, null, qpll.generate_using_formula_id,
3867                                  decode(qpil.generate_using_formula_id,
3868                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3869                                         null,
3870                                         qpil.generate_using_formula_id
3871                                         )
3872                                  ),
3873                              decode(qpil.include_on_returns_flag, null, qpll.include_on_returns_flag,
3874                                  decode(qpil.include_on_returns_flag,
3875                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3876                                         null,
3877                                         qpil.include_on_returns_flag
3878                                         )
3879                                  ),
3880                              decode(qpil.incompatibility_grp_code, null, qpll.incompatibility_grp_code,
3881                                  decode(qpil.incompatibility_grp_code,
3882                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3883                                         null,
3884                                         qpil.incompatibility_grp_code
3885                                         )
3886                                  ),
3887                              decode(qpil.inventory_item_id, null, qpll.inventory_item_id,
3888                                  decode(qpil.inventory_item_id,
3889                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3890                                         null,
3891                                         qpil.inventory_item_id
3892                                         )
3893                                  ),
3894                              decode(qpil.list_header_id, null, qpll.list_header_id,
3895                                  decode(qpil.list_header_id,
3896                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3900                                  ),
3897                                         null,
3898                                         qpil.list_header_id
3899                                         )
3901                              decode(qpil.list_line_id, null, qpll.list_line_id,
3902                                  decode(qpil.list_line_id,
3903                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3904                                         null,
3905                                         qpil.list_line_id
3906                                         )
3907                                  ),
3908                              decode(qpil.list_line_no, null, qpll.list_line_no,
3909                                  decode(qpil.list_line_no,
3910                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3911                                         null,
3912                                         qpil.list_line_no
3913                                         )
3914                                  ),
3915                              decode(qpil.list_line_type_code, null, qpll.list_line_type_code,
3916                                  decode(qpil.list_line_type_code,
3917                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3918                                         null,
3919                                         qpil.list_line_type_code
3920                                         )
3921                                  ),
3922                              decode(qpil.list_price, null, qpll.list_price,
3923                                  decode(qpil.list_price,
3924                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3925                                         null,
3926                                         qpil.list_price
3927                                         )
3928                                  ),
3929                              decode(qpil.list_price_uom_code, null, qpll.list_price_uom_code,
3930                                  decode(qpil.list_price_uom_code,
3931                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3932                                         null,
3933                                         qpil.list_price_uom_code
3934                                         )
3935                                  ),
3936                              decode(qpil.modifier_level_code, null, qpll.modifier_level_code,
3937                                  decode(qpil.modifier_level_code,
3938                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3939                                         null,
3940                                         qpil.modifier_level_code
3941                                         )
3942                                  ),
3943                              decode(qpil.net_amount_flag, null, qpll.net_amount_flag,
3944                                  decode(qpil.net_amount_flag,
3945                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3946                                         null,
3947                                         qpil.net_amount_flag
3948                                         )
3949                                  ),
3950                              decode(qpil.number_effective_periods, null, qpll.number_effective_periods,
3951                                  decode(qpil.number_effective_periods,
3952                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3953                                         null,
3954                                         qpil.number_effective_periods
3955                                         )
3956                                  ),
3957                              decode(qpil.number_expiration_periods, null, qpll.number_expiration_periods,
3958                                  decode(qpil.number_expiration_periods,
3959                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3960                                         null,
3961                                         qpil.number_expiration_periods
3962                                         )
3963                                  ),
3964                              decode(qpil.operand, null, qpll.operand,
3965                                  decode(qpil.operand,
3966                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3967                                         null,
3968                                         qpil.operand
3969                                         )
3970                                  ),
3971                              decode(qpil.organization_id, null, qpll.organization_id,
3972                                  decode(qpil.organization_id,
3973                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
3974                                         null,
3975                                         qpil.organization_id
3976                                         )
3977                                  ),
3978                              decode(qpil.orig_sys_header_ref, null, qpll.orig_sys_header_ref,
3979                                  decode(qpil.orig_sys_header_ref,
3980                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3981                                         null,
3982                                         qpil.orig_sys_header_ref
3983                                         )
3984                                  ),
3985                              decode(qpil.orig_sys_line_ref, null, qpll.orig_sys_line_ref,
3986                                  decode(qpil.orig_sys_line_ref,
3987                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3988                                         null,
3992                              decode(qpil.override_flag, null, qpll.override_flag,
3989                                         qpil.orig_sys_line_ref
3990                                         )
3991                                  ),
3993                                  decode(qpil.override_flag,
3994                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
3995                                         null,
3996                                         qpil.override_flag
3997                                         )
3998                                  ),
3999                              decode(qpil.percent_price, null, qpll.percent_price,
4000                                  decode(qpil.percent_price,
4001                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4002                                         null,
4003                                         qpil.percent_price
4004                                         )
4005                                  ),
4006                              decode(qpil.price_break_header_ref, null,
4007                              	        (select pll.orig_sys_line_ref
4008                                          from qp_list_lines pll, qp_rltd_modifiers rm
4009                                          where rm.to_rltd_modifier_id = qpll.list_line_id
4010                                          and rm.from_rltd_modifier_id = pll.list_line_id
4011                                          and rm.RLTD_MODIFIER_GRP_TYPE='PRICE BREAK'
4012                                          ),
4013                                  decode(qpil.price_break_header_ref,
4014                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4015                                         null,
4016                                         qpil.price_break_header_ref
4017                                        )
4018                                  ),
4019                              decode(qpil.price_break_type_code, null, qpll.price_break_type_code,
4020                                  decode(qpil.price_break_type_code,
4021                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4022                                         null,
4023                                         qpil.price_break_type_code
4024                                         )
4025                                  ),
4026                              decode(qpil.price_by_formula_id, null, qpll.price_by_formula_id,
4027                                  decode(qpil.price_by_formula_id,
4028                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4029                                         null,
4030                                         qpil.price_by_formula_id
4031                                         )
4032                                  ),
4033                              decode(qpil.pricing_group_sequence, null, qpll.pricing_group_sequence,
4034                                  decode(qpil.pricing_group_sequence,
4035                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4036                                         null,
4037                                         qpil.pricing_group_sequence
4038                                         )
4039                                  ),
4040                              decode(qpil.pricing_phase_id, null, qpll.pricing_phase_id,
4041                                  decode(qpil.pricing_phase_id,
4042                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4043                                         null,
4044                                         qpil.pricing_phase_id
4045                                         )
4046                                  ),
4047                              decode(qpil.primary_uom_flag, null, qpll.primary_uom_flag,
4048                                  decode(qpil.primary_uom_flag,
4049                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4050                                         null,
4051                                         qpil.primary_uom_flag
4052                                         )
4053                                  ),
4054                              decode(qpil.print_on_invoice_flag, null, qpll.print_on_invoice_flag,
4055                                  decode(qpil.print_on_invoice_flag,
4056                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4057                                         null,
4058                                         qpil.print_on_invoice_flag
4059                                         )
4060                                  ),
4061                              decode(qpil.product_precedence, null, qpll.product_precedence,
4062                                  decode(qpil.product_precedence,
4063                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4064                                         null,
4065                                         qpil.product_precedence
4066                                         )
4067                                  ),
4068                              decode(qpil.program_application_id, null, qpll.program_application_id,
4069                                  decode(qpil.program_application_id,
4070                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4071                                         null,
4072                                         qpil.program_application_id
4073                                         )
4074                                  ),
4075                              decode(qpil.program_id, null, qpll.program_id,
4076                                  decode(qpil.program_id,
4077                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4078                                         null,
4079                                         qpil.program_id
4083                                  decode(qpil.program_update_date,
4080                                         )
4081                                  ),
4082                              decode(qpil.program_update_date, null, qpll.program_update_date,
4084                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
4085                                         null,
4086                                         qpil.program_update_date
4087                                         )
4088                                  ),
4089                              decode(qpil.proration_type_code, null, qpll.proration_type_code,
4090                                  decode(qpil.proration_type_code,
4091                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4092                                         null,
4093                                         qpil.proration_type_code
4094                                         )
4095                                  ),
4096                              decode(qpil.qualification_ind, null, qpll.qualification_ind,
4097                                  decode(qpil.qualification_ind,
4098                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4099                                         null,
4100                                         qpil.qualification_ind
4101                                         )
4102                                  ),
4103                              decode(qpil.rebate_transaction_type_code, null, qpll.rebate_transaction_type_code,
4104                                  decode(qpil.rebate_transaction_type_code,
4105                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4106                                         null,
4107                                         qpil.rebate_transaction_type_code
4108                                         )
4109                                  ),
4110                              decode(qpil.recurring_flag, null, qpll.recurring_flag,
4111                                  decode(qpil.recurring_flag,
4112                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4113                                         null,
4114                                         qpil.recurring_flag
4115                                         )
4116                                  ),
4117                              decode(qpil.recurring_value, null, qpll.recurring_value,
4118                                  decode(qpil.recurring_value,
4119                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4120                                         null,
4121                                         qpil.recurring_value
4122                                         )
4123                                  ),
4124                              decode(qpil.related_item_id, null, qpll.related_item_id,
4125                                  decode(qpil.related_item_id,
4126                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4127                                         null,
4128                                         qpil.related_item_id
4129                                         )
4130                                  ),
4131                              decode(qpil.relationship_type_id, null, qpll.relationship_type_id,
4132                                  decode(qpil.relationship_type_id,
4133                                         QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4134                                         null,
4135                                         qpil.relationship_type_id
4136                                         )
4137                                  ),
4138                              decode(qpil.reprice_flag, null, qpll.reprice_flag,
4139                                  decode(qpil.reprice_flag,
4140                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4141                                         null,
4142                                         qpil.reprice_flag
4143                                         )
4144                                  ),
4145                              decode(qpil.revision, null, qpll.revision,
4146                                  decode(qpil.revision,
4147                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4148                                         null,
4149                                         qpil.revision
4150                                         )
4151                                  ),
4152                              decode(qpil.revision_date, null, qpll.revision_date,
4153                                  decode(qpil.revision_date,
4154                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
4155                                         null,
4156                                         qpil.revision_date
4157                                         )
4158                                  ),
4159                              decode(qpil.revision_reason_code, null, qpll.revision_reason_code,
4160                                  decode(qpil.revision_reason_code,
4161                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4162                                         null,
4163                                         qpil.revision_reason_code
4164                                         )
4165                                  ),
4166                              decode(qpil.rltd_modifier_grp_type, null,
4167                                         (select rm.RLTD_MODIFIER_GRP_TYPE
4168                                          from qp_list_lines pll, qp_rltd_modifiers rm
4169                                          where rm.to_rltd_modifier_id = qpll.list_line_id
4170                                          and rm.from_rltd_modifier_id = pll.list_line_id
4171                                          and rm.RLTD_MODIFIER_GRP_TYPE='PRICE BREAK'
4175                                         null,
4172                                          ),
4173                                  decode(qpil.rltd_modifier_grp_type,
4174                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4176                                         qpil.rltd_modifier_grp_type
4177                                         )
4178                                  ),
4179                              decode(qpil.start_date_active, null, qpll.start_date_active,
4180                                  decode(qpil.start_date_active,
4181                                         QP_BULK_LOADER_PUB.G_NULL_DATE,
4182                                         null,
4183                                         qpil.start_date_active
4184                                         )
4185                                  ),
4186                              decode(qpil.substitution_attribute, null, qpll.substitution_attribute,
4187                                  decode(qpil.substitution_attribute,
4188                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4189                                         null,
4190                                         qpil.substitution_attribute
4191                                         )
4192                                  ),
4193                              decode(qpil.substitution_context, null, qpll.substitution_context,
4194                                  decode(qpil.substitution_context,
4195                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4196                                         null,
4197                                         qpil.substitution_context
4198                                         )
4199                                  ),
4200                              decode(qpil.substitution_value, null, qpll.substitution_value,
4201                                  decode(qpil.substitution_value,
4202                                         QP_BULK_LOADER_PUB.G_NULL_CHAR,
4203                                         null,
4204                                         qpil.substitution_value
4205                                         )
4206                                  )
4207                    	from 	qp_list_headers qplh,
4208                         	qp_list_lines qpll
4209                    	where -- CAUSES FTS AS NO INDEX ON LINE_REF
4210                    		qpil.orig_sys_line_ref = qpll.orig_sys_line_ref
4211                    		and qpll.list_header_id = qplh.list_header_id
4212                    		and qplh.orig_system_header_ref=qpil.orig_sys_header_ref
4213                    )
4214               where qpil.request_id = l_request_id
4215               and   qpil.process_status_flag = 'P'
4216               and   qpil.interface_action_code = 'UPDATE';
4217         **/
4218         -- Bug#5353889 RAVI END
4219 
4220     -- Update Pricing attributes records with request id
4221     UPDATE qp_interface_pricing_attribs qpip
4222     SET    qpip.request_id = l_request_id
4223     WHERE  qpip.rowid IN
4224     ((SELECT /*+ index(PA  QP_INTERFACE_PRCNG_ATTRIBS_N4)*/ pa.ROWID --7433219
4225       FROM   qp_interface_list_lines l, qp_interface_pricing_attribs pa
4226       WHERE  l.request_id = l_request_id
4227       AND    (pa.request_id = p_request_id or pa.request_id is NULL)
4228       AND    pa.process_status_flag = 'P'
4229       AND    l.process_status_flag  = 'P'
4230       -- Begin Bug No: 6235177
4231       AND decode(p_process_id, null, pa.process_flag,'Y') = 'Y'
4232       AND nvl(pa.process_id, 0) = nvl(p_process_id, nvl(pa.process_id, 0))
4233       AND nvl(pa.process_type, ' ') = nvl(p_process_type, nvl(pa.process_type, ' '))
4234       -- End Bug No: 6235177
4235       AND    pa.orig_sys_line_ref = l.orig_sys_line_ref)
4236       UNION
4237      (SELECT /*+ index(PA  QP_INTERFACE_PRCNG_ATTRIBS_N4)*/ pa.ROWID --7433219
4238       FROM   qp_interface_list_lines l, qp_interface_pricing_attribs pa
4239       WHERE  l.process_status_flag = 'I'
4240       AND    (pa.request_id = p_request_id or pa.request_id is NULL)
4241       AND    pa.process_status_flag = 'P'
4242       -- Begin Bug No: 6235177
4243       AND   decode(p_process_id, null,pa.process_flag,'Y') = 'Y'
4244       AND   nvl(pa.process_id,0) = nvl(p_process_id, nvl(pa.process_id,0))
4245       AND   nvl(pa.process_type,' ') = nvl(p_process_type, nvl(pa.process_type,' '))
4246       -- End Bug No: 6235177
4247       AND    pa.orig_sys_line_ref = l.orig_sys_line_ref))
4248       -- Bug 5208480(5208112,4188784) RAVI
4249       AND NOT EXISTS
4250          (
4251           select 1 from qp_pricing_attributes qppa
4252           where qpip.interface_action_code = 'UPDATE'
4253           and qpip.orig_sys_line_ref = qppa.orig_sys_line_ref
4254           and qppa.list_line_id is not null
4255           and qpip.list_line_id <> qppa.list_line_id
4256          )
4257       ;
4258 
4259   write_log('Number of Pricing Attributes picked: '||sql%rowcount);
4260 
4261         --ENH Update Functionality RAVI
4262         /**
4263         If interface action is update then load all null value interface columns
4264         with values from corresponding qp table columns
4265         **/
4266         -- Bug#5353889 RAVI START
4267         -- Comment the update as the updates are already done.
4268         /**
4269         UPDATE 	qp_interface_pricing_attribs qpip
4270         SET ( 	accumulate_flag,
4271                 attribute_grouping_no,
4272                 attribute1,
4273                 attribute10,
4274                 attribute11,
4275                 attribute12,
4276                 attribute13,
4277                 attribute14,
4278                 attribute15,
4279                 attribute2,
4280                 attribute3,
4284                 attribute7,
4281                 attribute4,
4282                 attribute5,
4283                 attribute6,
4285                 attribute8,
4286                 attribute9,
4287                 comparison_operator_code,
4288                 context,
4289                 created_by,
4290                 excluder_flag,
4291                 list_header_id,
4292                 list_line_id,
4293                 orig_sys_header_ref,
4294                 orig_sys_line_ref,
4295                 orig_sys_pricing_attr_ref,
4296                 pricing_attr_value_from,
4297                 pricing_attr_value_from_number,
4298                 pricing_attr_value_to,
4299                 pricing_attr_value_to_number,
4300                 pricing_attribute,
4301                 pricing_attribute_context,
4302                 pricing_attribute_datatype,
4303                 pricing_attribute_id,
4304                 pricing_phase_id,
4305                 product_attr_value,
4306                 product_attribute,
4307                 product_attribute_context,
4308                 product_attribute_datatype,
4309                 product_uom_code,
4310                 program_application_id,
4311                 program_id,
4312                 program_update_date,
4313                 qualification_ind
4314 	    ) = ( select
4315 	    		decode(qpip.accumulate_flag, null, qppa.accumulate_flag,
4316 				decode(qpip.accumulate_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4317 					null,qpip.accumulate_flag
4318 				)
4319 			),
4320 	    		decode(qpip.attribute_grouping_no, null, qppa.attribute_grouping_no,
4321 				decode(qpip.attribute_grouping_no,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4322 					null,qpip.attribute_grouping_no
4323 				)
4324 			),
4325         	        decode(qpip.attribute1, null, qppa.attribute1,
4326 				decode(qpip.attribute1,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4327 					null,qpip.attribute1
4328 				)
4329 			),
4330                 	decode(qpip.attribute10, null, qppa.attribute10,
4331 				decode(qpip.attribute10,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4332 					null,qpip.attribute10
4333 				)
4334 			),
4335 	                decode(qpip.attribute11, null, qppa.attribute11,
4336 				decode(qpip.attribute11,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4337 					null,qpip.attribute11
4338 				)
4339 			),
4340 	                decode(qpip.attribute12, null, qppa.attribute12,
4341 				decode(qpip.attribute12,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4342 					null,qpip.attribute12
4343 				)
4344 			),
4345 	                decode(qpip.attribute13, null, qppa.attribute13,
4346 				decode(qpip.attribute13,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4347 					null,qpip.attribute13
4348 				)
4349 			),
4350 	                decode(qpip.attribute14, null, qppa.attribute14,
4351 				decode(qpip.attribute14,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4352 					null,qpip.attribute14
4353 				)
4354 			),
4355         	        decode(qpip.attribute15, null, qppa.attribute15,
4356 				decode(qpip.attribute15,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4357 					null,qpip.attribute15
4358 				)
4359 			),
4360                 	decode(qpip.attribute2, null, qppa.attribute2,
4361 				decode(qpip.attribute2,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4362 					null,qpip.attribute2
4363 				)
4364 			),
4365 	                decode(qpip.attribute3, null, qppa.attribute3,
4366 				decode(qpip.attribute3,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4367 					null,qpip.attribute3
4368 				)
4369 			),
4370         	        decode(qpip.attribute4, null, qppa.attribute4,
4371 				decode(qpip.attribute4,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4372 					null,qpip.attribute4
4373 				)
4374 			),
4375                 	decode(qpip.attribute5, null, qppa.attribute5,
4376 				decode(qpip.attribute5,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4377 					null,qpip.attribute5
4378 				)
4379 			),
4380                 	decode(qpip.attribute6, null, qppa.attribute6,
4381 				decode(qpip.attribute6,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4382 					null,qpip.attribute6
4383 				)
4384 			),
4385                 	decode(qpip.attribute7, null, qppa.attribute7,
4386 				decode(qpip.attribute7,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4387 					null,qpip.attribute7
4388 				)
4389 			),
4390         	        decode(qpip.attribute8, null, qppa.attribute8,
4391 				decode(qpip.attribute8,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4392 					null,qpip.attribute8
4393 				)
4394 			),
4395                 	decode(qpip.attribute9, null, qppa.attribute9,
4396 				decode(qpip.attribute9,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4397 					null,qpip.attribute9
4398 				)
4399 			),
4400                 	decode(qpip.comparison_operator_code, null, qppa.comparison_operator_code,
4401 				decode(qpip.comparison_operator_code,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4402 					null,qpip.comparison_operator_code
4403 				)
4404 			),
4405                 	decode(qpip.context, null, qppa.context,
4406 				decode(qpip.context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4407 					null,qpip.context
4408 				)
4409 			),
4410                 	decode(qpip.created_by, null, qppa.created_by,
4411 				decode(qpip.created_by,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4412 					null,qpip.created_by
4413 				)
4414 			),
4415                 	decode(qpip.excluder_flag, null, qppa.excluder_flag,
4416 				decode(qpip.excluder_flag,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4417 					null,qpip.excluder_flag
4418 				)
4419 			),
4420 	                decode(qpip.list_header_id, null, qppa.list_header_id,
4424 			),
4421 				decode(qpip.list_header_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4422 					null,qpip.list_header_id
4423 				)
4425 	                decode(qpip.list_line_id, null, qppa.list_line_id,
4426 				decode(qpip.list_line_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4427 					null,qpip.list_line_id
4428 				)
4429 			),
4430 	                decode(qpip.orig_sys_header_ref, null, qppa.orig_sys_header_ref,
4431 				decode(qpip.orig_sys_header_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4432 					null,qpip.orig_sys_header_ref
4433 				)
4434 			),
4435 	                decode(qpip.orig_sys_line_ref, null, qppa.orig_sys_line_ref,
4436 				decode(qpip.orig_sys_line_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4437 					null,qpip.orig_sys_line_ref
4438 				)
4439 			),
4440 	                decode(qpip.orig_sys_pricing_attr_ref, null, qppa.orig_sys_pricing_attr_ref,
4441 				decode(qpip.orig_sys_pricing_attr_ref,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4442 					null,qpip.orig_sys_pricing_attr_ref
4443 				)
4444 			),
4445 	                decode(qpip.pricing_attr_value_from, null, qppa.pricing_attr_value_from,
4446 				decode(qpip.pricing_attr_value_from,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4447 					null,qpip.pricing_attr_value_from
4448 				)
4449 			),
4450 	                decode(qpip.pricing_attr_value_from_number, null, qppa.pricing_attr_value_from_number,
4451 				decode(qpip.pricing_attr_value_from_number,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4452 					null,qpip.pricing_attr_value_from_number
4453 				)
4454 			),
4455 	                decode(qpip.pricing_attr_value_to, null, qppa.pricing_attr_value_to,
4456 				decode(qpip.pricing_attr_value_to,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4457 					null,qpip.pricing_attr_value_to
4458 				)
4459 			),
4460 	                decode(qpip.pricing_attr_value_to_number, null, qppa.pricing_attr_value_to_number,
4461 				decode(qpip.pricing_attr_value_to_number,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4462 					null,qpip.pricing_attr_value_to_number
4463 				)
4464 			),
4465 	                decode(qpip.pricing_attribute, null, qppa.pricing_attribute,
4466 				decode(qpip.pricing_attribute,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4467 					null,qpip.pricing_attribute
4468 				)
4469 			),
4470 	                decode(qpip.pricing_attribute_context, null, qppa.pricing_attribute_context,
4471 				decode(qpip.pricing_attribute_context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4472 					null,qpip.pricing_attribute_context
4473 				)
4474 			),
4475 	                decode(qpip.pricing_attribute_datatype, null, qppa.pricing_attribute_datatype,
4476 				decode(qpip.pricing_attribute_datatype,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4477 					null,qpip.pricing_attribute_datatype
4478 				)
4479 			),
4480 	                decode(qpip.pricing_attribute_id, null, qppa.pricing_attribute_id,
4481 				decode(qpip.pricing_attribute_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4482 					null,qpip.pricing_attribute_id
4483 				)
4484 			),
4485 	                decode(qpip.pricing_phase_id, null, qppa.pricing_phase_id,
4486 				decode(qpip.pricing_phase_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4487 					null,qpip.pricing_phase_id
4488 				)
4489 			),
4490 	                decode(qpip.product_attr_value, null, qppa.product_attr_value,
4491 				decode(qpip.product_attr_value,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4492 					null,qpip.product_attr_value
4493 				)
4494 			),
4495 	                decode(qpip.product_attribute, null, qppa.product_attribute,
4496 				decode(qpip.product_attribute,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4497 					null,qpip.product_attribute
4498 				)
4499 			),
4500 	                decode(qpip.product_attribute_context, null, qppa.product_attribute_context,
4501 				decode(qpip.product_attribute_context,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4502 					null,qpip.product_attribute_context
4503 				)
4504 			),
4505 	                decode(qpip.product_attribute_datatype, null, qppa.product_attribute_datatype,
4506 				decode(qpip.product_attribute_datatype,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4507 					null,qpip.product_attribute_datatype
4508 				)
4509 			),
4510 	                decode(qpip.product_uom_code, null, qppa.product_uom_code,
4511 				decode(qpip.product_uom_code,QP_BULK_LOADER_PUB.G_NULL_CHAR,
4512 					null,qpip.product_uom_code
4513 				)
4514 			),
4515 	                decode(qpip.program_application_id, null, qppa.program_application_id,
4516 				decode(qpip.program_application_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4517 					null,qpip.program_application_id
4518 				)
4519 			),
4520 	                decode(qpip.program_id, null, qppa.program_id,
4521 				decode(qpip.program_id,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4522 					null,qpip.program_id
4523 				)
4524 			),
4525 	                decode(qpip.program_update_date, null, qppa.program_update_date,
4526 				decode(qpip.program_update_date,QP_BULK_LOADER_PUB.G_NULL_DATE,
4527 					null,qpip.program_update_date
4528 				)
4529 			),
4530 	                decode(qpip.qualification_ind, null, qppa.qualification_ind,
4531 				decode(qpip.qualification_ind,QP_BULK_LOADER_PUB.G_NULL_NUMBER,
4532 					null,qpip.qualification_ind
4533 				)
4534 			)
4535                    	from 	qp_pricing_attributes qppa,
4536                         	qp_list_headers_b qplh
4537                    	where -- CAUSES FTS AS NO INDEX ON PRICNG_ATTR_REF
4538                    		qpip.orig_sys_pricing_attr_ref = qppa.orig_sys_pricing_attr_ref
4539                    		and qppa.list_header_id = qplh.list_header_id
4540                    		and qplh.orig_system_header_ref=qpip.orig_sys_header_ref
4541                    )
4542               where qpip.request_id = l_request_id
4546         -- Bug#5353889 RAVI END
4543               and   qpip.process_status_flag = 'P'
4544               and   qpip.interface_action_code IN ('UPDATE','DELETE');
4545 	**/
4547 
4548   QP_BULK_VALIDATE.Attribute_Line(l_request_id);
4549 
4550   QP_BULK_VALIDATE.Mark_Errored_Interface_Record
4551 	                                  ( p_table_type=>'LINE',
4552 					    p_request_id=>l_request_id);
4553 
4554   QP_BULK_VALIDATE.Mark_Errored_Interface_Record
4555 	                                  ( p_table_type=>'PRICING_ATTRIBS',
4556 					    p_request_id=>l_request_id);
4557 
4558   Process_line(l_request_id,p_process_parent); -- 6028305
4559 
4560   write_log('After Process Line');
4561 /* Commented for bug no 6028305
4562   Process_pricing_attr(l_request_id);
4563 
4564   write_log('After Process Pricing attribute');
4565 */
4566   --check that each line inserted had atleast one null pricing context/attr record
4567   validate_lines(l_request_id);
4568 
4569 /* Commented for bug No  6028305
4570   --Clean up code
4571    write_log( 'Process Parent: '|| p_process_parent);
4572   	 IF p_process_parent = 'N' THEN
4573 	    Delete_Errored_Records_Parents(l_request_id);  --deleteing upto one level
4574 	 END IF;
4575 */
4576 
4577 	   SELECT count(*) INTO l_suc_line
4578 	     FROM qp_interface_list_lines
4579 	    WHERE request_id = l_request_id
4580 	      AND process_status_flag = 'I';
4581 
4582 	   SELECT count(*) INTO l_err_line
4583 	     FROM qp_interface_list_lines
4584 	    WHERE request_id = l_request_id
4585 	      AND process_status_flag IS NULL;
4586 
4587 	   SELECT count(*) INTO l_suc_pr_attr
4588 	     FROM qp_interface_pricing_attribs
4589 	    WHERE request_id = l_request_id
4590 	      AND process_status_flag = 'I';
4591 
4592 	   SELECT count(*) INTO l_err_pr_attr
4593 	     FROM qp_interface_pricing_attribs
4594 	    WHERE request_id = l_request_id
4595 	      AND process_status_flag IS NULL;
4596 
4597 	   purge(l_request_id);
4598 
4599     FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Number Of Successfully Processed Lines: '||l_suc_line);
4600     FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Number Of Errored Lines: '||l_err_line);
4601     FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Number Of Successfully Processed Pricing Attr: '||l_suc_pr_attr);
4602     FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'Number Of Errored Pricing Attr: '||l_err_pr_attr);
4603     ERRORS_TO_OUTPUT(l_request_id);
4604 
4605     select hsecs into l_end_time from v$timer;
4606     write_log( 'End time :'||to_char(sysdate,'MM/DD/YYYY:HH:MM:SS'));
4607     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Time taken for the line process (sec):' ||(l_end_time - l_start_time)/100);
4608 
4609   END IF;
4610 
4611   EXCEPTION
4612      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4613 	retcode := 2;
4614 	write_log('Unexpected error '||substr(sqlerrm,1200));
4615 	write_log( ' ');
4616 	oe_debug_pub.add(sqlerrm);
4617 	err_buff := FND_MESSAGE.GET;
4618      WHEN OTHERS THEN
4619 	retcode := 2;
4620 	write_log('Unexpected error '||substr(sqlerrm,1200));
4621 	write_log( ' ');
4622 	oe_debug_pub.add(sqlerrm);
4623 	err_buff := FND_MESSAGE.GET;
4624 
4625  END LOAD_LISTS;
4626 
4627 
4628 -- PROCESS HEADER API performs complete processing
4629 -- of header including entity validation and Insert/Update/Delete oprerations
4630 
4631 
4632  PROCEDURE PROCESS_HEADER
4633              (p_request_id   NUMBER)
4634   IS
4635 
4636   BEGIN
4637 
4638     write_log('Inside Process Header');
4639 
4640     QP_BULK_UTIL.LOAD_INS_HEADER
4641 	             (p_request_id=>p_request_id
4642 		      ,x_header_rec=>G_INS_HEADER_REC);
4643 
4644     write_log('Records loaded for INS:'||G_INS_HEADER_REC.orig_sys_header_ref.count);
4645 
4646     IF G_INS_HEADER_REC.orig_sys_header_ref.count>0 THEN
4647 
4648        QP_BULK_VALIDATE.ENTITY_HEADER(p_header_rec=>G_INS_HEADER_REC);
4649 
4650        QP_BULK_UTIL.Insert_Header(p_header_rec=>G_INS_HEADER_REC);
4651        QP_BULK_MSG.Save_Message(p_request_id);
4652 
4653 
4654            FORALL I IN G_INS_HEADER_REC.orig_sys_header_ref.FIRST..
4655 		    G_INS_HEADER_REC.orig_sys_header_ref.LAST
4656 
4657 	   UPDATE qp_interface_list_headers
4658            SET    process_status_flag = decode(G_INS_HEADER_REC.process_status_flag(I),'P','I',G_INS_HEADER_REC.process_status_flag(I))
4659 	   WHERE  nvl(orig_sys_header_ref,'*') = nvl(G_INS_HEADER_REC.orig_sys_header_ref(I),'*')
4660              AND request_id=p_request_id; -- Bug No: 6235177
4661 
4662 	   write_log('Records Updated with process_status_flag: ' || sql%rowcount);
4663 
4664     END IF;
4665 
4666     QP_BULK_UTIL.LOAD_UDT_HEADER
4667 	             (p_request_id => p_request_id
4668 		     ,x_header_rec => G_UDT_HEADER_REC);
4669 
4670     write_log('Records loaded for UDT:'||G_UDT_HEADER_REC.orig_sys_header_ref.count);
4671 
4672     IF G_UDT_HEADER_REC.orig_sys_header_ref.count>0 THEN
4673 
4674        QP_BULK_VALIDATE.ENTITY_HEADER(p_header_rec=>G_UDT_HEADER_REC);
4675 
4676        QP_BULK_UTIL.Update_Header(p_header_rec=>G_UDT_HEADER_REC);
4677        QP_BULK_MSG.Save_Message(p_request_id);
4678 
4679        	FORALL I IN G_UDT_HEADER_REC.orig_sys_header_ref.FIRST..
4680 		    G_UDT_HEADER_REC.orig_sys_header_ref.LAST
4681 
4682 	   UPDATE qp_interface_list_headers
4683            SET    process_status_flag = decode(G_UDT_HEADER_REC.process_status_flag(I),'P','I',G_UDT_HEADER_REC.process_status_flag(I))
4687 	write_log('Records Updated with process_status_flag:' || sql%rowcount);
4684 	   WHERE  nvl(orig_sys_header_ref,'*') = nvl(G_UDT_HEADER_REC.orig_sys_header_ref(I),'*')
4685              AND request_id = p_request_id; -- Bug No: 6235177
4686 
4688     END IF;
4689 
4690 
4691     QP_BULK_UTIL.Delete_Header(p_request_id);
4692 
4693     QP_BULK_MSG.Save_Message(p_request_id);
4694 
4695     write_log('Leaving Process Header');
4696     COMMIT;
4697 
4698  EXCEPTION
4699     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4700        write_log( 'UNEXCPECTED ERROR IN PROCESS_HEADER:'||sqlerrm);
4701        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4702     WHEN OTHERS THEN
4703        write_log( 'UNEXCPECTED ERROR IN PROCESS_HEADER'||sqlerrm);
4704        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4705 END  PROCESS_HEADER;
4706 
4707 
4708 PROCEDURE PROCESS_QUALIFIER
4709               (p_request_id   NUMBER)
4710 IS
4711    CURSOR C_INS_QUALIFIER IS
4712      SELECT  q.QUALIFIER_ID
4713 	    ,q.REQUEST_ID
4714 	    ,q.QUALIFIER_GROUPING_NO
4715             ,q.QUALIFIER_CONTEXT
4716 	    ,q.QUALIFIER_ATTRIBUTE
4717 	    ,q.QUALIFIER_ATTR_VALUE
4718 	    ,q.QUALIFIER_ATTR_VALUE_TO
4719 	    ,q.QUALIFIER_DATATYPE
4720 	    ,q.QUALIFIER_PRECEDENCE
4721 	    ,q.COMPARISON_OPERATOR_CODE
4722 	    ,q.EXCLUDER_FLAG
4723 	    ,q.START_DATE_ACTIVE
4724 	    ,q.END_DATE_ACTIVE
4725 	    ,q.LIST_HEADER_ID
4726 	    ,q.LIST_LINE_ID
4727 	    ,q.QUALIFIER_RULE_ID
4728 	    ,q.CREATED_FROM_RULE_ID
4729 	    ,h.ACTIVE_FLAG
4730 	    ,h.LIST_TYPE_CODE
4731 	    ,q.QUAL_ATTR_VALUE_FROM_NUMBER
4732 	    ,q.QUAL_ATTR_VALUE_TO_NUMBER
4733 	    ,q.QUALIFIER_GROUP_CNT
4734 	    ,q.HEADER_QUALS_EXIST_FLAG
4735 	    ,q.CONTEXT
4736 	    ,q.ATTRIBUTE1
4737 	    ,q.ATTRIBUTE2
4738 	    ,q.ATTRIBUTE3
4739 	    ,q.ATTRIBUTE4
4740 	    ,q.ATTRIBUTE5
4741 	    ,q.ATTRIBUTE6
4742 	    ,q.ATTRIBUTE7
4743 	    ,q.ATTRIBUTE8
4744 	    ,q.ATTRIBUTE9
4745 	    ,q.ATTRIBUTE10
4746 	    ,q.ATTRIBUTE11
4747 	    ,q.ATTRIBUTE12
4748 	    ,q.ATTRIBUTE13
4749 	    ,q.ATTRIBUTE14
4750 	    ,q.ATTRIBUTE15
4751 	    ,q.PROCESS_ID
4752 	    ,q.PROCESS_TYPE
4753 	    ,q.INTERFACE_ACTION_CODE
4754 	    ,q.LOCK_FLAG
4755 	    ,q.PROCESS_FLAG
4756 	    ,q.DELETE_FLAG
4757 	    ,q.PROCESS_STATUS_FLAG
4758 	    ,q.LIST_LINE_NO
4759 	    ,q.CREATED_FROM_RULE
4760 	    ,q.QUALIFIER_RULE
4761 	    ,q.QUALIFIER_ATTRIBUTE_CODE
4762 	    ,q.QUALIFIER_ATTR_VALUE_CODE
4763 	    ,q.QUALIFIER_ATTR_VALUE_TO_CODE
4764 	    ,q.ATTRIBUTE_STATUS
4765 	    ,q.ORIG_SYS_HEADER_REF
4766 	    ,q.ORIG_SYS_QUALIFIER_REF
4767 	    ,q.ORIG_SYS_LINE_REF
4768             ,q.QUALIFY_HIER_DESCENDENTS_FLAG
4769        FROM   qp_interface_qualifiers q, qp_interface_list_headers h
4770       WHERE    q.request_id = p_request_id
4771        AND    h.request_id = p_request_id    -- bug no 5881528
4772 	AND    h.orig_sys_header_ref = q.orig_sys_header_ref
4773 	AND    q.process_status_flag = 'P'
4774 	AND    h.process_status_flag ='I'
4775 	AND    q.interface_action_code = 'INSERT';
4776 
4777       CURSOR C_UDT_QUALIFIER IS
4778      SELECT  q.QUALIFIER_ID
4779 	    ,q.REQUEST_ID
4780 	    ,q.QUALIFIER_GROUPING_NO
4781             ,q.QUALIFIER_CONTEXT
4782 	    ,q.QUALIFIER_ATTRIBUTE
4783 	    ,q.QUALIFIER_ATTR_VALUE
4784 	    ,q.QUALIFIER_ATTR_VALUE_TO
4785 	    ,q.QUALIFIER_DATATYPE
4786 	    ,q.QUALIFIER_PRECEDENCE
4787 	    ,q.COMPARISON_OPERATOR_CODE
4788 	    ,q.EXCLUDER_FLAG
4789 	    ,q.START_DATE_ACTIVE
4790 	    ,q.END_DATE_ACTIVE
4791 	    ,q.LIST_HEADER_ID
4792 	    ,q.LIST_LINE_ID
4793 	    ,q.QUALIFIER_RULE_ID
4794 	    ,q.CREATED_FROM_RULE_ID
4795 	    ,h.ACTIVE_FLAG
4796 	    ,h.LIST_TYPE_CODE
4797 	    ,q.QUAL_ATTR_VALUE_FROM_NUMBER
4798 	    ,q.QUAL_ATTR_VALUE_TO_NUMBER
4799 	    ,q.QUALIFIER_GROUP_CNT
4800 	    ,q.HEADER_QUALS_EXIST_FLAG
4801 	    ,q.CONTEXT
4802 	    ,q.ATTRIBUTE1
4803 	    ,q.ATTRIBUTE2
4804 	    ,q.ATTRIBUTE3
4805 	    ,q.ATTRIBUTE4
4806 	    ,q.ATTRIBUTE5
4807 	    ,q.ATTRIBUTE6
4808 	    ,q.ATTRIBUTE7
4809 	    ,q.ATTRIBUTE8
4810 	    ,q.ATTRIBUTE9
4811 	    ,q.ATTRIBUTE10
4812 	    ,q.ATTRIBUTE11
4813 	    ,q.ATTRIBUTE12
4814 	    ,q.ATTRIBUTE13
4815 	    ,q.ATTRIBUTE14
4816 	    ,q.ATTRIBUTE15
4817 	    ,q.PROCESS_ID
4818 	    ,q.PROCESS_TYPE
4819 	    ,q.INTERFACE_ACTION_CODE
4820 	    ,q.LOCK_FLAG
4821 	    ,q.PROCESS_FLAG
4822 	    ,q.DELETE_FLAG
4823 	    ,q.PROCESS_STATUS_FLAG
4824 	    ,q.LIST_LINE_NO
4825 	    ,q.CREATED_FROM_RULE
4826 	    ,q.QUALIFIER_RULE
4827 	    ,q.QUALIFIER_ATTRIBUTE_CODE
4828 	    ,q.QUALIFIER_ATTR_VALUE_CODE
4829 	    ,q.QUALIFIER_ATTR_VALUE_TO_CODE
4830 	    ,q.ATTRIBUTE_STATUS
4831 	    ,q.ORIG_SYS_HEADER_REF
4832 	    ,q.ORIG_SYS_QUALIFIER_REF
4833 	    ,q.ORIG_SYS_LINE_REF
4834             ,q.QUALIFY_HIER_DESCENDENTS_FLAG
4835        FROM   qp_interface_qualifiers q, qp_interface_list_headers h
4836       WHERE    q.request_id = p_request_id
4837        AND    h.request_id = p_request_id    -- bug no 5881528
4838 	AND    h.orig_sys_header_ref = q.orig_sys_header_ref
4839 	AND    q.process_status_flag = 'P'
4840 	AND    h.process_status_flag ='I'
4841 	AND    q.interface_action_code = 'UPDATE';
4845    l_err_buf VARCHAR2(30);
4842 
4843    l_rows NATURAL;
4844    l_ret_code NUMBER;
4846    l_hq_count NUMBER;
4847    l_return_status VARCHAR2(1);
4848 
4849 BEGIN
4850      write_log('Entering process QUalifier');
4851      l_rows := g_qp_batch_size;
4852 
4853      OPEN C_INS_QUALIFIER;
4854      LOOP
4855              G_INS_QUALIFIER_REC.QUALIFIER_ID.delete;
4856 	     G_INS_QUALIFIER_REC.REQUEST_ID.delete;
4857 	     G_INS_QUALIFIER_REC.QUALIFIER_GROUPING_NO.delete;
4858 	     G_INS_QUALIFIER_REC.QUALIFIER_CONTEXT.delete;
4859 	     G_INS_QUALIFIER_REC.QUALIFIER_ATTRIBUTE.delete;
4860 	     G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE.delete;
4861 	     G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO.delete;
4862 	     G_INS_QUALIFIER_REC.QUALIFIER_DATATYPE.delete;
4863 	     G_INS_QUALIFIER_REC.QUALIFIER_PRECEDENCE.delete;
4864 	     G_INS_QUALIFIER_REC.COMPARISON_OPERATOR_CODE.delete;
4865 	     G_INS_QUALIFIER_REC.EXCLUDER_FLAG.delete;
4866 	     G_INS_QUALIFIER_REC.START_DATE_ACTIVE.delete;
4867 	     G_INS_QUALIFIER_REC.END_DATE_ACTIVE.delete;
4868 	     G_INS_QUALIFIER_REC.LIST_HEADER_ID.delete;
4869 	     G_INS_QUALIFIER_REC.LIST_LINE_ID.delete;
4870 	     G_INS_QUALIFIER_REC.QUALIFIER_RULE_ID.delete;
4871 	     G_INS_QUALIFIER_REC.CREATED_FROM_RULE_ID.delete;
4872 	     G_INS_QUALIFIER_REC.ACTIVE_FLAG.delete;
4873 	     G_INS_QUALIFIER_REC.LIST_TYPE_CODE.delete;
4874 	     G_INS_QUALIFIER_REC.QUAL_ATTR_VALUE_FROM_NUMBER.delete;
4875 	     G_INS_QUALIFIER_REC.QUAL_ATTR_VALUE_TO_NUMBER.delete;
4876 	     G_INS_QUALIFIER_REC.QUALIFIER_GROUP_CNT.delete;
4877 	     G_INS_QUALIFIER_REC.HEADER_QUALS_EXIST_FLAG.delete;
4878 	     G_INS_QUALIFIER_REC.CONTEXT.delete;
4879 	     G_INS_QUALIFIER_REC.ATTRIBUTE1.delete;
4880 	     G_INS_QUALIFIER_REC.ATTRIBUTE2.delete;
4881 	     G_INS_QUALIFIER_REC.ATTRIBUTE3.delete;
4882 	     G_INS_QUALIFIER_REC.ATTRIBUTE4.delete;
4883 	     G_INS_QUALIFIER_REC.ATTRIBUTE5.delete;
4884 	     G_INS_QUALIFIER_REC.ATTRIBUTE6.delete;
4885 	     G_INS_QUALIFIER_REC.ATTRIBUTE7.delete;
4886 	     G_INS_QUALIFIER_REC.ATTRIBUTE8.delete;
4887 	     G_INS_QUALIFIER_REC.ATTRIBUTE9.delete;
4888 	     G_INS_QUALIFIER_REC.ATTRIBUTE10.delete;
4889 	     G_INS_QUALIFIER_REC.ATTRIBUTE11.delete;
4890 	     G_INS_QUALIFIER_REC.ATTRIBUTE12.delete;
4891 	     G_INS_QUALIFIER_REC.ATTRIBUTE13.delete;
4892 	     G_INS_QUALIFIER_REC.ATTRIBUTE14.delete;
4893 	     G_INS_QUALIFIER_REC.ATTRIBUTE15.delete;
4894 	     G_INS_QUALIFIER_REC.PROCESS_ID.delete;
4895 	     G_INS_QUALIFIER_REC.PROCESS_TYPE.delete;
4896 	     G_INS_QUALIFIER_REC.INTERFACE_ACTION_CODE.delete;
4897 	     G_INS_QUALIFIER_REC.LOCK_FLAG.delete;
4898 	     G_INS_QUALIFIER_REC.PROCESS_FLAG.delete;
4899 	     G_INS_QUALIFIER_REC.DELETE_FLAG.delete;
4900 	     G_INS_QUALIFIER_REC.PROCESS_STATUS_FLAG.delete;
4901 	     G_INS_QUALIFIER_REC.LIST_LINE_NO.delete;
4902 	     G_INS_QUALIFIER_REC.CREATED_FROM_RULE.delete;
4903 	     G_INS_QUALIFIER_REC.QUALIFIER_RULE.delete;
4904 	     G_INS_QUALIFIER_REC.QUALIFIER_ATTRIBUTE_CODE.delete;
4905 	     G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_CODE.delete;
4906 	     G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO_CODE.delete;
4907 	     G_INS_QUALIFIER_REC.ATTRIBUTE_STATUS.delete;
4908 	     G_INS_QUALIFIER_REC.ORIG_SYS_HEADER_REF.delete;
4909 	     G_INS_QUALIFIER_REC.ORIG_SYS_QUALIFIER_REF.delete;
4910 	     G_INS_QUALIFIER_REC.ORIG_SYS_LINE_REF.delete;
4911              G_INS_QUALIFIER_REC.QUALIFY_HIER_DESCENDENTS_FLAG.delete;
4912 
4913 
4914        FETCH C_INS_QUALIFIER BULK COLLECT
4915        INTO  G_INS_QUALIFIER_REC.QUALIFIER_ID
4916 	    ,G_INS_QUALIFIER_REC.REQUEST_ID
4917 	    ,G_INS_QUALIFIER_REC.QUALIFIER_GROUPING_NO
4918 	    ,G_INS_QUALIFIER_REC.QUALIFIER_CONTEXT
4919 	    ,G_INS_QUALIFIER_REC.QUALIFIER_ATTRIBUTE
4920 	    ,G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE
4921 	    ,G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO
4922 	    ,G_INS_QUALIFIER_REC.QUALIFIER_DATATYPE
4923 	    ,G_INS_QUALIFIER_REC.QUALIFIER_PRECEDENCE
4924 	    ,G_INS_QUALIFIER_REC.COMPARISON_OPERATOR_CODE
4925 	    ,G_INS_QUALIFIER_REC.EXCLUDER_FLAG
4926 	    ,G_INS_QUALIFIER_REC.START_DATE_ACTIVE
4927 	    ,G_INS_QUALIFIER_REC.END_DATE_ACTIVE
4928 	    ,G_INS_QUALIFIER_REC.LIST_HEADER_ID
4929 	    ,G_INS_QUALIFIER_REC.LIST_LINE_ID
4930 	    ,G_INS_QUALIFIER_REC.QUALIFIER_RULE_ID
4931 	    ,G_INS_QUALIFIER_REC.CREATED_FROM_RULE_ID
4932 	    ,G_INS_QUALIFIER_REC.ACTIVE_FLAG
4933 	    ,G_INS_QUALIFIER_REC.LIST_TYPE_CODE
4934 	    ,G_INS_QUALIFIER_REC.QUAL_ATTR_VALUE_FROM_NUMBER
4935 	    ,G_INS_QUALIFIER_REC.QUAL_ATTR_VALUE_TO_NUMBER
4936 	    ,G_INS_QUALIFIER_REC.QUALIFIER_GROUP_CNT
4937 	    ,G_INS_QUALIFIER_REC.HEADER_QUALS_EXIST_FLAG
4938 	    ,G_INS_QUALIFIER_REC.CONTEXT
4939 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE1
4940 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE2
4941 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE3
4942 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE4
4943 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE5
4944 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE6
4945 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE7
4946 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE8
4947 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE9
4948 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE10
4949 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE11
4950 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE12
4951 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE13
4952 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE14
4953 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE15
4954 	    ,G_INS_QUALIFIER_REC.PROCESS_ID
4955 	    ,G_INS_QUALIFIER_REC.PROCESS_TYPE
4956 	    ,G_INS_QUALIFIER_REC.INTERFACE_ACTION_CODE
4957 	    ,G_INS_QUALIFIER_REC.LOCK_FLAG
4958 	    ,G_INS_QUALIFIER_REC.PROCESS_FLAG
4962 	    ,G_INS_QUALIFIER_REC.CREATED_FROM_RULE
4959 	    ,G_INS_QUALIFIER_REC.DELETE_FLAG
4960 	    ,G_INS_QUALIFIER_REC.PROCESS_STATUS_FLAG
4961 	    ,G_INS_QUALIFIER_REC.LIST_LINE_NO
4963 	    ,G_INS_QUALIFIER_REC.QUALIFIER_RULE
4964 	    ,G_INS_QUALIFIER_REC.QUALIFIER_ATTRIBUTE_CODE
4965 	    ,G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_CODE
4966 	    ,G_INS_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO_CODE
4967 	    ,G_INS_QUALIFIER_REC.ATTRIBUTE_STATUS
4968 	    ,G_INS_QUALIFIER_REC.ORIG_SYS_HEADER_REF
4969 	    ,G_INS_QUALIFIER_REC.ORIG_SYS_QUALIFIER_REF
4970 	    ,G_INS_QUALIFIER_REC.ORIG_SYS_LINE_REF
4971             ,G_INS_QUALIFIER_REC.QUALIFY_HIER_DESCENDENTS_FLAG
4972 	    LIMIT l_rows;
4973 
4974 
4975 
4976            write_log('No of INS Qual records fetched: '
4977 		                  || G_INS_qualifier_rec.process_flag.count);
4978 
4979            IF G_INS_qualifier_rec.orig_sys_qualifier_ref.count >0 Then
4980 
4981             QP_BULK_VALIDATE.ENTITY_QUALIFIER
4982 	                      (p_qualifier_rec=>G_INS_QUALIFIER_REC);
4983 
4984 	    QP_BULK_UTIL.Insert_Qualifier(p_qualifier_rec=>G_INS_QUALIFIER_REC);
4985 
4986 	    QP_BULK_MSG.SAVE_MESSAGE(p_request_id);
4987 
4988 	    --set process_status_flag
4989 
4990 	    FORALL I IN G_INS_QUALIFIER_REC.orig_sys_qualifier_ref.FIRST
4991 		     ..G_INS_QUALIFIER_REC.orig_sys_qualifier_ref.LAST
4992 	      UPDATE qp_interface_qualifiers
4993            	SET    process_status_flag = decode(G_INS_QUALIFIER_REC.process_status_flag(I),'P','I',G_INS_QUALIFIER_REC.process_status_flag(I))
4994 	       WHERE  orig_sys_header_ref = G_INS_QUALIFIER_REC.orig_sys_header_ref(I)
4995 		 AND    orig_sys_qualifier_ref = G_INS_QUALIFIER_REC.orig_sys_qualifier_ref(I)
4996 		 AND request_id = p_request_id; --Bug No: 6235177
4997 
4998 	    END IF;
4999 	    COMMIT;
5000 	EXIT WHEN C_INS_QUALIFIER%NOTFOUND;
5001 
5002      END LOOP; /*-----End processing insertin records --------*/
5003      CLOSE C_INS_QUALIFIER;
5004 	   ---------------------- UPDATION ---------------------------------
5005      OPEN C_UDT_QUALIFIER;
5006      LOOP
5007 
5008              G_UDT_QUALIFIER_REC.QUALIFIER_ID.delete;
5009 	     G_UDT_QUALIFIER_REC.REQUEST_ID.delete;
5010 	     G_UDT_QUALIFIER_REC.QUALIFIER_GROUPING_NO.delete;
5011 	     G_UDT_QUALIFIER_REC.QUALIFIER_CONTEXT.delete;
5012 	     G_UDT_QUALIFIER_REC.QUALIFIER_ATTRIBUTE.delete;
5013 	     G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE.delete;
5014 	     G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO.delete;
5015 	     G_UDT_QUALIFIER_REC.QUALIFIER_DATATYPE.delete;
5016 	     G_UDT_QUALIFIER_REC.QUALIFIER_PRECEDENCE.delete;
5017 	     G_UDT_QUALIFIER_REC.COMPARISON_OPERATOR_CODE.delete;
5018 	     G_UDT_QUALIFIER_REC.EXCLUDER_FLAG.delete;
5019 	     G_UDT_QUALIFIER_REC.START_DATE_ACTIVE.delete;
5020 	     G_UDT_QUALIFIER_REC.END_DATE_ACTIVE.delete;
5021 	     G_UDT_QUALIFIER_REC.LIST_HEADER_ID.delete;
5022 	     G_UDT_QUALIFIER_REC.LIST_LINE_ID.delete;
5023 	     G_UDT_QUALIFIER_REC.QUALIFIER_RULE_ID.delete;
5024 	     G_UDT_QUALIFIER_REC.CREATED_FROM_RULE_ID.delete;
5025 	     G_UDT_QUALIFIER_REC.ACTIVE_FLAG.delete;
5026 	     G_UDT_QUALIFIER_REC.LIST_TYPE_CODE.delete;
5027 	     G_UDT_QUALIFIER_REC.QUAL_ATTR_VALUE_FROM_NUMBER.delete;
5028 	     G_UDT_QUALIFIER_REC.QUAL_ATTR_VALUE_TO_NUMBER.delete;
5029 	     G_UDT_QUALIFIER_REC.QUALIFIER_GROUP_CNT.delete;
5030 	     G_UDT_QUALIFIER_REC.HEADER_QUALS_EXIST_FLAG.delete;
5031 	     G_UDT_QUALIFIER_REC.CONTEXT.delete;
5032 	     G_UDT_QUALIFIER_REC.ATTRIBUTE1.delete;
5033 	     G_UDT_QUALIFIER_REC.ATTRIBUTE2.delete;
5034 	     G_UDT_QUALIFIER_REC.ATTRIBUTE3.delete;
5035 	     G_UDT_QUALIFIER_REC.ATTRIBUTE4.delete;
5036 	     G_UDT_QUALIFIER_REC.ATTRIBUTE5.delete;
5037 	     G_UDT_QUALIFIER_REC.ATTRIBUTE6.delete;
5038 	     G_UDT_QUALIFIER_REC.ATTRIBUTE7.delete;
5039 	     G_UDT_QUALIFIER_REC.ATTRIBUTE8.delete;
5040 	     G_UDT_QUALIFIER_REC.ATTRIBUTE9.delete;
5041 	     G_UDT_QUALIFIER_REC.ATTRIBUTE10.delete;
5042 	     G_UDT_QUALIFIER_REC.ATTRIBUTE11.delete;
5043 	     G_UDT_QUALIFIER_REC.ATTRIBUTE12.delete;
5044 	     G_UDT_QUALIFIER_REC.ATTRIBUTE13.delete;
5045 	     G_UDT_QUALIFIER_REC.ATTRIBUTE14.delete;
5046 	     G_UDT_QUALIFIER_REC.ATTRIBUTE15.delete;
5047 	     G_UDT_QUALIFIER_REC.PROCESS_ID.delete;
5048 	     G_UDT_QUALIFIER_REC.PROCESS_TYPE.delete;
5049 	     G_UDT_QUALIFIER_REC.INTERFACE_ACTION_CODE.delete;
5050 	     G_UDT_QUALIFIER_REC.LOCK_FLAG.delete;
5051 	     G_UDT_QUALIFIER_REC.PROCESS_FLAG.delete;
5052 	     G_UDT_QUALIFIER_REC.DELETE_FLAG.delete;
5053 	     G_UDT_QUALIFIER_REC.PROCESS_STATUS_FLAG.delete;
5054 	     G_UDT_QUALIFIER_REC.LIST_LINE_NO.delete;
5055 	     G_UDT_QUALIFIER_REC.CREATED_FROM_RULE.delete;
5056 	     G_UDT_QUALIFIER_REC.QUALIFIER_RULE.delete;
5057 	     G_UDT_QUALIFIER_REC.QUALIFIER_ATTRIBUTE_CODE.delete;
5058 	     G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_CODE.delete;
5059 	     G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO_CODE.delete;
5060 	     G_UDT_QUALIFIER_REC.ATTRIBUTE_STATUS.delete;
5061 	     G_UDT_QUALIFIER_REC.ORIG_SYS_HEADER_REF.delete;
5062 	     G_UDT_QUALIFIER_REC.ORIG_SYS_QUALIFIER_REF.delete;
5063 	     G_UDT_QUALIFIER_REC.ORIG_SYS_LINE_REF.delete;
5064              G_UDT_QUALIFIER_REC.QUALIFY_HIER_DESCENDENTS_FLAG.delete;
5065 
5066 
5067        FETCH C_UDT_QUALIFIER BULK COLLECT
5068        INTO  G_UDT_QUALIFIER_REC.QUALIFIER_ID
5069 	    ,G_UDT_QUALIFIER_REC.REQUEST_ID
5070 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_GROUPING_NO
5071 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_CONTEXT
5072 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_ATTRIBUTE
5076 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_PRECEDENCE
5073 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE
5074 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO
5075 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_DATATYPE
5077 	    ,G_UDT_QUALIFIER_REC.COMPARISON_OPERATOR_CODE
5078 	    ,G_UDT_QUALIFIER_REC.EXCLUDER_FLAG
5079 	    ,G_UDT_QUALIFIER_REC.START_DATE_ACTIVE
5080 	    ,G_UDT_QUALIFIER_REC.END_DATE_ACTIVE
5081 	    ,G_UDT_QUALIFIER_REC.LIST_HEADER_ID
5082 	    ,G_UDT_QUALIFIER_REC.LIST_LINE_ID
5083 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_RULE_ID
5084 	    ,G_UDT_QUALIFIER_REC.CREATED_FROM_RULE_ID
5085 	    ,G_UDT_QUALIFIER_REC.ACTIVE_FLAG
5086 	    ,G_UDT_QUALIFIER_REC.LIST_TYPE_CODE
5087 	    ,G_UDT_QUALIFIER_REC.QUAL_ATTR_VALUE_FROM_NUMBER
5088 	    ,G_UDT_QUALIFIER_REC.QUAL_ATTR_VALUE_TO_NUMBER
5089 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_GROUP_CNT
5090 	    ,G_UDT_QUALIFIER_REC.HEADER_QUALS_EXIST_FLAG
5091 	    ,G_UDT_QUALIFIER_REC.CONTEXT
5092 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE1
5093 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE2
5094 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE3
5095 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE4
5096 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE5
5097 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE6
5098 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE7
5099 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE8
5100 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE9
5101 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE10
5102 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE11
5103 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE12
5104 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE13
5105 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE14
5106 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE15
5107 	    ,G_UDT_QUALIFIER_REC.PROCESS_ID
5108 	    ,G_UDT_QUALIFIER_REC.PROCESS_TYPE
5109 	    ,G_UDT_QUALIFIER_REC.INTERFACE_ACTION_CODE
5110 	    ,G_UDT_QUALIFIER_REC.LOCK_FLAG
5111 	    ,G_UDT_QUALIFIER_REC.PROCESS_FLAG
5112 	    ,G_UDT_QUALIFIER_REC.DELETE_FLAG
5113 	    ,G_UDT_QUALIFIER_REC.PROCESS_STATUS_FLAG
5114 	    ,G_UDT_QUALIFIER_REC.LIST_LINE_NO
5115 	    ,G_UDT_QUALIFIER_REC.CREATED_FROM_RULE
5116 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_RULE
5117 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_ATTRIBUTE_CODE
5118 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_CODE
5119 	    ,G_UDT_QUALIFIER_REC.QUALIFIER_ATTR_VALUE_TO_CODE
5120 	    ,G_UDT_QUALIFIER_REC.ATTRIBUTE_STATUS
5121 	    ,G_UDT_QUALIFIER_REC.ORIG_SYS_HEADER_REF
5122 	    ,G_UDT_QUALIFIER_REC.ORIG_SYS_QUALIFIER_REF
5123 	    ,G_UDT_QUALIFIER_REC.ORIG_SYS_LINE_REF
5124             ,G_UDT_QUALIFIER_REC.QUALIFY_HIER_DESCENDENTS_FLAG
5125 	    LIMIT l_rows;
5126 
5127            write_log('No of qual upt records: '
5128 			 || G_UDT_qualifier_rec.process_flag.count);
5129 
5130            IF G_UDT_qualifier_rec.orig_sys_qualifier_ref.count >0 Then
5131 
5132             QP_BULK_VALIDATE.ENTITY_QUALIFIER
5133 	                      (p_qualifier_rec=>G_UDT_QUALIFIER_REC);
5134 
5135 	    QP_BULK_UTIL.Update_Qualifier(p_qualifier_rec=>G_UDT_QUALIFIER_REC);
5136 
5137 	    QP_BULK_MSG.SAVE_MESSAGE(p_request_id);
5138 
5139 	   --set process_status_flag
5140 
5141 	   FORALL I IN G_UDT_QUALIFIER_REC.orig_sys_qualifier_ref.FIRST
5142 		     ..G_UDT_QUALIFIER_REC.orig_sys_qualifier_ref.LAST
5143 	   UPDATE qp_interface_qualifiers
5144            SET    process_status_flag = decode(G_UDT_QUALIFIER_REC.process_status_flag(I),'P','I',G_UDT_QUALIFIER_REC.process_status_flag(I))
5145 	   WHERE  orig_sys_header_ref = G_UDT_QUALIFIER_REC.orig_sys_header_ref(I)
5146 	   AND    orig_sys_qualifier_ref = G_UDT_QUALIFIER_REC.orig_sys_qualifier_ref(I)
5147 	   AND request_id = p_request_id; -- Bug No: 6235177
5148 
5149 
5150 	   END IF;
5151 
5152            COMMIT;
5153 	   EXIT WHEN C_UDT_QUALIFIER%NOTFOUND;
5154 	   END LOOP;
5155 	   CLOSE C_UDT_QUALIFIER;
5156 
5157       write_log('Done with qualifier insertion and updation');
5158 
5159 
5160       QP_BULK_MSG.SAVE_MESSAGE(p_request_id);
5161 
5162       QP_BULK_UTIL.Delete_Qualifier(p_request_id);
5163 
5164       write_log('Existing Process Qualifier');
5165 
5166  EXCEPTION
5167     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5168        write_log( 'UNEXCPECTED ERROR IN PROCESS_QUALIFIER'||sqlerrm);
5169        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5170     WHEN OTHERS THEN
5171        write_log( 'UNEXCPECTED ERROR IN PROCESS_QUALIFIER'||sqlerrm);
5172        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5173 
5174 END PROCESS_QUALIFIER;
5175 
5176 
5177 PROCEDURE PROCESS_LINE
5178           (p_request_id NUMBER,
5179            p_process_parent varchar2) -- 6028305
5180 IS
5181   CURSOR C_INS_LINE IS
5182   SELECT   LIST_LINE_ID
5183 	   ,PROGRAM_APPLICATION_ID
5184 	   ,PROGRAM_ID
5185 	   ,PROGRAM_UPDATE_DATE
5186 	   ,REQUEST_ID
5187 	   ,LIST_HEADER_ID
5188 	   ,LIST_LINE_TYPE_CODE
5189 	   ,START_DATE_ACTIVE
5190 	   ,END_DATE_ACTIVE
5191 	   ,AUTOMATIC_FLAG
5192 	   ,MODIFIER_LEVEL_CODE
5193 	   ,PRICE_BY_FORMULA_ID
5194 	   ,LIST_PRICE
5195 	   ,LIST_PRICE_UOM_CODE
5196 	   ,PRIMARY_UOM_FLAG
5197 	   ,INVENTORY_ITEM_ID
5198 	   ,ORGANIZATION_ID
5199 	   ,RELATED_ITEM_ID
5200 	   ,RELATIONSHIP_TYPE_ID
5201 	   ,SUBSTITUTION_CONTEXT
5202 	   ,SUBSTITUTION_ATTRIBUTE
5203 	   ,SUBSTITUTION_VALUE
5204 	   ,REVISION
5205 	   ,REVISION_DATE
5206 	   ,REVISION_REASON_CODE
5207 	   ,PRICE_BREAK_TYPE_CODE
5208 	   ,PERCENT_PRICE
5209 	   ,NUMBER_EFFECTIVE_PERIODS
5210 	   ,EFFECTIVE_PERIOD_UOM
5214 	   ,PRINT_ON_INVOICE_FLAG
5211 	   ,ARITHMETIC_OPERATOR
5212 	   ,OPERAND
5213 	   ,OVERRIDE_FLAG
5215 	   ,REBATE_TRANSACTION_TYPE_CODE
5216 	   ,BASE_QTY
5217 	   ,BASE_UOM_CODE
5218 	   ,ACCRUAL_QTY
5219 	   ,ACCRUAL_UOM_CODE
5220 	   ,ESTIM_ACCRUAL_RATE
5221 	   ,PROCESS_ID
5222 	   ,PROCESS_TYPE
5223 	   ,INTERFACE_ACTION_CODE
5224 	   ,LOCK_FLAG
5225 	   ,PROCESS_FLAG
5226 	   ,DELETE_FLAG
5227 	   ,PROCESS_STATUS_FLAG
5228 	   ,COMMENTS
5229 	   ,GENERATE_USING_FORMULA_ID
5230 	   ,REPRICE_FLAG
5231 	   ,LIST_LINE_NO
5232 	   ,ESTIM_GL_VALUE
5233 	   ,BENEFIT_PRICE_LIST_LINE_ID
5234 	   ,EXPIRATION_PERIOD_START_DATE
5235 	   ,NUMBER_EXPIRATION_PERIODS
5236 	   ,EXPIRATION_PERIOD_UOM
5237 	   ,EXPIRATION_DATE
5238 	   ,ACCRUAL_FLAG
5239 	   ,PRICING_PHASE_ID
5240 	   ,PRICING_GROUP_SEQUENCE
5241 	   ,INCOMPATIBILITY_GRP_CODE
5242 	   ,PRODUCT_PRECEDENCE
5243 	   ,PRORATION_TYPE_CODE
5244 	   ,ACCRUAL_CONVERSION_RATE
5245 	   ,BENEFIT_QTY
5246 	   ,BENEFIT_UOM_CODE
5247 	   ,RECURRING_FLAG
5248 	   ,BENEFIT_LIMIT
5249 	   ,CHARGE_TYPE_CODE
5250 	   ,CHARGE_SUBTYPE_CODE
5251 	   ,INCLUDE_ON_RETURNS_FLAG
5252 	   ,QUALIFICATION_IND
5253 	   ,CONTEXT
5254 	   ,ATTRIBUTE1
5255 	   ,ATTRIBUTE2
5256 	   ,ATTRIBUTE3
5257 	   ,ATTRIBUTE4
5258 	   ,ATTRIBUTE5
5259 	   ,ATTRIBUTE6
5260 	   ,ATTRIBUTE7
5261 	   ,ATTRIBUTE8
5262 	   ,ATTRIBUTE9
5263 	   ,ATTRIBUTE10
5264 	   ,ATTRIBUTE11
5265 	   ,ATTRIBUTE12
5266 	   ,ATTRIBUTE13
5267 	   ,ATTRIBUTE14
5268 	   ,ATTRIBUTE15
5269 	   ,RLTD_MODIFIER_GRP_NO
5270 	   ,RLTD_MODIFIER_GRP_TYPE
5271 	   ,PRICE_BREAK_HEADER_REF
5272 	   ,PRICING_PHASE_NAME
5273 	   ,PRICE_BY_FORMULA
5274 	   ,GENERATE_USING_FORMULA
5275 	   ,ATTRIBUTE_STATUS
5276 	   ,ORIG_SYS_LINE_REF
5277 	   ,ORIG_SYS_HEADER_REF
5278 	   ,RECURRING_VALUE
5279 	   ,NET_AMOUNT_FLAG
5280            --Bug#5359974 RAVI
5281            ,CONTINUOUS_PRICE_BREAK_FLAG
5282 FROM   qp_interface_list_lines
5283 WHERE  request_id = p_request_id
5284 AND    process_status_flag = 'P'
5285 AND    interface_action_code='INSERT'
5286 ORDER BY LIST_LINE_TYPE_CODE; --bug 7315191
5287 
5288   CURSOR C_UDT_LINE IS
5289   SELECT   LIST_LINE_ID
5290 	   ,PROGRAM_APPLICATION_ID
5291 	   ,PROGRAM_ID
5292 	   ,PROGRAM_UPDATE_DATE
5293 	   ,REQUEST_ID
5294 	   ,LIST_HEADER_ID
5295 	   ,LIST_LINE_TYPE_CODE
5296 	   ,START_DATE_ACTIVE
5297 	   ,END_DATE_ACTIVE
5298 	   ,AUTOMATIC_FLAG
5299 	   ,MODIFIER_LEVEL_CODE
5300 	   ,PRICE_BY_FORMULA_ID
5301 	   ,LIST_PRICE
5302 	   ,LIST_PRICE_UOM_CODE
5303 	   ,PRIMARY_UOM_FLAG
5304 	   ,INVENTORY_ITEM_ID
5305 	   ,ORGANIZATION_ID
5306 	   ,RELATED_ITEM_ID
5307 	   ,RELATIONSHIP_TYPE_ID
5308 	   ,SUBSTITUTION_CONTEXT
5309 	   ,SUBSTITUTION_ATTRIBUTE
5310 	   ,SUBSTITUTION_VALUE
5311 	   ,REVISION
5312 	   ,REVISION_DATE
5313 	   ,REVISION_REASON_CODE
5314 	   ,PRICE_BREAK_TYPE_CODE
5315 	   ,PERCENT_PRICE
5316 	   ,NUMBER_EFFECTIVE_PERIODS
5317 	   ,EFFECTIVE_PERIOD_UOM
5318 	   ,ARITHMETIC_OPERATOR
5319 	   ,OPERAND
5320 	   ,OVERRIDE_FLAG
5321 	   ,PRINT_ON_INVOICE_FLAG
5322 	   ,REBATE_TRANSACTION_TYPE_CODE
5323 	   ,BASE_QTY
5324 	   ,BASE_UOM_CODE
5325 	   ,ACCRUAL_QTY
5326 	   ,ACCRUAL_UOM_CODE
5327 	   ,ESTIM_ACCRUAL_RATE
5328 	   ,PROCESS_ID
5329 	   ,PROCESS_TYPE
5330 	   ,INTERFACE_ACTION_CODE
5331 	   ,LOCK_FLAG
5332 	   ,PROCESS_FLAG
5333 	   ,DELETE_FLAG
5334 	   ,PROCESS_STATUS_FLAG
5335 	   ,COMMENTS
5336 	   ,GENERATE_USING_FORMULA_ID
5337 	   ,REPRICE_FLAG
5338 	   ,LIST_LINE_NO
5339 	   ,ESTIM_GL_VALUE
5340 	   ,BENEFIT_PRICE_LIST_LINE_ID
5341 	   ,EXPIRATION_PERIOD_START_DATE
5342 	   ,NUMBER_EXPIRATION_PERIODS
5343 	   ,EXPIRATION_PERIOD_UOM
5344 	   ,EXPIRATION_DATE
5345 	   ,ACCRUAL_FLAG
5346 	   ,PRICING_PHASE_ID
5347 	   ,PRICING_GROUP_SEQUENCE
5348 	   ,INCOMPATIBILITY_GRP_CODE
5349 	   ,PRODUCT_PRECEDENCE
5350 	   ,PRORATION_TYPE_CODE
5351 	   ,ACCRUAL_CONVERSION_RATE
5352 	   ,BENEFIT_QTY
5353 	   ,BENEFIT_UOM_CODE
5354 	   ,RECURRING_FLAG
5355 	   ,BENEFIT_LIMIT
5356 	   ,CHARGE_TYPE_CODE
5357 	   ,CHARGE_SUBTYPE_CODE
5358 	   ,INCLUDE_ON_RETURNS_FLAG
5359 	   ,QUALIFICATION_IND
5360 	   ,CONTEXT
5361 	   ,ATTRIBUTE1
5362 	   ,ATTRIBUTE2
5363 	   ,ATTRIBUTE3
5364 	   ,ATTRIBUTE4
5365 	   ,ATTRIBUTE5
5366 	   ,ATTRIBUTE6
5367 	   ,ATTRIBUTE7
5368 	   ,ATTRIBUTE8
5369 	   ,ATTRIBUTE9
5370 	   ,ATTRIBUTE10
5371 	   ,ATTRIBUTE11
5372 	   ,ATTRIBUTE12
5373 	   ,ATTRIBUTE13
5374 	   ,ATTRIBUTE14
5375 	   ,ATTRIBUTE15
5376 	   ,RLTD_MODIFIER_GRP_NO
5377 	   ,RLTD_MODIFIER_GRP_TYPE
5378 	   ,PRICE_BREAK_HEADER_REF
5379 	   ,PRICING_PHASE_NAME
5380 	   ,PRICE_BY_FORMULA
5381 	   ,GENERATE_USING_FORMULA
5382 	   ,ATTRIBUTE_STATUS
5383 	   ,ORIG_SYS_LINE_REF
5384 	   ,ORIG_SYS_HEADER_REF
5385 	   ,RECURRING_VALUE
5386 	   ,NET_AMOUNT_FLAG
5387            --Bug#5359974 RAVI
5388            ,CONTINUOUS_PRICE_BREAK_FLAG
5389 FROM   qp_interface_list_lines
5390 WHERE  request_id = p_request_id
5391 AND    process_status_flag = 'P'
5395 l_rows NATURAL;
5392 AND    interface_action_code='UPDATE';
5393 
5394 
5396 l_rltd_modifiers_id NUMBER;
5397 l_rltd_modifiers_grp_no NUMBER;
5398 l_from_rltd_modifier_id NUMBER;
5399 l_msg_txt VARCHAR2(240);
5400 
5401 BEGIN
5402 
5403    write_log('Entering Process Line');
5404    l_rows := g_qp_batch_size;
5405 
5406    OPEN C_INS_LINE;
5407    LOOP
5408                   G_INS_LINE_REC.list_line_id.DELETE;
5409                   G_INS_LINE_REC.PROGRAM_APPLICATION_ID.DELETE;
5410 		  G_INS_LINE_REC.PROGRAM_ID.delete;
5411 		  G_INS_LINE_REC.PROGRAM_UPDATE_DATE.DELETE;
5412 		  G_INS_LINE_REC.REQUEST_ID.DELETE;
5413 		  G_INS_LINE_REC.LIST_HEADER_ID.DELETE;
5414 		  G_INS_LINE_REC.LIST_LINE_TYPE_CODE.DELETE;
5415 		  G_INS_LINE_REC.START_DATE_ACTIVE.DELETE;
5416 		  G_INS_LINE_REC.END_DATE_ACTIVE.DELETE;
5417 		  G_INS_LINE_REC.AUTOMATIC_FLAG.DELETE;
5418 		  G_INS_LINE_REC.MODIFIER_LEVEL_CODE.DELETE;
5419 		  G_INS_LINE_REC.PRICE_BY_FORMULA_ID.DELETE;
5420 		  G_INS_LINE_REC.LIST_PRICE.DELETE;
5421 		  G_INS_LINE_REC.LIST_PRICE_UOM_CODE.DELETE;
5422 		  G_INS_LINE_REC.PRIMARY_UOM_FLAG.DELETE;
5423 		  G_INS_LINE_REC.INVENTORY_ITEM_ID.DELETE;
5424 		  G_INS_LINE_REC.ORGANIZATION_ID.DELETE;
5425 		  G_INS_LINE_REC.RELATED_ITEM_ID.DELETE;
5426 		  G_INS_LINE_REC.RELATIONSHIP_TYPE_ID.DELETE;
5427 		  G_INS_LINE_REC.SUBSTITUTION_CONTEXT.DELETE;
5428 		  G_INS_LINE_REC.SUBSTITUTION_ATTRIBUTE.DELETE;
5429 		  G_INS_LINE_REC.SUBSTITUTION_VALUE.DELETE;
5430 		  G_INS_LINE_REC.REVISION.DELETE;
5431 		  G_INS_LINE_REC.REVISION_DATE.DELETE;
5432 		  G_INS_LINE_REC.REVISION_REASON_CODE.DELETE;
5433 		  G_INS_LINE_REC.PRICE_BREAK_TYPE_CODE.DELETE;
5434 		  G_INS_LINE_REC.PERCENT_PRICE.DELETE;
5435 		  G_INS_LINE_REC.NUMBER_EFFECTIVE_PERIODS.DELETE;
5436 		  G_INS_LINE_REC.EFFECTIVE_PERIOD_UOM.DELETE;
5437 		  G_INS_LINE_REC.ARITHMETIC_OPERATOR.DELETE;
5438 		  G_INS_LINE_REC.OPERAND.DELETE;
5439 		  G_INS_LINE_REC.OVERRIDE_FLAG.DELETE;
5440 		  G_INS_LINE_REC.PRINT_ON_INVOICE_FLAG.DELETE;
5441 		  G_INS_LINE_REC.REBATE_TRANSACTION_TYPE_CODE.DELETE;
5442 		  G_INS_LINE_REC.BASE_QTY.DELETE;
5443 		  G_INS_LINE_REC.BASE_UOM_CODE.DELETE;
5444 		  G_INS_LINE_REC.ACCRUAL_QTY.DELETE;
5445 		  G_INS_LINE_REC.ACCRUAL_UOM_CODE.DELETE;
5446 		  G_INS_LINE_REC.ESTIM_ACCRUAL_RATE.DELETE;
5447 		  G_INS_LINE_REC.PROCESS_ID.DELETE;
5448 		  G_INS_LINE_REC.PROCESS_TYPE.DELETE;
5449 		  G_INS_LINE_REC.INTERFACE_ACTION_CODE.DELETE;
5450 		  G_INS_LINE_REC.LOCK_FLAG.DELETE;
5451 		  G_INS_LINE_REC.PROCESS_FLAG.DELETE;
5452 		  G_INS_LINE_REC.DELETE_FLAG.DELETE;
5453 		  G_INS_LINE_REC.PROCESS_STATUS_FLAG.DELETE;
5454 		  G_INS_LINE_REC.COMMENTS.DELETE;
5455 		  G_INS_LINE_REC.GENERATE_USING_FORMULA_ID.DELETE;
5456 		  G_INS_LINE_REC.REPRICE_FLAG.DELETE;
5457 		  G_INS_LINE_REC.LIST_LINE_NO.DELETE;
5458 		  G_INS_LINE_REC.ESTIM_GL_VALUE.DELETE;
5459 		  G_INS_LINE_REC.BENEFIT_PRICE_LIST_LINE_ID.DELETE;
5460 		  G_INS_LINE_REC.EXPIRATION_PERIOD_START_DATE.DELETE;
5461 		  G_INS_LINE_REC.NUMBER_EXPIRATION_PERIODS.DELETE;
5462 		  G_INS_LINE_REC.EXPIRATION_PERIOD_UOM.DELETE;
5463 		  G_INS_LINE_REC.EXPIRATION_DATE.DELETE;
5464 		  G_INS_LINE_REC.ACCRUAL_FLAG.DELETE;
5465 		  G_INS_LINE_REC.PRICING_PHASE_ID.DELETE;
5466 		  G_INS_LINE_REC.PRICING_GROUP_SEQUENCE.DELETE;
5467 		  G_INS_LINE_REC.INCOMPATIBILITY_GRP_CODE.DELETE;
5468 		  G_INS_LINE_REC.PRODUCT_PRECEDENCE.DELETE;
5469 		  G_INS_LINE_REC.PRORATION_TYPE_CODE.DELETE;
5470 		  G_INS_LINE_REC.ACCRUAL_CONVERSION_RATE.DELETE;
5471 		  G_INS_LINE_REC.BENEFIT_QTY.DELETE;
5472 		  G_INS_LINE_REC.BENEFIT_UOM_CODE.DELETE;
5473 		  G_INS_LINE_REC.RECURRING_FLAG.DELETE;
5474 		  G_INS_LINE_REC.BENEFIT_LIMIT.DELETE;
5475 		  G_INS_LINE_REC.CHARGE_TYPE_CODE.DELETE;
5476 		  G_INS_LINE_REC.CHARGE_SUBTYPE_CODE.DELETE;
5477 		  G_INS_LINE_REC.INCLUDE_ON_RETURNS_FLAG.DELETE;
5478 		  G_INS_LINE_REC.QUALIFICATION_IND.DELETE;
5479 		  G_INS_LINE_REC.CONTEXT.DELETE;
5480 		  G_INS_LINE_REC.ATTRIBUTE1.DELETE;
5481 		  G_INS_LINE_REC.ATTRIBUTE2.DELETE;
5482 		  G_INS_LINE_REC.ATTRIBUTE3.DELETE;
5483 		  G_INS_LINE_REC.ATTRIBUTE4.DELETE;
5484 		  G_INS_LINE_REC.ATTRIBUTE5.DELETE;
5485 		  G_INS_LINE_REC.ATTRIBUTE6.DELETE;
5486 		  G_INS_LINE_REC.ATTRIBUTE7.DELETE;
5487 		  G_INS_LINE_REC.ATTRIBUTE8.DELETE;
5488 		  G_INS_LINE_REC.ATTRIBUTE9.DELETE;
5489 		  G_INS_LINE_REC.ATTRIBUTE10.DELETE;
5490 		  G_INS_LINE_REC.ATTRIBUTE11.DELETE;
5491 		  G_INS_LINE_REC.ATTRIBUTE12.DELETE;
5492 		  G_INS_LINE_REC.ATTRIBUTE13.DELETE;
5493 		  G_INS_LINE_REC.ATTRIBUTE14.DELETE;
5494 		  G_INS_LINE_REC.ATTRIBUTE15.DELETE;
5495 		  G_INS_LINE_REC.RLTD_MODIFIER_GRP_NO.DELETE;
5496 		  G_INS_LINE_REC.RLTD_MODIFIER_GRP_TYPE.DELETE;
5497 		  G_INS_LINE_REC.PRICE_BREAK_HEADER_REF.DELETE;
5498 		  G_INS_LINE_REC.PRICING_PHASE_NAME.DELETE;
5499 		  G_INS_LINE_REC.PRICE_BY_FORMULA.DELETE;
5500 		  G_INS_LINE_REC.GENERATE_USING_FORMULA.DELETE;
5501 		  G_INS_LINE_REC.ATTRIBUTE_STATUS.DELETE;
5502 		  G_INS_LINE_REC.ORIG_SYS_LINE_REF.DELETE;
5503 		  G_INS_LINE_REC.ORIG_SYS_HEADER_REF.DELETE;
5504 		  G_INS_LINE_REC.RECURRING_VALUE.DELETE;
5505 		  G_INS_LINE_REC.NET_AMOUNT_FLAG.DELETE;
5506                   --Bug#5359974 RAVI
5507                   G_INS_LINE_REC.CONTINUOUS_PRICE_BREAK_FLAG.DELETE;
5508 
5509 
5510       FETCH C_INS_LINE BULK COLLECT
5511 	  INTO    G_INS_LINE_REC.LIST_LINE_ID
5512 		 ,G_INS_LINE_REC.PROGRAM_APPLICATION_ID
5513 		 ,G_INS_LINE_REC.PROGRAM_ID
5514 		 ,G_INS_LINE_REC.PROGRAM_UPDATE_DATE
5515 		 ,G_INS_LINE_REC.REQUEST_ID
5516 		 ,G_INS_LINE_REC.LIST_HEADER_ID
5517 		 ,G_INS_LINE_REC.LIST_LINE_TYPE_CODE
5521 		 ,G_INS_LINE_REC.MODIFIER_LEVEL_CODE
5518 		 ,G_INS_LINE_REC.START_DATE_ACTIVE
5519 		 ,G_INS_LINE_REC.END_DATE_ACTIVE
5520 		 ,G_INS_LINE_REC.AUTOMATIC_FLAG
5522 		 ,G_INS_LINE_REC.PRICE_BY_FORMULA_ID
5523 		 ,G_INS_LINE_REC.LIST_PRICE
5524 		 ,G_INS_LINE_REC.LIST_PRICE_UOM_CODE
5525 		 ,G_INS_LINE_REC.PRIMARY_UOM_FLAG
5526 		 ,G_INS_LINE_REC.INVENTORY_ITEM_ID
5527 		 ,G_INS_LINE_REC.ORGANIZATION_ID
5528 		 ,G_INS_LINE_REC.RELATED_ITEM_ID
5529 		 ,G_INS_LINE_REC.RELATIONSHIP_TYPE_ID
5530 		 ,G_INS_LINE_REC.SUBSTITUTION_CONTEXT
5531 		 ,G_INS_LINE_REC.SUBSTITUTION_ATTRIBUTE
5532 		 ,G_INS_LINE_REC.SUBSTITUTION_VALUE
5533 		 ,G_INS_LINE_REC.REVISION
5534 		 ,G_INS_LINE_REC.REVISION_DATE
5535 		 ,G_INS_LINE_REC.REVISION_REASON_CODE
5536 		 ,G_INS_LINE_REC.PRICE_BREAK_TYPE_CODE
5537 		 ,G_INS_LINE_REC.PERCENT_PRICE
5538 		 ,G_INS_LINE_REC.NUMBER_EFFECTIVE_PERIODS
5539 		 ,G_INS_LINE_REC.EFFECTIVE_PERIOD_UOM
5540 		 ,G_INS_LINE_REC.ARITHMETIC_OPERATOR
5541 		 ,G_INS_LINE_REC.OPERAND
5542 		 ,G_INS_LINE_REC.OVERRIDE_FLAG
5543 		 ,G_INS_LINE_REC.PRINT_ON_INVOICE_FLAG
5544 		 ,G_INS_LINE_REC.REBATE_TRANSACTION_TYPE_CODE
5545 		 ,G_INS_LINE_REC.BASE_QTY
5546 		 ,G_INS_LINE_REC.BASE_UOM_CODE
5547 		 ,G_INS_LINE_REC.ACCRUAL_QTY
5548 		 ,G_INS_LINE_REC.ACCRUAL_UOM_CODE
5549 		 ,G_INS_LINE_REC.ESTIM_ACCRUAL_RATE
5550 		 ,G_INS_LINE_REC.PROCESS_ID
5551 		 ,G_INS_LINE_REC.PROCESS_TYPE
5552 		 ,G_INS_LINE_REC.INTERFACE_ACTION_CODE
5553 		 ,G_INS_LINE_REC.LOCK_FLAG
5554 		 ,G_INS_LINE_REC.PROCESS_FLAG
5555 		 ,G_INS_LINE_REC.DELETE_FLAG
5556 		 ,G_INS_LINE_REC.PROCESS_STATUS_FLAG
5557 		 ,G_INS_LINE_REC.COMMENTS
5558 		 ,G_INS_LINE_REC.GENERATE_USING_FORMULA_ID
5559 		 ,G_INS_LINE_REC.REPRICE_FLAG
5560 		 ,G_INS_LINE_REC.LIST_LINE_NO
5561 		 ,G_INS_LINE_REC.ESTIM_GL_VALUE
5562 		 ,G_INS_LINE_REC.BENEFIT_PRICE_LIST_LINE_ID
5563 		 ,G_INS_LINE_REC.EXPIRATION_PERIOD_START_DATE
5564 		 ,G_INS_LINE_REC.NUMBER_EXPIRATION_PERIODS
5565 		 ,G_INS_LINE_REC.EXPIRATION_PERIOD_UOM
5566 		 ,G_INS_LINE_REC.EXPIRATION_DATE
5567 		 ,G_INS_LINE_REC.ACCRUAL_FLAG
5568 		 ,G_INS_LINE_REC.PRICING_PHASE_ID
5569 		 ,G_INS_LINE_REC.PRICING_GROUP_SEQUENCE
5570 		 ,G_INS_LINE_REC.INCOMPATIBILITY_GRP_CODE
5571 		 ,G_INS_LINE_REC.PRODUCT_PRECEDENCE
5572 		 ,G_INS_LINE_REC.PRORATION_TYPE_CODE
5573 		 ,G_INS_LINE_REC.ACCRUAL_CONVERSION_RATE
5574 		 ,G_INS_LINE_REC.BENEFIT_QTY
5575 		 ,G_INS_LINE_REC.BENEFIT_UOM_CODE
5576 		 ,G_INS_LINE_REC.RECURRING_FLAG
5577 		 ,G_INS_LINE_REC.BENEFIT_LIMIT
5578 		 ,G_INS_LINE_REC.CHARGE_TYPE_CODE
5579 		 ,G_INS_LINE_REC.CHARGE_SUBTYPE_CODE
5580 		 ,G_INS_LINE_REC.INCLUDE_ON_RETURNS_FLAG
5581 		 ,G_INS_LINE_REC.QUALIFICATION_IND
5582 		 ,G_INS_LINE_REC.CONTEXT
5583 		 ,G_INS_LINE_REC.ATTRIBUTE1
5584 		 ,G_INS_LINE_REC.ATTRIBUTE2
5585 		 ,G_INS_LINE_REC.ATTRIBUTE3
5586 		 ,G_INS_LINE_REC.ATTRIBUTE4
5587 		 ,G_INS_LINE_REC.ATTRIBUTE5
5588 		 ,G_INS_LINE_REC.ATTRIBUTE6
5589 		 ,G_INS_LINE_REC.ATTRIBUTE7
5590 		 ,G_INS_LINE_REC.ATTRIBUTE8
5591 		 ,G_INS_LINE_REC.ATTRIBUTE9
5592 		 ,G_INS_LINE_REC.ATTRIBUTE10
5593 		 ,G_INS_LINE_REC.ATTRIBUTE11
5594 		 ,G_INS_LINE_REC.ATTRIBUTE12
5595 		 ,G_INS_LINE_REC.ATTRIBUTE13
5596 		 ,G_INS_LINE_REC.ATTRIBUTE14
5597 		 ,G_INS_LINE_REC.ATTRIBUTE15
5598 		 ,G_INS_LINE_REC.RLTD_MODIFIER_GRP_NO
5599 		 ,G_INS_LINE_REC.RLTD_MODIFIER_GRP_TYPE
5600 		 ,G_INS_LINE_REC.PRICE_BREAK_HEADER_REF
5601 		 ,G_INS_LINE_REC.PRICING_PHASE_NAME
5602 		 ,G_INS_LINE_REC.PRICE_BY_FORMULA
5603 		 ,G_INS_LINE_REC.GENERATE_USING_FORMULA
5604 		 ,G_INS_LINE_REC.ATTRIBUTE_STATUS
5605 		 ,G_INS_LINE_REC.ORIG_SYS_LINE_REF
5606 		 ,G_INS_LINE_REC.ORIG_SYS_HEADER_REF
5607 		 ,G_INS_LINE_REC.RECURRING_VALUE
5608 		 ,G_INS_LINE_REC.NET_AMOUNT_FLAG
5609                  --Bug#5359974 RAVI
5610                  ,G_INS_LINE_REC.CONTINUOUS_PRICE_BREAK_FLAG
5611       LIMIT l_rows;
5612 
5613       write_log('Lines Loaded for INS: '||G_INS_LINE_REC.orig_sys_line_ref.count);
5614 
5615       IF G_INS_LINE_REC.orig_sys_line_ref.count>0 THEN
5616 
5617       QP_BULK_VALIDATE.Entity_Line(p_line_rec=>G_INS_LINE_REC);
5618 
5619       QP_BULK_MSG.Save_Message(p_request_id);
5620 
5621       -- 6028305
5622 
5623       if p_process_parent='N' then
5624         --Invalidate all the valid sibling break lines, in this request
5625         update qp_interface_list_lines qill1
5626         set qill1.process_status_flag=null
5627         where qill1.price_break_header_ref is not null
5628         and qill1.request_id=p_request_id
5629         and qill1.process_status_flag is not null
5630         --if any sibling of this child line fails validation in this request
5631         and exists (Select 'Y' from qp_interface_list_lines qill2
5632         where qill2.process_status_flag is null
5633         and qill2.request_id=p_request_id
5634         and qill2.price_break_header_ref=qill1.price_break_header_ref);
5635 
5636          write_log('Inside process_parent Lines Loaded for INS1: '||G_INS_LINE_REC.orig_sys_line_ref.count);
5637         --Invalidate all the valid price break header lines, in this request
5638         update qp_interface_list_lines qill1
5639         set qill1.process_status_flag=null
5640         where qill1.price_break_header_ref is null
5641         and qill1.LIST_LINE_TYPE_CODE='PBH'
5642         and qill1.request_id=p_request_id
5643         and qill1.process_status_flag is not null
5644         --if any price break qill2 of this header line fails validation in this request
5645         and exists (Select 'Y' from qp_interface_list_lines qill2
5649         and qill2.price_break_header_ref=qill1.orig_sys_line_ref);
5646         where qill2.process_status_flag is null
5647         and qill2.LIST_LINE_TYPE_CODE='PLL'
5648         and qill2.request_id=p_request_id
5650 
5651          write_log('Inside process_parent Lines Loaded for INS2: '||G_INS_LINE_REC.orig_sys_line_ref.count);
5652 
5653         end if;
5654 
5655 
5656 
5657 
5658       -- end bug 6028305
5659 
5660       QP_BULK_UTIL.Insert_line(G_INS_LINE_REC);
5661 
5662       --set process_status_flag
5663 	   FORALL I IN G_INS_LINE_REC.orig_sys_line_ref.FIRST
5664 		     ..G_INS_LINE_REC.orig_sys_line_ref.LAST
5665 	   UPDATE qp_interface_list_lines
5666            SET    process_status_flag = decode(G_INS_LINE_REC.process_status_flag(I),'P', 'I',G_INS_LINE_REC.process_status_flag(I))
5667 	   WHERE  orig_sys_line_ref = G_INS_LINE_REC.orig_sys_line_ref(I)
5668 	   AND    orig_sys_header_ref = G_INS_LINE_REC.orig_sys_header_ref(I)
5669  	   AND request_id = p_request_id; -- Bug No: 6235177
5670 
5671 	   FOR I IN G_INS_LINE_REC.orig_sys_line_ref.FIRST
5672 		    ..G_INS_LINE_REC.orig_sys_line_ref.LAST
5673 	   LOOP
5674 
5675           	 IF G_INS_LINE_REC.price_break_header_ref(I) IS NOT NULL
5676 		 AND G_INS_LINE_REC.rltd_modifier_grp_type(I) IS NOT NULL
5677 		 AND G_INS_LINE_REC.process_status_flag(I) IN ('P', 'I') THEN
5678 
5679 
5680 		  BEGIN
5681 	           write_log('Inserting relation for: '
5682 				     ||G_INS_LINE_REC.orig_sys_line_ref(I));
5683 		   SELECT list_line_id
5684 		     into l_from_rltd_modifier_id
5685 		     from qp_list_lines
5686 		    where orig_sys_header_ref = G_INS_LINE_REC.orig_sys_header_ref(I)
5687 		     and  orig_sys_line_ref = G_INS_LINE_REC.price_break_header_ref(I);
5688 
5689 		   select QP_RLTD_MODIFIERS_S.nextval
5690 		     into l_rltd_modifiers_id
5691 		     from dual;
5692 
5693 		   SELECT QP_RLTD_MODIFIER_GRP_NO_S.nextval
5694 		     INTO l_rltd_modifiers_grp_no
5695 		     FROM dual;
5696 
5697 
5698 	       QP_RLTD_MODIFIER_PVT.Insert_Row(
5699 					         l_rltd_modifiers_id
5700 					       , SYSDATE
5701 					       , FND_GLOBAL.USER_ID
5702 					       , SYSDATE
5703 					       , FND_GLOBAL.USER_ID
5704 					       , FND_GLOBAL.CONC_LOGIN_ID
5705 					       , l_rltd_modifiers_grp_no
5706 					       , l_from_rltd_modifier_id
5707 					       , G_INS_LINE_REC.list_line_id(I)
5708 					       , 'PRICE BREAK'
5709 					       , null
5710 					       , null
5711 					       , null
5712 					       , null
5713 					       , null
5714 					       , null
5715 					       , null
5716 					       , null
5717 					       , null
5718 					       , null
5719 					       , null
5720 					       , null
5721 					       , null
5722 					       , null
5723 					       , null
5724 					       , null
5725 					       );
5726 	       EXCEPTION
5727 		  WHEN NO_DATA_FOUND THEN
5728 		     G_INS_LINE_REC.process_status_flag(I):=NULL;
5729 		     FND_MESSAGE.SET_NAME('QP', 'QP_INVALID_PARENT_PBH_REF');
5730 		     l_msg_txt:= FND_MESSAGE.GET;
5731 		     --Insert msg
5732 		       INSERT INTO QP_INTERFACE_ERRORS
5733 			(error_id,last_update_date, last_updated_by, creation_date,
5734 			 created_by, last_update_login, request_id, program_application_id,
5735 			 program_id, program_update_date, entity_type, table_name, column_name,
5736 		         orig_sys_header_ref,orig_sys_line_ref,orig_sys_qualifier_ref,
5737 			 orig_sys_pricing_attr_ref,error_message)
5738 		       VALUES
5739 			(qp_interface_errors_s.nextval, sysdate ,FND_GLOBAL.USER_ID, sysdate,
5740 			 FND_GLOBAL.USER_ID, FND_GLOBAL.CONC_LOGIN_ID, p_request_id, 660,
5741 			 NULL,NULL, 'PRL', 'QP_INTERFACE_LIST_LINES', NULL,
5742 			 G_INS_LINE_REC.orig_sys_header_ref(I),G_INS_LINE_REC.orig_sys_line_ref(I),
5743 			 null,null,l_msg_txt);
5744 	       END;
5745 	      END IF;
5746 	   END LOOP;
5747         -- 6028305 process attributes here
5748        Process_pricing_attr(p_request_id,p_process_parent);
5749       END IF;
5750       COMMIT;
5751       EXIT WHEN C_INS_LINE%NOTFOUND;
5752       END LOOP;
5753       CLOSE C_INS_LINE;
5754 
5755    OPEN C_UDT_LINE;
5756    LOOP
5757                   G_UDT_LINE_REC.LIST_LINE_ID.DELETE;
5758                   G_UDT_LINE_REC.PROGRAM_APPLICATION_ID.DELETE;
5759 		  G_UDT_LINE_REC.PROGRAM_ID.delete;
5760 		  G_UDT_LINE_REC.PROGRAM_UPDATE_DATE.DELETE;
5761 		  G_UDT_LINE_REC.REQUEST_ID.DELETE;
5762 		  G_UDT_LINE_REC.LIST_HEADER_ID.DELETE;
5763 		  G_UDT_LINE_REC.LIST_LINE_TYPE_CODE.DELETE;
5764 		  G_UDT_LINE_REC.START_DATE_ACTIVE.DELETE;
5765 		  G_UDT_LINE_REC.END_DATE_ACTIVE.DELETE;
5766 		  G_UDT_LINE_REC.AUTOMATIC_FLAG.DELETE;
5767 		  G_UDT_LINE_REC.MODIFIER_LEVEL_CODE.DELETE;
5768 		  G_UDT_LINE_REC.PRICE_BY_FORMULA_ID.DELETE;
5769 		  G_UDT_LINE_REC.LIST_PRICE.DELETE;
5770 		  G_UDT_LINE_REC.LIST_PRICE_UOM_CODE.DELETE;
5771 		  G_UDT_LINE_REC.PRIMARY_UOM_FLAG.DELETE;
5772 		  G_UDT_LINE_REC.INVENTORY_ITEM_ID.DELETE;
5773 		  G_UDT_LINE_REC.ORGANIZATION_ID.DELETE;
5774 		  G_UDT_LINE_REC.RELATED_ITEM_ID.DELETE;
5775 		  G_UDT_LINE_REC.RELATIONSHIP_TYPE_ID.DELETE;
5776 		  G_UDT_LINE_REC.SUBSTITUTION_CONTEXT.DELETE;
5777 		  G_UDT_LINE_REC.SUBSTITUTION_ATTRIBUTE.DELETE;
5778 		  G_UDT_LINE_REC.SUBSTITUTION_VALUE.DELETE;
5779 		  G_UDT_LINE_REC.REVISION.DELETE;
5780 		  G_UDT_LINE_REC.REVISION_DATE.DELETE;
5781 		  G_UDT_LINE_REC.REVISION_REASON_CODE.DELETE;
5785 		  G_UDT_LINE_REC.EFFECTIVE_PERIOD_UOM.DELETE;
5782 		  G_UDT_LINE_REC.PRICE_BREAK_TYPE_CODE.DELETE;
5783 		  G_UDT_LINE_REC.PERCENT_PRICE.DELETE;
5784 		  G_UDT_LINE_REC.NUMBER_EFFECTIVE_PERIODS.DELETE;
5786 		  G_UDT_LINE_REC.ARITHMETIC_OPERATOR.DELETE;
5787 		  G_UDT_LINE_REC.OPERAND.DELETE;
5788 		  G_UDT_LINE_REC.OVERRIDE_FLAG.DELETE;
5789 		  G_UDT_LINE_REC.PRINT_ON_INVOICE_FLAG.DELETE;
5790 		  G_UDT_LINE_REC.REBATE_TRANSACTION_TYPE_CODE.DELETE;
5791 		  G_UDT_LINE_REC.BASE_QTY.DELETE;
5792 		  G_UDT_LINE_REC.BASE_UOM_CODE.DELETE;
5793 		  G_UDT_LINE_REC.ACCRUAL_QTY.DELETE;
5794 		  G_UDT_LINE_REC.ACCRUAL_UOM_CODE.DELETE;
5795 		  G_UDT_LINE_REC.ESTIM_ACCRUAL_RATE.DELETE;
5796 		  G_UDT_LINE_REC.PROCESS_ID.DELETE;
5797 		  G_UDT_LINE_REC.PROCESS_TYPE.DELETE;
5798 		  G_UDT_LINE_REC.INTERFACE_ACTION_CODE.DELETE;
5799 		  G_UDT_LINE_REC.LOCK_FLAG.DELETE;
5800 		  G_UDT_LINE_REC.PROCESS_FLAG.DELETE;
5801 		  G_UDT_LINE_REC.DELETE_FLAG.DELETE;
5802 		  G_UDT_LINE_REC.PROCESS_STATUS_FLAG.DELETE;
5803 		  G_UDT_LINE_REC.COMMENTS.DELETE;
5804 		  G_UDT_LINE_REC.GENERATE_USING_FORMULA_ID.DELETE;
5805 		  G_UDT_LINE_REC.REPRICE_FLAG.DELETE;
5806 		  G_UDT_LINE_REC.LIST_LINE_NO.DELETE;
5807 		  G_UDT_LINE_REC.ESTIM_GL_VALUE.DELETE;
5808 		  G_UDT_LINE_REC.BENEFIT_PRICE_LIST_LINE_ID.DELETE;
5809 		  G_UDT_LINE_REC.EXPIRATION_PERIOD_START_DATE.DELETE;
5810 		  G_UDT_LINE_REC.NUMBER_EXPIRATION_PERIODS.DELETE;
5811 		  G_UDT_LINE_REC.EXPIRATION_PERIOD_UOM.DELETE;
5812 		  G_UDT_LINE_REC.EXPIRATION_DATE.DELETE;
5813 		  G_UDT_LINE_REC.ACCRUAL_FLAG.DELETE;
5814 		  G_UDT_LINE_REC.PRICING_PHASE_ID.DELETE;
5815 		  G_UDT_LINE_REC.PRICING_GROUP_SEQUENCE.DELETE;
5816 		  G_UDT_LINE_REC.INCOMPATIBILITY_GRP_CODE.DELETE;
5817 		  G_UDT_LINE_REC.PRODUCT_PRECEDENCE.DELETE;
5818 		  G_UDT_LINE_REC.PRORATION_TYPE_CODE.DELETE;
5819 		  G_UDT_LINE_REC.ACCRUAL_CONVERSION_RATE.DELETE;
5820 		  G_UDT_LINE_REC.BENEFIT_QTY.DELETE;
5821 		  G_UDT_LINE_REC.BENEFIT_UOM_CODE.DELETE;
5822 		  G_UDT_LINE_REC.RECURRING_FLAG.DELETE;
5823 		  G_UDT_LINE_REC.BENEFIT_LIMIT.DELETE;
5824 		  G_UDT_LINE_REC.CHARGE_TYPE_CODE.DELETE;
5825 		  G_UDT_LINE_REC.CHARGE_SUBTYPE_CODE.DELETE;
5826 		  G_UDT_LINE_REC.INCLUDE_ON_RETURNS_FLAG.DELETE;
5827 		  G_UDT_LINE_REC.QUALIFICATION_IND.DELETE;
5828 		  G_UDT_LINE_REC.CONTEXT.DELETE;
5829 		  G_UDT_LINE_REC.ATTRIBUTE1.DELETE;
5830 		  G_UDT_LINE_REC.ATTRIBUTE2.DELETE;
5831 		  G_UDT_LINE_REC.ATTRIBUTE3.DELETE;
5832 		  G_UDT_LINE_REC.ATTRIBUTE4.DELETE;
5833 		  G_UDT_LINE_REC.ATTRIBUTE5.DELETE;
5834 		  G_UDT_LINE_REC.ATTRIBUTE6.DELETE;
5835 		  G_UDT_LINE_REC.ATTRIBUTE7.DELETE;
5836 		  G_UDT_LINE_REC.ATTRIBUTE8.DELETE;
5837 		  G_UDT_LINE_REC.ATTRIBUTE9.DELETE;
5838 		  G_UDT_LINE_REC.ATTRIBUTE10.DELETE;
5839 		  G_UDT_LINE_REC.ATTRIBUTE11.DELETE;
5840 		  G_UDT_LINE_REC.ATTRIBUTE12.DELETE;
5841 		  G_UDT_LINE_REC.ATTRIBUTE13.DELETE;
5842 		  G_UDT_LINE_REC.ATTRIBUTE14.DELETE;
5843 		  G_UDT_LINE_REC.ATTRIBUTE15.DELETE;
5844 		  G_UDT_LINE_REC.RLTD_MODIFIER_GRP_NO.DELETE;
5845 		  G_UDT_LINE_REC.RLTD_MODIFIER_GRP_TYPE.DELETE;
5846 		  G_UDT_LINE_REC.PRICE_BREAK_HEADER_REF.DELETE;
5847 		  G_UDT_LINE_REC.PRICING_PHASE_NAME.DELETE;
5848 		  G_UDT_LINE_REC.PRICE_BY_FORMULA.DELETE;
5849 		  G_UDT_LINE_REC.GENERATE_USING_FORMULA.DELETE;
5850 		  G_UDT_LINE_REC.ATTRIBUTE_STATUS.DELETE;
5851 		  G_UDT_LINE_REC.ORIG_SYS_LINE_REF.DELETE;
5852 		  G_UDT_LINE_REC.ORIG_SYS_HEADER_REF.DELETE;
5853 		  G_UDT_LINE_REC.RECURRING_VALUE.DELETE;
5854 		  G_UDT_LINE_REC.NET_AMOUNT_FLAG.DELETE;
5855                   --Bug#5359974 RAVI
5856                   G_UDT_LINE_REC.CONTINUOUS_PRICE_BREAK_FLAG.DELETE;
5857 
5858 
5859       FETCH C_UDT_LINE BULK COLLECT
5860 	  INTO    G_UDT_LINE_REC.LIST_LINE_ID
5861 		 ,G_UDT_LINE_REC.PROGRAM_APPLICATION_ID
5862 		 ,G_UDT_LINE_REC.PROGRAM_ID
5863 		 ,G_UDT_LINE_REC.PROGRAM_UPDATE_DATE
5864 		 ,G_UDT_LINE_REC.REQUEST_ID
5865 		 ,G_UDT_LINE_REC.LIST_HEADER_ID
5866 		 ,G_UDT_LINE_REC.LIST_LINE_TYPE_CODE
5867 		 ,G_UDT_LINE_REC.START_DATE_ACTIVE
5868 		 ,G_UDT_LINE_REC.END_DATE_ACTIVE
5869 		 ,G_UDT_LINE_REC.AUTOMATIC_FLAG
5870 		 ,G_UDT_LINE_REC.MODIFIER_LEVEL_CODE
5871 		 ,G_UDT_LINE_REC.PRICE_BY_FORMULA_ID
5872 		 ,G_UDT_LINE_REC.LIST_PRICE
5873 		 ,G_UDT_LINE_REC.LIST_PRICE_UOM_CODE
5874 		 ,G_UDT_LINE_REC.PRIMARY_UOM_FLAG
5875 		 ,G_UDT_LINE_REC.INVENTORY_ITEM_ID
5876 		 ,G_UDT_LINE_REC.ORGANIZATION_ID
5877 		 ,G_UDT_LINE_REC.RELATED_ITEM_ID
5878 		 ,G_UDT_LINE_REC.RELATIONSHIP_TYPE_ID
5879 		 ,G_UDT_LINE_REC.SUBSTITUTION_CONTEXT
5880 		 ,G_UDT_LINE_REC.SUBSTITUTION_ATTRIBUTE
5881 		 ,G_UDT_LINE_REC.SUBSTITUTION_VALUE
5882 		 ,G_UDT_LINE_REC.REVISION
5883 		 ,G_UDT_LINE_REC.REVISION_DATE
5884 		 ,G_UDT_LINE_REC.REVISION_REASON_CODE
5885 		 ,G_UDT_LINE_REC.PRICE_BREAK_TYPE_CODE
5886 		 ,G_UDT_LINE_REC.PERCENT_PRICE
5887 		 ,G_UDT_LINE_REC.NUMBER_EFFECTIVE_PERIODS
5888 		 ,G_UDT_LINE_REC.EFFECTIVE_PERIOD_UOM
5889 		 ,G_UDT_LINE_REC.ARITHMETIC_OPERATOR
5890 		 ,G_UDT_LINE_REC.OPERAND
5891 		 ,G_UDT_LINE_REC.OVERRIDE_FLAG
5892 		 ,G_UDT_LINE_REC.PRINT_ON_INVOICE_FLAG
5893 		 ,G_UDT_LINE_REC.REBATE_TRANSACTION_TYPE_CODE
5894 		 ,G_UDT_LINE_REC.BASE_QTY
5895 		 ,G_UDT_LINE_REC.BASE_UOM_CODE
5896 		 ,G_UDT_LINE_REC.ACCRUAL_QTY
5897 		 ,G_UDT_LINE_REC.ACCRUAL_UOM_CODE
5898 		 ,G_UDT_LINE_REC.ESTIM_ACCRUAL_RATE
5899 		 ,G_UDT_LINE_REC.PROCESS_ID
5900 		 ,G_UDT_LINE_REC.PROCESS_TYPE
5901 		 ,G_UDT_LINE_REC.INTERFACE_ACTION_CODE
5902 		 ,G_UDT_LINE_REC.LOCK_FLAG
5903 		 ,G_UDT_LINE_REC.PROCESS_FLAG
5904 		 ,G_UDT_LINE_REC.DELETE_FLAG
5905 		 ,G_UDT_LINE_REC.PROCESS_STATUS_FLAG
5909 		 ,G_UDT_LINE_REC.LIST_LINE_NO
5906 		 ,G_UDT_LINE_REC.COMMENTS
5907 		 ,G_UDT_LINE_REC.GENERATE_USING_FORMULA_ID
5908 		 ,G_UDT_LINE_REC.REPRICE_FLAG
5910 		 ,G_UDT_LINE_REC.ESTIM_GL_VALUE
5911 		 ,G_UDT_LINE_REC.BENEFIT_PRICE_LIST_LINE_ID
5912 		 ,G_UDT_LINE_REC.EXPIRATION_PERIOD_START_DATE
5913 		 ,G_UDT_LINE_REC.NUMBER_EXPIRATION_PERIODS
5914 		 ,G_UDT_LINE_REC.EXPIRATION_PERIOD_UOM
5915 		 ,G_UDT_LINE_REC.EXPIRATION_DATE
5916 		 ,G_UDT_LINE_REC.ACCRUAL_FLAG
5917 		 ,G_UDT_LINE_REC.PRICING_PHASE_ID
5918 		 ,G_UDT_LINE_REC.PRICING_GROUP_SEQUENCE
5919 		 ,G_UDT_LINE_REC.INCOMPATIBILITY_GRP_CODE
5920 		 ,G_UDT_LINE_REC.PRODUCT_PRECEDENCE
5921 		 ,G_UDT_LINE_REC.PRORATION_TYPE_CODE
5922 		 ,G_UDT_LINE_REC.ACCRUAL_CONVERSION_RATE
5923 		 ,G_UDT_LINE_REC.BENEFIT_QTY
5924 		 ,G_UDT_LINE_REC.BENEFIT_UOM_CODE
5925 		 ,G_UDT_LINE_REC.RECURRING_FLAG
5926 		 ,G_UDT_LINE_REC.BENEFIT_LIMIT
5927 		 ,G_UDT_LINE_REC.CHARGE_TYPE_CODE
5928 		 ,G_UDT_LINE_REC.CHARGE_SUBTYPE_CODE
5929 		 ,G_UDT_LINE_REC.INCLUDE_ON_RETURNS_FLAG
5930 		 ,G_UDT_LINE_REC.QUALIFICATION_IND
5931 		 ,G_UDT_LINE_REC.CONTEXT
5932 		 ,G_UDT_LINE_REC.ATTRIBUTE1
5933 		 ,G_UDT_LINE_REC.ATTRIBUTE2
5934 		 ,G_UDT_LINE_REC.ATTRIBUTE3
5935 		 ,G_UDT_LINE_REC.ATTRIBUTE4
5936 		 ,G_UDT_LINE_REC.ATTRIBUTE5
5937 		 ,G_UDT_LINE_REC.ATTRIBUTE6
5938 		 ,G_UDT_LINE_REC.ATTRIBUTE7
5939 		 ,G_UDT_LINE_REC.ATTRIBUTE8
5940 		 ,G_UDT_LINE_REC.ATTRIBUTE9
5941 		 ,G_UDT_LINE_REC.ATTRIBUTE10
5942 		 ,G_UDT_LINE_REC.ATTRIBUTE11
5943 		 ,G_UDT_LINE_REC.ATTRIBUTE12
5944 		 ,G_UDT_LINE_REC.ATTRIBUTE13
5945 		 ,G_UDT_LINE_REC.ATTRIBUTE14
5946 		 ,G_UDT_LINE_REC.ATTRIBUTE15
5947 		 ,G_UDT_LINE_REC.RLTD_MODIFIER_GRP_NO
5948 		 ,G_UDT_LINE_REC.RLTD_MODIFIER_GRP_TYPE
5949 		 ,G_UDT_LINE_REC.PRICE_BREAK_HEADER_REF
5950 		 ,G_UDT_LINE_REC.PRICING_PHASE_NAME
5951 		 ,G_UDT_LINE_REC.PRICE_BY_FORMULA
5952 		 ,G_UDT_LINE_REC.GENERATE_USING_FORMULA
5953 		 ,G_UDT_LINE_REC.ATTRIBUTE_STATUS
5954 		 ,G_UDT_LINE_REC.ORIG_SYS_LINE_REF
5955 		 ,G_UDT_LINE_REC.ORIG_SYS_HEADER_REF
5956 		 ,G_UDT_LINE_REC.RECURRING_VALUE
5957 		 ,G_UDT_LINE_REC.NET_AMOUNT_FLAG
5958                  --Bug#5359974 RAVI
5959                  ,G_UDT_LINE_REC.CONTINUOUS_PRICE_BREAK_FLAG
5960       LIMIT l_rows;
5961 
5962       write_log('Lines Loaded for UDT: ' || G_UDT_LINE_REC.orig_sys_line_ref.count);
5963 
5964       IF G_UDT_LINE_REC.orig_sys_line_ref.count>0 THEN
5965 
5966       G_UDT_LINE_REC_OLD:=G_UDT_LINE_REC; -- 6028305
5967 
5968       QP_BULK_VALIDATE.Entity_Line(p_line_rec=>G_UDT_LINE_REC);
5969 
5970       QP_BULK_MSG.Save_Message(p_request_id);
5971 
5972       -- 6028305
5973         if p_process_parent='N' then
5974         --Invalidate all the valid sibling break lines, in this request
5975         update qp_interface_list_lines qill1
5976         set qill1.process_status_flag=null
5977         where qill1.price_break_header_ref is not null
5978         and qill1.request_id=p_request_id
5979         and qill1.process_status_flag is not null
5980         --if any sibling of this child line fails validation in this request
5981         and exists (Select 'Y' from qp_interface_list_lines qill2
5982         where qill2.process_status_flag is null
5983         and qill2.request_id=p_request_id
5984         and qill2.price_break_header_ref=qill1.price_break_header_ref);
5985 
5986 
5987         --Invalidate all the valid price break header lines, in this request
5988         update qp_interface_list_lines qill1
5989         set qill1.process_status_flag=null
5990         where qill1.price_break_header_ref is null
5991         and qill1.LIST_LINE_TYPE_CODE='PBH'
5992         and qill1.request_id=p_request_id
5993         and qill1.process_status_flag is not null
5994         --if any price break qill2 of this header line fails validation in this request
5995         and exists (Select 'Y' from qp_interface_list_lines qill2
5996         where qill2.process_status_flag is null
5997         and qill2.LIST_LINE_TYPE_CODE='PLL'
5998         and qill2.request_id=p_request_id
5999         and qill2.price_break_header_ref=qill1.orig_sys_line_ref);
6000         COMMIT;
6001         end if;
6002 
6003       QP_BULK_UTIL.Update_line(G_UDT_LINE_REC);
6004 
6005 
6006       --set process_status_flag
6007 	   FORALL I IN G_UDT_LINE_REC.orig_sys_line_ref.FIRST
6008 		     ..G_UDT_LINE_REC.orig_sys_line_ref.LAST
6009 	   UPDATE qp_interface_list_lines
6010            SET    process_status_flag = decode(G_UDT_LINE_REC.process_status_flag(I),'P', 'I',G_UDT_LINE_REC.process_status_flag(I))
6011 	   WHERE  orig_sys_line_ref = G_UDT_LINE_REC.orig_sys_line_ref(I)
6012 	   AND    orig_sys_header_ref = G_UDT_LINE_REC.orig_sys_header_ref(I)
6013 	   AND request_id = p_request_id; -- Bug No: 6235177
6014 
6015 
6016 
6017       COMMIT;
6018        -- changes for bug no  6028305
6019       Process_pricing_attr(p_request_id,p_process_parent);
6020        -- update the parent back 6028305
6021        if p_process_parent='N'  then
6022           QP_BULK_UTIL.UPDATE_LINE_TO_OLD(G_UDT_LINE_REC_OLD);
6023        end if;
6024 
6025         END IF;
6026 
6027       EXIT WHEN C_UDT_LINE%NOTFOUND;
6028   END LOOP;
6029   CLOSE C_UDT_LINE;
6030 
6031   QP_BULK_UTIL.Delete_Line(p_request_id);
6032 
6033   write_log('Existing Process Line');
6034 
6035   EXCEPTION
6036     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6037        write_log( 'UNEXCPECTED ERROR IN PROCESS_LINE:'||sqlerrm);
6041        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6038        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6039     WHEN OTHERS THEN
6040        write_log( 'UNEXCPECTED ERROR IN PROCESS_LINE:'||sqlerrm);
6042 --set Process_status_flag
6043 
6044 END PROCESS_LINE;
6045 
6046 PROCEDURE PROCESS_PRICING_ATTR
6047           (p_request_id NUMBER,
6048            p_process_parent varchar2) -- 6028305
6049 
6050 IS
6051 
6052    CURSOR C_INS_PRICING_ATTR
6053    IS
6054      SELECT   /*+ index(pa QP_INTERFACE_PRCNG_ATTRIBS_N4) */ pa.PRICING_ATTRIBUTE_ID --7433219
6055 	     ,pa.PROGRAM_APPLICATION_ID
6056 	     ,pa.PROGRAM_ID
6057 	     ,pa.PROGRAM_UPDATE_DATE
6058 	     ,pa.REQUEST_ID
6059 	     ,pa.LIST_LINE_ID
6060 	     ,pa.EXCLUDER_FLAG
6061 	     ,pa.ACCUMULATE_FLAG
6062 	     ,pa.PRODUCT_ATTRIBUTE_CONTEXT
6063 	     ,pa.PRODUCT_ATTRIBUTE
6064 	     ,pa.PRODUCT_ATTR_VALUE
6065 	     ,pa.PRODUCT_UOM_CODE
6066 	     ,pa.PRICING_ATTRIBUTE_CONTEXT
6067 	     ,pa.PRICING_ATTRIBUTE
6068 	     ,pa.PRICING_ATTR_VALUE_FROM
6069 	     ,pa.PRICING_ATTR_VALUE_TO
6070 	     ,pa.ATTRIBUTE_GROUPING_NO
6071 	     ,pa.PRODUCT_ATTRIBUTE_DATATYPE
6072 	     ,pa.PRICING_ATTRIBUTE_DATATYPE
6073 	     ,pa.COMPARISON_OPERATOR_CODE
6074 	     ,pa.LIST_HEADER_ID
6075 	     ,pa.PRICING_PHASE_ID
6076 	     ,pa.QUALIFICATION_IND
6077 	     ,pa.PRICING_ATTR_VALUE_FROM_NUMBER
6078 	     ,pa.PRICING_ATTR_VALUE_TO_NUMBER
6079 	     ,pa.CONTEXT
6080 	     ,pa.ATTRIBUTE1
6081 	     ,pa.ATTRIBUTE2
6082 	     ,pa.ATTRIBUTE3
6083 	     ,pa.ATTRIBUTE4
6084 	     ,pa.ATTRIBUTE5
6085 	     ,pa.ATTRIBUTE6
6086 	     ,pa.ATTRIBUTE7
6087 	     ,pa.ATTRIBUTE8
6088 	     ,pa.ATTRIBUTE9
6089 	     ,pa.ATTRIBUTE10
6090 	     ,pa.ATTRIBUTE11
6091 	     ,pa.ATTRIBUTE12
6092 	     ,pa.ATTRIBUTE13
6093 	     ,pa.ATTRIBUTE14
6094 	     ,pa.ATTRIBUTE15
6095 	     ,pa.PROCESS_ID
6096 	     ,pa.PROCESS_TYPE
6097 	     ,pa.INTERFACE_ACTION_CODE
6098 	     ,pa.LOCK_FLAG
6099 	     ,pa.PROCESS_FLAG
6100 	     ,pa.DELETE_FLAG
6101 	     ,pa.PROCESS_STATUS_FLAG
6102 	     ,pa.PRICE_LIST_LINE_INDEX
6103 	     ,pa.LIST_LINE_NO
6104 	     ,pa.ORIG_SYS_PRICING_ATTR_REF
6105 	     ,pa.PRODUCT_ATTR_CODE
6106 	     ,pa.PRODUCT_ATTR_VAL_DISP
6107 	     ,pa.PRICING_ATTR_CODE
6108 	     ,pa.PRICING_ATTR_VALUE_FROM_DISP
6109 	     ,pa.PRICING_ATTR_VALUE_TO_DISP
6110 	     ,pa.ATTRIBUTE_STATUS
6111 	     ,pa.ORIG_SYS_LINE_REF
6112 	     ,pa.ORIG_SYS_HEADER_REF
6113        FROM qp_interface_pricing_attribs pa, qp_interface_list_lines l
6114       WHERE   pa.request_id = p_request_id
6115        AND   l.request_id = p_request_id    -- bug no 5881528
6116 	AND   l.orig_sys_line_ref = pa.orig_sys_line_ref
6117 	AND   l.process_status_flag = 'I'
6118 	AND   pa.process_status_flag = 'P'
6119 	AND   pa.interface_action_code = 'INSERT';
6120 
6121    CURSOR C_UDT_PRICING_ATTR
6122    IS
6123      SELECT   /*+ index(pa QP_INTERFACE_PRCNG_ATTRIBS_N4) */ pa.PRICING_ATTRIBUTE_ID --7433219
6124 	     ,pa.PROGRAM_APPLICATION_ID
6125 	     ,pa.PROGRAM_ID
6126 	     ,pa.PROGRAM_UPDATE_DATE
6127 	     ,pa.REQUEST_ID
6128 	     ,pa.LIST_LINE_ID
6129 	     ,pa.EXCLUDER_FLAG
6130 	     ,pa.ACCUMULATE_FLAG
6131 	     ,pa.PRODUCT_ATTRIBUTE_CONTEXT
6132 	     ,pa.PRODUCT_ATTRIBUTE
6133 	     ,pa.PRODUCT_ATTR_VALUE
6134 	     ,pa.PRODUCT_UOM_CODE
6135 	     ,pa.PRICING_ATTRIBUTE_CONTEXT
6136 	     ,pa.PRICING_ATTRIBUTE
6137 	     ,pa.PRICING_ATTR_VALUE_FROM
6138 	     ,pa.PRICING_ATTR_VALUE_TO
6139 	     ,pa.ATTRIBUTE_GROUPING_NO
6140 	     ,pa.PRODUCT_ATTRIBUTE_DATATYPE
6141 	     ,pa.PRICING_ATTRIBUTE_DATATYPE
6142 	     ,pa.COMPARISON_OPERATOR_CODE
6143 	     ,pa.LIST_HEADER_ID
6144 	     ,pa.PRICING_PHASE_ID
6145 	     ,pa.QUALIFICATION_IND
6146 	     ,pa.PRICING_ATTR_VALUE_FROM_NUMBER
6147 	     ,pa.PRICING_ATTR_VALUE_TO_NUMBER
6148 	     ,pa.CONTEXT
6149 	     ,pa.ATTRIBUTE1
6150 	     ,pa.ATTRIBUTE2
6151 	     ,pa.ATTRIBUTE3
6152 	     ,pa.ATTRIBUTE4
6153 	     ,pa.ATTRIBUTE5
6154 	     ,pa.ATTRIBUTE6
6155 	     ,pa.ATTRIBUTE7
6156 	     ,pa.ATTRIBUTE8
6157 	     ,pa.ATTRIBUTE9
6158 	     ,pa.ATTRIBUTE10
6159 	     ,pa.ATTRIBUTE11
6160 	     ,pa.ATTRIBUTE12
6161 	     ,pa.ATTRIBUTE13
6162 	     ,pa.ATTRIBUTE14
6163 	     ,pa.ATTRIBUTE15
6164 	     ,pa.PROCESS_ID
6165 	     ,pa.PROCESS_TYPE
6166 	     ,pa.INTERFACE_ACTION_CODE
6167 	     ,pa.LOCK_FLAG
6168 	     ,pa.PROCESS_FLAG
6169 	     ,pa.DELETE_FLAG
6170 	     ,pa.PROCESS_STATUS_FLAG
6171 	     ,pa.PRICE_LIST_LINE_INDEX
6172 	     ,pa.LIST_LINE_NO
6173 	     ,pa.ORIG_SYS_PRICING_ATTR_REF
6174 	     ,pa.PRODUCT_ATTR_CODE
6175 	     ,pa.PRODUCT_ATTR_VAL_DISP
6176 	     ,pa.PRICING_ATTR_CODE
6177 	     ,pa.PRICING_ATTR_VALUE_FROM_DISP
6178 	     ,pa.PRICING_ATTR_VALUE_TO_DISP
6179 	     ,pa.ATTRIBUTE_STATUS
6180 	     ,pa.ORIG_SYS_LINE_REF
6181 	     ,pa.ORIG_SYS_HEADER_REF
6182        FROM qp_interface_pricing_attribs pa, qp_interface_list_lines l
6183       WHERE   pa.request_id = p_request_id
6184        AND   l.request_id = p_request_id    -- bug no 5881528
6185 	AND   l.orig_sys_line_ref = pa.orig_sys_line_ref
6186 	AND   l.process_status_flag = 'I'
6187 	AND   pa.process_status_flag = 'P'
6188 	AND   pa.interface_action_code = 'UPDATE';
6189 
6190 l_rows NATURAL;
6191 
6192 BEGIN
6193    write_log('Entering Process Pricing Attribute');
6197    LOOP
6194    OPEN C_INS_PRICING_ATTR;
6195    l_rows := g_qp_batch_size;
6196 
6198 
6199               G_INS_PRICING_ATTR_REC.pricing_attribute_id.Delete;
6200    	      G_INS_PRICING_ATTR_REC.PROGRAM_APPLICATION_ID.DELETE;
6201 	      G_INS_PRICING_ATTR_REC.PROGRAM_ID.DELETE;
6202 	      G_INS_PRICING_ATTR_REC.PROGRAM_UPDATE_DATE.DELETE;
6203 	      G_INS_PRICING_ATTR_REC.REQUEST_ID.DELETE;
6204 	      G_INS_PRICING_ATTR_REC.LIST_LINE_ID.DELETE;
6205 	      G_INS_PRICING_ATTR_REC.EXCLUDER_FLAG.DELETE;
6206 	      G_INS_PRICING_ATTR_REC.ACCUMULATE_FLAG.DELETE;
6207 	      G_INS_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_CONTEXT.DELETE;
6208 	      G_INS_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE.DELETE;
6209 	      G_INS_PRICING_ATTR_REC.PRODUCT_ATTR_VALUE.DELETE;
6210 	      G_INS_PRICING_ATTR_REC.PRODUCT_UOM_CODE.DELETE;
6211 	      G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE_CONTEXT.DELETE;
6212 	      G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE.DELETE;
6213 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM.DELETE;
6214 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO.DELETE;
6215 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE_GROUPING_NO.DELETE;
6216 	      G_INS_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_DATATYPE.DELETE;
6217 	      G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE_DATATYPE.DELETE;
6218 	      G_INS_PRICING_ATTR_REC.COMPARISON_OPERATOR_CODE.DELETE;
6219 	      G_INS_PRICING_ATTR_REC.LIST_HEADER_ID.DELETE;
6220 	      G_INS_PRICING_ATTR_REC.PRICING_PHASE_ID.DELETE;
6221 	      G_INS_PRICING_ATTR_REC.QUALIFICATION_IND.DELETE;
6222 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_NUMBER.DELETE;
6223 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_NUMBER.DELETE;
6224 	      G_INS_PRICING_ATTR_REC.CONTEXT.DELETE;
6225 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE1.DELETE;
6226 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE2.DELETE;
6227 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE3.DELETE;
6228 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE4.DELETE;
6229 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE5.DELETE;
6230 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE6.DELETE;
6231 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE7.DELETE;
6232 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE8.DELETE;
6233 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE9.DELETE;
6234 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE10.DELETE;
6235 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE11.DELETE;
6236 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE12.DELETE;
6237 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE13.DELETE;
6238 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE14.DELETE;
6239 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE15.DELETE;
6240 	      G_INS_PRICING_ATTR_REC.PROCESS_ID.DELETE;
6241 	      G_INS_PRICING_ATTR_REC.PROCESS_TYPE.DELETE;
6242 	      G_INS_PRICING_ATTR_REC.INTERFACE_ACTION_CODE.DELETE;
6243 	      G_INS_PRICING_ATTR_REC.LOCK_FLAG.DELETE;
6244 	      G_INS_PRICING_ATTR_REC.PROCESS_FLAG.DELETE;
6245 	      G_INS_PRICING_ATTR_REC.DELETE_FLAG.DELETE;
6246 	      G_INS_PRICING_ATTR_REC.PROCESS_STATUS_FLAG.DELETE;
6247 	      G_INS_PRICING_ATTR_REC.PRICE_LIST_LINE_INDEX.DELETE;
6248 	      G_INS_PRICING_ATTR_REC.LIST_LINE_NO.DELETE;
6249 	      G_INS_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF.DELETE;
6250 	      G_INS_PRICING_ATTR_REC.PRODUCT_ATTR_CODE.DELETE;
6251 	      G_INS_PRICING_ATTR_REC.PRODUCT_ATTR_VAL_DISP.DELETE;
6252 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_CODE.DELETE;
6253 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_DISP.DELETE;
6254 	      G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_DISP.DELETE;
6255 	      G_INS_PRICING_ATTR_REC.ATTRIBUTE_STATUS.DELETE;
6256 	      G_INS_PRICING_ATTR_REC.ORIG_SYS_LINE_REF.DELETE;
6257 	      G_INS_PRICING_ATTR_REC.ORIG_SYS_HEADER_REF.DELETE;
6258 
6259    FETCH C_INS_PRICING_ATTR BULK COLLECT
6260        INTO  G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE_ID
6261 	     ,G_INS_PRICING_ATTR_REC.PROGRAM_APPLICATION_ID
6262 	     ,G_INS_PRICING_ATTR_REC.PROGRAM_ID
6263 	     ,G_INS_PRICING_ATTR_REC.PROGRAM_UPDATE_DATE
6264 	     ,G_INS_PRICING_ATTR_REC.REQUEST_ID
6265 	     ,G_INS_PRICING_ATTR_REC.LIST_LINE_ID
6266 	     ,G_INS_PRICING_ATTR_REC.EXCLUDER_FLAG
6267 	     ,G_INS_PRICING_ATTR_REC.ACCUMULATE_FLAG
6268 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_CONTEXT
6269 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE
6270 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_ATTR_VALUE
6271 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_UOM_CODE
6272 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE_CONTEXT
6273 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE
6274 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM
6275 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO
6276 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE_GROUPING_NO
6277 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_DATATYPE
6278 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTRIBUTE_DATATYPE
6279 	     ,G_INS_PRICING_ATTR_REC.COMPARISON_OPERATOR_CODE
6280 	     ,G_INS_PRICING_ATTR_REC.LIST_HEADER_ID
6281 	     ,G_INS_PRICING_ATTR_REC.PRICING_PHASE_ID
6282 	     ,G_INS_PRICING_ATTR_REC.QUALIFICATION_IND
6283 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_NUMBER
6284 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_NUMBER
6285 	     ,G_INS_PRICING_ATTR_REC.CONTEXT
6286 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE1
6287 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE2
6288 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE3
6289 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE4
6290 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE5
6291 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE6
6292 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE7
6293 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE8
6294 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE9
6295 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE10
6296 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE11
6297 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE12
6298 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE13
6302 	     ,G_INS_PRICING_ATTR_REC.PROCESS_TYPE
6299 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE14
6300 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE15
6301 	     ,G_INS_PRICING_ATTR_REC.PROCESS_ID
6303 	     ,G_INS_PRICING_ATTR_REC.INTERFACE_ACTION_CODE
6304 	     ,G_INS_PRICING_ATTR_REC.LOCK_FLAG
6305 	     ,G_INS_PRICING_ATTR_REC.PROCESS_FLAG
6306 	     ,G_INS_PRICING_ATTR_REC.DELETE_FLAG
6307 	     ,G_INS_PRICING_ATTR_REC.PROCESS_STATUS_FLAG
6308 	     ,G_INS_PRICING_ATTR_REC.PRICE_LIST_LINE_INDEX
6309 	     ,G_INS_PRICING_ATTR_REC.LIST_LINE_NO
6310 	     ,G_INS_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF
6311 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_ATTR_CODE
6312 	     ,G_INS_PRICING_ATTR_REC.PRODUCT_ATTR_VAL_DISP
6313 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_CODE
6314 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_DISP
6315 	     ,G_INS_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_DISP
6316 	     ,G_INS_PRICING_ATTR_REC.ATTRIBUTE_STATUS
6317 	     ,G_INS_PRICING_ATTR_REC.ORIG_SYS_LINE_REF
6318 	     ,G_INS_PRICING_ATTR_REC.ORIG_SYS_HEADER_REF
6319 
6320 	     LIMIT l_rows;
6321 
6322       write_log('Pricing Attribute loaded for INS: '
6323 			   ||G_INS_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF.COUNT);
6324 
6325       IF (G_INS_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF.COUNT >0 ) THEN
6326 
6327       QP_BULK_VALIDATE.Entity_pricing_attr(p_pricing_attr_rec=>G_INS_PRICING_ATTR_REC);
6328 
6329       QP_BULK_MSG.Save_Message(p_request_id);
6330 
6331 
6332        -- 6028305
6333       if p_process_parent='N' then
6334 
6335         --if any price break of this header line fails validation in this request
6336         update qp_interface_pricing_Attribs qill1
6337         set qill1.process_status_flag=null
6338         where qill1.PRICING_ATTR_CODE is null
6339         and qill1.request_id=p_request_id
6340         and qill1.process_status_flag is not null
6341         and exists
6342 
6343         (select 'Y'
6344         from qp_interface_pricing_Attribs q1,qp_interface_list_lines q2,qp_interface_list_lines q3
6345         where q1.process_status_flag is null
6346         and q1.request_id=p_request_id
6347         and q2.request_id=p_request_id
6348          and q3.request_id=p_request_id
6349         and q1.ORIG_SYS_LINE_REF=q2.ORIG_SYS_LINE_REF
6350         and  q2.price_break_header_ref is not null
6351         and  q2.price_break_header_ref=q3.orig_sys_line_ref
6352         and q2.ORIG_SYS_HEADER_REF=q3.ORIG_SYS_HEADER_REF
6353         and q1.ORIG_SYS_HEADER_REF=q2.ORIG_SYS_HEADER_REF
6354         and qill1.ORIG_SYS_LINE_REF=q3.ORIG_SYS_LINE_REF);
6355 
6356        -- Deleting all child if the siblings fail
6357         update qp_interface_pricing_Attribs qill1
6358         set qill1.process_status_flag=null
6359         where qill1.PRICING_ATTR_CODE is not null
6360         and qill1.request_id=p_request_id
6361         and qill1.process_status_flag is not null
6362         and exists
6363         (select 'Y'
6364         from qp_interface_pricing_Attribs q1,qp_interface_list_lines q2,qp_interface_list_lines q3
6365         where q1.process_status_flag is null
6366         and q1.request_id=p_request_id
6367         and q2.request_id=p_request_id
6368         and q3.request_id=p_request_id
6369         and q1.ORIG_SYS_LINE_REF=q2.ORIG_SYS_LINE_REF
6370         and  q2.price_break_header_ref is not null
6371         and  q2.price_break_header_ref=q3.price_break_header_ref
6372         and q2.ORIG_SYS_HEADER_REF=q3.ORIG_SYS_HEADER_REF
6373         and q1.ORIG_SYS_HEADER_REF=q2.ORIG_SYS_HEADER_REF
6374         and qill1.ORIG_SYS_LINE_REF=q3.ORIG_SYS_LINE_REF);
6375 
6376 
6377         ---- updating the corresponding list lines
6378         update qp_interface_list_lines qill
6379         set process_Status_flag = null
6380         where qill.request_id=p_request_id
6381         and qill.process_status_flag is not null
6382         and exists
6383         ( select 'Y'
6384           from qp_interface_pricing_Attribs q1
6385           where q1.process_status_flag is null
6386           and q1.request_id=p_request_id
6387           and q1.ORIG_SYS_HEADER_REF=qill.ORIG_SYS_HEADER_REF
6388           and q1.ORIG_SYS_LINE_REF=qill.ORIG_SYS_LINE_REF);
6389 
6390         COMMIT;
6391         end if;
6392 
6393       QP_BULK_UTIL.Insert_pricing_attr(G_INS_PRICING_ATTR_REC);
6394 
6395       --set the process_status_flag
6396 	   FORALL I IN G_INS_PRICING_ATTR_REC.orig_sys_pricing_attr_ref.FIRST
6397 		     ..G_INS_PRICING_ATTR_REC.orig_sys_pricing_attr_ref.LAST
6398 	   UPDATE qp_interface_pricing_attribs
6399            SET    process_status_flag = decode(G_INS_PRICING_ATTR_REC.process_status_flag(I),'P','I',G_INS_PRICING_ATTR_REC.process_status_flag(I))
6400 	   WHERE  orig_sys_pricing_attr_ref = G_INS_PRICING_ATTR_REC.orig_sys_pricing_attr_ref(I)
6401 	   AND    orig_sys_line_ref = G_INS_PRICING_ATTR_REC.orig_sys_line_ref(I)
6402 	   AND    orig_sys_header_ref = G_INS_PRICING_ATTR_REC.orig_sys_header_ref(I)
6403 	   AND request_id = p_request_id; -- Bug No: 6235177
6404 
6405       END IF;
6406       COMMIT;
6407       EXIT WHEN C_INS_PRICING_ATTR%NOTFOUND;
6408       END LOOP;
6409       CLOSE C_INS_PRICING_ATTR;
6410 
6411    OPEN C_UDT_PRICING_ATTR;
6412 
6413    LOOP
6414 
6415               G_UDT_PRICING_ATTR_REC.pricing_attribute_id.Delete;
6416    	      G_UDT_PRICING_ATTR_REC.PROGRAM_APPLICATION_ID.DELETE;
6417 	      G_UDT_PRICING_ATTR_REC.PROGRAM_ID.DELETE;
6418 	      G_UDT_PRICING_ATTR_REC.PROGRAM_UPDATE_DATE.DELETE;
6419 	      G_UDT_PRICING_ATTR_REC.REQUEST_ID.DELETE;
6423 	      G_UDT_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_CONTEXT.DELETE;
6420 	      G_UDT_PRICING_ATTR_REC.LIST_LINE_ID.DELETE;
6421 	      G_UDT_PRICING_ATTR_REC.EXCLUDER_FLAG.DELETE;
6422 	      G_UDT_PRICING_ATTR_REC.ACCUMULATE_FLAG.DELETE;
6424 	      G_UDT_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE.DELETE;
6425 	      G_UDT_PRICING_ATTR_REC.PRODUCT_ATTR_VALUE.DELETE;
6426 	      G_UDT_PRICING_ATTR_REC.PRODUCT_UOM_CODE.DELETE;
6427 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE_CONTEXT.DELETE;
6428 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE.DELETE;
6429 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM.DELETE;
6430 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO.DELETE;
6431 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE_GROUPING_NO.DELETE;
6432 	      G_UDT_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_DATATYPE.DELETE;
6433 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE_DATATYPE.DELETE;
6434 	      G_UDT_PRICING_ATTR_REC.COMPARISON_OPERATOR_CODE.DELETE;
6435 	      G_UDT_PRICING_ATTR_REC.LIST_HEADER_ID.DELETE;
6436 	      G_UDT_PRICING_ATTR_REC.PRICING_PHASE_ID.DELETE;
6437 	      G_UDT_PRICING_ATTR_REC.QUALIFICATION_IND.DELETE;
6438 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_NUMBER.DELETE;
6439 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_NUMBER.DELETE;
6440 	      G_UDT_PRICING_ATTR_REC.CONTEXT.DELETE;
6441 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE1.DELETE;
6442 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE2.DELETE;
6443 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE3.DELETE;
6444 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE4.DELETE;
6445 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE5.DELETE;
6446 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE6.DELETE;
6447 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE7.DELETE;
6448 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE8.DELETE;
6449 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE9.DELETE;
6450 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE10.DELETE;
6451 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE11.DELETE;
6452 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE12.DELETE;
6453 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE13.DELETE;
6454 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE14.DELETE;
6455 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE15.DELETE;
6456 	      G_UDT_PRICING_ATTR_REC.PROCESS_ID.DELETE;
6457 	      G_UDT_PRICING_ATTR_REC.PROCESS_TYPE.DELETE;
6458 	      G_UDT_PRICING_ATTR_REC.INTERFACE_ACTION_CODE.DELETE;
6459 	      G_UDT_PRICING_ATTR_REC.LOCK_FLAG.DELETE;
6460 	      G_UDT_PRICING_ATTR_REC.PROCESS_FLAG.DELETE;
6461 	      G_UDT_PRICING_ATTR_REC.DELETE_FLAG.DELETE;
6462 	      G_UDT_PRICING_ATTR_REC.PROCESS_STATUS_FLAG.DELETE;
6463 	      G_UDT_PRICING_ATTR_REC.PRICE_LIST_LINE_INDEX.DELETE;
6464 	      G_UDT_PRICING_ATTR_REC.LIST_LINE_NO.DELETE;
6465 	      G_UDT_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF.DELETE;
6466 	      G_UDT_PRICING_ATTR_REC.PRODUCT_ATTR_CODE.DELETE;
6467 	      G_UDT_PRICING_ATTR_REC.PRODUCT_ATTR_VAL_DISP.DELETE;
6468 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_CODE.DELETE;
6469 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_DISP.DELETE;
6470 	      G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_DISP.DELETE;
6471 	      G_UDT_PRICING_ATTR_REC.ATTRIBUTE_STATUS.DELETE;
6472 	      G_UDT_PRICING_ATTR_REC.ORIG_SYS_LINE_REF.DELETE;
6473 	      G_UDT_PRICING_ATTR_REC.ORIG_SYS_HEADER_REF.DELETE;
6474 
6475    FETCH C_UDT_PRICING_ATTR BULK COLLECT
6476        INTO  G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE_ID
6477 	     ,G_UDT_PRICING_ATTR_REC.PROGRAM_APPLICATION_ID
6478 	     ,G_UDT_PRICING_ATTR_REC.PROGRAM_ID
6479 	     ,G_UDT_PRICING_ATTR_REC.PROGRAM_UPDATE_DATE
6480 	     ,G_UDT_PRICING_ATTR_REC.REQUEST_ID
6481 	     ,G_UDT_PRICING_ATTR_REC.LIST_LINE_ID
6482 	     ,G_UDT_PRICING_ATTR_REC.EXCLUDER_FLAG
6483 	     ,G_UDT_PRICING_ATTR_REC.ACCUMULATE_FLAG
6484 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_CONTEXT
6485 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE
6486 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_ATTR_VALUE
6487 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_UOM_CODE
6488 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE_CONTEXT
6489 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE
6490 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM
6491 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO
6492 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE_GROUPING_NO
6493 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_ATTRIBUTE_DATATYPE
6494 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTRIBUTE_DATATYPE
6495 	     ,G_UDT_PRICING_ATTR_REC.COMPARISON_OPERATOR_CODE
6496 	     ,G_UDT_PRICING_ATTR_REC.LIST_HEADER_ID
6497 	     ,G_UDT_PRICING_ATTR_REC.PRICING_PHASE_ID
6498 	     ,G_UDT_PRICING_ATTR_REC.QUALIFICATION_IND
6499 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_NUMBER
6500 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_NUMBER
6501 	     ,G_UDT_PRICING_ATTR_REC.CONTEXT
6502 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE1
6503 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE2
6504 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE3
6505 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE4
6506 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE5
6507 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE6
6508 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE7
6509 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE8
6510 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE9
6511 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE10
6512 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE11
6513 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE12
6514 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE13
6515 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE14
6516 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE15
6517 	     ,G_UDT_PRICING_ATTR_REC.PROCESS_ID
6518 	     ,G_UDT_PRICING_ATTR_REC.PROCESS_TYPE
6519 	     ,G_UDT_PRICING_ATTR_REC.INTERFACE_ACTION_CODE
6520 	     ,G_UDT_PRICING_ATTR_REC.LOCK_FLAG
6521 	     ,G_UDT_PRICING_ATTR_REC.PROCESS_FLAG
6522 	     ,G_UDT_PRICING_ATTR_REC.DELETE_FLAG
6523 	     ,G_UDT_PRICING_ATTR_REC.PROCESS_STATUS_FLAG
6524 	     ,G_UDT_PRICING_ATTR_REC.PRICE_LIST_LINE_INDEX
6528 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_ATTR_VAL_DISP
6525 	     ,G_UDT_PRICING_ATTR_REC.LIST_LINE_NO
6526 	     ,G_UDT_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF
6527 	     ,G_UDT_PRICING_ATTR_REC.PRODUCT_ATTR_CODE
6529 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_CODE
6530 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_FROM_DISP
6531 	     ,G_UDT_PRICING_ATTR_REC.PRICING_ATTR_VALUE_TO_DISP
6532 	     ,G_UDT_PRICING_ATTR_REC.ATTRIBUTE_STATUS
6533 	     ,G_UDT_PRICING_ATTR_REC.ORIG_SYS_LINE_REF
6534 	     ,G_UDT_PRICING_ATTR_REC.ORIG_SYS_HEADER_REF
6535 
6536 	     LIMIT l_rows;
6537       write_log('Pricing Attribute loaded for UDT:'
6538 			   ||G_UDT_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF.COUNT);
6539 
6540       IF (G_UDT_PRICING_ATTR_REC.ORIG_SYS_PRICING_ATTR_REF.COUNT >0 ) THEN
6541 
6542         QP_BULK_VALIDATE.Entity_pricing_attr(p_pricing_attr_rec=>G_UDT_PRICING_ATTR_REC);
6543 
6544         QP_BULK_MSG.Save_Message(p_request_id);
6545 
6546         -- 6028305
6547 
6548          if p_process_parent='N' then
6549 
6550         --if any price break of this header line fails validation in this request
6551         update qp_interface_pricing_Attribs qill1
6552         set qill1.process_status_flag=null
6553         where qill1.PRICING_ATTR_CODE is null
6554         and qill1.request_id=p_request_id
6555         and qill1.process_status_flag is not null
6556         and exists
6557 
6558         (select 'Y'
6559         from qp_interface_pricing_Attribs q1,qp_interface_list_lines q2,qp_interface_list_lines q3
6560         where q1.process_status_flag is null
6561         and q1.request_id=p_request_id
6562         and q2.request_id=p_request_id
6563         and q3.request_id=p_request_id
6564         and q1.ORIG_SYS_LINE_REF=q2.ORIG_SYS_LINE_REF
6565         and  q2.price_break_header_ref is not null
6566         and  q2.price_break_header_ref=q3.orig_sys_line_ref
6567         and q2.ORIG_SYS_HEADER_REF=q3.ORIG_SYS_HEADER_REF
6568         and q1.ORIG_SYS_HEADER_REF=q2.ORIG_SYS_HEADER_REF
6569         and qill1.ORIG_SYS_LINE_REF=q3.ORIG_SYS_LINE_REF);
6570 
6571        write_log( 'Number of attribute lines picked1: '||SQL%ROWCOUNT);
6572        -- Deleting all child if the siblings fail
6573         update qp_interface_pricing_Attribs qill1
6574         set qill1.process_status_flag=null
6575         where qill1.PRICING_ATTR_CODE is not null
6576         and qill1.request_id=p_request_id
6577         and qill1.process_status_flag is not null
6578         and exists
6579         (select 'Y'
6580         from qp_interface_pricing_Attribs q1,qp_interface_list_lines q2,qp_interface_list_lines q3
6581         where q1.process_status_flag is null
6582         and q1.request_id=p_request_id
6583         and q2.request_id=p_request_id
6584         and q3.request_id=p_request_id
6585         and q1.ORIG_SYS_LINE_REF=q2.ORIG_SYS_LINE_REF
6586         and  q2.price_break_header_ref is not null
6587         and  q2.price_break_header_ref=q3.price_break_header_ref
6588         and q2.ORIG_SYS_HEADER_REF=q3.ORIG_SYS_HEADER_REF
6589         and q1.ORIG_SYS_HEADER_REF=q2.ORIG_SYS_HEADER_REF
6590         and qill1.ORIG_SYS_LINE_REF=q3.ORIG_SYS_LINE_REF);
6591 
6592 write_log( 'Number of attribute lines picked1: '||SQL%ROWCOUNT);
6593         ---- updating the corresponding list lines
6594         update qp_interface_list_lines qill
6595         set process_Status_flag = null
6596         where qill.request_id=p_request_id
6597         and qill.process_status_flag is not null
6598         and exists
6599         ( select 'Y'
6600           from qp_interface_pricing_Attribs q1
6601           where q1.process_status_flag is null
6602           and q1.request_id=p_request_id
6603           and q1.ORIG_SYS_HEADER_REF=qill.ORIG_SYS_HEADER_REF
6604           and q1.ORIG_SYS_LINE_REF=qill.ORIG_SYS_LINE_REF);
6605 
6606 write_log( 'Number of attribute lines picked1: '||SQL%ROWCOUNT);
6607         commit;
6608         end if;
6609 
6610         QP_BULK_UTIL.Update_pricing_attr(G_UDT_PRICING_ATTR_REC);
6611 
6612       --set the process_status_flag
6613 	   FORALL I IN G_UDT_PRICING_ATTR_REC.orig_sys_pricing_attr_ref.FIRST
6614 		     ..G_UDT_PRICING_ATTR_REC.orig_sys_pricing_attr_ref.LAST
6615 	   UPDATE qp_interface_pricing_attribs
6616            SET    process_status_flag = decode(G_UDT_PRICING_ATTR_REC.process_status_flag(I),'P','I',G_UDT_PRICING_ATTR_REC.process_status_flag(I))
6617 	   WHERE  orig_sys_pricing_attr_ref = G_UDT_PRICING_ATTR_REC.orig_sys_pricing_attr_ref(I)
6618 	   AND    orig_sys_line_ref = G_UDT_PRICING_ATTR_REC.orig_sys_line_ref(I)
6619 	   AND    orig_sys_header_ref = G_UDT_PRICING_ATTR_REC.orig_sys_header_ref(I)
6620 	   AND request_id = p_request_id; --Bug No: 6235177
6621 
6622       END IF;
6623       COMMIT;
6624       EXIT WHEN C_UDT_PRICING_ATTR%NOTFOUND;
6625       END LOOP;
6626       CLOSE C_UDT_PRICING_ATTR;
6627 
6628        Post_cleanup_Line(p_request_id);  --delete all the errored records
6629 
6630        QP_BULK_UTIL.Delete_Pricing_Attr(p_request_id);
6631 
6632        write_log('Leaving Process Pricing Attribute');
6633  EXCEPTION
6634     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6635        write_log( 'UNEXCPECTED ERROR IN PROCESS_PRICING_ATTR:'||sqlerrm);
6636        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6637     WHEN OTHERS THEN
6638        write_log( 'UNEXCPECTED ERROR IN PROCESS_PRICING_ATTR:'||sqlerrm);
6639        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6640 
6641 END PROCESS_PRICING_ATTR;
6642 
6643 PROCEDURE POST_CLEANUP
6644           (p_request_id NUMBER)
6645 IS
6646    BEGIN
6647       write_log('Entering POST_CLEANUP');
6651 	 (Select b.list_header_id
6648 
6649       Delete from qp_list_headers_tl
6650 	 where list_header_id IN
6652 	    from qp_list_headers_b b, qp_interface_list_headers h
6653            where h.request_id = p_request_id
6654  	     and b.orig_system_header_ref=h.orig_sys_header_ref
6655 	     and h.process_status_flag  IS NULL
6656 	     and h.interface_action_code = 'INSERT'
6657           -- 6028305
6658          AND NOT EXISTS(
6659               select 1 from qp_list_headers qplh
6660               where h.interface_action_code = 'INSERT'
6661               and qplh.orig_system_header_ref=h.orig_sys_header_ref));
6662 
6663       Delete from qp_list_headers_b
6664 	 where orig_system_header_ref IN
6665 	 (Select orig_sys_header_ref
6666 	    from qp_interface_list_headers h
6667            where h.request_id = p_request_id
6668 	     and h.process_status_flag  IS NULL
6669 	     and h.interface_action_code = 'INSERT'
6670            -- 6028305
6671          AND NOT EXISTS(
6672               select 1 from qp_list_headers qplh
6673               where h.interface_action_code = 'INSERT'
6674               and qplh.orig_system_header_ref=h.orig_sys_header_ref));
6675 
6676       Delete from qp_qualifiers
6677 	where rowid IN
6678        (Select   q.rowid
6679     	  from   qp_interface_qualifiers iq, qp_qualifiers q
6680 	  where  iq.request_id = p_request_id
6681        and   q.request_id= p_request_id -- changes made by rassharm 6028305
6682   	   and   iq.process_status_flag IS NULL
6683 	   and   iq.interface_action_code = 'INSERT'
6684 	   and   iq.orig_sys_qualifier_ref = q.orig_sys_qualifier_ref
6685 	   and   iq.orig_sys_header_ref = q.orig_sys_header_ref);
6686 
6687     write_log('Leaving POST_CLEANUP');
6688 
6689     EXCEPTION
6690     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6691        write_log( 'UNEXCPECTED ERROR IN PROCEDURE POST_CLEANUP:'||sqlerrm);
6692        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6693     WHEN OTHERS THEN
6694        write_log( 'UNEXCPECTED ERROR IN PROCEDURE POST_CLEANUP:'||sqlerrm);
6695        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6696 
6697 END POST_CLEANUP;
6698 
6699 PROCEDURE POST_CLEANUP_LINE
6700           (p_request_id NUMBER)
6701 IS
6702 
6703    BEGIN
6704 
6705       -- To delete only those record which where inserted even after error.
6706       write_log('Entering POST_CLEANUP_LINE');
6707 
6708       Delete from qp_rltd_modifiers
6709        where  from_rltd_modifier_id IN
6710        (select l.list_line_id
6711 	  from qp_list_lines l, qp_interface_list_lines il
6712 	 where il.request_id = p_request_id
6713        and  l.request_id = p_request_id -- changes made by rassharm 6028305
6714 	   and il.process_status_flag  IS NULL
6715 	   and il.interface_action_code ='INSERT'
6716 	   and il.orig_sys_header_ref = l.orig_sys_header_ref
6717 	   and il.orig_sys_line_ref = l.orig_sys_line_ref);
6718 
6719 
6720        Delete from qp_rltd_modifiers
6721        where  to_rltd_modifier_id IN
6722        (select l.list_line_id
6723 	  from qp_list_lines l, qp_interface_list_lines il
6724 	 where il.request_id = p_request_id
6725        and  l.request_id = p_request_id -- changes made by rassharm 6028305
6726 	   and il.process_status_flag  IS NULL
6727 	   and il.interface_action_code ='INSERT'
6728 	   and il.orig_sys_header_ref = l.orig_sys_header_ref
6729 	   and il.orig_sys_line_ref = l.orig_sys_line_ref);
6730 
6731       Delete from qp_pricing_attributes
6732 	 where pricing_attribute_id IN
6733          (Select pa.pricing_attribute_id
6734 	  from   qp_pricing_attributes pa, qp_interface_pricing_attribs ipa
6735 	  where  ipa.request_id = p_request_id
6736        and   pa.request_id = p_request_id -- changes made by rassharm 6028305
6737 	   and   ipa.process_status_flag IS NULL
6738 	   and   ipa.interface_action_code ='INSERT'
6739 	   and   ipa.orig_sys_pricing_attr_ref =  pa.orig_sys_pricing_attr_ref
6740 	   and   ipa.orig_sys_line_ref =  pa.orig_sys_line_ref
6741 	   and   ipa.orig_sys_header_ref =  pa.orig_sys_header_ref
6742 	   and   ipa.interface_action_code = 'INSERT');
6743 
6744 
6745       Delete from qp_list_lines
6746        where list_line_id IN
6747        (select l.list_line_id
6748 	  from qp_list_lines l, qp_interface_list_lines il
6749 	 where il.request_id = p_request_id
6750        and  l.request_id = p_request_id -- changes made by rassharm 6028305
6751 	   and il.process_status_flag  IS NULL
6752 	   and il.interface_action_code ='INSERT'
6753 	   and il.orig_sys_header_ref = l.orig_sys_header_ref
6754 	   and il.orig_sys_line_ref = l.orig_sys_line_ref);
6755 
6756     write_log('Leaving POST_CLEANUP_LINE');
6757 
6758    EXCEPTION
6759     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6760        write_log( 'UNEXCPECTED ERROR IN PROCEDURE POST_CLEANUP_LINE:'||sqlerrm);
6761        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6762     WHEN OTHERS THEN
6763        write_log( 'UNEXCPECTED ERROR IN PROCEDURE POST_CLEANUP_LINE:'||sqlerrm);
6764        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6765 
6766 END POST_CLEANUP_LINE;
6767 
6768 PROCEDURE VALIDATE_LINES
6769           (p_request_id NUMBER)
6770 IS
6771    cursor c_invalid_lines is
6772      select l.list_line_id,               -- price list lines
6773 	    l.orig_sys_line_ref,
6774 	    l.orig_sys_header_ref
6775        from qp_list_lines l
6776       where l.request_id = p_request_id
6777 	and not exists (select  'x' from qp_rltd_modifiers
6781 			   and pa.pricing_attribute_context is null
6778 			where  to_rltd_modifier_id = l.list_line_id)
6779 	and not exists  (select 'x' from qp_pricing_attributes pa
6780 			 where l.list_line_id = pa.list_line_id
6782 			   and pa.pricing_attribute is null
6783 			   and pa.pricing_attr_value_from is null
6784 			   and pa.pricing_attr_value_to is null)
6785        union
6786        select l.list_line_id,             -- price break child line
6787 	    l.orig_sys_line_ref,
6788 	    l.orig_sys_header_ref
6789        from qp_list_lines l
6790       where l.request_id = p_request_id
6791 	and  exists (select  'x' from qp_rltd_modifiers
6792 			where  to_rltd_modifier_id = l.list_line_id)
6793 	and not exists  (select 'x' from qp_pricing_attributes pa
6794 			 where l.list_line_id = pa.list_line_id
6795 			   and pa.pricing_attribute_context is not null
6796 			   and pa.pricing_attribute is not null
6797 			   and (pa.pricing_attr_value_from is not null
6798 			    or  pa.pricing_attr_value_to is not null))
6799 	union
6800        select l.list_line_id,             -- price break child line
6801 	    l.orig_sys_line_ref,
6802 	    l.orig_sys_header_ref
6803        from qp_list_lines l
6804       where l.request_id = p_request_id
6805         AND l.list_line_type_code ='PBH'
6806 	and not exists(select pl.list_line_id
6807 			from qp_list_lines pl, qp_rltd_modifiers rltd
6808 			where rltd.from_rltd_modifier_id = l.list_line_id
6809 			and pl.list_line_id = rltd.to_rltd_modifier_id);
6810 
6811 l_list_line_id_tbl QP_BULK_LOADER_PUB.num_type;
6812 l_orig_sys_line_ref_tbl QP_BULK_LOADER_PUB.char50_type;
6813 l_orig_sys_header_ref_tbl QP_BULK_LOADER_PUB.char50_type;
6814 l_msg_txt VARCHAR2(2000);
6815 
6816 BEGIN
6817 
6818  open c_invalid_lines;
6819  fetch c_invalid_lines
6820     bulk collect into
6821     l_list_line_id_tbl,
6822     l_orig_sys_line_ref_tbl,
6823     l_orig_sys_header_ref_tbl;
6824  close c_invalid_lines;
6825 
6826  write_log('Entering validate line');
6827 
6828  IF l_orig_sys_line_ref_tbl.count>0 THEN
6829 
6830   write_log('Number of invalid lines: '|| l_orig_sys_line_ref_tbl.count);
6831 
6832   FORALL I in  l_orig_sys_line_ref_tbl.first..l_orig_sys_line_ref_tbl.last
6833    UPDATE qp_interface_list_lines
6834       SET process_status_flag = NULL
6835     WHERE orig_sys_header_ref = l_orig_sys_header_ref_tbl(I)
6836       AND orig_sys_line_ref = l_orig_sys_line_ref_tbl(I)
6837       AND request_id = p_request_id; --Bug No: 6235177
6838 
6839  FORALL I in l_list_line_id_tbl.first..l_list_line_id_tbl.last
6840    DELETE FROM qp_pricing_attributes
6841     WHERE list_line_id = l_list_line_id_tbl(I);
6842 
6843  FORALL I in l_list_line_id_tbl.first..l_list_line_id_tbl.last
6844    DELETE FROM qp_list_lines
6845     WHERE list_line_id = l_list_line_id_tbl(I);
6846 
6847  FORALL I in l_list_line_id_tbl.first..l_list_line_id_tbl.last
6848    DELETE FROM qp_rltd_modifiers
6849     WHERE to_rltd_modifier_id = l_list_line_id_tbl(I);
6850 
6851  -- Price break child lines and its attributes
6852   FORALL I in l_list_line_id_tbl.first..l_list_line_id_tbl.last
6853       DELETE FROM qp_list_lines
6854        WHERE list_line_id IN
6855        (SELECT to_rltd_modifier_id
6856 	  FROM qp_rltd_modifiers
6857 	 WHERE from_rltd_modifier_id = l_list_line_id_tbl(I));
6858 
6859    FORALL I in l_list_line_id_tbl.first..l_list_line_id_tbl.last
6860        DELETE FROM qp_pricing_attributes
6861        WHERE list_line_id IN
6862        (SELECT to_rltd_modifier_id
6863 	  FROM qp_rltd_modifiers
6864 	 WHERE from_rltd_modifier_id = l_list_line_id_tbl(I));
6865 
6866     FORALL I in l_list_line_id_tbl.first..l_list_line_id_tbl.last
6867        DELETE FROM QP_RLTD_MODIFIERS
6868 	WHERE from_rltd_modifier_id = l_list_line_id_tbl(I);
6869 
6870 
6871  FND_MESSAGE.SET_NAME('QP', 'PR_LINE_REQ_PROD_ATTR');
6872  l_msg_txt := FND_MESSAGE.GET;
6873 
6874  FORALL I in  l_orig_sys_line_ref_tbl.first..l_orig_sys_line_ref_tbl.last
6875   INSERT INTO QP_INTERFACE_ERRORS
6876 		       (error_id,last_update_date, last_updated_by, creation_date,
6877 			created_by, last_update_login, request_id, program_application_id,
6878 			program_id, program_update_date, entity_type, table_name, column_name,
6879 			orig_sys_header_ref,orig_sys_line_ref,orig_sys_qualifier_ref,
6880 			orig_sys_pricing_attr_ref,error_message)
6881 	   VALUES
6882 	    (qp_interface_errors_s.nextval, sysdate ,FND_GLOBAL.USER_ID, sysdate,
6883 	     FND_GLOBAL.USER_ID, FND_GLOBAL.CONC_LOGIN_ID, p_request_id, 660,
6884 	     NULL,NULL, 'PRL', 'QP_INTERFACE_LIST_LINES', NULL,
6885 	     null,l_orig_sys_line_ref_tbl(I),null,null,l_msg_txt);
6886 
6887  write_log('Leaving Validate_Lines');
6888 
6889  END IF;
6890     EXCEPTION
6891     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6892        write_log( 'UNEXCPECTED ERROR IN PROCEDURE VALIDATE_LINES:'||sqlerrm);
6893        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6894     WHEN OTHERS THEN
6895        write_log( 'UNEXCPECTED ERROR IN PROCEDURE VALIDATE_LINES:'||sqlerrm);
6896        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6897 
6898 END VALIDATE_LINES;
6899 
6900 
6901 PROCEDURE Delete_errored_records_parents
6902           (p_request_id NUMBER)
6903 IS
6904 
6905  CURSOR c_pricing_attr IS
6906  SELECT orig_sys_pricing_attr_ref,
6907 	orig_sys_line_ref,
6908 	orig_sys_header_ref
6909    FROM qp_interface_pricing_attribs
6910   WHERE request_id = p_request_id
6911     AND process_status_flag IS NULL;
6912 
6916 	price_break_header_ref
6913  CURSOR c_pbh_child_line IS
6914  SELECT orig_sys_line_ref,
6915 	orig_sys_header_ref,
6917    FROM qp_interface_list_lines
6918   WHERE request_id = p_request_id
6919     AND process_status_flag IS NULL
6920     AND price_break_header_ref IS NOT NULL;
6921 
6922 
6923 l_exist  NUMBER;
6924 l_parent_id NUMBER;
6925 
6926 BEGIN
6927 
6928    write_log( 'Entering Delete errored records parents');
6929    --delete list lines for a pricing attribute failure
6930    FOR l_pricing_attr_rec IN c_pricing_attr
6931    LOOP
6932       BEGIN
6933 
6934 	   DELETE FROM QP_PRICING_ATTRIBUTES
6935 	   WHERE  list_line_id IN
6936 	    (SELECT r.to_rltd_modifier_id
6937 	       FROM qp_rltd_modifiers r, qp_list_lines l
6938 	      WHERE l.orig_sys_line_ref = l_pricing_attr_rec.orig_sys_line_ref
6939 	      AND   l.orig_sys_header_ref = l_pricing_attr_rec.orig_sys_header_ref
6940 	      AND   l.list_line_id = r.from_rltd_modifier_id);
6941 
6942 	   DELETE FROM QP_LIST_LINES
6943 	   WHERE  list_line_id IN
6944 	    (SELECT r.to_rltd_modifier_id
6945 	       FROM qp_rltd_modifiers r, qp_list_lines l
6946 	      WHERE l.orig_sys_line_ref = l_pricing_attr_rec.orig_sys_line_ref
6947 	      AND   l.orig_sys_header_ref = l_pricing_attr_rec.orig_sys_header_ref
6948 	      AND   l.list_line_id = r.from_rltd_modifier_id);
6949 
6950 	   DELETE FROM QP_RLTD_MODIFIERS
6951 	    WHERE from_rltd_modifier_id IN
6952 	    (SELECT list_line_id FROM QP_LIST_LINES l
6953 	      WHERE l.orig_sys_line_ref = l_pricing_attr_rec.orig_sys_line_ref
6954 		AND   l.orig_sys_header_ref = l_pricing_attr_rec.orig_sys_header_ref);
6955 
6956 	   DELETE FROM QP_PRICING_ATTRIBUTES
6957 	    WHERE orig_sys_line_ref = l_pricing_attr_rec.orig_sys_line_ref
6958 	      AND orig_sys_header_ref = l_pricing_attr_rec.orig_sys_header_ref;
6959 
6960 	   DELETE FROM QP_LIST_LINES
6961 	    WHERE orig_sys_line_ref = l_pricing_attr_rec.orig_sys_line_ref
6962 	      AND orig_sys_header_ref = l_pricing_attr_rec.orig_sys_header_ref;
6963 
6964     END;
6965 
6966    END LOOP;
6967 
6968    FOR l_pbh_cline_rec IN c_pbh_child_line
6969    LOOP
6970 	DELETE FROM QP_PRICING_ATTRIBUTES
6971 	  WHERE list_line_id IN
6972 	  (SELECT to_rltd_modifier_id
6973 	     FROM QP_RLTD_MODIFIERS r, QP_LIST_LINES l
6974 	    WHERE  l.orig_sys_line_ref = l_pbh_cline_rec.price_break_header_ref
6975 	      AND  l.orig_sys_header_ref = l_pbh_cline_rec.orig_sys_header_ref
6976 	      AND l.list_line_id = r.from_rltd_modifier_id);
6977 
6978 	DELETE FROM QP_LIST_LINES
6979 	  WHERE list_line_id IN
6980 	  (SELECT to_rltd_modifier_id
6981 	     FROM QP_RLTD_MODIFIERS r, QP_LIST_LINES l
6982 	    WHERE  l.orig_sys_line_ref = l_pbh_cline_rec.price_break_header_ref
6983 	      AND  l.orig_sys_header_ref = l_pbh_cline_rec.orig_sys_header_ref
6984 	      AND l.list_line_id = r.from_rltd_modifier_id);
6985 
6986         DELETE FROM QP_PRICING_ATTRIBUTES
6987 	 WHERE list_line_id IN
6988 	 (SELECT list_line_id
6989 	    FROM QP_LIST_LINES
6990 	   WHERE orig_sys_line_ref =  l_pbh_cline_rec.orig_sys_line_ref
6991 	     AND orig_sys_header_ref =  l_pbh_cline_rec.orig_sys_header_ref);
6992 
6993 	DELETE FROM QP_LIST_LINES
6994 	 WHERE list_line_id IN
6995 	 (SELECT list_line_id
6996 	    FROM QP_LIST_LINES
6997 	   WHERE orig_sys_line_ref =  l_pbh_cline_rec.orig_sys_line_ref
6998 	     AND orig_sys_header_ref =  l_pbh_cline_rec.orig_sys_header_ref);
6999 
7000 	DELETE FROM QP_RLTD_MODIFIERS
7001 	 WHERE from_rltd_modifier_id IN
7002 	 (SELECT list_line_id
7003 	    FROM QP_LIST_LINES
7004 	   WHERE orig_sys_line_ref =  l_pbh_cline_rec.orig_sys_line_ref
7005 	     AND orig_sys_header_ref =  l_pbh_cline_rec.orig_sys_header_ref);
7006 
7007    END LOOP;
7008    write_log('Leaving Delete errored records parent');
7009 
7010  EXCEPTION
7011     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7012        write_log(
7013 			 'UNEXCPECTED ERROR IN PROCEDURE DELETE_ERRORED_RECORDS_PARENTS:'||sqlerrm);
7014        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7015     WHEN OTHERS THEN
7016        write_log(
7017 			 'UNEXCPECTED ERROR IN PROCEDURE DELETE_ERRORED_RECORDS_PARENTS:'||sqlerrm);
7018        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7019 END Delete_errored_records_parents;
7020 
7021 PROCEDURE ERRORS_TO_OUTPUT
7022           (p_request_id NUMBER)
7023 IS
7024 
7025  CURSOR c_errors IS
7026  SELECT request_id,
7027 	entity_type,
7028 	table_name,
7029 	orig_sys_header_ref,
7030 	orig_sys_line_ref,
7031 	orig_sys_pricing_attr_ref,
7032 	orig_sys_qualifier_ref,
7033 	error_message
7034  from QP_INTERFACE_ERRORS
7035  WHERE request_id = p_request_id;
7036 
7037  l_request_id				    NUMBER;
7038  l_ENTITY_TYPE                              VARCHAR2(30);
7039  l_TABLE_NAME                               VARCHAR2(30);
7040  l_COLUMN_NAME                              VARCHAR2(80);
7041  l_ERROR_MESSAGE                            VARCHAR2(240);
7042  l_ORIG_SYS_LINE_REF                        VARCHAR2(50);
7043  l_ORIG_SYS_PRICING_ATTR_REF                VARCHAR2(50);
7044  l_ORIG_SYS_HEADER_REF                      VARCHAR2(50);
7045  l_ORIG_SYS_QUALIFIER_REF                   VARCHAR2(50);
7046 
7047 BEGIN
7048       fnd_file.put_line(FND_FILE.OUTPUT,'');
7049       fnd_file.put_line(FND_FILE.OUTPUT,'Error Details');
7050       fnd_file.put_line(FND_FILE.OUTPUT,'');
7054          INTO 	l_request_id,
7051       OPEN c_errors;
7052       LOOP
7053         FETCH 	c_errors
7055 		l_entity_type,
7056 		l_table_name,
7057 		l_orig_sys_header_ref,
7058 		l_orig_sys_line_ref,
7059 		l_orig_sys_pricing_attr_ref,
7060 		l_orig_sys_qualifier_ref,
7061 		l_error_message;
7062 
7063          EXIT WHEN c_errors%NOTFOUND;
7064 	 if l_table_name = 'QP_INTERFACE_LIST_HEADERS' then
7065 	     fnd_file.put_line(FND_FILE.OUTPUT,to_char(l_request_id)
7066 						||'/'||l_entity_type
7067 						||'/'||l_table_name
7068 						||'/'||l_orig_sys_header_ref
7069 						||' '||l_error_message);
7070 	 elsif l_table_name = 'QP_INTERFACE_LIST_LINES' then
7071 	     fnd_file.put_line(FND_FILE.OUTPUT,to_char(l_request_id)
7072 						||'/'||l_entity_type
7073 						||'/'||l_table_name
7074 						||'/'||l_orig_sys_header_ref
7075 						||'/'||l_orig_sys_line_ref
7076 						||' '||l_error_message);
7077 	 elsif l_table_name = 'QP_INTERFACE_LIST_QUALIFIERS' then
7078 	     fnd_file.put_line(FND_FILE.OUTPUT,to_char(l_request_id)
7079 						||'/'||l_entity_type
7080 						||'/'||l_table_name
7081 						||'/'||l_orig_sys_header_ref
7082 						||'/'||l_orig_sys_qualifier_ref
7083 						||' '||l_error_message);
7084 	 elsif l_table_name = 'QP_INTERFACE_LIST_PRICING_ATTRIBS' then
7085 	     fnd_file.put_line(FND_FILE.OUTPUT,to_char(l_request_id)
7086 						||'/'||l_entity_type
7087 						||'/'||l_table_name
7088 						||'/'||l_orig_sys_header_ref
7089 						||'/'||l_orig_sys_line_ref
7090 						||'/'||l_orig_sys_pricing_attr_ref
7091 						||' '||l_error_message);
7092 	 else
7093 	     fnd_file.put_line(FND_FILE.OUTPUT,to_char(l_request_id)
7094 						||'/'||l_entity_type
7095 						||'/'||l_table_name
7096 						||'/'||l_orig_sys_header_ref
7097 						||'/'||l_orig_sys_qualifier_ref
7098 						||'/'||l_orig_sys_line_ref
7099 						||'/'||l_orig_sys_pricing_attr_ref
7100 						||' '||l_error_message);
7101 
7102 	 end if;
7103          fnd_file.put_line(FND_FILE.OUTPUT,'');
7104       END LOOP;
7105 END;
7106 
7107 PROCEDURE PURGE
7108           (p_request_id NUMBER)
7109 IS
7110    BEGIN
7111         write_log('Entering Purging');
7112 	DELETE FROM qp_interface_pricing_attribs
7113 	 WHERE request_id = p_request_id
7114 	   AND process_status_flag = 'I';
7115 
7116 	DELETE FROM qp_interface_list_lines
7117 	 WHERE request_id = p_request_id
7118 	   AND process_status_flag = 'I';
7119 
7120 	DELETE FROM qp_interface_qualifiers
7121 	 WHERE request_id = p_request_id
7122 	   AND process_status_flag = 'I';
7123 
7124 	DELETE FROM qp_interface_list_headers
7125 	 WHERE request_id = p_request_id
7126 	   AND process_status_flag = 'I';
7127 
7128       write_log('Leaving Purging');
7129 
7130   EXCEPTION
7131     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7132        write_log( 'UNEXCPECTED ERROR IN PROCEDURE PURGE:'||sqlerrm);
7133        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7134     WHEN OTHERS THEN
7135        write_log( 'UNEXCPECTED ERROR IN PROCEDURE PURGE:'||sqlerrm);
7136        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7137 
7138 END PURGE;
7139 
7140 --Basic_Pricing_Condition
7141 FUNCTION Get_QP_Status RETURN VARCHAR2 IS
7142 BEGIN
7143    IF G_QP_STATUS IS NULL THEN
7144        IF FND_GLOBAL.RESP_APPL_ID = 714 THEN
7145 	-- If the calling application is FTE then treat QP installation status
7146 	-- as fully installed.
7147 	    G_QP_STATUS := 'I';
7148        ELSE
7149 	-- Get the QP installation status
7150 	   G_QP_STATUS :=  QP_UTIL.GET_QP_STATUS;
7151        END IF;
7152    END IF;
7153 
7154    RETURN G_QP_STATUS;
7155 
7156 END;
7157 
7158 PROCEDURE CLEAN_UP_CODE (l_request_id number)
7159 IS
7160      l_suc_head NUMBER;
7161      l_err_head NUMBER;
7162      l_suc_qual NUMBER;
7163      l_err_qual NUMBER;
7164 Begin
7165 
7166 	 write_log( 'Complete...');
7167 
7168 
7169 	   Select count(*) into l_suc_head
7170 	     from qp_interface_list_headers
7171 	    where request_id = l_request_id
7172 	      and process_status_flag = 'I';
7173 
7174 	   Select count(*) into l_err_head
7175 	     from qp_interface_list_headers
7176 	    where request_id = l_request_id
7177 	      and process_status_flag IS NULL;
7178 
7179 	   Select count(*) into l_suc_qual
7180 	     from qp_interface_qualifiers
7181 	    where request_id = l_request_id
7182 	      and process_status_flag = 'I';
7183 
7184 	   Select count(*) into l_err_qual
7185 	     from qp_interface_qualifiers
7186 	    where request_id = l_request_id
7187 	      and process_status_flag IS NULL;
7188 
7189 	  purge(l_request_id);
7190 
7191 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Number Of succesfully Processed Headers: '||l_suc_head);
7192 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Number Of Errored Headers: '||l_err_head);
7193 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Number Of succesfully Processed Qualifiers: '||l_suc_qual);
7194 	 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Number Of Errored Qualifiers: '||l_err_qual);
7195 	 ERRORS_TO_OUTPUT(l_request_id);
7196 END;
7197 
7198 PROCEDURE write_log(log_text VARCHAR2)
7199 IS
7200 BEGIN
7201 	IF G_QP_DEBUG = 'Y' THEN
7202 		FND_FILE.PUT_LINE(FND_FILE.LOG, log_text);
7203 	END IF;
7204 END;
7205 
7206 END QP_BULK_LOADER_PUB;