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