[Home] [Help]
PACKAGE BODY: APPS.CN_PROCESS_TAE_TRX_PUB
Source
1 PACKAGE BODY CN_PROCESS_TAE_TRX_PUB AS
2 --$Header: cnpptxwb.pls 120.2 2005/11/25 03:07:47 rramakri noship $
3
4
5 /*-------------------------------------------------------------------------*
6 | PRIVATE CONSTANTS
7 *-------------------------------------------------------------------------*/
8 G_PKG_NAME CONSTANT VARCHAR2(30):='CN_PROCESS_TAE_TRX_PUB';
9 G_FILE_NAME CONSTANT VARCHAR2(12):='cnpptxwb.pls';
10
11
12 /*-------------------------------------------------------------------------*
13 | PRIVATE DATATYPES
14 *-------------------------------------------------------------------------*/
15
16 /*-------------------------------------------------------------------------*
17 | PRIVATE VARIABLES
18 *-------------------------------------------------------------------------*/
19
20 /*-------------------------------------------------------------------------*
21 | PRIVATE ROUTINES SPECIFICATION
22 *-------------------------------------------------------------------------*/
23
24 FUNCTION get_adjusted_by
25 RETURN VARCHAR2 IS
26 l_adjusted_by VARCHAR2(100) := '0';
27 BEGIN
28 SELECT user_name
29 INTO l_adjusted_by
30 FROM fnd_user
31 WHERE user_id = fnd_profile.value('USER_ID');
32 RETURN l_adjusted_by;
33 EXCEPTION
34 WHEN OTHERS THEN
35 RETURN l_adjusted_by;
36 END;
37
38
39 /*-------------------------------------------------------------------------*
40 | PUBLIC ROUTINES
41 *-------------------------------------------------------------------------*/
42
43 PROCEDURE Process_Trx_Records(
44 p_api_version IN NUMBER,
45 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
46 p_commit IN VARCHAR2 := FND_API.G_FALSE,
47 p_validation_level IN VARCHAR2 := FND_API.G_VALID_LEVEL_FULL,
48
49 x_return_status OUT NOCOPY VARCHAR2,
50 x_msg_count OUT NOCOPY NUMBER,
51 x_msg_data OUT NOCOPY VARCHAR2,
52 p_org_id IN NUMBER)
53 IS
54 CURSOR trx_records IS
55 SELECT WIN.TRANS_OBJECT_ID,
56 WIN.org_id,
57 WIN.role,
58 WIN.resource_id
59 FROM
60 JTF_TAE_1001_SC_WINNERS WIN
61
62 WHERE
63 WIN.SOURCE_ID = -1001 AND
64 WIN.TRANS_OBJECT_TYPE_ID = -1002 AND
65 WIN.ORG_ID=p_org_id;
66
67 TYPE api_id_list is TABLE of cn_comm_lines_api.comm_lines_api_id%TYPE;
68 TYPE org_id_list is TABLE of cn_comm_lines_api.org_id%TYPE;
69 TYPE role_list is TABLE of JTF_TAE_1001_SC_WINNERS.role%TYPE;
70 TYPE resource_id_list is TABLE of JTF_TAE_1001_SC_WINNERS.resource_id%TYPE;
71
72 l_api_id api_id_list;
73 l_org_id org_id_list;
74 l_role role_list;
75 l_resource_id resource_id_list;
76
77 l_max_rows NUMBER := 10000;
78 l_attempts NUMBER := 0;
79 l_exceptions BOOLEAN := FALSE;
80
81 l_api_name CONSTANT VARCHAR2(30) := 'process_trx_records';
82 l_api_version CONSTANT NUMBER := 1.0;
83 l_adjusted_by VARCHAR2(30);
84
85 BEGIN
86
87 l_adjusted_by := get_adjusted_by;
88
89 -- Standard Start of API savepoint
90 SAVEPOINT process_trx_records;
91
92 -- Standard call to check for call compatibility.
93 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
94 p_api_version ,
95 l_api_name,
96 G_PKG_NAME ) THEN
97 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
98 END IF;
99
100 -- Initialize message list if p_init_msg_list is set to TRUE.
101 IF FND_API.to_Boolean( p_init_msg_list ) THEN
102 FND_MSG_PUB.initialize;
103 END IF;
104
105 -- Initialize API return status to success
106 x_return_status := FND_API.G_RET_STS_SUCCESS;
107
108
109 l_attempts := 1;
110 l_exceptions := FALSE;
111
112 --dbms_output.put_line('Before Insert Statement');
113
114 INSERT into CN_COMM_LINES_API
115 ( SALESREP_ID,
116 PROCESSED_DATE,
117 PROCESSED_PERIOD_ID,
118 TRANSACTION_AMOUNT,
119 TRX_TYPE,
120 REVENUE_CLASS_ID,
121 LOAD_STATUS,
122 ATTRIBUTE_CATEGORY,
123 ATTRIBUTE1,
124 ATTRIBUTE2,
125 ATTRIBUTE3,
126 ATTRIBUTE4,
127 ATTRIBUTE5,
128 ATTRIBUTE6,
129 ATTRIBUTE7,
130 ATTRIBUTE8,
131 ATTRIBUTE9,
132 ATTRIBUTE10,
133 ATTRIBUTE11,
134 ATTRIBUTE12,
135 ATTRIBUTE13,
136 ATTRIBUTE14,
137 ATTRIBUTE15,
138 ATTRIBUTE16,
139 ATTRIBUTE17,
140 ATTRIBUTE18,
141 ATTRIBUTE19,
142 ATTRIBUTE20,
143 ATTRIBUTE21,
144 ATTRIBUTE22,
145 ATTRIBUTE23,
146 ATTRIBUTE24,
147 ATTRIBUTE25,
148 ATTRIBUTE26,
149 ATTRIBUTE27,
150 ATTRIBUTE28,
151 ATTRIBUTE29,
152 ATTRIBUTE30,
153 ATTRIBUTE31,
154 ATTRIBUTE32,
155 ATTRIBUTE33,
156 ATTRIBUTE34,
157 ATTRIBUTE35,
158 ATTRIBUTE36,
159 ATTRIBUTE37,
160 ATTRIBUTE38,
161 ATTRIBUTE39,
162 ATTRIBUTE40,
163 ATTRIBUTE41,
164 ATTRIBUTE42,
165 ATTRIBUTE43,
166 ATTRIBUTE44,
167 ATTRIBUTE45,
168 ATTRIBUTE46,
169 ATTRIBUTE47,
170 ATTRIBUTE48,
171 ATTRIBUTE49,
172 ATTRIBUTE50,
173 ATTRIBUTE51,
174 ATTRIBUTE52,
175 ATTRIBUTE53,
176 ATTRIBUTE54,
177 ATTRIBUTE55,
178 ATTRIBUTE56,
179 ATTRIBUTE57,
180 ATTRIBUTE58,
181 ATTRIBUTE59,
182 ATTRIBUTE60,
183 ATTRIBUTE61,
184 ATTRIBUTE62,
185 ATTRIBUTE63,
186 ATTRIBUTE64,
187 ATTRIBUTE65,
188 ATTRIBUTE66,
189 ATTRIBUTE67,
190 ATTRIBUTE68,
191 ATTRIBUTE69,
192 ATTRIBUTE70,
193 ATTRIBUTE71,
194 ATTRIBUTE72,
195 ATTRIBUTE73,
196 ATTRIBUTE74,
197 ATTRIBUTE75,
198 ATTRIBUTE76,
199 ATTRIBUTE77,
200 ATTRIBUTE78,
201 ATTRIBUTE79,
202 ATTRIBUTE80,
203 ATTRIBUTE81,
204 ATTRIBUTE82,
205 ATTRIBUTE83,
206 ATTRIBUTE84,
207 ATTRIBUTE85,
208 ATTRIBUTE86,
209 ATTRIBUTE87,
210 ATTRIBUTE88,
211 ATTRIBUTE89,
212 ATTRIBUTE90,
213 ATTRIBUTE91,
214 ATTRIBUTE92,
215 ATTRIBUTE93,
216 ATTRIBUTE94,
217 ATTRIBUTE95,
218 ATTRIBUTE96,
219 ATTRIBUTE97,
220 ATTRIBUTE98,
221 ATTRIBUTE99,
222 ATTRIBUTE100,
223 COMM_LINES_API_ID,
224 CONC_BATCH_ID,
225 PROCESS_BATCH_ID,
226 SALESREP_NUMBER,
227 ROLLUP_DATE,
228 SOURCE_DOC_ID,
229 SOURCE_DOC_TYPE,
230 CREATED_BY,
231 CREATION_DATE,
232 LAST_UPDATED_BY,
233 LAST_UPDATE_DATE,
234 LAST_UPDATE_LOGIN,
235 TRANSACTION_CURRENCY_CODE,
236 EXCHANGE_RATE,
237 ACCTD_TRANSACTION_AMOUNT,
238 TRX_ID,
239 TRX_LINE_ID,
240 TRX_SALES_LINE_ID,
241 QUANTITY,
242 SOURCE_TRX_NUMBER,
243 DISCOUNT_PERCENTAGE,
244 MARGIN_PERCENTAGE,
245 SOURCE_TRX_ID,
246 SOURCE_TRX_LINE_ID,
247 SOURCE_TRX_SALES_LINE_ID,
248 NEGATED_FLAG,
249 CUSTOMER_ID,
250 INVENTORY_ITEM_ID,
251 ORDER_NUMBER,
252 BOOKED_DATE,
253 INVOICE_NUMBER,
254 INVOICE_DATE,
255 ADJUST_DATE,
256 ADJUSTED_BY,
257 REVENUE_TYPE,
258 ADJUST_ROLLUP_FLAG,
259 ADJUST_COMMENTS,
260 ADJUST_STATUS,
261 LINE_NUMBER,
262 BILL_TO_ADDRESS_ID,
263 SHIP_TO_ADDRESS_ID,
264 BILL_TO_CONTACT_ID,
265 SHIP_TO_CONTACT_ID,
266 ADJ_COMM_LINES_API_ID,
267 PRE_DEFINED_RC_FLAG,
268 ROLLUP_FLAG,
269 FORECAST_ID,
270 UPSIDE_QUANTITY,
271 UPSIDE_AMOUNT,
272 UOM_CODE,
273 REASON_CODE,
274 TYPE,
275 PRE_PROCESSED_CODE,
276 QUOTA_ID,
277 SRP_PLAN_ASSIGN_ID,
278 ROLE_ID,
279 COMP_GROUP_ID,
280 COMMISSION_AMOUNT,
281 EMPLOYEE_NUMBER,
282 REVERSAL_FLAG,
283 REVERSAL_HEADER_ID,
284 SALES_CHANNEL,
285 OBJECT_VERSION_NUMBER,
286 SPLIT_PCT,
287 SPLIT_STATUS,
288 ORG_ID)
289 SELECT ILV.SALESREP_ID,
290 CCLA.PROCESSED_DATE,
291 CCLA.PROCESSED_PERIOD_ID,
292 --CCLA.TRANSACTION_AMOUNT,
293 ILV.net_trx_amount,
294 CCLA.TRX_TYPE,
295 CCLA.REVENUE_CLASS_ID,
296 'UNLOADED',
297 CCLA.ATTRIBUTE_CATEGORY,
298 CCLA.ATTRIBUTE1,
299 CCLA.ATTRIBUTE2,
300 CCLA.ATTRIBUTE3,
301 CCLA.ATTRIBUTE4,
302 CCLA.ATTRIBUTE5,
303 CCLA.ATTRIBUTE6,
304 CCLA.ATTRIBUTE7,
305 CCLA.ATTRIBUTE8,
306 CCLA.ATTRIBUTE9,
307 CCLA.ATTRIBUTE10,
308 CCLA.ATTRIBUTE11,
309 CCLA.ATTRIBUTE12,
310 CCLA.ATTRIBUTE13,
311 CCLA.ATTRIBUTE14,
312 CCLA.ATTRIBUTE15,
313 CCLA.ATTRIBUTE16,
314 CCLA.ATTRIBUTE17,
315 CCLA.ATTRIBUTE18,
316 CCLA.ATTRIBUTE19,
317 CCLA.ATTRIBUTE20,
318 CCLA.ATTRIBUTE21,
319 CCLA.ATTRIBUTE22,
320 CCLA.ATTRIBUTE23,
321 CCLA.ATTRIBUTE24,
322 CCLA.ATTRIBUTE25,
323 CCLA.ATTRIBUTE26,
324 CCLA.ATTRIBUTE27,
325 CCLA.ATTRIBUTE28,
326 CCLA.ATTRIBUTE29,
327 CCLA.ATTRIBUTE30,
328 CCLA.ATTRIBUTE31,
329 CCLA.ATTRIBUTE32,
330 CCLA.ATTRIBUTE33,
331 CCLA.ATTRIBUTE34,
332 CCLA.ATTRIBUTE35,
333 CCLA.ATTRIBUTE36,
334 CCLA.ATTRIBUTE37,
335 CCLA.ATTRIBUTE38,
336 CCLA.ATTRIBUTE39,
337 CCLA.ATTRIBUTE40,
338 CCLA.ATTRIBUTE41,
339 CCLA.ATTRIBUTE42,
340 CCLA.ATTRIBUTE43,
341 CCLA.ATTRIBUTE44,
342 CCLA.ATTRIBUTE45,
343 CCLA.ATTRIBUTE46,
344 CCLA.ATTRIBUTE47,
345 CCLA.ATTRIBUTE48,
346 CCLA.ATTRIBUTE49,
347 CCLA.ATTRIBUTE50,
348 CCLA.ATTRIBUTE51,
349 CCLA.ATTRIBUTE52,
350 CCLA.ATTRIBUTE53,
351 CCLA.ATTRIBUTE54,
352 CCLA.ATTRIBUTE55,
353 CCLA.ATTRIBUTE56,
354 CCLA.ATTRIBUTE57,
355 CCLA.ATTRIBUTE58,
356 CCLA.ATTRIBUTE59,
357 CCLA.ATTRIBUTE60,
358 CCLA.ATTRIBUTE61,
359 CCLA.ATTRIBUTE62,
360 CCLA.ATTRIBUTE63,
361 CCLA.ATTRIBUTE64,
362 CCLA.ATTRIBUTE65,
363 CCLA.ATTRIBUTE66,
367 CCLA.ATTRIBUTE70,
364 CCLA.ATTRIBUTE67,
365 CCLA.ATTRIBUTE68,
366 CCLA.ATTRIBUTE69,
368 CCLA.ATTRIBUTE71,
369 CCLA.ATTRIBUTE72,
370 CCLA.ATTRIBUTE73,
371 CCLA.ATTRIBUTE74,
372 CCLA.ATTRIBUTE75,
373 CCLA.ATTRIBUTE76,
374 CCLA.ATTRIBUTE77,
375 CCLA.ATTRIBUTE78,
376 CCLA.ATTRIBUTE79,
377 CCLA.ATTRIBUTE80,
378 CCLA.ATTRIBUTE81,
379 CCLA.ATTRIBUTE82,
380 CCLA.ATTRIBUTE83,
381 CCLA.ATTRIBUTE84,
382 CCLA.ATTRIBUTE85,
383 CCLA.ATTRIBUTE86,
384 CCLA.ATTRIBUTE87,
385 CCLA.ATTRIBUTE88,
386 CCLA.ATTRIBUTE89,
387 CCLA.ATTRIBUTE90,
388 CCLA.ATTRIBUTE91,
389 CCLA.ATTRIBUTE92,
390 CCLA.ATTRIBUTE93,
391 CCLA.ATTRIBUTE94,
392 CCLA.ATTRIBUTE95,
393 CCLA.ATTRIBUTE96,
394 CCLA.ATTRIBUTE97,
395 CCLA.ATTRIBUTE98,
396 CCLA.ATTRIBUTE99,
397 CCLA.ATTRIBUTE100,
398 cn_comm_lines_api_s.NEXTVAL,
399 CCLA.CONC_BATCH_ID,
400 CCLA.PROCESS_BATCH_ID,
401 NULL,
402 CCLA.ROLLUP_DATE,
403 CCLA.SOURCE_DOC_ID,
404 CCLA.SOURCE_DOC_TYPE,
405 fnd_global.user_id,
406 Sysdate,
407 fnd_global.user_id,
408 Sysdate,
409 fnd_global.login_id,
410 CCLA.TRANSACTION_CURRENCY_CODE,
411 CCLA.EXCHANGE_RATE,
412 CCLA.ACCTD_TRANSACTION_AMOUNT,
413 CCLA.TRX_ID,
414 CCLA.TRX_LINE_ID,
415 CCLA.TRX_SALES_LINE_ID,
416 CCLA.QUANTITY,
417 CCLA.SOURCE_TRX_NUMBER,
418 CCLA.DISCOUNT_PERCENTAGE,
419 CCLA.MARGIN_PERCENTAGE,
420 CCLA.SOURCE_TRX_ID,
421 CCLA.SOURCE_TRX_LINE_ID,
422 CCLA.SOURCE_TRX_SALES_LINE_ID,
423 CCLA.NEGATED_FLAG,
424 CCLA.CUSTOMER_ID,
425 CCLA.INVENTORY_ITEM_ID,
426 CCLA.ORDER_NUMBER,
427 CCLA.BOOKED_DATE,
428 CCLA.INVOICE_NUMBER,
429 CCLA.INVOICE_DATE,
430 SYSDATE,
431 l_adjusted_by,
432 CCLA.REVENUE_TYPE,
433 CCLA.ADJUST_ROLLUP_FLAG,
434 'Created by TAE',
435 CCLA.ADJUST_STATUS,
436 CCLA.LINE_NUMBER,
437 CCLA.BILL_TO_ADDRESS_ID,
438 CCLA.SHIP_TO_ADDRESS_ID,
439 CCLA.BILL_TO_CONTACT_ID,
440 CCLA.SHIP_TO_CONTACT_ID,
441 CCLA.COMM_LINES_API_ID,
442 CCLA.PRE_DEFINED_RC_FLAG,
443 CCLA.ROLLUP_FLAG,
444 CCLA.FORECAST_ID,
445 CCLA.UPSIDE_QUANTITY,
446 CCLA.UPSIDE_AMOUNT,
447 CCLA.UOM_CODE,
448 CCLA.REASON_CODE,
449 CCLA.TYPE,
450 CCLA.PRE_PROCESSED_CODE,
451 CCLA.QUOTA_ID,
452 CCLA.SRP_PLAN_ASSIGN_ID,
453 --CR.ROLE_ID,
454 --JR.ROLE_ID, -- Added for 4438001
455 ILV.role_id,
456 CCLA.COMP_GROUP_ID,
457 CCLA.COMMISSION_AMOUNT,
458 ILV.EMPLOYEE_NUMBER,
459 CCLA.REVERSAL_FLAG,
460 CCLA.REVERSAL_HEADER_ID,
461 CCLA.SALES_CHANNEL,
462 CCLA.OBJECT_VERSION_NUMBER,
463 CCLA.SPLIT_PCT,
464 CCLA.SPLIT_STATUS,
465 ILV.ORG_ID
466 FROM (
467 -- Starting of ILV
468 SELECT org_id,
469 comm_lines_api_id,
470 resource_id,
471 role_id,
472 salesrep_id,
473 employee_number,
474 split_trx_amout - LAG(split_trx_amout, 1, 0)
475 OVER (PARTITION BY comm_lines_api_id ORDER BY rn) net_trx_amount
476 FROM (
477 SELECT a.org_id,
478 a.comm_lines_api_id,
479 b.resource_id,
480 JR.role_id,
481 CS.salesrep_id,
482 CS.employee_number,
483 ROUND(a.transaction_amount *
484 CUME_DIST() OVER (PARTITION BY a.comm_lines_api_id
485 ORDER BY b.resource_id), 2) split_trx_amout,
486 ROW_NUMBER() OVER (PARTITION BY a.comm_lines_api_id
487 ORDER BY b.resource_id) rn
488 FROM cn_comm_lines_api a,
489 JTF_TAE_1001_SC_WINNERS b,
490 jtf_rs_roles_vl JR,
491 cn_salesreps CS
492 WHERE a.comm_lines_api_id = b.trans_object_id
493 AND NVL(a.org_id, -777) = NVL(b.org_id, -777)
494 AND b.org_id=CS.org_id
495 AND JR.role_code = b.role
496 AND CS.resource_id = b.resource_id AND
497 a.org_id=p_org_id) result) ILV,
498 -- End of the ILV
499 cn_comm_lines_api CCLA
500 WHERE ILV.comm_lines_api_id = CCLA.comm_lines_api_id and
501 ILV.ORG_ID=CCLA.ORG_ID AND
502 CCLA.ORG_ID=p_org_id;
503
504 --dbms_output.put_line('After Insert Statement');
505 --dbms_output.put_line('SQL%ROWCOUNT :'||SQL%ROWCOUNT);
506
507 OPEN trx_records;
508 FETCH trx_records
509 BULK COLLECT INTO l_api_id, l_org_id, l_role, l_resource_id limit 1000;
510 CLOSE trx_records;
511
512 IF l_api_id.count > 0 THEN
513
514 FORALL j IN 1..l_api_id.COUNT
515
516 UPDATE cn_comm_lines_api api
517 SET load_status = 'OBSOLETE',
518 adjust_status = 'FROZEN',
519 adjust_date = sysdate,
520 adjusted_by = l_adjusted_by,
521 adjust_comments = 'Negated for TAE'
522 WHERE comm_lines_api_id = l_api_id(j)
523 AND NVL(org_id, -777) = NVL(l_org_id(j), -777);
524
525 END IF;
526
527 --dbms_output.put_line('After the UPDATE statement ');
528
529 EXCEPTION
530 WHEN FND_API.G_EXC_ERROR THEN
531 ROLLBACK TO process_trx_records;
532 x_return_status := FND_API.G_RET_STS_ERROR ;
533 FND_MSG_PUB.Count_And_Get(
534 p_count => x_msg_count ,
535 p_data => x_msg_data ,
536 p_encoded => FND_API.G_FALSE);
537
538 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
539 ROLLBACK TO process_trx_records;
540 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
541 FND_MSG_PUB.Count_And_Get(
542 p_count => x_msg_count ,
543 p_data => x_msg_data ,
544 p_encoded => FND_API.G_FALSE);
545
546 WHEN OTHERS THEN
547 ROLLBACK TO process_trx_records;
548 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
549 IF FND_MSG_PUB.Check_Msg_Level(
550 FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
551 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
552 END IF;
553 FND_MSG_PUB.Count_And_Get(
554 p_count => x_msg_count ,
555 p_data => x_msg_data ,
556 p_encoded => FND_API.G_FALSE);
557
558 END Process_Trx_Records;
559
560 END CN_PROCESS_TAE_TRX_PUB;