1539: --------------------------------------------------------------------------
1540:
1541: PROCEDURE cancel_all_enrollments
1542: (
1543: p_enrollment_id_tbl IN JTF_NUMBER_TABLE
1544: , p_status_reason_code IN VARCHAR2 -- pass 'MEMBER_TYPE_CHANGE' if it is happening because of member type change -- it validates against PV_MEMB_STATUS_REASON_CODE
1545: , p_comments IN VARCHAR2 DEFAULT NULL -- pass 'Membership terminated by system as member type is changed' if it is changed because of member type change
1546: , x_return_status OUT NOCOPY VARCHAR2
1547: , x_msg_count OUT NOCOPY NUMBER
1683: --------------------------------------------------------------------------
1684:
1685: PROCEDURE term_all_memberships
1686: (
1687: p_membership_table IN JTF_NUMBER_TABLE
1688: , p_event_code IN VARCHAR2
1689: , p_status_reason_code IN VARCHAR2
1690: , p_message_code IN VARCHAR2
1691: , p_comments IN VARCHAR2 DEFAULT NULL
1989: AND subs_enty_val.attribute_id = 6
1990: AND subs_enty_val.latest_flag = 'Y'
1991: AND subs_enty_val.attr_value = 'SUBSIDIARY';
1992:
1993: CURSOR c_get_membs_csr(l_sub_str_table JTF_NUMBER_TABLE ) IS
1994: SELECT /*+ CARDINALITY(sptr 10) */
1995: memb.membership_id membership_id
1996: , memb.program_id program_id
1997: FROM pv_pg_memberships memb
1994: SELECT /*+ CARDINALITY(sptr 10) */
1995: memb.membership_id membership_id
1996: , memb.program_id program_id
1997: FROM pv_pg_memberships memb
1998: , (SELECT column_value FROM TABLE (CAST(l_sub_str_table AS JTF_NUMBER_TABLE))) sptr
1999: WHERE memb.partner_id=sptr.column_value
2000: AND memb.membership_status_code IN ('ACTIVE','FUTURE');
2001:
2002:
1999: WHERE memb.partner_id=sptr.column_value
2000: AND memb.membership_status_code IN ('ACTIVE','FUTURE');
2001:
2002:
2003: CURSOR c_get_enrls_csr(l_sub_str_table JTF_NUMBER_TABLE ) IS
2004: SELECT /*+ CARDINALITY(sptr 10) */ enrq.enrl_request_id enrl_request_id
2005: FROM pv_pg_enrl_requests enrq
2006: , (SELECT column_value FROM TABLE (CAST(l_sub_str_table AS JTF_NUMBER_TABLE))) sptr
2007: WHERE enrq.partner_id=sptr.column_value
2002:
2003: CURSOR c_get_enrls_csr(l_sub_str_table JTF_NUMBER_TABLE ) IS
2004: SELECT /*+ CARDINALITY(sptr 10) */ enrq.enrl_request_id enrl_request_id
2005: FROM pv_pg_enrl_requests enrq
2006: , (SELECT column_value FROM TABLE (CAST(l_sub_str_table AS JTF_NUMBER_TABLE))) sptr
2007: WHERE enrq.partner_id=sptr.column_value
2008: AND request_status_code IN ('INCOMPLETE','AWAITING_APPROVAL');
2009:
2010: l_api_name CONSTANT VARCHAR2(30) := 'Terminate_ptr_memberships ';
2010: l_api_name CONSTANT VARCHAR2(30) := 'Terminate_ptr_memberships ';
2011: l_api_version_number CONSTANT NUMBER := 1.0;
2012: l_exists VARCHAR2(1);
2013: l_lookup_type VARCHAR2(30);
2014: l_memb_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2015: l_enrl_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2016: l_member_type VARCHAR2(30);
2017: counter NUMBER := 1;
2018: l_default_program_id NUMBER;
2011: l_api_version_number CONSTANT NUMBER := 1.0;
2012: l_exists VARCHAR2(1);
2013: l_lookup_type VARCHAR2(30);
2014: l_memb_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2015: l_enrl_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2016: l_member_type VARCHAR2(30);
2017: counter NUMBER := 1;
2018: l_default_program_id NUMBER;
2019: l_subs_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2015: l_enrl_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2016: l_member_type VARCHAR2(30);
2017: counter NUMBER := 1;
2018: l_default_program_id NUMBER;
2019: l_subs_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2020:
2021: BEGIN
2022: /**
2023: 1. get all the membership_id from memberships table that are ACTIVE, FUTURE and populate
2284: END Terminate_ptr_memberships;
2285:
2286:
2287: FUNCTION getUniqueIDs(
2288: p_ids IN JTF_NUMBER_TABLE
2289: )
2290: RETURN JTF_NUMBER_TABLE IS
2291:
2292: l_unique_id_tbl JTF_NUMBER_TABLE:=JTF_NUMBER_TABLE();
2286:
2287: FUNCTION getUniqueIDs(
2288: p_ids IN JTF_NUMBER_TABLE
2289: )
2290: RETURN JTF_NUMBER_TABLE IS
2291:
2292: l_unique_id_tbl JTF_NUMBER_TABLE:=JTF_NUMBER_TABLE();
2293: counter NUMBER:=1;
2294:
2288: p_ids IN JTF_NUMBER_TABLE
2289: )
2290: RETURN JTF_NUMBER_TABLE IS
2291:
2292: l_unique_id_tbl JTF_NUMBER_TABLE:=JTF_NUMBER_TABLE();
2293: counter NUMBER:=1;
2294:
2295: BEGIN
2296: FOR x IN (
2293: counter NUMBER:=1;
2294:
2295: BEGIN
2296: FOR x IN (
2297: SELECT * FROM TABLE (CAST(p_ids AS JTF_NUMBER_TABLE))
2298: GROUP BY column_value )
2299: LOOP
2300:
2301: l_unique_id_tbl.extend(1);
2313: -- B and C , if you pass in A. If you pass B, then the function will return you C and so on.
2314: PROCEDURE get_prereq_programs
2315: (
2316: p_program_id IN NUMBER
2317: ,l_prereq_program_ids IN OUT NOCOPY JTF_NUMBER_TABLE
2318:
2319: )
2320: IS
2321: CURSOR prereq_csr(p_prgm_id NUMBER) IS
2345: (
2346:
2347: p_membership_id IN NUMBER
2348:
2349: ) RETURN JTF_NUMBER_TABLE IS
2350: l_dependent_program_id_tbl JTF_NUMBER_TABLE:=JTF_NUMBER_TABLE();
2351: l_highest_level NUMBER;
2352: l_program_id NUMBER;
2353: counter NUMBER:=1;
2346:
2347: p_membership_id IN NUMBER
2348:
2349: ) RETURN JTF_NUMBER_TABLE IS
2350: l_dependent_program_id_tbl JTF_NUMBER_TABLE:=JTF_NUMBER_TABLE();
2351: l_highest_level NUMBER;
2352: l_program_id NUMBER;
2353: counter NUMBER:=1;
2354:
2467: , x_msg_count OUT NOCOPY NUMBER
2468: , x_msg_data OUT NOCOPY VARCHAR2
2469: ) IS
2470:
2471: CURSOR enrl_csr( ptr_id NUMBER, prgm_id_tbl JTF_NUMBER_TABLE ) IS
2472: SELECT enr.enrl_request_id
2473: , enr.request_status_code
2474: , memb.membership_status_code
2475: , memb.membership_id
2476: FROM pv_pg_enrl_requests enr
2477: , pv_pg_memberships memb
2478: WHERE enr.partner_id = ptr_id
2479: AND enr.program_id
2480: IN ( SELECT * FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) )
2481: AND enr.enrl_request_id = memb.enrl_request_id(+);
2482:
2483:
2484: CURSOR enrl_sub_csr( ptr_id_tbl JTF_NUMBER_TABLE, prgm_id_tbl JTF_NUMBER_TABLE ) IS
2480: IN ( SELECT * FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) )
2481: AND enr.enrl_request_id = memb.enrl_request_id(+);
2482:
2483:
2484: CURSOR enrl_sub_csr( ptr_id_tbl JTF_NUMBER_TABLE, prgm_id_tbl JTF_NUMBER_TABLE ) IS
2485: SELECT /*+ CARDINALITY(ptr 10) */
2486: enr.enrl_request_id
2487: , enr.request_status_code
2488: , memb.membership_status_code
2488: , memb.membership_status_code
2489: , memb.membership_id
2490: FROM pv_pg_enrl_requests enr
2491: , pv_pg_memberships memb
2492: , ( SELECT column_value FROM TABLE ( CAST( ptr_id_tbl AS JTF_NUMBER_TABLE ) ) ) ptr
2493: , ( SELECT column_value FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) ) prg
2494: WHERE enr.partner_id =ptr.column_value
2495: AND enr.program_id =prg.column_value
2496: AND enr.enrl_request_id = memb.enrl_request_id(+);
2489: , memb.membership_id
2490: FROM pv_pg_enrl_requests enr
2491: , pv_pg_memberships memb
2492: , ( SELECT column_value FROM TABLE ( CAST( ptr_id_tbl AS JTF_NUMBER_TABLE ) ) ) ptr
2493: , ( SELECT column_value FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) ) prg
2494: WHERE enr.partner_id =ptr.column_value
2495: AND enr.program_id =prg.column_value
2496: AND enr.enrl_request_id = memb.enrl_request_id(+);
2497: /*
2502: , memb.membership_id
2503: FROM pv_pg_enrl_requests enr
2504: , pv_pg_memberships memb
2505: WHERE enr.partner_id
2506: IN ( SELECT * FROM TABLE ( CAST( ptr_id_tbl AS JTF_NUMBER_TABLE ) ) )
2507: AND enr.program_id
2508: IN ( SELECT * FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) )
2509: AND enr.enrl_request_id = memb.enrl_request_id(+);
2510: */
2504: , pv_pg_memberships memb
2505: WHERE enr.partner_id
2506: IN ( SELECT * FROM TABLE ( CAST( ptr_id_tbl AS JTF_NUMBER_TABLE ) ) )
2507: AND enr.program_id
2508: IN ( SELECT * FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) )
2509: AND enr.enrl_request_id = memb.enrl_request_id(+);
2510: */
2511:
2512: CURSOR subsidiary_csr( global_partner_id NUMBER, p_depentent_id_tbl JTF_NUMBER_TABLE ) IS
2508: IN ( SELECT * FROM TABLE ( CAST( prgm_id_tbl AS JTF_NUMBER_TABLE ) ) )
2509: AND enr.enrl_request_id = memb.enrl_request_id(+);
2510: */
2511:
2512: CURSOR subsidiary_csr( global_partner_id NUMBER, p_depentent_id_tbl JTF_NUMBER_TABLE ) IS
2513: SELECT enrq.enrl_request_id
2514: , enrq.request_status_code
2515: , memb.membership_status_code
2516: , memb.membership_id
2537: AND subs_enty_val.attr_value = 'SUBSIDIARY'
2538: AND subs_prof.partner_id = enrq.partner_id
2539: AND enrq.enrl_request_id = memb.enrl_request_id(+)
2540: AND enrq.dependent_program_id
2541: IN ( SELECT * FROM TABLE ( CAST( p_depentent_id_tbl AS JTF_NUMBER_TABLE ) ) );
2542:
2543: CURSOR prereq_sub_csr( memb_id_tbl JTF_NUMBER_TABLE ) IS
2544: SELECT /*+ LEADING(t) */ DISTINCT( program_id )
2545: FROM pv_pg_memberships memb
2539: AND enrq.enrl_request_id = memb.enrl_request_id(+)
2540: AND enrq.dependent_program_id
2541: IN ( SELECT * FROM TABLE ( CAST( p_depentent_id_tbl AS JTF_NUMBER_TABLE ) ) );
2542:
2543: CURSOR prereq_sub_csr( memb_id_tbl JTF_NUMBER_TABLE ) IS
2544: SELECT /*+ LEADING(t) */ DISTINCT( program_id )
2545: FROM pv_pg_memberships memb
2546: , (SELECT column_value FROM TABLE (CAST(memb_id_tbl AS JTF_NUMBER_TABLE))) t
2547: WHERE t.column_value=memb.membership_id;
2542:
2543: CURSOR prereq_sub_csr( memb_id_tbl JTF_NUMBER_TABLE ) IS
2544: SELECT /*+ LEADING(t) */ DISTINCT( program_id )
2545: FROM pv_pg_memberships memb
2546: , (SELECT column_value FROM TABLE (CAST(memb_id_tbl AS JTF_NUMBER_TABLE))) t
2547: WHERE t.column_value=memb.membership_id;
2548: /*
2549: -- added new SQL above to fix this SQL reported in 11.5.10 CU1 in sql repositiry 12267161
2550: SELECT DISTINCT( program_id )
2549: -- added new SQL above to fix this SQL reported in 11.5.10 CU1 in sql repositiry 12267161
2550: SELECT DISTINCT( program_id )
2551: FROM pv_pg_memberships
2552: WHERE membership_id
2553: IN ( SELECT * FROM TABLE ( CAST( memb_id_tbl AS JTF_NUMBER_TABLE ) ) );
2554: */
2555: CURSOR memb_type_csr( memb_id NUMBER ) IS
2556: SELECT enty.attr_value
2557: , memb.program_id
2571: FROM pv_pg_memberships
2572: WHERE membership_id = memb_id;
2573:
2574: l_isTerminatable boolean := true;
2575: l_program_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2576: l_membid_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2572: WHERE membership_id = memb_id;
2573:
2574: l_isTerminatable boolean := true;
2575: l_program_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2576: l_membid_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2573:
2574: l_isTerminatable boolean := true;
2575: l_program_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2576: l_membid_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2574: l_isTerminatable boolean := true;
2575: l_program_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2576: l_membid_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2582: l_depend_prgm_ids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2575: l_program_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2576: l_membid_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2582: l_depend_prgm_ids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2583: l_sub_partner_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2576: l_membid_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2582: l_depend_prgm_ids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2583: l_sub_partner_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2584:
2577: l_enrl_req_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2582: l_depend_prgm_ids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2583: l_sub_partner_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2584:
2585: l_member_type VARCHAR2(30);
2578: l_prereq_sub_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2582: l_depend_prgm_ids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2583: l_sub_partner_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2584:
2585: l_member_type VARCHAR2(30);
2586: l_program_id NUMBER := NULL;
2579: l_all_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2580: l_prereq_prgm_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2581: l_all_depend_prgmids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2582: l_depend_prgm_ids_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2583: l_sub_partner_id_tbl JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2584:
2585: l_member_type VARCHAR2(30);
2586: l_program_id NUMBER := NULL;
2587: l_partner_id NUMBER := NULL;
3468:
3469: --cursor to get all the subsidiaries and all their active memberships
3470: --that are dependent on this membership id that is being updated
3471:
3472: CURSOR subsidiary_csr( global_partner_id NUMBER,p_depentent_id_tbl JTF_NUMBER_TABLE) IS
3473: SELECT memb.membership_id
3474: , memb.object_version_number
3475: , memb.original_end_date
3476: , memb.partner_id
3497: AND subs_prof.partner_id=memb.partner_id
3498: AND memb.membership_status_code='ACTIVE'
3499: AND memb.enrl_request_id=enrl.enrl_request_id
3500: AND enrl.dependent_program_id
3501: in ( SELECT * FROM TABLE ( CAST( p_depentent_id_tbl AS JTF_NUMBER_TABLE ) ) );
3502:
3503: l_api_name CONSTANT VARCHAR2(30) := 'Update_membership_end_date';
3504: l_api_version_number CONSTANT NUMBER := 1.0;
3505: l_dependent_program_id JTF_NUMBER_TABLE;
3501: in ( SELECT * FROM TABLE ( CAST( p_depentent_id_tbl AS JTF_NUMBER_TABLE ) ) );
3502:
3503: l_api_name CONSTANT VARCHAR2(30) := 'Update_membership_end_date';
3504: l_api_version_number CONSTANT NUMBER := 1.0;
3505: l_dependent_program_id JTF_NUMBER_TABLE;
3506: l_partner_id NUMBER;
3507: l_member_type VARCHAR2(30);
3508: l_object_version_number NUMBER;
3509: l_pv_pg_memb_rec memb_rec_type;