DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_TERMS_COPY_GRP

Source


1 PACKAGE BODY OKC_TERMS_COPY_GRP AS
2 /* $Header: OKCGDCPB.pls 120.10.12020000.5 2013/04/12 14:10:54 serukull ship $ */
3 
4   ---------------------------------------------------------------------------
5   -- GLOBAL MESSAGE CONSTANTS
6   ---------------------------------------------------------------------------
7   G_FND_APP                    CONSTANT VARCHAR2(200) := OKC_API.G_FND_APP;
8   ---------------------------------------------------------------------------
9   -- GLOBAL VARIABLES
10   ---------------------------------------------------------------------------
11   G_PKG_NAME                   CONSTANT   VARCHAR2(200) := 'OKC_TERMS_COPY_GRP';
12   G_APP_NAME                   CONSTANT   VARCHAR2(3)   :=  OKC_API.G_APP_NAME;
13 
14   ------------------------------------------------------------------------------
15   -- GLOBAL CONSTANTS
16   ------------------------------------------------------------------------------
17   g_module          CONSTANT VARCHAR2(250) := 'okc.plsql.'||g_pkg_name||'.';
18   G_FALSE                      CONSTANT   VARCHAR2(1) := FND_API.G_FALSE;
19   G_TRUE                       CONSTANT   VARCHAR2(1) := FND_API.G_TRUE;
20 
21   G_RET_STS_SUCCESS            CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
22   G_RET_STS_ERROR              CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_ERROR;
23   G_RET_STS_UNEXP_ERROR        CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_UNEXP_ERROR;
24 
25   G_UNEXPECTED_ERROR           CONSTANT   VARCHAR2(200) := 'OKC_UNEXPECTED_ERROR';
26   G_SQLERRM_TOKEN              CONSTANT   VARCHAR2(200) := 'ERROR_MESSAGE';
27   G_SQLCODE_TOKEN              CONSTANT   VARCHAR2(200) := 'ERROR_CODE';
28   G_UNABLE_TO_RESERVE_REC      CONSTANT   VARCHAR2(200) := OKC_API.G_UNABLE_TO_RESERVE_REC;
29   G_TEMPLATE_MISS_REC          OKC_TERMS_TEMPLATES_PVT.template_rec_type;
30 
31 /*
32 --To be used when copying/transitioning a document
33 
34 --p_keep_version should be passed as 'Y' in case of document transition.
35 --p_keep_version should be passed as 'N' in case of document copy where target
36 --document is expected to have same version of article as source document .
37 --p_copy_for_amendment should be passed as 'Y' when making amendment in
38 --sourcing.All other systems should pass it as 'N'.
39 --p_copy_deliverable should be passed as 'Y' when deliverable also needs to be
40 --copied.
41 --p_copy_abstract_yn should be 'Y' if there is a need to carry forward the approval_abstract_text onto the new document. Default:N.
42 */
43 
44 Procedure copy_doc     (
45                         p_api_version             IN    Number,
46                         p_init_msg_list           IN    Varchar2 ,
47                         p_commit                  IN    Varchar2 ,
48                         p_source_doc_type         IN    Varchar2,
49                         p_source_doc_id           IN    Number,
50                         p_target_doc_type         IN OUT NOCOPY Varchar2,
51                         p_target_doc_id           IN OUT NOCOPY Number,
52                         p_keep_version            IN    Varchar2 ,
53                         p_article_effective_date  IN    Date ,
54                         p_initialize_status_yn    IN    Varchar2 ,
55                         p_reset_fixed_date_yn     IN    Varchar2 ,
56                         p_internal_party_id       IN    Number ,
57                         p_internal_contact_id     IN    Number ,
58                         p_target_contractual_doctype  IN  Varchar2 ,
59                         p_copy_del_attachments_yn     IN   Varchar2 ,
60                         p_external_party_id       IN    Number ,
61                         p_external_contact_id     IN    Number ,
62                         p_copy_deliverables       IN    Varchar2 ,
63                         p_document_number         IN    Varchar2 ,
64                         p_copy_for_amendment      IN    Varchar2 ,
65                         p_copy_doc_attachments    IN    Varchar2 ,
66                         p_allow_duplicate_terms   IN    Varchar2,
67                         p_copy_attachments_by_ref IN    Varchar2,
68                         x_return_status           OUT   NOCOPY VARCHAR2,
69                         x_msg_data                OUT   NOCOPY VARCHAR2,
70                         x_msg_count               OUT   NOCOPY Number,
71                         p_external_party_site_id          IN    Number,
72                         p_copy_abstract_yn        IN    Varchar2,
73 				    p_contract_admin_id   IN NUMBER := NULL,
74 				    p_legal_contact_id    IN NUMBER := NULL
75             -- Conc Mod Changes Start
76             ,p_retain_lock_terms_yn        IN VARCHAR2 := 'N'
77             ,p_retain_lock_xprt_yn         IN VARCHAR2 := 'N'
78             , p_add_only_amend_deliverables IN VARCHAR2 := 'N'
79             , P_RETAIN_LOCK_DELIVERABLES_YN IN VARCHAR2 := 'N'
80             ,p_rebuild_locks  IN VARCHAR2 := 'N'
81             -- Conc Mod Changes End
82 
83                         )
84 IS
85 l_api_version                CONSTANT NUMBER := 1;
86 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_doc';
87 l_contract_source            VARCHAR2(30);
88 l_copy_primary_doc_flag      VARCHAR2(1) := 'N' ;
89 
90 CURSOR target_response_cur IS
91 SELECT TARGET_RESPONSE_DOC_TYPE
92 FROM   okc_bus_doc_types_b
93 WHERE  document_type = p_target_doc_type
94 AND    document_type_class = 'SOURCING';
95 l_target_response_doctype  okc_bus_doc_types_b.TARGET_RESPONSE_DOC_TYPE%TYPE;
96 --11.5.10+ derive deliverables_enabled_yn flag from okc_bus_doc_types_b
97 -- do not use the p_copy_deliverables param bug#3984339
98 CURSOR DEL_COPY_CUR IS
99 SELECT enable_deliverables_yn
100 FROM okc_bus_doc_types_b
101 where document_type = p_target_doc_type;
102 
103 -- CLM changes Begins
104 CURSOR l_get_num_scheme_id(p_doc_type IN VARCHAR2, p_doc_id IN NUMBER) IS
105 SELECT doc_numbering_scheme
106 FROM okc_template_usages
107 WHERE document_type = p_doc_type
108   AND document_id = p_doc_id;
109 
110 l_num_scheme_id    NUMBER:=0;
111 -- CLM changes Ends
112 
113 
114 l_deliverables_enabled   VARCHAR2(1);
115 l_copy_deliverables      VARCHAR2(1);
116 
117 
118 BEGIN
119 
120 
121 
122     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
123       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_doc');
124       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
125       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
126       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
127       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
128       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
129       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
130       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
131       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
132       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_keep_version : '||p_keep_version);
133       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_article_effective_date : '||p_article_effective_date);
134       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_initialize_status_yn : '||p_initialize_status_yn);
135       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_reset_fixed_date_yn : '||p_reset_fixed_date_yn);
136       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_internal_party_id : '||p_internal_party_id);
137       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_internal_contact_id : '||p_internal_contact_id);
138       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_contractual_doctype : '||p_target_contractual_doctype);
139       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_del_attachments_yn : '||p_copy_del_attachments_yn);
140       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_external_party_id : '||p_external_party_id);
141       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_external_party_site_id : '||p_external_party_site_id);
142       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_external_contact_id : '||p_external_contact_id);
143       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_deliverables : '||p_copy_deliverables);
144       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_document_number : '||p_document_number);
145       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_for_amendment : '||p_copy_for_amendment);
146       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_doc_attachments : '||p_copy_doc_attachments);
147       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_allow_duplicate_terms : '||p_allow_duplicate_terms);
148       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_attachments_by_ref : '||p_copy_attachments_by_ref);
149       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_retain_lock_terms_yn : '||p_retain_lock_terms_yn);
150       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_retain_lock_xprt_yn : '||p_retain_lock_xprt_yn);
151       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_retain_lock_deliverables_yn : '||p_retain_lock_deliverables_yn);
152       --FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_add_only_amend_deliverables : '||p_add_only_amend_deliverables);
153       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_rebuild_locks : '||p_rebuild_locks);
154     END IF;
155 
156 
157     -- Standard Start of API savepoint
158     SAVEPOINT g_copy_doc_GRP;
159 
160     -- Standard call to check for call compatibility.
161     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
162       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
163     END IF;
164 
165     -- Initialize message list if p_init_msg_list is set to TRUE.
166     IF FND_API.to_Boolean( p_init_msg_list ) THEN
167       FND_MSG_PUB.initialize;
168     END IF;
169 
170     --  Initialize API return status to success
171     x_return_status := FND_API.G_RET_STS_SUCCESS;
172 
173 
174     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
175         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
176     END IF;
177 
178     OKC_TERMS_COPY_PVT.copy_tc(
179                                   p_api_version            => 1,
180                                   p_init_msg_list          => FND_API.G_FALSE,
181                                   p_commit                 => FND_API.G_FALSE,
182                                   p_source_doc_type        => p_source_doc_type,
183                                   p_source_doc_id          => p_source_doc_id ,
184                                   p_target_doc_type        => p_target_doc_type,
185                                   p_target_doc_id          => p_target_doc_id,
186                                   p_keep_version           => p_keep_version,
187                                   p_article_effective_date => p_article_effective_date,
188                                   p_target_template_rec    => G_TEMPLATE_MISS_REC,
189                                   p_document_number        => p_document_number,
190                                   p_allow_duplicates       => p_allow_duplicate_terms,
191                                   x_return_status          => x_return_status,
192                                   x_msg_data               => x_msg_data,
193                                   x_msg_count              => x_msg_count,
194                                   p_copy_abstract_yn       => p_copy_abstract_yn,
195 				              p_copy_for_amendment     => p_copy_for_amendment,
196 						    p_contract_admin_id      => p_contract_admin_id,
197 						    p_legal_contact_id       => p_legal_contact_id
198                 -- Conc Mod changes start
199                 ,p_retain_lock_terms_yn   => p_retain_lock_terms_yn
200                 ,p_retain_lock_xprt_yn    => p_retain_lock_xprt_yn
201                 -- Conc Mod changes end
202                 );
203    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
204        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Finished OKC_TERMS_COPY_PVT.copy_tc, return status'||x_return_status);
205    END IF;
206 
207    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
208            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
209    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
210            RAISE FND_API.G_EXC_ERROR ;
211    END IF;
212 
213           IF p_rebuild_locks = 'Y' THEN
214             /*
215                When merging the data from mod to award
216                Source doc type is mod and target doc type is award.
217                After merge we will get new ids  on the Award.
218                Earlier we used to re-build the locks table.
219                Now we stamp the old ids on Award entities(s)
220 
221             */
222             okc_k_entity_locks_grp.rebuild_ids
223                        ( p_api_version     => 1,
224                          p_update_from_doc_type  => p_source_doc_type,
225                          p_update_from_doc_id  => p_source_doc_id,
226                          p_update_to_doc_type    => p_target_doc_type,
227                          p_update_to_doc_id      => p_target_doc_id,
228                          X_RETURN_STATUS => x_return_status,
229                          X_MSG_COUNT => X_MSG_COUNT,
230                          X_MSG_DATA => X_MSG_DATA
231                         );
232                    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
233                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Finished okc_k_entity_locks_grp.rebuild_locks , return status '||x_return_status);
234                   END IF;
235 
236 
237               IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
238               RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
239              ELSIF (x_return_status = G_RET_STS_ERROR) THEN
240               RAISE FND_API.G_EXC_ERROR ;
241             END IF;
242 
243 
244           END IF;
245 
246 
247 
248 
249 -----------------------------------------------------
250 
251     /* get the deliverables_enabled_yn flag before calling copy_deliverables bug#3984339 */
252 
253 
254             OPEN del_copy_cur;
255             FETCH del_copy_cur INTO l_deliverables_enabled;
256             IF del_copy_cur%NOTFOUND THEN
257                 l_deliverables_enabled := null;
258             END IF;
259             CLOSE del_copy_cur;
260 
261                   If (l_deliverables_enabled = 'N') then
262                    l_copy_deliverables := l_deliverables_enabled;
263                   Elsif (l_deliverables_enabled = 'Y') then
264              l_copy_deliverables := p_copy_deliverables;
265                   End If;
266 
267   IF (l_copy_deliverables ='Y' AND p_copy_for_amendment='N') THEN
268 
269      /*  Call Deliverable API to copy Deliverables */
270             -- get the target response doctype if the target is a
271             -- Sourcing document (RFQ,RFI,AUCTION)Bug#3270742
272             OPEN target_response_cur;
273             FETCH target_response_cur INTO l_target_response_doctype;
274             IF target_response_cur%NOTFOUND THEN
275                 l_target_response_doctype := null;
276             END IF;
277             CLOSE target_response_cur;
278 
279 
280             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
281                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables.  ');
282                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:source  busdoc id: '||to_char(p_source_doc_id));
283                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc id: '||to_char(p_target_doc_id));
284                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc type: '||p_target_doc_type);
285             END IF;
286 
287 
288             OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
289             p_api_version         => 1,
290             p_init_msg_list       => FND_API.G_FALSE,
291             p_source_doc_id       => p_source_doc_id,
292             p_source_doc_type     => p_source_doc_type,
293             p_target_doc_id       => p_target_doc_id,
294             p_target_doc_type     => p_target_doc_type,
295             p_initialize_status_yn => p_initialize_status_yn,
296             p_reset_fixed_date_yn   => p_reset_fixed_date_yn,
297             p_target_contractual_doctype  => p_target_contractual_doctype,
298             p_target_response_doctype  => l_target_response_doctype,
299             p_target_doc_number     => p_document_number,
300             p_copy_del_attachments_yn     => p_copy_del_attachments_yn,
301             p_internal_party_id   => p_internal_party_id,
302             p_internal_contact_id => p_internal_contact_id,
303             p_external_party_id   => p_external_party_id,
304             p_external_party_site_id   => p_external_party_site_id,
305             p_external_contact_id => p_external_contact_id,
306             x_msg_data       => x_msg_data,
307             x_msg_count       => x_msg_count,
308             x_return_status       => x_return_status
309            -- ,p_add_only_amend_deliverables => p_add_only_amend_deliverables
310            , P_RETAIN_LOCK_DELIVERABLES_YN => P_RETAIN_LOCK_DELIVERABLES_YN
311              );
312 
313             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
314                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables  ');
315                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100: OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables x_return_status :  '||x_return_status);
316             END IF;
317 
318             IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
319                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
320             ELSIF (x_return_status = G_RET_STS_ERROR) THEN
321                 RAISE FND_API.G_EXC_ERROR ;
322             END IF;
323 
324   END IF;
325 -------------------------------------------------------
326 
327   IF (l_copy_deliverables ='Y' AND p_copy_for_amendment='Y') THEN
328 
329          IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
330              FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment.');
331          END IF;
332 
333 
334          OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment (
335          p_api_version         => 1,
336          p_init_msg_list       => FND_API.G_FALSE,
337          p_source_doc_id       => p_source_doc_id,
338          p_source_doc_type     => p_source_doc_type,
339          p_target_doc_id       => p_target_doc_id,
340          p_target_doc_type     => p_target_doc_type,
341          p_reset_fixed_date_yn   => p_reset_fixed_date_yn,
342          p_target_doc_number     => p_document_number,
343          x_msg_data            => x_msg_data,
344          x_msg_count           => x_msg_count,
345          x_return_status       => x_return_status,
346          p_copy_del_attachments_yn => p_copy_del_attachments_yn,
347          p_target_contractual_doctype  => p_target_contractual_doctype);
348 
349          IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
350            FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment.  ');
351            FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment x_return_status :  '||x_return_status);
352          END IF;
353 
354          IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
355            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
356          ELSIF (x_return_status = G_RET_STS_ERROR) THEN
357            RAISE FND_API.G_EXC_ERROR ;
358          END IF;
359 
360   END IF;
361 
362 --Added l_copy_primary_doc_flag for 10+ word integration
363 ---------------------------------------------------------
364     l_contract_source := OKC_TERMS_UTIL_GRP.Get_Contract_Source_code(
365                                     p_document_type    => p_source_doc_type,
366                                     p_document_id      => p_source_doc_id
367                                     );
368     IF (l_contract_source = 'E') THEN
369        RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
370     END IF;
371 
372 ---------------------------------------------------------
373 
374   IF (p_copy_doc_attachments ='N' AND l_contract_source = 'ATTACHED') THEN
375   /* Copy only primary contract doc, p_copy_primary_doc_flag is set to 'Y'*/
376     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
377        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1150:Entering OKC_CONTRACT_DOCS_GRP.Copy_Attachments  ');
378     END IF;
379 
380     OKC_CONTRACT_DOCS_GRP.Copy_Attachments (
381                           p_api_version  =>1,
382                           p_init_msg_list =>FND_API.G_FALSE,
383                           x_msg_data            => x_msg_data,
384                           x_msg_count           => x_msg_count,
385                           x_return_status       => x_return_status,
386                           p_from_bus_doc_type => p_source_doc_type ,
387                           p_from_bus_doc_id   => p_source_doc_id,
388                           p_from_bus_doc_version => -99,
389                           p_to_bus_doc_type    => p_target_doc_type,
390                           p_to_bus_doc_id     => p_target_doc_id,
391                           p_to_bus_doc_version => -99,
392                           p_copy_by_ref => p_copy_attachments_by_ref,
393                           p_copy_primary_doc_flag => 'Y') ;
394 
395        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
396           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1151:Finished OKC_CONTRACT_DOCS_GRP.Copy_Attachments ');
397           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1151:OKC_CONTRACT_DOCS_GRP.Copy_Attachments x_return_status : '||x_return_status);
398        END IF;
399 
400        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
401                RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
402        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
403                RAISE FND_API.G_EXC_ERROR ;
404        END IF;
405   ELSIF (p_copy_doc_attachments ='Y' ) THEN
406   /* Copy all attachments*/
407     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
408        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1156:Entering OKC_CONTRACT_DOCS_GRP.Copy_Attachments  ');
409     END IF;
410 
411     OKC_CONTRACT_DOCS_GRP.Copy_Attachments (
412                           p_api_version  =>1,
413                           p_init_msg_list =>FND_API.G_FALSE,
414                           x_msg_data            => x_msg_data,
415                           x_msg_count           => x_msg_count,
416                           x_return_status       => x_return_status,
417                           p_from_bus_doc_type => p_source_doc_type ,
418                           p_from_bus_doc_id   => p_source_doc_id,
419                           p_from_bus_doc_version => -99,
420                           p_to_bus_doc_type    => p_target_doc_type,
421                           p_to_bus_doc_id     => p_target_doc_id,
422                           p_to_bus_doc_version => -99,
423                           p_copy_by_ref => p_copy_attachments_by_ref,
424                           p_copy_primary_doc_flag => 'N',
425 						  p_copy_for_amendment => p_copy_for_amendment) ;
426 
427        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
428           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1157:Finished OKC_CONTRACT_DOCS_GRP.Copy_Attachments ');
429           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1158:OKC_CONTRACT_DOCS_GRP.Copy_Attachments x_return_status : '||x_return_status);
430        END IF;
431 
432        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
433                RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
434        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
435                RAISE FND_API.G_EXC_ERROR ;
436        END IF;
437   END IF;
438 
439 -------------------------------------------------------------
440 
441 
442 -- CLM changes Begins  Call renumber after applying template on a document
443 
444       OPEN l_get_num_scheme_id(p_doc_type => p_target_doc_type, p_doc_id => p_target_doc_id) ;
445          FETCH l_get_num_scheme_id INTO l_num_scheme_id;
446       CLOSE l_get_num_scheme_id;
447 
448    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
449    FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: l_num_scheme_id : '||l_num_scheme_id);
450    END IF;
451 
452 
453 IF NVL(l_num_scheme_id,0) <> 0 THEN
454 
455     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
456       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Calling apply_numbering_scheme for num_scheme_id : '||l_num_scheme_id);
457     END IF;
458 
459           OKC_NUMBER_SCHEME_GRP.apply_numbering_scheme(
460            p_api_version        => p_api_version,
461            p_init_msg_list      => FND_API.G_FALSE,
462            x_return_status      => x_return_status,
463            x_msg_count          => x_msg_count,
464            x_msg_data           => x_msg_data,
465            p_validate_commit    => FND_API.G_FALSE,
466            p_validation_string  => null,
467            p_commit             => FND_API.G_FALSE,
468            p_doc_type           => p_target_doc_type,
469            p_doc_id             => p_target_doc_id,
470            p_num_scheme_id      => l_num_scheme_id
471          );
472 
473 
474    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
475        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: returned from OKC_NUMBER_SCHEME_GRP.apply_numbering_scheme , return status : '||x_return_status);
476    END IF;
477 
478           IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
479                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
480           ELSIF (x_return_status = G_RET_STS_ERROR) THEN
481                   RAISE FND_API.G_EXC_ERROR ;
482           END IF;
483 
484 
485 END IF; --l_num_scheme_id is not 0
486 
487 -- CLM changes Ends
488 
489    IF FND_API.To_Boolean( p_commit ) THEN
490       COMMIT WORK;
491    END IF;
492 
493 -- Standard call to get message count and if count is 1, get message info.
494    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
495 
496    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
497         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_doc');
498    END IF;
499 
500 EXCEPTION
501 
502 WHEN FND_API.G_EXC_ERROR THEN
503 
504  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
505      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_doc: OKC_API.G_EXCEPTION_ERROR Exception');
506  END IF;
507 
508  ROLLBACK TO g_copy_doc_grp;
509  x_return_status := G_RET_STS_ERROR ;
510  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
511 
512  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
513  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
514       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_doc: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
515  END IF;
516 
517  ROLLBACK TO g_copy_doc_grp;
518  x_return_status := G_RET_STS_UNEXP_ERROR ;
519  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
520 
521 WHEN OTHERS THEN
522 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
523    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_doc because of EXCEPTION: '||sqlerrm);
524 END IF;
525 
526 ROLLBACK TO g_copy_doc_grp;
527 x_return_status := G_RET_STS_UNEXP_ERROR ;
528 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
529      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
530 END IF;
531 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
532 END copy_doc;
533 
534 /*
535 --To be used when copying a terms template to make a new template or to make a
536 -- woring copy.
537 
538 */
539 
540 Procedure copy_terms_template   (
541                         p_api_version       IN       Number,
542                         p_init_msg_list     IN       Varchar2,
543                         p_commit            IN       Varchar2,
544                         p_template_id       IN       Number,
545                         p_tmpl_name         IN       Varchar2,
546                         p_intent            IN       Varchar2,
547                         p_start_date        IN       Date,
548                         p_end_date          IN       Date,
549                         p_instruction_text  IN       Varchar2,
550                         p_description       IN       Varchar2,
551                         p_print_Template_Id IN       Number,
552                         p_global_flag       IN       Varchar2,
553                         p_contract_expert_enabled IN Varchar2,
554 						p_cls_enabled       IN Varchar2 default 'N',
555                         p_xprt_clause_mandatory_flag IN VARCHAR2 := NULL,
556                         p_xprt_scn_code      IN      VARCHAR2 := NULL,
557                         p_attribute_category IN      Varchar2,
558                         p_attribute1         IN      Varchar2,
559                         p_attribute2         IN      Varchar2,
560                         p_attribute3         IN      Varchar2,
561                         p_attribute4         IN      Varchar2,
562                         p_attribute5         IN      Varchar2,
563                         p_attribute6         IN      Varchar2,
564                         p_attribute7         IN      Varchar2,
565                         p_attribute8         IN      Varchar2,
566                         p_attribute9         IN      Varchar2,
567                         p_attribute10        IN      Varchar2,
568                         p_attribute11        IN      Varchar2,
569                         p_attribute12        IN      Varchar2,
570                         p_attribute13        IN      Varchar2,
571                         p_attribute14        IN      Varchar2,
572                         p_attribute15        IN      Varchar2,
573                         p_copy_deliverables  IN      Varchar2,
574                         p_translated_from_tmpl_id IN       Number,
575                         p_language                IN       Varchar2,
576                         x_template_id        OUT     NOCOPY  Number,
577                         x_return_status      OUT     NOCOPY Varchar2,
578                         x_msg_data           OUT     NOCOPY Varchar2,
579                         x_msg_count          OUT     NOCOPY Number
580                         )IS
581 l_api_version                CONSTANT NUMBER := 1;
582 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_terms_template';
583 l_template_rec               OKC_TERMS_TEMPLATES_PVT.template_rec_type;
584 l_document_type            OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE := OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE;
585 l_dummy                      VARCHAR2(1) :='?';
586 l_deliverables_exist        VARCHAR2(100);
587 
588 CURSOR l_get_tmpl_csr IS
589 SELECT * FROM OKC_TERMS_TEMPLATES_ALL
590 WHERE template_id=p_template_id;
591 
592 CURSOR l_check_tmpl_name_csr(b_org_id NUMBER) IS
593 SELECT 'x' FROM OKC_TERMS_TEMPLATES_ALL
594 WHERE org_id=b_org_id
595 AND   template_name=p_tmpl_name;
596 
597 l_tmpl_rec l_get_tmpl_csr%ROWTYPE;
598 
599 l_article_effective_date  DATE;
600 
601 BEGIN
602 
603     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
604       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_terms_template');
605       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
606       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
607       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
608       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
609       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_template_id : '||p_template_id);
610       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_tmpl_name : '||p_tmpl_name);
611       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_intent : '||p_intent);
612       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_start_date : '||p_start_date);
613       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_end_date : '||p_end_date);
614       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_print_Template_Id : '||p_print_Template_Id);
615       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_global_flag : '||p_global_flag);
616       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_contract_expert_enabled : '||p_contract_expert_enabled);
617       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_deliverables : '||p_copy_deliverables);
618       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_attribute_category : '||p_attribute_category);
619     END IF;
620 
621 
622     -- Standard Start of API savepoint
623     SAVEPOINT g_copy_terms_template_GRP;
624 
625     -- Standard call to check for call compatibility.
626     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
627       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
628     END IF;
629 
630     -- Initialize message list if p_init_msg_list is set to TRUE.
631     IF FND_API.to_Boolean( p_init_msg_list ) THEN
632       FND_MSG_PUB.initialize;
633     END IF;
634 
635     --  Initialize API return status to success
636     x_return_status := FND_API.G_RET_STS_SUCCESS;
637 
638     OPEN  l_get_tmpl_csr;
639     FETCH l_get_tmpl_csr INTO l_tmpl_rec;
640     CLOSE l_get_tmpl_csr;
641 
642     SELECT mo_global.get_current_org_id()
643           INTO l_template_rec.org_id from dual;
644 
645     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
646       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'110: Current Org Id : '||l_template_rec.org_id);
647       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'110: Global Org Id : '||nvl(fnd_profile.value('OKC_GLOBAL_ORG_ID'),'-99'));
648     END IF;
649 
650     -- check if copy from Global to Local Org
651     -- In that case make global_yn for Local Org template to N
652 
653     IF nvl(fnd_profile.value('OKC_GLOBAL_ORG_ID'),'-99') <> l_template_rec.org_id THEN
654        l_template_rec.global_flag := 'N';
655     ELSE
656        -- keep flag as is as this is within the same org copy
657       l_template_rec.global_flag             := p_global_flag;
658     END IF; -- check orgs
659 
660 
661     OPEN  l_check_tmpl_name_csr(l_template_rec.org_id);
662     FETCH l_check_tmpl_name_csr INTO l_dummy;
663 
664     IF l_check_tmpl_name_csr%FOUND THEN
665 
666        okc_Api.Set_Message(p_app_name     => G_APP_NAME,
667                            p_msg_name     => 'OKC_SAME_TMPL_NAME');
668        RAISE FND_API.G_EXC_ERROR ;
669 
670     END IF;
671 
672     CLOSE l_check_tmpl_name_csr;
673 
674 
675     l_template_rec.template_name           := p_tmpl_name;
676     l_template_rec.working_copy_flag       := 'N';
677     l_template_rec.parent_template_id      := NULL;
678     l_template_rec.intent                  := p_intent;
679     l_template_rec.status_code             := 'DRAFT';
680     l_template_rec.start_date              := p_start_date;
681     l_template_rec.end_date                := p_end_date;
682  --   l_template_rec.global_flag             := p_global_flag;
683     l_template_rec.contract_expert_enabled := p_contract_expert_enabled;
684 	l_template_rec.cls_enabled           := p_cls_enabled;
685     l_template_rec.xprt_clause_mandatory_flag := p_xprt_clause_mandatory_flag;
686     l_template_rec.xprt_scn_code           := p_xprt_scn_code;
687     l_template_rec.instruction_text        := p_instruction_text;
688     l_template_rec.description             := p_description;
689     l_template_rec.print_Template_Id       := p_print_Template_Id;
690     l_template_rec.tmpl_numbering_scheme   := l_tmpl_rec.tmpl_numbering_scheme;
691     l_template_rec.attribute_category      := p_attribute_category;
692     l_template_rec.attribute1              := p_attribute1;
693     l_template_rec.attribute2              := p_attribute2;
694     l_template_rec.attribute3              := p_attribute3;
695     l_template_rec.attribute4              := p_attribute4;
696     l_template_rec.attribute5              := p_attribute5;
697     l_template_rec.attribute6              := p_attribute6;
698     l_template_rec.attribute7              := p_attribute7;
699     l_template_rec.attribute8              := p_attribute8;
700     l_template_rec.attribute9              := p_attribute9;
701     l_template_rec.attribute10             := p_attribute10;
702     l_template_rec.attribute11             := p_attribute11;
703     l_template_rec.attribute12             := p_attribute12;
704     l_template_rec.attribute13             := p_attribute13;
705     l_template_rec.attribute14             := p_attribute14;
706     l_template_rec.attribute15             := p_attribute15;
707 --MLS for templates
708     l_template_rec.language                := p_language;
709 
710 
711     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
712         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
713     END IF;
714 
715 /*
716    New Business Rules for p_article_effective_date in template to template copy
717 */
718     IF NVL(p_end_date,sysdate) >= sysdate  THEN
719        IF p_start_date > sysdate THEN
720           l_article_effective_date := p_start_date;
721        ELSE
722           l_article_effective_date := sysdate;
723        END IF;
724     ELSE
725        l_article_effective_date := p_end_date;
726     END IF;
727 
728     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
729         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: l_article_effective_date : '||l_article_effective_date);
730     END IF;
731 
732 
733     OKC_TERMS_COPY_PVT.copy_tc(
734                                   p_api_version            => 1,
735                                   p_init_msg_list          => FND_API.G_FALSE,
736                                   p_commit                 => FND_API.G_FALSE,
737                                   p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
738                                   p_source_doc_id          => p_template_id,
739                                   p_target_doc_type        => l_document_type,
740                                   p_target_doc_id          => x_template_id,
741                                   p_keep_version           => 'N',
742                                   p_article_effective_date => l_article_effective_date,
743                                   p_target_template_rec    => l_template_rec,
744                                   x_return_status          => x_return_status,
745                                   x_msg_data               => x_msg_data,
746                                   x_msg_count              => x_msg_count);
747    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
748        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Finished OKC_TERMS_COPY_PVT.copy_tc, return status : '||x_return_status);
749    END IF;
750 
751    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
752            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
753    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
754            RAISE FND_API.G_EXC_ERROR ;
755    END IF;
756 -----------------------------------
757   /* Fix for the Bug# 4113678, check whether if the deliverables exist before copying deliverables */
758 
759    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
760         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling okc_terms_util_grp.Is_Deliverable_Exist');
761    END IF;
762 
763   l_deliverables_exist :=  okc_terms_util_grp.Is_Deliverable_Exist(
764          p_api_version      => 1,
765          p_init_msg_list    =>  FND_API.G_FALSE,
766          x_return_status    => x_return_status,
767          x_msg_data         => x_msg_data,
768          x_msg_count        => x_msg_count,
769          p_doc_type         => 'TEMPLATE',
770          p_doc_id           => p_template_id);
771 
772    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
773        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'700: Finished okc_terms_util_grp.Is_Deliverable_Exist, return status : '||x_return_status);
774    END IF;
775 
776   l_deliverables_exist := UPPER(nvl(l_deliverables_exist,'NONE'));
777 
778    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
779         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'700: l_deliverables_exist: ' || l_deliverables_exist);
780    END IF;
781 
782   IF ( p_copy_deliverables='Y' AND l_deliverables_exist <> 'NONE') THEN
783 
784      /*  Call Deliverable API to copy Deliverables */
785 
786             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
787                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables.  ');
788             END IF;
789 
790 
791             OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
792             p_api_version            => 1,
793             p_init_msg_list          => FND_API.G_FALSE,
794             p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
795             p_source_doc_id          => p_template_id,
796             p_target_doc_type        => l_document_type,
797             p_target_doc_id          => x_template_id,
798             p_internal_party_id      => l_template_rec.org_id, -- bug#4335441
799             p_internal_contact_id    => Null,
800             p_external_party_id      => Null,
801             p_external_contact_id    => Null,
802             p_target_doc_number     => x_template_id, -- bug#3722131
803             p_copy_del_attachments_yn     => 'Y',
804             x_msg_data            => x_msg_data,
805             x_msg_count           => x_msg_count,
806             x_return_status       => x_return_status );
807 
808             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
809             FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables ');
810             FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables x_return_status : '||x_return_status);
811             END IF;
812 
813             IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
814             RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
815             ELSIF (x_return_status = G_RET_STS_ERROR) THEN
816             RAISE FND_API.G_EXC_ERROR ;
817             END IF;
818 
819  END IF;
820 
821 
822 
823 
824 -----------------------------------
825    IF FND_API.To_Boolean( p_commit ) THEN
826       COMMIT WORK;
827    END IF;
828 
829 -- Standard call to get message count and if count is 1, get message info.
830    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
831 
832    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
833         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_terms_template');
834    END IF;
835 
836 EXCEPTION
837 
838 WHEN FND_API.G_EXC_ERROR THEN
839 
840  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
841      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_terms_template: OKC_API.G_EXCEPTION_ERROR Exception');
842  END IF;
843 
844  IF l_get_tmpl_csr%ISOPEN THEN
845     CLOSE l_get_tmpl_csr;
846  END IF;
847 
848  IF l_check_tmpl_name_csr%ISOPEN THEN
849     CLOSE l_check_tmpl_name_csr;
850  END IF;
851 
852  ROLLBACK TO g_copy_terms_template_grp;
853  x_return_status := G_RET_STS_ERROR ;
854  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
855 
856  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
857  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
858       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_terms_template: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
859  END IF;
860 
861  IF l_get_tmpl_csr%ISOPEN THEN
862     CLOSE l_get_tmpl_csr;
863  END IF;
864 
865  IF l_check_tmpl_name_csr%ISOPEN THEN
866     CLOSE l_check_tmpl_name_csr;
867  END IF;
868 
869  ROLLBACK TO g_copy_terms_template_grp;
870  x_return_status := G_RET_STS_UNEXP_ERROR ;
871  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
872 
873 WHEN OTHERS THEN
874 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
875    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_terms_template because of EXCEPTION: '||sqlerrm);
876 END IF;
877 
878 IF l_get_tmpl_csr%ISOPEN THEN
879    CLOSE l_get_tmpl_csr;
880 END IF;
881 
882  IF l_check_tmpl_name_csr%ISOPEN THEN
883     CLOSE l_check_tmpl_name_csr;
884  END IF;
885 
886 ROLLBACK TO g_copy_terms_template_grp;
887 x_return_status := G_RET_STS_UNEXP_ERROR ;
888 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
889      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
890 END IF;
891 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
892 END copy_terms_template;
893 
894 /*
895 --To be used when instantiating a term on a document.
896 */
897 Procedure copy_terms   (
898                         p_api_version             IN    Number,
899                         p_init_msg_list               IN        Varchar2 ,
900                         p_commit                      IN        Varchar2 ,
901                         p_template_id             IN    Number,
902                         p_target_doc_type             IN        Varchar2,
903                         p_target_doc_id           IN    Number,
904                         p_article_effective_date  IN    Date ,
905                         p_retain_deliverable      IN    Varchar2 ,
906                         p_target_contractual_doctype IN Varchar2,
907                         p_target_response_doctype    IN Varchar2,
908                         p_internal_party_id              IN     Number ,
909                         p_internal_contact_id        IN Number ,
910                         p_external_party_id              IN     Number ,
911                         p_external_party_site_id                 IN     Number ,
912                         p_external_contact_id        IN Number ,
913                         p_validate_commit                IN     Varchar2 ,
914                         p_validation_string          IN Varchar2,
915                         p_document_number                IN     Varchar2 ,
916                         x_return_status              OUT        NOCOPY Varchar2,
917                         x_msg_data                       OUT    NOCOPY Varchar2,
918                         x_msg_count                      OUT    NOCOPY Number,
919                         p_retain_clauses      IN    Varchar2 ,                --kkolukul: clm changes
920 			p_contract_admin_id   IN NUMBER := NULL,
921 			p_legal_contact_id   IN NUMBER := NULL
922                         ) IS
923 
924 l_api_version                CONSTANT NUMBER := 1;
925 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_terms';
926 l_ok_to_commit               VARCHAR2(1);
927 l_document_id              OKC_TEMPLATE_USAGES.DOCUMENT_ID%TYPE := p_target_doc_id;
928 l_document_type            OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE := p_target_doc_type;
929 l_template_exists          VARCHAR2(1);
930 
931 CURSOR target_response_cur IS
932 SELECT TARGET_RESPONSE_DOC_TYPE
933 FROM   okc_bus_doc_types_b
934 WHERE  document_type = p_target_doc_type
935 AND    document_type_class = 'SOURCING';
936 
937 l_target_response_doctype  okc_bus_doc_types_b.TARGET_RESPONSE_DOC_TYPE%TYPE;
938 
939 CURSOR l_get_num_scheme_id(p_doc_type IN VARCHAR2, p_doc_id IN NUMBER) IS
940 SELECT doc_numbering_scheme
941 FROM okc_template_usages
942 WHERE document_type = p_doc_type
943   AND document_id = p_doc_id;
944 
945 l_num_scheme_id    NUMBER:=0;
946 -- bug#4113619
947 CURSOR enable_deliverables_cur IS
948 SELECT enable_deliverables_yn
949 FROM   okc_bus_doc_types_b
950 WHERE  document_type = p_target_doc_type;
951 l_enable_deliverables  VARCHAR2(1);
952 
953 BEGIN
954 
955     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
956       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_terms');
957       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
958       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
959       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
960       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
961       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_template_id : '||p_template_id);
962       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
963       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
964       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_article_effective_date : '||p_article_effective_date);
965       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_retain_deliverable : '||p_retain_deliverable);
966       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_contractual_doctype : '||p_target_contractual_doctype);
967       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_response_doctype : '||p_target_response_doctype);
968       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_validate_commit : '||p_validate_commit);
969       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_validation_string : '||p_validation_string);
970       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_document_number : '||p_document_number);
971     END IF;
972 
973 
974     -- Standard Start of API savepoint
975     SAVEPOINT g_copy_terms_GRP;
976 
977     -- Standard call to check for call compatibility.
978     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
979       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
980     END IF;
981 
982     -- Initialize message list if p_init_msg_list is set to TRUE.
983     IF FND_API.to_Boolean( p_init_msg_list ) THEN
984       FND_MSG_PUB.initialize;
985     END IF;
986 
987     IF FND_API.To_Boolean( p_validate_commit )  AND
988        NOT FND_API.To_Boolean(OKC_TERMS_UTIL_GRP.ok_to_commit (
989                                          p_api_version => l_api_version,
990                                          p_init_msg_list => FND_API.G_FALSE,
991                                          p_doc_type      => p_target_doc_type,
992                                          p_doc_id        => p_target_doc_id,
993                                          p_validation_string =>p_validation_string,
994                                          p_tmpl_change   => 'Y',
995                                          x_return_status => x_return_status,
996                                          x_msg_data      => x_msg_data,
997                                          x_msg_count     => x_msg_count)                  ) THEN
998 
999              IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1000                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'700: Issue with document header Record.Cannot commit');
1001              END IF;
1002              RAISE FND_API.G_EXC_ERROR ;
1003     END IF;
1004 
1005     /*Clm Changes : Donot apply multiple templates if the template is already applied on the doc. */
1006     IF (p_retain_clauses = 'Y') THEN
1007       l_template_exists := OKC_CLM_PKG.check_dup_templates(p_document_type  => p_target_doc_type,
1008                                p_document_id        =>p_target_doc_id,
1009                                p_template_id        => p_template_id);
1010 
1011       IF l_template_exists = 'Y' THEN
1012        okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1013                            p_msg_name     => 'OKC_SAME_TMPL_NAME');
1014        RAISE FND_API.G_EXC_ERROR ;
1015       END IF;
1016     END IF;
1017    -- end CLM Changes
1018 
1019     --  Initialize API return status to success
1020     x_return_status := FND_API.G_RET_STS_SUCCESS;
1021 
1022     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1023         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
1024     END IF;
1025 
1026     OKC_TERMS_COPY_PVT.copy_tc(
1027                                   p_api_version            => 1,
1028                                   p_init_msg_list          => FND_API.G_FALSE,
1029                                   p_commit                 => FND_API.G_FALSE,
1030                                   p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
1031                                   p_source_doc_id          => p_template_id,
1032                                   p_target_doc_type        => l_document_type,
1033                                   p_target_doc_id          => l_document_id,
1034                                   p_document_number        => p_document_number,
1035                                   p_keep_version           => 'N',
1036                                   p_article_effective_date => p_article_effective_date,
1037                                   p_target_template_rec    => G_TEMPLATE_MISS_REC,
1038                                   p_retain_deliverable     => p_retain_deliverable,
1039                                   x_return_status          => x_return_status,
1040                                   x_msg_data               => x_msg_data,
1041                                   x_msg_count              => x_msg_count,
1042 						    p_contract_admin_id      => p_contract_admin_id,
1043 						    p_legal_contact_id       => p_legal_contact_id,
1044                                   p_retain_clauses         => p_retain_clauses);
1045 
1046    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1047        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: returned from OKC_TERMS_COPY_PVT.copy_tc, return status : '||x_return_status);
1048    END IF;
1049 
1050    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1051            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1052    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1053            RAISE FND_API.G_EXC_ERROR ;
1054    END IF;
1055 
1056 
1057 ----------------------------------
1058      /*  Call Deliverable API to copy Deliverables */
1059             -- check if deliverables are enables for this document bug#4113619
1060             OPEN  enable_deliverables_cur;
1061             FETCH enable_deliverables_cur into l_enable_deliverables;
1062             CLOSE enable_deliverables_cur;
1063 
1064         IF l_enable_deliverables = 'Y' THEN
1065 
1066             -- get the target response doctype if the target is a
1067             -- Sourcing document (RFQ,RFI,AUCTION)Bug#3270742
1068             OPEN target_response_cur;
1069             FETCH target_response_cur INTO l_target_response_doctype;
1070             CLOSE target_response_cur;
1071 
1072             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1073                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables ');
1074                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:l_target_response_doctype: '||l_target_response_doctype);
1075             END IF;
1076 
1077 
1078             OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
1079             p_api_version         => 1,
1080             p_init_msg_list       => FND_API.G_FALSE,
1081             p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
1082             p_source_doc_id          => p_template_id,
1083             p_target_doc_type        => l_document_type,
1084             p_target_doc_id          => l_document_id,
1085             p_target_doc_number      => p_document_number,
1086             p_internal_party_id      => p_internal_party_id,
1087             p_internal_contact_id    => p_internal_contact_id,
1088             p_external_party_id      => p_external_party_id,
1089             p_external_party_site_id      => p_external_party_site_id,
1090             p_external_contact_id    => p_external_contact_id,
1091             p_target_contractual_doctype    => p_target_contractual_doctype,
1092             p_target_response_doctype       => l_target_response_doctype,
1093             p_copy_del_attachments_yn       => 'Y',
1094             x_msg_data            => x_msg_data,
1095             x_msg_count           => x_msg_count,
1096             x_return_status       => x_return_status );
1097 
1098           IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1099           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables ');
1100           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables x_return_status : '||x_return_status);
1101           END IF;
1102 
1103           IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1104           RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1105           ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1106           RAISE FND_API.G_EXC_ERROR ;
1107           END IF;
1108 
1109         END IF; -- l_enable_deliverables = 'Y' THEN
1110 
1111 -- Bug 3674173 : Call renumber after applying template on a document
1112 
1113       OPEN l_get_num_scheme_id(p_doc_type => l_document_type, p_doc_id => l_document_id) ;
1114          FETCH l_get_num_scheme_id INTO l_num_scheme_id;
1115       CLOSE l_get_num_scheme_id;
1116 
1117    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1118    FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: l_num_scheme_id : '||l_num_scheme_id);
1119    END IF;
1120 
1121 --kkolukul: clm changes: to re-apply empty numbering scheme
1122 IF (NVL(l_num_scheme_id,0) <> 0 OR p_retain_clauses = 'Y') THEN
1123 
1124     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1125       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Calling apply_numbering_scheme for num_scheme_id : '||l_num_scheme_id);
1126     END IF;
1127 
1128           OKC_NUMBER_SCHEME_GRP.apply_numbering_scheme(
1129            p_api_version        => p_api_version,
1130            p_init_msg_list      => FND_API.G_FALSE,
1131            x_return_status      => x_return_status,
1132            x_msg_count          => x_msg_count,
1133            x_msg_data           => x_msg_data,
1134            p_validate_commit    => FND_API.G_FALSE,
1135            p_validation_string  => p_validation_string,
1136            p_commit             => FND_API.G_FALSE,
1137            p_doc_type           => l_document_type,
1138            p_doc_id             => l_document_id,
1139            p_num_scheme_id      => l_num_scheme_id
1140          );
1141 
1142 
1143    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1144        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: returned from OKC_NUMBER_SCHEME_GRP.apply_numbering_scheme , return status : '||x_return_status);
1145    END IF;
1146 
1147           IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1148                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1149           ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1150                   RAISE FND_API.G_EXC_ERROR ;
1151           END IF;
1152 
1153 
1154 END IF; --l_num_scheme_id is not 0
1155 
1156 
1157 
1158 -- End Bug 3674173
1159 
1160 
1161 ------------------------------------
1162    IF FND_API.To_Boolean( p_commit ) THEN
1163       COMMIT WORK;
1164    END IF;
1165 
1166 -- Standard call to get message count and if count is 1, get message info.
1167    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1168 
1169    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1170         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_terms');
1171    END IF;
1172 
1173 
1174 
1175 EXCEPTION
1176 
1177 WHEN FND_API.G_EXC_ERROR THEN
1178 
1179  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1180      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_terms: OKC_API.G_EXCEPTION_ERROR Exception');
1181  END IF;
1182 
1183  ROLLBACK TO g_copy_terms_grp;
1184  x_return_status := G_RET_STS_ERROR ;
1185  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1186 
1187  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1188  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1189       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_terms: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1190  END IF;
1191 
1192 
1193  ROLLBACK TO g_copy_terms_grp;
1194  x_return_status := G_RET_STS_UNEXP_ERROR ;
1195  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1196 
1197 WHEN OTHERS THEN
1198 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1199    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_terms because of EXCEPTION: '||sqlerrm);
1200 END IF;
1201 
1202 ROLLBACK TO g_copy_terms_grp;
1203 x_return_status := G_RET_STS_UNEXP_ERROR ;
1204 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1205      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1206 END IF;
1207 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1208 
1209 
1210 END copy_terms;
1211 
1212 /* To be used to create Revision of a Template */
1213 
1214 Procedure create_template_revision  (
1215                         p_api_version       IN       Number,
1216                         p_init_msg_list     IN       Varchar2 default FND_API.G_FALSE,
1217                         p_commit            IN       Varchar2 default FND_API.G_FALSE,
1218                         p_template_id       IN       Number,
1219                         p_copy_deliverables IN      Varchar2 default 'Y',
1220                         x_template_id       OUT NOCOPY  Number,
1221                         x_return_status     OUT        NOCOPY Varchar2,
1222                         x_msg_data          OUT        NOCOPY Varchar2,
1223                         x_msg_count         OUT        NOCOPY Number) IS
1224 
1225 l_api_version                CONSTANT NUMBER := 1;
1226 l_api_name                   CONSTANT VARCHAR2(30) := 'create_template_revision';
1227 l_template_rec               OKC_TERMS_TEMPLATES_PVT.template_rec_type;
1228 l_document_type            OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE := OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE;
1229 l_copy_deliverables          VARCHAR2(1);
1230 
1231 CURSOR l_get_tmpl_csr IS
1232 SELECT * FROM OKC_TERMS_TEMPLATES_ALL
1233 WHERE template_id=p_template_id;
1234 
1235 l_tmpl_rec l_get_tmpl_csr%ROWTYPE;
1236 BEGIN
1237 
1238     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1239       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.create_template_revision');
1240       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1241       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1242       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1243       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1244       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_template_id : '||p_template_id);
1245       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_deliverables : '||p_copy_deliverables);
1246     END IF;
1247 
1248 
1249     -- Standard Start of API savepoint
1250     SAVEPOINT g_create_template_revision_GRP;
1251 
1252     -- Standard call to check for call compatibility.
1253     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1254       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1255     END IF;
1256 
1257     -- Initialize message list if p_init_msg_list is set to TRUE.
1258     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1259       FND_MSG_PUB.initialize;
1260     END IF;
1261 
1262     --  Initialize API return status to success
1263     x_return_status := FND_API.G_RET_STS_SUCCESS;
1264 
1265     OPEN  l_get_tmpl_csr;
1266     FETCH l_get_tmpl_csr INTO l_tmpl_rec;
1267     CLOSE l_get_tmpl_csr;
1268 
1269     l_template_rec.template_name          := l_tmpl_rec.template_name;
1270     l_template_rec.working_copy_flag      := 'Y';
1271     l_template_rec.parent_template_id     := p_template_id;
1272     l_template_rec.intent                 := l_tmpl_rec.intent;
1273     l_template_rec.status_code            := 'REVISION';
1274     l_template_rec.start_date             := l_tmpl_rec.start_date;
1275     l_template_rec.end_date               := l_tmpl_rec.end_date;
1276     l_template_rec.global_flag            := l_tmpl_rec.global_flag;
1277     l_template_rec.print_template_id      := l_tmpl_rec.print_template_id;
1278     l_template_rec.contract_expert_enabled:= l_tmpl_rec.contract_expert_enabled;
1279 	l_template_rec.cls_enabled            := l_tmpl_rec.cls_enabled;
1280     l_template_rec.instruction_text       := l_tmpl_rec.instruction_text;
1281     l_template_rec.description            := l_tmpl_rec.description;
1282     l_template_rec.org_id                 := l_tmpl_rec.org_id;
1283     l_template_rec.tmpl_numbering_scheme  := l_tmpl_rec.tmpl_numbering_scheme;
1284     l_template_rec.template_model_id      := l_tmpl_rec.template_model_id;
1285     l_template_rec.orig_system_reference_code:=l_tmpl_rec.orig_system_reference_code;
1286     l_template_rec.orig_system_reference_id1:=l_tmpl_rec.orig_system_reference_id1;
1287     l_template_rec.orig_system_reference_id2:=l_tmpl_rec.orig_system_reference_id2;
1288     l_template_rec.attribute_category     := l_tmpl_rec.attribute_category;
1289     l_template_rec.attribute1             := l_tmpl_rec.attribute1;
1290     l_template_rec.attribute2             := l_tmpl_rec.attribute2;
1291     l_template_rec.attribute3             := l_tmpl_rec.attribute3;
1292     l_template_rec.attribute4             := l_tmpl_rec.attribute4;
1293     l_template_rec.attribute5             := l_tmpl_rec.attribute5;
1294     l_template_rec.attribute6             := l_tmpl_rec.attribute6;
1295     l_template_rec.attribute7             := l_tmpl_rec.attribute7;
1296     l_template_rec.attribute8             := l_tmpl_rec.attribute8;
1297     l_template_rec.attribute9             := l_tmpl_rec.attribute9;
1298     l_template_rec.attribute10            := l_tmpl_rec.attribute10;
1299     l_template_rec.attribute11            := l_tmpl_rec.attribute11;
1300     l_template_rec.attribute12            := l_tmpl_rec.attribute12;
1301     l_template_rec.attribute13            := l_tmpl_rec.attribute13;
1302     l_template_rec.attribute14            := l_tmpl_rec.attribute14;
1303     l_template_rec.attribute15            := l_tmpl_rec.attribute15;
1304     l_template_rec.cz_export_wf_key       := l_tmpl_rec.cz_export_wf_key;
1305     l_template_rec.xprt_clause_mandatory_flag := l_tmpl_rec.xprt_clause_mandatory_flag;
1306     l_template_rec.xprt_scn_code           := l_tmpl_rec.xprt_scn_code;
1307     l_template_rec.approval_wf_key         := l_tmpl_rec.approval_wf_key;
1308 --MLS for templates
1309     l_template_rec.language                := l_tmpl_rec.language;
1310     l_template_rec.translated_from_tmpl_id := l_tmpl_rec.translated_from_tmpl_id;
1311 
1312     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1313         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
1314     END IF;
1315 
1316     OKC_TERMS_COPY_PVT.copy_tc(
1317                                   p_api_version            => 1,
1318                                   p_init_msg_list          => FND_API.G_FALSE,
1319                                   p_commit                 => FND_API.G_FALSE,
1320                                   p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
1321                                   p_source_doc_id          => p_template_id,
1322                                   p_target_doc_type        => l_document_type,
1323                                   p_target_doc_id          => x_template_id,
1324                                   p_keep_version           => 'N',
1325                                   p_article_effective_date => l_tmpl_rec.start_date,
1326                                   p_target_template_rec    => l_template_rec,
1327                                   x_return_status          => x_return_status,
1328                                   x_msg_data               => x_msg_data,
1329                                   x_msg_count              => x_msg_count);
1330    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1331        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: returned from OKC_TERMS_COPY_PVT.copy_tc, return status : '||x_return_status);
1332    END IF;
1333 
1334    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1335            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1336    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1337            RAISE FND_API.G_EXC_ERROR ;
1338    END IF;
1339 ----------------------------------------------
1340    -- bug#4083525 do not invoke deliverables API for sell side
1341    -- to be removed when sell side deliverables are enabled.
1342    IF l_template_rec.intent = 'S' THEN
1343       l_copy_deliverables := 'N';
1344    ELSE
1345       l_copy_deliverables := p_copy_deliverables;
1346    END IF;
1347 
1348    IF l_copy_deliverables='Y' THEN
1349 
1350         /*  Call Deliverable API to copy Deliverables */
1351 
1352        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1353            FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision.  ');
1354        END IF;
1355     -- bug#4075168 New API for Template Revision replacing copy_deliverables
1356 
1357        OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision(
1358        p_api_version         => 1,
1359        p_init_msg_list       => FND_API.G_FALSE,
1360        p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
1361        p_source_doc_id          => p_template_id,
1362        p_target_doc_type        => l_document_type,
1363        p_target_doc_id          => x_template_id,
1364        p_target_doc_number     => l_tmpl_rec.template_name,
1365        p_copy_del_attachments_yn     => 'Y',
1366        x_msg_data            => x_msg_data,
1367        x_msg_count           => x_msg_count,
1368        x_return_status       => x_return_status );
1369 
1370 
1371        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1372        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision');
1373        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision x_return_status : '||x_return_status);
1374        END IF;
1375 
1376        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1377        RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1378        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1379        RAISE FND_API.G_EXC_ERROR ;
1380        END IF;
1381 
1382    END IF;--  l_copy_deliverables='Y'
1383 
1384 -----------------------------------------------
1385    IF FND_API.To_Boolean( p_commit ) THEN
1386       COMMIT WORK;
1387    END IF;
1388 
1389 -- Standard call to get message count and if count is 1, get message info.
1390    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1391 
1392    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1393         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving create_template_revision');
1394    END IF;
1395 
1396 EXCEPTION
1397 
1398 WHEN FND_API.G_EXC_ERROR THEN
1399 
1400  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1401      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving create_template_revision: OKC_API.G_EXCEPTION_ERROR Exception');
1402  END IF;
1403 
1404  IF l_get_tmpl_csr%ISOPEN THEN
1405     CLOSE l_get_tmpl_csr;
1406  END IF;
1407 
1408  ROLLBACK TO g_create_template_revision_grp;
1409  x_return_status := G_RET_STS_ERROR ;
1410  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1411 
1412  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1413  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1414       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving create_template_revision: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1415  END IF;
1416 
1417  IF l_get_tmpl_csr%ISOPEN THEN
1418     CLOSE l_get_tmpl_csr;
1419  END IF;
1420 
1421  ROLLBACK TO g_create_template_revision_grp;
1422  x_return_status := G_RET_STS_UNEXP_ERROR ;
1423  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1424 
1425 WHEN OTHERS THEN
1426 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1427    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving create_template_revision because of EXCEPTION: '||sqlerrm);
1428 END IF;
1429 
1430 
1431  IF l_get_tmpl_csr%ISOPEN THEN
1432     CLOSE l_get_tmpl_csr;
1433  END IF;
1434 
1435 ROLLBACK TO g_create_template_revision_grp;
1436 x_return_status := G_RET_STS_UNEXP_ERROR ;
1437 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1438      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1439 END IF;
1440 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1441 END create_template_revision;
1442 
1443 /*
1444 -- To be used while copying a document from archive to make a new document.
1445 -- This functionality is only supported in OM.
1446 */
1447 
1448 Procedure copy_archived_doc   (
1449                         p_api_version             IN    Number,
1450                         p_init_msg_list           IN    Varchar2,
1451                         p_commit                  IN    Varchar2,
1452                         p_source_doc_type         IN    Varchar2,
1453                         p_source_doc_id           IN    Number,
1454                         p_source_version_number   IN    Number,
1455                         p_target_doc_type         IN    Varchar2,
1456                         p_target_doc_id           IN    Number,
1457                         p_document_number         IN    Varchar2,
1458                         p_allow_duplicate_terms   IN    Varchar2,
1459                         x_return_status           OUT   NOCOPY Varchar2,
1460                         x_msg_data                OUT   NOCOPY Varchar2,
1461                         x_msg_count               OUT   NOCOPY Number
1462                         ) IS
1463 l_api_version                CONSTANT NUMBER := 1;
1464 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_archived_doc';
1465 BEGIN
1466 
1467     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1468       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_archived_doc');
1469       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1470       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1471       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1472       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1473       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
1474       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
1475       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_version_number : '||p_source_version_number);
1476       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
1477       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
1478       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_document_number : '||p_document_number);
1479       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_allow_duplicate_terms : '||p_allow_duplicate_terms);
1480     END IF;
1481 
1482 
1483     -- Standard Start of API savepoint
1484     SAVEPOINT g_copy_archived_doc_GRP;
1485 
1486     -- Standard call to check for call compatibility.
1487     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1488       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1489     END IF;
1490 
1491     -- Initialize message list if p_init_msg_list is set to TRUE.
1492     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1493       FND_MSG_PUB.initialize;
1494     END IF;
1495 
1496     --  Initialize API return status to success
1497     x_return_status := FND_API.G_RET_STS_SUCCESS;
1498 
1499 
1500     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1501         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_archived_doc');
1502     END IF;
1503 
1504     OKC_TERMS_COPY_PVT.copy_archived_doc(
1505                                   p_api_version            => 1,
1506                                   p_init_msg_list          => FND_API.G_FALSE,
1507                                   p_commit                 => FND_API.G_FALSE,
1508                                   p_source_doc_type        => p_source_doc_type,
1509                                   p_source_doc_id          => p_source_doc_id,
1510                                   p_target_doc_type        => p_target_doc_type,
1511                                   p_target_doc_id          => p_target_doc_id,
1512                                   p_source_version_number  =>p_source_version_number,
1513                                   p_document_number        => p_document_number,
1514                                   p_allow_duplicates       => p_allow_duplicate_terms,
1515                                   x_return_status          => x_return_status,
1516                                   x_msg_data               => x_msg_data,
1517                                   x_msg_count              => x_msg_count);
1518    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1519        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: returned from OKC_TERMS_COPY_PVT.copy_archived_doc return status : '||x_return_status);
1520    END IF;
1521 
1522    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1523            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1524    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1525            RAISE FND_API.G_EXC_ERROR ;
1526    END IF;
1527 
1528    IF FND_API.To_Boolean( p_commit ) THEN
1529       COMMIT WORK;
1530    END IF;
1531 
1532 -- Standard call to get message count and if count is 1, get message info.
1533    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1534 
1535    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1536         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_archived_doc');
1537    END IF;
1538 
1539 EXCEPTION
1540 
1541 WHEN FND_API.G_EXC_ERROR THEN
1542 
1543  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1544      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_archived_doc: OKC_API.G_EXCEPTION_ERROR Exception');
1545  END IF;
1546 
1547  ROLLBACK TO g_copy_archived_doc_grp;
1548  x_return_status := G_RET_STS_ERROR ;
1549  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1550 
1551  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1552  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1553       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_archived_doc: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1554  END IF;
1555 
1556  ROLLBACK TO g_copy_archived_doc_grp;
1557  x_return_status := G_RET_STS_UNEXP_ERROR ;
1558  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1559 
1560 WHEN OTHERS THEN
1561 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1562    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_archived_doc because of EXCEPTION: '||sqlerrm);
1563 END IF;
1564 
1565 ROLLBACK TO g_copy_archived_doc_grp;
1566 x_return_status := G_RET_STS_UNEXP_ERROR ;
1567 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1568      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1569 END IF;
1570 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1571 END copy_archived_doc;
1572 
1573 /*************************************************************
1574 07-APR-2004 pnayani: bug#3524864 added copy_response_doc API              |
1575 This API is used for copying terms, deliverables and document attachments from
1576 one response doc to another. Initially coded to support proxy bidding process in sourcing.
1577 p_source_doc_type               - source document type,
1578 p_source_doc_id             - source document id,
1579 p_target_doc_type               - target document type,
1580 p_target_doc_id             - target document id,
1581 p_target_doc_number             - target document number,
1582 p_keep_version              - passed as 'Y'
1583                             - 'N' is not supported as this API is called to copy terms from
1584                             - one doc to another keeping the original reference same as the source
1585 p_article_effective_date    - article effective date,
1586 p_copy_doc_attachments      - flag indicates if doc attachments should be copied, valid values Y/N,
1587 p_allow_duplicate_terms     - flag with valid values Y/N,
1588 p_copy_attachments_by_ref   - flag indicates if document attachments should be
1589                             - physically copied or referenced, valid values Y/N,
1590 
1591 *************************************************************/
1592 
1593 Procedure copy_response_doc     (
1594                         p_api_version             IN    Number,
1595                         p_init_msg_list           IN    Varchar2 ,
1596                         p_commit                  IN    Varchar2 ,
1597                         p_source_doc_type         IN    Varchar2,
1598                         p_source_doc_id           IN    Number,
1599                         p_target_doc_type         IN OUT NOCOPY Varchar2,
1600                         p_target_doc_id           IN OUT NOCOPY Number,
1601                         p_target_doc_number       IN    Varchar2 ,
1602                         p_keep_version            IN    Varchar2 ,
1603                         p_article_effective_date  IN    Date ,
1604                         p_copy_doc_attachments    IN    Varchar2 ,
1605                         p_allow_duplicate_terms   IN    Varchar2,
1606                         p_copy_attachments_by_ref IN    Varchar2,
1607                         x_return_status           OUT   NOCOPY VARCHAR2,
1608                         x_msg_data                OUT   NOCOPY VARCHAR2,
1609                         x_msg_count               OUT   NOCOPY Number
1610                         )
1611 IS
1612 l_api_version                CONSTANT NUMBER := 1;
1613 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_response_doc';
1614 
1615 
1616 
1617 BEGIN
1618 
1619     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1620       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_response_doc');
1621       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1622       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1623       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1624       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1625       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
1626       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
1627       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
1628       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
1629       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_keep_version : '||p_keep_version);
1630       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_article_effective_date : '||p_article_effective_date);
1631       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_number : '||p_target_doc_number);
1632       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_doc_attachments : '||p_copy_doc_attachments);
1633       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_allow_duplicate_terms : '||p_allow_duplicate_terms);
1634       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_attachments_by_ref : '||p_copy_attachments_by_ref);
1635     END IF;
1636 
1637 
1638     -- Standard Start of API savepoint
1639     SAVEPOINT g_copy_doc_GRP;
1640 
1641     -- Standard call to check for call compatibility.
1642     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1643       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1644     END IF;
1645 
1646     -- Initialize message list if p_init_msg_list is set to TRUE.
1647     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1648       FND_MSG_PUB.initialize;
1649     END IF;
1650 
1651     --  Initialize API return status to success
1652     x_return_status := FND_API.G_RET_STS_SUCCESS;
1653 
1654 
1655     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1656         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
1657     END IF;
1658     -- copy contract terms
1659     OKC_TERMS_COPY_PVT.copy_tc(
1660                                   p_api_version            => 1,
1661                                   p_init_msg_list          => FND_API.G_FALSE,
1662                                   p_commit                     => FND_API.G_FALSE,
1663                                   p_source_doc_type        => p_source_doc_type,
1664                                   p_source_doc_id          => p_source_doc_id ,
1665                                   p_target_doc_type        => p_target_doc_type,
1666                                   p_target_doc_id          => p_target_doc_id,
1667                                   p_keep_version           => 'Y',
1668                                   p_article_effective_date => p_article_effective_date,
1669                                   p_target_template_rec    => G_TEMPLATE_MISS_REC,
1670                                   p_document_number        => p_target_doc_number,
1671                                   p_allow_duplicates       => p_allow_duplicate_terms,
1672                                   p_keep_orig_ref          => 'Y',
1673                                   x_return_status              => x_return_status,
1674                                   x_msg_data               => x_msg_data,
1675                                   x_msg_count              => x_msg_count);
1676    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1677        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Finished OKC_TERMS_COPY_PVT.copy_tc, return status'||x_return_status);
1678    END IF;
1679 
1680    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1681            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1682    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1683            RAISE FND_API.G_EXC_ERROR ;
1684    END IF;
1685 -----------------------------------------------------
1686 
1687 
1688      /*  Call Deliverable API to copy Deliverables */
1689 
1690             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1691                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables.');
1692                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:source  busdoc id: '||to_char(p_source_doc_id));
1693                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc id: '||to_char(p_target_doc_id));
1694                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc type: '||p_target_doc_type);
1695             END IF;
1696 
1697 
1698             OKC_DELIVERABLE_PROCESS_PVT.copy_response_deliverables (
1699             p_api_version         => 1,
1700             p_init_msg_list       => FND_API.G_FALSE,
1701             p_source_doc_id       => p_source_doc_id,
1702             p_source_doc_type     => p_source_doc_type,
1703             p_target_doc_id       => p_target_doc_id,
1704             p_target_doc_type     => p_target_doc_type,
1705             p_target_doc_number   => p_target_doc_number,
1706             x_msg_data            => x_msg_data,
1707             x_msg_count           => x_msg_count,
1708             x_return_status       => x_return_status );
1709 
1710             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1711                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables  ');
1712                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100: OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables x_return_status :  '||x_return_status);
1713             END IF;
1714 
1715             IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1716                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1717             ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1718                 RAISE FND_API.G_EXC_ERROR ;
1719             END IF;
1720 
1721 -- copy doc attachments if the flag is set to Y
1722 IF p_copy_doc_attachments ='Y' THEN
1723 
1724     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1725        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1150:Entering OKC_CONTRACT_DOCS_GRP.Copy_Attachments  ');
1726     END IF;
1727 
1728     OKC_CONTRACT_DOCS_GRP.Copy_Attachments (
1729                           p_api_version  =>1,
1730                           p_init_msg_list =>FND_API.G_FALSE,
1731                           x_msg_data            => x_msg_data,
1732                           x_msg_count           => x_msg_count,
1733                           x_return_status       => x_return_status,
1734                           p_from_bus_doc_type => p_source_doc_type ,
1735                           p_from_bus_doc_id   => p_source_doc_id,
1736                           p_from_bus_doc_version => -99,
1737                           p_to_bus_doc_type    => p_target_doc_type,
1738                           p_to_bus_doc_id     => p_target_doc_id,
1739                           p_to_bus_doc_version => -99,
1740                           p_copy_by_ref => p_copy_attachments_by_ref) ;
1741 
1742        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1743           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1151:Finished OKC_CONTRACT_DOCS_GRP.Copy_Attachments ');
1744           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1151:OKC_CONTRACT_DOCS_GRP.Copy_Attachments x_return_status : '||x_return_status);
1745        END IF;
1746 
1747        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1748                RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1749        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1750                RAISE FND_API.G_EXC_ERROR ;
1751        END IF;
1752   END IF;
1753 
1754 -------------------------------------------------------------
1755 
1756    IF FND_API.To_Boolean( p_commit ) THEN
1757       COMMIT WORK;
1758    END IF;
1759 
1760 -- Standard call to get message count and if count is 1, get message info.
1761    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1762 
1763    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1764         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_response_doc');
1765    END IF;
1766 
1767 EXCEPTION
1768 
1769 WHEN FND_API.G_EXC_ERROR THEN
1770 
1771  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1772      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_response_doc: OKC_API.G_EXCEPTION_ERROR Exception');
1773  END IF;
1774 
1775  ROLLBACK TO g_copy_doc_grp;
1776  x_return_status := G_RET_STS_ERROR ;
1777  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1778 
1779  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1780  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1781       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_response_doc: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1782  END IF;
1783 
1784  ROLLBACK TO g_copy_doc_grp;
1785  x_return_status := G_RET_STS_UNEXP_ERROR ;
1786  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1787 
1788 WHEN OTHERS THEN
1789 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1790    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_response_doc because of EXCEPTION: '||sqlerrm);
1791 END IF;
1792 
1793 ROLLBACK TO g_copy_doc_grp;
1794 x_return_status := G_RET_STS_UNEXP_ERROR ;
1795 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1796      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1797 END IF;
1798 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1799 END copy_response_doc;
1800 
1801 
1802 PROCEDURE process_mod_terms (
1803                         p_api_version             IN	Number,
1804                         p_init_msg_list		        IN	Varchar2 default FND_API.G_FALSE,
1805                         p_commit	                IN	Varchar2 default fnd_api.g_false,
1806 
1807                         p_process             IN VARCHAR2,
1808 
1809                         p_source_doc_type	        IN	Varchar2,
1810                         p_source_doc_id	          IN	Number,
1811                         p_target_doc_type	        IN OUT NOCOPY Varchar2,
1812                         p_target_doc_id	          IN OUT NOCOPY Number,
1813 
1814                         p_target_document_number	        IN	Varchar2 default  Null,
1815 
1816 
1817                         x_return_status	          OUT	NOCOPY Varchar2,
1818                         x_msg_data	              OUT	NOCOPY Varchar2,
1819                         x_msg_count	              OUT	NOCOPY Number
1820                              )
1821 IS
1822 
1823 l_api_version                CONSTANT NUMBER := 1;
1824 l_api_name                   CONSTANT VARCHAR2(30) := 'process_mod_terms';
1825 
1826             l_validate_commit VARCHAR2(240);
1827 
1828             l_retain_lock_terms_yn VARCHAR2(1);
1829             l_retain_lock_xprt_yn VARCHAR2(1);
1830             l_retain_lock_deliverables_yn VARCHAR2(1);
1831 
1832 
1833 
1834                 l_keep_version         VARCHAR2(1) :='Y';
1835                 l_article_effective_date DATE := SYSDATE;
1836 
1837                 l_initialize_status_yn  VARCHAR2(1) := 'N';
1838                 l_reset_Fixed_Date_yn   VARCHAR2(1) := 'N';
1839                 l_copy_del_attachments_yn VARCHAR2(1) := 'Y';
1840                 l_copy_deliverables     VARCHAR2(1):= 'Y';
1841                 l_copy_abstract_yn    VARCHAR2(1):= 'Y';
1842 
1843 
1844                 l_rebuild_locks  VARCHAR2(1);
1845 
1846                 l_return_status VARCHAR2(1);
1847                 l_msg_data     VARCHAR2(2000);
1848                 l_msg_count NUMBER;
1849 
1850                 l_retain_exhibits VARCHAR2(1);
1851 BEGIN
1852 
1853     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1854       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.process_mod_terms');
1855       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1856       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1857       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1858       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1859       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_process : '||p_process);
1860 
1861       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
1862       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
1863       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
1864       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
1865 
1866       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_document_number : '||p_target_document_number);
1867 
1868     END IF;
1869 
1870 
1871     -- Standard Start of API savepoint
1872     SAVEPOINT g_process_mod_terms_GRP;
1873 
1874     -- Standard call to check for call compatibility.
1875     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1876       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1877     END IF;
1878 
1879     -- Initialize message list if p_init_msg_list is set to TRUE.
1880     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1881       FND_MSG_PUB.initialize;
1882     END IF;
1883 
1884     --  Initialize API return status to success
1885     x_return_status := FND_API.G_RET_STS_SUCCESS;
1886 
1887     IF  p_process = 'CREATE' THEN
1888 
1889             l_retain_lock_terms_yn := 'N';
1890             l_retain_lock_xprt_yn := 'N';
1891             l_retain_lock_deliverables_yn := 'N';
1892             l_rebuild_locks := 'N';
1893 
1894             l_retain_exhibits := 'N';
1895 
1896     ELSIF p_process = 'SYNC' THEN
1897 
1898             l_retain_lock_terms_yn := 'Y';
1899             l_retain_lock_xprt_yn := 'Y';
1900             l_retain_lock_deliverables_yn := 'Y';
1901             l_rebuild_locks := 'N';
1902             l_retain_exhibits := 'Y';
1903 
1904     ELSIF p_process = 'MERGE' THEN
1905 
1906             l_retain_lock_terms_yn := 'N';
1907             l_retain_lock_xprt_yn := 'N';
1908             l_retain_lock_deliverables_yn := 'N';
1909             l_rebuild_locks := 'Y';
1910             l_retain_exhibits := 'Y';
1911 
1912     ELSIF p_process = 'PAR_MERGE' THEN
1913 
1914             l_retain_exhibits := 'Y';
1915 
1916        IF okc_k_entity_locks_grp.has_amended_terms(p_source_doc_type,p_source_doc_id ) = 'Y' THEN
1917           IF  okc_k_entity_locks_grp.has_conflicting_locks(p_source_doc_type,p_source_doc_id) = 'Y' THEN
1918               okc_api.set_message
1919                   (p_app_name      => g_app_name,
1920                    p_msg_name      => 'OKC_PAR_CONFLICT_LOCKS'
1921                   );
1922                x_return_status := g_ret_sts_error;
1923                RAISE fnd_api.g_exc_error;
1924           END IF;
1925           okc_k_entity_locks_grp.merge_changes( p_api_version    => 1.0,
1926                          p_init_msg_list   => p_init_msg_list,
1927                          p_commit         => p_commit,
1928                          p_src_doc_type  => p_source_doc_type ,    -- PAR document
1929                          p_src_doc_id  => p_source_doc_id,        -- PAR document
1930                          p_target_doc_type  => p_target_doc_type,      -- MOD document
1931                          p_target_doc_id   => p_target_doc_id,         -- MOD document
1932                          X_RETURN_STATUS => x_return_status,
1933                          X_MSG_COUNT => X_MSG_COUNT,
1934                          X_MSG_DATA =>  X_MSG_DATA
1935                                               );
1936             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1937                    FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'130:  okc_k_entity_locks_grp.merge_changes l_return_status : '||x_return_status);
1938              END IF;
1939 
1940              IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1941                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1942               ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1943                  RAISE FND_API.G_EXC_ERROR ;
1944              END IF;
1945        END IF;
1946 
1947      IF FND_API.To_Boolean( p_commit ) THEN
1948       COMMIT WORK;
1949      END IF;
1950 
1951     -- Standard call to get message count and if count is 1, get message info.
1952      FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1953 
1954      IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1955         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'900: Leaving process_mod_terms');
1956      END IF;
1957 
1958      RETURN;
1959 
1960     ELSE
1961        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1962             FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'200: Invalid mode is passed ');
1963        END IF;
1964 
1965        OKC_API.set_message(G_APP_NAME, OKC_API.G_INVALID_VALUE,OKC_API.G_COL_NAME_TOKEN,'p_process');
1966        RAISE FND_API.G_EXC_ERROR;
1967     END IF;
1968 
1969 
1970     -- Mod creation no need to copy terms.
1971     IF p_process <> 'CREATE' THEN
1972 
1973      IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1974         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'140: calling OKC_TERMS_UTIL_GRP.delete_doc');
1975      END IF;
1976 
1977 
1978        OKC_TERMS_UTIL_GRP.delete_doc
1979             (
1980               p_api_version     => 1.0
1981             , p_init_msg_list   => FND_API.G_TRUE
1982             , p_commit           => FND_API.G_FALSE
1983             , p_doc_id           => p_target_doc_id
1984             , p_doc_type         => p_target_doc_type
1985             , p_validate_commit  => FND_API.G_FALSE
1986 
1987 
1988 
1989            , p_retain_lock_terms_yn => l_retain_lock_terms_yn
1990            , p_retain_lock_xprt_yn => l_retain_lock_xprt_yn
1991            , p_retain_lock_deliverables_yn => l_retain_lock_deliverables_yn
1992 
1993 
1994            , x_return_status   => x_return_status
1995            , x_msg_data        => l_msg_data
1996            , x_msg_count       => l_msg_count
1997            , p_retain_exhibits => l_retain_exhibits
1998 
1999            );
2000 
2001              IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2002                    FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'130:  OKC_TERMS_UTIL_GRP.delete_doc l_return_status : '||x_return_status);
2003 
2004              END IF;
2005 
2006              IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2007                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
2008               ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2009                          RAISE FND_API.G_EXC_ERROR ;
2010              END IF;
2011 
2012 
2013     END IF;
2014 
2015      IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2016         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'140: calling OKC_TERMS_COPY_PVT.copy_tc');
2017      END IF;
2018 
2019 
2020      OKC_TERMS_COPY_GRP.copy_doc(
2021                 p_api_version           => 1.0,
2022                 p_source_doc_type     => p_source_doc_type,
2023                 p_source_doc_id         => p_source_doc_id,
2024                 p_target_doc_type     => p_target_doc_type,
2025                 p_target_doc_id         => p_target_doc_id,
2026 
2027                 p_keep_version          => l_keep_version,
2028 
2029                 p_article_effective_date=> l_article_effective_date,
2030                 p_initialize_status_yn  => l_initialize_status_yn,
2031                 p_reset_Fixed_Date_yn   => l_reset_Fixed_Date_yn,
2032                 p_copy_del_attachments_yn=> l_copy_del_attachments_yn ,
2033                 p_copy_deliverables     => l_copy_deliverables,
2034                 p_document_number     => p_target_document_number, -- TBD Doc Number
2035                 p_copy_abstract_yn    => l_copy_abstract_yn,
2036 
2037                 p_retain_lock_terms_yn => l_retain_lock_terms_yn,
2038                 p_retain_lock_xprt_yn => l_retain_lock_xprt_yn,
2039 
2040                 p_rebuild_locks  => l_rebuild_locks,
2041 
2042                 x_return_status        =>  x_return_status,
2043                 x_msg_data             =>  l_msg_data,
2044                 x_msg_count            =>  l_msg_count);
2045 
2046 
2047              IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2048                    FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'130:  OKC_TERMS_COPY_GRP.copy_doc l_return_status : '||x_return_status);
2049 
2050              END IF;
2051 
2052              IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2053                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
2054               ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2055                          RAISE FND_API.G_EXC_ERROR ;
2056              END IF;
2057 
2058 
2059    IF FND_API.To_Boolean( p_commit ) THEN
2060       COMMIT WORK;
2061    END IF;
2062 
2063 -- Standard call to get message count and if count is 1, get message info.
2064    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2065 
2066    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2067         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving process_mod_terms');
2068    END IF;
2069 
2070 
2071 EXCEPTION
2072 WHEN FND_API.G_EXC_ERROR THEN
2073 
2074  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2075      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving process_mod_terms: OKC_API.G_EXCEPTION_ERROR Exception');
2076  END IF;
2077 
2078  ROLLBACK TO g_process_mod_terms_GRP;
2079  x_return_status := G_RET_STS_ERROR ;
2080  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2081 
2082  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2083  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2084       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving process_mod_terms: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
2085  END IF;
2086 
2087  ROLLBACK TO g_process_mod_terms_GRP;
2088  x_return_status := G_RET_STS_UNEXP_ERROR ;
2089  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2090 
2091 WHEN OTHERS THEN
2092 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2093    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving process_mod_terms because of EXCEPTION: '||sqlerrm);
2094 END IF;
2095 
2096 ROLLBACK TO g_process_mod_terms_GRP;
2097 x_return_status := G_RET_STS_UNEXP_ERROR ;
2098 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
2099      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
2100 END IF;
2101 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2102 
2103 END process_mod_terms;
2104 
2105 
2106 END OKC_TERMS_COPY_GRP;