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.

329 lines
21 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_PostAcDepositV3] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_PostAcDepositV3]
  9. @flag VARCHAR(50)
  10. ,@pAgent INT = NULL
  11. ,@mapCodeInt VARCHAR(100) = NULL
  12. ,@tranIds VARCHAR(MAX) = NULL
  13. ,@fromDate VARCHAR(25) = NULL
  14. ,@toDate VARCHAR(25) = NULL
  15. ,@controlNo VARCHAR(50) = NULL
  16. ,@remarks VARCHAR(MAX) = NULL
  17. ,@user VARCHAR(50) = NULL
  18. ,@fromTime VARCHAR(20) = NULL
  19. ,@toTime VARCHAR(20) = NULL
  20. AS
  21. SET NOCOUNT ON;
  22. SET XACT_ABORT ON;
  23. BEGIN TRY
  24. DECLARE
  25. @pAgentName varchar(200)
  26. ,@pBranch int
  27. ,@pBranchName varchar(200)
  28. ,@pState varchar(200)
  29. ,@pDistrict varchar(200)
  30. ,@pLocation varchar(50)
  31. ,@tranNos VARCHAR(MAX)
  32. ,@sql VARCHAR(MAX)
  33. /*
  34. ALTER TABLE remitTran ADD postedBy VARCHAR(50),postedDate datetime,postedDateLocal datetime
  35. Exec proc_PostAcDepositV3 @flag='pendingList',@user='admin'
  36. Exec proc_PostAcDepositV3 @flag='pendingListDom',@mapCodeInt = '11300000',@user='dipesh'
  37. EXEC proc_PostAcDepositV3 @flag = 'domList', @user = 'dipesh', @bankId = '11300000'
  38. */
  39. IF @fromTime IS NOT NULL
  40. SET @fromDate = @fromDate+' '+@fromTime
  41. ELSE
  42. SET @fromDate = @fromDate+' 00:00:00'
  43. IF @toTime IS NOT NULL
  44. SET @toDate = @toDate+' '+@toTime
  45. ELSE
  46. SET @toDate = @toDate+' 23:59:59'
  47. IF @flag = 'pending'
  48. BEGIN
  49. SET @sql =
  50. 'SELECT
  51. pAgent = pAgent
  52. ,pAgentName = pAgentName
  53. ,txnCount = COUNT(*)
  54. ,amt = SUM(pAmt)
  55. FROM remitTran rt WITH(NOLOCK)
  56. WHERE 1=1'
  57. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  58. BEGIN
  59. SET @sql = @sql +' AND rt.createdDate between '''+@fromDate+''' and '''+@toDate+''''
  60. END
  61. SET @sql = @sql +'
  62. AND paymentMethod in (''Bank Deposit'' ,''Relief Fund'')
  63. AND tranStatus = ''Payment''
  64. AND payStatus = ''Unpaid''
  65. AND tranType = ''I''
  66. GROUP BY pAgent, pAgentName'
  67. EXEC(@sql)
  68. SET @sql= 'SELECT
  69. pAgent = rt.pBank
  70. ,pAgentName = rt.pBankName
  71. ,txnCount = COUNT(*)
  72. ,amt = SUM(rt.pAmt)
  73. FROM remitTran rt WITH(NOLOCK)
  74. INNER JOIN agentMaster am on rt.pBank=am.agentId
  75. WHERE 1=1
  76. AND (am.agentGrp =''4301'' OR am.agentGrp IS NULL)
  77. AND (am.agentType=''2903'' OR am.agentType=''2905'')
  78. '
  79. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  80. SET @sql = @sql +' AND rt.createdDate between '''+@fromDate+''' and '''+@toDate+''''
  81. SET @sql = @sql +'
  82. AND paymentMethod = ''Bank Deposit''
  83. AND tranStatus = ''Payment''
  84. AND payStatus = ''Unpaid''
  85. AND tranType = ''D''
  86. GROUP BY pBank, pBankName'
  87. EXEC(@sql)
  88. SET @sql= 'SELECT
  89. pAgent = rt.pBank
  90. ,pAgentName = rt.pBankName
  91. ,txnCount = COUNT(*)
  92. ,amt = SUM(rt.pAmt)
  93. FROM remitTran rt WITH(NOLOCK)
  94. INNER JOIN agentMaster am on rt.pBank=am.agentId
  95. WHERE am.agentGrp=''8026'' AND am.agentType IN(''2903'',''2904'')
  96. '
  97. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  98. SET @sql = @sql +' AND rt.createdDate between '''+@fromDate+''' and '''+@toDate+''''
  99. SET @sql = @sql +'
  100. AND rt.paymentMethod = ''Bank Deposit''
  101. AND rt.tranStatus = ''Payment''
  102. AND rt.payStatus = ''Unpaid''
  103. AND rt.tranType = ''D''
  104. GROUP BY pBank, pBankName'
  105. print @sql
  106. EXEC(@sql)
  107. RETURN
  108. END
  109. IF @flag = 'pendingIntl'
  110. BEGIN
  111. SET @sql =
  112. 'SELECT
  113. [Control No] = dbo.FNADecryptString(rt.controlNo)
  114. ,[Tran No] = rt.id
  115. ,[Sending Country] = rt.sCountry
  116. ,[Sending Agent] = rt.sAgentName
  117. ,[Bank Name] = rt.pBankName
  118. ,[Branch Name] = rt.pBankBranchName
  119. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  120. ,[Bank A/C No] = rt.accountNo
  121. ,[Confirm Date] = rt.approvedDate
  122. ,[Payout Amount] = rt.pAmt
  123. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  124. FROM [dbo].remitTran rt WITH(NOLOCK)
  125. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  126. WHERE 1=1'
  127. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  128. SET @sql = @sql +' AND rt.createdDate between '''+@fromDate+''' and '''+@toDate+''''
  129. SET @sql = @sql +'
  130. AND pAgent = '''+CAST(@pAgent AS VARCHAR)+'''
  131. AND tranStatus = ''Payment''
  132. AND paymentMethod IN (''Bank Deposit'' ,''Relief Fund'')
  133. AND payStatus = ''Unpaid''
  134. AND rt.sCountry <> ''Nepal''
  135. AND rt.tranType = ''I''
  136. ORDER BY [Unpaid Days] DESC'
  137. EXEC(@sql)
  138. RETURN
  139. END
  140. IF @flag = 'pendingDom'
  141. BEGIN
  142. SET @sql =
  143. 'SELECT
  144. [Control No] = dbo.FNADecryptString(rt.controlNo)
  145. ,[Tran No] = rt.id
  146. ,[Sending Agent] = rt.sAgentName
  147. ,[Bank Name] = rt.pBankName
  148. ,[Branch Name] = rt.pBankBranchName
  149. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  150. ,[Bank A/C No] = rt.accountNo
  151. ,[Confirm Date] = rt.approvedDate
  152. ,[Payout Amount] = rt.pAmt
  153. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  154. FROM [dbo].remitTran rt WITH(NOLOCK)
  155. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  156. WHERE 1=1'
  157. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  158. SET @sql = @sql +' AND rt.createdDate between '''+@fromDate+''' and '''+@toDate+''''
  159. SET @sql = @sql +'
  160. AND pBank = '''+CAST(@pAgent AS VARCHAR)+'''
  161. AND tranStatus = ''Payment''
  162. AND paymentMethod = ''Bank Deposit''
  163. AND payStatus = ''Unpaid''
  164. AND rt.sCountry = ''Nepal''
  165. AND tranType = ''D''
  166. ORDER BY [Unpaid Days] DESC'
  167. EXEC(@sql)
  168. RETURN
  169. END
  170. IF @flag = 'postIntl'
  171. BEGIN
  172. DECLARE @tranDetail TABLE(id INT IDENTITY(1,1), tranId VARCHAR(50), controlNo VARCHAR(50), sRouteId VARCHAR(5))
  173. SET @sql = 'SELECT id, controlNo, sRouteId FROM dbo.remitTran WITH(NOLOCK) WHERE id IN (' + @tranIds + ') AND tranStatus = ''Payment'' AND payStatus = ''Unpaid'''
  174. INSERT INTO @tranDetail
  175. EXEC (@sql)
  176. IF NOT EXISTS(SELECT 'X' FROM @tranDetail)
  177. BEGIN
  178. EXEC proc_errorHandler 1, 'No Transaction Found.', NULL
  179. RETURN
  180. END
  181. BEGIN TRAN
  182. UPDATE remitTran SET
  183. --,tranStatus = 'POST'
  184. payStatus = 'Post'
  185. ,postedBy = @user
  186. ,postedDate = dbo.FNAGetDateInNepalTZ()
  187. ,postedDateLocal = GETDATE()
  188. FROM remitTran rt WITH(NOLOCK)
  189. INNER JOIN @tranDetail td on rt.id = td.tranId
  190. COMMIT TRAN
  191. EXEC proc_errorHandler 0, 'Transaction(s) post successfully', NULL
  192. RETURN
  193. END
  194. --ALTER TABLE remitTran ADD postedBy VARCHAR(50),postedDate DATETIME,postedDateLocal DATETIME
  195. IF @flag = 'postDom'
  196. BEGIN
  197. DECLARE @tranDomDetail TABLE(id INT IDENTITY(1,1),tranId VARCHAR(50),controlNo VARCHAR(50), controlNoEncInficare VARCHAR(20))
  198. DECLARE @sqlDom VARCHAR(MAX)
  199. SET @sqlDom = 'SELECT id, controlNo, controlNoEncInficare = dbo.encryptDbLocal(dbo.FNADecryptString(controlNo)) FROM dbo.remitTran WITH(NOLOCK) WHERE id IN (' + @tranIds + ') AND tranStatus = ''Payment'' AND payStatus = ''Unpaid'''
  200. INSERT INTO @tranDomDetail
  201. EXEC (@sqlDom)
  202. IF NOT EXISTS(SELECT 'X' FROM @tranDomDetail)
  203. BEGIN
  204. EXEC proc_errorHandler 1, 'No Transaction Found.', NULL
  205. RETURN
  206. END
  207. BEGIN TRAN
  208. UPDATE remitTran SET
  209. --,tranStatus = 'POST'
  210. payStatus = 'Post'
  211. ,postedBy = @user
  212. ,postedDate = dbo.FNAGetDateInNepalTZ()
  213. ,postedDateLocal = GETDATE()
  214. FROM remitTran rt WITH(NOLOCK)
  215. INNER JOIN @tranDomDetail td ON rt.id = td.tranId
  216. COMMIT TRAN
  217. EXEC proc_errorHandler 0, 'Transaction(s) post successfully', NULL
  218. END
  219. IF @flag = 'post-unpaid'
  220. BEGIN
  221. DECLARE @tranId BIGINT,@encryptedControlNo VARCHAR(50)
  222. SELECT @tranId = id,@encryptedControlNo = controlNo ,@remarks ='POST TO UNPAID: '+ ISNULL(@remarks,'')
  223. FROM remitTran rt WITH(NOLOCK) WHERE controlNo = dbo.fnaEncryptString(@controlNo)
  224. BEGIN TRANSACTION
  225. UPDATE remitTran SET payStatus = 'Unpaid' WHERE controlNo = @encryptedControlNo
  226. EXEC proc_transactionLogs @flag = 'i',@user = @user, @tranId = @tranId, @message = @remarks, @msgType = 'MODIFY', @controlNo = @encryptedControlNo
  227. IF @@TRANCOUNT > 0
  228. COMMIT TRANSACTION
  229. EXEC [proc_errorHandler] 0, 'Transaction has been updated successfully.', @controlNo
  230. END
  231. IF @flag = 'pendingCooperative'
  232. BEGIN
  233. SET @sql =
  234. 'SELECT
  235. [Control No] = dbo.FNADecryptString(rt.controlNo)
  236. ,[Tran No] = rt.id
  237. ,[Sending Agent] = rt.sAgentName
  238. ,[Bank Name] = rt.pBankName
  239. ,[Branch Name] = rt.pBankBranchName
  240. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  241. ,[Bank A/C No] = rt.accountNo
  242. ,[Confirm Date] = rt.approvedDate
  243. ,[Payout Amount] = rt.pAmt
  244. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  245. FROM [dbo].remitTran rt WITH(NOLOCK)
  246. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  247. INNER JOIN agentMaster am on rt.pBank=am.agentId
  248. WHERE am.agentGrp=''8026'' AND am.agentType IN(''2903'',''2904'')
  249. '
  250. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  251. SET @sql = @sql +' AND rt.createdDate between '''+@fromDate+''' and '''+@toDate+''''
  252. SET @sql = @sql +'
  253. AND pBank = '''+CAST(@pAgent AS VARCHAR)+'''
  254. AND tranStatus = ''Payment''
  255. AND paymentMethod = ''Bank Deposit''
  256. AND payStatus = ''Unpaid''
  257. AND rt.sCountry = ''Nepal''
  258. AND tranType = ''D''
  259. ORDER BY [Unpaid Days] DESC'
  260. print @sql
  261. EXEC(@sql)
  262. RETURN
  263. END
  264. IF @flag = 'postCop'
  265. BEGIN
  266. DECLARE @tranCopDetail TABLE(id INT IDENTITY(1,1),tranId VARCHAR(50),controlNo VARCHAR(50), controlNoEncInficare VARCHAR(20))
  267. DECLARE @sqlCop VARCHAR(MAX)
  268. SET @sqlCop = 'SELECT id, controlNo, controlNoEncInficare = dbo.encryptDbLocal(dbo.FNADecryptString(controlNo)) FROM dbo.remitTran WITH(NOLOCK) WHERE id IN (' + @tranIds + ') AND tranStatus = ''Payment'' AND payStatus = ''Unpaid'''
  269. INSERT INTO @tranCopDetail
  270. EXEC (@sqlCop)
  271. IF NOT EXISTS(SELECT 'X' FROM @tranCopDetail)
  272. BEGIN
  273. EXEC proc_errorHandler 1, 'No Transaction Found.', NULL
  274. RETURN
  275. END
  276. BEGIN TRAN
  277. UPDATE remitTran SET
  278. --,tranStatus = 'POST'
  279. payStatus = 'Post'
  280. ,postedBy = @user
  281. ,postedDate = dbo.FNAGetDateInNepalTZ()
  282. ,postedDateLocal = GETDATE()
  283. FROM remitTran rt WITH(NOLOCK)
  284. INNER JOIN @tranCopDetail td ON rt.id = td.tranId
  285. COMMIT TRAN
  286. EXEC proc_errorHandler 0, 'Transaction(s) post successfully', NULL
  287. END
  288. END TRY
  289. BEGIN CATCH
  290. IF @@TRANCOUNT > 0
  291. ROLLBACK TRANSACTION
  292. DECLARE @errorMessage VARCHAR(MAX)
  293. SET @errorMessage = ERROR_MESSAGE()
  294. EXEC proc_errorHandler 1, @errorMessage, NULL
  295. END CATCH
  296. GO