[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;