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
435 lines
31 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_ApproveHoldedTxnMobile] Script Date: 9/20/2023 5:07:53 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
|
|
--------------------------------------------------------------------
|
|
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(controlNo)
|
|
,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.collMode collMode
|
|
,CM.membershipId
|
|
,CM.mobile sMobile
|
|
,CM.customerId
|
|
,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,schemeid) depositType
|
|
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(controlNo)
|
|
,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, '''')
|
|
,amt = CAST(trn.cAmt AS DECIMAL(18, 2))
|
|
,paymentMethod = case when trn.collMode = ''Bank Deposit'' then ''JP Post'' ELSE trn.collMode END
|
|
,depositType = trn.depositType
|
|
,txnDate = CAST(trn.createdDate AS DATE)
|
|
,txncreatedBy = trn.createdBy
|
|
,trn.collMode collMode
|
|
,cm.email
|
|
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;
|
|
-- 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
|
|
|