DBA Data[Home] [Help]

PACKAGE BODY: APPS.FV_SLA_AR_PROCESSING_PKG

Source


1 PACKAGE BODY fv_sla_ar_processing_pkg AS
2 --$Header: FVXLAARB.pls 120.4.12020000.2 2013/02/13 14:41:24 snama ship $
3 
4 ---------------------------------------------------------------------------
5 ---------------------------------------------------------------------------
6 
7   c_FAILURE   CONSTANT  NUMBER := -1;
8   c_SUCCESS   CONSTANT  NUMBER := 0;
9   C_GL_APPLICATION CONSTANT NUMBER := 101;
10   C_GL_APPL_SHORT_NAME CONSTANT VARCHAR2(30) := 'SQLGL';
11   C_GL_FLEX_CODE   CONSTANT VARCHAR2(10) := 'GL#';
12   CRLF CONSTANT VARCHAR2(1) := FND_GLOBAL.newline;
13   g_path_name   CONSTANT VARCHAR2(200)  := 'fv.plsql.fvxlaarb.fv_sla_ar_processing_pkg';
14   C_STATE_LEVEL CONSTANT NUMBER       :=  FND_LOG.LEVEL_STATEMENT;
15   C_PROC_LEVEL  CONSTANT  NUMBER       :=  FND_LOG.LEVEL_PROCEDURE;
16 
17   --AR Attribute Category
18   TYPE ARCategoryTabType IS TABLE OF fv_ar_acc_category_map_dtl.transaction_category%TYPE INDEX BY BINARY_INTEGER;
19   g_ar_category_tab ARCategoryTabType;
20 
21   PROCEDURE trace
22   (
23     p_level             IN NUMBER,
24     p_procedure_name    IN VARCHAR2,
25     p_debug_info        IN VARCHAR2
26   )
27   IS
28   BEGIN
29     fv_sla_utl_processing_pkg.trace
30     (
31       p_level             => p_level,
32       p_procedure_name    => p_procedure_name,
33       p_debug_info        => p_debug_info
34     );
35   END trace;
36 
37   PROCEDURE stack_error
38   (
39     p_program_name  IN VARCHAR2,
40     p_location      IN VARCHAR2,
41     p_error_message IN VARCHAR2
42   )
43   IS
44   BEGIN
45     fv_sla_utl_processing_pkg.stack_error
46     (
47       p_program_name  => p_program_name,
48       p_location      => p_location,
49       p_error_message => p_error_message
50     );
51   END;
52 
53   PROCEDURE init
54   IS
55     l_procedure_name       VARCHAR2(100) :='.init';
56   BEGIN
57     trace(C_STATE_LEVEL, l_procedure_name, 'Package Information');
58     trace(C_STATE_LEVEL, l_procedure_name, '$Header: FVXLAARB.pls 120.4.12020000.2 2013/02/13 14:41:24 snama ship $');
59   END;
60 
61   PROCEDURE get_ar_transaction_category
62   (
63     p_org_id             IN NUMBER,
64     p_rec_attribute_type IN fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE,
65     p_rec_atrribute_id   IN fv_ar_acc_category_map_dtl.receivable_attribute_id%TYPE,
66     p_rec_attribute_cat  OUT NOCOPY fv_ar_acc_category_map_dtl.transaction_category%TYPE,
67     p_error_code         OUT NOCOPY NUMBER,
68     p_error_desc         OUT NOCOPY VARCHAR2
69   )
70   IS
71     l_procedure_name VARCHAR2(100) :='.get_ar_transaction_category';
72     l_hash_value     NUMBER;
73   BEGIN
74     l_procedure_name := g_path_name || l_procedure_name;
75     p_error_code := c_SUCCESS;
76     p_error_desc := NULL;
77     -------------------------------------------------------------------------
78     trace(C_STATE_LEVEL, l_procedure_name, 'BEGIN');
79     trace(C_STATE_LEVEL, l_procedure_name, 'p_org_id='||p_org_id);
80     trace(C_STATE_LEVEL, l_procedure_name, 'p_rec_attribute_type='||p_rec_attribute_type);
81     trace(C_STATE_LEVEL, l_procedure_name, 'p_rec_atrrinbute_id='||p_rec_atrribute_id);
82     -------------------------------------------------------------------------
83 /* Commented out for bug: 14098827
84    l_hash_value := DBMS_UTILITY.get_hash_value
85                     (
86                       name => 'ORG_ID:'||p_org_id||'@*?ATTRIBUTE_TYPE:'||p_rec_attribute_type||'@*?ATTRIBUTE_ID:'||p_rec_atrribute_id||'@*?END:',
87                       base => 1000,
88                       hash_size => 32768
89                     );
90 
91     IF g_ar_category_tab.EXISTS(l_hash_value) THEN
92       p_rec_attribute_cat := g_ar_category_tab(l_hash_value);
93     ELSE
94 */
95       BEGIN
96         SELECT d.transaction_category
97           INTO p_rec_attribute_cat
98           FROM fv_ar_acc_category_map_hdr h,
99                fv_ar_acc_category_map_dtl d
100          WHERE h.fv_sla_map_hdr_id = d.fv_sla_map_hdr_id
101            AND NVL(h.org_id, -1) = NVL(p_org_id, -1)
102            AND h.receivable_attribute_type = p_rec_attribute_type
103            AND d.receivable_attribute_id = p_rec_atrribute_id;
104       EXCEPTION
105         WHEN NO_DATA_FOUND THEN
106           p_rec_attribute_cat := NULL;
107         WHEN OTHERS THEN
108           p_error_code := c_FAILURE;
109           fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
110           fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
111           p_error_desc := fnd_message.get;
112           stack_error (l_procedure_name, 'LEDGER_TAB', p_error_desc);
113           trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:LEDGER_TAB:'||p_error_desc);
114       END;
115 /*
116     END IF;
117 
118     IF (p_error_code = c_SUCCESS) THEN
119       g_ar_category_tab(l_hash_value) := p_rec_attribute_cat;
120     END IF;
121 */
122     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_attribute_cat='||p_rec_attribute_cat);
123     trace(C_PROC_LEVEL, l_procedure_name, 'END');
124   EXCEPTION
125     WHEN OTHERS THEN
126       p_error_code := c_FAILURE;
127       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
128       fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
129       p_error_desc := fnd_message.get;
130       fv_sla_utl_processing_pkg.stack_error (l_procedure_name, 'FINAL', p_error_desc);
131       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:FINAL:'||p_error_desc);
132   END;
133 
134   PROCEDURE get_ar_invoice_details
135   (
136     p_transcation_id     IN NUMBER,
137     p_org_id             OUT NOCOPY NUMBER,
138     p_customer_id        OUT NOCOPY NUMBER,
139     p_rec_atrribute_id   OUT NOCOPY NUMBER,
140     p_rec_attribute_type OUT NOCOPY fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE,
141     p_error_code         OUT NOCOPY NUMBER,
142     p_error_desc         OUT NOCOPY VARCHAR2
143   )
144   IS
145     l_procedure_name     VARCHAR2(100) :='.get_ar_invoice_details';
146   BEGIN
147     l_procedure_name := g_path_name || l_procedure_name;
148 
149     p_error_code := c_SUCCESS;
150     p_error_desc := NULL;
151     -------------------------------------------------------------------------
152     trace(C_STATE_LEVEL, l_procedure_name, 'BEGIN');
153     trace(C_STATE_LEVEL, l_procedure_name, 'p_transcation_id='||p_transcation_id);
154     -------------------------------------------------------------------------
155 
156     p_rec_attribute_type := 'TT';
157     BEGIN
158       SELECT h.org_id,
159              h.cust_trx_type_id,
160              h.bill_to_customer_id
161         INTO p_org_id,
162              p_rec_atrribute_id,
163              p_customer_id
164         FROM ra_customer_trx_all h
165        WHERE customer_trx_id = p_transcation_id;
166     EXCEPTION
167       WHEN OTHERS THEN
168         p_error_code := c_FAILURE;
169         fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
170         fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
171         p_error_desc := fnd_message.get;
172         stack_error (l_procedure_name, 'ra_customer_trx_all_tab', p_error_desc);
173         trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:ra_customer_trx_all_tab:'||p_error_desc);
174     END;
175 
176     trace(C_PROC_LEVEL, l_procedure_name, 'p_org_id='||p_org_id);
177     trace(C_PROC_LEVEL, l_procedure_name, 'p_customer_id='||p_customer_id);
178     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_atrribute_id='||p_rec_atrribute_id);
179     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_attribute_type='||p_rec_attribute_type);
180     trace(C_PROC_LEVEL, l_procedure_name, 'END');
181   EXCEPTION
182     WHEN OTHERS THEN
183       p_error_code := c_FAILURE;
184       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
185       fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
186       p_error_desc := fnd_message.get;
187       stack_error (l_procedure_name, 'FINAL', p_error_desc);
188       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:FINAL:'||p_error_desc);
189   END;
190 
191   PROCEDURE get_ar_receipt_details
192   (
193     p_transcation_id     IN NUMBER,
194     p_org_id             OUT NOCOPY NUMBER,
195     p_customer_id        OUT NOCOPY NUMBER,
196     p_rec_atrribute_id   OUT NOCOPY NUMBER,
197     p_rec_attribute_type OUT NOCOPY fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE,
198     p_error_code         OUT NOCOPY NUMBER,
199     p_error_desc         OUT NOCOPY VARCHAR2
200   )
201   IS
202     l_procedure_name     VARCHAR2(100) :='.get_ar_receipt_details';
203     l_project_id         pa_projects.project_id%TYPE;
204     l_rect_type  ar_cash_receipts_all.type%TYPE;
205   BEGIN
206     l_procedure_name := g_path_name || l_procedure_name;
207 
208     p_error_code := c_SUCCESS;
209     p_error_desc := NULL;
210     -------------------------------------------------------------------------
211     trace(C_STATE_LEVEL, l_procedure_name, 'BEGIN');
212     trace(C_STATE_LEVEL, l_procedure_name, 'p_transcation_id='||p_transcation_id);
213     -------------------------------------------------------------------------
214 
215     p_rec_attribute_type := 'RM';
216     BEGIN
217 
218       SELECT type
219       INTO l_rect_type
220       FROM ar_cash_receipts_all
221       WHERE cash_receipt_id = p_transcation_id;
222 
223     --Misc receipts will not have cust info, so bypassing
224     --this select for misc receipts
225     IF l_rect_type <>  'MISC' THEN
226       SELECT h.org_id,
227              h.receipt_method_id,
228              hcas.cust_account_id
229         INTO p_org_id,
230              p_rec_atrribute_id,
231              p_customer_id
232         FROM ar_cash_receipts_all h,
233              hz_cust_site_uses_all hcsu,
234              hz_cust_acct_sites_all hcas
235        WHERE h.cash_receipt_id = p_transcation_id
236          AND hcsu.site_use_id = h.customer_site_use_id
237          AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id;
238     END IF;
239     EXCEPTION
240       WHEN OTHERS THEN
241         p_error_code := c_FAILURE;
242         fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
243         fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
244         p_error_desc := fnd_message.get;
245         stack_error (l_procedure_name, 'ar_cash_receipts_all_tab', p_error_desc);
246         trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:ar_cash_receipts_all_tab:'||p_error_desc);
247 
248     END;
249     p_org_id := -1;
250 
251 
252     trace(C_PROC_LEVEL, l_procedure_name, 'p_org_id='||p_org_id);
253     trace(C_PROC_LEVEL, l_procedure_name, 'p_customer_id='||p_customer_id);
254     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_atrribute_id='||p_rec_atrribute_id);
255     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_attribute_type='||p_rec_attribute_type);
256     trace(C_PROC_LEVEL, l_procedure_name, 'END');
257   EXCEPTION
258     WHEN OTHERS THEN
259       p_error_code := c_FAILURE;
260       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
261       fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
262       p_error_desc := fnd_message.get;
263       stack_error (l_procedure_name, 'FINAL', p_error_desc);
264       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:FINAL:'||p_error_desc);
265   END;
266 
267   PROCEDURE get_ar_adjustment_details
268   (
269     p_transcation_id     IN NUMBER,
270     p_org_id             OUT NOCOPY NUMBER,
271     p_customer_id        OUT NOCOPY NUMBER,
272     p_rec_atrribute_id   OUT NOCOPY NUMBER,
273     p_rec_attribute_type OUT NOCOPY fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE,
274     p_error_code         OUT NOCOPY NUMBER,
275     p_error_desc         OUT NOCOPY VARCHAR2
276   )
277   IS
278     l_procedure_name     VARCHAR2(100) :='.get_ar_adjustment_details';
279   BEGIN
280     l_procedure_name := g_path_name || l_procedure_name;
281 
282     p_error_code := c_SUCCESS;
283     p_error_desc := NULL;
284     -------------------------------------------------------------------------
285     trace(C_STATE_LEVEL, l_procedure_name, 'BEGIN');
286     trace(C_STATE_LEVEL, l_procedure_name, 'p_transcation_id='||p_transcation_id);
287     -------------------------------------------------------------------------
288 
289     p_rec_attribute_type := 'RA';
290     BEGIN
291 /*
292       SELECT h.org_id,
293              h.receivables_trx_id,
294              hcas.cust_account_id
295         INTO p_org_id,
296              p_rec_atrribute_id,
297              p_customer_id
298         FROM ar_adjustments_all h,
299              ar_cash_receipts_all acr,
300              hz_cust_site_uses_all hcsu,
301              hz_cust_acct_sites_all hcas
302        WHERE h.adjustment_id = p_transcation_id
303          AND h.associated_cash_receipt_id = acr.cash_receipt_id
304          AND hcsu.site_use_id = acr.customer_site_use_id
305          AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id;
306 */
307 
308       SELECT h.org_id,
309              h.receivables_trx_id,
310              hcas.cust_account_id
311         INTO p_org_id,
312              p_rec_atrribute_id,
313              p_customer_id
314         FROM ar_adjustments_all h,
315              ra_customer_trx_all acr,
316              hz_cust_site_uses_all hcsu,
317              hz_cust_acct_sites_all hcas
318        WHERE h.adjustment_id = p_transcation_id
319          AND h.customer_trx_id = acr.customer_trx_id
320          AND hcsu.site_use_id = acr.bill_to_site_use_id
321          AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id;
322 
323     EXCEPTION
324       WHEN OTHERS THEN
325         p_error_code := c_FAILURE;
326         fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
327         fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
328         p_error_desc := fnd_message.get;
329         stack_error (l_procedure_name, 'ar_adjustments_all_tab', p_error_desc);
330         trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:ar_adjustments_all_tab:'||p_error_desc);
331     END;
332 
333     trace(C_PROC_LEVEL, l_procedure_name, 'p_org_id='||p_org_id);
334     trace(C_PROC_LEVEL, l_procedure_name, 'p_customer_id='||p_customer_id);
335     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_atrribute_id='||p_rec_atrribute_id);
336     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_attribute_type='||p_rec_attribute_type);
337     trace(C_PROC_LEVEL, l_procedure_name, 'END');
338   EXCEPTION
339     WHEN OTHERS THEN
340       p_error_code := c_FAILURE;
341       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
342       fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
343       p_error_desc := fnd_message.get;
344       stack_error (l_procedure_name, 'FINAL', p_error_desc);
345       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:FINAL:'||p_error_desc);
346   END;
347 
348   PROCEDURE get_ar_document_details
349   (
350     p_event_id           IN NUMBER,
351     p_org_id             OUT NOCOPY NUMBER,
352     p_customer_id        OUT NOCOPY NUMBER,
353     p_rec_atrribute_id   OUT NOCOPY NUMBER,
354     p_rec_attribute_type OUT NOCOPY fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE,
355     p_error_code         OUT NOCOPY NUMBER,
356     p_error_desc         OUT NOCOPY VARCHAR2
357   )
358   IS
359     l_procedure_name     VARCHAR2(100) :='.get_ar_document_details';
360     l_entity_code        xla_transaction_entities.entity_code%TYPE;
361     l_transcation_id     xla_transaction_entities.source_id_int_1%TYPE;
362   BEGIN
363     l_procedure_name := g_path_name || l_procedure_name;
364 
365     p_error_code := c_SUCCESS;
366     p_error_desc := NULL;
367     -------------------------------------------------------------------------
368     trace(C_STATE_LEVEL, l_procedure_name, 'BEGIN');
369     trace(C_STATE_LEVEL, l_procedure_name, 'p_event_id='||p_event_id);
370     -------------------------------------------------------------------------
371 
372     BEGIN
373       SELECT t.source_id_int_1,
374              t.entity_code
375         INTO l_transcation_id,
376              l_entity_code
377         FROM xla_events e,
378              xla_transaction_entities t
379        WHERE e.entity_id = t.entity_id
380          AND e.event_id = p_event_id;
381 
382       trace(C_PROC_LEVEL, l_procedure_name, 'l_entity_code='||l_entity_code);
383       trace(C_PROC_LEVEL, l_procedure_name, 'l_transcation_id='||l_transcation_id);
384     EXCEPTION
385       WHEN OTHERS THEN
386         p_error_code := c_FAILURE;
387         fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
388         fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
389         p_error_desc := fnd_message.get;
390         stack_error (l_procedure_name, 'xla_events_tab', p_error_desc);
391         trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:xla_events_tab:'||p_error_desc);
392     END;
393 
394     p_rec_atrribute_id := NULL;
395     IF (p_error_code = c_SUCCESS) THEN
396       IF (l_entity_code = 'TRANSACTIONS') THEN
397         get_ar_invoice_details
398         (
399           p_transcation_id     => l_transcation_id,
400           p_org_id             => p_org_id,
401           p_customer_id        => p_customer_id,
402           p_rec_atrribute_id   => p_rec_atrribute_id,
403           p_rec_attribute_type => p_rec_attribute_type,
404           p_error_code         => p_error_code,
405           p_error_desc         => p_error_desc
406         );
407       ELSIF (l_entity_code = 'RECEIPTS') THEN
408         get_ar_receipt_details
409         (
410           p_transcation_id     => l_transcation_id,
411           p_org_id             => p_org_id,
412           p_customer_id        => p_customer_id,
413           p_rec_atrribute_id   => p_rec_atrribute_id,
414           p_rec_attribute_type => p_rec_attribute_type,
415           p_error_code         => p_error_code,
416           p_error_desc         => p_error_desc
417         );
418       ELSIF (l_entity_code = 'ADJUSTMENTS') THEN
419         get_ar_adjustment_details
420         (
421           p_transcation_id     => l_transcation_id,
422           p_org_id             => p_org_id,
423           p_customer_id        => p_customer_id,
424           p_rec_atrribute_id   => p_rec_atrribute_id,
425           p_rec_attribute_type => p_rec_attribute_type,
426           p_error_code         => p_error_code,
427           p_error_desc         => p_error_desc
428         );
429       END IF;
430     END IF;
431 
432     trace(C_PROC_LEVEL, l_procedure_name, 'p_org_id='||p_org_id);
433     trace(C_PROC_LEVEL, l_procedure_name, 'p_customer_id='||p_customer_id);
434     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_atrribute_id='||p_rec_atrribute_id);
435     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_attribute_type='||p_rec_attribute_type);
436     trace(C_PROC_LEVEL, l_procedure_name, 'END');
437   EXCEPTION
438     WHEN OTHERS THEN
439       p_error_code := c_FAILURE;
440       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
441       fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
442       p_error_desc := fnd_message.get;
443       stack_error (l_procedure_name, 'FINAL', p_error_desc);
444       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:FINAL:'||p_error_desc);
445   END;
446 
447   PROCEDURE get_receipt_info_for_pr
448   (
449     p_transcation_id     IN NUMBER,
450     p_rec_attribute_cat  OUT NOCOPY fv_ar_acc_category_map_dtl.transaction_category%TYPE,
451     p_advance_required   OUT NOCOPY VARCHAR2,
452     p_advance_amount     OUT NOCOPY NUMBER,
453     p_customer_id        OUT NOCOPY NUMBER,
454     p_error_code         OUT NOCOPY NUMBER,
455     p_error_desc         OUT NOCOPY VARCHAR2
456   )
457   IS
458     l_procedure_name     VARCHAR2(100) :='.get_receipt_info_for_pr';
459     l_org_id             NUMBER;
460     l_rec_atrribute_id   NUMBER;
461     l_rec_attribute_type fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE;
462     l_cash_receipt_id    ar_receivable_applications_all.cash_receipt_id%TYPE;
463     l_payment_set_id     ar_receivable_applications_all.payment_set_id%TYPE;
464     l_stmt               VARCHAR2(2000);
465   BEGIN
466     l_procedure_name := g_path_name || l_procedure_name;
467 
468     p_error_code := c_SUCCESS;
469     p_error_desc := NULL;
470     p_advance_required := NULL;
471     p_advance_amount   := 0;
472     -------------------------------------------------------------------------
473     trace(C_STATE_LEVEL, l_procedure_name, 'BEGIN');
474     trace(C_STATE_LEVEL, l_procedure_name, 'p_transcation_id='||p_transcation_id);
475     -------------------------------------------------------------------------
476 
477     BEGIN
478       SELECT cash_receipt_id,
479              payment_set_id
480         INTO l_cash_receipt_id,
481              l_payment_set_id
482         FROM ar_receivable_applications_all ara
483        WHERE ara.receivable_application_id = p_transcation_id;
484       trace(C_STATE_LEVEL, l_procedure_name, 'l_cash_receipt_id='||l_cash_receipt_id);
485       trace(C_STATE_LEVEL, l_procedure_name, 'l_payment_set_id='||l_payment_set_id);
486     EXCEPTION
487       WHEN OTHERS THEN
488         p_error_code := c_FAILURE;
489         fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
490         fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
491         p_error_desc := fnd_message.get;
492         stack_error (l_procedure_name, 'ar_receivable_applications_all', p_error_desc);
493         trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:ar_receivable_applications_all:'||p_error_desc);
494     END;
495 
496     IF (p_error_code = c_SUCCESS) THEN
497       get_ar_receipt_details
498       (
499         p_transcation_id     => l_cash_receipt_id,
500         p_org_id             => l_org_id,
501         p_customer_id        => p_customer_id,
502         p_rec_atrribute_id   => l_rec_atrribute_id,
503         p_rec_attribute_type => l_rec_attribute_type,
504         p_error_code         => p_error_code,
505         p_error_desc         => p_error_desc
506       );
507     END IF;
508 
509     IF (p_error_code = c_SUCCESS AND l_rec_atrribute_id IS NOT NULL) THEN
510       get_ar_transaction_category
511       (
512         p_org_id             => l_org_id,
513         p_rec_attribute_type => l_rec_attribute_type,
514         p_rec_atrribute_id   => l_rec_atrribute_id,
515         p_rec_attribute_cat  => p_rec_attribute_cat,
516         p_error_code         => p_error_code,
517         p_error_desc         => p_error_desc
518       );
519     END IF;
520 
521     IF (p_error_code = c_SUCCESS AND l_rec_atrribute_id IS NOT NULL) THEN
522       BEGIN
523         /* Dynamic query used because the below columns exist only in 12.1+*/
524         trace(C_STATE_LEVEL, l_procedure_name, 'Executing Dynamic Statement');
525         l_stmt := 'SELECT advance_required, advance_amount
526                      FROM pa_agreements_all
527                     WHERE payment_set_id = :l_payment_set_id';
528         EXECUTE IMMEDIATE l_stmt INTO p_advance_required, p_advance_amount;
529       EXCEPTION
530         WHEN OTHERS THEN
531           trace(C_STATE_LEVEL, l_procedure_name, 'Dynamic Statement returned error:'||SQLERRM);
532           p_advance_required := NULL;
533           p_advance_amount := 0;
534       END;
535     END IF;
536 
537     trace(C_PROC_LEVEL, l_procedure_name, 'p_rec_attribute_cat='||p_rec_attribute_cat);
538     trace(C_PROC_LEVEL, l_procedure_name, 'END');
539   EXCEPTION
540     WHEN OTHERS THEN
541       p_error_code := c_FAILURE;
542       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
543       fnd_message.set_token('MESSAGE' , 'System Error :'||SQLERRM);
544       p_error_desc := fnd_message.get;
545       stack_error (l_procedure_name, 'FINAL', p_error_desc);
546       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR:FINAL:'||p_error_desc);
547   END;
548 
549   PROCEDURE ar_extract
550   (
551     p_application_id               IN            NUMBER,
552     p_accounting_mode              IN            VARCHAR2
553   )
554   IS
555     l_procedure_name     VARCHAR2(100):='.AR_EXTRACT';
556     l_index              NUMBER;
557     l_ledger_info        fv_sla_utl_processing_pkg.LedgerRecType;
558     l_error_code         NUMBER;
559     l_gt_error_code      NUMBER;
560     l_error_desc         VARCHAR2(1024);
561     l_fund_value         VARCHAR(30);
562     l_account_value      VARCHAR2(30);
563     l_bfy_value          VARCHAR2(30);
564     l_fv_extract_detail  fv_sla_utl_processing_pkg.fv_ref_detail;
565     l_treasury_symbol_id fv_treasury_symbols.treasury_symbol_id%TYPE;
566     l_treasury_symbol    fv_treasury_symbols.treasury_symbol%TYPE;
567     l_fund_category      fv_fund_parameters.fund_category%TYPE;
568     l_fund_status        VARCHAR2(100);
569     l_fund_time_frame    fv_treasury_symbols.time_frame%TYPE;
570     l_rec_attribute_cat  fv_ar_acc_category_map_dtl.transaction_category%TYPE;
571     l_pya                VARCHAR2(1);
572     l_pya_type           VARCHAR2(20);
573     l_no_pya_acct_flag   fv_treasury_symbols.no_pya_acct_flag%TYPE;
574     l_direct_or_reimb    VARCHAR2(1);
575     l_fund_type		 fv_treasury_symbols.fund_type%TYPE;
576     l_rec_atrribute_id   NUMBER;
577     l_rec_attribute_type fv_ar_acc_category_map_hdr.receivable_attribute_type%TYPE;
578     l_org_id             NUMBER;
579     l_customer_id        NUMBER;
580     l_fed_non_fed_ind    VARCHAR2(1);
581 
582     CURSOR cur_ar_inv_extract_details
583     (
584       c_event_id NUMBER
585     )
586     IS
587     SELECT l.event_id,
588            l.trx_line_dist_ccid,
589            l.line_number
590       FROM ar_cust_trx_lines_l_v l
591      WHERE l.event_id = c_event_id
592        AND l.trx_line_dist_account_class = 'REV';
593 
594     CURSOR cur_ar_cm_extract_details
595     (
596       c_event_id NUMBER
597     )
598     IS
599     SELECT l.event_id,
600            l.trx_line_dist_ccid,
601            l.line_number
602       FROM ar_cust_trx_lines_l_v l
603      WHERE l.event_id = c_event_id
604        AND l.trx_line_dist_account_class = 'REV';
605 
606     CURSOR cur_ar_rct_extract_details
607     (
608       c_event_id         NUMBER
609     ) IS
610     SELECT d.event_id,
611            d.line_number,
612            d.dist_code_combination_id,
613            l.trx_line_dist_ccid
614       FROM ar_distributions_l_v d,
615            ar_cust_trx_lines_l_v l
616      WHERE d.dist_source_type IN ('REC', 'ADJ')
617        AND l.event_id    = d.event_id
618        AND l.line_number  = d.line_number
619        AND d.event_id = c_event_id
620        AND NVL(d.dist_ref_mf_dist_flag||d.dist_source_table_secondary, ' ') <> 'UUPMFCHMIAR'
621     UNION
622     SELECT d.event_id,
623            d.line_number,
624            d.dist_code_combination_id,
625            d.dist_code_combination_id trx_line_dist_ccid
626       FROM ar_distributions_l_v d
627      WHERE d.dist_source_type IN ('ACC', 'OTHER ACC')
628        AND d.event_id = c_event_id
629        AND NVL(d.dist_ref_mf_dist_flag||d.dist_source_table_secondary, ' ') <> 'UUPMFCHMIAR';
630 
631     CURSOR cur_misc_rct_extract_details
632     (
633       c_event_id NUMBER
634     )
635     IS
636     SELECT arv.event_id,
637            arv.line_number,
638            arv.dist_code_combination_id
639       FROM ar_distributions_l_v arv
640      WHERE arv.event_id = c_event_id
641        AND dist_source_type = 'MISCCASH'
642        AND dist_mfar_additional_entry = 'Y'
643        AND dist_paired_source_type = 'CLEARED';
644 
645 
646 
647   BEGIN
648     l_procedure_name := g_path_name || l_procedure_name;
649     trace(C_STATE_LEVEL, l_procedure_name, 'Begin of procedure '||l_procedure_name);
650     trace(C_STATE_LEVEL, l_procedure_name, 'Accounting Mode: ' || p_accounting_mode);
651     trace(C_STATE_LEVEL, l_procedure_name, 'Application ID:  ' || p_application_id);
652 
653     /* Validate the application ID */
654     IF (p_application_id <> 222) THEN
655         RETURN;
656     END IF;
657 
658     /* Validate the accounting mode */
659     IF (p_accounting_mode NOT IN ('D', 'F')) THEN
660         RETURN;
661     END IF;
662 
663     l_index:=0;
664     FOR event_rec IN (SELECT *
665                         FROM xla_events_gt
666                        WHERE application_id = p_application_id) LOOP
667       fv_sla_utl_processing_pkg.get_ledger_info
668       (
669         p_ledger_id  => event_rec.ledger_id,
670         p_ledger_rec => l_ledger_info,
671         p_error_code => l_error_code,
672         p_error_desc => l_error_desc
673       );
674 
675       IF (l_error_code = c_SUCCESS) THEN
676         get_ar_document_details
677         (
678           p_event_id           => event_rec.event_id,
679           p_org_id             => l_org_id,
680           p_customer_id        => l_customer_id,
681           p_rec_atrribute_id   => l_rec_atrribute_id,
682           p_rec_attribute_type => l_rec_attribute_type,
683           p_error_code         => l_error_code,
684           p_error_desc         => l_error_desc
685         );
686       END IF;
687 
688       IF (l_error_code = c_SUCCESS) THEN
689         get_ar_transaction_category
690         (
691           p_org_id             => l_org_id,
692           p_rec_attribute_type => l_rec_attribute_type,
693           p_rec_atrribute_id   => l_rec_atrribute_id,
694           p_rec_attribute_cat  => l_rec_attribute_cat,
695           p_error_code         => l_error_code,
696           p_error_desc         => l_error_desc
697         );
698       END IF;
699 
700       IF (l_error_code = C_SUCCESS) THEN
701         trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_fed_non_fed_ind');
702         trace(C_STATE_LEVEL, l_procedure_name, 'l_customer_id='||l_customer_id);
703         fv_sla_utl_processing_pkg.get_fed_non_fed_ind
704         (
705           p_cust_vend_id     => l_customer_id,
706           p_cust_or_vend     => 'C',
707           p_fed_non_fed_ind  => l_fed_non_fed_ind,
708           p_error_code       => l_error_code,
709           p_error_desc       => l_error_desc
710         );
711         trace(C_STATE_LEVEL, l_procedure_name, 'get_fed_non_fed_ind Returned');
712         trace(C_STATE_LEVEL, l_procedure_name, 'l_fed_non_fed_ind='||l_fed_non_fed_ind);
713         trace(C_STATE_LEVEL, l_procedure_name, 'l_error_code='||l_error_code);
714         trace(C_STATE_LEVEL, l_procedure_name, 'l_error_desc='||l_error_desc);
715       END IF;
716 
717       IF (l_error_code = c_SUCCESS) THEN
718         trace(C_STATE_LEVEL, l_procedure_name, 'event_rec.event_type_code: ' || event_rec.event_type_code);
719         IF (event_rec.event_type_code IN ('INV_CREATE',
720                                           'INV_UPDATE',
721                                           'DM_CREATE',
722                                           'DM_UPDATE',
723                                           'CM_CREATE',
724                                           'CM_UPDATE'
725                                           )) THEN
726           FOR inv_rec IN cur_ar_inv_extract_details(event_rec.event_id) LOOP
727             IF (l_error_code = C_SUCCESS) THEN
728               trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_segment_values');
729               trace(C_STATE_LEVEL, l_procedure_name, 'p_ledger_id='||l_ledger_info.ledger_id);
730               trace(C_STATE_LEVEL, l_procedure_name, 'p_ccid='||inv_rec.trx_line_dist_ccid);
731               fv_sla_utl_processing_pkg.get_segment_values
732               (
733                 p_ledger_id     => l_ledger_info.ledger_id,
734                 p_ccid          => inv_rec.trx_line_dist_ccid,
735                 p_fund_value    => l_fund_value,
736                 p_account_value => l_account_value,
737                 p_bfy_value     => l_bfy_value,
738                 p_error_code    => l_error_code,
739                 p_error_desc    => l_error_desc
740               );
741             END IF;
742 
743             IF (l_error_code = C_SUCCESS) THEN
744               trace(C_STATE_LEVEL, l_procedure_name, 'p_fund_value='||l_fund_value);
745               trace(C_STATE_LEVEL, l_procedure_name, 'p_account_value='||l_account_value);
746               trace(C_STATE_LEVEL, l_procedure_name, 'p_bfy_value='||l_bfy_value);
747 
748               trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_fund_details');
749               trace(C_STATE_LEVEL, l_procedure_name, 'p_application_id='||p_application_id);
750               trace(C_STATE_LEVEL, l_procedure_name, 'p_ledger_id='||l_ledger_info.ledger_id);
751               trace(C_STATE_LEVEL, l_procedure_name, 'p_fund_value='||l_fund_value);
752               trace(C_STATE_LEVEL, l_procedure_name, 'p_gl_date='||event_rec.event_date);
753               fv_sla_utl_processing_pkg.get_fund_details
754               (
755                 p_application_id     => p_application_id,
756                 p_ledger_id          => l_ledger_info.ledger_id,
757                 p_fund_value         => l_fund_value,
758                 p_gl_date            => event_rec.event_date,
759                 p_appor_category     => l_fund_category,
760                 p_direct_or_reimb    => l_direct_or_reimb,
761                 p_fund_status        => l_fund_status,
762                 p_fund_time_frame    => l_fund_time_frame,
763                 p_treasury_symbol_id => l_treasury_symbol_id,
764                 p_treasury_symbol    => l_treasury_symbol,
765                 p_no_pya_acct_flag   => l_no_pya_acct_flag,
766                 p_fund_type          => l_fund_type,
767                 p_error_code         => l_error_code,
768                 p_error_desc         => l_error_desc
769               );
770             END IF;
771 
772             IF (l_error_code = C_SUCCESS) THEN
773               l_index := l_index + 1;
774               l_fv_extract_detail(l_index).fed_non_fed_ind := l_fed_non_fed_ind;
775               l_fv_extract_detail(l_index).fund_value     := l_fund_value;
776               l_fv_extract_detail(l_index).fund_type      := l_fund_type;
777               l_fv_extract_detail(l_index).event_id       := event_rec.event_id;
778               l_fv_extract_detail(l_index).line_number    := inv_rec.line_number;
779               l_fv_extract_detail(l_index).application_id := p_application_id;
780               l_fv_extract_detail(l_index).prior_year_flag := 'N';
781               l_fv_extract_detail(l_index).fund_category  := l_fund_category;
782               l_fv_extract_detail(l_index).fund_expired_status := l_fund_status;
783               l_fv_extract_detail(l_index).fund_time_frame := l_fund_time_frame;
784               l_fv_extract_detail(l_index).ar_transaction_category := l_rec_attribute_cat;
785               l_fv_extract_detail(l_index).direct_or_reimb := l_direct_or_reimb;
786 
787             ELSE
788 -- Added for bug 14189341
789 trace(C_STATE_LEVEL, l_procedure_name, ' Inserting accounting errors into xla_accounting_errors table for event :'||event_rec.event_id);
790 		fv_sla_utl_processing_pkg.INSERT_FV_XLA_ACC_ERRORS
791 		(
792 			p_appli_s_name=> 'FV',
793 			p_msg_name => 'FV_AR_FUND_NO_SETUP',
794 			p_entity_id => event_rec.entity_id,
795 			p_event_id => event_rec.event_id,
796 			p_ledger_id  => l_ledger_info.ledger_id
797 		);
798 
799 		-- Update process status code to E
800 		IF (event_rec.event_id is not null) THEN
801 
802 		BEGIN
803 			trace(C_STATE_LEVEL, l_procedure_name, ' Before updating xla_events_gt');
804 			update xla_events_gt
805 			set PROCESS_STATUS_CODE='E'
806 			where event_id=event_rec.event_id
807 			and application_id=p_application_id;
808 		EXCEPTION
809 		WHEN OTHERS THEN
810 			trace(C_STATE_LEVEL, l_procedure_name, ' EVENT ID DOES NOT  EXIST: event_id-> ' || event_rec.event_id);
811 		END;
812                 END IF;
813             END IF;
814 
815 
816 
817           END LOOP;
818         ELSIF (event_rec.event_type_code IN ('RECP_CREATE',
819                                              'RECP_UPDATE',
820                                              'RECP_REVERSE',
821                                              'ADJ_CREATE')) THEN
822           FOR rec_rec IN cur_ar_rct_extract_details (event_rec.event_id) LOOP
823             IF (l_error_code = C_SUCCESS) THEN
824               trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_segment_values');
825               trace(C_STATE_LEVEL, l_procedure_name, 'p_ledger_id='||l_ledger_info.ledger_id);
826               trace(C_STATE_LEVEL, l_procedure_name, 'p_ccid='||rec_rec.trx_line_dist_ccid);
827               fv_sla_utl_processing_pkg.get_segment_values
828               (
829                 p_ledger_id     => l_ledger_info.ledger_id,
830                 p_ccid          => rec_rec.trx_line_dist_ccid,
831                 p_fund_value    => l_fund_value,
832                 p_account_value => l_account_value,
833                 p_bfy_value     => l_bfy_value,
834                 p_error_code    => l_error_code,
835                 p_error_desc    => l_error_desc
836               );
837             END IF;
838 
839             IF (l_error_code = C_SUCCESS) THEN
840               trace(C_STATE_LEVEL, l_procedure_name, 'p_fund_value='||l_fund_value);
841               trace(C_STATE_LEVEL, l_procedure_name, 'p_account_value='||l_account_value);
842               trace(C_STATE_LEVEL, l_procedure_name, 'p_bfy_value='||l_bfy_value);
843 
844               trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_fund_details');
845               trace(C_STATE_LEVEL, l_procedure_name, 'p_application_id='||p_application_id);
846               trace(C_STATE_LEVEL, l_procedure_name, 'p_ledger_id='||l_ledger_info.ledger_id);
847               trace(C_STATE_LEVEL, l_procedure_name, 'p_fund_value='||l_fund_value);
848               trace(C_STATE_LEVEL, l_procedure_name, 'p_gl_date='||event_rec.event_date);
849               fv_sla_utl_processing_pkg.get_fund_details
850               (
851                 p_application_id     => p_application_id,
852                 p_ledger_id          => l_ledger_info.ledger_id,
853                 p_fund_value         => l_fund_value,
854                 p_gl_date            => event_rec.event_date,
855                 p_appor_category     => l_fund_category,
856                 p_direct_or_reimb    => l_direct_or_reimb,
857                 p_fund_status        => l_fund_status,
858                 p_fund_time_frame    => l_fund_time_frame,
859                 p_treasury_symbol_id => l_treasury_symbol_id,
860                 p_treasury_symbol    => l_treasury_symbol,
861                 p_no_pya_acct_flag   => l_no_pya_acct_flag,
862                 p_fund_type          => l_fund_type,
863                 p_error_code         => l_error_code,
864                 p_error_desc         => l_error_desc
865               );
866 
867             END IF;
868 
869             IF (l_error_code = C_SUCCESS) THEN
870               l_pya := 'N';
871               IF (NVL(l_no_pya_acct_flag, 'N') = 'N') THEN
872                 fv_sla_utl_processing_pkg.get_prior_year_status
873                 (
874                   p_application_id => p_application_id,
875                   p_ledger_id      => l_ledger_info.ledger_id,
876                   p_bfy_value      => l_bfy_value,
877                   p_gl_date        => event_rec.event_date,
878                   p_pya            => l_pya,
879                   p_pya_type       => l_pya_type,
880                   p_error_code     => l_error_code,
881                   p_error_desc     => l_error_desc
882                 );
883               END IF;
884             END IF;
885 
886             IF (l_error_code = C_SUCCESS) THEN
887               l_index := l_index + 1;
888               l_fv_extract_detail(l_index).fed_non_fed_ind := l_fed_non_fed_ind;
889               l_fv_extract_detail(l_index).fund_value     := l_fund_value;
890               l_fv_extract_detail(l_index).fund_type      := l_fund_type;
891               l_fv_extract_detail(l_index).event_id       := event_rec.event_id;
892               l_fv_extract_detail(l_index).line_number    := rec_rec.line_number;
893               l_fv_extract_detail(l_index).application_id := p_application_id;
894               l_fv_extract_detail(l_index).prior_year_flag := l_pya;
895               l_fv_extract_detail(l_index).fund_category  := l_fund_category;
896               l_fv_extract_detail(l_index).fund_expired_status := l_fund_status;
897               l_fv_extract_detail(l_index).fund_time_frame := l_fund_time_frame;
898               l_fv_extract_detail(l_index).ar_transaction_category := l_rec_attribute_cat;
899               l_fv_extract_detail(l_index).direct_or_reimb := l_direct_or_reimb;
900            ELSE
901 -- Added for bug 14189341
902 trace(C_STATE_LEVEL, l_procedure_name, ' Inserting accounting errors into xla_accounting_errors table for event :'||event_rec.event_id);
903 		fv_sla_utl_processing_pkg.INSERT_FV_XLA_ACC_ERRORS
904 		(
905 			p_appli_s_name=> 'FV',
906 			p_msg_name => 'FV_AR_FUND_NO_SETUP',
907 			p_entity_id => event_rec.entity_id,
908 			p_event_id => event_rec.event_id,
909 			p_ledger_id  => l_ledger_info.ledger_id
910 		);
911 
912 		-- Update process status code to E
913 		IF (event_rec.event_id is not null) THEN
914 
915 		BEGIN
916 			trace(C_STATE_LEVEL, l_procedure_name, ' Before updating xla_events_gt');
917 			update xla_events_gt
918 			set PROCESS_STATUS_CODE='E'
919 			where event_id=event_rec.event_id
920 			and application_id=p_application_id;
921 		EXCEPTION
922 		WHEN OTHERS THEN
923 			trace(C_STATE_LEVEL, l_procedure_name, ' EVENT ID DOES NOT  EXIST: event_id-> ' || event_rec.event_id);
924 		END;
925                 END IF;
926             END IF;
927           END LOOP;
928         ELSIF (event_rec.event_type_code IN ('MISC_RECP_CREATE',
929                                              'MISC_RECP_UPDATE',
930                                              'MISC_RECP_REVERSE')) THEN
931           FOR misc_rec IN cur_misc_rct_extract_details (event_rec.event_id) LOOP
932             IF (l_error_code = C_SUCCESS) THEN
933               trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_segment_values');
934               trace(C_STATE_LEVEL, l_procedure_name, 'p_ledger_id='||l_ledger_info.ledger_id);
935               trace(C_STATE_LEVEL, l_procedure_name, 'p_ccid='||misc_rec.dist_code_combination_id);
936               fv_sla_utl_processing_pkg.get_segment_values
937               (
938                 p_ledger_id     => l_ledger_info.ledger_id,
939                 p_ccid          => misc_rec.dist_code_combination_id,
940                 p_fund_value    => l_fund_value,
941                 p_account_value => l_account_value,
942                 p_bfy_value     => l_bfy_value,
943                 p_error_code    => l_error_code,
944                 p_error_desc    => l_error_desc
945               );
946             END IF;
947 
948             IF (l_error_code = C_SUCCESS) THEN
949               trace(C_STATE_LEVEL, l_procedure_name, 'p_fund_value='||l_fund_value);
950               trace(C_STATE_LEVEL, l_procedure_name, 'p_account_value='||l_account_value);
951               trace(C_STATE_LEVEL, l_procedure_name, 'p_bfy_value='||l_bfy_value);
952 
953               trace(C_STATE_LEVEL, l_procedure_name, 'Calling get_fund_details');
954               trace(C_STATE_LEVEL, l_procedure_name, 'p_application_id='||p_application_id);
955               trace(C_STATE_LEVEL, l_procedure_name, 'p_ledger_id='||l_ledger_info.ledger_id);
956               trace(C_STATE_LEVEL, l_procedure_name, 'p_fund_value='||l_fund_value);
957               trace(C_STATE_LEVEL, l_procedure_name, 'p_gl_date='||event_rec.event_date);
958               fv_sla_utl_processing_pkg.get_fund_details
959               (
960                 p_application_id     => p_application_id,
961                 p_ledger_id          => l_ledger_info.ledger_id,
962                 p_fund_value         => l_fund_value,
963                 p_gl_date            => event_rec.event_date,
964                 p_appor_category     => l_fund_category,
965                 p_direct_or_reimb    => l_direct_or_reimb,
966                 p_fund_status        => l_fund_status,
967                 p_fund_time_frame    => l_fund_time_frame,
968                 p_treasury_symbol_id => l_treasury_symbol_id,
969                 p_treasury_symbol    => l_treasury_symbol,
970                 p_no_pya_acct_flag   => l_no_pya_acct_flag,
971                 p_fund_type          => l_fund_type,
972                 p_error_code         => l_error_code,
973                 p_error_desc         => l_error_desc
974               );
975             END IF;
976             IF (l_error_code = C_SUCCESS) THEN
977               l_pya := 'N';
978               IF (NVL(l_no_pya_acct_flag, 'N') = 'N') THEN
979                 fv_sla_utl_processing_pkg.get_prior_year_status
980                 (
981                   p_application_id => p_application_id,
982                   p_ledger_id      => l_ledger_info.ledger_id,
983                   p_bfy_value      => l_bfy_value,
984                   p_gl_date        => event_rec.event_date,
985                   p_pya            => l_pya,
986                   p_pya_type       => l_pya_type,
987                   p_error_code     => l_error_code,
988                   p_error_desc     => l_error_desc
989                 );
990               END IF;
991             END IF;
992 
993             IF (l_error_code = C_SUCCESS) THEN
994               l_index := l_index + 1;
995               l_fv_extract_detail(l_index).fed_non_fed_ind := l_fed_non_fed_ind;
996               l_fv_extract_detail(l_index).fund_value     := l_fund_value;
997               l_fv_extract_detail(l_index).fund_type      := l_fund_type;
998               l_fv_extract_detail(l_index).event_id       := event_rec.event_id;
999               l_fv_extract_detail(l_index).line_number    := misc_rec.line_number;
1000               l_fv_extract_detail(l_index).application_id := p_application_id;
1001               l_fv_extract_detail(l_index).prior_year_flag := l_pya;
1002               l_fv_extract_detail(l_index).fund_category  := l_fund_category;
1003               l_fv_extract_detail(l_index).fund_expired_status := l_fund_status;
1004               l_fv_extract_detail(l_index).fund_time_frame := l_fund_time_frame;
1005               l_fv_extract_detail(l_index).ar_transaction_category := l_rec_attribute_cat;
1006               l_fv_extract_detail(l_index).direct_or_reimb := l_direct_or_reimb;
1007             ELSE
1008 -- Added for bug 14189341
1009 trace(C_STATE_LEVEL, l_procedure_name, ' Inserting accounting errors into xla_accounting_errors table for event :'||event_rec.event_id);
1010 		fv_sla_utl_processing_pkg.INSERT_FV_XLA_ACC_ERRORS
1011 		(
1012 			p_appli_s_name=> 'FV',
1013 			p_msg_name => 'FV_AR_FUND_NO_SETUP',
1014 			p_entity_id => event_rec.entity_id,
1015 			p_event_id => event_rec.event_id,
1016 			p_ledger_id  => l_ledger_info.ledger_id
1017 		);
1018 
1019 		-- Update process status code to E
1020 		IF (event_rec.event_id is not null) THEN
1021 
1022 		BEGIN
1023 			trace(C_STATE_LEVEL, l_procedure_name, ' Before updating xla_events_gt');
1024 			update xla_events_gt
1025 			set PROCESS_STATUS_CODE='E'
1026 			where event_id=event_rec.event_id
1027 			and application_id=p_application_id;
1028 		EXCEPTION
1029 		WHEN OTHERS THEN
1030 			trace(C_STATE_LEVEL, l_procedure_name, ' EVENT ID DOES NOT  EXIST: event_id-> ' || event_rec.event_id);
1031 		END;
1032                 END IF;
1033             END IF;
1034           END LOOP;
1035         END IF;
1036       END IF;
1037 
1038     END LOOP;
1039 
1040     IF (l_error_code = C_SUCCESS) THEN
1041        FORALL l_index IN l_fv_extract_detail .first..l_fv_extract_detail.last
1042           INSERT INTO fv_extract_detail_gt VALUES l_fv_extract_detail(l_index);
1043           trace(C_STATE_LEVEL, l_procedure_name, 'Trxn Cat: '||l_rec_attribute_cat);
1044           trace(C_STATE_LEVEL, l_procedure_name, 'Dir or Reimb: '||l_direct_or_reimb);
1045     END IF;
1046     trace(C_STATE_LEVEL, l_procedure_name, 'Calling dump_gt_table');
1047     fv_sla_utl_processing_pkg.dump_gt_table
1048     (
1049       p_fv_extract_detail => l_fv_extract_detail,
1050       p_error_code        => l_gt_error_code,
1051       p_error_desc        => l_error_desc
1052     );
1053 
1054     /* Commented for bug 14189341
1055     IF (l_error_code <>  C_SUCCESS) OR (l_gt_error_code <> C_SUCCESS) THEN
1056        APP_EXCEPTION.RAISE_EXCEPTION;
1057     END IF;
1058     */
1059     trace(C_PROC_LEVEL, l_procedure_name, 'End of procedure'||l_procedure_name);
1060 
1061   EXCEPTION
1062     WHEN OTHERS THEN
1063       trace(C_STATE_LEVEL, l_procedure_name, 'ERROR encountered in Federal AR SLA Processing: ' || SQLERRM);
1064       FND_MESSAGE.SET_NAME('FND', 'FND_GENERIC_MESSAGE');
1065       FND_MESSAGE.SET_TOKEN('MESSAGE' , 'Procedure :fv_sla_processing_pkg.ar_extract'|| CRLF||
1066       'Error     :'||SQLERRM);
1067       FND_MSG_PUB.ADD;
1068       APP_EXCEPTION.RAISE_EXCEPTION;
1069   END ar_extract;
1070 
1071   PROCEDURE extract
1072   (
1073     p_application_id               IN            NUMBER,
1074     p_accounting_mode              IN            VARCHAR2
1075   )
1076   IS
1077 
1078     l_debug_info                   VARCHAR2(240);
1079     l_procedure_name               VARCHAR2(100) :='.EXTRACT';
1080 
1081   BEGIN
1082 
1083     l_procedure_name := g_path_name || l_procedure_name;
1084     -------------------------------------------------------------------------
1085     l_debug_info := 'Begin of procedure '||l_procedure_name;
1086     trace(C_STATE_LEVEL, l_procedure_name, l_debug_info);
1087     -------------------------------------------------------------------------
1088     -------------------------------------------------------------------------
1089 
1090 
1091     IF (p_application_id = 222) THEN
1092         ar_extract(p_application_id, p_accounting_mode);
1093     ELSE
1094         RETURN;
1095     END IF;
1096 
1097     -------------------------------------------------------------------------
1098     l_debug_info := 'End of procedure '||l_procedure_name;
1099     trace(C_PROC_LEVEL, l_procedure_name, l_debug_info);
1100     -------------------------------------------------------------------------
1101 
1102   EXCEPTION
1103     WHEN OTHERS THEN
1104       l_debug_info := 'Error in Federal SLA Processing ' || SQLERRM;
1105       trace(C_STATE_LEVEL, l_procedure_name, l_debug_info);
1106       FND_MESSAGE.SET_NAME('FND', 'FND_GENERIC_MESSAGE');
1107       FND_MESSAGE.SET_TOKEN('MESSAGE' ,
1108           'Procedure :fv_sla_processing_pkg.extract'|| CRLF||
1109           'Error     :'||SQLERRM);
1110       FND_MSG_PUB.ADD;
1111       APP_EXCEPTION.RAISE_EXCEPTION;
1112 
1113   END extract;
1114 
1115   PROCEDURE preaccounting
1116   (
1117     p_application_id               IN            NUMBER,
1118     p_ledger_id                    IN            INTEGER,
1119     p_process_category             IN            VARCHAR2,
1120     p_end_date                     IN            DATE,
1121     p_accounting_mode              IN            VARCHAR2,
1122     p_valuation_method             IN            VARCHAR2,
1123     p_security_id_int_1            IN            INTEGER,
1124     p_security_id_int_2            IN            INTEGER,
1125     p_security_id_int_3            IN            INTEGER,
1126     p_security_id_char_1           IN            VARCHAR2,
1127     p_security_id_char_2           IN            VARCHAR2,
1128     p_security_id_char_3           IN            VARCHAR2,
1129     p_report_request_id            IN            INTEGER
1130   ) IS
1131   BEGIN
1132     NULL;
1133   END;
1134 
1135   PROCEDURE postprocessing
1136   (
1137     p_application_id               IN            NUMBER,
1138     p_accounting_mode              IN            VARCHAR2
1139   )
1140   IS
1141   BEGIN
1142     NULL;
1143   END;
1144 
1145 
1146   PROCEDURE postaccounting
1147   (
1148     p_application_id               IN            NUMBER,
1149     p_ledger_id                    IN            INTEGER,
1150     p_process_category             IN            VARCHAR2,
1151     p_end_date                     IN            DATE,
1152     p_accounting_mode              IN            VARCHAR2,
1153     p_valuation_method             IN            VARCHAR2,
1154     p_security_id_int_1            IN            INTEGER,
1155     p_security_id_int_2            IN            INTEGER,
1156     p_security_id_int_3            IN            INTEGER,
1157     p_security_id_char_1           IN            VARCHAR2,
1158     p_security_id_char_2           IN            VARCHAR2,
1159     p_security_id_char_3           IN            VARCHAR2,
1160     p_report_request_id            IN            INTEGER
1161   )
1162   IS
1163   BEGIN
1164     NULL;
1165   END;
1166 BEGIN
1167   init;
1168 END fv_sla_ar_processing_pkg;
1169