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.

432 lines
32 KiB

  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_payOfacCompliance] Script Date: 9/22/2023 10:51:31 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER procEDURE [dbo].[proc_payOfacCompliance](
  9. @flag VARCHAR(20)
  10. ,@user VARCHAR(50) = NULL
  11. ,@id INT = NULL
  12. ,@remarks VARCHAR(MAX) = NULL
  13. ,@controlNo VARCHAR(50) = NULL
  14. ,@sortBy VARCHAR(50) = NULL
  15. ,@sortOrder VARCHAR(5) = NULL
  16. ,@pageSize INT = NULL
  17. ,@pageNumber INT = NULL
  18. )
  19. AS
  20. --------------------------------------------------------------------------------------------
  21. -- #18970 changes to split compliance txn on the basis of kyc status
  22. --------------------------------------------------------------------------------------------
  23. IF @flag = 's_summary'
  24. BEGIN
  25. DECLARE @sql NVARCHAR(MAX);
  26. SET @sql = '
  27. SELECT
  28. [Head] = CASE WHEN TRANTYPE = ''I'' THEN ''OFAC/Compliance/Cash Limit Hold : International'' ELSE ''OFAC/Compliance/Cash Limit Hold : Mobile (KYC Later)'' END,
  29. [Count] = CASE WHEN COUNT(''x'') > 0 THEN ''<a href="List.aspx?tranType='' + TRANTYPE + ''&kycstatus='' + cm.LawsonCardNo + ''">'' + CAST(COUNT(''x'') AS VARCHAR) + ''</a>'' ELSE ''-'' END
  30. FROM remitTranTemp b WITH(NOLOCK)
  31. LEFT JOIN transenderstemp tst (NOLOCK) ON b.id = tst.tranId
  32. LEFT JOIN customerMaster cm (NOLOCK) ON tst.customerId = cm.customerId
  33. WHERE cm.LawsonCardNo=''KYC_LATER'' AND B.tranStatus IN (''Compliance Hold'', ''OFAC Hold'', ''OFAC/Compliance Hold'', ''Cash Limit Hold'', ''Cash Limit/OFAC/Compliance Hold'', ''Cash Limit/OFAC Hold'', ''Cash Limit/Compliance Hold'')
  34. GROUP BY TRANTYPE, cm.LawsonCardNo
  35. UNION ALL
  36. SELECT
  37. [Head] = CASE WHEN TRANTYPE = ''I'' THEN ''OFAC/Compliance/Cash Limit Hold : International'' ELSE ''OFAC/Compliance/Cash Limit Hold : Mobile (KYC Now)'' END,
  38. [Count] = CASE WHEN COUNT(''x'') > 0 THEN ''<a href="List.aspx?tranType='' + TRANTYPE + ''&kycstatus='' + cm.LawsonCardNo + ''">'' + CAST(COUNT(''x'') AS VARCHAR) + ''</a>'' ELSE ''-'' END
  39. FROM remitTranTemp b WITH(NOLOCK)
  40. LEFT JOIN transenderstemp tst (NOLOCK) ON b.id = tst.tranId
  41. LEFT JOIN customerMaster cm (NOLOCK) ON tst.customerId = cm.customerId
  42. WHERE cm.LawsonCardNo=''KYC_NOW'' AND B.tranStatus IN (''Compliance Hold'', ''Hold'', ''OFAC Hold'', ''OFAC/Compliance Hold'', ''Cash Limit Hold'', ''Cash Limit/OFAC/Compliance Hold'', ''Cash Limit/OFAC Hold'', ''Cash Limit/Compliance Hold'')
  43. GROUP BY TRANTYPE, cm.LawsonCardNo
  44. UNION ALL
  45. SELECT
  46. [Head] = ''OFAC Pay'',
  47. [Count] = CASE WHEN COUNT(''x'') > 0 THEN ''<a href="PayTranOfacList.aspx">'' + CAST(COUNT(''x'') AS VARCHAR) + ''</a>'' ELSE ''-'' END
  48. FROM tranPayOfac rto WITH(NOLOCK)
  49. LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON rto.pBranch = am.agentId
  50. WHERE rto.approvedDate IS NULL
  51. UNION ALL
  52. SELECT
  53. [Head] = ''Compliance Pay'',
  54. [Count] = CASE WHEN COUNT(''x'') > 0 THEN ''<a href="PayTranComplianceList.aspx">'' + CAST(COUNT(''x'') AS VARCHAR) + ''</a>'' ELSE ''-'' END
  55. FROM tranPayCompliance rtc WITH(NOLOCK)
  56. LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON rtc.pBranch = am.agentId
  57. WHERE rtc.approvedDate IS NULL'
  58. PRINT (@sql)
  59. EXEC (@sql)
  60. return
  61. --SELECT
  62. -- [Head] = CASE WHEN TRANTYPE = 'I' THEN 'OFAC/Compliance/Cash Limit Hold : International' ELSE 'OFAC/Compliance/Cash Limit Hold : Mobile' END,
  63. -- [Count] = CASE WHEN COUNT('x') > 0 THEN '<a href="List.aspx?tranType='+TRANTYPE+'">'+CAST(COUNT('x') AS VARCHAR) +'</a>' ELSE '-' END
  64. --FROM remitTranTemp b WITH(NOLOCK)
  65. --WHERE B.tranStatus IN ('Compliance Hold', 'OFAC Hold', 'OFAC/Compliance Hold', 'Cash Limit Hold', 'Cash Limit/OFAC/Compliance Hold', 'Cash Limit/OFAC Hold', 'Cash Limit/Compliance Hold')
  66. --GROUP BY TRANTYPE
  67. ----AND B.PCOUNTRY IN ('VIETNAM','NEPAL')
  68. ----UNION ALL
  69. ----SELECT [HEAD],
  70. ----[Count] = CASE WHEN SUM(CAST([Count] AS INT)) > 0 THEN '<a href="ComplianceDom/List.aspx">'+ CAST(SUM(CAST([Count] AS INT)) AS VARCHAR) +'</a>' ELSE '-' END
  71. ----FROM (
  72. ----SELECT
  73. ---- [Head] = 'OFAC/Compliance Hold : Domestic' ,
  74. ---- [Count] = CASE WHEN COUNT('x') > 0 THEN COUNT('x') ELSE '0' END
  75. ----FROM remitTran rt WITH(NOLOCK)
  76. ----INNER JOIN remitTranOfac ofac with(nolock) on rt.id = ofac.tranId
  77. ----WHERE (rt.tranStatus = 'Hold' OR rt.tranStatus = 'OFAC Hold' OR rt.tranStatus = 'Compliance Hold' OR rt.tranStatus = 'OFAC/Compliance Hold')
  78. ----AND rt.tranType = 'D' and ofac.approvedDate is null
  79. ----UNION ALL
  80. ----SELECT
  81. ---- [Head] = 'OFAC/Compliance Hold : Domestic' ,
  82. ---- [Count] = CASE WHEN COUNT(DISTINCT tranId) > 0 THEN COUNT(DISTINCT tranId) ELSE '0' END
  83. ----FROM remitTran rt WITH(NOLOCK)
  84. ----INNER JOIN remitTranCompliance comp with(nolock) on rt.id = comp.tranId
  85. ----WHERE (rt.tranStatus = 'Hold' OR rt.tranStatus = 'OFAC Hold' OR rt.tranStatus = 'Compliance Hold' OR rt.tranStatus = 'OFAC/Compliance Hold')
  86. ----AND rt.tranType = 'D' and comp.approvedDate is null
  87. ----) x group by [Head]
  88. --UNION ALL
  89. --SELECT
  90. -- [Head] = 'OFAC Pay',
  91. -- [Count] = CASE WHEN COUNT('x') > 0 THEN '<a href="PayTranOfacList.aspx">'+CAST(COUNT('x') AS VARCHAR) +'</a>' ELSE '-' END
  92. --FROM tranPayOfac rto WITH(NOLOCK)
  93. --LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON rto.pBranch = am.agentId
  94. --WHERE rto.approvedDate IS NULL
  95. --UNION ALL
  96. --SELECT
  97. -- [Head] = 'Compliance Pay',
  98. -- [Count] = CASE WHEN COUNT('x') > 0 THEN '<a href="PayTranComplianceList.aspx">'+CAST(COUNT('x') AS VARCHAR) +'</a>' ELSE '-' END
  99. --FROM tranPayCompliance rtc WITH(NOLOCK)
  100. --LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON rtc.pBranch = am.agentId
  101. --WHERE rtc.approvedDate IS NULL
  102. END
  103. IF @Flag='s'
  104. BEGIN
  105. DECLARE
  106. @agentGrp INT,
  107. @partnerId BIGINT,
  108. @branchName VARCHAR(200),
  109. @rowId BIGINT
  110. SELECT @partnerId = provider,
  111. @rowId = tranId
  112. FROM tranPayOfac WITH(NOLOCK)
  113. WHERE rowId = @id
  114. IF @partnerId IS NULL
  115. BEGIN
  116. EXEC proc_errorHandler 1, 'Invalid Transaction.', @rowId
  117. RETURN;
  118. END
  119. DECLARE
  120. @mapCodeDom VARCHAR(50)
  121. ,@tranStatus VARCHAR(50)
  122. ,@tranId INT
  123. ,@payStatus VARCHAR(50)
  124. ,@controlNoEncrypted VARCHAR(50)
  125. ,@agentType VARCHAR(50)
  126. ,@pTxnLocation VARCHAR(50)
  127. ,@pAgentLocation VARCHAR(50)
  128. ,@pAgent VARCHAR(50)
  129. ,@paymentMethod VARCHAR(50)
  130. ,@sBranchId VARCHAR(50)
  131. ,@mapCodeInt VARCHAR(50)
  132. ,@lockStatus VARCHAR(50)
  133. ,@payTokenId VARCHAR(50)
  134. BEGIN
  135. EXEC proc_errorHandler 0, 'Transaction varification successfully.', @rowId
  136. SELECT TOP 1
  137. rowId =trn.id
  138. ,securityNo =dbo.FNADecryptString(trn.controlNo)
  139. ,transactionDate =trn.createdDateLocal
  140. ,senderName =sen.firstName + ISNULL( ' ' + sen.middleName, '') + ISNULL( ' ' + sen.lastName1, '') + ISNULL( ' ' + sen.lastName2, '')
  141. ,senderAddress =sen.address
  142. ,senderCity =sen.city
  143. ,senderMobile =sen.mobile
  144. ,senderTel =sen.homephone
  145. ,senderIdType =sen.idType
  146. ,senderIdNo =sen.idNumber
  147. ,recName =rec.firstName + ISNULL( ' ' + rec.middleName, '') + ISNULL( ' ' + rec.lastName1, '') + ISNULL( ' ' + rec.lastName2, '')
  148. ,recAddress =rec.address
  149. ,recMobile =rec.mobile
  150. ,recTelePhone =rec.homephone
  151. ,recIdType =rec.idType
  152. ,recIdNo =rec.idNumber
  153. ,recCity =rec.city
  154. ,recCountry =rec.country
  155. ,pAmount =trn.pAmt
  156. ,rCurrency =trn.collCurr
  157. ,pCurrency =trn.payoutCurr
  158. ,remarks =pMessage
  159. ,paymentMethod =trn.paymentMethod
  160. ,tokenId =trn.payTokenId
  161. ,amt =trn.pAmt
  162. ,pBranch =trn.pBranch
  163. ,sendingCountry =trn.sCountry
  164. ,sendingAgent =trn.sAgentName
  165. ,branchName =am.agentName
  166. ,providerName ='IME International'
  167. ,orderNo = ''
  168. ,agentGrp = @agentGrp
  169. ,rIdType = tpo.rIdType
  170. ,rIdNumber = tpo.rIdNumber
  171. ,rPlaceOfIssue = tpo.rPlaceOfIssue
  172. ,rRelativeName = tpo.rRelativeName
  173. ,rRelationType = tpo.rRelationType
  174. ,rContactNo = tpo.rContactNo
  175. FROM remitTran trn WITH(NOLOCK)
  176. INNER JOIN tranSenders sen WITH(NOLOCK) ON trn.id = sen.tranId
  177. INNER JOIN tranReceivers rec WITH(NOLOCK) ON trn.id = rec.tranId
  178. INNER JOIN dbo.tranPayOfac tpo WITH(NOLOCK) ON tpo.tranId = trn.id
  179. INNER JOIN agentMaster am WITH(NOLOCK) ON am.agentId = tpo.pBranch
  180. WHERE trn.id = @rowId
  181. -- ## Transaction Log Details
  182. SELECT @controlNoEncrypted = controlNo
  183. FROM remitTran rt WITH(NOLOCK) WHERE id = @rowId
  184. SELECT
  185. rowId
  186. ,message
  187. ,trn.createdBy
  188. ,trn.createdDate
  189. FROM tranModifyLog trn WITH(NOLOCK)
  190. LEFT JOIN applicationUsers au WITH(NOLOCK) ON trn.createdBy = au.userName
  191. WHERE trn.tranId = @tranId OR trn.controlNo = @controlNoEncrypted
  192. ORDER BY trn.rowId DESC
  193. END
  194. END
  195. IF @flag='txn_list'
  196. BEGIN
  197. DECLARE
  198. -- @sql VARCHAR(MAX)
  199. @table VARCHAR(MAX)
  200. ,@select_field_list VARCHAR(MAX)
  201. ,@extra_field_list VARCHAR(MAX)
  202. ,@sql_filter VARCHAR(MAX)
  203. SET @table = '
  204. (
  205. SELECT TOP 10
  206. provider = CASE WHEN rto.provider =''4734'' THEN ''Global Remit''
  207. WHEN rto.provider =''4670'' THEN ''Cash Express''
  208. WHEN rto.provider =''4726'' THEN ''EZ Remit''
  209. WHEN rto.provider =''4869'' THEN ''RIA Remit''
  210. WHEN rto.provider =''4854'' THEN ''MoneyGram''
  211. WHEN rto.provider =''4909'' THEN ''Xpress Mone''
  212. WHEN rto.provider =''4816'' THEN ''Instant Cash''
  213. WHEN rto.provider =''4812'' THEN ''IME-I''
  214. ELSE ''-'' END
  215. ,tranId = rto.TranId
  216. ,controlNo = ''<a href="'+dbo.FNAGetURL()+'Remit/Transaction/ApproveOFAC/PayTranOfac/Manage.aspx?rowId='' + cast(rto.rowId as varchar) + ''">'' +dbo.fnadecryptstring(rto.controlNo)+ ''</a>''
  217. ,pBranchName = am.agentName
  218. ,receiverName = receiverName
  219. ,senderName = senderName
  220. ,pAmt = rto.pAmt
  221. ,type = ''OFAC''
  222. ,createdBy = rto.createdBy
  223. ,createdDate = rto.createdDate
  224. ,txnDate = rto.txnDate
  225. ,hasChanged = ''''
  226. FROM tranPayOfac rto WITH(NOLOCK)
  227. LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON rto.pBranch = am.agentId
  228. WHERE rto.approvedDate IS NULL '
  229. IF @controlNo IS NOT NULL
  230. SET @table = @table + ' AND dbo.fnadecryptstring(rto.controlNo) LIKE ''%' + @controlNo + '%'''
  231. SET @table = @table + ' )x'
  232. SET @sortBy = 'createdDate'
  233. IF @sortOrder IS NULL
  234. SET @sortOrder = 'ASC'
  235. SET @sql_filter = ''
  236. SET @select_field_list ='
  237. controlNo
  238. ,pBranchName
  239. ,type
  240. ,receiverName
  241. ,senderName
  242. ,hasChanged
  243. ,createdBy
  244. ,createdDate
  245. ,pAmt
  246. ,tranId
  247. ,provider
  248. '
  249. EXEC dbo.proc_paging
  250. @table
  251. ,@sql_filter
  252. ,@select_field_list
  253. ,@extra_field_list
  254. ,@sortBy
  255. ,@sortOrder
  256. ,@pageSize
  257. ,@pageNumber
  258. END
  259. IF @flag='ofac'
  260. BEGIN
  261. IF OBJECT_ID('tempdb..#tempMaster') IS NOT NULL
  262. DROP TABLE #tempMaster
  263. IF OBJECT_ID('tempdb..#tempDataTable') IS NOT NULL
  264. DROP TABLE #tempDataTable
  265. CREATE TABLE #tempDataTable
  266. (
  267. DATA VARCHAR(MAX) NULL
  268. )
  269. DECLARE @ofacKeyIds VARCHAR(MAX)
  270. SELECT @ofacKeyIds = blackListId FROM dbo.tranPayOfac WITH(NOLOCK)
  271. WHERE rowId = @id
  272. SELECT distinct A.val ofacKeyId
  273. INTO #tempMaster
  274. FROM
  275. (
  276. SELECT * FROM dbo.SplitXML(',',@ofacKeyIds)
  277. )A
  278. INNER JOIN
  279. (
  280. SELECT ofacKey FROM blacklistHistory WITH(NOLOCK)
  281. )B ON A.val=B.ofacKey
  282. ALTER TABLE #tempMaster ADD ROWID INT IDENTITY(1,1)
  283. DECLARE @TNA_ID AS INT
  284. ,@MAX_ROW_ID AS INT
  285. ,@ROW_ID AS INT=1
  286. ,@ofacKeyId VARCHAR(100)
  287. ,@SDN VARCHAR(MAX)=''
  288. ,@ADDRESS VARCHAR(MAX)=''
  289. ,@ALT AS VARCHAR(MAX)=''
  290. ,@DATA AS VARCHAR(MAX)=''
  291. ,@DATA_SOURCE AS VARCHAR(200)=''
  292. ,@membershipId AS VARCHAR(50) = ''
  293. ,@district AS VARCHAR(100) = ''
  294. ,@idType AS VARCHAR(50) = ''
  295. ,@idNumber AS VARCHAR(100) = ''
  296. ,@dob AS VARCHAR(20) = ''
  297. ,@fatherName AS VARCHAR(200) = ''
  298. SELECT @MAX_ROW_ID=MAX(ROWID) FROM #tempMaster
  299. WHILE @MAX_ROW_ID >= @ROW_ID
  300. BEGIN
  301. SELECT @ofacKeyId=ofacKeyId FROM #tempMaster WHERE ROWID=@ROW_ID
  302. SELECT @SDN='<b>'+ISNULL(entNum,'')+'</b>, <b>Name:</b> '+ ISNULL(name,''),@DATA_SOURCE='<b>Data Source:</b> '+ISNULL(dataSource,'')
  303. FROM blacklistHistory with(nolock) WHERE ofacKey = @ofacKeyId AND vesselType='sdn'
  304. SELECT @ADDRESS=ISNULL(address,'')+', '+ISNULL(city,'')+', '+ISNULL(STATE,'')+', '+ISNULL(zip,'')+', '+ISNULL(country,'')
  305. FROM blacklistHistory with(nolock) WHERE ofacKey = @ofacKeyId AND vesselType='add'
  306. SELECT @ALT = COALESCE(@ALT + ', ', '') +CAST(ISNULL(NAME,'') AS VARCHAR(MAX))
  307. FROM blacklistHistory with(nolock) WHERE ofacKey = @ofacKeyId AND vesselType IN ('alt','aka')
  308. SELECT @REMARKS=ISNULL(remarks,''),
  309. @membershipId = 'MembershipId: '+membershipId,
  310. @district = 'District: '+district,
  311. @idType = 'Id Type: '+idType,
  312. @idNumber = 'Id Number: '+idNumber,
  313. @dob = 'DOB: '+dob,
  314. @fatherName = 'Father Name: '+FatherName
  315. FROM blacklistHistory with(nolock) WHERE ofacKey = @ofacKeyId AND vesselType='sdn'
  316. SET @SDN=RTRIM(LTRIM(@SDN))
  317. SET @ADDRESS=RTRIM(LTRIM(@ADDRESS))
  318. SET @ALT=RTRIM(LTRIM(@ALT))
  319. SET @REMARKS=RTRIM(LTRIM(@REMARKS))
  320. SET @SDN=REPLACE(@SDN,', ,','')
  321. SET @ADDRESS=REPLACE(@ADDRESS,', ,','')
  322. SET @ALT=REPLACE(@ALT,', ,','')
  323. SET @REMARKS=REPLACE(@REMARKS,', ,','')
  324. SET @SDN=REPLACE(@SDN,'-0-','')
  325. SET @ADDRESS=REPLACE(@ADDRESS,'-0-','')
  326. SET @ALT=REPLACE(@ALT,'-0-','')
  327. SET @REMARKS=REPLACE(@REMARKS,'-0-','')
  328. SET @SDN=REPLACE(@SDN,',,','')
  329. SET @ADDRESS=REPLACE(@ADDRESS,',,','')
  330. SET @ALT=REPLACE(@ALT,',,','')
  331. SET @REMARKS=REPLACE(@REMARKS,',,','')
  332. IF @DATA_SOURCE IS NOT NULL AND @DATA_SOURCE<>''
  333. SET @DATA=@DATA_SOURCE
  334. IF @SDN IS NOT NULL AND @SDN<>''
  335. SET @DATA=@DATA+'<BR>'+@SDN
  336. IF @ADDRESS IS NOT NULL AND @ADDRESS<>''
  337. SET @DATA=@DATA+'<BR><b>Address: </b>'+@ADDRESS
  338. IF @ALT IS NOT NULL AND @ALT<>'' AND @ALT<>' '
  339. SET @DATA=@DATA+'<BR>'+'<b>a.k.a :</b>'+@ALT+''
  340. IF @REMARKS IS NOT NULL AND @REMARKS<>''
  341. SET @DATA=@DATA+'<BR><b>Other Info :-</b> Remarks: '+@REMARKS
  342. SET @DATA = @DATA
  343. + ISNULL( ' ' + @membershipId, '')
  344. + ISNULL( ' ' + @district, '')
  345. + ISNULL( ' ' + @idType, '')
  346. + ISNULL( ' ' + @idNumber, '')
  347. + ISNULL( ' ' + @dob, '')
  348. + ISNULL( ' ' + @fatherName, '')
  349. IF @DATA IS NOT NULL OR @DATA <>''
  350. BEGIN
  351. INSERT INTO #tempDataTable
  352. SELECT REPLACE(@DATA,'<BR><BR>','')
  353. END
  354. SET @ROW_ID=@ROW_ID+1
  355. END
  356. ALTER TABLE #tempDataTable ADD ROWID INT IDENTITY(1,1)
  357. SELECT ROWID [S.N.],DATA [Remarks] FROM #tempDataTable
  358. END
  359. IF @flag = 'release'
  360. BEGIN
  361. IF EXISTS(SELECT 'X' FROM tranPayOfac WITH(NOLOCK) WHERE rowId = @id)
  362. BEGIN
  363. IF @remarks IS NULL
  364. BEGIN
  365. EXEC proc_errorHandler 1, 'OFAC remarks can not be blank.', @id
  366. RETURN;
  367. END
  368. UPDATE tranPayOfac SET
  369. approvedRemarks = @remarks
  370. ,approvedBy = @user
  371. ,approvedDate = GETDATE()
  372. WHERE rowId = @id AND approvedDate IS NULL
  373. EXEC proc_errorHandler 0, 'Release remarks has been saved successfully.', @tranId
  374. END
  375. EXEC proc_errorHandler 1, 'Transaction not found.', @tranId
  376. END