[Home] [Help]
PACKAGE BODY: APPS.OKL_ACC_GEN_WF_PVT
Source
1 PACKAGE BODY OKL_ACC_GEN_WF_PVT AS
2 /* $Header: OKLRAGWB.pls 120.2 2005/10/30 04:31:13 appldev noship $ */
3
4 -- Changed the signature for bug 4157521
5
6 FUNCTION start_process
7 (
8 p_acc_gen_wf_sources_rec IN acc_gen_wf_sources_rec,
9 p_ae_line_type IN okl_acc_gen_rules.ae_line_type%TYPE,
10 p_primary_key_tbl IN acc_gen_primary_key,
11 p_ae_tmpt_line_id IN NUMBER DEFAULT NULL
12 )
13 RETURN NUMBER
14 AS
15 l_ItemType VARCHAR2(30) :='OKLFLXWF';
16 l_ItemKey VARCHAR2(30);
17 l_ccid NUMBER;
18 l_concat_segs VARCHAR2(2000);
19 l_concat_ids VARCHAR2(2000);
20 l_concat_descrs VARCHAR2(2000);
21 l_err_msg VARCHAR2(2000);
22 l_result BOOLEAN;
23 l_chart_of_accounts_id NUMBER := Okl_Accounting_Util.get_chart_of_accounts_id;
24 l_template_line_ccid NUMBER;
25 l_new_ccid BOOLEAN;
26
27 BEGIN
28
29 SELECT code_combination_id INTO l_template_line_ccid
30 FROM OKL_AE_TMPT_LNES
31 WHERE ID = p_ae_tmpt_line_id;
32
33 -- Initialize the workflow, which will return the item key.
34
35 l_itemkey := Fnd_Flex_Workflow.INITIALIZE
36 ('SQLGL',
37 'GL#',
38 l_chart_of_accounts_id,
39 l_ItemType
40 );
41
42 -- Populate the required attributes for bug 4157521
43
44 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
45 itemkey => l_ItemKey,
46 aname => 'PRODUCT_ID',
47 avalue => p_acc_gen_wf_sources_rec.product_id);
48
49 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
50 itemkey => l_ItemKey,
51 aname => 'TRANSACTION_TYPE_ID',
52 avalue => p_acc_gen_wf_sources_rec.transaction_type_id);
53
54 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
55 itemkey => l_ItemKey,
56 aname => 'STREAM_TYPE_ID',
57 avalue => p_acc_gen_wf_sources_rec.stream_type_id);
58
59 wf_engine.SetItemAttrText(itemtype => l_ItemType,
60 itemkey => l_ItemKey,
61 aname => 'FACTORING_SYND_FLAG',
62 avalue => p_acc_gen_wf_sources_rec.factoring_synd_flag);
63
64 wf_engine.SetItemAttrText(itemtype => l_ItemType,
65 itemkey => l_ItemKey,
66 aname => 'SYNDICATION_CODE',
67 avalue => p_acc_gen_wf_sources_rec.syndication_code);
68
69 wf_engine.SetItemAttrText(itemtype => l_ItemType,
70 itemkey => l_ItemKey,
71 aname => 'FACTORING_CODE',
72 avalue => p_acc_gen_wf_sources_rec.factoring_code);
73
74 wf_engine.SetItemAttrText(itemtype => l_ItemType,
75 itemkey => l_ItemKey,
76 aname => 'INVESTOR_CODE',
77 avalue => p_acc_gen_wf_sources_rec.investor_code);
78
79 wf_engine.SetItemAttrText(itemtype => l_ItemType,
80 itemkey => l_ItemKey,
81 aname => 'MEMO_YN',
82 avalue => p_acc_gen_wf_sources_rec.memo_yn);
83
84 wf_engine.SetItemAttrText(itemtype => l_ItemType,
85 itemkey => l_ItemKey,
86 aname => 'REV_REC_FLAG',
87 avalue => p_acc_gen_wf_sources_rec.rev_rec_flag);
88
89 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
90 itemkey => l_ItemKey,
91 aname => 'SOURCE_ID',
92 avalue => p_acc_gen_wf_sources_rec.source_id);
93
94 wf_engine.SetItemAttrText(itemtype => l_ItemType,
95 itemkey => l_ItemKey,
96 aname => 'SOURCE_TABLE',
97 avalue => p_acc_gen_wf_sources_rec.source_table);
98
99 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
100 itemkey => l_ItemKey,
101 aname => 'CONTRACT_ID',
102 avalue => p_acc_gen_wf_sources_rec.contract_id);
103
104 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
105 itemkey => l_ItemKey,
106 aname => 'CONTRACT_LINE_ID',
107 avalue => p_acc_gen_wf_sources_rec.contract_line_id);
108
109 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
110 itemkey => l_ItemKey,
111 aname => 'TEMPLATE_LINE_ID',
112 avalue => p_ae_tmpt_line_id);
113
114 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
115 itemkey => l_ItemKey,
116 aname => 'CHART_OF_ACCOUNTS_ID',
117 avalue => l_chart_of_accounts_id);
118
119 wf_engine.SetItemAttrText(itemtype => l_ItemType,
120 itemkey => l_ItemKey,
121 aname => 'ACCOUNT_GENERATOR_RULE',
122 avalue => p_ae_line_type);
123
124 wf_engine.SetItemAttrDate(itemtype => l_ItemType,
125 itemkey => l_ItemKey,
126 aname => 'ACCOUNTING_DATE',
127 avalue => p_acc_gen_wf_sources_rec.accounting_date);
128
129
130 IF p_primary_key_tbl.COUNT > 0 THEN
131 FOR i IN p_primary_key_tbl.FIRST .. p_primary_key_tbl.LAST LOOP
132
133 IF p_primary_key_tbl(i).source_table = 'AP_VENDOR_SITES_V' THEN
134 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
135 itemkey => l_ItemKey,
136 aname => 'VENDOR_SITE_ID',
137 avalue => TRIM(p_primary_key_tbl(i).primary_key_column));
138
139 ELSIF p_primary_key_tbl(i).source_table = 'AR_SITE_USES_V' THEN
140 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
141 itemkey => l_ItemKey,
142 aname => 'SITE_USE_ID',
143 avalue => TRIM(p_primary_key_tbl(i).primary_key_column));
144
145 ELSIF p_primary_key_tbl(i).source_table = 'FA_CATEGORY_BOOKS' THEN
146 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
147 itemkey => l_ItemKey,
148 aname => 'ASSET_CATEGORY_ID',
149 avalue => TRIM(SUBSTR(p_primary_key_tbl(i).primary_key_column, 1, 50)));
150
151 wf_engine.SetItemAttrText(itemtype => l_ItemType,
152 itemkey => l_ItemKey,
153 aname => 'BOOK_TYPE_CODE',
154 avalue => TRIM(SUBSTR(p_primary_key_tbl(i).primary_key_column, 51, 100)));
155
156 ELSIF p_primary_key_tbl(i).source_table = 'FINANCIALS_SYSTEM_PARAMETERS' THEN
157 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
158 itemkey => l_ItemKey,
159 aname => 'ORG_ID',
160 avalue => TRIM(p_primary_key_tbl(i).primary_key_column));
161
162 ELSIF p_primary_key_tbl(i).source_table = 'JTF_RS_SALESREPS_MO_V' THEN
163 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
164 itemkey => l_ItemKey,
165 aname => 'SALESREP_ID',
166 avalue => TRIM(p_primary_key_tbl(i).primary_key_column));
167
168 ELSIF p_primary_key_tbl(i).source_table = 'MTL_SYSTEM_ITEMS_VL' THEN
169 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
170 itemkey => l_ItemKey,
171 aname => 'INVENTORY_ITEM_ID',
172 avalue => TRIM(SUBSTR(p_primary_key_tbl(i).primary_key_column, 1, 50)));
173
174 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
175 itemkey => l_ItemKey,
176 aname => 'INVENTORY_ORG_ID',
177 avalue => TRIM(SUBSTR(p_primary_key_tbl(i).primary_key_column, 51, 100)));
178
179
180 ELSIF p_primary_key_tbl(i).source_table = 'RA_CUST_TRX_TYPES' THEN
181 wf_engine.SetItemAttrNumber(itemtype => l_ItemType,
182 itemkey => l_ItemKey,
183 aname => 'CUST_TRX_TYPE_ID',
184 avalue => TRIM(p_primary_key_tbl(i).primary_key_column));
185
186
187 END IF;
188 END LOOP;
189 END IF;
190
191
192 -- Call the function which would return the ccid
193 -- Bug 4157521
194
195 l_result := Fnd_Flex_Workflow.generate
196 (itemtype => l_itemtype ,
197 itemkey => l_itemkey,
198 insert_if_new => TRUE,
199 ccid => l_ccid,
200 concat_segs => l_concat_segs,
201 concat_ids => l_concat_ids,
202 concat_descrs => l_concat_descrs,
203 error_message => l_err_msg,
204 new_combination => l_new_ccid);
205
206
207 RETURN l_ccid;
208
209 END start_process;
210
211
212 PROCEDURE sample_function (itemtype IN VARCHAR2,
213 itemkey IN VARCHAR2,
214 actid IN NUMBER,
215 funcmode IN VARCHAR2,
216 result OUT NOCOPY VARCHAR2)
217 AS
218
219 l_template_line_ccid NUMBER;
220 l_atl_id NUMBER;
221
222 CURSOR atl_ccid_csr (l_atl_id NUMBER) IS
223 SELECT code_combination_id INTO l_template_line_ccid
224 FROM OKL_AE_TMPT_LNES
225 WHERE ID = l_atl_id;
226
227 BEGIN
228
229 l_atl_id := wf_engine.GetItemAttrNumber(itemtype,itemkey,'TEMPLATE_LINE_ID');
230
231 OPEN atl_ccid_csr (l_atl_id);
232 FETCH atl_ccid_csr INTO l_template_line_ccid;
233 CLOSE atl_ccid_csr;
234
235 wf_engine.SetItemAttrNumber(itemtype => itemtype,
236 itemkey => itemkey,
237 aname => 'TEMPLATE_LINE_CCID',
238 avalue => l_template_line_ccid);
239
240
241 /* User puts the required logic over here
242 Eg
243
244 IF (funcmode = 'RUN') THEN
245 l_account_type := wf_engine.GetItemAttrText(itemtype,itemkey,'ACCOUNT_TYPE');
246 IF (h_account_type = 'LEASE_RECEIVABLES') THEN
247 result := 'COMPLETE:' || 'LEASE_RECEIVABLES_ACCOUNT';
248 RETURN;
249 END IF;
250
251 ELSIF (funcmode = 'CANCEL') THEN
252 result := 'COMPLETE:';
253 RETURN;
254 ELSE
255 result := '';
256 RETURN;
257 END IF;
258 */
259
260 -- NULL;
261 END sample_function;
262
263
264 END OKL_ACC_GEN_WF_PVT;