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.
 
 
 

1083 lines
37 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_errPaidTran] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_errPaidTran]
GO
/****** Object: StoredProcedure [dbo].[proc_errPaidTran] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[proc_errPaidTran]
@flag VARCHAR(50) = NULL
,@user VARCHAR(200) = NULL
,@controlNo VARCHAR(100) = NULL
,@rowId INT = NULL
,@eptId INT = NULL
,@tranId INT = NULL
,@newPBranch INT = NULL
,@narration VARCHAR(200) = NULL
,@rIdType VARCHAR(100) = NULL
,@rIdNo VARCHAR(30) = NULL
,@expiryType CHAR(1) = NULL
,@issueDate DATETIME = NULL
,@validDate DATETIME = NULL
,@placeOfIssue VARCHAR(100) = NULL
,@mobileNo VARCHAR(20) = NULL
,@rRelativeType VARCHAR(100) = NULL
,@rRelativeName VARCHAR(100) = NULL
,@payRemarks VARCHAR(MAX) = NULL
,@newDeliveryMethod VARCHAR(100) = NULL
,@hasChanged VARCHAR(1) = NULL
,@createdDate VARCHAR(50) = NULL
,@sortOrder VARCHAR(5) = NULL
,@pageSize INT = NULL
,@pageNumber INT = NULL
,@sortBy VARCHAR(20) = NULL
AS
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @controlNoEncrypted VARCHAR(20)
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
IF @tranId IS NULL
SELECT @tranId=id FROM remitTran WITH(NOLOCK) WHERE controlNo=@controlNoEncrypted
IF @rowId IS NULL
SET @rowId=@eptId
BEGIN TRY
CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
DECLARE
@sql VARCHAR(MAX)
,@oldValue VARCHAR(MAX)
,@newValue VARCHAR(MAX)
,@module VARCHAR(10)
,@tableAlias VARCHAR(100)
,@logIdentifier VARCHAR(50)
,@logParamMod VARCHAR(100)
,@logParamMain VARCHAR(100)
,@table VARCHAR(MAX)
,@select_field_list VARCHAR(MAX)
,@extra_field_list VARCHAR(MAX)
,@sql_filter VARCHAR(MAX)
,@id VARCHAR(10)
,@modType VARCHAR(6)
,@ApprovedFunctionId INT
,@tranAmount MONEY
,@agentId INT
,@oldPBranch INT
,@oldPBranchName VARCHAR(500)
,@newPBranchName VARCHAR(500)
,@newPaidDate VARCHAR(50)
,@oldPaidDate VARCHAR(50)
,@MESSAGE VARCHAR(MAX)
,@oldSettlingAgent INT
,@newSettlingAgent INT
,@parentId INT
DECLARE
@agentType INT
,@pBranch INT
,@pBranchName VARCHAR(100)
,@pAgent INT
,@pAgentName VARCHAR(100)
,@pSuperAgent INT
,@pSuperAgentName VARCHAR(100)
,@deliveryMethod VARCHAR(100)
,@deliveryMethodId INT
,@pLocation INT
,@pState VARCHAR(50)
,@pDistrict VARCHAR(50)
,@tAmt MONEY
,@cAmt MONEY
,@pAmt MONEY
,@payoutCurr VARCHAR(3)
,@serviceCharge MONEY
,@pCountry VARCHAR(100)
,@pCountryId INT
,@sBranch INT
,@sCountry VARCHAR(100)
,@sLocation INT
,@pAgentComm MONEY
,@pAgentCommCurrency VARCHAR(3)
,@pSuperAgentComm MONEY
,@pSuperAgentCommCurrency VARCHAR(3)
,@pHubComm MONEY
,@pHubCommCurrency VARCHAR(3)
,@settlingAgent INT
SELECT
@ApprovedFunctionId = 20141130
,@logIdentifier = 'eptId'
,@logParamMain = 'errPaidTran'
,@logParamMod = 'errPaidTranHistory'
,@module = '20'
,@tableAlias = 'Erroneously Paid Txn'
SELECT @newPBranchName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId=@newPBranch
IF @flag = 'i'
BEGIN
IF EXISTS(SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE tranId = @tranId AND ISNULL(isDeleted,'N') = 'N')
BEGIN
EXEC proc_errorHandler 1, 'Record (EP) already exists or recorded.', @tranId
RETURN;
END
SELECT @oldPBranch = pBranch, @pLocation = pLocation FROM remitTran WITH(NOLOCK) WHERE id = @tranId
DECLARE @districtId INT, @newAgentDistrictId INT
SELECT @districtId = districtId FROM apiLocationMapping WITH(NOLOCK) WHERE apiDistrictCode = @pLocation
SELECT @newAgentDistrictId = districtId FROM zoneDistrictMap WITH(NOLOCK)
WHERE districtName = (SELECT agentDistrict FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch)
IF RIGHT(@controlNo, 1) = 'D'
BEGIN
IF @districtId <> @newAgentDistrictId
BEGIN
EXEC proc_errorHandler 1, 'This agent is not allowed to pay this transaction. Transaction is not within this agent district', NULL
RETURN
END
END
--Find Old Settling Agent
SELECT @oldSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @oldPBranch AND ISNULL(isSettlingAgent, 'N') = 'Y'
IF @oldSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @oldPBranch
SELECT @oldSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
IF @oldSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId
SELECT @oldSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
--Find New Settling Agent
SELECT @newSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch AND ISNULL(isSettlingAgent, 'N') = 'Y'
IF @newSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
SELECT @newSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
IF @newSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId
SELECT @newSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
IF @oldPBranch = @newPBranch
BEGIN
EXEC proc_errorHandler 1, 'Sorry, You can not choose same old branch!', @tranId
RETURN
END
BEGIN TRANSACTION
IF EXISTS(SELECT TOP 1 'X' FROM errPaidTran WHERE tranId = @tranId AND tranStatus='Paid')
BEGIN
INSERT INTO errPaidTran (
tranId
,oldSettlingAgent
,oldPBranch
,oldPBranchName
,oldPSuperAgentComm
,oldPSuperAgentCommCurrency
,oldPAgentComm
,oldPAgentCommCurrency
,oldPaidDate
,newSettlingAgent
,newPBranch
,newPBranchName
,payoutAmt
,narration
,createdBy
,createdDate
,tranStatus
)
SELECT TOP 1 tranId,newSettlingAgent,newPBranch,newPBranchName,newPSuperAgentComm,newPSuperAgentCommCurrency,newPAgentComm,newPAgentCommCurrency,newPaidDate,
@newSettlingAgent,@newPBranch,@newPBranchName,payoutAmt,@narration,@user,GETDATE(),'Unpaid'
FROM errPaidTran WHERE tranId=@tranId AND tranStatus='Paid'
ORDER BY eptId DESC
SET @rowId = SCOPE_IDENTITY()
END
ELSE
BEGIN
INSERT INTO errPaidTran (
tranId
,oldSettlingAgent
,oldPBranch
,oldPBranchName
,oldPSuperAgentComm
,oldPSuperAgentCommCurrency
,oldPAgentComm
,oldPAgentCommCurrency
,oldPaidDate
,newSettlingAgent
,newPBranch
,newPBranchName
,payoutAmt
,narration
,createdBy
,createdDate
,tranStatus
)
SELECT id,@oldSettlingAgent,pBranch,pBranchName,pSuperAgentComm,pSuperAgentCommCurrency,pAgentComm,pAgentCommCurrency,paidDate,
@newSettlingAgent,@newPBranch,@newPBranchName,pAmt,@narration,@user,GETDATE(),'Unpaid'
FROM remitTran WHERE id=@tranId
SET @rowId = SCOPE_IDENTITY()
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Record has been added successfully.', @rowId
END
IF @flag = 'u'
BEGIN
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL AND createdBy <> @user)
BEGIN
EXEC proc_errorHandler 1, 'You can not modify this record.', @rowId
RETURN
END
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND tranStatus ='Paid')
BEGIN
EXEC proc_errorHandler 1, 'You can not modify, Already paid this record', @rowId
RETURN
END
SELECT @tranId = tranId FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId
SELECT @pLocation = plocation FROM remitTran WITH(NOLOCK) WHERE id = @tranId
SELECT @districtId = districtId FROM apiLocationMapping WITH(NOLOCK) WHERE apiDistrictCode = @pLocation
SELECT @newAgentDistrictId = districtId FROM zoneDistrictMap WITH(NOLOCK)
WHERE districtName = (SELECT agentDistrict FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch)
IF @districtId IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Location not found', NULL
RETURN
END
IF @newAgentDistrictId IS NULL
BEGIN
EXEC proc_errorHandler 1, 'Location not found', NULL
RETURN
END
IF @districtId <> @newAgentDistrictId
BEGIN
EXEC proc_errorHandler 1, 'This agent is not allowed to pay this transaction. Transaction is not within this agent district', NULL
RETURN
END
--Find New Settling Agent
SELECT @newSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch AND ISNULL(isSettlingAgent, 'N') = 'Y'
IF @newSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
SELECT @newSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
IF @newSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId
SELECT @newSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
BEGIN TRANSACTION
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE approvedBy IS NULL AND createdBy = @user)
BEGIN
UPDATE main SET
main.tranId = trn.id
,main.oldPBranch = trn.pBranch
,main.oldPBranchName = trn.pBranchName
,main.oldPSuperAgentComm = trn.pSuperAgentComm
,main.oldPSuperAgentCommCurrency = trn.pSuperAgentCommCurrency
,main.oldPAgentComm = trn.pAgentComm
,main.oldPAgentCommCurrency = trn.pAgentCommCurrency
,main.oldPaidDate = trn.paidDate
,main.newSettlingAgent = @newSettlingAgent
,main.newPBranch = @newPBranch
,main.newPBranchName = @newPBranchName
,main.payoutAmt = trn.pAmt
,main.narration = @narration
,main.createdBy = @user
,main.createdDate = GETDATE()
,main.tranStatus = 'Unpaid'
FROM errPaidTran main
INNER JOIN remitTran trn ON trn.id= main.tranId
WHERE main.eptId= @rowId
END
ELSE
BEGIN
IF EXISTS(SELECT TOP 1 'X' FROM errPaidTran WHERE tranId = @tranId AND tranStatus = 'Paid' AND eptId <> @rowId)
BEGIN
INSERT INTO errPaidTranHistory (
eptId
,tranId
,oldSettlingAgent
,oldPBranch
,oldPBranchName
,oldPSuperAgentComm
,oldPSuperAgentCommCurrency
,oldPAgentComm
,oldPAgentCommCurrency
,oldPaidDate
,newSettlingAgent
,newPBranch
,newPBranchName
,payoutAmt
,narration
,createdBy
,createdDate
,modType
)
SELECT TOP 1 @rowId,tranId,newSettlingAgent,newPBranch,newPBranchName,newPSuperAgentComm,newPSuperAgentCommCurrency,newPAgentComm,
newPAgentCommCurrency,newPaidDate,
@newSettlingAgent,@newPBranch,@newPBranchName,payoutAmt,@narration,@user,GETDATE(),'U'
FROM errPaidTran WHERE tranId=@tranId AND tranStatus='Paid'
ORDER BY eptId DESC
END
ELSE
BEGIN
SELECT @oldPBranch = pBranch FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
SELECT @oldSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @oldPBranch AND ISNULL(isSettlingAgent, 'N') = 'Y'
IF @oldSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @oldPBranch
SELECT @oldSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
IF @oldSettlingAgent IS NULL
BEGIN
SELECT @parentId = parentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId
SELECT @oldSettlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @parentId AND ISNULL(isSettlingAgent, 'N') = 'Y'
END
INSERT INTO errPaidTranHistory (
eptId
,tranId
,oldSettlingAgent
,oldPBranch
,oldPBranchName
,oldPSuperAgentComm
,oldPSuperAgentCommCurrency
,oldPAgentComm
,oldPAgentCommCurrency
,oldPaidDate
,newSettlingAgent
,newPBranch
,newPBranchName
,payoutAmt
,narration
,createdBy
,createdDate
,modType
)
SELECT @rowId,id,@oldSettlingAgent,pBranch,pBranchName,pSuperAgentComm,pSuperAgentCommCurrency,pAgentComm,pAgentCommCurrency,paidDate,
@newSettlingAgent,@newPBranch,@newPBranchName,pAmt,@narration,@user,GETDATE(),'U'
FROM remitTran WHERE id=@tranId
END
END
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Record updated successfully', @rowId
END
IF @flag = 'd'
BEGIN
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL AND createdBy <> @user)
BEGIN
EXEC proc_errorHandler 1, 'You can not delete this record.', @rowId
RETURN
END
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND tranStatus='Paid')
BEGIN
EXEC proc_errorHandler 1, 'You can not delete this record, Already Paid!', @rowId
RETURN
END
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL AND createdBy = @user)
BEGIN
DELETE FROM errPaidTran WHERE eptId = @rowId
END
ELSE
BEGIN
EXEC proc_errorHandler 1, 'Sorry, You can not delete this record, Already Approved!', @rowId
RETURN
END
EXEC proc_errorHandler 0, 'Record deleted successfully', @rowId
END
IF @flag IN ('reject','rejectAll')
BEGIN
IF NOT EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL)
AND
NOT EXISTS(SELECT 'X' FROM errPaidTranHistory WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL)
BEGIN
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @rowId
RETURN
END
IF EXISTS (SELECT 'X' FROM errPaidTran WHERE eptId = @rowId AND approvedBy IS NULL)
BEGIN --New record
BEGIN TRANSACTION
SET @modType = 'Reject'
EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
INSERT INTO #msg(errorCode, msg, id)
EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rowId, @user, @oldValue, @newValue
IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
BEGIN
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @rowId
RETURN
END
DELETE FROM errPaidTran WHERE eptId = @rowId
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
END
ELSE
BEGIN
BEGIN TRANSACTION
SET @modType = 'Reject'
EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
INSERT INTO #msg(errorCode, msg, id)
EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rowId, @user, @oldValue, @newValue
IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
BEGIN
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @rowId
RETURN
END
DELETE FROM errPaidTranHistory WHERE eptId = @rowId
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
END
EXEC proc_errorHandler 0, 'Changes rejected successfully.', @rowId
END
IF @flag IN ('approve','approveAll')
BEGIN
DECLARE @requestedBy VARCHAR(50)
IF NOT EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL)
AND
NOT EXISTS(SELECT 'X' FROM errPaidTranHistory WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL)
BEGIN
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @rowId
RETURN
END
BEGIN TRANSACTION
IF EXISTS (SELECT 'X' FROM errPaidTran WHERE approvedBy IS NULL AND eptId = @rowId)
SET @modType = 'I'
ELSE
SELECT @modType = modType FROM errPaidTranHistory WHERE eptId = @rowId AND approvedBy IS NULL
IF @modType = 'I'
BEGIN --New record
UPDATE errPaidTran SET
approvedBy = @user
,approvedDate= dbo.FNAGetDateInNepalTZ()
WHERE eptId = @rowId
EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @newValue OUTPUT
SELECT
@oldPaidDate = oldPaidDate
,@oldPBranchName = oldPBranchName
,@newPBranchName = newPBranchName
,@newPaidDate = createdDate
,@tranId = tranId
,@narration = narration
,@requestedBy = createdBy
FROM errPaidTran WHERE eptId=@rowId
SET @MESSAGE='EP:Paid by '+ ISNULL(@oldPBranchName,'') +' on '+ISNULL(@oldPaidDate,'')+' has been approved For Mistakely Post to agent '+ISNULL(@newPBranchName,'')+' on '+ISNULL(@newPaidDate,'') + ' by <b>' + @user + '</b>' + ISNULL('. <br/>Remarks:'
+ @narration, '')
EXEC proc_transactionLogs 'i', @requestedBy, @tranId, @MESSAGE, 'M'
END
ELSE IF @modType = 'U'
BEGIN
EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
UPDATE main SET
main.newSettlingAgent = mode.newSettlingAgent
,main.newPBranch = mode.newPBranch
,main.newPBranchName = mode.newPBranchName
,main.narration = mode.narration
,main.modifiedDate = dbo.FNAGetDateInNepalTZ()
,main.modifiedBy = @user
FROM errPaidTran main
INNER JOIN errPaidTranHistory mode ON mode.eptId= main.eptId AND mode.approvedBy IS NULL
WHERE mode.eptId = @rowId
EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @newValue OUTPUT
SELECT
@oldPaidDate = oldPaidDate
,@oldPBranchName = oldPBranchName
,@newPBranchName = newPBranchName
,@newPaidDate = createdDate
,@tranId = tranId
,@narration = narration
,@requestedBy = createdBy
FROM errPaidTran WHERE eptId=@rowId
SET @MESSAGE='EP:Paid by '+ ISNULL(@oldPBranchName,'') +' on '+ISNULL(@oldPaidDate,'')+' has been approved updated record For Mistakely Post to agent '+ISNULL(@newPBranchName,'')+' on '+ISNULL(@newPaidDate,'') + ' by <b>' + @user + '</b>' + ISNULL('.
<br/>Remarks: ' + @narration, '')
EXEC proc_transactionLogs 'i', @requestedBy, @tranId, @MESSAGE, 'M'
END
ELSE IF @modType = 'D'
BEGIN
EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @rowId, @oldValue OUTPUT
UPDATE errPaidTran SET
isDeleted = 'Y'
,modifiedDate = dbo.FNAGetDateInNepalTZ()
,modifiedBy = @user
WHERE eptId = @rowId
END
SELECT
@controlNo = dbo.fnadecryptstring(controlNo),
@controlNoEncrypted = controlNo,
@pAmt = pAmt,
@pBranch = pBranch
FROM remitTran rt WITH(NOLOCK) WHERE id = @tranId
IF ISNUMERIC(@controlNo) = 1 AND RIGHT(@controlNo,1) <> 'D'
BEGIN
INSERT INTO dbo.rs_remitTranTroubleTicket(RefNo,Comments,DatePosted,PostedBy,uploadBy,status,noteType,tranno,category)
SELECT @controlNoEncrypted, @message, GETDATE(), @user, @user, NULL, 2, NULL, 'push'
END
UPDATE errPaidTranHistory SET
approvedBy = @user,
approvedDate = dbo.FNAGetDateInNepalTZ()
WHERE eptId = @rowId
INSERT INTO #msg(errorCode, msg, id)
EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @rowId, @user, @oldValue, @newValue
IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
BEGIN
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
EXEC proc_errorHandler 1, 'Could not approve the changes.', @rowId
RETURN
END
-- ## Accounting EP
DECLARE @a_commCodeDom VARCHAR(20), @a_commCodeIntl VARCHAR(20), @a_mapCodeDom VARCHAR(20), @a_mapCodeInt VARCHAR(20)
, @b_commCodeDom VARCHAR(20), @b_commCodeIntl VARCHAR(20), @b_mapCodeDom VARCHAR(20), @b_mapCodeInt VARCHAR(20)
IF RIGHT(@controlNo,1) <> 'D'
BEGIN
IF EXISTS(SELECT 'x' FROM FastMoneyPro_account.DBO.ErroneouslyPaymentNew WITH(NOLOCK) WHERE REF_NO = @controlNo)
BEGIN
UPDATE FastMoneyPro_account.DBO.ErroneouslyPaymentNew SET EP_invoiceNo = @rowId WHERE REF_NO = @controlNo
END
ELSE
BEGIN
INSERT INTO FastMoneyPro_account.DBO.ErroneouslyPaymentNew(REF_NO,TRANNO,AMOUNT,EP_COMMISSION,EP_AGENTCODE,EP_BRANCHCODE,EP_DATE,EP_USER,EP_invoiceNo)
SELECT
DBO.FNADecryptString(CONTROLNO),
TRANID,
FLOOR(E.payoutAmt),
ISNULL(ISNULL(OLDPAGENTCOMM,pagentcomm),0),
am.mapCodeInt,
bm.mapCodeInt,
E.APPROVEDDATE,
E.APPROVEDBY,
EPTID
FROM errPaidTran E (NOLOCK)
INNER JOIN REMITTRAN R (NOLOCK) ON E.TRANID = R.ID
LEFT JOIN AGENTMASTER AM (NOLOCK) ON R.PAGENT = AM.AGENTID
LEFT JOIN AGENTMASTER BM (NOLOCK) ON R.PBRANCH = BM.AGENTID
WHERE eptId = @rowId
END
END
ELSE
BEGIN
IF EXISTS(SELECT 'x' FROM FastMoneyPro_account.DBO.ErroneouslyPaymentNew WITH(NOLOCK) WHERE REF_NO = @controlNo)
BEGIN
UPDATE FastMoneyPro_account.DBO.ErroneouslyPaymentNew SET EP_invoiceNo = @rowId WHERE REF_NO = @controlNo
END
ELSE
BEGIN
INSERT INTO FastMoneyPro_account.DBO.ErroneouslyPaymentNew(REF_NO,TRANNO,AMOUNT,EP_COMMISSION,EP_AGENTCODE,EP_BRANCHCODE,EP_DATE,EP_USER,EP_invoiceNo)
SELECT DBO.FNADecryptString(CONTROLNO)
,TRANID
,FLOOR(E.payoutAmt)
,ISNULL(ISNULL(OLDPAGENTCOMM,pagentcomm),0)
,CASE WHEN r.paymentMethod = 'Cash Payment' THEN am.mapCodeInt
ELSE am.mapCodeDom END
,CASE WHEN r.paymentMethod = 'Cash Payment' THEN bm.mapCodeInt
ELSE bm.mapCodeDom END
,E.APPROVEDDATE
,E.APPROVEDBY
,EPTID
FROM errPaidTran E (NOLOCK)
INNER JOIN REMITTRAN R (NOLOCK) ON E.TRANID=R.ID
LEFT JOIN AGENTMASTER AM (NOLOCK) ON R.PAGENT=AM.AGENTID
LEFT JOIN AGENTMASTER BM (NOLOCK) ON R.PBRANCH=BM.AGENTID
WHERE eptId = @rowId
END
END
-- ## Limit Update
EXEC Proc_AgentBalanceUpdate @flag = 'ep',@tAmt = @pAmt ,@settlingAgent = @pBranch
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Changes approved successfully.', @rowId
END
IF @flag = 's'
BEGIN
SET @table = '(
SELECT
eptId = main.eptId
,tranId = main.tranId
,controlNo = tranMas.controlNo
,newPBranch = main.newPBranch
,newPBranchName = main.newPBranchName
,oldPBranch = main.oldPBranch
,oldPBranchName = main.oldPBranchName
,payoutAmount = main.payoutAmt
,oldPaidDate = main.oldPaidDate
,narration = main.narration
,receiverName = tRec.firstName + ISNULL( '' '' + tRec.middleName, '''') + ISNULL( '' '' + tRec.lastName1, '''') + ISNULL( '' '' + tRec.lastName2, '''')
,senderName = tSend.firstName + ISNULL( '' '' + tSend.middleName, '''') + ISNULL( '' '' + tSend.lastName1, '''') + ISNULL( '' '' + tSend.lastName2, '''')
,tranStatus = main.tranStatus
,createdBy = main.createdBy
,createdDate = main.createdDate
,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.CreatedDate ELSE ISNULL(mode.createdDate, main.modifiedDate) END
,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.CreatedBy ELSE ISNULL(mode.createdBy, main.modifiedBy) END
,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
(mode.tranId IS NOT NULL)
THEN ''Y'' ELSE ''N'' END
FROM errPaidTran main WITH(NOLOCK)
INNER JOIN remitTran tranMas on tranMas.id=main.tranId
INNER JOIN tranSenders tSend WITH(NOLOCK) ON tranMas.id = tSend.tranId
INNER JOIN tranReceivers tRec WITH(NOLOCK) ON tranMas.id= tRec.tranId
LEFT JOIN errPaidTranHistory mode ON main.eptId = mode.eptId AND mode.approvedBy IS NULL
AND (
mode.createdBy = ''' + @user + '''
OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
)
WHERE ISNULL(main.isDeleted, ''N'') <> ''Y'' AND main.tranStatus=''Unpaid''
AND (
main.approvedBy IS NOT NULL
OR main.createdBy = ''' + @user + '''
OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
)
)'
IF @sortBy IS NULL
SET @sortBy = 'eptId'
IF @sortOrder IS NULL
SET @sortOrder = 'ASC'
SET @table = '(
SELECT
main.eptId
,main.tranId
,controlNo1=main.controlNo
,controlNo = ''<a href="#" onclick="OpenInNewWindow('''''+dbo.FNAGetURL()+'Remit/Transaction/Reports/SearchTransaction.aspx?controlNo='' + dbo.FNADecryptString(main.controlNo) + '''''')">'' + dbo.FNADecryptString(main.controlNo) + ''</a>''
,main.newPBranch
,main.newPBranchName
,main.oldPBranch
,main.oldPBranchName
,main.payoutAmount
,main.oldPaidDate
,main.narration
,main.receiverName
,main.senderName
,main.tranStatus
,main.createdBy
,main.createdDate
,main.modifiedDate
,main.modifiedBy
,main.hasChanged
FROM ' + @table + ' main
) x'
SET @sql_filter = ''
IF @controlNo IS NOT NULL
SET @sql_filter = @sql_filter + ' AND controlNo1 = ''' + dbo.FNAEncryptString(@controlNo) + ''''
IF @hasChanged IS NOT NULL
SET @sql_filter = @sql_filter + ' AND hasChanged = ''' + CAST(@haschanged AS VARCHAR) + ''''
IF @createdDate IS NOT NULL
SET @sql_filter = @sql_filter + ' AND cast(createdDate as date) = ''' + CAST(@createdDate AS VARCHAR(11)) + ''''
SET @select_field_list ='
eptId
,tranId
,controlNo1
,controlNo
,newPBranch
,newPBranchName
,oldPBranch
,oldPBranchName
,payoutAmount
,oldPaidDate
,narration
,receiverName
,senderName
,tranStatus
,createdBy
,createdDate
,modifiedDate
,modifiedBy
,hasChanged
'
EXEC dbo.proc_paging
@table
,@sql_filter
,@select_field_list
,@extra_field_list
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
IF @flag = 'c'
BEGIN
IF NOT EXISTS(SELECT 'X' FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted AND tranStatus = 'Paid')
BEGIN
EXEC proc_errorHandler 1, 'Paid Transaction Not Found', @controlNoEncrypted
RETURN
END
IF EXISTS(SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE tranId = @tranId AND tranStatus = 'Unpaid' AND ISNULL(isDeleted,'N')<>'Y')
BEGIN
EXEC proc_errorHandler 1, 'Transaction Already Processed For Mistakely Post!', @controlNoEncrypted
RETURN
END
SELECT @agentId = agentId FROM applicationUsers WITH(NOLOCK) WHERE userName = @user
IF @agentId = dbo.FNAGetHOAgentId()
BEGIN
EXEC proc_errorHandler 0, 'Transaction Found', @controlNoEncrypted
RETURN
END
EXEC proc_errorHandler 0, 'Transaction Found', @controlNo
END
IF @flag = 'a'
BEGIN
SELECT a.*,dbo.FNADecryptString(b.controlNo) controlNo ,
newPBranchName1 = newPBranchName+'|'+newPbranch
FROM errPaidTran a WITH(NOLOCK) INNER JOIN remitTran b WITH(NOLOCK) ON a.tranId=b.id
WHERE eptId = @rowId
END
IF @flag = 'PAY'
BEGIN
SELECT
eptId
,newPBranch
,newPBranchName
FROM errPaidTran WITH(NOLOCK)
WHERE approvedDate IS NOT NULL
AND tranId = @tranId
AND tranStatus ='Unpaid'
AND ISNULL(isDeleted,'N')<>'Y'
END
IF @flag = 'payUpdate'
BEGIN
IF NOT EXISTS(SELECT 'X'
FROM errPaidTran WITH(NOLOCK)
WHERE approvedDate IS NOT NULL
AND eptId = @rowId
AND tranStatus ='Unpaid'
AND newPaidDate IS NULL
AND ISNULL(isDeleted,'N')<>'Y')
BEGIN
SELECT '1','Transaction Not Available For Payment Order.',@rowId
RETURN
END
SELECT
@oldPBranch = oldPBranch
,@newPBranch = CASE WHEN @newPBranch IS NULL THEN newPBranch ELSE @newPBranch END
,@tranAmount = payoutAmt
FROM errPaidTran WITH(NOLOCK)
WHERE eptId=@rowId
IF @newPBranch IS NULL OR @newPBranch = ''
BEGIN
SELECT '1','PO agent is missing.',@rowId
RETURN
END
IF @newDeliveryMethod IS NULL OR @newDeliveryMethod = ''
BEGIN
SELECT '1','PO agent is missing.',@rowId
RETURN
END
SELECT @newPBranchName = agentName
FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
SET @pBranch = @newPBranch
SELECT
@agentType = agentType
,@pBranchName = agentName
,@pAgent = parentId
,@a_mapCodeDom = mapCodeDom
,@a_mapCodeInt = mapCodeInt
,@a_commCodeDom = commCodeDom
,@a_commCodeIntl = commCodeInt
,@b_mapCodeDom = mapCodeDom
,@b_mapCodeInt = mapCodeInt
,@b_commCodeDom = commCodeDom
,@b_commCodeIntl = commCodeInt
,@pCountry = agentCountry
,@pState = agentState
,@pDistrict = agentDistrict
FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch
SELECT
@deliveryMethod = paymentMethod
,@pLocation = pLocation
,@tAmt = tAmt
,@cAmt = cAmt
,@pAmt = pAmt
,@payoutCurr = payoutCurr
,@serviceCharge = serviceCharge
,@sBranch = sBranch
,@sCountry = sCountry
,@sBranch = sBranch
FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
SELECT @sLocation = agentLocation FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch
IF @agentType = 2903 --Agent
BEGIN
SET @pAgent = @pBranch
END
ELSE
BEGIN
SELECT
@a_mapCodeDom = mapCodeDom
,@a_mapCodeInt = mapCodeInt
,@a_commCodeDom = commCodeDom
,@a_commCodeIntl = commCodeInt
FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent
END
SELECT @pSuperAgent = parentId, @pAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent
SELECT @pSuperAgentName = agentName FROM agentMaster WITH(NOLOCK) WHERE agentId = @pSuperAgent
--3.Find Settlement Agent
SELECT @settlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @pBranch AND isSettlingAgent = 'Y'
IF @settlingAgent IS NULL
SELECT @settlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @pAgent AND isSettlingAgent = 'Y'
IF @settlingAgent IS NULL
SELECT @settlingAgent = agentId FROM agentMaster WITH(NOLOCK) WHERE agentId = @pSuperAgent AND isSettlingAgent = 'Y'
SELECT @deliveryMethodId = serviceTypeId
FROM serviceTypeMaster WITH(NOLOCK) WHERE typeTitle = @newDeliveryMethod AND ISNULL(isDeleted, 'N') = 'N'
IF(@sCountry = 'Nepal')
BEGIN
IF @deliveryMethod = 'Cash Payment'
BEGIN
DECLARE @tranDistrictId INT, @payAgentDistrictId INT
SELECT @payAgentDistrictId = districtId FROM apiLocationMapping WITH(NOLOCK) WHERE apiDistrictCode = @pLocation
SELECT @tranDistrictId = districtId FROM apiLocationMapping WITH(NOLOCK) WHERE apiDistrictCode = (SELECT pLocation FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted)
IF @payAgentDistrictId IS NULL
BEGIN
SELECT '1', 'Payout Location not found.',@rowId
RETURN
END
IF @tranDistrictId IS NULL
BEGIN
SELECT '1', 'Payout Location not found.',@rowId
RETURN
END
IF(@tranDistrictId <> @payAgentDistrictId)
BEGIN
SELECT '1', 'You are not allowed to pay this TXN. This TRANSACTION is not within the agent district.', @rowId
RETURN
END
END
END
IF @sCountry = 'Nepal'
BEGIN
DECLARE @commissionCheck MONEY, @mapCode VARCHAR(20), @payOption INT
IF @newDeliveryMethod = 'Cash Payment'
SELECT @mapCode = mapCodeInt, @payOption = payOption FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
ELSE
SELECT @mapCode = mapCodeIntAc, @payOption = payOption FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
IF @payOption IN (10,20)
BEGIN
SELECT
@pAgentComm = ISNULL(pAgentComm, 0)
,@pSuperAgentComm = ISNULL(psAgentComm, 0)
,@commissionCheck = pAgentComm
FROM dbo.FNAGetDomesticPayComm(@sBranch, @pBranch, @deliveryMethodId, @tAmt)
END
ELSE
BEGIN
SELECT @pAgentComm = 0, @commissionCheck = 0
END
SELECT @pAgentCommCurrency = 'NPR', @pSuperAgentCommCurrency = 'NPR'
END
ELSE
BEGIN
DECLARE @sCountryId INT
IF @newDeliveryMethod = 'Cash Payment'
SELECT @mapCode = mapCodeInt, @payOption = payOption FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
ELSE
SELECT @mapCode = mapCodeIntAc, @payOption = payOption FROM agentMaster WITH(NOLOCK) WHERE agentId = @newPBranch
SELECT @sCountryId = countryId FROM countryMaster WITH(NOLOCK) WHERE countryName = @sCountry AND ISNULL(isDeleted, 'N') = 'N'
SELECT @sLocation = agentLocation FROM agentMaster WITH(NOLOCK) WHERE agentId = @sBranch
SELECT @pSuperAgentComm = 0, @pSuperAgentCommCurrency = 'NPR'
--IF @payOption IN (10,20)
SELECT @pAgentComm = ISNULL(amount, 0),
@commissionCheck = amount,
@pAgentCommCurrency = commissionCurrency
FROM dbo.FNAGetPayComm(@sBranch, @sCountryId, @sLocation, @pSuperAgent, 151, @pLocation,
@pBranch, 'NPR', @deliveryMethodId, @cAmt, @pAmt, @serviceCharge, NULL, NULL)
--ELSE
-- SELECT @pAgentComm = 0, @pAgentCommCurrency = 'NPR', @commissionCheck = 0
SELECT @pSuperAgentComm = 0, @pSuperAgentCommCurrency = 'NPR'
END
UPDATE errPaidTran SET
ridType = @rIdType
,rIdNo = @rIdNo
,expiryType = @expiryType
,issueDate = @issueDate
,validDate = @validDate
,placeOfIssue = @placeOfIssue
,mobileNo = @mobileNo
,rRelativeType = @rRelativeType
,rRelativeName = @rRelativeName
,newPBranch = @pBranch
,newPBranchName = @pBranchName
,newPSuperAgentComm = @pSuperAgentComm
,newPSuperAgentCommCurrency = @pSuperAgentCommCurrency
,newPAgentComm = @pAgentComm
,newPAgentCommCurrency = @pAgentCommCurrency
,newPSuperAgent = @pSuperAgent
,newPSuperAgentName = @pSuperAgentName
,newPAgent = @pAgent
,newPAgentName = @pAgentName
,newDeliveryMethod = @newDeliveryMethod
,tranStatus = 'Paid'
,newPaidBy = @user
,newPaidDate = GETDATE()
,payRemarks = @payRemarks
,newSettlingAgent = @settlingAgent
WHERE eptId = @rowId
--6.Update receiver identification details
SELECT @tranId = id, @controlNo = dbo.fnadecryptstring(controlNo) FROM remitTran WITH(NOLOCK) WHERE controlNo = @controlNoEncrypted
UPDATE tranReceivers SET
idType = @rIdType
,idNumber = @rIdNo
,issuedDate = @issueDate
,validDate = @validDate
,placeOfIssue = @placeOfIssue
,mobile = @mobileNo
WHERE tranId = @tranId
EXEC proc_updatePayTopUpLimit @settlingAgent, @tranAmount
SELECT
@oldPaidDate = oldPaidDate
,@oldPBranchName = oldPBranchName
,@newPBranchName = newPBranchName
,@newPaidDate = createdDate
FROM errPaidTran WHERE EPTID=@ROWID
SET @MESSAGE='PO:Transaction has been paid by '+ ISNULL(@user,'') +' from '+ISNULL(@newPBranchName,'')+' agent on '+ CAST(GETDATE() AS VARCHAR)+' for Mistakely post record!'
EXEC proc_transactionLogs 'i', @user, @tranId, @MESSAGE, 'M'
IF ISNUMERIC(@controlNo) = 1 AND RIGHT(@controlNo,1) <> 'D'
BEGIN
INSERT INTO dbo.rs_remitTranTroubleTicket(RefNo,Comments,DatePosted,PostedBy,uploadBy,status,noteType,tranno,category)
SELECT @controlNoEncrypted, @message, GETDATE(), @user, @user, NULL, 2, NULL, 'push'
END
--## Accounting PO
UPDATE AC SET
PO_COMMISSION = CASE WHEN R.sAgent = 4854 THEN 0 ELSE ISNULL(E.newPAgentComm,0) END
,PO_AgentCode = CASE WHEN R.tranType = 'D' AND E.newDeliveryMethod = 'Bank Deposit' THEN am.mapCodeDom
ELSE AM.mapCodeInt END
,PO_BranchCode = CASE WHEN R.tranType = 'D' AND E.newDeliveryMethod = 'Bank Deposit' THEN bm.mapCodeDom
ELSE bm.mapCodeInt END
,PO_DATE = E.newPaidDate
,PO_USER = E.newPaidBy
,PO_INVOICENO = E.eptId
FROM FastMoneyPro_account.DBO.ErroneouslyPaymentNew AC, errPaidTran E (NOLOCK), REMITTRAN R (NOLOCK) ,AGENTMASTER AM (NOLOCK),AGENTMASTER BM (NOLOCK)
WHERE E.EPTID = AC.EP_INVOICENO
AND E.TRANID = R.ID
AND E.newPBranch = bm.agentId
AND E.newPAgent = am.agentId
AND AC.ref_no = @controlNo
-- ## Limit Update
EXEC Proc_AgentBalanceUpdate @flag = 'po',@tAmt = @pAmt ,@settlingAgent = @pBranch
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Transaction has been paid successfully.', @tranId
END
IF @flag = 'cancel'
BEGIN
IF NOT EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId)
BEGIN
EXEC proc_errorHandler 1, 'Record not found.', @rowId
RETURN
END
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND approvedBy IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'You can not cancel this transaction before approval.', @rowId
RETURN
END
IF EXISTS (SELECT 'X' FROM errPaidTran WITH(NOLOCK) WHERE eptId = @rowId AND tranStatus ='Paid')
BEGIN
EXEC proc_errorHandler 1, 'You can not cancel, Transaction has been already paid.', @rowId
RETURN
END
BEGIN TRANSACTION
UPDATE errPaidTran SET
modifiedBy = @user
,modifiedDate = GETDATE()
,tranStatus = 'Cancel'
FROM errPaidTran main WHERE main.eptId= @rowId
SELECT @tranId = tranId FROM dbo.errPaidTran ep WITH(NOLOCK) WHERE eptId= @rowId
SET @MESSAGE='EP Cancelled: '+ ISNULL(@narration,'')
EXEC proc_transactionLogs 'i', @user, @tranId, @narration, 'C'
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Transaction has been cancelled successfully', @rowId
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
DECLARE @errorMessage VARCHAR(MAX)
SET @errorMessage = ERROR_MESSAGE()
EXEC proc_errorHandler 1, @errorMessage, @tranId
END CATCH
GO