DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_CLAIM_SETTLEMENT_VAL_PVT

Source


1 PACKAGE BODY OZF_CLAIM_SETTLEMENT_VAL_PVT AS
2 /* $Header: ozfvcsvb.pls 120.5 2008/02/19 08:29:08 psomyaju ship $ */
3 
4 G_PKG_NAME           CONSTANT VARCHAR2(30) := 'OZF_CLAIM_SETTLEMENT_VAL_PVT';
5 G_FILE_NAME          CONSTANT VARCHAR2(12) := 'ozfvcsvb.pls';
6 
7 OZF_DEBUG_HIGH_ON    CONSTANT BOOLEAN      := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
8 OZF_DEBUG_LOW_ON     CONSTANT BOOLEAN      := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_low);
9 
10 /*=======================================================================*
11  | PROCEDURE
12  |    Default_Claim_Line
13  |
14  | NOTES
15  |    This API default claim line recored against different settlement method.
16  |
17  | HISTORY
18  |    14-NOV-2002  mchang  Create.
19  *=======================================================================*/
20 PROCEDURE Default_Claim_Line(
21     p_api_version           IN  NUMBER
22    ,p_init_msg_list         IN  VARCHAR2 := FND_API.g_false
23    ,p_validation_level      IN  NUMBER   := FND_API.g_valid_level_full
24 
25    ,x_return_status         OUT NOCOPY VARCHAR2
26    ,x_msg_data              OUT NOCOPY VARCHAR2
27    ,x_msg_count             OUT NOCOPY NUMBER
28 
29    ,p_x_claim_line_rec      IN OUT NOCOPY OZF_CLAIM_LINE_PVT.claim_line_rec_type
30    ,p_def_from_tbl_flag     IN  VARCHAR2
31 )
32 IS
33 l_api_version  CONSTANT NUMBER       := 1.0;
34 l_api_name     CONSTANT VARCHAR2(30) := 'Default_Claim_Line';
35 l_full_name    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || l_api_name;
36 l_return_status         VARCHAR2(1);
37 
38 CURSOR csr_settlement_method(cv_claim_id IN NUMBER) IS
39   SELECT payment_method
40   FROM ozf_claims
41   WHERE claim_id = cv_claim_id;
42 
43 l_settlement_method     VARCHAR2(30);
44 
45 BEGIN
46    IF OZF_DEBUG_HIGH_ON THEN
47       OZF_Utility_PVT.debug_message(l_full_name||' : start');
48    END IF;
49 
50    -- Initialize API return status to sucess
51    x_return_status := FND_API.g_ret_sts_success;
52 
53    ------------------------------------------------
54    IF p_x_claim_line_rec.source_object_class IS NULL THEN
55       p_x_claim_line_rec.source_object_id := NULL;
56    END IF;
57 
58    IF p_x_claim_line_rec.source_object_id IS NULL THEN
59       p_x_claim_line_rec.source_object_line_id := NULL;
60    END IF;
61 
62    --
63    OPEN csr_settlement_method(p_x_claim_line_rec.claim_id);
64    FETCH csr_settlement_method INTO l_settlement_method;
65    CLOSE csr_settlement_method;
66 
67    IF p_def_from_tbl_flag = FND_API.g_false THEN
68       IF l_settlement_method = 'RMA' THEN
69          OZF_OM_VALIDATION_PVT.Default_Claim_Line(
70              p_api_version           => l_api_version
71             ,p_init_msg_list         => p_init_msg_list
72             ,p_validation_level      => p_validation_level
73             ,x_return_status         => l_return_status
74             ,x_msg_data              => x_msg_data
75             ,x_msg_count             => x_msg_count
76             ,p_x_claim_line_rec      => p_x_claim_line_rec
77          );
78          IF l_return_status =  FND_API.g_ret_sts_error THEN
79             RAISE FND_API.g_exc_error;
80          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
81             RAISE FND_API.g_exc_unexpected_error;
82          END IF;
83       END IF;
84    END IF;
85 
86    IF OZF_DEBUG_HIGH_ON THEN
87       OZF_Utility_PVT.debug_message(l_full_name||' : end');
88    END IF;
89 EXCEPTION
90    WHEN FND_API.G_EXC_ERROR THEN
91       x_return_status := FND_API.G_RET_STS_ERROR;
92    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
93       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
94    WHEN OTHERS THEN
95       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
96          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
97       END IF;
98      x_return_status := FND_API.g_ret_sts_unexp_error;
99 
100 END Default_Claim_Line;
101 
102 
103 /*=======================================================================*
104  | PROCEDURE
105  |    Default_Claim_Line_Tbl
106  |
107  | NOTES
108  |    This API default claim line table for RMA settlement method.
109  |
110  | HISTORY
111  |    14-NOV-2002  mchang  Create.
112  *=======================================================================*/
113 PROCEDURE Default_Claim_Line_Tbl(
114     p_api_version           IN  NUMBER
115    ,p_init_msg_list         IN  VARCHAR2
116    ,p_validation_level      IN  NUMBER
117 
118    ,x_return_status         OUT NOCOPY VARCHAR2
119    ,x_msg_data              OUT NOCOPY VARCHAR2
120    ,x_msg_count             OUT NOCOPY NUMBER
121 
122    ,p_x_claim_line_tbl      IN OUT NOCOPY OZF_CLAIM_LINE_PVT.claim_line_tbl_type
123 )
124 IS
125 l_api_version  CONSTANT NUMBER       := 1.0;
126 l_api_name     CONSTANT VARCHAR2(30) := 'Default_Claim_Line_Tbl';
127 l_full_name    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || l_api_name;
128 l_return_status         VARCHAR2(1);
129 
130 CURSOR csr_settlement_method(cv_claim_id IN NUMBER) IS
131   SELECT payment_method
132   FROM ozf_claims
133   WHERE claim_id = cv_claim_id;
134 
135 l_claim_line_rec        OZF_CLAIM_LINE_PVT.claim_line_rec_type;
136 l_settlement_method     VARCHAR2(30);
137 i                       NUMBER;
138 
139 BEGIN
140    IF OZF_DEBUG_HIGH_ON THEN
141       OZF_Utility_PVT.debug_message(l_full_name||' : start');
142    END IF;
143 
144    -- Initialize API return status to sucess
145    x_return_status := FND_API.g_ret_sts_success;
146 
147    i := p_x_claim_line_tbl.FIRST;
148    IF i IS NOT NULL THEN
149       LOOP
150          l_claim_line_rec := p_x_claim_line_tbl(i);
151          Default_Claim_Line(
152              p_api_version           => l_api_version
153             ,p_init_msg_list         => p_init_msg_list
154             ,p_validation_level      => p_validation_level
155             ,x_return_status         => l_return_status
156             ,x_msg_data              => x_msg_data
157             ,x_msg_count             => x_msg_count
158             ,p_x_claim_line_rec      => l_claim_line_rec
159             ,p_def_from_tbl_flag     => FND_API.g_true
160          );
161          p_x_claim_line_tbl(i) := l_claim_line_rec;
162          IF l_return_status =  FND_API.g_ret_sts_error THEN
163             RAISE FND_API.g_exc_error;
164          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
165             RAISE FND_API.g_exc_unexpected_error;
166          END IF;
167          EXIT WHEN i = p_x_claim_line_tbl.LAST;
168          i := p_x_claim_line_tbl.NEXT(i);
169       END LOOP;
170 
171       OPEN csr_settlement_method(p_x_claim_line_tbl(1).claim_id);
172       FETCH csr_settlement_method INTO l_settlement_method;
173       CLOSE csr_settlement_method;
174 
175       IF l_settlement_method = 'RMA' THEN
176          OZF_OM_VALIDATION_PVT.Default_Claim_Line_Tbl(
177              p_api_version           => l_api_version
178             ,p_init_msg_list         => p_init_msg_list
179             ,p_validation_level      => p_validation_level
180             ,x_return_status         => l_return_status
181             ,x_msg_data              => x_msg_data
182             ,x_msg_count             => x_msg_count
183             ,p_x_claim_line_tbl      => p_x_claim_line_tbl
184          );
185          IF l_return_status =  FND_API.g_ret_sts_error THEN
186             RAISE FND_API.g_exc_error;
187          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
188             RAISE FND_API.g_exc_unexpected_error;
189          END IF;
190       END IF;
191    END IF;
192 
193    IF OZF_DEBUG_HIGH_ON THEN
194       OZF_Utility_PVT.debug_message(l_full_name||' : end');
195    END IF;
196 EXCEPTION
197    WHEN FND_API.G_EXC_ERROR THEN
198       x_return_status := FND_API.G_RET_STS_ERROR;
199    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
200       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
201    WHEN OTHERS THEN
202       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
203          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
204       END IF;
205      x_return_status := FND_API.g_ret_sts_unexp_error;
206 
207 END Default_Claim_Line_Tbl;
208 
209 
210 /*=======================================================================*
211  | PROCEDURE
212  |    Validate_Claim_Line
213  |
214  | NOTES
215  |    This API validate claim line recored against RMA settlement.
216  |
217  | HISTORY
218  |    30-NOV-2002  mchang  Create.
219  *=======================================================================*/
220 PROCEDURE Validate_Claim_Line(
221     p_api_version           IN  NUMBER
222    ,p_init_msg_list         IN  VARCHAR2 := FND_API.g_false
223    ,p_validation_level      IN  NUMBER   := FND_API.g_valid_level_full
224 
225    ,x_return_status         OUT NOCOPY VARCHAR2
226    ,x_msg_data              OUT NOCOPY VARCHAR2
227    ,x_msg_count             OUT NOCOPY NUMBER
228 
229    ,p_claim_line_rec        IN  OZF_CLAIM_LINE_PVT.claim_line_rec_type
230    ,p_val_from_tbl_flag     IN  VARCHAR2
231 )
232 IS
233 l_api_version  CONSTANT NUMBER       := 1.0;
234 l_api_name     CONSTANT VARCHAR2(30) := 'Validate_Claim_Line';
235 l_full_name    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || l_api_name;
236 l_return_status         VARCHAR2(1);
237 
238 CURSOR csr_settlement_method(cv_claim_id IN NUMBER) IS
239   SELECT payment_method
240   FROM ozf_claims
241   WHERE claim_id = cv_claim_id;
242 
243 l_error                 BOOLEAN   := FALSE;
244 l_settlement_method     VARCHAR2(30);
245 
246 BEGIN
247    IF OZF_DEBUG_HIGH_ON THEN
248       OZF_Utility_PVT.debug_message(l_full_name||' : start');
249    END IF;
250 
251    -- Initialize API return status to sucess
252    x_return_status := FND_API.g_ret_sts_success;
253 
254    OPEN csr_settlement_method(p_claim_line_rec.claim_id);
255    FETCH csr_settlement_method INTO l_settlement_method;
256    CLOSE csr_settlement_method;
257 
258    IF p_val_from_tbl_flag = FND_API.g_false THEN
259       IF l_settlement_method = 'RMA' THEN
260          OZF_OM_VALIDATION_PVT.Validate_Claim_Line(
261              p_api_version           => l_api_version
262             ,p_init_msg_list         => p_init_msg_list
263             ,p_validation_level      => p_validation_level
264             ,x_return_status         => l_return_status
265             ,x_msg_data              => x_msg_data
266             ,x_msg_count             => x_msg_count
267             ,p_claim_line_rec        => p_claim_line_rec
268          );
269          IF l_return_status =  FND_API.g_ret_sts_error THEN
270             RAISE FND_API.g_exc_error;
271          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
272             RAISE FND_API.g_exc_unexpected_error;
273          END IF;
274       END IF;
275    END IF;
276 
277    IF OZF_DEBUG_HIGH_ON THEN
278       OZF_Utility_PVT.debug_message(l_full_name||' : end');
279    END IF;
280 EXCEPTION
281    WHEN FND_API.G_EXC_ERROR THEN
282       x_return_status := FND_API.G_RET_STS_ERROR;
283    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
284       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
285    WHEN OTHERS THEN
286      IF OZF_DEBUG_LOW_ON THEN
287         FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
288         FND_MESSAGE.Set_Token('TEXT',l_full_name||' : Error');
289         FND_MSG_PUB.Add;
290      END IF;
291      x_return_status := FND_API.g_ret_sts_unexp_error;
292 
293 END Validate_Claim_Line;
294 
295 
296 /*=======================================================================*
297  | PROCEDURE
298  |    Validate_Claim_Line_Tbl
299  |
300  | NOTES
301  |    This API validate claim line recored against RMA settlement.
302  |
303  | HISTORY
304  |    30-NOV-2002  mchang  Create.
305  *=======================================================================*/
306 PROCEDURE Validate_Claim_Line_Tbl(
307     p_api_version           IN  NUMBER
308    ,p_init_msg_list         IN  VARCHAR2 := FND_API.g_false
309    ,p_validation_level      IN  NUMBER   := FND_API.g_valid_level_full
310 
311    ,x_return_status         OUT NOCOPY VARCHAR2
312    ,x_msg_data              OUT NOCOPY VARCHAR2
313    ,x_msg_count             OUT NOCOPY NUMBER
314 
315    ,p_claim_line_tbl        IN  OZF_CLAIM_LINE_PVT.claim_line_tbl_type
316 )
317 IS
318 l_api_version  CONSTANT NUMBER       := 1.0;
319 l_api_name     CONSTANT VARCHAR2(30) := 'Validate_Claim_Line_Tbl';
320 l_full_name    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || l_api_name;
321 l_return_status         VARCHAR2(1);
322 
323 CURSOR csr_settlement_method(cv_claim_id IN NUMBER) IS
324   SELECT payment_method
325   FROM ozf_claims
326   WHERE claim_id = cv_claim_id;
327 
328 i                       NUMBER;
329 l_error                 BOOLEAN   := FALSE;
330 l_claim_line_rec        OZF_CLAIM_LINE_PVT.claim_line_rec_type;
331 l_settlement_method     VARCHAR2(15);
332 
333 
334 BEGIN
335    IF OZF_DEBUG_HIGH_ON THEN
336       OZF_Utility_PVT.debug_message(l_full_name||' : start');
337    END IF;
338 
339    -- Initialize API return status to sucess
340    x_return_status := FND_API.g_ret_sts_success;
341 
342    i := p_claim_line_tbl.FIRST ;
343    IF i IS NOT NULL THEN
344       LOOP
345          l_claim_line_rec := p_claim_line_tbl(i);
346          Validate_Claim_Line(
350             ,x_return_status         => l_return_status
347              p_api_version           => l_api_version
348             ,p_init_msg_list         => p_init_msg_list
349             ,p_validation_level      => p_validation_level
351             ,x_msg_data              => x_msg_data
352             ,x_msg_count             => x_msg_count
353             ,p_claim_line_rec        => l_claim_line_rec
354             ,p_val_from_tbl_flag     => FND_API.g_true
355          );
356          IF l_return_status =  FND_API.g_ret_sts_error THEN
357             RAISE FND_API.g_exc_error;
358          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
359             RAISE FND_API.g_exc_unexpected_error;
360          END IF;
361          EXIT WHEN i = p_claim_line_tbl.LAST;
362          i := p_claim_line_tbl.NEXT(i);
363       END LOOP;
364 
365       OPEN csr_settlement_method(p_claim_line_tbl(1).claim_id);
366       FETCH csr_settlement_method INTO l_settlement_method;
367       CLOSE csr_settlement_method;
368 
369       IF l_settlement_method = 'RMA' THEN
370          OZF_OM_VALIDATION_PVT.Validate_Claim_Line_Tbl(
371              p_api_version           => l_api_version
372             ,p_init_msg_list         => p_init_msg_list
373             ,p_validation_level      => p_validation_level
374             ,x_return_status         => l_return_status
375             ,x_msg_data              => x_msg_data
376             ,x_msg_count             => x_msg_count
377             ,p_claim_line_tbl        => p_claim_line_tbl
378          );
379          IF l_return_status =  FND_API.g_ret_sts_error THEN
380             RAISE FND_API.g_exc_error;
381          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
382             RAISE FND_API.g_exc_unexpected_error;
383          END IF;
384       END IF;
385    END IF;
386 
387    IF l_error THEN
388        RAISE FND_API.G_EXC_ERROR;
389    END IF;
390 
391 
392    IF OZF_DEBUG_HIGH_ON THEN
393       OZF_Utility_PVT.debug_message(l_full_name||' : end');
394    END IF;
395 EXCEPTION
396    WHEN FND_API.G_EXC_ERROR THEN
397       x_return_status := FND_API.G_RET_STS_ERROR;
398    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
399       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
400    WHEN OTHERS THEN
401      IF OZF_DEBUG_LOW_ON THEN
402         FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
403         FND_MESSAGE.Set_Token('TEXT',l_full_name||' : Error');
404         FND_MSG_PUB.Add;
405      END IF;
406      x_return_status := FND_API.g_ret_sts_unexp_error;
407 
408 END Validate_Claim_Line_Tbl;
409 
410 
411 FUNCTION gl_date_in_open(
412     p_application_id        IN NUMBER
413    ,p_claim_id              IN NUMBER
414 )
415 RETURN BOOLEAN
416 IS
417 
418 CURSOR csr_gl_date_validate( cv_app_id    IN NUMBER
419                            , cv_claim_id  IN NUMBER
420                            ) IS
421   SELECT DECODE(MAX(gl.period_name), '', 0, 1)
422   FROM   gl_period_statuses gl
423   ,      ozf_claims c
424   WHERE  gl.application_id = cv_app_id
425   AND    c.claim_id= cv_claim_id
426   AND    gl.set_of_books_id = c.set_of_books_id
427   AND    gl.adjustment_period_flag = 'N'
428   AND    c.gl_date BETWEEN gl.start_date AND gl.end_date
429   AND    gl.closing_status IN ('O', 'F');
430 
431 l_gl_date_count   NUMBER   := 1;
432 
433 BEGIN
434    OPEN csr_gl_date_validate(p_application_id, p_claim_id);
435    FETCH csr_gl_date_validate INTO l_gl_date_count;
436    CLOSE csr_gl_date_validate;
437 
438    IF l_gl_date_count = 0 THEN
439       RETURN FALSE;
440    ELSE
441       RETURN TRUE;
442    END IF;
443 EXCEPTION
444    WHEN OTHERS THEN
445       IF OZF_DEBUG_LOW_ON THEN
446          FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
447          FND_MESSAGE.Set_Token('TEXT',sqlerrm);
448          FND_MSG_PUB.Add;
449       END IF;
450       RETURN FALSE;
451 END gl_date_in_open;
452 
453 
454 /*=======================================================================*
455  | Procedure
456  |    Complete_Claim_Validation
457  |
458  | Return
459  |
460  | NOTES
461  |
462  | HISTORY
463  |    24-OCT-2002  mchang  Create.
464  *=======================================================================*/
465 PROCEDURE Complete_Claim_Validation(
466     p_api_version            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 
470    ,x_return_status          OUT   NOCOPY VARCHAR2
471    ,x_msg_data               OUT   NOCOPY VARCHAR2
472    ,x_msg_count              OUT   NOCOPY NUMBER
473 
474    ,p_claim_rec              IN    OZF_CLAIM_PVT.claim_rec_type
475    ,x_claim_rec              OUT   NOCOPY OZF_CLAIM_PVT.claim_rec_type
476 )
477 IS
478 l_api_version  CONSTANT NUMBER := 1.0;
479 l_api_name     CONSTANT VARCHAR2(30) := 'Complete_Claim_Validation';
480 l_full_name    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || l_api_name;
481 l_return_status         VARCHAR2(1)  := FND_API.g_ret_sts_success;
482 
483 --Added claim_currency_amount check for bug 6828924.
487   ,      amount
484 CURSOR csr_claim_line(cv_claim_id IN NUMBER) IS
485   SELECT claim_line_id
486   ,      currency_code
488   ,      claim_currency_amount
489   ,      acctd_amount
490   ,      earnings_associated_flag
491   ,      performance_complete_flag
492   ,      source_object_class
493   ,      source_object_id
494   ,      source_object_line_id
495   ,      item_id
496   FROM ozf_claim_lines
497   WHERE claim_id = cv_claim_id
498     AND claim_currency_amount <> 0;
499 
500 CURSOR csr_asso_offr_performance(cv_claim_line_id IN NUMBER) IS
501   SELECT op.offer_performance_id
502   FROM ozf_claim_lines_util lu
503   ,    ozf_funds_utilized fu
504   ,    ozf_offer_performances op
505   WHERE lu.utilization_id = fu.utilization_id
506   AND fu.component_type = 'OFFR'
507   AND fu.component_id = op.list_header_id
508   AND (op.requirement_type IS NULL OR op.requirement_type NOT IN ('AMOUNT', 'VOLUME'))
509   AND op.required_flag = 'Y'
510   AND lu.claim_line_id = cv_claim_line_id;
511 
512 CURSOR csr_line_offr_performance(cv_claim_line_id IN NUMBER) IS
513   SELECT op.offer_performance_id
514   FROM ozf_claim_lines ln
515   ,    ozf_offer_performances op
516   WHERE ln.activity_type = 'OFFR'
517   AND ln.activity_id = op.list_header_id
518   AND (op.requirement_type IS NULL OR op.requirement_type NOT IN ('AMOUNT', 'VOLUME'))
519   AND op.required_flag = 'Y'
520   AND ln.claim_line_id = cv_claim_line_id;
521 
522 -- Modified for FXGL Enhancement
523 -- Need to compare line amount with associated util_amounts
524 CURSOR csr_sum_util_amt(cv_claim_line_id IN NUMBER) IS
525   SELECT NVL(SUM(amount), 0)
526   FROM ozf_claim_lines_util
527   WHERE claim_line_id = cv_claim_line_id;
528 
529 CURSOR csr_sum_line_amt(cv_claim_id IN NUMBER) IS
530   SELECT NVL(SUM(claim_currency_amount), 0)
531   FROM ozf_claim_lines
532   WHERE claim_id = cv_claim_id;
533 
534 --Added claim_currency_amount check for bug 6828924.
535 CURSOR csr_line_prom_distinct_chk(cv_claim_id IN NUMBER) IS
536   SELECT distinct earnings_associated_flag
537   FROM ozf_claim_lines
538   WHERE claim_id = cv_claim_id
539     AND claim_currency_amount <> 0;
540 
541 CURSOR csr_gl_date_validate(cv_app_id IN NUMBER, cv_set_of_books_id IN NUMBER) IS
542   SELECT DECODE(MAX(period_name), '', 0, 1)
543   FROM   gl_period_statuses
544   WHERE  application_id = cv_app_id
545   AND    set_of_books_id = cv_set_of_books_id
546   AND    adjustment_period_flag = 'N'
547   AND    SYSDATE BETWEEN start_date AND end_date
548   AND    closing_status IN ('O', 'F');
549 
550 CURSOR csr_sysparam_defaults IS
551   SELECT post_to_gl
552   ,      payables_source
553   ,      batch_source_id
554   ,      gl_id_ded_clearing
555   ,      gl_rec_clearing_account
556   ,      gl_date_type
557   FROM ozf_sys_parameters;
558 
559 CURSOR csr_inv_line(cv_invoice_line_id IN NUMBER) IS
560   SELECT inventory_item_id
561   ,      uom_code
562   ,      quantity_invoiced
563   FROM ra_customer_trx_lines
564   WHERE customer_trx_line_id = cv_invoice_line_id;
565 
566 CURSOR csr_inv_line_exist(cv_invoice_id IN NUMBER, cv_invoice_line_id IN NUMBER) IS
567   SELECT customer_trx_line_id
568   FROM ra_customer_trx_lines
569   WHERE customer_trx_id = cv_invoice_id
570   AND customer_trx_line_id = cv_invoice_line_id;
571 
572 l_claim_line_id         NUMBER;
573 l_line_src_obj_class    VARCHAR2(15);
574 l_line_src_obj_id       NUMBER;
575 l_line_src_obj_line_id  NUMBER;
576 l_line_item_id          NUMBER;
577 l_line_currency         VARCHAR2(15);
578 l_line_amount           NUMBER;
579 l_line_claim_curr_amt   NUMBER;
580 l_line_acctd_amount     NUMBER;
581 l_line_earnings_flag    VARCHAR2(1);
582 l_line_perf_comp_flag   VARCHAR2(1);
583 l_line_sum_curr_amt     NUMBER;
584 l_sum_line_util_amt     NUMBER;
585 l_asso_earnings_exist   BOOLEAN      := FALSE;
586 l_promo_distinct_err    BOOLEAN      := FALSE;
587 l_line_amount_err       BOOLEAN      := FALSE;
588 l_line_util_err         BOOLEAN      := FALSE;
589 l_offr_perf_flag_err    BOOLEAN      := FALSE;
590 l_error                 BOOLEAN      := FALSE;
591 l_asso_offr_perf_id     NUMBER;
592 l_gl_count              NUMBER;
593 l_gl_acc_checking       VARCHAR2(1);
594 l_batch_source_id       NUMBER;
595 l_payables_source       VARCHAR2(30);
596 l_vendor_in_sys         NUMBER;
597 l_rec_clr_in_sys        NUMBER;
598 l_inv_item_id           RA_CUSTOMER_TRX_LINES.inventory_item_id%TYPE;
599 l_inv_uom_code          RA_CUSTOMER_TRX_LINES.uom_code%TYPE;
600 l_inv_quantity          RA_CUSTOMER_TRX_LINES.quantity_invoiced%TYPE;
601 l_inv_line_id           RA_CUSTOMER_TRX_LINES.customer_trx_line_id%TYPE;
602 l_gl_date_type          VARCHAR2(30);
603 l_line_mix_amt_sign     BOOLEAN      := FALSE;
604 
605 -- R12: Earnings are supported for custom settlement
606 CURSOR csr_payment_type(cv_claim_id IN NUMBER) IS
607 SELECT  ocs.seeded_flag
608 FROM    ozf_claim_sttlmnt_methods_all  ocs,
609               ozf_claims_all oc
610 WHERE   claim_id =  cv_claim_id
611 AND     ocs.claim_class = oc.claim_class
612 AND     NVL(ocs.source_object_class,'NULL') = NVL(oc.source_object_class,'NULL')
613 AND     ocs.settlement_method = oc.payment_method ;
614 l_seeded_flag  VARCHAR2(1);
615 
616 BEGIN
620 
617    IF OZF_DEBUG_HIGH_ON THEN
618       OZF_Utility_PVT.debug_message(l_full_name||' : start');
619    END IF;
621    -- Initialize API return status to sucess
622    x_return_status := FND_API.g_ret_sts_success;
623 
624    x_claim_rec := p_claim_rec;
625 
626    ---------------------------
627    -- System Parameters
628    ---------------------------
629    OPEN csr_sysparam_defaults;
630    FETCH csr_sysparam_defaults INTO l_gl_acc_checking
631                                   , l_payables_source
632                                   , l_batch_source_id
633                                   , l_vendor_in_sys
634                                   , l_rec_clr_in_sys
635                                   , l_gl_date_type;
636    CLOSE csr_sysparam_defaults;
637 
638    ---------------------------
639    -- Settlement Method: Required
640    ---------------------------
641    IF p_claim_rec.payment_method IS NULL THEN
642       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
643          FND_MESSAGE.set_name('OZF', 'OZF_SETL_PAYMETHOD_REQ');
644          FND_MSG_PUB.add;
645       END IF;
646       RAISE FND_API.G_EXC_ERROR;
647    END IF;
648 
649    -- Query Claim Line records
650    OPEN csr_claim_line(p_claim_rec.claim_id);
651    LOOP
652       FETCH csr_claim_line INTO l_claim_line_id
653                               , l_line_currency
654                               , l_line_amount
655                               , l_line_claim_curr_amt
656                               , l_line_acctd_amount
657                               , l_line_earnings_flag
658                               , l_line_perf_comp_flag
659                               , l_line_src_obj_class
660                               , l_line_src_obj_id
661                               , l_line_src_obj_line_id
662                               , l_line_item_id;
663       EXIT WHEN csr_claim_line%NOTFOUND;
664 
665       IF l_line_earnings_flag = FND_API.g_true THEN
666          l_asso_earnings_exist :=TRUE;
667 
668          IF NOT l_offr_perf_flag_err THEN
669             -- offer performance checking (1)
670             OPEN csr_asso_offr_performance(l_claim_line_id);
671             LOOP
672                FETCH csr_asso_offr_performance INTO l_asso_offr_perf_id;
673                EXIT WHEN csr_asso_offr_performance%NOTFOUND;
674                IF l_line_perf_comp_flag <> FND_API.g_true THEN
675                   l_offr_perf_flag_err := TRUE;
676                   EXIT;
677                END IF;
678             END LOOP;
679             CLOSE csr_asso_offr_performance;
680          END IF;
681       END IF;
682 
683       -- offer performance checking (2)
684       IF NOT l_offr_perf_flag_err THEN
685          OPEN csr_line_offr_performance(l_claim_line_id);
686          LOOP
687             FETCH csr_line_offr_performance INTO l_asso_offr_perf_id;
688             EXIT WHEN csr_line_offr_performance%NOTFOUND;
689             IF l_line_perf_comp_flag <> FND_API.g_true THEN
690                l_offr_perf_flag_err := TRUE;
691             EXIT;
692             END IF;
693          END LOOP;
694          CLOSE csr_line_offr_performance;
695       END IF;
696 
697       ------------------------------------
698       -- If earnings are associated with Claim,
699       -- claim line acctd Amount has to equal to associated earnings
700       ------------------------------------
701       IF l_asso_earnings_exist THEN
702          OPEN csr_sum_util_amt(l_claim_line_id);
703          FETCH csr_sum_util_amt INTO l_sum_line_util_amt;
704          CLOSE csr_sum_util_amt;
705 
706         -- Modified for FXGL Enhancement
707         -- Need to compare line amount with associated util amounts
708          IF l_line_amount <> l_sum_line_util_amt THEN
709             l_line_util_err := TRUE;
710             EXIT;
711          END IF;
712       END IF;
713 
714       IF l_line_currency = p_claim_rec.currency_code THEN
715          IF l_line_amount <> l_line_claim_curr_amt THEN
716             l_line_amount_err := TRUE;
717          END IF;
718       END IF;
719 
720       -- Invoice/Order Line and Product should be the same.
721       IF l_line_src_obj_class = 'INVOICE' AND
722          l_line_src_obj_id IS NOT NULL THEN
723          IF l_line_src_obj_line_id IS NOT NULL THEN
724             OPEN csr_inv_line(l_line_src_obj_line_id);
725             FETCH csr_inv_line INTO l_inv_item_id
726                                   , l_inv_uom_code
727                                   , l_inv_quantity;
728             CLOSE csr_inv_line;
729 
730             OPEN csr_inv_line_exist(l_line_src_obj_id, l_line_src_obj_line_id);
731             FETCH csr_inv_line_exist INTO l_inv_line_id;
732             CLOSE csr_inv_line_exist;
733 
734             IF l_inv_line_id IS NULL THEN
735                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
736                   FND_MESSAGE.set_name('OZF', 'OZF_SETL_VAL_INV_LINE_ERR');
737                   FND_MSG_PUB.add;
738                END IF;
739                l_error := TRUE;
740             END IF;
741 
742             IF l_line_item_id IS NOT NULL AND
743                l_line_item_id <> l_inv_item_id THEN
744                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
748                l_error := TRUE;
745                   FND_MESSAGE.set_name('OZF', 'OZF_SETL_VAL_LINE_ITEM_DIFF');
746                   FND_MSG_PUB.add;
747                END IF;
749             END IF;
750          END IF;
751       END IF;
752 
753       ------------------------------------
754       -- Only promotional claims are allowed to
755       -- have both positive and negative lines.
756       ------------------------------------
757       IF NOT l_asso_earnings_exist AND
758          SIGN(p_claim_rec.amount_remaining) <> SIGN(l_line_claim_curr_amt) THEN
759          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
760             FND_MESSAGE.set_name('OZF', 'OZF_SETL_LINE_AMT_SIGN_ERR');
761             FND_MSG_PUB.add;
762          END IF;
763          l_error := TRUE;
764       END IF;
765 
766    END LOOP;
767    CLOSE csr_claim_line;
768 
769    IF l_error THEN
770       RAISE FND_API.G_EXC_ERROR;
771    END IF;
772 
773    ---------------------- Validation -----------------------------
774    -----------------------------------------------------
775    -- If earnings are associated with Claim, Claim can only be settled by
776    --     Check
777    --     Credit Memo-On Account
778    --     Debit Memo (for Charge claim class)
779    --     Contra Charge
780    -- Bug4241187: Support RMA, REG_CREDIT_MEMO, PREV CM/DM if
781    -- post_to_gl flag is N.
782    -- R12: Support EFT, WIRE, AP_DEBIT, PREV_OPEN_CREDIT
783   --  and PREV_OPEN_DEBIT
784   --- R12: Support earnings for custom settlement methods
785    -----------------------------------------------------
786    OPEN    csr_payment_type(p_claim_rec.claim_id);
787    FETCH   csr_payment_type INTO l_seeded_flag;
788    CLOSE  csr_payment_type;
789 
790    IF  l_asso_earnings_exist AND NVL(l_seeded_flag, 'N') = 'N' THEN
791          NULL;
792    ELSIF l_asso_earnings_exist AND NVL(l_seeded_flag, 'N') = 'Y' THEN
793       IF p_claim_rec.payment_method IN ( 'CREDIT_MEMO'
794                                        , 'CHECK'
795                                        , 'DEBIT_MEMO'
796                                        , 'CONTRA_CHARGE'
797                                        , 'EFT'
798                                        , 'WIRE'
799                                        , 'AP_DEBIT'
800                                        , 'AP_DEFAULT'
801 				       , 'ACCOUNTING_ONLY' --For R12.1 Enhancement
802                                        ) THEN
803             NULL;
804        ELSIF  p_claim_rec.payment_method IN ( 'REG_CREDIT_MEMO'
805                                        , 'RMA'
806                                        , 'PREV_OPEN_CREDIT'
807                                        , 'PREV_OPEN_DEBIT'
808                                        ) THEN
809             IF NVL(l_gl_acc_checking,'F') = 'T' THEN
810                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
811                   FND_MESSAGE.set_name('OZF', 'OZF_POST_ASSO_PAYMETHOD_ERR');
812                   FND_MSG_PUB.add;
813                END IF;
814                RAISE FND_API.G_EXC_ERROR;
815             END IF;
816       ELSE
817              IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
818                 FND_MESSAGE.set_name('OZF', 'OZF_SETL_ASSO_PAYMETHOD_ERR');
819                 FND_MSG_PUB.add;
820              END IF;
821              RAISE FND_API.G_EXC_ERROR;
822       END IF;
823    END IF;
824 
825    ---------------------------
826    -- Claim Line Validation
827    ---------------------------
828    -- raise error when line amount not equal to utilizations associated
829    IF l_line_util_err THEN
830       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
831          FND_MESSAGE.set_name('OZF', 'OZF_SETL_COMP_LINE_UTIL_ERR');
832          FND_MSG_PUB.add;
833       END IF;
834       RAISE FND_API.G_EXC_ERROR;
835    END IF;
836 
837    -- raise error if performance complete is required.
838    IF l_offr_perf_flag_err THEN
839       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
840          FND_MESSAGE.set_name('OZF', 'OZF_SETL_COMP_LINE_PERF_ERR');
841          FND_MSG_PUB.add;
842       END IF;
843       RAISE FND_API.G_EXC_ERROR;
844    END IF;
845 
846    OPEN csr_sum_line_amt(p_claim_rec.claim_id);
847    FETCH csr_sum_line_amt INTO l_line_sum_curr_amt;
848    CLOSE csr_sum_line_amt;
849 
850    -- line amount should be equal to claim_currency_amount
851    -- if curreny code is the same as claim.
852    IF l_line_amount_err THEN
853       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
854          FND_MESSAGE.set_name('OZF', 'OZF_SETL_LINE_AMT_ERR');
855          FND_MSG_PUB.add;
856       END IF;
857       RAISE FND_API.G_EXC_ERROR;
858    END IF;
859 
860    -- For payment_method other then credit memo or debit memo without specifying payment_reference,
861    -- sum of line.claim_currency_amount should be equal to amount_remaining in claim.
862    -- sum of line.claim_currency_amount could not be equal to amount_remaining in claim
863    -- in case of 1. CREDIT_MEMO settlement
864    --            2. DEBIT_MEMO settlement
865    --            3. CHECK settlement
869       l_line_sum_curr_amt = 0 THEN
866    --            4. RMA settlement
867    --- R12: Also EFT, WIRE, AP_DEBIT
868    IF l_line_sum_curr_amt IS NULL OR
870          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
871             FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_SETL_AMOUNT_ERR');
872             FND_MSG_PUB.add;
873          END IF;
874          RAISE FND_API.G_EXC_ERROR;
875    ELSIF l_line_sum_curr_amt <> p_claim_rec.amount_remaining THEN
876       IF p_claim_rec.payment_method IN ('CREDIT_MEMO',
877                                         'DEBIT_MEMO',
878                                         'RMA',
879                                         'CHECK',
880                                         'EFT',
881                                         'WIRE',
882                                         'AP_DEBIT',
883                                         'AP_DEFAULT',
884 					'ACCOUNTING_ONLY') THEN --R12.1 Enhancement
885          NULL;
886       ELSE
887          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
888             FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_SETL_AMOUNT_ERR');
889             FND_MSG_PUB.add;
890          END IF;
891          RAISE FND_API.G_EXC_ERROR;
892       END IF;
893    END IF;
894 
895    ---------------------------
896    -- Fully Promotional Line Check:
897    --    either promotional or non-promontial check
898    ---------------------------
899    OPEN csr_line_prom_distinct_chk(p_claim_rec.claim_id);
900    LOOP
901       FETCH csr_line_prom_distinct_chk INTO l_line_earnings_flag;
902       EXIT WHEN csr_line_prom_distinct_chk%NOTFOUND;
903       IF csr_line_prom_distinct_chk%ROWCOUNT > 1 THEN
904          l_promo_distinct_err := TRUE;
905          EXIT;
906       END IF;
907    END LOOP;
908    CLOSE csr_line_prom_distinct_chk;
909 
910    -- raise error if earning associated flag is not distinct.
911    IF l_promo_distinct_err THEN
912       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
913          FND_MESSAGE.set_name('OZF', 'OZF_SETL_COMP_LINE_PROM_ERR');
914          FND_MSG_PUB.add;
915       END IF;
916       RAISE FND_API.G_EXC_ERROR;
917    END IF;
918 
919 
920    ---------------------------
921    -- Owner Id: Required
922    ---------------------------
923    IF p_claim_rec.owner_id IS NULL THEN
924       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
925          FND_MESSAGE.set_name('OZF', 'OZF_SETL_OWNER_REQ');
926          FND_MSG_PUB.add;
927       END IF;
928       RAISE FND_API.G_EXC_ERROR;
929    END IF;
930 
931    ---------------------------
932    -- GL Date: should fall into an open period if entered.
933    ---------------------------
934    IF p_claim_rec.gl_date IS NOT NULL THEN
935          IF p_claim_rec.payment_method IN ( 'CREDIT_MEMO'
936                                           , 'DEBIT_MEMO'
937                                           , 'CHARGEBACK'
938                                           , 'REG_CREDIT_MEMO'
939                                           , 'ON_ACCT_CREDIT'
940                                           , 'WRITE_OFF'
941                                           , 'CONTRA_CHARGE'
942 					  , 'ACCOUNTING_ONLY' -- R12.1 Enhancement: For validating GL date
943                                           ) THEN
944             IF NOT gl_date_in_open(
945                       p_application_id => 222
946                     , p_claim_id       => p_claim_rec.claim_id
947                    ) THEN
948                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
949                   FND_MESSAGE.set_name('OZF', 'OZF_SETL_GLDATE_INVALID');
950                   FND_MSG_PUB.add;
951                END IF;
952                RAISE FND_API.G_EXC_ERROR;
953             END IF;
954          ELSIF p_claim_rec.payment_method IN ('CHECK', 'CONTRA_CHARGE','EFT','WIRE','AP_DEBIT','AP_DEFAULT') THEN
955             IF NOT gl_date_in_open(
956                       p_application_id => 200
957                     , p_claim_id       => p_claim_rec.claim_id
958                    ) THEN
959                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
960                   FND_MESSAGE.set_name('OZF', 'OZF_SETL_GLDATE_INVALID');
961                   FND_MSG_PUB.add;
962                END IF;
963                RAISE FND_API.G_EXC_ERROR;
964             END IF;
965          END IF;
966    ELSE
967          IF l_gl_date_type IS NULL THEN
968             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
969                FND_MESSAGE.set_name('OZF', 'OZF_SETL_GLDATE_DRIVE_ERR');
970                FND_MSG_PUB.add;
971             END IF;
972             RAISE FND_API.G_EXC_ERROR;
973 	 END IF;
974    END IF;
975 
976 
977   /*------------------------------------------------------------------------------*
978    |                           AR  Validation                                     |
979    *------------------------------------------------------------------------------*/
980    IF p_claim_rec.payment_method IN ( 'CREDIT_MEMO'
981                                     , 'DEBIT_MEMO'
982                                     , 'CHARGEBACK'
983                                     , 'REG_CREDIT_MEMO'
987                                     , 'PREV_OPEN_DEBIT'
984                                     , 'ON_ACCT_CREDIT'
985                                     , 'WRITE_OFF'
986                                     , 'PREV_OPEN_CREDIT'
988                                     ) THEN
989 
990       OZF_AR_VALIDATION_PVT.Complete_AR_Validation(
991           p_api_version            => l_api_version
992          ,p_init_msg_list          => FND_API.g_false
993          ,p_commit                 => FND_API.g_false
994          ,p_validation_level       => FND_API.g_valid_level_full
995          ,x_return_status          => l_return_status
996          ,x_msg_data               => x_msg_data
997          ,x_msg_count              => x_msg_count
998          ,p_claim_rec              => p_claim_rec
999       );
1000       IF l_return_status =  FND_API.g_ret_sts_error THEN
1001          RAISE FND_API.g_exc_error;
1002       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1003          RAISE FND_API.g_exc_unexpected_error;
1004       END IF;
1005 
1006   /*------------------------------------------------------------------------------*
1007    |                       RMA  Validation                                        |
1008    *------------------------------------------------------------------------------*/
1009    ELSIF p_claim_rec.payment_method = 'RMA' THEN
1010       OZF_AR_VALIDATION_PVT.Complete_AR_Validation(
1011           p_api_version            => l_api_version
1012          ,p_init_msg_list          => FND_API.g_false
1013          ,p_commit                 => FND_API.g_false
1014          ,p_validation_level       => FND_API.g_valid_level_full
1015          ,x_return_status          => l_return_status
1016          ,x_msg_data               => x_msg_data
1017          ,x_msg_count              => x_msg_count
1018          ,p_claim_rec              => p_claim_rec
1019       );
1020       IF l_return_status =  FND_API.g_ret_sts_error THEN
1021          RAISE FND_API.g_exc_error;
1022       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1023          RAISE FND_API.g_exc_unexpected_error;
1024       END IF;
1025 
1026       OZF_OM_VALIDATION_PVT.Complete_RMA_Validation(
1027           p_api_version            => l_api_version
1028          ,p_init_msg_list          => FND_API.g_false
1029          ,p_validation_level       => FND_API.g_valid_level_full
1030          ,x_return_status          => l_return_status
1031          ,x_msg_data               => x_msg_data
1032          ,x_msg_count              => x_msg_count
1033          ,p_claim_rec              => p_claim_rec
1034          ,x_claim_rec              => x_claim_rec
1035       );
1036       IF l_return_status =  FND_API.g_ret_sts_error THEN
1037          RAISE FND_API.g_exc_error;
1038       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1039          RAISE FND_API.g_exc_unexpected_error;
1040       END IF;
1041 
1042   /*------------------------------------------------------------------------------*
1043    |                       AP  Validation  (CHECK,EFT,WIRE,AP_DEBIT,AP_DEFAULT    |
1044    *------------------------------------------------------------------------------*/
1045    ELSIF p_claim_rec.payment_method IN ( 'CHECK', 'EFT','WIRE','AP_DEBIT','AP_DEFAULT')  THEN
1046       -----------------------------------------------------
1047       -- Payable Source
1048       -----------------------------------------------------
1049       IF l_payables_source IS NULL THEN
1050          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1051             FND_MESSAGE.set_name('OZF', 'OZF_SETL_PAYABLES_SOURCE_NULL');
1052             FND_MSG_PUB.add;
1053          END IF;
1054          RAISE FND_API.G_EXC_ERROR;
1055       END IF;
1056 
1057       -----------------------------------------------------
1058       -- Vendor_Id
1059       -----------------------------------------------------
1060       IF p_claim_rec.vendor_id IS NULL THEN
1061          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1062             FND_MESSAGE.set_name('OZF', 'OZF_SETL_VENDOR_REQ');
1063             FND_MESSAGE.set_token('PAY_METHOD', OZF_Utility_Pvt.get_lookup_meaning('OZF_PAYMENT_METHOD', p_claim_rec.payment_method));
1064             FND_MSG_PUB.add;
1065          END IF;
1066          RAISE FND_API.G_EXC_ERROR;
1067       END IF;
1068 
1069       -----------------------------------------------------
1070       -- Vendor_Site_Id
1071       -----------------------------------------------------
1072       IF p_claim_rec.vendor_site_id IS NULL THEN
1073          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1074             FND_MESSAGE.set_name('OZF', 'OZF_SETL_VENDOR_SITE_REQ');
1075             FND_MESSAGE.set_token('PAY_METHOD', OZF_Utility_Pvt.get_lookup_meaning('OZF_PAYMENT_METHOD', p_claim_rec.payment_method));
1076             FND_MSG_PUB.add;
1077          END IF;
1078          RAISE FND_API.G_EXC_ERROR;
1079       END IF;
1080 
1081       -----------------------------------------------------
1082       -- Vendor Clearing Account
1083       -----------------------------------------------------
1084       -- vendor clearing account must exist in system parameter
1085       IF l_gl_acc_checking = FND_API.g_true THEN
1086          IF l_vendor_in_sys IS NULL THEN
1087             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1088                FND_MESSAGE.set_name('OZF', 'OZF_SETL_VENCLRACC_REQ');
1089                FND_MSG_PUB.add;
1090             END IF;
1091             RAISE FND_API.G_EXC_ERROR;
1095   /*------------------------------------------------------------------------------*
1092          END IF;
1093       END IF;
1094 
1096    |                         CONTRA_CHARGE                                        |
1097    *------------------------------------------------------------------------------*/
1098    ELSIF p_claim_rec.payment_method = 'CONTRA_CHARGE' THEN
1099 
1100       -- check vendor_id
1101       IF p_claim_rec.vendor_id IS NULL THEN
1102          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1103             FND_MESSAGE.set_name('OZF', 'OZF_SETL_VENDOR_REQ');
1104 	    FND_MESSAGE.set_token('PAY_METHOD', OZF_Utility_Pvt.get_lookup_meaning('OZF_PAYMENT_METHOD', p_claim_rec.payment_method));
1105             FND_MSG_PUB.add;
1106          END IF;
1107          RAISE FND_API.G_EXC_ERROR;
1108       END IF;
1109 
1110       -- check vendor_site_id
1111       IF p_claim_rec.vendor_site_id IS NULL THEN
1112          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1113             FND_MESSAGE.set_name('OZF', 'OZF_SETL_VENDOR_SITE_REQ');
1114 	    FND_MESSAGE.set_token('PAY_METHOD', OZF_Utility_Pvt.get_lookup_meaning('OZF_PAYMENT_METHOD', p_claim_rec.payment_method));
1115             FND_MSG_PUB.add;
1116          END IF;
1117          RAISE FND_API.G_EXC_ERROR;
1118       END IF;
1119 
1120 
1121   /*------------------------------------------------------------------------------*
1122    |             NON-SEEDED PAYMENT METHOD                                        |
1123    *------------------------------------------------------------------------------*/
1124    ELSE
1125 
1126       -- R12: Validate depending on AR or AP Settlement
1127       NULL;
1128 
1129    END IF;
1130 
1131    IF OZF_DEBUG_HIGH_ON THEN
1132       OZF_Utility_PVT.debug_message(l_full_name||' : end');
1133    END IF;
1134 EXCEPTION
1135    WHEN FND_API.G_EXC_ERROR THEN
1136       x_return_status := FND_API.G_RET_STS_ERROR;
1137    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1138       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1139    WHEN OTHERS THEN
1140      IF OZF_DEBUG_LOW_ON THEN
1141         FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
1142         FND_MESSAGE.Set_Token('TEXT',l_full_name||' : Error');
1143         FND_MSG_PUB.Add;
1144      END IF;
1145      x_return_status := FND_API.g_ret_sts_unexp_error;
1146 
1147 END Complete_Claim_Validation;
1148 
1149 /*=======================================================================*
1150  | Procedure
1151  |    Complete_Claim
1152  |
1153  | Return
1154  |
1155  | NOTES
1156  |
1157  | HISTORY
1158  |    16-JAN-2003  mchang  Create.
1159  *=======================================================================*/
1160 PROCEDURE Complete_Claim(
1161     p_api_version            IN    NUMBER
1162    ,p_init_msg_list          IN    VARCHAR2
1163    ,p_validation_level       IN    NUMBER
1164 
1165    ,x_return_status          OUT   NOCOPY VARCHAR2
1166    ,x_msg_data               OUT   NOCOPY VARCHAR2
1167    ,x_msg_count              OUT   NOCOPY NUMBER
1168 
1169    ,p_x_claim_rec            IN OUT NOCOPY OZF_CLAIM_PVT.claim_rec_type
1170 )
1171 IS
1172 l_api_version  CONSTANT NUMBER := 1.0;
1173 l_api_name     CONSTANT VARCHAR2(30) := 'Complete_Claim';
1174 l_full_name    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || l_api_name;
1175 l_return_status         VARCHAR2(1)  := FND_API.g_ret_sts_success;
1176 
1177 BEGIN
1178    IF OZF_DEBUG_HIGH_ON THEN
1179       OZF_Utility_PVT.debug_message(l_full_name||' : start');
1180    END IF;
1181 
1182    -- Initialize API return status to sucess
1183    x_return_status := FND_API.g_ret_sts_success;
1184 
1185    IF p_x_claim_rec.payment_method = 'RMA' THEN
1186       IF p_x_claim_rec.order_type_id IS NULL THEN
1187          OZF_OM_VALIDATION_PVT.Get_Default_Order_Type(
1188              p_api_version          => l_api_version
1189             ,p_init_msg_list        => FND_API.g_false
1190             ,p_validation_level     => FND_API.g_valid_level_full
1191             ,x_return_status        => l_return_status
1192             ,x_msg_data             => x_msg_data
1193             ,x_msg_count            => x_msg_count
1194             ,p_reason_code_id       => p_x_claim_rec.reason_code_id
1195             ,p_claim_type_id        => p_x_claim_rec.claim_type_id
1196             ,p_set_of_books_id      => p_x_claim_rec.set_of_books_id
1197             ,x_order_type_id        => p_x_claim_rec.order_type_id
1198          );
1199          IF l_return_status =  FND_API.g_ret_sts_error THEN
1200             RAISE FND_API.g_exc_error;
1201          ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1202             RAISE FND_API.g_exc_unexpected_error;
1203          END IF;
1204       END IF;
1205    ELSE
1206       -- erase RMA transaction type if not for RMA settlement.
1207       p_x_claim_rec.order_type_id := NULL;
1208    END IF;
1209 
1210    IF p_x_claim_rec.payment_method NOT IN ('PREV_OPEN_CREDIT', 'PREV_OPEN_DEBIT', 'CHECK', 'RMA','EFT',
1211                        'AP_DEFAULT','WIRE','AP_DEBIT') THEN
1212       p_x_claim_rec.payment_reference_id := NULL;
1213       p_x_claim_rec.payment_reference_number := NULL;
1214    END IF;
1215 
1216    IF OZF_DEBUG_HIGH_ON THEN
1217       OZF_Utility_PVT.debug_message(l_full_name||' : end');
1218    END IF;
1219 
1220 EXCEPTION
1221    WHEN FND_API.G_EXC_ERROR THEN
1222       x_return_status := FND_API.G_RET_STS_ERROR;
1223    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1224       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1225    WHEN OTHERS THEN
1226      IF OZF_DEBUG_LOW_ON THEN
1227         FND_MESSAGE.Set_Name('OZF','OZF_API_DEBUG_MESSAGE');
1228         FND_MESSAGE.Set_Token('TEXT',l_full_name||' : Error');
1229         FND_MSG_PUB.Add;
1230      END IF;
1231      x_return_status := FND_API.g_ret_sts_unexp_error;
1232 
1233 END Complete_Claim;
1234 
1235 
1236 END OZF_CLAIM_SETTLEMENT_VAL_PVT;