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.6 2006/05/26 22:49:24 sasethi noship $ */
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                         )
76 IS
77 l_api_version                CONSTANT NUMBER := 1;
78 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_doc';
79 l_contract_source            VARCHAR2(30);
80 l_copy_primary_doc_flag      VARCHAR2(1) := 'N' ;
81 
82 CURSOR target_response_cur IS
83 SELECT TARGET_RESPONSE_DOC_TYPE
84 FROM   okc_bus_doc_types_b
85 WHERE  document_type = p_target_doc_type
86 AND    document_type_class = 'SOURCING';
87 l_target_response_doctype  okc_bus_doc_types_b.TARGET_RESPONSE_DOC_TYPE%TYPE;
88 --11.5.10+ derive deliverables_enabled_yn flag from okc_bus_doc_types_b
89 -- do not use the p_copy_deliverables param bug#3984339
90 CURSOR DEL_COPY_CUR IS
91 SELECT enable_deliverables_yn
92 FROM okc_bus_doc_types_b
93 where document_type = p_target_doc_type;
94 
95 l_deliverables_enabled   VARCHAR2(1);
96 l_copy_deliverables      VARCHAR2(1);
97 
98 
99 BEGIN
100 
101 
102 
103     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
104       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_doc');
105       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
106       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
107       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
108       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
109       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
110       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
111       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
112       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
113       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_keep_version : '||p_keep_version);
114       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_article_effective_date : '||p_article_effective_date);
115       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_initialize_status_yn : '||p_initialize_status_yn);
116       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_reset_fixed_date_yn : '||p_reset_fixed_date_yn);
117       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_internal_party_id : '||p_internal_party_id);
118       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_internal_contact_id : '||p_internal_contact_id);
119       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_contractual_doctype : '||p_target_contractual_doctype);
120       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_del_attachments_yn : '||p_copy_del_attachments_yn);
121       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_external_party_id : '||p_external_party_id);
122       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_external_party_site_id : '||p_external_party_site_id);
123       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_external_contact_id : '||p_external_contact_id);
124       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_deliverables : '||p_copy_deliverables);
125       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_document_number : '||p_document_number);
126       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_for_amendment : '||p_copy_for_amendment);
127       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_doc_attachments : '||p_copy_doc_attachments);
128       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_allow_duplicate_terms : '||p_allow_duplicate_terms);
129       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_attachments_by_ref : '||p_copy_attachments_by_ref);
130     END IF;
131 
132 
133     -- Standard Start of API savepoint
134     SAVEPOINT g_copy_doc_GRP;
135 
136     -- Standard call to check for call compatibility.
137     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
138       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
139     END IF;
140 
141     -- Initialize message list if p_init_msg_list is set to TRUE.
142     IF FND_API.to_Boolean( p_init_msg_list ) THEN
143       FND_MSG_PUB.initialize;
144     END IF;
145 
146     --  Initialize API return status to success
147     x_return_status := FND_API.G_RET_STS_SUCCESS;
148 
149 
150     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
151         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
152     END IF;
153 
154     OKC_TERMS_COPY_PVT.copy_tc(
155                                   p_api_version            => 1,
156                                   p_init_msg_list          => FND_API.G_FALSE,
157                                   p_commit                 => FND_API.G_FALSE,
158                                   p_source_doc_type        => p_source_doc_type,
159                                   p_source_doc_id          => p_source_doc_id ,
160                                   p_target_doc_type        => p_target_doc_type,
161                                   p_target_doc_id          => p_target_doc_id,
162                                   p_keep_version           => p_keep_version,
163                                   p_article_effective_date => p_article_effective_date,
164                                   p_target_template_rec    => G_TEMPLATE_MISS_REC,
165                                   p_document_number        => p_document_number,
166                                   p_allow_duplicates       => p_allow_duplicate_terms,
167                                   x_return_status          => x_return_status,
168                                   x_msg_data               => x_msg_data,
169                                   x_msg_count              => x_msg_count,
170                                   p_copy_abstract_yn       => p_copy_abstract_yn,
171 				              p_copy_for_amendment     => p_copy_for_amendment,
172 						    p_contract_admin_id      => p_contract_admin_id,
173 						    p_legal_contact_id       => p_legal_contact_id);
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: Finished OKC_TERMS_COPY_PVT.copy_tc, return status'||x_return_status);
176    END IF;
177 
178    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
179            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
180    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
181            RAISE FND_API.G_EXC_ERROR ;
182    END IF;
183 -----------------------------------------------------
184 
185     /* get the deliverables_enabled_yn flag before calling copy_deliverables bug#3984339 */
186 
187 
188             OPEN del_copy_cur;
189             FETCH del_copy_cur INTO l_deliverables_enabled;
190             IF del_copy_cur%NOTFOUND THEN
191                 l_deliverables_enabled := null;
192             END IF;
193             CLOSE del_copy_cur;
194 
195                   If (l_deliverables_enabled = 'N') then
196                    l_copy_deliverables := l_deliverables_enabled;
197                   Elsif (l_deliverables_enabled = 'Y') then
198              l_copy_deliverables := p_copy_deliverables;
199                   End If;
200 
201   IF (l_copy_deliverables ='Y' AND p_copy_for_amendment='N') THEN
202 
203      /*  Call Deliverable API to copy Deliverables */
204             -- get the target response doctype if the target is a
205             -- Sourcing document (RFQ,RFI,AUCTION)Bug#3270742
206             OPEN target_response_cur;
207             FETCH target_response_cur INTO l_target_response_doctype;
208             IF target_response_cur%NOTFOUND THEN
209                 l_target_response_doctype := null;
210             END IF;
211             CLOSE target_response_cur;
212 
213 
214             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
215                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables.  ');
216                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:source  busdoc id: '||to_char(p_source_doc_id));
217                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc id: '||to_char(p_target_doc_id));
218                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc type: '||p_target_doc_type);
219             END IF;
220 
221 
222             OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
223             p_api_version         => 1,
224             p_init_msg_list       => FND_API.G_FALSE,
225             p_source_doc_id       => p_source_doc_id,
226             p_source_doc_type     => p_source_doc_type,
227             p_target_doc_id       => p_target_doc_id,
228             p_target_doc_type     => p_target_doc_type,
229             p_initialize_status_yn => p_initialize_status_yn,
230             p_reset_fixed_date_yn   => p_reset_fixed_date_yn,
231             p_target_contractual_doctype  => p_target_contractual_doctype,
232             p_target_response_doctype  => l_target_response_doctype,
233             p_target_doc_number     => p_document_number,
234             p_copy_del_attachments_yn     => p_copy_del_attachments_yn,
235             p_internal_party_id   => p_internal_party_id,
236             p_internal_contact_id => p_internal_contact_id,
237             p_external_party_id   => p_external_party_id,
238             p_external_party_site_id   => p_external_party_site_id,
239             p_external_contact_id => p_external_contact_id,
240             x_msg_data       => x_msg_data,
241             x_msg_count       => x_msg_count,
242             x_return_status       => x_return_status );
243 
244             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
245                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables  ');
246                 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);
247             END IF;
248 
249             IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
250                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
251             ELSIF (x_return_status = G_RET_STS_ERROR) THEN
252                 RAISE FND_API.G_EXC_ERROR ;
253             END IF;
254 
255   END IF;
256 -------------------------------------------------------
257 
258   IF (l_copy_deliverables ='Y' AND p_copy_for_amendment='Y') THEN
259 
260          IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
261              FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment.');
262          END IF;
263 
264 
265          OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment (
266          p_api_version         => 1,
267          p_init_msg_list       => FND_API.G_FALSE,
268          p_source_doc_id       => p_source_doc_id,
269          p_source_doc_type     => p_source_doc_type,
270          p_target_doc_id       => p_target_doc_id,
271          p_target_doc_type     => p_target_doc_type,
272          p_reset_fixed_date_yn   => p_reset_fixed_date_yn,
273          p_target_doc_number     => p_document_number,
274          x_msg_data            => x_msg_data,
275          x_msg_count           => x_msg_count,
276          x_return_status       => x_return_status,
277          p_copy_del_attachments_yn => p_copy_del_attachments_yn,
278          p_target_contractual_doctype  => p_target_contractual_doctype);
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,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_del_for_amendment.  ');
282            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);
283          END IF;
284 
285          IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
286            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
287          ELSIF (x_return_status = G_RET_STS_ERROR) THEN
288            RAISE FND_API.G_EXC_ERROR ;
289          END IF;
290 
291   END IF;
292 
293 --Added l_copy_primary_doc_flag for 10+ word integration
294 ---------------------------------------------------------
295     l_contract_source := OKC_TERMS_UTIL_GRP.Get_Contract_Source_code(
296                                     p_document_type    => p_source_doc_type,
297                                     p_document_id      => p_source_doc_id
298                                     );
299     IF (l_contract_source = 'E') THEN
300        RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
301     END IF;
302 
303 ---------------------------------------------------------
304 
305   IF (p_copy_doc_attachments ='N' AND l_contract_source = 'ATTACHED') THEN
306   /* Copy only primary contract doc, p_copy_primary_doc_flag is set to 'Y'*/
307     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
308        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1150:Entering OKC_CONTRACT_DOCS_GRP.Copy_Attachments  ');
309     END IF;
310 
311     OKC_CONTRACT_DOCS_GRP.Copy_Attachments (
312                           p_api_version  =>1,
313                           p_init_msg_list =>FND_API.G_FALSE,
314                           x_msg_data            => x_msg_data,
315                           x_msg_count           => x_msg_count,
316                           x_return_status       => x_return_status,
317                           p_from_bus_doc_type => p_source_doc_type ,
318                           p_from_bus_doc_id   => p_source_doc_id,
319                           p_from_bus_doc_version => -99,
320                           p_to_bus_doc_type    => p_target_doc_type,
321                           p_to_bus_doc_id     => p_target_doc_id,
322                           p_to_bus_doc_version => -99,
323                           p_copy_by_ref => p_copy_attachments_by_ref,
324                           p_copy_primary_doc_flag => 'Y') ;
325 
326        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
327           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1151:Finished OKC_CONTRACT_DOCS_GRP.Copy_Attachments ');
328           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);
329        END IF;
330 
331        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
332                RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
333        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
334                RAISE FND_API.G_EXC_ERROR ;
335        END IF;
336   ELSIF (p_copy_doc_attachments ='Y' ) THEN
337   /* Copy all attachments*/
338     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
339        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1156:Entering OKC_CONTRACT_DOCS_GRP.Copy_Attachments  ');
340     END IF;
341 
342     OKC_CONTRACT_DOCS_GRP.Copy_Attachments (
343                           p_api_version  =>1,
344                           p_init_msg_list =>FND_API.G_FALSE,
345                           x_msg_data            => x_msg_data,
346                           x_msg_count           => x_msg_count,
347                           x_return_status       => x_return_status,
348                           p_from_bus_doc_type => p_source_doc_type ,
349                           p_from_bus_doc_id   => p_source_doc_id,
350                           p_from_bus_doc_version => -99,
351                           p_to_bus_doc_type    => p_target_doc_type,
352                           p_to_bus_doc_id     => p_target_doc_id,
353                           p_to_bus_doc_version => -99,
354                           p_copy_by_ref => p_copy_attachments_by_ref,
355                           p_copy_primary_doc_flag => 'N',
356 						  p_copy_for_amendment => p_copy_for_amendment) ;
357 
358        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
359           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1157:Finished OKC_CONTRACT_DOCS_GRP.Copy_Attachments ');
360           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);
361        END IF;
362 
363        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
364                RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
365        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
366                RAISE FND_API.G_EXC_ERROR ;
367        END IF;
368   END IF;
369 
370 -------------------------------------------------------------
371 
372    IF FND_API.To_Boolean( p_commit ) THEN
373       COMMIT WORK;
374    END IF;
375 
376 -- Standard call to get message count and if count is 1, get message info.
377    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
378 
379    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
380         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_doc');
381    END IF;
382 
383 EXCEPTION
384 
385 WHEN FND_API.G_EXC_ERROR THEN
386 
387  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
388      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_doc: OKC_API.G_EXCEPTION_ERROR Exception');
389  END IF;
390 
391  ROLLBACK TO g_copy_doc_grp;
392  x_return_status := G_RET_STS_ERROR ;
393  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
394 
395  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
396  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
397       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_doc: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
398  END IF;
399 
400  ROLLBACK TO g_copy_doc_grp;
401  x_return_status := G_RET_STS_UNEXP_ERROR ;
402  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
403 
404 WHEN OTHERS THEN
405 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
406    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_doc because of EXCEPTION: '||sqlerrm);
407 END IF;
408 
409 ROLLBACK TO g_copy_doc_grp;
410 x_return_status := G_RET_STS_UNEXP_ERROR ;
411 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
412      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
413 END IF;
414 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
415 END copy_doc;
416 
417 /*
418 --To be used when copying a terms template to make a new template or to make a
419 -- woring copy.
420 
421 */
422 
423 Procedure copy_terms_template   (
424                         p_api_version       IN       Number,
425                         p_init_msg_list     IN       Varchar2,
426                         p_commit            IN       Varchar2,
427                         p_template_id       IN       Number,
428                         p_tmpl_name         IN       Varchar2,
429                         p_intent            IN       Varchar2,
430                         p_start_date        IN       Date,
431                         p_end_date          IN       Date,
432                         p_instruction_text  IN       Varchar2,
433                         p_description       IN       Varchar2,
434                         p_print_Template_Id IN       Number,
435                         p_global_flag       IN       Varchar2,
436                         p_contract_expert_enabled IN Varchar2,
437                         p_xprt_clause_mandatory_flag IN VARCHAR2 := NULL,
438                         p_xprt_scn_code      IN      VARCHAR2 := NULL,
439                         p_attribute_category IN      Varchar2,
440                         p_attribute1         IN      Varchar2,
441                         p_attribute2         IN      Varchar2,
442                         p_attribute3         IN      Varchar2,
443                         p_attribute4         IN      Varchar2,
444                         p_attribute5         IN      Varchar2,
445                         p_attribute6         IN      Varchar2,
446                         p_attribute7         IN      Varchar2,
447                         p_attribute8         IN      Varchar2,
448                         p_attribute9         IN      Varchar2,
449                         p_attribute10        IN      Varchar2,
450                         p_attribute11        IN      Varchar2,
451                         p_attribute12        IN      Varchar2,
452                         p_attribute13        IN      Varchar2,
453                         p_attribute14        IN      Varchar2,
454                         p_attribute15        IN      Varchar2,
455                         p_copy_deliverables  IN      Varchar2,
456                         p_translated_from_tmpl_id IN       Number,
457                         p_language                IN       Varchar2,
458                         x_template_id        OUT     NOCOPY  Number,
459                         x_return_status      OUT     NOCOPY Varchar2,
460                         x_msg_data           OUT     NOCOPY Varchar2,
461                         x_msg_count          OUT     NOCOPY Number
462                         )IS
463 l_api_version                CONSTANT NUMBER := 1;
464 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_terms_template';
465 l_template_rec               OKC_TERMS_TEMPLATES_PVT.template_rec_type;
466 l_document_type            OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE := OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE;
467 l_dummy                      VARCHAR2(1) :='?';
468 l_deliverables_exist        VARCHAR2(100);
469 
470 CURSOR l_get_tmpl_csr IS
471 SELECT * FROM OKC_TERMS_TEMPLATES_ALL
472 WHERE template_id=p_template_id;
473 
474 CURSOR l_check_tmpl_name_csr(b_org_id NUMBER) IS
475 SELECT 'x' FROM OKC_TERMS_TEMPLATES_ALL
476 WHERE org_id=b_org_id
477 AND   template_name=p_tmpl_name;
478 
479 l_tmpl_rec l_get_tmpl_csr%ROWTYPE;
480 
481 l_article_effective_date  DATE;
482 
483 BEGIN
484 
485     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
486       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_terms_template');
487       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
488       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
489       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
490       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
491       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_template_id : '||p_template_id);
492       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_tmpl_name : '||p_tmpl_name);
493       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_intent : '||p_intent);
494       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_start_date : '||p_start_date);
495       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_end_date : '||p_end_date);
496       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_print_Template_Id : '||p_print_Template_Id);
497       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_global_flag : '||p_global_flag);
498       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_contract_expert_enabled : '||p_contract_expert_enabled);
499       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_deliverables : '||p_copy_deliverables);
500       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_attribute_category : '||p_attribute_category);
501     END IF;
502 
503 
504     -- Standard Start of API savepoint
505     SAVEPOINT g_copy_terms_template_GRP;
506 
507     -- Standard call to check for call compatibility.
508     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
509       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
510     END IF;
511 
512     -- Initialize message list if p_init_msg_list is set to TRUE.
513     IF FND_API.to_Boolean( p_init_msg_list ) THEN
514       FND_MSG_PUB.initialize;
515     END IF;
516 
517     --  Initialize API return status to success
518     x_return_status := FND_API.G_RET_STS_SUCCESS;
519 
520     OPEN  l_get_tmpl_csr;
521     FETCH l_get_tmpl_csr INTO l_tmpl_rec;
522     CLOSE l_get_tmpl_csr;
523 
524     SELECT mo_global.get_current_org_id()
525           INTO l_template_rec.org_id from dual;
526 
527     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
528       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'110: Current Org Id : '||l_template_rec.org_id);
529       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'));
530     END IF;
531 
532     -- check if copy from Global to Local Org
533     -- In that case make global_yn for Local Org template to N
534 
535     IF nvl(fnd_profile.value('OKC_GLOBAL_ORG_ID'),'-99') <> l_template_rec.org_id THEN
536        l_template_rec.global_flag := 'N';
537     ELSE
538        -- keep flag as is as this is within the same org copy
539       l_template_rec.global_flag             := p_global_flag;
540     END IF; -- check orgs
541 
542 
543     OPEN  l_check_tmpl_name_csr(l_template_rec.org_id);
544     FETCH l_check_tmpl_name_csr INTO l_dummy;
545 
546     IF l_check_tmpl_name_csr%FOUND THEN
547 
548        okc_Api.Set_Message(p_app_name     => G_APP_NAME,
549                            p_msg_name     => 'OKC_SAME_TMPL_NAME');
550        RAISE FND_API.G_EXC_ERROR ;
551 
552     END IF;
553 
554     CLOSE l_check_tmpl_name_csr;
555 
556 
557     l_template_rec.template_name           := p_tmpl_name;
558     l_template_rec.working_copy_flag       := 'N';
559     l_template_rec.parent_template_id      := NULL;
560     l_template_rec.intent                  := p_intent;
561     l_template_rec.status_code             := 'DRAFT';
562     l_template_rec.start_date              := p_start_date;
563     l_template_rec.end_date                := p_end_date;
564  --   l_template_rec.global_flag             := p_global_flag;
565     l_template_rec.contract_expert_enabled := p_contract_expert_enabled;
566 
567     l_template_rec.xprt_clause_mandatory_flag := p_xprt_clause_mandatory_flag;
568     l_template_rec.xprt_scn_code           := p_xprt_scn_code;
569     l_template_rec.instruction_text        := p_instruction_text;
570     l_template_rec.description             := p_description;
571     l_template_rec.print_Template_Id       := p_print_Template_Id;
572     l_template_rec.tmpl_numbering_scheme   := l_tmpl_rec.tmpl_numbering_scheme;
573     l_template_rec.attribute_category      := p_attribute_category;
574     l_template_rec.attribute1              := p_attribute1;
575     l_template_rec.attribute2              := p_attribute2;
576     l_template_rec.attribute3              := p_attribute3;
577     l_template_rec.attribute4              := p_attribute4;
578     l_template_rec.attribute5              := p_attribute5;
579     l_template_rec.attribute6              := p_attribute6;
580     l_template_rec.attribute7              := p_attribute7;
581     l_template_rec.attribute8              := p_attribute8;
582     l_template_rec.attribute9              := p_attribute9;
583     l_template_rec.attribute10             := p_attribute10;
584     l_template_rec.attribute11             := p_attribute11;
585     l_template_rec.attribute12             := p_attribute12;
586     l_template_rec.attribute13             := p_attribute13;
587     l_template_rec.attribute14             := p_attribute14;
588     l_template_rec.attribute15             := p_attribute15;
589 --MLS for templates
590     l_template_rec.language                := p_language;
591 
592 
593     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
594         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
595     END IF;
596 
597 /*
598    New Business Rules for p_article_effective_date in template to template copy
599 */
600     IF NVL(p_end_date,sysdate) >= sysdate  THEN
601        IF p_start_date > sysdate THEN
602           l_article_effective_date := p_start_date;
603        ELSE
604           l_article_effective_date := sysdate;
605        END IF;
606     ELSE
607        l_article_effective_date := p_end_date;
608     END IF;
609 
610     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
611         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: l_article_effective_date : '||l_article_effective_date);
612     END IF;
613 
614 
615     OKC_TERMS_COPY_PVT.copy_tc(
616                                   p_api_version            => 1,
617                                   p_init_msg_list          => FND_API.G_FALSE,
618                                   p_commit                 => FND_API.G_FALSE,
619                                   p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
620                                   p_source_doc_id          => p_template_id,
621                                   p_target_doc_type        => l_document_type,
622                                   p_target_doc_id          => x_template_id,
623                                   p_keep_version           => 'N',
624                                   p_article_effective_date => l_article_effective_date,
625                                   p_target_template_rec    => l_template_rec,
626                                   x_return_status          => x_return_status,
627                                   x_msg_data               => x_msg_data,
628                                   x_msg_count              => x_msg_count);
629    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
630        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);
631    END IF;
632 
633    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
634            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
635    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
636            RAISE FND_API.G_EXC_ERROR ;
637    END IF;
638 -----------------------------------
639   /* Fix for the Bug# 4113678, check whether if the deliverables exist before copying deliverables */
640 
641    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
642         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling okc_terms_util_grp.Is_Deliverable_Exist');
643    END IF;
644 
645   l_deliverables_exist :=  okc_terms_util_grp.Is_Deliverable_Exist(
646          p_api_version      => 1,
647          p_init_msg_list    =>  FND_API.G_FALSE,
648          x_return_status    => x_return_status,
649          x_msg_data         => x_msg_data,
650          x_msg_count        => x_msg_count,
651          p_doc_type         => 'TEMPLATE',
652          p_doc_id           => p_template_id);
653 
654    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
655        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);
656    END IF;
657 
658   l_deliverables_exist := UPPER(nvl(l_deliverables_exist,'NONE'));
659 
660    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
661         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'700: l_deliverables_exist: ' || l_deliverables_exist);
662    END IF;
663 
664   IF ( p_copy_deliverables='Y' AND l_deliverables_exist <> 'NONE') THEN
665 
666      /*  Call Deliverable API to copy Deliverables */
667 
668             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
669                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables.  ');
670             END IF;
671 
672 
673             OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
674             p_api_version            => 1,
675             p_init_msg_list          => FND_API.G_FALSE,
676             p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
677             p_source_doc_id          => p_template_id,
678             p_target_doc_type        => l_document_type,
679             p_target_doc_id          => x_template_id,
680             p_internal_party_id      => l_template_rec.org_id, -- bug#4335441
681             p_internal_contact_id    => Null,
682             p_external_party_id      => Null,
683             p_external_contact_id    => Null,
684             p_target_doc_number     => x_template_id, -- bug#3722131
685             p_copy_del_attachments_yn     => 'Y',
686             x_msg_data            => x_msg_data,
687             x_msg_count           => x_msg_count,
688             x_return_status       => x_return_status );
689 
690             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
691             FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables ');
692             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);
693             END IF;
694 
695             IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
696             RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
697             ELSIF (x_return_status = G_RET_STS_ERROR) THEN
698             RAISE FND_API.G_EXC_ERROR ;
699             END IF;
700 
701  END IF;
702 
703 
704 
705 
706 -----------------------------------
707    IF FND_API.To_Boolean( p_commit ) THEN
708       COMMIT WORK;
709    END IF;
710 
711 -- Standard call to get message count and if count is 1, get message info.
712    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
713 
714    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
715         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_terms_template');
716    END IF;
717 
718 EXCEPTION
719 
720 WHEN FND_API.G_EXC_ERROR THEN
721 
722  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
723      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_terms_template: OKC_API.G_EXCEPTION_ERROR Exception');
724  END IF;
725 
726  IF l_get_tmpl_csr%ISOPEN THEN
727     CLOSE l_get_tmpl_csr;
728  END IF;
729 
730  IF l_check_tmpl_name_csr%ISOPEN THEN
731     CLOSE l_check_tmpl_name_csr;
732  END IF;
733 
734  ROLLBACK TO g_copy_terms_template_grp;
735  x_return_status := G_RET_STS_ERROR ;
736  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
737 
738  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
739  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
740       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_terms_template: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
741  END IF;
742 
743  IF l_get_tmpl_csr%ISOPEN THEN
744     CLOSE l_get_tmpl_csr;
745  END IF;
746 
747  IF l_check_tmpl_name_csr%ISOPEN THEN
748     CLOSE l_check_tmpl_name_csr;
749  END IF;
750 
751  ROLLBACK TO g_copy_terms_template_grp;
752  x_return_status := G_RET_STS_UNEXP_ERROR ;
753  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
754 
755 WHEN OTHERS THEN
756 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
757    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_terms_template because of EXCEPTION: '||sqlerrm);
758 END IF;
759 
760 IF l_get_tmpl_csr%ISOPEN THEN
761    CLOSE l_get_tmpl_csr;
762 END IF;
763 
764  IF l_check_tmpl_name_csr%ISOPEN THEN
765     CLOSE l_check_tmpl_name_csr;
766  END IF;
767 
768 ROLLBACK TO g_copy_terms_template_grp;
769 x_return_status := G_RET_STS_UNEXP_ERROR ;
770 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
771      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
772 END IF;
773 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
774 END copy_terms_template;
775 
776 /*
777 --To be used when instantiating a term on a document.
778 */
779 Procedure copy_terms   (
780                         p_api_version             IN    Number,
781                         p_init_msg_list               IN        Varchar2 ,
782                         p_commit                      IN        Varchar2 ,
783                         p_template_id             IN    Number,
784                         p_target_doc_type             IN        Varchar2,
785                         p_target_doc_id           IN    Number,
786                         p_article_effective_date  IN    Date ,
787                         p_retain_deliverable      IN    Varchar2 ,
788                         p_target_contractual_doctype IN Varchar2,
789                         p_target_response_doctype    IN Varchar2,
790                         p_internal_party_id              IN     Number ,
791                         p_internal_contact_id        IN Number ,
792                         p_external_party_id              IN     Number ,
793                         p_external_party_site_id                 IN     Number ,
794                         p_external_contact_id        IN Number ,
795                         p_validate_commit                IN     Varchar2 ,
796                         p_validation_string          IN Varchar2,
797                         p_document_number                IN     Varchar2 ,
798                         x_return_status              OUT        NOCOPY Varchar2,
799                         x_msg_data                       OUT    NOCOPY Varchar2,
800                         x_msg_count                      OUT    NOCOPY Number,
801 				    p_contract_admin_id   IN NUMBER := NULL,
802 				    p_legal_contact_id   IN NUMBER := NULL
803                         ) IS
804 
805 l_api_version                CONSTANT NUMBER := 1;
806 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_terms';
807 l_ok_to_commit               VARCHAR2(1);
808 l_document_id              OKC_TEMPLATE_USAGES.DOCUMENT_ID%TYPE := p_target_doc_id;
809 l_document_type            OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE := p_target_doc_type;
810 
811 CURSOR target_response_cur IS
812 SELECT TARGET_RESPONSE_DOC_TYPE
813 FROM   okc_bus_doc_types_b
814 WHERE  document_type = p_target_doc_type
815 AND    document_type_class = 'SOURCING';
816 
817 l_target_response_doctype  okc_bus_doc_types_b.TARGET_RESPONSE_DOC_TYPE%TYPE;
818 
819 CURSOR l_get_num_scheme_id(p_doc_type IN VARCHAR2, p_doc_id IN NUMBER) IS
820 SELECT doc_numbering_scheme
821 FROM okc_template_usages
822 WHERE document_type = p_doc_type
823   AND document_id = p_doc_id;
824 
825 l_num_scheme_id    NUMBER:=0;
826 -- bug#4113619
827 CURSOR enable_deliverables_cur IS
828 SELECT enable_deliverables_yn
829 FROM   okc_bus_doc_types_b
830 WHERE  document_type = p_target_doc_type;
831 l_enable_deliverables  VARCHAR2(1);
832 
833 BEGIN
834 
835     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
836       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_terms');
837       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
838       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
839       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
840       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
841       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_template_id : '||p_template_id);
842       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
843       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
844       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_article_effective_date : '||p_article_effective_date);
845       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_retain_deliverable : '||p_retain_deliverable);
846       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_contractual_doctype : '||p_target_contractual_doctype);
847       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_response_doctype : '||p_target_response_doctype);
848       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_validate_commit : '||p_validate_commit);
849       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_validation_string : '||p_validation_string);
850       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_document_number : '||p_document_number);
851     END IF;
852 
853 
854     -- Standard Start of API savepoint
855     SAVEPOINT g_copy_terms_GRP;
856 
857     -- Standard call to check for call compatibility.
858     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
859       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
860     END IF;
861 
862     -- Initialize message list if p_init_msg_list is set to TRUE.
863     IF FND_API.to_Boolean( p_init_msg_list ) THEN
864       FND_MSG_PUB.initialize;
865     END IF;
866 
867     IF FND_API.To_Boolean( p_validate_commit )  AND
868        NOT FND_API.To_Boolean(OKC_TERMS_UTIL_GRP.ok_to_commit (
869                                          p_api_version => l_api_version,
870                                          p_init_msg_list => FND_API.G_FALSE,
871                                          p_doc_type      => p_target_doc_type,
872                                          p_doc_id        => p_target_doc_id,
873                                          p_validation_string =>p_validation_string,
874                                          p_tmpl_change   => 'Y',
875                                          x_return_status => x_return_status,
876                                          x_msg_data      => x_msg_data,
877                                          x_msg_count     => x_msg_count)                  ) THEN
878 
879              IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
880                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'700: Issue with document header Record.Cannot commit');
881              END IF;
882              RAISE FND_API.G_EXC_ERROR ;
883     END IF;
884 
885     --  Initialize API return status to success
886     x_return_status := FND_API.G_RET_STS_SUCCESS;
887 
888     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
889         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
890     END IF;
891 
892     OKC_TERMS_COPY_PVT.copy_tc(
893                                   p_api_version            => 1,
894                                   p_init_msg_list          => FND_API.G_FALSE,
895                                   p_commit                 => FND_API.G_FALSE,
896                                   p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
897                                   p_source_doc_id          => p_template_id,
898                                   p_target_doc_type        => l_document_type,
899                                   p_target_doc_id          => l_document_id,
900                                   p_document_number        => p_document_number,
901                                   p_keep_version           => 'N',
902                                   p_article_effective_date => p_article_effective_date,
903                                   p_target_template_rec    => G_TEMPLATE_MISS_REC,
904                                   p_retain_deliverable     => p_retain_deliverable,
905                                   x_return_status          => x_return_status,
906                                   x_msg_data               => x_msg_data,
907                                   x_msg_count              => x_msg_count,
908 						    p_contract_admin_id      => p_contract_admin_id,
909 						    p_legal_contact_id       => p_legal_contact_id);
910 
911    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
912        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);
913    END IF;
914 
915    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
916            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
917    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
918            RAISE FND_API.G_EXC_ERROR ;
919    END IF;
920 
921 
922 ----------------------------------
923      /*  Call Deliverable API to copy Deliverables */
924             -- check if deliverables are enables for this document bug#4113619
925             OPEN  enable_deliverables_cur;
926             FETCH enable_deliverables_cur into l_enable_deliverables;
927             CLOSE enable_deliverables_cur;
928 
929         IF l_enable_deliverables = 'Y' THEN
930 
931             -- get the target response doctype if the target is a
932             -- Sourcing document (RFQ,RFI,AUCTION)Bug#3270742
933             OPEN target_response_cur;
934             FETCH target_response_cur INTO l_target_response_doctype;
935             CLOSE target_response_cur;
936 
937             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
938                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables ');
939                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:l_target_response_doctype: '||l_target_response_doctype);
940             END IF;
941 
942 
943             OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
944             p_api_version         => 1,
945             p_init_msg_list       => FND_API.G_FALSE,
946             p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
947             p_source_doc_id          => p_template_id,
948             p_target_doc_type        => l_document_type,
949             p_target_doc_id          => l_document_id,
950             p_target_doc_number      => p_document_number,
951             p_internal_party_id      => p_internal_party_id,
952             p_internal_contact_id    => p_internal_contact_id,
953             p_external_party_id      => p_external_party_id,
954             p_external_party_site_id      => p_external_party_site_id,
955             p_external_contact_id    => p_external_contact_id,
956             p_target_contractual_doctype    => p_target_contractual_doctype,
957             p_target_response_doctype       => l_target_response_doctype,
958             p_copy_del_attachments_yn       => 'Y',
959             x_msg_data            => x_msg_data,
960             x_msg_count           => x_msg_count,
961             x_return_status       => x_return_status );
962 
963           IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
964           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables ');
965           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);
966           END IF;
967 
968           IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
969           RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
970           ELSIF (x_return_status = G_RET_STS_ERROR) THEN
971           RAISE FND_API.G_EXC_ERROR ;
972           END IF;
973 
974         END IF; -- l_enable_deliverables = 'Y' THEN
975 
976 -- Bug 3674173 : Call renumber after applying template on a document
977 
978       OPEN l_get_num_scheme_id(p_doc_type => l_document_type, p_doc_id => l_document_id) ;
979          FETCH l_get_num_scheme_id INTO l_num_scheme_id;
980       CLOSE l_get_num_scheme_id;
981 
982    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
983    FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: l_num_scheme_id : '||l_num_scheme_id);
984    END IF;
985 
986 
987 IF NVL(l_num_scheme_id,0) <> 0 THEN
988 
989     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
990       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);
991     END IF;
992 
993           OKC_NUMBER_SCHEME_GRP.apply_numbering_scheme(
994            p_api_version        => p_api_version,
995            p_init_msg_list      => FND_API.G_FALSE,
996            x_return_status      => x_return_status,
997            x_msg_count          => x_msg_count,
998            x_msg_data           => x_msg_data,
999            p_validate_commit    => FND_API.G_FALSE,
1000            p_validation_string  => p_validation_string,
1001            p_commit             => FND_API.G_FALSE,
1002            p_doc_type           => l_document_type,
1003            p_doc_id             => l_document_id,
1004            p_num_scheme_id      => l_num_scheme_id
1005          );
1006 
1007 
1008    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1009        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);
1010    END IF;
1011 
1012           IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1013                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1014           ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1015                   RAISE FND_API.G_EXC_ERROR ;
1016           END IF;
1017 
1018 
1019 END IF; --l_num_scheme_id is not 0
1020 
1021 
1022 
1023 -- End Bug 3674173
1024 
1025 
1026 ------------------------------------
1027    IF FND_API.To_Boolean( p_commit ) THEN
1028       COMMIT WORK;
1029    END IF;
1030 
1031 -- Standard call to get message count and if count is 1, get message info.
1032    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1033 
1034    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1035         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_terms');
1036    END IF;
1037 
1038 
1039 
1040 EXCEPTION
1041 
1042 WHEN FND_API.G_EXC_ERROR THEN
1043 
1044  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1045      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_terms: OKC_API.G_EXCEPTION_ERROR Exception');
1046  END IF;
1047 
1048  ROLLBACK TO g_copy_terms_grp;
1049  x_return_status := G_RET_STS_ERROR ;
1050  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1051 
1052  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1053  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1054       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_terms: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1055  END IF;
1056 
1057 
1058  ROLLBACK TO g_copy_terms_grp;
1059  x_return_status := G_RET_STS_UNEXP_ERROR ;
1060  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1061 
1062 WHEN OTHERS THEN
1063 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1064    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_terms because of EXCEPTION: '||sqlerrm);
1065 END IF;
1066 
1067 ROLLBACK TO g_copy_terms_grp;
1068 x_return_status := G_RET_STS_UNEXP_ERROR ;
1069 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1070      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1071 END IF;
1072 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1073 
1074 
1075 END copy_terms;
1076 
1077 /* To be used to create Revision of a Template */
1078 
1079 Procedure create_template_revision  (
1080                         p_api_version       IN       Number,
1081                         p_init_msg_list     IN       Varchar2 default FND_API.G_FALSE,
1082                         p_commit            IN       Varchar2 default FND_API.G_FALSE,
1083                         p_template_id       IN       Number,
1084                         p_copy_deliverables IN      Varchar2 default 'Y',
1085                         x_template_id       OUT NOCOPY  Number,
1086                         x_return_status     OUT        NOCOPY Varchar2,
1087                         x_msg_data          OUT        NOCOPY Varchar2,
1088                         x_msg_count         OUT        NOCOPY Number) IS
1089 
1090 l_api_version                CONSTANT NUMBER := 1;
1091 l_api_name                   CONSTANT VARCHAR2(30) := 'create_template_revision';
1092 l_template_rec               OKC_TERMS_TEMPLATES_PVT.template_rec_type;
1093 l_document_type            OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE := OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE;
1094 l_copy_deliverables          VARCHAR2(1);
1095 
1096 CURSOR l_get_tmpl_csr IS
1097 SELECT * FROM OKC_TERMS_TEMPLATES_ALL
1098 WHERE template_id=p_template_id;
1099 
1100 l_tmpl_rec l_get_tmpl_csr%ROWTYPE;
1101 BEGIN
1102 
1103     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1104       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.create_template_revision');
1105       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1106       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1107       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1108       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1109       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_template_id : '||p_template_id);
1110       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_deliverables : '||p_copy_deliverables);
1111     END IF;
1112 
1113 
1114     -- Standard Start of API savepoint
1115     SAVEPOINT g_create_template_revision_GRP;
1116 
1117     -- Standard call to check for call compatibility.
1118     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1119       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1120     END IF;
1121 
1122     -- Initialize message list if p_init_msg_list is set to TRUE.
1123     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1124       FND_MSG_PUB.initialize;
1125     END IF;
1126 
1127     --  Initialize API return status to success
1128     x_return_status := FND_API.G_RET_STS_SUCCESS;
1129 
1130     OPEN  l_get_tmpl_csr;
1131     FETCH l_get_tmpl_csr INTO l_tmpl_rec;
1132     CLOSE l_get_tmpl_csr;
1133 
1134     l_template_rec.template_name          := l_tmpl_rec.template_name;
1135     l_template_rec.working_copy_flag      := 'Y';
1136     l_template_rec.parent_template_id     := p_template_id;
1137     l_template_rec.intent                 := l_tmpl_rec.intent;
1138     l_template_rec.status_code            := 'REVISION';
1139     l_template_rec.start_date             := l_tmpl_rec.start_date;
1140     l_template_rec.end_date               := l_tmpl_rec.end_date;
1141     l_template_rec.global_flag            := l_tmpl_rec.global_flag;
1142     l_template_rec.print_template_id      := l_tmpl_rec.print_template_id;
1143     l_template_rec.contract_expert_enabled:= l_tmpl_rec.contract_expert_enabled;
1144     l_template_rec.instruction_text       := l_tmpl_rec.instruction_text;
1145     l_template_rec.description            := l_tmpl_rec.description;
1146     l_template_rec.org_id                 := l_tmpl_rec.org_id;
1147     l_template_rec.tmpl_numbering_scheme  := l_tmpl_rec.tmpl_numbering_scheme;
1148     l_template_rec.template_model_id      := l_tmpl_rec.template_model_id;
1149     l_template_rec.orig_system_reference_code:=l_tmpl_rec.orig_system_reference_code;
1150     l_template_rec.orig_system_reference_id1:=l_tmpl_rec.orig_system_reference_id1;
1151     l_template_rec.orig_system_reference_id2:=l_tmpl_rec.orig_system_reference_id2;
1152     l_template_rec.attribute_category     := l_tmpl_rec.attribute_category;
1153     l_template_rec.attribute1             := l_tmpl_rec.attribute1;
1154     l_template_rec.attribute2             := l_tmpl_rec.attribute2;
1155     l_template_rec.attribute3             := l_tmpl_rec.attribute3;
1156     l_template_rec.attribute4             := l_tmpl_rec.attribute4;
1157     l_template_rec.attribute5             := l_tmpl_rec.attribute5;
1158     l_template_rec.attribute6             := l_tmpl_rec.attribute6;
1159     l_template_rec.attribute7             := l_tmpl_rec.attribute7;
1160     l_template_rec.attribute8             := l_tmpl_rec.attribute8;
1161     l_template_rec.attribute9             := l_tmpl_rec.attribute9;
1162     l_template_rec.attribute10            := l_tmpl_rec.attribute10;
1163     l_template_rec.attribute11            := l_tmpl_rec.attribute11;
1164     l_template_rec.attribute12            := l_tmpl_rec.attribute12;
1165     l_template_rec.attribute13            := l_tmpl_rec.attribute13;
1166     l_template_rec.attribute14            := l_tmpl_rec.attribute14;
1167     l_template_rec.attribute15            := l_tmpl_rec.attribute15;
1168     l_template_rec.cz_export_wf_key       := l_tmpl_rec.cz_export_wf_key;
1169     l_template_rec.xprt_clause_mandatory_flag := l_tmpl_rec.xprt_clause_mandatory_flag;
1170     l_template_rec.xprt_scn_code           := l_tmpl_rec.xprt_scn_code;
1171     l_template_rec.approval_wf_key         := l_tmpl_rec.approval_wf_key;
1172 --MLS for templates
1173     l_template_rec.language                := l_tmpl_rec.language;
1174     l_template_rec.translated_from_tmpl_id := l_tmpl_rec.translated_from_tmpl_id;
1175 
1176     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1177         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
1178     END IF;
1179 
1180     OKC_TERMS_COPY_PVT.copy_tc(
1181                                   p_api_version            => 1,
1182                                   p_init_msg_list          => FND_API.G_FALSE,
1183                                   p_commit                 => FND_API.G_FALSE,
1184                                   p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
1185                                   p_source_doc_id          => p_template_id,
1186                                   p_target_doc_type        => l_document_type,
1187                                   p_target_doc_id          => x_template_id,
1188                                   p_keep_version           => 'N',
1189                                   p_article_effective_date => l_tmpl_rec.start_date,
1190                                   p_target_template_rec    => l_template_rec,
1191                                   x_return_status          => x_return_status,
1192                                   x_msg_data               => x_msg_data,
1193                                   x_msg_count              => x_msg_count);
1194    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1195        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);
1196    END IF;
1197 
1198    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1199            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1200    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1201            RAISE FND_API.G_EXC_ERROR ;
1202    END IF;
1203 ----------------------------------------------
1204    -- bug#4083525 do not invoke deliverables API for sell side
1205    -- to be removed when sell side deliverables are enabled.
1206    IF l_template_rec.intent = 'S' THEN
1207       l_copy_deliverables := 'N';
1208    ELSE
1209       l_copy_deliverables := p_copy_deliverables;
1210    END IF;
1211 
1212    IF l_copy_deliverables='Y' THEN
1213 
1214         /*  Call Deliverable API to copy Deliverables */
1215 
1216        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1217            FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision.  ');
1218        END IF;
1219     -- bug#4075168 New API for Template Revision replacing copy_deliverables
1220 
1221        OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision(
1222        p_api_version         => 1,
1223        p_init_msg_list       => FND_API.G_FALSE,
1224        p_source_doc_type        => OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE,
1225        p_source_doc_id          => p_template_id,
1226        p_target_doc_type        => l_document_type,
1227        p_target_doc_id          => x_template_id,
1228        p_target_doc_number     => l_tmpl_rec.template_name,
1229        p_copy_del_attachments_yn     => 'Y',
1230        x_msg_data            => x_msg_data,
1231        x_msg_count           => x_msg_count,
1232        x_return_status       => x_return_status );
1233 
1234 
1235        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1236        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision');
1237        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:OKC_DELIVERABLE_PROCESS_PVT.CopyDelForTemplateRevision x_return_status : '||x_return_status);
1238        END IF;
1239 
1240        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1241        RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1242        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1243        RAISE FND_API.G_EXC_ERROR ;
1244        END IF;
1245 
1246    END IF;--  l_copy_deliverables='Y'
1247 
1248 -----------------------------------------------
1249    IF FND_API.To_Boolean( p_commit ) THEN
1250       COMMIT WORK;
1251    END IF;
1252 
1253 -- Standard call to get message count and if count is 1, get message info.
1254    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1255 
1256    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1257         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving create_template_revision');
1258    END IF;
1259 
1260 EXCEPTION
1261 
1262 WHEN FND_API.G_EXC_ERROR THEN
1263 
1264  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1265      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving create_template_revision: OKC_API.G_EXCEPTION_ERROR Exception');
1266  END IF;
1267 
1268  IF l_get_tmpl_csr%ISOPEN THEN
1269     CLOSE l_get_tmpl_csr;
1270  END IF;
1271 
1272  ROLLBACK TO g_create_template_revision_grp;
1273  x_return_status := G_RET_STS_ERROR ;
1274  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1275 
1276  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1277  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1278       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving create_template_revision: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1279  END IF;
1280 
1281  IF l_get_tmpl_csr%ISOPEN THEN
1282     CLOSE l_get_tmpl_csr;
1283  END IF;
1284 
1285  ROLLBACK TO g_create_template_revision_grp;
1286  x_return_status := G_RET_STS_UNEXP_ERROR ;
1287  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1288 
1289 WHEN OTHERS THEN
1290 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1291    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving create_template_revision because of EXCEPTION: '||sqlerrm);
1292 END IF;
1293 
1294 
1295  IF l_get_tmpl_csr%ISOPEN THEN
1296     CLOSE l_get_tmpl_csr;
1297  END IF;
1298 
1299 ROLLBACK TO g_create_template_revision_grp;
1300 x_return_status := G_RET_STS_UNEXP_ERROR ;
1301 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1302      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1303 END IF;
1304 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1305 END create_template_revision;
1306 
1307 /*
1308 -- To be used while copying a document from archive to make a new document.
1309 -- This functionality is only supported in OM.
1310 */
1311 
1312 Procedure copy_archived_doc   (
1313                         p_api_version             IN    Number,
1314                         p_init_msg_list           IN    Varchar2,
1315                         p_commit                  IN    Varchar2,
1316                         p_source_doc_type         IN    Varchar2,
1317                         p_source_doc_id           IN    Number,
1318                         p_source_version_number   IN    Number,
1319                         p_target_doc_type         IN    Varchar2,
1320                         p_target_doc_id           IN    Number,
1321                         p_document_number         IN    Varchar2,
1322                         p_allow_duplicate_terms   IN    Varchar2,
1323                         x_return_status           OUT   NOCOPY Varchar2,
1324                         x_msg_data                OUT   NOCOPY Varchar2,
1325                         x_msg_count               OUT   NOCOPY Number
1326                         ) IS
1327 l_api_version                CONSTANT NUMBER := 1;
1328 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_archived_doc';
1329 BEGIN
1330 
1331     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1332       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_archived_doc');
1333       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1334       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1335       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1336       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1337       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
1338       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
1339       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_version_number : '||p_source_version_number);
1340       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
1341       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
1342       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_document_number : '||p_document_number);
1343       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_allow_duplicate_terms : '||p_allow_duplicate_terms);
1344     END IF;
1345 
1346 
1347     -- Standard Start of API savepoint
1348     SAVEPOINT g_copy_archived_doc_GRP;
1349 
1350     -- Standard call to check for call compatibility.
1351     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1352       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1353     END IF;
1354 
1355     -- Initialize message list if p_init_msg_list is set to TRUE.
1356     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1357       FND_MSG_PUB.initialize;
1358     END IF;
1359 
1360     --  Initialize API return status to success
1361     x_return_status := FND_API.G_RET_STS_SUCCESS;
1362 
1363 
1364     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1365         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_archived_doc');
1366     END IF;
1367 
1368     OKC_TERMS_COPY_PVT.copy_archived_doc(
1369                                   p_api_version            => 1,
1370                                   p_init_msg_list          => FND_API.G_FALSE,
1371                                   p_commit                 => FND_API.G_FALSE,
1372                                   p_source_doc_type        => p_source_doc_type,
1373                                   p_source_doc_id          => p_source_doc_id,
1374                                   p_target_doc_type        => p_target_doc_type,
1375                                   p_target_doc_id          => p_target_doc_id,
1376                                   p_source_version_number  =>p_source_version_number,
1377                                   p_document_number        => p_document_number,
1378                                   p_allow_duplicates       => p_allow_duplicate_terms,
1379                                   x_return_status          => x_return_status,
1380                                   x_msg_data               => x_msg_data,
1381                                   x_msg_count              => x_msg_count);
1382    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1383        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);
1384    END IF;
1385 
1386    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1387            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1388    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1389            RAISE FND_API.G_EXC_ERROR ;
1390    END IF;
1391 
1392    IF FND_API.To_Boolean( p_commit ) THEN
1393       COMMIT WORK;
1394    END IF;
1395 
1396 -- Standard call to get message count and if count is 1, get message info.
1397    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1398 
1399    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1400         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_archived_doc');
1401    END IF;
1402 
1403 EXCEPTION
1404 
1405 WHEN FND_API.G_EXC_ERROR THEN
1406 
1407  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1408      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_archived_doc: OKC_API.G_EXCEPTION_ERROR Exception');
1409  END IF;
1410 
1411  ROLLBACK TO g_copy_archived_doc_grp;
1412  x_return_status := G_RET_STS_ERROR ;
1413  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1414 
1415  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1416  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1417       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_archived_doc: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1418  END IF;
1419 
1420  ROLLBACK TO g_copy_archived_doc_grp;
1421  x_return_status := G_RET_STS_UNEXP_ERROR ;
1422  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1423 
1424 WHEN OTHERS THEN
1425 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1426    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_archived_doc because of EXCEPTION: '||sqlerrm);
1427 END IF;
1428 
1429 ROLLBACK TO g_copy_archived_doc_grp;
1430 x_return_status := G_RET_STS_UNEXP_ERROR ;
1431 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1432      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1433 END IF;
1434 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1435 END copy_archived_doc;
1436 
1437 /*************************************************************
1438 07-APR-2004 pnayani: bug#3524864 added copy_response_doc API              |
1439 This API is used for copying terms, deliverables and document attachments from
1440 one response doc to another. Initially coded to support proxy bidding process in sourcing.
1441 p_source_doc_type               - source document type,
1442 p_source_doc_id             - source document id,
1443 p_target_doc_type               - target document type,
1444 p_target_doc_id             - target document id,
1445 p_target_doc_number             - target document number,
1446 p_keep_version              - passed as 'Y'
1447                             - 'N' is not supported as this API is called to copy terms from
1448                             - one doc to another keeping the original reference same as the source
1449 p_article_effective_date    - article effective date,
1450 p_copy_doc_attachments      - flag indicates if doc attachments should be copied, valid values Y/N,
1451 p_allow_duplicate_terms     - flag with valid values Y/N,
1452 p_copy_attachments_by_ref   - flag indicates if document attachments should be
1453                             - physically copied or referenced, valid values Y/N,
1454 
1455 *************************************************************/
1456 
1457 Procedure copy_response_doc     (
1458                         p_api_version             IN    Number,
1459                         p_init_msg_list           IN    Varchar2 ,
1460                         p_commit                  IN    Varchar2 ,
1461                         p_source_doc_type         IN    Varchar2,
1462                         p_source_doc_id           IN    Number,
1463                         p_target_doc_type         IN OUT NOCOPY Varchar2,
1464                         p_target_doc_id           IN OUT NOCOPY Number,
1465                         p_target_doc_number       IN    Varchar2 ,
1466                         p_keep_version            IN    Varchar2 ,
1467                         p_article_effective_date  IN    Date ,
1468                         p_copy_doc_attachments    IN    Varchar2 ,
1469                         p_allow_duplicate_terms   IN    Varchar2,
1470                         p_copy_attachments_by_ref IN    Varchar2,
1471                         x_return_status           OUT   NOCOPY VARCHAR2,
1472                         x_msg_data                OUT   NOCOPY VARCHAR2,
1473                         x_msg_count               OUT   NOCOPY Number
1474                         )
1475 IS
1476 l_api_version                CONSTANT NUMBER := 1;
1477 l_api_name                   CONSTANT VARCHAR2(30) := 'copy_response_doc';
1478 
1479 
1480 
1481 BEGIN
1482 
1483     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1484       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Entered OKC_TERMS_COPY_GRP.copy_response_doc');
1485       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: Parameter List ');
1486       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_api_version : '||p_api_version);
1487       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_init_msg_list : '||p_init_msg_list);
1488       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_commit : '||p_commit);
1489       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_type : '||p_source_doc_type);
1490       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_source_doc_id : '||p_source_doc_id);
1491       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_type : '||p_target_doc_type);
1492       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_id : '||p_target_doc_id);
1493       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_keep_version : '||p_keep_version);
1494       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_article_effective_date : '||p_article_effective_date);
1495       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_target_doc_number : '||p_target_doc_number);
1496       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_doc_attachments : '||p_copy_doc_attachments);
1497       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_allow_duplicate_terms : '||p_allow_duplicate_terms);
1498       FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'100: p_copy_attachments_by_ref : '||p_copy_attachments_by_ref);
1499     END IF;
1500 
1501 
1502     -- Standard Start of API savepoint
1503     SAVEPOINT g_copy_doc_GRP;
1504 
1505     -- Standard call to check for call compatibility.
1506     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1507       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1508     END IF;
1509 
1510     -- Initialize message list if p_init_msg_list is set to TRUE.
1511     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1512       FND_MSG_PUB.initialize;
1513     END IF;
1514 
1515     --  Initialize API return status to success
1516     x_return_status := FND_API.G_RET_STS_SUCCESS;
1517 
1518 
1519     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1520         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: calling OKC_TERMS_COPY_PVT.copy_tc');
1521     END IF;
1522     -- copy contract terms
1523     OKC_TERMS_COPY_PVT.copy_tc(
1524                                   p_api_version            => 1,
1525                                   p_init_msg_list          => FND_API.G_FALSE,
1526                                   p_commit                     => FND_API.G_FALSE,
1527                                   p_source_doc_type        => p_source_doc_type,
1528                                   p_source_doc_id          => p_source_doc_id ,
1529                                   p_target_doc_type        => p_target_doc_type,
1530                                   p_target_doc_id          => p_target_doc_id,
1531                                   p_keep_version           => 'Y',
1532                                   p_article_effective_date => p_article_effective_date,
1533                                   p_target_template_rec    => G_TEMPLATE_MISS_REC,
1534                                   p_document_number        => p_target_doc_number,
1535                                   p_allow_duplicates       => p_allow_duplicate_terms,
1536                                   p_keep_orig_ref          => 'Y',
1537                                   x_return_status              => x_return_status,
1538                                   x_msg_data               => x_msg_data,
1539                                   x_msg_count              => x_msg_count);
1540    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1541        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);
1542    END IF;
1543 
1544    IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1545            RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1546    ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1547            RAISE FND_API.G_EXC_ERROR ;
1548    END IF;
1549 -----------------------------------------------------
1550 
1551 
1552      /*  Call Deliverable API to copy Deliverables */
1553 
1554             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1555                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:Entering OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables.');
1556                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:source  busdoc id: '||to_char(p_source_doc_id));
1557                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc id: '||to_char(p_target_doc_id));
1558                FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000:target busdoc type: '||p_target_doc_type);
1559             END IF;
1560 
1561 
1562             OKC_DELIVERABLE_PROCESS_PVT.copy_response_deliverables (
1563             p_api_version         => 1,
1564             p_init_msg_list       => FND_API.G_FALSE,
1565             p_source_doc_id       => p_source_doc_id,
1566             p_source_doc_type     => p_source_doc_type,
1567             p_target_doc_id       => p_target_doc_id,
1568             p_target_doc_type     => p_target_doc_type,
1569             p_target_doc_number   => p_target_doc_number,
1570             x_msg_data            => x_msg_data,
1571             x_msg_count           => x_msg_count,
1572             x_return_status       => x_return_status );
1573 
1574             IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1575                 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1100:Finished OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables  ');
1576                 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);
1577             END IF;
1578 
1579             IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1580                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1581             ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1582                 RAISE FND_API.G_EXC_ERROR ;
1583             END IF;
1584 
1585 -- copy doc attachments if the flag is set to Y
1586 IF p_copy_doc_attachments ='Y' THEN
1587 
1588     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1589        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1150:Entering OKC_CONTRACT_DOCS_GRP.Copy_Attachments  ');
1590     END IF;
1591 
1592     OKC_CONTRACT_DOCS_GRP.Copy_Attachments (
1593                           p_api_version  =>1,
1594                           p_init_msg_list =>FND_API.G_FALSE,
1595                           x_msg_data            => x_msg_data,
1596                           x_msg_count           => x_msg_count,
1597                           x_return_status       => x_return_status,
1598                           p_from_bus_doc_type => p_source_doc_type ,
1599                           p_from_bus_doc_id   => p_source_doc_id,
1600                           p_from_bus_doc_version => -99,
1601                           p_to_bus_doc_type    => p_target_doc_type,
1602                           p_to_bus_doc_id     => p_target_doc_id,
1603                           p_to_bus_doc_version => -99,
1604                           p_copy_by_ref => p_copy_attachments_by_ref) ;
1605 
1606        IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1607           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1151:Finished OKC_CONTRACT_DOCS_GRP.Copy_Attachments ');
1608           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);
1609        END IF;
1610 
1611        IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1612                RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
1613        ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1614                RAISE FND_API.G_EXC_ERROR ;
1615        END IF;
1616   END IF;
1617 
1618 -------------------------------------------------------------
1619 
1620    IF FND_API.To_Boolean( p_commit ) THEN
1621       COMMIT WORK;
1622    END IF;
1623 
1624 -- Standard call to get message count and if count is 1, get message info.
1625    FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1626 
1627    IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1628         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'1000: Leaving copy_response_doc');
1629    END IF;
1630 
1631 EXCEPTION
1632 
1633 WHEN FND_API.G_EXC_ERROR THEN
1634 
1635  IF ( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1636      FND_LOG.STRING( FND_LOG.LEVEL_ERROR ,g_module||l_api_name,'800: Leaving copy_response_doc: OKC_API.G_EXCEPTION_ERROR Exception');
1637  END IF;
1638 
1639  ROLLBACK TO g_copy_doc_grp;
1640  x_return_status := G_RET_STS_ERROR ;
1641  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1642 
1643  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1644  IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1645       FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'900: Leaving copy_response_doc: OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
1646  END IF;
1647 
1648  ROLLBACK TO g_copy_doc_grp;
1649  x_return_status := G_RET_STS_UNEXP_ERROR ;
1650  FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1651 
1652 WHEN OTHERS THEN
1653 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1654    FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,g_module||l_api_name,'1000: Leaving copy_response_doc because of EXCEPTION: '||sqlerrm);
1655 END IF;
1656 
1657 ROLLBACK TO g_copy_doc_grp;
1658 x_return_status := G_RET_STS_UNEXP_ERROR ;
1659 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
1660      FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
1661 END IF;
1662 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1663 END copy_response_doc;
1664 
1665 
1666 
1667 END OKC_TERMS_COPY_GRP;