DBA Data[Home] [Help]

PACKAGE: APPS.PAY_MX_TAX_FUNCTIONS

Source


1 PACKAGE PAY_MX_TAX_FUNCTIONS as
2 /* $Header: pymxtxfn.pkh 120.12.12010000.3 2008/08/06 07:54:43 ubhat ship $ */
3 /*
4    ******************************************************************
5    *                                                                *
6    *  Copyright (C) 2004, Oracle India Pvt. Ltd., Hyderabad         *
7    *  All rights reserved.                                          *
8    *                                                                *
9    *  This material has been provided pursuant to an agreement      *
10    *  containing restrictions on its use.  The material is also     *
11    *  protected by copyright law.  No part of this material may     *
12    *  be copied or distributed, transmitted or transcribed, in      *
13    *  any form or by any means, electronic, mechanical, magnetic,   *
14    *  manual, or otherwise, or disclosed to third parties without   *
15    *  the express written permission of Oracle Corporation,         *
16    *  500 Oracle Parkway, Redwood City, CA, 94065.                  *
17    *                                                                *
18    ******************************************************************
19 
20     Name        : pay_mx_tax_functions
21 
22     Description : This package contains various formula function definitions
23                   for Mexican tax calculation.
24 
25     Change List
26     -----------
27     Date        Name       Vers    Bug No   Description
28     ----------- ---------- ------  -------  -------------------------------
29     23-SEP-2004 sdahiya    115.0            Created.
30     29-OCT-2004 sdahiya    115.1            Modified definition of function
31                                             get_isr_partial_subj_earnings.
32     09-NOV-2004 sdahiya    115.2            Added GET_SS_QUOTA_INFO
33                                             function
34     21-FEB-2005 sdahiya    115.3            Renamed
35                                             get_isr_partial_subj_earnings
36                                             to get_partial_subj_earnings.
37     10-MAR-2005 sdahiya    115.4            Renamed GET_SS_QUOTA_INFO to
38                                             GET_MX_TAX_INFO.
39     12-MAR-2005 ardsouza   115.5            Added GET_MX_EE_HEAD_COUNT and
40                                             GET_MX_STATE_TAX_RULES
41                                             functions.
42     18-APR-2005 sdahiya    115.6            Modified
43                                             GET_PARTIAL_SUBJ_EARNINGS to
44                                             accept P_CTX_ELEMENT_TYPE_ID
45                                             as a parameter.
46     27-JUN-2005 ardsouza   115.7   4387751  Added 2 overloaded versions of
47                                             GET_PARTIAL_SUBJ_EARNINGS -
48                                             one that accepts YTD earnings
49                                             and one both. Added
50                                             GET_SUBJ_EARNINGS_FOR_PERIOD,
51                                             which accepts PTD earnings.
52    06-Dec-2005  vpandya    115.8            Added following functions:
53                                              - CALCULATE_ISR_TAX
54    10-Jan-2006  vpandya    115.9            Added following functions:
55                                              - CONVERT_INTO_MONTHLY_SALARY
56    29-Mar-2006  ardsouza   115.10           Added g_temp_object_actions global
57                                             variable.
58    14-Jul-2006  sukukuma   115.11           Added following functions:
59                                              - CHECK_EE_SAL_CRITERIA
60                                              - CHECK_EE_EMPLOYMENT_CRITERIA
61                                              - IS_ASG_EXEMPT_FROM_ISR
62                                              - IS_PER_EXEMPT_FROM_ADJ
63    14-Nov-2006  sdahiya    115.12           Added overloaded version of
64                                             calculate_isr_tax to support subsidy
65                                             calculation for Article 141.
66    15-Oct-2007 srikared   115.13  6437992  Added New functions GET_MIN_WAGE,
67 					    GET_MX_ECON_ZONE
68    12-Dec-2007 nragavar   115.15  6487007  Added new function
69                                             CONVERT_MONTHLY_TO_PERIOD and
70                                             CONVERT_INTO_MONTHLY_AVG_SAL
71    30-Jan-2008 nragavar   115.18  6782264  Modified get_table_value function
72 
73    21-Feb-2008 sivanara   115.35  6821377  Adde new parameter p_hire_date
74                                            to function CONVERT_INTO_MONTHLY_AVG_SAL
75    04-Jun-2008 sivanara   115.36  6933775  Adde new parameter p_first_paid_date
76                                            to function CONVERT_INTO_MONTHLY_AVG_SAL
77   *****************************************************************************/
78 
79 --****************************************************************************
80 -- Name        : GET_PARTIAL_SUBJ_EARNINGS
81 -- Description : This function calls another overloaded function, which returns
82 --               the portion of earnings that are partially subject to State
83 --               Tax and both fully and partially subject to ISR.
84 --               Both the YTD and PTD Earnings are defaulted to the
85 --               secondary classification earnings for the current run, which is
86 --               maintained in the PL-SQL table.
87 --****************************************************************************
88 FUNCTION GET_PARTIAL_SUBJ_EARNINGS
89 (
90     P_CTX_EFFECTIVE_DATE        date,
91     P_CTX_ASSIGNMENT_ACTION_ID  number,
92     P_CTX_BUSINESS_GROUP_ID     number,
93     P_CTX_JURISDICTION_CODE     varchar2,
94     P_CTX_ELEMENT_TYPE_ID       number,
95     P_TAX_TYPE                  varchar2,
96     P_EARNINGS_AMT              number,
97     P_GROSS_EARNINGS            number,
98     P_DAILY_SALARY              number,
99     P_CLASSIFICATION_NAME       varchar2
100 )RETURN NUMBER;
101 
102 
103 --****************************************************************************
104 -- Name        : GET_PARTIAL_SUBJ_EARNINGS
105 -- Description : This function calls another overloaded function, which returns
106 --               the portion of earnings that are partially subject to State
107 --               Tax and both fully and partially subject to ISR.
108 --               The PTD Earnings are defaulted to the secondary classification
109 --               earnings for the current run, which is maintained in the PL-SQL
110 --               table.
111 --****************************************************************************
112 FUNCTION GET_PARTIAL_SUBJ_EARNINGS
113 (
114     P_CTX_EFFECTIVE_DATE        date,
115     P_CTX_ASSIGNMENT_ACTION_ID  number,
116     P_CTX_BUSINESS_GROUP_ID     number,
117     P_CTX_JURISDICTION_CODE     varchar2,
118     P_CTX_ELEMENT_TYPE_ID       number,
119     P_TAX_TYPE                  varchar2,
120     P_EARNINGS_AMT              number,
121     P_YTD_EARNINGS_AMT          number,
122     P_GROSS_EARNINGS            number,
123     P_YTD_GROSS_EARNINGS        number,
124     P_DAILY_SALARY              number,
125     P_CLASSIFICATION_NAME       varchar2
126 )RETURN NUMBER;
127 
128 
129 --******************************************************************************
130 -- Name        : GET_SUBJ_EARNINGS_FOR_PERIOD
131 -- Description : This function calls another overloaded function, which returns
132 --               the portion of earnings that are partially subject to State
133 --               Tax and both fully and partially subject to ISR.
134 --               The YTD Earnings are defaulted to the secondary classification
135 --               earnings for the current run, which is maintained in the PL-SQL
136 --               table.
137 --******************************************************************************
138 FUNCTION GET_SUBJ_EARNINGS_FOR_PERIOD
139 (
140     P_CTX_EFFECTIVE_DATE        date,
141     P_CTX_ASSIGNMENT_ACTION_ID  number,
142     P_CTX_BUSINESS_GROUP_ID     number,
143     P_CTX_JURISDICTION_CODE     varchar2,
144     P_CTX_ELEMENT_TYPE_ID       number,
145     P_TAX_TYPE                  varchar2,
146     P_EARNINGS_AMT              number,
147     P_PTD_EARNINGS_AMT          number,
148     P_GROSS_EARNINGS            number,
149     P_YTD_GROSS_EARNINGS        number,
150     P_DAILY_SALARY              number,
151     P_CLASSIFICATION_NAME       varchar2
152 )RETURN NUMBER;
153 
154 
155   /****************************************************************************
156     Name        : GET_PARTIAL_SUBJ_EARNINGS
157     Description : This function calculates subject earnings for classifications
158                   that are fully and partially subject to ISR and state taxes.
159   *****************************************************************************/
160 FUNCTION GET_PARTIAL_SUBJ_EARNINGS
161 (
162     P_CTX_EFFECTIVE_DATE        date,
163     P_CTX_ASSIGNMENT_ACTION_ID  number,
164     P_CTX_BUSINESS_GROUP_ID     number,
165     P_CTX_JURISDICTION_CODE     varchar2,
166     P_CTX_ELEMENT_TYPE_ID       number,
167     P_TAX_TYPE                  varchar2,
168     P_EARNINGS_AMT              number,
169     P_YTD_EARNINGS_AMT          number,
170     P_PTD_EARNINGS_AMT          number,
171     P_GROSS_EARNINGS            number,
172     P_YTD_GROSS_EARNINGS        number,
173     P_DAILY_SALARY              number,
174     P_CLASSIFICATION_NAME       varchar2
175 )RETURN NUMBER;
176 
177 
178   /****************************************************************************
179     Name        : GET_PREVIOUS_PERIOD_BAL
180     Description : This function returns balance values for pay period
181                   immediately previous to the period in which passed
182                   assignment_action_id lies.
183   *****************************************************************************/
184 
185 FUNCTION GET_PREVIOUS_PERIOD_BAL
186 (
187     P_CTX_ASSIGNMENT_ID         number,
188     P_CTX_ASSIGNMENT_ACTION_ID  number,
189     P_MODE                      varchar2
190 ) RETURN NUMBER;
191 
192 
193   /****************************************************************************
194     Name        : GET_MX_TAX_INFO
195     Description : This function returns various parameters required for social
196                   security quota and state tax calculation.
197   *****************************************************************************/
198 
199 FUNCTION GET_MX_TAX_INFO
200 (
201     P_CTX_BUSINESS_GROUP_ID     number,
202     P_CTX_TAX_UNIT_ID           number,
203     P_CTX_EFFECTIVE_DATE        date,
204     P_CTX_JURISDICTION_CODE     varchar2,
205     P_LEGISLATION_INFO_TYPE     varchar2,
206     P_LEGISLATION_INFO1      in out nocopy varchar2,
207     P_LEGISLATION_INFO2         out nocopy varchar2,
208     P_LEGISLATION_INFO3         out nocopy varchar2,
209     P_LEGISLATION_INFO4         out nocopy varchar2,
210     P_LEGISLATION_INFO5         out nocopy varchar2,
211     P_LEGISLATION_INFO6         out nocopy varchar2
212 ) RETURN NUMBER;
213 
214 
215   /****************************************************************************
216     Name        : GET_MX_EE_HEAD_COUNT
217     Description : This function returns the Employee Headcount used for
218                   Employer State Tax rate computation.
219   *****************************************************************************/
220 FUNCTION GET_MX_EE_HEAD_COUNT
221 (
222     P_CTX_BUSINESS_GROUP_ID     NUMBER,
223     P_CTX_TAX_UNIT_ID           NUMBER,
224     P_CTX_EFFECTIVE_DATE        DATE,
225     P_CTX_JURISDICTION_CODE     VARCHAR2
226 ) RETURN NUMBER;
227 
228   /****************************************************************************
229     Name        : GET_MX_STATE_TAX_RULES
230     Description : This function returns the data stored at legal Employer level
231                   under "State Tax Rules" Org Info type.
232   *****************************************************************************/
233 
234 FUNCTION GET_MX_STATE_TAX_RULES
235 (
236     P_CTX_BUSINESS_GROUP_ID     NUMBER,
237     P_CTX_TAX_UNIT_ID           NUMBER,
238     P_CTX_EFFECTIVE_DATE        DATE,
239     P_CTX_JURISDICTION_CODE     VARCHAR2
240 ) RETURN VARCHAR2;
241 
242   /****************************************************************************
243     Name        : CALCULATE_ISR_TAX
244     Description : This function has
245                   1. Input Parameters as Contexts:
246                      - BUSINESS_GROUP_ID
247                      - ASSIGNMENT_ID
248                      - TAX_UNIT_ID
249                      - DATE_EARNED
250                   2. Input Parameters as Parameter:
251                      - SUBJECT_AMOUNT
252                      - ISR_RATES_TABLE
253                      - SUBSIDY_TABLE
254                      - CREDIT_TO_SALARY_TABLE
255                   3. Returns following data for give subject amount:
256                      - ISR_WITHHELD (Return Value)
257                      - ISR_CALCULATED (Output Parameter)
258                      - ISR_CREDITABLE_SUBSIDY (Output Parameter)
259                      - ISR_NON_CREDITABLE_SUBSIDY (Output Parameter)
260                      - ISR_CREDIT_TO_SALARY (Output Parameter)
261                      - ISR_CREDIT_TO_SALARY_PAID (Output Parameter)
262   *****************************************************************************/
263 
264   FUNCTION CALCULATE_ISR_TAX (
265                      P_PAYROLL_ACTION_ID          NUMBER
266                     ,P_ASSIGNMENT_ACTION_ID       NUMBER
267                     ,p_business_group_id          NUMBER
268                     ,p_assignment_id              NUMBER
269                     ,p_tax_unit_id                NUMBER
270                     ,p_date_earned                DATE
271                     ,p_subject_amount             NUMBER
272                     ,p_isr_rates_table            VARCHAR2
273                     ,p_subsidy_table              VARCHAR2
274                     ,p_credit_to_salary_table     VARCHAR2
275                     ,p_isr_calculated             OUT NOCOPY NUMBER
276                     ,p_isr_creditable_subsidy     OUT NOCOPY NUMBER
277                     ,p_isr_non_creditable_subsidy OUT NOCOPY NUMBER
278                     ,p_credit_to_salary           OUT NOCOPY NUMBER
279                     ,p_credit_to_salary_paid      OUT NOCOPY NUMBER)
280   RETURN NUMBER;
281 
282   /****************************************************************************
283     Name        : CALCULATE_ISR_TAX
284     Description : This function has
285                   1. Input Parameters as Contexts:
286                      - PAYROLL_ACTION_ID
287                      - ASSIGNMENT_ACTION_ID
288                      - BUSINESS_GROUP_ID
289                      - ASSIGNMENT_ID
290                      - TAX_UNIT_ID
291                      - DATE_EARNED
292                   2. Input Parameters as Parameter:
293                      - SUBJECT_AMOUNT
294                      - ISR_RATES_TABLE
295                      - SUBSIDY_TABLE
296                      - CREDIT_TO_SALARY_TABLE
297                   3. Returns following data for give subject amount:
298                      - ISR_WITHHELD (Return Value)
299                      - ISR_CALCULATED (Output Parameter)
300                      - ISR_CREDITABLE_SUBSIDY (Output Parameter)
301                      - ISR_NON_CREDITABLE_SUBSIDY (Output Parameter)
302                      - ISR_CREDIT_TO_SALARY (Output Parameter)
303                      - ISR_CREDIT_TO_SALARY_PAID (Output Parameter)
304   *****************************************************************************/
305 
306 FUNCTION CALCULATE_ISR_TAX
307 (
308     P_PAYROLL_ACTION_ID          NUMBER,
309     P_ASSIGNMENT_ACTION_ID       NUMBER,
310     P_BUSINESS_GROUP_ID          NUMBER,
311     P_ASSIGNMENT_ID              NUMBER,
315     P_SUBJECT_AMOUNT             NUMBER,
312     P_TAX_UNIT_ID                NUMBER,
313     P_DATE_EARNED                DATE,
314     P_CALC_MODE                  VARCHAR2,
316     P_ISR_RATES_TABLE            VARCHAR2,
317     P_SUBSIDY_TABLE              VARCHAR2,
318     P_CREDIT_TO_SALARY_TABLE     VARCHAR2,
319     P_ISR_CALCULATED             OUT NOCOPY NUMBER,
320     P_ISR_CREDITABLE_SUBSIDY     OUT NOCOPY NUMBER,
321     P_ISR_NON_CREDITABLE_SUBSIDY OUT NOCOPY NUMBER,
322     P_CREDIT_TO_SALARY           OUT NOCOPY NUMBER,
323     P_CREDIT_TO_SALARY_PAID      OUT NOCOPY NUMBER
324 )
325 RETURN NUMBER;
326 
327   /****************************************************************************
328     Name        : CONVERT_INTO_MONTHLY_SALARY
329     Description : This function has
330                   1. Input Parameters as Contexts:
331                      - BUSINESS_GROUP_ID
332                      - TAX_UNIT_ID
333                      - PAYROLL_ID
334                   2. Input Parameters as Parameter:
335                      - PERIODIC_EARNINGS
336   *****************************************************************************/
337 
338   FUNCTION CONVERT_INTO_MONTHLY_SALARY ( p_business_group_id   NUMBER
339                                         ,p_tax_unit_id         NUMBER
340                                         ,p_payroll_id          NUMBER
341                                         ,p_periodic_earnings   NUMBER)
342   RETURN NUMBER;
343 
344 
345   /****************************************************************************
346     Name        : CHECK_EE_SAL_CRITERIA
347     Description : This function returns 'Y' if employee's  annual gross earning
348                   is less than 300,000 MXN.
349   *****************************************************************************/
350 
351 FUNCTION CHECK_EE_SAL_CRITERIA(P_CTX_ASSIGNMENT_ID         NUMBER
352                               ,P_CTX_DATE_EARNED           DATE)
353 RETURN VARCHAR2;
354 
355 
356   /****************************************************************************
357     Name        : CHECK_EE_EMPLOYMENT_CRITERIA
358     Description : This Function return 'Y' if employee is working continously
359                   between the given start date and end date
360   *****************************************************************************/
361 
362 FUNCTION CHECK_EE_EMPLOYMENT_CRITERIA(P_CTX_ASSIGNMENT_ID         NUMBER
363                                      ,P_CTX_DATE_EARNED           DATE)
364 RETURN VARCHAR2;
365 
366 
367   /****************************************************************************
368     Name        : IS_ASG_EXEMPT_FROM_ISR
369     Description : This function returns Y if an assignment is exempted from ISR
370                   calculation
371   *****************************************************************************/
372 
373 FUNCTION IS_ASG_EXEMPT_FROM_ISR(P_CTX_ASSIGNMENT_ID         NUMBER
374                                ,P_CTX_DATE_EARNED           DATE)
375 RETURN VARCHAR2;
376 
377 
378   /****************************************************************************
379     Name        : IS_PER_EXEMPT_FROM_ADJ
380     Description : This function returns Y if an assignment is exempted from Tax
381                   Adjustment
382   *****************************************************************************/
383 
384 FUNCTION IS_PER_EXEMPT_FROM_ADJ(P_CTX_ASSIGNMENT_ID         NUMBER
385                                 ,P_CTX_DATE_EARNED           DATE)
386 RETURN VARCHAR2;
387 
388 
389   /****************************************************************************
390     Name        : GET_MX_ECON_ZONE
391     Description : This function returns Economy Zone('A', 'B', 'C') for the
392 		  given tax_unit_id
393   *****************************************************************************/
394 
395 FUNCTION GET_MX_ECON_ZONE
396 (
397     P_CTX_TAX_UNIT_ID           number,
398     P_CTX_DATE_EARNED		DATE
399 ) RETURN varchar2;
400 
401   /****************************************************************************
402     Name        : GET_MIN_WAGE
403     Description : This function returns Minimum Wage for the Economy Zone
404   *****************************************************************************/
405 
406 FUNCTION GET_MIN_WAGE
407 (
408     P_CTX_DATE_EARNED		DATE,
409     P_TAX_BASIS			varchar2,
410     P_ECON_ZONE			varchar2
411 
412 ) RETURN varchar2;
413 
414 
415   g_temp_object_actions  BOOLEAN;
416 
417   /****************************************************************************
418     Name        : CONVERT_MONTHLY_TO_PERIOD
419     Description : This function returns monthly isr table value converted to
420                   pay period actual number of days value.
421   *****************************************************************************/
422 
423 
424 /*FUNCTION CONVERT_MONTHLY_TO_PERIOD ( p_business_group_id   NUMBER
425                                     ,p_tax_unit_id         NUMBER
426                                     ,p_payroll_id          NUMBER
427                                     ,p_periodic_value      NUMBER
428                                     ,p_date_earned         DATE)
429 RETURN NUMBER; */
430 
431   /****************************************************************************
432     Name        : CONVERT_INTO_MONTHLY_AVG_SAL
433     Description : This function returns period isr subject value converted to
434                   monthly subject.
435   *****************************************************************************/
436 
437 FUNCTION CONVERT_INTO_MONTHLY_AVG_SAL ( p_business_group_id   NUMBER
438                                        ,p_tax_unit_id         NUMBER
439                                        ,p_payroll_id          NUMBER
440                                        ,p_subject_earnings    NUMBER
441                                        ,P_DATE_EARNED         DATE
442 				       ,p_hire_date           DATE
443 				       ,p_first_pay_date      DATE
444                                        ,p_period_days         out NOCOPY NUMBER)
445 RETURN NUMBER;
446 
447 function get_table_value (p_bus_group_id      number,
448                           p_table_name        varchar2,
449                           p_col_name          varchar2,
450                           p_row_value         varchar2,
451                           p_effective_date    date  default null,
452                           p_period_days       number,
453                           p_period_number     number,
454                           p_period_type       varchar2)
455 return varchar2;
456 
457 END;
458