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.
 
 
 

316 lines
10 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[INBOUND_PROC_SCHEDULER_RECEIVER_SCANNER] Script Date: 3/16/2020 10:36:46 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[INBOUND_PROC_SCHEDULER_RECEIVER_SCANNER]
(
@Flag VARCHAR(30) = NULL
,@user VARCHAR(100) = NULL
,@bank VARCHAR(100) = NULL
,@accountNo VARCHAR(100) = NULL
,@mobile VARCHAR(100) = NULL
,@id BIGINT = NULL
,@processId VARCHAR(100) = NULL
,@customerId BIGINT = NULL
,@controlNo VARCHAR(100) = NULL
)
AS
SET NOCOUNT ON
DECLARE @tranId BIGINT
,@EncryptedprocessId VARCHAR(100)
DECLARE @controlNoEncrypted VARCHAR(20)
SELECT @controlNoEncrypted = dbo.FNAEncryptString(@controlNo)
BEGIN TRY
IF @Flag='getUnpaidTxn'
BEGIN
SELECT TOP 100 rt.id, rt.pBank,rt.accountNo,rt.receiverName,rt.senderName,rt.sCountry ,tr.mobile
FROM dbo.INBOUND_REMIT_TRAN (NOLOCK) rt
INNER JOIN dbo.INBOUND_TRAN_RECEIVERS (NOLOCK) tr ON tr.tranId=rt.id
WHERE tranStatus='Payment' AND payStatus='Hold'
AND rt.id NOT IN (SELECT tranId FROM dbo.INBOUND_PROCESSID(NOLOCK))
RETURN
END
IF @Flag='checkBankDetails'
BEGIN
DECLARE @IsCustomerExist BIT = 0, @IsCustomerApproved BIT =0
,@IsPennyTest BIT = 0, @CustomerApproved VARCHAR(100)
,@customerType VARCHAR(100)
SELECT TOP 1 @customerId=customerId,@CustomerApproved=approvedDate,
@customerType=CASE WHEN customerType='11018' THEN 1 ELSE 0 END
FROM dbo.customerMaster (NOLOCK)
WHERE bankName=@bank AND bankAccountNo=@accountNo
AND approvedDate IS NOT NULL
IF @CustomerId IS NOT NULL
SET @IsCustomerExist = 1
IF @CustomerApproved IS NOT NULL
SET @IsCustomerApproved = 1
IF @IsCustomerExist = 0
BEGIN
IF EXISTS(SELECT 'X' FROM dbo.INBOUND_CUSTOMERBANKLIST(NOLOCK) t
INNER JOIN dbo.KoreanBankList(NOLOCK) k ON k.bankCode = t.bankCode
WHERE t.accountNo = @accountNo AND k.rowId = @bank AND t.isPennyTest = 1)
BEGIN
SELECT
@customerId = t.customerId
,@IsPennyTest = CASE WHEN t.isPennyTest = 1 THEN 1 ELSE 0 END
FROM dbo.INBOUND_CUSTOMERBANKLIST(NOLOCK) t
INNER JOIN dbo.KoreanBankList(NOLOCK) k ON k.bankCode = t.bankCode
WHERE t.accountNo = @accountNo AND k.rowId = @bank AND t.isPennyTest = 1
SELECT
@IsCustomerExist = CASE WHEN @customerId IS NOT NULL THEN 1 ELSE 0 END
,@IsCustomerApproved = CASE WHEN approvedDate IS NOT NULL THEN 1 ELSE 0 END
FROM dbo.customerMaster(NOLOCK) WHERE customerId = @customerId
END
END
--SELECT @IsCustomerExist,@IsCustomerApproved,@IsPennyTest
--RETURN
IF EXISTS(SELECT 'X' FROM dbo.INBOUND_CUSTOMERBANKLIST (NOLOCK) WHERE customerId=@CustomerId AND action='SUCCESS')
BEGIN
SET @IsPennyTest = 1
END
IF EXISTS(SELECT 'X' FROM dbo.TblCustomerBankVerification (NOLOCK) WHERE customerId=@CustomerId AND action='SUCCESS')
BEGIN
SET @IsPennyTest = 1
IF NOT EXISTS(SELECT * FROM dbo.INBOUND_CUSTOMERBANKLIST(NOLOCK) t
INNER JOIN dbo.KoreanBankList(NOLOCK) k ON k.bankCode = t.bankCode
WHERE t.accountNo = @accountNo AND k.rowId = @bank )
BEGIN
INSERT INTO dbo.INBOUND_CUSTOMERBANKLIST
(
customerId,customerName,certNumber,certLimitCount,bankCode,
accountNo,isPennyTest,action,
createdDate, createdBy, reqDate, certDate
)
SELECT @CustomerId,cm.firstName,cv.certNumber,cv.certLimitCount,cm.bankName
,cv.bankAccountNo,1,cv.action,GETDATE(),'system',cv.reqDate,cv.certDate
FROM dbo.TblCustomerBankVerification (nolock) cv
INNER JOIN dbo.customerMaster (NOLOCK) cm ON cm.customerId = cv.customerId WHERE cm.customerId=@CustomerId AND action='SUCCESS'
END
END
/*Already existing customer */
IF(@IsCustomerExist= 1 AND @IsCustomerApproved= 1 AND @IsPennyTest= 1)
BEGIN
BEGIN TRANSACTION
UPDATE dbo.INBOUND_REMIT_TRAN SET
payStatus='Unpaid'
,postedDate=GETDATE()
,postedBy='system'
WHERE id =@id
UPDATE INBOUND_TRAN_RECEIVERS SET
customerId=@customerId
WHERE tranId=@id
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT 0 ErrorCode, 'Transaction post successfully!' Msg,NULL Id
RETURN
END
SELECT @processId=LEFT(CONVERT(VARCHAR(36), NEWID()), 8)
SET @EncryptedprocessId=dbo.FNAEncryptString(@processId)
/*New customer*/
IF(@IsCustomerExist= 0 AND @IsCustomerApproved= 0 AND @IsPennyTest= 0 )
BEGIN
IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_PROCESSID(NOLOCK) WHERE processID=@processId OR (tranId=@id AND remarks='Register'))
BEGIN
BEGIN TRANSACTION
INSERT INTO dbo.INBOUND_PROCESSID(processID,tranId,remarks,createdDate)SELECT @processId,@id,'Register',GETDATE()
INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
SELECT 'globalmoney',0,'Inbound','Test Registration Link.(http://gmeuat.gmeremit.com:5023/Register?ib='+CAST(@EncryptedprocessId AS VARCHAR(100))+')',FORMAT(GETDATE(),'yyyyMMddHHmmss')
,FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@mobile
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT 0 ErrorCode, 'New Customer' Msg,NULL Id
RETURN
END
SELECT 1 ErrorCode, 'New Customer!. Sms already sent.' Msg,NULL Id
RETURN
END
/*penny test */
IF(@IsCustomerExist= 1 AND @IsPennyTest= 0 )--AND @customerType=1)
BEGIN
IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_PROCESSID(NOLOCK) WHERE processID=@processId OR (tranId=@id AND remarks='Penny'))
BEGIN
BEGIN TRANSACTION
INSERT INTO dbo.INBOUND_PROCESSID(processID,tranId,customerId,remarks,createdDate)
SELECT @processId,@id,@customerId,'Penny',GETDATE()
INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
SELECT 'globalmoney',0,'Inbound','Test Penny Link.(http://gmeuat.gmeremit.com:5023/PennyCertificate?ib='+CAST(@CustomerId AS VARCHAR(50))+'&pi='+CAST(@EncryptedprocessId AS VARCHAR(100))+')',FORMAT(GETDATE(),'yyyyMMddHHmmss')
,FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@mobile
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT 0 ErrorCode, 'Penny Test' Msg,NULL Id
RETURN
END
SELECT 1 ErrorCode, 'Penny Test!.Sms already sent.' Msg,NULL Id
RETURN
END
--/*approve customer */
--IF(@IsCustomerExist= 1 AND @IsCustomerApproved = 0 )
--BEGIN
-- IF NOT EXISTS(SELECT 'x' FROM dbo.INBOUND_PROCESSID(NOLOCK) WHERE processID=@processId OR (tranId=@id AND remarks='Approve'))
-- BEGIN
-- BEGIN TRANSACTION
-- INSERT INTO dbo.INBOUND_PROCESSID(processID,tranId,customerId,remarks,createdDate)
-- SELECT @processId,@id,@customerId,'Approve',GETDATE()
-- INSERT INTO KT_SMS.dbo.SDK_SMS_SEND ( USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_INFO)
-- SELECT 'inbound',0,'Notice','Test document approval.',FORMAT(GETDATE(),'yyyyMMddHHmmss')
-- ,FORMAT(GETDATE(),'yyyyMMddHHmmss'),'1588-6864',@mobile
-- IF @@TRANCOUNT > 0
-- COMMIT TRANSACTION
-- SELECT 0 ErrorCode, 'Customer approval pending' Msg,NULL Id
-- RETURN
-- END
-- SELECT 1 ErrorCode, 'Customer approval pending.Sms already sent' Msg,NULL Id
-- RETURN
--END
SELECT 1 ErrorCode, 'No record found' Msg,NULL Id
RETURN
END
IF @Flag='getCustBankDetails' --autoload bank name and accounno ddl in online system
BEGIN
SELECT @tranId=tranId FROM dbo.INBOUND_PROCESSID (NOLOCK) WHERE processID =dbo.FNADecryptString(@processId)
SELECT TOP 1 pBank ,accountNo FROM INBOUND_REMIT_TRAN(NOLOCK)
WHERE id=@tranId
RETURN
END
IF @Flag='checkInboundRequest' --check processid of inbound request
BEGIN
IF EXISTS(SELECT 'X' FROM dbo.INBOUND_PROCESSID (NOLOCK) WHERE processID =dbo.FNADecryptString(@processId) AND customerId=@customerId)
BEGIN
SELECT 0 ErrorCode, 'Valid request' Msg,@customerId Id
RETURN
END
SELECT 1 ErrorCode, 'InValid request for penny test.Please contact GME.' Msg,NULL Id
RETURN
END
IF @Flag='checkCustomerType' --check inbound customer
BEGIN
IF EXISTS(SELECT 'X' FROM dbo.customerMaster(NOLOCK) WHERE customerId=@customerId )
BEGIN
SELECT customerType =CASE WHEN customerType='11018' THEN 'INBOUND' ELSE 'OUTBOUND' END
FROM dbo.customerMaster(NOLOCK) WHERE customerId=@customerId
RETURN
END
END
IF @Flag='getTxnForPaid'
BEGIN
SELECT rt.id AS tranId, rt.controlNo
FROM dbo.INBOUND_REMIT_TRAN (NOLOCK) rt
WHERE tranStatus='Payment' AND payStatus='Unpaid'
RETURN
END
IF @flag='Post'
BEGIN
IF EXISTS ( SELECT 1 FROM dbo.INBOUND_REMIT_TRAN (NOLOCK) WHERE controlNo=@controlNo AND tranStatus='Payment' AND payStatus='Unpaid')
BEGIN
UPDATE INBOUND_REMIT_TRAN
SET payStatus='Post',postedDate=GETDATE(),postedDateLocal=GETDATE(),postedBy='system'
WHERE controlNo =@controlNo
AND tranStatus='Payment' AND payStatus='Unpaid' AND id=@id
SELECT TOP 1
kb.bankCode AS receiveInstitution
,accountNo AS receiveAccountNo
,senderName
,pAmt AS amount
FROM INBOUND_REMIT_TRAN (NOLOCK) rt
INNER JOIN dbo.KoreanBankList(NOLOCK) kb ON kb.rowId = rt.pBank
WHERE controlNo =@controlNo
AND tranStatus='Payment' AND payStatus='Post' AND id=@id
END
END
IF @flag='Paid'
BEGIN
DECLARE @tId BIGINT, @ctrlNo VARCHAR(100)
SELECT @tId = id, @ctrlNo = dbo.FNADecryptString(controlNo) FROM INBOUND_REMIT_TRAN(NOLOCK) WHERE controlNo =@controlNo
AND tranStatus='Payment' AND payStatus='Post'
BEGIN TRAN
UPDATE INBOUND_REMIT_TRAN SET
tranStatus = 'Paid'
,payStatus = 'Paid'
,paidDate = GETDATE()
,paidBy = 'system'
WHERE controlNo = @controlNo
AND tranStatus='Payment' AND payStatus='Post'
INSERT INTO dbo.inboundVoucherMaster
(
tranId,
controlNo,
category,
seq,
VoucherGeneratedDate,
isGenerated
)
VALUES
( @tId, -- tranId - bigint
@ctrlNo, -- controlNo - varchar(50)
'paid', -- category - varchar(50)
2, -- seq - int
NULL, -- VoucherGeneratedDate - datetime
0 -- isGenerated - bit
)
COMMIT TRAN
EXEC proc_errorHandler 0, 'Transaction has been successfully Paid', @id
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN
EXEC proc_errorHandler 1 ,'Exception occured' ,NULL
END CATCH