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.

409 lines
30 KiB

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