DBA Data[Home] [Help]

PACKAGE BODY: APPS.GCS_LEX_MAP_GL_APPLY_PKG

Source


1 PACKAGE BODY GCS_LEX_MAP_GL_APPLY_PKG AS
2 /* $Header: gcsgllxb.pls 115.9 2003/11/06 04:50:25 mikeward noship $ */
3 
4 
5   --
6   -- Exceptions
7   --
8   GCS_LEX_MAP_GL_FAILED		EXCEPTION;
9 
10   PROCEDURE Apply_Transformation(	x_errbuf	OUT NOCOPY VARCHAR2,
11 					x_retcode	OUT NOCOPY VARCHAR2,
12 					p_rule_set_id		NUMBER,
13 					p_source		VARCHAR2,
14 					p_group_id		NUMBER,
15 					p_auto_ji		VARCHAR2,
16 					p_create_sum_jou	VARCHAR2,
17 					p_import_dff		VARCHAR2) IS
18     return_status	VARCHAR2(1);
19     msg_count		NUMBER;
20     msg_data		VARCHAR2(2000);
21 
22     interface_table	VARCHAR2(30);
23 
24     -- Information used for running Journal Import
25     inter_run_id	NUMBER;
26     sob_id		VARCHAR2(30);
27     req_id		NUMBER;
28 
29     -- Cursor to get info from the gl_interface_control table concerning
30     -- this run.
31     CURSOR	interface_table_c IS
32     SELECT	nvl(glic.interface_table_name, 'GL_INTERFACE'),
33 		glic.interface_run_id
34     FROM	gl_interface_control glic,
35 		gl_je_sources src
36     WHERE	glic.group_id = p_group_id
37     AND		glic.je_source_name = src.je_source_name
38     AND		src.user_je_source_name = p_source
39     ORDER BY	glic.rowid;
40 
41     -- Cursor to check whether the Journal Import request has finished or not.
42     CURSOR	ji_check_c(c_req_id NUMBER) IS
43     SELECT	1
44     FROM	fnd_concurrent_requests cr
45     WHERE	cr.request_id = c_req_id
46     AND		cr.phase_code = 'C';
47 
48     dummy	NUMBER;
49 
50     debug_mode	VARCHAR2(30);
51 
52     req_data	VARCHAR2(10); -- Used for child process control
53   BEGIN
54     -- Get the request data. If this is not the original run, then just
55     -- exit out successfully.
56     req_data := fnd_conc_global.request_data;
57     IF req_data IS NOT NULL THEN
58       return;
59     END IF;
60 
61     FND_PROFILE.get('GL_SET_OF_BKS_ID', sob_id);
62     FND_PROFILE.get('GL_DEBUG_MODE', debug_mode);
63 
64     -- Fetch the row with the given source/group_id combination.
65     OPEN interface_table_c;
66     FETCH interface_table_c INTO interface_table, inter_run_id;
67     IF interface_table_c%NOTFOUND THEN
68       CLOSE interface_table_c;
69       interface_table := 'GL_INTERFACE';
70       inter_run_id := null;
71 
72       -- Insert a row for this IDT and Journal Import run into the
73       -- gl_interface_control table.
74       INSERT INTO gl_interface_control(je_source_name, status, group_id, set_of_books_id)
75       SELECT	src.je_source_name, 'S', p_group_id, sob_id
76       FROM	gl_je_sources src
77       WHERE	src.user_je_source_name = p_source;
78     ELSE
79       CLOSE interface_table_c;
80     END IF;
81 
82     -- Call the IDT API to perform the transformation.
83     GCS_LEX_MAP_API_PKG.apply_map(
84 	p_api_version		=> 1.0,
85 	x_return_status		=> return_status,
86 	x_msg_count		=> msg_count,
87 	x_msg_data		=> msg_data,
88 	p_rule_set_id		=> p_rule_set_id,
89 	p_staging_table_name	=> interface_table,
90 	p_debug_mode		=> debug_mode,
91 	p_filter_column_name1	=> 'GROUP_ID',
92 	p_filter_column_value1	=> p_group_id,
93 	p_filter_column_name2	=> 'USER_JE_SOURCE_NAME',
94 	p_filter_column_value2	=> p_source);
95 
96     -- If this failed, then update gl_interface_control so that the errored
97     -- rows will show up in the JI Correction form.
98     IF return_status <> FND_API.G_RET_STS_SUCCESS THEN
99       UPDATE	gl_interface_control glic
100       SET	glic.status = 'I'
101       WHERE	rowid = (SELECT	min(rowid)
102                          FROM	gl_interface_control glic2
103                          WHERE	glic2.je_source_name = glic.je_source_name
104                          AND	glic2.group_id = glic.group_id)
105       AND	glic.je_source_name =
106 		(SELECT	src.je_source_name
107 		 FROM	gl_je_sources src
108 		 WHERE	src.user_je_source_name = p_source)
109       AND	glic.group_id = p_group_id;
110       raise gcs_lex_map_gl_failed;
111     END IF;
112 
113     -- If the automatic JI option is on, then run journal import.
114     IF p_auto_ji = 'Y' THEN
115 
116       -- If no interface run id has been specified, get one and insert it
117       -- into gl_interface_control.
118       IF inter_run_id IS NULL THEN
119         SELECT	gl_journal_import_s.nextval
120         INTO	inter_run_id
121         FROM	dual;
122 
123         UPDATE	gl_interface_control glic
124         SET	glic.interface_run_id = inter_run_id
125         WHERE	rowid = (SELECT	min(rowid)
126                          FROM	gl_interface_control glic2
127                          WHERE	glic2.je_source_name = glic.je_source_name
128                          AND	glic2.group_id = glic.group_id)
129         AND	glic.je_source_name =
130 		(SELECT	src.je_source_name
131 		 FROM	gl_je_sources src
132 		 WHERE	src.user_je_source_name = p_source)
133         AND	glic.group_id = p_group_id;
134       END IF;
135 
136       -- Run Journal Import here.
137       req_id := FND_REQUEST.submit_request(
138         'SQLGL', 'GLLEZL', null, null, TRUE,
139         to_char(inter_run_id), sob_id,
140         'N', null, null, p_create_sum_jou, p_import_dff, chr(0), null, null,
141         null, null, null, null, null, null, null, null, null, null,
142         null, null, null, null, null, null, null, null, null, null,
143         null, null, null, null, null, null, null, null, null, null,
144         null, null, null, null, null, null, null, null, null, null,
145         null, null, null, null, null, null, null, null, null, null,
146         null, null, null, null, null, null, null, null, null, null,
147         null, null, null, null, null, null, null, null, null, null,
148         null, null, null, null, null, null, null, null, null, null,
149         null, null, null, null, null, null, null, null, null, null
150       );
151 
152       -- If the request was submitted successfully, then update the request id
153       -- to be that of the journal import request.
154       IF req_id <= 0 THEN
155         x_errbuf := FND_MESSAGE.get;
156         x_retcode := '2';
157       ELSE
158         -- Pause the parent so that the child can go through.
159         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
160 					request_data => 'Y');
161       END IF;
162     END IF;
163 
164     return;
165   EXCEPTION
166     WHEN gcs_lex_map_gl_failed THEN
167       FND_MESSAGE.set_name('GCS', 'GCS_IDT_GL_FAILURE');
168       x_errbuf := FND_MESSAGE.get;
169       x_retcode := '2';
170     WHEN OTHERS THEN
171       FND_MESSAGE.set_name('GCS', 'GCS_IDT_GL_UNEXPECTED');
172       x_errbuf := FND_MESSAGE.get;
173       x_retcode := '2';
174   END Apply_Transformation;
175 
176 END GCS_LEX_MAP_GL_APPLY_PKG;