DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_CONTRACT_TPL_PUB

Source


1 PACKAGE BODY CS_Contract_Tpl_Pub as
2 /* $Header: csctptpb.pls 115.2 99/07/16 08:53:30 porting ship  $ */
3 
4 PROCEDURE Contract_to_Template
5 (
6 	p_api_version             	IN NUMBER,
7 	p_init_msg_list           	IN VARCHAR2  DEFAULT FND_API.G_FALSE,
8 	p_commit                  	IN VARCHAR2  DEFAULT FND_API.G_FALSE,
9 	x_return_status          	OUT VARCHAR2,
10 	x_msg_count              	OUT NUMBER,
11 	x_msg_data               	OUT VARCHAR2,
12 	p_contract_id	         	IN NUMBER,
13 	p_template_name			IN VARCHAR2,
14 	x_template_id			OUT NUMBER
15 ) IS
16     	CURSOR l_Contract_csr IS
17       		SELECT *
18  		FROM cs_contracts
19        		WHERE contract_id = p_contract_id;
20     	CURSOR l_Service_Csr IS
21       		SELECT *
22  		FROM cs_cp_services
23        		WHERE contract_id = p_contract_id;
24 
25 
26 	l_api_name	  	CONSTANT VARCHAR2(30) := 'Contract_to_Template';
27 	l_api_version 		CONSTANT NUMBER       := 1.0;
28 	l_ContractTmpl_Rec	Cs_ContractTmpl_Pvt.ContractTmpl_Rec_Type;
29 	l_ContractTmpl_Val_Rec	Cs_ContractTmpl_Pvt.ContractTmpl_Val_Rec_Type;
30 	l_object_version_number NUMBER;
31 	l_contract_template_id	NUMBER;
32 	l_contract_line_template_id	NUMBER;
33 	l_Contract_rec          l_Contract_Csr%ROWTYPE;
34 	l_Service_Rec           l_Service_Csr%ROWTYPE;
35 	CONTRACT_NOT_FOUND	EXCEPTION;
36 BEGIN
37 	l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
38                                               G_PKG_NAME,
39                                               l_api_version,
40                                               p_api_version,
41                                               p_init_msg_list,
42                                               l_api_type,
43                                               x_return_status);
44 	--dbms_output.put_line('l_return_status ' || l_return_status);
45     	IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
46       		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
47     	ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
48       		RAISE FND_API.G_EXC_ERROR;
49     	END IF;
50 	-- Get the contract details
51 	Open l_Contract_Csr;
52 	Fetch l_Contract_Csr into l_Contract_Rec;
53 	if l_Contract_Csr%NOTFOUND THEN
54 		RAISE CONTRACT_NOT_FOUND;
55 	end if;
56 
57 		l_ContractTmpl_Rec.contract_template_id           := NULL;
58     		l_ContractTmpl_Rec.name                           := p_template_name;
59     		l_ContractTmpl_Rec.contract_type_id               := l_Contract_Rec.contract_type_id;
60     		l_ContractTmpl_Rec.duration                       := l_Contract_Rec.duration;
61     		l_ContractTmpl_Rec.period_code                    := l_Contract_Rec.period_code;
62     		l_ContractTmpl_Rec.workflow                       := l_Contract_Rec.workflow;
63     		l_ContractTmpl_Rec.price_list_id                  := l_Contract_Rec.price_list_id;
64     		l_ContractTmpl_Rec.currency_code                  := l_Contract_Rec.currency_code;
65     		l_ContractTmpl_Rec.conversion_type_code           := l_Contract_Rec.conversion_type_code;
66     		l_ContractTmpl_Rec.conversion_rate                := l_Contract_Rec.conversion_rate;
67     		l_ContractTmpl_Rec.conversion_date                := l_Contract_Rec.conversion_date;
68     		l_ContractTmpl_Rec.invoicing_rule_id              := l_Contract_Rec.invoicing_rule_id;
69     		l_ContractTmpl_Rec.accounting_rule_id             := l_Contract_Rec.accounting_rule_id;
70     		l_ContractTmpl_Rec.billing_frequency_period       := l_Contract_Rec.billing_frequency_period;
71     		l_ContractTmpl_Rec.create_sales_order             := l_Contract_Rec.create_sales_order;
72     		l_ContractTmpl_Rec.renewal_rule                   := l_Contract_Rec.renewal_rule;
73     		l_ContractTmpl_Rec.termination_rule               := l_Contract_Rec.termination_rule;
74     		l_ContractTmpl_Rec.terms_id                       := l_Contract_Rec.terms_id;
75     		l_ContractTmpl_Rec.tax_handling                   := l_Contract_Rec.tax_handling;
76     		l_ContractTmpl_Rec.tax_exempt_num                 := l_Contract_Rec.tax_exempt_num;
77     		l_ContractTmpl_Rec.tax_exempt_reason_code         := l_Contract_Rec.tax_exempt_reason_code;
78     		---l_ContractTmpl_Rec.contract_amount                := l_Contract_Rec.contract_amount;
79     		l_ContractTmpl_Rec.discount_id                    := l_Contract_Rec.discount_id;
80     		l_ContractTmpl_Rec.last_update_date               := sysdate;
81     		l_ContractTmpl_Rec.last_updated_by                := FND_GLOBAL.user_id;
82     		l_ContractTmpl_Rec.creation_date                  := sysdate;
83     		l_ContractTmpl_Rec.created_by                     := FND_GLOBAL.user_id;
84     		l_ContractTmpl_Rec.auto_renewal_flag              := l_Contract_Rec.auto_renewal_flag;
85     		l_ContractTmpl_Rec.last_update_login              := FND_GLOBAL.login_id;
86     		l_ContractTmpl_Rec.start_date_active              := l_Contract_Rec.start_date_active;
87     		l_ContractTmpl_Rec.end_date_active                := l_Contract_Rec.end_date_active;
88     		l_ContractTmpl_Rec.attribute1                     := l_Contract_Rec.attribute1;
89     		l_ContractTmpl_Rec.attribute2                     := l_Contract_Rec.attribute2;
90     		l_ContractTmpl_Rec.attribute3                     := l_Contract_Rec.attribute3;
91     		l_ContractTmpl_Rec.attribute4                     := l_Contract_Rec.attribute4;
92     		l_ContractTmpl_Rec.attribute5                     := l_Contract_Rec.attribute5;
93     		l_ContractTmpl_Rec.attribute6                     := l_Contract_Rec.attribute6;
94     		l_ContractTmpl_Rec.attribute7                     := l_Contract_Rec.attribute7;
95     		l_ContractTmpl_Rec.attribute8                     := l_Contract_Rec.attribute8;
96     		l_ContractTmpl_Rec.attribute9                     := l_Contract_Rec.attribute9;
97     		l_ContractTmpl_Rec.attribute10                    := l_Contract_Rec.attribute10;
98     		l_ContractTmpl_Rec.attribute11                    := l_Contract_Rec.attribute11;
99     		l_ContractTmpl_Rec.attribute12                    := l_Contract_Rec.attribute12;
100     		l_ContractTmpl_Rec.attribute13                    := l_Contract_Rec.attribute13;
101     		l_ContractTmpl_Rec.attribute14                    := l_Contract_Rec.attribute14;
102     		l_ContractTmpl_Rec.attribute15                    := l_Contract_Rec.attribute15;
103     		l_ContractTmpl_Rec.context                        := l_Contract_Rec.context;
104     		l_ContractTmpl_Rec.object_version_number          := 1;
105 
106 	--dbms_output.put_line('Before inserting template');
107 	-- Call insert API for cs_contracts_template
108 		CS_ContractTmpl_Pvt.Insert_Row
109   		(
110     			p_api_version                  => 1.0,
111     			p_init_msg_list                => TAPI_DEV_KIT.G_FALSE,
112     			p_validation_level             => 100,
113     			p_commit                       => TAPI_DEV_KIT.G_FALSE,
114     			x_return_status                => l_return_status,
115     			x_msg_count                    => l_msg_count,
116     			x_msg_data                     => l_msg_data,
117     			p_contracttmpl_rec             => l_ContractTmpl_Rec,
118     			x_contract_template_id         => l_contract_template_id,
119     			x_object_version_number        => l_object_version_number
120 		);
121 	--dbms_output.put_line('After inserting template');
122 		FOR l_Service_Rec in l_Service_Csr
123 		LOOP
124 			--- insert into cs_contract_line_tplts
125 			CS_CONTRACTLTMPL_PVT.Insert_Row
126   			(
127     			p_api_version                  => 1.0,
128     			p_init_msg_list                => TAPI_DEV_KIT.G_FALSE,
129     			p_validation_level             => 100,
130     			p_commit                       => TAPI_DEV_KIT.G_FALSE,
131     			x_return_status                => l_return_status,
132     			x_msg_count                    => l_msg_count,
133     			x_msg_data                     => l_msg_data,
134     			p_contract_template_id         => l_contract_template_id,
135     			p_coverage_id                  => l_Service_Rec.coverage_schedule_id,
136     			p_service_manufacturing_org_id  => l_Service_Rec.service_manufacturing_org_id,
137     			p_service_inventory_item_id    => l_Service_Rec.service_inventory_item_id,
138     			p_workflow                     => l_Service_Rec.workflow,
139     			p_original_system_reference    => l_Service_Rec.original_system_line_reference,
140     			p_duration              		 => l_Service_Rec.duration_quantity,
141     			p_unit_of_measure_code         => l_Service_Rec.unit_of_measure_code,
142     			p_last_update_date             => sysdate,
143     			p_last_updated_by              => FND_GLOBAL.user_id,
144     			p_creation_date                => sysdate,
145     			p_created_by                   => FND_GLOBAL.user_id,
146     			p_last_update_login            => FND_GLOBAL.login_id,
147     			p_start_date_active            => NULL,
148     			p_end_date_active              => NULL,
149     			p_attribute1                   => l_Service_Rec.attribute1,
150     			p_attribute2                   => l_Service_Rec.attribute2,
151     			p_attribute3                   => l_Service_Rec.attribute3,
152     			p_attribute4                   => l_Service_Rec.attribute4,
153     			p_attribute5                   => l_Service_Rec.attribute5,
154     			p_attribute6                   => l_Service_Rec.attribute6,
155     			p_attribute7                   => l_Service_Rec.attribute7,
156     			p_attribute8                   => l_Service_Rec.attribute8,
157     			p_attribute9                   => l_Service_Rec.attribute9,
158     			p_attribute10                  => l_Service_Rec.attribute10,
159     			p_attribute11                  => l_Service_Rec.attribute11,
160     			p_attribute12                  => l_Service_Rec.attribute12,
161     			p_attribute13                  => l_Service_Rec.attribute13,
162     			p_attribute14                  => l_Service_Rec.attribute14,
163     			p_attribute15                  => l_Service_Rec.attribute15,
164     			p_context                      => l_Service_Rec.context,
165     			p_object_version_number        => 1,
166     			x_contract_line_template_id    => l_contract_line_template_id,
167     			x_object_version_number        => l_object_version_number
168 			);
169 		END LOOP;
170 
171 	CLOSE l_Contract_Csr;
172 
173 	x_template_id         :=  l_contract_template_id;
174 
175 	TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
176 
177 	--dbms_output.put_line('End act');
178 
179   EXCEPTION
180     WHEN CONTRACT_NOT_FOUND THEN
181       IF (l_Contract_csr%ISOPEN) THEN
182         CLOSE l_Contract_csr;
183       ELSIF (l_Service_Csr%ISOPEN) THEN
184         CLOSE l_Service_Csr;
185       END IF;
186       --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || l_api_type);
187       x_return_status := FND_API.G_RET_STS_ERROR;
188       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
189         FND_MESSAGE.SET_NAME('CS', 'CS_CONTRACT_NOT_FOUND');
190 	FND_MSG_PUB.Add;
191       END IF;
192       FND_MSG_PUB.Count_And_Get( p_count	=> x_msg_count,
193 			         p_data		=> x_msg_data,
194 			         p_encoded	=> FND_API.G_FALSE );
195     WHEN FND_API.G_EXC_ERROR THEN
196       IF (l_Contract_csr%ISOPEN) THEN
197         CLOSE l_Contract_csr;
198       ELSIF (l_Service_Csr%ISOPEN) THEN
199         CLOSE l_Service_Csr;
200       END IF;
201       --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || l_api_type);
202       x_return_status := FND_API.G_RET_STS_ERROR;
203       FND_MSG_PUB.Count_And_Get( p_count	=> x_msg_count,
204 			         p_data		=> x_msg_data,
205 			         p_encoded	=> FND_API.G_FALSE );
206 
207     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
208 	--dbms_output.put_line('UNEXP EXCEPTION');
209       IF (l_Contract_csr%ISOPEN) THEN
210         CLOSE l_Contract_csr;
211       ELSIF (l_Service_Csr%ISOPEN) THEN
212         CLOSE l_Service_Csr;
213       END IF;
214       --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || l_api_type);
215       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
216       FND_MSG_PUB.Count_And_Get( p_count	=> x_msg_count,
217 			         p_data		=> x_msg_data,
218 			         p_encoded	=> FND_API.G_FALSE );
219 END Contract_to_template;
220 
221 
222 PROCEDURE Template_to_Contract
223 (
224 	p_api_version		  	IN NUMBER,
225 	p_init_msg_list	  		IN VARCHAR2  DEFAULT FND_API.G_FALSE,
226        	p_commit                  	IN VARCHAR2  DEFAULT FND_API.G_FALSE,
227 	x_return_status	 		OUT VARCHAR2,
228 	x_msg_count		 	OUT NUMBER,
229 	x_msg_data		 	OUT VARCHAR2,
230 	p_template_id		  	IN NUMBER,
231 	p_customer_id		 	IN NUMBER,
232 	p_contract_number	 	IN NUMBER,
233 	p_bill_to_site_use_id	 	IN NUMBER,
234 	p_ship_to_site_use_id	 	IN NUMBER,
235 	p_start_date			IN DATE,
236 	p_end_date			IN DATE,
237 	x_contract_id			OUT NUMBER
238 )
239 IS
240 	Cursor l_Contract_Tmpl_Csr is
241 		Select * from cs_contract_templates
242 	where contract_template_id = p_template_id;
243 	Cursor l_Tmpl_Csr is
244 		Select * from cs_contract_line_tplts
245 			where contract_template_id =  p_template_id;
246 
247 	l_api_name	  	CONSTANT VARCHAR2(30) := 'Template_to_Contract';
248 	l_api_version 		CONSTANT NUMBER       := 1.0;
249 	l_Contract_Tmpl_Rec	l_Contract_Tmpl_Csr%ROWTYPE;
250 	l_Tmpl_Rec		l_Tmpl_Csr%ROWTYPE;
251 	l_contract_rec 		CS_CONTRACT_PVT.Contract_Rec_Type;
252 	l_object_version_number NUMBER;
253 	l_contract_id		NUMBER;
254 	l_cp_service_id		NUMBER;
255 	template_not_found	EXCEPTION;
256 BEGIN
257 	l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
258                                               G_PKG_NAME,
259                                               l_api_version,
260                                               p_api_version,
261                                               p_init_msg_list,
262                                               l_api_type,
263                                               x_return_status);
264 	--dbms_output.put_line('l_return_status ' || l_return_status);
265     	IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
266       		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
267     	ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
268       		RAISE FND_API.G_EXC_ERROR;
269     	END IF;
270 	-- Get the contract template details
271 	Open l_Contract_Tmpl_Csr;
272 	Fetch l_Contract_Tmpl_Csr into l_Contract_Tmpl_Rec;
273 	if l_Contract_Tmpl_Csr%NOTFOUND THEN
274 		raise TEMPLATE_NOT_FOUND;
275 	end if;
276 	Close l_Contract_Tmpl_Csr;
277 	--dbms_output.put_line('Template Found');
278 
279 	l_contract_rec.contract_id                    := NULL;
280     	l_contract_rec.contract_number                := p_contract_number;
281     	l_contract_rec.workflow                       := l_Contract_Tmpl_Rec.workflow;
282     	l_contract_rec.workflow_process_id            := NULL;
283     	l_contract_rec.agreement_id                   := null;
284     	l_contract_rec.price_list_id                  := l_Contract_Tmpl_Rec.price_list_id;
285     	l_contract_rec.currency_code                  := l_Contract_Tmpl_Rec.currency_code;
286     	l_contract_rec.conversion_type_code           := l_Contract_Tmpl_Rec.conversion_type_code;
287     	l_contract_rec.conversion_rate                := l_Contract_Tmpl_Rec.conversion_rate;
288     	l_contract_rec.conversion_date                := l_Contract_Tmpl_Rec.conversion_date;
289     	l_contract_rec.invoicing_rule_id              := l_Contract_Tmpl_Rec.invoicing_rule_id;
290     	l_contract_rec.accounting_rule_id             := l_Contract_Tmpl_Rec.accounting_rule_id;
291     	l_contract_rec.billing_frequency_period       := l_Contract_Tmpl_Rec.billing_frequency_period;
292     	l_contract_rec.first_bill_date                := NULL;
293     	l_contract_rec.next_bill_date                 := NULL;
294     	l_contract_rec.create_sales_order             := l_Contract_Tmpl_Rec.create_sales_order;
295     	l_contract_rec.renewal_rule                   := l_Contract_Tmpl_Rec.renewal_rule;
296     	l_contract_rec.termination_rule               := l_Contract_Tmpl_Rec.termination_rule;
297     	l_contract_rec.bill_to_site_use_id            := p_bill_to_site_use_id;
298     	l_contract_rec.contract_type_id               := l_Contract_Tmpl_Rec.contract_type_id;
299     	l_contract_rec.contract_status_id               := FND_PROFILE.Value('CS_CONTRACTS_DEFAULT_HDR_STATUS');
300     	l_contract_rec.contract_template_id           := p_template_id;
301     	l_contract_rec.contract_group_id              := NULL;
302     	l_contract_rec.customer_id                    := p_customer_id;
303     	l_contract_rec.duration                       := l_Contract_Tmpl_Rec.duration;
304     	l_contract_rec.period_code                    := l_Contract_Tmpl_Rec.period_code;
305     	l_contract_rec.ship_to_site_use_id            := p_ship_to_site_use_id;
306     	l_contract_rec.salesperson_id                 := NULL;
307     	l_contract_rec.ordered_by_contact_id          := NULL;
308     	l_contract_rec.source_code                    := NULL;
309     	l_contract_rec.source_reference               := NULL;
310     	l_contract_rec.terms_id                       := l_Contract_Tmpl_Rec.terms_id;
311     	l_contract_rec.po_number                      := NULL;
312     	l_contract_rec.bill_on                        := NULL;
313     	l_contract_rec.tax_handling                   := l_Contract_Tmpl_Rec.tax_handling;
314     	l_contract_rec.tax_exempt_num                 := l_Contract_Tmpl_Rec.tax_exempt_num;
315     	l_contract_rec.tax_exempt_reason_code         := l_Contract_Tmpl_Rec.tax_exempt_reason_code;
316 ---    	l_contract_rec.contract_amount                := l_Contract_Tmpl_Rec.contract_amount;
317     	l_contract_rec.auto_renewal_flag              := l_Contract_Tmpl_Rec.auto_renewal_flag;
318     	l_contract_rec.original_end_date              := p_end_date;
319     	l_contract_rec.terminate_reason_code          := NULL;
320     	l_contract_rec.discount_id                    := l_Contract_Tmpl_Rec.discount_id;
321     	l_contract_rec.po_required_to_service         := NULL;
322     	l_contract_rec.pre_payment_required           := NULL;
323     	l_contract_rec.last_update_date               := sysdate;
324     	l_contract_rec.last_updated_by                := FND_GLOBAL.user_id;
325     	l_contract_rec.creation_date                  := sysdate;
326     	l_contract_rec.created_by                     := FND_GLOBAL.user_id;
327     	l_contract_rec.last_update_login              := FND_GLOBAL.login_id;
328     	l_contract_rec.start_date_active              := p_start_date;
329     	l_contract_rec.end_date_active                := p_end_date;
330     	l_contract_rec.attribute1                     := l_Contract_Tmpl_Rec.attribute1;
331     	l_contract_rec.attribute2                     := l_Contract_Tmpl_Rec.attribute2;
332     	l_contract_rec.attribute3                     := l_Contract_Tmpl_Rec.attribute3;
333     	l_contract_rec.attribute4                     := l_Contract_Tmpl_Rec.attribute4;
334     	l_contract_rec.attribute5                     := l_Contract_Tmpl_Rec.attribute5;
335     	l_contract_rec.attribute6                     := l_Contract_Tmpl_Rec.attribute6;
336     	l_contract_rec.attribute7                     := l_Contract_Tmpl_Rec.attribute7;
337     	l_contract_rec.attribute8                     := l_Contract_Tmpl_Rec.attribute8;
338     	l_contract_rec.attribute9                     := l_Contract_Tmpl_Rec.attribute9;
339     	l_contract_rec.attribute10                    := l_Contract_Tmpl_Rec.attribute10;
340 	l_contract_rec.attribute11                    := l_Contract_Tmpl_Rec.attribute11;
341 	l_contract_rec.attribute12                    := l_Contract_Tmpl_Rec.attribute12;
342     	l_contract_rec.attribute13                    := l_Contract_Tmpl_Rec.attribute13;
343     	l_contract_rec.attribute14                    := l_Contract_Tmpl_Rec.attribute14;
344     	l_contract_rec.attribute15                    := l_Contract_Tmpl_Rec.attribute15;
345     	l_contract_rec.context                        := l_Contract_Tmpl_Rec.context;
346     	l_contract_rec.object_version_number          := 1;
347 
348 	--dbms_output.put_line('before insert');
349 	CS_CONTRACT_PVT.insert_row
350   	(
351     		p_api_version                  => 1.0,
352     		p_init_msg_list                => TAPI_DEV_KIT.G_FALSE,
353     		p_validation_level             => 100,
354     		p_commit                       => TAPI_DEV_KIT.G_FALSE,
355     		x_return_status                => l_return_status,
356     		x_msg_count                    => l_msg_count,
357     		x_msg_data                     => l_msg_data,
358     		p_contract_rec                 => l_contract_rec,
359     		x_contract_id                  => l_contract_id,
360     		x_object_version_number        => l_object_version_number
361 	);
362 
363 	FOR l_Tmpl_Rec in l_Tmpl_Csr LOOP
364 		--dbms_output.put_line('Inserted lines');
365 		CS_SERVICES_PVT.Insert_Service
366   		(
367     			p_api_version                  => 1.0,
368     			p_init_msg_list                => TAPI_DEV_KIT.G_FALSE,
369     			p_validation_level             => 100,
370     			p_commit                       => TAPI_DEV_KIT.G_FALSE,
371     			x_return_status                => l_return_status,
372     			x_msg_count                    => l_msg_count,
373     			x_msg_data                     => l_msg_data,
374     			p_contract_line_template_id    => l_Tmpl_Rec.contract_line_template_id,
375     			p_contract_id                  => l_contract_id,
376 			p_contract_line_status_id	=> FND_PROFILE.VALUE('CS_CONTRACTS_DEFAULT_LINE_STATUS'),
377     			p_service_inventory_item_id    => l_Tmpl_Rec.service_inventory_item_id,
378     			p_service_manufacturing_org_id => l_Tmpl_Rec.service_manufacturing_org_id,
379     			p_original_start_date          => l_Tmpl_Rec.start_date_active,
380     			p_original_end_date            => l_Tmpl_Rec.end_date_active,
381     			p_workflow                     => l_Tmpl_Rec.workflow,
382     			p_riginl_systm_lin_rfrnc       => l_Tmpl_Rec.original_system_reference,
383     			p_duration_quantity            => l_Tmpl_Rec.duration,
384     			p_unit_of_measure_code         => l_Tmpl_Rec.unit_of_measure_code,
385     			p_creation_date                => sysdate,
386     			p_created_by                   => FND_GLOBAL.user_id,
387     			p_last_update_date             => sysdate,
388     			p_last_updated_by              => FND_GLOBAL.user_id,
389     			p_last_update_login            => FND_GLOBAL.login_id,
390     			p_start_date_active            => l_Tmpl_Rec.start_date_active,
391     			p_end_date_active              => l_Tmpl_Rec.end_date_active,
392     			x_cp_service_id                => l_cp_service_id
393 		);
394 	END LOOP;
395 
396 	x_contract_id := l_contract_id;
397 
398 	TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
399 
400 	--dbms_output.put_line('End act');
401 
402   EXCEPTION
403     WHEN TEMPLATE_NOT_FOUND THEN
404       IF (l_Contract_Tmpl_csr%ISOPEN) THEN
405         CLOSE l_Contract_Tmpl_csr;
406       END IF;
407       --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || l_api_type);
408       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
409       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
410         FND_MESSAGE.SET_NAME('CS', 'CS_TEMPLATE_NOT_FOUND');
411 	FND_MSG_PUB.Add;
412       END IF;
413       FND_MSG_PUB.Count_And_Get( p_count	=> x_msg_count,
414 			         p_data		=> x_msg_data,
415 			         p_encoded	=> FND_API.G_FALSE );
416     WHEN FND_API.G_EXC_ERROR THEN
417       IF (l_Contract_Tmpl_csr%ISOPEN) THEN
418         CLOSE l_Contract_Tmpl_csr;
419       END IF;
420       --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || l_api_type);
421       x_return_status := FND_API.G_RET_STS_ERROR;
422       FND_MSG_PUB.Count_And_Get( p_count	=> x_msg_count,
423 			         p_data		=> x_msg_data,
424 			         p_encoded	=> FND_API.G_FALSE );
425 
426     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
427 	--dbms_output.put_line('UNEXP EXCEPTION');
428       IF (l_Contract_Tmpl_csr%ISOPEN) THEN
429         CLOSE l_Contract_Tmpl_csr;
430       END IF;
431       --DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || l_api_type);
432       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
433       FND_MSG_PUB.Count_And_Get( p_count	=> x_msg_count,
434 			         p_data		=> x_msg_data,
435 			         p_encoded	=> FND_API.G_FALSE );
436 END Template_to_Contract;
437 
438 END CS_Contract_Tpl_Pub;