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.
197 lines
6.7 KiB
197 lines
6.7 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[PROC_RIASENDTXN] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
DROP PROCEDURE [dbo].[PROC_RIASENDTXN]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[PROC_RIASENDTXN] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
CREATE PROC [dbo].[PROC_RIASENDTXN]
|
|
(
|
|
@flag VARCHAR(20)
|
|
,@user VARCHAR(50) = NULL
|
|
,@txnDate DATETIME = NULL
|
|
,@cAmt MONEY = NULL
|
|
,@pAmt MONEY = NULL
|
|
,@exRate FLOAT = NULL
|
|
,@sCharge MONEY = NULL
|
|
,@senderName VARCHAR(150)= NULL
|
|
,@sIdNumber VARCHAR(20) = NULL
|
|
,@pCurr VARCHAR(5) = NULL
|
|
,@sCountry VARCHAR(30) = NULL
|
|
,@sCountryId VARCHAR(30) = NULL
|
|
,@controlNumber VARCHAR(20) = NULL
|
|
,@receiverName VARCHAR(150)= NULL
|
|
,@receiverCountry VARCHAR(30) = NULL
|
|
,@receiverCountryId VARCHAR(30) = NULL
|
|
,@orderNumber VARCHAR(20) = NULL
|
|
,@sequenceNumber VARCHAR(20) = NULL
|
|
,@paymentMethod VARCHAR(30) = NULL
|
|
,@branchId INT = NULL
|
|
,@sIdTypeText VARCHAR(40) = NULL
|
|
,@sIdType VARCHAR(15) = NULL
|
|
,@sMobile VARCHAR(20) = NULL
|
|
,@sEmail VARCHAR(100) = NULL
|
|
)
|
|
AS
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
BEGIN TRY
|
|
BEGIN
|
|
IF @flag = 'pCurr'
|
|
BEGIN
|
|
SELECT currencyCode FROM currencyMaster CM(NOLOCK)
|
|
WHERE ISNULL(CM.isActive, 'Y') = 'Y'
|
|
ORDER BY CM.currencyCode ASC
|
|
END
|
|
ELSE IF @flag = 'exrate'
|
|
BEGIN
|
|
SELECT 102.12
|
|
RETURN
|
|
END
|
|
ELSE IF @flag = 'i'
|
|
BEGIN
|
|
IF @user IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Your session expired, please re-login to continue', null;
|
|
RETURN
|
|
END
|
|
IF @branchId IS NULL
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'You are not authorised to make the transaction', null;
|
|
RETURN
|
|
END
|
|
IF ISNULL(@senderName, '') = ''
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Sender Name can not be empty!', null;
|
|
RETURN
|
|
END
|
|
IF ISNULL(@receiverName, '') = ''
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Receiver Name can not be empty!', null;
|
|
RETURN
|
|
END
|
|
IF ISNULL(@sIdNumber, '') = ''
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Receiver Name can not be empty!', null;
|
|
RETURN
|
|
END
|
|
IF NOT EXISTS(SELECT 1 FROM currencyMaster (NOLOCK) WHERE currencyCode = @pCurr)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Invalid Payout Currency code!', null;
|
|
RETURN
|
|
END
|
|
IF EXISTS(SELECT 1 FROM remitTran (NOLOCK) WHERE controlNo = dbo.fnaEncryptString(@controlNumber))
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Transaction already exists with same Control Number!', null;
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @pSuperAgent INT, @pSuperAgentName VARCHAR(100), @pAgent INT, @pAgentName VARCHAR(100), @pBranch INT, @pBranchName VARCHAR(100)
|
|
DECLARE @sSuperAgent INT, @sSuperAgentName VARCHAR(100), @sAgent INT, @sAgentName VARCHAR(100), @sBranch INT, @sBranchName VARCHAR(100)
|
|
|
|
SELECT @pSuperAgent = sSuperAgent,@pSuperAgentName = sSuperAgentName,
|
|
@pAgent = sAgent,@pAgentName = sAgentName ,@pBranch = sBranch,@pBranchName = sBranchName
|
|
FROM dbo.FNAGetBranchFullDetails(221227)
|
|
|
|
SELECT @sSuperAgent = sSuperAgent,@sSuperAgentName = sSuperAgentName,
|
|
@sAgent = sAgent,@sAgentName = sAgentName ,@sBranch = sBranch, @sBranchName = sBranchName
|
|
FROM dbo.FNAGetBranchFullDetails(@branchId)
|
|
|
|
SET @txnDate = @txnDate + CONVERT(VARCHAR,GETDATE(),108)
|
|
|
|
DECLARE @customerId VARCHAR(20)
|
|
--------#Register Customer if not registered#---------------
|
|
EXEC PROC_CHECK_CUSTOMER_REGISTRATION @flag = 'i', @customerName = @senderName, @customerIdNo = @sIdNumber, @customerIdType = @sIdType,
|
|
@nativeCountryId = @sCountryId, @customerId = @customerId OUT, @user = @user, @custMobile = @sMobile, @custEmail = @sEmail
|
|
|
|
IF @customerId = '0000'
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'Sender Email can not be blank.', NULL
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @cAmtUSD MONEY,@paymentMethodId int,@sCurrCostRate MONEY,@sCurrHoMargin MONEY
|
|
|
|
select @paymentMethodId = serviceTypeId from serviceTypeMaster(nolock) where typeTitle = @paymentMethod
|
|
select @receiverCountryId = countryId from CountryMaster(nolock) where countryName = @receiverCountry
|
|
|
|
SELECT
|
|
@sCurrCostRate = sCurrCostRate
|
|
,@sCurrHoMargin = sCurrHoMargin
|
|
FROM dbo.FNAGetExRate(118, @sAgent, @sBranch, 'KRW', @receiverCountryId, @pAgent, @pCurr, @paymentMethodId)
|
|
|
|
SET @cAmtUSD = @cAmt/(@sCurrCostRate+ISNULL(@sCurrHoMargin,0))
|
|
|
|
DECLARE @message VARCHAR(1000) = NULL,@errCode TINYINT = NULL,@ruleId INT = NULL
|
|
|
|
EXEC proc_complianceRuleDetail @flag= 'sender-limit',@user=@user,@cAmtUSD=@cAmtUSD,@customerId=@customerId
|
|
,@pCountryId=NULL,@deliveryMethod = @paymentMethodId,@message=@message out, @errCode=@errCode out
|
|
,@ruleId= @ruleId out
|
|
|
|
IF @errCode <> 0
|
|
BEGIN
|
|
EXEC proc_errorHandler 1,@message, null;
|
|
RETURN
|
|
END
|
|
|
|
BEGIN TRANSACTION;
|
|
INSERT INTO remitTran
|
|
(
|
|
controlNo ,sCurrCostRate, sCurrHoMargin ,pCurrCostRate ,pCurrHoMargin ,customerRate , serviceCharge ,pAgentComm ,pAgentCommCurrency ,
|
|
sSuperAgent ,sSuperAgentName ,sAgent ,sAgentName ,sBranch ,sBranchName ,sCountry ,pSuperAgent ,pSuperAgentName ,
|
|
pAgent ,pAgentName ,pBranch ,pBranchName ,pCountry ,paymentMethod ,
|
|
collCurr ,tAmt ,cAmt ,pAmt ,payoutCurr ,relWithSender ,purposeOfRemit ,sourceOfFund ,tranStatus ,payStatus ,createdDate ,
|
|
approvedDate, createdDateLocal ,createdBy ,tranType ,senderName ,receiverName, controlno2, ContNo
|
|
)
|
|
SELECT
|
|
dbo.fnaEncryptString(@controlNumber), @exRate, 0, NULL, NULL, NULL, @sCharge, NULL, 'USD',
|
|
@sSuperAgent, @sSuperAgentName, @sAgent, @sAgentName, @sBranch, @sBranchName, 'South Korea', @pSuperAgent, @pSuperAgentName,
|
|
@pAgent, @pAgentName, @pBranch, @pBranchName, @receiverCountry, @paymentMethod,
|
|
'KRW', (@cAmt - @sCharge), @cAmt, @pAmt, @pCurr, NULL, NULL, NULL, 'Payment', 'Post', @txnDate,
|
|
@txnDate, @txnDate, @user, 'R', @senderName, @receiverName, dbo.fnaEncryptString(@orderNumber), @sequenceNumber
|
|
|
|
DECLARE @tempTranId BIGINT = @@IDENTITY
|
|
|
|
INSERT INTO tranSenders
|
|
(
|
|
tranId, customerId, firstName, fullName, country, idType, idNumber, nativeCountry, email, mobile
|
|
)
|
|
SELECT
|
|
@tempTranId, @customerId, @senderName, @senderName, @sCountry, @sIdTypeText, @sIdNumber, @sCountry, @sEmail, @sMobile
|
|
|
|
INSERT INTO tranReceivers
|
|
(
|
|
tranId, firstName, fullName, country
|
|
)
|
|
SELECT
|
|
@tempTranId, @receiverName, @receiverName, @receiverCountry
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION;
|
|
|
|
SELECT 0 ErrorCode,'Transaction has been sent successfully' Msg,NULL
|
|
RETURN;
|
|
END
|
|
END;
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT <> 0
|
|
ROLLBACK TRANSACTION;
|
|
|
|
DECLARE @errorMessage VARCHAR(MAX);
|
|
SET @errorMessage = ERROR_MESSAGE();
|
|
|
|
EXEC proc_errorHandler 1, @errorMessage, @user;
|
|
END CATCH;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GO
|