DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_PAYGBP45_A4_PKG

Source


1 PACKAGE BODY PAY_PAYGBP45_A4_PKG as
2 /* $Header: paygbp45a4.pkb 120.4.12020000.4 2012/08/08 10:37:30 kvinayku ship $ */
3 /*===========================================================================+
4 |               Copyright (c) 1993 Oracle Corporation                       |
5 |                  Redwood Shores, California, USA                          |
6 |                       All rights reserved.                                |
7 +============================================================================
8  Name
9     PAY_PAYGBP45_A4_PKG
10   Purpose
11     To generate P45 A4 XML Data
12   Notes
13 
14   History
15   21-OCT-08    rlingama             115.0 Initial Version
16   24-OCT-08    rlingama             115.1 Bug 7261906.Modifed the address lines logic.
17   11-Dec-08    rlingama             115.2 Bug 7261906.Modifed the adress line 4 logic when town is null
18   22-Jan-09    rlingama             115.3 Bug 7716343.Added space after the town_regin field
19   22-Jan-09    rlingama             115.4 Bug 7716343.Restricted the field lengths.
20   20-Jul-09    dwkrishn             115.5 Bug 8678216 P45 incorrectly reporting negative tax balance
21   03-Dec-09    rlingama             115.6 Bug 9170440 P45 incorrectly reporting negative balance for tax and tax paid
22   19-Feb-09    rlingama             115.7 Bug 9393657 Modified the code to ensure, we display visibility of the total pay/tax and
23                                           total pay/tax in this employment fields depending on the tax basis.
24   21-Mar-12    kvinayku				115.8 Bug 13441825 Modified total pay and total tax logic.
25   09-Apr-12	   kvinayku             115.9 Bug 13441825 Modified total pay and total tax logic.
26   08-Aug-12    kvinayku             115.10  Bug 14243309 Modified the code to display 0.00 in sec 8 of P45 when tax balance is negative.
27 ==============================================================================*/
28  FUNCTION BEFOREREPORT RETURN BOOLEAN IS
29   BEGIN
30     DECLARE
31       L_TEST NUMBER;
32       L_ERS_ADDRESS VARCHAR2(60);
33     BEGIN
34       --HR_STANDARD.EVENT('BEFORE REPORT');
35       INSERT INTO FND_SESSIONS
36         (SESSION_ID
37         ,EFFECTIVE_DATE)
38         SELECT
39           USERENV('sessionid'),
40           TRUNC(SYSDATE)
41         FROM
42           DUAL
43         WHERE not exists (
44           SELECT
45             1
46           FROM
47             FND_SESSIONS FS
48           WHERE FS.SESSION_ID = USERENV('sessionid') );
49       P_SESSION_DATE := SYSDATE;
50       P_DATE_TODAY := SYSDATE;
51       IF P_ASSIGNMENT_ACTION_ID IS NULL THEN
52         P_ACTION_RESTRICTION := 'AND act.payroll_action_id = ' || P_PAYROLL_ACTION_ID;
53       ELSE
54         P_ACTION_RESTRICTION := 'AND act.assignment_action_id = ' || P_ASSIGNMENT_ACTION_ID;
55       END IF;
56       SELECT
57         SUBSTR(PAY_GB_EOY_ARCHIVE.GET_PARAMETER(P.LEGISLATIVE_PARAMETERS
58                                                ,'TAX_REF')
59               ,1
60               ,3),
61         SUBSTR(LTRIM(SUBSTR(PAY_GB_EOY_ARCHIVE.GET_PARAMETER(P.LEGISLATIVE_PARAMETERS
62                                                             ,'TAX_REF')
63                            ,4
64                            ,11)
65                     ,'/')
66               ,1
67               ,10),
68         SUBSTR(PAY_GB_EOY_ARCHIVE.GET_ARCH_STR(P.PAYROLL_ACTION_ID
69                                               ,'X_EMPLOYERS_ADDRESS_LINE'
70                                               ,'0')
71               ,1
72               ,60),
73         SUBSTR(PAY_GB_EOY_ARCHIVE.GET_ARCH_STR(P.PAYROLL_ACTION_ID
74                                               ,'X_EMPLOYERS_NAME'
75                                               ,'0')
76               ,1
77               ,40)
78       INTO C_TAX_DIST_NO,C_TAX_DIST_REF,L_ERS_ADDRESS,C_ERS_NAME
79       FROM
80         PAY_PAYROLL_ACTIONS P
81       WHERE P.PAYROLL_ACTION_ID = P_PAYROLL_ACTION_ID;
82       SPLIT_EMPLOYER_ADDRESS(L_ERS_ADDRESS
83                             ,C_ERS_ADDR_LINE1
84                             ,C_ERS_ADDR_LINE2
85                             ,C_ERS_ADDR_LINE3);
86     END;
87     RETURN (TRUE);
88   END BEFOREREPORT;
89 
90   FUNCTION C_FORMAT_DATA_FORMULA(TITLE IN VARCHAR2
91                                 ,ADDRESS_LINE1 IN VARCHAR2
92                                 ,ADDRESS_LINE2 IN VARCHAR2
93                                 ,ADDRESS_LINE3 IN VARCHAR2
94                                 ,TOWN_OR_CITY IN VARCHAR2
95                                 ,COUNTY IN VARCHAR2
96                                 ,COUNTRY IN VARCHAR2
97                                 ,POST_CODE IN VARCHAR2
98                                 ,TAXABLE_PAY IN NUMBER
99                                 ,PREVIOUS_TAXABLE_PAY IN NUMBER
100                                 ,TAX_PAID IN NUMBER
101                                 ,PREVIOUS_TAX_PAID IN NUMBER
102                                 ,NI_NUMBER IN VARCHAR2
103                                 ,TERMINATION_DATE IN DATE
104                                 ,C_3_PART IN VARCHAR2
105                                 ,W1_M1_INDICATOR IN VARCHAR2
106                                 ,SEX VARCHAR2
107                                 ,DATE_OF_BIRTH DATE) RETURN VARCHAR2 IS
108   BEGIN
109     C_TITLE := substr(HR_GENERAL.DECODE_LOOKUP('TITLE',TITLE),1,34);
110 
111     C_PER_ADDRESS_LINE1 := substr(ADDRESS_LINE1,1,34);
112     /*C_PER_ADDRESS_LINE2 := SUBSTR(RTRIM(ADDRESS_LINE2) || RTRIM(', ' || ADDRESS_LINE3
113                                        ,', ')
114                                  ,1
115                                  ,60);
116     C_PER_ADDRESS_LINE3 := RTRIM(TOWN_OR_CITY) || ' ' || RTRIM(COUNTY);*/
117     /*Assgined the address lines to corresponding address lines.*/
118     C_PER_ADDRESS_LINE2 := substr(ADDRESS_LINE2,1,34);
119     C_PER_ADDRESS_LINE3 := substr(ADDRESS_LINE3,1,34);
120     --C_PER_ADDRESS_LINE4 := COUNTRY || ' ' || POST_CODE;
121     --C_PER_ADDRESS_LINE4 := POST_CODE;
122     IF upper(COUNTRY) = 'UNITED KINGDOM' then
123 	C_PER_ADDRESS_LINE4 := RTRIM(TOWN_OR_CITY);
124     ELSE
125     IF TOWN_OR_CITY is not null then
126         C_PER_ADDRESS_LINE4 := RTRIM(TOWN_OR_CITY) || ', ' || RTRIM(COUNTRY);
127     ELSE
128         C_PER_ADDRESS_LINE4 := RTRIM(COUNTRY);
129     END IF;
130     END IF;
131     C_PER_ADDRESS_LINE4 := substr(C_PER_ADDRESS_LINE4,1,34);
132 
133     C_W1_M1_INDICATOR := W1_M1_INDICATOR;    -- bug 13441825
134 
135 	C_TOTAL_PAY_TD := NVL(TAXABLE_PAY
136                          ,0) + NVL(PREVIOUS_TAXABLE_PAY
137                          ,0);
138     C_TOTAL_TAX_TD := NVL(TAX_PAID
139                          ,0) + NVL(PREVIOUS_TAX_PAID
140                          ,0);
141     C_NI12 := SUBSTR(NI_NUMBER
142                     ,1
143                     ,2);
144     C_NI34 := SUBSTR(NI_NUMBER
145                     ,3
146                     ,2);
147     C_NI56 := SUBSTR(NI_NUMBER
148                     ,5
149                     ,2);
150     C_NI78 := SUBSTR(NI_NUMBER
151                     ,7
152                     ,2);
153     C_NI9 := SUBSTR(NI_NUMBER
154                    ,9
155                    ,1);
156     C_DATE_OF_LEAVING_DD := TO_CHAR(TERMINATION_DATE
157                                    ,'DD');
158     C_DATE_OF_LEAVING_MM := TO_CHAR(TERMINATION_DATE
159                                    ,'MM');
160     C_DATE_OF_LEAVING_YYYY := TO_CHAR(TERMINATION_DATE
161                                      ,'YYYY');
162 
163     IF UPPER(SEX) = 'M' THEN
164      C_SEX_M := 'X';
165      C_SEX_F := '';
166     ELSIF UPPER(SEX) = 'F' THEN
167      C_SEX_F := 'X';
168      C_SEX_M := '';
169     END IF;
170 
171     C_DATE_OF_BIRTH_DD := TO_CHAR(DATE_OF_BIRTH
172                                    ,'DD');
173     C_DATE_OF_BIRTH_MM := TO_CHAR(DATE_OF_BIRTH
174                                    ,'MM');
175     C_DATE_OF_BIRTH_YYYY := TO_CHAR(DATE_OF_BIRTH
176                                      ,'YYYY');
177 
178     IF SUBSTR(C_DATE_OF_LEAVING_DD
179           ,1
180           ,1) = '0' THEN
181       C_DATE_OF_LEAVING_DD := ' ' || SUBSTR(C_DATE_OF_LEAVING_DD
182                                     ,2
183                                     ,2);
184     END IF;
185     IF SUBSTR(C_DATE_OF_LEAVING_MM
186           ,1
187           ,1) = '0' THEN
188       C_DATE_OF_LEAVING_MM := ' ' || SUBSTR(C_DATE_OF_LEAVING_MM
189                                     ,2
190                                     ,2);
191     END IF;
192     IF C_3_PART = 'TRUE' THEN
193       IF W1_M1_INDICATOR IS NULL THEN
194         /*GET_POUNDS_PENCE(C_TOTAL_PAY_TD
195                         ,C_PAY_TD_POUNDS
196                         ,C_PAY_TD_PENCE);
197         GET_POUNDS_PENCE(C_TOTAL_TAX_TD
198                         ,C_TAX_TD_POUNDS
199                         ,C_TAX_TD_PENCE);*/
200 
201         C_PAY_TD_POUNDS:= C_TOTAL_PAY_TD;
202         C_TOTAL_TAX_TD := C_TOTAL_TAX_TD;
203 
204 	-- Start of Bug 9393657
205         C_PAY_IN_EMP_POUNDS := NULL;
206         --C_PAY_IN_EMP_PENCE := '';
207         C_TAX_IN_EMP_POUNDS := NULL;
208        -- C_TAX_IN_EMP_PENCE := '';
209        -- End of Bug 9393657
210       ELSE
211         /*GET_POUNDS_PENCE(TAXABLE_PAY
212                         ,C_PAY_IN_EMP_POUNDS
213                         ,C_PAY_IN_EMP_PENCE);
214         GET_POUNDS_PENCE(TAX_PAID
215                         ,C_TAX_IN_EMP_POUNDS
216                         ,C_TAX_IN_EMP_PENCE);*/
217 
218         C_PAY_IN_EMP_POUNDS := TAXABLE_PAY;
219         C_TAX_IN_EMP_POUNDS := TAX_PAID;
220         -- Start of Bug 9393657
221         C_PAY_TD_POUNDS := NULL;
222         --C_PAY_TD_PENCE := '';
223         C_TAX_TD_POUNDS := NULL;
224         --C_TAX_TD_PENCE := '';
225 	-- End of Bug 9393657
226       END IF;
227     ELSIF C_3_PART = 'FALSE' THEN
228       IF W1_M1_INDICATOR IS NULL THEN
229         /*GET_POUNDS_PENCE(C_TOTAL_PAY_TD
230                         ,C_PAY_TD_POUNDS
231                         ,C_PAY_TD_PENCE);
232         GET_POUNDS_PENCE(C_TOTAL_TAX_TD
233                         ,C_TAX_TD_POUNDS
234                         ,C_TAX_TD_PENCE);*/
235 
236         C_PAY_TD_POUNDS := C_TOTAL_PAY_TD;
237         C_TAX_TD_POUNDS := C_TOTAL_TAX_TD;
238 
239         IF NVL(PREVIOUS_TAXABLE_PAY
240            ,0) = 0 AND NVL(PREVIOUS_TAX_PAID
241            ,0) = 0 THEN
242           -- End of Bug 9393657
243           C_PAY_IN_EMP_POUNDS := NULL;
244           --C_PAY_IN_EMP_PENCE := '';
245           C_TAX_IN_EMP_POUNDS := NULL;
246           --C_TAX_IN_EMP_PENCE := '';
247 	  -- End of Bug 9393657
248         ELSE
249 /*          GET_POUNDS_PENCE(TAXABLE_PAY
250                           ,C_PAY_IN_EMP_POUNDS
251                           ,C_PAY_IN_EMP_PENCE);
252           GET_POUNDS_PENCE(TAX_PAID
253                           ,C_TAX_IN_EMP_POUNDS
254                           ,C_TAX_IN_EMP_PENCE);*/
255         C_PAY_IN_EMP_POUNDS := TAXABLE_PAY;
256         C_TAX_IN_EMP_POUNDS := TAX_PAID;
257         END IF;
258       ELSE
259 /*        GET_POUNDS_PENCE(TAXABLE_PAY
260                         ,C_PAY_IN_EMP_POUNDS
261                         ,C_PAY_IN_EMP_PENCE);
262         GET_POUNDS_PENCE(TAX_PAID
263                         ,C_TAX_IN_EMP_POUNDS
264                         ,C_TAX_IN_EMP_PENCE);*/
265 
266         C_PAY_IN_EMP_POUNDS := TAXABLE_PAY;
267         C_TAX_IN_EMP_POUNDS := TAX_PAID;
268         -- Start of Bug 9393657
269         C_PAY_TD_POUNDS := NULL;
270         --C_PAY_TD_PENCE := '';
271         C_TAX_TD_POUNDS := NULL;
272         --C_TAX_TD_PENCE := '';
273 	-- End of Bug 9393657
274       END IF;
275 
276 
277 
278     END IF;
279 
280     RETURN NULL;
281   END C_FORMAT_DATA_FORMULA;
282 
283   PROCEDURE GET_POUNDS_PENCE(P_TOTAL IN NUMBER
284                             ,P_POUNDS IN OUT NOCOPY NUMBER
285                             ,P_PENCE IN OUT NOCOPY NUMBER) IS
286   BEGIN
287     IF P_TOTAL <> 0 THEN
288       P_POUNDS := TRUNC(P_TOTAL);
289       P_PENCE := ABS(100 * (P_TOTAL - P_POUNDS));
290     ELSE
291       P_POUNDS := NULL;
292       P_PENCE := NULL;
293     END IF;
294   END GET_POUNDS_PENCE;
295 
296   PROCEDURE SPLIT_EMPLOYER_ADDRESS(P_EMPLOYER_ADDRESS IN VARCHAR2
297                                   ,P_EMP_ADDR_LINE_1 IN OUT NOCOPY VARCHAR2
298                                   ,P_EMP_ADDR_LINE_2 IN OUT NOCOPY VARCHAR2
299                                   ,P_EMP_ADDR_LINE_3 IN OUT NOCOPY VARCHAR2) IS
300     LINE_LENGTH CONSTANT NUMBER DEFAULT 34;
301     OUT_LINE1 VARCHAR2(34) := NULL;
302     OUT_LINE2 VARCHAR2(34) := NULL;
303     CURRENT_CHAR VARCHAR2(1);
304     IND NUMBER;
305     REMAINING_CHARS NUMBER;
306     WRAP_POINT NUMBER := 34;
307     P_REMAINING_ADDRESS VARCHAR2(600);
308   BEGIN
309     IF NVL(LENGTH(RTRIM(P_EMPLOYER_ADDRESS))
310        ,0) > 34 THEN
311       FOR ind IN REVERSE 1 .. LINE_LENGTH LOOP
312         CURRENT_CHAR := SUBSTR(P_EMPLOYER_ADDRESS
313                               ,IND
314                               ,1);
315         IF IND = LINE_LENGTH AND CURRENT_CHAR = ',' THEN
316           WRAP_POINT := LINE_LENGTH;
317           EXIT;
318         ELSIF IND = LINE_LENGTH AND CURRENT_CHAR <> ',' THEN
319           NULL;
320         ELSIF IND < LINE_LENGTH AND CURRENT_CHAR <> ',' THEN
321           NULL;
322         ELSIF IND < LINE_LENGTH AND CURRENT_CHAR = ',' THEN
323           WRAP_POINT := IND;
324           EXIT;
325         END IF;
326       END LOOP;
327       IF length(P_EMPLOYER_ADDRESS) - WRAP_POINT > 34 THEN
328         REMAINING_CHARS := length(P_EMPLOYER_ADDRESS) - WRAP_POINT;
329         P_EMP_ADDR_LINE_1 := SUBSTR(P_EMPLOYER_ADDRESS
330                                    ,1
331                                    ,WRAP_POINT);
332         P_REMAINING_ADDRESS := SUBSTR(P_EMPLOYER_ADDRESS
333                                      ,WRAP_POINT + 1
334                                      ,REMAINING_CHARS);
335         WRAP_POINT := 34;
336         FOR ind IN REVERSE 1 .. LINE_LENGTH LOOP
337           CURRENT_CHAR := SUBSTR(P_REMAINING_ADDRESS
338                                 ,IND
339                                 ,1);
340           IF IND = LINE_LENGTH AND CURRENT_CHAR = ',' THEN
341             WRAP_POINT := LINE_LENGTH;
342             EXIT;
343           ELSIF IND = LINE_LENGTH AND CURRENT_CHAR <> ',' THEN
344             NULL;
345           ELSIF IND < LINE_LENGTH AND CURRENT_CHAR <> ',' THEN
346             NULL;
347           ELSIF IND < LINE_LENGTH AND CURRENT_CHAR = ',' THEN
348             WRAP_POINT := IND;
349             EXIT;
350           END IF;
351         END LOOP;
352         REMAINING_CHARS := length(P_REMAINING_ADDRESS) - WRAP_POINT;
353         P_EMP_ADDR_LINE_2 := LTRIM(SUBSTR(P_REMAINING_ADDRESS
354                                          ,1
355                                          ,WRAP_POINT));
356         P_EMP_ADDR_LINE_3 := LTRIM(SUBSTR(P_REMAINING_ADDRESS
357                                          ,WRAP_POINT + 1
358                                          ,34));
359       ELSE
360         REMAINING_CHARS := length(P_EMPLOYER_ADDRESS) - WRAP_POINT;
361         P_EMP_ADDR_LINE_1 := SUBSTR(P_EMPLOYER_ADDRESS
362                                    ,1
363                                    ,WRAP_POINT);
364         P_EMP_ADDR_LINE_2 := LTRIM(SUBSTR(P_EMPLOYER_ADDRESS
365                                          ,WRAP_POINT + 1
366                                          ,34));
367       END IF;
368     ELSE
369       P_EMP_ADDR_LINE_1 := P_EMPLOYER_ADDRESS;
370       P_EMP_ADDR_LINE_2 := NULL;
371     END IF;
372   END SPLIT_EMPLOYER_ADDRESS;
373 
374   FUNCTION C_3_PARTFORMULA RETURN VARCHAR2 IS
375   BEGIN
376     DECLARE
377       L_3_PART NUMBER(1);
378     BEGIN
379       SELECT
380         1
381       INTO L_3_PART
382       FROM
383         FF_GLOBALS_F
384       WHERE GLOBAL_NAME = 'P45_REPORT_TYPE'
385         AND SUBSTR(GLOBAL_VALUE
386             ,1
387             ,1) = '3'
388         AND sysdate between EFFECTIVE_START_DATE
389         AND EFFECTIVE_END_DATE;
390       RETURN ('TRUE');
391     EXCEPTION
392       WHEN NO_DATA_FOUND THEN
393         RETURN ('FALSE');
394     END;
395     RETURN NULL;
396   END C_3_PARTFORMULA;
397 
398   FUNCTION AFTERREPORT RETURN BOOLEAN IS
399   BEGIN
400     --HR_STANDARD.EVENT('AFTER REPORT');
401     RETURN (TRUE);
402   END AFTERREPORT;
403 
404   FUNCTION C_TITLE_P RETURN VARCHAR2 IS
405   BEGIN
406     RETURN C_TITLE;
407   END C_TITLE_P;
408 
409   FUNCTION C_NI12_P RETURN VARCHAR2 IS
410   BEGIN
411     RETURN C_NI12;
412   END C_NI12_P;
413 
414   FUNCTION C_NI34_P RETURN VARCHAR2 IS
415   BEGIN
416     RETURN C_NI34;
417   END C_NI34_P;
418 
419   FUNCTION C_NI56_P RETURN VARCHAR2 IS
420   BEGIN
421     RETURN C_NI56;
422   END C_NI56_P;
423 
424   FUNCTION C_NI78_P RETURN VARCHAR2 IS
425   BEGIN
426     RETURN C_NI78;
427   END C_NI78_P;
428 
429   FUNCTION C_NI9_P RETURN VARCHAR2 IS
430   BEGIN
431     RETURN C_NI9;
432   END C_NI9_P;
433 
434   FUNCTION C_DATE_OF_LEAVING_DD_P RETURN VARCHAR2 IS
435   BEGIN
436     RETURN C_DATE_OF_LEAVING_DD;
437   END C_DATE_OF_LEAVING_DD_P;
438 
439   FUNCTION C_DATE_OF_LEAVING_MM_P RETURN VARCHAR2 IS
440   BEGIN
441     RETURN C_DATE_OF_LEAVING_MM;
442   END C_DATE_OF_LEAVING_MM_P;
443 
444   FUNCTION C_DATE_OF_LEAVING_YYYY_P RETURN VARCHAR2 IS
445   BEGIN
446     RETURN C_DATE_OF_LEAVING_YYYY;
447   END C_DATE_OF_LEAVING_YYYY_P;
448 
449   FUNCTION C_DATE_OF_BIRTH_DD_P RETURN VARCHAR2 IS
450   BEGIN
451     RETURN C_DATE_OF_BIRTH_DD;
452   END C_DATE_OF_BIRTH_DD_P;
453 
454   FUNCTION C_DATE_OF_BIRTH_MM_P RETURN VARCHAR2 IS
455   BEGIN
456     RETURN C_DATE_OF_BIRTH_MM;
457   END C_DATE_OF_BIRTH_MM_P;
458 
459   FUNCTION C_DATE_OF_BIRTH_YYYY_P RETURN VARCHAR2 IS
460   BEGIN
461     RETURN C_DATE_OF_BIRTH_YYYY;
462   END C_DATE_OF_BIRTH_YYYY_P;
463 
464   FUNCTION C_SEX_M_P RETURN VARCHAR2 IS
465   BEGIN
466     RETURN C_SEX_M;
467   END C_SEX_M_P;
468 
469   FUNCTION C_SEX_F_P RETURN VARCHAR2 IS
470   BEGIN
471     RETURN C_SEX_F;
472   END C_SEX_F_P;
473 
474   FUNCTION C_TOTAL_TAX_TD_P RETURN NUMBER IS
475   BEGIN
476     RETURN C_TOTAL_TAX_TD;
477   END C_TOTAL_TAX_TD_P;
478 
479   FUNCTION C_TOTAL_PAY_TD_P RETURN NUMBER IS
480   BEGIN
481     RETURN C_TOTAL_PAY_TD;
482   END C_TOTAL_PAY_TD_P;
483 
484   FUNCTION C_PER_ADDRESS_LINE1_P RETURN VARCHAR2 IS
485   BEGIN
486     RETURN C_PER_ADDRESS_LINE1;
487   END C_PER_ADDRESS_LINE1_P;
488 
489   FUNCTION C_PER_ADDRESS_LINE2_P RETURN VARCHAR2 IS
490   BEGIN
491     RETURN C_PER_ADDRESS_LINE2;
492   END C_PER_ADDRESS_LINE2_P;
493 
494   FUNCTION C_PER_ADDRESS_LINE3_P RETURN VARCHAR2 IS
495   BEGIN
496     RETURN C_PER_ADDRESS_LINE3;
497   END C_PER_ADDRESS_LINE3_P;
498 
499   FUNCTION C_PER_ADDRESS_LINE4_P RETURN VARCHAR2 IS
500   BEGIN
501     RETURN C_PER_ADDRESS_LINE4;
502   END C_PER_ADDRESS_LINE4_P;
503 
504   FUNCTION C_PAY_IN_EMP_POUNDS_P RETURN NUMBER IS
505   BEGIN
506   if C_PAY_IN_EMP_POUNDS < 0 AND C_W1_M1_INDICATOR IS NULL then -- Bug 9170440    Bug 13441825
507      C_PAY_IN_EMP_POUNDS := NULL; --Bug 9393657
508    end if;
509     RETURN C_PAY_IN_EMP_POUNDS;
510   END C_PAY_IN_EMP_POUNDS_P;
511 
512   FUNCTION C_PAY_IN_EMP_PENCE_P RETURN NUMBER IS
513   BEGIN
514     RETURN C_PAY_IN_EMP_PENCE;
515   END C_PAY_IN_EMP_PENCE_P;
516 
517   FUNCTION C_TAX_IN_EMP_POUNDS_P RETURN NUMBER IS
518   BEGIN
519    if C_TAX_IN_EMP_POUNDS < 0 AND C_W1_M1_INDICATOR IS NULL then -- Bug 8678216     Bug 13441825
520      C_TAX_IN_EMP_POUNDS := 0; --Bug 9393657   Bug 14243309
521    end if;
522     RETURN C_TAX_IN_EMP_POUNDS;
523   END C_TAX_IN_EMP_POUNDS_P;
524 
525   FUNCTION C_TAX_IN_EMP_PENCE_P RETURN NUMBER IS
526   BEGIN
527     RETURN C_TAX_IN_EMP_PENCE;
528   END C_TAX_IN_EMP_PENCE_P;
529 
530   FUNCTION C_PAY_TD_POUNDS_P RETURN NUMBER IS
531   BEGIN
532   C_PAY_TD_POUNDS := NVL(C_PAY_TD_POUNDS,0);       -- Bug 13441825
533   if C_PAY_TD_POUNDS <= 0 AND C_W1_M1_INDICATOR IS NOT NULL  then -- Bug 9170440     Bug 13441825
534      C_PAY_TD_POUNDS := NULL; --Bug 9393657
535    end if;
536     RETURN C_PAY_TD_POUNDS;
537   END C_PAY_TD_POUNDS_P;
538 
539   FUNCTION C_PAY_TD_PENCE_P RETURN NUMBER IS
540   BEGIN
541     RETURN C_PAY_TD_PENCE;
542   END C_PAY_TD_PENCE_P;
543 
544   FUNCTION C_TAX_TD_POUNDS_P RETURN NUMBER IS
545   BEGIN
546   C_TAX_TD_POUNDS := NVL(C_TAX_TD_POUNDS,0);    -- Bug 13441825
547   if C_TAX_TD_POUNDS <= 0 AND C_W1_M1_INDICATOR IS NOT NULL then -- Bug 9170440    Bug 13441825
548      C_TAX_TD_POUNDS := NULL; --Bug 9393657
549   end if;
550     RETURN C_TAX_TD_POUNDS;
551   END C_TAX_TD_POUNDS_P;
552 
553   FUNCTION C_TAX_TD_PENCE_P RETURN NUMBER IS
554   BEGIN
555     RETURN C_TAX_TD_PENCE;
556   END C_TAX_TD_PENCE_P;
557 
558   FUNCTION C_BUSINESS_GROUP_NAME_P RETURN VARCHAR2 IS
559   BEGIN
560     RETURN C_BUSINESS_GROUP_NAME;
561   END C_BUSINESS_GROUP_NAME_P;
562 
563   FUNCTION C_REPORT_SUBTITLE_P RETURN VARCHAR2 IS
564   BEGIN
565     RETURN C_REPORT_SUBTITLE;
566   END C_REPORT_SUBTITLE_P;
567 
568   FUNCTION C_FORMULA_ID_P RETURN NUMBER IS
569   BEGIN
570     RETURN C_FORMULA_ID;
571   END C_FORMULA_ID_P;
572 
573   FUNCTION C_MESSAGE_P RETURN VARCHAR2 IS
574   BEGIN
575     RETURN C_MESSAGE;
576   END C_MESSAGE_P;
577 
578   FUNCTION C_ERS_ADDR_LINE1_P RETURN VARCHAR2 IS
579   BEGIN
580     RETURN C_ERS_ADDR_LINE1;
581   END C_ERS_ADDR_LINE1_P;
582 
583   FUNCTION C_ERS_ADDR_LINE2_P RETURN VARCHAR2 IS
584   BEGIN
585     RETURN C_ERS_ADDR_LINE2;
586   END C_ERS_ADDR_LINE2_P;
587 
588   FUNCTION C_ERS_ADDR_LINE3_P RETURN VARCHAR2 IS
589   BEGIN
590     RETURN C_ERS_ADDR_LINE3;
591   END C_ERS_ADDR_LINE3_P;
592 
593   FUNCTION C_ERS_NAME_P RETURN VARCHAR2 IS
594   BEGIN
595     RETURN C_ERS_NAME;
596   END C_ERS_NAME_P;
597 
598   FUNCTION C_TAX_DIST_NO_P RETURN VARCHAR2 IS
599   BEGIN
600     RETURN C_TAX_DIST_NO;
601   END C_TAX_DIST_NO_P;
602 
603   FUNCTION C_TAX_DIST_REF_P RETURN VARCHAR2 IS
604   BEGIN
605     RETURN C_TAX_DIST_REF;
606   END C_TAX_DIST_REF_P;
607 
608 END PAY_PAYGBP45_A4_PKG;