DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CLAIM_GRP

Source


1 PACKAGE BODY AMS_claim_GRP as
2 /* $Header: amsgclab.pls 115.44 2004/04/06 19:33:41 julou ship $ */
3 -- Start of Comments
4 -- Package name     : AMS_claim_GRP
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 G_PKG_NAME             CONSTANT  VARCHAR2(20) := 'AMS_CLAIM_GRP';
11 G_DEDUCTION_CLASS      CONSTANT  VARCHAR2(20) := 'DEDUCTION';
12 G_OVERPAYMENT_CLASS    CONSTANT  VARCHAR2(20) := 'OVERPAYMENT';
13 G_DEDUC_OBJ_TYPE       CONSTANT  VARCHAR2(6)  := 'DEDU';
14 G_CLAIM_OBJECT_TYPE    CONSTANT  VARCHAR2(30) := 'CLAM';
15 G_CLAIM_STATUS         CONSTANT  VARCHAR2(30) := 'AMS_CLAIM_STATUS';
16 G_FILE_NAME            CONSTANT VARCHAR2(12) := 'amsgclab.pls';
17 G_OPEN_STATUS          CONSTANT VARCHAR2(30) := 'OPEN';
18 G_UPDATE_EVENT         CONSTANT VARCHAR2(30) := 'UPDATE';
19 G_INVOICE              CONSTANT VARCHAR2(30) := 'INVOICE';
20 
21 AMS_DEBUG_LOW_ON BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_low);
22 
23 
24 PROCEDURE Complete_OZF_Claim_Grp_Rec(
25       p_ams_claim_grp_rec   IN AMS_CLAIM_GRP.DEDUCTION_REC_TYPE
26     , x_ozf_claim_grp_rec   OUT NOCOPY OZF_CLAIM_GRP.DEDUCTION_REC_TYPE
27     , x_return_status       OUT NOCOPY VARCHAR2
28 )
29 IS
30 BEGIN
31    -- Initialize API return status to SUCCESS
32    x_return_status := FND_API.G_RET_STS_SUCCESS;
33 
34    IF p_ams_claim_grp_rec.claim_id = FND_API.g_miss_num THEN
35       x_ozf_claim_grp_rec.claim_id                      := NULL;
36    ELSE
37       x_ozf_claim_grp_rec.claim_id                      := p_ams_claim_grp_rec.claim_id;
38    END IF;
39 
40    IF p_ams_claim_grp_rec.claim_number  = FND_API.g_miss_char THEN
41       x_ozf_claim_grp_rec.claim_number                  := NULL;
42    ELSE
43       x_ozf_claim_grp_rec.claim_number                  := p_ams_claim_grp_rec.claim_number;
44    END IF;
45 
46    IF p_ams_claim_grp_rec.claim_type_id = FND_API.g_miss_num THEN
47       x_ozf_claim_grp_rec.claim_type_id                 := NULL;
48    ELSE
49       x_ozf_claim_grp_rec.claim_type_id                 := p_ams_claim_grp_rec.claim_type_id;
50    END IF;
51 
52    IF p_ams_claim_grp_rec.claim_date = FND_API.g_miss_date THEN
53       x_ozf_claim_grp_rec.claim_date                    := NULL;
54    ELSE
55       x_ozf_claim_grp_rec.claim_date                    := p_ams_claim_grp_rec.claim_date;
56    END IF;
57 
58    IF p_ams_claim_grp_rec.due_date = FND_API.g_miss_date THEN
59       x_ozf_claim_grp_rec.due_date                      := NULL;
60    ELSE
61       x_ozf_claim_grp_rec.due_date                      := p_ams_claim_grp_rec.due_date;
62    END IF;
63 
64    IF p_ams_claim_grp_rec.owner_id = FND_API.g_miss_num THEN
65       x_ozf_claim_grp_rec.owner_id                      := NULL;
66    ELSE
67       x_ozf_claim_grp_rec.owner_id                      := p_ams_claim_grp_rec.owner_id;
68    END IF;
69 
70    IF p_ams_claim_grp_rec.amount = FND_API.g_miss_num THEN
71       x_ozf_claim_grp_rec.amount                        := NULL;
72    ELSE
73       x_ozf_claim_grp_rec.amount                        := p_ams_claim_grp_rec.amount;
74    END IF;
75 
76    IF p_ams_claim_grp_rec.currency_code = FND_API.g_miss_char THEN
77       x_ozf_claim_grp_rec.currency_code                 := NULL;
78    ELSE
79       x_ozf_claim_grp_rec.currency_code                 := p_ams_claim_grp_rec.currency_code;
80    END IF;
81 
82    IF p_ams_claim_grp_rec.exchange_rate_type = FND_API.g_miss_char THEN
83       x_ozf_claim_grp_rec.exchange_rate_type            := NULL;
84    ELSE
85       x_ozf_claim_grp_rec.exchange_rate_type            := p_ams_claim_grp_rec.exchange_rate_type;
86    END IF;
87 
88    IF p_ams_claim_grp_rec.exchange_rate_date = FND_API.g_miss_date THEN
89       x_ozf_claim_grp_rec.exchange_rate_date            := NULL;
90    ELSE
91       x_ozf_claim_grp_rec.exchange_rate_date            := p_ams_claim_grp_rec.exchange_rate_date;
92    END IF;
93 
94    IF p_ams_claim_grp_rec.exchange_rate = FND_API.g_miss_num THEN
95       x_ozf_claim_grp_rec.exchange_rate                 := NULL;
96    ELSE
97       x_ozf_claim_grp_rec.exchange_rate                 := p_ams_claim_grp_rec.exchange_rate;
98    END IF;
99 
100    IF p_ams_claim_grp_rec.set_of_books_id = FND_API.g_miss_num THEN
101       x_ozf_claim_grp_rec.set_of_books_id               := NULL;
102    ELSE
103       x_ozf_claim_grp_rec.set_of_books_id               := p_ams_claim_grp_rec.set_of_books_id;
104    END IF;
105 
106    IF p_ams_claim_grp_rec.source_object_id = FND_API.g_miss_num THEN
107       x_ozf_claim_grp_rec.source_object_id              := NULL;
108    ELSE
109       x_ozf_claim_grp_rec.source_object_id              := p_ams_claim_grp_rec.source_object_id;
110    END IF;
111 
112    IF p_ams_claim_grp_rec.source_object_class = FND_API.g_miss_char THEN
113       x_ozf_claim_grp_rec.source_object_class           := NULL;
114    ELSE
115       x_ozf_claim_grp_rec.source_object_class           := p_ams_claim_grp_rec.source_object_class;
116    END IF;
117 
118    IF p_ams_claim_grp_rec.source_object_type_id = FND_API.g_miss_num THEN
119       x_ozf_claim_grp_rec.source_object_type_id         := NULL;
120    ELSE
121       x_ozf_claim_grp_rec.source_object_type_id         := p_ams_claim_grp_rec.source_object_type_id;
122    END IF;
123 
124    IF p_ams_claim_grp_rec.source_object_number = FND_API.g_miss_char THEN
125       x_ozf_claim_grp_rec.source_object_number          := NULL;
126    ELSE
127       x_ozf_claim_grp_rec.source_object_number          := p_ams_claim_grp_rec.source_object_number;
128    END IF;
129 
130    IF p_ams_claim_grp_rec.cust_account_id = FND_API.g_miss_num THEN
131       x_ozf_claim_grp_rec.cust_account_id               := NULL;
132    ELSE
133       x_ozf_claim_grp_rec.cust_account_id               := p_ams_claim_grp_rec.cust_account_id;
134    END IF;
135 
136    IF p_ams_claim_grp_rec.cust_billto_acct_site_id = FND_API.g_miss_num THEN
137       x_ozf_claim_grp_rec.cust_billto_acct_site_id      := NULL;
138    ELSE
139       x_ozf_claim_grp_rec.cust_billto_acct_site_id      := p_ams_claim_grp_rec.cust_billto_acct_site_id;
140    END IF;
141 
142    IF p_ams_claim_grp_rec.cust_shipto_acct_site_id = FND_API.g_miss_num THEN
143       x_ozf_claim_grp_rec.cust_shipto_acct_site_id      := NULL;
144    ELSE
145       x_ozf_claim_grp_rec.cust_shipto_acct_site_id      := p_ams_claim_grp_rec.cust_shipto_acct_site_id;
146    END IF;
147 
148    IF p_ams_claim_grp_rec.location_id = FND_API.g_miss_num THEN
149       x_ozf_claim_grp_rec.location_id                   := NULL;
150    ELSE
151       x_ozf_claim_grp_rec.location_id                   := p_ams_claim_grp_rec.location_id;
152    END IF;
153 
154    IF p_ams_claim_grp_rec.reason_code_id = FND_API.g_miss_num THEN
155       x_ozf_claim_grp_rec.reason_code_id                := NULL;
156    ELSE
157       x_ozf_claim_grp_rec.reason_code_id                := p_ams_claim_grp_rec.reason_code_id;
158    END IF;
159 
160    IF p_ams_claim_grp_rec.status_code = FND_API.g_miss_char THEN
161       x_ozf_claim_grp_rec.status_code                   := NULL;
162    ELSE
163       x_ozf_claim_grp_rec.status_code                   := p_ams_claim_grp_rec.status_code;
164    END IF;
165 
166    IF p_ams_claim_grp_rec.user_status_id = FND_API.g_miss_num THEN
167       x_ozf_claim_grp_rec.user_status_id                := NULL;
168    ELSE
169       x_ozf_claim_grp_rec.user_status_id                := p_ams_claim_grp_rec.user_status_id;
170    END IF;
171 
172    IF p_ams_claim_grp_rec.sales_rep_id = FND_API.g_miss_num THEN
173       x_ozf_claim_grp_rec.sales_rep_id                  := NULL;
174    ELSE
175       x_ozf_claim_grp_rec.sales_rep_id                  := p_ams_claim_grp_rec.sales_rep_id;
176    END IF;
177 
178    IF p_ams_claim_grp_rec.collector_id = FND_API.g_miss_num THEN
179       x_ozf_claim_grp_rec.collector_id                  := NULL;
180    ELSE
181       x_ozf_claim_grp_rec.collector_id                  := p_ams_claim_grp_rec.collector_id;
182    END IF;
183 
184    IF p_ams_claim_grp_rec.contact_id = FND_API.g_miss_num THEN
185       x_ozf_claim_grp_rec.contact_id                    := NULL;
186    ELSE
187       x_ozf_claim_grp_rec.contact_id                    := p_ams_claim_grp_rec.contact_id;
188    END IF;
189 
190    IF p_ams_claim_grp_rec.broker_id = FND_API.g_miss_num THEN
191       x_ozf_claim_grp_rec.broker_id                     := NULL;
192    ELSE
193       x_ozf_claim_grp_rec.broker_id                     := p_ams_claim_grp_rec.broker_id;
194    END IF;
195 
196    IF p_ams_claim_grp_rec.customer_ref_date = FND_API.g_miss_date THEN
197       x_ozf_claim_grp_rec.customer_ref_date             := NULL;
198    ELSE
199       x_ozf_claim_grp_rec.customer_ref_date             := p_ams_claim_grp_rec.customer_ref_date;
200    END IF;
201 
202 
203    IF p_ams_claim_grp_rec.customer_ref_number = FND_API.g_miss_char THEN
204       x_ozf_claim_grp_rec.customer_ref_number           := NULL;
205    ELSE
206       x_ozf_claim_grp_rec.customer_ref_number           := p_ams_claim_grp_rec.customer_ref_number;
207    END IF;
208 
209    IF p_ams_claim_grp_rec.receipt_id = FND_API.g_miss_num THEN
210       x_ozf_claim_grp_rec.receipt_id                    := NULL;
211    ELSE
212       x_ozf_claim_grp_rec.receipt_id                    := p_ams_claim_grp_rec.receipt_id;
213    END IF;
214 
215    IF p_ams_claim_grp_rec.receipt_number = FND_API.g_miss_char THEN
216       x_ozf_claim_grp_rec.receipt_number                := NULL;
217    ELSE
218       x_ozf_claim_grp_rec.receipt_number                := p_ams_claim_grp_rec.receipt_number;
219    END IF;
220 
221    IF p_ams_claim_grp_rec.gl_date = FND_API.g_miss_date THEN
222       x_ozf_claim_grp_rec.gl_date                       := NULL;
223    ELSE
224       x_ozf_claim_grp_rec.gl_date                       := p_ams_claim_grp_rec.gl_date;
225    END IF;
226 
227    IF p_ams_claim_grp_rec.comments = FND_API.g_miss_char THEN
228       x_ozf_claim_grp_rec.comments                      := NULL;
229    ELSE
230       x_ozf_claim_grp_rec.comments                      := p_ams_claim_grp_rec.comments;
231    END IF;
232 
233    IF p_ams_claim_grp_rec.deduction_attribute_category = FND_API.g_miss_char THEN
234       x_ozf_claim_grp_rec.deduction_attribute_category  := NULL;
235    ELSE
236       x_ozf_claim_grp_rec.deduction_attribute_category  := p_ams_claim_grp_rec.deduction_attribute_category;
237    END IF;
238 
239    IF p_ams_claim_grp_rec.deduction_attribute1 = FND_API.g_miss_char THEN
240       x_ozf_claim_grp_rec.deduction_attribute1          := NULL;
241    ELSE
242       x_ozf_claim_grp_rec.deduction_attribute1          := p_ams_claim_grp_rec.deduction_attribute1;
243    END IF;
244 
245    IF p_ams_claim_grp_rec.deduction_attribute2 = FND_API.g_miss_char THEN
246       x_ozf_claim_grp_rec.deduction_attribute2          := NULL;
247    ELSE
248       x_ozf_claim_grp_rec.deduction_attribute2          := p_ams_claim_grp_rec.deduction_attribute2;
249    END IF;
250 
251    IF p_ams_claim_grp_rec.deduction_attribute3 = FND_API.g_miss_char THEN
252       x_ozf_claim_grp_rec.deduction_attribute3          := NULL;
253    ELSE
254       x_ozf_claim_grp_rec.deduction_attribute3          := p_ams_claim_grp_rec.deduction_attribute3;
255    END IF;
256 
257    IF p_ams_claim_grp_rec.deduction_attribute4 = FND_API.g_miss_char THEN
258       x_ozf_claim_grp_rec.deduction_attribute4          := NULL;
259    ELSE
260       x_ozf_claim_grp_rec.deduction_attribute4          := p_ams_claim_grp_rec.deduction_attribute4;
261    END IF;
262 
263    IF p_ams_claim_grp_rec.deduction_attribute5 = FND_API.g_miss_char THEN
264       x_ozf_claim_grp_rec.deduction_attribute5          := NULL;
265    ELSE
266       x_ozf_claim_grp_rec.deduction_attribute5          := p_ams_claim_grp_rec.deduction_attribute5;
267    END IF;
268 
269    IF p_ams_claim_grp_rec.deduction_attribute6 = FND_API.g_miss_char THEN
270       x_ozf_claim_grp_rec.deduction_attribute6          := NULL;
271    ELSE
272       x_ozf_claim_grp_rec.deduction_attribute6          := p_ams_claim_grp_rec.deduction_attribute6;
273    END IF;
274 
275    IF p_ams_claim_grp_rec.deduction_attribute7 = FND_API.g_miss_char THEN
276       x_ozf_claim_grp_rec.deduction_attribute7          := NULL;
277    ELSE
278       x_ozf_claim_grp_rec.deduction_attribute7          := p_ams_claim_grp_rec.deduction_attribute7;
279    END IF;
280 
281    IF p_ams_claim_grp_rec.deduction_attribute8 = FND_API.g_miss_char THEN
282       x_ozf_claim_grp_rec.deduction_attribute8          := NULL;
283    ELSE
284       x_ozf_claim_grp_rec.deduction_attribute8          := p_ams_claim_grp_rec.deduction_attribute8;
285    END IF;
286 
287    IF p_ams_claim_grp_rec.deduction_attribute9 = FND_API.g_miss_char THEN
288       x_ozf_claim_grp_rec.deduction_attribute9          := NULL;
289    ELSE
290       x_ozf_claim_grp_rec.deduction_attribute9          := p_ams_claim_grp_rec.deduction_attribute9;
291    END IF;
292 
293    IF p_ams_claim_grp_rec.deduction_attribute10 = FND_API.g_miss_char THEN
294       x_ozf_claim_grp_rec.deduction_attribute10         := NULL;
295    ELSE
296       x_ozf_claim_grp_rec.deduction_attribute10         := p_ams_claim_grp_rec.deduction_attribute10;
297    END IF;
298 
299    IF p_ams_claim_grp_rec.deduction_attribute11 = FND_API.g_miss_char THEN
300       x_ozf_claim_grp_rec.deduction_attribute11         := NULL;
301    ELSE
302       x_ozf_claim_grp_rec.deduction_attribute11         := p_ams_claim_grp_rec.deduction_attribute11;
303    END IF;
304 
305    IF p_ams_claim_grp_rec.deduction_attribute12 = FND_API.g_miss_char THEN
306       x_ozf_claim_grp_rec.deduction_attribute12         := NULL;
307    ELSE
308       x_ozf_claim_grp_rec.deduction_attribute12         := p_ams_claim_grp_rec.deduction_attribute12;
309    END IF;
310 
311    IF p_ams_claim_grp_rec.deduction_attribute13 = FND_API.g_miss_char THEN
312       x_ozf_claim_grp_rec.deduction_attribute13         := NULL;
313    ELSE
314       x_ozf_claim_grp_rec.deduction_attribute13         := p_ams_claim_grp_rec.deduction_attribute13;
315    END IF;
316 
317    IF p_ams_claim_grp_rec.deduction_attribute14 = FND_API.g_miss_char THEN
318       x_ozf_claim_grp_rec.deduction_attribute14         := NULL;
319    ELSE
320       x_ozf_claim_grp_rec.deduction_attribute14         := p_ams_claim_grp_rec.deduction_attribute14;
321    END IF;
322 
323    IF p_ams_claim_grp_rec.deduction_attribute15 = FND_API.g_miss_char THEN
324       x_ozf_claim_grp_rec.deduction_attribute15         := NULL;
325    ELSE
326       x_ozf_claim_grp_rec.deduction_attribute15         := p_ams_claim_grp_rec.deduction_attribute15;
327    END IF;
328 
329    IF p_ams_claim_grp_rec.org_id = FND_API.g_miss_num THEN
330       x_ozf_claim_grp_rec.org_id                        := NULL;
331    ELSE
332       x_ozf_claim_grp_rec.org_id                        := p_ams_claim_grp_rec.org_id;
333    END IF;
334 
335 EXCEPTION
336    WHEN OTHERS THEN
337       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
338       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
339          FND_MESSAGE.set_name('AMS', 'AMS_CLAIM_COMP_GRP_REC_ERR');
340          FND_MSG_PUB.add;
341       END IF;
342 
343 END Complete_OZF_Claim_Grp_Rec;
344 
345 ---------------------------------------------------------------------
346 --   PROCEDURE:  Create_Deduction
347 --
348 --   PURPOSE:
349 --   This procedure checks information passed from AR to Claim module and then
350 --   calls Creat_claim function in the private package to create a claim record.
351 --   It returns a claim_id and cliam_number as the result.
352 
353 --   PARAMETERS:
354 --   IN
355 --       p_api_version_number      IN   NUMBER     Required
356 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
357 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
358 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
359 --       P_deduction_Rec           IN   DEDUCTION_REC_TYPE  Required
360 --
361 --   OUT:
362 --       x_return_status           OUT  VARCHAR2
363 --       x_msg_count               OUT  NUMBER
364 --       x_msg_data                OUT  VARCHAR2
365 --       x_claim_id                OUT  NUMBER,
366 --       x_claim_number            OUT  VARCHAR2
367 --   NOTES:
368 --
369 ---------------------------------------------------------------------
370 PROCEDURE Create_Deduction(
371     P_Api_Version_Number         IN   NUMBER,
372     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
373     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
377     X_Msg_Count                  OUT NOCOPY  NUMBER,
374     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
375 
376     X_Return_Status              OUT NOCOPY  VARCHAR2,
378     X_Msg_Data                   OUT NOCOPY  VARCHAR2,
379 
380     P_deduction                  IN   DEDUCTION_REC_TYPE,
381     X_CLAIM_ID                   OUT NOCOPY  NUMBER,
382     X_CLAIM_NUMBER               OUT NOCOPY  VARCHAR2
383 )
384 IS
385 l_ozf_claim_grp_rec    OZF_CLAIM_GRP.DEDUCTION_REC_TYPE;
386 
387 BEGIN
388    -- Initialize API return status to SUCCESS
389    x_return_status := FND_API.G_RET_STS_SUCCESS;
390 
391    Complete_OZF_Claim_Grp_Rec(
392       p_ams_claim_grp_rec   => P_deduction
393     , x_ozf_claim_grp_rec   => l_ozf_claim_grp_rec
394     , x_return_status       => x_return_status
395 
396    );
397    IF x_return_status = FND_API.G_RET_STS_ERROR then
398       RAISE FND_API.G_EXC_ERROR;
399    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
400       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
401    END IF;
402 
403    OZF_CLAIM_GRP.Create_Deduction(
404         P_Api_Version_Number     => P_Api_Version_Number,
405         P_Init_Msg_List          => P_Init_Msg_List,
406         p_validation_level       => p_validation_level,
407         P_Commit                 => P_Commit,
408 
409         X_Return_Status          => X_Return_Status,
410         X_Msg_Count              => X_Msg_Count,
411         X_Msg_Data               => X_Msg_Data,
412 
413         P_deduction              => l_ozf_claim_grp_rec,
414         X_CLAIM_ID               => X_CLAIM_ID,
415         X_CLAIM_NUMBER           => X_CLAIM_NUMBER
416    );
417    IF x_return_status = FND_API.G_RET_STS_ERROR then
418       RAISE FND_API.G_EXC_ERROR;
419    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
420       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
421    END IF;
422 
423 
424 EXCEPTION
425    WHEN OTHERS THEN
426       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
427       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
428          FND_MESSAGE.set_name('AMS', 'AMS_CLAIM_CRE_DEDU_ERR');
429          FND_MSG_PUB.add;
430       END IF;
431       -- Standard call to get message count and if count=1, get the message
432       FND_MSG_PUB.Count_And_Get (
433          p_encoded => FND_API.G_FALSE,
434          p_count => x_msg_count,
435          p_data  => x_msg_data
436       );
437 End Create_Deduction;
438 
439 
440 ---------------------------------------------------------------------
441 --   PROCEDURE:  Update_Deduction
442 --
443 --   PURPOSE  :
444 --   This procedure update a Deduction. It calls the Update_claim function in the private
445 --   package.
446 --
447 --   PARAMETERS:
448 --   IN
449 --       p_api_version_number      IN   NUMBER     Required
450 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
451 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
452 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
453 --       P_deduction               IN   DEDUCTION_REC_TYPE  Required
454 --
455 --   OUT:
456 --       x_return_status           OUT  VARCHAR2
457 --       x_msg_count               OUT  NUMBER
458 --       x_msg_data                OUT  VARCHAR2
459 --       x_object_version_number   OUT  NUMBER
460 --
461 --   Note:
462 --
463 ---------------------------------------------------------------------
464 
465 PROCEDURE Update_Deduction(
466     P_Api_Version_Number         IN   NUMBER,
467     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
468     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
469     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
470 
471     X_Return_Status              OUT NOCOPY  VARCHAR2,
472     X_Msg_Count                  OUT NOCOPY  NUMBER,
473     X_Msg_Data                   OUT NOCOPY  VARCHAR2,
474 
475     P_deduction                  IN   DEDUCTION_REC_TYPE,
476     X_Object_Version_Number      OUT NOCOPY  NUMBER
477 )
478 IS
479 l_ozf_claim_grp_rec    OZF_CLAIM_GRP.DEDUCTION_REC_TYPE;
480 l_ozf_claim_pvt_rec    OZF_CLAIM_PVT.CLAIM_REC_TYPE;
481 
482 TYPE NUMBER_TBL IS TABLE OF NUMBER
483 INDEX BY BINARY_INTEGER;
484 l_claim_id_tbl            NUMBER_TBL;
485 l_custom_setup_id_tbl     NUMBER_TBL;
486 l_claim_obj_ver_num_tbl   NUMBER_TBL;
487 idx                       NUMBER            := 1;
488 
489 
490 CURSOR split_claims_info_csr (p_id in number) IS
491    SELECT claim_id, object_version_number, custom_setup_id
492    FROM   ozf_claims_all
493    WHERE  root_claim_id = p_id
494    AND    status_code NOT IN ('CLOSED', 'CANCELLED', 'REJECTED');
495 
496 
497 BEGIN
498 
499    -- Initialize API return status to SUCCESS
500    x_return_status := FND_API.G_RET_STS_SUCCESS;
501 
502    Complete_OZF_Claim_Grp_Rec(
503       p_ams_claim_grp_rec   => P_deduction
504     , x_ozf_claim_grp_rec   => l_ozf_claim_grp_rec
505     , x_return_status       => x_return_status
506    );
507    IF x_return_status = FND_API.G_RET_STS_ERROR then
508       RAISE FND_API.G_EXC_ERROR;
509    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
510       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
511    END IF;
512 
513    IF p_deduction.status_code = 'CANCELLED' THEN
514       IF ( NOT( check_cancell_deduction(p_deduction.claim_id))) THEN
515          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
516             FND_MESSAGE.set_name('AMS', 'AMS_CLAIM_INVALID_STATUS_CODE');
517             FND_MSG_PUB.add;
521 
518          END IF;
519          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
520       END IF;
522       OPEN split_claims_info_csr(p_deduction.claim_id);
523       LOOP
524          FETCH split_claims_info_csr INTO l_claim_id_tbl(idx)
525                                         , l_claim_obj_ver_num_tbl(idx)
526                                         , l_custom_setup_id_tbl(idx);
527          EXIT WHEN split_claims_info_csr%NOTFOUND OR split_claims_info_csr%NOTFOUND IS NULL;
528          idx := idx + 1;
529       END LOOP;
530       CLOSE split_claims_info_csr;
531 
532       idx := l_claim_id_tbl.FIRST;
533       IF idx IS NOT NULL THEN
534          LOOP
535             l_ozf_claim_pvt_rec.claim_id := l_claim_id_tbl(idx);
536             l_ozf_claim_pvt_rec.object_version_number := l_claim_obj_ver_num_tbl(idx);
537             l_ozf_claim_pvt_rec.custom_setup_id := l_custom_setup_id_tbl(idx);
538             l_ozf_claim_pvt_rec.status_code := 'CANCELLED';
539 
540             OZF_CLAIM_PVT.Update_claim(
541                  p_api_version                => 1.0,
542                  p_init_msg_list              => fnd_api.g_false,
543                  p_commit                     => fnd_api.g_false,
544                  p_validation_level           => fnd_api.g_valid_level_full,
545                  x_return_status              => x_return_status,
546                  x_msg_count                  => x_msg_count,
547                  x_msg_data                   => x_msg_data,
548                  p_claim                      => l_ozf_claim_pvt_rec,
549                  p_event                      => 'UPDATE',
550                  p_mode                       => oZF_CLAIM_UTILITY_PVT.G_AUTO_MODE,
551                  x_object_version_number      => l_claim_obj_ver_num_tbl(idx)
552             );
553             IF x_return_status = FND_API.G_RET_STS_ERROR THEN
554                RAISE FND_API.G_EXC_ERROR;
555             ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
556                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
557             END IF;
558             EXIT WHEN idx = l_claim_id_tbl.LAST;
559             idx := l_claim_id_tbl.NEXT(idx);
560          END LOOP;
561       END IF;
562    ELSE
563       OZF_CLAIM_GRP.Update_Deduction(
564            P_Api_Version_Number     => P_Api_Version_Number,
565            P_Init_Msg_List          => P_Init_Msg_List,
566            p_validation_level       => p_validation_level,
567            P_Commit                 => P_Commit,
568 
569            X_Return_Status          => X_Return_Status,
570            X_Msg_Count              => X_Msg_Count,
571            X_Msg_Data               => X_Msg_Data,
572 
573            P_deduction              => l_ozf_claim_grp_rec,
574            X_Object_Version_Number  => X_Object_Version_Number
575       );
576       IF x_return_status = FND_API.G_RET_STS_ERROR then
577          RAISE FND_API.G_EXC_ERROR;
578       ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
579          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
580       END IF;
581    END IF;
582 
583 
584 EXCEPTION
585    WHEN OTHERS THEN
586       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
587       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
588          FND_MESSAGE.set_name('AMS', 'AMS_CLAIM_UPD_DEDU_ERR');
589          FND_MSG_PUB.add;
590       END IF;
591       -- Standard call to get message count and if count=1, get the message
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 
598 End Update_Deduction;
599 
600 --   *******************************************************
601 --    Start of Comments
602 --   *******************************************************
603 --   API Name:  Check_Cancell_Deduction
604 --   Type    :  Public
605 --   Pre-Req :
606 --   Parameters:
607 --   IN
608 --       P_Claim_Id      IN   NUMBER     Required
609 --
610 --   OUT:
611 --       x_status                OUT  BOOLEAN
612 --   Version : Current version 1.0
613 --
614 --   Note: This function checks whether a claims can be cancelled or not.
615 --
616 --   End of Comments
617 --
618 FUNCTION Check_Cancell_Deduction(
619     P_Claim_Id   IN               NUMBER
620 ) RETURN BOOLEAN
621 IS
622 
623 BEGIN
624 
625    RETURN OZF_CLAIM_GRP.Check_Cancell_Deduction(P_Claim_Id);
626 
627 End Check_Cancell_Deduction ;
628 
629 End AMS_claim_GRP;