DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_CLAIM_PUB

Source


1 PACKAGE BODY OZF_CLAIM_PUB as
2 /* $Header: ozfpclab.pls 120.15.12020000.2 2012/07/17 10:18:36 bkunjan ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          OZF_CLAIM_PUB
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- MODIFICATION HISTORY
14 --    KPATRO     26-Dec-2007      12.1 Enhancement: Price Protection
15 --                                Added a new column dpp_cust_account_id
16 --    KPATRO     17-Jan-2008      Added the PPVENDOR check for update claim
17 --    KPATRO     16-Apr-2008      Fix for bug 6965694
18 --    KPATRO     30-sep-2008      Fix for Bug 7443072
19 --    KPATRO     04-Apr-2009      Fix for Bug 8402328
20 --    KPATRO     17-Apr-2009	  Fix for Bug 8438651
21 --    KPATRO     08-May-2009      Fix for Bug 8501176
22 --    KPATRO     29-Mar-2011      Fix for Bug 11932210
23 --    BKUNJAN    21-Sep-2011      ER 12985686 - SIEBEL TPM UPGRADE TO CHRM RELEASE 12.1.3+ : DEDUCTION RESOLUTION
24 --    BKUNJAN    11-Nov-2011      Bug 13346665 - OZF_CLAIM_PUB.UPDATE_CLAIM NOT UPDATING CLAIM LINE
25 --    APYADAV	 28-Nov-2011	  Bug 13421908 -FP 13418731 - CLAIM API ERROR WHEN IT TRIES TO ASSOCIATE OFFER WITH RELATIONSHIP:ALL
26 --    BKUNJAN    02-Dec-2011      Bug 13398807 - AFTER PATCH 13346665 RECEIVE ERROR CATEGORY ID IS INVALID
27 --    BKUNJAN    13-Dec-2011      Bug 13481137 - OZF_CLAIM_PUB.CREATE_EVENT NOT WORKING AS EXPECTED WHEN REVERTING GL ENTRY
28 --    BKUNJAN    17-Jul-2012      Bug 14297905 - ER : NEED TRADE MANAGEMENT ACCOUNT GENERATOR OZF_CSTL IN VERSION 12.2.1
29 -- End of Comments
30 -- ===============================================================
31 G_PKG_NAME CONSTANT VARCHAR2(30):= 'OZF_CLAIM_PUB';
32 G_FILE_NAME CONSTANT VARCHAR2(14) := 'ozfpclab.pls';
33 
34 G_DEBUG BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
35 
36 ---------------------------------------------------------------------
37 -- PROCEDURE
38 --    create_claim
39 --
40 -- PURPOSE
41 --    This procedure creates claim and claim line with unique ID's
42 --
43 -- PARAMETERS
44 --    p_claim_line_tbl
45 --    p_claim_rec
46 --    x_claim_id
47 --    x_return_status
48 --
49 -- NOTES
50 ---------------------------------------------------------------------
51 PROCEDURE Create_Claim(
52    p_api_version_number IN   NUMBER,
53    p_init_msg_list      IN   VARCHAR2     := FND_API.G_FALSE,
54    p_commit             IN   VARCHAR2     := FND_API.G_FALSE,
55    p_validation_level   IN    NUMBER   := FND_API.g_valid_level_full,
56    x_return_status      OUT NOCOPY  VARCHAR2,
57    x_msg_count          OUT NOCOPY  NUMBER,
58    x_msg_data           OUT NOCOPY  VARCHAR2,
59    p_claim_rec          IN   claim_rec_type,
60    p_claim_line_tbl     IN   claim_line_tbl_type,
61    x_claim_id           OUT NOCOPY  NUMBER
62 )
63 IS
64    L_API_NAME               CONSTANT VARCHAR2(30) := 'Create_Claim';
65    L_API_VERSION_NUMBER     CONSTANT NUMBER   := 1.0;
66    l_pvt_claim_rec          OZF_ClAIM_PVT.claim_rec_type;
67    l_x_pvt_claim_rec        OZF_ClAIM_PVT.claim_rec_type;
68    l_claim_rec              OZF_Claim_PUB.claim_rec_type  := p_claim_rec;
69    l_claim_line_tbl         claim_line_tbl_type := p_claim_line_tbl;
70    l_claim_line_rec         claim_line_rec_type ;
71    l_pvt_line_rec           OZF_CLAIM_LINE_PVT.claim_line_rec_type;
72    x_claim_LINE_id          NUMBER;
73    l_error_index            NUMBER;
74 
75     -- Fix for Bug 11932210
76    CURSOR c_item_uom(p_item_uom IN VARCHAR2,p_inventory_item_id IN NUMBER,p_org_id IN NUMBER)IS
77     SELECT a.uom_code
78     FROM   mtl_units_of_measure a,
79 	   mtl_system_items c
80     WHERE c.primary_unit_of_measure = a.unit_of_measure
81     AND   c.organization_id         = p_org_id
82     AND   c.inventory_item_id       = p_inventory_item_id
83     AND   uom_code                  = p_item_uom;
84 
85     l_item_uom                 VARCHAR2(30);
86 
87     l_inv_org_id  NUMBER := FND_PROFILE.VALUE('QP_ORGANIZATION_ID');
88 
89 BEGIN
90 -- Standard Start of API savepoint
91 SAVEPOINT CREATE_Claim_PUB;
92 -- Standard call to check for call compatibility.
93 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
94    p_api_version_number,
95    l_api_name,
96    G_PKG_NAME)
97 THEN
98    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
99 END IF;
100 -- Initialize message list if p_init_msg_list is set to TRUE.
101 IF FND_API.to_Boolean( p_init_msg_list )
102 THEN
103    FND_MSG_PUB.initialize;
104 END IF;
105 -- Debug Message
106 IF g_debug THEN
107    OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || ' pub start');
108 END IF;
109 -- Initialize API return status to SUCCESS
110 x_return_status := FND_API.G_RET_STS_SUCCESS;
111 --
112 -- API body
113 --
114 -- Construct the claim rec to pass to private api
115 --
116    l_pvt_claim_rec.claim_id:=l_claim_rec.claim_id;
117    l_pvt_claim_rec.object_version_number:=l_claim_rec.object_version_number;
118    l_pvt_claim_rec.last_update_date:=l_claim_rec.last_update_date;
119    l_pvt_claim_rec.last_updated_by:=l_claim_rec.last_updated_by;
120    l_pvt_claim_rec.creation_date:=l_claim_rec.creation_date;
121    l_pvt_claim_rec.created_by:=l_claim_rec.created_by;
122    l_pvt_claim_rec.last_update_login:=l_claim_rec.last_update_login;
123    l_pvt_claim_rec.request_id:=l_claim_rec.request_id;
124    l_pvt_claim_rec.program_application_id:=l_claim_rec.program_application_id;
125    l_pvt_claim_rec.program_update_date:=l_claim_rec.program_update_date;
126    l_pvt_claim_rec.program_id:=l_claim_rec.program_id;
127    l_pvt_claim_rec.created_from:=l_claim_rec.created_from;
128    l_pvt_claim_rec.batch_id:=l_claim_rec.batch_id;
129    l_pvt_claim_rec.claim_number:=l_claim_rec.claim_number;
130    l_pvt_claim_rec.claim_type_id:=l_claim_rec.claim_type_id;
131    l_pvt_claim_rec.claim_class:=l_claim_rec.claim_class;
132    l_pvt_claim_rec.claim_date:=l_claim_rec.claim_date;
133    l_pvt_claim_rec.due_date:=l_claim_rec.due_date;
134    l_pvt_claim_rec.owner_id:=l_claim_rec.owner_id;
135    l_pvt_claim_rec.history_event:=l_claim_rec.history_event;
136    l_pvt_claim_rec.history_event_date:=l_claim_rec.history_event_date;
137    l_pvt_claim_rec.history_event_description:=l_claim_rec.history_event_description;
138    l_pvt_claim_rec.split_from_claim_id:=l_claim_rec.split_from_claim_id;
139    l_pvt_claim_rec.duplicate_claim_id:=l_claim_rec.duplicate_claim_id;
140    l_pvt_claim_rec.split_date:=l_claim_rec.split_date;
141    l_pvt_claim_rec.root_claim_id:=l_claim_rec.root_claim_id;
142    l_pvt_claim_rec.amount:=l_claim_rec.amount;
143    l_pvt_claim_rec.amount_adjusted:=l_claim_rec.amount_adjusted;
144    l_pvt_claim_rec.amount_remaining:=l_claim_rec.amount_remaining;
145    l_pvt_claim_rec.amount_settled:=l_claim_rec.amount_settled;
146    l_pvt_claim_rec.acctd_amount:=l_claim_rec.acctd_amount;
147    l_pvt_claim_rec.acctd_amount_remaining:=l_claim_rec.acctd_amount_remaining;
148    l_pvt_claim_rec.tax_amount:=l_claim_rec.tax_amount;
149    l_pvt_claim_rec.tax_code:=l_claim_rec.tax_code;
150    l_pvt_claim_rec.tax_calculation_flag:=l_claim_rec.tax_calculation_flag;
151    l_pvt_claim_rec.currency_code:=l_claim_rec.currency_code;
152    l_pvt_claim_rec.exchange_rate_type:=l_claim_rec.exchange_rate_type;
153    l_pvt_claim_rec.exchange_rate_date:=l_claim_rec.exchange_rate_date;
154    l_pvt_claim_rec.exchange_rate:=l_claim_rec.exchange_rate;
155    l_pvt_claim_rec.set_of_books_id:=l_claim_rec.set_of_books_id;
156    l_pvt_claim_rec.original_claim_date:=l_claim_rec.original_claim_date;
157    l_pvt_claim_rec.source_object_id:=l_claim_rec.source_object_id;
158    l_pvt_claim_rec.source_object_class:=l_claim_rec.source_object_class;
159    l_pvt_claim_rec.source_object_type_id:=l_claim_rec.source_object_type_id;
160    l_pvt_claim_rec.source_object_number:=l_claim_rec.source_object_number;
161    l_pvt_claim_rec.cust_account_id:=l_claim_rec.cust_account_id;
162    l_pvt_claim_rec.cust_billto_acct_site_id:=l_claim_rec.cust_billto_acct_site_id;
163    l_pvt_claim_rec.cust_shipto_acct_site_id:=l_claim_rec.cust_shipto_acct_site_id;
164    l_pvt_claim_rec.location_id:=l_claim_rec.location_id;
165    l_pvt_claim_rec.pay_related_account_flag:=l_claim_rec.pay_related_account_flag;
166    l_pvt_claim_rec.related_cust_account_id:=l_claim_rec.related_cust_account_id;
167    l_pvt_claim_rec.related_site_use_id:=l_claim_rec.related_site_use_id;
168    l_pvt_claim_rec.relationship_type:=l_claim_rec.relationship_type;
169    l_pvt_claim_rec.vendor_id:=l_claim_rec.vendor_id;
170    l_pvt_claim_rec.vendor_site_id:=l_claim_rec.vendor_site_id;
171    l_pvt_claim_rec.reason_type:=l_claim_rec.reason_type;
172    l_pvt_claim_rec.reason_code_id:=l_claim_rec.reason_code_id;
173    l_pvt_claim_rec.task_template_group_id:=l_claim_rec.task_template_group_id;
174    l_pvt_claim_rec.status_code:=l_claim_rec.status_code;
175    l_pvt_claim_rec.user_status_id:=l_claim_rec.user_status_id;
176    l_pvt_claim_rec.sales_rep_id:=l_claim_rec.sales_rep_id;
177    l_pvt_claim_rec.collector_id:=l_claim_rec.collector_id;
178    l_pvt_claim_rec.contact_id:=l_claim_rec.contact_id;
179    l_pvt_claim_rec.broker_id:=l_claim_rec.broker_id;
180    l_pvt_claim_rec.territory_id:=l_claim_rec.territory_id;
181    l_pvt_claim_rec.customer_ref_date:=l_claim_rec.customer_ref_date;
182    l_pvt_claim_rec.customer_ref_number:=l_claim_rec.customer_ref_number;
183    l_pvt_claim_rec.assigned_to:=l_claim_rec.assigned_to;
184    l_pvt_claim_rec.receipt_id:=l_claim_rec.receipt_id;
185    l_pvt_claim_rec.receipt_number:=l_claim_rec.receipt_number;
186    l_pvt_claim_rec.doc_sequence_id:=l_claim_rec.doc_sequence_id;
187    l_pvt_claim_rec.doc_sequence_value:=l_claim_rec.doc_sequence_value;
188    l_pvt_claim_rec.gl_date:=l_claim_rec.gl_date;
189    l_pvt_claim_rec.payment_method:=l_claim_rec.payment_method;
190    l_pvt_claim_rec.voucher_id:=l_claim_rec.voucher_id;
191    l_pvt_claim_rec.voucher_number:=l_claim_rec.voucher_number;
192    l_pvt_claim_rec.payment_reference_id:=l_claim_rec.payment_reference_id;
193    l_pvt_claim_rec.payment_reference_number:=l_claim_rec.payment_reference_number;
194    l_pvt_claim_rec.payment_reference_date:=l_claim_rec.payment_reference_date;
195    l_pvt_claim_rec.payment_status:=l_claim_rec.payment_status;
196    l_pvt_claim_rec.approved_flag:=l_claim_rec.approved_flag;
197    l_pvt_claim_rec.approved_date:=l_claim_rec.approved_date;
198    l_pvt_claim_rec.approved_by:=l_claim_rec.approved_by;
199    l_pvt_claim_rec.settled_date:=l_claim_rec.settled_date;
200    l_pvt_claim_rec.settled_by:=l_claim_rec.settled_by;
201    l_pvt_claim_rec.effective_date:=l_claim_rec.effective_date;
202    l_pvt_claim_rec.custom_setup_id:=l_claim_rec.custom_setup_id;
203    l_pvt_claim_rec.task_id:=l_claim_rec.task_id;
204    l_pvt_claim_rec.country_id:=l_claim_rec.country_id;
205    l_pvt_claim_rec.order_type_id:=l_claim_rec.order_type_id;
206    l_pvt_claim_rec.comments:=l_claim_rec.comments;
207    l_pvt_claim_rec.attribute_category:=l_claim_rec.attribute_category;
208    l_pvt_claim_rec.attribute1:=l_claim_rec.attribute1;
209    l_pvt_claim_rec.attribute2:=l_claim_rec.attribute2;
210    l_pvt_claim_rec.attribute3:=l_claim_rec.attribute3;
211    l_pvt_claim_rec.attribute4:=l_claim_rec.attribute4;
212    l_pvt_claim_rec.attribute5:=l_claim_rec.attribute5;
213    l_pvt_claim_rec.attribute6:=l_claim_rec.attribute6;
214    l_pvt_claim_rec.attribute7:=l_claim_rec.attribute7;
215    l_pvt_claim_rec.attribute8:=l_claim_rec.attribute8;
216    l_pvt_claim_rec.attribute9:=l_claim_rec.attribute9;
217    l_pvt_claim_rec.attribute10:=l_claim_rec.attribute10;
218    l_pvt_claim_rec.attribute11:=l_claim_rec.attribute11;
219    l_pvt_claim_rec.attribute12:=l_claim_rec.attribute12;
220    l_pvt_claim_rec.attribute13:=l_claim_rec.attribute13;
221    l_pvt_claim_rec.attribute14:=l_claim_rec.attribute14;
222    l_pvt_claim_rec.attribute15:=l_claim_rec.attribute15;
223    l_pvt_claim_rec.deduction_attribute_category:=l_claim_rec.deduction_attribute_category;
224    l_pvt_claim_rec.deduction_attribute1:=l_claim_rec.deduction_attribute1;
225    l_pvt_claim_rec.deduction_attribute2:=l_claim_rec.deduction_attribute2;
226    l_pvt_claim_rec.deduction_attribute3:=l_claim_rec.deduction_attribute3;
227    l_pvt_claim_rec.deduction_attribute4:=l_claim_rec.deduction_attribute4;
228    l_pvt_claim_rec.deduction_attribute5:=l_claim_rec.deduction_attribute5;
229    l_pvt_claim_rec.deduction_attribute6:=l_claim_rec.deduction_attribute6;
230    l_pvt_claim_rec.deduction_attribute7:=l_claim_rec.deduction_attribute7;
231    l_pvt_claim_rec.deduction_attribute8:=l_claim_rec.deduction_attribute8;
232    l_pvt_claim_rec.deduction_attribute9:=l_claim_rec.deduction_attribute9;
233    l_pvt_claim_rec.deduction_attribute10:=l_claim_rec.deduction_attribute10;
234    l_pvt_claim_rec.deduction_attribute11:=l_claim_rec.deduction_attribute11;
235    l_pvt_claim_rec.deduction_attribute12:=l_claim_rec.deduction_attribute12;
236    l_pvt_claim_rec.deduction_attribute13:=l_claim_rec.deduction_attribute13;
237    l_pvt_claim_rec.deduction_attribute14:=l_claim_rec.deduction_attribute14;
238    l_pvt_claim_rec.deduction_attribute15:=l_claim_rec.deduction_attribute15;
239    l_pvt_claim_rec.org_id:=l_claim_rec.org_id;
240 
241    l_pvt_claim_rec.write_off_flag                  	:=l_claim_rec.write_off_flag;
242    l_pvt_claim_rec.write_off_threshold_amount      	:=l_claim_rec.write_off_threshold_amount;
243    l_pvt_claim_rec.under_write_off_threshold       	:=l_claim_rec.under_write_off_threshold;
244    l_pvt_claim_rec.customer_reason                 	:=l_claim_rec.customer_reason;
245    l_pvt_claim_rec.ship_to_cust_account_id         	:=l_claim_rec.ship_to_cust_account_id;
246    l_pvt_claim_rec.amount_applied                  	:=l_claim_rec.amount_applied;
247    l_pvt_claim_rec.applied_receipt_id              	:=l_claim_rec.applied_receipt_id;
248    l_pvt_claim_rec.applied_receipt_number          	:=l_claim_rec.applied_receipt_number;
249    l_pvt_claim_rec.wo_rec_trx_id                   	:=l_claim_rec.wo_rec_trx_id;
250    l_pvt_claim_rec.group_claim_id                     :=l_claim_rec.group_claim_id;
251    l_pvt_claim_rec.appr_wf_item_key                	:=l_claim_rec.appr_wf_item_key;
252    l_pvt_claim_rec.cstl_wf_item_key                	:=l_claim_rec.cstl_wf_item_key;
253    l_pvt_claim_rec.batch_type                      	:=l_claim_rec.batch_type;
254 
255 --
256 -- Calling Private package: Create_Claim
257 -- Hint: Primary key needs to be returned
258 -- Check for default values befor creating claim.
259 
260    OZF_claim_PVT.Check_Claim_Common_Element (
261       p_api_version      => p_api_version_number,
262       p_init_msg_list    => p_init_msg_list,
263       p_validation_level => p_validation_level,
264       x_Return_Status      => x_return_status,
265       x_Msg_Count          => x_msg_count,
266       x_Msg_Data           => x_msg_data,
267       p_claim              => l_pvt_claim_rec,
268       x_claim              => l_x_pvt_claim_rec
269    );
270 -- Check return status from the above procedure call
271    IF x_return_status = FND_API.G_RET_STS_ERROR THEN
272       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
273    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
274       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
275    END IF;
276    l_pvt_claim_rec := l_x_pvt_claim_rec;
277 
278 -- OZF_UTILITY_PVT.debug_message('Call  Private APICreate Claim Procdure 1');
279    OZF_claim_PVT.Create_Claim(
280       p_api_version      => p_api_version_number,
281       p_init_msg_list    => FND_API.G_FALSE,
282       p_commit           => FND_API.G_FALSE,
283       P_Validation_Level   => p_Validation_Level,
284       X_Return_Status      => x_return_status,
285       X_Msg_Count          => x_msg_count,
286       X_Msg_Data           => x_msg_data,
287       P_claim              => l_pvt_claim_rec,
288       X_CLAIM_ID           => x_claim_id
289    );
290 -- Check return status from the above procedure call
291    IF x_return_status = FND_API.G_RET_STS_ERROR then
292       RAISE FND_API.G_EXC_ERROR;
293    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
294       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
295    END IF;
296 
297    IF p_claim_line_tbl.count > 0 THEN
298      l_claim_line_tbl := p_claim_line_tbl;
299      FOR i IN p_claim_line_tbl.FIRST..p_claim_line_tbl.LAST LOOP
300        l_claim_line_tbl(i).claim_id := x_claim_id;
301         --// BKUNJAN Added validation
302             IF (l_claim_line_tbl(i).item_id <> FND_API.g_miss_num AND l_claim_line_tbl(i).item_id IS NOT NULL) AND (l_claim_line_tbl(i).QUANTITY_UOM <> FND_API.g_miss_char AND l_claim_line_tbl(i).QUANTITY_UOM IS NOT NULL) THEN
303 		-- Fix for Bug 11932210
304 		  OPEN  c_item_uom(l_claim_line_tbl(i).QUANTITY_UOM
305 				  ,l_claim_line_tbl(i).item_id
306 				  ,l_inv_org_id);
307 		  FETCH c_item_uom INTO l_item_uom;
308 		  CLOSE c_item_uom;
309 
310 		  IF(l_item_uom IS NOT NULL) THEN
311 		     l_claim_line_tbl(i).QUANTITY_UOM := l_item_uom;
312 		  ELSE
313 		     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
314 			FND_MESSAGE.set_name('OZF', 'OZF_METR_INVALID_UOM');
315 			--//Unit of Measurement is Invalid
316 		       FND_MSG_PUB.add;
317 		     END IF;
318 		     x_return_status := fnd_api.G_RET_STS_UNEXP_ERROR;
319 		     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
320 		     RETURN;
321 		  END IF;
322             END IF;
323        --End for Fix of Bug 11932210
324      END LOOP;
325    END IF;
326 -- Call create claim line procedure
327    Create_Claim_Line_Tbl(
328    p_api_version       => p_api_version_number
329    ,p_init_msg_list    => FND_API.G_FALSE
330    ,P_commit           => FND_API.G_FALSE
331    ,p_validation_level => p_validation_level
332    ,x_return_status          =>   x_return_status
333    ,x_msg_data               =>   x_msg_data
334    ,x_msg_count              =>   x_msg_count
335    ,p_claim_line_tbl         =>   l_claim_line_tbl
336    ,x_error_index            =>   l_error_index);
337 IF g_debug THEN
338    ozf_utility_pvt.debug_message('return status for create_claim_line_tbl =>'||x_return_status);
339 END IF;
340    IF x_return_status = FND_API.G_RET_STS_ERROR then
341       RAISE FND_API.G_EXC_ERROR;
342    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
343       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
344    END IF;
345 -- Debug Message
346 IF g_debug THEN
347    OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
348 END IF;
349    IF FND_API.to_Boolean( p_commit )
350    THEN
351       COMMIT WORK;
352    END IF;
353 --OZF_UTILITY_PVT.DEBUG_MESSAGE('CLAIM_ID=>'||l_claim_line_rec.claim_id);
354 -- Standard call to get message count and if count is 1, get message info.
355    FND_MSG_PUB.Count_And_Get (
356    p_encoded => FND_API.G_FALSE,
357    p_count          =>   x_msg_count,
358    p_data           =>   x_msg_data
359    );
360 EXCEPTION
361 WHEN OZF_Utility_PVT.resource_locked THEN
362    ROLLBACK TO CREATE_Claim_PUB;
363    x_return_status := FND_API.G_RET_STS_ERROR;
364    OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
365    FND_MSG_PUB.Count_And_Get (
366    p_encoded => FND_API.G_FALSE,
367    p_count   => x_msg_count,
368    p_data    => x_msg_data
369    );
370 WHEN FND_API.G_EXC_ERROR THEN
371    ROLLBACK TO CREATE_Claim_PUB;
372    x_return_status := FND_API.G_RET_STS_ERROR;
373    -- Standard call to get message count and if count=1, get the message
374    FND_MSG_PUB.Count_And_Get (
375    p_encoded => FND_API.G_FALSE,
376    p_count   => x_msg_count,
377    p_data    => x_msg_data
378    );
379 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
380    ROLLBACK TO CREATE_Claim_PUB;
381    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
382    -- Standard call to get message count and if count=1, get the message
383    FND_MSG_PUB.Count_And_Get (
384    p_encoded => FND_API.G_FALSE,
385    p_count => x_msg_count,
386    p_data  => x_msg_data
387    );
388 WHEN OTHERS THEN
389    ROLLBACK TO CREATE_Claim_PUB;
390    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
391    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
392    THEN
393       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
394    END IF;
395    -- Standard call to get message count and if count=1, get the message
396    FND_MSG_PUB.Count_And_Get (
397    p_encoded => FND_API.G_FALSE,
398    p_count => x_msg_count,
399    p_data  => x_msg_data
400    );
401 End Create_Claim;
402 --Begin of create claim line
403 ---------------------------------------------------------------------
404 -- PROCEDURE
405 --    create_claim_line_Tbl
406 --
407 -- PURPOSE
408 --    This procedure  claim line with unique ID's
409 --
410 -- PARAMETERS
411 --
412 --    p_claim_rec
413 --    x_claim_line_id
414 --    x_return_status
415 --
416 -- NOTES
417 ---------------------------------------------------------------------
418 PROCEDURE Create_Claim_Line_Tbl(
419    p_api_version             IN  NUMBER
420    ,p_init_msg_list          IN  VARCHAR2 := FND_API.g_false
421    ,p_commit                 IN  VARCHAR2 := FND_API.g_false
422    ,p_validation_level       IN  NUMBER   := FND_API.g_valid_level_full
423    ,x_return_status          OUT NOCOPY   VARCHAR2
424    ,x_msg_data               OUT NOCOPY   VARCHAR2
425    ,x_msg_count              OUT NOCOPY   NUMBER
426    ,p_claim_line_tbl         IN  claim_line_tbl_type
427    ,x_error_index            OUT NOCOPY   NUMBER
428 )
429 IS
430    L_API_NAME               CONSTANT VARCHAR2(30) := 'Create_Claim_Line';
431    L_API_VERSION_NUMBER     CONSTANT NUMBER   := 1.0;
432    l_pvt_claim_line_rec     OZF_CLAIM_LINE_PVT.claim_line_rec_type;
433    l_claim_LINE_id          NUMBER;
434    l_claim_line_rec         claim_line_rec_type;
435    l_error_index            NUMBER;
436    l_pvt_claim_line_tbl     OZF_CLAIM_LINE_PVT.claim_line_tbl_type ;
437    l_claim_line_tbl         OZF_CLAIM_PUB.claim_line_tbl_type := p_claim_line_tbl;
438 BEGIN
439    SAVEPOINT Create_Claim_Line_Tbl;
440 -- Standard call to check for call compatibility.
441    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
442       p_api_version,
443       l_api_name,
444       G_PKG_NAME)
445    THEN
446       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
447    END IF;
448 -- Initialize message list if p_init_msg_list is set to TRUE.
449    IF FND_API.to_Boolean( p_init_msg_list )
450    THEN
451       FND_MSG_PUB.initialize;
452    END IF;
453 -- Debug Message
454    IF g_debug THEN
455       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || ' pub start');
456    END IF;
457 -- Initialize API return status to SUCCESS
458    x_return_status := FND_API.G_RET_STS_SUCCESS;
459     IF p_claim_line_tbl.count > 0 THEN
460    --
461        l_claim_line_tbl := p_claim_line_tbl;
462    FOR i IN p_claim_line_tbl.FIRST..p_claim_line_tbl.LAST LOOP
463    --
464      l_pvt_claim_line_tbl(i).claim_line_id               := l_claim_line_tbl(i).claim_line_id  ;
465      l_pvt_claim_line_tbl(i).object_version_number       := l_claim_line_tbl(i).object_version_number;
466      l_pvt_claim_line_tbl(i).last_update_date            := l_claim_line_tbl(i).last_update_date;
467      l_pvt_claim_line_tbl(i).last_updated_by             := l_claim_line_tbl(i).last_updated_by ;
468      l_pvt_claim_line_tbl(i).creation_date               := l_claim_line_tbl(i).creation_date ;
469      l_pvt_claim_line_tbl(i).created_by                  := l_claim_line_tbl(i).created_by ;
470      l_pvt_claim_line_tbl(i).last_update_login           := l_claim_line_tbl(i).last_update_login;
471      l_pvt_claim_line_tbl(i).request_id                  := l_claim_line_tbl(i).request_id;
472      l_pvt_claim_line_tbl(i).program_application_id      := l_claim_line_tbl(i).program_application_id;
473      l_pvt_claim_line_tbl(i).program_update_date         := l_claim_line_tbl(i).program_update_date ;
474      l_pvt_claim_line_tbl(i).program_id                  := l_claim_line_tbl(i).program_id;
475      l_pvt_claim_line_tbl(i).created_from                := l_claim_line_tbl(i).created_from;
476      l_pvt_claim_line_tbl(i).claim_id                    := l_claim_line_tbl(i).claim_id;
477      l_pvt_claim_line_tbl(i).line_number                 := l_claim_line_tbl(i).line_number;
478      l_pvt_claim_line_tbl(i).split_from_claim_line_id    := l_claim_line_tbl(i).split_from_claim_line_id;
479      l_pvt_claim_line_tbl(i).amount                      := l_claim_line_tbl(i).amount;
480      l_pvt_claim_line_tbl(i).claim_currency_amount       := l_claim_line_tbl(i).claim_currency_amount;
481      l_pvt_claim_line_tbl(i).acctd_amount                := l_claim_line_tbl(i).acctd_amount;
482      l_pvt_claim_line_tbl(i).currency_code               := l_claim_line_tbl(i).currency_code ;
483      l_pvt_claim_line_tbl(i).exchange_rate_type          := l_claim_line_tbl(i).exchange_rate_type ;
484      l_pvt_claim_line_tbl(i).exchange_rate_date          := l_claim_line_tbl(i).exchange_rate_date;
485      l_pvt_claim_line_tbl(i).exchange_rate               := l_claim_line_tbl(i).exchange_rate;
486      l_pvt_claim_line_tbl(i).set_of_books_id             := l_claim_line_tbl(i).set_of_books_id;
487      l_pvt_claim_line_tbl(i).valid_flag                  := l_claim_line_tbl(i).valid_flag;
488      l_pvt_claim_line_tbl(i).source_object_id            := l_claim_line_tbl(i).source_object_id;
489      l_pvt_claim_line_tbl(i).source_object_class         := l_claim_line_tbl(i).source_object_class;
490      l_pvt_claim_line_tbl(i).source_object_type_id       := l_claim_line_tbl(i).source_object_type_id;
491      l_pvt_claim_line_tbl(i).source_object_line_id       := l_claim_line_tbl(i).source_object_line_id;
492      l_pvt_claim_line_tbl(i).plan_id                     := l_claim_line_tbl(i).plan_id;
493      l_pvt_claim_line_tbl(i).offer_id                    := l_claim_line_tbl(i).offer_id;
494      l_pvt_claim_line_tbl(i).utilization_id              := l_claim_line_tbl(i).utilization_id;
495      l_pvt_claim_line_tbl(i).payment_method              := l_claim_line_tbl(i).payment_method;
496      l_pvt_claim_line_tbl(i).payment_reference_id        := l_claim_line_tbl(i).payment_reference_id;
497      l_pvt_claim_line_tbl(i).payment_reference_number    := l_claim_line_tbl(i).payment_reference_number;
498      l_pvt_claim_line_tbl(i).payment_reference_date      := l_claim_line_tbl(i).payment_reference_date;
499      l_pvt_claim_line_tbl(i).voucher_id                  := l_claim_line_tbl(i).voucher_id;
500      l_pvt_claim_line_tbl(i).voucher_number              := l_claim_line_tbl(i).voucher_number;
501      l_pvt_claim_line_tbl(i).payment_status              := l_claim_line_tbl(i).payment_status;
502      l_pvt_claim_line_tbl(i).approved_flag               := l_claim_line_tbl(i).approved_flag ;
503      l_pvt_claim_line_tbl(i).approved_date               := l_claim_line_tbl(i).approved_date;
504      l_pvt_claim_line_tbl(i).approved_by                 := l_claim_line_tbl(i).approved_by  ;
505      l_pvt_claim_line_tbl(i).settled_date                := l_claim_line_tbl(i).settled_date;
506      l_pvt_claim_line_tbl(i).settled_by                  := l_claim_line_tbl(i).settled_by;
507      l_pvt_claim_line_tbl(i).performance_complete_flag   := l_claim_line_tbl(i).performance_complete_flag;
508      l_pvt_claim_line_tbl(i).performance_attached_flag   := l_claim_line_tbl(i).performance_attached_flag;
509      l_pvt_claim_line_tbl(i).item_id                     := l_claim_line_tbl(i).item_id;
510      l_pvt_claim_line_tbl(i).item_description            := l_claim_line_tbl(i).item_description ;
511      l_pvt_claim_line_tbl(i).quantity                    := l_claim_line_tbl(i).quantity;
512      l_pvt_claim_line_tbl(i).quantity_uom                := l_claim_line_tbl(i).quantity_uom;
513      l_pvt_claim_line_tbl(i).rate                        := l_claim_line_tbl(i).rate;
514      l_pvt_claim_line_tbl(i).activity_type               := l_claim_line_tbl(i).activity_type;
515      l_pvt_claim_line_tbl(i).activity_id                 := l_claim_line_tbl(i).activity_id;
516      l_pvt_claim_line_tbl(i).related_cust_account_id     := l_claim_line_tbl(i).related_cust_account_id;
517      l_pvt_claim_line_tbl(i).relationship_type           := l_claim_line_tbl(i).relationship_type;
518      l_pvt_claim_line_tbl(i).earnings_associated_flag    := l_claim_line_tbl(i).earnings_associated_flag;
519      l_pvt_claim_line_tbl(i).comments                    := l_claim_line_tbl(i).comments;
520      l_pvt_claim_line_tbl(i).tax_code                    := l_claim_line_tbl(i).tax_code;
521      l_pvt_claim_line_tbl(i).attribute_category          := l_claim_line_tbl(i).attribute_category;
522      l_pvt_claim_line_tbl(i).attribute1                  := l_claim_line_tbl(i).attribute1;
523      l_pvt_claim_line_tbl(i).attribute2                  := l_claim_line_tbl(i).attribute2;
524      l_pvt_claim_line_tbl(i).attribute3                  := l_claim_line_tbl(i).attribute3;
525      l_pvt_claim_line_tbl(i).attribute4                  := l_claim_line_tbl(i).attribute4;
526      l_pvt_claim_line_tbl(i).attribute5                  := l_claim_line_tbl(i).attribute5;
527      l_pvt_claim_line_tbl(i).attribute6                  := l_claim_line_tbl(i).attribute6;
528      l_pvt_claim_line_tbl(i).attribute7                  := l_claim_line_tbl(i).attribute7;
529      l_pvt_claim_line_tbl(i).attribute8                  := l_claim_line_tbl(i).attribute8;
530      l_pvt_claim_line_tbl(i).attribute9                  := l_claim_line_tbl(i).attribute9;
531      l_pvt_claim_line_tbl(i).attribute10                 := l_claim_line_tbl(i).attribute10;
532      l_pvt_claim_line_tbl(i).attribute11                 := l_claim_line_tbl(i).attribute11;
533      l_pvt_claim_line_tbl(i).attribute12                 := l_claim_line_tbl(i).attribute12;
534      l_pvt_claim_line_tbl(i).attribute13                 := l_claim_line_tbl(i).attribute13;
535      l_pvt_claim_line_tbl(i).attribute14                 := l_claim_line_tbl(i).attribute14;
536      l_pvt_claim_line_tbl(i).attribute15                 := l_claim_line_tbl(i).attribute15;
537      l_pvt_claim_line_tbl(i).org_id                      := l_claim_line_tbl(i).org_id ;
538      l_pvt_claim_line_tbl(i).update_from_tbl_flag        := l_claim_line_tbl(i).update_from_tbl_flag;
539      l_pvt_claim_line_tbl(i).tax_action	               := l_claim_line_tbl(i).tax_action;
540      l_pvt_claim_line_tbl(i).sale_date	                  := l_claim_line_tbl(i).sale_date;
541      l_pvt_claim_line_tbl(i).item_type	                  := l_claim_line_tbl(i).item_type;
542      l_pvt_claim_line_tbl(i).tax_amount	               := l_claim_line_tbl(i).tax_amount;
543      l_pvt_claim_line_tbl(i).claim_curr_tax_amount	      := l_claim_line_tbl(i).claim_curr_tax_amount;
544      l_pvt_claim_line_tbl(i).activity_line_id	         := l_claim_line_tbl(i).activity_line_id;
545      l_pvt_claim_line_tbl(i).offer_type	               := l_claim_line_tbl(i).offer_type;
546      l_pvt_claim_line_tbl(i).prorate_earnings_flag	      := l_claim_line_tbl(i).prorate_earnings_flag;
547      l_pvt_claim_line_tbl(i).earnings_end_date	         := l_claim_line_tbl(i).earnings_end_date;
548      --12.1 Enhancement : Price Protection
549      l_pvt_claim_line_tbl(i).dpp_cust_account_id	     := l_claim_line_tbl(i).dpp_cust_account_id;
550 
551     END LOOP;
552    END IF;
553 
554 -- call to create_claim_line_tbl
555    Ozf_Claim_Line_Pvt.Create_Claim_Line_Tbl(
556     p_api_version      => p_api_version
557    ,p_init_msg_list    => FND_API.G_FALSE
558    ,P_commit           => FND_API.G_FALSE
559    ,p_validation_level => p_validation_level
560    ,x_return_status          =>   x_return_status
561    ,x_msg_data               =>   x_msg_data
562    ,x_msg_count              =>   x_msg_count
563    ,p_claim_line_tbl         =>   l_pvt_claim_line_tbl
564    ,x_error_index            =>   l_error_index);
565    IF g_debug THEN
566       ozf_utility_pvt.debug_message('return status for create_claim_line_tbl =>'||x_return_status);
567    END IF;
568    IF x_return_status = FND_API.G_RET_STS_ERROR then
569       RAISE FND_API.G_EXC_ERROR;
570    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
571       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
572    END IF;
573    -- Standard check for p_commit
574    IF FND_API.to_Boolean( p_commit )
575    THEN
576       COMMIT WORK;
577    END IF;
578    -- Debug Message
579    IF g_debug THEN
580       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
581    END IF;
582    -- Standard call to get message count and if count is 1, get message info.
583    FND_MSG_PUB.Count_And_Get
584    (p_count          =>   x_msg_count,
585    p_data           =>   x_msg_data
586    );
587 EXCEPTION
588 WHEN OZF_Utility_PVT.resource_locked THEN
589    ROLLBACK TO Create_Claim_Line_Tbl;
590    x_return_status := FND_API.G_RET_STS_ERROR;
591    OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
592    FND_MSG_PUB.Count_And_Get (
593    p_encoded => FND_API.G_FALSE,
594    p_count   => x_msg_count,
595    p_data    => x_msg_data
596    );
597 WHEN FND_API.G_EXC_ERROR THEN
598    ROLLBACK TO Create_Claim_Line_Tbl;
599    x_return_status := FND_API.G_RET_STS_ERROR;
600    -- Standard call to get message count and if count=1, get the message
601    FND_MSG_PUB.Count_And_Get (
602    p_encoded => FND_API.G_FALSE,
603    p_count   => x_msg_count,
604    p_data    => x_msg_data
605    );
606 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
607    ROLLBACK TO Create_Claim_Line_Tbl;
608    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
609    -- Standard call to get message count and if count=1, get the message
610    FND_MSG_PUB.Count_And_Get (
611    p_encoded => FND_API.G_FALSE,
612    p_count => x_msg_count,
613    p_data  => x_msg_data
614    );
615 WHEN OTHERS THEN
616    ROLLBACK TO Create_Claim_Line_Tbl;
617    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
618    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
619    THEN
620       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
621    END IF;
622    -- Standard call to get message count and if count=1, get the message
623    FND_MSG_PUB.Count_And_Get (
624    p_encoded => FND_API.G_FALSE,
625    p_count => x_msg_count,
626    p_data  => x_msg_data
627    );
628 End Create_Claim_Line_Tbl;
629 
630 --BEGIN OF UPDATE CLAIM
631 ---------------------------------------------------------------------
632 -- PROCEDURE
633 --   update_claim
634 --
635 -- PURPOSE
636 --    This procedure updates claim record by incrementing object version number
637 --
638 -- PARAMETERS
639 --
640 --    p_claim_line_tbl
641 --    x_object_version_number
642 --    x_return_status
643 --    p_claim_rec
644 -- NOTES
645 ---------------------------------------------------------------------
646 PROCEDURE Update_Claim(
647    p_api_version_number         IN    NUMBER,
648    p_init_msg_list              IN    VARCHAR2     := FND_API.G_FALSE,
649    p_commit                     IN    VARCHAR2     := FND_API.G_FALSE,
650    p_validation_level           IN    NUMBER   := FND_API.g_valid_level_full,
651    x_return_status              OUT NOCOPY   VARCHAR2,
652    x_msg_count                  OUT NOCOPY   NUMBER,
653    x_msg_data                   OUT NOCOPY   VARCHAR2,
654    p_claim_rec                  IN    claim_rec_type,
655    p_claim_line_tbl             IN    claim_line_tbl_type,
656    x_object_version_number      OUT NOCOPY   NUMBER
657 )
658 IS
659    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Claim';
660    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
661    l_pvt_claim_rec             OZF_Claim_PVT.claim_rec_type;
662    l_claim_rec                 OZF_CLAIM_PUB.claim_rec_type := p_claim_rec;
663    l_claim_line_tbl            claim_line_tbl_type:=p_claim_line_tbl ;
664    l_claim_line_rec            claim_line_rec_type;
665    l_object_version_number     NUMBER;
666    --l_pvt_claim_line_rec        OZF_CLAIM_LINE_PVT.claim_line_rec_type;
667    --l_pvt_claim_line_tbl        OZF_CLAIM_LINE_PVT.claim_line_tbl_type ;
668    x_object_version            NUMBER ;
669    x_error_index               NUMBER;
670 -- Added for Bug 6727136
671 --Fix for Bug 13346665
672 CURSOR Claim_Source_csr(p_claim_id in number) IS
673 SELECT NVL(source_object_class,'NULL')
674 FROM ozf_claims_all
675 WHERE claim_id = p_claim_id;
676 
677 l_source_object_class VARCHAR2(30);
678 
679  -- Fix for Bug 11932210
680 CURSOR c_item_uom(p_item_uom IN VARCHAR2,p_inventory_item_id IN NUMBER,p_org_id IN NUMBER)IS
681 SELECT a.uom_code
682 FROM   mtl_units_of_measure a,
683    mtl_system_items c
684 WHERE c.primary_unit_of_measure = a.unit_of_measure
685 AND   c.organization_id         = p_org_id
686 AND   c.inventory_item_id       = p_inventory_item_id
687 AND   uom_code                  = p_item_uom;
688 
689 l_item_uom                 VARCHAR2(30);
690 l_inv_org_id  NUMBER := FND_PROFILE.VALUE('QP_ORGANIZATION_ID');
691 
692 BEGIN
693 -- Standard Start of API savepoint
694    SAVEPOINT SAVE_UPDATE_CLAIM_PUB;
695 -- Standard call to check for call compatibility.
696    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
697       p_api_version_number,
698       l_api_name,
699       G_PKG_NAME)
700    THEN
701       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
702    END IF;
703 -- Initialize message list if p_init_msg_list is set to TRUE.
704    IF FND_API.to_Boolean( p_init_msg_list )
705    THEN
706       FND_MSG_PUB.initialize;
707    END IF;
708 
709    -- Debug Message
710    IF g_debug THEN
711       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
712    END IF;
713 
714 -- Initialize API return status to SUCCESS
715    x_return_status := FND_API.G_RET_STS_SUCCESS;
716 --
717 -- API body
718 --
719 --  Pass Public API values to Private API
720    l_pvt_claim_rec.claim_id:=l_claim_rec.claim_id;
721    l_pvt_claim_rec.object_version_number :=l_claim_rec.object_version_number;
722    l_pvt_claim_rec.last_update_date:=l_claim_rec.last_update_date;
723    l_pvt_claim_rec.last_updated_by:=l_claim_rec.last_updated_by;
724    l_pvt_claim_rec.creation_date:=l_claim_rec.creation_date;
725    l_pvt_claim_rec.created_by:=l_claim_rec.created_by;
726    l_pvt_claim_rec.last_update_login:=l_claim_rec.last_update_login;
727    l_pvt_claim_rec.request_id:=l_claim_rec.request_id;
728    l_pvt_claim_rec.program_application_id:=l_claim_rec.program_application_id;
729    l_pvt_claim_rec.program_update_date:=l_claim_rec.program_update_date;
730    l_pvt_claim_rec.program_id:=l_claim_rec.program_id;
731    l_pvt_claim_rec.created_from:=l_claim_rec.created_from;
732    l_pvt_claim_rec.batch_id:=l_claim_rec.batch_id;
733    l_pvt_claim_rec.claim_number:=l_claim_rec.claim_number;
734    l_pvt_claim_rec.claim_type_id:=l_claim_rec.claim_type_id;
735    l_pvt_claim_rec.claim_class:=l_claim_rec.claim_class;
736    l_pvt_claim_rec.claim_date:=l_claim_rec.claim_date;
737    l_pvt_claim_rec.due_date:=l_claim_rec.due_date;
738    l_pvt_claim_rec.owner_id:=l_claim_rec.owner_id;
739    l_pvt_claim_rec.history_event:=l_claim_rec.history_event;
740    l_pvt_claim_rec.history_event_date:=l_claim_rec.history_event_date;
741    l_pvt_claim_rec.history_event_description:=l_claim_rec.history_event_description;
742    l_pvt_claim_rec.split_from_claim_id:=l_claim_rec.split_from_claim_id;
743    l_pvt_claim_rec.duplicate_claim_id:=l_claim_rec.duplicate_claim_id;
744    l_pvt_claim_rec.split_date:=l_claim_rec.split_date;
745    l_pvt_claim_rec.root_claim_id:=l_claim_rec.root_claim_id;
746    l_pvt_claim_rec.amount:=l_claim_rec.amount;
747    l_pvt_claim_rec.amount_adjusted:=l_claim_rec.amount_adjusted;
748    l_pvt_claim_rec.amount_remaining:=l_claim_rec.amount_remaining;
749    l_pvt_claim_rec.amount_settled:=l_claim_rec.amount_settled;
750    l_pvt_claim_rec.acctd_amount:=l_claim_rec.acctd_amount;
751    l_pvt_claim_rec.acctd_amount_remaining:=l_claim_rec.acctd_amount_remaining;
752    l_pvt_claim_rec.tax_amount:=l_claim_rec.tax_amount;
753    l_pvt_claim_rec.tax_code:=l_claim_rec.tax_code;
754    l_pvt_claim_rec.tax_calculation_flag:=l_claim_rec.tax_calculation_flag;
755    l_pvt_claim_rec.currency_code:=l_claim_rec.currency_code;
756    l_pvt_claim_rec.exchange_rate_type:=l_claim_rec.exchange_rate_type;
757    l_pvt_claim_rec.exchange_rate_date:=l_claim_rec.exchange_rate_date;
758    l_pvt_claim_rec.exchange_rate:=l_claim_rec.exchange_rate;
759    l_pvt_claim_rec.set_of_books_id:=l_claim_rec.set_of_books_id;
760    l_pvt_claim_rec.original_claim_date:=l_claim_rec.original_claim_date;
761    l_pvt_claim_rec.source_object_id:=l_claim_rec.source_object_id;
762    l_pvt_claim_rec.source_object_class:=l_claim_rec.source_object_class;
763    l_pvt_claim_rec.source_object_type_id:=l_claim_rec.source_object_type_id;
764    l_pvt_claim_rec.source_object_number:=l_claim_rec.source_object_number;
765    l_pvt_claim_rec.cust_account_id:=l_claim_rec.cust_account_id;
766    l_pvt_claim_rec.cust_billto_acct_site_id:=l_claim_rec.cust_billto_acct_site_id;
767    l_pvt_claim_rec.cust_shipto_acct_site_id:=l_claim_rec.cust_shipto_acct_site_id;
768    l_pvt_claim_rec.location_id:=l_claim_rec.location_id;
769    l_pvt_claim_rec.pay_related_account_flag:=l_claim_rec.pay_related_account_flag;
770    l_pvt_claim_rec.related_cust_account_id:=l_claim_rec.related_cust_account_id;
771    l_pvt_claim_rec.related_site_use_id:=l_claim_rec.related_site_use_id;
772    l_pvt_claim_rec.relationship_type:=l_claim_rec.relationship_type;
773    l_pvt_claim_rec.vendor_id:=l_claim_rec.vendor_id;
774    l_pvt_claim_rec.vendor_site_id:=l_claim_rec.vendor_site_id;
775    l_pvt_claim_rec.reason_type:=l_claim_rec.reason_type;
776    l_pvt_claim_rec.reason_code_id:=l_claim_rec.reason_code_id;
777    l_pvt_claim_rec.task_template_group_id:=l_claim_rec.task_template_group_id;
778    l_pvt_claim_rec.status_code:=l_claim_rec.status_code;
779    l_pvt_claim_rec.user_status_id:=l_claim_rec.user_status_id;
780    l_pvt_claim_rec.sales_rep_id:=l_claim_rec.sales_rep_id;
781    l_pvt_claim_rec.collector_id:=l_claim_rec.collector_id;
782    l_pvt_claim_rec.contact_id:=l_claim_rec.contact_id;
783    l_pvt_claim_rec.broker_id:=l_claim_rec.broker_id;
784    l_pvt_claim_rec.territory_id:=l_claim_rec.territory_id;
785    l_pvt_claim_rec.customer_ref_date:=l_claim_rec.customer_ref_date;
786    l_pvt_claim_rec.customer_ref_number:=l_claim_rec.customer_ref_number;
787    l_pvt_claim_rec.assigned_to:=l_claim_rec.assigned_to;
788    l_pvt_claim_rec.receipt_id:=l_claim_rec.receipt_id;
789    l_pvt_claim_rec.receipt_number:=l_claim_rec.receipt_number;
790    l_pvt_claim_rec.doc_sequence_id:=l_claim_rec.doc_sequence_id;
791    l_pvt_claim_rec.doc_sequence_value:=l_claim_rec.doc_sequence_value;
792    l_pvt_claim_rec.gl_date:=l_claim_rec.gl_date;
793    l_pvt_claim_rec.payment_method:=l_claim_rec.payment_method;
794    l_pvt_claim_rec.voucher_id:=l_claim_rec.voucher_id;
795    l_pvt_claim_rec.voucher_number:=l_claim_rec.voucher_number;
796    l_pvt_claim_rec.payment_reference_id:=l_claim_rec.payment_reference_id;
797    l_pvt_claim_rec.payment_reference_number:=l_claim_rec.payment_reference_number;
798    l_pvt_claim_rec.payment_reference_date:=l_claim_rec.payment_reference_date;
799    l_pvt_claim_rec.payment_status:=l_claim_rec.payment_status;
800    l_pvt_claim_rec.approved_flag:=l_claim_rec.approved_flag;
801    l_pvt_claim_rec.approved_date:=l_claim_rec.approved_date;
802    l_pvt_claim_rec.approved_by:=l_claim_rec.approved_by;
803    l_pvt_claim_rec.settled_date:=l_claim_rec.settled_date;
804    l_pvt_claim_rec.settled_by:=l_claim_rec.settled_by;
805    l_pvt_claim_rec.effective_date:=l_claim_rec.effective_date;
806    l_pvt_claim_rec.custom_setup_id:=l_claim_rec.custom_setup_id;
807    l_pvt_claim_rec.task_id:=l_claim_rec.task_id;
808    l_pvt_claim_rec.country_id:=l_claim_rec.country_id;
809    l_pvt_claim_rec.order_type_id:=l_claim_rec.order_type_id;
810    l_pvt_claim_rec.comments:=l_claim_rec.comments;
811    l_pvt_claim_rec.attribute_category:=l_claim_rec.attribute_category;
812    l_pvt_claim_rec.attribute1:=l_claim_rec.attribute1;
813    l_pvt_claim_rec.attribute2:=l_claim_rec.attribute2;
814    l_pvt_claim_rec.attribute3:=l_claim_rec.attribute3;
815    l_pvt_claim_rec.attribute4:=l_claim_rec.attribute4;
816    l_pvt_claim_rec.attribute5:=l_claim_rec.attribute5;
817    l_pvt_claim_rec.attribute6:=l_claim_rec.attribute6;
818    l_pvt_claim_rec.attribute7:=l_claim_rec.attribute7;
819    l_pvt_claim_rec.attribute8:=l_claim_rec.attribute8;
820    l_pvt_claim_rec.attribute9:=l_claim_rec.attribute9;
821    l_pvt_claim_rec.attribute10:=l_claim_rec.attribute10;
822    l_pvt_claim_rec.attribute11:=l_claim_rec.attribute11;
823    l_pvt_claim_rec.attribute12:=l_claim_rec.attribute12;
824    l_pvt_claim_rec.attribute13:=l_claim_rec.attribute13;
825    l_pvt_claim_rec.attribute14:=l_claim_rec.attribute14;
826    l_pvt_claim_rec.attribute15:=l_claim_rec.attribute15;
827    l_pvt_claim_rec.deduction_attribute_category:=l_claim_rec.deduction_attribute_category;
828    l_pvt_claim_rec.deduction_attribute1:=l_claim_rec.deduction_attribute1;
829    l_pvt_claim_rec.deduction_attribute2:=l_claim_rec.deduction_attribute2;
830    l_pvt_claim_rec.deduction_attribute3:=l_claim_rec.deduction_attribute3;
831    l_pvt_claim_rec.deduction_attribute4:=l_claim_rec.deduction_attribute4;
832    l_pvt_claim_rec.deduction_attribute5:=l_claim_rec.deduction_attribute5;
833    l_pvt_claim_rec.deduction_attribute6:=l_claim_rec.deduction_attribute6;
834    l_pvt_claim_rec.deduction_attribute7:=l_claim_rec.deduction_attribute7;
835    l_pvt_claim_rec.deduction_attribute8:=l_claim_rec.deduction_attribute8;
836    l_pvt_claim_rec.deduction_attribute9:=l_claim_rec.deduction_attribute9;
837    l_pvt_claim_rec.deduction_attribute10:=l_claim_rec.deduction_attribute10;
838    l_pvt_claim_rec.deduction_attribute11:=l_claim_rec.deduction_attribute11;
839    l_pvt_claim_rec.deduction_attribute12:=l_claim_rec.deduction_attribute12;
840    l_pvt_claim_rec.deduction_attribute13:=l_claim_rec.deduction_attribute13;
841    l_pvt_claim_rec.deduction_attribute14:=l_claim_rec.deduction_attribute14;
842    l_pvt_claim_rec.deduction_attribute15:=l_claim_rec.deduction_attribute15;
843    l_pvt_claim_rec.org_id:=l_claim_rec.org_id;
844    l_pvt_claim_rec.write_off_flag			      :=  l_claim_rec.write_off_flag;
845    l_pvt_claim_rec.write_off_threshold_amount	:=  l_claim_rec.write_off_threshold_amount;
846    l_pvt_claim_rec.under_write_off_threshold	   :=  l_claim_rec.under_write_off_threshold;
847    l_pvt_claim_rec.customer_reason			      :=  l_claim_rec.customer_reason;
848    l_pvt_claim_rec.ship_to_cust_account_id		:=  l_claim_rec.ship_to_cust_account_id;
849    l_pvt_claim_rec.amount_applied			      :=  l_claim_rec.amount_applied;
850    l_pvt_claim_rec.applied_receipt_id		      :=  l_claim_rec.applied_receipt_id;
851    l_pvt_claim_rec.applied_receipt_number		   :=  l_claim_rec.applied_receipt_number;
852    l_pvt_claim_rec.wo_rec_trx_id			         :=  l_claim_rec.wo_rec_trx_id;
853    l_pvt_claim_rec.group_claim_id			      :=  l_claim_rec.group_claim_id;
854    l_pvt_claim_rec.appr_wf_item_key		         :=  l_claim_rec.appr_wf_item_key;
855    l_pvt_claim_rec.cstl_wf_item_key		         :=  l_claim_rec.cstl_wf_item_key;
856    l_pvt_claim_rec.batch_type			            :=  l_claim_rec.batch_type;
857 
858 --
859    --l_pvt_claim_line_rec.update_from_tbl_flag:= l_claim_line_rec.update_from_tbl_flag;
860    OZF_Claim_PVT.Update_Claim(
861    p_api_version      => p_api_version_number,
862    p_init_msg_list    => FND_API.G_FALSE,
863    p_commit           => FND_API.G_FALSE,
864    P_Validation_Level   => p_Validation_Level,
865    x_return_status              => x_return_status,
866    x_msg_count                  => x_msg_count,
867    x_msg_data                   => x_msg_data,
868    p_claim                      => l_pvt_claim_rec,
869    p_event                      => 'UPDATE',
870    p_mode                       => OZF_claim_Utility_pvt.G_AUTO_MODE,
871    x_object_version_number      => x_object_version_number );
872    IF g_debug THEN
873       OZF_UTILITY_PVT.DEBUG_MESSAGE('OBJ VERSION NUMBER =>'||NVL(x_object_version_number,-99));
874       OZF_UTILITY_PVT.DEBUG_MESSAGE('RETURN STATUS FOR UPDATE CLAIM =>'||X_RETURN_STATUS);
875    END IF;
876    -- Check return status from the above procedure call
877    IF x_return_status = FND_API.G_RET_STS_ERROR then
878       RAISE FND_API.G_EXC_ERROR;
879    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
880       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
881    END IF;
882 --
883 --
884 -- In case claim id is not popluated.
885    IF l_claim_line_tbl.count > 0 THEN
886       FOR i IN l_claim_line_tbl.FIRST..l_claim_line_tbl.LAST LOOP
887           l_claim_line_tbl(i).claim_id := l_claim_rec.claim_id;
888 	  --//BKUNJAN -- Added Validation
889 	  IF (l_claim_line_tbl(i).item_id <> FND_API.g_miss_num AND l_claim_line_tbl(i).item_id IS NOT NULL) AND (l_claim_line_tbl(i).QUANTITY_UOM <> FND_API.g_miss_char AND l_claim_line_tbl(i).QUANTITY_UOM IS NOT NULL) THEN
890 	      -- Fix for Bug 11932210
891 	     OPEN  c_item_uom(l_claim_line_tbl(i).QUANTITY_UOM
892 		             ,l_claim_line_tbl(i).item_id
893 		             ,l_inv_org_id);
894 	     FETCH c_item_uom INTO l_item_uom;
895 	     CLOSE c_item_uom;
896 
897 	     IF(l_item_uom IS NOT NULL) THEN
898 	        l_claim_line_tbl(i).QUANTITY_UOM := l_item_uom;
899 	     ELSE
900 	        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
901 	           FND_MESSAGE.set_name('OZF', 'OZF_METR_INVALID_UOM');
902 	           --//Unit of Measurement is Invalid
903 	           FND_MSG_PUB.add;
904 	        END IF;
905 	        x_return_status := fnd_api.G_RET_STS_UNEXP_ERROR;
906 	        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
907 	        RETURN;
908 	     END IF;
909           END IF;
910        --End for Fix of Bug 11932210
911       END LOOP;
912    END IF;
913 
914 
915      OPEN Claim_Source_csr(l_claim_rec.claim_id);
916      FETCH Claim_Source_csr INTO l_source_object_class;
917      ClOSE Claim_Source_csr;
918 
919    IF g_debug THEN
920            OZF_UTILITY_PVT.DEBUG_MESSAGE('In Public API l_source_object_class =>'||l_source_object_class);
921            OZF_UTILITY_PVT.DEBUG_MESSAGE('In Public API l_claim_rec.claim_id =>'||l_claim_rec.claim_id);
922 	   OZF_UTILITY_PVT.DEBUG_MESSAGE('In Public API l_claim_line_tbl.count =>'||l_claim_line_tbl.count);
923     END IF;
924    --Added for bug 6965694
925    -- Added for bug 7443072
926 
927    IF (l_source_object_class NOT IN ('PPVENDOR','PPINCVENDOR')
928        OR ( l_source_object_class IN ('PPVENDOR','PPINCVENDOR') AND l_claim_line_tbl.count >1))
929    THEN
930 	    OZF_UTILITY_PVT.DEBUG_MESSAGE('Before Calling Update_Claim_Line_Tbl ');
931 	   Update_Claim_Line_Tbl(
932 	    p_api_version      => p_api_version_number
933 	   ,p_init_msg_list    => FND_API.G_FALSE
934 	   ,p_commit           => FND_API.G_FALSE
935 	   ,P_Validation_Level   => p_Validation_Level
936 	   ,x_return_status          => x_return_status
937 	   ,x_msg_data               => x_msg_data
938 	   ,x_msg_count              => x_msg_count
939 	   ,p_claim_line_tbl         => l_claim_line_tbl
940 	   ,p_change_object_version  => FND_API.g_false -- Added For Fix
941 	   ,x_error_index            => x_error_index);
942 
943 	   OZF_UTILITY_PVT.DEBUG_MESSAGE('After Call Update_Claim_Line_Tbl ');
944    END IF;
945    --OZF_UTILITY_PVT.DEBUG_MESSAGE('OBJ VERSION  =>'||NVL(x_object_version,-99));
946    IF g_debug THEN
947       OZF_UTILITY_PVT.DEBUG_MESSAGE('Return Status for Update claim line =>'||x_return_status);
948    END IF;
949    IF x_return_status = FND_API.G_RET_STS_ERROR then
950       RAISE FND_API.G_EXC_ERROR;
951    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
952       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
953    END IF;
954 
955    -- Standard check for p_commit
956    IF FND_API.to_Boolean( p_commit )
957    THEN
958       COMMIT WORK;
959    END IF;
960    -- Debug Message
961    IF g_debug THEN
962       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
963    END IF;
964    -- Standard call to get message count and if count is 1, get message info.
965    FND_MSG_PUB.Count_And_Get
966    (p_count          =>   x_msg_count,
967    p_data           =>   x_msg_data
968    );
969    EXCEPTION
970 WHEN OZF_Utility_PVT.resource_locked THEN
971    ROLLBACK TO SAVE_UPDATE_CLAIM_PUB;
972    x_return_status := FND_API.g_ret_sts_error;
973    OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
974    FND_MSG_PUB.Count_And_Get (
975    p_encoded => FND_API.G_FALSE,
976    p_count   => x_msg_count,
977    p_data    => x_msg_data
978    );
979 WHEN FND_API.G_EXC_ERROR THEN
980    ROLLBACK TO SAVE_UPDATE_CLAIM_PUB;
981    x_return_status := FND_API.G_RET_STS_ERROR;
982    -- Standard call to get message count and if count=1, get the message
983    FND_MSG_PUB.Count_And_Get (
984    p_encoded => FND_API.G_FALSE,
985    p_count   => x_msg_count,
986    p_data    => x_msg_data
987    );
988 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
989    ROLLBACK TO SAVE_UPDATE_CLAIM_PUB;
990    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
991    -- Standard call to get message count and if count=1, get the message
992    FND_MSG_PUB.Count_And_Get (
993    p_encoded => FND_API.G_FALSE,
994    p_count => x_msg_count,
995    p_data  => x_msg_data
996    );
997 WHEN OTHERS THEN
998    ROLLBACK TO SAVE_UPDATE_CLAIM_PUB;
999    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1000    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1001       THEN
1002       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1003    END IF;
1004    -- Standard call to get message count and if count=1, get the message
1005    FND_MSG_PUB.Count_And_Get (
1006    p_encoded => FND_API.G_FALSE,
1007    p_count => x_msg_count,
1008    p_data  => x_msg_data
1009    );
1010 End Update_Claim;
1011 
1012 ---------------------------------------------------------------------
1013 -- PROCEDURE
1014 --    Update_Claim_Line_Tbl
1015 --
1016 -- PURPOSE
1017 --    This procedure updates claim lines
1018 --
1019 -- PARAMETERS
1020 --    p_claim_line_tbl
1021 --    p_change_object_version  IN    VARCHAR2 := FND_API.g_false
1022 --    x_error_index
1023 --
1024 --
1025 -- NOTES
1026 -- 10-Nov-2011 BKUNJAN   Fix for Bug 13346665, Added cursor c_get_claim_line,
1027 --                       Introduced validations for Item type and item.
1028 ---------------------------------------------------------------------
1029 PROCEDURE Update_Claim_Line_Tbl(
1030    p_api_version            IN    NUMBER
1031    ,p_init_msg_list          IN    VARCHAR2 := FND_API.g_false
1032    ,p_commit                 IN    VARCHAR2 := FND_API.g_false
1033    ,p_validation_level       IN    NUMBER   := FND_API.g_valid_level_full
1034    ,x_return_status          OUT NOCOPY   VARCHAR2
1035    ,x_msg_data               OUT NOCOPY   VARCHAR2
1036    ,x_msg_count              OUT NOCOPY   NUMBER
1037    ,p_claim_line_tbl         IN    claim_line_tbl_type
1038    ,p_change_object_version  IN    VARCHAR2 := FND_API.g_false
1039    ,x_error_index            OUT NOCOPY   NUMBER
1040 )
1041 IS
1042    L_API_NAME               CONSTANT VARCHAR2(30) := 'Update_Claim_Line';
1043    L_API_VERSION_NUMBER     CONSTANT NUMBER   := 1.0;
1044    l_pvt_claim_line_rec     OZF_CLAIM_LINE_PVT.claim_line_rec_type;
1045    l_claim_line_tbl         OZF_CLAIM_PUB.claim_line_tbl_type:=p_claim_line_tbl;
1046    l_pvt_claim_line_tbl     OZF_CLAIM_LINE_PVT.claim_line_tbl_type ;
1047    l_error_index            NUMBER;
1048    l_temp_line_rec          OZF_CLAIM_LINE_PVT.claim_line_rec_type;
1049 
1050  CURSOR c_get_claim_line(cv_claim_line_id IN NUMBER) IS
1051   SELECT claim_id
1052 	,line_number
1053 	,split_from_claim_line_id
1054 	,amount
1055 	,claim_currency_amount
1056 	,acctd_amount
1057 	,currency_code
1058 	,exchange_rate_type
1059 	,exchange_rate_date
1060 	,exchange_rate
1061 	,set_of_books_id
1062 	,valid_flag
1063 	,source_object_id
1064 	,source_object_line_id
1065 	,source_object_class
1066 	,source_object_type_id
1067 	,plan_id
1068 	,offer_id
1069 	,utilization_id
1070 	,payment_method
1071 	,payment_reference_id
1072 	,payment_reference_number
1073 	,payment_reference_date
1074 	,voucher_id
1075 	,voucher_number
1076 	,payment_status
1077 	,approved_flag
1078 	,approved_date
1079 	,approved_by
1080 	,settled_date
1081 	,settled_by
1082 	,performance_complete_flag
1083 	,performance_attached_flag
1084 	,select_cust_children_flag
1085 	,item_id
1086 	--,item_description
1087 	,quantity
1088 	,quantity_uom
1089 	,rate
1090 	,activity_type
1091 	,activity_id
1092 	,related_cust_account_id
1093 	,buy_group_cust_account_id
1094 	,relationship_type
1095 	,earnings_associated_flag
1096 	,comments
1097 	,tax_code
1098 	,credit_to
1099 	,attribute_category
1100 	,attribute1
1101 	,attribute2
1102 	,attribute3
1103 	,attribute4
1104 	,attribute5
1105 	,attribute6
1106 	,attribute7
1107 	,attribute8
1108 	,attribute9
1109 	,attribute10
1110 	,attribute11
1111 	,attribute12
1112 	,attribute13
1113 	,attribute14
1114 	,attribute15
1115 	,org_id
1116 	,sale_date
1117 	,item_type
1118 	,tax_amount
1119 	,claim_curr_tax_amount
1120 	,activity_line_id
1121 	,offer_type
1122 	,prorate_earnings_flag
1123 	,earnings_end_date
1124 	,buy_group_party_id
1125 	,acctd_tax_amount
1126 	,dpp_cust_account_id
1127 	,batch_line_id
1128 FROM ozf_claim_lines_all
1129 WHERE claim_line_id = cv_claim_line_id;
1130 
1131 CURSOR c_inventory_item_id(p_inventory_item_id IN NUMBER,p_org_id IN NUMBER)IS
1132     SELECT inventory_item_id,NVL(description,concatenated_segments)
1133     FROM mtl_system_items_kfv
1134     WHERE inventory_item_id = p_inventory_item_id
1135     AND   organization_id   = p_org_id;
1136 
1137 CURSOR c_category_id(p_category_id IN NUMBER) IS
1138     SELECT category_id,description
1139     FROM  mtl_categories_v
1140     WHERE category_id = p_category_id;
1141 
1142 CURSOR c_memo_line(p_memo_line_id IN NUMBER)IS
1143    SELECT memo_line_id,description
1144    FROM ar_memo_lines_vl
1145    WHERE memo_line_id = p_memo_line_id;
1146 
1147 CURSOR c_media_channel(p_channel_id IN NUMBER)IS
1148    SELECT channel_id,description
1149    FROM ams_media_channels_vl
1150    WHERE channel_id = p_channel_id;
1151 
1152  l_inv_org_id           NUMBER;
1153  l_lookup_stat          VARCHAR2(1); --To validate from lookups
1154  l_item_id              NUMBER;
1155 BEGIN
1156    SAVEPOINT Update_Claim_Line_Tbl;
1157    -- Standard call to check for call compatibility.
1158    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1159       p_api_version,
1160       l_api_name,
1161       G_PKG_NAME)
1162    THEN
1163       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1164    END IF;
1165    -- Initialize message list if p_init_msg_list is set to TRUE.
1166    IF FND_API.to_Boolean( p_init_msg_list )
1167       THEN
1168       FND_MSG_PUB.initialize;
1169    END IF;
1170 -- Debug Message
1171    IF g_debug THEN
1172       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
1173    END IF;
1174 
1175 -- Initialize API return status to SUCCESS
1176    x_return_status := FND_API.G_RET_STS_SUCCESS;
1177    l_claim_line_tbl := p_claim_line_tbl;
1178 
1179    IF p_claim_line_tbl.COUNT > 0 THEN
1180    FOR i IN p_claim_line_tbl.FIRST..p_claim_line_tbl.LAST LOOP
1181    --
1182      l_pvt_claim_line_tbl(i).claim_line_id               := l_claim_line_tbl(i).claim_line_id;
1183 
1184      OPEN c_get_claim_line(l_claim_line_tbl(i).claim_line_id);
1185      FETCH c_get_claim_line INTO l_pvt_claim_line_tbl(i).claim_id
1186 				,l_pvt_claim_line_tbl(i).line_number
1187 				,l_pvt_claim_line_tbl(i).split_from_claim_line_id
1188 				,l_pvt_claim_line_tbl(i).amount
1189 				,l_pvt_claim_line_tbl(i).claim_currency_amount
1190 				,l_pvt_claim_line_tbl(i).acctd_amount
1191 				,l_pvt_claim_line_tbl(i).currency_code
1192 				,l_pvt_claim_line_tbl(i).exchange_rate_type
1193 				,l_pvt_claim_line_tbl(i).exchange_rate_date
1194 				,l_pvt_claim_line_tbl(i).exchange_rate
1195 				,l_pvt_claim_line_tbl(i).set_of_books_id
1196 				,l_pvt_claim_line_tbl(i).valid_flag
1197 				,l_pvt_claim_line_tbl(i).source_object_id
1198 				,l_pvt_claim_line_tbl(i).source_object_line_id
1199 				,l_pvt_claim_line_tbl(i).source_object_class
1200 				,l_pvt_claim_line_tbl(i).source_object_type_id
1201 				,l_pvt_claim_line_tbl(i).plan_id
1202 				,l_pvt_claim_line_tbl(i).offer_id
1203 				,l_pvt_claim_line_tbl(i).utilization_id
1204 				,l_pvt_claim_line_tbl(i).payment_method
1205 				,l_pvt_claim_line_tbl(i).payment_reference_id
1206 				,l_pvt_claim_line_tbl(i).payment_reference_number
1207 				,l_pvt_claim_line_tbl(i).payment_reference_date
1208 				,l_pvt_claim_line_tbl(i).voucher_id
1209 				,l_pvt_claim_line_tbl(i).voucher_number
1210 				,l_pvt_claim_line_tbl(i).payment_status
1211 				,l_pvt_claim_line_tbl(i).approved_flag
1212 				,l_pvt_claim_line_tbl(i).approved_date
1213 				,l_pvt_claim_line_tbl(i).approved_by
1214 				,l_pvt_claim_line_tbl(i).settled_date
1215 				,l_pvt_claim_line_tbl(i).settled_by
1216 				,l_pvt_claim_line_tbl(i).performance_complete_flag
1217 				,l_pvt_claim_line_tbl(i).performance_attached_flag
1218 				,l_pvt_claim_line_tbl(i).select_cust_children_flag
1219 				,l_pvt_claim_line_tbl(i).item_id
1220 				,l_pvt_claim_line_tbl(i).quantity
1221 				,l_pvt_claim_line_tbl(i).quantity_uom
1222 				,l_pvt_claim_line_tbl(i).rate
1223 				,l_pvt_claim_line_tbl(i).activity_type
1224 				,l_pvt_claim_line_tbl(i).activity_id
1225 				,l_pvt_claim_line_tbl(i).related_cust_account_id
1226 				,l_pvt_claim_line_tbl(i).buy_group_cust_account_id
1227 				,l_pvt_claim_line_tbl(i).relationship_type
1228 				,l_pvt_claim_line_tbl(i).earnings_associated_flag
1229 				,l_pvt_claim_line_tbl(i).comments
1230 				,l_pvt_claim_line_tbl(i).tax_code
1231 				,l_pvt_claim_line_tbl(i).credit_to
1232 				,l_pvt_claim_line_tbl(i).attribute_category
1233 				,l_pvt_claim_line_tbl(i).attribute1
1234 				,l_pvt_claim_line_tbl(i).attribute2
1235 				,l_pvt_claim_line_tbl(i).attribute3
1236 				,l_pvt_claim_line_tbl(i).attribute4
1237 				,l_pvt_claim_line_tbl(i).attribute5
1238 				,l_pvt_claim_line_tbl(i).attribute6
1239 				,l_pvt_claim_line_tbl(i).attribute7
1240 				,l_pvt_claim_line_tbl(i).attribute8
1241 				,l_pvt_claim_line_tbl(i).attribute9
1242 				,l_pvt_claim_line_tbl(i).attribute10
1243 				,l_pvt_claim_line_tbl(i).attribute11
1244 				,l_pvt_claim_line_tbl(i).attribute12
1245 				,l_pvt_claim_line_tbl(i).attribute13
1246 				,l_pvt_claim_line_tbl(i).attribute14
1247 				,l_pvt_claim_line_tbl(i).attribute15
1248 				,l_pvt_claim_line_tbl(i).org_id
1249 				,l_pvt_claim_line_tbl(i).sale_date
1250 				,l_pvt_claim_line_tbl(i).item_type
1251 				,l_pvt_claim_line_tbl(i).tax_amount
1252 				,l_pvt_claim_line_tbl(i).claim_curr_tax_amount
1253 				,l_pvt_claim_line_tbl(i).activity_line_id
1254 				,l_pvt_claim_line_tbl(i).offer_type
1255 				,l_pvt_claim_line_tbl(i).prorate_earnings_flag
1256 				,l_pvt_claim_line_tbl(i).earnings_end_date
1257 				,l_pvt_claim_line_tbl(i).buy_group_party_id
1258 				,l_pvt_claim_line_tbl(i).acctd_tax_amount
1259 				,l_pvt_claim_line_tbl(i).dpp_cust_account_id
1260 				,l_pvt_claim_line_tbl(i).batch_line_id;
1261      CLOSE c_get_claim_line;
1262 
1263 
1264      IF l_claim_line_tbl(i).object_version_number is null then
1265         l_pvt_claim_line_tbl(i).object_version_number    := FND_API.G_MISS_NUM;
1266      ELSE
1267         l_pvt_claim_line_tbl(i).object_version_number    :=l_claim_line_tbl(i).object_version_number;
1268      END IF;
1269 
1270      IF l_claim_line_tbl(i).last_update_date is null then
1271         l_pvt_claim_line_tbl(i).last_update_date    := FND_API.G_MISS_DATE;
1272      ELSE
1273         l_pvt_claim_line_tbl(i).last_update_date    :=l_claim_line_tbl(i).last_update_date;
1274      END IF;
1275 
1276      IF l_claim_line_tbl(i).last_updated_by is null then
1277         l_pvt_claim_line_tbl(i).last_updated_by    := FND_API.G_MISS_NUM;
1278      ELSE
1279         l_pvt_claim_line_tbl(i).last_updated_by    :=l_claim_line_tbl(i).last_updated_by;
1280      END IF;
1281 
1282      IF l_claim_line_tbl(i).creation_date is null then
1283         l_pvt_claim_line_tbl(i).creation_date    := FND_API.G_MISS_DATE;
1284      ELSE
1285         l_pvt_claim_line_tbl(i).creation_date    :=l_claim_line_tbl(i).creation_date;
1286      END IF;
1287 
1288      IF l_claim_line_tbl(i).created_by is null then
1289         l_pvt_claim_line_tbl(i).created_by    := FND_API.G_MISS_NUM;
1290      ELSE
1291         l_pvt_claim_line_tbl(i).created_by    :=l_claim_line_tbl(i).created_by;
1292      END IF;
1293 
1294      IF l_claim_line_tbl(i).last_update_login is null then
1295         l_pvt_claim_line_tbl(i).last_update_login    := FND_API.G_MISS_NUM;
1296      ELSE
1297         l_pvt_claim_line_tbl(i).last_update_login    :=l_claim_line_tbl(i).last_update_login;
1298      END IF;
1299 
1300      IF l_claim_line_tbl(i).request_id is null then
1301         l_pvt_claim_line_tbl(i).request_id    := FND_API.G_MISS_NUM;
1302      ELSE
1303         l_pvt_claim_line_tbl(i).request_id    :=l_claim_line_tbl(i).request_id;
1304      END IF;
1305 
1306      IF l_claim_line_tbl(i).program_application_id is null then
1307         l_pvt_claim_line_tbl(i).program_application_id    := FND_API.G_MISS_NUM;
1308      ELSE
1309         l_pvt_claim_line_tbl(i).program_application_id    :=l_claim_line_tbl(i).program_application_id;
1310      END IF;
1311 
1312      IF l_claim_line_tbl(i).program_update_date is null then
1313         l_pvt_claim_line_tbl(i).program_update_date    := FND_API.G_MISS_DATE;
1314      ELSE
1315         l_pvt_claim_line_tbl(i).program_update_date    :=l_claim_line_tbl(i).program_update_date;
1316      END IF;
1317 
1318      IF l_claim_line_tbl(i).program_id is null then
1319         l_pvt_claim_line_tbl(i).program_id    := FND_API.G_MISS_NUM;
1320      ELSE
1321         l_pvt_claim_line_tbl(i).program_id    :=l_claim_line_tbl(i).program_id;
1322      END IF;
1323 
1324      IF l_claim_line_tbl(i).created_from is null then
1325         l_pvt_claim_line_tbl(i).created_from    := FND_API.G_MISS_CHAR;
1326      ELSE
1327         l_pvt_claim_line_tbl(i).created_from    :=l_claim_line_tbl(i).created_from;
1328      END IF;
1329 
1330      IF l_claim_line_tbl(i).claim_id IS NOT NULL THEN
1331         l_pvt_claim_line_tbl(i).claim_id    :=l_claim_line_tbl(i).claim_id;
1332      END IF;
1333 
1334      IF l_claim_line_tbl(i).line_number IS NOT NULL THEN
1335         l_pvt_claim_line_tbl(i).line_number              :=l_claim_line_tbl(i).line_number;
1336      END IF;
1337 
1338      IF l_claim_line_tbl(i).split_from_claim_line_id IS NOT NULL THEN
1339         l_pvt_claim_line_tbl(i).split_from_claim_line_id    :=l_claim_line_tbl(i).split_from_claim_line_id;
1340      END IF;
1341 
1342      IF l_claim_line_tbl(i).amount IS NOT NULL THEN
1343         l_pvt_claim_line_tbl(i).amount    :=l_claim_line_tbl(i).amount;
1344      END IF;
1345 
1346      IF l_claim_line_tbl(i).claim_currency_amount IS NOT NULL THEN
1347         l_pvt_claim_line_tbl(i).claim_currency_amount    :=l_claim_line_tbl(i).claim_currency_amount;
1348      END IF;
1349 
1350      IF l_claim_line_tbl(i).acctd_amount IS NOT NULL THEN
1351         l_pvt_claim_line_tbl(i).acctd_amount   :=l_claim_line_tbl(i).acctd_amount;
1352      END IF;
1353 
1354      IF l_claim_line_tbl(i).currency_code IS NOT NULL THEN
1355         l_pvt_claim_line_tbl(i).currency_code    :=l_claim_line_tbl(i).currency_code;
1356      END IF;
1357 
1358      IF l_claim_line_tbl(i).exchange_rate_type IS NOT NULL THEN
1359         l_pvt_claim_line_tbl(i).exchange_rate_type    :=l_claim_line_tbl(i).exchange_rate_type;
1360      END IF;
1361 
1362      IF l_claim_line_tbl(i).exchange_rate_date IS NOT NULL THEN
1363         l_pvt_claim_line_tbl(i).exchange_rate_date    :=l_claim_line_tbl(i).exchange_rate_date;
1364      END IF;
1365 
1366      IF l_claim_line_tbl(i).exchange_rate IS NOT NULL THEN
1367         l_pvt_claim_line_tbl(i).exchange_rate    :=l_claim_line_tbl(i).exchange_rate;
1368      END IF;
1369 
1370      IF l_claim_line_tbl(i).set_of_books_id IS NOT NULL THEN
1371         l_pvt_claim_line_tbl(i).set_of_books_id    :=l_claim_line_tbl(i).set_of_books_id;
1372      END IF;
1373 
1374      IF l_claim_line_tbl(i).valid_flag IS NOT NULL THEN
1375         l_pvt_claim_line_tbl(i).valid_flag    :=l_claim_line_tbl(i).valid_flag;
1376      END IF;
1377 
1378      IF l_claim_line_tbl(i).source_object_id IS NOT NULL THEN
1379        l_pvt_claim_line_tbl(i).source_object_id    :=l_claim_line_tbl(i).source_object_id;
1380      END IF;
1381 
1382      IF l_claim_line_tbl(i).source_object_class IS NOT NULL THEN
1383         l_pvt_claim_line_tbl(i).source_object_class    :=l_claim_line_tbl(i).source_object_class;
1384      END IF;
1385 
1386      IF l_claim_line_tbl(i).source_object_type_id  IS NOT NULL THEN
1387        l_pvt_claim_line_tbl(i).source_object_type_id     :=l_claim_line_tbl(i).source_object_type_id ;
1388      END IF;
1389 
1390      IF l_claim_line_tbl(i).source_object_line_id IS NOT NULL THEN
1391       l_pvt_claim_line_tbl(i).source_object_line_id    :=l_claim_line_tbl(i).source_object_line_id;
1392      END IF;
1393 
1394      IF l_claim_line_tbl(i).plan_id IS NOT NULL THEN
1395        l_pvt_claim_line_tbl(i).plan_id    :=l_claim_line_tbl(i).plan_id;
1396      END IF;
1397 
1398      IF l_claim_line_tbl(i).offer_id IS NOT NULL THEN
1399         l_pvt_claim_line_tbl(i).offer_id    :=l_claim_line_tbl(i).offer_id;
1400      END IF;
1401 
1402      IF l_claim_line_tbl(i).utilization_id IS NOT NULL THEN
1403         l_pvt_claim_line_tbl(i).utilization_id   :=l_claim_line_tbl(i).utilization_id;
1404      END IF;
1405 
1406      IF l_claim_line_tbl(i).payment_method IS NOT NULL THEN
1407         l_pvt_claim_line_tbl(i).payment_method    :=l_claim_line_tbl(i).payment_method;
1408      END IF;
1409 
1410      IF l_claim_line_tbl(i).payment_reference_id IS NOT NULL THEN
1411        l_pvt_claim_line_tbl(i).payment_reference_id    :=l_claim_line_tbl(i).payment_reference_id;
1412      END IF;
1413 
1414      IF l_claim_line_tbl(i).payment_reference_number IS NOT NULL THEN
1415         l_pvt_claim_line_tbl(i).payment_reference_number    :=l_claim_line_tbl(i).payment_reference_number;
1416      END IF;
1417 
1418      IF l_claim_line_tbl(i).payment_reference_date IS NOT NULL THEN
1419         l_pvt_claim_line_tbl(i).payment_reference_date    :=l_claim_line_tbl(i).payment_reference_date;
1420      END IF;
1421 
1422      IF l_claim_line_tbl(i).voucher_id IS NOT NULL THEN
1423        l_pvt_claim_line_tbl(i).voucher_id   :=l_claim_line_tbl(i).voucher_id;
1424      END IF;
1425 
1426      IF l_claim_line_tbl(i).voucher_number IS NOT NULL THEN
1427        l_pvt_claim_line_tbl(i).voucher_number    :=l_claim_line_tbl(i).voucher_number;
1428      END IF;
1429 
1430      IF l_claim_line_tbl(i).payment_status IS NOT NULL THEN
1431        l_pvt_claim_line_tbl(i).payment_status    :=l_claim_line_tbl(i).payment_status;
1432      END IF;
1433 
1434      IF l_claim_line_tbl(i).approved_flag IS NOT NULL THEN
1435        l_pvt_claim_line_tbl(i).approved_flag    :=l_claim_line_tbl(i).approved_flag;
1436      END IF;
1437 
1438      IF l_claim_line_tbl(i).approved_date IS NOT NULL THEN
1439       l_pvt_claim_line_tbl(i).approved_date    :=l_claim_line_tbl(i).approved_date;
1440      END IF;
1441 
1442      IF l_claim_line_tbl(i).approved_by IS NOT NULL THEN
1443        l_pvt_claim_line_tbl(i).approved_by    :=l_claim_line_tbl(i).approved_by;
1444      END IF;
1445 
1446      IF l_claim_line_tbl(i).settled_date IS NOT NULL THEN
1447       l_pvt_claim_line_tbl(i).settled_date   :=l_claim_line_tbl(i).settled_date;
1448      END IF;
1449 
1450      IF l_claim_line_tbl(i).settled_by  IS NOT NULL THEN
1451         l_pvt_claim_line_tbl(i).settled_by     :=l_claim_line_tbl(i).settled_by ;
1452      END IF;
1453 
1454      IF l_claim_line_tbl(i).performance_complete_flag IS NOT NULL THEN
1455        l_pvt_claim_line_tbl(i).performance_complete_flag    :=l_claim_line_tbl(i).performance_complete_flag;
1456      END IF;
1457 
1458      IF l_claim_line_tbl(i).performance_attached_flag IS NOT NULL THEN
1459         l_pvt_claim_line_tbl(i).performance_attached_flag    :=l_claim_line_tbl(i).performance_attached_flag;
1460      END IF;
1461 
1462 
1463      IF l_claim_line_tbl(i).item_type IS NOT NULL THEN
1464         l_lookup_stat :=OZF_UTILITY_PVT.check_lookup_exists(
1465                         p_lookup_table_name =>'OZF_LOOKUPS'
1466                        ,p_lookup_type       =>'OZF_CLAIM_LINE_ITEM_TYPE'
1467                        ,p_lookup_code       => l_claim_line_tbl(i).item_type);
1468 
1469         IF l_lookup_stat = FND_API.g_false THEN
1470            IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1471               FND_MESSAGE.set_name('OZF', 'OZF_INVALID_ITEM_TYPE');
1472 	      --//Item type provided is invalid, Please provide a valid item type.
1473               FND_MSG_PUB.add;
1474            END IF;
1475            x_return_status := fnd_api.g_ret_sts_error;
1476            RETURN;
1477         END IF;
1478         l_pvt_claim_line_tbl(i).item_type   :=l_claim_line_tbl(i).item_type;
1479      END IF;
1480 
1481      IF l_claim_line_tbl(i).item_id IS NOT NULL THEN
1482         IF l_pvt_claim_line_tbl(i).item_type = 'PRODUCT' THEN
1483 	   l_item_id := NULL;
1484 	   l_inv_org_id  := FND_PROFILE.VALUE('QP_ORGANIZATION_ID');
1485 	   OPEN c_inventory_item_id( l_claim_line_tbl(i).item_id,l_inv_org_id);
1486 	   FETCH c_inventory_item_id INTO l_item_id,l_pvt_claim_line_tbl(i).item_description;
1487 	   CLOSE c_inventory_item_id;
1488 
1489 	   IF l_item_id IS NULL THEN
1490 	      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1491                  FND_MESSAGE.set_name('OZF', 'OZF_INVALID_INVENTORY_ITEM_ID');
1492                  --//Inventory item identifier provided is Invalid.
1493                  FND_MSG_PUB.add;
1494               END IF;
1495               x_return_status := fnd_api.g_ret_sts_error;
1496               RETURN;
1497            END IF;
1498 	   l_pvt_claim_line_tbl(i).item_id := l_item_id;
1499 
1500 	ELSIF l_pvt_claim_line_tbl(i).item_type = 'FAMILY' THEN
1501 	   l_item_id := NULL;
1502 	   OPEN c_category_id( l_claim_line_tbl(i).item_id);
1503 	   FETCH c_category_id INTO l_item_id,l_pvt_claim_line_tbl(i).item_description;
1504 	   CLOSE c_category_id;
1505 
1506 	   --//Fix for bug 13398807
1507 	   --IF l_pvt_claim_line_tbl(i).item_id IS NULL THEN
1508 	   IF l_item_id IS NULL THEN
1509 	      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1510                  FND_MESSAGE.set_name('OZF', 'OZF_INVALID_CATEGORY_ID');
1511                    --//Item Category identifier provided is Invalid.
1512                  FND_MSG_PUB.add;
1513               END IF;
1514               x_return_status := fnd_api.g_ret_sts_error;
1515               RETURN;
1516 	   END IF;
1517 	    l_pvt_claim_line_tbl(i).item_id := l_item_id;
1518 
1519 	ELSIF l_pvt_claim_line_tbl(i).item_type = 'MEDIA' THEN
1520 	   l_item_id := NULL;
1521 	   OPEN c_media_channel( l_claim_line_tbl(i).item_id);
1522 	   FETCH c_media_channel INTO l_item_id,l_pvt_claim_line_tbl(i).item_description;
1523 	   CLOSE c_media_channel;
1524 
1525 	   IF l_item_id IS NULL THEN
1526 	      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1527                  FND_MESSAGE.set_name('OZF', 'OZF_INVALID_MEDIA_CHANNEL_ID');
1528                   --//Media channel identifier provided is Invalid.
1529                  FND_MSG_PUB.add;
1530               END IF;
1531               x_return_status := fnd_api.g_ret_sts_error;
1532               RETURN;
1533 	   END IF;
1534             l_pvt_claim_line_tbl(i).item_id := l_item_id;
1535 
1536 	ELSIF l_pvt_claim_line_tbl(i).item_type = 'MEMO_LINE' THEN
1537 	   l_item_id := NULL;
1538 	   OPEN c_memo_line( l_claim_line_tbl(i).item_id);
1539 	   FETCH c_memo_line INTO l_item_id,l_pvt_claim_line_tbl(i).item_description;
1540 	   CLOSE c_memo_line;
1541 
1542 	   IF l_item_id IS NULL THEN
1543 	      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1544                  FND_MESSAGE.set_name('OZF', 'OZF_INVALID_MEMO_LINE_ID');
1545                    --//Memo line identifier provided is Invalid.
1546                  FND_MSG_PUB.add;
1547               END IF;
1548               x_return_status := fnd_api.g_ret_sts_error;
1549               RETURN;
1550            END IF;
1551 	    l_pvt_claim_line_tbl(i).item_id := l_item_id;
1552 	END IF;
1553      END IF;
1554 
1555       IF l_claim_line_tbl(i).quantity IS NOT NULL THEN
1556        l_pvt_claim_line_tbl(i).quantity   :=l_claim_line_tbl(i).quantity;
1557      END IF;
1558 
1559      IF l_claim_line_tbl(i).quantity_uom IS NOT NULL THEN
1560        l_pvt_claim_line_tbl(i).quantity_uom   :=l_claim_line_tbl(i).quantity_uom;
1561      END IF;
1562 
1563      IF l_claim_line_tbl(i).rate IS NOT NULL THEN
1564         l_pvt_claim_line_tbl(i).rate    :=l_claim_line_tbl(i).rate;
1565      END IF;
1566 
1567      IF l_claim_line_tbl(i).activity_type IS NOT NULL THEN
1568        l_pvt_claim_line_tbl(i).activity_type    :=l_claim_line_tbl(i).activity_type;
1569      END IF;
1570 
1571      IF l_claim_line_tbl(i).activity_id IS NOT NULL THEN
1572         l_pvt_claim_line_tbl(i).activity_id    :=l_claim_line_tbl(i).activity_id;
1573      END IF;
1574 
1575      IF l_claim_line_tbl(i).related_cust_account_id IS NOT NULL THEN
1576        l_pvt_claim_line_tbl(i).related_cust_account_id   :=l_claim_line_tbl(i).related_cust_account_id;
1577      END IF;
1578 
1579      IF l_claim_line_tbl(i).relationship_type IS NOT NULL THEN
1580         l_pvt_claim_line_tbl(i).relationship_type    :=l_claim_line_tbl(i).relationship_type;
1581      END IF;
1582 
1583      IF l_claim_line_tbl(i).earnings_associated_flag IS NOT NULL THEN
1584         l_pvt_claim_line_tbl(i).earnings_associated_flag    :=l_claim_line_tbl(i).earnings_associated_flag;
1585      END IF;
1586 
1587      IF l_claim_line_tbl(i).comments IS NOT NULL THEN
1588         l_pvt_claim_line_tbl(i).comments    :=l_claim_line_tbl(i).comments;
1589      END IF;
1590 
1591      IF l_claim_line_tbl(i).tax_code IS NOT NULL THEN
1592         l_pvt_claim_line_tbl(i).tax_code    :=l_claim_line_tbl(i).tax_code;
1593      END IF;
1594 
1595      IF l_claim_line_tbl(i).attribute_category IS NOT NULL THEN
1596         l_pvt_claim_line_tbl(i).attribute_category    :=l_claim_line_tbl(i).attribute_category;
1597      END IF;
1598 
1599      IF l_claim_line_tbl(i).attribute1 IS NOT NULL THEN
1600        l_pvt_claim_line_tbl(i).attribute1    :=l_claim_line_tbl(i).attribute1;
1601      END IF;
1602 
1603      IF l_claim_line_tbl(i).attribute2 IS NOT NULL THEN
1604        l_pvt_claim_line_tbl(i).attribute2    :=l_claim_line_tbl(i).attribute2;
1605      END IF;
1606 
1607      IF l_claim_line_tbl(i).attribute3 IS NOT NULL THEN
1608        l_pvt_claim_line_tbl(i).attribute3   :=l_claim_line_tbl(i).attribute3;
1609      END IF;
1610 
1611      IF l_claim_line_tbl(i).attribute4 IS NOT NULL THEN
1612       l_pvt_claim_line_tbl(i).attribute4   :=l_claim_line_tbl(i).attribute4;
1613      END IF;
1614 
1615      IF l_claim_line_tbl(i).attribute5 IS NOT NULL THEN
1616        l_pvt_claim_line_tbl(i).attribute5    :=l_claim_line_tbl(i).attribute5;
1617      END IF;
1618 
1619      IF l_claim_line_tbl(i).attribute6 IS NOT NULL THEN
1620         l_pvt_claim_line_tbl(i).attribute6   :=l_claim_line_tbl(i).attribute6;
1621      END IF;
1622 
1623      IF l_claim_line_tbl(i).attribute7 IS NOT NULL THEN
1624         l_pvt_claim_line_tbl(i).attribute7   :=l_claim_line_tbl(i).attribute7;
1625      END IF;
1626 
1627      IF l_claim_line_tbl(i).attribute8 IS NOT NULL THEN
1628         l_pvt_claim_line_tbl(i).attribute8    :=l_claim_line_tbl(i).attribute8;
1629      END IF;
1630 
1631      IF l_claim_line_tbl(i).attribute9 IS NOT NULL THEN
1632         l_pvt_claim_line_tbl(i).attribute9    :=l_claim_line_tbl(i).attribute9;
1633      END IF;
1634 
1635      IF l_claim_line_tbl(i).attribute10 IS NOT NULL THEN
1636         l_pvt_claim_line_tbl(i).attribute10    :=l_claim_line_tbl(i).attribute10;
1637      END IF;
1638 
1639      IF l_claim_line_tbl(i).attribute11 IS NOT NULL THEN
1640        l_pvt_claim_line_tbl(i).attribute11    :=l_claim_line_tbl(i).attribute11;
1641      END IF;
1642 
1643      IF l_claim_line_tbl(i).attribute12 IS NOT NULL THEN
1644         l_pvt_claim_line_tbl(i).attribute12   :=l_claim_line_tbl(i).attribute12;
1645      END IF;
1646 
1647      IF l_claim_line_tbl(i).attribute13 IS NOT NULL THEN
1648         l_pvt_claim_line_tbl(i).attribute13  :=l_claim_line_tbl(i).attribute13;
1649      END IF;
1650 
1651      IF l_claim_line_tbl(i).attribute14 IS NOT NULL THEN
1652        l_pvt_claim_line_tbl(i).attribute14    :=l_claim_line_tbl(i).attribute14;
1653      END IF;
1654 
1655      IF l_claim_line_tbl(i).attribute15 IS NOT NULL THEN
1656         l_pvt_claim_line_tbl(i).attribute15    :=l_claim_line_tbl(i).attribute15;
1657      END IF;
1658 
1659      IF l_claim_line_tbl(i).org_id IS NOT NULL THEN
1660         l_pvt_claim_line_tbl(i).org_id    :=l_claim_line_tbl(i).org_id;
1661      END IF;
1662 
1663      IF l_claim_line_tbl(i).update_from_tbl_flag IS NOT NULL THEN
1664         l_pvt_claim_line_tbl(i).update_from_tbl_flag   :=l_claim_line_tbl(i).update_from_tbl_flag;
1665      END IF;
1666 
1667      IF l_claim_line_tbl(i).tax_action IS NOT NULL THEN
1668         l_pvt_claim_line_tbl(i).tax_action   :=l_claim_line_tbl(i).tax_action;
1669      END IF;
1670 
1671      IF l_claim_line_tbl(i).sale_date IS NOT NULL THEN
1672        l_pvt_claim_line_tbl(i).sale_date   :=l_claim_line_tbl(i).sale_date;
1673      END IF;
1674 
1675      IF l_claim_line_tbl(i).tax_amount IS NOT NULL THEN
1676         l_pvt_claim_line_tbl(i).tax_amount    :=l_claim_line_tbl(i).tax_amount;
1677      END IF;
1678 
1679      IF l_claim_line_tbl(i).claim_curr_tax_amount IS NOT NULL THEN
1680        l_pvt_claim_line_tbl(i).claim_curr_tax_amount    :=l_claim_line_tbl(i).claim_curr_tax_amount;
1681      END IF;
1682 
1683      IF l_claim_line_tbl(i).activity_line_id IS NOT NULL THEN
1684        l_pvt_claim_line_tbl(i).activity_line_id    :=l_claim_line_tbl(i).activity_line_id;
1685      END IF;
1686 
1687      IF l_claim_line_tbl(i).offer_type IS NOT NULL THEN
1688         l_pvt_claim_line_tbl(i).offer_type   :=l_claim_line_tbl(i).offer_type;
1689      END IF;
1690 
1691      IF l_claim_line_tbl(i).prorate_earnings_flag IS NOT NULL THEN
1692         l_pvt_claim_line_tbl(i).prorate_earnings_flag   :=l_claim_line_tbl(i).prorate_earnings_flag;
1693      END IF;
1694 
1695      IF l_claim_line_tbl(i).earnings_end_date IS NOT NULL THEN
1696         l_pvt_claim_line_tbl(i).earnings_end_date   :=l_claim_line_tbl(i).earnings_end_date;
1697      END IF;
1698      --12.1 Enhancement : Price Protection
1699      IF l_claim_line_tbl(i).dpp_cust_account_id IS NOT NULL THEN
1700         l_pvt_claim_line_tbl(i).dpp_cust_account_id   :=l_claim_line_tbl(i).dpp_cust_account_id;
1701      END IF;
1702 
1703     END LOOP;
1704    END IF;
1705 
1706 -- Call to Update claim line tbl.
1707    Ozf_Claim_Line_Pvt.Update_Claim_line_Tbl(
1708 	    p_api_version		=> p_api_version
1709 	   ,p_init_msg_list		=> FND_API.G_FALSE
1710 	   ,p_commit			=> FND_API.G_FALSE
1711 	   ,P_Validation_Level		=> p_Validation_Level
1712 	   ,x_return_status		=> x_return_status
1713 	   ,x_msg_data			=> x_msg_data
1714 	   ,x_msg_count			=> x_msg_count
1715 	   ,p_claim_line_tbl		=> l_pvt_claim_line_tbl
1716 	   ,p_change_object_version	=> FND_API.g_false
1717 	   ,x_error_index		=> l_error_index );
1718    IF g_debug THEN
1719       OZF_UTILITY_PVT.DEBUG_MESSAGE('sTATUS FOR Update claim line =>'||x_return_status);
1720    END IF;
1721    IF x_return_status = FND_API.G_RET_STS_ERROR then
1722       RAISE FND_API.G_EXC_ERROR;
1723    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1724       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1725    END IF;
1726 --Standard check for p_commit
1727    IF FND_API.to_Boolean( p_commit )
1728    THEN
1729       COMMIT WORK;
1730    END IF;
1731 -- Debug Message
1732    IF g_debug THEN
1733       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
1734    END IF;
1735    -- Standard call to get message count and if count is 1, get message info.
1736    FND_MSG_PUB.Count_And_Get
1737    (p_count          =>   x_msg_count,
1738    p_data           =>   x_msg_data
1739    );
1740 EXCEPTION
1741 WHEN OZF_Utility_PVT.resource_locked THEN
1742    ROLLBACK TO Update_Claim_Line_Tbl;
1743    x_return_status := FND_API.g_ret_sts_error;
1744    FND_MSG_PUB.Count_And_Get (
1745    p_encoded => FND_API.G_FALSE,
1746    p_count   => x_msg_count,
1747    p_data    => x_msg_data
1748    );
1749 OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
1750 WHEN FND_API.G_EXC_ERROR THEN
1751    ROLLBACK TO Update_Claim_Line_Tbl;
1752    x_return_status := FND_API.G_RET_STS_ERROR;
1753    -- Standard call to get message count and if count=1, get the message
1754    FND_MSG_PUB.Count_And_Get (
1755    p_encoded => FND_API.G_FALSE,
1756    p_count   => x_msg_count,
1757    p_data    => x_msg_data
1758    );
1759 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1760    ROLLBACK TO Update_Claim_Line_Tbl;
1761    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1762    -- Standard call to get message count and if count=1, get the message
1763    FND_MSG_PUB.Count_And_Get (
1764    p_encoded => FND_API.G_FALSE,
1765    p_count => x_msg_count,
1766    p_data  => x_msg_data
1767    );
1768 WHEN OTHERS THEN
1769    ROLLBACK TO Update_Claim_Line_Tbl;
1770    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1771    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1772       THEN
1773       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1774    END IF;
1775    -- Standard call to get message count and if count=1, get the message
1776    FND_MSG_PUB.Count_And_Get (
1777    p_encoded => FND_API.G_FALSE,
1778    p_count => x_msg_count,
1779    p_data  => x_msg_data
1780    );
1781 End Update_Claim_Line_tbl;
1782 /*End of Update Claim Line*/
1783 ---------------------------------------------------------------------
1784 -- PROCEDURE
1785 --   delete_claim
1786 --
1787 -- PURPOSE
1788 --    This procedure deletes claim record when Claim_Id and Object Version Number are provided.
1789 --
1790 -- PARAMETERS
1791 --
1792 --    x_msg_count
1793 --    x_object_version_number
1794 --    x_return_status
1795 --    p_claim_id
1796 --    p_object_version_number
1797 -- NOTES
1798 ---------------------------------------------------------------------
1799 PROCEDURE Delete_Claim(
1800    p_api_version_number         IN   NUMBER,
1801    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1802    p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1803    p_validation_level           IN    NUMBER   := FND_API.g_valid_level_full,
1804    x_return_status              OUT NOCOPY  VARCHAR2,
1805    x_msg_count                  OUT NOCOPY  NUMBER,
1806    x_msg_data                   OUT NOCOPY  VARCHAR2,
1807    p_claim_id                   IN  NUMBER,
1808    p_object_version_number      IN   NUMBER
1809 )
1810 IS
1811    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Claim';
1812    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1813    l_object_version_NUMBER     NUMBER:=p_object_version_number;
1814    l_claim_id                  NUMBER:=p_claim_id;
1815 BEGIN
1816 -- Standard Start of API savepoint
1817    SAVEPOINT DELETE_Claim_PUB;
1818 -- Standard call to check for call compatibility.
1819    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1820       p_api_version_number,
1821       l_api_name,
1822       G_PKG_NAME)
1823    THEN
1824       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1825    END IF;
1826 -- Initialize message list if p_init_msg_list is set to TRUE.
1827    IF FND_API.to_Boolean( p_init_msg_list )
1828       THEN
1829       FND_MSG_PUB.initialize;
1830    END IF;
1831 -- Debug Message
1832    IF g_debug THEN
1833       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
1834    END IF;
1835 -- Initialize API return status to SUCCESS
1836 x_return_status := FND_API.G_RET_STS_SUCCESS;
1837 --
1838 -- Calling private API
1839 --
1840    OZF_Claim_PVT.Delete_Claim(
1841     p_api_version_number     => p_api_version_number,
1842     p_init_msg_list          => FND_API.G_FALSE,
1843     p_commit                 => FND_API.G_FALSE,
1844     p_object_id              => l_claim_id,
1845     p_object_version_number  => l_object_version_number,
1846     x_return_status          => x_return_status,
1847     x_msg_count              => x_msg_count,
1848     x_msg_data               => x_msg_data
1849     );
1850 --
1851    IF g_debug THEN
1852       OZF_UTILITY_PVT.DEBUG_MESSAGE('RETURN STATUS FOR DELETE_CLAIM =>'||X_RETURN_STATUS);
1853    END IF;
1854 -- Check return status from the above procedure call
1855 --
1856 -- Standard check for p_commit
1857    IF FND_API.to_Boolean( p_commit )
1858       THEN
1859        COMMIT WORK;
1860    END IF;
1861    -- Debug Message
1862    IF g_debug THEN
1863       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
1864    END IF;
1865    -- Standard call to get message count and if count is 1, get message info.
1866    FND_MSG_PUB.Count_And_Get
1867    (p_count          =>   x_msg_count,
1868    p_data           =>   x_msg_data
1869    );
1870 EXCEPTION
1871 WHEN OZF_Utility_PVT.resource_locked THEN
1872    ROLLBACK TO DELETE_Claim_PUB;
1873    x_return_status := FND_API.g_ret_sts_error;
1874    FND_MSG_PUB.Count_And_Get (
1875    p_encoded => FND_API.G_FALSE,
1876    p_count => x_msg_count,
1877    p_data  => x_msg_data
1878    );
1879 OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
1880 WHEN FND_API.G_EXC_ERROR THEN
1881    ROLLBACK TO DELETE_Claim_PUB;
1882    x_return_status := FND_API.G_RET_STS_ERROR;
1883    -- Standard call to get message count and if count=1, get the message
1884    FND_MSG_PUB.Count_And_Get (
1885    p_encoded => FND_API.G_FALSE,
1886    p_count   => x_msg_count,
1887    p_data    => x_msg_data
1888    );
1889 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1890    ROLLBACK TO DELETE_Claim_PUB;
1891    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1892    -- Standard call to get message count and if count=1, get the message
1893    FND_MSG_PUB.Count_And_Get (
1894    p_encoded => FND_API.G_FALSE,
1895    p_count => x_msg_count,
1896    p_data  => x_msg_data
1897    );
1898 WHEN OTHERS THEN
1899    ROLLBACK TO DELETE_Claim_PUB;
1900    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1901    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1902       THEN
1903       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1904    END IF;
1905 -- Standard call to get message count and if count=1, get the message
1906    FND_MSG_PUB.Count_And_Get (
1907    p_encoded => FND_API.G_FALSE,
1908    p_count => x_msg_count,
1909    p_data  => x_msg_data
1910    );
1911    End Delete_Claim;
1912 ---------------------------------------------------------------------
1913 -- PROCEDURE
1914 --   Delete_Claim_Line_Tbl
1915 --
1916 -- PURPOSE
1917 --    This procedure deletes claim line records
1918 --
1919 -- PARAMETERS
1920 --
1921 --    x_msg_count
1922 --    x_object_version_number
1923 --    x_return_status
1924 --    p_claim_line_tbl
1925 --    p_object_version_number
1926 --    x_error_index
1927 -- NOTES
1928 ---------------------------------------------------------------------
1929 PROCEDURE Delete_Claim_Line_Tbl(
1930    p_api_version             IN    NUMBER
1931    ,p_init_msg_list          IN    VARCHAR2 := FND_API.g_false
1932    ,p_commit                 IN    VARCHAR2 := FND_API.g_false
1933    ,p_validation_level       IN    NUMBER   := FND_API.g_valid_level_full
1934    ,x_return_status          OUT NOCOPY   VARCHAR2
1935    ,x_msg_data               OUT NOCOPY   VARCHAR2
1936    ,x_msg_count              OUT NOCOPY   NUMBER
1937    ,p_claim_line_tbl         IN    claim_line_tbl_type
1938    ,p_change_object_version  IN    VARCHAR2 := FND_API.g_false
1939    ,x_error_index            OUT NOCOPY   NUMBER)
1940 IS
1941    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Claim_Line';
1942    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1943    l_pvt_claim_line_tbl        OZF_CLAIM_LINE_PVT.claim_line_Tbl_type;
1944    l_claim_line_tbl            OZF_CLAIM_PUB.claim_line_tbl_type:=p_claim_line_tbl;
1945    l_error_index               NUMBER;
1946 BEGIN
1947 -- Standard Start of API savepoint
1948    SAVEPOINT DELETE_Claim_Line_PUB;
1949 -- Standard call to check for call compatibility.
1950 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1951    p_api_version,
1952    l_api_name,
1953    G_PKG_NAME)
1954    THEN
1955    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1956 END IF;
1957 -- Initialize message list if p_init_msg_list is set to TRUE.
1958 IF FND_API.to_Boolean( p_init_msg_list )
1959    THEN
1960    FND_MSG_PUB.initialize;
1961 END IF;
1962 -- Debug Message
1963    IF g_debug THEN
1964       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
1965    END IF;
1966 -- Initialize API return status to SUCCESS
1967    x_return_status := FND_API.G_RET_STS_SUCCESS;
1968 --
1969 -- API body
1970 --
1971      l_claim_line_tbl := p_claim_line_tbl;
1972        IF p_claim_line_tbl.COUNT > 0 THEN
1973    FOR i IN p_claim_line_tbl.FIRST..p_claim_line_tbl.LAST LOOP
1974    --
1975      l_pvt_claim_line_tbl(i). claim_line_id              := l_claim_line_tbl(i). claim_line_id  ;
1976      l_pvt_claim_line_tbl(i).object_version_number       := l_claim_line_tbl(i).object_version_number;
1977      l_pvt_claim_line_tbl(i).claim_id                    := l_claim_line_tbl(i).claim_id;
1978 END LOOP;
1979  END IF;
1980    OZF_Claim_Line_PVT.Delete_Claim_Line_Tbl(
1981     p_api_version        => p_api_version
1982    ,p_init_msg_list      => FND_API.G_FALSE
1983    ,p_commit             => FND_API.G_FALSE
1984    ,P_Validation_Level   => p_Validation_Level
1985    ,x_return_status         =>    x_return_status
1986    ,x_msg_data              =>    x_msg_data
1987    ,x_msg_count             =>    x_msg_count
1988    ,p_claim_line_tbl        =>    l_pvt_claim_line_tbl
1989    ,p_change_object_version =>    FND_API.g_false
1990    ,x_error_index           =>    l_error_index);
1991    IF g_debug THEN
1992       OZF_UTILITY_PVT.DEBUG_MESSAGE('RETURN STATUS FOR DELETE_CLAIM_Line_Tbl =>'||X_RETURN_STATUS);
1993    END IF;
1994    -- Check return status from the above procedure call
1995    IF x_return_status = FND_API.G_RET_STS_ERROR then
1996        RAISE FND_API.G_EXC_ERROR;
1997    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1998    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1999    END IF;
2000 --
2001 -- End of API body
2002 --
2003 -- Standard check for p_commit
2004    IF FND_API.to_Boolean( p_commit )
2005       THEN
2006       COMMIT WORK;
2007    END IF;
2008 -- Debug Message
2009 IF g_debug THEN
2010    OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
2011 END IF;
2012 -- Standard call to get message count and if count is 1, get message info.
2013 FND_MSG_PUB.Count_And_Get
2014 (p_count          =>   x_msg_count,
2015 p_data           =>   x_msg_data
2016 );
2017 EXCEPTION
2018 WHEN OZF_Utility_PVT.resource_locked THEN
2019    ROLLBACK TO DELETE_Claim_Line_PUB;
2020    x_return_status := FND_API.G_RET_STS_ERROR;
2021    -- Standard call to get message count and if count=1, get the message
2022    FND_MSG_PUB.Count_And_Get (
2023    p_encoded => FND_API.G_FALSE,
2024    p_count   => x_msg_count,
2025    p_data    => x_msg_data
2026    );
2027 OZF_Utility_PVT.Error_Message(p_message_name => 'OZF_API_RESOURCE_LOCKED');
2028    WHEN FND_API.G_EXC_ERROR THEN
2029    ROLLBACK TO DELETE_Claim_Line_PUB;
2030    x_return_status := FND_API.G_RET_STS_ERROR;
2031    -- Standard call to get message count and if count=1, get the message
2032    FND_MSG_PUB.Count_And_Get (
2033    p_encoded => FND_API.G_FALSE,
2034    p_count   => x_msg_count,
2035    p_data    => x_msg_data
2036    );
2037 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2038    ROLLBACK TO DELETE_Claim_Line_PUB;
2039    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2040    -- Standard call to get message count and if count=1, get the message
2041    FND_MSG_PUB.Count_And_Get (
2042    p_encoded => FND_API.G_FALSE,
2043    p_count => x_msg_count,
2044    p_data  => x_msg_data
2045    );
2046 WHEN OTHERS THEN
2047    ROLLBACK TO DELETE_Claim_PUB;
2048    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2049    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2050       THEN
2051       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2052    END IF;
2053    -- Standard call to get message count and if count=1, get the message
2054    FND_MSG_PUB.Count_And_Get (
2055    p_encoded => FND_API.G_FALSE,
2056    p_count => x_msg_count,
2057    p_data  => x_msg_data
2058    );
2059 End Delete_Claim_Line_Tbl;
2060 /* End of Delete claim line*/
2061 
2062 ---------------------------------------------------------------------
2063 -- PROCEDURE
2064 --   asso_accruals_to_claim
2065 --
2066 -- PURPOSE
2067 --    This procedure associates accruals based on the given fund
2068 --    utilization criteria.
2069 --
2070 -- PARAMETERS
2071 --    p_api_version
2072 --    p_init_msg_list
2073 --    p_commit
2074 --    p_validation_level
2075 --    p_claim_id
2076 --    p_funds_util_flt
2077 --    x_return_status
2078 --    x_msg_count
2079 --    x_msg_data
2080 -- NOTES
2081 ---------------------------------------------------------------------
2082 PROCEDURE Asso_Accruals_To_Claim(
2083     p_api_version            IN    NUMBER
2084    ,p_init_msg_list          IN    VARCHAR2 := FND_API.g_false
2085    ,p_commit                 IN    VARCHAR2 := FND_API.g_false
2086    ,p_validation_level       IN    NUMBER   := FND_API.g_valid_level_full
2087    ,x_return_status          OUT NOCOPY   VARCHAR2
2088    ,x_msg_data               OUT NOCOPY   VARCHAR2
2089    ,x_msg_count              OUT NOCOPY   NUMBER
2090    ,p_claim_id               IN    NUMBER
2091    ,p_funds_util_flt         IN    funds_util_flt_type
2092 )
2093 IS
2094 l_api_version                CONSTANT NUMBER       := 1.0;
2095 l_api_name                   CONSTANT VARCHAR2(30) := 'Asso_Accruals_To_Claim';
2096 l_full_name                  CONSTANT VARCHAR2(60) := G_PKG_NAME||'.'||l_api_name;
2097 l_return_status                       VARCHAR2(1);
2098 
2099 l_funds_util_flt                      OZF_Claim_Accrual_PVT.funds_util_flt_type;
2100 
2101 BEGIN
2102    -- Standard Start of API savepoint
2103    SAVEPOINT Asso_Accruals_To_Claim;
2104 
2105    IF G_DEBUG THEN
2106       OZF_Utility_PVT.debug_message(l_full_name||': start');
2107    END IF;
2108 
2109    -- Standard call to check for call compatibility.
2110    IF NOT FND_API.Compatible_API_Call ( l_api_version,
2111                                         p_api_version,
2112                                         l_api_name,
2113                                         G_PKG_NAME ) THEN
2114       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2115    END IF;
2116 
2117    -- Initialize message list if p_init_msg_list is set to TRUE.
2118    IF FND_API.to_Boolean( p_init_msg_list ) THEN
2119       FND_MSG_PUB.initialize;
2120    END IF;
2121 
2122    -- Initialize API return status to SUCCESS
2123    x_return_status := FND_API.G_RET_STS_SUCCESS;
2124 
2125    ------------------------------------------
2126    -- 1. Default and derive column valude  --
2127    ------------------------------------------
2128    l_funds_util_flt.fund_id                     := p_funds_util_flt.fund_id;
2129    l_funds_util_flt.activity_type               := p_funds_util_flt.activity_type;
2130    l_funds_util_flt.activity_id                 := p_funds_util_flt.activity_id;
2131    l_funds_util_flt.activity_product_id         := p_funds_util_flt.activity_product_id;
2132    l_funds_util_flt.offer_type                  := p_funds_util_flt.offer_type;
2133    l_funds_util_flt.document_class              := p_funds_util_flt.document_class;
2134    l_funds_util_flt.document_id                 := p_funds_util_flt.document_id;
2135    l_funds_util_flt.product_level_type          := p_funds_util_flt.product_level_type;
2136    l_funds_util_flt.product_id                  := p_funds_util_flt.product_id;
2137    l_funds_util_flt.reference_type              := p_funds_util_flt.reference_type;
2138    l_funds_util_flt.reference_id                := p_funds_util_flt.reference_id;
2139    l_funds_util_flt.utilization_type            := p_funds_util_flt.utilization_type;
2140    l_funds_util_flt.cust_account_id             := p_funds_util_flt.cust_account_id;
2141    l_funds_util_flt.relationship_type           := p_funds_util_flt.relationship_type;
2142    l_funds_util_flt.related_cust_account_id     := p_funds_util_flt.related_cust_account_id;
2143    l_funds_util_flt.buy_group_cust_account_id   := p_funds_util_flt.buy_group_cust_account_id;
2144    l_funds_util_flt.select_cust_children_flag   := p_funds_util_flt.select_cust_children_flag;
2145    l_funds_util_flt.pay_to_customer             := p_funds_util_flt.pay_to_customer;
2146    l_funds_util_flt.prorate_earnings_flag       := p_funds_util_flt.prorate_earnings_flag;
2147    l_funds_util_flt.end_date                    := p_funds_util_flt.end_date;
2148    l_funds_util_flt.total_amount                := p_funds_util_flt.total_amount;
2149    l_funds_util_flt.total_units                 := p_funds_util_flt.total_units;
2150    l_funds_util_flt.quantity                    := p_funds_util_flt.quantity;
2151    l_funds_util_flt.uom_code                    := p_funds_util_flt.uom_code;
2152    -- Added For Bug 8402328
2153    l_funds_util_flt.utilization_id              := p_funds_util_flt.utilization_id;
2154    l_funds_util_flt.run_mode			:= 'API'; --added run mode to fix Bug 12884337 , while system is finding accruals for customer, it is checking for run_mode as not null, so it is passed
2155 
2156 
2157    ------------------------------------------
2158    -- 2. Call OZF_CLAIM_ACCRUAL_PVT
2159    ------------------------------------------
2160    OZF_Claim_Accrual_PVT.Asso_Accruals_To_Claim(
2161      p_api_version         => l_api_version
2162     ,p_init_msg_list       => FND_API.g_false
2163     ,p_commit              => FND_API.g_false
2164     ,p_validation_level    => FND_API.g_valid_level_full
2165 
2166     ,x_return_status       => l_return_status
2167     ,x_msg_count           => x_msg_count
2168     ,x_msg_data            => x_msg_data
2169 
2170     ,p_claim_id            => p_claim_id
2171     ,p_funds_util_flt      => l_funds_util_flt
2172    );
2173    IF l_return_status = FND_API.g_ret_sts_error THEN
2174       RAISE FND_API.g_exc_error;
2175    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2176       RAISE FND_API.g_exc_unexpected_error;
2177    END IF;
2178 
2179    -- Standard check for p_commit
2180    IF FND_API.to_Boolean(p_commit) THEN
2181       COMMIT WORK;
2182    END IF;
2183 
2184    IF G_DEBUG THEN
2185       OZF_Utility_PVT.debug_message(l_full_name ||': end');
2186    END IF;
2187 
2188    -- Standard call to get message count and if count is 1, get message info.
2189    FND_MSG_PUB.Count_And_Get(
2190          p_count          =>   x_msg_count,
2191          p_data           =>   x_msg_data
2192    );
2193 
2194 EXCEPTION
2195    WHEN FND_API.G_EXC_ERROR THEN
2196       ROLLBACK TO Asso_Accruals_To_Claim;
2197       x_return_status := FND_API.G_RET_STS_ERROR;
2198       FND_MSG_PUB.Count_And_Get (
2199          p_encoded => FND_API.G_FALSE,
2200          p_count   => x_msg_count,
2201          p_data    => x_msg_data
2202       );
2203 
2204    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2205       ROLLBACK TO Asso_Accruals_To_Claim;
2206       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2207       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2208          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2209          FND_MSG_PUB.add;
2210       END IF;
2211       FND_MSG_PUB.Count_And_Get (
2212          p_encoded => FND_API.G_FALSE,
2213          p_count   => x_msg_count,
2214          p_data    => x_msg_data
2215       );
2216 
2217    WHEN OTHERS THEN
2218       ROLLBACK TO Asso_Accruals_To_Claim;
2219       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2220       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2221          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2222          FND_MSG_PUB.add;
2223       END IF;
2224       FND_MSG_PUB.Count_And_Get (
2225          p_encoded => FND_API.G_FALSE,
2226          p_count   => x_msg_count,
2227          p_data    => x_msg_data
2228       );
2229 END Asso_Accruals_To_Claim;
2230 
2231 ---------------------------------------------------------------------
2232 -- PROCEDURE
2233 --   asso_accruals_to_claim_line
2234 --
2235 -- PURPOSE
2236 --    This procedure associates accruals to a claim line.
2237 --
2238 -- PARAMETERS
2239 --    p_api_version
2240 --    p_init_msg_list
2241 --    p_commit
2242 --    p_validation_level
2243 --    p_claim_line_id
2244 --    x_return_status
2245 --    x_msg_count
2246 --    x_msg_data
2247 -- NOTES
2248 ---------------------------------------------------------------------
2249 PROCEDURE Asso_Accruals_To_Claim_Line(
2250     p_api_version            IN    NUMBER
2251    ,p_init_msg_list          IN    VARCHAR2 := FND_API.g_false
2252    ,p_commit                 IN    VARCHAR2 := FND_API.g_false
2253    ,p_validation_level       IN    NUMBER   := FND_API.g_valid_level_full
2254    ,x_return_status          OUT NOCOPY   VARCHAR2
2255    ,x_msg_data               OUT NOCOPY   VARCHAR2
2256    ,x_msg_count              OUT NOCOPY   NUMBER
2257    ,p_claim_line_id          IN    NUMBER
2258 )
2259 IS
2260 l_api_version                CONSTANT NUMBER       := 1.0;
2261 l_api_name                   CONSTANT VARCHAR2(30) := 'Asso_Accruals_To_Claim_Line';
2262 l_full_name                  CONSTANT VARCHAR2(60) := G_PKG_NAME||'.'||l_api_name;
2263 l_return_status                       VARCHAR2(1);
2264 
2265 BEGIN
2266    -- Standard Start of API savepoint
2267    SAVEPOINT Asso_Accruals_To_Claim_Line;
2268 
2269    IF G_DEBUG THEN
2270       OZF_Utility_PVT.debug_message(l_full_name||': start');
2271    END IF;
2272 
2273    -- Standard call to check for call compatibility.
2274    IF NOT FND_API.Compatible_API_Call ( l_api_version,
2275                                         p_api_version,
2276                                         l_api_name,
2277                                         G_PKG_NAME ) THEN
2278       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2279    END IF;
2280 
2281    -- Initialize message list if p_init_msg_list is set to TRUE.
2282    IF FND_API.to_Boolean( p_init_msg_list ) THEN
2283       FND_MSG_PUB.initialize;
2284    END IF;
2285 
2286    -- Initialize API return status to SUCCESS
2287    x_return_status := FND_API.G_RET_STS_SUCCESS;
2288 
2289    ------------------------------------------
2290    -- 1. Call OZF_CLAIM_ACCRUAL_PVT
2291    ------------------------------------------
2292    OZF_Claim_Accrual_PVT.Asso_Accruals_To_Claim_Line(
2293      p_api_version         => l_api_version
2294     ,p_init_msg_list       => FND_API.g_false
2295     ,p_commit              => FND_API.g_false
2296     ,p_validation_level    => FND_API.g_valid_level_full
2297 
2298     ,x_return_status       => l_return_status
2299     ,x_msg_count           => x_msg_count
2300     ,x_msg_data            => x_msg_data
2301 
2302     ,p_claim_line_id       => p_claim_line_id
2303     ,p_run_mode		   =>'API' --added run mode to fix Bug 13418731 , while system is finding accruals for customer, it is checking for run_mode as not null, so it is passed
2304    );
2305    IF l_return_status = FND_API.g_ret_sts_error THEN
2306       RAISE FND_API.g_exc_error;
2307    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2308       RAISE FND_API.g_exc_unexpected_error;
2309    END IF;
2310 
2311    -- Standard check for p_commit
2312    IF FND_API.to_Boolean(p_commit) THEN
2313       COMMIT WORK;
2314    END IF;
2315 
2316    IF G_DEBUG THEN
2317       OZF_Utility_PVT.debug_message(l_full_name ||': end');
2318    END IF;
2319 
2320    -- Standard call to get message count and if count is 1, get message info.
2321    FND_MSG_PUB.Count_And_Get(
2322          p_count          =>   x_msg_count,
2323          p_data           =>   x_msg_data
2324    );
2325 
2326 EXCEPTION
2327    WHEN FND_API.G_EXC_ERROR THEN
2328       ROLLBACK TO Asso_Accruals_To_Claim_Line;
2329       x_return_status := FND_API.G_RET_STS_ERROR;
2330       FND_MSG_PUB.Count_And_Get (
2331          p_encoded => FND_API.G_FALSE,
2332          p_count   => x_msg_count,
2333          p_data    => x_msg_data
2334       );
2335 
2336    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2337       ROLLBACK TO Asso_Accruals_To_Claim_Line;
2338       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2339       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2340          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2341          FND_MSG_PUB.add;
2342       END IF;
2343       FND_MSG_PUB.Count_And_Get (
2344          p_encoded => FND_API.G_FALSE,
2345          p_count   => x_msg_count,
2346          p_data    => x_msg_data
2347       );
2348 
2349    WHEN OTHERS THEN
2350       ROLLBACK TO Asso_Accruals_To_Claim_Line;
2351       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2352       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2353          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2354          FND_MSG_PUB.add;
2355       END IF;
2356       FND_MSG_PUB.Count_And_Get (
2357          p_encoded => FND_API.G_FALSE,
2358          p_count   => x_msg_count,
2359          p_data    => x_msg_data
2360       );
2361 END Asso_Accruals_To_Claim_Line;
2362 
2363 ---------------------------------------------------------------------
2364 -- PROCEDURE
2365 --   create_claim_for_accruals
2366 --
2367 -- PURPOSE
2368 --    This procedure creates a claim for accruals that meet the fund
2369 --    utilization search criteria.
2370 --
2371 -- PARAMETERS
2372 --    p_api_version
2373 --    p_init_msg_list
2374 --    p_commit
2375 --    p_validation_level
2376 --    p_claim_rec
2377 --    p_funds_util_flt
2378 --    x_return_status
2379 --    x_msg_count
2380 --    x_msg_data
2381 -- NOTES
2382 ---------------------------------------------------------------------
2383 PROCEDURE Create_Claim_For_Accruals(
2384     p_api_version            IN    NUMBER
2385    ,p_init_msg_list          IN    VARCHAR2 := FND_API.g_false
2386    ,p_commit                 IN    VARCHAR2 := FND_API.g_false
2387    ,p_validation_level       IN    NUMBER   := FND_API.g_valid_level_full
2388    ,x_return_status          OUT NOCOPY   VARCHAR2
2389    ,x_msg_data               OUT NOCOPY   VARCHAR2
2390    ,x_msg_count              OUT NOCOPY   NUMBER
2391    ,p_claim_rec              IN    claim_rec_type
2392    ,p_funds_util_flt         IN    funds_util_flt_type
2393    ,x_claim_id               OUT NOCOPY   NUMBER
2394 )
2395 IS
2396 l_api_version                CONSTANT NUMBER       := 1.0;
2397 l_api_name                   CONSTANT VARCHAR2(30) := 'Create_Claim_For_Accruals';
2398 l_full_name                  CONSTANT VARCHAR2(60) := G_PKG_NAME||'.'||l_api_name;
2399 l_return_status                       VARCHAR2(1);
2400 
2401 l_claim_rec                           OZF_Claim_PVT.claim_rec_type;
2402 l_funds_util_flt                      OZF_Claim_Accrual_PVT.funds_util_flt_type;
2403 
2404 BEGIN
2405    -- Standard Start of API savepoint
2406    SAVEPOINT Create_Claim_For_Accruals;
2407 
2408    IF G_DEBUG THEN
2409       OZF_Utility_PVT.debug_message(l_full_name||': start');
2410    END IF;
2411 
2412    -- Standard call to check for call compatibility.
2413    IF NOT FND_API.Compatible_API_Call ( l_api_version,
2414                                         p_api_version,
2415                                         l_api_name,
2416                                         G_PKG_NAME ) THEN
2417       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2418    END IF;
2419 
2420    -- Initialize message list if p_init_msg_list is set to TRUE.
2421    IF FND_API.to_Boolean( p_init_msg_list ) THEN
2422       FND_MSG_PUB.initialize;
2423    END IF;
2424 
2425    -- Initialize API return status to SUCCESS
2426    x_return_status := FND_API.G_RET_STS_SUCCESS;
2427 
2428    ------------------------------------------
2429    -- 1. Default and derive column valude  --
2430    ------------------------------------------
2431    l_claim_rec.claim_type_id                := p_claim_rec.claim_type_id;
2432    l_claim_rec.claim_date                   := p_claim_rec.claim_date;
2433    l_claim_rec.due_date                     := p_claim_rec.due_date;
2434    l_claim_rec.gl_date                      := p_claim_rec.gl_date;
2435    l_claim_rec.owner_id                     := p_claim_rec.owner_id;
2436    l_claim_rec.amount                       := p_claim_rec.amount;
2437    l_claim_rec.currency_code                := p_claim_rec.currency_code;
2438    l_claim_rec.exchange_rate_type           := p_claim_rec.exchange_rate_type;
2439    l_claim_rec.exchange_rate_date           := p_claim_rec.exchange_rate_date;
2440    l_claim_rec.exchange_rate                := p_claim_rec.exchange_rate;
2441    l_claim_rec.set_of_books_id              := p_claim_rec.set_of_books_id;
2442    l_claim_rec.source_object_id             := p_claim_rec.source_object_id;
2443    l_claim_rec.source_object_class          := p_claim_rec.source_object_class;
2444    l_claim_rec.source_object_type_id        := p_claim_rec.source_object_type_id;
2445    l_claim_rec.source_object_number         := p_claim_rec.source_object_number;
2446    l_claim_rec.cust_account_id              := p_claim_rec.cust_account_id;
2447    l_claim_rec.cust_billto_acct_site_id     := p_claim_rec.cust_billto_acct_site_id;
2448    l_claim_rec.cust_shipto_acct_site_id     := p_claim_rec.cust_shipto_acct_site_id;
2449    l_claim_rec.related_cust_account_id      := p_claim_rec.related_cust_account_id;
2450    l_claim_rec.reason_code_id               := p_claim_rec.reason_code_id;
2451    l_claim_rec.reason_type                  := p_claim_rec.reason_type;
2452    l_claim_rec.status_code                  := p_claim_rec.status_code;
2453    l_claim_rec.user_status_id               := p_claim_rec.user_status_id;
2454    l_claim_rec.sales_rep_id                 := p_claim_rec.sales_rep_id;
2455    l_claim_rec.collector_id                 := p_claim_rec.collector_id;
2456    l_claim_rec.contact_id                   := p_claim_rec.contact_id;
2457    l_claim_rec.broker_id                    := p_claim_rec.broker_id;
2458    l_claim_rec.customer_ref_date            := p_claim_rec.customer_ref_date;
2459    l_claim_rec.customer_ref_number          := p_claim_rec.customer_ref_number;
2460    l_claim_rec.comments                     := p_claim_rec.comments;
2461    l_claim_rec.attribute_category           := p_claim_rec.attribute_category;
2462    l_claim_rec.attribute1                   := p_claim_rec.attribute1;
2463    l_claim_rec.attribute2                   := p_claim_rec.attribute2;
2464    l_claim_rec.attribute3                   := p_claim_rec.attribute3;
2465    l_claim_rec.attribute4                   := p_claim_rec.attribute4;
2466    l_claim_rec.attribute5                   := p_claim_rec.attribute5;
2467    l_claim_rec.attribute6                   := p_claim_rec.attribute6;
2468    l_claim_rec.attribute7                   := p_claim_rec.attribute7;
2469    l_claim_rec.attribute8                   := p_claim_rec.attribute8;
2470    l_claim_rec.attribute9                   := p_claim_rec.attribute9;
2471    l_claim_rec.attribute10                  := p_claim_rec.attribute10;
2472    l_claim_rec.attribute11                  := p_claim_rec.attribute11;
2473    l_claim_rec.attribute12                  := p_claim_rec.attribute12;
2474    l_claim_rec.attribute13                  := p_claim_rec.attribute13;
2475    l_claim_rec.attribute14                  := p_claim_rec.attribute14;
2476    l_claim_rec.attribute15                  := p_claim_rec.attribute15;
2477    l_claim_rec.org_id                       := p_claim_rec.org_id;
2478    l_claim_rec.write_off_flag		    := p_claim_rec.write_off_flag;
2479    l_claim_rec.write_off_threshold_amount   := p_claim_rec.write_off_threshold_amount;
2480    l_claim_rec.under_write_off_threshold    := p_claim_rec.under_write_off_threshold;
2481    l_claim_rec.customer_reason		    := p_claim_rec.customer_reason;
2482    l_claim_rec.ship_to_cust_account_id	    := p_claim_rec.ship_to_cust_account_id;
2483    l_claim_rec.amount_applied		    := p_claim_rec.amount_applied;
2484    l_claim_rec.applied_receipt_id	    := p_claim_rec.applied_receipt_id;
2485    l_claim_rec.applied_receipt_number	    := p_claim_rec.applied_receipt_number;
2486    l_claim_rec.wo_rec_trx_id		    := p_claim_rec.wo_rec_trx_id;
2487    l_claim_rec.group_claim_id		    := p_claim_rec.group_claim_id;
2488    l_claim_rec.appr_wf_item_key		    := p_claim_rec.appr_wf_item_key;
2489    l_claim_rec.cstl_wf_item_key		    := p_claim_rec.cstl_wf_item_key;
2490    l_claim_rec.batch_type		    := p_claim_rec.batch_type;
2491    -- Fix for Bug 8501176
2492    l_claim_rec.claim_number		    := p_claim_rec.claim_number;
2493 
2494 
2495    l_funds_util_flt.fund_id                     := p_funds_util_flt.fund_id;
2496    l_funds_util_flt.activity_type               := p_funds_util_flt.activity_type;
2497    l_funds_util_flt.activity_id                 := p_funds_util_flt.activity_id;
2498    l_funds_util_flt.activity_product_id         := p_funds_util_flt.activity_product_id;
2499    l_funds_util_flt.offer_type                  := p_funds_util_flt.offer_type;
2500    l_funds_util_flt.document_class              := p_funds_util_flt.document_class;
2501    l_funds_util_flt.document_id                 := p_funds_util_flt.document_id;
2502    l_funds_util_flt.product_level_type          := p_funds_util_flt.product_level_type;
2503    l_funds_util_flt.product_id                  := p_funds_util_flt.product_id;
2504    l_funds_util_flt.reference_type              := p_funds_util_flt.reference_type;
2505    l_funds_util_flt.reference_id                := p_funds_util_flt.reference_id;
2506    l_funds_util_flt.utilization_type            := p_funds_util_flt.utilization_type;
2507    l_funds_util_flt.cust_account_id             := p_funds_util_flt.cust_account_id;
2508    l_funds_util_flt.relationship_type           := p_funds_util_flt.relationship_type;
2509    l_funds_util_flt.related_cust_account_id     := p_funds_util_flt.related_cust_account_id;
2510    l_funds_util_flt.buy_group_cust_account_id   := p_funds_util_flt.buy_group_cust_account_id;
2511    l_funds_util_flt.select_cust_children_flag   := p_funds_util_flt.select_cust_children_flag;
2512    l_funds_util_flt.pay_to_customer             := p_funds_util_flt.pay_to_customer;
2513    l_funds_util_flt.prorate_earnings_flag       := p_funds_util_flt.prorate_earnings_flag;
2514    l_funds_util_flt.end_date                    := p_funds_util_flt.end_date;
2515    l_funds_util_flt.total_amount                := p_funds_util_flt.total_amount;
2516    l_funds_util_flt.total_units                 := p_funds_util_flt.total_units;
2517    l_funds_util_flt.quantity                    := p_funds_util_flt.quantity;
2518    l_funds_util_flt.uom_code                    := p_funds_util_flt.uom_code;
2519     -- Added For Bug 8402328
2520    l_funds_util_flt.utilization_id              := p_funds_util_flt.utilization_id;
2521 
2522    l_funds_util_flt.run_mode			:= 'API'; --added run mode to fix Bug 13418731 , while system is finding accruals for customer, it is checking for run_mode as not null, so it is passed
2523 
2524 
2525    ------------------------------------------
2526    -- 2. Call OZF_CLAIM_ACCRUAL_PVT
2527    ------------------------------------------
2528    IF G_DEBUG THEN
2529       OZF_Utility_PVT.debug_message(l_claim_rec.claim_number||': In Public l_claim_rec.claim_number');
2530    END IF;
2531 
2532    OZF_Claim_Accrual_PVT.Create_Claim_For_Accruals(
2533      p_api_version         => l_api_version
2534     ,p_init_msg_list       => FND_API.g_false
2535     ,p_commit              => FND_API.g_false
2536     ,p_validation_level    => FND_API.g_valid_level_full
2537 
2538     ,x_return_status       => l_return_status
2539     ,x_msg_count           => x_msg_count
2540     ,x_msg_data            => x_msg_data
2541 
2542     ,p_claim_rec           => l_claim_rec
2543     ,p_funds_util_flt      => l_funds_util_flt
2544 
2545     ,x_claim_id            => x_claim_id
2546    );
2547    IF l_return_status = FND_API.g_ret_sts_error THEN
2548       RAISE FND_API.g_exc_error;
2549    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2550       RAISE FND_API.g_exc_unexpected_error;
2551    END IF;
2552 
2553    -- Standard check for p_commit
2554    IF FND_API.to_Boolean(p_commit) THEN
2555       COMMIT WORK;
2556    END IF;
2557 
2558    IF G_DEBUG THEN
2559       OZF_Utility_PVT.debug_message(l_full_name ||': end');
2560    END IF;
2561 
2562    -- Standard call to get message count and if count is 1, get message info.
2563    FND_MSG_PUB.Count_And_Get(
2564          p_count          =>   x_msg_count,
2565          p_data           =>   x_msg_data
2566    );
2567 
2568 EXCEPTION
2569    WHEN FND_API.G_EXC_ERROR THEN
2570       ROLLBACK TO Create_Claim_For_Accruals;
2571       x_return_status := FND_API.G_RET_STS_ERROR;
2572       FND_MSG_PUB.Count_And_Get (
2573          p_encoded => FND_API.G_FALSE,
2574          p_count   => x_msg_count,
2575          p_data    => x_msg_data
2576       );
2577 
2578    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2579       ROLLBACK TO Create_Claim_For_Accruals;
2580       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2581       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2582          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2583          FND_MSG_PUB.add;
2584       END IF;
2585       FND_MSG_PUB.Count_And_Get (
2586          p_encoded => FND_API.G_FALSE,
2587          p_count   => x_msg_count,
2588          p_data    => x_msg_data
2589       );
2590 
2591    WHEN OTHERS THEN
2592       ROLLBACK TO Create_Claim_For_Accruals;
2593       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2594       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2595          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2596          FND_MSG_PUB.add;
2597       END IF;
2598       FND_MSG_PUB.Count_And_Get (
2599          p_encoded => FND_API.G_FALSE,
2600          p_count   => x_msg_count,
2601          p_data    => x_msg_data
2602       );
2603 END Create_Claim_For_Accruals;
2604 
2605 ---------------------------------------------------------------------
2606 -- PROCEDURE
2607 --   pay_claim_for_accruals
2608 --
2609 -- PURPOSE
2610 --    This procedure creates a claim for accruals that meet the fund
2611 --    utilization search criteria and initiates settlement of the claim.
2612 --
2613 -- PARAMETERS
2614 --    p_api_version
2615 --    p_init_msg_list
2616 --    p_commit
2617 --    p_validation_level
2618 --    p_claim_rec
2619 --    p_funds_util_flt
2620 --    x_return_status
2621 --    x_msg_count
2622 --    x_msg_data
2623 -- NOTES
2624 ---------------------------------------------------------------------
2625 PROCEDURE Pay_Claim_For_Accruals(
2626     p_api_version            IN    NUMBER
2627    ,p_init_msg_list          IN    VARCHAR2 := FND_API.g_false
2628    ,p_commit                 IN    VARCHAR2 := FND_API.g_false
2629    ,p_validation_level       IN    NUMBER   := FND_API.g_valid_level_full
2630    ,x_return_status          OUT NOCOPY   VARCHAR2
2631    ,x_msg_data               OUT NOCOPY   VARCHAR2
2632    ,x_msg_count              OUT NOCOPY   NUMBER
2633    ,p_claim_rec              IN    claim_rec_type
2634    ,p_funds_util_flt         IN    funds_util_flt_type
2635    ,x_claim_id               OUT NOCOPY   NUMBER
2636 )
2637 IS
2638 l_api_version                CONSTANT NUMBER       := 1.0;
2639 l_api_name                   CONSTANT VARCHAR2(30) := 'Pay_Claim_For_Accruals';
2640 l_full_name                  CONSTANT VARCHAR2(60) := G_PKG_NAME||'.'||l_api_name;
2641 l_return_status                       VARCHAR2(1);
2642 
2643 l_claim_rec                           OZF_Claim_PVT.claim_rec_type;
2644 l_funds_util_flt                      OZF_Claim_Accrual_PVT.funds_util_flt_type;
2645 
2646 BEGIN
2647    -- Standard Start of API savepoint
2648    SAVEPOINT Pay_Claim_For_Accruals;
2649 
2650    IF G_DEBUG THEN
2651       OZF_Utility_PVT.debug_message(l_full_name||': start');
2652    END IF;
2653 
2654    -- Standard call to check for call compatibility.
2655    IF NOT FND_API.Compatible_API_Call ( l_api_version,
2656                                         p_api_version,
2657                                         l_api_name,
2658                                         G_PKG_NAME ) THEN
2659       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2660    END IF;
2661 
2662    -- Initialize message list if p_init_msg_list is set to TRUE.
2663    IF FND_API.to_Boolean( p_init_msg_list ) THEN
2664       FND_MSG_PUB.initialize;
2665    END IF;
2666 
2667    -- Initialize API return status to SUCCESS
2668    x_return_status := FND_API.G_RET_STS_SUCCESS;
2669 
2670    ------------------------------------------
2671    -- 1. Default and derive column valude  --
2672    ------------------------------------------
2673    l_claim_rec.claim_type_id                := p_claim_rec.claim_type_id;
2674    l_claim_rec.claim_date                   := p_claim_rec.claim_date;
2675    l_claim_rec.due_date                     := p_claim_rec.due_date;
2676    l_claim_rec.gl_date                      := p_claim_rec.gl_date;
2677    l_claim_rec.owner_id                     := p_claim_rec.owner_id;
2678    l_claim_rec.amount                       := p_claim_rec.amount;
2679    l_claim_rec.currency_code                := p_claim_rec.currency_code;
2680    l_claim_rec.exchange_rate_type           := p_claim_rec.exchange_rate_type;
2681    l_claim_rec.exchange_rate_date           := p_claim_rec.exchange_rate_date;
2682    l_claim_rec.exchange_rate                := p_claim_rec.exchange_rate;
2683    l_claim_rec.set_of_books_id              := p_claim_rec.set_of_books_id;
2684    l_claim_rec.source_object_id             := p_claim_rec.source_object_id;
2685    l_claim_rec.source_object_class          := p_claim_rec.source_object_class;
2686    l_claim_rec.source_object_type_id        := p_claim_rec.source_object_type_id;
2687    l_claim_rec.source_object_number         := p_claim_rec.source_object_number;
2688    l_claim_rec.cust_account_id              := p_claim_rec.cust_account_id;
2689    l_claim_rec.cust_billto_acct_site_id     := p_claim_rec.cust_billto_acct_site_id;
2690    l_claim_rec.cust_shipto_acct_site_id     := p_claim_rec.cust_shipto_acct_site_id;
2691    l_claim_rec.related_cust_account_id      := p_claim_rec.related_cust_account_id;
2692    l_claim_rec.reason_code_id               := p_claim_rec.reason_code_id;
2693    l_claim_rec.reason_type                  := p_claim_rec.reason_type;
2694    l_claim_rec.status_code                  := p_claim_rec.status_code;
2695    l_claim_rec.user_status_id               := p_claim_rec.user_status_id;
2696    l_claim_rec.sales_rep_id                 := p_claim_rec.sales_rep_id;
2697    l_claim_rec.collector_id                 := p_claim_rec.collector_id;
2698    l_claim_rec.contact_id                   := p_claim_rec.contact_id;
2699    l_claim_rec.broker_id                    := p_claim_rec.broker_id;
2700    l_claim_rec.customer_ref_date            := p_claim_rec.customer_ref_date;
2701    l_claim_rec.customer_ref_number          := p_claim_rec.customer_ref_number;
2702    l_claim_rec.comments                     := p_claim_rec.comments;
2703    l_claim_rec.attribute_category           := p_claim_rec.attribute_category;
2704    l_claim_rec.attribute1                   := p_claim_rec.attribute1;
2705    l_claim_rec.attribute2                   := p_claim_rec.attribute2;
2706    l_claim_rec.attribute3                   := p_claim_rec.attribute3;
2707    l_claim_rec.attribute4                   := p_claim_rec.attribute4;
2708    l_claim_rec.attribute5                   := p_claim_rec.attribute5;
2709    l_claim_rec.attribute6                   := p_claim_rec.attribute6;
2710    l_claim_rec.attribute7                   := p_claim_rec.attribute7;
2711    l_claim_rec.attribute8                   := p_claim_rec.attribute8;
2712    l_claim_rec.attribute9                   := p_claim_rec.attribute9;
2713    l_claim_rec.attribute10                  := p_claim_rec.attribute10;
2714    l_claim_rec.attribute11                  := p_claim_rec.attribute11;
2715    l_claim_rec.attribute12                  := p_claim_rec.attribute12;
2716    l_claim_rec.attribute13                  := p_claim_rec.attribute13;
2717    l_claim_rec.attribute14                  := p_claim_rec.attribute14;
2718    l_claim_rec.attribute15                  := p_claim_rec.attribute15;
2719    l_claim_rec.org_id                       := p_claim_rec.org_id;
2720    l_claim_rec.write_off_flag		    := p_claim_rec.write_off_flag;
2721    l_claim_rec.write_off_threshold_amount   := p_claim_rec.write_off_threshold_amount;
2722    l_claim_rec.under_write_off_threshold    := p_claim_rec.under_write_off_threshold;
2723    l_claim_rec.customer_reason		    := p_claim_rec.customer_reason;
2724    l_claim_rec.ship_to_cust_account_id	    := p_claim_rec.ship_to_cust_account_id;
2725    l_claim_rec.amount_applied		    := p_claim_rec.amount_applied;
2726    l_claim_rec.applied_receipt_id	    := p_claim_rec.applied_receipt_id;
2727    l_claim_rec.applied_receipt_number	    := p_claim_rec.applied_receipt_number;
2728    l_claim_rec.wo_rec_trx_id		    := p_claim_rec.wo_rec_trx_id;
2729    l_claim_rec.group_claim_id		    := p_claim_rec.group_claim_id;
2730    l_claim_rec.appr_wf_item_key		    := p_claim_rec.appr_wf_item_key;
2731    l_claim_rec.cstl_wf_item_key		    := p_claim_rec.cstl_wf_item_key;
2732    l_claim_rec.batch_type		    := p_claim_rec.batch_type;
2733    -- Fix for Bug 8501176
2734    l_claim_rec.claim_number		    := p_claim_rec.claim_number;
2735 
2736 
2737    l_funds_util_flt.fund_id                     := p_funds_util_flt.fund_id;
2738    l_funds_util_flt.activity_type               := p_funds_util_flt.activity_type;
2739    l_funds_util_flt.activity_id                 := p_funds_util_flt.activity_id;
2740    l_funds_util_flt.activity_product_id         := p_funds_util_flt.activity_product_id;
2741    l_funds_util_flt.offer_type                  := p_funds_util_flt.offer_type;
2742    l_funds_util_flt.document_class              := p_funds_util_flt.document_class;
2743    l_funds_util_flt.document_id                 := p_funds_util_flt.document_id;
2744    l_funds_util_flt.product_level_type          := p_funds_util_flt.product_level_type;
2745    l_funds_util_flt.product_id                  := p_funds_util_flt.product_id;
2746    l_funds_util_flt.reference_type              := p_funds_util_flt.reference_type;
2747    l_funds_util_flt.reference_id                := p_funds_util_flt.reference_id;
2748    l_funds_util_flt.utilization_type            := p_funds_util_flt.utilization_type;
2749    l_funds_util_flt.cust_account_id             := p_funds_util_flt.cust_account_id;
2750    l_funds_util_flt.relationship_type           := p_funds_util_flt.relationship_type;
2751    l_funds_util_flt.related_cust_account_id     := p_funds_util_flt.related_cust_account_id;
2752    l_funds_util_flt.buy_group_cust_account_id   := p_funds_util_flt.buy_group_cust_account_id;
2753    l_funds_util_flt.select_cust_children_flag   := p_funds_util_flt.select_cust_children_flag;
2754    l_funds_util_flt.pay_to_customer             := p_funds_util_flt.pay_to_customer;
2755    l_funds_util_flt.prorate_earnings_flag       := p_funds_util_flt.prorate_earnings_flag;
2756    l_funds_util_flt.end_date                    := p_funds_util_flt.end_date;
2757    l_funds_util_flt.total_amount                := p_funds_util_flt.total_amount;
2758    l_funds_util_flt.total_units                 := p_funds_util_flt.total_units;
2759    l_funds_util_flt.quantity                    := p_funds_util_flt.quantity;
2760    l_funds_util_flt.uom_code                    := p_funds_util_flt.uom_code;
2761     -- Added For Bug 8402328
2762    l_funds_util_flt.utilization_id              := p_funds_util_flt.utilization_id;
2763    l_funds_util_flt.run_mode			:= 'API'; --added run mode to fix Bug 13418731 , while system is finding accruals for customer, it is checking for run_mode as not null, so it is passed
2764 
2765 
2766    ------------------------------------------
2767    -- 2. Call OZF_CLAIM_ACCRUAL_PVT
2768    ------------------------------------------
2769    OZF_Claim_Accrual_PVT.Pay_Claim_For_Accruals(
2770      p_api_version         => l_api_version
2771     ,p_init_msg_list       => FND_API.g_false
2772     ,p_commit              => FND_API.g_false
2773     ,p_validation_level    => FND_API.g_valid_level_full
2774 
2775     ,x_return_status       => l_return_status
2776     ,x_msg_count           => x_msg_count
2777     ,x_msg_data            => x_msg_data
2778 
2779     ,p_claim_rec           => l_claim_rec
2780     ,p_funds_util_flt      => l_funds_util_flt
2781 
2782     ,x_claim_id            => x_claim_id
2783    );
2784    IF l_return_status = FND_API.g_ret_sts_error THEN
2785       RAISE FND_API.g_exc_error;
2786    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2787       RAISE FND_API.g_exc_unexpected_error;
2788    END IF;
2789 
2790    -- Standard check for p_commit
2791    IF FND_API.to_Boolean(p_commit) THEN
2792       COMMIT WORK;
2793    END IF;
2794 
2795    IF G_DEBUG THEN
2796       OZF_Utility_PVT.debug_message(l_full_name ||': end');
2797    END IF;
2798 
2799    -- Standard call to get message count and if count is 1, get message info.
2800    FND_MSG_PUB.Count_And_Get(
2801          p_count          =>   x_msg_count,
2802          p_data           =>   x_msg_data
2803    );
2804 
2805 EXCEPTION
2806    WHEN FND_API.G_EXC_ERROR THEN
2807       ROLLBACK TO Pay_Claim_For_Accruals;
2808       x_return_status := FND_API.G_RET_STS_ERROR;
2809       FND_MSG_PUB.Count_And_Get (
2810          p_encoded => FND_API.G_FALSE,
2811          p_count   => x_msg_count,
2812          p_data    => x_msg_data
2813       );
2814 
2815    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2816       ROLLBACK TO Pay_Claim_For_Accruals;
2817       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2818       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2819          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2820          FND_MSG_PUB.add;
2821       END IF;
2822       FND_MSG_PUB.Count_And_Get (
2823          p_encoded => FND_API.G_FALSE,
2824          p_count   => x_msg_count,
2825          p_data    => x_msg_data
2826       );
2827 
2828    WHEN OTHERS THEN
2829       ROLLBACK TO Pay_Claim_For_Accruals;
2830       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2831       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2832          FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_CRE_DEDU_ERR');
2833          FND_MSG_PUB.add;
2834       END IF;
2835       FND_MSG_PUB.Count_And_Get (
2836          p_encoded => FND_API.G_FALSE,
2837          p_count   => x_msg_count,
2838          p_data    => x_msg_data
2839       );
2840 END Pay_Claim_For_Accruals;
2841 
2842 --//TPM Integration ER
2843 ---------------------------------------------------------------------
2844 -- PROCEDURE
2845 --    Create_split_claims
2846 --
2847 -- PURPOSE
2848 --    This procedure Can be used to split claims
2849 --
2850 -- PARAMETERS
2851 --    p_child_claim_tbl
2852 --    x_return_status
2853 --
2854 --
2855 -- HISTORY
2856 -- 09/19/2011  BKUNJAN   Created for ER 12985686
2857 --
2858 -- NOTES
2859 ---------------------------------------------------------------------
2860 
2861 PROCEDURE Create_split_claims(
2862 	  p_api_version          IN    NUMBER
2863 	, p_init_msg_list        IN    VARCHAR2 := FND_API.G_FALSE
2864 	, p_commit               IN    VARCHAR2 := FND_API.G_FALSE
2865 	, p_validation_level     IN    NUMBER   := FND_API.G_VALID_LEVEL_FULL
2866 	, x_return_status        OUT   NOCOPY   VARCHAR2
2867 	, x_msg_data             OUT   NOCOPY   VARCHAR2
2868 	, x_msg_count            OUT   NOCOPY   NUMBER
2869 	, p_parent_claim_id	 IN    NUMBER
2870 	, px_child_claim_tbl     IN OUT NOCOPY split_claim_tbl_type
2871 	)
2872 IS
2873 
2874 l_api_version       NUMBER := 1.0;
2875 l_api_name          VARCHAR2(30) := 'Create_split_claims';
2876 l_child_claim_tbl   OZF_SPLIT_CLAIM_PVT.child_claim_tbl_type;
2877 l_return_status     VARCHAR2(1);
2878 l_msg_data          VARCHAR2(2000);
2879 l_msg_count         NUMBER;
2880 
2881 l_claim_id          NUMBER;
2882 l_parent_objver_no  NUMBER;
2883 l_claim_reason      NUMBER;
2884 l_claim_type        NUMBER;
2885 
2886 l_claim_line_id     NUMBER;
2887 l_amount            NUMBER;
2888 l_line_sum_amount   NUMBER;
2889 l_line_table        VARCHAR2(2000);
2890 l_status_code       VARCHAR2(30);
2891 l_amount_remaining  NUMBER;
2892 l_sum_split_amt     NUMBER;
2893 
2894 CURSOR parent_claim_id_csr(cv_parent_claim_id IN NUMBER) IS
2895    SELECT claim_id,object_version_number,status_code,amount_remaining
2896    FROM   ozf_claims_all
2897    WHERE  claim_id = cv_parent_claim_id;
2898 
2899 CURSOR claim_type_id_csr(cv_claim_type_id IN NUMBER) IS
2900    SELECT claim_type_id
2901    FROM   ozf_claim_types_vl
2902    WHERE  claim_type_id = cv_claim_type_id
2903    AND NVL(end_date,SYSDATE) >= SYSDATE;
2904 
2905 CURSOR reason_code_id_csr(cv_reason_code_id IN NUMBER) IS
2906    SELECT reason_code_id
2907    FROM   ozf_reason_codes_vl
2908    WHERE  reason_code_id = cv_reason_code_id
2909    AND NVL(end_date_active,SYSDATE) >= SYSDATE;
2910 
2911 CURSOR claim_lines_cur(cv_parent_claim_id IN NUMBER
2912                       ,cv_claim_line_id   IN NUMBER)IS
2913    SELECT claim_line_id,amount
2914      FROM ozf_claim_lines_all
2915     WHERE claim_id      = cv_parent_claim_id
2916       AND claim_line_id = cv_claim_line_id;
2917 BEGIN
2918 -- Standard Start of API savepoint
2919   SAVEPOINT Create_split_claims;
2920 
2921 -- Standard call to check for call compatibility.
2922   IF NOT FND_API.Compatible_API_Call ( l_api_version
2923                                      , p_api_version
2924                                      , l_api_name
2925                                      , G_PKG_NAME
2926                                      )
2927   THEN
2928      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2929   END IF;
2930 
2931  IF G_DEBUG THEN
2932     OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || ' start');
2933  END IF;
2934 
2935 -- Initialize message list if p_init_msg_list is set to TRUE.
2936 
2937   IF FND_API.to_Boolean( p_init_msg_list )
2938   THEN
2939      FND_MSG_PUB.initialize;
2940   END IF;
2941 
2942 -- Initialize API return status to SUCCESS
2943   x_return_status := FND_API.G_RET_STS_SUCCESS;
2944 
2945 --//API Body
2946 --========================================================================
2947 
2948   --//Validations
2949   --//Parent claim Id validation
2950   IF p_parent_claim_id = FND_API.g_miss_num OR p_parent_claim_id IS NULL THEN
2951      IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
2952 	FND_MESSAGE.Set_Name('OZF','OZF_NO_CLAIM_ID');
2953 	FND_MSG_PUB.Add;
2954      END IF;
2955      RAISE FND_API.G_EXC_ERROR;
2956   ELSE
2957      OPEN parent_claim_id_csr(p_parent_claim_id);
2958      FETCH parent_claim_id_csr INTO l_claim_id,l_parent_objver_no,l_status_code,l_amount_remaining;
2959      CLOSE parent_claim_id_csr;
2960 
2961      IF l_claim_id IS NULL THEN
2962 	IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
2963            FND_MESSAGE.Set_Name('OZF','OZF_INVALID_CLAIM_ID');
2964            FND_MSG_PUB.Add;
2965 	END IF;
2966 	RAISE FND_API.G_EXC_ERROR;
2967       END IF;
2968    END IF;
2969 
2970    IF l_status_code <> 'OPEN' THEN
2971       IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
2972          FND_MESSAGE.Set_Name('OZF','OZF_CLAIM_WRONG_SPLIT_STATUS');
2973          FND_MSG_PUB.Add;
2974       END IF;
2975       RAISE FND_API.G_EXC_ERROR;
2976    END IF;
2977 
2978    --//Parent amount and child amount validations
2979    IF px_child_claim_tbl.COUNT > 0 THEN
2980        FOR i IN px_child_claim_tbl.FIRST..px_child_claim_tbl.LAST LOOP
2981           l_sum_split_amt := NVL(l_sum_split_amt,0) + NVL(px_child_claim_tbl(i).amount,0);
2982        END LOOP;
2983 
2984        IF l_sum_split_amt > l_amount_remaining THEN
2985           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
2986              FND_MESSAGE.Set_Name('OZF','OZF_CLAIM_SPLT_NG_NOPM');
2987 	     --//Failed to split the claim: The amount of deduction or claim should be positive after the split.
2988              FND_MSG_PUB.Add;
2989           END IF;
2990           RAISE FND_API.G_EXC_ERROR;
2991        END IF;
2992    END IF;
2993 
2994   --//Child claim table validations.
2995   IF px_child_claim_tbl.COUNT > 0 THEN
2996     FOR i IN px_child_claim_tbl.FIRST..px_child_claim_tbl.LAST
2997     LOOP
2998        IF px_child_claim_tbl(i).amount = FND_API.g_miss_num OR px_child_claim_tbl(i).amount IS NULL THEN
2999           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
3000              FND_MESSAGE.Set_Name('OZF','OZF_NO_SPLIT_CLAIM_AMT');
3001 	     --//Split amount is mandatory to create a split claim.
3002              FND_MSG_PUB.Add;
3003           END IF;
3004           RAISE FND_API.G_EXC_ERROR;
3005        END IF;
3006 
3007 
3008        --//Claim type Validation
3009        IF px_child_claim_tbl(i).claim_type_id <> FND_API.g_miss_num AND px_child_claim_tbl(i).claim_type_id IS NOT NULL THEN
3010           OPEN claim_type_id_csr(px_child_claim_tbl(i).claim_type_id);
3011 	  FETCH claim_type_id_csr INTO l_claim_type;
3012 	  CLOSE claim_type_id_csr;
3013 
3014 	  IF l_claim_type IS NULL THEN
3015              IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
3016                 FND_MESSAGE.Set_Name('OZF','OZF_CLAIM_CLAIM_TYPE_NOT_IN_DB');
3017                 FND_MSG_PUB.Add;
3018              END IF;
3019              RAISE FND_API.G_EXC_ERROR;
3020           END IF;
3021        END IF;
3022 
3023         --//Claim Reason Validation
3024        IF px_child_claim_tbl(i).reason_code_id <> FND_API.g_miss_num AND px_child_claim_tbl(i).reason_code_id IS NOT NULL THEN
3025           OPEN reason_code_id_csr(px_child_claim_tbl(i).reason_code_id);
3026 	  FETCH reason_code_id_csr INTO l_claim_reason;
3027 	  CLOSE reason_code_id_csr;
3028 
3029 	  IF l_claim_reason IS NULL THEN
3030              IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
3031                 FND_MESSAGE.Set_Name('OZF','OZF_CLAIM_REASON_CD_NOT_IN_DB');
3032                 FND_MSG_PUB.Add;
3033              END IF;
3034              RAISE FND_API.G_EXC_ERROR;
3035           END IF;
3036        END IF;
3037 
3038        --//Claim Lines validation
3039       IF px_child_claim_tbl(i).claim_line_id_tbl.COUNT > 0 THEN
3040        	 l_line_sum_amount := 0;
3041 	 l_line_table      := NULL;
3042 	 l_claim_line_id   := NULL;
3043 	 l_amount          := 0;
3044 
3045          FOR j IN px_child_claim_tbl(i).claim_line_id_tbl.FIRST..px_child_claim_tbl(i).claim_line_id_tbl.LAST
3046          LOOP
3047 	    OPEN claim_lines_cur(p_parent_claim_id,px_child_claim_tbl(i).claim_line_id_tbl(j).claim_line_id);
3048             FETCH claim_lines_cur INTO l_claim_line_id,l_amount;
3049 	    CLOSE claim_lines_cur;
3050 
3051 	    IF G_DEBUG THEN
3052 	       OZF_UTILITY_PVT.debug_message('Claim line ID :'|| px_child_claim_tbl(i).claim_line_id_tbl(j).claim_line_id);
3053 	       OZF_UTILITY_PVT.debug_message('l_claim_line_id :'||l_claim_line_id);
3054 	      OZF_UTILITY_PVT.debug_message('l_amount :'|| l_amount);
3055             END IF;
3056 
3057 	    IF l_claim_line_id IS NULL THEN
3058 	       IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
3059                   FND_MESSAGE.Set_Name('OZF','OZF_INVALID_CLAIM_LINE_ID');
3060 		  FND_MESSAGE.set_token('CLAIMLINEID', px_child_claim_tbl(i).claim_line_id_tbl(j).claim_line_id, false);
3061 		  --//Claim line id (l_claim_line_tbl(j).claim_line_id ) provided is invalid. Please enter a valid claim line id.
3062                   FND_MSG_PUB.Add;
3063                END IF;
3064                RAISE FND_API.G_EXC_ERROR;
3065             ELSE
3066 	       l_line_table := l_line_table ||','|| l_claim_line_id;
3067                l_line_sum_amount := NVL(l_line_sum_amount,0) + l_amount;
3068 	    END IF;
3069          END LOOP;
3070 
3071        END IF;
3072 
3073 	IF l_line_sum_amount > px_child_claim_tbl(i).amount THEN
3074            IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
3075               FND_MESSAGE.Set_Name('OZF','OZF_SPLIT_LINE_AMT');
3076 	      FND_MESSAGE.set_token('AMOUNT', px_child_claim_tbl(i).amount, false);
3077 	      FND_MESSAGE.set_token('LINEAMOUNT', l_line_sum_amount, false);
3078               FND_MSG_PUB.Add;
3079            END IF;
3080            RAISE FND_API.G_EXC_ERROR;
3081 	END IF;
3082 
3083       l_line_table := TRIM(BOTH ',' FROM l_line_table);
3084 
3085       l_child_claim_tbl(i).parent_claim_id       := p_parent_claim_id;
3086       l_child_claim_tbl(i).parent_object_ver_num := l_parent_objver_no;
3087       l_child_claim_tbl(i).claim_type_id         := px_child_claim_tbl(i).claim_type_id;
3088       l_child_claim_tbl(i).reason_code_id        := px_child_claim_tbl(i).reason_code_id;
3089       l_child_claim_tbl(i).amount                := px_child_claim_tbl(i).amount;
3090       l_child_claim_tbl(i).line_table		 := l_line_table;
3091     END LOOP;
3092 
3093     OZF_SPLIT_CLAIM_PVT.create_child_claim_tbl
3094 		( p_api_version     => l_api_version
3095 	       , p_init_msg_list    => p_init_msg_list
3096 	       , p_commit           => p_commit
3097 	       , p_validation_level => p_validation_level
3098 	       , x_return_status    => l_return_status
3099 	       , x_msg_data         => l_msg_data
3100 	       , x_msg_count        => l_msg_count
3101 	       , px_child_claim_tbl => l_child_claim_tbl
3102 	       , p_mode             => 'AUTO'
3103 	       );
3104 
3105 -- Check return status from the above procedure call
3106      IF x_return_status = FND_API.G_RET_STS_ERROR then
3107         RAISE FND_API.G_EXC_ERROR;
3108      ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
3109         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3110      END IF;
3111 
3112      FOR k IN px_child_claim_tbl.FIRST..px_child_claim_tbl.LAST LOOP
3113         px_child_claim_tbl(k).split_claim_id := l_child_claim_tbl(k).child_claim_id;
3114      END LOOP;
3115  ELSE
3116     IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
3117        FND_MESSAGE.Set_Name('OZF','OZF_NO_SPLIT_CLAIM_AMT');
3118        --//Split amount is mandatory to create a split claim.
3119        FND_MSG_PUB.Add;
3120     END IF;
3121     RAISE FND_API.G_EXC_ERROR;
3122  END IF;
3123 
3124 --========================================================================
3125 --// Commit the process
3126    IF G_DEBUG THEN
3127       OZF_UTILITY_PVT.debug_message('Public API: '|| l_api_name||' End');
3128    END IF;
3129 
3130    IF FND_API.to_Boolean( p_commit ) THEN
3131       COMMIT WORK;
3132    END IF;
3133 
3134    -- Standard call to get message count and if count is 1, get message info.
3135   FND_MSG_PUB.Count_And_Get ( p_encoded  => FND_API.G_FALSE
3136                             , p_count    => x_msg_count
3137                             , p_data     => x_msg_data
3138                             );
3139 
3140 EXCEPTION
3141 WHEN FND_API.G_EXC_ERROR THEN
3142    ROLLBACK TO Create_split_claims;
3143    x_return_status := FND_API.G_RET_STS_ERROR;
3144 -- Standard call to get message count and if count=1, get the message
3145    FND_MSG_PUB.Count_And_Get ( p_encoded => FND_API.G_FALSE
3146                              , p_count   => x_msg_count
3147                              , p_data    => x_msg_data
3148                              );
3149 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3150    ROLLBACK TO Create_split_claims;
3151    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3152 -- Standard call to get message count and if count=1, get the message
3153    FND_MSG_PUB.Count_And_Get ( p_encoded => FND_API.G_FALSE
3154                              , p_count   => x_msg_count
3155                              , p_data    => x_msg_data
3156                              );
3157 WHEN OTHERS THEN
3158    ROLLBACK TO Create_split_claims;
3159    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3160    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3161    THEN
3162       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3163    END IF;
3164 -- Standard call to get message count and if count=1, get the message
3165    FND_MSG_PUB.Count_And_Get ( p_encoded => FND_API.G_FALSE
3166                              , p_count   => x_msg_count
3167                              , p_data    => x_msg_data
3168                              );
3169 End Create_split_claims;
3170 
3171 ---------------------------------------------------------------------
3172 -- PROCEDURE
3173 --    Create_event
3174 --
3175 -- PURPOSE
3176 --    Public API to Create Claim SLA Event
3177 --
3178 -- PARAMETERS
3179 --    p_claim_id  : claim_id for which the event is raised.
3180 --    p_event_type_code : event_type_code for the claim.
3181 --    p_reversal_flag : Reversal flag will be used for account
3182 --                      reversal.
3183 --
3184 -- NOTES
3185 --
3186 -- HISTORY
3187 -- 09/19/2011  BKUNJAN   Created for ER 12985686
3188 ---------------------------------------------------------------------
3189 PROCEDURE Create_event(
3190     p_api_version_number         IN   NUMBER,
3191     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
3192     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
3193     p_validation_level           IN   NUMBER      := FND_API.g_valid_level_full,
3194     x_return_status              OUT  NOCOPY  VARCHAR2,
3195     x_msg_count                  OUT  NOCOPY  NUMBER,
3196     x_msg_data                   OUT  NOCOPY  VARCHAR2,
3197     p_claim_id	       	         IN   NUMBER,
3198     p_event_type_code       	 IN   VARCHAR2,
3199     p_reversal_flag       	 IN   VARCHAR2 DEFAULT NULL,
3200     x_event_id                   OUT  NOCOPY NUMBER
3201 )
3202 IS
3203 l_api_name                 CONSTANT VARCHAR2(30) := 'Create_event';
3204 l_api_version_number       CONSTANT NUMBER   := 1.0;
3205 l_event_type_code          VARCHAR2(30);
3206 l_taxfor                   VARCHAR2(2);
3207 l_settle_method_match      BOOLEAN := TRUE;
3208 l_settlement_method        VARCHAR2(30);
3209 l_claim_id                 NUMBER;
3210 l_status_code              VARCHAR2(30);
3211 l_promo_count              NUMBER;
3212 l_rev_event_class          VARCHAR2(60);
3213 l_exists		   NUMBER;
3214 l_post_to_gl               VARCHAR2(1);
3215 l_gl_rec                   OZF_GL_INTERFACE_PVT.gl_interface_rec_type;
3216 
3217 
3218 TYPE claim_event_rec_type IS RECORD (
3219    event_count     NUMBER ,
3220    reversal_flag   VARCHAR2(1));
3221 
3222 TYPE claim_event_tbl_type is TABLE OF claim_event_rec_type;
3223 
3224 l_claim_event_tbl claim_event_tbl_type;
3225 
3226 CURSOR csr_event_type_chk(cv_event_type_code IN VARCHAR2)IS
3227    SELECT event_type_code
3228    FROM xla_event_types_vl
3229    WHERE application_id    = 682
3230    AND accounting_flag     ='Y'
3231    AND enabled_flag        ='Y'
3232    AND event_type_code     = cv_event_type_code;
3233 
3234 CURSOR csr_claim_info(cv_claim_id IN NUMBER)IS
3235    SELECT claim_id
3236 	 ,status_code
3237 	 ,payment_method
3238    FROM ozf_claims_all
3239    WHERE claim_id = cv_claim_id;
3240 
3241 CURSOR csr_is_promo_claim(cv_claim_id IN NUMBER)IS
3242   SELECT COUNT(clu.claim_line_util_id)
3243    FROM ozf_claim_lines_util_all clu,
3244 	ozf_claim_lines_all cli
3245   WHERE clu.claim_line_id = cli.claim_line_id
3246     AND cli.claim_id      =  cv_claim_id;
3247 
3248 CURSOR csr_claim_dup_chk(cv_claim_id IN NUMBER)IS
3249    SELECT count(event_id),
3250 	  NVL(reversal_flag,'N')
3251    FROM ozf_xla_claim_headers
3252    WHERE claim_id = cv_claim_id
3253    GROUP BY reversal_flag;
3254 
3255 CURSOR taxfor_csr (p_claim_id IN NUMBER)IS
3256    SELECT tax_for
3257    FROM ozf_claim_sttlmnt_methods_all csm,ozf_claims_all c
3258    WHERE csm.settlement_method = c.payment_method
3259    AND c.claim_id =p_claim_id
3260    AND csm.org_id = c.org_id;
3261 
3262 CURSOR csr_rev_event_class(cv_event_type_code IN VARCHAR2) IS
3263    SELECT evl.event_class_code
3264      FROM xla_event_types_vl evl
3265     WHERE evl.application_id   = 682
3266       AND evl.event_type_code  = cv_event_type_code;
3267 
3268 CURSOR csr_chk_event_exists(cv_claim_id		IN NUMBER
3269                            ,cv_event_class_code IN VARCHAR2) IS
3270    SELECT 1
3271      FROM xla_event_types_vl evl,
3272           ozf_xla_claim_headers clh
3273     WHERE evl.application_id   = 682
3274       AND evl.event_type_code  = clh.event_type_code
3275       AND clh.claim_id         = cv_claim_id
3276       AND evl.event_class_code = cv_event_class_code;
3277 
3278 CURSOR claim_gl_posting_csr(p_id in number) IS
3279 SELECT NVL(osp.post_to_gl, 'F')
3280 FROM   ozf_sys_parameters_all osp
3281 ,      ozf_claims_all oc
3282 WHERE  osp.org_id = oc.org_id
3283 AND    oc.claim_id = p_id;
3284 
3285 BEGIN
3286    -- Standard Start of API savepoint
3287    SAVEPOINT Create_event;
3288    -- Standard call to check for call compatibility.
3289    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
3290       p_api_version_number,
3291       l_api_name,
3292       G_PKG_NAME)
3293    THEN
3294       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3295    END IF;
3296 
3297    -- Initialize message list if p_init_msg_list is set to TRUE.
3298    IF FND_API.to_Boolean( p_init_msg_list ) THEN
3299       FND_MSG_PUB.initialize;
3300    END IF;
3301 
3302    -- Debug Message
3303    IF G_DEBUG THEN
3304       OZF_UTILITY_PVT.debug_message('Public API: ' || l_api_name || ' start');
3305    END IF;
3306 
3307    -- Initialize API return status to SUCCESS
3308    x_return_status := FND_API.G_RET_STS_SUCCESS;
3309 
3310    --//API Body
3311    --========================================================================
3312    IF G_DEBUG THEN
3313       OZF_UTILITY_PVT.debug_message('--------- Create_Event ----------');
3314       OZF_UTILITY_PVT.debug_message('event_type_code   : '||p_event_type_code);
3315       OZF_UTILITY_PVT.debug_message('Claim ID          : '||p_claim_id);
3316       OZF_UTILITY_PVT.debug_message('Reversal Flag     : '||p_reversal_flag);
3317    END IF;
3318 
3319    --//Validations
3320    --//Validate event_type_code passed
3321      OPEN csr_claim_info(p_claim_id);
3322      FETCH csr_claim_info  INTO l_claim_id,l_status_code,l_settlement_method;
3323      CLOSE csr_claim_info;
3324 
3325      IF G_DEBUG THEN
3326         OZF_UTILITY_PVT.debug_message('l_claim_id	     : '||l_claim_id);
3327         OZF_UTILITY_PVT.debug_message('l_status_code         : '||l_status_code);
3328         OZF_UTILITY_PVT.debug_message('l_settlement_method   : '||l_settlement_method);
3329      END IF;
3330 
3331      IF l_claim_id IS NULL THEN
3332         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3333 	   FND_MESSAGE.set_name('OZF', 'OZF_INVALID_CLAIM_ID');
3334 	   --//Invalid Claim Id. Please provide a valid Claim ID
3335 	   FND_MSG_PUB.add;
3336         END IF;
3337         x_return_status := fnd_api.g_ret_sts_error;
3338         RETURN;
3339      END IF;
3340 
3341      IF l_status_code NOT IN ('PENDING_CLOSE','CLOSED') THEN
3342         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3343 	   FND_MESSAGE.set_name('OZF', 'OZF_INVALID_STATUS_CODE');
3344 	   --//Claim status should be Pending Close or Closed to create SLA event
3345 	   FND_MSG_PUB.add;
3346         END IF;
3347         x_return_status := fnd_api.g_ret_sts_error;
3348         RETURN;
3349      END IF;
3350 
3351      --//Validate event type code with claim payment method.
3352      IF p_event_type_code = 'SETTLE_BY_CREDIT_MEMO' AND l_settlement_method <> 'CREDIT_MEMO' THEN
3353         l_settle_method_match := FALSE;
3354      ELSIF p_event_type_code = 'SETTLE_BY_DEBIT_MEMO'  AND l_settlement_method <> 'DEBIT_MEMO' THEN
3355         l_settle_method_match := FALSE;
3356      ELSIF p_event_type_code = 'SETTLE_BY_AP_INVOICE' AND l_settlement_method NOT IN ('CHECK', 'WIRE', 'EFT','AP_DEFAULT')   THEN
3357         l_settle_method_match := FALSE;
3358      ELSIF p_event_type_code = 'SETTLE_BY_AP_DEBIT' AND l_settlement_method <> 'AP_DEBIT' THEN
3359         l_settle_method_match := FALSE;
3360      ELSIF p_event_type_code = 'SETTLE_INTERNAL_SHIP_DEBIT' AND l_settlement_method <> 'ACCOUNTING_ONLY' THEN
3361         l_settle_method_match := FALSE;
3362      ELSIF p_event_type_code = 'SETTLE_BY_AR_AP_NETTING' AND l_settlement_method <> 'CONTRA_CHARGE'  THEN
3363         l_settle_method_match := FALSE;
3364      END IF;
3365 
3366      IF NOT l_settle_method_match THEN
3367         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3368 	   FND_MESSAGE.set_name('OZF', 'OZF_INCORRECT_EVENT_TYPE');
3369 	   --// Please use correct event type code for this settlement method.
3370 	   FND_MSG_PUB.add;
3371         END IF;
3372         x_return_status := fnd_api.g_ret_sts_error;
3373         RETURN;
3374 	IF G_DEBUG THEN
3375 	   OZF_UTILITY_PVT.debug_message('l_settle_method_match FALSE');
3376         END IF;
3377      END IF;
3378 
3379      l_settle_method_match := TRUE;
3380      --if claim has custom settlement method
3381      IF l_settlement_method  NOT IN ('CREDIT_MEMO', 'DEBIT_MEMO', 'CHECK', 'WIRE', 'EFT','AP_DEFAULT', 'AP_DEBIT', 'ACCOUNTING_ONLY', 'CONTRA_CHARGE' ) THEN
3382 
3383         OPEN taxfor_csr(p_claim_id);
3384         FETCH taxfor_csr INTO l_taxfor;
3385         CLOSE taxfor_csr;
3386 
3387         --//Fix for bug 13481137 - Added CLAIM_SETTLEMENT_REVERSAL
3388         IF p_event_type_code  NOT IN ('SETTLE_BY_AR_CUSTOM' , 'SETTLE_BY_AP_CUSTOM','CLAIM_SETTLEMENT_REVERSAL') THEN
3389 	   l_settle_method_match := FALSE;
3390         ELSIF p_event_type_code = 'SETTLE_BY_AR_CUSTOM' AND l_taxfor <> 'AR' THEN
3391 	   l_settle_method_match := FALSE;
3392         ELSIF p_event_type_code = 'SETTLE_BY_AP_CUSTOM' AND l_taxfor <> 'AP' THEN
3393 	   l_settle_method_match := FALSE;
3394         END IF;
3395      END IF;
3396 
3397      IF NOT l_settle_method_match  THEN
3398         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3399 	   FND_MESSAGE.set_name('OZF', 'OZF_INCORRECT_EVENT_TYPE');
3400 	   --// Please use correct event type code for this settlement method.
3401 	   FND_MSG_PUB.add;
3402         END IF;
3403         x_return_status := fnd_api.g_ret_sts_error;
3404         RETURN;
3405      END IF;
3406 
3407      --//Event type code validations
3408      OPEN csr_event_type_chk(p_event_type_code);
3409      FETCH csr_event_type_chk INTO l_event_type_code;
3410      CLOSE csr_event_type_chk;
3411 
3412      IF l_event_type_code IS NULL THEN
3413         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3414            FND_MESSAGE.set_name('OZF', 'OZF_INVALID_EVENT_TYPE_CODE');
3415            --//Event type code provided is invalid.Please provide a valid event type code.
3416            FND_MSG_PUB.add;
3417         END IF;
3418         x_return_status := fnd_api.g_ret_sts_error;
3419         RETURN;
3420      END IF;
3421 
3422      OPEN claim_gl_posting_csr(p_claim_id);
3423      FETCH claim_gl_posting_csr INTO l_post_to_gl;
3424      CLOSE claim_gl_posting_csr;
3425 
3426      IF l_post_to_gl = 'T' THEN
3427         IF G_DEBUG THEN
3428            OZF_UTILITY_PVT.debug_message('Post to GL is enabled');
3429         END IF;
3430      ELSE
3431         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3432 	   FND_MESSAGE.set_name('OZF', 'OZF_BAD_POST_TO_GL');
3433 	   --//Invalid Post to GL flag.
3434 	   FND_MSG_PUB.add;
3435         END IF;
3436         x_return_status := fnd_api.g_ret_sts_error;
3437         RETURN;
3438      END IF;
3439 
3440 
3441      --//Promotional Claim Check
3442      OPEN csr_is_promo_claim(p_claim_id);
3443      FETCH csr_is_promo_claim  INTO l_promo_count;
3444      CLOSE csr_is_promo_claim;
3445 
3446      IF l_promo_count = 0 THEN
3447         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3448 	   FND_MESSAGE.set_name('OZF', 'OZF_PROMO_CLAIM_REQD');
3449 	   --//Only promotional claims are eligible to create SLA event.
3450 	   FND_MSG_PUB.add;
3451         END IF;
3452         x_return_status := fnd_api.g_ret_sts_error;
3453         RETURN;
3454      END IF;
3455 
3456      IF NVL(p_reversal_flag,'N') NOT IN ('Y','N') THEN
3457         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3458 	   FND_MESSAGE.set_name('OZF', 'OZF_INVALID_REVERSAL_FLAG');
3459 	   --//Value of Reversal flag provided is invalid.Please provide a valid value.
3460 	   FND_MSG_PUB.add;
3461         END IF;
3462         x_return_status := fnd_api.g_ret_sts_error;
3463         RETURN;
3464      END IF;
3465 
3466      IF p_event_type_code = 'CLAIM_SETTLEMENT_REVERSAL' AND NVL(p_reversal_flag,'N') <> 'Y' THEN
3467        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3468 	  FND_MESSAGE.set_name('OZF', 'OZF_INVALID_RV_FLAG_FOR_EVT');
3469 	  --// Reversal flag should be Y for event type code CLAIM_SETTLEMENT_REVERSAL.
3470 	  FND_MSG_PUB.add;
3471        END IF;
3472        x_return_status := fnd_api.g_ret_sts_error;
3473        RETURN;
3474      END IF;
3475 
3476 
3477      IF p_reversal_flag = 'Y' THEN
3478         IF p_event_type_code IN('SETTLE_BY_CREDIT_MEMO'
3479 			       ,'SETTLE_BY_DEBIT_MEMO'
3480 			       ,'SETTLE_BY_AP_INVOICE'
3481 			       ,'SETTLE_BY_AP_DEBIT'
3482 			       ,'SETTLE_INTERNAL_SHIP_DEBIT'
3483 			       ,'SETTLE_BY_AR_AP_NETTING'
3484 			       ,'SETTLE_BY_AR_CUSTOM'
3485 			       ,'SETTLE_BY_AP_CUSTOM') THEN
3486            IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3487 	      FND_MESSAGE.set_name('OZF', 'OZF_INCORRECT_REV_EVENT_TYPE');
3488 	      --// Please use correct event type code for reversal event.
3489 	      FND_MSG_PUB.add;
3490            END IF;
3491            x_return_status := fnd_api.g_ret_sts_error;
3492            RETURN;
3493         END IF;
3494 
3495 	 --//If reversal_flag is Y, check if the Reversal Event Class is same as Event Class for parent claim event.
3496         --//Get the reversal event class code
3497         OPEN csr_rev_event_class(p_event_type_code);
3498         FETCH csr_rev_event_class INTO l_rev_event_class;
3499         CLOSE csr_rev_event_class;
3500 
3501         --//check if the Reversal Event Class is same asEvent Class for parent claim event.
3502         OPEN csr_chk_event_exists(p_claim_id,l_rev_event_class);
3503         FETCH csr_chk_event_exists INTO l_exists;
3504         CLOSE csr_chk_event_exists;
3505 
3506         IF l_exists <> 1 THEN
3507            IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3508 	      FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_EVENT_MISMATCH');
3509 	      --// Reversal Event should be passed for the same Event Class as parent event.
3510 	      FND_MSG_PUB.add;
3511            END IF;
3512            x_return_status := fnd_api.g_ret_sts_error;
3513           RETURN;
3514         END IF;
3515      END IF;
3516 
3517      --//Duplicate events check
3518      /* ===============================================================
3519      Event can be created when
3520 	1. One entry in ozf_xla_claim_headers table and reversal flag is Y
3521 	2.Even number of entries in ozf_xla_claim_headers for the same claim_idand reversal flag is equel to Y
3522 
3523     =================================================================*/
3524      OPEN csr_claim_dup_chk(p_claim_id);
3525      FETCH csr_claim_dup_chk BULK COLLECT INTO l_claim_event_tbl;
3526      CLOSE csr_claim_dup_chk;
3527 
3528      IF l_claim_event_tbl.COUNT <> 0 THEN
3529         IF G_DEBUG THEN
3530            OZF_UTILITY_PVT.debug_message('l_claim_event_tbl.COUNT :'|| l_claim_event_tbl.COUNT);
3531         END IF;
3532 
3533         IF l_claim_event_tbl.COUNT = 1 AND  NVL(p_reversal_flag,'N')  <> 'Y'  THEN
3534 
3535 	   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3536 	      FND_MESSAGE.set_name('OZF', 'OZF_SLA_DUPLICATE_EVENT');
3537 	      --//SLA event is already created for this Claim.
3538 	      FND_MSG_PUB.add;
3539 	   END IF;
3540 	   x_return_status := fnd_api.g_ret_sts_error;
3541 	   RETURN;
3542         END IF;
3543 
3544 	IF l_claim_event_tbl.COUNT = 2 THEN
3545            IF l_claim_event_tbl(2).event_count = l_claim_event_tbl(1).event_count AND NVL(p_reversal_flag,'N') <> 'N' THEN
3546 	      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3547 		 FND_MESSAGE.set_name('OZF', 'OZF_SLA_DUPLICATE_EVENT');
3548 		 --//SLA event is already created for this Claim.
3549 		 FND_MSG_PUB.add;
3550 	      END IF;
3551 	      x_return_status := fnd_api.g_ret_sts_error;
3552 	      RETURN;
3553 
3554 	   ELSIF l_claim_event_tbl(2).event_count <> l_claim_event_tbl(1).event_count AND NVL(p_reversal_flag,'N') <> 'Y' THEN
3555 	      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3556 		 FND_MESSAGE.set_name('OZF', 'OZF_SLA_DUPLICATE_EVENT');
3557 		 --//SLA event is already created for this Claim.
3558 		 FND_MSG_PUB.add;
3559 	      END IF;
3560 	      x_return_status := fnd_api.g_ret_sts_error;
3561 	      RETURN;
3562 	   END IF;
3563         END IF;
3564      ELSE
3565         IF NVL(p_reversal_flag,'N') <> 'N' THEN
3566 	   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3567 	      FND_MESSAGE.set_name('OZF', 'OZF_INVALID_REVERSAL_EVENT');
3568 	      --//You cannot create first event of a claim as Reversal event.
3569 	      FND_MSG_PUB.add;
3570 	   END IF;
3571 	   x_return_status := fnd_api.g_ret_sts_error;
3572 	   RETURN;
3573 	END IF;
3574      END IF;
3575 
3576      --//Invoke API to create Claim SLA Event
3577      OZF_GL_INTERFACE_PVT.Create_SLA_Claim_Extract(
3578 		      p_api_version         => 1.0
3579 		     ,p_init_msg_list       => FND_API.G_FALSE
3580 		     ,p_commit              => FND_API.G_FALSE
3581 		     ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
3582 		     ,x_return_status       => x_return_status
3583 		     ,x_msg_data            => x_msg_data
3584 		     ,x_msg_count           => x_msg_count
3585 		     ,p_claim_id            => p_claim_id
3586 		     ,p_event_type_code     => p_event_type_code
3587 		     ,p_gl_rec              => l_gl_rec --ER 14297905
3588 		     ,x_xla_event_id        => x_event_id
3589 		  );
3590 
3591         IF x_return_status = FND_API.g_ret_sts_error THEN
3592 	   RAISE FND_API.g_exc_error;
3593 	ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
3594 	   RAISE FND_API.g_exc_unexpected_error;
3595 	END IF;
3596 
3597 
3598 --========================================================================
3599 --// Commit the process
3600 IF G_DEBUG THEN
3601 
3602    OZF_UTILITY_PVT.debug_message('Public API: '|| l_api_name||' End');
3603 END IF;
3604    IF FND_API.to_Boolean( p_commit )
3605    THEN
3606       COMMIT WORK;
3607    END IF;
3608 
3609  FND_MSG_PUB.Count_And_Get (
3610    p_encoded => FND_API.G_FALSE,
3611    p_count          =>   x_msg_count,
3612    p_data           =>   x_msg_data
3613    );
3614 
3615 EXCEPTION
3616     WHEN FND_API.G_EXC_ERROR THEN
3617 	ROLLBACK TO Create_event;
3618 	x_return_status := FND_API.G_RET_STS_ERROR;
3619        -- Standard call to get message count and if count=1, get the message
3620 	FND_MSG_PUB.Count_And_Get (
3621 	   p_encoded => FND_API.G_FALSE,
3622 	   p_count   => x_msg_count,
3623 	   p_data    => x_msg_data
3624 	);
3625     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3626        ROLLBACK TO Create_event;
3627        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3628 	-- Standard call to get message count and if count=1, get the message
3629        FND_MSG_PUB.Count_And_Get (
3630        p_encoded => FND_API.G_FALSE,
3631        p_count   => x_msg_count,
3632        p_data    => x_msg_data
3633        );
3634     WHEN OTHERS THEN
3635 	ROLLBACK TO Create_event;
3636        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3637        IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3638 	  FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3639        END IF;
3640        -- Standard call to get message count and if count=1, get the message
3641        FND_MSG_PUB.Count_And_Get (
3642        p_encoded => FND_API.G_FALSE,
3643        p_count => x_msg_count,
3644        p_data  => x_msg_data
3645    );
3646 End Create_event;
3647 
3648 END OZF_CLAIM_PUB;