DBA Data[Home] [Help]

PACKAGE BODY: APPS.AP_CREATE_PAY_DISTS_PKG

Source


1 PACKAGE BODY AP_CREATE_PAY_DISTS_PKG AS
2 /* $Header: appdistb.pls 120.4 2004/10/28 23:26:25 pjena noship $ */
3 
4 
5     -----------------------------------------------------------------------
6     -- Procedure overlay_segments performs either ACCOUNT or BALANCING
7     -- segment overlay of the two input segments and returns the validated
8     -- ccid of the resulting overlay segments or the reason it could not
9     -- be flexbuilt.
10     --
11     -- Case 1: Account Segment Overlay
12     --
13     --     Result	B	B      [A]	B	...
14     --     Primary	A	A      [A]	A	...
15     --     Overlay	B	B      [B]	B	...
16     --
17     -- Case 2: Balancing Segment Overlay
18     --
19     --     Result      [B]	A       A	A	...
20     --     Primary     [A]	A       A	A	...
21     --     Overlay     [B]	B       B	B	...
22     --
23     PROCEDURE overlay_segments
24 	(P_primary_segments	IN	FND_FLEX_EXT.SEGMENTARRAY
25 	,P_overlay_segments	IN	FND_FLEX_EXT.SEGMENTARRAY
26 	,P_num_segments		IN	NUMBER
27 	,P_chart_of_accounts_id	IN	NUMBER
28 	,P_flex_segment_num	IN	NUMBER
29 	,P_flex_qualifier_name	IN	VARCHAR2
30 	,P_segment_delimiter	IN	VARCHAR2
31 	,P_ccid			OUT NOCOPY NUMBER
32 	,P_unbuilt_flex		OUT NOCOPY VARCHAR2
33 	,P_reason_unbuilt_flex	OUT NOCOPY VARCHAR2
34 	,P_calling_sequence	IN	VARCHAR2
35 	)
36     IS
37 	l_segments			FND_FLEX_EXT.SEGMENTARRAY;
38 	l_result			BOOLEAN;
39 	l_debug_info		 	VARCHAR2(240);
40 	l_curr_calling_sequence 	VARCHAR2(2000);
41     BEGIN
42 	l_curr_calling_sequence := 'AP_CREATE_PAY_DISTS_PKG.OVERLAY_SEGMENTS<-' ||
43 				   P_calling_sequence;
44 
45         -------------------------------------------------------------------
46 	-- Overlay segments
47 	--
48 	FOR i IN 1..P_num_segments LOOP
49 
50 	    l_debug_info := 'Overlaying segment number ' || TO_CHAR(i);
51 
52 	    IF (P_flex_qualifier_name = 'GL_ACCOUNT') THEN
53 	        --
54 	        -- Case 1: Account segment overlay
55 	        --
56 		IF (i = P_flex_segment_num) THEN
57 		    l_segments(i) := P_primary_segments(i);
58 		ELSE
59 		    l_segments(i) := P_overlay_segments(i);
60 		END IF;
61 
62 	    ELSIF (P_flex_qualifier_name = 'GL_BALANCING') THEN
63 	        --
64 	        -- Case 2: Balancing segment overlay
65 	        --
66 		IF (i = P_flex_segment_num) THEN
67 		    l_segments(i) := P_overlay_segments(i);
68 		ELSE
69 		    l_segments(i) := P_primary_segments(i);
70 		END IF;
71 
72 	    END IF;
73 
74 	END LOOP;
75 
76         -------------------------------------------------------------------
77 	-- Get ccid for overlayed segments
78 	--
79 	l_result := FND_FLEX_EXT.GET_COMBINATION_ID(
80 				'SQLGL',
81 				'GL#',
82 				P_chart_of_accounts_id,
83 				SYSDATE,
84 				P_num_segments,
85 				l_segments,
86 				P_ccid);
87 
88 	IF (NOT l_result) THEN
89 	    --
90 	    -- Store unbuild flex reason and unbuilt flex if error
91 	    --
92 	    P_ccid := -1;
93 	    P_reason_unbuilt_flex := FND_MESSAGE.GET;
94 	    P_unbuilt_flex := FND_FLEX_EXT.CONCATENATE_SEGMENTS(
95 					P_num_segments,
96 					l_segments,
97 					P_segment_delimiter);
98 	ELSE
99 	    P_reason_unbuilt_flex := NULL;
100 	    P_unbuilt_flex := NULL;
101 	END IF;
102 
103     EXCEPTION
104     WHEN OTHERS THEN
105       IF (SQLCODE <> -20001) THEN
106         FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
107         FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
108         FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_curr_calling_sequence);
109         FND_MESSAGE.SET_TOKEN('PARAMETERS',
110 		  '  FLEX_QUALIFIER_NAME = '|| P_flex_qualifier_name
111 		||', FLEX_SEGMENT_NUM = '   || TO_CHAR(P_flex_segment_num));
112         FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
113       END IF;
114       APP_EXCEPTION.RAISE_EXCEPTION;
115 
116     END overlay_segments;
117 
118 END AP_CREATE_PAY_DISTS_PKG;