0% found this document useful (0 votes)
16 views3 pages

Vra Backup

Uploaded by

andi pramono
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views3 pages

Vra Backup

Uploaded by

andi pramono
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

ALTER PROC USP_PALM_VActivity_CustomRecalc_IP

@ActivityID INT = 0,
@StartDate DATETIME = NULL,
@EndDate DATETIME = NULL
AS

SET NOCOUNT ON
SET @StartDate = CAST(@StartDate AS DATE)
SET @EndDate = CAST(@EndDate AS DATE)
IF @EndDate IS NULL AND @StartDate IS NOT NULL SET @EndDate = @StartDate

SET @ActivityID = ISNULL(@ActivityID, 0)

IF @ActivityID > 0 BEGIN


SELECT @StartDate = Date, @EndDate = Date FROM PALM_VActivity WHERE ActivityID =
@ActivityID
SET @ActivityID = 0
END

SET DATEFIRST 1

SELECT M.Date, D.DriverID, TaskCode, DetailID,


CASE WHEN TaskName LIKE 'LANGSIRTBSMESSATAS' THEN 'LANGSIR_TBS_MESS'

WHEN TaskCode ='LGS.004' or TaskCode ='LGS.006' or TaskCode ='LGS.008'


THEN 'LGS.00001'
WHEN TaskName LIKE 'ANGKUTBATUBASE' or TaskCode ='LGS.078' THEN
'BATU_BASE'
WHEN TaskName LIKE 'ANGKUTTBS' THEN 'ANGKUT_TBS'
WHEN TaskName LIKE '/LANGSIRPUPUK' THEN 'LANGSIR_PUPUK'
ELSE '' END TaskGroup,
CAST(CASE WHEN TaskName LIKE 'TRIPTERAKHIR' THEN 1 ELSE 0 END AS BIT)
LastTrip,
D.TaskResult Result, CAST(0 AS MONEY) DPremi,
CASE WHEN DATEPART(DW, M.Date)=7 OR EXISTS (SELECT * FROM HRM_Holidays WHERE
HRM_Holidays.Date = M.Date) THEN 1 ELSE 0 END IsHoliday,
E.EmployeeCode, E.FullName
INTO #Gr1
FROM PALM_VActivity M
JOIN PALM_VDetail D ON D.ActivityID = M.ActivityID
JOIN PALM_Tasks T ON T.TaskID = D.TaskID
JOIN HRM_Employees E ON E.EmployeeID = D.DriverID
LEFT JOIN PALM_TaskTypes TT ON TT.TaskTypeID = T.TaskTypeID
WHERE (M.ActivityID = @ActivityID OR @ActivityID = 0)
AND (M.Date BETWEEN @StartDate AND @EndDate OR @StartDate IS NULL OR @EndDate IS
NULL)
AND M.Void = 0

DELETE #Gr1 WHERE TaskGroup = ''


UPDATE #Gr1 SET Result = 5000 WHERE TaskGroup LIKE 'LGS.00001' AND LastTrip = 0 AND
Result > 10000
UPDATE #Gr1 SET Result = 9000 WHERE TaskGroup = 'ANGKUT_TBS' AND Result > 9000 --
AND LastTrip = 0

SELECT Date, DriverID,


SUM(CASE WHEN TaskGroup = 'LGS.00001' THEN Result ELSE 0 END) LTBS,

SUM(CASE WHEN TaskGroup = 'LANGSIR_TBS_MESS' THEN Result ELSE 0 END)


LTBSMess,
SUM(CASE WHEN TaskGroup = 'LANGSIR_PUPUK' THEN Result ELSE 0 END) LPupuk,

SUM(CASE WHEN TaskGroup = 'ANGKUT_TBS' THEN Result ELSE 0 END) ATBS,

SUM(CASE WHEN TaskGroup = 'BATU_BASE' THEN Result ELSE 0 END) BB,


CAST(0 AS MONEY) Total,
CAST(0 AS MONEY) Basis,
CAST(0 AS MONEY) Premi,
CAST(0 AS MONEY) [Over], IsHoliday,
EmployeeCode, FullName
INTO #Gr2
FROM #Gr1
GROUP BY Date, DriverID, IsHoliday, EmployeeCode, FullName

UPDATE #Gr2
SET Total = LTBS+ATBS+LPupuk+BB+LTBSMess,
Basis = CASE WHEN IsHoliday=1 THEN 0 WHEN BB>0 THEN 4000 WHEN ATBS>0 THEN
5000 WHEN LTBSMess>0 THEN 6000 ELSE 6000 END
UPDATE #Gr2 SET [Over] = CASE WHEN Total>Basis THEN Total-Basis ELSE 0 END

UPDATE #Gr2 SET Premi = 8*[Over]*CASE WHEN IsHoliday=1 THEN 2 ELSE 1 END
WHERE BB = 0
UPDATE #Gr2 SET Premi = (CASE WHEN BB>4000 THEN (BB-4000)*8 ELSE 0 END+
((ATBS+LTBS+LTBSMess+LPupuk)*10))*CASE WHEN IsHoliday=1 THEN 2 ELSE 1 END
WHERE BB > 0
UPDATE #Gr2 SET Premi = (((ATBS+LTBS+LPupuk)*8)+((LTBSMess)*10))*CASE WHEN
IsHoliday=1 THEN 2 ELSE 1 END
WHERE BB > 0 AND (ATBS+LTBS+LPupuk+LTBSMess)>0 AND 1=0
UPDATE #Gr2 SET Basis = 6000
WHERE LTBSMess>0 AND (ATBS+LTBS+LPupuk+BB)=0
UPDATE #Gr2 SET Premi = ((LTBSMess-Basis)*10)*CASE WHEN IsHoliday=1 THEN 2 ELSE 1
END
WHERE LTBSMess>Basis AND (ATBS+LTBS+LPupuk+BB)=0

DECLARE @DID INT, @Premi MONEY, @Date DATETIME


DECLARE XCursor CURSOR LOCAL FOR SELECT Date, DriverID, Premi FROM #Gr2
OPEN XCursor
FETCH FROM XCursor INTO @Date, @DID, @Premi
WHILE @@FETCH_STATUS = 0 BEGIN
DECLARE @LastID INT, @TRes MONEY
SELECT @TRes = 0, @LastID = 0
SELECT TOP 1 @LastID = DetailID FROM #Gr1 WHERE Date = @Date AND DriverID = @DID
ORDER BY Result DESC
SELECT @TRes = SUM(Result) FROM #Gr1 WHERE Date = @Date AND DriverID = @DID

UPDATE #Gr1 SET DPremi = ROUND((@Premi*Result)/@TRes, 0) WHERE Date = @Date AND


DriverID = @DID AND DetailID != @LastID
UPDATE #Gr1 SET DPremi = @Premi-ISNULL((SELECT SUM(DPremi) FROM #Gr1 WHERE Date =
@Date AND DriverID = @DID), 0) WHERE Date = @Date AND DriverID = @DID AND DetailID
= @LastID

FETCH FROM XCursor INTO @Date, @DID, @Premi


END

UPDATE X
SET PremiDriver = DPremi
FROM PALM_VDetail X
JOIN #Gr1 G ON G.DetailID = X.DetailID

SELECT * FROM #Gr2


GO
USP_PALM_VActivity_CustomRecalc_IP 0, '2024-4-1', '2024-4-1'

You might also like