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.
256 lines
9.3 KiB
256 lines
9.3 KiB
USE [FastMoneyPro_remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_online_SendApprove] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
DROP PROCEDURE [dbo].[proc_online_SendApprove]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_online_SendApprove] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
alter PROC [dbo].[proc_online_SendApprove] (
|
|
@flag VARCHAR(50)
|
|
,@user VARCHAR(30) = NULL
|
|
,@controlNo VARCHAR(50) = NULL
|
|
--,@mrn VARCHAR(50) = NULL
|
|
,@id VARCHAR(50) = NULL
|
|
,@detailVal VARCHAR(max) = NULL
|
|
,@strPaymentType VARCHAR(50) = NULL
|
|
,@fltAmount VARCHAR(50) = NULL
|
|
,@intStatus VARCHAR(200) = NULL
|
|
,@rfName VARCHAR(100) = NULL
|
|
,@sIdType VARCHAR(100) =NULL
|
|
,@sIdNo VARCHAR(100) =NULL
|
|
,@sMobile VARCHAR(50) = NULL
|
|
,@sCountry VARCHAR(100) = NULL
|
|
--,@statusSofort VARCHAR(200) = NULL
|
|
--,@statusReason VARCHAR(200) = NULL
|
|
--,@merchantSig VARCHAR(200) = NULL
|
|
--,@SofoTxnId VARCHAR(50) = NULL
|
|
,@BankName VARCHAR(200) = NULL
|
|
,@tranId varchar(50) = NULL
|
|
,@senderRealName VARCHAR(200) = NULL
|
|
,@agentRefId VARCHAR(50) = NULL
|
|
,@postCodeResponse VARCHAR(50) = NULL
|
|
,@addressResponse VARCHAR(50) = NULL
|
|
,@voucherDetails xml = null
|
|
|
|
)
|
|
|
|
AS
|
|
BEGIN TRY
|
|
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
|
|
DECLARE
|
|
@pinEncrypted VARCHAR(50) = dbo.FNAEncryptString(@controlNo)
|
|
,@createdBy VARCHAR(50)
|
|
,@customerStatus VARCHAR(20)
|
|
DECLARE @pCountry varchar(50),@deliveryMethod VARCHAR(30), @cAmt MONEY, @pBank INT, @pBankName varchar(100), @pAgent INT, @pAgentName varchar(100)
|
|
DECLARE @txnUser VARCHAR(50) = 'onlineuser'
|
|
DECLARE @controlNoEncrypted VARCHAR(20)
|
|
declare @tranStatus varchar(20)
|
|
DECLARE @receiverOfacRes VARCHAR(MAX),@ofacRes VARCHAR(MAX),@ofacReason VARCHAR(MAX), @senderName VARCHAR(200), @receiverName VARCHAR(200),
|
|
@senderId BIGINT, @receiverId BIGINT, @sBranch INT, @pBranch INT, @sCountryId INT, @pCountryId INT, @deliveryMethodId INT, @tAmt MONEY,
|
|
@accountNo VARCHAR(100), @rMobile VARCHAR(50), @agentSessionId VARCHAR(100)
|
|
DECLARE @result VARCHAR(MAX),@sAgent int
|
|
DECLARE @csMasterId INT, @complianceRes VARCHAR(20), @totalRows INT, @count INT, @compFinalRes VARCHAR(20)
|
|
DECLARE @csMasterRec TABLE (rowId INT IDENTITY(1,1), masterId INT)
|
|
|
|
|
|
IF @flag = 'updateOnlineTxn'
|
|
BEGIN
|
|
SELECT
|
|
@customerStatus = CASE WHEN ISNULL(customerStatus, 'P') = 'P' THEN 'PendingUser' ELSE 'VerifiedUser' END
|
|
,@pCountry = r.pCountry
|
|
,@deliveryMethod = paymentMethod, @pBank = pBank, @pBankName = pBankName
|
|
,@cAmt = r.cAmt
|
|
,@senderId = c.customerId
|
|
FROM dbo.customerMaster c WITH(NOLOCK)
|
|
INNER JOIN remitTranTempOnline r ON r.createdBy = c.email AND ISNULL(c.onlineUser,'N')='Y'
|
|
WHERE r.id = @id
|
|
|
|
IF @intStatus = '1'
|
|
BEGIN
|
|
-->>Start:OFAC/Compliance Checking
|
|
SELECT
|
|
@controlNoEncrypted = controlNo
|
|
,@controlNo = dbo.FNADecryptString(controlNo)
|
|
,@senderName = senderName, @receiverName = receiverName, @sBranch = sBranch, @pBranch = pBranch
|
|
,@sCountryId = (SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = sCountry)
|
|
,@pCountryId = (SELECT countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = pCountry)
|
|
,@deliveryMethodId = (SELECT serviceTypeId FROM serviceTypeMaster WITH(NOLOCK) WHERE typeTitle = paymentMethod)
|
|
,@tAmt = tAmt
|
|
,@accountNo = accountNo
|
|
,@sAgent = sAgent
|
|
,@agentRefId = promotionCode
|
|
FROM remitTranTempOnline WITH(NOLOCK)
|
|
WHERE id = @id
|
|
|
|
SELECT @senderId = customerId FROM tranSendersTempOnline WITH(NOLOCK) WHERE tranId = @id
|
|
SELECT @receiverId = customerId, @rMobile = mobile FROM tranReceiversTempOnline WITH(NOLOCK) WHERE tranId = @id
|
|
|
|
SET @agentSessionId = NEWID()
|
|
|
|
EXEC proc_ofacTracker @flag = 't', @name = @senderName, @Result = @ofacRes OUTPUT
|
|
EXEC proc_ofacTracker @flag = 't', @name = @receiverName, @Result = @receiverOfacRes OUTPUT
|
|
|
|
IF ISNULL(@ofacRes, '') <> ''
|
|
BEGIN
|
|
SET @ofacReason = 'Matched by sender name'
|
|
END
|
|
IF ISNULL(@receiverOfacRes, '') <> ''
|
|
BEGIN
|
|
SET @ofacRes = ISNULL(@ofacRes + ',' + @receiverOfacRes, '' + @receiverOfacRes)
|
|
SET @ofacReason = 'Matched by receiver name'
|
|
END
|
|
IF ISNULL(@ofacRes, '') <> '' AND ISNULL(@receiverOfacRes, '') <> ''
|
|
BEGIN
|
|
SET @ofacReason = 'Matched by both sender name and receiver name'
|
|
END
|
|
|
|
SELECT @sCountry = countryName FROM dbo.countryMaster WHERE countryId = @sCountryId
|
|
|
|
|
|
|
|
BEGIN TRANSACTION
|
|
DECLARE
|
|
@msg VARCHAR(MAX)
|
|
,@complienceMessage varchar(1000) = NULL
|
|
,@shortMsg varchar(100) = NULL
|
|
,@complienceErrorCode TINYINT = NULL
|
|
,@complianceRuleId INT = NULL
|
|
EXEC [proc_complianceRuleDetail]
|
|
@user = @user
|
|
,@sIdType = @sIdType
|
|
,@sIdNo = @sIdNo
|
|
,@receiverName = @rfName
|
|
,@cAmt = @cAmt
|
|
,@country = @sCountry
|
|
,@message = @complienceMessage OUTPUT
|
|
,@shortMessage = @shortMsg OUTPUT
|
|
,@errCode = @complienceErrorCode OUTPUT
|
|
,@ruleId = @complianceRuleId OUTPUT
|
|
|
|
IF(@complienceErrorCode <> 0)
|
|
BEGIN
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
IF(@complienceErrorCode = 2)
|
|
BEGIN
|
|
INSERT remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId)
|
|
SELECT @complianceRuleId, NULL, @agentRefId
|
|
END
|
|
|
|
--IF(@complienceErrorCode = 1)
|
|
--BEGIN
|
|
-- SELECT 101 errorCode,@complienceMessage msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
|
|
--END
|
|
--ELSE
|
|
--BEGIN
|
|
-- INSERT remitTranComplianceTemp(csDetailTranId, matchTranId, agentRefId)
|
|
-- SELECT @complianceRuleId, NULL, @agentRefId
|
|
|
|
-- --SELECT 102 errorCode,@complienceMessage msg, @complienceErrorCode id, @complienceMessage compApproveRemark,'compliance' vtype
|
|
--END
|
|
|
|
INSERT INTO ComplianceLog(senderName, senderCountry, senderIdType, senderIdNumber, senderMobile, receiverName, receiverCountry, payOutAmt,
|
|
complianceId, complianceReason, complainceDetailMessage, createdBy, createdDate)
|
|
SELECT @senderName, @sCountry, @sIdType, @sIdNo, @sMobile, @receiverName, @pCountry, @cAmt,
|
|
@complianceRuleId, @shortMsg, @complienceMessage, @user, GETDATE()
|
|
|
|
--DECLARE @tempRowId INT = @@IDENTITY
|
|
|
|
--SELECT
|
|
-- id
|
|
-- ,csDetailRecId = ''
|
|
-- ,[S.N.] = ROW_NUMBER()OVER(ORDER BY id)
|
|
-- ,[Remarks] = complianceReason
|
|
-- ,[Action] = CASE WHEN @complienceErrorCode=102 THEN 'HOLD' ELSE 'Blocked' END
|
|
-- --,[Matched Tran ID] = ''
|
|
--FROM ComplianceLog
|
|
--WHERE id = @tempRowId
|
|
END
|
|
|
|
--<<End:OFAC/Compliance Checking
|
|
|
|
UPDATE creditLimit SET
|
|
todaysSent = ISNULL(todaysSent, 0) + @tAmt
|
|
WHERE agentId = @sAgent
|
|
|
|
/*
|
|
Move from tempOnline to Main Temp table
|
|
*/
|
|
--EXEC proc_online_temp_to_main @id = @id, @voucherDetails = @voucherDetails
|
|
EXEC proc_online_temp_to_main @id = @id
|
|
|
|
-- UPDATE Limit
|
|
UPDATE dbo.customerMaster SET lastTranId = @tranId
|
|
,todaysSent = ISNULL(todaysSent,0) + @cAmt
|
|
,totalSent = ISNULL(totalSent,0)+ @cAmt
|
|
WHERE customerId = @senderId
|
|
|
|
|
|
|
|
-->>Start:OFAC/Compliance Verification
|
|
IF EXISTS(SELECT 'X' FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId)
|
|
BEGIN
|
|
INSERT INTO remitTranCompliance(TranId, csDetailTranId, matchTranId)
|
|
SELECT @tranId, csDetailTranId, matchTranId FROM remitTranComplianceTemp WITH(NOLOCK) WHERE agentRefId = @agentRefId
|
|
SET @compFinalRes = 'C'
|
|
|
|
DELETE FROM dbo.remitTranComplianceTemp WHERE agentRefId = @agentRefId
|
|
END
|
|
|
|
IF(ISNULL(@compFinalRes, '') <> '' OR ISNULL(@ofacRes, '') <> '')
|
|
BEGIN
|
|
IF(@ofacRes <> '' AND ISNULL(@compFinalRes, '') = '')
|
|
BEGIN
|
|
INSERT remitTranOfac(TranId, blackListId, reason, flag)
|
|
SELECT @id, @ofacRes, @ofacReason, NULL
|
|
|
|
UPDATE remitTranTemp SET
|
|
tranStatus = CASE WHEN @customerStatus = 'PendingUser' THEN 'OFAC Hold' ELSE 'OFAC' END
|
|
WHERE controlNo = @controlNoEncrypted
|
|
END
|
|
|
|
ELSE IF(@compFinalRes <> '' AND ISNULL(@ofacRes, '') = '')
|
|
BEGIN
|
|
UPDATE remitTranTemp SET
|
|
tranStatus = CASE WHEN @customerStatus = 'PendingUser' THEN 'Compliance Hold' ELSE 'Compliance' END
|
|
WHERE controlNo = @controlNoEncrypted
|
|
END
|
|
|
|
ELSE IF(ISNULL(@compFinalRes, '') <> '' AND ISNULL(@ofacRes, '') <> '')
|
|
BEGIN
|
|
INSERT remitTranOfac(TranId, blackListId, reason)
|
|
SELECT @id, @ofacRes, @ofacReason
|
|
|
|
UPDATE remitTranTemp SET
|
|
tranStatus = CASE WHEN @customerStatus = 'PendingUser' THEN 'OFAC/Compliance Hold' ELSE 'OFAC/Compliance' END
|
|
WHERE controlNo = @controlNoEncrypted
|
|
END
|
|
END
|
|
|
|
SELECT @tranStatus=r.tranStatus FROM remittranTemp r where id=@tranId
|
|
IF @tranStatus = 'Payment'
|
|
BEGIN
|
|
-->>Shift to main table
|
|
EXEC proc_remitTranTempToMain @tranId
|
|
END
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
SELECT 0 ErrorCode , 'Transaction Approved Successfully' Msg, @tranId Id, @customerStatus Extra
|
|
END
|
|
END
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT > 0
|
|
ROLLBACK TRANSACTION
|
|
SELECT 1 error_code, ERROR_MESSAGE() mes, NULL id
|
|
END CATCH
|
|
|