Luận văn Xây dựng hệ thống quản lý nhân sự quản lý chấm công và tính lương

MỤC LỤC

Lời mở đầu

Phần 01 : Mô tả phần mềm Quản Lý Nhân Sự

A. Giới thiệu 2

B. Mô tả chi tiết 2

I. Quản lý nhân sự 2

1. Danh mục phòng ban 3

2. Hồ sơ lý lịch nhân viên 3

3. Hợp đồng lao động 3

4. Quá trình công tác 4

5. Khen thưởng – Kỷ luật 5

6. Bảo hiểm YT-XH 6

II. Quản lý giờ công 6

III. Quản lý tiền lương 7

1. Phụ cấp 7

2. Tạm ứng 7

3. Khen thưởng- Kỷ luật 8

4. Lãnh lương 9

VI. Thống kê – Báo cáo tổng hợp 9

 

Phần 02 : Mô tả phần mềm Quản Lý Nhân Sự

I. Quan hệ dữ liệu 11

II. Sơ đồ quan hệ vật lý 14

III. Bảng – Kiểu DL – Thuộc tính – Ý nghĩa 15

VI. Một số thủ tục tính giờ công và tính lương 26

1. Thủ tục tính tổng giờ công từ công thức chấm công 26

2. Thủ tục tính công cho từng nhân viên 27

3. Thủ tục tính tổng hợp giờ công tháng 35

 

Phần 03 : Giao diện và chức năng

Đăng nhập hệ thống 11

Phân quyền người sử dụng 14

Tiện ích tìm kiếm 15

I. Quản lý nhân viên 26

1. Hồ sơ lý lịch nhân viên 26

2. Các hợp đồng lao động 27

3. Quá trình công tác 35

 

I. Quản lý giờ công 26

1. Bảng công thức chấm công 26

2. Chấm công tự động bằng máy quét thẻ từ 27

3. Chỉnh sửa giờ công 35

II. Quản lý tiền lương 26

1. Phụ cấp 26

2. Tạm ứng 27

3. Tính lương tháng 35

III. Báo cáo – Thống kê – Kết xuất dữ liệu 26

1. Bảnh chấm công cho tiết hàng tháng 26

2. Bảnh chấm công từng nhân viên 27

3. Bảng theo dõi chấm công chi tiết tháng theo phòn- ban 35

4. Bảng chấm công nhân viên phòng ban theo tháng 27

5. Thống kê các lần tạm ứng trong năm của nhân viên 35

6. Báo cáo tổng hợp tạm ứng lương tháng theo từng phòng ban 27

7. Báo cáo lương tháng theo phòng ban – Tổ 35

8. Bảng tổng hợp giờ công - tiền công theo phòng ban 35

9. Bảng tổng hợp giờ công tiền công theo Tổ 27

10. Thống kê tổng số nhân viện đang làm việc theo phòng ban 35

11. Thống kê giờ công – Tiền công của nhân viên theo phòng ban 35

 

Phần 04 : Tổng kết – Đánh giá

I. Hướng phát triển 26

II. Kết quả đạt được 26

III. Hướng dẫn cài đặt 26

1. Cài đặt nguồn Cơ Sở Dữ Liệu SQL Server 2002 26

2. Cài đặt phần mềm Quản Lý Nhân Sự 27

VI. Tài liệu tham khảo 26

 

Lời kết luận 71

Mục lục 72

 

 

 

 

 

doc77 trang | Chia sẻ: maiphuongdc | Lượt xem: 1672 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng hệ thống quản lý nhân sự quản lý chấm công và tính lương, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Loại hợp đổng FK MA_CONG_VIEC NUMBER DATE Ngày làm hợp đồng FK MA_HOP_DONG DATE DATE Ngày KT hợp đồng FK LY_DO_CT STRING 100 Số tiền nộp định kỳ NGAY_CONG_TAC STRING 100 Ngày hợp đồng BH HE_SO_LUONG DATE DATE Ngày bắt đầu làm việc MUC_LUONG_CB NUMBER Mức lương căn bản CO_HIEU_LUC STRING 1 Có hiệu lực hay không BAO_HIEM STRING 1 Có bảo hiểm hay không NGAY_BH DATE Ngày bảo hiểm 13. DM_PHONG_BAN – Danh mục phòng ban : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_PHONG_BAN AUTO Mã số tăng tự động PK TEN_PHONG_BAN STRING 50 Tên ngành CHUC_NANG STRING 100 Chức năng của PB TINH_TANG_CA STRING 1 Cho phép tăng ca không MA_CONG_THUC NUMBER Mã công thức tính công FK SO_NGAY_CONG NUMBER Số ngày công KHOI STRING 1 Khối VP hay SX 14. DM_TO – Danh mục tổ : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_TO STRING 10 Mã PB + Số TT PK TEN_TO STRING 100 Tên tổ MA_PHONG_BAN STRING 5 Mã phòng ban FK 15. BANG_CONG_THUC_TINH_CONG_THEO_GIO - Bảng công thức tính công theo giờ : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_CONG_THUC AUTO Mã công thức tính PK NGAY_AP_DUNG DATE Ngày áp dụng TU_GIO NUMBER Từ giờ TU_PHUT NUMBER 1 Từ phút DEN_GIO NUMBER Đến giờ DEN_PHUT NUMBER Đến phúr TIEN_GIO_THUONG NUMBER Tiền công 1 giờ ngày thường TI_LE_NGAY_LE NUMBER Tỉ lệ 1 giờ ngày lễ TI_LE_NGAY_NGHI NUMBER Tỉ lệ 1 giờ ngày nghỉ DON_VI_TINH STRING 20 Đơn vị tính TI_GIA_QUI_DOI NUMBER Bằng cấp CO_HIEU_LUC STRING 1 Có hiệu lực không ? SO_GIO NUMBER Số giờ LOAI_NHAN_VIEN STRING 1 Aùp dụng cho NV SX hay VP 16. CONG_TAC_NUOC_NGOAI – Công tác nước ngoài: THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_CT_NN AUTO Mã công tác nước ngoài PK MA_QTCT NUMBER Mã quá trình công tác FK NGAY_DI DATE Ngày đi NGAY_VE DATE Ngày về LY_DO STRING 1 Lý do công tác KQ_CHUYEN_DI STRING 100 Kết quả chuyến đi MA_CHUC_VU NUMBER Mã chức vụ FK MA_HOP_DONG NUMBER Mã hợp đồng FK 17. DM_QUOC_GIA – Danh mục quốc gia THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_QUOC_GIA AUTO Mã quốc gia PK TEN_QUOC_GIA STRING 100 Tên quốc gia 18. DM_CHUC_VU – Danh mục chức vụ : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_CHUC_VU AUTO Mã chức vụ PK TEN_CHUC_VU STRING 100 Tên chức vụ 19. DM_CONG_VIEC - Danh mục công việc : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_CONG_VIEC AUTO Mã công việc PK TEN_CONG_VIEC STRING 100 Tên công việc 20. NGHI_PHEP – Nghỉ phép : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_NGHI_PHEP AUTO Mã công việc PK MA_QTCT STRING 100 Tên công việc NGAY_NGHI DATE Ngày nghỉ LY_DO_NGHI STRING 100 Lý do nghỉ CO_PHEP_KHONG STRING 1 Có phép hay không 21. THUONG_PHAT – Thưởng phạt : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_THUONG_PHAT AUTO Mã công việc PK MA_QTCT STRING 100 Tên công việc FK NGAY_THUONG_PHAT DATE Ngày thưởng phạt THUONG_HAY_PHAT STRING 1 Thưởng hay phạt LY_DO STRING 100 Lý do thưởng phạt SO_TIEN NUMBER Số tiền thưởng phạt DA_TRU_VAO_LUONG STRING 1 Đã trừ vào lương 22. PHU_CAP – Phụ cấp : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_PHU_CAP AUTO Mã phụ cấp PK MA_QTCT NUMBER Mã quá trình công tác FK LY_DO_PHU_CAP STRING 100 Lý do phụ cấp SO_TIEN NUMBER Số tiền phụ cấp DA_CONG_VAO_LUONG STRING 1 Đã cộng vào lương chưa THANG NUMBER Tháng phụ cấp NAM NUMBER Năm phụ cấp NGAY_PHU_CAP DATE Ngày phụ cấp 23. TAM_UNG - Tạm ứng lương THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_TAM_UNG AUTO Mã công việc PK MA_QTCT STRING 100 Tên công việc FK THANG NUMBER Tháng tạm ứng NAM NUMBER Năm tạm ứng NGAY_TAM_UNG DATE Ngày tạm ứng LY_DO_TAM_UNG STRING 100 Lý do tạm ứng SO_TIEN NUMBER Số tiền DA_TRU_VAO_LUONG STRING 1 Đã trừ vào lương 24. DANG_KY_LAM_TANG_CA – Đăng ký làm tăng ca : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA MA_TANG_CA AUTO Mã công việc PK MA_QTCT STRING 100 Tên công việc FK NGAY_DANG_KY DATE Ngày đăng ký tăng ca NGAY_TANG_CA DATE Ngày làm tăng ca DA_TANG_CA STRING 1 Đã tăng ca chưa LOAI_NGAY STRING 1 Loại ngày :1. thường – 2.lễ MA_CONG_THUC NUMBER Mã công thức tính công FK 25. LANH_LUONG - Lãnh lương : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA ID_LANH_LUONG AUTO Mã lãnh lương PK MA_QTCT NUMBER Mã quá trình công tác FK THANG NUMBER 2 Tháng lãnh lương NAM NUMBER 4 Năm lãnh lươong NGAY_LANH DATE 1 Ngày lãnh LUONG_CAN_BAN NUMBER 1 Lương căn bản THUONG NUMBER Số tiền thưởng PHAT NUMBER Số tiền phạt PHU_CAP NUMBER Số tiền phụ cấp TAM_UNG NUMBER Số tiền tạm ứng THUC_LANH NUMBER Số tiền thực lãnh DA_LANH NUMBER Số tiền đã lãnh CON_LAI NUMBER Số tiền còn lại BAO_HIEM NUMBER Số tiền đóng bảo hiểm 26. BANG_CHAM_CONG – Bảng chấm công : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA ID_CHAM_CONG AUTO Mã lãnh lương PK MA_QTCT NUMBER Mã quá trình công tác FK THANG NUMBER Tháng chấm công NAM NUMBER Năm chấm công NGAY_LAM_VIEC DATE 1 Ngày lãnh NGAY_NGUNG_LV DATE 1 Lương căn bản TU_GIO NUMBER Từ giờ TU_PHUT NUMBER Từ phút DEN_GIO NUMBER Đến giờ DEN_PHUT NUMBER Đến phút CHINH_KHOA NUMBER 1 Chính khoá hay làm thêm THUONG_LE_NGHI NUMBER 1 Ngày thường, lễ, nghỉ DA_CHAM_CONG NUMBER 1 Số tiền còn lại DANG_LAM_VIEC NUMBER 1 1: Trạng thái vào – 0 : ra TINH_TRANG_VAO NUMBER 1 Tình trạng vào: sớm,trễ,đúng giờ TINH_TRANG_RA NUMBER Tình trạng ra: sớm,trễ,đúng giờ SO_PHUT_TT_VAO NUMBER Số phút trình trạng vào SO_PHUT_TT_RA NUMBER Số phút tình trạng ra SO_GIO_CONG NUMBER Số giờ công SO_GIO_TANG_CA NUMBER Số giờ tăng ca SO_TIEN NUMBER Số tiền lương 27. BANG_TONG_HOP_GIO_CONG - Bảng tổng hợp giờ công : THUỘC TÍNH KIỂU DỮ LIỆU KÍCH THƯỚC Ý NGHĨA KHÓA ID_BANG_TH AUTO Mã tăng tự động PK MA_QTCT NUMBER Mã quá trình công tác FK THANG NUMBER 2 Tháng tổng hợp NAM NUMBER 4 Năm tổng hợp TONG_GIO_DA_QD NUMBER Tổng số giờ đã qui đổi TONG_GIO_CHUA_QD NUMBER Tổng số giờ chưa qui đổi GIO_NGAY_THUONG NUMBER Số giờ ngày thường GIO_NGAY_NGHI NUMBER Số giờ ngày nghỉ GIO_NGAY_LE NUMBER Số giờ ngày lễ GIO_DEM_THUONG NUMBER Số giờ đêm thường GIO_DEM_NGHI NUMBER Số giờ đêm nghỉ GIO_DEM_LE NUMBER Số giờ đêm lễ SO_LAN_ RA_SOM NUMBER Số lần ra sớm SO_LAN_ VAO_SOM NUMBER Số lần vào sớm SO_LAN_ RA_MUON NUMBER Số lần ra muộn SO_LAN_ VAO_MUON NUMBER Số lần vào muộn SO_TIEN NUMBER Số tiền SO_GIO_PHU_TROI NUMBER Số giờ phụ trội SO_GIO_TANG_CA NUMBER Số giờ tăng ca SO_TIEN_TANG_CA NUMBER Số tiền tăng ca SO_NGAY_CONG NUMBER Số ngày công SO_NGAY_TANG_CA NUMBER Số ngày tăng ca VI . Một số thủ tục tính giờ công và tính lương : 1.Thủ tục tính tổng số giờ công từ bảng công thức chấm công : create procedure CalculateSumFormulaHour as Declare @cursor as cursor, @hh as numeric(5), @mm as numeric(5), @tu as numeric(5), @sumG as numeric(5,2), @idct as numeric(13), @tu_gio as numeric(5), @tu_phut as numeric(5), @den_gio as numeric(5), @den_phut as numeric(5) set @sumG = 0 set @cursor=CURSOR SCROLL KEYSET FOR select id_cong_thuc,tu_gio,tu_phut,den_gio,den_phut from bang_cong_thuc_cham_cong_theo_gio open @cursor fetch next from @cursor into @idct,@tu_gio,@tu_phut,@den_gio,@den_phut WHILE @@FETCH_STATUS =0 begin set @mm = 0 set @tu = @tu_gio set @hh = 0 If @tu_gio <= @den_gio begin set @sumG = (@den_gio-@tu_gio)+(@den_phut-@tu_phut)/60 end Else begin set @sumG = (24-@tu_gio)+(0-@tu_phut)/60+(@den_gio-0)+(@den_phut-0)/60 end set @sumG=case when @sumG is null then 0 else @sumG end update bang_cong_thuc_cham_cong_theo_gio set so_gio=@sumG where id_cong_thuc=@idct fetch next from @cursor into @idct,@tu_gio,@tu_phut,@den_gio,@den_phut end close @cursor DEALLOCATE @cursor GO 2.Thủ tục tính công cho nhân viên : CREATE procedure CalculateGioLamViec_1_Nhan_Vien_EveryOne @SophutVao_Ra numeric(5), @id_qt_ct numeric(13), @thang numeric(2), @nam numeric(4) as declare @cursor as cursor, @tu_gio numeric(2), @tu_phut numeric(2), @den_gio numeric(2), @den_phut numeric(2), @idct as numeric(13), @idchamcong numeric(13), @ngay_thuong_le_nghi nvarchar(1), @so_gio_cong numeric(5,2), @so_tien money, @so_gio_tang_ca numeric(5,2), @so_tien_tang_ca money, @so_phut_tinh_trang_vao numeric(5,2), @so_phut_tinh_trang_ra numeric(5,2), @tinh_trang_vao nvarchar(1), @tinh_trang_ra nvarchar(1), @ca nvarchar(100), @tu_gio_ct numeric(2), @tu_phut_ct numeric(2), @den_gio_ct numeric(2), @den_phut_ct numeric(2), @so_gio_ct numeric(5,2), @mnv nvarchar(10), @loainv nvarchar(1), @idqtct numeric(13), @ty_le_1_gio_ngay_nghi as numeric(13,2), @ty_le_1_gio_ngay_le as numeric(13,2), @Tien_cong_1_gio_thuong as money, @khoi As nvarchar(1), @songaycong as numeric(5,2), @muc_luong_can_ban as money, @he_so_luong as money, @tinh_tang_ca as nvarchar(1), @tien_cong_1_gio_tang_ca as money, @sophuttru numeric(9,2), @so_gio_tang_ca_1 numeric(9,2), @tru numeric(9,2) set @cursor=CURSOR SCROLL KEYSET FOR select id_qua_trinh_cong_tac,id_cham_cong,tu_gio,tu_phut,den_gio,den_phut,id_cong_thuc,ngay_thuong_le_nghi from bang_cham_cong where dang_lam_viec='0' and id_qua_trinh_cong_tac=@id_qt_ct and thang=@thang and nam=@nam open @cursor fetch next from @cursor into @idqtct,@idchamcong,@tu_gio,@tu_phut,@den_gio,@den_phut,@idct,@ngay_thuong_le_nghi while @@FETCH_STATUS=0 begin set @so_gio_tang_ca=0 set @so_tien_tang_ca=0 select @ca=ca,@tu_gio_ct=tu_gio,@tu_phut_ct=tu_phut,@den_gio_ct=den_gio, @den_phut_ct=den_phut,@so_gio_ct=so_gio, @ty_le_1_gio_ngay_nghi=ty_le_1_gio_ngay_nghi, @ty_le_1_gio_ngay_le=ty_le_1_gio_ngay_le from bang_cong_thuc_cham_cong_theo_gio where id_cong_thuc=@idct select @mnv=ma_nhan_vien,@loainv=loai_nhan_vien from ho_so_nhan_vien where ma_nhan_vien in ( select ma_nhan_vien from hop_dong_lao_dong where ma_hop_dong in (select ma_hop_dong from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct)) if @loainv='2' select @songaycong = so_ngay_cong,@khoi=khoi,@tinh_tang_ca=tinh_tang_ca from dm_phong_ban where ma_phong_ban in (select ma_phong_ban from dm_to where ma_to in (select ma_to from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct)) else begin if exists(select 1 from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct and id_cong_thuc is null) select @songaycong = so_ngay_cong,@khoi=khoi,@tinh_tang_ca=tinh_tang_ca from dm_phong_ban where ma_phong_ban in (select ma_phong_ban from dm_to where ma_to in (select ma_to from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct)) else select @songaycong = so_ngay_cong,@khoi='1',@tinh_tang_ca='1' from dm_phong_ban where ma_phong_ban in (select ma_phong_ban from dm_to where ma_to in (select ma_to from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct)) end select @muc_luong_can_ban=muc_luong_can_ban,@he_so_luong=he_so_luong from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct --Tinh tinh trang vào ra ---- Số phút tình trạng vào ra ---------------vào------------------- set @so_phut_tinh_trang_vao =(@tu_gio_ct - @tu_gio) * 60 - @tu_phut + @tu_phut_ct if abs(@so_phut_tinh_trang_vao)>@SophutVao_ra Begin if @so_phut_tinh_trang_vao<0 set @tinh_trang_vao='3' if @so_phut_tinh_trang_vao>0 set @tinh_trang_vao='1' end else begin set @tinh_trang_vao = '2' --Dung gio set @so_phut_tinh_trang_vao = 0 end -----------------Ra------------------------ set @so_phut_tinh_trang_ra = (@den_gio_ct - @den_gio) * 60 - @den_phut + @den_phut_ct if abs(@so_phut_tinh_trang_ra)>@sophutVao_ra begin if (@so_phut_tinh_trang_ra<0) set @tinh_trang_ra='3' if (@so_phut_tinh_trang_ra>0) set @tinh_trang_ra='1' set @so_phut_tinh_trang_ra=abs(@so_phut_tinh_trang_ra) end else begin set @tinh_trang_ra='2' Set @so_phut_tinh_trang_ra=0 end -------------Tính số giờ công---------------------------- if @tu_gio<=@den_gio begin set @so_gio_cong=(@den_gio-@tu_gio)+(@den_phut-@tu_phut)/60 end else begin set @so_gio_cong=(@den_gio-0)+(@den_phut-0)/60+(24-@tu_gio)+(0-@tu_phut)/60 end ---------Tính kiểu ngày làm việc if (@ngay_thuong_le_nghi='1') begin set @so_gio_tang_ca=0 set @so_gio_tang_ca=(@tu_gio_ct-@tu_gio)*60+(@tu_phut_ct-@tu_phut) select @so_gio_tang_ca,'1' if (@so_gio_tang_ca<0) set @so_gio_tang_ca=0 set @so_gio_tang_ca_1 = (@den_gio-@den_gio_ct)*60+(@den_phut-@den_phut_ct) --(case when @so_phut_tinh_trang_vao >= 2 * @SophutVao_Ra then @so_phut_tinh_trang_vao - @SophutVao_Ra else 0 end + case when @so_phut_tinh_trang_ra > 3 * @SophutVao_Ra then @so_phut_tinh_trang_ra - @SophutVao_Ra else 0 end) / 60 if (@so_gio_tang_ca_1<0) set @so_gio_tang_ca_1=0 select @so_gio_tang_ca_1,'2' set @so_gio_tang_ca=@so_gio_tang_ca + @so_gio_tang_ca_1 select @so_gio_tang_ca,'1+2' if (@tu_gio12) and (@so_gio_tang_ca/60>=1) begin set @so_gio_tang_ca =(@so_gio_tang_ca/60) end else begin set @so_gio_tang_ca =(@so_gio_tang_ca)/60 -- 2*@SophutVao_ra/60 end select @so_gio_tang_ca,'3' set @sophuttru=0 if (@so_phut_tinh_trang_vao>@SophutVao_ra ) begin set @so_gio_tang_ca =(@so_gio_tang_ca) - @SophutVao_ra/60 set @sophuttru=@sophuttru+@SophutVao_ra end else begin if @so_phut_tinh_trang_vao>0 begin set @so_gio_tang_ca =(@so_gio_tang_ca) -@so_phut_tinh_trang_vao/60 set @sophuttru=@so_phut_tinh_trang_vao end end if (@den_gio>=17) begin set @tru=0 if (@den_gio=17 and @den_phut>30 ) begin set @tru=30 end else Begin if (@den_gio>17 ) begin set @tru=30 end else if (@den_gio=17 and @den_phut<=30) begin set @tru=@den_phut end end set @so_gio_tang_ca =(@so_gio_tang_ca) - @tru/60 set @sophuttru=@sophuttru+ @tru end select @so_gio_tang_ca,'4',@tru if (@so_gio_tang_ca*60<=@SophutVao_ra) set @so_gio_tang_ca=0 -------------Nếu không tăng ca If @khoi='1' and @tinh_tang_ca = '0' begin Set @so_gio_tang_ca = 0 set @sophuttru=0 end else begin If @tu_gio = 12.5 and @so_phut_tinh_trang_ra>@sophutVao_ra set @so_gio_tang_ca =@so_gio_tang_ca-1 end If @tu_gio = 12.5 set @so_gio_cong = @so_gio_cong - 1 set @so_gio_cong=@so_gio_cong-@sophuttru/60 set @so_gio_cong = @so_gio_cong - @so_gio_tang_ca if (@so_phut_tinh_trang_vao=0 and @so_phut_tinh_trang_ra=0) set @so_gio_tang_ca=0 select @so_gio_tang_ca,'sgtc' end ---Nếu ngày làm việc là ngày nghỉ hay ngày lễ if (@ngay_thuong_le_nghi='2') or (@ngay_thuong_le_nghi='3') begin set @so_phut_tinh_trang_vao=(18-@tu_gio)*60-@tu_phut set @so_phut_tinh_trang_ra=(21-@den_gio)*60-@den_phut if (@so_gio_cong>=8 ) set @so_gio_cong=@so_gio_cong-1 if (@tu_gio>=17 ) begin set @so_gio_tang_ca=@so_gio_cong set @so_gio_cong=0 end set @tinh_trang_vao=case when abs(@so_phut_tinh_trang_vao)0 then '1' else '3' end end set @tinh_trang_ra=case when abs(@so_phut_tinh_trang_ra)0 then '3' else '1' end end set @so_phut_tinh_trang_vao=case when abs(@so_phut_tinh_trang_vao)<=10 then 0 else @so_phut_tinh_trang_vao end set @so_phut_tinh_trang_ra=case when abs(@so_phut_tinh_trang_ra)<=10 then 0 else @so_phut_tinh_trang_ra end end if (@so_gio_cong*60<=@SophutVao_ra ) set @so_gio_cong = 0 set @songaycong=case when @songaycong is null then 0 else @songaycong end set @muc_luong_can_ban=case when @muc_luong_can_ban is null then 0 else @muc_luong_can_ban end set @he_so_luong=case when @he_so_luong is null then 0 else @he_so_luong end if @songaycong 0 begin select @Tien_cong_1_gio_thuong =(muc_luong_can_ban*he_so_luong)/@songaycong from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct set @Tien_cong_1_gio_thuong=case when @Tien_cong_1_gio_thuong is null then 0 else @Tien_cong_1_gio_thuong end if @khoi='1' begin If (@so_gio_ct >= 8) begin set @so_gio_ct = @so_gio_ct - 1 end If (@so_gio_ct 0) begin set @Tien_cong_1_gio_thuong = @Tien_cong_1_gio_thuong / @so_gio_ct end end else begin set @Tien_cong_1_gio_thuong = @Tien_cong_1_gio_thuong /8.5 end end else begin set @Tien_cong_1_gio_thuong =0 end If (@ngay_thuong_le_nghi = '1' ) begin set @so_tien = @so_gio_cong * @Tien_cong_1_gio_thuong set @tien_cong_1_gio_tang_ca=(@Tien_cong_1_gio_thuong * @Ty_le_1_gio_ngay_nghi )/100 set @so_tien_tang_ca=@so_gio_tang_ca*@tien_cong_1_gio_tang_ca end Else begin If (@ngay_thuong_le_nghi = '2') --le begin set @so_tien = @so_gio_cong * (@Tien_cong_1_gio_thuong * @Ty_le_1_gio_ngay_le / 100) set @tien_cong_1_gio_tang_ca=(@Tien_cong_1_gio_thuong * @Ty_le_1_gio_ngay_le /100) set @so_tien_tang_ca=@so_gio_tang_ca*@tien_cong_1_gio_tang_ca end Else begin -- nghi set @so_tien = @so_gio_cong * (@Tien_cong_1_gio_thuong * @Ty_le_1_gio_ngay_nghi / 100) set @tien_cong_1_gio_tang_ca=(@Tien_cong_1_gio_thuong * @Ty_le_1_gio_ngay_nghi /100) set @so_tien_tang_ca=@so_gio_tang_ca*@tien_cong_1_gio_tang_ca end end set @so_tien_tang_ca=case when @so_tien_tang_ca is null then 0 else @so_tien_tang_ca end set @so_tien=case when @so_tien is null then 0 else @so_tien end update bang_cham_cong set tinh_trang_vao=@tinh_trang_vao,tinh_trang_ra=@tinh_trang_ra, so_phut_tinh_trang_vao=@so_phut_tinh_trang_vao, so_phut_tinh_trang_ra=@so_phut_tinh_trang_ra,so_gio_cong=@so_gio_cong,so_tien=@so_tien,so_gio_tang_ca=@so_gio_tang_ca,so_tien_tang_ca=@so_tien_tang_ca where id_cham_cong=@idchamcong update bang_cham_cong set so_tien=@tien_cong_1_gio_thuong*@so_gio_cong where id_cham_cong=@idchamcong update bang_cham_cong set so_tien_tang_ca=@tien_cong_1_gio_tang_ca*@so_gio_tang_ca where id_cham_cong=@idchamcong fetch next from @cursor into @idqtct,@idchamcong,@tu_gio,@tu_phut,@den_gio,@den_phut,@idct,@ngay_thuong_le_nghi end close @cursor deallocate @cursor GO 3.Thủ tục tổng hợp giờ công tháng cho nhân viên: CREATE procedure CalculateTONG_HOP_GIO_CONG_1_NHAN_VIEN_EveryOne @thang numeric(2),@nam numeric(4),@mpb nvarchar(4),@mnv nvarchar(10) as declare @cursor_Nv as cursor, @ma_nhan_vien as nvarchar(10), @idqtct as numeric(13), @th as numeric(13,2), @l as numeric(13,2), @ng as numeric(13,2), @vs as numeric(5), @rs as numeric(5), @vm as numeric(5), @rm as numeric(5), @sogiotangca as numeric(10,2), @sogio as numeric(10,2), @stien as numeric(13,2), @stientangca as numeric(13,2), @loainv as nvarchar(1), @sumG as numeric(10,2), @idct as numeric(13) exec CalculateSumFormulaHour set @cursor_Nv=CURSOR SCROLL KEYSET FOR select ma_nhan_vien,loai_nhan_vien from ho_so_nhan_vien where ma_nhan_vien=@mnv and ma_nhan_vien in ( select ma_nhan_vien from hop_dong_lao_dong where ma_hop_dong in (select ma_hop_dong from qua_trinh_cong_tac where co_hieu_luc='1' and id_qua_trinh_cong_tac in (select id_qua_trinh_cong_tac from bang_cham_cong where dang_lam_viec='0' and thang=@thang and nam=@nam) and ma_to in (select ma_to from dm_to where ma_phong_ban=@mpb))) union select ma_nhan_vien,loai_nhan_vien from ho_so_nhan_vien where ma_nhan_vien=@mnv and ma_nhan_vien in ( select ma_nhan_vien from hop_dong_lao_dong where ma_hop_dong in (select ma_hop_dong from qua_trinh_cong_tac where co_hieu_luc='1' and id_qua_trinh_cong_tac not in (select id_qua_trinh_cong_tac from bang_cham_cong where dang_lam_viec='0' and thang=@thang and nam=@nam) and ma_to in (select ma_to from dm_to where ma_phong_ban=@mpb))) open @cursor_Nv FETCH NEXT FROM @cursor_Nv INTO @ma_nhan_vien,@loainv WHILE @@FETCH_STATUS =0 BEGIN select @idqtct=id_qua_trinh_cong_tac from qua_trinh_cong_tac where co_hieu_luc='1' and ma_hop_dong in (select ma_hop_dong from hop_dong_lao_dong where ma_nhan_vien=@mnv) set @idqtct=case when @idqtct is null then 0 else @idqtct end if @idqtct>0 begin delete from bang_tong_hop_gio_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam select @th=sum(so_gio_cong) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and ngay_thuong_le_nghi='1' and dang_lam_viec='0' select @l=sum(so_gio_cong) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and ngay_thuong_le_nghi='2' and dang_lam_viec='0' select @ng=sum(so_gio_cong) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and ngay_thuong_le_nghi='3' and dang_lam_viec='0' select @vs=count(tinh_trang_vao) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and tinh_trang_vao='1' and dang_lam_viec='0' select @vm=count(tinh_trang_vao) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and tinh_trang_vao='3' and dang_lam_viec='0' select @rs=count(tinh_trang_ra) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and tinh_trang_ra='1' and dang_lam_viec='0' select @rm=count(tinh_trang_ra) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and tinh_trang_ra='3' and dang_lam_viec='0' select @sogiotangca=sum(so_gio_tang_ca) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and dang_lam_viec='0' select @sogio=sum(so_gio_cong+so_gio_tang_ca) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and dang_lam_viec='0' select @stien=sum(so_tien) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and dang_lam_viec='0' select @stientangca=sum(so_tien_tang_ca) from bang_cham_cong where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and dang_lam_viec='0' SET @th =case when @th is null then 0 else @th end SET @l =case when @l is null then 0 else @l end SET @ng =case when @ng is null then 0 else @ng end SET @vs =case when @vs is null then 0 else @vs end SET @rs =case when @rs is null then 0 else @rs end SET @vm =case when @vm is null then 0 else @vm end SET @rm =case when @rm is null then 0 else @rm end SET @sogiotangca =case when @sogiotangca is null then 0 else @sogiotangca end SET @sogio =case when @sogio is null then 0 else @sogio end SET @stien =case when @stien is null then 0 else @stien end SET @stientangca =case when @stientangca is null then 0 else @stientangca end Insert into bang_tong_hop_gio_cong ( id_qua_trinh_cong_tac,thang,nam,TONG_SO_GIO_CHUA_QUY_DOI,SO_GIO_NGAY_THUONG,SO_GIO_NGAY_NGHI,SO_GIO_NGAY_LE, SO_LAN_RA_SOM,SO_LAN_RA_MUON,SO_LAN_VAO_SOM,SO_LAN_VAO_MUON,SO_GIO_PHU_TROI, so_tien,so_gio_tang_ca,so_tien_tang_ca) values ( @idqtct,@thang,@nam,@sogio,@th,@ng,@l,@rs,@rm,@vs,@vm,@sogiotangca,@stien,@sogiotangca,@stientangca) Update bang_cham_cong set da_cham_cong='1' where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam and dang_lam_viec='0' If @loainv = '2' begin update bang_tong_hop_gio_cong set so_ngay_cong=@sogio/ 8.5 ,so_ngay_tang_ca=@sogiotangca / 8.5 where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam end Else begin i f exists(select 1 from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct and id_cong_thuc is null) begin select @idct=id_cong_thuc from dm_phong_ban where ma_phong_ban=@mpb select @sumG=so_gio from bang_cong_thuc_cham_cong_theo_gio where id_cong_thuc=@idct If @sumG >= 8 begin set @sumG = @sumG - 1 end If @sumG 0 update bang_tong_hop_gio_cong set so_ngay_cong=@sogio / @sumG ,so_ngay_tang_ca=@sogiotangca / @sumG where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam Else update bang_tong_hop_gio_cong set so_ngay_cong=0,so_ngay_tang_ca=0 where id_qua_trinh_cong_tac=@idqtct and thang=@thang and nam=@nam end else begin select @idct=id_cong_thuc from qua_trinh_cong_tac where id_qua_trinh_cong_tac=@idqtct select @sumG=so_gio from bang_cong_thuc_cham_cong_theo_gio where id_cong_thuc=@idct If @sumG >= 8 begin set @sumG = @sumG - 1 end If @sumG 0 update bang_tong_hop_gio_cong s

Các file đính kèm theo tài liệu này:

  • docLUAN VAN TOT NGHIEP.doc
  • pptBaoCao2.ppt
  • docBIATRONG.doc
  • rarchương trình.rar
  • docLoi_cam_on.doc
  • docloinoidau.doc
  • rarSetup.rar