DBA Data[Home] [Help]

PACKAGE: APPS.PQP_SCHEDULE_CALCULATION_PKG

Source


1 PACKAGE pqp_schedule_calculation_pkg AUTHID CURRENT_USER AS
2 /* $Header: pqschcal.pkh 120.3 2011/12/09 11:27:37 rajganga ship $ */
3 
4 TYPE t_working_dates IS TABLE OF DATE
5 INDEX BY BINARY_INTEGER;
6 
7 TYPE r_work_pattern IS RECORD
8   (hours                          NUMBER
9   ,next_working_day_index         BINARY_INTEGER
10   ,days_to_next_working_day       NUMBER
11   );
12 
13 TYPE t_work_pattern_cache_type IS TABLE OF r_work_pattern
14   INDEX BY BINARY_INTEGER;
15 
16 
17 
18   CURSOR c_wp_dets
19     (p_assignment_id NUMBER
20     ,p_start_date    DATE
21     ,p_end_date      DATE
22     )
23   IS
24   SELECT *
25   FROM   pqp_assignment_attributes_f
26   WHERE  assignment_id = p_assignment_id
27     AND  (
28            (p_start_date BETWEEN effective_start_date
29                              AND effective_end_date)
30           OR
31            (p_end_date   BETWEEN effective_start_date
32                              AND effective_end_date)
33           OR
34            (effective_start_date BETWEEN p_start_date
35                                      AND p_end_date)
36           OR
37            (effective_end_date   BETWEEN p_start_date
38                                      AND p_end_date)
39          )
40   ORDER BY effective_start_date;
41 
42 
43   CURSOR c_wp_dets_up(p_assignment_id NUMBER
44                      ,p_start_date    DATE
45                      ) IS
46   SELECT *
47   FROM   pqp_assignment_attributes_f
48   WHERE  assignment_id = p_assignment_id
49     AND  (
50            (p_start_date BETWEEN effective_start_date
51                              AND effective_end_date)
52            OR
53             (effective_start_date > p_start_date)
54          )
55   ORDER BY effective_start_date;
56 
57   CURSOR c_get_legcode
58     (p_business_group_id NUMBER
59     )IS
60   SELECT legislation_code
61   FROM   per_business_groups_perf
62   WHERE  business_group_id = p_business_group_id;
63 
64 
65 -- Global variables
66 g_udt_name                VARCHAR2(50) := 'PQP_COMPANY_WORK_PATTERNS';
67 g_default_start_day       VARCHAR2(10) := 'sunday';
68 g_override_work_pattern   pay_user_columns.user_column_name%TYPE;
69 
70 PROCEDURE get_day_dets
71   (p_wp_dets        IN  c_wp_dets%ROWTYPE
72   ,p_calc_stdt      IN  DATE
73   ,p_calc_edt       IN  DATE
74   ,p_day_no         OUT NOCOPY NUMBER
75   ,p_days_in_wp     OUT NOCOPY NUMBER
76   );
77 
78 -- Returns the number  of hours worked in the given date range
79 FUNCTION calculate_time_worked
80   (p_assignment_id          IN     NUMBER
81   ,p_date_start             IN     DATE
82   ,p_date_end               IN     DATE
83   ) RETURN NUMBER;
84 
85 
86 -- OVERLOADED get_days_worked
87 -- Returns the number  of hours worked in the given date range
88 -- Uses Default Work Pattern if Assignment does not have a WP
89 FUNCTION get_hours_worked
90   (p_assignment_id     IN     NUMBER
91   ,p_business_group_id IN     NUMBER
92   ,p_date_start        IN     DATE
93   ,p_date_end          IN     DATE
94   ,p_error_code           OUT NOCOPY NUMBER
95   ,p_error_message        OUT NOCOPY VARCHAR2
96   ,p_default_wp        IN     VARCHAR2 DEFAULT NULL
97   ,p_override_wp       IN     VARCHAR2 DEFAULT NULL
98   ,p_is_assignment_wp  IN     NUMBER  DEFAULT 0
99   ) RETURN NUMBER;
100 
101 -- Returns the number  of days worked in the given date range
102 -- Also returns a Table of Working Dates
103 -- Uses Default Work Pattern if Assignment does not have a WP
104 FUNCTION get_days_worked
105   (p_assignment_id          IN     NUMBER
106   ,p_business_group_id      IN     NUMBER
107   ,p_date_start             IN     DATE
108   ,p_date_end               IN     DATE
109   ,p_working_dates             OUT NOCOPY t_working_dates
110   ,p_error_code                OUT NOCOPY NUMBER
111   ,p_error_message             OUT NOCOPY VARCHAR2
112   ,p_default_wp             IN     VARCHAR2 DEFAULT NULL
113   ,p_override_wp            IN     VARCHAR2 DEFAULT NULL
114   ) RETURN NUMBER;
115 
116 -- OVERLOADED get_days_worked
117 -- Returns the number  of days worked in the given date range
118 -- Uses Default Work Pattern if Assignment does not have a WP
119 FUNCTION get_days_worked
120   (p_assignment_id          IN     NUMBER
121   ,p_business_group_id      IN     NUMBER
122   ,p_date_start             IN     DATE
123   ,p_date_end               IN     DATE
124   ,p_error_code                OUT NOCOPY NUMBER
125   ,p_error_message             OUT NOCOPY VARCHAR2
126   ,p_default_wp             IN     VARCHAR2 DEFAULT NULL
127   ,p_override_wp            IN     VARCHAR2 DEFAULT NULL
128   ) RETURN NUMBER;
129 
130 -- Return Y if the given date is a working day, N if not a working day
131 FUNCTION is_working_day
132   (p_assignment_id     IN     NUMBER
133   ,p_business_group_id IN     NUMBER
134   ,p_date              IN     DATE
135   ,p_error_code           OUT NOCOPY NUMBER
136   ,p_error_message        OUT NOCOPY VARCHAR2
137   ,p_default_wp        IN     VARCHAR2 DEFAULT NULL
138   ,p_override_wp       IN     VARCHAR2 DEFAULT NULL
139   ) RETURN VARCHAR2;
140 
141 -- Returns the date prior to the next working day(p_days+1) after adding
142 -- working days to p_date_start
143 -- Uses default work pattern if Assignment does not have a WP
144 FUNCTION add_working_days
145   (p_assignment_id          IN     NUMBER
146   ,p_business_group_id      IN     NUMBER
147   ,p_date_start             IN     DATE
148   ,p_days                   IN     NUMBER
149   ,p_error_code                OUT NOCOPY NUMBER
150   ,p_error_message             OUT NOCOPY VARCHAR2
151   ,p_default_wp             IN     VARCHAR2 DEFAULT NULL
152   ,p_override_wp            IN     VARCHAR2 DEFAULT NULL
153   ) RETURN DATE;
154 
155 -----------------------------------------------------
156 -- Returns the number of Working Days in a Workpattern
157 -- as on the effective date
158 -- it takes 2 optional parameters p_override_wp, p_default_wp
159 -- Order of precedence is Override->Assignment->Default
160 FUNCTION get_working_days_in_week
161   (p_assignment_id     IN NUMBER
162   ,p_business_group_id IN NUMBER
163   ,p_effective_date    IN DATE
164   ,p_default_wp        IN VARCHAR2 DEFAULT NULL
165   ,p_override_wp       IN VARCHAR2 DEFAULT NULL
166   ) RETURN NUMBER;
167 
168 FUNCTION get_day_index_for_date
169   (p_asg_work_pattern_start_date  IN DATE
170   ,p_asg_work_pattern_start_day_n IN NUMBER
171   ,p_total_days_in_work_pattern   IN NUMBER
172   ,p_date_to_index                IN DATE
173   ) RETURN NUMBER;
174 
175 PROCEDURE load_work_pattern_into_cache
176   (p_assignment_id          IN     NUMBER
177   ,p_business_group_id      IN     NUMBER
178   ,p_date_start             IN     DATE
179   ,p_default_wp             IN     VARCHAR2 DEFAULT NULL
180   ,p_override_wp            IN     VARCHAR2 DEFAULT NULL
181   ,p_work_pattern_used              OUT NOCOPY VARCHAR2
182   ,p_asg_work_pattern_start_day_n   OUT NOCOPY BINARY_INTEGER
183   ,p_asg_work_pattern_start_date    OUT NOCOPY DATE
184   ,p_date_start_day_index           OUT NOCOPY BINARY_INTEGER
185   );
186 
187 FUNCTION add_working_days_using_one_wp
188   (p_assignment_id          IN     NUMBER
189   ,p_business_group_id      IN     NUMBER
190   ,p_date_start             IN     DATE
191   ,p_working_days_to_add    IN     NUMBER
192   ,p_default_wp             IN     VARCHAR2 DEFAULT NULL
193   ,p_override_wp            IN     VARCHAR2 DEFAULT NULL
194   ) RETURN DATE;
195 
196 
197 PROCEDURE clear_cache;
198 
199 
200 END pqp_schedule_calculation_pkg;