USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[proc_cancelEODRemit] Script Date: 9/27/2019 1:30:14 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- exec proc_cancelEODRemit @user='admin',@TRANID='297447' -- CANCEL TRANSACTION EOD process CREATE PROC [dbo].[proc_cancelEODRemit] @USER VARCHAR(200) , --@DATE VARCHAR(20) @TRANID VARCHAR(50) AS IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#TEMPEODTABLE]') AND type in (N'U')) DROP TABLE [dbo].[#TEMPEODTABLE] --go IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#tempTRNEOD]') AND type in (N'U')) DROP TABLE [dbo].[#tempTRNEOD] --go --DECLARE @USER VARCHAR(100),@DATE VARCHAR(20) --SET @USER='SYSTEM' --SET @DATE = '2012-03-14' BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; DECLARE @ref_num INT ,@intPartId INT ,@intTotalRows INT ,@strAccountNum VARCHAR(20) ,@strTranType VARCHAR(20) ,@TRN_AMT MONEY ,@IMEHO_PRINCIPAL VARCHAR(30) ,@IMEHO_REC VARCHAR(30) ,@COMMISSION_INCOME VARCHAR(30) SET @IMEHO_PRINCIPAL = '301000251' SET @IMEHO_REC = '501000455' SET @COMMISSION_INCOME = '801000511' SELECT sHub,sSuperAgent,sAgent,SUM(ISNULL(cAmt,0)) [cAmt],SUM(ISNULL(tAmt,0)) [tAMT],SUM(ISNULL(sSuperAgentComm,0)) [sSuperAgentComm] ,SUM(isnull(sHubComm,0)) [sHubComm],SUM(isnull(sAgentComm,0)) [sAgentComm] ,CAST(approvedDate AS DATE) [approvedDate],CAST(cancelApprovedDate AS DATE) [cancelApprovedDate] INTO #TEMPEODTABLE FROM remitTran WITH (NOLOCK) WHERE cancelEOD IS NULL AND cAmt IS NOT NULL AND cancelApprovedDate IS NOT NULL AND id = @TRANID --AND cancelApprovedDate BETWEEN @DATE AND @DATE + ' 23:59:59' GROUP BY sHub,sSuperAgent,sAgent,CAST(approvedDate AS DATE),CAST(cancelApprovedDate AS DATE) IF NOT EXISTS(SELECT TOP 1 * FROM #TEMPEODTABLE) BEGIN EXEC proc_errorHandler 1, 'NO TRN FOUND', NULL RETURN; END ---###### CREATING TEMP TABLE #tempTRNEOD CREATE TABLE #tempTRNEOD ( SN INT IDENTITY(1,1),ACCT_NUM VARCHAR(30),TRN_TYPE CHAR(2),amt MONEY,acct_rpt_code INT ) IF EXISTS(SELECT 'X' FROM #TEMPEODTABLE WHERE CAST(approvedDate AS DATE) = CAST(cancelApprovedDate AS DATE)) BEGIN INSERT INTO #tempTRNEOD SELECT * FROM ( --- SENDING AGENT PRINCIPAL AC SELECT a.acct_num AS ACCT_NUM,'CR' AS TRN_TYPE ,SUM(ISNULL(cAmt,0))AS amt,a.acct_rpt_code FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sAgent WHERE a.acct_rpt_code=22 GROUP BY acct_num,a.acct_rpt_code UNION ALL --- IME HO PRINCIPAL AC SELECT @IMEHO_PRINCIPAL AS ACCT_NUM,'DR' AS TRN_TYPE ,SUM(ISNULL(cAmt,0))AS amt,null FROM #TEMPEODTABLE UNION ALL -- IME HO COMMISSION AC SELECT @IMEHO_REC AS ACCT_NUM,'CR' AS TRN_TYPE ,SUM(ISNULL(sHubComm,0))AS amt,NULL FROM #TEMPEODTABLE UNION ALL --- SENDING AGENT COMMISSION AC SELECT a.acct_num AS ACCT_NUM,'DR' AS TRN_TYPE ,SUM(ISNULL(sAgentComm,0))AS amt,a.acct_rpt_code FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sAgent WHERE a.acct_rpt_code=2 GROUP BY acct_num,a.acct_rpt_code UNION ALL --- SUPER AGENT COMMISSION AC SELECT a.acct_num AS ACCT_NUM,'DR' AS TRN_TYPE , SUM(ISNULL(P.sSuperAgentComm,0))AS amt,a.acct_rpt_code FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sSuperAgent GROUP BY acct_num,a.acct_rpt_code UNION ALL --- COMMISSION INCOME COMMISSION AC SELECT @COMMISSION_INCOME AS ACCT_NUM,'DR' AS TRN_TYPE ,SUM(ISNULL(SHubComm,0)-(ISNULL(sAgentComm,0)+ISNULL(sSuperAgentComm,0)))AS amt,NULL FROM #TEMPEODTABLE )a WHERE amt<>0 END --IF NOT EXISTS(SELECT 'X' FROM #TEMPEODTABLE WHERE CAST(approvedDate AS DATE)=CAST(cancelApprovedDate AS DATE)) ELSE BEGIN INSERT INTO #tempTRNEOD SELECT * FROM ( --- SENDING AGENT PRINCIPAL AC SELECT a.acct_num AS ACCT_NUM,'CR' AS TRN_TYPE ,SUM(ISNULL(tAmt,0))AS amt,a.acct_rpt_code FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sAgent WHERE a.acct_rpt_code=22 GROUP BY acct_num,a.acct_rpt_code UNION ALL --- IME HO PRINCIPAL AC SELECT @IMEHO_PRINCIPAL AS ACCT_NUM,'DR' AS TRN_TYPE ,SUM(ISNULL(tAmt,0))AS amt,null FROM #TEMPEODTABLE )a WHERE amt<>0 END --select * from #tempTRNEOD --select * from #TempEODTable --RETURN DECLARE @totalDR MONEY,@totalCR MONEY SELECT @totalDR=isnull(sum(amt),0) from #tempTRNEOD WITH (NOLOCK) WHERE TRN_TYPE='dr' GROUP BY TRN_TYPE SELECT @totalCR=isnull(sum(amt),0) from #tempTRNEOD WITH (NOLOCK) WHERE TRN_TYPE='cr' group by TRN_TYPE -- conditions 1 for Total DR CR equal IF ISNULL(@totalDR,0)<>ISNULL(@totalCR,0) BEGIN --SELECT 'DR and CR amount not Equal' AS remarks EXEC proc_errorHandler 1,'DR and CR amount not Equal', NULL RETURN END SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION SELECT @ref_num=ISNULL(TRAN_VOUCHER,1) FROM billSetting UPDATE billSetting SET TRAN_VOUCHER = ISNULL(TRAN_VOUCHER,1)+1 -------##################### UPPDATE REMITTRAN TABLE SENDEOD FLAG UPDATE remitTran SET cancelEOD='Y' FROM remitTran WITH (NOLOCK) WHERE cancelEOD IS NULL AND cancelApprovedDate IS NOT NULL AND id = @TRANID --AND cancelApprovedDate BETWEEN @DATE AND @DATE + ' 23:59:59' --### UPDATE CLR BAL AMT UPDATE ac_master SET CLR_BAL_AMT=CASE WHEN t.TRN_TYPE='DR' THEN ISNULL(CLR_BAL_AMT,0) - ISNULL(t.amt,0) ELSE ISNULL(CLR_BAL_AMT,0) - ISNULL(-t.amt,0) END FROM ac_master AS a INNER JOIN #tempTRNEOD AS t ON a.acct_num = t.acct_num ---------------------------------------------- SELECT @intPartId=max(SN) FROM #tempTRNEOD SET @intTotalRows=1 WHILE @intPartId >= @intTotalRows BEGIN SELECT @strAccountNum=ACCT_NUM,@strTranType=TRN_TYPE ,@TRN_AMT = amt FROM #tempTRNEOD WHERE SN=@intTotalRows Exec ProcDrCrUpdateFinal @strTranType,@strAccountNum,@TRN_AMT SET @intTotalRows=@intTotalRows+1 END --------------------------------------------- INSERT INTO tran_master (entry_user_id,acc_num,gl_sub_head_code,rpt_code,part_tran_type ,ref_num,tran_amt,tran_date,tran_type,company_id,part_tran_srl_num,created_date,acct_type_code) SELECT @USER,c.acct_num,dbo.FNAGetGLCode(c.acct_num),'CANCEL' ,TRN_TYPE ,@ref_num,amt,GETDATE(),'t','1',ROW_NUMBER() OVER(ORDER BY TRN_TYPE desc) AS SrNo,GETDATE(),acct_rpt_code from #tempTRNEOD c INSERT INTO [tran_masterDetail]([ref_num] ,[tran_particular],company_id,tranDate,tran_type) SELECT TOP 1 @ref_num,'EOD of cancel transaction: '+ CONVERT(VARCHAR(20), GETDATE(),102) ,'1',GETDATE(),'t' --SELECT * FROM tran_master WHERE rpt_code='SEND' --SELECT * FROM tran_masterDetail COMMIT TRANSACTION --ROLLBACK TRANSACTION --EXEC proc_errorHandler 0,'EOD Update successsfully for cancel transaction please check daily reports', NULL END GO