264: RAISE;
265: END create_comm_line;
266:
267: PROCEDURE xroll( p_salesrep_id NUMBER, p_comp_group_id NUMBER, p_start_date DATE, p_end_date DATE ) IS
268: l_group cn_rollup_pvt.group_rec_type;
269: l_group_member cn_rollup_pvt.group_mem_tbl_type;
270: l_return_status VARCHAR2( 30 );
271: l_msg_count NUMBER;
272: l_msg_data VARCHAR2( 2000 );
265: END create_comm_line;
266:
267: PROCEDURE xroll( p_salesrep_id NUMBER, p_comp_group_id NUMBER, p_start_date DATE, p_end_date DATE ) IS
268: l_group cn_rollup_pvt.group_rec_type;
269: l_group_member cn_rollup_pvt.group_mem_tbl_type;
270: l_return_status VARCHAR2( 30 );
271: l_msg_count NUMBER;
272: l_msg_data VARCHAR2( 2000 );
273: BEGIN
288: -- have to call API first to get all the active group member
289: l_group.GROUP_ID := p_comp_group_id;
290: l_group.start_date := p_start_date;
291: l_group.end_date := p_end_date;
292: cn_rollup_pvt.get_active_group_member( p_api_version => 1.0
293: , x_return_status => l_return_status
294: , x_msg_count => l_msg_count
295: , x_msg_data => l_msg_data
296: , p_group => l_group
350: OR processed_date BETWEEN p_start_date AND p_end_date )
351: AND status <> 'OBSOLETE'
352: GROUP BY processed_date, rollup_date, processed_period_id;
353:
354: l_srp cn_rollup_pvt.srp_rec_type;
355: l_active_group cn_rollup_pvt.active_group_tbl_type;
356: l_return_status VARCHAR2( 30 );
357: l_msg_count NUMBER;
358: l_msg_data VARCHAR2( 2000 );
351: AND status <> 'OBSOLETE'
352: GROUP BY processed_date, rollup_date, processed_period_id;
353:
354: l_srp cn_rollup_pvt.srp_rec_type;
355: l_active_group cn_rollup_pvt.active_group_tbl_type;
356: l_return_status VARCHAR2( 30 );
357: l_msg_count NUMBER;
358: l_msg_data VARCHAR2( 2000 );
359: l_status VARCHAR2( 30 );
362: l_srp.salesrep_id := p_salesrep_id;
363: l_srp.start_date := eachdate.processed_date;
364: l_srp.end_date := eachdate.processed_date;
365: l_status := NULL;
366: cn_rollup_pvt.get_active_group( p_api_version => 1.0
367: , x_return_status => l_return_status
368: , x_msg_count => l_msg_count
369: , x_msg_data => l_msg_data
370: , p_org_id => g_org_id
373:
374: IF ( l_active_group.COUNT = 0 AND eachdate.rollup_date <> eachdate.processed_date ) THEN
375: l_srp.start_date := eachdate.rollup_date;
376: l_srp.end_date := eachdate.rollup_date;
377: cn_rollup_pvt.get_active_group( p_api_version => 1.0
378: , x_return_status => l_return_status
379: , x_msg_count => l_msg_count
380: , x_msg_data => l_msg_data
381: , p_org_id => g_org_id
449: RAISE;
450: END source_cls;
451:
452: PROCEDURE pull( p_salesrep_id NUMBER, p_comp_group_id NUMBER, p_start_date DATE, p_end_date DATE, p_action VARCHAR2 ) IS
453: l_group cn_rollup_pvt.group_rec_type;
454: l_group_tbl cn_rollup_pvt.group_tbl_type;
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
450: END source_cls;
451:
452: PROCEDURE pull( p_salesrep_id NUMBER, p_comp_group_id NUMBER, p_start_date DATE, p_end_date DATE, p_action VARCHAR2 ) IS
453: l_group cn_rollup_pvt.group_rec_type;
454: l_group_tbl cn_rollup_pvt.group_tbl_type;
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
458: l_srp_group cn_rollup_pvt.srp_group_rec_type;
451:
452: PROCEDURE pull( p_salesrep_id NUMBER, p_comp_group_id NUMBER, p_start_date DATE, p_end_date DATE, p_action VARCHAR2 ) IS
453: l_group cn_rollup_pvt.group_rec_type;
454: l_group_tbl cn_rollup_pvt.group_tbl_type;
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
458: l_srp_group cn_rollup_pvt.srp_group_rec_type;
459: l_srp_group_tbl cn_rollup_pvt.srp_group_tbl_type;
452: PROCEDURE pull( p_salesrep_id NUMBER, p_comp_group_id NUMBER, p_start_date DATE, p_end_date DATE, p_action VARCHAR2 ) IS
453: l_group cn_rollup_pvt.group_rec_type;
454: l_group_tbl cn_rollup_pvt.group_tbl_type;
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
458: l_srp_group cn_rollup_pvt.srp_group_rec_type;
459: l_srp_group_tbl cn_rollup_pvt.srp_group_tbl_type;
460: l_return_status VARCHAR2( 1 );
453: l_group cn_rollup_pvt.group_rec_type;
454: l_group_tbl cn_rollup_pvt.group_tbl_type;
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
458: l_srp_group cn_rollup_pvt.srp_group_rec_type;
459: l_srp_group_tbl cn_rollup_pvt.srp_group_tbl_type;
460: l_return_status VARCHAR2( 1 );
461: l_msg_count NUMBER( 15 );
454: l_group_tbl cn_rollup_pvt.group_tbl_type;
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
458: l_srp_group cn_rollup_pvt.srp_group_rec_type;
459: l_srp_group_tbl cn_rollup_pvt.srp_group_tbl_type;
460: l_return_status VARCHAR2( 1 );
461: l_msg_count NUMBER( 15 );
462: l_msg_data VARCHAR2( 1000 );
455: l_group_member cn_rollup_pvt.group_mem_tbl_type;
456: l_srp cn_rollup_pvt.srp_rec_type;
457: l_active_group cn_rollup_pvt.active_group_tbl_type;
458: l_srp_group cn_rollup_pvt.srp_group_rec_type;
459: l_srp_group_tbl cn_rollup_pvt.srp_group_tbl_type;
460: l_return_status VARCHAR2( 1 );
461: l_msg_count NUMBER( 15 );
462: l_msg_data VARCHAR2( 1000 );
463: l_comp_group_id NUMBER;
494: FETCH role_mgr_flag_c INTO l_mgr_role_flag;
495: CLOSE role_mgr_flag_c;
496:
497: IF p_action = 'PULL_WITHIN' AND l_mgr_role_flag = 'Y' THEN
498: cn_rollup_pvt.get_active_group_member( p_api_version => 1.0
499: , x_return_status => l_return_status
500: , x_msg_count => l_msg_count
501: , x_msg_data => l_msg_data
502: , p_org_id => g_org_id
549: -- if p_salesrep_id is not compensated for the trx (from the previous step), compensate him on this trx
550: l_srp.salesrep_id := p_salesrep_id;
551: l_srp.start_date := p_start_date - 3650;
552: l_srp.end_date := p_end_date;
553: cn_rollup_pvt.get_active_group( p_api_version => 1.0
554: , x_return_status => l_return_status
555: , x_msg_count => l_msg_count
556: , x_msg_data => l_msg_data
557: , p_org_id => g_org_id
563: l_srp_group.salesrep_id := p_salesrep_id;
564: l_srp_group.GROUP_ID := l_active_group( k ).GROUP_ID;
565: l_srp_group.start_date := l_active_group( k ).start_date;
566: l_srp_group.end_date := l_active_group( k ).end_date;
567: cn_rollup_pvt.get_descendant_salesrep( p_api_version => 1.0
568: , x_return_status => l_return_status
569: , x_msg_count => l_msg_count
570: , x_msg_data => l_msg_data
571: , p_org_id => g_org_id
628: , p_start_date DATE
629: , p_end_date DATE
630: , p_action VARCHAR2
631: , p_action_link_id NUMBER ) IS
632: l_group cn_rollup_pvt.group_rec_type;
633: l_descendants_grp cn_rollup_pvt.group_tbl_type;
634: l_ancestors_grp cn_rollup_pvt.group_tbl_type;
635: l_ancestors_tbl cn_rollup_pvt.srp_group_tbl_type;
636: l_descendants_tbl cn_rollup_pvt.srp_group_tbl_type;
629: , p_end_date DATE
630: , p_action VARCHAR2
631: , p_action_link_id NUMBER ) IS
632: l_group cn_rollup_pvt.group_rec_type;
633: l_descendants_grp cn_rollup_pvt.group_tbl_type;
634: l_ancestors_grp cn_rollup_pvt.group_tbl_type;
635: l_ancestors_tbl cn_rollup_pvt.srp_group_tbl_type;
636: l_descendants_tbl cn_rollup_pvt.srp_group_tbl_type;
637: l_return_status VARCHAR2( 1 );
630: , p_action VARCHAR2
631: , p_action_link_id NUMBER ) IS
632: l_group cn_rollup_pvt.group_rec_type;
633: l_descendants_grp cn_rollup_pvt.group_tbl_type;
634: l_ancestors_grp cn_rollup_pvt.group_tbl_type;
635: l_ancestors_tbl cn_rollup_pvt.srp_group_tbl_type;
636: l_descendants_tbl cn_rollup_pvt.srp_group_tbl_type;
637: l_return_status VARCHAR2( 1 );
638: l_msg_count NUMBER( 15 );
631: , p_action_link_id NUMBER ) IS
632: l_group cn_rollup_pvt.group_rec_type;
633: l_descendants_grp cn_rollup_pvt.group_tbl_type;
634: l_ancestors_grp cn_rollup_pvt.group_tbl_type;
635: l_ancestors_tbl cn_rollup_pvt.srp_group_tbl_type;
636: l_descendants_tbl cn_rollup_pvt.srp_group_tbl_type;
637: l_return_status VARCHAR2( 1 );
638: l_msg_count NUMBER( 15 );
639: l_msg_data VARCHAR2( 1000 );
632: l_group cn_rollup_pvt.group_rec_type;
633: l_descendants_grp cn_rollup_pvt.group_tbl_type;
634: l_ancestors_grp cn_rollup_pvt.group_tbl_type;
635: l_ancestors_tbl cn_rollup_pvt.srp_group_tbl_type;
636: l_descendants_tbl cn_rollup_pvt.srp_group_tbl_type;
637: l_return_status VARCHAR2( 1 );
638: l_msg_count NUMBER( 15 );
639: l_msg_data VARCHAR2( 1000 );
640: l_start_date DATE;
715: RETURN;
716: END IF;
717:
718: -- Get descendants
719: cn_rollup_pvt.get_descendant_group( p_api_version => 1.0
720: , x_return_status => l_return_status
721: , x_msg_count => l_msg_count
722: , x_msg_data => l_msg_data
723: , p_group => l_group
722: , x_msg_data => l_msg_data
723: , p_group => l_group
724: , x_group => l_descendants_grp );
725: l_descendants_grp( l_descendants_grp.COUNT ) := l_group;
726: cn_rollup_pvt.get_active_group_member( p_api_version => 1.0
727: , x_return_status => l_return_status
728: , x_msg_count => l_msg_count
729: , x_msg_data => l_msg_data
730: , p_org_id => g_org_id
842: l_return_status VARCHAR2( 30 );
843: l_msg_count NUMBER;
844: l_msg_data VARCHAR2( 2000 );
845: l_count NUMBER( 15 );
846: l_srp cn_rollup_pvt.srp_rec_type;
847: l_active_group cn_rollup_pvt.active_group_tbl_type;
848: l_mgr_comp_group_id NUMBER( 15 );
849: l_srp_group cn_rollup_pvt.srp_group_rec_type;
850: l_srp_group_ancestor cn_rollup_pvt.srp_group_tbl_type;
843: l_msg_count NUMBER;
844: l_msg_data VARCHAR2( 2000 );
845: l_count NUMBER( 15 );
846: l_srp cn_rollup_pvt.srp_rec_type;
847: l_active_group cn_rollup_pvt.active_group_tbl_type;
848: l_mgr_comp_group_id NUMBER( 15 );
849: l_srp_group cn_rollup_pvt.srp_group_rec_type;
850: l_srp_group_ancestor cn_rollup_pvt.srp_group_tbl_type;
851: l_comp_group_id NUMBER( 15 );
845: l_count NUMBER( 15 );
846: l_srp cn_rollup_pvt.srp_rec_type;
847: l_active_group cn_rollup_pvt.active_group_tbl_type;
848: l_mgr_comp_group_id NUMBER( 15 );
849: l_srp_group cn_rollup_pvt.srp_group_rec_type;
850: l_srp_group_ancestor cn_rollup_pvt.srp_group_tbl_type;
851: l_comp_group_id NUMBER( 15 );
852: l_iteration_count PLS_INTEGER;
853:
846: l_srp cn_rollup_pvt.srp_rec_type;
847: l_active_group cn_rollup_pvt.active_group_tbl_type;
848: l_mgr_comp_group_id NUMBER( 15 );
849: l_srp_group cn_rollup_pvt.srp_group_rec_type;
850: l_srp_group_ancestor cn_rollup_pvt.srp_group_tbl_type;
851: l_comp_group_id NUMBER( 15 );
852: l_iteration_count PLS_INTEGER;
853:
854: CURSOR l_no_rollup_transactions_cr IS
895: IF eachtrx.comp_group_id IS NULL THEN
896: l_srp.salesrep_id := eachtrx.direct_salesrep_id;
897: l_srp.start_date := eachtrx.processed_date;
898: l_srp.end_date := eachtrx.processed_date;
899: cn_rollup_pvt.get_active_group( p_api_version => 1.0
900: , x_return_status => l_return_status
901: , x_msg_count => l_msg_count
902: , x_msg_data => l_msg_data
903: , p_org_id => g_org_id
943:
944: l_srp.salesrep_id := eachtrx.direct_salesrep_id;
945: l_srp.start_date := eachtrx.processed_date;
946: l_srp.end_date := eachtrx.processed_date;
947: cn_rollup_pvt.get_active_group( p_api_version => 1.0
948: , x_return_status => l_return_status
949: , x_msg_count => l_msg_count
950: , x_msg_data => l_msg_data
951: , p_org_id => g_org_id
1015: l_srp.end_date := eachtrx.processed_date;
1016: l_active_group.DELETE;
1017:
1018: IF ( eachtrx.comp_group_id IS NULL OR g_multi_rollup_profile = 'Y' ) THEN
1019: cn_rollup_pvt.get_active_group( p_api_version => 1.0
1020: , x_return_status => l_return_status
1021: , x_msg_count => l_msg_count
1022: , x_msg_data => l_msg_data
1023: , p_org_id => g_org_id
1026:
1027: IF ( l_active_group.COUNT = 0 AND eachtrx.processed_date <> eachtrx.rollup_date ) THEN
1028: l_srp.start_date := eachtrx.rollup_date;
1029: l_srp.end_date := eachtrx.rollup_date;
1030: cn_rollup_pvt.get_active_group( p_api_version => 1.0
1031: , x_return_status => l_return_status
1032: , x_msg_count => l_msg_count
1033: , x_msg_data => l_msg_data
1034: , p_org_id => g_org_id
1108: l_srp.salesrep_id := eachtrx.direct_salesrep_id;
1109: l_srp.start_date := eachtrx.rollup_date;
1110: l_srp.end_date := eachtrx.rollup_date;
1111: l_active_group.DELETE;
1112: cn_rollup_pvt.get_active_group( p_api_version => 1.0
1113: , x_return_status => l_return_status
1114: , x_msg_count => l_msg_count
1115: , x_msg_data => l_msg_data
1116: , p_org_id => g_org_id
1133: l_srp_group.salesrep_id := eachtrx.direct_salesrep_id;
1134: l_srp_group.GROUP_ID := l_comp_group_id;
1135: l_srp_group.start_date := eachtrx.rollup_date;
1136: l_srp_group.end_date := eachtrx.rollup_date;
1137: cn_rollup_pvt.get_ancestor_salesrep( p_api_version => 1.0
1138: , x_return_status => l_return_status
1139: , x_msg_count => l_msg_count
1140: , x_msg_data => l_msg_data
1141: , p_org_id => g_org_id