DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_CONTRACTBILLING_PVT

Source


1 PACKAGE BODY CS_CONTRACTBILLING_PVT AS
2 /* $Header: csctcbpb.pls 115.1 99/07/16 08:49:13 porting ship $ */
3   FUNCTION get_seq_id RETURN NUMBER IS
4     CURSOR get_seq_id_csr IS
5       SELECT CS_CONTRACTS_BILLING_S.nextval FROM SYS.DUAL;
6       l_seq_id                       NUMBER := 0;
7   BEGIN
8     OPEN get_seq_id_csr;
9     FETCH get_seq_id_csr INTO l_seq_id;
10     CLOSE get_seq_id_csr;
11     RETURN(l_seq_id);
12   END get_seq_id;
13 
14 
15   -- Validation
16   FUNCTION Validate_Item_Attributes
17   (
18     p_contractbilling_rec IN  ContractBilling_Rec_Type
19   )
20   RETURN VARCHAR2
21   IS
22     l_return_status	VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
23   BEGIN
24     IF p_contractbilling_rec.cp_service_id = TAPI_DEV_KIT.G_MISS_NUM OR
25        p_contractbilling_rec.cp_service_id IS NULL
26     THEN
27       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'cp_service_id');
28       l_return_status := FND_API.G_RET_STS_ERROR;
29     ELSIF p_contractbilling_rec.contract_id = TAPI_DEV_KIT.G_MISS_NUM OR
30           p_contractbilling_rec.contract_id IS NULL
31     THEN
32       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'contract_id');
33       l_return_status := FND_API.G_RET_STS_ERROR;
34     ELSIF p_contractbilling_rec.billed_until_date = TAPI_DEV_KIT.G_MISS_DATE OR
35           p_contractbilling_rec.billed_until_date IS NULL
36     THEN
37       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'billed_until_date');
38       l_return_status := FND_API.G_RET_STS_ERROR;
39     ELSIF p_contractbilling_rec.currency_code = TAPI_DEV_KIT.G_MISS_CHAR OR
40           p_contractbilling_rec.currency_code IS NULL
41     THEN
42       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'currency_code');
43       l_return_status := FND_API.G_RET_STS_ERROR;
44     ELSIF p_contractbilling_rec.last_update_date = TAPI_DEV_KIT.G_MISS_DATE OR
45           p_contractbilling_rec.last_update_date IS NULL
46     THEN
47       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'last_update_date');
48       l_return_status := FND_API.G_RET_STS_ERROR;
49     ELSIF p_contractbilling_rec.last_updated_by = TAPI_DEV_KIT.G_MISS_NUM OR
50           p_contractbilling_rec.last_updated_by IS NULL
51     THEN
52       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'last_updated_by');
53       l_return_status := FND_API.G_RET_STS_ERROR;
54     ELSIF p_contractbilling_rec.creation_date = TAPI_DEV_KIT.G_MISS_DATE OR
55           p_contractbilling_rec.creation_date IS NULL
56     THEN
57       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'creation_date');
58       l_return_status := FND_API.G_RET_STS_ERROR;
59     ELSIF p_contractbilling_rec.created_by = TAPI_DEV_KIT.G_MISS_NUM OR
60           p_contractbilling_rec.created_by IS NULL
61     THEN
62       TAPI_DEV_KIT.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'created_by');
63       l_return_status := FND_API.G_RET_STS_ERROR;
64     END IF;
65     RETURN(l_return_status);
66   END Validate_Item_Attributes;
67 
68 
69   ----- Default
70   FUNCTION Default_Item_Attributes
71   (
72     p_contractbilling_rec IN  ContractBilling_Rec_Type,
73     l_def_contractbilling_rec OUT  ContractBilling_Rec_Type
74   )
75   RETURN VARCHAR2
76   IS
77     l_return_status 	VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
78   BEGIN
79     l_def_contractbilling_rec := p_contractbilling_rec;
80     l_def_contractbilling_rec.OBJECT_VERSION_NUMBER := NVL(l_def_contractbilling_rec.OBJECT_VERSION_NUMBER, 0) + 1;
81     RETURN(l_return_status);
82   End Default_Item_attributes;
83 
84 
85   FUNCTION Validate_Item_Record (
86     p_contractbilling_rec IN ContractBilling_Rec_Type
87   )
88   RETURN VARCHAR2 IS
89     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
90     FUNCTION validate_foreign_keys (
91       p_contractbilling_rec IN ContractBilling_Rec_Type
92     )
93     RETURN VARCHAR2 IS
94       item_not_found_error          EXCEPTION;
95       CURSOR cs_contracts_all_pk_csr (p_contract_id        IN NUMBER) IS
96       SELECT *
97         FROM Cs_Contracts_All
98        WHERE cs_contracts_all.contract_id = p_contract_id;
99       l_cs_contracts_all_pk          cs_contracts_all_pk_csr%ROWTYPE;
100       CURSOR cs_cp_services_all_pk_csr (p_cp_service_id      IN NUMBER) IS
101       SELECT *
102         FROM Cs_Cp_Services_All
103        WHERE cs_cp_services_all.cp_service_id = p_cp_service_id;
104       l_cs_cp_services_all_pk        cs_cp_services_all_pk_csr%ROWTYPE;
105       l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
106       l_row_notfound                 BOOLEAN := TRUE;
107     BEGIN
108       IF (p_contractbilling_rec.CONTRACT_ID IS NOT NULL)
109       THEN
110         OPEN cs_contracts_all_pk_csr(p_contractbilling_rec.CONTRACT_ID);
111         FETCH cs_contracts_all_pk_csr INTO l_cs_contracts_all_pk;
112         l_row_notfound := cs_contracts_all_pk_csr%NOTFOUND;
113         CLOSE cs_contracts_all_pk_csr;
114         IF (l_row_notfound) THEN
115           TAPI_DEV_KIT.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'CONTRACT_ID');
116           RAISE item_not_found_error;
117         END IF;
118       END IF;
119       IF (p_contractbilling_rec.CP_SERVICE_ID IS NOT NULL)
120       THEN
121         OPEN cs_cp_services_all_pk_csr(p_contractbilling_rec.CP_SERVICE_ID);
122         FETCH cs_cp_services_all_pk_csr INTO l_cs_cp_services_all_pk;
123         l_row_notfound := cs_cp_services_all_pk_csr%NOTFOUND;
124         CLOSE cs_cp_services_all_pk_csr;
125         IF (l_row_notfound) THEN
126           TAPI_DEV_KIT.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'CP_SERVICE_ID');
127           RAISE item_not_found_error;
128         END IF;
129       END IF;
130       RETURN (l_return_status);
131     EXCEPTION
132       WHEN item_not_found_error THEN
133         l_return_status := FND_API.G_RET_STS_ERROR;
134         RETURN (l_return_status);
135     END validate_foreign_keys;
136   BEGIN
137     l_return_status := validate_foreign_keys (p_contractbilling_rec);
138     RETURN (l_return_status);
139   END Validate_Item_Record;
140 
141 
142   PROCEDURE migrate (
143     p_from	IN ContractBilling_Val_Rec_Type,
144     p_to	OUT ContractBilling_Rec_Type
145   ) IS
146   BEGIN
147     p_to.contract_billing_id := p_from.contract_billing_id;
148     p_to.header_id := p_from.header_id;
149     p_to.order_number := p_from.order_number;
150     p_to.line_id := p_from.line_id;
151     p_to.cp_service_id := p_from.cp_service_id;
152     p_to.contract_id := p_from.contract_id;
153     p_to.cust_trx_type_id := p_from.cust_trx_type_id;
154     p_to.trx_date := p_from.trx_date;
155     p_to.trx_number := p_from.trx_number;
156     p_to.trx_amount := p_from.trx_amount;
157     p_to.trx_class := p_from.trx_class;
158     p_to.billed_until_date := p_from.billed_until_date;
159     p_to.currency_code := p_from.currency_code;
160     p_to.last_update_date := p_from.last_update_date;
161     p_to.last_updated_by := p_from.last_updated_by;
162     p_to.creation_date := p_from.creation_date;
163     p_to.created_by := p_from.created_by;
164     p_to.last_update_login := p_from.last_update_login;
165     p_to.trx_pre_tax_amount := p_from.trx_pre_tax_amount;
166     p_to.attribute1 := p_from.attribute1;
167     p_to.attribute2 := p_from.attribute2;
168     p_to.attribute3 := p_from.attribute3;
169     p_to.attribute4 := p_from.attribute4;
170     p_to.attribute5 := p_from.attribute5;
171     p_to.attribute6 := p_from.attribute6;
172     p_to.attribute7 := p_from.attribute7;
173     p_to.attribute8 := p_from.attribute8;
174     p_to.attribute9 := p_from.attribute9;
175     p_to.attribute10 := p_from.attribute10;
176     p_to.attribute11 := p_from.attribute11;
177     p_to.attribute12 := p_from.attribute12;
178     p_to.attribute13 := p_from.attribute13;
179     p_to.attribute14 := p_from.attribute14;
180     p_to.attribute15 := p_from.attribute15;
181     p_to.context := p_from.context;
182     p_to.object_version_number := p_from.object_version_number;
183   END migrate;
184   PROCEDURE migrate (
185     p_from	IN ContractBilling_Rec_Type,
186     p_to	OUT ContractBilling_Val_Rec_Type
187   ) IS
188   BEGIN
189     p_to.contract_billing_id := p_from.contract_billing_id;
190     p_to.header_id := p_from.header_id;
191     p_to.order_number := p_from.order_number;
192     p_to.line_id := p_from.line_id;
193     p_to.cp_service_id := p_from.cp_service_id;
194     p_to.contract_id := p_from.contract_id;
195     p_to.cust_trx_type_id := p_from.cust_trx_type_id;
196     p_to.trx_date := p_from.trx_date;
197     p_to.trx_number := p_from.trx_number;
198     p_to.trx_amount := p_from.trx_amount;
199     p_to.trx_class := p_from.trx_class;
200     p_to.billed_until_date := p_from.billed_until_date;
201     p_to.currency_code := p_from.currency_code;
202     p_to.last_update_date := p_from.last_update_date;
203     p_to.last_updated_by := p_from.last_updated_by;
204     p_to.creation_date := p_from.creation_date;
205     p_to.created_by := p_from.created_by;
206     p_to.last_update_login := p_from.last_update_login;
207     p_to.trx_pre_tax_amount := p_from.trx_pre_tax_amount;
208     p_to.attribute1 := p_from.attribute1;
209     p_to.attribute2 := p_from.attribute2;
210     p_to.attribute3 := p_from.attribute3;
211     p_to.attribute4 := p_from.attribute4;
212     p_to.attribute5 := p_from.attribute5;
213     p_to.attribute6 := p_from.attribute6;
214     p_to.attribute7 := p_from.attribute7;
215     p_to.attribute8 := p_from.attribute8;
216     p_to.attribute9 := p_from.attribute9;
217     p_to.attribute10 := p_from.attribute10;
218     p_to.attribute11 := p_from.attribute11;
219     p_to.attribute12 := p_from.attribute12;
220     p_to.attribute13 := p_from.attribute13;
221     p_to.attribute14 := p_from.attribute14;
222     p_to.attribute15 := p_from.attribute15;
223     p_to.context := p_from.context;
224     p_to.object_version_number := p_from.object_version_number;
225   END migrate;
226   PROCEDURE insert_row
227   (
228     p_api_version                  IN NUMBER,
229     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
230     p_validation_level             IN NUMBER,
231     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
232     x_return_status                OUT VARCHAR2,
233     x_msg_count                    OUT NUMBER,
234     x_msg_data                     OUT VARCHAR2,
235     p_contractbilling_rec          IN ContractBilling_Rec_Type := G_MISS_CONTRACTBILLING_REC,
236     x_contract_billing_id          OUT NUMBER,
237     x_object_version_number        OUT NUMBER) IS
238     l_api_name                     CONSTANT VARCHAR2(30) := 'insert_row';
239     l_api_version                  CONSTANT NUMBER := 1;
240     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
241     l_contractbilling_rec          ContractBilling_Rec_Type;
242     l_def_contractbilling_rec      ContractBilling_Rec_Type;
243   BEGIN
244     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
245                                               G_PKG_NAME,
246                                               l_api_version,
247                                               p_api_version,
248                                               p_init_msg_list,
249                                               '_Pvt',
250                                               x_return_status);
251     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
252       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
253     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
254       RAISE FND_API.G_EXC_ERROR;
255     END IF;
256     l_contractbilling_rec := p_contractbilling_rec;
257     --- Validate all non-missing attributes (Item Level Validation)
258     IF p_validation_level >= FND_API.G_VALID_LEVEL_FULL THEN
259       l_return_status := Validate_Item_Attributes
260       (
261         l_contractbilling_rec    ---- IN
262       );
263       --- If any errors happen abort API
264       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
265         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
266       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
267         RAISE FND_API.G_EXC_ERROR;
268       END IF;
269     END IF;
270     --- Defaulting item attributes
271     l_return_status := Default_Item_Attributes
272     (
273       l_contractbilling_rec,    ---- IN
274       l_def_contractbilling_rec
275     );
276     --- If any errors happen abort API
277     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
278       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
279     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
280       RAISE FND_API.G_EXC_ERROR;
281     END IF;
282     IF (p_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
283       l_return_status := Validate_Item_Record(l_def_contractbilling_rec);
284       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
285         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
286       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
287         RAISE FND_API.G_EXC_ERROR;
288       END IF;
289     END IF;
290     -- Set primary key value
291     l_def_contractbilling_rec.contract_billing_id := get_seq_id;
292     INSERT INTO CS_CONTRACTS_BILLING(
293         contract_billing_id,
294         header_id,
295         order_number,
296         line_id,
297         cp_service_id,
298         contract_id,
299         cust_trx_type_id,
300         trx_date,
301         trx_number,
302         trx_amount,
303         trx_class,
304         billed_until_date,
305         currency_code,
306         last_update_date,
307         last_updated_by,
308         creation_date,
309         created_by,
310         last_update_login,
311         trx_pre_tax_amount,
312         attribute1,
313         attribute2,
314         attribute3,
315         attribute4,
316         attribute5,
317         attribute6,
318         attribute7,
319         attribute8,
320         attribute9,
321         attribute10,
322         attribute11,
323         attribute12,
324         attribute13,
325         attribute14,
326         attribute15,
327         context,
328         object_version_number)
329       VALUES (
330         l_def_contractbilling_rec.contract_billing_id,
331         l_def_contractbilling_rec.header_id,
332         l_def_contractbilling_rec.order_number,
333         l_def_contractbilling_rec.line_id,
334         l_def_contractbilling_rec.cp_service_id,
335         l_def_contractbilling_rec.contract_id,
336         l_def_contractbilling_rec.cust_trx_type_id,
337         l_def_contractbilling_rec.trx_date,
338         l_def_contractbilling_rec.trx_number,
339         l_def_contractbilling_rec.trx_amount,
340         l_def_contractbilling_rec.trx_class,
341         l_def_contractbilling_rec.billed_until_date,
342         l_def_contractbilling_rec.currency_code,
343         l_def_contractbilling_rec.last_update_date,
344         l_def_contractbilling_rec.last_updated_by,
345         l_def_contractbilling_rec.creation_date,
349         l_def_contractbilling_rec.attribute1,
346         l_def_contractbilling_rec.created_by,
347         l_def_contractbilling_rec.last_update_login,
348         l_def_contractbilling_rec.trx_pre_tax_amount,
350         l_def_contractbilling_rec.attribute2,
351         l_def_contractbilling_rec.attribute3,
352         l_def_contractbilling_rec.attribute4,
353         l_def_contractbilling_rec.attribute5,
354         l_def_contractbilling_rec.attribute6,
355         l_def_contractbilling_rec.attribute7,
356         l_def_contractbilling_rec.attribute8,
357         l_def_contractbilling_rec.attribute9,
358         l_def_contractbilling_rec.attribute10,
359         l_def_contractbilling_rec.attribute11,
360         l_def_contractbilling_rec.attribute12,
361         l_def_contractbilling_rec.attribute13,
362         l_def_contractbilling_rec.attribute14,
363         l_def_contractbilling_rec.attribute15,
364         l_def_contractbilling_rec.context,
365         l_def_contractbilling_rec.object_version_number);
366     -- Set OUT values
367     x_contract_billing_id := l_def_contractbilling_rec.contract_billing_id;
368     x_object_version_number       := l_def_contractbilling_rec.OBJECT_VERSION_NUMBER;
369     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
370   EXCEPTION
371     WHEN FND_API.G_EXC_ERROR THEN
372       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
373       (
374         l_api_name,
375         G_PKG_NAME,
376         'FND_API.G_RET_STS_ERROR',
377         x_msg_count,
378         x_msg_data,
379         '_Pvt'
380       );
381     APP_EXCEPTION.RAISE_EXCEPTION;
382     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
383       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
384       (
385         l_api_name,
386         G_PKG_NAME,
387         'FND_API.G_RET_STS_UNEXP_ERROR',
388         x_msg_count,
389         x_msg_data,
390         '_Pvt'
391       );
392     APP_EXCEPTION.RAISE_EXCEPTION;
393     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
394       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
395       (
396         l_api_name,
397         G_PKG_NAME,
398         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
399         x_msg_count,
400         x_msg_data,
401         '_Pvt'
402       );
403     APP_EXCEPTION.RAISE_EXCEPTION;
404   END insert_row;
405   PROCEDURE insert_row
406   (
407     p_api_version                  IN NUMBER,
408     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
409     p_validation_level             IN NUMBER,
410     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
411     x_return_status                OUT VARCHAR2,
412     x_msg_count                    OUT NUMBER,
413     x_msg_data                     OUT VARCHAR2,
414     p_header_id                    IN NUMBER := NULL,
415     p_order_number                 IN NUMBER := NULL,
416     p_line_id                      IN NUMBER := NULL,
417     p_cp_service_id                IN NUMBER := NULL,
418     p_contract_id                  IN NUMBER := NULL,
419     p_cust_trx_type_id             IN NUMBER := NULL,
420     p_trx_date                     IN CS_CONTRACTS_BILLING.TRX_DATE%TYPE := NULL,
421     p_trx_number                   IN NUMBER := NULL,
422     p_trx_amount                   IN NUMBER := NULL,
423     p_trx_class                    IN CS_CONTRACTS_BILLING.TRX_CLASS%TYPE := NULL,
424     p_billed_until_date            IN CS_CONTRACTS_BILLING.BILLED_UNTIL_DATE%TYPE := NULL,
425     p_currency_code                IN CS_CONTRACTS_BILLING.CURRENCY_CODE%TYPE := NULL,
426     p_last_update_date             IN CS_CONTRACTS_BILLING.LAST_UPDATE_DATE%TYPE := NULL,
427     p_last_updated_by              IN NUMBER := NULL,
428     p_creation_date                IN CS_CONTRACTS_BILLING.CREATION_DATE%TYPE := NULL,
429     p_created_by                   IN NUMBER := NULL,
430     p_last_update_login            IN NUMBER := NULL,
431     p_trx_pre_tax_amount           IN NUMBER := NULL,
432     p_attribute1                   IN CS_CONTRACTS_BILLING.ATTRIBUTE1%TYPE := NULL,
433     p_attribute2                   IN CS_CONTRACTS_BILLING.ATTRIBUTE2%TYPE := NULL,
434     p_attribute3                   IN CS_CONTRACTS_BILLING.ATTRIBUTE3%TYPE := NULL,
435     p_attribute4                   IN CS_CONTRACTS_BILLING.ATTRIBUTE4%TYPE := NULL,
436     p_attribute5                   IN CS_CONTRACTS_BILLING.ATTRIBUTE5%TYPE := NULL,
437     p_attribute6                   IN CS_CONTRACTS_BILLING.ATTRIBUTE6%TYPE := NULL,
438     p_attribute7                   IN CS_CONTRACTS_BILLING.ATTRIBUTE7%TYPE := NULL,
439     p_attribute8                   IN CS_CONTRACTS_BILLING.ATTRIBUTE8%TYPE := NULL,
440     p_attribute9                   IN CS_CONTRACTS_BILLING.ATTRIBUTE9%TYPE := NULL,
441     p_attribute10                  IN CS_CONTRACTS_BILLING.ATTRIBUTE10%TYPE := NULL,
442     p_attribute11                  IN CS_CONTRACTS_BILLING.ATTRIBUTE11%TYPE := NULL,
443     p_attribute12                  IN CS_CONTRACTS_BILLING.ATTRIBUTE12%TYPE := NULL,
444     p_attribute13                  IN CS_CONTRACTS_BILLING.ATTRIBUTE13%TYPE := NULL,
445     p_attribute14                  IN CS_CONTRACTS_BILLING.ATTRIBUTE14%TYPE := NULL,
446     p_attribute15                  IN CS_CONTRACTS_BILLING.ATTRIBUTE15%TYPE := NULL,
447     p_context                      IN CS_CONTRACTS_BILLING.CONTEXT%TYPE := NULL,
448     p_object_version_number        IN NUMBER := NULL,
449     x_contract_billing_id          OUT NUMBER,
450     x_object_version_number        OUT NUMBER) IS
451     l_api_name                     CONSTANT VARCHAR2(30) := 'insert_row';
452     l_api_version                  CONSTANT NUMBER := 1;
453     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
454     l_contractbilling_rec          ContractBilling_Rec_Type;
455   BEGIN
456     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
457                                               G_PKG_NAME,
461                                               '_Pvt',
458                                               l_api_version,
459                                               p_api_version,
460                                               p_init_msg_list,
462                                               x_return_status);
463     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
464       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
465     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
466       RAISE FND_API.G_EXC_ERROR;
467     END IF;
468     l_contractbilling_rec.HEADER_ID := p_header_id;
469     l_contractbilling_rec.ORDER_NUMBER := p_order_number;
470     l_contractbilling_rec.LINE_ID := p_line_id;
471     l_contractbilling_rec.CP_SERVICE_ID := p_cp_service_id;
472     l_contractbilling_rec.CONTRACT_ID := p_contract_id;
473     l_contractbilling_rec.CUST_TRX_TYPE_ID := p_cust_trx_type_id;
474     l_contractbilling_rec.TRX_DATE := p_trx_date;
475     l_contractbilling_rec.TRX_NUMBER := p_trx_number;
476     l_contractbilling_rec.TRX_AMOUNT := p_trx_amount;
477     l_contractbilling_rec.TRX_CLASS := p_trx_class;
478     l_contractbilling_rec.BILLED_UNTIL_DATE := p_billed_until_date;
479     l_contractbilling_rec.CURRENCY_CODE := p_currency_code;
480     l_contractbilling_rec.LAST_UPDATE_DATE := p_last_update_date;
481     l_contractbilling_rec.LAST_UPDATED_BY := p_last_updated_by;
482     l_contractbilling_rec.CREATION_DATE := p_creation_date;
483     l_contractbilling_rec.CREATED_BY := p_created_by;
484     l_contractbilling_rec.LAST_UPDATE_LOGIN := p_last_update_login;
485     l_contractbilling_rec.TRX_PRE_TAX_AMOUNT := p_trx_pre_tax_amount;
486     l_contractbilling_rec.ATTRIBUTE1 := p_attribute1;
487     l_contractbilling_rec.ATTRIBUTE2 := p_attribute2;
488     l_contractbilling_rec.ATTRIBUTE3 := p_attribute3;
489     l_contractbilling_rec.ATTRIBUTE4 := p_attribute4;
490     l_contractbilling_rec.ATTRIBUTE5 := p_attribute5;
491     l_contractbilling_rec.ATTRIBUTE6 := p_attribute6;
492     l_contractbilling_rec.ATTRIBUTE7 := p_attribute7;
493     l_contractbilling_rec.ATTRIBUTE8 := p_attribute8;
494     l_contractbilling_rec.ATTRIBUTE9 := p_attribute9;
495     l_contractbilling_rec.ATTRIBUTE10 := p_attribute10;
496     l_contractbilling_rec.ATTRIBUTE11 := p_attribute11;
497     l_contractbilling_rec.ATTRIBUTE12 := p_attribute12;
498     l_contractbilling_rec.ATTRIBUTE13 := p_attribute13;
499     l_contractbilling_rec.ATTRIBUTE14 := p_attribute14;
500     l_contractbilling_rec.ATTRIBUTE15 := p_attribute15;
501     l_contractbilling_rec.CONTEXT := p_context;
502     l_contractbilling_rec.OBJECT_VERSION_NUMBER := p_object_version_number;
503     insert_row(
504       p_api_version,
505       p_init_msg_list,
506       p_validation_level,
507       p_commit,
508       x_return_status,
509       x_msg_count,
510       x_msg_data,
511       l_contractbilling_rec,
512       x_contract_billing_id,
513       x_object_version_number
514     );
515     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
516   EXCEPTION
517     WHEN FND_API.G_EXC_ERROR THEN
518       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
519       (
520         l_api_name,
521         G_PKG_NAME,
522         'FND_API.G_RET_STS_ERROR',
523         x_msg_count,
524         x_msg_data,
525         '_Pvt'
526       );
527     APP_EXCEPTION.RAISE_EXCEPTION;
528     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
529       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
530       (
531         l_api_name,
532         G_PKG_NAME,
533         'FND_API.G_RET_STS_UNEXP_ERROR',
534         x_msg_count,
535         x_msg_data,
536         '_Pvt'
537       );
538     APP_EXCEPTION.RAISE_EXCEPTION;
539     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
540       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
541       (
542         l_api_name,
543         G_PKG_NAME,
544         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
545         x_msg_count,
546         x_msg_data,
547         '_Pvt'
548       );
549     APP_EXCEPTION.RAISE_EXCEPTION;
550   END insert_row;
551   Procedure lock_row
552   (
553     p_api_version                  IN NUMBER,
554     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
555     p_validation_level             IN NUMBER,
556     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
557     x_return_status                OUT VARCHAR2,
558     x_msg_count                    OUT NUMBER,
559     x_msg_data                     OUT VARCHAR2,
560     p_contract_billing_id          IN NUMBER,
561     p_object_version_number        IN NUMBER) IS
562     E_Resource_Busy               EXCEPTION;
563     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
564     CURSOR lock_csr IS
565     SELECT OBJECT_VERSION_NUMBER
566      FROM CS_CONTRACTS_BILLING
567     WHERE
568       CONTRACT_BILLING_ID = p_contract_billing_id AND
569       OBJECT_VERSION_NUMBER = p_object_version_number
570     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
571 
572     CURSOR  lchk_csr IS
573     SELECT OBJECT_VERSION_NUMBER
574      FROM CS_CONTRACTS_BILLING
575     WHERE
576       CONTRACT_BILLING_ID = p_contract_billing_id
577       ;
578     l_api_name                     CONSTANT VARCHAR2(30) := 'lock_row';
579     l_api_version                  CONSTANT NUMBER := 1;
580     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
581     l_object_version_number       CS_CONTRACTS_BILLING.OBJECT_VERSION_NUMBER%TYPE;
582     lc_object_version_number      CS_CONTRACTS_BILLING.OBJECT_VERSION_NUMBER%TYPE;
583     l_row_notfound                BOOLEAN := FALSE;
584     lc_row_notfound               BOOLEAN := FALSE;
585   BEGIN
586     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
590                                               p_init_msg_list,
587                                               G_PKG_NAME,
588                                               l_api_version,
589                                               p_api_version,
591                                               '_Pvt',
592                                               x_return_status);
593     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
594       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
595     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
596       RAISE FND_API.G_EXC_ERROR;
597     END IF;
598     BEGIN
599       OPEN lock_csr;
600       FETCH lock_csr INTO l_object_version_number;
601       l_row_notfound := lock_csr%NOTFOUND;
602       CLOSE lock_csr;
603     EXCEPTION
604       WHEN E_Resource_Busy THEN
605         IF (lock_csr%ISOPEN) THEN
606           CLOSE lock_csr;
607         END IF;
608         TAPI_DEV_KIT.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
609         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
610     END;
611 
612     IF ( l_row_notfound ) THEN
613       OPEN lchk_csr;
614       FETCH lchk_csr INTO lc_object_version_number;
615       lc_row_notfound := lchk_csr%NOTFOUND;
616       CLOSE lchk_csr;
617     END IF;
618     IF (lc_row_notfound) THEN
619       TAPI_DEV_KIT.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
620       RAISE FND_API.G_EXC_ERROR;
621     ELSIF lc_object_version_number > p_object_version_number THEN
622       TAPI_DEV_KIT.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
623       RAISE FND_API.G_EXC_ERROR;
624     ELSIF lc_object_version_number <> p_object_version_number THEN
625       TAPI_DEV_KIT.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
626       RAISE FND_API.G_EXC_ERROR;
627     ELSIF lc_object_version_number = -1 THEN
628       TAPI_DEV_KIT.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
629       RAISE FND_API.G_EXC_ERROR;
630     END IF;
631     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
632   EXCEPTION
633     WHEN FND_API.G_EXC_ERROR THEN
634       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
635       (
636         l_api_name,
637         G_PKG_NAME,
638         'FND_API.G_RET_STS_ERROR',
639         x_msg_count,
640         x_msg_data,
641         '_Pvt'
642       );
643     APP_EXCEPTION.RAISE_EXCEPTION;
644     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
645       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
646       (
647         l_api_name,
648         G_PKG_NAME,
649         'FND_API.G_RET_STS_UNEXP_ERROR',
650         x_msg_count,
651         x_msg_data,
652         '_Pvt'
653       );
654     APP_EXCEPTION.RAISE_EXCEPTION;
655     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
656       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
657       (
658         l_api_name,
659         G_PKG_NAME,
660         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
661         x_msg_count,
662         x_msg_data,
663         '_Pvt'
664       );
665     APP_EXCEPTION.RAISE_EXCEPTION;
666   END lock_row;
667   Procedure update_row
668   (
669     p_api_version                  IN NUMBER,
670     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
671     p_validation_level             IN NUMBER,
672     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
673     x_return_status                OUT VARCHAR2,
674     x_msg_count                    OUT NUMBER,
675     x_msg_data                     OUT VARCHAR2,
676     p_contractbilling_val_rec      IN ContractBilling_Val_Rec_Type := G_MISS_CONTRACTBILLING_VAL_REC,
677     x_object_version_number        OUT NUMBER) IS
678     l_api_name                     CONSTANT VARCHAR2(30) := 'update_row';
679     l_api_version                  CONSTANT NUMBER := 1;
680     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
681     l_contractbilling_rec          ContractBilling_Rec_Type;
682     l_def_contractbilling_rec      ContractBilling_Rec_Type;
683     FUNCTION populate_new_record (
684       p_contractbilling_rec	IN ContractBilling_Rec_Type,
685       x_contractbilling_rec	OUT ContractBilling_Rec_Type
686     ) RETURN VARCHAR2 IS
687       CURSOR cs_contracts_billing_pk_csr (p_contract_billing_id  IN NUMBER) IS
688       SELECT *
689         FROM Cs_Contracts_Billing
690        WHERE cs_contracts_billing.contract_billing_id = p_contract_billing_id;
691       l_cs_contracts_billing_pk      cs_contracts_billing_pk_csr%ROWTYPE;
692       l_row_notfound		BOOLEAN := TRUE;
693       l_return_status		VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
694     BEGIN
695       x_contractbilling_rec := p_contractbilling_rec;
696       -- Get current database values
697       OPEN cs_contracts_billing_pk_csr (p_contractbilling_rec.contract_billing_id);
698       FETCH cs_contracts_billing_pk_csr INTO l_cs_contracts_billing_pk;
699       l_row_notfound := cs_contracts_billing_pk_csr%NOTFOUND;
700       CLOSE cs_contracts_billing_pk_csr;
701       IF (l_row_notfound) THEN
702         l_return_status := FND_API.G_RET_STS_ERROR;
703       END IF;
704       IF (x_contractbilling_rec.contract_billing_id = TAPI_DEV_KIT.G_MISS_NUM)
705       THEN
706         x_contractbilling_rec.contract_billing_id := l_cs_contracts_billing_pk.contract_billing_id;
707       END IF;
708       IF (x_contractbilling_rec.header_id = TAPI_DEV_KIT.G_MISS_NUM)
709       THEN
710         x_contractbilling_rec.header_id := l_cs_contracts_billing_pk.header_id;
711       END IF;
712       IF (x_contractbilling_rec.order_number = TAPI_DEV_KIT.G_MISS_NUM)
713       THEN
714         x_contractbilling_rec.order_number := l_cs_contracts_billing_pk.order_number;
715       END IF;
716       IF (x_contractbilling_rec.line_id = TAPI_DEV_KIT.G_MISS_NUM)
717       THEN
721       THEN
718         x_contractbilling_rec.line_id := l_cs_contracts_billing_pk.line_id;
719       END IF;
720       IF (x_contractbilling_rec.cp_service_id = TAPI_DEV_KIT.G_MISS_NUM)
722         x_contractbilling_rec.cp_service_id := l_cs_contracts_billing_pk.cp_service_id;
723       END IF;
724       IF (x_contractbilling_rec.contract_id = TAPI_DEV_KIT.G_MISS_NUM)
725       THEN
726         x_contractbilling_rec.contract_id := l_cs_contracts_billing_pk.contract_id;
727       END IF;
728       IF (x_contractbilling_rec.cust_trx_type_id = TAPI_DEV_KIT.G_MISS_NUM)
729       THEN
730         x_contractbilling_rec.cust_trx_type_id := l_cs_contracts_billing_pk.cust_trx_type_id;
731       END IF;
732       IF (x_contractbilling_rec.trx_date = TAPI_DEV_KIT.G_MISS_DATE)
733       THEN
734         x_contractbilling_rec.trx_date := l_cs_contracts_billing_pk.trx_date;
735       END IF;
736       IF (x_contractbilling_rec.trx_number = TAPI_DEV_KIT.G_MISS_NUM)
737       THEN
738         x_contractbilling_rec.trx_number := l_cs_contracts_billing_pk.trx_number;
739       END IF;
740       IF (x_contractbilling_rec.trx_amount = TAPI_DEV_KIT.G_MISS_NUM)
741       THEN
742         x_contractbilling_rec.trx_amount := l_cs_contracts_billing_pk.trx_amount;
743       END IF;
744       IF (x_contractbilling_rec.trx_class = TAPI_DEV_KIT.G_MISS_CHAR)
745       THEN
746         x_contractbilling_rec.trx_class := l_cs_contracts_billing_pk.trx_class;
747       END IF;
748       IF (x_contractbilling_rec.billed_until_date = TAPI_DEV_KIT.G_MISS_DATE)
749       THEN
750         x_contractbilling_rec.billed_until_date := l_cs_contracts_billing_pk.billed_until_date;
751       END IF;
752       IF (x_contractbilling_rec.currency_code = TAPI_DEV_KIT.G_MISS_CHAR)
753       THEN
754         x_contractbilling_rec.currency_code := l_cs_contracts_billing_pk.currency_code;
755       END IF;
756       IF (x_contractbilling_rec.last_update_date = TAPI_DEV_KIT.G_MISS_DATE)
757       THEN
758         x_contractbilling_rec.last_update_date := l_cs_contracts_billing_pk.last_update_date;
759       END IF;
760       IF (x_contractbilling_rec.last_updated_by = TAPI_DEV_KIT.G_MISS_NUM)
761       THEN
762         x_contractbilling_rec.last_updated_by := l_cs_contracts_billing_pk.last_updated_by;
763       END IF;
764       IF (x_contractbilling_rec.creation_date = TAPI_DEV_KIT.G_MISS_DATE)
765       THEN
766         x_contractbilling_rec.creation_date := l_cs_contracts_billing_pk.creation_date;
767       END IF;
768       IF (x_contractbilling_rec.created_by = TAPI_DEV_KIT.G_MISS_NUM)
769       THEN
770         x_contractbilling_rec.created_by := l_cs_contracts_billing_pk.created_by;
771       END IF;
772       IF (x_contractbilling_rec.last_update_login = TAPI_DEV_KIT.G_MISS_NUM)
773       THEN
774         x_contractbilling_rec.last_update_login := l_cs_contracts_billing_pk.last_update_login;
775       END IF;
776       IF (x_contractbilling_rec.trx_pre_tax_amount = TAPI_DEV_KIT.G_MISS_NUM)
777       THEN
778         x_contractbilling_rec.trx_pre_tax_amount := l_cs_contracts_billing_pk.trx_pre_tax_amount;
779       END IF;
780       IF (x_contractbilling_rec.attribute1 = TAPI_DEV_KIT.G_MISS_CHAR)
781       THEN
782         x_contractbilling_rec.attribute1 := l_cs_contracts_billing_pk.attribute1;
783       END IF;
784       IF (x_contractbilling_rec.attribute2 = TAPI_DEV_KIT.G_MISS_CHAR)
785       THEN
786         x_contractbilling_rec.attribute2 := l_cs_contracts_billing_pk.attribute2;
787       END IF;
788       IF (x_contractbilling_rec.attribute3 = TAPI_DEV_KIT.G_MISS_CHAR)
789       THEN
790         x_contractbilling_rec.attribute3 := l_cs_contracts_billing_pk.attribute3;
791       END IF;
792       IF (x_contractbilling_rec.attribute4 = TAPI_DEV_KIT.G_MISS_CHAR)
793       THEN
794         x_contractbilling_rec.attribute4 := l_cs_contracts_billing_pk.attribute4;
795       END IF;
796       IF (x_contractbilling_rec.attribute5 = TAPI_DEV_KIT.G_MISS_CHAR)
797       THEN
798         x_contractbilling_rec.attribute5 := l_cs_contracts_billing_pk.attribute5;
799       END IF;
800       IF (x_contractbilling_rec.attribute6 = TAPI_DEV_KIT.G_MISS_CHAR)
801       THEN
802         x_contractbilling_rec.attribute6 := l_cs_contracts_billing_pk.attribute6;
803       END IF;
804       IF (x_contractbilling_rec.attribute7 = TAPI_DEV_KIT.G_MISS_CHAR)
805       THEN
806         x_contractbilling_rec.attribute7 := l_cs_contracts_billing_pk.attribute7;
807       END IF;
808       IF (x_contractbilling_rec.attribute8 = TAPI_DEV_KIT.G_MISS_CHAR)
809       THEN
810         x_contractbilling_rec.attribute8 := l_cs_contracts_billing_pk.attribute8;
811       END IF;
812       IF (x_contractbilling_rec.attribute9 = TAPI_DEV_KIT.G_MISS_CHAR)
813       THEN
814         x_contractbilling_rec.attribute9 := l_cs_contracts_billing_pk.attribute9;
815       END IF;
816       IF (x_contractbilling_rec.attribute10 = TAPI_DEV_KIT.G_MISS_CHAR)
817       THEN
818         x_contractbilling_rec.attribute10 := l_cs_contracts_billing_pk.attribute10;
819       END IF;
820       IF (x_contractbilling_rec.attribute11 = TAPI_DEV_KIT.G_MISS_CHAR)
821       THEN
822         x_contractbilling_rec.attribute11 := l_cs_contracts_billing_pk.attribute11;
823       END IF;
824       IF (x_contractbilling_rec.attribute12 = TAPI_DEV_KIT.G_MISS_CHAR)
825       THEN
826         x_contractbilling_rec.attribute12 := l_cs_contracts_billing_pk.attribute12;
827       END IF;
828       IF (x_contractbilling_rec.attribute13 = TAPI_DEV_KIT.G_MISS_CHAR)
829       THEN
830         x_contractbilling_rec.attribute13 := l_cs_contracts_billing_pk.attribute13;
831       END IF;
832       IF (x_contractbilling_rec.attribute14 = TAPI_DEV_KIT.G_MISS_CHAR)
833       THEN
834         x_contractbilling_rec.attribute14 := l_cs_contracts_billing_pk.attribute14;
835       END IF;
836       IF (x_contractbilling_rec.attribute15 = TAPI_DEV_KIT.G_MISS_CHAR)
837       THEN
841       THEN
838         x_contractbilling_rec.attribute15 := l_cs_contracts_billing_pk.attribute15;
839       END IF;
840       IF (x_contractbilling_rec.context = TAPI_DEV_KIT.G_MISS_CHAR)
842         x_contractbilling_rec.context := l_cs_contracts_billing_pk.context;
843       END IF;
844       IF (x_contractbilling_rec.object_version_number = TAPI_DEV_KIT.G_MISS_NUM)
845       THEN
846         x_contractbilling_rec.object_version_number := l_cs_contracts_billing_pk.object_version_number;
847       END IF;
848       RETURN(l_return_status);
849     END populate_new_record;
850   BEGIN
851     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
852                                               G_PKG_NAME,
853                                               l_api_version,
854                                               p_api_version,
855                                               p_init_msg_list,
856                                               '_Pvt',
857                                               x_return_status);
858     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
859       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
860     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
861       RAISE FND_API.G_EXC_ERROR;
862     END IF;
863     migrate(p_contractbilling_val_rec, l_contractbilling_rec);
864     --- Defaulting item attributes
865     l_return_status := Default_Item_Attributes
866     (
867       l_contractbilling_rec,    ---- IN
868       l_def_contractbilling_rec
869     );
870     --- If any errors happen abort API
871     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
872       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
873     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
874       RAISE FND_API.G_EXC_ERROR;
875     END IF;
876     l_return_status := populate_new_record(l_def_contractbilling_rec, l_def_contractbilling_rec);
877     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
878       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
879     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
880       RAISE FND_API.G_EXC_ERROR;
881     END IF;
882     --- Validate all non-missing attributes (Item Level Validation)
883     IF p_validation_level >= FND_API.G_VALID_LEVEL_FULL THEN
884       l_return_status := Validate_Item_Attributes
885       (
886         l_def_contractbilling_rec    ---- IN
887       );
888       --- If any errors happen abort API
889       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
890         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
891       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
892         RAISE FND_API.G_EXC_ERROR;
893       END IF;
894     END IF;
895     IF (p_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
896       l_return_status := Validate_Item_Record(l_def_contractbilling_rec);
897       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
898         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
899       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
900         RAISE FND_API.G_EXC_ERROR;
901       END IF;
902     END IF;
903     UPDATE  CS_CONTRACTS_BILLING
904     SET
905         CONTRACT_BILLING_ID = l_def_contractbilling_rec.contract_billing_id ,
906         HEADER_ID = l_def_contractbilling_rec.header_id ,
907         ORDER_NUMBER = l_def_contractbilling_rec.order_number ,
908         LINE_ID = l_def_contractbilling_rec.line_id ,
909         CP_SERVICE_ID = l_def_contractbilling_rec.cp_service_id ,
910         CONTRACT_ID = l_def_contractbilling_rec.contract_id ,
911         CUST_TRX_TYPE_ID = l_def_contractbilling_rec.cust_trx_type_id ,
912         TRX_DATE = l_def_contractbilling_rec.trx_date ,
913         TRX_NUMBER = l_def_contractbilling_rec.trx_number ,
914         TRX_AMOUNT = l_def_contractbilling_rec.trx_amount ,
915         TRX_CLASS = l_def_contractbilling_rec.trx_class ,
916         BILLED_UNTIL_DATE = l_def_contractbilling_rec.billed_until_date ,
917         CURRENCY_CODE = l_def_contractbilling_rec.currency_code ,
918         LAST_UPDATE_DATE = l_def_contractbilling_rec.last_update_date ,
919         LAST_UPDATED_BY = l_def_contractbilling_rec.last_updated_by ,
920         CREATION_DATE = l_def_contractbilling_rec.creation_date ,
921         CREATED_BY = l_def_contractbilling_rec.created_by ,
922         LAST_UPDATE_LOGIN = l_def_contractbilling_rec.last_update_login ,
923         TRX_PRE_TAX_AMOUNT = l_def_contractbilling_rec.trx_pre_tax_amount ,
924         ATTRIBUTE1 = l_def_contractbilling_rec.attribute1 ,
925         ATTRIBUTE2 = l_def_contractbilling_rec.attribute2 ,
926         ATTRIBUTE3 = l_def_contractbilling_rec.attribute3 ,
927         ATTRIBUTE4 = l_def_contractbilling_rec.attribute4 ,
928         ATTRIBUTE5 = l_def_contractbilling_rec.attribute5 ,
929         ATTRIBUTE6 = l_def_contractbilling_rec.attribute6 ,
930         ATTRIBUTE7 = l_def_contractbilling_rec.attribute7 ,
931         ATTRIBUTE8 = l_def_contractbilling_rec.attribute8 ,
932         ATTRIBUTE9 = l_def_contractbilling_rec.attribute9 ,
933         ATTRIBUTE10 = l_def_contractbilling_rec.attribute10 ,
934         ATTRIBUTE11 = l_def_contractbilling_rec.attribute11 ,
935         ATTRIBUTE12 = l_def_contractbilling_rec.attribute12 ,
936         ATTRIBUTE13 = l_def_contractbilling_rec.attribute13 ,
937         ATTRIBUTE14 = l_def_contractbilling_rec.attribute14 ,
938         ATTRIBUTE15 = l_def_contractbilling_rec.attribute15 ,
939         CONTEXT = l_def_contractbilling_rec.context ,
940         OBJECT_VERSION_NUMBER = l_def_contractbilling_rec.object_version_number
941         WHERE
942           CONTRACT_BILLING_ID = l_def_contractbilling_rec.contract_billing_id
943           ;
944     x_object_version_number := l_def_contractbilling_rec.OBJECT_VERSION_NUMBER;
945     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
946   EXCEPTION
947     WHEN FND_API.G_EXC_ERROR THEN
948       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
949       (
950         l_api_name,
951         G_PKG_NAME,
955         '_Pvt'
952         'FND_API.G_RET_STS_ERROR',
953         x_msg_count,
954         x_msg_data,
956       );
957     APP_EXCEPTION.RAISE_EXCEPTION;
958     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
959       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
960       (
961         l_api_name,
962         G_PKG_NAME,
963         'FND_API.G_RET_STS_UNEXP_ERROR',
964         x_msg_count,
965         x_msg_data,
966         '_Pvt'
967       );
968     APP_EXCEPTION.RAISE_EXCEPTION;
969     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
970       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
971       (
972         l_api_name,
973         G_PKG_NAME,
974         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
975         x_msg_count,
976         x_msg_data,
977         '_Pvt'
978       );
979     APP_EXCEPTION.RAISE_EXCEPTION;
980   END update_row;
981   Procedure update_row
982   (
983     p_api_version                  IN NUMBER,
984     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
985     p_validation_level             IN NUMBER,
986     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
987     x_return_status                OUT VARCHAR2,
988     x_msg_count                    OUT NUMBER,
989     x_msg_data                     OUT VARCHAR2,
990     p_contract_billing_id          IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
991     p_header_id                    IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
992     p_order_number                 IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
993     p_line_id                      IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
994     p_cp_service_id                IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
995     p_contract_id                  IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
996     p_cust_trx_type_id             IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
997     p_trx_date                     IN CS_CONTRACTS_BILLING.TRX_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
998     p_trx_number                   IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
999     p_trx_amount                   IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1000     p_trx_class                    IN CS_CONTRACTS_BILLING.TRX_CLASS%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1001     p_billed_until_date            IN CS_CONTRACTS_BILLING.BILLED_UNTIL_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1002     p_currency_code                IN CS_CONTRACTS_BILLING.CURRENCY_CODE%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1003     p_last_update_date             IN CS_CONTRACTS_BILLING.LAST_UPDATE_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1004     p_last_updated_by              IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1005     p_creation_date                IN CS_CONTRACTS_BILLING.CREATION_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1006     p_created_by                   IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1007     p_last_update_login            IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1008     p_trx_pre_tax_amount           IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1009     p_attribute1                   IN CS_CONTRACTS_BILLING.ATTRIBUTE1%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1010     p_attribute2                   IN CS_CONTRACTS_BILLING.ATTRIBUTE2%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1011     p_attribute3                   IN CS_CONTRACTS_BILLING.ATTRIBUTE3%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1012     p_attribute4                   IN CS_CONTRACTS_BILLING.ATTRIBUTE4%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1013     p_attribute5                   IN CS_CONTRACTS_BILLING.ATTRIBUTE5%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1014     p_attribute6                   IN CS_CONTRACTS_BILLING.ATTRIBUTE6%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1015     p_attribute7                   IN CS_CONTRACTS_BILLING.ATTRIBUTE7%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1016     p_attribute8                   IN CS_CONTRACTS_BILLING.ATTRIBUTE8%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1017     p_attribute9                   IN CS_CONTRACTS_BILLING.ATTRIBUTE9%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1018     p_attribute10                  IN CS_CONTRACTS_BILLING.ATTRIBUTE10%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1019     p_attribute11                  IN CS_CONTRACTS_BILLING.ATTRIBUTE11%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1020     p_attribute12                  IN CS_CONTRACTS_BILLING.ATTRIBUTE12%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1021     p_attribute13                  IN CS_CONTRACTS_BILLING.ATTRIBUTE13%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1022     p_attribute14                  IN CS_CONTRACTS_BILLING.ATTRIBUTE14%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1023     p_attribute15                  IN CS_CONTRACTS_BILLING.ATTRIBUTE15%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1024     p_context                      IN CS_CONTRACTS_BILLING.CONTEXT%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1025     p_object_version_number        IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1026     x_object_version_number        OUT NUMBER) IS
1027     l_api_name                     CONSTANT VARCHAR2(30) := 'update_row';
1028     l_api_version                  CONSTANT NUMBER := 1;
1029     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1030     l_contractbilling_rec          ContractBilling_Val_Rec_Type;
1031   BEGIN
1032     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
1033                                               G_PKG_NAME,
1034                                               l_api_version,
1035                                               p_api_version,
1036                                               p_init_msg_list,
1037                                               '_Pvt',
1038                                               x_return_status);
1039     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1040       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1041     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1042       RAISE FND_API.G_EXC_ERROR;
1043     END IF;
1044     l_contractbilling_rec.CONTRACT_BILLING_ID := p_contract_billing_id;
1045     l_contractbilling_rec.HEADER_ID := p_header_id;
1046     l_contractbilling_rec.ORDER_NUMBER := p_order_number;
1047     l_contractbilling_rec.LINE_ID := p_line_id;
1048     l_contractbilling_rec.CP_SERVICE_ID := p_cp_service_id;
1049     l_contractbilling_rec.CONTRACT_ID := p_contract_id;
1053     l_contractbilling_rec.TRX_AMOUNT := p_trx_amount;
1050     l_contractbilling_rec.CUST_TRX_TYPE_ID := p_cust_trx_type_id;
1051     l_contractbilling_rec.TRX_DATE := p_trx_date;
1052     l_contractbilling_rec.TRX_NUMBER := p_trx_number;
1054     l_contractbilling_rec.TRX_CLASS := p_trx_class;
1055     l_contractbilling_rec.BILLED_UNTIL_DATE := p_billed_until_date;
1056     l_contractbilling_rec.CURRENCY_CODE := p_currency_code;
1057     l_contractbilling_rec.LAST_UPDATE_DATE := p_last_update_date;
1058     l_contractbilling_rec.LAST_UPDATED_BY := p_last_updated_by;
1059     l_contractbilling_rec.CREATION_DATE := p_creation_date;
1060     l_contractbilling_rec.CREATED_BY := p_created_by;
1061     l_contractbilling_rec.LAST_UPDATE_LOGIN := p_last_update_login;
1062     l_contractbilling_rec.TRX_PRE_TAX_AMOUNT := p_trx_pre_tax_amount;
1063     l_contractbilling_rec.ATTRIBUTE1 := p_attribute1;
1064     l_contractbilling_rec.ATTRIBUTE2 := p_attribute2;
1065     l_contractbilling_rec.ATTRIBUTE3 := p_attribute3;
1066     l_contractbilling_rec.ATTRIBUTE4 := p_attribute4;
1067     l_contractbilling_rec.ATTRIBUTE5 := p_attribute5;
1068     l_contractbilling_rec.ATTRIBUTE6 := p_attribute6;
1069     l_contractbilling_rec.ATTRIBUTE7 := p_attribute7;
1070     l_contractbilling_rec.ATTRIBUTE8 := p_attribute8;
1071     l_contractbilling_rec.ATTRIBUTE9 := p_attribute9;
1072     l_contractbilling_rec.ATTRIBUTE10 := p_attribute10;
1073     l_contractbilling_rec.ATTRIBUTE11 := p_attribute11;
1074     l_contractbilling_rec.ATTRIBUTE12 := p_attribute12;
1075     l_contractbilling_rec.ATTRIBUTE13 := p_attribute13;
1076     l_contractbilling_rec.ATTRIBUTE14 := p_attribute14;
1077     l_contractbilling_rec.ATTRIBUTE15 := p_attribute15;
1078     l_contractbilling_rec.CONTEXT := p_context;
1079     l_contractbilling_rec.OBJECT_VERSION_NUMBER := p_object_version_number;
1080     update_row(
1081       p_api_version,
1082       p_init_msg_list,
1083       p_validation_level,
1084       p_commit,
1085       x_return_status,
1086       x_msg_count,
1087       x_msg_data,
1088       l_contractbilling_rec,
1089       x_object_version_number
1090     );
1091     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
1092   EXCEPTION
1093     WHEN FND_API.G_EXC_ERROR THEN
1094       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1095       (
1096         l_api_name,
1097         G_PKG_NAME,
1098         'FND_API.G_RET_STS_ERROR',
1099         x_msg_count,
1100         x_msg_data,
1101         '_Pvt'
1102       );
1103     APP_EXCEPTION.RAISE_EXCEPTION;
1104     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1105       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1106       (
1107         l_api_name,
1108         G_PKG_NAME,
1109         'FND_API.G_RET_STS_UNEXP_ERROR',
1110         x_msg_count,
1111         x_msg_data,
1112         '_Pvt'
1113       );
1114     APP_EXCEPTION.RAISE_EXCEPTION;
1115     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
1116       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1117       (
1118         l_api_name,
1119         G_PKG_NAME,
1120         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
1121         x_msg_count,
1122         x_msg_data,
1123         '_Pvt'
1124       );
1125     APP_EXCEPTION.RAISE_EXCEPTION;
1126   END update_row;
1127   Procedure delete_row
1128   (
1129     p_api_version                  IN NUMBER,
1130     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
1131     p_validation_level             IN NUMBER,
1132     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
1133     x_return_status                OUT VARCHAR2,
1134     x_msg_count                    OUT NUMBER,
1135     x_msg_data                     OUT VARCHAR2,
1136     p_contract_billing_id          IN NUMBER) IS
1137     l_api_name                     CONSTANT VARCHAR2(30) := 'delete_row';
1138     l_api_version                  CONSTANT NUMBER := 1;
1139     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1140   BEGIN
1141     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
1142                                               G_PKG_NAME,
1143                                               l_api_version,
1144                                               p_api_version,
1145                                               p_init_msg_list,
1146                                               '_Pvt',
1147                                               x_return_status);
1148     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1149       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1150     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1151       RAISE FND_API.G_EXC_ERROR;
1152     END IF;
1153     DELETE  FROM CS_CONTRACTS_BILLING
1154     WHERE
1155       CONTRACT_BILLING_ID = p_contract_billing_id
1156       ;
1157     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
1158   EXCEPTION
1159     WHEN FND_API.G_EXC_ERROR THEN
1160       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1161       (
1162         l_api_name,
1163         G_PKG_NAME,
1164         'FND_API.G_RET_STS_ERROR',
1165         x_msg_count,
1166         x_msg_data,
1167         '_Pvt'
1168       );
1169     APP_EXCEPTION.RAISE_EXCEPTION;
1170     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1171       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1172       (
1173         l_api_name,
1174         G_PKG_NAME,
1175         'FND_API.G_RET_STS_UNEXP_ERROR',
1176         x_msg_count,
1177         x_msg_data,
1178         '_Pvt'
1179       );
1180     APP_EXCEPTION.RAISE_EXCEPTION;
1181     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
1182       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1183       (
1184         l_api_name,
1185         G_PKG_NAME,
1186         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
1187         x_msg_count,
1191     APP_EXCEPTION.RAISE_EXCEPTION;
1188         x_msg_data,
1189         '_Pvt'
1190       );
1192   END delete_row;
1193   PROCEDURE validate_row
1194   (
1195     p_api_version                  IN NUMBER,
1196     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
1197     p_validation_level             IN NUMBER,
1198     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
1199     x_return_status                OUT VARCHAR2,
1200     x_msg_count                    OUT NUMBER,
1201     x_msg_data                     OUT VARCHAR2,
1202     p_contractbilling_val_rec      IN ContractBilling_Val_Rec_Type := G_MISS_CONTRACTBILLING_VAL_REC) IS
1203     l_api_name                     CONSTANT VARCHAR2(30) := 'validate_row';
1204     l_api_version                  CONSTANT NUMBER := 1;
1205     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1206     l_contractbilling_rec          ContractBilling_Rec_Type;
1207     l_def_contractbilling_rec      ContractBilling_Rec_Type;
1208   BEGIN
1209     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
1210                                               G_PKG_NAME,
1211                                               l_api_version,
1212                                               p_api_version,
1213                                               p_init_msg_list,
1214                                               '_Pvt',
1215                                               x_return_status);
1216     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1217       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1218     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1219       RAISE FND_API.G_EXC_ERROR;
1220     END IF;
1221     migrate(p_contractbilling_val_rec, l_contractbilling_rec);
1222     --- Validate all non-missing attributes (Item Level Validation)
1223     IF p_validation_level >= FND_API.G_VALID_LEVEL_FULL THEN
1224       l_return_status := Validate_Item_Attributes
1225       (
1226         l_contractbilling_rec    ---- IN
1227       );
1228       --- If any errors happen abort API
1229       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1230         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1231       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1232         RAISE FND_API.G_EXC_ERROR;
1233       END IF;
1234     END IF;
1235     IF (p_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
1236       l_return_status := Validate_Item_Record(l_def_contractbilling_rec);
1237       IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1238         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1239       ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1240         RAISE FND_API.G_EXC_ERROR;
1241       END IF;
1242     END IF;
1243     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
1244   EXCEPTION
1245     WHEN FND_API.G_EXC_ERROR THEN
1246       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1247       (
1248         l_api_name,
1249         G_PKG_NAME,
1250         'FND_API.G_RET_STS_ERROR',
1251         x_msg_count,
1252         x_msg_data,
1253         '_Pvt'
1254       );
1255     APP_EXCEPTION.RAISE_EXCEPTION;
1256     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1257       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1258       (
1259         l_api_name,
1260         G_PKG_NAME,
1261         'FND_API.G_RET_STS_UNEXP_ERROR',
1262         x_msg_count,
1263         x_msg_data,
1264         '_Pvt'
1265       );
1266     APP_EXCEPTION.RAISE_EXCEPTION;
1267     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
1268       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1269       (
1270         l_api_name,
1271         G_PKG_NAME,
1272         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
1273         x_msg_count,
1274         x_msg_data,
1275         '_Pvt'
1276       );
1277     APP_EXCEPTION.RAISE_EXCEPTION;
1278   END validate_row;
1279   PROCEDURE validate_row
1280   (
1281     p_api_version                  IN NUMBER,
1282     p_init_msg_list                IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
1283     p_validation_level             IN NUMBER,
1284     p_commit                       IN VARCHAR2 := TAPI_DEV_KIT.G_FALSE,
1285     x_return_status                OUT VARCHAR2,
1286     x_msg_count                    OUT NUMBER,
1287     x_msg_data                     OUT VARCHAR2,
1288     p_contract_billing_id          IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1289     p_header_id                    IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1290     p_order_number                 IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1291     p_line_id                      IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1292     p_cp_service_id                IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1293     p_contract_id                  IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1294     p_cust_trx_type_id             IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1295     p_trx_date                     IN CS_CONTRACTS_BILLING.TRX_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1296     p_trx_number                   IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1297     p_trx_amount                   IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1298     p_trx_class                    IN CS_CONTRACTS_BILLING.TRX_CLASS%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1299     p_billed_until_date            IN CS_CONTRACTS_BILLING.BILLED_UNTIL_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1300     p_currency_code                IN CS_CONTRACTS_BILLING.CURRENCY_CODE%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1301     p_last_update_date             IN CS_CONTRACTS_BILLING.LAST_UPDATE_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1302     p_last_updated_by              IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1303     p_creation_date                IN CS_CONTRACTS_BILLING.CREATION_DATE%TYPE := TAPI_DEV_KIT.G_MISS_DATE,
1304     p_created_by                   IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1305     p_last_update_login            IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1306     p_trx_pre_tax_amount           IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM,
1310     p_attribute4                   IN CS_CONTRACTS_BILLING.ATTRIBUTE4%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1307     p_attribute1                   IN CS_CONTRACTS_BILLING.ATTRIBUTE1%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1308     p_attribute2                   IN CS_CONTRACTS_BILLING.ATTRIBUTE2%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1309     p_attribute3                   IN CS_CONTRACTS_BILLING.ATTRIBUTE3%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1311     p_attribute5                   IN CS_CONTRACTS_BILLING.ATTRIBUTE5%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1312     p_attribute6                   IN CS_CONTRACTS_BILLING.ATTRIBUTE6%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1313     p_attribute7                   IN CS_CONTRACTS_BILLING.ATTRIBUTE7%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1314     p_attribute8                   IN CS_CONTRACTS_BILLING.ATTRIBUTE8%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1315     p_attribute9                   IN CS_CONTRACTS_BILLING.ATTRIBUTE9%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1316     p_attribute10                  IN CS_CONTRACTS_BILLING.ATTRIBUTE10%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1317     p_attribute11                  IN CS_CONTRACTS_BILLING.ATTRIBUTE11%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1318     p_attribute12                  IN CS_CONTRACTS_BILLING.ATTRIBUTE12%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1319     p_attribute13                  IN CS_CONTRACTS_BILLING.ATTRIBUTE13%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1320     p_attribute14                  IN CS_CONTRACTS_BILLING.ATTRIBUTE14%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1321     p_attribute15                  IN CS_CONTRACTS_BILLING.ATTRIBUTE15%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1322     p_context                      IN CS_CONTRACTS_BILLING.CONTEXT%TYPE := TAPI_DEV_KIT.G_MISS_CHAR,
1323     p_object_version_number        IN NUMBER := TAPI_DEV_KIT.G_MISS_NUM) IS
1324     l_api_name                     CONSTANT VARCHAR2(30) := 'validate_row';
1325     l_api_version                  CONSTANT NUMBER := 1;
1326     l_return_status                VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1327     l_contractbilling_rec          ContractBilling_Val_Rec_Type;
1328   BEGIN
1329     l_return_status := TAPI_DEV_KIT.START_ACTIVITY(l_api_name,
1330                                               G_PKG_NAME,
1331                                               l_api_version,
1332                                               p_api_version,
1333                                               p_init_msg_list,
1334                                               '_Pvt',
1335                                               x_return_status);
1336     IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1337       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1338     ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1339       RAISE FND_API.G_EXC_ERROR;
1340     END IF;
1341     l_contractbilling_rec.CONTRACT_BILLING_ID := p_contract_billing_id;
1342     l_contractbilling_rec.HEADER_ID := p_header_id;
1343     l_contractbilling_rec.ORDER_NUMBER := p_order_number;
1344     l_contractbilling_rec.LINE_ID := p_line_id;
1345     l_contractbilling_rec.CP_SERVICE_ID := p_cp_service_id;
1346     l_contractbilling_rec.CONTRACT_ID := p_contract_id;
1347     l_contractbilling_rec.CUST_TRX_TYPE_ID := p_cust_trx_type_id;
1348     l_contractbilling_rec.TRX_DATE := p_trx_date;
1349     l_contractbilling_rec.TRX_NUMBER := p_trx_number;
1350     l_contractbilling_rec.TRX_AMOUNT := p_trx_amount;
1351     l_contractbilling_rec.TRX_CLASS := p_trx_class;
1352     l_contractbilling_rec.BILLED_UNTIL_DATE := p_billed_until_date;
1353     l_contractbilling_rec.CURRENCY_CODE := p_currency_code;
1354     l_contractbilling_rec.LAST_UPDATE_DATE := p_last_update_date;
1355     l_contractbilling_rec.LAST_UPDATED_BY := p_last_updated_by;
1356     l_contractbilling_rec.CREATION_DATE := p_creation_date;
1357     l_contractbilling_rec.CREATED_BY := p_created_by;
1358     l_contractbilling_rec.LAST_UPDATE_LOGIN := p_last_update_login;
1359     l_contractbilling_rec.TRX_PRE_TAX_AMOUNT := p_trx_pre_tax_amount;
1360     l_contractbilling_rec.ATTRIBUTE1 := p_attribute1;
1361     l_contractbilling_rec.ATTRIBUTE2 := p_attribute2;
1362     l_contractbilling_rec.ATTRIBUTE3 := p_attribute3;
1363     l_contractbilling_rec.ATTRIBUTE4 := p_attribute4;
1364     l_contractbilling_rec.ATTRIBUTE5 := p_attribute5;
1365     l_contractbilling_rec.ATTRIBUTE6 := p_attribute6;
1366     l_contractbilling_rec.ATTRIBUTE7 := p_attribute7;
1367     l_contractbilling_rec.ATTRIBUTE8 := p_attribute8;
1368     l_contractbilling_rec.ATTRIBUTE9 := p_attribute9;
1369     l_contractbilling_rec.ATTRIBUTE10 := p_attribute10;
1370     l_contractbilling_rec.ATTRIBUTE11 := p_attribute11;
1371     l_contractbilling_rec.ATTRIBUTE12 := p_attribute12;
1372     l_contractbilling_rec.ATTRIBUTE13 := p_attribute13;
1373     l_contractbilling_rec.ATTRIBUTE14 := p_attribute14;
1374     l_contractbilling_rec.ATTRIBUTE15 := p_attribute15;
1375     l_contractbilling_rec.CONTEXT := p_context;
1376     l_contractbilling_rec.OBJECT_VERSION_NUMBER := p_object_version_number;
1377     validate_row(
1378       p_api_version,
1379       p_init_msg_list,
1380       p_validation_level,
1381       p_commit,
1382       x_return_status,
1383       x_msg_count,
1384       x_msg_data,
1385       l_contractbilling_rec
1386     );
1387     TAPI_DEV_KIT.END_ACTIVITY(p_commit, x_msg_count, x_msg_data);
1388   EXCEPTION
1389     WHEN FND_API.G_EXC_ERROR THEN
1390       x_return_status := TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1391       (
1392         l_api_name,
1393         G_PKG_NAME,
1394         'FND_API.G_RET_STS_ERROR',
1395         x_msg_count,
1396         x_msg_data,
1397         '_Pvt'
1398       );
1399     APP_EXCEPTION.RAISE_EXCEPTION;
1400     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1401       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1402       (
1403         l_api_name,
1404         G_PKG_NAME,
1405         'FND_API.G_RET_STS_UNEXP_ERROR',
1406         x_msg_count,
1407         x_msg_data,
1408         '_Pvt'
1409       );
1410     APP_EXCEPTION.RAISE_EXCEPTION;
1411     WHEN TAPI_DEV_KIT.G_EXC_DUP_VAL_ON_INDEX THEN
1412       x_return_status :=TAPI_DEV_KIT.HANDLE_EXCEPTIONS
1413       (
1414         l_api_name,
1415         G_PKG_NAME,
1416         'TAPI_DEV_KIT.G_RET_STS_DUP_VAL_ON_INDEX',
1417         x_msg_count,
1418         x_msg_data,
1419         '_Pvt'
1420       );
1421     APP_EXCEPTION.RAISE_EXCEPTION;
1422   END validate_row;
1423 END CS_CONTRACTBILLING_PVT;