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.
 
 

475 lines
34 KiB

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 = ''<a href="/Remit/Transaction/Reports/SearchTransaction.aspx?commentFlag=N&showBankDetail=N&tranId=''+CAST(trn.id AS VARCHAR)+''">''+DBO.FNADECRYPTSTRING(trn.CONTROLNO)+''</a>''
,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 = ''<a href="/Remit/Transaction/Reports/SearchTransaction.aspx?commentFlag=N&showBankDetail=N&tranId=''+CAST(trn.id AS VARCHAR)+''">''+DBO.FNADECRYPTSTRING(trn.CONTROLNO)+''</a>''
,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