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.

435 lines
31 KiB

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