[Home] [Help]
PACKAGE BODY: APPS.OKC_XPRT_INT_GRP
Source
1 PACKAGE BODY OKC_XPRT_INT_GRP AS
2 /* $Header: OKCVXIBEEXPB.pls 120.18 2006/06/22 09:23:45 asingam noship $ */
3
4 ------------------------------------------------------------------------------
5 -- GLOBAL CONSTANTS
6 ------------------------------------------------------------------------------
7 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKC_XPRT_INT_GRP';
8 G_APP_NAME CONSTANT VARCHAR2(3) := OKC_API.G_APP_NAME;
9
10 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
11 G_MODULE CONSTANT VARCHAR2(250) := 'okc.plsql.' || g_pkg_name || '.';
12 G_APPLICATION_ID CONSTANT NUMBER :=510; -- OKC Application
13
14 G_FALSE CONSTANT VARCHAR2(1) := FND_API.G_FALSE;
15 G_TRUE CONSTANT VARCHAR2(1) := FND_API.G_TRUE;
16
17 G_RET_STS_SUCCESS CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18 G_RET_STS_ERROR CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_ERROR;
19 G_RET_STS_UNEXP_ERROR CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_UNEXP_ERROR;
20
21 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKC_UNEXPECTED_ERROR';
22 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'ERROR_MESSAGE';
23 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'ERROR_CODE';
24 G_UNABLE_TO_RESERVE_REC CONSTANT VARCHAR2(200) := OKC_API.G_UNABLE_TO_RESERVE_REC;
25
26 --For Bug 4685428
27
28 G_OKC_XPRT_SALESREP_ASSIST CONSTANT VARCHAR2(30) := 'OKC_XPRT_SALESREP_ASSIST';
29
30 -------------------------------------------------------------------
31 -- Procedure: This procedure is to delete the empty sections
32 -- and re-number the terms if one or more empty
33 -- section is deleted.
34 -------------------------------------------------------------------
35 PROCEDURE delete_empty_sections (
36 p_api_version IN NUMBER,
37 p_init_msg_list IN VARCHAR2,
38 p_document_type IN VARCHAR2,
39 p_document_id IN NUMBER,
40 p_template_id IN NUMBER,
41 p_document_number IN VARCHAR2,
42 x_return_status OUT NOCOPY VARCHAR2,
43 x_msg_count OUT NOCOPY NUMBER,
44 x_msg_data OUT NOCOPY VARCHAR2
45 ) IS
46
47 l_api_name VARCHAR2(30) := 'delete_empty_sections';
48 l_module VARCHAR2(250) := G_MODULE || l_api_name;
49 l_section_deleted VARCHAR2(1) := 'N';
50 l_num_scheme_id NUMBER:=0;
51
52 Cursor c_doc_sections Is
53 SELECT id,scn_id,level,object_version_number, 0
54 FROM okc_sections_b
55 CONNECT BY prior id = scn_id
56 START WITH DOCUMENT_ID = p_document_id and document_type = p_document_type
57 ORDER BY level DESC;
58
59 Cursor c_art_sections Is
60 select distinct scn_id
61 from okc_k_articles_b
62 where DOCUMENT_TYPE = p_document_type and DOCUMENT_ID = p_document_id;
63
64 Cursor c_clauses(p_scn_id NUMBER) Is
65 select count(*)
66 from okc_k_articles_b
67 where scn_id = p_scn_id;
68
69 CURSOR l_get_num_scheme_id(p_doc_type VARCHAR2, p_doc_id NUMBER) IS
70 SELECT doc_numbering_scheme
71 FROM okc_template_usages
72 WHERE document_type = p_document_type
73 AND document_id = p_document_id;
74
75 TYPE IdList IS TABLE OF okc_sections_b.id%TYPE INDEX BY BINARY_INTEGER;
76
77 -- define table list for the above cursor with a processed flag (deletable or not)
78 -- if a section cannot be deleted, that section along with all its parent will be marked
79 -- as not deletable
80 Id_tbl IdList;
81 Scn_Id_tbl IdList;
82 Level_tbl IdList;
83 OVN_Tbl IdList;
84 Delete_Flag_tbl IdList; -- 0 = can delete; 1 = cannot delete
85
86 i NUMBER;
87 l_clause_count number;
88 l_level number;
89 l_parent_scn_id number;
90 l_grand_parent_id number;
91
92 BEGIN
93 x_return_status := FND_API.G_RET_STS_SUCCESS;
94
95 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
96 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
97 G_MODULE || l_api_name,
98 '100: Entered ' || G_PKG_NAME || '.' || l_api_name);
99 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
100 G_MODULE || l_api_name,
101 'Parameters : ');
102 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
103 G_MODULE || l_api_name,
104 'p_document_id : ' || p_document_id);
105 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
106 G_MODULE || l_api_name,
107 'p_document_type : ' || p_document_type);
108 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
109 G_MODULE || l_api_name,
110 'p_document_number : ' || p_document_number);
111 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
112 G_MODULE || l_api_name,
113 'p_template_id : ' || p_template_id);
114 END IF;
115
116 --
117 -- read all sections from the document
118 --
119 Open c_doc_sections;
120 Fetch c_doc_sections bulk collect into Id_tbl,Scn_Id_tbl,Level_tbl,OVN_tbl,Delete_Flag_tbl;
121 Close c_doc_sections;
122
123 --
124 -- get all sections that have clauses from articles table and set the delete flag not to be deleted
125 -- delete_flag is set to 1 if the section has clauses
126 -- if a section cannot be deletable, all its parents and grand parents also no deletable
127 --
128 For clause_sec IN c_art_sections
129 Loop
130 For l_sec_index In 1..Id_tbl.count
131 Loop
132 if Id_tbl(l_sec_index) = clause_sec.scn_id then
133 Delete_Flag_tbl(l_sec_index) := 1;
134 l_parent_scn_id := Scn_Id_tbl(l_sec_index);
135 if nvl(l_level,1) <= 1 then
136 l_level := Level_tbl(l_sec_index);
137 l_parent_scn_id := Scn_Id_tbl(l_sec_index);
138 end if;
139 end if;
140 End Loop;
141
142 -- mark all parents of this section as not deletable
143 while l_level > 1
144 Loop
145 For i In 1..Id_tbl.count
146 Loop
147 if (Id_tbl(i) = l_parent_scn_id and Delete_Flag_tbl(i) <> 1) then
148 Delete_Flag_tbl(i) := 1; -- do not delete parent section
149 l_grand_parent_id := Scn_Id_tbl(i);
150 end if;
151 End Loop;
152 l_level := l_level - 1;
153 l_parent_scn_id := l_grand_parent_id;
154 End Loop;
155 End Loop;
156
157 --
158 -- now check the sections for which the delete flags are not set to 1
159 -- if these sections has clauses, set the flag to 1
160 -- if a section is no deletable, all its parents and grand parents are also not deletable
161 --
162 For l_sec_index In 1..Id_tbl.count
163 Loop
164 if Delete_Flag_tbl(l_sec_index) = 0 then
165 Open c_clauses(Id_tbl(l_sec_index));
166 Fetch c_clauses into l_clause_count;
167 Close c_clauses;
168 if l_clause_count > 0 then
169 For i In 1..Id_tbl.count
170 Loop
171 if Id_tbl(i) = Id_tbl(l_sec_index) then
172 Delete_Flag_tbl(i) := 1; -- do not delete this section
173 end if;
174 End Loop;
175 -- mark all parents of this section as not deletable
176 l_level := Level_tbl(l_sec_index);
177 l_parent_scn_id := Scn_Id_tbl(l_sec_index);
178 while l_level > 1
179 Loop
180 For i In 1..Id_tbl.count
181 Loop
182 if (Id_tbl(i) = l_parent_scn_id and Delete_Flag_tbl(i) <> 1) then
183 Delete_Flag_tbl(i) := 1; -- do not delete parent section
184 l_grand_parent_id := Scn_Id_tbl(i);
185 end if;
186 End Loop;
187 l_level := l_level - 1;
188 l_parent_scn_id := l_grand_parent_id;
189 End Loop;
190 end if;
191 end if;
192 End Loop;
193
194 --
195 -- remove duplicate sections that to be deleted
196 -- if not removed, the delete API will throw error since the section is already deleted in some cases
197 --
198 For l_sec_index In 1..Id_tbl.count
199 Loop
200 if (Delete_Flag_tbl(l_sec_index) = 0) then
201 For i In l_sec_index+1..Id_tbl.count
202 Loop
203 if Id_tbl(i) = Id_tbl(l_sec_index) then
204 Delete_Flag_tbl(i) := 1;
205 end if;
206 End Loop;
207 end if;
208 End Loop;
209
210 --
211 -- now the rest of the sections with delete flag is still set to zero are empty sections
212 -- delete all empty sections now
213 --
214
215 For l_sec_index In 1..Id_tbl.count
216 Loop
217
218 If (Delete_Flag_tbl(l_sec_index) = 0) then
219 OKC_TERMS_SECTIONS_GRP.delete_section(
220 p_api_version => p_api_version,
221 p_init_msg_list => p_init_msg_list,
222 p_commit => FND_API.G_FALSE,
223 x_return_status => x_return_status,
224 x_msg_count => x_msg_count,
225 x_msg_data => x_msg_data,
226 p_mode => 'NORMAL',
227 p_id => id_tbl(l_sec_index),
228 p_amendment_description => NULL,
229 p_object_version_number => OVN_tbl(l_sec_index)
230 );
231
232 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
233 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
234 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
235 RAISE FND_API.G_EXC_ERROR ;
236 END IF;
237 l_section_deleted := 'Y';
238
239 End If;
240 End Loop;
241
242 --
243 -- if at least one section got deleted, renumber the document
244 --
245 IF l_section_deleted = 'Y' THEN
246 OPEN l_get_num_scheme_id(p_doc_type => p_document_type, p_doc_id => p_document_id) ;
247 FETCH l_get_num_scheme_id INTO l_num_scheme_id;
248 CLOSE l_get_num_scheme_id;
249
250 IF NVL(l_num_scheme_id,0) <> 0 THEN
251
252 OKC_NUMBER_SCHEME_GRP.apply_numbering_scheme(
253 p_api_version => p_api_version,
254 p_init_msg_list => p_init_msg_list,
255 x_return_status => x_return_status,
256 x_msg_count => x_msg_count,
257 x_msg_data => x_msg_data,
258 p_validate_commit => FND_API.G_FALSE,
259 p_validation_string => NULL,
260 p_commit => FND_API.G_FALSE,
261 p_doc_type => p_document_type,
262 p_doc_id => p_document_id,
263 p_num_scheme_id => l_num_scheme_id
264 );
265
266 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
267 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
268 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
269 RAISE FND_API.G_EXC_ERROR ;
270 END IF;
271 END IF; --l_num_scheme_id is not zero
272 END IF;
273
274 -- end debug log
275 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
276 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
277 G_MODULE || l_api_name,
278 '1000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
279 END IF;
280
281 EXCEPTION
282
283 WHEN FND_API.G_EXC_ERROR THEN
284 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
285 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
286 G_MODULE || l_api_name,
287 '2000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
288 END IF;
289
290 x_return_status := FND_API.G_RET_STS_ERROR ;
291 FND_MSG_PUB.Count_And_Get(
292 p_count => x_msg_count,
293 p_data => x_msg_data
294 );
295
296 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
297 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
298 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
299 G_MODULE || l_api_name,
300 '3000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
301 END IF;
302
303 x_return_status := FND_API.G_RET_STS_ERROR ;
304 FND_MSG_PUB.Count_And_Get(
305 p_count => x_msg_count,
306 p_data => x_msg_data
307 );
308
309 WHEN OTHERS THEN
310 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
311 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
312 G_MODULE || l_api_name,
313 '4000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
314 END IF;
315
316 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
317
318 IF FND_MSG_PUB.Check_Msg_Level
319 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
320 THEN
321 FND_MSG_PUB.Add_Exc_Msg(
322 G_PKG_NAME ,
323 l_api_name
324 );
325 END IF;
326
327 FND_MSG_PUB.Count_And_Get(
328 p_count => x_msg_count,
329 p_data => x_msg_data);
330
331
332 END delete_empty_sections;
333 -------------------------------------------------------------------
334 -- Procedure: This procedure will be called from the following two
335 -- places:
336 -- 1. From preview t's and c's in iStore
337 -- 2. From iStore backend order creation
338 -------------------------------------------------------------------
339 PROCEDURE get_contract_terms (
340 p_api_version IN NUMBER,
341 p_init_msg_list IN VARCHAR2,
342 p_document_type IN VARCHAR2,
343 p_document_id IN NUMBER,
344 p_template_id IN NUMBER,
345 p_called_from_ui IN VARCHAR2,
346 p_document_number IN VARCHAR2,
347 p_run_xprt_flag IN VARCHAR2,
348 x_return_status OUT NOCOPY VARCHAR2,
349 x_msg_count OUT NOCOPY NUMBER,
350 x_msg_data OUT NOCOPY VARCHAR2
351 ) IS
352
353 l_api_name VARCHAR2(30) := 'get_contract_terms';
354 l_module VARCHAR2(250) := G_MODULE || l_api_name;
355 l_expert_enabled VARCHAR2(1);
356 l_template_applied_yn VARCHAR2(1);
357
358 l_expert_enabled_yn VARCHAR2(1);
359 l_ce_profile_option_enabled VARCHAR2(1);
360
361 l_config_header_id NUMBER;
362 l_config_rev_nbr NUMBER;
363
364 l_cz_xml_init_msg VARCHAR2(2000);
365 l_xml_terminate_msg LONG;
366
367 l_valid_config VARCHAR2(10);
368 l_complete_config VARCHAR2(10);
369 l_new_config_header_id NUMBER;
370 l_new_config_rev_nbr NUMBER;
371
372 l_count_articles_dropped NUMBER;
373 l_tmpl_id_on_doc NUMBER;
374
375 --Added for Bug 4929199
376 l_tmpl_lang_on_doc VARCHAR2(4);
377 l_tmpl_lang_passed VARCHAR2(4);
378 l_quote_status NUMBER;
379
380 --Added for Bug 5344832
381 l_tmpl_id_for_bv NUMBER;
382
383 CURSOR csr_expert_enabled IS
384 SELECT (nvl(contract_expert_enabled, 'N'))
385 FROM okc_terms_templates_all
386 WHERE template_id = p_template_id;
387
388 --cursor added for Bug#5012622
389 CURSOR csr_tmpl_id_on_doc IS
390 SELECT template_id
391 FROM okc_template_usages
392 WHERE document_type = p_document_type
393 AND document_id = p_document_id;
394
395 --cursor added for Bug#4929199
396 CURSOR csr_tmpl_lang (p_template_id NUMBER) IS
397 SELECT language
398 FROM okc_terms_templates_all
399 WHERE template_id = p_template_id;
400
401 --cursor added for Bug#4929199
402 CURSOR csr_quote_status IS
403 SELECT quote_status_id
404 FROM aso_quote_headers
405 WHERE quote_header_id = p_document_id;
406
407 BEGIN
408 x_return_status := FND_API.G_RET_STS_SUCCESS;
409
410
411 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
412 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
413 G_MODULE || l_api_name,
414 '100: Entered ' || G_PKG_NAME || '.' || l_api_name);
415 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
416 G_MODULE || l_api_name,
417 'Parameters : ');
418 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
419 G_MODULE || l_api_name,
420 'p_document_id : ' || p_document_id);
421 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
422 G_MODULE || l_api_name,
423 'p_document_type : ' || p_document_type);
424 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
425 G_MODULE || l_api_name,
426 'p_called_from_ui : ' || p_called_from_ui);
427 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
428 G_MODULE || l_api_name,
429 'p_document_number : ' || p_document_number);
430 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
431 G_MODULE || l_api_name,
432 'p_template_id : ' || p_template_id);
433 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
434 G_MODULE || l_api_name,
435 'p_run_xprt_flag : ' || p_run_xprt_flag);
436 END IF;
437
438 -- Expert has to be run only when p_run_xprt_flag is Yes
439 IF p_run_xprt_flag = 'Y' THEN
440
441 -- Is Contract Expert profile option enabled?
442 FND_PROFILE.GET(name=> 'OKC_K_EXPERT_ENABLED', val => l_ce_profile_option_enabled );
443
444 -- Is Template enabled for Expert?
445 OPEN csr_expert_enabled;
446 FETCH csr_expert_enabled INTO l_expert_enabled;
447 CLOSE csr_expert_enabled;
448
449 --get template id on doc.
450 --l_tmpl_id_on_doc will not be null if already terms are instantiated on the doc
451 OPEN csr_tmpl_id_on_doc ;
452 FETCH csr_tmpl_id_on_doc INTO l_tmpl_id_on_doc;
453 CLOSE csr_tmpl_id_on_doc ;
454
455 --Added for Bug 4929199
456 OPEN csr_tmpl_lang (p_template_id) ;
457 FETCH csr_tmpl_lang INTO l_tmpl_lang_passed;
458 CLOSE csr_tmpl_lang ;
459
460 --Added for Bug 4929199
461 OPEN csr_tmpl_lang (l_tmpl_id_on_doc) ;
462 FETCH csr_tmpl_lang INTO l_tmpl_lang_on_doc;
463 CLOSE csr_tmpl_lang ;
464
465 --cursor added for Bug#4929199
466 OPEN csr_quote_status;
467 FETCH csr_quote_status INTO l_quote_status;
468 CLOSE csr_quote_status;
469
470 --Logging local variables
471 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
472 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
473 G_MODULE || l_api_name,
474 '100: Is expert enabled : ' ||l_expert_enabled );
475 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
476 G_MODULE || l_api_name,
477 '100: template id on doc : ' ||l_tmpl_id_on_doc );
478 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
479 G_MODULE || l_api_name,
480 '100: template id passed: ' ||p_template_id);
481 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
482 G_MODULE || l_api_name,
483 '100: l_tmpl_lang_on_doc : ' ||l_tmpl_lang_on_doc );
484 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
485 G_MODULE || l_api_name,
486 '100: l_tmpl_lang_passed : ' ||l_tmpl_lang_passed );
487 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
488 G_MODULE || l_api_name,
489 '100: document status : ' ||l_quote_status );
490 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
491 G_MODULE || l_api_name,
492 '100: l_ce_profile_option_enabled : ' ||l_ce_profile_option_enabled);
493 END IF;
494
495 --Bug 5292348 whether template is expert enabled or not,if template id on doc is null
496 --then copy_terms should be called.
497 --Bug#5012622 Added new OR condition at below stmt
498 --Added additional check for Bug 4929199
499 IF ((l_tmpl_id_on_doc is null) or
500 (l_tmpl_id_on_doc <> p_template_id and
501 l_tmpl_lang_on_doc <> l_tmpl_lang_passed and
502 l_quote_status = 28 -- 28 means quote status = 'STORE DRAFT'
503 )
504 ) THEN
505 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
506 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
507 G_MODULE || l_api_name,
508 '120: Calling copy_terms' );
509 END IF;
510 OKC_TERMS_COPY_GRP.copy_terms(
511 p_api_version => p_api_version,
512 x_return_status => x_return_status,
513 x_msg_data => x_msg_data,
514 x_msg_count => x_msg_count,
515 p_commit => FND_API.G_TRUE,
516 p_template_id => p_template_id,
517 p_target_doc_type => p_document_type,
518 p_target_doc_id => p_document_id,
519 p_article_effective_date => sysdate,
520 p_validation_string => NULL
521 );
522
523
524 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
525 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
526 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
527 RAISE FND_API.G_EXC_ERROR ;
528 END IF;
529 -- Begin: Added for bug 5344832
530 l_tmpl_id_for_bv := p_template_id;
531 ELSE
532 l_tmpl_id_for_bv := l_tmpl_id_on_doc;
533 -- End: Added for bug 5344832
534 END IF;
535
536
537 -- Begin Fix for bug 4919069. Added if Condition before running expert
538 -- if the template is expert enabled and Expert profile option is 'Y'
539 IF (upper(l_ce_profile_option_enabled) = 'Y') THEN
540
541 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
542 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
543 G_MODULE || l_api_name,
544 '130: Before calling get_current_config_dtls ' );
545 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
546 G_MODULE || l_api_name,
547 '130: l_tmpl_id_for_bv '||l_tmpl_id_for_bv );
548
549 END IF;
550
551 OKC_XPRT_UTIL_PVT.get_current_config_dtls (
552 p_api_version => p_api_version,
553 p_init_msg_list => p_init_msg_list,
554 p_document_type => p_document_type,
555 p_document_id => p_document_id,
556 p_template_id => l_tmpl_id_for_bv, -- Changed from p_template_id for bug 5344832
557 x_expert_enabled_yn => l_expert_enabled_yn,
558 x_config_header_id => l_config_header_id,
559 x_config_rev_nbr => l_config_rev_nbr,
560 x_return_status => x_return_status,
561 x_msg_count => x_msg_count,
562 x_msg_data => x_msg_data
563 );
564
565 IF( upper(l_expert_enabled) = 'Y' OR
566 (upper(l_expert_enabled) = 'N' and -- Bug 5348970 run expert if already it is ran on doc
567 l_config_header_id IS NOT NULL and
568 l_config_rev_nbr IS NOT NULL
569 )
570 ) THEN
571
572 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
573 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
574 G_MODULE || l_api_name,
575 '140: Before running CE' );
576 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
577 G_MODULE || l_api_name,
578 '140: l_config_header_id '||l_config_header_id );
579 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
580 G_MODULE || l_api_name,
581 '140: l_config_rev_nbr '||l_config_rev_nbr );
582 END IF;
583
584 OKC_XPRT_UTIL_PVT.build_cz_xml_init_msg(
585 p_api_version => p_api_version,
586 p_init_msg_list => p_init_msg_list,
587 p_document_id => p_document_id,
588 p_document_type => p_document_type,
589 p_config_header_id => l_config_header_id,
590 p_config_rev_nbr => l_config_rev_nbr,
591 p_template_id => l_tmpl_id_for_bv, -- Changed from p_template_id for bug 5344832
592 x_cz_xml_init_msg => l_cz_xml_init_msg,
593 x_return_status => x_return_status,
594 x_msg_data => x_msg_data,
595 x_msg_count => x_msg_count);
596
597
598 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS OR l_cz_xml_init_msg IS NULL)
599 THEN
600 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
601 END IF;
602
603 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
604 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
605 G_MODULE || l_api_name,
606 '150: before calling batch_validate' );
607 END IF;
608 OKC_XPRT_CZ_INT_PVT.batch_validate(
609 p_api_version => p_api_version,
610 p_init_msg_list => p_init_msg_list,
611 p_cz_xml_init_msg => l_cz_xml_init_msg,
612 x_cz_xml_terminate_msg => l_xml_terminate_msg, -- this has been converted
613 -- internally from
614 -- HTML_PIECES to LONG.
615 x_return_status => x_return_status,
616 x_msg_data => x_msg_data,
617 x_msg_count => x_msg_count);
618
619
620 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS OR l_xml_terminate_msg IS NULL)
621 THEN
622 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
623 END IF;
624
625 -- To parse x_cz_xml_terminate_msg and check if the CZ batch validate
626 -- was successful. If batch validate was successful, it would return
627 -- the new config_header_id and config_revision_number
628 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
629 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
630 G_MODULE || l_api_name,
631 '160: before calling parse_cz_xml_terminate_msg');
632 END IF;
633
634 OKC_XPRT_UTIL_PVT.parse_cz_xml_terminate_msg(
635 p_api_version => p_api_version,
636 p_init_msg_list => p_init_msg_list,
637 p_cz_xml_terminate_msg => l_xml_terminate_msg,
638 x_valid_config => l_valid_config,
639 x_complete_config => l_complete_config,
640 x_config_header_id => l_new_config_header_id,
641 x_config_rev_nbr => l_new_config_rev_nbr,
642 x_return_status => x_return_status,
643 x_msg_data => x_msg_data,
644 x_msg_count => x_msg_count);
645
646 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
647 THEN
648 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
649 END IF;
650
651 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
652 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
653 G_MODULE || l_api_name,
654 '170: before calling update_ce_config');
655 END IF;
656
657 OKC_XPRT_UTIL_PVT.update_ce_config
658 (
659 p_api_version => p_api_version,
660 p_init_msg_list => p_init_msg_list,
661 p_document_id => p_document_id,
662 p_document_type => p_document_type,
663 p_config_header_id => l_new_config_header_id,
664 p_config_rev_nbr => l_new_config_rev_nbr,
665 p_doc_update_mode => 'NORMAL',
666 x_count_articles_dropped => l_count_articles_dropped,
667 x_return_status => x_return_status,
668 x_msg_count => x_msg_count,
669 x_msg_data => x_msg_data
670 );
671
672 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
673 THEN
674 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
675 END IF;
676
677 END IF; -- if l_expert_enabled is Yes
678
679 END IF; -- if l_ce_profile_option_enabled = 'Y'
680
681 END IF; -- if p_run_exprt_flag
682
683 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
684 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
685 G_MODULE || l_api_name,
686 '200: deleting empty sections' );
687 END IF;
688
689 delete_empty_sections (
690 p_api_version => p_api_version,
691 p_init_msg_list => p_init_msg_list,
692 p_document_type => p_document_type,
693 p_document_id => p_document_id,
694 p_template_id => l_tmpl_id_for_bv, -- Changed from p_template_id for bug 5344832
695 p_document_number => p_document_number,
696 x_return_status => x_return_status,
697 x_msg_count => x_msg_data,
698 x_msg_data => x_msg_data
699 );
700
701 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
702 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
703 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
704 RAISE FND_API.G_EXC_ERROR ;
705 END IF;
706
707
708 -- end debug log
709 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
710 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
711 G_MODULE || l_api_name,
712 '1000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
713 END IF;
714
715 COMMIT WORK;
716
717 EXCEPTION
718
719 WHEN FND_API.G_EXC_ERROR THEN
720 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
721 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
722 G_MODULE || l_api_name,
723 '2000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
724 END IF;
725
726 x_return_status := FND_API.G_RET_STS_ERROR ;
727 FND_MSG_PUB.Count_And_Get(
728 p_count => x_msg_count,
729 p_data => x_msg_data
730 );
731
732 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
733 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
734 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
735 G_MODULE || l_api_name,
736 '3000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
737 END IF;
738
739 x_return_status := FND_API.G_RET_STS_ERROR ;
740 FND_MSG_PUB.Count_And_Get(
741 p_count => x_msg_count,
742 p_data => x_msg_data
743 );
744
745 WHEN OTHERS THEN
746 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
747 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
748 G_MODULE || l_api_name,
749 '4000: Leaving ' || G_PKG_NAME || '.' || l_api_name);
750 END IF;
751
752 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
753
754 IF FND_MSG_PUB.Check_Msg_Level
755 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
756 THEN
757 FND_MSG_PUB.Add_Exc_Msg(
758 G_PKG_NAME ,
759 l_api_name
760 );
761 END IF;
762
763 FND_MSG_PUB.Count_And_Get(
764 p_count => x_msg_count,
765 p_data => x_msg_data);
766
767
768
769 END get_contract_terms;
770
771 END OKC_XPRT_INT_GRP ;