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.
 
 
 

284 lines
14 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_agentBlock] Script Date: 9/27/2019 1:30:14 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[proc_agentBlock](
@flag VARCHAR(30) = NULL
,@user VARCHAR(30) = NULL
,@id VARCHAR(30) = NULL
,@agentId VARCHAR(30) = NULL
,@agentStatus VARCHAR(30) = NULL
,@remarks VARCHAR(255)= NULL
,@sortBy VARCHAR(50) = NULL
,@sortOrder VARCHAR(5) = NULL
,@pageSize INT = NULL
,@pageNumber INT = NULL
,@modType VARCHAR(30) = NULL
,@fromDate VARCHAR(30) = NULL
,@toDate VARCHAR(30) = NULL
)AS
BEGIN
DECLARE
@selectFieldList VARCHAR(MAX)
,@extraFieldList VARCHAR(MAX)
,@table VARCHAR(MAX)
,@sqlFilter VARCHAR(MAX)
IF @flag='a'
BEGIN
SELECT
id
,agentId
,agentStatus
,remarks
FROM agentBlock WHERE id=@id
RETURN
END
IF @flag = 's'
BEGIN
IF @sortBy IS NULL
SET @sortBy = 'agentId'
SET @table = '(
SELECT
id = ag.id
,agentId = am.agentName
,agentStatus= ag.agentStatus
,remarks = ag.remarks
,createdBy = ag.createdBy
,createdDate= ag.createdDate
,approvedDate= ag.approvedDate
,approvedBy = ag.approvedBy
,modifiedBy = ISNULL(x.createdBy, ag.createdBy)
,modifiedDate = ISNULL(x.createdDate, ag.createdDate)
,hasChanged = CASE WHEN (x.id IS NOT NULL) OR (ag.approvedBy IS NULL) THEN ''Y'' ELSE ''N'' END
FROM agentBlock ag WITH(NOLOCK)
LEFT JOIN (
SELECT
id
,createdBy = MAX(createdBy)
,createdDate = MAX(createdDate)
FROM agentBlockMod agm WITH(NOLOCK)
GROUP BY id
) x ON ag.id = x.id
LEFT JOIN agentMaster am with(nolock) on am.agentId=ag.agentId
where ag.agentStatus=''Block'' OR ag.agentStatus=''Inactive''
) x'
SET @sqlFilter = ''
IF @fromDate IS NOT NULL AND @toDate IS NOT NULL
SET @sqlFilter=@sqlFilter+ 'AND approvedDate between '''+@fromDate +'''and '''+@toDate+' 23:59:59'''
IF @agentStatus IS NOT NULL
SET @sqlFilter=@sqlFilter+' AND agentStatus='''+@agentStatus+''''
IF @agentId IS NOT NULL
SET @sqlFilter=@sqlFilter+' AND agentId like ''%'+@agentId+'%'''
SET @selectFieldList = '
id
,agentId
,agentStatus
,remarks
,createdBy
,createdDate
,modifiedBy
,modifiedDate
,approvedDate
,approvedBy
,hasChanged
'
EXEC dbo.proc_paging
@table
,@sqlFilter
,@selectFieldList
,@extraFieldList
,@sortBy
,@sortOrder
,@pageSize
,@pageNumber
END
IF @flag='i'
BEGIN
IF EXISTS(SELECT 'X' FROM agentBlock WITH(NOLOCK) WHERE agentId = @agentId AND approvedDate IS NULL)
BEGIN
EXEC proc_errorHandler 1, 'Request already in pending.', NULL
RETURN
END
INSERT INTO agentBlock
(
agentId
,agentStatus
,remarks
,createdDate
,createdBy
)
SELECT
@agentId
,@agentStatus
,@remarks
,GETDATE()
,@user
EXEC proc_errorHandler 0, 'Record has been requested successfully.', NULL
RETURN
END
IF @flag = 'u'
BEGIN
IF EXISTS (SELECT 'X' FROM agentBlock WITH(NOLOCK) WHERE id = @id AND approvedBy IS NULL AND createdBy <> @user)
BEGIN
EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', NULL
RETURN
END
IF EXISTS (SELECT 'X' FROM agentBlockMod WITH(NOLOCK) WHERE id = @id AND createdBy <> @user)
BEGIN
EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', NULL
RETURN
END
BEGIN TRANSACTION
IF EXISTS (SELECT 'X' FROM agentBlock WITH(NOLOCK) WHERE id = @id AND approvedBy IS NULL AND createdBy = @user)
BEGIN
UPDATE agentBlock SET
agentId =@agentId
,agentStatus =@agentStatus
,remarks =@remarks
,modifiedDate =GETDATE()
,modifiedBy =@user
END
ELSE
BEGIN
DELETE FROM agentBlockMod WHERE id = @id
INSERT INTO agentBlockMod (
id
,agentId
,agentStatus
,remarks
,createdDate
,createdBy
,modType
)
SELECT
@id
,@agentId
,@agentStatus
,@remarks
,GETDATE()
,@user
,'U'
END
COMMIT TRANSACTION
EXEC proc_errorHandler 0, 'Record updated successfully', @agentId
END
IF @flag = 'approve'
BEGIN
DECLARE @updateAbleCol VARCHAR(30)=NULL
IF EXISTS (SELECT 'X' FROM agentBlock WITH(NOLOCK) WHERE approvedBy IS NULL AND id = @id)
BEGIN
SET @modType = 'I'
SELECT @agentId=agentId FROM agentBlock WITH(NOLOCK) WHERE id = @id
IF EXISTS(SELECT 'x' FROM agentBlock WITH(NOLOCK) WHERE id=@id AND agentStatus='Inactive')
BEGIN
SET @updateAbleCol='isActive'
END
ELSE
BEGIN
SET @updateAbleCol='agentBlock'
END
END
ELSE
BEGIN
SELECT @modType = modType FROM agentBlockMod WITH(NOLOCK) WHERE id = @id
SELECT @agentId=agentId FROM agentBlockMod WITH(NOLOCK) WHERE id = @id
IF EXISTS(SELECT 'x' FROM agentBlockMod WITH(NOLOCK) WHERE id=@id AND agentStatus='Inactive')
BEGIN
SET @updateAbleCol='isActive'
END
ELSE
BEGIN
SET @updateAbleCol='agentBlock'
END
END
IF @modType = 'I'
BEGIN --New record
BEGIN TRAN
UPDATE agentBlock SET
approvedBy = @user
,approvedDate= GETDATE()
WHERE id = @id
IF(@updateAbleCol='isActive')
BEGIN
UPDATE agentMaster
SET isActive='N',
modifiedBy = @user,
modifiedDate = GETDATE()
WHERE agentId=@agentId
END
ELSE IF(@updateAbleCol='agentBlock')
BEGIN
UPDATE agentMaster SET
agentBlock='B',
isActive = 'N',
modifiedBy = @user,
modifiedDate = GETDATE()
WHERE agentId=@agentId
END
COMMIT TRAN
END
ELSE IF @modType = 'U'
BEGIN
BEGIN TRAN
UPDATE main SET
main.agentId =mode.agentId
,main.agentStatus =mode.agentStatus
,main.remarks =mode.remarks
,main.modifiedDate =GETDATE()
,main.modifiedBy = @user
FROM agentBlock main
INNER JOIN agentBlockMod mode ON mode.id= main.id
WHERE mode.id = @id
IF(@updateAbleCol='isActive')
BEGIN
UPDATE agentMaster
SET isActive='N',
modifiedBy = @user,
modifiedDate = GETDATE()
WHERE agentId=@agentId
END
ELSE IF(@updateAbleCol='agentBlock')
BEGIN
UPDATE agentMaster
SET agentBlock='B',
isActive = 'N',
modifiedBy = @user,
modifiedDate = GETDATE()
WHERE agentId=@agentId
END
COMMIT TRAN
END
DELETE FROM agentBlockMod WHERE id = @id
EXEC proc_errorHandler 0, 'Modification approved successfully', @agentId
END
IF @flag='ddlstatus'
BEGIN
SELECT '' value, 'Select' text
UNION ALL SELECT 'Block' value, 'Blocked' text
UNION ALL SELECT 'Inactive' value, 'Inactive' text
END
END
GO