USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[proc_ApproveHoldedTxnMobile] Script Date: 11/26/2023 2:40:39 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[proc_ApproveHoldedTxnMobile] @flag VARCHAR(50) ,@user VARCHAR(130) ,@userType VARCHAR(10) = NULL ,@branch VARCHAR(50) = NULL ,@id VARCHAR(40) = NULL ,@country VARCHAR(50) = NULL ,@sender VARCHAR(50) = NULL ,@receiver VARCHAR(50) = NULL ,@amt MONEY = NULL ,@bank VARCHAR(50) = NULL ,@voucherNo VARCHAR(50) = NULL ,@branchId INT = NULL ,@pin VARCHAR(50) = NULL ,@errorCode VARCHAR(10) = NULL ,@msg VARCHAR(500) = NULL ,@idList XML = NULL ,@txnDate VARCHAR(20) = NULL ,@txncreatedBy VARCHAR(50) = NULL ,@xml VARCHAR(MAX) = NULL ,@remarks VARCHAR(MAX) = NULL ,@settlingAgentId INT = NULL ,@ControlNo VARCHAR(50) = NULL ,@txnType VARCHAR(1) = NULL ,@sendCountry VARCHAR(50) = NULL ,@sendAgent VARCHAR(50) = NULL ,@sendBranch VARCHAR(50) = NULL ,@approvedFrom VARCHAR(10) = NULL ,@tpControlNo1 VARCHAR(30) = NULL ,@tpControlNo2 VARCHAR(30) = NULL ,@isTxnRealtime BIT = NULL ,@cAmt MONEY = NULL ,@collectedBy VARCHAR(20) = NULL ,@tranId VARCHAR(20) = NULL ,@email VARCHAR(1000) = NULL ,@collectedByName varchar(50) = null AS -------------------------------------------------------------------- -- #101 - Mobile Changes -- #418 - Add Email Filter -- #618 add FNAGetCustomerAvailableBalanceVerify -- #652 - collected by ddl in verify transaction -- Remove logic to allow same user to approve -- #651 cash collet logic to clear downloadby & promotion -- #1135 pushNotificationHistroy -- #18970 - change in @flag = 'verify' to hold txn from verifying if kyc is not completed -- added trantype in @flag = 's-unverified-txn' to show txn channel in UI -- change in @flag = 's-unverified-txn' to show all txn -------------------------------------------------------------------- BEGIN TRY DECLARE @table VARCHAR(MAX) ,@sql VARCHAR(MAX) ,@sqlSelfTxn VARCHAR(MAX) ,@sRouteId VARCHAR(5) ,@collMode VARCHAR(100) SET NOCOUNT ON; SET XACT_ABORT ON; DECLARE @pinEncrypted VARCHAR(50) = dbo.FNAEncryptString(@pin) ,@userId INT ,@createdBy VARCHAR(50) ,@tranStatus VARCHAR(50) ,@message VARCHAR(200) ,@sBranch BIGINT ,@invicePrintMethod VARCHAR(50) ,@parentId BIGINT ,@tablesql AS VARCHAR(MAX) ,@branchList VARCHAR(MAX) ,@denyAmt MONEY ,@C2CAgentID VARCHAR(30) = '1045' ,@REAgentID VARCHAR(30) = '1100' IF @pin IS NULL BEGIN SELECT @pin = dbo.FNADecryptString(controlNo), @pinEncrypted = controlNo FROM remitTranTemp WITH(NOLOCK) WHERE id = @id END ELSE BEGIN SET @pinEncrypted = dbo.FNAEncryptString(@pin) END DECLARE @PinList TABLE(id VARCHAR(50), pin VARCHAR(50),hasProcess CHAR(1),isOFAC CHAR(1),errorMsg VARCHAR(MAX),tranId INT,createdBy VARCHAR(50)) DECLARE @TempcompTable TABLE(errorCode INT,msg VARCHAR(MAX),id VARCHAR(50)) DECLARE @isSelfApprove VARCHAR(1) DECLARE @cdTable VARCHAR(MAX) = '' SET @cdTable = ' LEFT JOIN ( SELECT DISTINCT tranId ,cb.bankName ,cd.countryBankId FROM collectionDetails cd WITH(NOLOCK) LEFT JOIN countryBanks cb WITH(NOLOCK) ON cd.countryBankId = cb.countryBankId INNER JOIN remitTranTemp trn WITH(NOLOCK) ON cd.tranId = trn.id AND (trn.tranStatus = ''Hold'' OR trn.tranStatus = ''Compliance Hold'' OR trn.tranStatus = ''OFAC Hold'' ) AND trn.payStatus = ''Unpaid'' AND trn.approvedBy IS NULL ) cd ON cd.tranId = trn.id ' IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[#collModeList]') AND type = 'D') BEGIN DROP TABLE #collModeList END CREATE TABLE #collModeList(tranId INT, hasProcess CHAR(1), proMode varchar(50)) DECLARE @tranId1 INT IF @flag = 's-unverified-txn' BEGIN SET @table = ' SELECT DISTINCT trn.id ,controlNo = ''''+DBO.FNADECRYPTSTRING(trn.CONTROLNO)+'''' ,tranType = CASE WHEN (trn.tranType = ''M'' AND trn.isOnlineTxn = ''M'') THEN ''Mobile'' WHEN (trn.tranType = ''M'' AND trn.isOnlineTxn = ''O'') THEN ''Web'' WHEN trn.tranType = ''I'' THEN ''CR Panel'' ELSE trn.tranType END ,branchName = am.agentName ,country = trn.pCountry ,senderId = sen.customerId ,sender = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''') ,receiverId = rec.customerId ,receiver = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''') ,cm.email as email ,amt = CAST(trn.cAmt AS DECIMAL(18, 2)) --,paymentMethod = case when trn.collMode = ''Bank Deposit'' then ''JP Post'' ELSE trn.collMode END ,voucherNo = trn.voucherNo ,txnDate = CAST(trn.createdDate AS DATE) ,txncreatedBy = trn.createdBy ,trn.paymentMethod collMode ,CM.membershipId ,CM.mobile sMobile ,CM.customerId ,CAST(trn.pAmt AS DECIMAL(10,2)) AS pAmt ,CAST(trn.cAmt AS DECIMAL(10,2)) AS cAmt ,cAmtByUser = ISNULL(CAST(CASE WHEN TRN.COLLMODE = ''Cash Collect'' THEN trn.cAmt ELSE dbo.FNAGetCustomerAvailableBalance_New(cm.customerId) END AS VArchar),''N/A'') --ELSE X.depositAmount END AS VArchar),''N/A'') --,mappedDetail = ISNULL(CAST(CASE WHEN TRN.COLLMODE = ''Cash Collect'' THEN TCC.COLLECTED_BY -- ELSE X.particulars END AS NVARCHAR) ,''N/A'') ,REFERRAL_DETAIL = RA.REFERRAL_NAME + ''|'' + RA.REFERRAL_CODE ,ISNULL(depositType,'''') depositType ,controlNum = DBO.FNADECRYPTSTRING(trn.CONTROLNO) FROM remitTranTemp trn WITH(NOLOCK) LEFT JOIN apiRoutingTable art WITH(NOLOCK) ON trn.pAgent = art.agentId INNER JOIN agentMaster am WITH(NOLOCK) ON trn.sBranch = am.agentId INNER JOIN tranSendersTemp sen WITH(NOLOCK) ON trn.id = sen.tranId INNER JOIN tranReceiversTemp rec WITH(NOLOCK) ON trn.id = rec.tranId INNER JOIN CUSTOMERMASTER CM WITH(NOLOCK) ON CM.CUSTOMERID = SEN.CUSTOMERID LEFT JOIN REFERRAL_AGENT_WISE RA(NOLOCK) ON RA.REFERRAL_CODE = TRN.PROMOTIONCODE --LEFT JOIN --( -- SELECT CDL.CUSTOMERID,PARTICULARS,depositAmount FROM remitTranTemp trn (NOLOCK) -- INNER JOIN tranSendersTemp sen WITH(NOLOCK) ON trn.id = sen.tranId -- LEFT JOIN CUSTOMER_DEPOSIT_LOGS CDL WITH(NOLOCK) ON CDL.CUSTOMERID = SEN.CUSTOMERID -- WHERE CDL.APPROVEDBY IS NULL --)X ON X.CUSTOMERID = SEN.CUSTOMERiD WHERE trn.tranStatus IN (''Hold'') AND trn.payStatus = ''Unpaid'' AND trn.approvedBy IS NULL --AND trn.tranType=''M'' and trn.verifiedBy IS NULL --AND trn.pcountry in (''vietnam'',''nepal'') ' IF @id IS NOT NULL SET @table = @table + ' AND trn.id = ''' + @id + '''' IF @branch IS NOT NULL SET @table = @table + ' AND am.agentId = ''' + @branch + '''' IF @country IS NOT NULL SET @table = @table + ' AND trn.pCountry LIKE ''' + @country + '%''' --IF @sendCountry IS NOT NULL -- SET @table = @table + ' AND trn.sCountry LIKE ''' + @sendCountry + '%''' IF @amt IS NOT NULL SET @table = @table + ' AND trn.pAmt = ' + CAST(@amt AS VARCHAR(20))+ '' IF @voucherNo IS NOT NULL SET @table = @table + ' AND trn.voucherNo = ''' + @voucherNo + '''' IF @txncreatedBy IS NOT NULL SET @table = @table + ' AND trn.createdBy = '''+@txncreatedBy+'''' IF @txnDate IS NOT NULL SET @table = @table + ' AND CAST(trn.createdDate AS DATE)='''+@txnDate +'''' IF @ControlNo IS NOT NULL SET @table = @table + ' AND trn.controlNo = dbo.fnaEncryptString('''+@ControlNo+''')' IF @sendAgent IS NOT NULL SET @table = @table + ' AND trn.sAgent = '''+@sendAgent+'''' IF @sendBranch IS NOT NULL SET @table = @table + ' AND trn.sBranch = '''+@sendBranch+'''' IF @email IS NOT NULL SET @table = @table + ' AND cm.email LIKE ''%' + @email + '%''' SET @sql = ' SELECT * FROM ( ' + @table + ' ) x WHERE 1 = 1 ' IF @sender IS NOT NULL SET @sql = @sql + ' AND sender LIKE ''' + @sender + '%''' IF @receiver IS NOT NULL SET @sql = @sql + ' AND receiver LIKE ''' + @receiver + '%''' PRINT @sql EXEC (@sql) RETURN END IF @flag = 's-verified-txn' BEGIN SET @table = ' SELECT DISTINCT trn.id ,controlNo = ''''+DBO.FNADECRYPTSTRING(trn.CONTROLNO)+'''' ,branchName = am.agentName ,tranType = CASE WHEN (trn.tranType = ''M'' AND trn.isOnlineTxn = ''M'') THEN ''Mobile'' WHEN (trn.tranType = ''M'' AND trn.isOnlineTxn = ''O'') THEN ''Web Online'' WHEN trn.tranType = ''I'' THEN ''CR Panel'' ELSE trn.tranType END ,country = trn.pCountry ,senderId = sen.customerId ,sender = sen.firstName + ISNULL( '' '' + sen.middleName, '''') + ISNULL( '' '' + sen.lastName1, '''') + ISNULL( '' '' + sen.lastName2, '''') ,receiverId = rec.customerId ,receiver = rec.firstName + ISNULL( '' '' + rec.middleName, '''') + ISNULL( '' '' + rec.lastName1, '''') + ISNULL( '' '' + rec.lastName2, '''') ,amt = CAST(trn.cAmt AS DECIMAL(18, 2)) ,paymentMethod = UPPER(trn.paymentMethod) ,depositType = UPPER(trn.depositType) ,txnDate = CAST(trn.createdDate AS DATE) ,txncreatedBy = trn.createdBy ,trn.collMode collMode ,cm.email ,CAST(trn.pAmt AS DECIMAL(10,2)) AS pAmt FROM remitTranTemp trn WITH(NOLOCK) ' + @cdTable + ' LEFT JOIN apiRoutingTable art WITH(NOLOCK) ON trn.pAgent = art.agentId INNER JOIN agentMaster am WITH(NOLOCK) ON trn.sBranch = am.agentId INNER JOIN tranSendersTemp sen WITH(NOLOCK) ON trn.id = sen.tranId INNER JOIN tranReceiversTemp rec WITH(NOLOCK) ON trn.id = rec.tranId INNER JOIN CUSTOMERMASTER CM WITH(NOLOCK) ON CM.CUSTOMERID = SEN.CUSTOMERID WHERE trn.tranStatus IN (''Hold'') AND trn.payStatus = ''Unpaid'' AND trn.approvedBy IS NULL AND trn.tranType=''M'' and trn.verifiedBy IS NOT NULL ' IF @id IS NOT NULL SET @table = @table + ' AND trn.id = ''' + @id + '''' IF @branch IS NOT NULL SET @table = @table + ' AND am.agentId = ''' + @branch + '''' IF @country IS NOT NULL SET @table = @table + ' AND trn.pCountry LIKE ''' + @country + '%''' --IF @sendCountry IS NOT NULL -- SET @table = @table + ' AND trn.sCountry LIKE ''' + @sendCountry + '%''' IF @amt IS NOT NULL SET @table = @table + ' AND trn.pAmt = ' + CAST(@amt AS VARCHAR(20))+ '' IF @voucherNo IS NOT NULL SET @table = @table + ' AND trn.voucherNo = ''' + @voucherNo + '''' IF @txncreatedBy IS NOT NULL SET @table = @table + ' AND trn.createdBy = '''+@txncreatedBy+'''' IF @txnDate IS NOT NULL SET @table = @table + ' AND CAST(trn.createdDate AS DATE)='''+@txnDate +'''' IF @ControlNo IS NOT NULL SET @table = @table + ' AND trn.controlNo = dbo.fnaEncryptString('''+@ControlNo+''')' IF @sendAgent IS NOT NULL SET @table = @table + ' AND trn.sAgent = '''+@sendAgent+'''' IF @sendBranch IS NOT NULL SET @table = @table + ' AND trn.sBranch = '''+@sendBranch+'''' IF @email IS NOT NULL SET @table = @table + ' AND cm.email LIKE ''%' + @email + '%''' SET @sql = ' SELECT * FROM ( ' + @table + ' ) x WHERE 1 = 1 ' IF @sender IS NOT NULL SET @sql = @sql + ' AND sender LIKE ''' + @sender + '%''' IF @receiver IS NOT NULL SET @sql = @sql + ' AND receiver LIKE ''' + @receiver + '%''' PRINT @sql EXEC (@sql) RETURN END IF @flag = 'i' BEGIN IF NOT EXISTS(SELECT * FROM REFERRAL_AGENT_WISE (NOLOCK) WHERE REFERRAL_CODE = @collectedBy) BEGIN --EXEC proc_errorHandler 1,'Invalid value is selected.', NULL; --RETURN; DECLARE @u_agentid VARCHAR(30); select @u_agentid = agentId FROM applicationUsers where userName=@collectedByName; IF @u_agentid='394392' --Tokyo Main-Head Office SET @collectedBy='JME0051' --Head Office Tokyo Branch ELSE IF @u_agentid='394389' --Chiba Funabashi Branch SET @collectedBy='JME0021' --Funabashi Branch,Office ELSE IF @u_agentid='394390' --Fukuoka Branch SET @collectedBy='JME0061' --Counter fukuoka ELSE IF @u_agentid='394391' --Nagoya Branch SET @collectedBy='JME0105' --Nagoya Branch,Office ELSE IF @u_agentid='394396' --New Office Shin Okubo SET @collectedBy='JME0151' --New Shin Okubo,Branch Office UPDATE remitTranTemp SET promotionCode = @collectedBy, collMode = 'Cash Collect' , downloadedBy = @collectedByName WHERE id = @tranId END ELSE BEGIN UPDATE remitTranTemp SET promotionCode = @collectedBy, collMode = 'Cash Collect' , downloadedBy = '' WHERE id = @tranId END EXEC proc_errorHandler 0,'Cash collected data saved successfully.', NULL; END IF @flag = 'update-as-bank' BEGIN IF NOT EXISTS(SELECT * FROM remitTranTemp (NOLOCK) WHERE id = @tranId) BEGIN EXEC proc_errorHandler 1,'Invalid data is selected.', NULL; RETURN; END UPDATE remitTranTemp SET promotionCode = null, collMode = 'Bank Deposit' WHERE id = @tranId EXEC proc_errorHandler 0,'Bank Deposit data saved successfully.', NULL; END IF @flag = 'u' BEGIN IF EXISTS(SELECT * FROM TBL_CASH_COLLECTED WHERE TRAN_ID = @tranId) BEGIN UPDATE TBL_CASH_COLLECTED SET COLLECTED_AMOUNT = @cAmt ,COLLECTED_BY = @collectedBy ,MODIFIED_BY = @user ,MODIFIED_DATE = GETDATE() WHERE TRAN_ID = @tranId EXEC proc_errorHandler 0,'Cash collect updated successfully', NULL; RETURN; END END IF @flag = 'verify' BEGIN DECLARE @cAmtByCustomer MONEY,@cAmtByUser MONEY,@customerId BIGINT, @USERNAME VARCHAR(100) SELECT @cAmtByCustomer= cAmt, @collMode = collMode , @customerId = tsTmp.customerId, @USERNAME = CM.USERNAME from REMITTRANTEMP rtTmp(nolock) inner join transenderstemp tsTmp (nolock) on tsTmp.tranid = rtTmp.id INNER JOIN CUSTOMERMASTER CM(NOLOCK) ON CM.CUSTOMERID = tsTmp.CUSTOMERID WHERE rtTmp.id = @tranId IF @customerId IS NULL BEGIN EXEC proc_errorHandler 1,'No txn found!', NULL; RETURN; END -- 11th march, 2022 IF @collMode = 'Bank Deposit' BEGIN --IF EXISTS (SELECT 1 FROM CUSTOMER_DEPOSIT_LOGS (NOLOCK) WHERE CUSTOMERID = @customerId AND APPROVEDBY IS NULL) --BEGIN -- EXEC proc_errorHandler 1, 'Customer Deposit Mapping pending for Approval!!', @id -- RETURN; --END SET @cAmtByUser = 0; SELECT @cAmtByUser = DBO.FNAGetCustomerAvailableBalanceVerify(@customerId) -- print @cAmtByUser; -- print @cAmtByCustomer; --IF @cAmtByUser < @cAmtByCustomer --BEGIN -- EXEC proc_errorHandler 1, 'Customer do not have sufficient balance for this transaction!!', @id -- RETURN; --END DECLARE @cAmtByUserAc MONEY=0; DECLARE @kycStatus INT SELECT @kycStatus = kycStatus FROM TBL_CUSTOMER_KYC(NOLOCK) WHERE CUSTOMERID = @customerId AND ISDELETED = 0 --AND kycStatus=11044 ORDER BY KYC_DATE IF ISNULL(@kycStatus, 0) <> 11044 BEGIN IF @kycStatus IS NOT NULL SELECT @MSG = 'KYC for selected customer is not completed, it is in status:' + detailTitle FROM staticDataValue(NOLOCK) WHERE valueId = @kycStatus ELSE SELECT @MSG = 'Please complete KYC status first' EXEC proc_errorHandler 2 ,@MSG ,NULL; RETURN END -- SELECT @cAmtByUserAc = DBO.FNAGetCustomerACBalById(@customerId); ---- print @@cAmtByUserAc; ---- print @cAmtByCustomer; -- IF @cAmtByUserAc < @cAmtByCustomer -- BEGIN -- EXEC proc_errorHandler 1, 'Customer do not have sufficient ac balance for this transaction!!', @id -- RETURN; -- END UPDATE remitTranTemp SET promotionCode = null, downloadedBy = '' WHERE id = @tranId --IF ISNULL(@cAmtByUser, -1) < @cAmtByCustomer --BEGIN -- EXEC proc_errorHandler 1, 'Customer do not have sufficient balance for this transaction!!', @id -- RETURN; --END END INSERT INTO pushNotificationHistroy(customerId,body,title,createDate,imageURL,sentId,Type,isReservation,isRead,isSend,category) select @customerid,'This is send Txn body Msg','SendTxn',getdate(),'',@tranId,1,0,0,0,'INFO' UPDATE REMITTRANTEMP SET verifiedby = @user,verifiedDate = getDate() where id = @tranId EXEC proc_errorHandler 0,'Transaction verified successfully', NULL; END END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION SELECT 1 error_code, ERROR_MESSAGE() msg, NULL id END CATCH