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.

463 lines
15 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_PayAcDepositV3] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_PayAcDepositV3]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_PayAcDepositV3] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE proc [dbo].[proc_PayAcDepositV3]
  12. @flag VARCHAR(50)
  13. ,@pAgent INT = NULL
  14. ,@mapCodeInt VARCHAR(100) = NULL
  15. ,@tranIds VARCHAR(MAX) = NULL
  16. ,@fromDate VARCHAR(20) = NULL
  17. ,@toDate VARCHAR(20) = NULL
  18. ,@user VARCHAR(50) = NULL
  19. ,@fromTime VARCHAR(20) = NULL
  20. ,@toTime VARCHAR(20) = NULL
  21. ,@isHOPaid CHAR(1) = NULL
  22. AS
  23. SET NOCOUNT ON;
  24. SET XACT_ABORT ON;
  25. DECLARE @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. Exec proc_PayAcDepositV3 @flag='pendingList',@user='admin'
  35. Exec proc_PayAcDepositV3 @flag='pendingListDom',@mapCodeInt = '11300000',@user='dipesh'
  36. EXEC proc_PayAcDepositV3 @flag = 'domList', @user = 'dipesh', @bankId = '11300000'
  37. */
  38. IF @fromTime IS NOT NULL
  39. SET @fromDate = @fromDate+' '+@fromTime
  40. ELSE
  41. SET @fromDate = @fromDate+' 00:00:00'
  42. IF @toTime IS NOT NULL
  43. SET @toDate = @toDate+' '+@toTime
  44. ELSE
  45. SET @toDate = @toDate+' 23:59:59'
  46. IF @flag = 'pending'
  47. BEGIN
  48. SET @sql =
  49. 'SELECT
  50. pAgent = pAgent
  51. ,pAgentName = pAgentName
  52. ,txnCount = COUNT(*)
  53. ,amt = SUM(pAmt)
  54. FROM remitTran rt WITH(NOLOCK)
  55. WHERE 1=1'
  56. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  57. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  58. SET @sql = @sql +'
  59. AND paymentMethod in (''Bank Deposit'' ,''Relief Fund'')
  60. AND tranStatus = ''Payment''
  61. AND payStatus = ''Post''
  62. AND tranType = ''I''
  63. --AND ISNULL(expectedPayoutAgent,'''') <> ''iso''
  64. GROUP BY pAgent, pAgentName'
  65. EXEC(@sql)
  66. SET @sql= 'SELECT
  67. pAgent = rt.pBank
  68. ,pAgentName = rt.pBankName
  69. ,txnCount = COUNT(*)
  70. ,amt = SUM(rt.pAmt)
  71. FROM remitTran rt WITH(NOLOCK)
  72. INNER JOIN agentMaster am on rt.pBank=am.agentId
  73. WHERE 1=1
  74. AND (am.agentGrp =''4301'' OR am.agentGrp IS NULL)
  75. AND (am.agentType=''2903'' OR am.agentType=''2905'')
  76. '
  77. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  78. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  79. SET @sql = @sql +'
  80. AND paymentMethod = ''Bank Deposit''
  81. AND tranStatus = ''Payment''
  82. AND payStatus = ''Post''
  83. AND tranType = ''D''
  84. AND ISNULL(expectedPayoutAgent,'''') <> ''iso''
  85. GROUP BY pBank, pBankName'
  86. EXEC(@sql)
  87. SET @sql= 'SELECT
  88. pAgent = rt.pBank
  89. ,pAgentName = rt.pBankName
  90. ,txnCount = COUNT(*)
  91. ,amt = SUM(rt.pAmt)
  92. FROM remitTran rt WITH(NOLOCK)
  93. INNER JOIN agentMaster am on rt.pBank=am.agentId
  94. WHERE am.agentGrp=''8026'' AND am.agentType IN(''2903'',''2904'')
  95. '
  96. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  97. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  98. SET @sql = @sql +'
  99. AND paymentMethod = ''Bank Deposit''
  100. AND tranStatus = ''Payment''
  101. AND payStatus = ''Post''
  102. AND tranType = ''D''
  103. AND ISNULL(expectedPayoutAgent,'''') <> ''iso''
  104. GROUP BY pBank, pBankName'
  105. EXEC(@sql)
  106. RETURN
  107. END
  108. IF @flag = 'pendingIntl'
  109. BEGIN
  110. SET @sql =
  111. 'SELECT
  112. [isApi] = ''N''
  113. ,rowId = ''''
  114. ,[Control No] = dbo.FNADecryptString(rt.controlNo)
  115. ,[Tran No] = rt.id
  116. ,[Sending Country] = rt.sCountry
  117. ,[Sending Agent] = rt.sAgentName
  118. ,[Bank Name] = rt.pBankName
  119. ,[Branch Name] = rt.pBankBranchName
  120. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  121. ,[Bank A/C No] = rt.accountNo
  122. ,[Confirm Date] = rt.approvedDate
  123. ,[Payout Amount] = rt.pAmt
  124. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  125. FROM [dbo].remitTran rt WITH(NOLOCK)
  126. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  127. WHERE 1=1'
  128. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  129. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  130. SET @sql = @sql +'
  131. AND pAgent = '''+CAST(@pAgent AS VARCHAR)+'''
  132. AND tranStatus = ''Payment''
  133. AND paymentMethod IN (''Bank Deposit'' ,''Relief Fund'')
  134. AND payStatus = ''Post''
  135. AND rt.sCountry <> ''Nepal''
  136. AND rt.tranType = ''I''
  137. --AND ISNULL(expectedPayoutAgent,'''') <> ''iso''
  138. ORDER BY [Unpaid Days] DESC'
  139. EXEC(@sql)
  140. RETURN
  141. END
  142. IF @flag = 'pendingDom'
  143. BEGIN
  144. SET @sql =
  145. 'SELECT
  146. [Control No] = dbo.FNADecryptString(rt.controlNo)
  147. ,[Tran No] = rt.id
  148. ,[Sending Agent] = rt.sAgentName
  149. ,[Bank Name] = rt.pBankName
  150. ,[Branch Name] = rt.pBankBranchName
  151. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  152. ,[Bank A/C No] = rt.accountNo
  153. ,[Confirm Date] = rt.approvedDate
  154. ,[Payout Amount] = rt.pAmt
  155. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  156. FROM [dbo].remitTran rt WITH(NOLOCK)
  157. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  158. WHERE 1=1'
  159. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  160. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  161. SET @sql = @sql +'
  162. AND rt.pBank = '''+CAST(@pAgent AS VARCHAR)+'''
  163. AND tranStatus = ''Payment''
  164. AND paymentMethod = ''Bank Deposit''
  165. AND payStatus = ''Post''
  166. AND rt.sCountry = ''Nepal''
  167. AND tranType = ''D''
  168. AND ISNULL(expectedPayoutAgent,'''') <> ''iso''
  169. ORDER BY [Unpaid Days] DESC'
  170. EXEC(@sql)
  171. RETURN
  172. END
  173. IF @flag = 'pendingCooperative'
  174. BEGIN
  175. SET @sql =
  176. 'SELECT
  177. [Control No] = dbo.FNADecryptString(rt.controlNo)
  178. ,[Tran No] = rt.id
  179. ,[Sending Agent] = rt.sAgentName
  180. ,[Bank Name] = rt.pBankName
  181. ,[Branch Name] = rt.pBankBranchName
  182. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  183. ,[Bank A/C No] = rt.accountNo
  184. ,[Confirm Date] = rt.approvedDate
  185. ,[Payout Amount] = rt.pAmt
  186. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  187. FROM [dbo].remitTran rt WITH(NOLOCK)
  188. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  189. INNER JOIN agentMaster am on rt.pBank=am.agentId
  190. WHERE am.agentGrp=''8026'' AND am.agentType IN(''2903'',''2904'')
  191. '
  192. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  193. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  194. SET @sql = @sql +'
  195. AND rt.pBank = '''+CAST(@pAgent AS VARCHAR)+'''
  196. AND tranStatus = ''Payment''
  197. AND paymentMethod = ''Bank Deposit''
  198. AND payStatus = ''Post''
  199. AND rt.sCountry = ''Nepal''
  200. AND tranType = ''D''
  201. ORDER BY [Unpaid Days] DESC'
  202. print @sql
  203. EXEC(@sql)
  204. RETURN
  205. END
  206. IF @flag = 'pendingDom'
  207. BEGIN
  208. SET @sql =
  209. 'SELECT
  210. [Control No] = dbo.FNADecryptString(rt.controlNo)
  211. ,[Tran No] = rt.id
  212. ,[Sending Agent] = rt.sAgentName
  213. ,[Bank Name] = rt.pBankName
  214. ,[Branch Name] = rt.pBankBranchName
  215. ,[Receiver Name] = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  216. ,[Bank A/C No] = rt.accountNo
  217. ,[Confirm Date] = rt.approvedDate
  218. ,[Payout Amount] = rt.pAmt
  219. ,[Unpaid Days] = DATEDIFF(D,rt.approvedDate,GETDATE())
  220. FROM [dbo].remitTran rt WITH(NOLOCK)
  221. inner join tranReceivers rec with(nolock) on rt.id = rec.tranId
  222. WHERE 1=1'
  223. IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
  224. SET @sql = @sql +' AND rt.postedDate between '''+@fromDate+''' and '''+@toDate+''''
  225. SET @sql = @sql +'
  226. AND pBank = '''+CAST(@pAgent AS VARCHAR)+'''
  227. AND tranStatus = ''Payment''
  228. AND paymentMethod = ''Bank Deposit''
  229. AND payStatus = ''Post''
  230. AND rt.sCountry = ''Nepal''
  231. AND tranType = ''D''
  232. ORDER BY [Unpaid Days] DESC'
  233. EXEC(@sql)
  234. RETURN
  235. END
  236. IF @flag = 'payIntl'
  237. BEGIN
  238. DECLARE @tranDetail TABLE(id INT IDENTITY(1,1), tranId VARCHAR(50), controlNo VARCHAR(50), sRouteId VARCHAR(5))
  239. SET @sql = 'SELECT id, controlNo, sRouteId FROM dbo.remitTran WITH(NOLOCK) WHERE id IN (' + @tranIds + ')
  240. AND tranStatus = ''Payment''
  241. AND payStatus = ''Post''
  242. --AND ISNULL(expectedPayoutAgent,'''') <> ''iso'''
  243. INSERT INTO @tranDetail
  244. EXEC (@sql)
  245. IF NOT EXISTS(SELECT 'X' FROM @tranDetail)
  246. BEGIN
  247. EXEC proc_errorHandler 1, 'No Transaction Found.', NULL
  248. RETURN
  249. END
  250. SELECT
  251. @pAgent = am.agentId
  252. ,@pAgentName = am.agentName
  253. ,@pBranch = bm.agentId
  254. ,@pBranchName = bm.agentName
  255. ,@pState = bm.agentState
  256. ,@pDistrict = bm.agentDistrict
  257. ,@pLocation = bm.agentLocation
  258. FROM agentMaster am WITH(NOLOCK)
  259. LEFT JOIN agentMaster bm WITH(NOLOCK) ON am.agentId = bm.parentId AND bm.isHeadOffice = 'Y'
  260. WHERE am.agentId = @pAgent and isnull(bm.isDeleted,'N') = 'N' and bm.isActive = 'Y'
  261. IF @pBranch IS NULL
  262. BEGIN
  263. SELECT TOP 1
  264. @pAgent = am.agentId
  265. ,@pAgentName = am.agentName
  266. ,@pBranch = bm.agentId
  267. ,@pBranchName = bm.agentName
  268. ,@pState = bm.agentState
  269. ,@pDistrict = bm.agentDistrict
  270. ,@pLocation = bm.agentLocation
  271. FROM agentMaster am WITH(NOLOCK)
  272. LEFT JOIN agentMaster bm WITH(NOLOCK) ON am.agentId = bm.parentId
  273. WHERE am.agentId = @pAgent and isnull(bm.isDeleted,'N') = 'N' and bm.isActive = 'Y'
  274. END
  275. --IF EXISTS(SELECT TOP 1 'A' FROM APPLICATIONUSERS(NOLOCK) WHERE UserName = @user and userType ='HO')
  276. IF @isHOPaid = 'Y'
  277. BEGIN
  278. SELECT @pAgentName = agentName,@pAgent = agentId,@pBranch = agentId,@pBranchName = agentName,@isHOPaid = 'Y'
  279. FROM AGENTMASTER(NOLOCK) WHERE agentId = 4680
  280. END
  281. BEGIN TRAN
  282. UPDATE remitTran SET
  283. pBranch = @pBranch
  284. ,pBranchName = @pBranchName
  285. ,pState = @pState
  286. ,pDistrict = @pDistrict
  287. ,pAgentComm = case when rt.paymentMethod='Relief Fund' then 0 else (
  288. SELECT amount FROM dbo.FNAGetPayComm(
  289. NULL
  290. ,(SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = rt.sCountry), NULL, 1002, 151, @pLocation, @pBranch, 'NPR'
  291. ,2, rt.cAmt, rt.pAmt, rt.serviceCharge, NULL, NULL
  292. )
  293. )
  294. end
  295. ,pAgentCommCurrency = 'NPR'
  296. ,pSuperAgentComm = 0
  297. ,pSuperAgentCommCurrency = 'NPR'
  298. ,tranStatus = 'Paid'
  299. ,payStatus = 'Paid'
  300. ,paidBy = @user
  301. ,paidDate = dbo.FNAGetDateInNepalTZ()
  302. ,paidDateLocal = GETDATE()
  303. FROM remitTran rt WITH(NOLOCK)
  304. INNER JOIN @tranDetail td on rt.id = td.tranId
  305. -- ## Update Accounting
  306. EXEC dbo.proc_payAcDepositAC
  307. @flag = 'payIntl'
  308. ,@user = @user
  309. ,@tranIds = @tranIds
  310. ---- ## sending sms
  311. --insert into smsQueueAcDepositTxn(tranId)
  312. --select tranId from @tranDetail
  313. -- ## Queue Table for Data Integration
  314. INSERT INTO payQueue2(controlNo, pAgent, pAgentName, pBranch, pBranchName, paidBy, paidDate, paidBenIdType, paidBenIdNumber, routeId)
  315. SELECT controlNo, @pAgent, @pAgentName, @pBranch, @pBranchName, @user, dbo.FNAGetDateInNepalTZ(), NULL, NULL, sRouteId
  316. FROM @tranDetail WHERE sRouteId IS NOT NULL
  317. COMMIT TRAN
  318. EXEC proc_errorHandler 0, 'Transaction(s) paid successfully', NULL
  319. RETURN
  320. END
  321. IF @flag = 'payDom'
  322. BEGIN
  323. DECLARE @tranDomDetail TABLE(id INT IDENTITY(1,1),tranId VARCHAR(50),controlNo VARCHAR(50), controlNoEncInficare VARCHAR(20))
  324. DECLARE @sqlDom VARCHAR(MAX)
  325. SET @sqlDom = 'SELECT id, controlNo, controlNoEncInficare = dbo.encryptDbLocal(dbo.FNADecryptString(controlNo)) FROM dbo.remitTran WITH(NOLOCK)
  326. WHERE id IN (' + @tranIds + ')
  327. AND tranStatus = ''Payment''
  328. AND payStatus = ''Post'''
  329. INSERT INTO @tranDomDetail
  330. EXEC (@sqlDom)
  331. IF NOT EXISTS(SELECT 'X' FROM @tranDomDetail)
  332. BEGIN
  333. EXEC proc_errorHandler 1, 'No Transaction Found.', NULL
  334. RETURN
  335. END
  336. --IF EXISTS(SELECT TOP 1 'A' FROM APPLICATIONUSERS(NOLOCK) WHERE UserName = @user and userType ='HO')
  337. IF @isHOPaid = 'Y'
  338. BEGIN
  339. SELECT @pAgentName = agentName,@pAgent = agentId,@pBranch = agentId,@pBranchName = agentName,@isHOPaid = 'Y'
  340. FROM AGENTMASTER(NOLOCK) WHERE agentId = 4680
  341. END
  342. BEGIN TRAN
  343. UPDATE remitTran SET
  344. tranStatus = 'Paid'
  345. ,payStatus = 'Paid'
  346. ,pAgent = CASE @isHOPaid WHEN 'Y' THEN @pAgent ELSE pBank END
  347. ,pAgentName = CASE @isHOPaid WHEN 'Y' THEN @pAgentName ELSE pBankName END
  348. ,pBranch = CASE @isHOPaid WHEN 'Y' THEN @pBranch ELSE pBankBranch END
  349. ,pBranchName = CASE @isHOPaid WHEN 'Y' THEN @pBranchName ELSE pBankBranchName END
  350. ,pSuperAgentComm = 0
  351. ,pSuperAgentCommCurrency = 'NPR'
  352. ,pAgentComm = 0
  353. ,pAgentCommCurrency = 'NPR'
  354. ,paidBy = @user
  355. ,paidDate = dbo.FNAGetDateInNepalTZ()
  356. ,paidDateLocal = GETDATE()
  357. FROM remitTran rt WITH(NOLOCK)
  358. INNER JOIN @tranDomDetail td ON rt.id = td.tranId
  359. -- ## Update Accounting
  360. EXEC dbo.proc_payAcDepositAC
  361. @flag = 'payDom'
  362. ,@user = @user
  363. ,@tranIds = @tranIds
  364. COMMIT TRAN
  365. EXEC proc_errorHandler 0, 'Transaction(s) paid successfully', NULL
  366. END
  367. IF @flag = 'payCooperative'
  368. BEGIN
  369. DECLARE @tranDomDetailCo TABLE(id INT IDENTITY(1,1),tranId VARCHAR(50),controlNo VARCHAR(50), controlNoEncInficare VARCHAR(20),sBranch INT,pAmt MONEY,pBranch INT,pAgentComm MONEY ,pSuperAgentComm MONEY)
  370. DECLARE @sqlDomCo VARCHAR(MAX)
  371. SET @sqlDomCo = 'SELECT id, controlNo, controlNoEncInficare = dbo.encryptDbLocal(dbo.FNADecryptString(controlNo)) ,sBranch,pAmt,pBranch ,0 pAgentComm,0 pSuperAgentComm
  372. FROM dbo.remitTran WITH(NOLOCK) WHERE id IN (' + @tranIds + ')
  373. AND tranStatus = ''Payment'' AND payStatus = ''Post'''
  374. INSERT INTO @tranDomDetailCo
  375. EXEC (@sqlDomCo)
  376. IF NOT EXISTS(SELECT 'X' FROM @tranDomDetailCo)
  377. BEGIN
  378. EXEC proc_errorHandler 1, 'No Transaction Found.', NULL
  379. RETURN
  380. END
  381. UPDATE t SET
  382. t.pAgentComm=ISNULL(X.pAgentComm, 0),
  383. t.pSuperAgentComm=ISNULL(X.psAgentComm, 0)
  384. from @tranDomDetailCo t
  385. CROSS APPLY dbo.FNAGetDomesticPayComm(t.sBranch,@pAgent,2,t.pAmt)X
  386. --------------------------------------------------------------
  387. BEGIN TRAN
  388. UPDATE remitTran SET
  389. tranStatus = 'Paid'
  390. ,payStatus = 'Paid'
  391. ,pAgent = pBank
  392. ,pAgentName = pBankName
  393. ,pBranch = pBankBranch
  394. ,pBranchName = pBankBranchName
  395. ,pSuperAgentComm = td.pSuperAgentComm
  396. ,pSuperAgentCommCurrency = 'NPR'
  397. ,pAgentComm = td.pAgentComm
  398. ,pAgentCommCurrency = 'NPR'
  399. ,paidBy = @user
  400. ,paidDate = dbo.FNAGetDateInNepalTZ()
  401. ,paidDateLocal = GETDATE()
  402. FROM remitTran rt WITH(NOLOCK)
  403. INNER JOIN @tranDomDetailCo td ON rt.id = td.tranId
  404. -- ## Update Accounting
  405. EXEC dbo.proc_payAcDepositAC
  406. @flag = 'payCooperative'
  407. ,@user = @user
  408. ,@tranIds = @tranIds
  409. COMMIT TRAN
  410. EXEC proc_errorHandler 0, 'Transaction(s) paid successfully', NULL
  411. END
  412. GO