public void TinhTG_LV_LVCa3_LamThem1Ca(cCheckInOut CIO, cCa ca, FromToTimeSpan NightTime) { bool tempQuaDem; TinhTG_LV_LVCa3_LamThem1Ca(CIO.ThuocNgayCong, CIO.CheckVT, CIO.Vao.Time, CIO.Raa.Time, ca.Duty.From, ca.Duty.To, ca.ChoPhepTre_TimeOfDay, ca.ChophepSom_TimeOfDay, ca.BatdauOT_TimeOfDay, ca.LunchMin, NightTime, out CIO.VaoLamTron, out CIO.RaaLamTron, out CIO.BD_LV, out CIO.KT_LV_TrongCa, out CIO.KT_LV, out CIO.BD_LV_Ca3, out CIO.KT_LV_Ca3, out CIO.HienDien, out CIO.VaoSauCa, out CIO.RaTruocCa, out CIO.Tre, out CIO.Som, out CIO.OLaiVR, out CIO.LamTrongGio, out CIO.LamDem, out tempQuaDem); CIO.QuaDem = tempQuaDem; // ko cho phép out CIO.QuaDem nên fix tạm bằng cách dùng biến trung gian cục bộ và gán lại }
public void TinhTG_LV_LVCa3_LamThem1Ca(DateTime ThuocNgayCong, TrangThaiCheck CheckVT, DateTime TD_Vao, DateTime TD_Raa, TimeSpan BDCa_TOD, TimeSpan KTCa_TOD, TimeSpan ChoPhepTre_TimeOfDay, TimeSpan ChophepSom_TimeOfDay, TimeSpan BatdauOT_TimeOfDay, TimeSpan Phut_NghiTrua, FromToTimeSpan NightTime, out DateTime TD_Vao_lamTron, out DateTime TD_Raa_lamTron, out DateTime TD_BD_LV, out DateTime TD_KT_LV_TrongCa, out DateTime TD_KT_LV, out DateTime TD_BD_LV_Ca3, out DateTime TD_KT_LV_Ca3, out TimeSpan TGHienDien, out TimeSpan TGVaoSauCa, out TimeSpan TGRaTruocCa, out TimeSpan TGVaoTreVR, out TimeSpan TGRaaSomVR, out TimeSpan TG_OLai_VR, out TimeSpan TGLamViecTrongCa, /*out TimeSpan TGLamViecNgoaiGio, ko có TGLamViecNgoaiGio vì chưa xử lý*/ out TimeSpan TGLamDem, out bool QuaDem) { TD_Vao_lamTron = MyUtility.LamTronPhut(TD_Vao); TD_Raa_lamTron = MyUtility.LamTronPhut(TD_Raa); TD_BD_LV = ThuocNgayCong; TD_KT_LV_TrongCa = ThuocNgayCong; TD_KT_LV = ThuocNgayCong; TD_BD_LV_Ca3 = ThuocNgayCong; TD_KT_LV_Ca3 = ThuocNgayCong; TGHienDien = TimeSpan.Zero; TGVaoSauCa = TimeSpan.Zero; TGRaTruocCa = TimeSpan.Zero; TGVaoTreVR = TimeSpan.Zero; TGRaaSomVR = TimeSpan.Zero; TG_OLai_VR = TimeSpan.Zero; TGLamViecTrongCa = TimeSpan.Zero; //ko có TG làm việc ngoài giờ TGLamDem = TimeSpan.Zero; QuaDem = false; if (CheckVT != TrangThaiCheck.CheckDayDu) { return; } var TD_BD_Ca = ThuocNgayCong.Add(BDCa_TOD); var TD_KT_Ca = ThuocNgayCong.Add(KTCa_TOD); //off duty này đã bao gồm daycount được công bên trong //var thoidiem_BD_tinhtre = ThuocNgayCong.Add(ChoPhepTre_TimeOfDay); var thoidiem_BD_tinhsom = ThuocNgayCong.Add(ChophepSom_TimeOfDay); var thoidiem_BD_tinhOLai = ThuocNgayCong.Add(BatdauOT_TimeOfDay); var thoidiem_QuyDinhBDLamDem = ThuocNgayCong.Add(NightTime.From); //ver 4.0.0.4 var thoidiem_QuyDinhKTLamDem = ThuocNgayCong.Add(NightTime.To); //ver 4.0.0.4 //todo lưu ý đã có 1 ngày vì Global Variable =6gHôm sau bool quadem; TGHienDien = TD_Raa_lamTron - TD_Vao_lamTron; // kiểm tra giờ ra ko được nhỏ hơn vào ca, giờ vào ko được nhỏ hơn ra ca if (TD_Raa_lamTron <= TD_BD_Ca || TD_Vao_lamTron >= TD_KT_Ca) { return; } XacDinh_TD_BDLV(ThuocNgayCong, TD_Vao, BDCa_TOD, ChoPhepTre_TimeOfDay, false, out TD_Vao_lamTron, out TD_BD_LV, out TGVaoSauCa, out TGVaoTreVR); //XacDinh_TD_BDLV(TD_Vao_lamTron, TD_BD_Ca, thoidiem_BD_tinhtre, false, out TD_BD_LV, out TGVaoSauCa, out TGVaoTreVR); //TGVaoTreVR = (thoidiem_BD_tinhtre < TD_Vao_lamTron) ? (TD_Vao_lamTron - TD_BD_Ca) : TimeSpan.Zero; XacDinh_TD_KTLV(ThuocNgayCong, TD_Raa, KTCa_TOD, ChophepSom_TimeOfDay, false, BatdauOT_TimeOfDay, false, TimeSpan.Zero, out TD_Raa_lamTron, out TD_KT_LV_TrongCa, out TD_KT_LV, out TGRaTruocCa, out TGRaaSomVR, out TG_OLai_VR); //Do chưa xác nhận nên giờ làm thêm nên TD_KT_LV = TD_KT_LV_TrongCa //XacDinh_TD_KTLV_TrongCa(TD_Raa_lamTron, TD_KT_Ca, thoidiem_BD_tinhsom, false, out TD_KT_LV_TrongCa, out TGRaTruocCa, out TGRaaSomVR); //TGRaaSomVR = (TD_Raa_lamTron < thoidiem_BD_tinhsom) ? (TD_KT_Ca - TD_Raa_lamTron) : TimeSpan.Zero; //XacDinh_KTG_OLai(TD_Raa_lamTron, TD_KT_Ca, thoidiem_BD_tinhOLai, out TG_OLai_VR); Tinh_TGLamViecTrongCa(TD_BD_LV, TD_KT_LV_TrongCa, Phut_NghiTrua, out TGLamViecTrongCa); //TD_KT_LV = TD_KT_LV_TrongCa; Tinh_TGLamViec_Ca3(TD_BD_LV, TD_KT_LV, thoidiem_QuyDinhBDLamDem, thoidiem_QuyDinhKTLamDem, out TD_BD_LV_Ca3, out TD_KT_LV_Ca3, out TGLamDem, out quadem); QuaDem = quadem; }