public void TaoCaTuDo(int ID, DateTime CheckInTime, out cCa Ca) { //var temp = CheckInTime.TimeOfDay;//ver 4.0.0.0//tbd xem lại ngày công Ca = new cCa { ID = ID }; var gioVaoLamTron = MyUtility.LamTronPhut(CheckInTime.TimeOfDay); //ver 4.0.0.1 bỏ phần giây, chỉ giữ phần giờ, phút //if (CheckInTime.TimeOfDay < GlobalVariables._03gio) temp = Ca.Duty.From.Add(GlobalVariables._1ngay); //ca 3 , ca 3 va 1 vẫn giữ nguyên vì 21h > 4h//tbd xem lại ngày công if (Ca.ID == int.MinValue + 0) { Ca.Duty = new FromToTimeSpan { From = gioVaoLamTron, To = gioVaoLamTron.Add(GlobalVariables._08gio) }; Ca.WorkingTimeTS = GlobalVariables._08gio; Ca.Workingday = 1f; Ca.Code = Properties.Settings.Default.shiftCodeCa8h; //todo xem lại Ca.MoTa = string.Format(Properties.Settings.Default.MoTaCaTuDo, 8); //todo xem lauị Ca.KyHieuCC = Properties.Settings.Default.kyHieuCCCa8h; } Ca.Is_CaTuDo = true; Ca.TachCaDem = false; Ca.NightTime = GlobalVariables.NightTime22h; Ca.LateeMin = GlobalVariables.default_LateMin; Ca.EarlyMin = GlobalVariables.default_EarlyMin; Ca.AfterOTMin = GlobalVariables.default_AfterOTMin; Ca.LunchMin = GlobalVariables.default_LunchMin; Ca.DayCount = Ca.Duty.To.Days; Ca.QuaDem = (Ca.Duty.To.Days == 1); Ca.OnTimeInMin = 5; //setting nhưng ko ý nghĩa Ca.CutInMin = 5; //setting nhưng ko ý nghĩa Ca.OnTimeOutMin = 5; //setting nhưng ko ý nghĩa Ca.CutOutMin = 5; //setting nhưng ko ý nghĩa }
public void XacDinh_TD_BDLV(DateTime ThuocNgayCong, DateTime TD_Vao, TimeSpan BDCa_TOD, TimeSpan ChoPhepTre_TimeOfDay, bool ChoPhepTre, out DateTime TD_Vao_lamTron, out DateTime TD_BD_LV, out TimeSpan VaoSauCa, out TimeSpan TGVaoTreVR) { TD_Vao_lamTron = MyUtility.LamTronPhut(TD_Vao); var TD_BD_Ca = ThuocNgayCong.Add(BDCa_TOD); var thoidiem_BD_tinhtre = ThuocNgayCong.Add(ChoPhepTre_TimeOfDay); XacDinh_TD_BDLV(TD_Vao_lamTron, TD_BD_Ca, thoidiem_BD_tinhtre, ChoPhepTre, out TD_BD_LV, out VaoSauCa, out TGVaoTreVR); }
public void XacDinh_TD_KTLV_TrongCa(DateTime TD_Raa_LamTron, DateTime TD_KTCa, DateTime TD_chophepsom, bool ChoPhepSom, out DateTime TD_KTLVTrongCa, out TimeSpan RaTruocCa, out TimeSpan TGRaSom) { if (ChoPhepSom == false && (TD_KTCa - TD_Raa_LamTron > TimeSpan.Zero)) { RaTruocCa = TD_KTCa - TD_Raa_LamTron; RaTruocCa = MyUtility.LamTronPhut(RaTruocCa); } else { RaTruocCa = TimeSpan.Zero; } // ra ... choPhép sớm --> ra sớm, lấy giờ ra làm tròn // cho phép sớm .. ra --> ko sớm, lấy giờ kt ca TD_KTLVTrongCa = (TD_Raa_LamTron < TD_chophepsom /*&& TD_chophepsom - TD_Raa_LamTron > TimeSpan.Zero*/) ? TD_Raa_LamTron : TD_KTCa; XacDinhSoPhutSom(TD_Raa_LamTron, TD_KTCa, TD_chophepsom, ChoPhepSom, out TGRaSom); }
public void XacDinh_TD_BDLV(DateTime TD_VaoLamTron, DateTime TD_BDCa, DateTime TD_Chopheptre, bool ChoPhepTre, out DateTime TD_BDLV, out TimeSpan VaoSauCa, out TimeSpan TGVaoTre) { if (ChoPhepTre == false && (TD_VaoLamTron - TD_BDCa > TimeSpan.Zero)) { VaoSauCa = TD_VaoLamTron - TD_BDCa; VaoSauCa = MyUtility.LamTronPhut(VaoSauCa); } else { VaoSauCa = TimeSpan.Zero; } //cho trễ ... vào --> trễ , lấy vào làm tròn; // vào ... cho trễ --> ko trễ, lấy bđ ca TD_BDLV = (TD_Chopheptre < TD_VaoLamTron /*&& TD_VaoLamTron - TD_Chopheptre > TimeSpan.Zero*/) ? TD_VaoLamTron : TD_BDCa; XacDinhSoPhutTre(TD_VaoLamTron, TD_BDCa, TD_Chopheptre, ChoPhepTre, out TGVaoTre); }
public void XacDinh_TD_KTLV(DateTime ThuocNgayCong, DateTime TD_Raa, TimeSpan KTCa_TOD, TimeSpan ChophepSom_TimeOfDay, bool ChoPhepSom, TimeSpan BatdauOT_TimeOfDay, bool TinhTG_OT, TimeSpan SoPhutOT_DaXN, out DateTime TD_Raa_LamTron, out DateTime TD_KTLVTrongCa, out DateTime TD_KTLV, out TimeSpan RaTruocCa, out TimeSpan TGRaaSomVR, out TimeSpan TG_OLai_VR) { TD_Raa_LamTron = MyUtility.LamTronPhut(TD_Raa); 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_tinhsom = ThuocNgayCong.Add(ChophepSom_TimeOfDay); var thoidiem_BD_tinhOLai = ThuocNgayCong.Add(BatdauOT_TimeOfDay); TG_OLai_VR = TimeSpan.Zero; XacDinh_TD_KTLV_TrongCa(TD_Raa_LamTron, TD_KT_Ca, thoidiem_BD_tinhsom, ChoPhepSom, out TD_KTLVTrongCa, out RaTruocCa, out TGRaaSomVR); if (TinhTG_OT == false) { XacDinh_KTG_OLai(TD_Raa_LamTron, TD_KT_Ca, thoidiem_BD_tinhOLai, out TG_OLai_VR); TD_KTLV = TD_KTLVTrongCa; } else { TD_KTLV = TD_KTLVTrongCa.Add(SoPhutOT_DaXN); } }
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; }