You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

236 lines
14 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_cancelEODRemit] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- exec proc_cancelEODRemit @user='admin',@TRANID='297447'
  9. -- CANCEL TRANSACTION EOD process
  10. CREATE PROC [dbo].[proc_cancelEODRemit]
  11. @USER VARCHAR(200) ,
  12. --@DATE VARCHAR(20)
  13. @TRANID VARCHAR(50)
  14. AS
  15. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#TEMPEODTABLE]') AND type in (N'U'))
  16. DROP TABLE [dbo].[#TEMPEODTABLE]
  17. --go
  18. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#tempTRNEOD]') AND type in (N'U'))
  19. DROP TABLE [dbo].[#tempTRNEOD]
  20. --go
  21. --DECLARE @USER VARCHAR(100),@DATE VARCHAR(20)
  22. --SET @USER='SYSTEM'
  23. --SET @DATE = '2012-03-14'
  24. BEGIN
  25. SET NOCOUNT ON;
  26. SET XACT_ABORT ON;
  27. DECLARE
  28. @ref_num INT
  29. ,@intPartId INT
  30. ,@intTotalRows INT
  31. ,@strAccountNum VARCHAR(20)
  32. ,@strTranType VARCHAR(20)
  33. ,@TRN_AMT MONEY
  34. ,@IMEHO_PRINCIPAL VARCHAR(30)
  35. ,@IMEHO_REC VARCHAR(30)
  36. ,@COMMISSION_INCOME VARCHAR(30)
  37. SET @IMEHO_PRINCIPAL = '301000251'
  38. SET @IMEHO_REC = '501000455'
  39. SET @COMMISSION_INCOME = '801000511'
  40. SELECT sHub,sSuperAgent,sAgent,SUM(ISNULL(cAmt,0)) [cAmt],SUM(ISNULL(tAmt,0)) [tAMT],SUM(ISNULL(sSuperAgentComm,0)) [sSuperAgentComm]
  41. ,SUM(isnull(sHubComm,0)) [sHubComm],SUM(isnull(sAgentComm,0)) [sAgentComm]
  42. ,CAST(approvedDate AS DATE) [approvedDate],CAST(cancelApprovedDate AS DATE) [cancelApprovedDate]
  43. INTO #TEMPEODTABLE
  44. FROM remitTran WITH (NOLOCK)
  45. WHERE cancelEOD IS NULL AND cAmt IS NOT NULL
  46. AND cancelApprovedDate IS NOT NULL AND id = @TRANID
  47. --AND cancelApprovedDate BETWEEN @DATE AND @DATE + ' 23:59:59'
  48. GROUP BY sHub,sSuperAgent,sAgent,CAST(approvedDate AS DATE),CAST(cancelApprovedDate AS DATE)
  49. IF NOT EXISTS(SELECT TOP 1 * FROM #TEMPEODTABLE)
  50. BEGIN
  51. EXEC proc_errorHandler 1, '<FONT COLOR="RED">NO TRN FOUND</FONT>', NULL
  52. RETURN;
  53. END
  54. ---###### CREATING TEMP TABLE #tempTRNEOD
  55. CREATE TABLE #tempTRNEOD (
  56. SN INT IDENTITY(1,1),ACCT_NUM VARCHAR(30),TRN_TYPE CHAR(2),amt MONEY,acct_rpt_code INT
  57. )
  58. IF EXISTS(SELECT 'X' FROM #TEMPEODTABLE WHERE CAST(approvedDate AS DATE) = CAST(cancelApprovedDate AS DATE))
  59. BEGIN
  60. INSERT INTO #tempTRNEOD
  61. SELECT * FROM (
  62. --- SENDING AGENT PRINCIPAL AC
  63. SELECT a.acct_num AS ACCT_NUM,'CR' AS TRN_TYPE
  64. ,SUM(ISNULL(cAmt,0))AS amt,a.acct_rpt_code
  65. FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sAgent
  66. WHERE a.acct_rpt_code=22
  67. GROUP BY acct_num,a.acct_rpt_code
  68. UNION ALL
  69. --- IME HO PRINCIPAL AC
  70. SELECT @IMEHO_PRINCIPAL AS ACCT_NUM,'DR' AS TRN_TYPE
  71. ,SUM(ISNULL(cAmt,0))AS amt,null
  72. FROM #TEMPEODTABLE
  73. UNION ALL
  74. -- IME HO COMMISSION AC
  75. SELECT @IMEHO_REC AS ACCT_NUM,'CR' AS TRN_TYPE
  76. ,SUM(ISNULL(sHubComm,0))AS amt,NULL
  77. FROM #TEMPEODTABLE
  78. UNION ALL
  79. --- SENDING AGENT COMMISSION AC
  80. SELECT a.acct_num AS ACCT_NUM,'DR' AS TRN_TYPE
  81. ,SUM(ISNULL(sAgentComm,0))AS amt,a.acct_rpt_code
  82. FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sAgent
  83. WHERE a.acct_rpt_code=2
  84. GROUP BY acct_num,a.acct_rpt_code
  85. UNION ALL
  86. --- SUPER AGENT COMMISSION AC
  87. SELECT a.acct_num AS ACCT_NUM,'DR' AS TRN_TYPE
  88. , SUM(ISNULL(P.sSuperAgentComm,0))AS amt,a.acct_rpt_code
  89. FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sSuperAgent
  90. GROUP BY acct_num,a.acct_rpt_code
  91. UNION ALL
  92. --- COMMISSION INCOME COMMISSION AC
  93. SELECT @COMMISSION_INCOME AS ACCT_NUM,'DR' AS TRN_TYPE
  94. ,SUM(ISNULL(SHubComm,0)-(ISNULL(sAgentComm,0)+ISNULL(sSuperAgentComm,0)))AS amt,NULL
  95. FROM #TEMPEODTABLE
  96. )a
  97. WHERE amt<>0
  98. END
  99. --IF NOT EXISTS(SELECT 'X' FROM #TEMPEODTABLE WHERE CAST(approvedDate AS DATE)=CAST(cancelApprovedDate AS DATE))
  100. ELSE
  101. BEGIN
  102. INSERT INTO #tempTRNEOD
  103. SELECT * FROM (
  104. --- SENDING AGENT PRINCIPAL AC
  105. SELECT a.acct_num AS ACCT_NUM,'CR' AS TRN_TYPE
  106. ,SUM(ISNULL(tAmt,0))AS amt,a.acct_rpt_code
  107. FROM #TEMPEODTABLE p JOIN ac_master a ON a.agent_id=p.sAgent
  108. WHERE a.acct_rpt_code=22
  109. GROUP BY acct_num,a.acct_rpt_code
  110. UNION ALL
  111. --- IME HO PRINCIPAL AC
  112. SELECT @IMEHO_PRINCIPAL AS ACCT_NUM,'DR' AS TRN_TYPE
  113. ,SUM(ISNULL(tAmt,0))AS amt,null
  114. FROM #TEMPEODTABLE
  115. )a
  116. WHERE amt<>0
  117. END
  118. --select * from #tempTRNEOD
  119. --select * from #TempEODTable
  120. --RETURN
  121. DECLARE @totalDR MONEY,@totalCR MONEY
  122. SELECT @totalDR=isnull(sum(amt),0) from #tempTRNEOD WITH (NOLOCK)
  123. WHERE TRN_TYPE='dr' GROUP BY TRN_TYPE
  124. SELECT @totalCR=isnull(sum(amt),0) from #tempTRNEOD WITH (NOLOCK)
  125. WHERE TRN_TYPE='cr' group by TRN_TYPE
  126. -- conditions 1 for Total DR CR equal
  127. IF ISNULL(@totalDR,0)<>ISNULL(@totalCR,0)
  128. BEGIN
  129. --SELECT '<FONT COLOR="RED">DR and CR amount not Equal</font>' AS remarks
  130. EXEC proc_errorHandler 1,'<FONT COLOR="RED">DR and CR amount not Equal</font>', NULL
  131. RETURN
  132. END
  133. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
  134. BEGIN TRANSACTION
  135. SELECT @ref_num=ISNULL(TRAN_VOUCHER,1) FROM billSetting
  136. UPDATE billSetting SET TRAN_VOUCHER = ISNULL(TRAN_VOUCHER,1)+1
  137. -------##################### UPPDATE REMITTRAN TABLE SENDEOD FLAG
  138. UPDATE remitTran SET cancelEOD='Y'
  139. FROM remitTran WITH (NOLOCK)
  140. WHERE cancelEOD IS NULL
  141. AND cancelApprovedDate IS NOT NULL AND id = @TRANID
  142. --AND cancelApprovedDate BETWEEN @DATE AND @DATE + ' 23:59:59'
  143. --### UPDATE CLR BAL AMT
  144. UPDATE ac_master SET
  145. CLR_BAL_AMT=CASE
  146. WHEN t.TRN_TYPE='DR' THEN ISNULL(CLR_BAL_AMT,0) - ISNULL(t.amt,0)
  147. ELSE ISNULL(CLR_BAL_AMT,0) - ISNULL(-t.amt,0)
  148. END
  149. FROM ac_master AS a
  150. INNER JOIN #tempTRNEOD AS t ON a.acct_num = t.acct_num
  151. ----------------------------------------------
  152. SELECT @intPartId=max(SN) FROM #tempTRNEOD
  153. SET @intTotalRows=1
  154. WHILE @intPartId >= @intTotalRows
  155. BEGIN
  156. SELECT @strAccountNum=ACCT_NUM,@strTranType=TRN_TYPE ,@TRN_AMT = amt
  157. FROM #tempTRNEOD WHERE SN=@intTotalRows
  158. Exec ProcDrCrUpdateFinal @strTranType,@strAccountNum,@TRN_AMT
  159. SET @intTotalRows=@intTotalRows+1
  160. END
  161. ---------------------------------------------
  162. INSERT INTO tran_master (entry_user_id,acc_num,gl_sub_head_code,rpt_code,part_tran_type
  163. ,ref_num,tran_amt,tran_date,tran_type,company_id,part_tran_srl_num,created_date,acct_type_code)
  164. SELECT @USER,c.acct_num,dbo.FNAGetGLCode(c.acct_num),'CANCEL' ,TRN_TYPE
  165. ,@ref_num,amt,GETDATE(),'t','1',ROW_NUMBER() OVER(ORDER BY TRN_TYPE desc) AS SrNo,GETDATE(),acct_rpt_code
  166. from #tempTRNEOD c
  167. INSERT INTO [tran_masterDetail]([ref_num] ,[tran_particular],company_id,tranDate,tran_type)
  168. SELECT TOP 1 @ref_num,'EOD of cancel transaction: '+ CONVERT(VARCHAR(20), GETDATE(),102) ,'1',GETDATE(),'t'
  169. --SELECT * FROM tran_master WHERE rpt_code='SEND'
  170. --SELECT * FROM tran_masterDetail
  171. COMMIT TRANSACTION
  172. --ROLLBACK TRANSACTION
  173. --EXEC proc_errorHandler 0,'<font color="green">EOD Update successsfully for cancel transaction please check daily reports</font>', NULL
  174. END
  175. GO