USE [FastMoneyPro_Remit] GO /****** Object: StoredProcedure [dbo].[PROC_SCHEDULER_PUSH_TXN_CONTACT] Script Date: 9/27/2019 1:30:14 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[PROC_SCHEDULER_PUSH_TXN_CONTACT]( @flag VARCHAR(100) = NULL ,@id VARCHAR(100)= NULL ,@ControlNo VARCHAR(100)=NULL ) AS SET NOCOUNT ON BEGIN IF @flag='push-list-contact' BEGIN CREATE TABLE #TEMPLIST( sIDwhom VARCHAR(20),sIDtype VARCHAR(50),sCountry VARCHAR(50),sName VARCHAR(100),sLastName VARCHAR(100),sAddress VARCHAR(100),sIDnumber VARCHAR(100), sIDdate VARCHAR(20),sBirthday VARCHAR(20),sPhone VARCHAR(20),sZipCode VARCHAR(100),sRegion VARCHAR(100),sCity VARCHAR(100),sBirthPlace VARCHAR(100), sIDexpireDate VARCHAR(20),sResident VARCHAR(100),sCountryStay VARCHAR(100),sCountryC VARCHAR(2),sIDwhomCode VARCHAR(20), bName VARCHAR(100),bLastName VARCHAR(100),bBirthday VARCHAR(100),bCountry VARCHAR(2),bIDdate VARCHAR(20),bIDwhom VARCHAR(20), bResident VARCHAR(100),bBirthPlace VARCHAR(100),bPhone VARCHAR(20), trnService VARCHAR(2),trnPickupPoint VARCHAR(10),trnAmount DECIMAL(10,2),trnDate VARCHAR(20),trnCurrency VARCHAR(3),trnSendPoint VARCHAR(10),trnRate FLOAT,trnReference VARCHAR(100), trnTerminalNumber VARCHAR(1),trnPayoutAmount FLOAT,trnPayoutCurrency VARCHAR(3),trnPayoutRate FLOAT,bAccount VARCHAR(100),bBankName VARCHAR(100), --- ONLY FOR RUS tCardNumber VARCHAR(100),trnRecipientCurrency VARCHAR(3),sResidentC VARCHAR(2),sIDtypeCode VARCHAR(100), ---ONLY FOR RUSS tRuBic VARCHAR(100),tRuAcc VARCHAR(100), pCountry VARCHAR(50),createdDate DATETIME ,controlNo VARCHAR(20) ) INSERT INTO #TEMPLIST(sIDwhom,sIDtype,sCountry,sName,sLastName,sAddress,sIDnumber,sIDdate,sBirthday,sPhone,sZipCode,sRegion,sCity,sBirthPlace,sIDexpireDate,sResident ,sCountryStay,sCountryC ,bName,bLastName,bBirthday,bCountry,bIDdate,bIDwhom,bResident,bBirthPlace,bPhone ,trnService,trnPickupPoint,trnAmount,trnDate,trnCurrency,trnSendPoint,trnRate,trnReference,trnTerminalNumber,trnPayoutAmount,trnPayoutCurrency,trnPayoutRate ,pCountry,createdDate,controlNo ) ----## FOR CASH PAYMENT TRANSACTION ##---- SELECT TOP 10 sIDwhom = 'Government' ,sIDtype = TS.idType ,sCountry = dbo.FunCountryCode(TS.country) ,sName = (SELECT FSN.lastName1 FROM dbo.FNASplitName(Ts.firstName) AS FSN) --LastName ,sLastName = (SELECT FSN.firstName FROM dbo.FNASplitName(Ts.firstName) AS FSN) ---firstName ,sAddress = ISNULL(TS.address,TS.city) ,sIDnumber = TS.idNumber ,sIDdate = FORMAT(TS.issuedDate,'yyyyMMdd') ,sBirthday = FORMAT(TS.dob,'yyyyMMdd') ,sPhone = [dbo].FunContactAPI_MobileFormat(TS.mobile) ,sZipCode = TS.zipCode ,sRegion = TS.address ,sCity = ISNULL(TS.city,'ulaanbaatar') ,sBirthPlace = TS.nativeCountry ,sIDexpireDate = FORMAT(TS.validDate,'yyyyMMdd') ,sResident = CASE WHEN TS.nativeCountry = 'South Korea' THEN 1 ELSE 0 END ------Required---0 not resident, 1 resident ,sCountryStay = dbo.FunCountryCode(TS.country) ,sCountryC = dbo.FunCountryCode(TS.nativeCountry) ,bName = TR.lastName1+ISNULL(' '+tr.lastName2,'') ,bLastName = TR.firstName+ISNULL(' '+TR.middleName,'') ,bBirthday = FORMAT(TR.dob,'yyyyMMdd') ,bCountry = dbo.FunCountryCode(TR.country) ,bIDdate = FORMAT(tr.issuedDate,'yyyyMMdd') ,bIDwhom = 'Governmnet' ,bResident = CASE WHEN TR.country = RT.pCountry THEN 1 ELSE 0 END ,bBirthPlace = TR.country ,bPhone = [dbo].FunContactAPI_MobileFormat(TR.mobile) ,trnService = '2' -- CASH PAYMENT ---,trnClAmount='456.66' ,trnPickupPoint = AM.agentCode ,trnAmount = ROUND(RT.pAmt / ISNULL(RT.pcurrcostRate,1),2) ,trnDate = FORMAT(RT.approvedDate,'yyyyMMdd') ,trnCurrency = 'USD' --- settlement currency ,trnSendPoint = 'TAWX'------Given by contact for GME ,trnRate = RT.customerRate------to be checked ,trnReference = dbo.FNADecryptString(RT.controlNo) ,trnTerminalNumber= '1' ,trnPayoutAmount = CASE WHEN RT.payoutCurr='MNT' THEN CONVERT(FLOAT,RT.pAmt) ELSE '' END ,trnPayoutCurrency = CASE WHEN RT.payoutCurr='MNT' THEN RT.payoutCurr ELSE '' END ,trnPayoutRate = CASE WHEN RT.payoutCurr='MNT' THEN RT.pcurrcostRate ELSE '' END ,RT.pCountry,RT.createdDate,rt.controlNo FROM dbo.remitTran AS RT(NOLOCK) INNER JOIN tranSenders TS (NOLOCK) ON TS.tranId = RT.id INNER JOIN tranReceivers TR (NOLOCK) ON TR.tranId = RT.id INNER JOIN agentMaster AM (NOLOCK) ON AM.agentId = RT.pBank LEFT JOIN agentMaster BM (NOLOCK) ON BM.agentId = RT.pBankBranch WHERE RT.approvedBy IS NOT NULL AND RT.payStatus = 'Unpaid' AND RT.tranStatus = 'Payment' and RT.pAgent = 393228 AND RT.paymentMethod ='CASH PAYMENT' AND TS.issuedDate IS NOT NULL AND TS.dob IS NOT NULL AND ISNULL(TS.validDate,'2000-01-01') >= CASE WHEN TS.idType <> 'National ID' THEN CAST(GETDATE() AS DATE) ELSE '2000-01-01' END ----## FOR BANK DEPOSIT TRANSACTION ##---- INSERT INTO #TEMPLIST(sIDwhom,sIDtype,sCountry,sName,sLastName,sAddress,sIDnumber,sIDdate,sBirthday,sPhone,sZipCode,sRegion,sCity,sBirthPlace,sIDexpireDate,sResident ,sCountryStay,sCountryC ,bName,bLastName,bBirthday,bCountry,bIDdate,bIDwhom,bResident,bBirthPlace,bPhone ,trnService,trnPickupPoint,trnAmount,trnDate,trnCurrency,trnSendPoint,trnRate,trnReference,trnTerminalNumber,trnPayoutAmount,trnPayoutCurrency,trnPayoutRate ,pCountry,createdDate,controlNo ,bAccount,bBankName,tRuBic,tRuAcc ) SELECT TOP 10 sIDwhom = 'Government' ,sIDtype = TS.idType ,sCountry = dbo.FunCountryCode(TS.country) ,sName = (SELECT FSN.lastName1 FROM dbo.FNASplitName(Ts.firstName) AS FSN) --LastName ,sLastName = (SELECT FSN.firstName FROM dbo.FNASplitName(Ts.firstName) AS FSN) ---firstName ,sAddress = ISNULL(TS.address,TS.city) ,sIDnumber = TS.idNumber ,sIDdate = FORMAT(TS.issuedDate,'yyyyMMdd') ,sBirthday = FORMAT(TS.dob,'yyyyMMdd') ,sPhone = [dbo].FunContactAPI_MobileFormat(TS.mobile) ,sZipCode = TS.zipCode ,sRegion = TS.address ,sCity = ISNULL(TS.city,'ulaanbaatar') ,sBirthPlace = TS.nativeCountry ,sIDexpireDate = FORMAT(TS.validDate,'yyyyMMdd') ,sResident = CASE WHEN TS.nativeCountry = 'South Korea' THEN 1 ELSE 0 END ------Required---0 not resident, 1 resident ,sCountryStay = dbo.FunCountryCode(TS.country) ,sCountryC = dbo.FunCountryCode(TS.nativeCountry) ,bName = TR.lastName1+ISNULL(' '+tr.lastName2,'') ,bLastName = TR.firstName+ISNULL(' '+TR.middleName,'') ,bBirthday = FORMAT(TR.dob,'yyyyMMdd') ,bCountry = dbo.FunCountryCode(TR.country) ,bIDdate = FORMAT(tr.issuedDate,'yyyyMMdd') ,bIDwhom = 'Governmnet' ,bResident = CASE WHEN TR.country = RT.pCountry THEN 1 ELSE 0 END ,bBirthPlace = TR.country ,bPhone = [dbo].FunContactAPI_MobileFormat(TR.mobile) ,trnService = '5' --BANK DEPOSIT ---,trnClAmount='456.66' ,trnPickupPoint = CASE WHEN RT.payoutCurr = 'MNT' THEN AM.routingCode ELSE AM.agentCode END ,trnAmount = ROUND(RT.pAmt / ISNULL(RT.pcurrcostRate,1),2) ,trnDate = FORMAT(RT.approvedDate,'yyyyMMdd') ,trnCurrency = 'USD' --- settlement currency ,trnSendPoint = 'TAWX'------Given by contact for GME ,trnRate = RT.customerRate------to be checked ,trnReference = dbo.FNADecryptString(RT.controlNo) ,trnTerminalNumber= '1' ,trnPayoutAmount = CASE WHEN RT.payoutCurr = 'MNT' THEN CONVERT(FLOAT,RT.pAmt) ELSE '' END ,trnPayoutCurrency = CASE WHEN RT.payoutCurr = 'MNT' THEN RT.payoutCurr ELSE '' END ,trnPayoutRate = CASE WHEN RT.payoutCurr = 'MNT' THEN RT.pcurrcostRate ELSE '' END ,rt.pCountry,RT.createdDate,rt.controlNo ,bAccount = RT.AccountNo ,bBankName = RT.pBankName ----ONLY FOR RUSSIA BANK DEPOSIT ,tRuBic = CASE WHEN RT.payoutCurr = 'RUB' THEN BM.agentCode ELSE '' END ,tRuAcc = CASE WHEN RT.payoutCurr = 'RUB' THEN RT.AccountNo ELSE '' END FROM dbo.remitTran AS RT(NOLOCK) INNER JOIN tranSenders TS (NOLOCK) ON TS.tranId = RT.id INNER JOIN tranReceivers TR (NOLOCK) ON TR.tranId = RT.id INNER JOIN agentMaster AM (NOLOCK) ON AM.agentId = RT.pBank LEFT JOIN agentMaster BM (NOLOCK) ON BM.agentId = RT.pBankBranch WHERE RT.approvedBy IS NOT NULL AND RT.payStatus = 'Unpaid' AND RT.tranStatus = 'Payment' and RT.pAgent = 393228 AND RT.paymentMethod ='BANK DEPOSIT' AND TS.issuedDate IS NOT NULL AND TS.dob IS NOT NULL AND ISNULL(TS.validDate,'2000-01-01') >= CASE WHEN TS.idType <> 'National ID' THEN CAST(GETDATE() AS DATE) ELSE '2000-01-01' END ----## FOR CARD PAYMENT TRANSACTION ##---- INSERT INTO #TEMPLIST(trnDate,trnCurrency,trnAmount,trnSendPoint,trnPickupPoint,trnService,sName,sLastName,sBirthday,sCountryC,sZipCode,sRegion,sCity,sAddress ,sPhone,sIDtype,sIDnumber,sIDdate,sIDwhom,bName,bLastName,bPhone,sIDwhomCode,sResidentC,sBirthPlace,sIDtypeCode,sCountry,tCardNumber,trnRecipientCurrency ,trnReference,trnTerminalNumber ,pCountry,createdDate,controlNo ) SELECT TOP 10 sIDwhom = 'Government' ,sIDwhomCode = '' ,sIDtype = TS.idType ,sCountry = dbo.FunCountryCode(TS.country) ,sName = (SELECT FSN.lastName1 FROM dbo.FNASplitName(Ts.firstName) AS FSN) --LastName ,sLastName = (SELECT FSN.firstName FROM dbo.FNASplitName(Ts.firstName) AS FSN) ---firstName ,sAddress = ISNULL(TS.address,TS.city) ,sIDnumber = TS.idNumber ,sIDdate = FORMAT(TS.issuedDate,'yyyyMMdd') ,sBirthday = FORMAT(TS.dob,'yyyyMMdd') ,sPhone = [dbo].FunContactAPI_MobileFormat(TS.mobile) ,sZipCode = TS.zipCode ,sRegion = TS.address ,sCity = ISNULL(TS.city,'ulaanbaatar') ,sBirthPlace = TS.nativeCountry ,sCountryC = dbo.FunCountryCode(TS.nativeCountry) ,bName = TR.lastName1+ISNULL(' '+tr.lastName2,'') ,bLastName = TR.firstName+ISNULL(' '+TR.middleName,'') ,bPhone = [dbo].FunContactAPI_MobileFormat(TR.mobile) ,trnService = '10' --CARD PAYMENT ---,trnClAmount='456.66' ,trnPickupPoint = CASE WHEN RT.payoutCurr = 'MNT' THEN AM.routingCode ELSE AM.agentCode END ,trnAmount = ROUND(RT.pAmt / ISNULL(RT.pcurrcostRate,1),2) ,trnDate = FORMAT(RT.approvedDate,'yyyyMMdd') ,trnCurrency = 'USD' --- settlement currency ,trnSendPoint = 'TAWX'------Given by contact for GME ,trnReference = dbo.FNADecryptString(RT.controlNo) ,trnTerminalNumber= '1' ,rt.pCountry,RT.createdDate,rt.controlNo ---- ONLY FOR RUSSIA CARD PAYMENT ,tCardNumber = RT.AccountNo ,trnRecipientCurrency = CASE WHEN RT.payoutCurr = 'RUB' THEN RT.payoutCurr ELSE '' END ,sResidentC = dbo.FunCountryCode(TS.country) ,sIDtypeCode = 'GB.1' FROM dbo.remitTran AS RT(NOLOCK) INNER JOIN tranSenders TS (NOLOCK) ON TS.tranId = RT.id INNER JOIN tranReceivers TR (NOLOCK) ON TR.tranId = RT.id INNER JOIN agentMaster AM (NOLOCK) ON AM.agentId = RT.pBank LEFT JOIN agentMaster BM (NOLOCK) ON BM.agentId = RT.pBankBranch WHERE RT.approvedBy IS NOT NULL AND RT.payStatus = 'Unpaid' AND RT.tranStatus = 'Payment' and RT.pAgent = 393228 AND RT.paymentMethod ='CARD PAYMENT' AND TS.issuedDate IS NOT NULL AND TS.dob IS NOT NULL AND ISNULL(TS.validDate,'2000-01-01') >= CASE WHEN TS.idType <> 'National ID' THEN CAST(GETDATE() AS DATE) ELSE '2000-01-01' END --AND 1=2 --DELETE FROM #TEMP WHERE pCountry ='MONGOLIA' AND createdDate > '2019-07-10 14:00:00' ALTER TABLE #TEMPLIST ADD IsAlreadyProcessed BIT UPDATE T SET IsAlreadyProcessed = 1 FROM #TEMPLIST T INNER JOIN (SELECT CONTROLNO FROM Application_Log.DBO.vwTpApilogs(NOLOCK) WHERE providerName='contact' AND methodName = 'PayOutgoing' GROUP BY controlNo HAVING COUNT(1) >= 1 ) V ON V.controlNo = T.trnReference UPDATE rt SET rt.tranStatus = 'Hold' FROM remitTran rt (NOLOCK) INNER JOIN #TEMPLIST T ON T.controlNo = rt.controlNo WHERE RT.payStatus = 'Unpaid' AND RT.tranStatus = 'Payment' AND RT.pAgent = 393228 AND IsAlreadyProcessed = 1 DELETE FROM #TEMPLIST WHERE IsAlreadyProcessed = 1 ALTER TABLE #TEMPLIST DROP COLUMN controlNo,IsAlreadyProcessed ALTER TABLE #TEMPLIST DROP COLUMN pCountry,createdDate SELECT * FROM #TEMPLIST RETURN END ELSE IF @flag='modification-request' BEGIN SELECT TOP 1 sIDwhom = 'Government' ,sIDtype = TS.idType ,sCountry = dbo.FunCountryCode(TS.country) ,sName = (SELECT FSN.lastName1 FROM dbo.FNASplitName(Ts.firstName) AS FSN) --LastName ,sLastName = (SELECT FSN.firstName FROM dbo.FNASplitName(Ts.firstName) AS FSN) ---firstName ,sSurName = '' ,sAddress = ISNULL(TS.address,TS.city) ,sIDnumber = TS.idNumber ,sIDdate = FORMAT(TS.issuedDate,'yyyyMMdd') ,sBirthday = FORMAT(TS.dob,'yyyyMMdd') ,sPhone = [dbo].FunContactAPI_MobileFormat(TS.mobile) ,sZipCode = TS.zipCode ,sRegion = TS.address ,sCity = ISNULL(TS.city,'ulaanbaatar') ,sBirthPlace = TS.nativeCountry ,sIDexpireDate = FORMAT(TS.validDate,'yyyyMMdd') ,sResident = CASE WHEN TS.nativeCountry = 'South Korea' THEN 1 ELSE 0 END ------Required---0 not resident, 1 resident ,sCountryStay = dbo.FunCountryCode(TS.country) ,sCountryC = dbo.FunCountryCode(TS.nativeCountry) ,bName = TR.lastName1+ISNULL(' '+tr.lastName2,'') ,bLastName = TR.firstName+ISNULL(' '+TR.middleName,'') ,bSurName = '' ,bBirthday = FORMAT(TR.dob,'yyyyMMdd') ,bCountry = dbo.FunCountryCode(TR.country) ,bIDdate = FORMAT(tr.issuedDate,'yyyyMMdd') ,bIDwhom = 'Governmnet' ,bResident = CASE WHEN TR.country = RT.pCountry THEN 1 ELSE 0 END ,bBirthPlace = TR.country ,bPhone = [dbo].FunContactAPI_MobileFormat(TR.mobile) ,trnService = CASE WHEN RT.paymentMethod ='BANK DEPOSIT' THEN '5' WHEN RT.paymentMethod ='Transfer To Card' THEN '10' ELSE '2' END ---,trnClAmount='456.66' ,trnPickupPoint = CASE WHEN RT.paymentMethod ='BANK DEPOSIT' AND RT.payoutCurr='MNT' THEN AM.routingCode ELSE AM.agentCode END ,trnAmount = ROUND(RT.pAmt / ISNULL(RT.pcurrcostRate,1),2) ,trnDate = FORMAT(RT.approvedDate,'yyyyMMdd') ,trnCurrency = 'USD' --- settlement currency ,trnSendPoint = 'TAWX'------Given by contact for GME ,trnRate = RT.customerRate------to be checked ,trnReference = dbo.FNADecryptString(RT.controlNo) ,trnTerminalNumber= '1' ,TransactionID = RT.contNo ,trnPayoutAmount = CASE WHEN RT.payoutCurr='MNT' THEN CONVERT(FLOAT,RT.pAmt) ELSE '' END ,trnPayoutCurrency = CASE WHEN RT.payoutCurr='MNT' THEN RT.payoutCurr ELSE '' END ,trnPayoutRate = CASE WHEN RT.payoutCurr='MNT' THEN RT.pcurrcostRate ELSE '' END ,bAccount = CASE WHEN RT.paymentMethod ='BANK DEPOSIT' THEN RT.AccountNo ELSE '' END ,bBankName = CASE WHEN RT.paymentMethod ='BANK DEPOSIT' THEN RT.pBankName ELSE '' END ,providerName = 'CONTACT' ,rt.payStatus ,GmeControlNo = dbo.FNADecryptString(controlNo) ---- ONLY FOR RUSSIA CARD PAYMENT --,tCardNumber = CASE WHEN RT.paymentMethod ='Transfer To Card' THEN RT.AccountNo ELSE '' END --,trnRecipientCurrency = CASE WHEN RT.paymentMethod ='Transfer To Card' AND RT.payoutCurr = 'RUB' THEN RT.payoutCurr ELSE '' END --,sResidentC = CASE WHEN RT.paymentMethod ='Transfer To Card' THEN dbo.FunCountryCode(TS.country) ELSE '' END --,sIDtypeCode = CASE WHEN RT.payoutCurr = 'RUB' THEN 'GB.1' ELSE '' END ----ONLY FOR RUSSIA BANK DEPOSIT ,tRuBic = CASE WHEN RT.paymentMethod ='BANK DEPOSIT' AND RT.payoutCurr = 'RUB' THEN BM.agentCode ELSE '' END ,tRuAcc = CASE WHEN RT.paymentMethod ='BANK DEPOSIT' AND RT.payoutCurr = 'RUB' THEN RT.AccountNo ELSE '' END FROM dbo.remitTran AS RT(NOLOCK) INNER JOIN tranSenders TS (NOLOCK) ON TS.tranId = RT.id INNER JOIN tranReceivers TR (NOLOCK) ON TR.tranId = RT.id INNER JOIN agentMaster AM (NOLOCK) ON AM.agentId = RT.pBank LEFT JOIN agentMaster BM (NOLOCK) ON BM.agentId = RT.pBankBranch WHERE RT.approvedBy IS NOT NULL AND RT.payStatus in('Post') and RT.pAgent = 393228 AND TS.issuedDate is not null and TS.dob IS NOT NULL AND RT.tranStatus = 'ModificationRequest' AND RT.controlNo = DBO.FNAEncryptString(@ControlNo) RETURN END ELSE IF @flag='sync-list-Contact' BEGIN SELECT RT.id AS TranId, RT.ContNo AS DocId FROM dbo.remitTran AS RT(NOLOCK) WHERE RT.pAgent = 393228 AND RT.tranStatus='Payment' and RT.payStatus='Post' END ELSE IF @flag='mark-paid-contact' BEGIN UPDATE remitTran SET payStatus = 'Paid' ,tranStatus = 'Paid' ,paidDate = getdate() ,paidDateLocal = GETUTCDATE() ,paidBy = 'Scheduler' WHERE id = @id AND payStatus = 'Post' AND tranStatus = 'payment' AND pAgent = 393228 SELECT '0' ErrorCode,'Update success' Msg, NULL Id END ELSE IF @flag='mark-post-contact' BEGIN IF EXISTS(SELECT TOP 1 'X' FROM remitTran(NOLOCK) WHERE controlNo = Dbo.FNAEncryptString(@ControlNo) AND pAgent = 393228 AND tranStatus = 'Modification') BEGIN UPDATE remitTran SET tranStatus = 'Payment' WHERE controlNo = Dbo.FNAEncryptString(@ControlNo) AND pAgent = 393228 AND tranStatus = 'Modification' AND payStatus = 'Post' END ELSE BEGIN UPDATE remitTran SET payStatus = 'Post' ,postedBy = 'system' ,postedDate = GETDATE() ,postedDateLocal= GETUTCDATE() ,controlNo2 = controlNo ,ContNo = @id WHERE controlNo = Dbo.FNAEncryptString(@ControlNo) AND pAgent = 393228 AND tranStatus = 'payment' AND payStatus = 'Unpaid' END SELECT '0' ErrorCode,'Update success' Msg, NULL Id END END GO