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.

460 lines
32 KiB

  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_ApproveHoldedTxnMobile] Script Date: 9/22/2023 1:34:47 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[proc_ApproveHoldedTxnMobile]
  9. @flag VARCHAR(50)
  10. ,@user VARCHAR(130)
  11. ,@userType VARCHAR(10) = NULL
  12. ,@branch VARCHAR(50) = NULL
  13. ,@id VARCHAR(40) = NULL
  14. ,@country VARCHAR(50) = NULL
  15. ,@sender VARCHAR(50) = NULL
  16. ,@receiver VARCHAR(50) = NULL
  17. ,@amt MONEY = NULL
  18. ,@bank VARCHAR(50) = NULL
  19. ,@voucherNo VARCHAR(50) = NULL
  20. ,@branchId INT = NULL
  21. ,@pin VARCHAR(50) = NULL
  22. ,@errorCode VARCHAR(10) = NULL
  23. ,@msg VARCHAR(500) = NULL
  24. ,@idList XML = NULL
  25. ,@txnDate VARCHAR(20) = NULL
  26. ,@txncreatedBy VARCHAR(50) = NULL
  27. ,@xml VARCHAR(MAX) = NULL
  28. ,@remarks VARCHAR(MAX) = NULL
  29. ,@settlingAgentId INT = NULL
  30. ,@ControlNo VARCHAR(50) = NULL
  31. ,@txnType VARCHAR(1) = NULL
  32. ,@sendCountry VARCHAR(50) = NULL
  33. ,@sendAgent VARCHAR(50) = NULL
  34. ,@sendBranch VARCHAR(50) = NULL
  35. ,@approvedFrom VARCHAR(10) = NULL
  36. ,@tpControlNo1 VARCHAR(30) = NULL
  37. ,@tpControlNo2 VARCHAR(30) = NULL
  38. ,@isTxnRealtime BIT = NULL
  39. ,@cAmt MONEY = NULL
  40. ,@collectedBy VARCHAR(20) = NULL
  41. ,@tranId VARCHAR(20) = NULL
  42. ,@email VARCHAR(1000) = NULL
  43. ,@collectedByName varchar(50) = null
  44. AS
  45. --------------------------------------------------------------------
  46. -- #101 - Mobile Changes
  47. -- #418 - Add Email Filter
  48. -- #618 add FNAGetCustomerAvailableBalanceVerify
  49. -- #652 - collected by ddl in verify transaction
  50. -- Remove logic to allow same user to approve
  51. -- #651 cash collet logic to clear downloadby & promotion
  52. -- #1135 pushNotificationHistroy
  53. -- #18970 - change in @flag = 'verify' to hold txn from verifying if kyc is not completed
  54. --------------------------------------------------------------------
  55. BEGIN TRY
  56. DECLARE
  57. @table VARCHAR(MAX)
  58. ,@sql VARCHAR(MAX)
  59. ,@sqlSelfTxn VARCHAR(MAX)
  60. ,@sRouteId VARCHAR(5)
  61. ,@collMode VARCHAR(100)
  62. SET NOCOUNT ON;
  63. SET XACT_ABORT ON;
  64. DECLARE
  65. @pinEncrypted VARCHAR(50) = dbo.FNAEncryptString(@pin)
  66. ,@userId INT
  67. ,@createdBy VARCHAR(50)
  68. ,@tranStatus VARCHAR(50)
  69. ,@message VARCHAR(200)
  70. ,@sBranch BIGINT
  71. ,@invicePrintMethod VARCHAR(50)
  72. ,@parentId BIGINT
  73. ,@tablesql AS VARCHAR(MAX)
  74. ,@branchList VARCHAR(MAX)
  75. ,@denyAmt MONEY
  76. ,@C2CAgentID VARCHAR(30) = '1045'
  77. ,@REAgentID VARCHAR(30) = '1100'
  78. IF @pin IS NULL
  79. BEGIN
  80. SELECT @pin = dbo.FNADecryptString(controlNo), @pinEncrypted = controlNo FROM remitTranTemp WITH(NOLOCK) WHERE id = @id
  81. END
  82. ELSE
  83. BEGIN
  84. SET @pinEncrypted = dbo.FNAEncryptString(@pin)
  85. END
  86. DECLARE @PinList TABLE(id VARCHAR(50), pin VARCHAR(50),hasProcess CHAR(1),isOFAC CHAR(1),errorMsg VARCHAR(MAX),tranId INT,createdBy VARCHAR(50))
  87. DECLARE @TempcompTable TABLE(errorCode INT,msg VARCHAR(MAX),id VARCHAR(50))
  88. DECLARE @isSelfApprove VARCHAR(1)
  89. DECLARE @cdTable VARCHAR(MAX) = ''
  90. SET @cdTable = '
  91. LEFT JOIN (
  92. SELECT
  93. DISTINCT
  94. tranId
  95. ,cb.bankName
  96. ,cd.countryBankId
  97. FROM collectionDetails cd WITH(NOLOCK)
  98. LEFT JOIN countryBanks cb WITH(NOLOCK) ON cd.countryBankId = cb.countryBankId
  99. INNER JOIN remitTranTemp trn WITH(NOLOCK) ON cd.tranId = trn.id
  100. AND (trn.tranStatus = ''Hold'' OR trn.tranStatus = ''Compliance Hold'' OR trn.tranStatus = ''OFAC Hold'' )
  101. AND trn.payStatus = ''Unpaid''
  102. AND trn.approvedBy IS NULL
  103. ) cd ON cd.tranId = trn.id '
  104. IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[#collModeList]') AND type = 'D')
  105. BEGIN
  106. DROP TABLE #collModeList
  107. END
  108. CREATE TABLE #collModeList(tranId INT, hasProcess CHAR(1), proMode varchar(50))
  109. DECLARE @tranId1 INT
  110. IF @flag = 's-unverified-txn'
  111. BEGIN
  112. SET @table = '
  113. SELECT DISTINCT
  114. trn.id
  115. ,controlNo = dbo.fnadecryptstring(controlNo)
  116. ,branchName = am.agentName
  117. ,country = trn.pCountry
  118. ,senderId = sen.customerId
  119. ,sender = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
  120. ,receiverId = rec.customerId
  121. ,receiver = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  122. ,cm.email as email
  123. ,amt = CAST(trn.cAmt AS DECIMAL(18, 2))
  124. ,paymentMethod = case when trn.collMode = ''Bank Deposit'' then ''JP Post'' ELSE trn.collMode END
  125. ,voucherNo = trn.voucherNo
  126. ,txnDate = CAST(trn.createdDate AS DATE)
  127. ,txncreatedBy = trn.createdBy
  128. ,trn.collMode collMode
  129. ,CM.membershipId
  130. ,CM.mobile sMobile
  131. ,CM.customerId
  132. ,CAST(trn.cAmt AS DECIMAL(10,2)) AS cAmt
  133. ,cAmtByUser = ISNULL(CAST(CASE WHEN TRN.COLLMODE = ''Cash Collect'' THEN trn.cAmt
  134. ELSE dbo.FNAGetCustomerAvailableBalance_New(cm.customerId) END AS VArchar),''N/A'')
  135. --ELSE X.depositAmount END AS VArchar),''N/A'')
  136. --,mappedDetail = ISNULL(CAST(CASE WHEN TRN.COLLMODE = ''Cash Collect'' THEN TCC.COLLECTED_BY
  137. -- ELSE X.particulars END AS NVARCHAR) ,''N/A'')
  138. ,REFERRAL_DETAIL = RA.REFERRAL_NAME + ''|'' + RA.REFERRAL_CODE
  139. ,ISNULL(depositType,schemeid) depositType
  140. FROM remitTranTemp trn WITH(NOLOCK)
  141. LEFT JOIN apiRoutingTable art WITH(NOLOCK) ON trn.pAgent = art.agentId
  142. INNER JOIN agentMaster am WITH(NOLOCK) ON trn.sBranch = am.agentId
  143. INNER JOIN tranSendersTemp sen WITH(NOLOCK) ON trn.id = sen.tranId
  144. INNER JOIN tranReceiversTemp rec WITH(NOLOCK) ON trn.id = rec.tranId
  145. INNER JOIN CUSTOMERMASTER CM WITH(NOLOCK) ON CM.CUSTOMERID = SEN.CUSTOMERID
  146. LEFT JOIN REFERRAL_AGENT_WISE RA(NOLOCK) ON RA.REFERRAL_CODE = TRN.PROMOTIONCODE
  147. --LEFT JOIN
  148. --(
  149. -- SELECT CDL.CUSTOMERID,PARTICULARS,depositAmount FROM remitTranTemp trn (NOLOCK)
  150. -- INNER JOIN tranSendersTemp sen WITH(NOLOCK) ON trn.id = sen.tranId
  151. -- LEFT JOIN CUSTOMER_DEPOSIT_LOGS CDL WITH(NOLOCK) ON CDL.CUSTOMERID = SEN.CUSTOMERID
  152. -- WHERE CDL.APPROVEDBY IS NULL
  153. --)X ON X.CUSTOMERID = SEN.CUSTOMERiD
  154. WHERE trn.tranStatus IN (''Hold'') AND
  155. trn.payStatus = ''Unpaid'' AND
  156. trn.approvedBy IS NULL
  157. AND trn.tranType=''M''
  158. and trn.verifiedBy IS NULL
  159. --AND trn.pcountry in (''vietnam'',''nepal'')
  160. '
  161. IF @id IS NOT NULL
  162. SET @table = @table + ' AND trn.id = ''' + @id + ''''
  163. IF @branch IS NOT NULL
  164. SET @table = @table + ' AND am.agentId = ''' + @branch + ''''
  165. IF @country IS NOT NULL
  166. SET @table = @table + ' AND trn.pCountry LIKE ''' + @country + '%'''
  167. --IF @sendCountry IS NOT NULL
  168. -- SET @table = @table + ' AND trn.sCountry LIKE ''' + @sendCountry + '%'''
  169. IF @amt IS NOT NULL
  170. SET @table = @table + ' AND trn.pAmt = ' + CAST(@amt AS VARCHAR(20))+ ''
  171. IF @voucherNo IS NOT NULL
  172. SET @table = @table + ' AND trn.voucherNo = ''' + @voucherNo + ''''
  173. IF @txncreatedBy IS NOT NULL
  174. SET @table = @table + ' AND trn.createdBy = '''+@txncreatedBy+''''
  175. IF @txnDate IS NOT NULL
  176. SET @table = @table + ' AND CAST(trn.createdDate AS DATE)='''+@txnDate +''''
  177. IF @ControlNo IS NOT NULL
  178. SET @table = @table + ' AND trn.controlNo = dbo.fnaEncryptString('''+@ControlNo+''')'
  179. IF @sendAgent IS NOT NULL
  180. SET @table = @table + ' AND trn.sAgent = '''+@sendAgent+''''
  181. IF @sendBranch IS NOT NULL
  182. SET @table = @table + ' AND trn.sBranch = '''+@sendBranch+''''
  183. IF @email IS NOT NULL
  184. SET @table = @table + ' AND cm.email LIKE ''%' + @email + '%'''
  185. SET @sql = '
  186. SELECT
  187. *
  188. FROM (
  189. ' + @table + '
  190. ) x
  191. WHERE 1 = 1 '
  192. IF @sender IS NOT NULL
  193. SET @sql = @sql + ' AND sender LIKE ''' + @sender + '%'''
  194. IF @receiver IS NOT NULL
  195. SET @sql = @sql + ' AND receiver LIKE ''' + @receiver + '%'''
  196. PRINT @sql
  197. EXEC (@sql)
  198. RETURN
  199. END
  200. IF @flag = 's-verified-txn'
  201. BEGIN
  202. SET @table = '
  203. SELECT DISTINCT
  204. trn.id
  205. ,controlNo = dbo.fnadecryptstring(controlNo)
  206. ,branchName = am.agentName
  207. ,country = trn.pCountry
  208. ,senderId = sen.customerId
  209. ,sender = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''')
  210. ,receiverId = rec.customerId
  211. ,receiver = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''')
  212. ,amt = CAST(trn.cAmt AS DECIMAL(18, 2))
  213. ,paymentMethod = case when trn.collMode = ''Bank Deposit'' then ''JP Post'' ELSE trn.collMode END
  214. ,depositType = trn.depositType
  215. ,txnDate = CAST(trn.createdDate AS DATE)
  216. ,txncreatedBy = trn.createdBy
  217. ,trn.collMode collMode
  218. ,cm.email
  219. FROM remitTranTemp trn WITH(NOLOCK) ' + @cdTable + '
  220. LEFT JOIN apiRoutingTable art WITH(NOLOCK) ON trn.pAgent = art.agentId
  221. INNER JOIN agentMaster am WITH(NOLOCK) ON trn.sBranch = am.agentId
  222. INNER JOIN tranSendersTemp sen WITH(NOLOCK) ON trn.id = sen.tranId
  223. INNER JOIN tranReceiversTemp rec WITH(NOLOCK) ON trn.id = rec.tranId
  224. INNER JOIN CUSTOMERMASTER CM WITH(NOLOCK) ON CM.CUSTOMERID = SEN.CUSTOMERID
  225. WHERE trn.tranStatus IN (''Hold'') AND
  226. trn.payStatus = ''Unpaid'' AND
  227. trn.approvedBy IS NULL
  228. AND trn.tranType=''M''
  229. and trn.verifiedBy IS NOT NULL
  230. '
  231. IF @id IS NOT NULL
  232. SET @table = @table + ' AND trn.id = ''' + @id + ''''
  233. IF @branch IS NOT NULL
  234. SET @table = @table + ' AND am.agentId = ''' + @branch + ''''
  235. IF @country IS NOT NULL
  236. SET @table = @table + ' AND trn.pCountry LIKE ''' + @country + '%'''
  237. --IF @sendCountry IS NOT NULL
  238. -- SET @table = @table + ' AND trn.sCountry LIKE ''' + @sendCountry + '%'''
  239. IF @amt IS NOT NULL
  240. SET @table = @table + ' AND trn.pAmt = ' + CAST(@amt AS VARCHAR(20))+ ''
  241. IF @voucherNo IS NOT NULL
  242. SET @table = @table + ' AND trn.voucherNo = ''' + @voucherNo + ''''
  243. IF @txncreatedBy IS NOT NULL
  244. SET @table = @table + ' AND trn.createdBy = '''+@txncreatedBy+''''
  245. IF @txnDate IS NOT NULL
  246. SET @table = @table + ' AND CAST(trn.createdDate AS DATE)='''+@txnDate +''''
  247. IF @ControlNo IS NOT NULL
  248. SET @table = @table + ' AND trn.controlNo = dbo.fnaEncryptString('''+@ControlNo+''')'
  249. IF @sendAgent IS NOT NULL
  250. SET @table = @table + ' AND trn.sAgent = '''+@sendAgent+''''
  251. IF @sendBranch IS NOT NULL
  252. SET @table = @table + ' AND trn.sBranch = '''+@sendBranch+''''
  253. IF @email IS NOT NULL
  254. SET @table = @table + ' AND cm.email LIKE ''%' + @email + '%'''
  255. SET @sql = '
  256. SELECT
  257. *
  258. FROM (
  259. ' + @table + '
  260. ) x
  261. WHERE 1 = 1 '
  262. IF @sender IS NOT NULL
  263. SET @sql = @sql + ' AND sender LIKE ''' + @sender + '%'''
  264. IF @receiver IS NOT NULL
  265. SET @sql = @sql + ' AND receiver LIKE ''' + @receiver + '%'''
  266. PRINT @sql
  267. EXEC (@sql)
  268. RETURN
  269. END
  270. IF @flag = 'i'
  271. BEGIN
  272. IF NOT EXISTS(SELECT * FROM REFERRAL_AGENT_WISE (NOLOCK) WHERE REFERRAL_CODE = @collectedBy)
  273. BEGIN
  274. --EXEC proc_errorHandler 1,'Invalid value is selected.', NULL;
  275. --RETURN;
  276. DECLARE @u_agentid VARCHAR(30);
  277. select @u_agentid = agentId FROM applicationUsers where userName=@collectedByName;
  278. IF @u_agentid='394392' --Tokyo Main-Head Office
  279. SET @collectedBy='JME0051' --Head Office Tokyo Branch
  280. ELSE IF @u_agentid='394389' --Chiba Funabashi Branch
  281. SET @collectedBy='JME0021' --Funabashi Branch,Office
  282. ELSE IF @u_agentid='394390' --Fukuoka Branch
  283. SET @collectedBy='JME0061' --Counter fukuoka
  284. ELSE IF @u_agentid='394391' --Nagoya Branch
  285. SET @collectedBy='JME0105' --Nagoya Branch,Office
  286. ELSE IF @u_agentid='394396' --New Office Shin Okubo
  287. SET @collectedBy='JME0151' --New Shin Okubo,Branch Office
  288. UPDATE remitTranTemp SET promotionCode = @collectedBy, collMode = 'Cash Collect' , downloadedBy = @collectedByName WHERE id = @tranId
  289. END
  290. ELSE
  291. BEGIN
  292. UPDATE remitTranTemp SET promotionCode = @collectedBy, collMode = 'Cash Collect' , downloadedBy = '' WHERE id = @tranId
  293. END
  294. EXEC proc_errorHandler 0,'Cash collected data saved successfully.', NULL;
  295. END
  296. IF @flag = 'update-as-bank'
  297. BEGIN
  298. IF NOT EXISTS(SELECT * FROM remitTranTemp (NOLOCK) WHERE id = @tranId)
  299. BEGIN
  300. EXEC proc_errorHandler 1,'Invalid data is selected.', NULL;
  301. RETURN;
  302. END
  303. UPDATE remitTranTemp SET promotionCode = null, collMode = 'Bank Deposit' WHERE id = @tranId
  304. EXEC proc_errorHandler 0,'Bank Deposit data saved successfully.', NULL;
  305. END
  306. IF @flag = 'u'
  307. BEGIN
  308. IF EXISTS(SELECT * FROM TBL_CASH_COLLECTED WHERE TRAN_ID = @tranId)
  309. BEGIN
  310. UPDATE TBL_CASH_COLLECTED SET COLLECTED_AMOUNT = @cAmt
  311. ,COLLECTED_BY = @collectedBy
  312. ,MODIFIED_BY = @user
  313. ,MODIFIED_DATE = GETDATE()
  314. WHERE TRAN_ID = @tranId
  315. EXEC proc_errorHandler 0,'Cash collect updated successfully', NULL;
  316. RETURN;
  317. END
  318. END
  319. IF @flag = 'verify'
  320. BEGIN
  321. DECLARE @cAmtByCustomer MONEY,@cAmtByUser MONEY,@customerId BIGINT, @USERNAME VARCHAR(100)
  322. SELECT @cAmtByCustomer= cAmt,
  323. @collMode = collMode ,
  324. @customerId = tsTmp.customerId,
  325. @USERNAME = CM.USERNAME
  326. from REMITTRANTEMP rtTmp(nolock)
  327. inner join transenderstemp tsTmp (nolock) on tsTmp.tranid = rtTmp.id
  328. INNER JOIN CUSTOMERMASTER CM(NOLOCK) ON CM.CUSTOMERID = tsTmp.CUSTOMERID
  329. WHERE rtTmp.id = @tranId
  330. IF @customerId IS NULL
  331. BEGIN
  332. EXEC proc_errorHandler 1,'No txn found!', NULL;
  333. RETURN;
  334. END
  335. -- 11th march, 2022
  336. IF @collMode = 'Bank Deposit'
  337. BEGIN
  338. --IF EXISTS (SELECT 1 FROM CUSTOMER_DEPOSIT_LOGS (NOLOCK) WHERE CUSTOMERID = @customerId AND APPROVEDBY IS NULL)
  339. --BEGIN
  340. -- EXEC proc_errorHandler 1, 'Customer Deposit Mapping pending for Approval!!', @id
  341. -- RETURN;
  342. --END
  343. SET @cAmtByUser = 0;
  344. SELECT @cAmtByUser = DBO.FNAGetCustomerAvailableBalanceVerify(@customerId)
  345. -- print @cAmtByUser;
  346. -- print @cAmtByCustomer;
  347. --IF @cAmtByUser < @cAmtByCustomer
  348. --BEGIN
  349. -- EXEC proc_errorHandler 1, 'Customer do not have sufficient balance for this transaction!!', @id
  350. -- RETURN;
  351. --END
  352. DECLARE @cAmtByUserAc MONEY=0;
  353. DECLARE @kycStatus INT
  354. SELECT @kycStatus = kycStatus
  355. FROM TBL_CUSTOMER_KYC(NOLOCK)
  356. WHERE CUSTOMERID = @customerId
  357. AND ISDELETED = 0
  358. --AND kycStatus=11044
  359. ORDER BY KYC_DATE
  360. IF ISNULL(@kycStatus, 0) <> 11044
  361. BEGIN
  362. IF @kycStatus IS NOT NULL
  363. SELECT @MSG = 'KYC for selected customer is not completed, it is in status:' + detailTitle
  364. FROM staticDataValue(NOLOCK)
  365. WHERE valueId = @kycStatus
  366. ELSE
  367. SELECT @MSG = 'Please complete KYC status first'
  368. EXEC proc_errorHandler 2
  369. ,@MSG
  370. ,NULL;
  371. RETURN
  372. END
  373. -- SELECT @cAmtByUserAc = DBO.FNAGetCustomerACBalById(@customerId);
  374. ---- print @@cAmtByUserAc;
  375. ---- print @cAmtByCustomer;
  376. -- IF @cAmtByUserAc < @cAmtByCustomer
  377. -- BEGIN
  378. -- EXEC proc_errorHandler 1, 'Customer do not have sufficient ac balance for this transaction!!', @id
  379. -- RETURN;
  380. -- END
  381. UPDATE remitTranTemp SET promotionCode = null, downloadedBy = '' WHERE id = @tranId
  382. --IF ISNULL(@cAmtByUser, -1) < @cAmtByCustomer
  383. --BEGIN
  384. -- EXEC proc_errorHandler 1, 'Customer do not have sufficient balance for this transaction!!', @id
  385. -- RETURN;
  386. --END
  387. END
  388. INSERT INTO pushNotificationHistroy(customerId,body,title,createDate,imageURL,sentId,Type,isReservation,isRead,isSend,category)
  389. select @customerid,'This is send Txn body Msg','SendTxn',getdate(),'',@tranId,1,0,0,0,'INFO'
  390. UPDATE REMITTRANTEMP SET verifiedby = @user,verifiedDate = getDate() where id = @tranId
  391. EXEC proc_errorHandler 0,'Transaction verified successfully', NULL;
  392. END
  393. END TRY
  394. BEGIN CATCH
  395. IF @@TRANCOUNT > 0
  396. ROLLBACK TRANSACTION
  397. SELECT 1 error_code, ERROR_MESSAGE() msg, NULL id
  398. END CATCH