DBA Data[Home] [Help]

PACKAGE BODY: APPS.PQP_GB_MILEAGE_CLAIM_PKG

Source


1 PACKAGE BODY  pqp_gb_mileage_claim_pkg AS
2 /* $Header: pqgbmgcm.pkb 120.0 2005/05/29 01:49:38 appldev noship $ */
3 g_package  varchar2(33):='pqp_gb_insert_mileage_claim.';
4 
5 FUNCTION get_dflt_input_value (p_input_value_id    NUMBER
6                               ,p_element_type_id   NUMBER
7                               ,p_business_group_id NUMBER
8                               ,p_effective_date    DATE
9                               )
10 RETURN VARCHAR2 IS
11 
12 CURSOR c_get_dflt_val
13 IS
14 SELECT piv.default_value default_value
15   FROM pay_input_values_f piv
16  WHERE piv.input_value_id = p_input_value_id
17    AND piv.element_type_id = p_element_type_id
18    AND piv.business_group_id = p_business_group_id
19    AND p_effective_date BETWEEN piv.effective_start_date
20                             AND piv.effective_end_date;
21 
22 
23 l_get_dflt_val   c_get_dflt_val%ROWTYPE;
24 BEGIN
25 
26  OPEN c_get_dflt_val;
27   FETCH c_get_dflt_val INTO l_get_dflt_val;
28  CLOSE c_get_dflt_val;
29 
30  RETURN NVL(l_get_dflt_val.default_value, 'NONE');
31 
32 
33 END;
34 --This procedure gets all required info on element,rates
35 --when the condition is SS or config is yes and PUI.
36 --the info is fetched from user defined table
37 PROCEDURE get_purpose_details (p_business_group_id  IN NUMBER
38                               ,p_assignment_id      IN NUMBER
39                               ,p_effective_date     IN DATE
40                               ,p_purpose            IN VARCHAR2
41                               ,p_ownership          IN VARCHAR2
42                               ,p_vehicle_type       IN VARCHAR2
43                               ,p_rate_type          IN  VARCHAR2
44                               ,p_element_id         OUT NOCOPY NUMBER
45                               ,p_element_name       OUT NOCOPY VARCHAR2
46                               ,p_rate_table_id      OUT NOCOPY VARCHAR2
47                               ,p_rate_table         OUT NOCOPY VARCHAR2
48                               ,p_taxable            OUT NOCOPY VARCHAR2
49                              )
50 IS
51 
52 
53 CURSOR c_get_column_info (cp_business_group_id NUMBER
54                      ,cp_legislation_code VARCHAR2
55                      ,cp_table_id  NUMBER
56                      ,cp_column_name VARCHAR2
57                      )
58 IS
59 SELECT puc.user_column_id column_id
60   FROM pay_user_columns puc
61   WHERE puc.user_table_id    =cp_table_id
62     AND puc.user_column_name =cp_column_name
63     AND puc.legislation_code = cp_legislation_code;
64 
65 CURSOR c_get_row_info (cp_business_group_id NUMBER
66                       ,cp_legislation_code VARCHAR2
67                       ,cp_row_name   VARCHAR2
68                       ,cp_effective_date DATE
69                        )
70 IS
71 SELECT pur.user_row_id,pur.row_low_range_or_name,put.user_table_id
72   FROM pay_user_tables put
73       ,pay_user_rows_f pur
74  WHERE put.range_or_match = 'M'
75    AND put.user_table_name ='PQP_TRAVEL_PURPOSE'
76    AND put.user_table_id = pur.user_table_id
77    AND cp_effective_date BETWEEN pur.effective_start_date
78                              AND pur.effective_end_date
79    AND pur.row_low_range_or_name = cp_row_name ;
80 
81 CURSOR c_get_value (cp_business_group_id NUMBER
82                    ,cp_legislation_code VARCHAR2
83                    ,cp_row_id            NUMBER
84                    ,cp_column_id         NUMBER
85                    ,cp_effective_date DATE
86                     )
87 IS
88 SELECT puci.value
89   from pay_user_column_instances_f puci
90  WHERE puci.user_row_id = cp_row_id
91    AND puci.user_column_id = cp_column_id
92    AND ( puci.legislation_code= cp_legislation_code OR
93          puci.business_group_id= cp_business_group_id)
94    AND cp_effective_date between puci.effective_start_date
95    AND puci.effective_end_date;
96 
97 CURSOR c_get_element_id ( cp_business_group_id  NUMBER
98                          ,cp_legislation_code   VARCHAR2
99                          ,cp_element_name       VARCHAR2
100                          ,cp_effective_date     DATE
101                         )
102 IS
103 SELECT pet.element_type_id
104   FROM pay_element_types_f pet
105  WHERE pet.element_name = cp_element_name
106    AND pet.business_group_id = cp_business_group_id
107    AND cp_effective_date BETWEEN pet.effective_start_date
108                              AND pet.effective_end_date;
109 
110 CURSOR c_get_rate_id ( cp_business_group_id  NUMBER
111                       ,cp_legislation_code   VARCHAR2
112                       ,cp_rate_table_name   VARCHAR2
113                       ,cp_effective_date     DATE
114                       )
115 IS
116 SELECT put.user_table_id
117   FROM pay_user_tables put
118  WHERE put.user_table_name = cp_rate_table_name
119    AND put.business_group_id = cp_business_group_id;
120 
121 l_get_column_info  c_get_column_info%ROWTYPE;
122 l_get_row_info     c_get_row_info%ROWTYPE;
123 l_get_value        c_get_value%ROWTYPE;
124 l_get_element_id   c_get_element_id%ROWTYPE;
125 l_get_rate_id      c_get_rate_id%ROWTYPE;
126 l_legislation_code pqp_configuration_values.legislation_code%TYPE;
127 l_column_name      pay_user_columns.user_column_name%TYPE;
128 l_vehicle          VARCHAR2(30) ;
129 l_ownership        VARCHAR2(30);
130 l_rates            VARCHAR2(30) := 'Rates Table' ;
131 l_element          VARCHAR2(30) := 'Claim Element';
132 l_Tax              VARCHAr2(30) := 'Taxable';
133 
134 BEGIN
135  l_legislation_code := pqp_car_mileage_functions.
136                        get_legislation_code (p_business_group_id);
137  OPEN c_get_row_info (p_business_group_id
138                      ,l_legislation_code
139                      ,p_purpose
140                      ,p_effective_date
141                      );
142   FETCH c_get_row_info INTO l_get_row_info;
143  CLOSE c_get_row_info ;
144 
145  IF p_vehicle_type = 'C' AND
146     p_ownership='P'  THEN
147   l_ownership :='Private' ;
148   l_vehicle   :='Car';
149 
150  ELSIF p_vehicle_type ='C'
151     AND p_ownership='C'  THEN
152 
153   l_ownership :='Company' ;
154   l_vehicle   :='Car';
155  ELSIF p_vehicle_type ='M' AND
156         p_ownership='P'  THEN
157 
158   l_ownership :='Private' ;
159   l_vehicle   :='Motorcycle';
160  ELSIF p_vehicle_type ='P'
161    AND     p_ownership='P'  THEN
162 
163   l_ownership :='Private' ;
164   l_vehicle   :='Pedalcycle';
165  ELSIF p_vehicle_type ='M'
166     AND p_ownership='C'  THEN
167   l_ownership :='Company' ;
168   l_vehicle   :='Motorcycle';
169 
170  ELSIF p_vehicle_type ='P'
171     AND p_ownership='C'  THEN
172 
173   l_ownership :='Company' ;
174   l_vehicle   :='Pedalcycle';
175  END IF;
176  FOR i in 1..3
177   LOOP
178    IF i= 1 THEN
179     l_column_name := l_ownership||' '||l_vehicle||' '||l_element;
180    ELSIF i=2 THEN
181      l_column_name := l_ownership||' '||l_vehicle||' '||l_rates;
182    ELSIF i=3 THEN
183      l_column_name := l_ownership||' '||l_tax;
184    END IF;
185    OPEN c_get_column_info (p_business_group_id
186                           ,l_legislation_code
187                           ,l_get_row_info.user_table_id
188                           ,l_column_name
189                           );
190    FETCH c_get_column_info INTO l_get_column_info;
191   CLOSE c_get_column_info;
192 
193 
194   OPEN  c_get_value (p_business_group_id
195                     ,l_legislation_code
196                     ,l_get_row_info.user_row_id
197                     ,l_get_column_info.column_id
198                     ,p_effective_date
199                     );
200    FETCH c_get_value INTO l_get_value;
201   CLOSE c_get_value;
202 
203   IF i= 1 THEN
204    p_element_name := l_get_value.value ;
205    OPEN c_get_element_id ( p_business_group_id
206                      ,l_legislation_code
207                      ,p_element_name
208                      ,p_effective_date
209                      );
210     FETCH c_get_element_id INTO l_get_element_id;
211    CLOSE c_get_element_id;
212 
213    p_element_id:=l_get_element_id.element_type_id;
214    l_get_value.value:=null;
215   ELSIF i=2 THEN
216    p_rate_table :=l_get_value.value ;
217    IF p_rate_type='N' THEN
218     OPEN c_get_rate_id ( p_business_group_id
219                        ,l_legislation_code
220                        ,p_rate_table
221                        ,p_effective_date
222                       );
223      FETCH c_get_rate_id INTO l_get_rate_id;
224     CLOSE c_get_rate_id;
225     p_rate_table_id :=l_get_rate_id.user_table_id;
226    END IF;
227    l_get_value.value:=null;
228   ELSIF i=3 THEN
229    p_taxable := SUBSTR(l_get_value.value,0,1) ;
230    l_get_value.value:=null;
231   END IF;
232  END LOOP;
233 
234 END;
235 
236 
237 FUNCTION get_payroll_id ( p_assignment_id      IN NUMBER
238                          ,p_business_group_id  IN NUMBER
239                          ,p_effective_date     IN DATE
240                          ,p_payroll_id         OUT NOCOPY NUMBER
241                          )
242 RETURN NUMBER
243 IS
244 --Get payroll_id
245 CURSOR c_get_asg_det ( cp_assignment_id     NUMBER
246                       ,cp_business_group_id NUMBER
247                       ,cp_effective_date    DATE
248                      )
249  IS
250 SELECT payroll_id
251   FROM per_all_assignments_f paaf
252  WHERE paaf.assignment_id=cp_assignment_id
253    AND cp_effective_date BETWEEN paaf.effective_start_date
254                            AND  paaf.effective_end_date
255    AND paaf.business_group_id =cp_business_group_id
256    AND paaf.payroll_id IS NOT NULL;
257 
258 l_get_asg_det                 c_get_asg_det%ROWTYPE;
259 l_proc    varchar2(72) := g_package ||'get_payroll_id';
260 BEGIN
261 
262  hr_utility.set_location('Enter get payroll id',10);
263    OPEN c_get_asg_det ( p_assignment_id
264                      ,p_business_group_id
265                      ,p_effective_date
266                     );
267      FETCH c_get_asg_det INTO l_get_asg_det;
268      hr_utility.set_location('Inside the Loop',15);
269      IF c_get_asg_det%NOTFOUND THEN
270       RETURN(-1);
271      ELSE
272       p_payroll_id:=l_get_asg_det.payroll_id;
273 
274       RETURN(0);
275      END IF;
276    CLOSE c_get_asg_det;
277 
278 
279  hr_utility.set_location(' Leaving get payroll id',20);
280 
281 END;
282 --Decides effective date to create an element entry
283 FUNCTION get_effective_date (p_assignment_id     IN NUMBER
284                             ,p_business_group_id IN NUMBER
285                             ,p_payroll_id        IN NUMBER
286                             ,p_effective_date    IN DATE
287                              )
288 RETURN DATE
289 IS
290 
291 --Get next payroll date
292 CURSOR c_get_payroll_det (cp_assignment_id     NUMBER
293                          ,cp_business_group_id NUMBER
294                          ,cp_payroll_id        NUMBER
295                          ,cp_effective_date    DATE
296                          )
297 IS
298 SELECT ptp.start_date,ptp.end_date
299   FROM per_time_periods ptp
300  WHERE (ptp.end_date > ( SELECT MAX(effective_date)
301                       FROM pay_payroll_actions     ppa
302                           ,pay_assignment_actions  paa
303                      WHERE ppa.action_status='C'
304                        AND ppa.action_type in ('R','Q')
305                        AND ppa.business_group_id=cp_business_group_id
306                        AND ppa.payroll_id=cp_payroll_id
307                        AND ppa.payroll_id=ptp.payroll_id
308                        AND ppa.payroll_action_id=paa.payroll_action_id
309                        AND paa.assignment_id=cp_assignment_id
310                        AND paa.action_status='C' ))
311   AND ptp.payroll_id=cp_payroll_id
312   AND ROWNUM=1 ;
313 
314 --If the above cursor fails to fetch data
315 --when conditions like new employees claim
316 --is processed then this cursor is used.
317 
318 CURSOR c_get_alt_payroll_det (cp_payroll_id        NUMBER
319                              ,cp_effective_date    DATE
320                               )
321 IS
322 SELECT ptp.start_date,ptp.end_date
323   FROM per_time_periods ptp
324  WHERE ptp.end_date >= cp_effective_date
325   AND ptp.payroll_id=cp_payroll_id
326   AND ROWNUM=1 ;
327 
328 
329 l_get_payroll_det             c_get_payroll_det%ROWTYPE;
330 l_get_alt_payroll_det         c_get_alt_payroll_det%ROWTYPE;
331 l_effective_date              DATE;
332 l_proc    varchar2(72) := g_package ||'get_effective_date';
333 BEGIN
334  hr_utility.set_location(l_proc,10);
335   OPEN c_get_payroll_det ( p_assignment_id
336                           ,p_business_group_id
337                           ,p_payroll_id
338                           ,p_effective_date
339                          );
340     FETCH c_get_payroll_det INTO l_get_payroll_det;
341     IF c_get_payroll_det%NOTFOUND THEN
342      OPEN c_get_alt_payroll_det (p_payroll_id
343                                 ,p_effective_date
344                                  );
345       FETCH c_get_alt_payroll_det INTO l_get_payroll_det;
346 
347      CLOSE c_get_alt_payroll_det;
348     END IF;
349  hr_utility.set_location(l_proc,20);
350   CLOSE c_get_payroll_det;
351   IF p_effective_date BETWEEN l_get_payroll_det.start_date
352                          AND l_get_payroll_det.end_date
353      OR  p_effective_date >  l_get_payroll_det.end_date THEN
354       l_effective_date :=p_effective_date;
355   ELSE
356    l_effective_date :=l_get_payroll_det.start_date;
357   END IF;
358 
359   RETURN(l_effective_date);
360  hr_utility.set_location(l_proc,30);
361 END;
362 
363 FUNCTION get_asg_element (p_assignment_id        IN NUMBER,
364                           p_business_group_id    IN NUMBER,
365                           p_effective_date       IN DATE,
366                           p_ownership_type       IN VARCHAR2,
367                           p_registration_number  IN VARCHAR2,
368                           p_usage_type           IN VARCHAR2,
369                           p_check_type           IN VARCHAR2,
370                           p_sl_rates_type        IN VARCHAR2
371                           )
372 RETURN VARCHAR2
373 IS
374 --If mileage element is null then fetch element and rates from
375 -- assignment level
376 CURSOR c_get_asg_element (cp_assignment_id         NUMBER,
377                           cp_business_group_id     NUMBER,
378                           cp_effective_date        DATE,
379                           cp_ownership_type        VARCHAR2,
380                           cp_registration_number   VARCHAR2
381                           )
382 IS
383 SELECT pvaf.element_type_id
384       ,pvaf.rates_table_id
385       ,pvaf.sliding_rates_info sliding_rates
386   FROM pqp_vehicle_allocations_f pvaf,
387        pqp_vehicle_repository_f  pvrf
388   WHERE pvaf.assignment_id=cp_assignment_id
389     AND pvaf.business_group_id=cp_business_group_id
390     AND pvrf.vehicle_ownership=cp_ownership_type
391     AND (p_registration_number IS NULL or
392          pvrf.registration_number=cp_registration_number)
393     AND pvaf.usage_type=p_usage_type
394     AND cp_effective_date BETWEEN pvaf.effective_start_date
395                                    AND pvaf.effective_end_date
396     AND pvaf.vehicle_repository_id=pvrf.vehicle_repository_id
397     AND pvaf.business_group_id=pvrf.business_group_id
398     AND cp_effective_date BETWEEN pvrf.effective_start_date
399                                    AND pvrf.effective_end_date;
400 
401 CURSOR  c_ele_type (cp_element_type_id   NUMBER)
402  IS
403  SELECT NVL(pete.eei_information2 ,'N') ele_type
404   FROM  pay_element_type_extra_info pete
405  WHERE  pete.information_type='PQP_VEHICLE_MILEAGE_INFO'
406    AND  pete.element_type_id= cp_element_type_id;
407 
408 l_proc    varchar2(72) := g_package ||'get_asg_element';
409 l_get_asg_element         c_get_asg_element%ROWTYPE;
410 l_ele_type                c_ele_type%ROWTYPE;
411 BEGIN
412  hr_utility.set_location('Inside get asg element'||l_proc,10);
413   OPEN c_get_asg_element (
414                           p_assignment_id
415                          ,p_business_group_id
416                          ,p_effective_date
417                          ,p_ownership_type
418                          ,p_registration_number
419                           );
420    FETCH c_get_asg_element INTO l_get_asg_element;
421   CLOSE c_get_asg_element;
422 
423   OPEN c_ele_type (l_get_asg_element.element_type_id);
424    FETCH c_ele_type INTO l_ele_type;
425   CLOSE c_ele_type;
426  hr_utility.set_location(l_proc,20);
427 
428  IF p_check_type='E' AND (l_ele_type.ele_type=p_sl_rates_type) THEN
429   RETURN(NVL(l_get_asg_element.element_type_id,-1));
430  ELSE
431    RETURN (-1);
432  END IF;
433  IF p_check_type='R' AND p_sl_rates_type ='N' THEN
434 
435   RETURN(NVL(l_get_asg_element.rates_table_id,-1));
436  ELSIF  p_check_type='R' AND p_sl_rates_type ='Y' THEN
437 
438   RETURN(NVL(l_get_asg_element.sliding_rates,-1));
439  END IF;
440  hr_utility.set_location('leaving get asg element'||l_proc,30);
441 END;
442 
443 --Get default rates if entered
444 FUNCTION get_default_value(p_business_group_id IN NUMBER
445                           ,p_element_type_id   IN NUMBER
446                           ,p_effective_date    IN DATE
447                           ,p_search_type       IN VARCHAR2
448                           )
449 RETURN NUMBER
450 IS
451 CURSOR c_get_default_value
452 IS
453 SELECT piv.default_value
454  FROM pay_input_values_f piv
455 WHERE piv.element_type_id= p_element_type_id
456   AND piv.name           =p_search_type
457   AND p_effective_date BETWEEN piv.effective_start_date
458                            AND piv.effective_end_date;
459 
460 CURSOR c_get_rate_id(cp_user_table_name VARCHAR2)
461 IS
462 SELECT user_table_id
463   from pay_user_tables put
464  WHERE user_table_name=cp_user_table_name
465    AND put.business_group_id =p_business_group_id;
466 
467 l_get_default_value c_get_default_value%ROWTYPE;
468 l_get_rate_id       c_get_rate_id%ROWTYPE;
469 l_proc    varchar2(72) := g_package ||'get_default_value';
470 
471 BEGIN
472  hr_utility.set_location(l_proc,10);
473  OPEN c_get_default_value;
474   FETCH c_get_default_value INTO l_get_default_value;
475   IF c_get_default_value%FOUND THEN
476    OPEN c_get_rate_id(l_get_default_value.default_value);
477     FETCH c_get_rate_id INTO l_get_rate_id;
478      RETURN(NVL(l_get_rate_id.user_table_id,-1));
479 
480    CLOSE c_get_rate_id;
481   ELSE
482    RETURN(-1);
483   END IF;
484  CLOSE c_get_default_value;
485 
486  hr_utility.set_location(l_proc,20);
487 END;
488 
489 
490 --Validate Mileage Element.
491 FUNCTION validate_mileage_element ( p_assignment_id     IN NUMBER
492                                    ,p_business_group_id IN NUMBER
493                                    ,p_effective_date    IN DATE
494                                    ,p_vehicle_type      IN VARCHAR2
495                                    ,p_ownership         IN VARCHAR2
496                                    ,p_element_type_id   IN NUMBER
497                                    ,p_sl_rate_type      IN VARCHAR2
498                                    ,p_element_link_id   OUT NOCOPY NUMBER
499                                    )
500 RETURN NUMBER
501 IS
502 
503 --Validate mileage element
504 CURSOR c_validate_mileage_element( cp_assignment_id     NUMBER
505                                   ,cp_business_group_id NUMBER
506                                   ,cp_effective_date    DATE
507                                   ,cp_vehicle_type      VARCHAR2
508                                   ,cp_ownership         VARCHAR2
509                                   ,cp_element_type_id   NUMBER
510                                   ,cp_sl_rate_type      VARCHAR2
511                                 )
512 IS
513 SELECT element.element_type_id
514       , elementtl.element_name
515       ,link.element_link_id
516  FROM  pay_element_types_f_tl       elementtl,
517        pay_element_types_f          element,
518        pay_element_links_f          link,
519        per_all_assignments_f        asgt ,
520        pay_element_type_extra_info  pete,
521        per_periods_of_service       service_period
522  WHERE element.element_type_id = elementtl.element_type_id
523    AND elementtl.language = USERENV('LANG')
524    AND asgt.business_group_id = link.business_group_id
525    AND asgt.business_group_id = element.business_group_id
526    AND element.business_group_id =link.business_group_id
527   AND asgt.business_group_id =service_period.business_group_id
528    AND element.element_type_id = link.element_type_id
529    AND service_period.period_of_service_id = asgt.period_of_service_id
530    AND cp_effective_date
531        between element.effective_start_date and element.effective_end_date
532    AND cp_effective_date
533         between asgt.effective_start_date and asgt.effective_end_date
534    AND cp_effective_date
535         between link.effective_start_date and link.effective_end_date
536    AND element.indirect_only_flag = 'N'
537    AND ((link.payroll_id is NOT NULL AND
538            link.payroll_id = asgt.payroll_id)
539    OR (link.link_to_all_payrolls_flag = 'Y'
540    AND asgt.payroll_id IS NOT NULL)
541    OR (link.payroll_id IS NULL AND link.link_to_all_payrolls_flag = 'N'))
542    AND (link.organization_id = asgt.organization_id
543    OR link.organization_id IS NULL)
544    AND (link.position_id = asgt.position_id OR link.position_id IS NULL)
545    AND (link.job_id = asgt.job_id OR link.job_id IS NULL)
546    AND (link.grade_id = asgt.grade_id OR link.grade_id IS NULL)
547    AND (link.location_id = asgt.location_id OR link.location_id IS NULL)
548    AND (link.pay_basis_id = asgt.pay_basis_id OR link.pay_basis_id IS NULL)
549    AND (link.employment_category = asgt.employment_category
550    OR link.employment_category IS NULL)
551    AND (link.people_group_id IS NULL
552    OR EXISTS
553            ( SELECT 1 FROM pay_assignment_link_usages_f usage
554              WHERE usage.assignment_id = asgt.assignment_id
555                AND usage.element_link_id = link.element_link_id
556                AND cp_effective_date BETWEEN usage.effective_start_date
557                AND usage.effective_end_date))
558    AND (service_period.actual_termination_date
559        IS NULL OR (service_period.actual_termination_date IS NOT NULL
560    AND cp_effective_date <= DECODE(element.post_termination_rule, 'L',
561       service_period.last_standard_process_date, 'F',
562       NVL(service_period.final_process_date,hr_api.g_eot),
563       service_period.actual_termination_date) ))
564    AND element.element_type_id = pete.element_type_id
565    AND pete.information_type='PQP_VEHICLE_MILEAGE_INFO'
566    AND pete.eei_information_category='PQP_VEHICLE_MILEAGE_INFO'
567    AND pete.eei_information1<>'L'
568    AND NVL(pete.eei_information2,'N')=cp_sl_rate_type
569    AND asgt.assignment_id=cp_assignment_id
570    AND asgt.business_group_id=cp_business_group_id
571    AND pete.eei_information1=DECODE(cp_vehicle_type,'C',cp_ownership,
572                                       cp_ownership||cp_vehicle_type)
573    AND element.element_type_id=cp_element_type_id;
574 
575 
576 l_proc    varchar2(72) := g_package ||'validate_mileage_element';
577 l_validate_mileage_element    c_validate_mileage_element%ROWTYPE;
578 BEGIN
579 
580    hr_utility.set_location(l_proc,10);
581 
582         OPEN c_validate_mileage_element( p_assignment_id
583                                         ,p_business_group_id
584                                         ,p_effective_date
585                                         ,p_vehicle_type
586                                         ,p_ownership
587                                         ,p_element_type_id
588                                         ,p_sl_rate_type
589                                         );
590         LOOP
591           FETCH c_validate_mileage_element INTO
592                                   l_validate_mileage_element;
593           EXIT WHEN c_validate_mileage_element%NOTFOUND;
594           hr_utility.set_location(l_proc,20);
595           IF l_validate_mileage_element.element_type_id IS NOT NULL THEN
596             p_element_link_id := l_validate_mileage_element.element_link_id;
597             RETURN(l_validate_mileage_element.element_type_id);
598             EXIT;
599           END IF;
600         END LOOP;
601         CLOSE c_validate_mileage_element;
602  IF l_validate_mileage_element.element_type_id IS NULL THEN
603   p_element_link_id :=-1;
604   RETURN(-1);
605  END IF;
606 
607  hr_utility.set_location(l_proc,30);
608 EXCEPTION
609 --------
610 WHEN OTHERS THEN
611 RETURN(-1);
612  hr_utility.set_location(l_proc,40);
613 END;
614 
615 --Get eligible mileage element if no element is entered at
616 --all levels.
617 FUNCTION get_elig_mileage_element( p_assignment_id       IN NUMBER
618                                   ,p_business_group_id   IN NUMBER
619                                   ,p_effective_date      IN DATE
620                                   ,p_vehicle_type        IN VARCHAR2
621                                   ,p_ownership           IN VARCHAR2
622                                   ,p_sl_rate_type        IN VARCHAR2
623                                   ,p_element_link_id     OUT NOCOPY NUMBER
624                                 )
625 
626 RETURN NUMBER
627 IS
628 
629 CURSOR c_get_elig_mileage_element( cp_assignment_id     NUMBER
630                                   ,cp_business_group_id NUMBER
631                                   ,cp_effective_date    DATE
632                                   ,cp_vehicle_type      VARCHAR2
633                                   ,cp_ownership         VARCHAR2
634                                   ,cp_sl_rate_type      VARCHAR2
635                                 )
636 IS
637 SELECT element.element_type_id , elementtl.element_name
638  FROM  pay_element_types_f_tl       elementtl,
639        pay_element_types_f          element,
640        pay_element_links_f          link,
641        per_all_assignments_f        asgt ,
642        pay_element_type_extra_info  pete,
643        per_periods_of_service       service_period
644  WHERE element.element_type_id = elementtl.element_type_id
645    AND elementtl.language = USERENV('LANG')
646    AND asgt.business_group_id = link.business_group_id
647    AND asgt.business_group_id = element.business_group_id
648    AND element.business_group_id =link.business_group_id
649   AND asgt.business_group_id =service_period.business_group_id
650    AND element.element_type_id = link.element_type_id
651    AND service_period.period_of_service_id = asgt.period_of_service_id
652    AND cp_effective_date
653        between element.effective_start_date and element.effective_end_date
654    AND cp_effective_date
655         between asgt.effective_start_date and asgt.effective_end_date
656    AND cp_effective_date
657         between link.effective_start_date and link.effective_end_date
658    AND element.indirect_only_flag = 'N'
659    AND ((link.payroll_id is NOT NULL AND
660            link.payroll_id = asgt.payroll_id)
661            OR (link.link_to_all_payrolls_flag = 'Y'
662            AND asgt.payroll_id IS NOT NULL)
663            OR (link.payroll_id IS NULL
664            AND link.link_to_all_payrolls_flag = 'N'))
665            AND (link.organization_id = asgt.organization_id
666            OR link.organization_id IS NULL)
667            AND (link.position_id = asgt.position_id
668            OR link.position_id IS NULL)
669            AND (link.job_id = asgt.job_id OR link.job_id IS NULL)
670            AND (link.grade_id = asgt.grade_id OR link.grade_id IS NULL)
671            AND (link.location_id = asgt.location_id
672            OR link.location_id IS NULL)
673            AND (link.pay_basis_id = asgt.pay_basis_id
674            OR link.pay_basis_id IS NULL)
675            AND (link.employment_category = asgt.employment_category
676            OR link.employment_category IS NULL)
677            AND (link.people_group_id IS NULL OR EXISTS
678                  ( SELECT 1 FROM pay_assignment_link_usages_f usage
679                     WHERE usage.assignment_id = asgt.assignment_id
680                       AND usage.element_link_id = link.element_link_id
681                       AND cp_effective_date BETWEEN usage.effective_start_date
682                                               AND usage.effective_end_date))
683           AND (service_period.actual_termination_date
684                 IS NULL OR (service_period.actual_termination_date IS NOT NULL
685                  AND cp_effective_date <=
686                  DECODE(element.post_termination_rule, 'L',
687                  service_period.last_standard_process_date, 'F',
688                  NVL(service_period.final_process_date,hr_api.g_eot),
689                  service_period.actual_termination_date) ))
690           AND element.element_type_id = pete.element_type_id
691           AND pete.information_type='PQP_VEHICLE_MILEAGE_INFO'
692           AND pete.eei_information_category='PQP_VEHICLE_MILEAGE_INFO'
693           AND pete.eei_information1<>'L'
694           AND NVL(pete.eei_information2,'N')= cp_sl_rate_type
695           AND asgt.assignment_id=cp_assignment_id
696           AND asgt.business_group_id=cp_business_group_id
697           AND pete.eei_information1=DECODE(cp_vehicle_type,'C',cp_ownership,
698                                            cp_ownership||cp_vehicle_type)
699           ORDER BY element.effective_start_date DESC;
700 
701 
702 
703 
704 l_proc    varchar2(72) := g_package ||'get_elig_mileage_element';
705 l_get_elig_mileage_element    c_get_elig_mileage_element%ROWTYPE;
706 l_validate_mileage_element    pay_element_types_f.element_type_id%TYPE;
707 BEGIN
708 
709  hr_utility.set_location(l_proc,10);
710       OPEN c_get_elig_mileage_element( p_assignment_id
711                                   ,p_business_group_id
712                                   ,p_effective_date
713                                   ,p_vehicle_type
714                                   ,p_ownership
715                                   ,p_sl_rate_type
716                                 );
717       LOOP
718         FETCH c_get_elig_mileage_element INTO
719                                  l_get_elig_mileage_element;
720         EXIT WHEN c_get_elig_mileage_element%NOTFOUND;
721          hr_utility.set_location(' Enter validate element:' || l_proc,100);
722           l_validate_mileage_element:= validate_mileage_element(
723                                         p_assignment_id     =>p_assignment_id
724                                        ,p_business_group_id =>p_business_group_id
725                                        ,p_effective_date    =>p_effective_date
726                                        ,p_vehicle_type      =>p_vehicle_type
727                                        ,p_ownership         =>p_ownership
728                                        ,p_element_type_id
729                                             =>l_get_elig_mileage_element.element_type_id
730                                        ,p_sl_rate_type      =>p_sl_rate_type
731                                        ,p_element_link_id   =>p_element_link_id
732                                        );
733  hr_utility.set_location(l_proc,20);
734        IF l_validate_mileage_element <> -1 THEN
735         RETURN(l_get_elig_mileage_element.element_type_id);
736         EXIT;
737        END IF;
738       END LOOP;
739     CLOSE c_get_elig_mileage_element;
740 
741  hr_utility.set_location(l_proc,30);
742  IF l_get_elig_mileage_element.element_type_id IS NULL
743                                 OR l_validate_mileage_element =-1 THEN
744   RETURN(-1);
745  END IF;
746 
747  hr_utility.set_location(l_proc,40);
748 EXCEPTION
749 --------
750 WHEN OTHERS THEN
751 RETURN(-1);
752  hr_utility.set_location(l_proc,50);
753 END;
754 
755 --Check if CC is available in the repository
756 FUNCTION get_cc (p_effective_date             IN DATE,
757                  p_business_group_id          IN NUMBER,
758                  p_registration_number        IN VARCHAR2,
759                  p_engine_capacity            OUT NOCOPY  VARCHAR2
760                  )
761 RETURN VARCHAR2
762 IS
763 CURSOR c_get_cc
764 IS
765 SELECT pvr.engine_capacity_in_cc engine_capacity
766  FROM  pqp_vehicle_repository_f pvr
767 WHERE  pvr.business_group_id   =p_business_group_id
768   AND  pvr.registration_number =p_registration_number
769   AND  p_effective_date BETWEEN pvr.effective_start_date
770                             AND pvr.effective_end_date
771   AND pvr.engine_capacity_in_cc IS NOT NULL;
772 l_get_cc        c_get_cc%ROWTYPE;
773 l_proc    varchar2(72) := g_package ||'get_cc';
774 BEGIN
775 
776  hr_utility.set_location(l_proc,10);
777  OPEN c_get_cc;
778   FETCH c_get_cc INTO l_get_cc;
779   IF c_get_cc%FOUND THEN
780    p_engine_capacity :=l_get_cc.engine_capacity;
781    RETURN ('Y');
782     hr_utility.set_location(l_proc,20);
783   ELSE
784    RETURN ('N');
785    hr_utility.set_location(l_proc,30);
786   END IF;
787  CLOSE c_get_cc;
788 
789  hr_utility.set_location(l_proc,40);
790 EXCEPTION
791 --------
792 WHEN OTHERS THEN
793  hr_utility.set_location(l_proc,50);
794 RETURN ('N');
795 
796 END;
797 
798 --Main Insert Procedure
799 --here the process works in following order
800 --If mileage element is entered in the UI then
801 --the element is created directly by just checking the
802 --link . If the element is not entered at UI level then
803 --the allocation level is checked for any elements
804 --if not then the config level is checked, finally the link
805 --is checked and if any element is found that can be created for
806 --the employee.The rates work the same way.
807 PROCEDURE insert_mileage_claim
808         ( p_effective_date             IN DATE,
809           p_web_adi_identifier         IN VARCHAR2  ,
810           p_info_id                    IN VARCHAR2  ,
811           p_time_stamp                 IN VARCHAR2  ,
812           p_assignment_id              IN NUMBER,
813           p_business_group_id          IN NUMBER,
814           p_ownership                  IN VARCHAR2  ,
815           p_usage_type                 IN VARCHAR2  ,
816           p_vehicle_type               IN VARCHAR2,
817           p_start_date                 IN VARCHAR2  ,
818           p_end_date                   IN VARCHAR2  ,
819           p_claimed_mileage            IN VARCHAR2  ,
820           p_actual_mileage             IN VARCHAR2  ,
821           p_registration_number        IN VARCHAR2  ,
822           p_engine_capacity            IN VARCHAR2  ,
823           p_fuel_type                  IN VARCHAR2  ,
824           p_calculation_method         IN VARCHAR2  ,
825           p_user_rates_table           IN VARCHAR2  ,
826           p_fiscal_ratings             IN VARCHAR2  ,
827           p_PAYE_taxable               IN VARCHAR2  ,
828           p_no_of_passengers           IN VARCHAR2  ,
829           p_purpose                    IN VARCHAR2  ,
830           p_data_source                IN VARCHAR2  ,
831           p_user_type                  IN VARCHAR2  ,
832           p_mileage_claim_element      IN OUT NOCOPY NUMBER  ,
833           p_element_entry_id           IN OUT NOCOPY NUMBER  ,
834           p_element_entry_date         IN OUT NOCOPY DATE
835  )
836 
837 IS
838 
839 
840 --If Mileage element is not found at assignment level
841 --then fetch from configuration value table.
842 CURSOR c_get_config_element(cp_business_group_id NUMBER)
843 IS
844 select TO_NUMBER(pcv.pcv_information6) element_type_id
845        ,TO_NUMBER(pcv.pcv_information5) Rates_table_id
846   from pqp_configuration_values pcv
847  WHERE pcv.pcv_information_category='PQP_MILEAGE CALC_INFO'
848    AND pcv.business_group_id=cp_business_group_id;
849 
850 
851 
852 --Validate mileage element
853 --Get element link details
854 CURSOR c_get_ele_link ( cp_element_type_id   NUMBER
855                        ,cp_effective_date    DATE
856                        ,cp_business_group_id NUMBER
857                        )
858 IS
859 SELECT pelf.element_link_id
860   FROM pay_element_links_f pelf
861  WHERE pelf.element_type_id=cp_element_type_id
862    AND cp_effective_date BETWEEN pelf.effective_start_date
863                              AND pelf.effective_end_date
864    AND pelf.business_group_id=cp_business_group_id;
865 
866 
867 --Variables
868 l_proc    varchar2(72) := g_package ||'insert_mileage_claim';
869 l_get_pay_det                 per_all_assignments_f.payroll_id%TYPE;
870 --l_get_payroll_det             c_get_payroll_det%ROWTYPE;
871 --l_get_alt_payroll_det         c_get_alt_payroll_det%ROWTYPE;
872 l_get_asg_element_id          pay_element_types_f.element_type_id%TYPE;
873 l_get_purp_element_id         pay_element_types_f.element_type_id%TYPE;
874 l_get_asg_rate_id             VARCHAR2(80);
875 l_get_config_element          c_get_config_element%ROWTYPE;
876 l_valid_mileage_element_id    pay_element_types_f.element_type_id%TYPE;
877 l_elig_mileage_element_id     pay_element_types_f.element_type_id%TYPE;
878 l_get_ele_link                c_get_ele_link%ROWTYPE;
879 l_effective_date              DATE;
880 l_element_type_id             pay_element_types_f.element_type_id%TYPE;
881 l_element_link_id             pay_element_links_f.element_link_id%TYPE;
882 l_rates_table_id              VARCHAR2(80); --pay_user_tables.user_table_id%TYPE;
883 l_get_element_type_id         pqp_configuration_values.pcv_information5%TYPE;
884 l_get_rate_id                 pqp_configuration_values.pcv_information6%TYPE;
885 l_chk_eligibility             VARCHAR2(1);
886 l_chk_mndtry                  VARCHAR2(1);
887 l_message                     VARCHAR2(100);
888 l_session_id                  pay_us_rpt_totals.GRE_NAME%TYPE;
889 l_businesss_group_id          pay_us_rpt_totals.BUSINESS_GROUP_ID%TYPE;
890 l_assignment_id               pay_us_rpt_totals.LOCATION_ID%TYPE;
891 l_string                      VARCHAR2(3):='___';
892 l_ret_mesg                    NUMBER(2);
893 l_ret_cc                      VARCHAR2(1);
894 l_engine_capacity             VARCHAR2(9);
895 l_canonical_st_dt             VARCHAR2(24);
896 l_canonical_ed_dt             VARCHAR2(24);
897 l_st_dt                       DATE;
898 l_ed_dt                       DATE;
899 l_user_type                   VARCHAR2(3);
900 l_purp_element_name           pay_element_types_f.element_name%TYPE;
901 l_purp_rates_table_id         pay_user_tables.user_table_id%TYPE;
902 l_purp_rates_table            pay_user_tables.user_table_name%TYPE;
903 l_purp_taxable                VARCHAR2(3);
904 l_sliding_rates               VARCHAR2(1);
905 l_paye_taxable                VARCHAR2(3);
906 BEGIN
907  l_paye_taxable :=p_paye_taxable;
908  hr_utility.set_location(' Enter:' || l_proc,10);
909 
910  IF p_user_type='PUI' THEN
911   l_user_type := pqp_car_mileage_functions.get_config_info
912                  (p_business_group_id => p_business_group_id
913                  ,p_info_type         => 'Professional User'
914                           );
915  END IF;
916 
917  l_sliding_rates :=pqp_car_mileage_functions.get_config_info
918                  (p_business_group_id => p_business_group_id
919                  ,p_info_type         => 'Rates'
920                           );
921 
922 --This call for claim Insert
923 IF  p_info_id IS NULL   THEN
924 
925 --Check if CC is correct
926 
927   l_ret_cc      :=get_cc
928                  (
929                  p_effective_date        =>p_effective_date,
930                  p_business_group_id      =>p_business_group_id,
931                  p_registration_number    =>p_registration_number,
932                  p_engine_capacity        =>l_engine_capacity
933                  );
934 
935   IF l_ret_cc ='N' AND p_engine_capacity IS NOT NULL THEN
936 
937   l_engine_capacity :=p_engine_capacity;
938  ELSIF  p_engine_capacity IS NULL AND l_ret_cc ='N'AND p_vehicle_type<>'P' THEN
939   fnd_message.set_name('PQP','PQP_230736_CC_MNDTRY');
940   fnd_message.raise_error;
941   hr_multi_message.end_validation_set;
942  ELSIF p_vehicle_type ='P' THEN
943 
944   l_engine_capacity:='0';
945  END IF;
946 
947  hr_utility.set_location(' Enter payroll check cursor:' || l_proc,20);
948 
949    ---Get assignemnt payroll info.
950     l_ret_mesg:=get_payroll_id
951                      (p_assignment_id    =>p_assignment_id
952                      ,p_business_group_id=>p_business_group_id
953                      ,p_effective_date   =>p_effective_date
954                      ,p_payroll_id       =>l_get_pay_det
955                     );
956      IF l_ret_mesg<>0  THEN
957       fnd_message.set_name('PQP','PQP_230857_PAYROLL_NOT_EXST');
958       fnd_message.raise_error;
959       hr_multi_message.end_validation_set;
960      END IF;
961 
962  hr_utility.set_location(' Enter payroll details cursor:' || l_proc,30);
963   --get next unprocessed payroll date for that asg.
964   --If the effective date is in between or less then
965   --payroll run date then the date the element
966   --entry created will be effective date or the start date
967   --if the effective date is lesser then the start date.
968   --If greated than the payroll dates even then the effective
969   --date is considered.
970      l_effective_date:=get_effective_date
971                        ( p_assignment_id     =>p_assignment_id
972                         ,p_business_group_id =>p_business_group_id
973                         ,p_payroll_id        =>l_get_pay_det
974                         ,p_effective_date     =>p_effective_date
975                         );
976 
977  hr_utility.set_location(' Enter check eligibility:' || l_proc,40);
978   --Check for claim eligibility
979   l_chk_eligibility:=pqp_gb_mileage_claim_pkg.
980                    chk_eligibility (
981                             p_effective_date      =>l_effective_date
982                            ,p_assignment_id       =>p_assignment_id
983                            ,p_business_group_id   =>p_business_group_id
984                            ,p_ownership           =>p_ownership
985                            ,p_usage_type          =>p_usage_type
986                            ,p_vehicle_type        =>p_vehicle_type
987                            ,p_start_date          =>p_start_date
988                            ,p_end_date            =>p_end_date
989                            ,p_claimed_mileage     =>p_claimed_mileage
990                            ,p_actual_mileage      =>p_actual_mileage
991                            ,p_registration_number =>p_registration_number
992                            ,p_data_source         =>p_data_source
993                            ,p_message             =>l_message
994                           );
995 
996   IF l_chk_eligibility = 'N' THEN
997      fnd_message.raise_error;
998      hr_multi_message.end_validation_set;
999   END IF;
1000  hr_utility.set_location(' Enter Assignment level Element search:' || l_proc,50);
1001   --Find if element is present at the assignment level
1002 
1003   IF p_mileage_claim_element IS NULL  THEN
1004    IF  p_user_type='SS' OR ( p_user_type='PUI' AND  l_user_type='Y') THEN
1005     get_purpose_details (p_business_group_id  =>p_business_group_id
1006                         ,p_assignment_id      =>p_assignment_id
1007                         ,p_effective_date     =>l_effective_date
1008                         ,p_purpose            =>p_purpose
1009                         ,p_ownership          =>p_ownership
1010                         ,p_vehicle_type       =>p_vehicle_type
1011                         ,p_rate_type          =>l_user_type
1012                         ,p_element_id         =>l_get_purp_element_id
1013                         ,p_element_name       =>l_purp_element_name
1014                         ,p_rate_table_id      =>l_purp_rates_table_id
1015                         ,p_rate_table         =>l_purp_rates_table
1016                         ,p_taxable            =>l_purp_taxable
1017                         );
1018      l_paye_taxable:=l_purp_taxable;
1019    END IF;
1020    IF l_get_purp_element_id IS NULL THEN
1021    l_get_asg_element_id:= get_asg_element (
1022                           p_assignment_id       =>p_assignment_id
1023                          ,p_business_group_id   =>p_business_group_id
1024                          ,p_effective_date      =>p_effective_date
1025                          ,p_ownership_type      =>p_ownership
1026                          ,p_registration_number =>p_registration_number
1027                          ,p_usage_type          =>p_usage_type
1028                          ,p_check_type          =>'E'
1029                          ,p_sl_rates_type       =>l_sliding_rates
1030                           );
1031 
1032    END IF;
1033  hr_utility.set_location(' Enter config level Element search:' || l_proc,60);
1034     --if element is not present at assignment level then fetch from conf table
1035     IF (l_get_asg_element_id IS NULL OR l_get_asg_element_id=-1 )
1036          AND  l_get_purp_element_id IS NULL  THEN
1037        pqp_gb_mileage_claim_pkg.get_config_info (
1038                             p_business_group_id  =>p_business_group_id
1039                            ,p_ownership          =>p_ownership
1040                            ,p_usage_type         =>p_usage_type
1041                            ,p_vehicle_type       =>p_vehicle_type
1042                            ,p_fuel_type          =>p_fuel_type
1043                            ,p_sl_rates_type      =>l_sliding_rates
1044                            ,p_rates              =>l_get_rate_id
1045                            ,p_element_id         =>l_get_element_type_id
1046                           );
1047 
1048        l_element_type_id :=to_number(l_get_element_type_id);
1049     ELSE
1050        l_element_type_id :=NVL(l_get_purp_element_id,l_get_asg_element_id);
1051     END IF;
1052   ELSE
1053      l_element_type_id :=to_number(p_mileage_claim_element);
1054   END IF;
1055 
1056 
1057  hr_utility.set_location(' Enter db level element search:' || l_proc,90);
1058   --If no element is entered in all levels then
1059   --it must be searched in the database and validated.
1060    IF l_element_type_id IS NULL THEN
1061       l_elig_mileage_element_id:=get_elig_mileage_element
1062                                   (p_assignment_id     => p_assignment_id
1063                                   ,p_business_group_id =>p_business_group_id
1064                                   ,p_effective_date    =>l_effective_date
1065                                   ,p_vehicle_type      =>p_vehicle_type
1066                                   ,p_ownership         =>p_ownership
1067                                   ,p_sl_rate_type      =>l_sliding_rates
1068                                    ,p_element_link_id   =>l_element_link_id
1069                                 );
1070     IF l_elig_mileage_element_id <> -1 THEN
1071      l_element_type_id :=l_elig_mileage_element_id;
1072     END IF;
1073    ELSE
1074        l_valid_mileage_element_id:=validate_mileage_element
1075                                    (p_assignment_id     => p_assignment_id
1076                                    ,p_business_group_id =>p_business_group_id
1077                                    ,p_effective_date    =>p_effective_date
1078                                    ,p_vehicle_type      =>p_vehicle_type
1079                                    ,p_ownership         =>p_ownership
1080                                    ,p_element_type_id   =>to_number(l_element_type_id)
1081                                    ,p_sl_rate_type      =>l_sliding_rates
1082                                    ,p_element_link_id   =>l_element_link_id
1083                                   );
1084     IF l_valid_mileage_element_id IS NULL OR l_valid_mileage_element_id=-1 THEN
1085 
1086       l_elig_mileage_element_id:=get_elig_mileage_element
1087                                   (p_assignment_id     => p_assignment_id
1088                                   ,p_business_group_id =>p_business_group_id
1089                                   ,p_effective_date    =>l_effective_date
1090                                   ,p_vehicle_type      =>p_vehicle_type
1091                                   ,p_ownership         =>p_ownership
1092                                   ,p_sl_rate_type      =>l_sliding_rates
1093                                    ,p_element_link_id   =>l_element_link_id
1094                                 );
1095      IF l_elig_mileage_element_id <> -1 THEN
1096       l_element_type_id :=l_elig_mileage_element_id;
1097 
1098      END IF;
1099     ELSE
1100       l_element_type_id :=l_valid_mileage_element_id;
1101     END IF;
1102  END IF;
1103 
1104  IF l_element_type_id IS NULL THEN
1105   fnd_message.set_name('PQP','PQP_230732_VLD_MLG_ELE_FAIL');
1106   fnd_message.raise_error;
1107   hr_multi_message.end_validation_set;
1108  END IF;
1109 
1110  hr_utility.set_location(' Enter element link search:' || l_proc,110);
1111 /*  OPEN c_get_ele_link (l_element_type_id
1112                        ,l_effective_date
1113                        ,p_business_group_id
1114                        );
1115    LOOP
1116     FETCH c_get_ele_link INTO l_get_ele_link;
1117     EXIT WHEN c_get_ele_link%NOTFOUND;
1118     l_element_link_id:=l_get_ele_link.element_link_id;
1119    END LOOP;
1120   CLOSE c_get_ele_link;*/
1121 
1122  hr_utility.set_location(' Enter Assignment level rates search:' || l_proc,70);
1123   --If Rates is Null ,then fetch from assignment level
1124   IF p_user_rates_table IS NULL THEN
1125    IF  p_user_type='SS' OR ( p_user_type='PUI' AND  l_user_type='Y') THEN
1126  hr_utility.set_location(' Enter Assignment If condition:' || l_proc,80);
1127     l_rates_table_id:=l_purp_rates_table;
1128    END IF;
1129     IF l_rates_table_id IS NULL THEN
1130  hr_utility.set_location(' Enter Assignment Second If condition:' || l_proc,80);
1131      l_get_asg_rate_id:= get_asg_element
1132                         (p_assignment_id       =>p_assignment_id
1133                         ,p_business_group_id   =>p_business_group_id
1134                         ,p_effective_date      =>p_effective_date
1135                         ,p_ownership_type      =>p_ownership
1136                         ,p_registration_number =>p_registration_number
1137                         ,p_usage_type          =>p_usage_type
1138                         ,p_check_type          =>'R'
1139                         ,p_sl_rates_type       =>l_sliding_rates
1140                          );
1141     END IF;
1142      --if rates table is not present at assignment level
1143      --then fetch from conf table
1144  hr_utility.set_location(' Enter conf level rates search:' || l_proc,80);
1145      IF  (l_get_asg_rate_id IS NULL OR l_get_asg_rate_id=-1 ) AND
1146       l_rates_table_id IS NULL THEN
1147       pqp_gb_mileage_claim_pkg.get_config_info (
1148                             p_business_group_id  =>p_business_group_id
1149                            ,p_ownership          =>p_ownership
1150                            ,p_usage_type         =>p_usage_type
1151                            ,p_vehicle_type       =>p_vehicle_type
1152                            ,p_fuel_type          =>p_fuel_type
1153                            ,p_sl_rates_type       =>l_sliding_rates
1154                            ,p_rates              =>l_get_rate_id
1155                            ,p_element_id         =>l_get_element_type_id
1156                           );
1157 
1158       l_rates_table_id :=to_number(l_get_rate_id);
1159       l_get_asg_rate_id:=to_number(l_get_rate_id);
1160       IF l_get_asg_rate_id IS NULL OR l_get_asg_rate_id=-1 THEN
1161        l_get_asg_rate_id := get_default_value
1162                           (p_business_group_id =>p_business_group_id
1163                           ,p_element_type_id   =>l_element_type_id
1164                           ,p_effective_date    =>p_effective_date
1165                           ,p_search_type       =>'User Rates Table'
1166                           );
1167 
1168        l_rates_table_id :=to_number(l_get_rate_id);
1169       ELSE
1170        l_rates_table_id :=l_get_asg_rate_id;
1171       END IF;
1172      ELSE
1173       l_rates_table_id :=NVL(l_get_asg_rate_id,l_rates_table_id);
1174     END IF;
1175    ELSE
1176     l_rates_table_id :=(p_user_rates_table);
1177   END IF;
1178 
1179 
1180   hr_utility.set_location(' Enter mndtry field chk:' || l_proc,120);
1181   --All mandatory field validations
1182   l_chk_mndtry:= chk_mndtry_fields (
1183                             p_effective_date       =>p_effective_date
1184                            ,p_assignment_id        =>p_assignment_id
1185                            ,p_business_group_id    =>p_business_group_id
1186                            ,p_ownership            =>p_ownership
1187                            ,p_usage_type           =>p_usage_type
1188                            ,p_vehicle_type         =>p_vehicle_type
1189                            ,p_start_date           =>p_start_date
1190                            ,p_end_date             =>p_end_date
1191                            ,p_claimed_mileage      =>p_claimed_mileage
1192                            ,p_actual_mileage       =>p_actual_mileage
1193                            ,p_registration_number  =>p_registration_number
1194                            ,p_engine_capacity      =>l_engine_capacity
1195                            ,p_fuel_type            =>p_fuel_type
1196                            ,p_element_type_id      =>l_element_type_id
1197                            ,p_data_source          =>p_data_source
1198                            ,p_message              =>l_message
1199                           );
1200 
1201 
1202   IF l_chk_mndtry = 'N' THEN
1203      fnd_message.raise_error;
1204      hr_multi_message.end_validation_set;
1205    END IF;
1206 
1207  --Input values are vary from Private to Company vehicles
1208  --So inserting the values besed on ownership
1209  IF p_ownership='C' THEN
1210   hr_utility.set_location(' Enter company mileage:' || l_proc,130);
1211   insert_company_mileage_claim
1212         ( p_effective_date        =>l_effective_date
1213          ,p_assignment_id         =>p_assignment_id
1214          ,p_business_group_id     =>p_business_group_id
1215          ,p_ownership             =>p_ownership
1216          ,p_usage_type            =>p_usage_type
1217          ,p_vehicle_type          =>p_vehicle_type
1218          ,p_start_date            =>p_start_date
1219          ,p_end_date              =>p_end_date
1220          ,p_claimed_mileage       =>p_claimed_mileage
1221          ,p_actual_mileage        =>p_actual_mileage
1222          ,p_registration_number   =>p_registration_number
1223          ,p_engine_capacity       =>l_engine_capacity
1224          ,p_fuel_type             =>p_fuel_type
1225          ,p_calculation_method    =>p_calculation_method
1226          ,p_user_rates_table      =>l_rates_table_id --p_user_rates_table
1227          ,p_fiscal_ratings        =>p_fiscal_ratings
1228          ,p_PAYE_taxable          =>l_PAYE_taxable
1229          ,p_no_of_passengers      =>p_no_of_passengers
1230          ,p_purpose               =>p_purpose
1231          ,p_payroll_id            =>l_get_pay_det
1232          ,p_mileage_claim_element =>l_element_type_id
1233          ,p_element_entry_id      =>p_element_entry_id
1234          ,p_element_entry_date    =>p_element_entry_date
1235          ,p_element_link_id       =>l_element_link_id
1236        );
1237 
1238   ELSIF p_ownership='P' THEN
1239   hr_utility.set_location(' Enter private mileage:' || l_proc,140);
1240    insert_private_mileage_claim
1241         ( p_effective_date        =>l_effective_date
1242          ,p_assignment_id         =>p_assignment_id
1243          ,p_business_group_id     =>p_business_group_id
1244          ,p_ownership             =>p_ownership
1245          ,p_usage_type            =>p_usage_type
1246          ,p_vehicle_type          =>p_vehicle_type
1247          ,p_start_date            =>p_start_date
1248          ,p_end_date              =>p_end_date
1249          ,p_claimed_mileage       =>p_claimed_mileage
1250          ,p_actual_mileage        =>p_actual_mileage
1251          ,p_registration_number   =>p_registration_number
1252          ,p_engine_capacity       =>l_engine_capacity
1253          ,p_fuel_type             =>p_fuel_type
1254          ,p_calculation_method    =>p_calculation_method
1255          ,p_user_rates_table      =>l_rates_table_id --p_user_rates_table
1256          ,p_fiscal_ratings        =>p_fiscal_ratings
1257          ,p_PAYE_taxable          =>l_PAYE_taxable
1258          ,p_no_of_passengers      =>p_no_of_passengers
1259          ,p_purpose               =>p_purpose
1260          ,p_payroll_id            =>l_get_pay_det
1261          ,p_mileage_claim_element =>l_element_type_id
1262          ,p_element_entry_id      =>p_element_entry_id
1263          ,p_element_entry_date    =>p_element_entry_date
1264          ,p_element_link_id       =>l_element_link_id
1265          );
1266   END IF;
1267 --This call is for webADI related stuff
1268 ELSIF p_info_id IS NOT NULL THEN
1269   hr_utility.set_location(' Enter WEBADI:' || l_proc,150);
1270    l_assignment_id     := substr(p_info_id,1,instr(p_info_id,l_string)-1);
1271 --   l_businesss_group_id:=substr(p_info_id,instr(p_info_id,l_string)+LENGTH(l_string),
1272  --                      instr(p_info_id,l_string,1,2)-instr(p_info_id,l_string)-LENGTH(l_string));
1273 --   l_session_id :=substr(p_info_id,instr(p_info_id,l_string,1,2)+LENGTH(l_string)) ;
1274  /*This is changed now as the url contains -1,-1 for both values below
1275    now these values are derived from the profile value*/
1276    l_businesss_group_id:= fnd_profile.value('PER_BUSINESS_GROUP_ID');
1277    l_session_id := fnd_profile.value('USER_ID');
1278 
1279 
1280     l_st_dt           :=FND_DATE.CHARDATE_TO_DATE(p_start_date);
1281     l_ed_dt           :=FND_DATE.CHARDATE_TO_DATE(p_end_date);
1282     l_canonical_st_dt  :=fnd_date.date_to_canonical(l_st_dt);
1283     l_canonical_ed_dt  :=fnd_date.date_to_canonical(l_ed_dt);
1284   --  l_canonical_st_dt  :=fnd_date.date_to_displaydt(p_start_date);
1285   --  l_canonical_ed_dt  :=fnd_date.date_to_displaydt(p_end_date);
1286 
1287       INSERT INTO pay_us_rpt_totals
1288          (gre_name  , -- Stores session id
1289           state_name,  -- Stores timestamp
1290           state_abbrev, -- Stores info that tells
1291                         --the date is for Web ADI. A string ADI
1292           attribute1,  --  Stores Reg #
1293           attribute2,  --  Stores Claimed Mileage
1294           attribute3,  --  Stores Vehicle Type
1295           attribute4,  --  Stores start Date
1296           attribute5,   --   Stores end date
1297           attribute6,   --   Stores actual mileage
1298           attribute7,   --   Stores usage type
1299           attribute8 ,  --   Stores ownership
1300 	  bUsiness_group_id ,
1301 	  location_id   --Stores assignmentId
1302          )
1303         VALUES
1304          (
1305           l_session_id                 ,
1306           p_time_stamp                 ,
1307           'ADI'                        ,
1308           p_registration_number        ,
1309           p_claimed_mileage            ,
1310           p_vehicle_type               ,
1311           l_canonical_st_dt            ,
1312           l_canonical_ed_dt            ,
1313           p_actual_mileage             ,
1314           p_usage_type                 ,
1315           p_ownership                  ,
1316 	  l_businesss_group_id         ,
1317           l_assignment_id
1318           );
1319 END IF;
1320 END;
1321 
1322 
1323  -------------------------------------------------------------------------
1324  ------------ --Procedure for deleteting the claim import ----------------
1325  --------------------------------------------------------------------------
1326  --Used to delete the imported claims from UI
1327 PROCEDURE delete_claim_import
1328                  ( p_info_id        IN  VARCHAR2
1329                   ,p_assignment_id     IN  NUMBER
1330 		  ,p_business_group_id IN  NUMBER
1331 		  ,p_effective_date    IN  DATE
1332                   ,p_return_status     OUT NOCOPY VARCHAR2
1333                  )  AS
1334 l_proc    varchar2(72) := g_package ||'delete_claim_import';
1335 BEGIN
1336   hr_utility.set_location(' Enter delete claim import:' || l_proc,160);
1337     DELETE
1338       FROM  pay_us_rpt_totals
1339      WHERE  GRE_NAME = p_info_id
1340       AND   business_group_id = p_business_group_id
1341       AND   location_id = p_assignment_id
1342       AND   STATE_ABBREV ='ADI';
1343  --Deleting all rows which are older than a day
1344    DELETE
1345      FROM  pay_us_rpt_totals
1346     WHERE  STATE_ABBREV ='ADI'
1347       AND  (p_effective_date-fnd_date.canonical_to_date(state_name))>1;
1348 
1349       COMMIT;
1350       p_return_status := 'S';
1351   hr_utility.set_location('Leaving delete mileage:' || l_proc,170);
1352 exception
1353 when others then
1354      p_return_status := 'E';
1355 END;
1356 
1357  --------------------------------------------------------------------------
1358 --Call for updating the mileage claim
1359 PROCEDURE update_mileage_claim
1360          (
1361           p_effective_date             IN DATE,
1362           p_assignment_id              IN NUMBER,
1363           p_business_group_id          IN NUMBER,
1364           p_ownership                  IN VARCHAR2  ,
1365           p_usage_type                 IN VARCHAR2  ,
1366           p_vehicle_type               IN VARCHAR2,
1367           p_start_date_o               IN VARCHAR2  ,
1368           p_start_date                 IN VARCHAR2  ,
1369           p_end_date_o                 IN VARCHAR2  ,
1370           p_end_date                   IN VARCHAR2  ,
1371           p_claimed_mileage_o          IN  VARCHAR2  ,
1372           p_claimed_mileage            IN VARCHAR2  ,
1373           p_actual_mileage_o           IN  VARCHAR2  ,
1374           p_actual_mileage             IN VARCHAR2  ,
1375           p_registration_number        IN VARCHAR2  ,
1376           p_engine_capacity            IN VARCHAR2  ,
1377           p_fuel_type                  IN VARCHAR2  ,
1378           p_calculation_method         IN VARCHAR2  ,
1379           p_user_rates_table           IN VARCHAR2  ,
1380           p_fiscal_ratings_o           IN VARCHAR2  ,
1381           p_fiscal_ratings             IN VARCHAR2  ,
1382           p_PAYE_taxable               IN VARCHAR2  ,
1383           p_no_of_passengers_o         IN VARCHAR2  ,
1384           p_no_of_passengers           IN VARCHAR2  ,
1385           p_purpose                    IN VARCHAR2 ,
1386           p_data_source                IN VARCHAR2  ,
1387           p_mileage_claim_element      IN OUT NOCOPY NUMBER  ,
1388           p_element_entry_id           IN OUT NOCOPY NUMBER  ,
1389           p_element_entry_date         IN OUT NOCOPY DATE
1390          ) IS
1391 
1392 CURSOR c_get_input_value
1393 IS
1394 SELECT DISTINCT piv.input_value_id
1395        ,piv.name
1396        ,piv.lookup_type
1397        ,piv.default_value
1398   FROM pay_input_values_f piv
1399  WHERE piv.name IN ('Claimed Mileage'
1400                     ,'Actual Mileage'
1401                     ,'Claim Start Date'
1402                     ,'Claim End Date'
1403                     ,'No of Passengers'
1404                     ,'CO2 Emissions'
1405                     ,'User Rates Table'
1406                     ,'Vehicle Type'
1407                     ,'Rate Type'
1408                     ,'PAYE Taxable'
1409                     ,'Calculation Method'
1410                     ,'Purpose'
1411                     )
1412    AND piv.element_type_id=p_mileage_claim_element
1413    AND piv.business_group_id=p_business_group_id
1414    AND p_effective_date BETWEEN piv.effective_start_date
1415                              AND piv.effective_end_date;
1416 
1417 CURSOR c_get_table_name ( cp_user_rates_table  VARCHAR2
1418                          ,cp_business_group_id NUMBER
1419                          )
1420 IS
1421 SELECT put.user_table_name
1422   FROM pay_user_tables put
1423  WHERE user_table_id =cp_user_rates_table
1424    AND put.business_group_id=cp_business_group_id;
1425 
1426 
1427 CURSOR c_get_end_date
1428 IS
1429 SELECT MAX(pee.effective_end_date) effective_end_date
1430   FROM pay_element_entries_f pee
1431  WHERE pee.element_entry_id=p_element_entry_id
1432   AND pee.assignment_id=p_assignment_id;
1433 
1434 l_get_table_name             c_get_table_name%ROWTYPE;
1435 l_delete_mode                VARCHAR2(30) :='FUTURE_CHANGE';
1436 l_update_mode                VARCHAR2(30) :='CORRECTION';
1437 l_input_value_id_tbl         hr_entry.number_table;
1438 l_entry_value_tbl            hr_entry.varchar2_table;
1439 l_num_entry_values           NUMBER;
1440 l_get_input_value            c_get_input_value%ROWTYPE;
1441 l_get_end_date               c_get_end_date%ROWTYPE;
1442 l_proc    varchar2(72) := g_package ||'update_mileage_claim';
1443 BEGIN
1444 
1445   hr_utility.set_location('Enter update Claim:' || l_proc,10);
1446 OPEN c_get_end_date;
1447  LOOP
1448   FETCH c_get_end_date INTO l_get_end_date;
1449   EXIT WHEN c_get_end_date%NOTFOUND;
1450 
1451  END LOOP;
1452 CLOSE c_get_end_date;
1453   hr_utility.set_location(l_proc,20);
1454 OPEN c_get_input_value;
1455  LOOP
1456   FETCH c_get_input_value INTO l_get_input_value;
1457   EXIT WHEN c_get_input_value%NOTFOUND;
1458   hr_utility.set_location('Enter set input values:' || l_proc,30);
1459    IF l_get_input_value.name='Vehicle Type'OR
1460               l_get_input_value.name='Rate Type' THEN
1461     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1462                     :=l_get_input_value.input_value_id;
1463     l_entry_value_tbl(l_entry_value_tbl.count+1)
1464                      :=get_lkp_meaning(p_usage_type
1465                    ,l_get_input_value.lookup_type);
1466    ELSIF l_get_input_value.name='Claimed Mileage' THEN
1467    hr_utility.set_location(l_proc,40);
1468     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1469                     :=l_get_input_value.input_value_id;
1470     l_entry_value_tbl(l_entry_value_tbl.count+1)
1471                     :=p_claimed_mileage;
1472    ELSIF l_get_input_value.name='Actual Mileage' THEN
1473    hr_utility.set_location(l_proc,50);
1474     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1475                     :=l_get_input_value.input_value_id;
1476 
1477     l_entry_value_tbl(l_entry_value_tbl.count+1)
1478                     :=p_actual_mileage;
1479    ELSIF l_get_input_value.name='Claim Start Date' THEN
1480    hr_utility.set_location(l_proc,60);
1481     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1482                     :=l_get_input_value.input_value_id;
1483 
1484     l_entry_value_tbl(l_entry_value_tbl.count+1)
1485                     :=p_start_date;
1486    ELSIF l_get_input_value.name='Claim End Date' THEN
1487    hr_utility.set_location(l_proc,70);
1488     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1489                     :=l_get_input_value.input_value_id;
1490 
1491     l_entry_value_tbl(l_entry_value_tbl.count+1)
1492                     :=p_end_date;
1493    ELSIF l_get_input_value.name='User Rates Table' THEN
1494    hr_utility.set_location(l_proc,80);
1495     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1496                     :=l_get_input_value.input_value_id;
1497 
1498 
1499 
1500     OPEN c_get_table_name (p_user_rates_table
1501                           ,p_business_group_id
1502                            );
1503     FETCH c_get_table_name INTO l_get_table_name;
1504 
1505     CLOSE c_get_table_name;
1506 
1507     IF l_get_table_name.user_table_name IS NULL THEN
1508 
1509     hr_utility.set_location(l_proc,90);
1510       l_entry_value_tbl(l_entry_value_tbl.count+1)
1511                     :=l_get_input_value.default_value;
1512     ELSE
1513 
1514     hr_utility.set_location(l_proc,100);
1515       l_entry_value_tbl(l_entry_value_tbl.count+1)
1516                     :=l_get_table_name.user_table_name;
1517 
1518     END IF;
1519    ELSIF l_get_input_value.name='No of Passengers' THEN
1520     hr_utility.set_location(l_proc,110);
1521     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1522                     :=l_get_input_value.input_value_id;
1523 
1524     l_entry_value_tbl(l_entry_value_tbl.count+1)
1525                     :=p_no_of_passengers;
1526    ELSIF l_get_input_value.name='CO2 Emissions' THEN
1527     hr_utility.set_location(l_proc,120);
1528     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1529                     :=l_get_input_value.input_value_id;
1530 
1531     l_entry_value_tbl(l_entry_value_tbl.count+1)
1532                     :=p_fiscal_ratings;
1533    ELSIF l_get_input_value.name='Calculation Method' THEN
1534     hr_utility.set_location(l_proc,130);
1535     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1536                     :=l_get_input_value.input_value_id;
1537 
1538     IF p_calculation_method IS  NULL THEN
1539     l_entry_value_tbl(l_entry_value_tbl.count+1)
1540                     :=p_calculation_method;
1541     ELSE
1542      l_entry_value_tbl(l_entry_value_tbl.count+1)
1543                     :=get_lkp_meaning(p_calculation_method
1544                    ,l_get_input_value.lookup_type);
1545 
1546     END IF;
1547    ELSIF l_get_input_value.name='PAYE Taxable' THEN
1548     hr_utility.set_location(l_proc,140);
1549     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1550                     :=l_get_input_value.input_value_id;
1551 
1552     IF l_get_input_value.lookup_type IS NOT NULL THEN
1553      l_entry_value_tbl(l_entry_value_tbl.count+1)
1554                      :=get_lkp_meaning(p_PAYE_Taxable
1555                    ,l_get_input_value.lookup_type);
1556     ELSE
1557      l_entry_value_tbl(l_entry_value_tbl.count+1):= p_PAYE_Taxable;
1558     END IF;
1559 
1560    ELSIF l_get_input_value.name='Purpose' THEN
1561    hr_utility.set_location(l_proc,70);
1562     l_input_value_id_tbl(l_input_value_id_tbl.count +1)
1563                     :=l_get_input_value.input_value_id;
1564 
1565     l_entry_value_tbl(l_entry_value_tbl.count+1)
1566                     :=p_purpose;
1567 
1568    END IF;
1569 
1570   l_num_entry_values :=l_input_value_id_tbl.count;
1571 
1572  END LOOP;
1573 CLOSE c_get_input_value;
1574 
1575 IF l_get_end_date.effective_end_date <> hr_api.g_eot
1576                                          THEN
1577     hr_utility.set_location(l_proc,150);
1578  IF p_claimed_mileage_o <> p_claimed_mileage OR
1579     p_actual_mileage_o <> p_actual_mileage THEN
1580     hr_utility.set_location(l_proc,160);
1581   hr_utility.set_location('Enter delete api:' || l_proc,200);
1582   hr_entry_api.delete_element_entry
1583   (
1584    p_dt_delete_mode             =>l_delete_mode,
1585    p_session_date               =>p_effective_date,
1586    p_element_entry_id           =>p_element_entry_id
1587    );
1588   END IF;
1589 
1590 END IF;
1591 
1592     hr_utility.set_location(l_proc,170);
1593   hr_utility.set_location('Enter correction:' || l_proc,210);
1594 hr_entry_api.update_element_entry
1595  (
1596   p_dt_update_mode             =>l_update_mode,
1597   p_session_date               =>p_effective_date,
1598   p_element_entry_id           =>p_element_entry_id,
1599   p_num_entry_values           =>l_num_entry_values,
1600   p_input_value_id_tbl         =>l_input_value_id_tbl,
1601   p_entry_value_tbl            =>l_entry_value_tbl
1602  );
1603 
1604 exception
1605 --------
1606 When others then
1607     hr_utility.set_location(l_proc,180);
1608  fnd_message.raise_error;
1609  hr_multi_message.end_validation_set;
1610 
1611 END;
1612 
1613 --Call for deleting the mileage claim
1614 PROCEDURE delete_mileage_claim
1615         ( p_effective_date             IN DATE,
1616           p_assignment_id              IN NUMBER,
1617           p_mileage_claim_element      IN NUMBER ,
1618           p_element_entry_id           IN NUMBER  ,
1619           p_element_entry_date         IN DATE
1620      ) IS
1621 
1622 CURSOR c_get_end_date(cp_element_entry_id NUMBER
1623                      ,cp_assignment_id  NUMBER)
1624 IS
1625 SELECT MAX(pee.effective_end_date) effective_end_date
1626   FROM pay_element_entries_f pee
1627  WHERE pee.element_entry_id=cp_element_entry_id
1628    AND pee.assignment_id  =cp_assignment_id;
1629 
1630 CURSOR c_get_process_status (cp_assignment_id NUMBER
1631                              ,cp_element_type_id NUMBER
1632                              ,cp_element_entry_id NUMBER
1633                              )
1634 IS
1635 SELECT prr.assignment_action_id
1636   FROM pay_run_results prr
1637  WHERE
1638    --prr.assignment_id =cp_assignment_id
1639    --AND
1640     prr.element_type_id=cp_element_type_id
1641    AND prr.source_id=cp_element_entry_id;
1642 
1643 l_get_end_date c_get_end_date%ROWTYPE;
1644 l_get_process_status c_get_process_status%ROWTYPE;
1645 
1646 l_proc    varchar2(72) := g_package ||'delete_mileage_claim';
1647 BEGIN
1648 
1649 hr_utility.set_location(l_proc,10);
1650 OPEN c_get_end_date (p_element_entry_id
1651                      ,p_assignment_id
1652                      );
1653  LOOP
1654   FETCH c_get_end_date INTO l_get_end_date;
1655   EXIT WHEN c_get_end_date%NOTFOUND;
1656   hr_utility.set_location(l_proc,20);
1657   IF l_get_end_date.effective_end_date =hr_api.g_eot THEN
1658 
1659     OPEN c_get_process_status ( p_assignment_id
1660                                ,p_mileage_claim_element
1661                                ,p_element_entry_id
1662                                );
1663      LOOP
1664       FETCH c_get_process_status INTO l_get_process_status;
1665       EXIT WHEN c_get_process_status%NOTFOUND;
1666      END LOOP;
1667     CLOSE c_get_process_status;
1668 
1669     IF l_get_process_status.assignment_action_id IS  NULL THEN
1670 
1671     hr_utility.set_location(l_proc,30);
1672      hr_entry_api.delete_element_entry
1673       (
1674        p_dt_delete_mode             =>'ZAP'
1675        ,p_session_date               =>p_effective_date
1676        ,p_element_entry_id           =>p_element_entry_id
1677       );
1678     ELSE
1679     hr_utility.set_location(l_proc,40);
1680      fnd_message.set_name('PQP','PQP_230718_CLM_PROC_DEL');
1681      fnd_message.raise_error;
1682       hr_multi_message.end_validation_set;
1683     END IF;
1684 
1685   ELSE
1686 
1687      hr_utility.set_location(l_proc,50);
1688      fnd_message.set_name('PQP','PQP_230718_CLM_PROC_DEL');
1689      fnd_message.raise_error;
1690       hr_multi_message.end_validation_set;
1691   END IF;
1692  END LOOP;
1693 exception
1694 --------
1695 When others then
1696  hr_utility.set_location(l_proc,60);
1697  fnd_message.raise_error;
1698  hr_multi_message.end_validation_set;
1699 END;
1700 
1701 --get element or rates from configuration
1702 PROCEDURE get_config_info ( p_business_group_id   IN  NUMBER
1703                            ,p_ownership           IN  VARCHAR2
1704                            ,p_usage_type          IN  VARCHAR2
1705                            ,p_vehicle_type        IN  VARCHAR2
1706                            ,p_fuel_type           IN  VARCHAR2
1707                            ,p_sl_rates_type       IN  VARCHAR2
1708                            ,p_rates               OUT NOCOPY NUMBER
1709                            ,p_element_id          OUT NOCOPY NUMBER
1710                           )
1711 IS
1712 CURSOR c_get_config_rates_info
1713 IS
1714 SELECT  pcv.pcv_information_category
1715        ,pcv.pcv_information1 Ownership
1716        ,pcv.pcv_information2 Usage_type
1717        ,pcv.pcv_information3 Vehicle_type
1718        ,pcv.pcv_information4 Fuel_type
1719        ,pcv.pcv_information5 rates_type
1720   FROM pqp_configuration_values pcv
1721  WHERE business_group_id=p_business_group_id
1722    AND pcv.pcv_information_category='GB_VEHICLE_CALC_INFO'
1723    AND pcv_information1=p_ownership
1724    AND (pcv_information2=p_usage_type
1725         OR pcv_information2 IS NULL)
1726    AND (pcv_information3=p_vehicle_type
1727          OR pcv_information3 IS NULL)
1728    AND (pcv_information4=p_fuel_type
1729          OR pcv_information4 IS NULL)
1730    AND pcv.pcv_information5 IS NOT NULL
1731    ORDER BY 1,2,3,4;
1732 
1733 CURSOR c_get_config_element_info
1734 IS
1735 SELECT  pcv.pcv_information_category
1736        ,pcv.pcv_information1 Ownership
1737        ,pcv.pcv_information2 Usage_type
1738        ,pcv.pcv_information3 Vehicle_type
1739        ,pcv.pcv_information4 Fuel_type
1740        ,pcv.pcv_information6 element_id
1741   FROM pqp_configuration_values pcv
1742  WHERE business_group_id=p_business_group_id
1743    AND pcv.pcv_information_category='GB_VEHICLE_CALC_INFO'
1744    AND pcv_information1=p_ownership
1745    AND (pcv_information2=p_usage_type
1746         OR pcv_information2 IS NULL)
1747    AND (pcv_information3=p_vehicle_type
1748          OR pcv_information3 IS NULL)
1749    AND (pcv_information4=p_fuel_type
1750          OR pcv_information4 IS NULL)
1751    AND pcv.pcv_information6 IS NOT NULL
1752    ORDER BY 1,2,3,4;
1753 
1754 CURSOR  c_ele_type (cp_element_type_id   NUMBER)
1755  IS
1756  SELECT NVL(pete.eei_information2 ,'N') ele_type
1757   FROM  pay_element_type_extra_info pete
1758  WHERE  pete.information_type='PQP_VEHICLE_MILEAGE_INFO'
1759    AND  pete.element_type_id= cp_element_type_id;
1760 
1761 l_ele_type              c_ele_type%ROWTYPE;
1762 l_get_config_rates_info c_get_config_rates_info%ROWTYPE;
1763 l_get_config_element_info c_get_config_element_info%ROWTYPE;
1764 wrong_table              EXCEPTION;
1765 BEGIN
1766 
1767  OPEN c_get_config_rates_info;
1768   FETCH c_get_config_rates_info INTO l_get_config_rates_info;
1769  CLOSE c_get_config_rates_info;
1770 
1771  IF p_sl_rates_type='Y' THEN
1772   BEGIN
1773    p_rates :=to_number(l_get_config_rates_info.rates_type) ;
1774    RAISE wrong_table;
1775 
1776   EXCEPTION
1777   ---------
1778    WHEN wrong_table THEN
1779     p_rates:=NULL;
1780    WHEN OTHERS THEN
1781     p_rates :=l_get_config_rates_info.rates_type;
1782    END;
1783   ELSE
1784    BEGIN
1785     p_rates :=to_number(l_get_config_rates_info.rates_type) ;
1786 
1787    EXCEPTION
1788    ---------
1789     WHEN OTHERS THEN
1790      p_rates :=NULL;
1791    END;
1792   END IF;
1793 
1794  OPEN c_get_config_element_info;
1795   FETCH c_get_config_element_info INTO l_get_config_element_info;
1796 
1797   OPEN c_ele_type (l_get_config_element_info.element_id);
1798    FETCH c_ele_type INTO l_ele_type;
1799   CLOSE c_ele_type;
1800   IF p_sl_rates_type=l_ele_type.ele_type THEN
1801    p_element_id :=l_get_config_element_info.element_id;
1802   ELSE
1803    p_element_id :=NULL;
1804   END IF;
1805  CLOSE c_get_config_element_info;
1806 
1807 END;
1808 --chk if vehicle is active during the claim period
1809 FUNCTION chk_vehicle_active ( p_ownership           IN VARCHAR2
1810                              ,p_usage_type          IN VARCHAR2
1811                              ,p_assignment_id       IN NUMBER
1812                              ,p_business_group_id   IN NUMBER
1813                              ,p_start_date          IN VARCHAR2
1814                              ,p_end_date            IN VARCHAR2
1815                              ,p_registration_number IN VARCHAR2
1816                              ,p_message             OUT NOCOPY VARCHAR2
1817                             )
1818 RETURN NUMBER
1819 IS
1820 
1821 CURSOR c_get_reg_num
1822 IS
1823 SELECT pvr.registration_number
1824       ,pva.default_vehicle
1825   FROM pqp_vehicle_repository_f pvr
1826        ,pqp_vehicle_allocations_f pva
1827  WHERE pva.vehicle_repository_id=pvr.vehicle_repository_id
1828    AND pvr.vehicle_ownership=p_ownership
1829    AND pva.usage_type=p_usage_type
1830    AND pva.assignment_id=p_assignment_id
1831    AND pva.business_group_id=p_business_group_id
1832    AND pva.business_group_id=pvr.business_group_id
1833    AND p_start_date BETWEEN pva.effective_start_date
1834                         AND pva.effective_end_date
1835    AND p_start_date BETWEEN pvr.effective_start_date
1836                         AND pvr.effective_end_date ;
1837 
1838 CURSOR c_chk_active (cp_registration_number VARCHAR2)
1839 IS
1840 SELECT pvr.vehicle_status,'Start_Date' clm_date
1841   FROM pqp_vehicle_repository_f pvr
1842 WHERE  pvr.registration_number=cp_registration_number
1843   AND  pvr.vehicle_status='I'
1844   AND  p_start_date BETWEEN pvr.effective_start_date
1845                         AND pvr.effective_end_date
1846 UNION
1847 SELECT pvr.vehicle_status,'End_Date' clm_date
1848   FROM pqp_vehicle_repository_f pvr
1849 WHERE  pvr.registration_number=cp_registration_number
1850   AND  pvr.vehicle_status='I'
1851   AND  p_end_date BETWEEN pvr.effective_start_date
1852                         AND pvr.effective_end_date;
1853 
1854 CURSOR c_chk_alloc (cp_registration_number VARCHAR2)
1855 IS
1856 SELECT 'Start_Valid' valid_date
1857   FROM pqp_vehicle_allocations_f pva
1858       ,per_all_assignments_f paa
1859       ,pqp_vehicle_repository_f pvr
1860  WHERE pva.assignment_id=p_assignment_id
1861    AND pvr.registration_number=cp_registration_number
1862    AND pvr.vehicle_repository_id=pva.vehicle_repository_id
1863    AND pva.business_group_id=p_business_group_id
1864    AND pva.assignment_id =paa.assignment_id
1865    AND pva.business_group_id=paa.business_group_id
1866    AND pva.business_group_id=pvr.business_group_id
1867    AND p_start_date BETWEEN pva.effective_start_date
1868                          AND pva.effective_end_date
1869    AND p_start_date BETWEEN paa.effective_start_date
1870                          AND paa.effective_end_date
1871    AND p_start_date BETWEEN pvr.effective_start_date
1872                          AND pvr.effective_end_date
1873 UNION
1874 SELECT 'End_Valid' valid_date
1875   FROM pqp_vehicle_allocations_f pva
1876       ,per_all_assignments_f paa
1877       ,pqp_vehicle_repository_f pvr
1878  WHERE pva.assignment_id=p_assignment_id
1879    AND pvr.registration_number=cp_registration_number
1880    AND pvr.vehicle_repository_id=pva.vehicle_repository_id
1881    AND pva.business_group_id=p_business_group_id
1882    AND pva.assignment_id =paa.assignment_id
1883    AND pva.business_group_id=paa.business_group_id
1884    AND pva.business_group_id=pvr.business_group_id
1885    AND p_end_date BETWEEN pva.effective_start_date
1886                          AND pva.effective_end_date
1887    AND p_end_date BETWEEN paa.effective_start_date
1888                          AND paa.effective_end_date
1889    AND p_end_date BETWEEN pvr.effective_start_date
1890                          AND pvr.effective_end_date;
1891 
1892 
1893 
1894 l_get_reg_num  c_get_reg_num%ROWTYPE;
1895 l_chk_alloc    c_chk_alloc%ROWTYPE;
1896 l_chk_active   c_chk_active%ROWTYPE;
1897 l_st_date      VARCHAR2(10);
1898 l_end_date      VARCHAR2(10);
1899 BEGIN
1900  IF p_registration_number IS NULL THEN
1901   OPEN c_get_reg_num;
1902    LOOP
1903     FETCH c_get_reg_num INTO l_get_reg_num;
1904     EXIT WHEN c_get_reg_num%NOTFOUND;
1905    END LOOP;
1906   CLOSE c_get_reg_num;
1907 
1908  END IF;
1909  OPEN  c_chk_active (NVL(p_registration_number,
1910                          l_get_reg_num.registration_number));
1911   LOOP
1912    FETCH c_chk_active INTO l_chk_active;
1913    EXIT WHEN c_chk_active%NOTFOUND;
1914    IF l_chk_active.clm_date='Start_Date' THEN
1915     l_st_date:=l_chk_active.clm_date;
1916    ELSIF l_chk_active.clm_date='End_Date' THEN
1917 
1918     l_end_date:=l_chk_active.clm_date;
1919 
1920    END IF;
1921 
1922   END LOOP;
1923  CLOSE c_chk_active;
1924  IF l_st_date IS NOT NULL AND
1925     l_end_date IS NOT NULL THEN
1926 
1927   fnd_message.raise_error;
1928 
1929  ELSIF l_st_date IS NOT NULL AND
1930      l_end_date IS  NULL THEN
1931 
1932   fnd_message.raise_error;
1933  ELSIF l_st_date IS NULL AND
1934      l_end_date IS NOT NULL THEN
1935 
1936   fnd_message.raise_error;
1937 
1938  END IF;
1939 
1940 END;
1941 
1942 --Check for Mandatory columns
1943 FUNCTION chk_mndtry_fields (  p_effective_date      IN  DATE
1944                            ,p_assignment_id         IN  NUMBER
1945                            ,p_business_group_id     IN  NUMBER
1946                            ,p_ownership             IN  VARCHAR2
1947                            ,p_usage_type            IN  VARCHAR2
1948                            ,p_vehicle_type          IN  VARCHAR2
1949                            ,p_start_date            IN  VARCHAR2
1950                            ,p_end_date              IN  VARCHAR2
1951                            ,p_claimed_mileage       IN  VARCHAR2
1952                            ,p_actual_mileage        IN  VARCHAR2
1953                            ,p_registration_number   IN  VARCHAR2
1954                            ,p_engine_capacity       IN  VARCHAR2
1955                            ,p_fuel_type             IN  VARCHAR2
1956                            ,p_element_type_id       IN  NUMBER
1957                            ,p_data_source           IN  VARCHAR2
1958                            ,p_message               OUT NOCOPY VARCHAR2
1959                           )
1960 
1961 RETURN VARCHAR2
1962 AS
1963  CURSOR c_get_veh_det
1964  IS
1965  SELECT pvr.vehicle_type
1966        ,pvr.vehicle_ownership
1967        ,pvr.fiscal_ratings
1968        ,pvr.engine_capacity_in_cc
1969        ,pvr.fuel_type
1970  FROM  pqp_vehicle_repository_f pvr
1971 WHERE  pvr.registration_number = p_registration_number
1972   AND  pvr.business_group_id   = p_business_group_id
1973   AND  p_effective_date BETWEEN pvr.effective_start_date
1974                         AND pvr.effective_end_date;
1975 
1976  CURSOR c_validate_comp_veh
1977  IS
1978  SELECT pvr.vehicle_type
1979        ,pvr.vehicle_ownership
1980        ,pvr.fiscal_ratings
1981        ,pvr.engine_capacity_in_cc
1982        ,pvr.fuel_type
1983  FROM  pqp_vehicle_repository_f pvr
1984        ,pqp_vehicle_allocations_f pva
1985 WHERE  (pvr.registration_number =p_registration_number
1986          OR p_registration_number IS NULL)
1987   AND  pva.assignment_id= p_assignment_id
1988   AND  pvr.business_group_id   = p_business_group_id
1989   AND pvr.vehicle_repository_id=pva.vehicle_repository_id
1990   AND pvr.business_group_id=pva.business_group_id
1991   AND  FND_DATE.CHARDATE_TO_DATE(p_start_date) BETWEEN pvr.effective_start_date
1992                         AND pvr.effective_end_date
1993   AND  pva.usage_type IN ('P','S');
1994 
1995 l_validate_comp_veh     c_validate_comp_veh%ROWTYPE;
1996 l_get_veh_det c_get_veh_det%ROWTYPE;
1997 l_retvalue  VARCHAR2(1) :='Y';
1998 l_proc    varchar2(72) := g_package ||'chk_mndtry_fields';
1999  BEGIN
2000 
2001   hr_utility.set_location('Enter ' || l_proc,10);
2002   IF p_registration_number IS NOT NULL THEN
2003    OPEN c_get_veh_det;
2004     FETCH c_get_veh_det INTO l_get_veh_det;
2005     IF c_get_veh_det%FOUND THEN
2006      hr_utility.set_location( l_proc,20);
2007      IF l_get_veh_det.vehicle_type<>p_vehicle_type THEN
2008       hr_utility.set_location( l_proc,30);
2009       fnd_message.set_name('PQP', 'PQP_230859_VEHICLE_TYP_VALIDAT');
2010       l_retvalue :='N';
2011      END IF;
2012      IF l_get_veh_det.engine_capacity_in_cc
2013                               <>p_engine_capacity THEN
2014       hr_utility.set_location( l_proc,40);
2015       fnd_message.set_name('PQP', 'PQP_230860_ENGINE_CAP_VALIDAT');
2016       l_retvalue :='N';
2017 
2018      END IF;
2019      IF l_get_veh_det.fuel_type <>p_fuel_type THEN
2020       hr_utility.set_location( l_proc,50);
2021       fnd_message.set_name('PQP', 'PQP_230861_FUEL_TYP_VALIDAT');
2022       l_retvalue :='N';
2023      END IF;
2024 
2025 
2026     END IF;
2027    CLOSE c_get_veh_det;
2028   END IF;
2029  --Check if the an assignemnt has company vehicle
2030 --allocated
2031   IF  p_ownership='C' THEN
2032 
2033    hr_utility.set_location( l_proc,60);
2034   OPEN c_validate_comp_veh;
2035    FETCH c_validate_comp_veh INTO l_validate_comp_veh;
2036    IF c_validate_comp_veh%NOTFOUND THEN
2037 
2038     hr_utility.set_location( l_proc,70);
2039     fnd_message.set_name('PQP', 'PQP_230866_COMP_VEH_NOT_ALLOC');
2040     l_retvalue :='N';
2041    END IF;
2042 
2043   CLOSE c_validate_comp_veh;
2044 
2045   END IF;
2046   IF p_ownership IS NULL THEN
2047    hr_utility.set_location( l_proc,80);
2048    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2049    fnd_message.set_token('TOKEN','Ownership');
2050    l_retvalue :='N';
2051   END IF;
2052 
2053 --Commented out this now because this condition is no longer
2054 --required as the code handles this during element entry.
2055   /*IF p_usage_type IS NULL THEN
2056    hr_utility.set_location( l_proc,90);
2057    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2058    fnd_message.set_token('TOKEN','Usage Type');
2059    l_retvalue :='N';
2060 
2061   END IF;*/
2062 
2063   IF p_vehicle_type IS NULL THEN
2064    hr_utility.set_location( l_proc,100);
2065    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2066    fnd_message.set_token('TOKEN','Vehicle Type');
2067    l_retvalue :='N';
2068 
2069   END IF;
2070 
2071 
2072   IF p_start_date IS NULL THEN
2073    hr_utility.set_location( l_proc,110);
2074    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2075    fnd_message.set_token('TOKEN','Start Date');
2076    l_retvalue :='N';
2077 
2078   END IF;
2079 
2080   IF p_end_date IS NULL THEN
2081    hr_utility.set_location( l_proc,120);
2082    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2083    fnd_message.set_token('TOKEN','End Date');
2084 
2085    l_retvalue :='N';
2086   END IF;
2087   IF p_claimed_mileage IS NULL THEN
2088    hr_utility.set_location( l_proc,130);
2089    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2090    fnd_message.set_token('TOKEN','Claimed Mileage');
2091    l_retvalue :='N';
2092 
2093   END IF;
2094 
2095 
2096   IF p_engine_capacity IS NULL THEN
2097    hr_utility.set_location( l_proc,140);
2098    fnd_message.set_name('PQP', 'PQP_230734_FLD_MANDTRY');
2099    fnd_message.set_token('TOKEN','Engine Capacity');
2100    l_retvalue :='N';
2101   END IF;
2102 
2103   IF p_element_type_id  IS NULL THEN
2104    hr_utility.set_location( l_proc,150);
2105 
2106    fnd_message.set_name('PQP', 'PQP_230732_VLD_MLG_ELE_FAIL');
2107    l_retvalue :='N';
2108   END IF;
2109 
2110   IF FND_DATE.CHARDT_TO_DATE(p_end_date) <
2111               FND_DATE.CHARDT_TO_DATE(p_start_date) THEN
2112     hr_utility.set_location( l_proc,160);
2113     fnd_message.set_name('PER','HR_289262_ST_DATE_BEFORE_EDATE');
2114    l_retvalue :='N';
2115   END IF;
2116 
2117  --RETURN('Y');
2118   RETURN (l_retvalue);
2119     hr_utility.set_location( 'Leaving :'||l_proc,170);
2120  END;
2121 
2122 --Check for eligibility
2123 FUNCTION chk_eligibility (  p_effective_date        IN  DATE
2124                            ,p_assignment_id         IN  NUMBER
2125                            ,p_business_group_id     IN  NUMBER
2126                            ,p_ownership             IN  VARCHAR2
2127                            ,p_usage_type            IN  VARCHAR2
2128                            ,p_vehicle_type          IN  VARCHAR2
2129                            ,p_start_date            IN  VARCHAR2
2130                            ,p_end_date              IN  VARCHAR2
2131                            ,p_claimed_mileage       IN  VARCHAR2
2132                            ,p_actual_mileage        IN  VARCHAR2
2133                            ,p_registration_number   IN  VARCHAR2
2134                            ,p_data_source           IN  VARCHAR2
2135                            ,p_message               OUT NOCOPY VARCHAR2
2136                           )
2137 
2138 RETURN VARCHAR2
2139 IS
2140 
2141 --get info from config table to chk
2142 --for eligibility.
2143 l_retvalue  VARCHAR2(1) :='Y';
2144 CURSOR c_get_config_info (cp_leg_code VARCHAR2)
2145 IS
2146 SELECT  pcv_information6 prev_tax_yr_valid
2147        ,pcv_information7 allow_both_veh_clm
2148        ,pcv_information9 validate_pvt_veh
2149   FROM pqp_configuration_values pcv
2150  WHERE pcv.legislation_code=cp_leg_code
2151    AND pcv.pcv_information_category='PQP_VEHICLE_MILEAGE';
2152 
2153 --Check the status of vehicle
2154 CURSOR c_validate_veh ( cp_reg_num           VARCHAR2
2155                        ,cp_ownership         VARCHAR2
2156                        ,cp_business_group_id VARCHAR2
2157                        ,cp_start_date         VARCHAR2
2158                        )
2159 IS
2160 SELECT 'X' exst
2161   FROM pqp_vehicle_repository_f pvr
2162  WHERE pvr.registration_number=cp_reg_num
2163    AND pvr.business_group_id  =cp_business_group_id
2164    AND TO_DATE(cp_start_date,'YYYY/MM/DD') BETWEEN
2165        pvr.effective_start_date AND
2166        pvr.effective_end_date;
2167 
2168 CURSOR c_get_alloc_info ( cp_assignment_id     NUMBER
2169                        ,cp_ownership         VARCHAR2
2170                        ,cp_business_group_id VARCHAR2
2171                        ,cp_start_date         VARCHAR2
2172                        )
2173 IS
2174 SELECT DISTINCT  pvr.vehicle_ownership ownership
2175   FROM pqp_vehicle_allocations_f pva,
2176        pqp_vehicle_repository_f pvr
2177  WHERE pva.assignment_id  =cp_assignment_id
2178    AND pva.business_group_id =cp_business_group_id
2179    AND pva.vehicle_repository_id=pvr.vehicle_repository_id
2180    AND pva.business_group_id=pvr.business_group_id
2181    AND fnd_date.CHARDATE_TO_DATE(cp_start_date) BETWEEN
2182        pva.effective_start_date AND
2183        pva.effective_end_date
2184    AND fnd_date.CHARDATE_TO_DATE(cp_start_date) BETWEEN
2185        pvr.effective_start_date AND
2186        pvr.effective_end_date
2187    AND pvr.vehicle_ownership='C';
2188 
2189 l_get_alloc_info  c_get_alloc_info%ROWTYPE;
2190 l_validate_veh    c_validate_veh%ROWTYPE;
2191 l_get_config_info c_get_config_info%ROWTYPE;
2192 
2193 l_proc    varchar2(72) := g_package ||'check_eligibility';
2194 BEGIN
2195   hr_utility.set_location('Enter chk eligibility:' || l_proc,220);
2196  OPEN c_get_config_info('GB'
2197                        );
2198   LOOP
2199    FETCH c_get_config_info INTO l_get_config_info;
2200    EXIT WHEN c_get_config_info%NOTFOUND;
2201 
2202   END LOOP;
2203  CLOSE c_get_config_info;
2204 
2205 --Check if the claim is made for last tax
2206 --year after the cut off date.
2207  IF l_get_config_info.prev_tax_yr_valid IS NOT NULL THEN
2208   IF fnd_date.CHARDATE_TO_DATE(p_start_date) <
2209                              TO_DATE(TO_CHAR
2210                              (p_effective_date, 'YYYY')||'04/06','YYYY/MM/DD')
2211                             THEN
2212    --checking the effective date is greater than previous tax year sumit
2213    --valid untill date,so user cannot sumit claim after previous tax year
2214     IF p_effective_date > fnd_date.CHARDATE_TO_DATE
2215                          (l_get_config_info.prev_tax_yr_valid||
2216                           TO_CHAR(p_effective_date,'YYYY'))
2217                             THEN
2218 --Error handling missing
2219     fnd_message.set_name('PQP', 'PQP_230715_CLM_CUT_OFF_DT');
2220     p_message :='Violated Valid Tax Year';
2221 
2222    l_retvalue :='N';
2223    END IF;
2224   END IF;
2225  END IF;
2226 
2227   hr_utility.set_location('leave chk eligibility:' || l_proc,230);
2228 
2229 --Check if pvt vehicle need to be validated against
2230 --repository.
2231  IF l_get_config_info.validate_pvt_veh ='Y' THEN
2232 
2233   OPEN c_validate_veh (p_registration_number
2234                        ,p_ownership
2235                        ,p_business_group_id
2236                        ,p_start_date
2237                        );
2238    LOOP
2239     FETCH c_validate_veh INTO l_validate_veh;
2240     EXIT WHEN c_validate_veh%NOTFOUND;
2241    END LOOP;
2242   CLOSE c_validate_veh;
2243 
2244   IF l_validate_veh.exst IS NULL THEN
2245    fnd_message.set_name('PQP', 'PQP_230735_REGNUM_FRM_REP');
2246    p_message:='Enter Only Vehicle in Repository';
2247 
2248    l_retvalue :='N';
2249   END IF;
2250  END IF;
2251 
2252 --Check if the claim can be entered for both.
2253  IF l_get_config_info.allow_both_veh_clm ='N' THEN
2254    OPEN c_get_alloc_info ( p_assignment_id
2255                           ,p_ownership
2256                           ,p_business_group_id
2257                           ,p_start_date
2258                        );
2259     LOOP
2260      FETCH c_get_alloc_info INTO l_get_alloc_info;
2261      EXIT WHEN c_get_alloc_info%NOTFOUND;
2262 
2263     END LOOP;
2264    CLOSE c_get_alloc_info;
2265   IF l_get_alloc_info.ownership<>p_ownership THEN
2266    fnd_message.set_name('PQP', 'PQP_230740_ONE_OWNRSHP_RSTRICT');
2267    p_message :='Enter Only one type of Claim';
2268    l_retvalue :='N';
2269   END IF;
2270  END IF;
2271 --RETURN('Y');
2272   RETURN( l_retvalue);
2273 END;
2274 
2275 
2276 
2277 --Check for same record
2278 FUNCTION chk_record_exist ( p_effective_date        IN DATE
2279                            ,p_assignment_id         IN NUMBER
2280                            ,p_business_group_id     IN NUMBER
2281                            ,p_ownership             IN VARCHAR2
2282                            ,p_usage_type            IN VARCHAR2
2283                            ,p_vehicle_type          IN VARCHAR2
2284                            ,p_start_date            IN VARCHAR2
2285                            ,p_end_date              IN VARCHAR2
2286                            ,p_claimed_mileage       IN VARCHAR2
2287                            ,p_actual_mileage        IN VARCHAR2
2288                            ,p_registration_number   IN VARCHAR2
2289                            ,p_data_source           IN VARCHAR2
2290                            )
2291 RETURN VARCHAR2
2292 IS
2293 
2294 CURSOR c_get_ele_details ( cp_vehicle_type     VARCHAR2
2295                           ,cp_business_group_id  NUMBER
2296                           )
2297 
2298 IS
2299 SELECT  pet.element_type_id
2300        ,pel.element_link_id
2301   FROM  pay_element_types_f pet
2302        ,pay_element_type_extra_info pete
2303        ,pay_element_links_f pel
2304  WHERE  pete.eei_information_category='PQP_VEHICLE_MILEAGE_INFO'
2305    AND  pet.element_type_id=pete.element_type_id
2306    AND  pete.element_type_id=pel.element_type_id
2307    AND pete.eei_information1=cp_vehicle_type
2308    AND pet.business_group_id=pel.business_group_id
2309    AND pet.business_group_id=cp_business_group_id
2310    AND pet.element_type_id=pel.element_type_id;
2311 
2312 
2313 CURSOR c_get_input_val (cp_element_type_id     NUMBER
2314                         ,cp_business_group_id  NUMBER
2315                         )
2316 IS
2317 SELECT  piv.element_type_id
2318        ,piv.input_value_id
2319        ,piv.name
2320  FROM   pay_input_values_f piv
2321 WHERE   piv.name in ('Claim Start Date','Claim End Date')
2322   AND   piv.element_type_id=cp_element_type_id
2323   and   piv.business_group_id=cp_business_group_id;
2324 
2325 
2326 
2327 
2328 CURSOR c_get_date_exist ( cp_assignment_id NUMBER
2329                          ,cp_start_date    DATE
2330                          ,cp_end_date      DATE
2331                          ,cp_ipvalue1      NUMBER
2332                          ,cp_ipvalue2      NUMBER
2333                          )
2334 IS
2335 SELECT pee.assignment_id
2336       ,pev1.screen_entry_value scr1
2337       ,pev2.screen_entry_value scr2
2338       ,pev1.element_entry_id
2339  FROM  pay_element_entries_f pee
2340       ,pay_element_entry_values_f pev1
2341       ,pay_element_entry_values_f pev2
2342 WHERE  pee.assignment_id=cp_assignment_id
2343   AND  pee.element_entry_id=pev1.element_entry_id
2344   AND  pee.element_entry_id=pev2.element_entry_id
2345   AND  pev1.element_entry_id=pev2.element_entry_id
2346   AND  pev1.input_value_id  =cp_ipvalue1
2347   AND  pev2.input_value_id=cp_ipvalue2
2348   AND  pev1.screen_entry_value =
2349              fnd_date.DATE_TO_CANONICAL(cp_start_date)
2350   AND  pev2.SCREEN_ENTRY_VALUE =
2351              fnd_date.DATE_TO_CANONICAL(cp_end_date);
2352 
2353 
2354 l_get_ele_details c_get_ele_details%ROWTYPE;
2355 l_get_input_val   c_get_input_val%ROWTYPE;
2356 l_get_date_exist  c_get_date_exist%ROWTYPE;
2357 l_input_val1      NUMBER;
2358 l_input_val2      NUMBER;
2359 l_exist           VARCHAR2(1):='N';
2360 l_start_date      DATE;
2361 l_end_date        DATE;
2362 BEGIN
2363 l_start_date:= fnd_date.chardt_to_date (p_start_date);
2364 l_end_date  :=fnd_date.chardt_to_date(p_end_date);
2365  OPEN c_get_ele_details( p_vehicle_type
2366                         ,p_business_group_id
2367                         );
2368   LOOP
2369    FETCH c_get_ele_details INTO l_get_ele_details;
2370    EXIT WHEN c_get_ele_details%NOTFOUND;
2371    OPEN c_get_input_val (l_get_ele_details.element_type_id
2372                         ,p_business_group_id
2373                         );
2374     LOOP
2375      FETCH c_get_input_val INTO l_get_input_val;
2376      EXIT WHEN c_get_input_val%NOTFOUND;
2377 
2378      IF l_get_input_val.NAME='Claim Start Date' THEN
2379       l_input_val1:=l_get_input_val.input_value_id;
2380      ELSIF  l_get_input_val.NAME='Claim End Date' THEN
2381       l_input_val1:=l_get_input_val.input_value_id;
2382      END IF;
2383     END LOOP;
2384    CLOSE  c_get_input_val;
2385    OPEN c_get_date_exist ( p_assignment_id
2386                          ,l_start_date
2387                          ,l_end_date
2388                          ,l_input_val1
2389                          ,l_input_val2
2390                          );
2391     LOOP
2392      FETCH c_get_date_exist INTO l_get_date_exist;
2393      EXIT WHEN c_get_date_exist%NOTFOUND;
2394 
2395       l_exist :='Y';
2396     END LOOP;
2397    CLOSE c_get_date_exist;
2398   END LOOP;
2399  CLOSE c_get_ele_details;
2400 
2401  RETURN(l_exist);
2402 
2403 END;
2404 
2405 ---Called from JDEV ----
2406 --
2407 -- Function get_code returns the code of the meaning passed
2408 --
2409 -- The Code depends on the value of the p_option parameter
2410 -- p_option = 'R' -> p_field has the rates table name
2411 --and it Returns the Rates table id
2412 --
2413 FUNCTION get_code
2414 (p_option         IN VARCHAR2
2415 ,p_field          IN VARCHAR2
2416 ) RETURN VARCHAR2
2417 IS
2418 
2419   --
2420   -- Cursor to fetch the Rate Table id given the rates table name
2421   --
2422   CURSOR c_get_rates_table_id
2423   IS
2424   select user_table_id
2425     from pay_user_tables
2426    where range_or_match = 'M'
2427      and user_table_name = p_field;
2428 
2429 l_field varchar2(100);
2430 BEGIN
2431 
2432   IF (p_field IS NULL) THEN
2433     RETURN null;
2434   END IF;
2435   IF (p_option = 'R') THEN
2436     OPEN c_get_rates_table_id;
2437     FETCH c_get_rates_table_id INTO l_field;
2438     CLOSE c_get_rates_table_id;
2439   END IF;
2440   RETURN l_field;
2441 END get_code;
2442 
2443 --
2444 -- Function get_meaning returns the meaning string of the id passed
2445 --
2446 -- The Meaning depends on the value of the p_option parameter
2447 -- p_option = 'R' -> p_field_id has the rates table id
2448 --and it Returns the Rates table Name
2449 -- p_option = 'E' -> p_field_id has the element type id
2450 --and it Returns the Element Name
2451 --
2452 FUNCTION get_meaning
2453 (p_option            IN VARCHAR2
2454 ,p_field_id          IN NUMBER
2455 ) RETURN VARCHAR2
2456 IS
2457 
2458   --
2459   -- Cursor to fetch the Element Name given the element type id
2460   --
2461   CURSOR c_get_element_name
2462   IS
2463   select element_name
2464     from pay_element_types_f_tl
2465    where element_type_id = p_field_id;
2466 
2467   --
2468   -- Cursor to fetch the Rates Table Name given the rates table id
2469   --
2470   CURSOR c_get_rates_table_name
2471   IS
2472   select user_table_name
2473     from pay_user_tables
2474    where user_table_id = p_field_id;
2475 
2476   CURSOR c_get_purpose_name
2477   IS
2478   SELECT pur.row_low_range_or_name
2479     FROM pay_user_tables put
2480       ,pay_user_rows_f pur
2481    WHERE put.range_or_match = 'M'
2482      AND put.user_table_name ='PQP_TRAVEL_PURPOSE'
2483      AND put.user_table_id = pur.user_table_id
2484      AND pur.user_row_id= p_field_id;
2485 
2486 l_field_meaning varchar2(100);
2487 l_sliding_rates VARCHAR2(10);
2488 l_get_purpose_name c_get_purpose_name%ROWTYPE;
2489 BEGIN
2490   IF (p_field_id IS NULL) THEN
2491     RETURN NULL;
2492   END IF;
2493   IF (p_option = 'R')  THEN
2494    OPEN c_get_rates_table_name;
2495     FETCH c_get_rates_table_name INTO l_field_meaning;
2496    CLOSE c_get_rates_table_name;
2497   ELSIF (p_option = 'E') THEN
2498     OPEN c_get_element_name;
2499    FETCH c_get_element_name INTO l_field_meaning;
2500    CLOSE c_get_element_name;
2501   END IF;
2502   RETURN l_field_meaning;
2503 END get_meaning;
2504 ----------------------------------
2505 
2506 ----------Generic Procedures
2507 
2508 FUNCTION get_lkp_meaning (p_lookup_code IN VARCHAR2,
2509                           p_lookup_type IN VARCHAR2
2510                           )
2511 RETURN VARCHAR2
2512 AS
2513 
2514 CURSOR c_get_lkp_meaning
2515 IS
2516 SELECT hl.meaning
2517   FROM hr_lookups hl
2518  WHERE hl.lookup_type=p_lookup_type
2519    AND hl.lookup_code=p_lookup_code;
2520 
2521 
2522 l_get_lkp_meaning c_get_lkp_meaning%ROWTYPE;
2523 
2524 BEGIN
2525 
2526  OPEN c_get_lkp_meaning;
2527   LOOP
2528    FETCH c_get_lkp_meaning INTO l_get_lkp_meaning;
2529    EXIT WHEN c_get_lkp_meaning%NOTFOUND;
2530   END LOOP;
2531  CLOSE c_get_lkp_meaning;
2532 
2533  RETURN (l_get_lkp_meaning.meaning);
2534 
2535 END;
2536 --Get lookup meaning
2537 FUNCTION get_meaning ( p_inp_type VARCHAR2
2538                       ,p_code     VARCHAR2
2539                       )
2540 RETURN VARCHAR2
2541 AS
2542 
2543 CURSOR c_get_meaning_u
2544 IS
2545 SELECT lkp.lookup_code
2546        ,lkp.meaning
2547   FROM hr_lookups lkp
2548  WHERE lkp.lookup_type IN ('PQP_PRIVATE_VEHICLE_USER'
2549                       ,'PQP_COMPANY_VEHICLE_USER')
2550    AND lkp.lookup_code=p_code;
2551  --AND lkp.application_id=8303
2552 
2553 
2554 CURSOR c_get_meaning_o
2555 IS
2556 SELECT lkp.lookup_code
2557        ,lkp.meaning
2558   FROM hr_lookups lkp
2559  WHERE lookup_type in ('PQP_VEHICLE_OWNERSHIP_TYPE')
2560    AND lkp.lookup_code=p_code;
2561  --AND lkp.application_id=8303
2562 
2563 CURSOR c_get_meaning_f
2564 IS
2565 select meaning
2566 from hr_lookups
2567 where lookup_type = 'PQP_FUEL_TYPE'
2568 and enabled_flag = 'Y'
2569 and lookup_code = p_code;
2570 
2571 CURSOR c_get_meaning_cm
2572 IS
2573 select meaning
2574 from hr_lookups
2575 where lookup_type = 'PQP_VEHICLE_CALC_METHOD'
2576 and enabled_flag='Y'
2577 and lookup_code = p_code;
2578 
2579 CURSOR c_get_meaning_vt
2580 IS
2581 select hl.meaning
2582 from pqp_vehicle_repository_f pvr,
2583 hr_lookups hl
2584 where pvr.registration_number = p_code
2585 and hl.lookup_type = 'PQP_VEHICLE_TYPE'
2586 and hl.enabled_flag = 'Y'
2587 and hl.lookup_code = pvr.vehicle_type;
2588 
2589 CURSOR c_get_meaning_vehtype
2590 IS
2591 select hl.meaning
2592 from hr_lookups hl
2593 where hl.lookup_type = 'PQP_VEHICLE_TYPE'
2594 and hl.enabled_flag = 'Y'
2595 and hl.lookup_code = p_code;
2596 
2597 
2598 CURSOR c_get_purpose_name
2599 IS
2600 SELECT pur.row_low_range_or_name
2601  FROM pay_user_tables put
2602      ,pay_user_rows_f pur
2603 WHERE put.range_or_match = 'M'
2604   AND put.user_table_name ='PQP_TRAVEL_PURPOSE'
2605   AND put.user_table_id = pur.user_table_id
2606   AND pur.user_row_id= p_code;
2607 
2608 
2609 l_get_meaning_u c_get_meaning_u%ROWTYPE;
2610 l_get_meaning_o c_get_meaning_o%ROWTYPE;
2611 l_meaning hr_lookups.meaning%TYPE;
2612 
2613 l_proc    varchar2(72) := g_package ||'get_meaning';
2614 BEGIN
2615 
2616   hr_utility.set_location('enter get meaning:' || l_proc,240);
2617 IF p_inp_type =  'EI' THEN
2618   OPEN c_get_meaning_o;
2619   LOOP
2620     FETCH c_get_meaning_o INTO l_get_meaning_o;
2621     EXIT WHEN c_get_meaning_o%NOTFOUND;
2622     RETURN(l_get_meaning_o.meaning);
2623   END LOOP;
2624   CLOSE c_get_meaning_o;
2625 
2626   IF l_get_meaning_o.meaning IS NULL THEN
2627     RETURN(p_code);
2628   END IF;
2629 ELSIF p_inp_type = 'Rate Type' THEN
2630  OPEN c_get_meaning_u;
2631   LOOP
2632    FETCH c_get_meaning_u INTO l_get_meaning_u;
2633    EXIT WHEN c_get_meaning_u%NOTFOUND;
2634     RETURN (l_get_meaning_u.meaning);
2635   END LOOP;
2636  CLOSE c_get_meaning_u;
2637 
2638 
2639  IF l_get_meaning_u.meaning IS NULL THEN
2640     RETURN(p_code);
2641  END IF;
2642 --RETURN('NONE');
2643 
2644 -- Gets the Vehicle Type for the given Reg. No.
2645 ELSIF p_inp_type = 'VT' THEN
2646  OPEN c_get_meaning_vt;
2647  FETCH c_get_meaning_vt INTO l_meaning;
2648  CLOSE c_get_meaning_vt;
2649     RETURN(l_meaning);
2650 -- Gets the Vehicle Type for the given VehType Code
2651 ELSIF p_inp_type = 'V' THEN
2652  OPEN c_get_meaning_vehtype;
2653  FETCH c_get_meaning_vehtype INTO l_meaning;
2654  CLOSE c_get_meaning_vehtype;
2655     RETURN(l_meaning);
2656 -- Gets the Fuel Type meaning given the code
2657 ELSIF p_inp_type = 'Fuel Type' THEN
2658  OPEN c_get_meaning_f;
2659  FETCH c_get_meaning_f INTO l_meaning;
2660  CLOSE c_get_meaning_f;
2661  RETURN(l_meaning);
2662 
2663 -- Gets the Calculation Method meaning given the code
2664 ELSIF p_inp_type = 'CM' THEN
2665  OPEN c_get_meaning_cm;
2666  FETCH c_get_meaning_cm INTO l_meaning;
2667  CLOSE c_get_meaning_cm;
2668  RETURN(l_meaning);
2669 
2670 ELSIF p_inp_type='Purpose' THEN
2671  OPEN c_get_purpose_name;
2672   FETCH c_get_purpose_name INTO l_meaning;
2673  CLOSE c_get_purpose_name;
2674  RETURN(l_meaning);
2675 END IF;
2676   hr_utility.set_location('Leaving get meaning:' || l_proc,250);
2677 exception
2678 when others then
2679 return(p_code);
2680 END;
2681 
2682 
2683 --This func is temporary
2684 FUNCTION get_total ( p_element_name          IN VARCHAR2
2685                     ,p_assignment_action_id  IN NUMBER
2686                     ,p_element_entry_id      IN NUMBER
2687                     ,p_business_group_id     IN NUMBER
2688                     )
2689 return NUMBER
2690 IS
2691 CURSOR c_get_balance_name
2692 IS
2693 SELECT balance_type_id ,pbd.balance_dimension_id
2694   FROM pay_balance_types pbt
2695        ,pay_balance_dimensions pbd
2696  WHERE balance_name = p_element_name||' Processed Amt'
2697    AND pbd.legislation_code='GB'
2698    AND pbd.dimension_name='_ELEMENT_ITD';
2699 
2700 --This cursor fetches the balance when the option
2701 --is PAYE Taxable is YES.
2702 CURSOR c_get_tax_element_type_id
2703 IS
2704 SELECT DISTINCT pet.element_type_id
2705   FROM pay_element_types_f pet
2706  WHERE pet.element_name = p_element_name||' Taxable'
2707    AND pet.business_group_id=p_business_group_id ;
2708 
2709 CURSOR c_get_gross_pay_bal_name
2710 IS
2711 SELECT balance_type_id
2712   FROM pay_balance_types pbt
2713  WHERE balance_name = 'Gross Pay'
2714    AND pbt.legislation_code='GB' ;
2715 
2716 
2717 CURSOR c_get_def_balance ( cp_balance_typ_id NUMBER
2718                           ,cp_balance_dim_id NUMBER
2719                          )
2720 IS
2721 SELECT pdb.defined_balance_id
2722  from pay_defined_balances pdb
2723 where pdb.balance_type_id =cp_balance_typ_id
2724   and pdb.balance_dimension_id=cp_balance_dim_id;
2725 
2726 cursor c1(cp_balance_type_id       NUMBER
2727           ,cp_assignment_action_id NUMBER
2728           ,cp_element_entry_id     NUMBER)
2729 is
2730 SELECT  nvl(SUM(fnd_number.canonical_to_number(TARGET.result_value)
2731         * FEED.scale),0) tot
2732  FROM pay_run_result_values   TARGET
2733 ,      pay_balance_feeds_f     FEED
2734 ,      pay_run_results         RR
2735 ,      pay_assignment_actions  ASSACT
2736 ,      pay_assignment_actions  BAL_ASSACT
2737 ,      pay_payroll_actions     PACT
2738 WHERE  BAL_ASSACT.assignment_action_id = cp_assignment_action_id
2739 AND    FEED.balance_type_id  = cp_balance_type_id
2740 AND    FEED.input_value_id     = TARGET.input_value_id
2741 AND    TARGET.run_result_id    = RR.run_result_id
2742 AND    RR.assignment_action_id = ASSACT.assignment_action_id
2743 AND    ASSACT.payroll_action_id = PACT.payroll_action_id
2744 AND    PACT.effective_date between FEED.effective_start_date
2745                                AND FEED.effective_end_date
2746 AND    RR.status in ('P','PA')
2747 AND    ASSACT.action_sequence <= BAL_ASSACT.action_sequence
2748 AND    ASSACT.assignment_id = BAL_ASSACT.assignment_id
2749 AND    (( RR.source_id = cp_element_entry_id and source_type in ( 'E','I'))
2750  OR    ( rr.source_type in ('R','V') /* reversal */
2751                 AND exists
2752                 ( SELECT null from pay_run_results rr1
2753                   WHERE rr1.source_id = cp_element_entry_id
2754                   AND   rr1.run_result_id = rr.source_id
2755                   AND   rr1.source_type in ( 'E','I'))));
2756 
2757 
2758 cursor c1_tax(cp_balance_type_id       NUMBER
2759           ,cp_assignment_action_id     NUMBER
2760           ,cp_element_entry_id         NUMBER
2761           ,cp_element_type_id          NUMBER)
2762 IS
2763 SELECT  target.result_value tot
2764  FROM pay_run_result_values   TARGET
2765 ,      pay_balance_feeds_f     FEED
2766 ,      pay_run_results         RR
2767 ,      pay_assignment_actions  ASSACT
2768 ,      pay_assignment_actions  BAL_ASSACT
2769 ,      pay_payroll_actions     PACT
2770 WHERE  bal_assact.assignment_action_id = cp_assignment_action_id
2771 AND    FEED.input_value_id     = TARGET.input_value_id
2772 AND    TARGET.run_result_id    = RR.run_result_id
2773 AND    RR.assignment_action_id = ASSACT.assignment_action_id
2774 AND    ASSACT.payroll_action_id = PACT.payroll_action_id
2775 AND    PACT.effective_date between FEED.effective_start_date
2776                                AND FEED.effective_end_date
2777 AND    RR.status in ('P','PA')
2778 AND    ASSACT.action_sequence <= BAL_ASSACT.action_sequence
2779 AND    ASSACT.assignment_id = BAL_ASSACT.assignment_id
2780 AND    rr.element_type_id=cp_element_type_id
2781 AND    (( RR.source_id = cp_element_entry_id and source_type in ( 'E','I'))
2782  OR    ( rr.source_type in ('R','V')
2783                 AND exists
2784                 ( SELECT null from pay_run_results rr1
2785                   WHERE rr1.source_id = cp_element_entry_id
2786                   AND   rr1.run_result_id = rr.source_id
2787                   AND   rr1.source_type in ( 'E','I'))))
2788     and feed.balance_type_id=cp_balance_type_id;
2789 
2790 
2791 
2792 
2793 l_get_balance_name        c_get_balance_name%ROWTYPE;
2794 l_get_tax_element_type_id c_get_tax_element_type_id%ROWTYPE;
2795 l_get_gross_pay_bal_name  c_get_gross_pay_bal_name%ROWTYPE;
2796 l_get_def_balance         c_get_def_balance%ROWTYPE;
2797 lc1                       c1%ROWTYPE;
2798 lc1_tax                   c1_tax%ROWTYPE;
2799 BEGIN
2800 
2801  OPEN c_get_balance_name;
2802  FETCH c_get_balance_name INTO l_get_balance_name;
2803   OPEN c1(l_get_balance_name.balance_type_id
2804           ,p_assignment_action_id
2805           ,p_element_entry_id    );
2806    FETCH c1 INTO lc1;
2807      IF lc1.tot = 0 THEN
2808       OPEN c_get_tax_element_type_id;
2809        FETCH c_get_tax_element_type_id
2810               INTO l_get_tax_element_type_id;
2811       CLOSE c_get_tax_element_type_id;
2812 
2813       OPEN c_get_gross_pay_bal_name;
2814        FETCH c_get_gross_pay_bal_name INTO
2815                    l_get_gross_pay_bal_name;
2816       CLOSE c_get_gross_pay_bal_name;
2817 
2818       OPEN c1_tax (l_get_gross_pay_bal_name.balance_type_id
2819                    ,p_assignment_action_id
2820                    ,p_element_entry_id
2821                    ,l_get_tax_element_type_id.element_type_id
2822                    );
2823         FETCH c1_tax INTO lc1_tax;
2824          RETURN(NVL(lc1_tax.tot,0));
2825         CLOSE c1_tax;
2826       ELSE
2827 
2828        return(NVL(lc1.tot,0));
2829      END IF;
2830 
2831        --return(NVL(lc1.tot,0));
2832    CLOSE c1;
2833   CLOSE c_get_balance_name;
2834 
2835 
2836 return(0);
2837 END;
2838 --Function to get balance for the view.
2839 FUNCTION get_amount ( p_element_name      IN VARCHAR2
2840                      ,p_element_type_id   IN NUMBER
2841                      ,p_effective_date    IN DATE
2842                      ,p_assignment_id     IN NUMBER
2843                     )
2844 
2845 return NUMBER
2846 IS
2847 
2848 CURSOR c_get_balance_name
2849 IS
2850 SELECT balance_type_id ,pbd.balance_dimension_id
2851   FROM pay_balance_types pbt
2852        ,pay_balance_dimensions pbd
2853  WHERE balance_name = p_element_name||' Processed Amt'
2854    AND pbd.legislation_code='GB'
2855    AND pbd.dimension_name='_ELEMENT_ITD';
2856 
2857 
2858 CURSOR c_get_def_balance ( cp_balance_typ_id NUMBER
2859                           ,cp_balance_dim_id NUMBER
2860                          )
2861 IS
2862 SELECT pdb.DEFINED_BALANCE_ID
2863  from pay_defined_balances pdb
2864 where pdb.balance_type_id =cp_balance_typ_id
2865   and pdb.balance_dimension_id=cp_balance_dim_id;
2866 
2867 
2868 
2869 BEGIN
2870 
2871   FOR l_get_balance_name IN c_get_balance_name
2872    LOOP
2873 
2874    FOR l_get_def_balance IN c_get_def_balance
2875                               (l_get_balance_name.balance_type_id
2876                                ,l_get_balance_name.balance_dimension_id
2877                                )
2878      LOOP
2879       return(hr_dirbal.get_balance(p_assignment_id
2880                                    ,l_get_def_balance.DEFINED_BALANCE_ID
2881                                   ,p_effective_date));
2882 
2883      END LOOP;
2884    END LOOP;
2885 return(0);
2886 EXCEPTION
2887 WHEN OTHERS THEN
2888 return(0);
2889 
2890 END;
2891 
2892 PROCEDURE insert_company_mileage_claim
2893         ( p_effective_date             IN DATE,
2894           p_assignment_id              IN NUMBER,
2895           p_business_group_id          IN NUMBER,
2896           p_ownership                  IN VARCHAR2  ,
2897           p_usage_type                 IN VARCHAR2  ,
2898           p_vehicle_type               IN VARCHAR2,
2899           p_start_date                 IN VARCHAR2  ,
2900           p_end_date                   IN VARCHAR2  ,
2901           p_claimed_mileage            IN VARCHAR2  ,
2902           p_actual_mileage             IN VARCHAR2  ,
2903           p_registration_number        IN VARCHAR2  ,
2904           p_engine_capacity            IN VARCHAR2  ,
2905           p_fuel_type                  IN VARCHAR2  ,
2906           p_calculation_method         IN VARCHAR2  ,
2907           p_user_rates_table           IN VARCHAR2  ,
2908           p_fiscal_ratings             IN VARCHAR2  ,
2909           p_PAYE_taxable               IN VARCHAR2  ,
2910           p_no_of_passengers           IN VARCHAR2  ,
2911           p_purpose                    IN VARCHAR2  ,
2912           p_payroll_id                 IN NUMBER,
2913           p_mileage_claim_element      IN OUT NOCOPY NUMBER  ,
2914           p_element_entry_id           IN OUT NOCOPY NUMBER  ,
2915           p_element_entry_date         IN OUT NOCOPY DATE,
2916           p_element_link_id            IN NUMBER
2917          )
2918 
2919 IS
2920 
2921 CURSOR c_get_table_name (cp_user_rates_table   VARCHAR2
2922                          ,cp_business_group_id NUMBER
2923                          )
2924 IS
2925 SELECT put.user_table_name
2926   FROM pay_user_tables put
2927  WHERE user_table_id =cp_user_rates_table
2928    AND put.business_group_id=cp_business_group_id;
2929 
2930 CURSOR c_get_input_details (cp_element_type_id NUMBER
2931                        ,cp_effective_date DATE
2932                        ,cp_business_group_id NUMBER
2933                        )
2934 IS
2935 SELECT piv.input_value_id,
2936        piv.name,
2937        piv.display_sequence,
2938        piv.lookup_type,
2939        piv.default_value
2940   FROM pay_input_values_f piv
2941  WHERE piv.element_type_id=cp_element_type_id
2942    AND piv.business_group_id=cp_business_group_id
2943    AND cp_effective_date BETWEEN piv.effective_start_date
2944                              AND piv.effective_end_date;
2945 
2946 
2947 l_effective_start_date    DATE;
2948 l_effective_end_date    DATE;
2949 l_get_input_details c_get_input_details%ROWTYPE;
2950 l_get_table_name    c_get_table_name%ROWTYPE;
2951 l_input_value_id1  pay_input_values_f.input_value_id%TYPE;
2952 l_input_value_id2  pay_input_values_f.input_value_id%TYPE;
2953 l_input_value_id3  pay_input_values_f.input_value_id%TYPE;
2954 l_input_value_id4  pay_input_values_f.input_value_id%TYPE;
2955 l_input_value_id5  pay_input_values_f.input_value_id%TYPE;
2956 l_input_value_id6  pay_input_values_f.input_value_id%TYPE;
2957 l_input_value_id7  pay_input_values_f.input_value_id%TYPE;
2958 l_input_value_id8  pay_input_values_f.input_value_id%TYPE;
2959 l_input_value_id9  pay_input_values_f.input_value_id%TYPE;
2960 l_input_value_id10  pay_input_values_f.input_value_id%TYPE:=NULL;
2961 l_input_value_id11  pay_input_values_f.input_value_id%TYPE:=NULL;
2962 l_input_value_id12  pay_input_values_f.input_value_id%TYPE:=NULL;
2963 l_input_value_id13  pay_input_values_f.input_value_id%TYPE:=NULL;
2964 l_input_value_id14  pay_input_values_f.input_value_id%TYPE:=NULL;
2965 l_input_value_id15  pay_input_values_f.input_value_id%TYPE:=NULL;
2966 
2967 l_entry_value1      pay_element_entry_values_f.screen_entry_value%TYPE;
2968 l_entry_value2      pay_element_entry_values_f.screen_entry_value%TYPE;
2969 l_entry_value3      pay_element_entry_values_f.screen_entry_value%TYPE;
2970 l_entry_value4      pay_element_entry_values_f.screen_entry_value%TYPE;
2971 l_entry_value5      pay_element_entry_values_f.screen_entry_value%TYPE;
2972 l_entry_value6      pay_element_entry_values_f.screen_entry_value%TYPE;
2973 l_entry_value7      pay_element_entry_values_f.screen_entry_value%TYPE;
2974 l_entry_value8      pay_element_entry_values_f.screen_entry_value%TYPE;
2975 l_entry_value9      pay_element_entry_values_f.screen_entry_value%TYPE;
2976 l_entry_value10     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
2977 l_entry_value11     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
2978 l_entry_value12     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
2979 l_entry_value13     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
2980 l_entry_value14     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
2981 l_entry_value15     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
2982  l_element_entry_id number;
2983 l_proc    varchar2(72) := g_package ||'get_meaning';
2984 l_temp_var          NUMBER;
2985 BEGIN
2986   hr_utility.set_location('Insert_company_mileage_claim:' || l_proc,260);
2987 l_effective_start_date :=p_effective_date;
2988 l_effective_end_date :=hr_api.g_eot;
2989 
2990 
2991  BEGIN
2992   l_temp_var := to_number(p_user_rates_table);
2993 
2994 
2995 
2996   OPEN c_get_table_name ( p_user_rates_table
2997                         ,p_business_group_id
2998                         );
2999    FETCH c_get_table_name INTO l_get_table_name;
3000   CLOSE c_get_table_name;
3001  EXCEPTION
3002  ---------
3003  WHEN OTHERS THEN
3004   l_get_table_name.user_table_name:=p_user_rates_table;
3005  END;
3006 
3007 OPEN c_get_input_details (p_mileage_claim_element
3008                           ,p_effective_date
3009                           ,p_business_group_id
3010                           );
3011  LOOP
3012   FETCH c_get_input_details INTO l_get_input_details;
3013   EXIT WHEN c_get_input_details%NOTFOUND;
3014 
3015 
3016 
3017   IF l_get_input_details.name='Pay Value' THEN
3018    l_input_value_id1:=l_get_input_details.input_value_id;
3019    l_entry_value1   :=NULL;
3020   ELSIF l_get_input_details.name='Vehicle Type' THEN
3021 
3022    l_input_value_id2:=l_get_input_details.input_value_id;
3023    IF l_get_input_details.lookup_type IS NOT NULL THEN
3024     l_entry_value2:=get_lkp_meaning(p_usage_type
3025                    ,l_get_input_details.lookup_type);
3026    ELSE
3027    l_entry_value2   :=p_usage_type;
3028    END IF;
3029   ELSIF l_get_input_details.name='Two Wheeler Type' THEN
3030    l_input_value_id3:=l_get_input_details.input_value_id;
3031    IF l_get_input_details.lookup_type IS NOT NULL THEN
3032     l_entry_value3:=get_lkp_meaning(p_start_date
3033                    ,l_get_input_details.lookup_type);
3034    ELSE
3035    l_entry_value3   :=p_start_date;
3036    END IF;
3037   ELSIF l_get_input_details.name='Claim Start Date' THEN
3038    l_input_value_id3:=l_get_input_details.input_value_id;
3039    IF l_get_input_details.lookup_type IS NOT NULL THEN
3040     l_entry_value3:=get_lkp_meaning(p_start_date
3041                    ,l_get_input_details.lookup_type);
3042    ELSE
3043    l_entry_value3   :=p_start_date;
3044    END IF;
3045 
3046 
3047   ELSIF l_get_input_details.name='Claim End Date' THEN
3048    l_input_value_id4:=l_get_input_details.input_value_id;
3049    IF l_get_input_details.lookup_type IS NOT NULL THEN
3050     l_entry_value4:=get_lkp_meaning(p_end_date
3051                    ,l_get_input_details.lookup_type);
3052    ELSE
3053     l_entry_value4    :=p_end_date;
3054    END IF;
3055   ELSIF l_get_input_details.name='Claimed Mileage' THEN
3056    l_input_value_id5:=l_get_input_details.input_value_id;
3057    IF l_get_input_details.lookup_type IS NOT NULL THEN
3058     l_entry_value5:=get_lkp_meaning(p_claimed_mileage
3059                    ,l_get_input_details.lookup_type);
3060    ELSE
3061    l_entry_value5    :=p_claimed_mileage;
3062    END IF;
3063   ELSIF l_get_input_details.name='Actual Mileage' THEN
3064    l_input_value_id6:=l_get_input_details.input_value_id;
3065    IF l_get_input_details.lookup_type IS NOT NULL THEN
3066     l_entry_value6:=get_lkp_meaning(p_actual_mileage
3067                    ,l_get_input_details.lookup_type);
3068    ELSE
3069    l_entry_value6    :=p_actual_mileage;
3070    END IF;
3071   ELSIF l_get_input_details.name='User Rates Table'
3072     OR l_get_input_details.name='Sliding Rates Table' THEN
3073    l_input_value_id7:=l_get_input_details.input_value_id;
3074    IF l_get_input_details.lookup_type IS NOT NULL THEN
3075     l_entry_value7:=get_lkp_meaning(p_user_rates_table
3076                    ,l_get_input_details.lookup_type);
3077    ELSE
3078 
3079    l_entry_value7    :=l_get_table_name.user_table_name;
3080    END IF;
3081   ELSIF l_get_input_details.name='PAYE Taxable' THEN
3082    l_input_value_id8:=l_get_input_details.input_value_id;
3083    IF l_get_input_details.lookup_type IS NOT NULL THEN
3084     l_entry_value8:=get_lkp_meaning(NVL(p_PAYE_taxable
3085                         ,l_get_input_details.default_value)
3086                         ,l_get_input_details.lookup_type);
3087    ELSE
3088     l_entry_value8    :=p_PAYE_taxable;
3089    END IF;
3090   ELSIF l_get_input_details.name='No of Passengers' THEN
3091    l_input_value_id9:=l_get_input_details.input_value_id;
3092    IF l_get_input_details.lookup_type IS NOT NULL THEN
3093     l_entry_value9:=get_lkp_meaning(p_no_of_Passengers
3094                    ,l_get_input_details.lookup_type);
3095    ELSE
3096     l_entry_value9    :=p_no_of_Passengers;
3097    END IF;
3098   ELSIF l_get_input_details.name='Vehicle Reg Number' THEN
3099    l_input_value_id10:=l_get_input_details.input_value_id;
3100    IF l_get_input_details.lookup_type IS NOT NULL THEN
3101     l_entry_value10:=get_lkp_meaning(p_registration_number
3102                    ,l_get_input_details.lookup_type);
3103    ELSE
3104    l_entry_value10    := p_registration_number;
3105    END IF;
3106   ELSIF l_get_input_details.name='Engine Capacity' THEN
3107    l_input_value_id11:=l_get_input_details.input_value_id;
3108    IF l_get_input_details.lookup_type IS NOT NULL THEN
3109     l_entry_value11:=get_lkp_meaning(p_engine_capacity
3110                    ,l_get_input_details.lookup_type);
3111    ELSE
3112    l_entry_value11    :=p_engine_capacity;
3113    END IF;
3114   ELSIF l_get_input_details.name='Fuel Type' THEN
3115    l_input_value_id12:=l_get_input_details.input_value_id;
3116    IF l_get_input_details.lookup_type IS NOT NULL THEN
3117     l_entry_value12:=get_lkp_meaning(p_fuel_type
3118                    ,l_get_input_details.lookup_type);
3119    ELSE
3120    l_entry_value12    :=p_fuel_type;
3121    END IF;
3122   ELSIF l_get_input_details.name='Calculation Method' THEN
3123    l_input_value_id13:=l_get_input_details.input_value_id;
3124    IF l_get_input_details.lookup_type IS NOT NULL THEN
3125     l_entry_value13:=get_lkp_meaning(p_calculation_method
3126                    ,l_get_input_details.lookup_type);
3127    ELSE
3128    l_entry_value13    :=p_calculation_method;
3129    END IF;
3130   ELSIF l_get_input_details.name='Purpose' THEN
3131    l_input_value_id14:=l_get_input_details.input_value_id;
3132    IF l_get_input_details.lookup_type IS NOT NULL THEN
3133     l_entry_value14:=get_lkp_meaning(p_purpose
3134                    ,l_get_input_details.lookup_type);
3135    ELSE
3136    l_entry_value14    :=p_purpose;
3137    END IF;
3138   END IF;
3139 
3140 
3141  END LOOP;
3142 CLOSE c_get_input_details;
3143 hr_utility.set_location('Entering hr_entry_apiinsert_element_entry',270);
3144 hr_entry_api.insert_element_entry
3145  (
3146   p_effective_start_date       =>l_effective_start_date,
3147   p_effective_end_date         =>l_effective_end_date,
3148   p_element_entry_id           =>p_element_entry_id,
3149   p_original_entry_id          =>null,
3150   p_assignment_id              =>p_assignment_id,
3151   p_element_link_id            =>p_element_link_id,
3152   p_creator_type               =>'F',
3153   p_entry_type                 =>'E',
3154   p_creator_id                 => null,
3155   p_input_value_id1            =>l_input_value_id1,
3156   p_input_value_id2            =>l_input_value_id2,
3157   p_input_value_id3            =>l_input_value_id3,
3158   p_input_value_id4            =>l_input_value_id4,
3159   p_input_value_id5            =>l_input_value_id5,
3160   p_input_value_id6            =>l_input_value_id6,
3161   p_input_value_id7            =>l_input_value_id7,
3162   p_input_value_id8            =>l_input_value_id8,
3163   p_input_value_id9            =>l_input_value_id9,
3164   p_input_value_id10           =>l_input_value_id10 ,
3165   p_input_value_id11           =>l_input_value_id11,
3166   p_input_value_id12           =>l_input_value_id12,
3167   p_input_value_id13           =>l_input_value_id13,
3168   p_input_value_id14           =>l_input_value_id14,
3169   p_input_value_id15           =>l_input_value_id15,
3170   p_entry_value1               =>l_entry_value1,
3171   p_entry_value2               =>l_entry_value2 ,
3172   p_entry_value3               =>l_entry_value3,
3173   p_entry_value4               =>l_entry_value4,
3174   p_entry_value5               =>l_entry_value5,
3175   p_entry_value6               =>l_entry_value6,
3176   p_entry_value7               =>l_entry_value7,
3177   p_entry_value8               =>l_entry_value8,
3178   p_entry_value9               =>l_entry_value9,
3179   p_entry_value10              =>l_entry_value10,
3180   p_entry_value11              =>l_entry_value11,
3181   p_entry_value12              =>l_entry_value12,
3182   p_entry_value13              =>l_entry_value13,
3183   p_entry_value14              =>l_entry_value14,
3184   p_entry_value15              =>l_entry_value15
3185  );
3186 
3187 END;
3188 
3189 --Inserts GB specific claim
3190 PROCEDURE insert_private_mileage_claim
3191         ( p_effective_date             IN DATE,
3192           p_assignment_id              IN NUMBER,
3193           p_business_group_id          IN NUMBER,
3194           p_ownership                  IN VARCHAR2  ,
3195           p_usage_type                 IN VARCHAR2  ,
3196           p_vehicle_type               IN VARCHAR2,
3197           p_start_date                 IN VARCHAR2  ,
3198           p_end_date                   IN VARCHAR2  ,
3199           p_claimed_mileage            IN VARCHAR2  ,
3200           p_actual_mileage             IN VARCHAR2  ,
3201           p_registration_number        IN VARCHAR2  ,
3202           p_engine_capacity            IN VARCHAR2  ,
3203           p_fuel_type                  IN VARCHAR2  ,
3204           p_calculation_method         IN VARCHAR2  ,
3205           p_user_rates_table           IN VARCHAR2  ,
3206           p_fiscal_ratings             IN VARCHAR2  ,
3207           p_PAYE_taxable               IN VARCHAR2  ,
3208           p_no_of_passengers           IN VARCHAR2  ,
3209           p_purpose                    IN VARCHAR2  ,
3210           p_payroll_id                 IN NUMBER,
3211           p_mileage_claim_element      IN OUT NOCOPY NUMBER  ,
3212           p_element_entry_id           IN OUT NOCOPY NUMBER  ,
3213           p_element_entry_date         IN OUT NOCOPY DATE,
3214           p_element_link_id            IN NUMBER
3215          )
3216 
3217 IS
3218 
3219 
3220 CURSOR c_get_input_details (cp_element_type_id NUMBER
3221                        ,cp_effective_date DATE
3222                        ,cp_business_group_id NUMBER
3223                        )
3224 IS
3225 SELECT piv.input_value_id,
3226        piv.name,
3227        piv.display_sequence,
3228        piv.lookup_type,
3229        piv.default_value
3230   FROM pay_input_values_f piv
3231  WHERE piv.element_type_id=cp_element_type_id
3232    AND piv.business_group_id=cp_business_group_id
3233    AND cp_effective_date BETWEEN piv.effective_start_date
3234                              AND piv.effective_end_date;
3235 
3236 CURSOR c_get_table_name ( cp_user_rates_table  VARCHAR2
3237                          ,cp_business_group_id NUMBER
3238                          )
3239 IS
3240 SELECT put.user_table_name
3241   FROM pay_user_tables put
3242  WHERE user_table_id =cp_user_rates_table
3243    AND put.business_group_id=cp_business_group_id;
3244 l_effective_start_date    DATE;
3245 l_effective_end_date    DATE;
3246 l_get_input_details c_get_input_details%ROWTYPE;
3247 l_get_table_name    c_get_table_name%ROWTYPE;
3248 
3249 l_input_value_id1  pay_input_values_f.input_value_id%TYPE;
3250 l_input_value_id2  pay_input_values_f.input_value_id%TYPE;
3251 l_input_value_id3  pay_input_values_f.input_value_id%TYPE;
3252 l_input_value_id4  pay_input_values_f.input_value_id%TYPE;
3253 l_input_value_id5  pay_input_values_f.input_value_id%TYPE;
3254 l_input_value_id6  pay_input_values_f.input_value_id%TYPE;
3255 l_input_value_id7  pay_input_values_f.input_value_id%TYPE;
3256 l_input_value_id8  pay_input_values_f.input_value_id%TYPE;
3257 l_input_value_id9  pay_input_values_f.input_value_id%TYPE;
3258 l_input_value_id10  pay_input_values_f.input_value_id%TYPE:=NULL;
3259 l_input_value_id11  pay_input_values_f.input_value_id%TYPE:=NULL;
3260 l_input_value_id12  pay_input_values_f.input_value_id%TYPE:=NULL;
3261 l_input_value_id13  pay_input_values_f.input_value_id%TYPE:=NULL;
3262 l_input_value_id14  pay_input_values_f.input_value_id%TYPE:=NULL;
3263 l_input_value_id15  pay_input_values_f.input_value_id%TYPE:=NULL;
3264 l_input_value_id16  pay_input_values_f.input_value_id%TYPE:=NULL;
3265 
3266 l_entry_value1      pay_element_entry_values_f.screen_entry_value%TYPE;
3267 l_entry_value2      pay_element_entry_values_f.screen_entry_value%TYPE;
3268 l_entry_value3      pay_element_entry_values_f.screen_entry_value%TYPE;
3269 l_entry_value4      pay_element_entry_values_f.screen_entry_value%TYPE;
3270 l_entry_value5      pay_element_entry_values_f.screen_entry_value%TYPE;
3271 l_entry_value6      pay_element_entry_values_f.screen_entry_value%TYPE;
3272 l_entry_value7      pay_element_entry_values_f.screen_entry_value%TYPE;
3273 l_entry_value8      pay_element_entry_values_f.screen_entry_value%TYPE;
3274 l_entry_value9      pay_element_entry_values_f.screen_entry_value%TYPE;
3275 l_entry_value10     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3276 l_entry_value11     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3277 l_entry_value12     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3278 l_entry_value13     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3279 l_entry_value14     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3280 l_entry_value15     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3281 l_entry_value16     pay_element_entry_values_f.screen_entry_value%TYPE:=NULL;
3282 l_temp_var          NUMBER;
3283 BEGIN
3284 hr_utility.set_location('Enter private element entry process',280);
3285 l_effective_start_date :=p_effective_date;
3286 l_effective_end_date :=hr_api.g_eot;
3287 
3288  BEGIN
3289   l_temp_var := to_number(p_user_rates_table);
3290 
3291 
3292 
3293   OPEN c_get_table_name ( p_user_rates_table
3294                         ,p_business_group_id
3295                         );
3296    FETCH c_get_table_name INTO l_get_table_name;
3297   CLOSE c_get_table_name;
3298  EXCEPTION
3299  ---------
3300  WHEN OTHERS THEN
3301   l_get_table_name.user_table_name:=p_user_rates_table;
3302  END;
3303 
3304 OPEN c_get_input_details (p_mileage_claim_element
3305                           ,p_effective_date
3306                           ,p_business_group_id
3307                           );
3308  LOOP
3309   FETCH c_get_input_details INTO l_get_input_details;
3310   EXIT WHEN c_get_input_details%NOTFOUND;
3311 
3312 
3313   IF l_get_input_details.name='Pay Value' THEN
3314    l_input_value_id1:=l_get_input_details.input_value_id;
3315    l_entry_value1   :=NULL;
3316   ELSIF l_get_input_details.name='Rate Type' THEN
3317 
3318    l_input_value_id2:=l_get_input_details.input_value_id;
3319    IF l_get_input_details.lookup_type IS NOT NULL THEN
3320     IF p_usage_type IS NULL THEN
3321      l_entry_value2 :=get_dflt_input_value (l_input_value_id2
3322                                             ,p_mileage_claim_element
3323                                             ,p_business_group_id
3324                                             ,p_effective_date
3325                                            );
3326     l_entry_value2:=get_lkp_meaning(l_entry_value2
3327                    ,l_get_input_details.lookup_type);
3328     ELSE
3329      l_entry_value2:=get_lkp_meaning(p_usage_type
3330                    ,l_get_input_details.lookup_type);
3331     END IF;
3332    ELSE
3333     l_entry_value2   :=p_usage_type;
3334 
3335    END IF;
3336   ELSIF l_get_input_details.name='Two Wheeler Type' THEN
3337    l_input_value_id3:=l_get_input_details.input_value_id;
3338    IF l_get_input_details.lookup_type IS NOT NULL THEN
3339     l_entry_value3:=get_lkp_meaning(p_start_date
3340                    ,l_get_input_details.lookup_type);
3341    ELSE
3342    l_entry_value3   :=p_start_date;
3343    END IF;
3344   ELSIF l_get_input_details.name='Claim Start Date' THEN
3345    l_input_value_id4:=l_get_input_details.input_value_id;
3346    IF l_get_input_details.lookup_type IS NOT NULL THEN
3347     l_entry_value4:=get_lkp_meaning(p_start_date
3348                    ,l_get_input_details.lookup_type);
3349    ELSE
3350    l_entry_value4   :=p_start_date;
3351    END IF;
3352 
3353   ELSIF l_get_input_details.name='Claim End Date' THEN
3354    l_input_value_id5:=l_get_input_details.input_value_id;
3355    IF l_get_input_details.lookup_type IS NOT NULL THEN
3356     l_entry_value5:=get_lkp_meaning(p_end_date
3357                    ,l_get_input_details.lookup_type);
3358    ELSE
3359    l_entry_value5    :=p_end_date;
3360    END IF;
3361   ELSIF l_get_input_details.name='Claimed Mileage' THEN
3362    l_input_value_id6:=l_get_input_details.input_value_id;
3363    IF l_get_input_details.lookup_type IS NOT NULL THEN
3364     l_entry_value6:=get_lkp_meaning(p_claimed_mileage
3365                    ,l_get_input_details.lookup_type);
3366    ELSE
3367    l_entry_value6    :=p_claimed_mileage;
3368    END IF;
3369   ELSIF l_get_input_details.name='Actual Mileage' THEN
3370    l_input_value_id7:=l_get_input_details.input_value_id;
3371    IF l_get_input_details.lookup_type IS NOT NULL THEN
3372     l_entry_value7:=get_lkp_meaning(p_actual_mileage
3373                    ,l_get_input_details.lookup_type);
3374    ELSE
3375    l_entry_value7    :=p_actual_mileage;
3376    END IF;
3377   ELSIF l_get_input_details.name='Vehicle Reg Number' THEN
3378    l_input_value_id8:=l_get_input_details.input_value_id;
3379    IF l_get_input_details.lookup_type IS NOT NULL THEN
3380     l_entry_value8:=get_lkp_meaning(p_registration_number
3381                    ,l_get_input_details.lookup_type);
3382    ELSE
3383    l_entry_value8    := p_registration_number;
3384    END IF;
3385   ELSIF l_get_input_details.name='Engine Capacity' THEN
3386    l_input_value_id9:=l_get_input_details.input_value_id;
3387    IF l_get_input_details.lookup_type IS NOT NULL THEN
3388     l_entry_value9:=get_lkp_meaning(p_engine_capacity
3389                    ,l_get_input_details.lookup_type);
3390    ELSE
3391    l_entry_value9    :=p_engine_capacity;
3392    END IF;
3393   ELSIF l_get_input_details.name='Fuel Type' THEN
3394    l_input_value_id10:=l_get_input_details.input_value_id;
3395    IF l_get_input_details.lookup_type IS NOT NULL THEN
3396     l_entry_value10:=get_lkp_meaning(p_fuel_type
3397                    ,l_get_input_details.lookup_type);
3398    ELSE
3399    l_entry_value10    :=p_fuel_type;
3400    END IF;
3401   ELSIF l_get_input_details.name='Calculation Method' THEN
3402    l_input_value_id11:=l_get_input_details.input_value_id;
3403    IF l_get_input_details.lookup_type IS NOT NULL THEN
3404     l_entry_value11:=get_lkp_meaning(p_calculation_method
3405                    ,l_get_input_details.lookup_type);
3406    ELSE
3407    l_entry_value11    :=p_calculation_method;
3408    END IF;
3409   ELSIF l_get_input_details.name='User Rates Table' OR
3410         l_get_input_details.name='Sliding Rates Table' THEN
3411    l_input_value_id12:=l_get_input_details.input_value_id;
3412    IF l_get_input_details.lookup_type IS NOT NULL THEN
3413     l_entry_value12:=get_lkp_meaning(p_user_rates_table
3414                    ,l_get_input_details.lookup_type);
3415    ELSE
3416     IF p_user_rates_table IS NOT NULL THEN
3417      l_entry_value12    :=l_get_table_name.user_table_name;
3418     ELSE
3419 
3420      l_entry_value12    :=l_get_input_details.default_value;
3421 
3422     END IF;
3423    END IF;
3424   ELSIF l_get_input_details.name='PAYE Taxable' THEN
3425    l_input_value_id13:=l_get_input_details.input_value_id;
3426    IF l_get_input_details.lookup_type IS NOT NULL THEN
3427     l_entry_value13:=get_lkp_meaning(NVL(p_PAYE_Taxable
3428                             ,l_get_input_details.default_value)
3429                             ,l_get_input_details.lookup_type);
3430    ELSE
3431    l_entry_value13    :=p_PAYE_Taxable;
3432    END IF;
3433   ELSIF l_get_input_details.name='No of Passengers' THEN
3434    l_input_value_id14:=l_get_input_details.input_value_id;
3435    IF l_get_input_details.lookup_type IS NOT NULL THEN
3436     l_entry_value14:=get_lkp_meaning(p_no_of_passengers
3437                    ,l_get_input_details.lookup_type);
3438    ELSE
3439    l_entry_value14    :=p_no_of_passengers;
3440    END IF;
3441   ELSIF l_get_input_details.name='CO2 Emissions' THEN
3442    l_input_value_id15:=l_get_input_details.input_value_id;
3443    IF l_get_input_details.lookup_type IS NOT NULL THEN
3444     l_entry_value15:=get_lkp_meaning(p_fiscal_ratings
3445                    ,l_get_input_details.lookup_type);
3446    ELSE
3447    l_entry_value15    :=p_fiscal_ratings;
3448    END IF;
3449   ELSIF l_get_input_details.name='Purpose' THEN
3450    l_input_value_id16:=l_get_input_details.input_value_id;
3451    IF l_get_input_details.lookup_type IS NOT NULL THEN
3452     l_entry_value16:=get_lkp_meaning(p_purpose
3453                    ,l_get_input_details.lookup_type);
3454    ELSE
3455    l_entry_value16    :=p_purpose;
3456    END IF;
3457   END IF;
3458 
3459 
3460 
3461 
3462 
3463  END LOOP;
3464 CLOSE c_get_input_details;
3465 
3466   IF l_input_value_id3 IS NULL THEN
3467    l_entry_value3 :=l_entry_value16;
3468    l_input_value_id3 :=l_input_value_id16;
3469 
3470 
3471   END IF;
3472 hr_utility.set_location('Enter hr_entry_apiinsert_element_entr',290);
3473 hr_entry_api.insert_element_entry
3474  (
3475   --
3476   -- Common Parameters
3477   --
3478   p_effective_start_date       =>l_effective_start_date,
3479   p_effective_end_date         =>l_effective_end_date,
3480   p_element_entry_id           =>p_element_entry_id,
3481   p_original_entry_id          =>null,
3482   p_assignment_id              =>p_assignment_id,
3483   p_element_link_id            =>p_element_link_id,
3484   p_creator_type               =>'F',
3485   p_entry_type                 =>'E',
3486   p_creator_id                 => null,
3487   p_input_value_id1            =>l_input_value_id1,
3488   p_input_value_id2            =>l_input_value_id2,
3489   p_input_value_id3            =>l_input_value_id3,
3490   p_input_value_id4            =>l_input_value_id4,
3491   p_input_value_id5            =>l_input_value_id5,
3492   p_input_value_id6            =>l_input_value_id6,
3493   p_input_value_id7            =>l_input_value_id7,
3494   p_input_value_id8            =>l_input_value_id8,
3495   p_input_value_id9            =>l_input_value_id9,
3496   p_input_value_id10           =>l_input_value_id10 ,
3497   p_input_value_id11           =>l_input_value_id11,
3498   p_input_value_id12           =>l_input_value_id12,
3499   p_input_value_id13           =>l_input_value_id13,
3500   p_input_value_id14           =>l_input_value_id14,
3501   p_input_value_id15           =>l_input_value_id15,
3502   p_entry_value1               =>l_entry_value1,
3503   p_entry_value2               =>l_entry_value2 ,
3504   p_entry_value3               =>l_entry_value3,
3505   p_entry_value4               =>l_entry_value4,
3506   p_entry_value5               =>l_entry_value5,
3507   p_entry_value6               =>l_entry_value6,
3508   p_entry_value7               =>l_entry_value7,
3509   p_entry_value8               =>l_entry_value8,
3510   p_entry_value9               =>l_entry_value9,
3511   p_entry_value10              =>l_entry_value10,
3512   p_entry_value11              =>l_entry_value11,
3513   p_entry_value12              =>l_entry_value12,
3514   p_entry_value13              =>l_entry_value13,
3515   p_entry_value14              =>l_entry_value14,
3516   p_entry_value15              =>l_entry_value15
3517  );
3518 hr_utility.set_location('leaving hr_entry_apiinsert_element_entr',300);
3519 END;
3520 END;