Untitled
unknown
plain_text
a year ago
7.7 kB
4
Indexable
USE [HK_PISYS_POC] GO /****** Object: StoredProcedure [dbo].[GetUnallocatedAcctBalBasedInvTypeNmbr] Script Date: 07/24/2024 5:12:30 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO ALTER Procedure [dbo].[GetUnallocatedAcctBalBasedInvTypeNmbr] @Contract_nmbr integer, @as_of_dt datetime, @Acct_Flag Char(1), @tot_unit float output, @tot_Amt float output, @IsBeforeAsOfDtALLTrns char(1) = NULL, @Plan_nmbr INT = NULL, @clnt_rltnshp_nmbr INT = NULL, @inv_type_nmbr integer as Declare @Unit_cnt float, @Unit_cnt2 float, @gross_amt float, @gross_amt2 float, @rltnshp_type_nmbr smallint, @money_type_nmbr smallint, @product_type_nmbr int /************************************************************************ drop proc GetUnallocatedAcctBalBasedInvTypeNmbr This stored procedure get Total Unit and Total amount in all the Forfeiture or Reserve and Credit Balance Accounts depend on @Acct_flag. @Acct_flag Account ---------- ------- C Credit Balance F Forfeiture R Reserve inputs: @Contract_nmbr - Contract number @as_of_dt - retrieve data before that date @Acct_flag - outputs: @Tot_Unit - Total No. of Unit @Tot_Amt - Total Amount Created by Eric Lee, 17/08/2000 (field definition : IN009, IN010, IN011) Change Log Date Developer Description ------------------------------------------------------------------ 17/08/2000 EL Initial 29/12/2000 EL Changed for multipal UNALLOCATED ACNT HOLDER and Credit bal acnt holder 15/01/2001 EL Changed for account nature (cntrb or dstrb) 06/03/2001 EL Changed for Forfeiture include activity 25 20/04/2001 EL add a parameter @IsBeforeAsOfDtALLTrns N - get the efctv date = @as_of_dt txn. Y - Get the efctv date <= @as_of_dt txn. (Default) 03/12/2001 EL 634 Specify which Paycenter OR Plan 22/07/2002 EF 1820 Handle TFR IN/OUT activity, press policy no. 29/08/2003 PP 2317 Add CD for CREDIT BAL ACNT HOLDER 29/09/2005 EF 4244 Not to check client rltnshp type so that a/c bal is still correct if user input incorrect activity 03/11/2005 ESMOND 4065 LM - show current product's related investment fund only 23/02/2009 WC 6961 Fix the rounding problem by reordering based on the primary key 13/07/2016 CT 14748 Add FD1 for distribution *************************************************************************/ SELECT --@clnt_rltnshp_nmbr = NULL, @Unit_cnt = NULL, @Unit_cnt2 = NULL, @gross_amt = NULL, @gross_amt2 = NULL IF NOT @clnt_rltnshp_nmbr > 0 BEGIN SELECT @clnt_rltnshp_nmbr = NULL END IF @Acct_flag = 'C' BEGIN SELECT @rltnshp_type_nmbr = 17 -- CREDIT BAL ACNT HOLDER ,@money_type_nmbr = NULL -- ALL Money type END ELSE BEGIN IF @Acct_flag = 'R' BEGIN SELECT @rltnshp_type_nmbr = 16 -- UNALLOCATED ACNT HOLDER ,@money_type_nmbr = 115 -- Reserve END ELSE BEGIN SELECT @rltnshp_type_nmbr = 16 -- UNALLOCATED ACNT HOLDER ,@money_type_nmbr = 114 -- Forfeiture END END SELECT @product_type_nmbr = c.product_type_nmbr FROM contract_vw c (NOLOCK) WHERE c.contract_nmbr = @contract_nmbr Create table #client_rltnshp(clnt_rltnshp_nmbr int, trns_hst_seq_nmbr smallint, activity_type_nmbr smallint, sub_trns_nmbr smallint) insert into #client_rltnshp SELECT DISTINCT cr.clnt_rltnshp_nmbr, th.trns_hst_seq_nmbr, th.activity_type_nmbr, th.sub_trns_nmbr FROM trns_history_vw th (NOLOCK) INNER JOIN client_rltnshp_vw cr (NOLOCK) ON (th.clnt_rltnshp_nmbr = cr.clnt_rltnshp_nmbr) WHERE cr.contract_nmbr = @contract_nmbr AND ( (cr.clnt_rltnshp_nmbr = @clnt_rltnshp_nmbr AND @clnt_rltnshp_nmbr IS NOT NULL) OR (@clnt_rltnshp_nmbr IS NULL)) AND cr.rltnshp_type_nmbr = @rltnshp_type_nmbr AND (th.money_type_nmbr = @money_type_nmbr OR @Money_type_nmbr is NULL) AND th.reversal_flg = '0' AND ( (th.trns_hst_efctv_dt <= @as_of_dt and (@IsBeforeAsOfDtALLTrns IS NULL or @IsBeforeAsOfDtALLTrns = 'Y')) OR (th.trns_hst_efctv_dt = @as_of_dt and @IsBeforeAsOfDtALLTrns = 'N') ) AND ( ( cr.clnt_rltnshp_nmbr in (SELECT cad.clnt_rltnshp_nmbr FROM cntr_alloc_dtl cad (NOLOCK) WHERE plan_nmbr = @Plan_nmbr) AND @rltnshp_type_nmbr = 16) OR ( cr.clnt_rltnshp_nmbr IN (SELECT cr1.clnt_rltnshp_nmbr FROM client_rltnshp_vw cr1 (NOLOCK) WHERE cr1.rltnshp_type_nmbr in (17) AND cr1.contract_nmbr = @contract_nmbr AND cr1.prmy_client_nmbr = (SELECT TOP 1 cr2.prmy_client_nmbr FROM cntr_alloc_dtl cad (NOLOCK) INNER JOIN client_rltnshp_vw cr2 (NOLOCK) ON ( cad.paycenter_nmbr = cr2.clnt_rltnshp_nmbr OR cad.clnt_rltnshp_nmbr = cr2.clnt_rltnshp_nmbr) WHERE cad.plan_nmbr = @Plan_nmbr AND cr2.contract_nmbr = @contract_nmbr ORDER BY cr2.rltnshp_type_nmbr, cr2.clnt_rltnshp_nmbr desc)) AND @rltnshp_type_nmbr <> 16) OR @Plan_nmbr IS NULL ) CREATE INDEX client_rltnshp_ind ON #client_rltnshp (clnt_rltnshp_nmbr, trns_hst_seq_nmbr) SELECT thi.* INTO #trns_history_inv_tmp FROM trns_history_inv_vw thi (NOLOCK) INNER JOIN #client_rltnshp cr ON ( thi.clnt_rltnshp_nmbr = cr.clnt_rltnshp_nmbr AND thi.trns_hst_seq_nmbr = cr.trns_hst_seq_nmbr) ORDER BY thi.clnt_rltnshp_nmbr, thi.trns_hst_seq_nmbr, thi.inv_type_nmbr CREATE INDEX #trns_history_inv_tmp_ind ON #trns_history_inv_tmp (clnt_rltnshp_nmbr, trns_hst_seq_nmbr, inv_type_nmbr) /* Get all contribution transaction */ SELECT @Unit_cnt = sum(thi.Unit_cnt), @gross_amt = sum(thi.gross_amt) FROM #client_rltnshp cr INNER JOIN #trns_history_inv_tmp thi ON ( cr.clnt_rltnshp_nmbr = thi.clnt_rltnshp_nmbr AND cr.trns_hst_seq_nmbr = thi.trns_hst_seq_nmbr) WHERE cr.activity_type_nmbr in (25, 111, 30, 148, 259) AND thi.inv_type_nmbr IN ( SELECT ptio.Inv_type_nmbr FROM prdct_type_inv_opt ptio (NOLOCK) INNER JOIN inv_type it (NOLOCK) ON (ptio.inv_type_nmbr = it.inv_type_nmbr) WHERE ptio.product_type_nmbr = @product_type_nmbr AND ptio.inv_type_nmbr = @inv_type_nmbr) -- 25 = Plcy lvl - contrib, 5 = TO CB, -- 111 = Credit Bal Contribution -- 30 FORFEIT CONTRIBUTION if @Unit_cnt is null SELECT @Unit_Cnt = 0 if @gross_amt is null SELECT @gross_amt = 0 /* Get all distribution transaction */ SELECT @Unit_cnt2 = sum(thi.Unit_cnt), @gross_amt2 = sum(thi.gross_amt) FROM #client_rltnshp cr INNER JOIN #trns_history_inv_tmp thi ON ( cr.clnt_rltnshp_nmbr = thi.clnt_rltnshp_nmbr AND cr.trns_hst_seq_nmbr = thi.trns_hst_seq_nmbr) WHERE cr.activity_type_nmbr in (92, 94, 163, 260, 95, 93, 68, 149, 258, 98) AND thi.inv_type_nmbr IN ( SELECT ptio.Inv_type_nmbr FROM prdct_type_inv_opt ptio (NOLOCK) INNER JOIN inv_type it (NOLOCK) ON (ptio.inv_type_nmbr = it.inv_type_nmbr) WHERE ptio.product_type_nmbr = @product_type_nmbr AND ptio.inv_type_nmbr = @inv_type_nmbr) -- 94 = Plcy_Partial Dis/surr, 5 = FRM CB, 163 = Credit Bal DISTRIBUTION -- 92 PLCY-CMPLT DIS/SURR, 94 PLCY-PARTIAL DIS/SURR, 260 UNALLOCA ACNT DSTRB, -- 95 PRTL DSTRB/ADJUSTMENT, 93 PLCY-PRD DSTBN, PLCY ALLOCATION DISTRIBUTION if @Unit_cnt2 is null SELECT @Unit_Cnt2 = 0 if @gross_amt2 is null SELECT @gross_amt2 = 0 Select @tot_unit = @unit_cnt - @unit_cnt2, @tot_amt = @gross_amt - @gross_amt2 drop table #client_rltnshp drop table #trns_history_inv_tmp
Editor is loading...
Leave a Comment