1: PACKAGE BODY CN_SRP_PER_QUOTA_RC_PKG as
2: /* $Header: cnsrprcb.pls 120.1 2005/12/19 13:37:22 mblum noship $ */
3:
4: --Date Name Description
5: ----------------------------------------------------------------------------+
45:
46: IF x_srp_plan_assign_id IS NOT NULL THEN
47: IF x_quota_id IS NOT NULL THEN
48: -- deleting a plan's quota assignment or quota rule
49: DELETE FROM cn_srp_per_quota_rc_all
50: WHERE quota_id = x_quota_id
51: AND srp_plan_assign_id = x_srp_plan_assign_id
52: ;
53: ELSE
52: ;
53: ELSE
54: IF x_start_date IS NULL THEN
55: -- deleting an entire srp_plan_assign or changing the date range
56: DELETE FROM cn_srp_per_quota_rc_all
57: WHERE srp_plan_assign_id = x_srp_plan_assign_id
58: ;
59: ELSE
60: -- Delete the specific periods
57: WHERE srp_plan_assign_id = x_srp_plan_assign_id
58: ;
59: ELSE
60: -- Delete the specific periods
61: DELETE FROM cn_srp_per_quota_rc_all
62: WHERE srp_plan_assign_id = x_srp_plan_assign_id
63: AND EXISTS ( select 1 from cn_period_statuses p
64: WHERE p.start_date >= Nvl(x_start_date,p.start_date)
65: AND p.end_date <= Nvl(x_end_date ,p.end_date)
62: WHERE srp_plan_assign_id = x_srp_plan_assign_id
63: AND EXISTS ( select 1 from cn_period_statuses p
64: WHERE p.start_date >= Nvl(x_start_date,p.start_date)
65: AND p.end_date <= Nvl(x_end_date ,p.end_date)
66: AND cn_srp_per_quota_rc_all.org_id = p.org_id
67: AND cn_srp_per_quota_rc_all.period_id = p.period_id);
68: END IF; -- start_date is null
69: END IF; -- quota_id is not null
70: ELSE
63: AND EXISTS ( select 1 from cn_period_statuses p
64: WHERE p.start_date >= Nvl(x_start_date,p.start_date)
65: AND p.end_date <= Nvl(x_end_date ,p.end_date)
66: AND cn_srp_per_quota_rc_all.org_id = p.org_id
67: AND cn_srp_per_quota_rc_all.period_id = p.period_id);
68: END IF; -- start_date is null
69: END IF; -- quota_id is not null
70: ELSE
71:
76: -- Deleting a quota rule
77: -- OR the quota type changed to one that doesn not support
78: -- revenue classes
79:
80: DELETE FROM cn_srp_per_quota_rc_all
81: WHERE quota_id = x_quota_id
82: AND revenue_class_id = x_revenue_class_id;
83:
84: ELSE
89:
90: -- Modified from cn_periods to cn_period_statuses
91: -- Modified the the start_period_id, end_period_id to
92: -- start date and end date
93: DELETE FROM cn_srp_per_quota_rc_all
94: WHERE quota_id = x_quota_id
95: AND EXISTS ( select 1 from cn_period_statuses p
96: WHERE p.start_date >= Nvl(x_start_date,p.start_date)
97: AND p.end_date <= Nvl(x_end_date ,p.end_date)
94: WHERE quota_id = x_quota_id
95: AND EXISTS ( select 1 from cn_period_statuses p
96: WHERE p.start_date >= Nvl(x_start_date,p.start_date)
97: AND p.end_date <= Nvl(x_end_date ,p.end_date)
98: AND cn_srp_per_quota_rc_all.period_id = p.period_id
99: AND cn_srp_per_quota_rc_all.org_id = p.org_id);
100:
101: END IF; -- revenue_class_id is not null
102: END IF; -- quota_id is not null
95: AND EXISTS ( select 1 from cn_period_statuses p
96: WHERE p.start_date >= Nvl(x_start_date,p.start_date)
97: AND p.end_date <= Nvl(x_end_date ,p.end_date)
98: AND cn_srp_per_quota_rc_all.period_id = p.period_id
99: AND cn_srp_per_quota_rc_all.org_id = p.org_id);
100:
101: END IF; -- revenue_class_id is not null
102: END IF; -- quota_id is not null
103: END IF; -- srp_plan_assign_id is not null
161: -- Note the new revenue_class in the select statement.
162:
163: -- clku, fixed for performance bug 2321076
164:
165: INSERT INTO cn_srp_per_quota_rc_all
166: ( srp_per_quota_rc_id
167: ,srp_period_quota_id
168: ,srp_plan_assign_id
169: ,salesrep_id
180: ,last_update_date
181: ,last_update_login
182: ,org_id)
183: SELECT
184: cn_srp_per_quota_rc_s.nextval
185: ,pq.srp_period_quota_id
186: ,pq.srp_plan_assign_id
187: ,pq.salesrep_id
188: ,pq.period_id
204: AND q.quota_id = pq.quota_id
205: AND q.quota_type_code IN ('FORMULA','EXTERNAL')
206:
207: AND NOT EXISTS (SELECT 'srp_period_quota_rc already exists'
208: FROM cn_srp_per_quota_rc_all spqr
209: WHERE spqr.srp_period_quota_id = pq.srp_period_quota_id
210: AND spqr.srp_plan_assign_id = pq.srp_plan_assign_id
211: AND spqr.revenue_class_id = x_revenue_class_id)
212: ;
218: -- Quota's period range changed and having just deleted all the
219: -- period quotas and their rev class records we will now insert the
220: -- records for the new range
221:
222: INSERT INTO cn_srp_per_quota_rc_all
223: ( srp_per_quota_rc_id
224: ,srp_period_quota_id
225: ,srp_plan_assign_id
226: ,salesrep_id
237: ,last_update_date
238: ,last_update_login
239: ,org_id)
240: SELECT
241: cn_srp_per_quota_rc_s.nextval
242: ,pq.srp_period_quota_id
243: ,pq.srp_plan_assign_id
244: ,pq.salesrep_id
245: ,pq.period_id
270: AND p.start_date >= nvl(x_start_date, p.start_date)
271: AND p.end_date <= nvl(x_end_date, p.end_date))
272:
273: AND NOT EXISTS (SELECT 'srp_period_quota_rc already exists'
274: FROM cn_srp_per_quota_rc_all spqr
275: WHERE spqr.srp_period_quota_id = pq.srp_period_quota_id
276: AND spqr.srp_plan_assign_id = pq.srp_plan_assign_id
277: AND spqr.revenue_class_id = qr.revenue_class_id)
278: ;
282: AND x_revenue_class_id IS NULL ) THEN
283:
284: -- A new cn_quota_assign has been created
285:
286: INSERT INTO cn_srp_per_quota_rc
287: ( srp_per_quota_rc_id
288: ,srp_period_quota_id
289: ,srp_plan_assign_id
290: ,salesrep_id
301: ,last_update_date
302: ,last_update_login
303: ,org_id)
304: SELECT
305: cn_srp_per_quota_rc_s.nextval
306: ,pq.srp_period_quota_id
307: ,pq.srp_plan_assign_id
308: ,pq.salesrep_id
309: ,pq.period_id
328: AND q.quota_id = x_quota_id
329: AND q.quota_type_code IN ('EXTERNAL','FORMULA')
330:
331: AND NOT EXISTS (SELECT 'srp_period_quota_rc already exists'
332: FROM cn_srp_per_quota_rc_all spqr
333: WHERE spqr.srp_period_quota_id = pq.srp_period_quota_id
334: AND spqr.srp_plan_assign_id = pq.srp_plan_assign_id
335: AND spqr.revenue_class_id = qr.revenue_class_id)
336: ;
345: -- modified the cn_periods to cn_period_statuses
346: -- modified the start_period_id, end_period_id to
347: -- start date end date
348:
349: INSERT INTO cn_srp_per_quota_rc
350: ( srp_per_quota_rc_id
351: ,srp_period_quota_id
352: ,srp_plan_assign_id
353: ,salesrep_id
364: ,last_update_date
365: ,last_update_login
366: ,org_id)
367: SELECT
368: cn_srp_per_quota_rc_s.nextval
369: ,pq.srp_period_quota_id
370: ,pq.srp_plan_assign_id
371: ,pq.salesrep_id
372: ,pq.period_id
397: AND p.start_date >= nvl(x_start_date, p.start_date)
398: AND p.end_date <= nvl(x_end_date, p.end_date))
399:
400: AND NOT EXISTS (SELECT 'srp_period_quota_rc already exists'
401: FROM cn_srp_per_quota_rc_all spqr
402: WHERE spqr.srp_period_quota_id = pq.srp_period_quota_id
403: AND spqr.srp_plan_assign_id = pq.srp_plan_assign_id
404: AND spqr.revenue_class_id = qr.revenue_class_id)
405: ;
406: END IF;
407:
408: END insert_record;
409:
410: END CN_SRP_PER_QUOTA_RC_PKG;