set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[prc_getFleetRequisitionInfo]
(
@USER_NAME varchar(100),
@StatusID int = NULL
)
AS
if @USER_NAME = 'ALL'
set @USER_NAME = NULL
SELECT DISTINCT fleetRequisitionID, ConditionID into #TMP FROM
(
SELECT
F.fleetRequisitionID, CASE WHEN EXISTS (Select *
from relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND F1.fleetRequisitionID = F.fleetRequisitionID
AND wsOrderStatusID = 3)
THEN 4
WHEN (Select count(*) from relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND F1.fleetRequisitionID = F.fleetRequisitionID
AND wsOrderStatusID = 2)
=
(Select count(*) from relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND F1.fleetRequisitionID = F.fleetRequisitionID
)
THEN 3
WHEN EXISTS (Select *
from relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND F1.fleetRequisitionID = F.fleetRequisitionID
AND wsOrderStatusID = 2)
THEN 2
ELSE 1
END as ConditionID
from relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F.fleetRequisitionID
AND ((F.onlineEquipmentPurchase <> 1) OR (F.onlineEquipmentPurchase=1 AND OnlinePurchaseID IS NOT NULL))
) A
IF @StatusID IS NOT NULL And @StatusID<>0
BEGIN
DELETE FROM #TMP
WHERE
CASE
WHEN ConditionID>1 THEN ConditionID-1
ELSE 1
END NOT LIKE @StatusID
END
select F1.fleetRequisitionId as id ,R.fleetRequisitionapprovalid, B.costCenter as costCenter, fleetRequisitionDate as Date,
fleetApprovalProcessAuthorizorNTUserName as Authorizer, fleetRequisitionMadeBy as Requestor,
CASE WHEN T.ConditionID = 1 then (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = 1)
else (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = T.ConditionID - 1) end As Status,
CASE
WHEN fleetRequisitionApprovalBy IS NULL THEN fleetApprovalProcessAuthorizorNTUserName
ELSE FLEETrequisitionApprovalBy end as AssignedTo,
OnlinePurchaseID,
CASE onlineEquipmentPurchase
WHEN 1 THEN 'Eq. Purch.'
ELSE 'Fleet'
END As Type
FROM relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1, #TMP T, lkpBranch B
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND R.fleetRequisitionID = T.fleetRequisitionID
AND F1.branchID = B.branchID
AND R.FleetApprovalProcessID = (Select max(FleetApprovalProcessID) from relFleetRequisitionApproval A
Where A.fleetRequisitionID = T.fleetRequisitionID)
AND T.ConditionID = 3
AND (P.fleetApprovalProcessAuthorizorNTUserName = ISNULL(@USER_NAME, P.fleetApprovalProcessAuthorizorNTUserName)
OR P.fleetApprovalProcessAuthorizorDelegateNTUserName = ISNULL(@USER_NAME,P.fleetApprovalProcessAuthorizorDelegateNTUserName))
UNION
SELECT F1.fleetRequisitionId as id ,R.fleetRequisitionapprovalid, B.costCenter as costCenter, fleetRequisitionDate as Date,
fleetApprovalProcessAuthorizorNTUserName as Authorizer, fleetRequisitionMadeBy as Requestor,
CASE WHEN T.ConditionID = 1 then (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = 1)
else (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = T.ConditionID - 1) end As Status,
CASE
WHEN fleetRequisitionApprovalBy IS NULL THEN fleetApprovalProcessAuthorizorNTUserName
ELSE FLEETrequisitionApprovalBy end as AssignedTo,
OnlinePurchaseID,
CASE onlineEquipmentPurchase
WHEN 1 THEN 'Eq. Purch.'
ELSE 'Fleet'
END As Type
FROM relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1, #TMP T, lkpBranch B
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND R.fleetRequisitionID = T.fleetRequisitionID
AND F1.branchID = B.branchID
AND R.FleetApprovalProcessID = (Select min(FleetApprovalProcessID) from relFleetRequisitionApproval A
Where A.fleetRequisitionID = T.fleetRequisitionID)
AND T.ConditionID = 1
AND (P.fleetApprovalProcessAuthorizorNTUserName = ISNULL(@USER_NAME, P.fleetApprovalProcessAuthorizorNTUserName)
OR P.fleetApprovalProcessAuthorizorDelegateNTUserName = ISNULL(@USER_NAME,P.fleetApprovalProcessAuthorizorDelegateNTUserName))
UNION
SELECT F1.fleetRequisitionId as id ,R.fleetRequisitionapprovalid, B.costCenter as costCenter, fleetRequisitionDate as Date,
fleetApprovalProcessAuthorizorNTUserName as Authorizer, fleetRequisitionMadeBy as Requestor,
CASE WHEN T.ConditionID = 1 then (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = 1)
else (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = T.ConditionID - 1) end As Status,
CASE
WHEN fleetRequisitionApprovalBy IS NULL THEN fleetApprovalProcessAuthorizorNTUserName
ELSE FLEETrequisitionApprovalBy end as AssignedTo,
OnlinePurchaseID,
CASE onlineEquipmentPurchase
WHEN 1 THEN 'Eq. Purch.'
ELSE 'Fleet'
END As Type
FROM relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1, #TMP T, lkpBranch B
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND R.fleetRequisitionID = T.fleetRequisitionID
AND F1.branchID = B.branchID
AND R.FleetApprovalProcessID = (Select min(FleetApprovalProcessID) from relFleetRequisitionApproval A
Where A.fleetRequisitionID = T.fleetRequisitionID AND wsOrderStatusID=1)
AND T.ConditionID = 2
AND (P.fleetApprovalProcessAuthorizorNTUserName = ISNULL(@USER_NAME, P.fleetApprovalProcessAuthorizorNTUserName)
OR P.fleetApprovalProcessAuthorizorDelegateNTUserName = ISNULL(@USER_NAME,P.fleetApprovalProcessAuthorizorDelegateNTUserName))
UNION
SELECT F1.fleetRequisitionId as id ,R.fleetRequisitionapprovalid, B.costCenter as costCenter, fleetRequisitionDate as Date,
fleetApprovalProcessAuthorizorNTUserName as Authorizer, fleetRequisitionMadeBy as Requestor,
CASE WHEN T.ConditionID = 1 then (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = 1)
else (select wsOrderStatus from lkpWSOrderStatus where wsOrderSTatusID = T.ConditionID - 1) end As Status,
CASE
WHEN fleetRequisitionApprovalBy IS NULL THEN fleetApprovalProcessAuthorizorNTUserName
ELSE FLEETrequisitionApprovalBy end as AssignedTo,
OnlinePurchaseID,
CASE onlineEquipmentPurchase
WHEN 1 THEN 'Eq. Purch.'
ELSE 'Fleet'
END As Type
FROM relFleetRequisitionApproval R, relFleetApprovalProcess P, tblFleetRequisition F1, #TMP T, lkpBranch B
Where R.fleetApprovalProcessId = P.fleetApprovalProcessId
AND R.fleetRequisitionID = F1.fleetRequisitionID
AND R.fleetRequisitionID = T.fleetRequisitionID
AND F1.branchID = B.branchID
AND R.FleetApprovalProcessID = (Select min(FleetApprovalProcessID) from relFleetRequisitionApproval A
Where A.fleetRequisitionID = T.fleetRequisitionID AND wsOrderStatusID=3)
AND T.ConditionID = 4
AND (P.fleetApprovalProcessAuthorizorNTUserName = ISNULL(@USER_NAME, P.fleetApprovalProcessAuthorizorNTUserName)
OR P.fleetApprovalProcessAuthorizorDelegateNTUserName = ISNULL(@USER_NAME,P.fleetApprovalProcessAuthorizorDelegateNTUserName))
order by Date desc