[Home] [Help]
PACKAGE BODY: APPS.CN_SRP_PAYEE_ASSIGNS_PVT
Source
1 PACKAGE BODY cn_srp_payee_assigns_pvt AS
2 /* $Header: cnvpspab.pls 120.7 2006/02/13 17:21:47 mblum noship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CN_SRP_PAYEE_ASSIGNS_PVT';
5 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cnvpspab.pls';
6 g_payee_role CONSTANT NUMBER := 54;
7
8 PROCEDURE delete_trigger
9 (old_salesrep_id NUMBER,
10 old_srp_quota_assign_id NUMBER,
11 old_start_date DATE,
12 old_end_date DATE,
13 old_org_id NUMBER) IS
14
15 x_salesrep_name cn_salesreps.name%TYPE;
16 BEGIN
17 IF fnd_profile.value('CN_MARK_EVENTS') = 'Y' THEN
18 SELECT name
19 INTO x_salesrep_name
20 FROM cn_salesreps
21 WHERE salesrep_id = old_salesrep_id
22 AND org_id = old_org_id;
23
24 cn_mark_events_pkg.mark_event_srp_payee_assign
25 ('CHANGE_SRP_QUOTA_POP',
26 x_salesrep_name,
27 old_srp_quota_assign_id,
28 null,
29 null,
30 old_start_date,
31 null,
32 old_end_date,
33 old_org_id);
34 END IF;
35 END delete_trigger;
36
37 PROCEDURE insert_trigger
38 (new_salesrep_id NUMBER,
39 new_srp_quota_assign_id NUMBER,
40 new_start_date DATE,
41 new_end_date DATE,
42 new_org_id NUMBER) IS
43
44 x_salesrep_name cn_salesreps.name%TYPE;
45 BEGIN
46 IF fnd_profile.value('CN_MARK_EVENTS') = 'Y' THEN
47 SELECT name
48 INTO x_salesrep_name
49 FROM cn_salesreps
50 WHERE salesrep_id = new_salesrep_id
51 AND org_id = new_org_id;
52
53 cn_mark_events_pkg.mark_event_srp_payee_assign
54 ('CHANGE_SRP_QUOTA_POP',
55 x_salesrep_name,
56 new_srp_quota_assign_id,
57 null,
58 null,
59 new_start_date,
60 null,
61 new_end_date,
62 new_org_id);
63 END IF;
64 END insert_trigger;
65
66 PROCEDURE update_trigger
67 (old_salesrep_id NUMBER,
68 old_payee_id NUMBER,
69 old_start_date DATE,
70 old_end_date DATE,
71 new_srp_quota_assign_id NUMBER,
72 new_salesrep_id NUMBER,
73 new_payee_id NUMBER,
74 new_start_date DATE,
75 new_end_date DATE,
76 new_org_id NUMBER) IS
77
78 x_salesrep_name cn_salesreps.name%TYPE;
79 BEGIN
80 IF fnd_profile.value('CN_MARK_EVENTS') = 'Y' THEN
81 SELECT name
82 INTO x_salesrep_name
83 FROM cn_salesreps
84 WHERE salesrep_id = new_salesrep_id
85 AND org_id = new_org_id;
86
87 IF (new_payee_id <> old_payee_id) THEN
88 cn_mark_events_pkg.mark_event_srp_payee_assign
89 ('CHANGE_SRP_QUOTA_POP',
90 x_salesrep_name,
91 new_srp_quota_assign_id,
92 null,
93 new_start_date,
94 old_start_date,
95 new_end_date,
96 old_end_date,
97 new_org_id);
98 END IF;
99
100 -- clku fix for bug 3234665
101
102 IF (new_start_date <> old_start_date) OR
103 Nvl(old_end_date,fnd_api.g_miss_date) <>
104 Nvl(new_end_date,fnd_api.g_miss_date)
105 THEN
106 cn_mark_events_pkg.mark_event_srp_payee_assign
107 ('CHANGE_SRP_QUOTA_PAYEE_DATE',
108 x_salesrep_name,
109 new_srp_quota_assign_id,
110 null,
111 new_start_date,
112 old_start_date,
113 new_end_date,
114 old_end_date,
115 new_org_id);
116 END IF;
117 END IF;
118 END update_trigger;
119
120
121 -- ---------------------------------------------------------------------------+
122 -- Procedure: Validate_Payee_Dates
123 -- Desc : Validating payee dates with plan elements date and with other
124 -- payees of the planelement
125 -- ---------------------------------------------------------------------------+
126 PROCEDURE Validate_Payee_Dates
127 (p_srp_payee_assign_id IN NUMBER, -- null means we're creating
128 p_srp_quota_assign_id IN NUMBER,
129 p_salesrep_id IN NUMBER,
130 p_org_id IN NUMBER,
131 p_start_date IN DATE,
132 p_end_date IN DATE,
133 p_quota_id IN NUMBER,
134 p_payee_id IN NUMBER,
135 x_loading_status IN OUT NOCOPY VARCHAR2
136 ) IS
137
138 l_count NUMBER;
139 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Payee_Dates';
140 l_end_of_time CONSTANT DATE := to_date('12/31/9999','MM/DD/YYYY');
141 BEGIN
142 -- null p_srp_payee_assign_id means we're creating new assignment
143
144 --check whether the payee start date and end date
145 --fall between the start and end date of plan element
146 SELECT count(1)
147 INTO l_count
148 FROM cn_quotas_all
149 WHERE quota_id = p_quota_id
150 AND p_start_date >= start_date
151 AND Nvl(p_end_date, l_end_of_time) <=
152 Nvl(end_date, l_end_of_time);
153
154 IF l_count = 0 THEN
155 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
156 THEN
157 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_DATE_INVALID');
158 FND_MSG_PUB.Add;
159 END IF;
160 x_loading_status := 'CN_PAYEE_DATE_INVALID';
161 RAISE FND_API.G_EXC_ERROR ;
162 END IF;
163
164 -- make sure payee assignment falls within a valid plan assignment
165 -- fix for bug 4507995
166 SELECT COUNT(1)
167 INTO l_count
168 FROM cn_srp_quota_assigns sqa, cn_srp_plan_assigns spa
169 WHERE sqa.srp_quota_assign_id = p_srp_quota_assign_id
170 AND sqa.srp_plan_assign_id = spa.srp_plan_assign_id
171 AND p_start_date >= start_date
172 AND Nvl(p_end_date, l_end_of_time) <=
173 Nvl(end_date, l_end_of_time);
174
175 IF l_count = 0 THEN
176 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
177 THEN
178 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_DATE_INVALID');
179 FND_MSG_PUB.Add;
180 END IF;
181 x_loading_status := 'CN_PAYEE_DATE_INVALID';
182 RAISE FND_API.G_EXC_ERROR ;
183 END IF;
184
185 --check whether the payee's date overlap with the dates of
186 --other payee who is already assigned
187 SELECT count(1)
188 INTO l_count
189 FROM cn_srp_payee_assigns_all
190 WHERE srp_quota_assign_id = p_srp_quota_assign_id
191 AND delete_flag = 'N'
192 AND srp_payee_assign_id <> Nvl(p_srp_payee_assign_id, -1)
193 AND Greatest(start_date, p_start_date) <=
194 Least(Nvl(end_date, l_end_of_time),
195 Nvl(p_end_date, l_end_of_time));
196
197 IF l_count > 0 then
198 --payee dates overlap
199 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
200 THEN
201 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_DATE_OVERLAP');
202 FND_MSG_PUB.Add;
203 END IF;
204 x_loading_status := 'CN_PAYEE_DATE_OVERLAP';
205 RAISE FND_API.G_EXC_ERROR ;
206 end if;
207
208 END Validate_Payee_Dates;
209
210 -- ---------------------------------------------------------------------------+
211 -- Procedure: Valid_Srp_Payee_Assigns
212 -- Desc : Calling the check required procedure to check the mandatory
213 -- values, get the respective ids for update/insert
214 -- return loading status should be same as passed loading status
215 -- others means failure
216 -- ---------------------------------------------------------------------------+
217 PROCEDURE Valid_Srp_Payee_Assigns
218 (
219 p_srp_payee_assign_id IN NUMBER,
220 p_srp_quota_assign_id IN NUMBER,
221 p_salesrep_id IN NUMBER,
222 p_org_id IN NUMBER,
223 p_payee_id IN NUMBER,
224 p_start_date IN DATE,
225 p_end_date IN DATE,
226 x_loading_status IN OUT NOCOPY VARCHAR2
227 ) IS
228
229 l_api_name CONSTANT VARCHAR2(30) := 'Valid_Srp_Payee_Assigns';
230 l_payee_assign_flag cn_quotas.payee_assign_flag%TYPE;
231 l_count NUMBER;
232 l_daycount NUMBER;
233 l_sd DATE;
234 l_ed DATE;
235 l_end_of_time CONSTANT DATE := to_date('12/31/9999','MM/DD/YYYY');
236 l_end_date DATE := nvl(p_end_date, l_end_of_time);
237 l_srp_name cn_salesreps.name%TYPE;
238 l_payee_name cn_salesreps.name%TYPE;
239 l_emp_num cn_salesreps.employee_number%TYPE;
240 l_pe_name cn_quotas.name%TYPE;
241 l_quota_id NUMBER;
242
243 CURSOR get_pgs is
244 SELECT start_date, nvl(end_date,l_end_of_time) end_date
245 FROM cn_srp_pay_groups_all
246 WHERE salesrep_id = p_payee_id
247 AND org_id = p_org_id;
248
249 CURSOR get_roles is
250 SELECT start_date, nvl(end_date,l_end_of_time) end_date
251 FROM cn_srp_roles
252 WHERE salesrep_id = p_payee_id
253 AND org_id = p_org_id
254 AND role_id = g_payee_role;
255
256 BEGIN
257 -- API body
258
259 --+
260 -- Check active Payee
261 --+
262 -- get name and number
263 SELECT name, employee_number
264 INTO l_payee_name, l_emp_num
265 FROM cn_salesreps
266 WHERE salesrep_id = p_payee_id
267 AND org_id = p_org_id;
268
269 SELECT COUNT(1)
270 INTO l_count
271 FROM cn_salesreps
272 WHERE salesrep_id = p_payee_id
273 AND org_id = p_org_id
274 AND start_date_active <= p_start_date
275 AND ((end_date_active IS NULL AND p_end_date IS NULL ) OR
276 (end_date_active IS NULL AND p_end_date IS NOT NULL ) OR
277 (end_date_active >= p_end_date));
278
279 IF l_count = 0 THEN
280 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
281 THEN
282 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_NOT_ACTIVE' );
283 FND_MESSAGE.SET_TOKEN('PAYEE_NAME', l_payee_name);
284 FND_MESSAGE.SET_TOKEN('PAYEE_NUMBER',l_emp_num);
285 FND_MSG_PUB.Add;
286 END IF;
287 x_loading_status := 'CN_PAYEE_NOT_ACTIVE';
288 RAISE FND_API.G_EXC_ERROR ;
289 END IF;
290
291 --+
292 -- Check salesrep and Payee are different, if not error
293 --+
294 IF p_payee_id = p_salesrep_id THEN
295
296 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
297 THEN
298 FND_MESSAGE.SET_NAME ('CN' , 'CN_SRP_PAYEE_CANNOT_BE_SAME' );
299 FND_MSG_PUB.Add;
300 END IF;
301 x_loading_status := 'CN_SRP_PAYEE_CANNOT_BE_SAME';
302 RAISE FND_API.G_EXC_ERROR ;
303 END IF;
304
305 --+
306 -- Validate End Date must be greater than Start Date
307 --+
308 IF p_end_date IS NOT NULL AND p_end_date < p_start_date THEN
309 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
310 THEN
311 FND_MESSAGE.SET_NAME ('CN' , 'CN_INVALID_DATE_RANGE');
312 FND_MSG_PUB.Add;
313 END IF;
314 x_loading_status := 'CN_INVALID_DATE_RANGE';
315 RAISE FND_API.G_EXC_ERROR ;
316 END IF;
317
318 -- Check wheather the payee can be assigned to this plan Element
319 SELECT payee_assign_flag, q.name, q.quota_id
320 INTO l_payee_assign_flag, l_pe_name, l_quota_id
321 FROM cn_quotas_all q, cn_srp_quota_assigns_all sqa
322 WHERE sqa.srp_quota_assign_id = p_srp_quota_assign_id
323 AND q.quota_id = sqa.quota_id;
324
325 IF Nvl(l_payee_assign_flag,'N') <> 'Y' THEN
326 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
327 THEN
328 -- get salesrep name
329 SELECT name
330 INTO l_srp_name
331 FROM cn_salesreps
332 WHERE salesrep_id = p_salesrep_id
333 AND org_id = p_org_id;
334 FND_MESSAGE.SET_NAME ('CN' , 'CN_CANNOT_HAVE_PAYEE');
335 FND_MESSAGE.SET_TOKEN('PLAN_NAME', l_pe_name);
336 FND_MESSAGE.SET_TOKEN('SALESREP_NAME', l_srp_name);
337 FND_MESSAGE.SET_TOKEN('PAYEE_NAME', l_payee_name);
338 FND_MSG_PUB.Add;
339 END IF;
340 x_loading_status := 'CN_CANNOT_HAVE_PAYEE';
341 RAISE FND_API.G_EXC_ERROR ;
342 END IF;
343
344 -- ** bug 3143462
345 -- check to make sure pay group is assigned over whole interval
346 l_daycount := 0;
347 for pg in get_pgs loop
348 l_sd := greatest(p_start_date, pg.start_date);
349 l_ed := least(l_end_date, pg.end_date);
350 if l_ed >= l_sd then
351 l_daycount := l_daycount + (l_ed - l_sd) + 1;
352 end if;
353 end loop;
354
355 if l_daycount <> (l_end_date - p_start_date + 1) then
356 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
357 THEN
358 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_PG_NOT_FOUND');
359 FND_MSG_PUB.Add;
360 END IF;
361 x_loading_status := 'CN_PAYEE_PG_NOT_FOUND';
362 RAISE FND_API.G_EXC_ERROR ;
363 end if;
364
365
366 -- make sure payee isn't assigned longer than the payee has payee role
367 l_daycount := 0;
368 for role in get_roles loop
369 l_sd := greatest(p_start_date, role.start_date);
370 l_ed := least(l_end_date, role.end_date);
371 if l_ed >= l_sd then
372 l_daycount := l_daycount + (l_ed - l_sd) + 1;
373 end if;
374 end loop;
375
376 if l_daycount <> (l_end_date - p_start_date + 1) then
377 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
378 THEN
379 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_ROLE_NOT_FOUND');
383 RAISE FND_API.G_EXC_ERROR ;
380 FND_MSG_PUB.Add;
381 END IF;
382 x_loading_status := 'CN_PAYEE_ROLE_NOT_FOUND';
384 end if;
385
386 --+
387 -- Start of Payee Assigns Check
388 -- CHK validity of dates assigned to payee
389 --+
390 Validate_Payee_Dates(p_srp_payee_assign_id => p_srp_payee_assign_id,
391 p_srp_quota_assign_id => p_srp_quota_assign_id,
392 p_salesrep_id => p_salesrep_id,
393 p_org_id => p_org_id,
394 p_start_date => p_start_date,
395 p_end_date => p_end_date,
396 p_payee_id => p_payee_id,
397 p_quota_id => l_quota_id,
398 x_loading_status => x_loading_status
399 );
400
401 --+
402 -- End of API body.
403 --+
404 END Valid_Srp_Payee_Assigns;
405
406 -- --------------------------------------------------------------------------+
407 -- PROCEDURE: CREATE_UPD_NOTE
408 -- --------------------------------------------------------------------------+
409 PROCEDURE get_note
410 (p_field IN VARCHAR2,
411 p_old_value IN VARCHAR2,
412 p_new_value IN VARCHAR2,
413 x_msg IN OUT nocopy VARCHAR2) IS
414
415 l_note_msg VARCHAR2(240);
416 BEGIN
417 fnd_message.set_name('CN', 'CN_PAYEE_UPD_NOTE');
418 fnd_message.set_token('FIELD', cn_api.get_lkup_meaning(p_field, 'CN_NOTE_FIELDS'));
419 fnd_message.set_token('OLD', p_old_value);
420 fnd_message.set_token('NEW', p_new_value);
421 l_note_msg := fnd_message.get;
422
423 IF x_msg IS NOT NULL THEN
424 x_msg := x_msg || fnd_global.local_chr(10);
425 END IF;
426 x_msg := x_msg || l_note_msg;
427
428 END get_note;
429
430 PROCEDURE raise_note
431 (p_srp_payee_assign_id IN NUMBER,
432 p_msg IN VARCHAR2) IS
433
434 x_note_id NUMBER;
435 x_msg_count NUMBER;
436 x_msg_data VARCHAR2(240);
437 x_return_status VARCHAR2(1);
438
439 BEGIN
440 jtf_notes_pub.create_note
441 ( p_api_version => 1.0,
442 x_return_status => x_return_status,
443 x_msg_count => x_msg_count,
444 x_msg_data => x_msg_data,
445 p_source_object_id => p_srp_payee_assign_id,
446 p_source_object_code => 'CN_SRP_PAYEE_ASSIGNS',
447 p_notes => p_msg,
448 p_notes_detail => p_msg,
449 p_note_type => 'CN_SYSGEN', -- for system generated
450 x_jtf_note_id => x_note_id -- returned
451 );
452 END raise_note;
453
454 -- --------------------------------------------------------------------------+
455 -- PROCEDURE: CREATE_SRP_PAYEE_ASSIGNS
456 -- --------------------------------------------------------------------------+
457 PROCEDURE Create_Srp_Payee_Assigns
458 ( p_api_version IN NUMBER,
459 p_init_msg_list IN VARCHAR2,
460 p_commit IN VARCHAR2,
461 p_validation_level IN NUMBER,
462 x_return_status OUT NOCOPY VARCHAR2,
463 x_msg_count OUT NOCOPY NUMBER,
464 x_msg_data OUT NOCOPY VARCHAR2,
465 p_srp_quota_assign_id IN NUMBER,
466 p_payee_id IN NUMBER,
467 p_start_date IN DATE,
468 p_end_date IN DATE,
469 x_srp_payee_assign_id OUT NOCOPY NUMBER,
470 x_object_version_number OUT NOCOPY NUMBER,
471 x_loading_status OUT NOCOPY VARCHAR2
472 ) IS
473
474 l_api_name CONSTANT VARCHAR2(30)
475 := 'Create_Srp_Payee_Assgins';
476 l_api_version CONSTANT NUMBER := 1.0;
477
478 l_quota_id NUMBER;
479 l_comp_plan_id NUMBER;
480 l_salesrep_id NUMBER;
481 l_org_id NUMBER;
482 l_count NUMBER;
483 l_payee_name cn_salesreps.name%TYPE;
484 l_note_msg VARCHAR2(240);
485 l_note_id NUMBER;
486
487 BEGIN
488 --+
489 -- Standard Start of API savepoint
490 --+
491 SAVEPOINT Create_Srp_Payee_Assigns;
492 --+
493 -- Standard call to check for call compatibility.
494 --+
495 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
496 p_api_version ,
497 l_api_name ,
498 G_PKG_NAME )
499 THEN
500 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
501 END IF;
502 --+
503 -- Initialize message list if p_init_msg_list is set to TRUE.
504 IF FND_API.to_Boolean( p_init_msg_list ) THEN
505 FND_MSG_PUB.initialize;
506 END IF;
507 --+
508 -- Initialize API return status to success
509 --+
510 x_return_status := FND_API.G_RET_STS_SUCCESS;
511 x_loading_status := 'CN_INSERTED';
512
513 --+
514 -- Start API body
515 --+
516
517 -- get properties from given srp_quota_assign_id
518 SELECT spa.salesrep_id, sqa.org_id, sqa.quota_id, spa.comp_plan_id
519 INTO l_salesrep_id, l_org_id, l_quota_id, l_comp_plan_id
520 FROM cn_srp_quota_assigns_all sqa, cn_srp_plan_assigns_all spa
521 WHERE srp_quota_assign_id = p_srp_quota_assign_id
522 AND sqa.srp_plan_assign_id = spa.srp_plan_assign_id;
523
524 Valid_Srp_Payee_Assigns
528 p_org_id => l_org_id,
525 (p_srp_payee_assign_id => NULL,
526 p_srp_quota_assign_id => p_srp_quota_assign_id,
527 p_salesrep_id => l_salesrep_id,
529 p_payee_id => p_payee_id,
530 p_start_date => p_start_date,
531 p_end_date => p_end_date,
532 x_loading_status => x_loading_status
533 );
534
535 --+
536 -- Call the Table Handler
537 --+
538 cn_srp_payee_assigns_pkg.insert_record
539 ( x_srp_payee_assign_id => x_srp_payee_assign_id
540 ,p_srp_quota_assign_id => p_srp_quota_assign_id
541 ,p_org_id => l_org_id
542 ,p_payee_id => p_payee_id
543 ,p_quota_id => l_quota_id
544 ,p_salesrep_id => l_salesrep_id
545 ,p_start_date => p_start_date
546 ,p_end_date => p_end_date
547 ,p_last_update_date => sysdate
548 ,p_last_updated_by => fnd_global.user_id
549 ,p_creation_date => sysdate
550 ,p_created_by => fnd_global.user_id
551 ,p_last_update_login => fnd_global.login_id);
552
553 insert_trigger
554 (new_salesrep_id => l_salesrep_id,
555 new_srp_quota_assign_id => p_srp_quota_assign_id,
556 new_start_date => p_start_date,
557 new_end_date => p_end_date,
558 new_org_id => l_org_id);
559
560 cn_srp_periods_pvt.create_srp_periods_per_quota
561 (p_api_version => 1.0,
562 x_return_status => x_return_status,
563 p_salesrep_id => p_payee_id,
564 p_role_id => g_payee_role,
565 p_quota_id => l_quota_id,
566 p_comp_plan_id => l_comp_plan_id,
567 p_start_date => p_start_date,
568 p_end_date => p_end_date,
569 x_msg_count => x_msg_count,
570 x_msg_data => x_msg_data,
571 x_loading_status => x_loading_status
572 );
573
574 if x_return_status <> FND_API.G_RET_STS_SUCCESS then
575 RAISE FND_API.G_EXC_ERROR;
576 end if;
577
578 -- add note for srp_quota_assigns
579 SELECT name INTO l_payee_name
580 FROM cn_salesreps
581 WHERE salesrep_id = p_payee_id
582 AND org_id = l_org_id;
583
584 fnd_message.set_name('CN', 'CN_PAYEE_CRE_NOTE');
585 fnd_message.set_token('PAYEE', l_payee_name);
586 fnd_message.set_token('START_DATE', p_start_date);
587 fnd_message.set_token('END_DATE', p_end_date);
588 l_note_msg := fnd_message.get;
589
590 jtf_notes_pub.create_note
591 ( p_api_version => 1.0,
592 x_return_status => x_return_status,
593 x_msg_count => x_msg_count,
594 x_msg_data => x_msg_data,
595 p_source_object_id => p_srp_quota_assign_id,
596 p_source_object_code => 'CN_SRP_QUOTA_ASSIGNS',
597 p_notes => l_note_msg,
598 p_notes_detail => l_note_msg,
599 p_note_type => 'CN_SYSGEN', -- for system generated
600 x_jtf_note_id => l_note_id -- returned
601 );
602
603 -- get new version number
604 SELECT object_version_number
605 INTO x_object_version_number
606 FROM cn_srp_payee_assigns_all
607 WHERE srp_payee_assign_id = x_srp_payee_assign_id;
608
609 --+
610 -- Issue the Commit and recreate the Save Point.
611 --+
612 IF FND_API.To_Boolean( p_commit ) THEN
613 COMMIT WORK;
614 END IF;
615 --+
616 -- Standard call to get message count and if count is 1, get message info.
617 --+
618 FND_MSG_PUB.Count_And_Get
619 (
620 p_count => x_msg_count ,
621 p_data => x_msg_data ,
622 p_encoded => FND_API.G_FALSE
623 );
624 EXCEPTION
625
626 WHEN FND_API.G_EXC_ERROR THEN
627 ROLLBACK TO create_srp_payee_assigns;
628 x_return_status := FND_API.G_RET_STS_ERROR ;
629 FND_MSG_PUB.Count_And_Get
630 (
631 p_count => x_msg_count ,
632 p_data => x_msg_data ,
633 p_encoded => FND_API.G_FALSE
634 );
635 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
636 ROLLBACK TO create_srp_payee_assigns;
637 x_loading_status := 'UNEXPECTED_ERR';
638 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
639 FND_MSG_PUB.Count_And_Get
640 (
641 p_count => x_msg_count ,
642 p_data => x_msg_data ,
643 p_encoded => FND_API.G_FALSE
644 );
645 WHEN OTHERS THEN
646 ROLLBACK TO Create_srp_payee_assigns;
647 x_loading_status := 'UNEXPECTED_ERR';
648 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
649 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
650 THEN
651 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
652 END IF;
653 FND_MSG_PUB.Count_And_Get
654 (
655 p_count => x_msg_count ,
656 p_data => x_msg_data ,
657 p_encoded => FND_API.G_FALSE
658 );
659 END create_srp_payee_assigns;
660
661
662 -- --------------------------------------------------------------------------+
663 -- PROCEDURE: UPDATE_SRP_PAYEE_ASSIGNS
667 (
664 -- Update is allowed in only start date, end date
665 -- --------------------------------------------------------------------------+
666 PROCEDURE Update_Srp_Payee_Assigns
668 p_api_version IN NUMBER,
669 p_init_msg_list IN VARCHAR2,
670 p_commit IN VARCHAR2,
671 p_validation_level IN NUMBER,
672 x_return_status OUT NOCOPY VARCHAR2,
673 x_msg_count OUT NOCOPY NUMBER,
674 x_msg_data OUT NOCOPY VARCHAR2,
675 p_srp_payee_assign_id IN NUMBER,
676 p_payee_id IN NUMBER,
677 p_start_date IN DATE,
678 p_end_date IN DATE,
679 p_object_version_number IN OUT NOCOPY NUMBER,
680 x_loading_status OUT NOCOPY VARCHAR2
681 ) IS
682
683 l_api_name CONSTANT VARCHAR2(30)
684 := 'Update_Srp_Payee_Assigns';
685 l_api_version CONSTANT NUMBER := 1.0;
686 l_comp_plan_id NUMBER;
687 l_end_of_time date := to_date('12/31/9999','MM/DD/YYYY');
688 l_payee_name cn_salesreps.name%TYPE;
689 l_old_payee_name cn_salesreps.name%TYPE;
690
691 CURSOR get_old_payee_rec(l_srp_payee_asgn_id number) IS
692 SELECT srp_quota_assign_id, payee_id, start_date, end_date,
693 quota_id, salesrep_id, org_id, object_version_number
694 FROM cn_srp_payee_assigns_all
695 WHERE srp_payee_assign_id = l_srp_payee_asgn_id;
696
697 l_old_rec get_old_payee_rec%ROWTYPE;
698
699 cursor get_worksheets(l_srp_payee_assign_id number) IS
700 SELECT ps.start_date, ps.end_date
701 FROM cn_payment_worksheets_all w,
702 cn_srp_payee_assigns_all spa,
703 cn_payruns_all p,
704 cn_period_statuses_all ps
705 WHERE (w.salesrep_id = spa.payee_id or
706 w.salesrep_id = spa.salesrep_id)
707 AND w.quota_id is NULL
708 AND w.org_id = spa.org_id
709 AND p.payrun_id = w.payrun_id
710 AND p.org_id = w.org_id
711 AND p.pay_period_id = ps.period_id
712 AND p.org_id = ps.org_id
713 AND spa.srp_payee_assign_id = l_srp_payee_assign_id
714 AND spa.org_id = l_old_rec.org_id;
715
716 l_date_range_action_tbl cn_api.date_range_action_tbl_type;
717 l_count number;
718
719 l_key VARCHAR2(80);
720 l_list wf_parameter_list_t;
721 l_event_name VARCHAR2(80);
722 l_notemsg VARCHAR2(2000);
723
724 BEGIN
725 -- Standard Start of API savepoint
726 SAVEPOINT update_srp_payee_assigns;
727
728 -- Standard call to check for call compatibility.
729 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
730 p_api_version ,
731 l_api_name ,
732 G_PKG_NAME )
733 THEN
734 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
735 END IF;
736
737 -- Initialize message list if p_init_msg_list is set to TRUE.
738 IF FND_API.to_Boolean( p_init_msg_list ) THEN
739 FND_MSG_PUB.initialize;
740 END IF;
741
742 -- Initialize API return status to success
743
744 x_return_status := FND_API.G_RET_STS_SUCCESS;
745 x_loading_status := 'CN_UPDATED';
746
747 -- API body
748 OPEN get_old_payee_rec(p_srp_payee_assign_id);
749 FETCH get_old_payee_rec INTO l_old_rec;
750 CLOSE get_old_payee_rec;
751
752 IF l_old_rec.object_version_number <> p_object_version_number THEN
753 --
754 --Raise an error if the object_version numbers don't match
755 --
756 IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
757 THEN
758 fnd_message.set_name('CN', 'CN_RECORD_UPDATED');
759 fnd_msg_pub.add;
760 END IF;
761 x_loading_status := 'CN_RECORD_UPDATED';
762 RAISE FND_API.G_EXC_ERROR;
763 END IF;
764
765 -- get properties from given srp_quota_assign_id
766 SELECT spa.comp_plan_id
767 INTO l_comp_plan_id
768 FROM cn_srp_quota_assigns_all sqa, cn_srp_plan_assigns_all spa
769 WHERE sqa.srp_quota_assign_id = l_old_rec.srp_quota_assign_id
770 AND sqa.srp_plan_assign_id = spa.srp_plan_assign_id;
771
772 Valid_Srp_Payee_Assigns
773 (p_srp_payee_assign_id => p_srp_payee_assign_id,
774 p_srp_quota_assign_id => l_old_rec.srp_quota_assign_id,
775 p_salesrep_id => l_old_rec.salesrep_id,
776 p_org_id => l_old_rec.org_id,
777 p_payee_id => p_payee_id,
778 p_start_date => p_start_date,
779 p_end_date => p_end_date,
780 x_loading_status => x_loading_status
781 );
782
783 x_loading_status := 'CN_UPDATED';
784
785 -- see if date range is shrinking in any way. if so, delete and
786 -- recreate the payee
787 IF (p_start_date > l_old_rec.start_date OR
788 Nvl(p_end_date, l_end_of_time) <
789 Nvl(l_old_rec.end_date, l_end_of_time))
790 THEN
791 -- make sure no worksheets in any part of the shrunk range
792 -- this is for bug fix 3390199
793 cn_api.get_date_range_diff_action
794 (start_date_new => p_start_date
795 ,end_date_new => Nvl(p_end_date, l_end_of_time)
796 ,start_date_old => l_old_rec.start_date
800 if l_date_range_action_tbl(d).action_flag = 'D' THEN
797 ,end_date_old => Nvl(l_old_rec.end_date, l_end_of_time)
798 ,x_date_range_action_tbl => l_date_range_action_tbl );
799 FOR d IN 1..l_date_range_action_tbl.COUNT LOOP
801 for w in get_worksheets(p_srp_payee_assign_id) loop
802 IF CN_API.date_range_overlap
803 (l_date_range_action_tbl(d).start_date,
804 l_date_range_action_tbl(d).end_date,
805 w.start_date,
806 w.end_date) = true then
807 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
808 THEN
809 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_HAS_WKSHT');
810 FND_MSG_PUB.Add;
811 END IF;
812 x_loading_status := 'CN_PAYEE_HAS_WKSHT';
813 RAISE FND_API.G_EXC_ERROR ;
814 END IF; -- ck date range overlap
815 end loop; -- get_worksheets
816 end if; -- if action = D
817 end loop; -- date range loop
818 END IF;
819
820 -- update
821 cn_srp_payee_assigns_pkg.update_record
822 (p_srp_payee_assign_id => p_srp_payee_assign_id,
823 p_payee_id => p_payee_id,
824 p_start_date => p_start_date,
825 p_end_date => p_end_date,
826 p_last_update_date => Sysdate,
827 p_last_updated_by => fnd_global.user_id,
828 p_last_update_login => fnd_global.login_id);
829
830 -- call triggers
831 update_trigger
832 (old_salesrep_id => l_old_rec.salesrep_id,
833 old_payee_id => l_old_rec.payee_id,
834 old_start_date => l_old_rec.start_date,
835 old_end_date => l_old_rec.end_date,
836 new_srp_quota_assign_id => l_old_rec.srp_quota_assign_id,
837 new_salesrep_id => l_old_rec.salesrep_id,
838 new_payee_id => p_payee_id,
839 new_start_date => p_start_date,
840 new_end_date => p_end_date,
841 new_org_id => l_old_rec.org_id);
842
843 -- raise business event
844 l_event_name := 'oracle.apps.cn.resource.PlanAssign.UpdatePayee';
845 l_key := l_event_name || '-' || p_srp_payee_assign_id || '-' ||
846 p_object_version_number;
847
848 wf_event.AddParameterToList('SRP_PAYEE_ASSIGN_ID',
849 p_srp_payee_assign_id,l_list);
850 wf_event.AddParameterToList('PAYEE_ID',p_payee_id,l_list);
851 wf_event.AddParameterToList('START_DATE',p_start_date,l_list);
852 wf_event.AddParameterToList('END_DATE',p_end_date,l_list);
853
854 -- Raise Event
855 wf_event.raise
856 (p_event_name => l_event_name,
857 p_event_key => l_key,
858 p_parameters => l_list);
859
860 l_list.DELETE;
861
862 -- create srp periods as necessary
863 cn_srp_periods_pvt.create_srp_periods_per_quota
864 (
865 p_api_version => 1.0,
866 x_return_status => x_return_status,
867 p_salesrep_id => p_payee_id,
868 p_role_id => g_payee_role,
869 p_quota_id => l_old_rec.quota_id,
870 p_comp_plan_id => l_comp_plan_id,
871 p_start_date => p_start_date,
872 p_end_date => p_end_date,
873 x_msg_count => x_msg_count,
874 x_msg_data => x_msg_data,
875 x_loading_status => x_loading_status
876 );
877 if x_return_status <> FND_API.G_RET_STS_SUCCESS then
878 RAISE FND_API.G_EXC_ERROR;
879 end if;
880
881 -- add note for srp_payee_assigns
882 l_notemsg := NULL;
883 IF (l_old_rec.payee_id <> p_payee_id) THEN
884 SELECT name INTO l_old_payee_name
885 FROM cn_salesreps
886 WHERE salesrep_id = l_old_rec.payee_id
887 AND org_id = l_old_rec.org_id;
888 SELECT name INTO l_payee_name
889 FROM cn_salesreps
890 WHERE salesrep_id = p_payee_id
891 AND org_id = l_old_rec.org_id;
892
893 get_note('PAYEE', l_old_payee_name, l_payee_name, l_notemsg);
894 END IF;
895 IF (l_old_rec.start_date <> p_start_date) THEN
896 get_note('START_DATE', l_old_rec.start_date, p_start_date, l_notemsg);
897 END IF;
898 IF (Nvl(l_old_rec.end_date,fnd_api.g_miss_date) <>
899 Nvl(p_end_date, fnd_api.g_miss_date)) THEN
900 get_note('END_DATE', l_old_rec.end_date, p_end_date, l_notemsg);
901 END IF;
902
903 IF (l_notemsg IS NOT NULL) THEN
904 raise_note(p_srp_payee_assign_id, l_notemsg);
905 END IF;
906
907 -- get new version number
908 SELECT object_version_number
909 INTO p_object_version_number
910 FROM cn_srp_payee_assigns_all
911 WHERE srp_payee_assign_id = p_srp_payee_assign_id;
912
913 --+
914 -- Issue the Commit and recreate the Save Point.
915 --+
916 IF FND_API.To_Boolean( p_commit ) THEN
917 COMMIT WORK;
918 END IF;
919 --+
920 -- Standard call to get message count and if count is 1, get message info.
921 --+
922 FND_MSG_PUB.Count_And_Get
923 (
924 p_count => x_msg_count ,
925 p_data => x_msg_data ,
926 p_encoded => FND_API.G_FALSE
927 );
928 EXCEPTION
929 WHEN FND_API.G_EXC_ERROR THEN
930 ROLLBACK TO update_srp_payee_assigns;
931 x_return_status := FND_API.G_RET_STS_ERROR ;
932 FND_MSG_PUB.Count_And_Get
933 (
937 );
934 p_count => x_msg_count ,
935 p_data => x_msg_data ,
936 p_encoded => FND_API.G_FALSE
938 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
939 ROLLBACK TO update_srp_payee_assigns;
940 x_loading_status := 'UNEXPECTED_ERR';
941 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
942 FND_MSG_PUB.Count_And_Get
943 (
944 p_count => x_msg_count ,
945 p_data => x_msg_data ,
946 p_encoded => FND_API.G_FALSE
947 );
948 WHEN OTHERS THEN
949 ROLLBACK TO Update_srp_payee_assigns;
950 x_loading_status := 'UNEXPECTED_ERR';
951 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
952 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
953 THEN
954 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
955 END IF;
956 FND_MSG_PUB.Count_And_Get
957 (
958 p_count => x_msg_count ,
959 p_data => x_msg_data ,
960 p_encoded => FND_API.G_FALSE
961 );
962
963 END Update_Srp_Payee_Assigns ;
964
965 -- --------------------------------------------------------------------------+
966 -- Procedure: Valid_Delete_Srp_Payee_Assigns
967 -- Descr: validate Delete srp Payee Assigns
968 -- --------------------------------------------------------------------------+
969 PROCEDURE Valid_Delete_Srp_Payee_Assigns
970 ( p_init_msg_list IN VARCHAR2,
971 x_return_status OUT NOCOPY VARCHAR2,
972 x_msg_count OUT NOCOPY NUMBER,
973 x_msg_data OUT NOCOPY VARCHAR2,
974 p_srp_payee_assign_id IN NUMBER,
975 x_loading_status OUT NOCOPY VARCHAR2) IS
976
977 l_api_name CONSTANT VARCHAR2(30) := 'Valid_Delete_Srp_Payee_Assigns';
978 l_start_date DATE;
979 l_end_date DATE;
980 l_org_id NUMBER;
981
982 CURSOR get_worksheets IS
983 select ps.start_date, ps.end_date
984 from cn_payment_worksheets_all w,
985 cn_srp_payee_assigns_all spa,
986 cn_payruns_all p,
987 cn_period_statuses_all ps
988 where (w.salesrep_id = spa.payee_id or
989 w.salesrep_id = spa.salesrep_id)
990 AND w.org_id = spa.org_id
991 AND w.quota_id is null
992 AND p.payrun_id = w.payrun_id
993 AND p.pay_period_id = ps.period_id
994 AND p.org_id = ps.org_id
995 AND spa.srp_payee_assign_id = p_srp_payee_assign_id
996 AND spa.org_id = l_org_id;
997
998 BEGIN
999 -- Initialize message list if p_init_msg_list is set to TRUE.
1000 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1001 FND_MSG_PUB.initialize;
1002 END IF;
1003
1004 -- Initialize API return status to success
1005 x_return_status := FND_API.G_RET_STS_SUCCESS;
1006 x_loading_status := 'CN_DELETED';
1007
1008 SELECT start_date, end_date, org_id
1009 INTO l_start_date, l_end_date, l_org_id
1010 FROM cn_srp_payee_assigns_all
1011 WHERE srp_payee_assign_id = p_srp_payee_assign_id;
1012
1013 -- check payee has no worksheet for bug 3390199
1014 FOR w IN get_worksheets loop
1015 IF CN_API.date_range_overlap
1016 (l_start_date,
1017 l_end_date,
1018 w.start_date,
1019 w.end_date) = true THEN
1020 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1021 THEN
1022 FND_MESSAGE.SET_NAME ('CN' , 'CN_PAYEE_HAS_WKSHT');
1023 FND_MSG_PUB.Add;
1024 END IF;
1025 x_loading_status := 'CN_PAYEE_HAS_WKSHT';
1026 RAISE FND_API.G_EXC_ERROR ;
1027 END IF;
1028 END LOOP;
1029
1030 EXCEPTION
1031 WHEN FND_API.G_EXC_ERROR THEN
1032 x_return_status := FND_API.G_RET_STS_ERROR ;
1033 FND_MSG_PUB.Count_And_Get
1034 (
1035 p_count => x_msg_count ,
1036 p_data => x_msg_data ,
1037 p_encoded => FND_API.G_FALSE
1038 );
1039 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1040 x_loading_status := 'UNEXPECTED_ERR';
1041 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1042 FND_MSG_PUB.Count_And_Get
1043 (
1044 p_count => x_msg_count ,
1045 p_data => x_msg_data ,
1046 p_encoded => FND_API.G_FALSE
1047 );
1048 WHEN OTHERS THEN
1049 x_loading_status := 'UNEXPECTED_ERR';
1050 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1051 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1052 THEN
1053 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
1054 END IF;
1055 FND_MSG_PUB.Count_And_Get
1056 (
1057 p_count => x_msg_count ,
1058 p_data => x_msg_data ,
1059 p_encoded => FND_API.G_FALSE
1060 );
1061
1062 END valid_delete_srp_payee_assigns;
1063
1064
1065 -- --------------------------------------------------------------------------+
1066 -- Procedure: Delete_srp_payee_assigns
1067 -- Descr: Delete srp Payee Assigns
1068 -- --------------------------------------------------------------------------+
1069 PROCEDURE Delete_Srp_Payee_Assigns
1070 ( p_api_version IN NUMBER,
1071 p_init_msg_list IN VARCHAR2,
1072 p_commit IN VARCHAR2,
1073 p_validation_level IN NUMBER,
1074 x_return_status OUT NOCOPY VARCHAR2,
1075 x_msg_count OUT NOCOPY NUMBER,
1079 ) IS
1076 x_msg_data OUT NOCOPY VARCHAR2,
1077 p_srp_payee_assign_id IN NUMBER,
1078 x_loading_status OUT NOCOPY VARCHAR2
1080
1081
1082 l_api_name CONSTANT VARCHAR2(30)
1083 := 'Delete_Srp_Payee_Assigns';
1084 l_api_version CONSTANT NUMBER := 1.0;
1085
1086 l_start_date DATE;
1087 l_end_date DATE;
1088 l_salesrep_id NUMBER;
1089 l_org_id NUMBER;
1090 l_srp_quota_assign_id NUMBER;
1091 l_note_id NUMBER;
1092 l_note_msg VARCHAR2(240);
1093 l_payee_id NUMBER;
1094 l_payee_name cn_salesreps.name%TYPE;
1095
1096 BEGIN
1097 -- Standard Start of API savepoint
1098 SAVEPOINT delete_srp_payee_assigns;
1099
1100 -- Standard call to check for call compatibility.
1101 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
1102 p_api_version ,
1103 l_api_name ,
1104 G_PKG_NAME )
1105 THEN
1106 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1107 END IF;
1108
1109 -- Initialize message list if p_init_msg_list is set to TRUE.
1110 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1111 FND_MSG_PUB.initialize;
1112 END IF;
1113
1114 -- Initialize API return status to success
1115 x_return_status := FND_API.G_RET_STS_SUCCESS;
1116 x_loading_status := 'CN_DELETED';
1117
1118 --+
1119 -- API body
1120 -- +
1121
1122 -- validate delete
1123 valid_delete_srp_payee_assigns
1124 (p_init_msg_list => p_init_msg_list,
1125 x_return_status => x_return_status,
1126 x_msg_count => x_msg_count,
1127 x_msg_data => x_msg_data,
1128 p_srp_payee_assign_id => p_srp_payee_assign_id,
1129 x_loading_status => x_loading_status);
1130
1131 IF x_return_status <> fnd_api.g_ret_sts_success THEN
1132 RAISE fnd_api.g_exc_error;
1133 END IF;
1134
1135 -- get info for trigger
1136 SELECT salesrep_id, srp_quota_assign_id, start_date, end_date, org_id, payee_id
1137 INTO l_salesrep_id, l_srp_quota_assign_id, l_start_date, l_end_date, l_org_id, l_payee_id
1138 FROM cn_srp_payee_assigns_all
1139 WHERE srp_payee_assign_id = p_srp_payee_assign_id;
1140
1141 cn_srp_payee_assigns_pkg.delete_record
1142 (p_srp_payee_assign_id => p_srp_payee_assign_id);
1143
1144 delete_trigger
1145 (old_salesrep_id => l_salesrep_id,
1146 old_srp_quota_assign_id => l_srp_quota_assign_id,
1147 old_start_date => l_start_date,
1148 old_end_date => l_end_date,
1149 old_org_id => l_org_id);
1150
1151 -- add note for srp_quota_assigns
1152 SELECT name INTO l_payee_name
1153 FROM cn_salesreps
1154 WHERE salesrep_id = l_payee_id
1155 AND org_id = l_org_id;
1156
1157 fnd_message.set_name('CN', 'CN_PAYEE_DEL_NOTE');
1158 fnd_message.set_token('PAYEE', l_payee_name);
1159 fnd_message.set_token('START_DATE', l_start_date);
1160 fnd_message.set_token('END_DATE', l_end_date);
1161 l_note_msg := fnd_message.get;
1162
1163 jtf_notes_pub.create_note
1164 ( p_api_version => 1.0,
1165 x_return_status => x_return_status,
1166 x_msg_count => x_msg_count,
1167 x_msg_data => x_msg_data,
1168 p_source_object_id => l_srp_quota_assign_id,
1169 p_source_object_code => 'CN_SRP_QUOTA_ASSIGNS',
1170 p_notes => l_note_msg,
1171 p_notes_detail => l_note_msg,
1172 p_note_type => 'CN_SYSGEN', -- for system generated
1173 x_jtf_note_id => l_note_id -- returned
1174 );
1175
1176
1177 --+
1178 -- Issue the Commit and recreate the Save Point.
1179 --+
1180 IF FND_API.To_Boolean( p_commit ) THEN
1181 COMMIT WORK;
1182 END IF;
1183 --+
1184 -- Standard call to get message count and if count is 1, get message info.
1185 --+
1186 FND_MSG_PUB.Count_And_Get
1187 (
1188 p_count => x_msg_count ,
1189 p_data => x_msg_data ,
1190 p_encoded => FND_API.G_FALSE
1191 );
1192 EXCEPTION
1193 WHEN FND_API.G_EXC_ERROR THEN
1194 ROLLBACK TO Delete_srp_payee_assigns;
1195 x_return_status := FND_API.G_RET_STS_ERROR ;
1196 FND_MSG_PUB.Count_And_Get
1197 (
1198 p_count => x_msg_count ,
1199 p_data => x_msg_data ,
1200 p_encoded => FND_API.G_FALSE
1201 );
1202 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1203 ROLLBACK TO Delete_srp_payee_assigns;
1204 x_loading_status := 'UNEXPECTED_ERR';
1205 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1206 FND_MSG_PUB.Count_And_Get
1207 (
1208 p_count => x_msg_count ,
1209 p_data => x_msg_data ,
1210 p_encoded => FND_API.G_FALSE
1211 );
1212 WHEN OTHERS THEN
1213 ROLLBACK TO delete_srp_payee_assigns;
1214 x_loading_status := 'UNEXPECTED_ERR';
1215 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1216 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1217 THEN
1218 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
1219 END IF;
1220 FND_MSG_PUB.Count_And_Get
1221 (
1222 p_count => x_msg_count ,
1223 p_data => x_msg_data ,
1224 p_encoded => FND_API.G_FALSE
1225 );
1226 END Delete_Srp_Payee_Assigns;
1227
1228 END CN_SRP_PAYEE_ASSIGNS_PVT;