DBA Data[Home] [Help]

PACKAGE: APPS.ARP_CALCULATE_DISCOUNT

Source


1 PACKAGE ARP_CALCULATE_DISCOUNT AUTHID CURRENT_USER AS
2 /* $Header: ARRUDISS.pls 120.3 2006/07/26 07:29:44 naneja ship $ */
3 --
4 -- CONSTANTS
5 --
6         AR_NO_TERM           CONSTANT       NUMBER := 0;
7         AR_DIRECT_DISC       CONSTANT       NUMBER := 0;
8         AR_DEFAULT_DISC      CONSTANT       NUMBER := 1;
9         AR_DIRECT_NEW_DISC   CONSTANT       NUMBER := 2;
10         AR_DEFAULT_NEW_DISC  CONSTANT       NUMBER := 3;
11         AR_EARNED_INDICATOR  CONSTANT       CHAR := 'E';
12         AR_BOTH_INDICATOR    CONSTANT       CHAR := 'B';
13         FIELD_LENGTH         CONSTANT       NUMBER := 30;
14         --AR_M_FAILURE         CONSTANT       NUMBER := 0;
15         --AR_M_NO_RECORD       CONSTANT       NUMBER := 4;
16         --AR_M_SUCCESS         CONSTANT       NUMBER := 1;
17 --
18 --  AR/TA Changes
19 --  Global variables included as part of TA customization for enhanced
20 --  discount Calculation
21 --
22       g_error_buf             VARCHAR2(2000) ;
23       g_called_from           VARCHAR2(20) ;
24       g_profile_id            NUMBER ;
25       g_discount_basis        VARCHAR2(1);
26       g_discount_date_basis   VARCHAR2(30) ;
27       g_discount_date_value   DATE ;
28       g_grace_days_used       NUMBER(15) ;
29       g_full_discount_flag    VARCHAR2(1) ;
30       g_max_allowed_discount  NUMBER ;
31       g_discount_percentage   NUMBER ;
32       g_org_seg_val           VARCHAR2(30) ;
33       g_cust_seg_val          VARCHAR2(30) ;
34       g_lob_seg_val           VARCHAR2(30) ;
35       g_flex_seg_val          VARCHAR2(30) ;
36       g_flex_comments         ra_cust_trx_line_gl_dist_all.comments%TYPE;
37       g_rec_account_id        ra_cust_trx_line_gl_dist.code_combination_id%TYPE;
38       g_batch_name            VARCHAR2(25) ;
39       g_transmission_request_id NUMBER ;
40 
41 --
42    TYPE discount_record_type IS RECORD
43   (
44     input_amt                           NUMBER,
45     grace_days                          NUMBER,
46     apply_date                          DATE,
47     disc_partial_pmt_flag               VARCHAR2(2),
48     calc_disc_on_lines                  VARCHAR2(2),
49     earned_both_flag                    VARCHAR2(2),
50     earned_disc_pct                     NUMBER,
51     best_disc_pct                       NUMBER,
52     adjusted_ado                        NUMBER,
53     max_disc                            NUMBER,
54     out_earned_disc                     NUMBER,
55     out_unearned_disc                   NUMBER,
56     out_amt_to_apply                    NUMBER,
57     out_discount_date                   DATE,
58     use_max_cash_flag                   VARCHAR2(2),
59     default_amt_app                     VARCHAR2(241),
60     close_invoice_flag                  VARCHAR2(2)
61    );
62 --
63 
64 PROCEDURE get_discount_percentages(
65 	  p_disc_rec IN OUT NOCOPY arp_calculate_discount.discount_record_type,
66 	  p_ps_rec IN OUT NOCOPY ar_payment_schedules%ROWTYPE
67 );
68 
69 PROCEDURE get_payment_schedule_info(
70 	  p_disc_rec IN OUT NOCOPY arp_calculate_discount.discount_record_type,
71 	  p_ps_rec IN OUT NOCOPY ar_payment_schedules%ROWTYPE
72 );
73 
74 PROCEDURE correct_lines_only_discounts(
75 	p_disc_rec IN OUT NOCOPY arp_calculate_discount.discount_record_type,
76 	p_ps_rec IN ar_payment_schedules%ROWTYPE );
77 
78 PROCEDURE determine_max_allowed_disc(
79 	p_mode IN number,
80 	p_disc_rec IN OUT NOCOPY arp_calculate_discount.discount_record_type,
81 	p_ps_rec IN ar_payment_schedules%ROWTYPE );
82 
83 /*FP bug 5335376 for Bug 5223829 introduced new parameters for handling iReceivables case*/
84 PROCEDURE calculate_discounts (
85         p_input_amt         IN NUMBER,
86         p_grace_days         IN NUMBER,
87         p_apply_date         IN DATE,
88         p_disc_partial_pmt_flag IN VARCHAR2,
89         p_calc_disc_on_lines IN VARCHAR2,
90         p_earned_both_flag IN VARCHAR2,
91         p_use_max_cash_flag IN VARCHAR2,
92         p_default_amt_app IN VARCHAR2,
93         p_earned_disc_pct IN OUT NOCOPY NUMBER,
94         p_best_disc_pct IN OUT NOCOPY NUMBER,
95         p_out_earned_disc IN OUT NOCOPY NUMBER,
96         p_out_unearned_disc IN OUT NOCOPY NUMBER,
97         p_out_discount_date IN OUT NOCOPY DATE,
98         p_out_amt_to_apply IN OUT NOCOPY NUMBER,
99         p_close_invoice_flag IN VARCHAR2,
100         p_payment_schedule_id IN ar_payment_schedules.payment_schedule_id%TYPE,
101         p_term_id IN ar_payment_schedules.term_id%TYPE,
102         p_terms_sequence_number IN ar_payment_schedules.terms_sequence_number%TYPE,
103         p_trx_date IN ar_payment_schedules.trx_date%TYPE,
104         p_amt_due_original IN ar_payment_schedules.amount_due_original%TYPE,
105         p_amt_due_remaining IN ar_payment_schedules.amount_due_remaining%TYPE,
106         p_disc_earned IN ar_payment_schedules.discount_taken_earned%TYPE,
107         p_disc_unearned IN ar_payment_schedules.discount_taken_unearned%TYPE,
108         p_lines_original IN ar_payment_schedules.amount_line_items_original%TYPE,
109         p_invoice_currency_code IN ar_payment_schedules.invoice_currency_code%TYPE,
110         p_select_flag IN VARCHAR2,
111         p_mode IN NUMBER,
112         p_error_code IN OUT NOCOPY NUMBER,
113         p_cash_receipt_id IN NUMBER,
114         p_called_from IN VARCHAR2 DEFAULT 'AR',
115         p_amt_in_dispute IN ar_payment_schedules.amount_in_dispute%TYPE DEFAULT NULL);
116 --
117 
118 --  Bug 627518:  original routine will now call the overloaded function which
119 --               will take cash_receipt_id as an additional argument for CPG
120 
121 
122 PROCEDURE discounts_cover(
123      p_mode          IN VARCHAR2,
124      p_invoice_currency_code IN ar_cash_receipts.currency_code%TYPE,
125      p_ps_id IN ar_payment_schedules.payment_schedule_id%TYPE,
126      p_term_id IN ra_terms.term_id%TYPE,
127      p_terms_sequence_number IN ar_payment_schedules.terms_sequence_number%TYPE,
128      p_trx_date IN ar_payment_schedules.trx_date%TYPE,
129      p_apply_date IN ar_cash_receipts.receipt_date%TYPE,
130      p_grace_days IN NUMBER,
131      p_default_amt_apply_flag  IN VARCHAR2,
132      p_partial_discount_flag IN VARCHAR2,
133      p_calc_discount_on_lines_flag IN VARCHAR2,
134      p_allow_overapp_flag IN VARCHAR2,
135      p_close_invoice_flag IN VARCHAR2,
136      p_earned_disc_pct IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
137      p_best_disc_pct IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
138      p_input_amount   IN ar_payment_schedules.amount_due_original%TYPE,
139      p_amount_due_original IN ar_payment_schedules.amount_due_original%TYPE,
140      p_amount_due_remaining IN ar_payment_schedules.amount_due_remaining%TYPE,
141      p_discount_taken_earned IN ar_payment_schedules.amount_due_original%TYPE,
142      p_discount_taken_unearned IN ar_payment_schedules.amount_due_original%TYPE,
143      p_amount_line_items_original IN ar_payment_schedules.amount_line_items_original%TYPE,
144      p_out_discount_date    IN OUT NOCOPY DATE,
145      p_out_earned_discount IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
146      p_out_unearned_discount IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
147      p_out_amount_to_apply  IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
148      p_out_discount_to_take  IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
149      p_module_name  IN VARCHAR2,
150      p_module_version IN VARCHAR2,
151      p_allow_discount IN VARCHAR2 DEFAULT 'Y' ); /* Bug fix 3450317 */
152 --
153 PROCEDURE discounts_cover(
154      p_mode          IN VARCHAR2,
155      p_invoice_currency_code IN ar_cash_receipts.currency_code%TYPE,
156      p_ps_id IN ar_payment_schedules.payment_schedule_id%TYPE,
157      p_term_id IN ra_terms.term_id%TYPE,
158      p_terms_sequence_number IN ar_payment_schedules.terms_sequence_number%TYPE,
159      p_trx_date IN ar_payment_schedules.trx_date%TYPE,
160      p_apply_date IN ar_cash_receipts.receipt_date%TYPE,
161      p_grace_days IN NUMBER,
162      p_default_amt_apply_flag  IN VARCHAR2,
163      p_partial_discount_flag IN VARCHAR2,
164      p_calc_discount_on_lines_flag IN VARCHAR2,
165      p_allow_overapp_flag IN VARCHAR2,
166      p_close_invoice_flag IN VARCHAR2,
167      p_earned_disc_pct IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
168      p_best_disc_pct IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
169      p_input_amount   IN ar_payment_schedules.amount_due_original%TYPE,
170      p_amount_due_original IN ar_payment_schedules.amount_due_original%TYPE,
171      p_amount_due_remaining IN ar_payment_schedules.amount_due_remaining%TYPE,
172      p_discount_taken_earned IN ar_payment_schedules.amount_due_original%TYPE,
173      p_discount_taken_unearned IN ar_payment_schedules.amount_due_original%TYPE,
174      p_amount_line_items_original IN ar_payment_schedules.amount_line_items_original%TYPE,
175      p_out_discount_date    IN OUT NOCOPY DATE,
176      p_out_earned_discount IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
177      p_out_unearned_discount IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
178      p_out_amount_to_apply  IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
179      p_out_discount_to_take  IN OUT NOCOPY ar_payment_schedules.amount_due_original%TYPE,
180      p_module_name  IN VARCHAR2,
181      p_module_version IN VARCHAR2,
182      p_cash_receipt_id IN NUMBER,
183      p_allow_discount IN VARCHAR2 DEFAULT 'Y' ); /* Bug fix 3450317 */
184 
185 /* AR/TA Changes : added this procedure to initialize the value of
186    the package variable  g_called_from */
187 
188 PROCEDURE set_g_called_from(p_called_from IN varchar2);
189 
190         ar_m_fail         EXCEPTION;
191         ar_m_no_rec       EXCEPTION;
192 END ARP_CALCULATE_DISCOUNT;