Project

General

Profile

Feature #2644 » Migrasi Absensi WMDBS ke PA19 Pertalife.txt

shofwan shiddiq, 03/27/2024 12:59 PM

 
1
SELECT 
2
CONVERT(INT,'')as[ROW],
3
--INI DB BARU
4
CONVERT(int,'')as[id],
5
CONVERT(nvarchar(max),'')as[badgenumber],
6
CONVERT(nvarchar(max),'')as[userid],
7
CONVERT(datetime,'')as[checktime],
8
CONVERT(nvarchar(max),'')as[checktype],
9
CONVERT(nvarchar(max),'')as[verifycode],
10
CONVERT(nvarchar(max),'')as[sn]
11

    
12
INTO #temp
13
--CREATE ROWS IN NEW ESS TABLE TEMPO 
14
DELETE #temp
15
DECLARE @ROWSNUMBER  INT = (SELECT TOP(1) CONVERT(INT, ROW_NUMBER() OVER(ORDER BY id ASC)) AS Num FROM wdms_db.dbo.checkinout ORDER BY Num DESC)
16
DECLARE @i int = 1
17
WHILE @i <= @ROWSNUMBER
18
BEGIN  
19
   INSERT INTO #temp VALUES ( @i ,'','','','','','','')
20
     SET @i = @i + 1
21
END
22
--INSERT DATA ROWS IN NEW ESS TABLE TEMPO 
23
UPDATE #temp SET
24
id = a.id,
25
badgenumber = a.badgenumber,
26
userid = a.userid,
27
checktime = a.checktime,
28
checktype = a.checktype,
29
verifycode = a.verifycode,
30
sn = a.sn
31
  FROM(
32
SELECT  ROW_NUMBER() OVER(ORDER BY id ASC) AS Num, * FROM wdms_db.dbo.checkinout)a WHERE a.Num=#temp.[ROW]
33

    
34

    
35

    
36

    
37
--INSERT INTO NEW TABLE ESS
38
 --INSERT INTO MinovaES_AJTM_Pertalife_Development.dbo.[PHRPA0019] 
39

    
40
 select
41
 temp.userid
42
,CONVERT(varchar(8), temp.checktime, 112) as CheckTime
43
,startdate.checktime as StartDate
44
,enddate.checktime as EndDate
45
into #temp2
46
 from #temp temp
47
 left join #temp startdate on temp.id=startdate.id and startdate.checktype='0'
48
 left join #temp enddate on temp.id=enddate.id and enddate.checktype='1'
49
 where temp.checktype in ('0','1')
50
 and CONVERT(date, temp.checktime) = CONVERT(date, GETDATE())
51

    
52
 --select * from #temp2
53

    
54

    
55
 --select * from #temp where userid='10340122'
56

    
57
 select 
58
min(CONVERT(varchar(8), StartDate, 112)) as StartDate
59
,max(CONVERT(varchar(8), EndDate, 112)) as EndDate
60
,userid as EmployeeID
61
,min(FORMAT(StartDate, 'HHmm')) as StartTime
62
,max(FORMAT(EndDate, 'HHmm')) as EndTime
63
,'1000' as AttendanceType
64
,'Migrasi From WDMS' as Notes
65
,userid as CreateBy
66
,FORMAT(GETDATE(), 'yyyyMMddHHmmss') as CreateDate
67
,userid as ChangeBy
68
,FORMAT(GETDATE(), 'yyyyMMddHHmmss') as ChangeDate
69
,NULL as AuditorFlag
70
into #temp3
71
 from #temp2
72
 group by userid, CheckTime
73
 order by userid,CheckTime
74

    
75
--INSERT INTO NEW TABLE ESS
76
MERGE INTO MinovaES_AJTM_Pertalife_Development.dbo.[PHRPA0019] AS Target
77
USING (
78
    SELECT 
79
        CASE WHEN StartDate IS NULL THEN EndDate ELSE StartDate END AS StartDate,
80
        CASE WHEN StartDate IS NULL THEN EndDate ELSE StartDate END AS EndDate,
81
        EmployeeID,
82
        StartTime,
83
        EndTime,
84
        AttendanceType,
85
        Notes,
86
        CreateBy,
87
        CreateDate,
88
        ChangeBy,
89
        ChangeDate,
90
        AuditorFlag
91
    FROM #temp3
92
) AS Source ON Target.StartDate = Source.StartDate COLLATE DATABASE_DEFAULT 
93
             AND Target.EndDate = Source.EndDate COLLATE DATABASE_DEFAULT
94
             AND Target.EmployeeID = Source.EmployeeID COLLATE DATABASE_DEFAULT
95
WHEN NOT MATCHED THEN
96
    INSERT (StartDate, EndDate, EmployeeID, StartTime, EndTime, AttendanceType, Notes, CreateBy, CreateDate, ChangeBy, ChangeDate, AuditorFlag)
97
    VALUES (Source.StartDate, Source.EndDate, Source.EmployeeID, Source.StartTime, Source.EndTime, Source.AttendanceType, Source.Notes, Source.CreateBy, Source.CreateDate, Source.ChangeBy, Source.ChangeDate, Source.AuditorFlag);
98

    
99

    
100
DROP TABLE #temp
101
drop table #temp2
102
drop table #temp3
103

    
104
SELECT * FROM MinovaES_AJTM_Pertalife_Development.[dbo].[PHRPA0019] where Notes='Migrasi From WDMS' order by EmployeeID,StartDate 
105

    
(2-2/3)