예제 #1
0
        //
        private void fmDSCa_Load(object sender, EventArgs e)
        {
            #region gán datasource cho các datagrid

            var dscaThuong = (from ca in XL.DSCa
                              select new { ca = ca, ID = ca.ID, Code = ca.Code, VaoCa = ca.TOD_Duty.Onn, RaaCa = ca.TOD_Duty.Off, QuaDem = ca.QuaDem, MoTa = ca.MoTa, WorkingTime = ca.WorkingTimeTS }).ToList();
            var dsCaTuDo = new List <dynamic>();
            cCa ca8h     = new cCa {
                ID = int.MinValue + 0, Code = Properties.Settings.Default.shiftCodeCa8h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 8), Workingday = 1f
            };
            cCa ca12h = new cCa {
                ID = int.MinValue + 1, Code = Properties.Settings.Default.shiftCodeCa12h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 12), Workingday = 1.5f
            };
            cCa ca4h = new cCa {
                ID = int.MinValue + 2, Code = Properties.Settings.Default.shiftCodeCa4h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 4), Workingday = 0.5f
            };                                                                                                                                                                                  //ver 4.0.0.4
            cCa ca16h = new cCa {
                ID = int.MinValue + 3, Code = Properties.Settings.Default.shiftCodeCa16h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 16), Workingday = 2f
            };                                                                                                                                                                                   //ver 4.0.0.4
            dynamic dCa8h  = new { ca = ca8h, ID = ca8h.ID, Code = ca8h.Code, VaoCa = TimeSpan.Zero, RaaCa = TimeSpan.Zero, QuaDem = false, MoTa = ca8h.MoTa, WorkingTime = XL2._08gio };
            dynamic dCa12h = new { ca = ca12h, ID = ca12h.ID, Code = ca12h.Code, VaoCa = TimeSpan.Zero, RaaCa = TimeSpan.Zero, QuaDem = false, MoTa = ca12h.MoTa, WorkingTime = XL2._12gio };
            dynamic dCa4h  = new { ca = ca4h, ID = ca4h.ID, Code = ca4h.Code, VaoCa = TimeSpan.Zero, RaaCa = TimeSpan.Zero, QuaDem = false, MoTa = ca4h.MoTa, WorkingTime = XL2._04gio };
            dynamic dCa16h = new { ca = ca16h, ID = ca16h.ID, Code = ca16h.Code, VaoCa = TimeSpan.Zero, RaaCa = TimeSpan.Zero, QuaDem = false, MoTa = ca16h.MoTa, WorkingTime = XL2._16gio };
            dsCaTuDo.Add(dCa8h);
            dsCaTuDo.Add(dCa12h);
            dsCaTuDo.Add(dCa4h);
            dsCaTuDo.Add(dCa16h);
            DSTatCaCacCa = new List <dynamic>();
            DSTatCaCacCa.AddRange(dsCaTuDo);
            DSTatCaCacCa.AddRange(dscaThuong);
            #endregion
            radioChonTGLV.SelectedIndex = 0;
            radioChonTGLV_SelectedIndexChanged(null, null);
            radioChonTGLV.Update();
        }
        private void cbCa_SelectedIndexChanged(object sender, EventArgs e)
        {
            cCa      tmpCa = (cCa)cbCa.SelectedItem;
            DateTime gio   = (radVao.Checked) ? dateTimeGioMoi.Value.Date.Add(tmpCa.Duty.Onn) : dateTimeGioMoi.Value.Date.Add(tmpCa.Duty.Off);

            dateTimeGioMoi.Value = new DateTime(gio.Year, gio.Month, gio.Day, gio.Hour, gio.Minute, 0);
        }
예제 #3
0
        public static void XacNhanCa(cUserInfo nv, cCheckInOut CIO, cCa currShift,
                                     bool bDuyetCPTre, bool bDuyetCPSom, int soPhutLamThem, bool choPhepTinhPc50, string lydo, string ghichu,
                                     bool bVaoTreLaCV, bool bRaaSomLaCV, TS NightTime)//ver 4.0.0.4
        //if (CIO.Vao.Time <= XL2.NgayCuoiThangKetCong) return;

        {
            if (currShift.TachCaDem)
            {
                if (CIO.DaXN)
                {
                    XacNhan_CIO_V_CoTachCa(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                           bVaoTreLaCV, bRaaSomLaCV, NightTime);     //ver 4.0.0.4
                }
                else
                {
                    XacNhan_CIO_A_CoTachCa(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                           bVaoTreLaCV, bRaaSomLaCV, NightTime);     //ver 4.0.0.4
                }
            }

            else
            {
                if (CIO.DaXN)
                {
                    XacNhan_CIO_V(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                  bVaoTreLaCV, bRaaSomLaCV, NightTime);               //ver 4.0.0.4
                }
                else
                {
                    XacNhan_CIO_A(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                  bVaoTreLaCV, bRaaSomLaCV, NightTime);               //ver 4.0.0.4
                }
            }
        }
        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
        }
 private void TinhCong(cCheckInOut CIO, cCa Ca)
 {
     TinhCong(CIO.Tre, CIO.Som, CIO.ChoPhepTre, CIO.ChoPhepSom, CIO.VaoTuDo, CIO.RaaTuDo,
              CIO.LamTrongGio, CIO.LamNgoaiGio, Ca.WorkingTimeTS, Ca.Workingday,
              out CIO.TruCongTre, out CIO.TruCongSom, out CIO.TrongGio, out CIO.NgoaiGio,
              out CIO.DinhMuc, out CIO.Tong);
 }
        public static void TaoCaTuDo(DateTime CheckInTime, int LoaiCaTuDo, out cCa Ca)
        {
            //var temp = CheckInTime.TimeOfDay;//ver 4.0.0.0//tbd xem lại ngày công
            Ca = new cCa {
                ID = LoaiCaTuDo,
            };
            var temp = new TimeSpan(CheckInTime.TimeOfDay.Hours, CheckInTime.TimeOfDay.Minutes, 0);            //ver 4.0.0.1 bỏ phần giây, chỉ giữ phần giờ, phút

            if (CheckInTime.TimeOfDay < XL2._03gio)
            {
                temp = Ca.TOD_Duty.Onn.Add(XL2._1ngay);                                                 //ca 3 , ca 3 va 1 vẫn giữ nguyên vì 21h > 4h//tbd xem lại ngày công
            }
            if (LoaiCaTuDo == int.MinValue + 0)
            {
                Ca.TOD_Duty = new TS {
                    Onn = temp, Off = temp.Add(XL2._08gio)
                };
                Ca.WorkingTimeTS = XL2._08gio;
                Ca.Workingday    = 1f;
                Ca.Code          = mySetting.Default.shiftCodeCa8h;
                Ca.MoTa          = string.Format(mySetting.Default.MoTaCaTuDo, 8);
                Ca.KyHieuCC      = mySetting.Default.kyHieuCCCa8h;
            }
            else if (LoaiCaTuDo == int.MinValue + 1)
            {
                Ca.TOD_Duty = new TS {
                    Onn = temp, Off = temp.Add(XL2._12gio)
                };
                Ca.WorkingTimeTS = XL2._12gio;
                Ca.Workingday    = 1.5f;
                Ca.Code          = mySetting.Default.shiftCodeCa12h;
                Ca.MoTa          = string.Format(mySetting.Default.MoTaCaTuDo, 12);
                Ca.KyHieuCC      = mySetting.Default.kyHieuCCCa12h;
            }
            else if (LoaiCaTuDo == int.MinValue + 2)
            {
                Ca.TOD_Duty = new TS {
                    Onn = temp, Off = temp.Add(XL2._04gio)
                };
                Ca.WorkingTimeTS = XL2._04gio;
                Ca.Workingday    = 0.5f;
                Ca.Code          = mySetting.Default.shiftCodeCa4h;
                Ca.MoTa          = string.Format(mySetting.Default.MoTaCaTuDo, 4);
                Ca.KyHieuCC      = mySetting.Default.kyHieuCCCa4h;
            }
            else if (LoaiCaTuDo == int.MinValue + 3)
            {
                Ca.TOD_Duty = new TS {
                    Onn = temp, Off = temp.Add(XL2._16gio)
                };
                Ca.WorkingTimeTS = XL2._16gio;
                Ca.Workingday    = 2f;
                Ca.Code          = mySetting.Default.shiftCodeCa16h;
                Ca.MoTa          = string.Format(mySetting.Default.MoTaCaTuDo, 16);
                Ca.KyHieuCC      = mySetting.Default.kyHieuCCCa16h;
            }
            Ca.PhutToiThieuTinhOT = XL2.default_PhutAfterOTMin;
            Ca.TOD_NightTime      = XL2.TOD_NightTime22h;
        }
        public void LapDSTatCaCa_ChamCong(out List <cCa> DSCa)       // lập danh sách tất cả các ca để chấm công (chỉ có enable )
        {
            DSCa = new List <cCa>();
            DataTable tableCa = SqlDataAccessHelper.ExecSPQuery(SPName6.Shift_DocTatCaShiftV6.ToString(),
                                                                new SqlParameter("@Enable", true));

            foreach (DataRow row in tableCa.Rows)
            {
                #region nạp dữ liệu

                cCa ca = new cCa();
                ca.ID   = (int)row["ShiftID"];
                ca.Code = row["ShiftCode"].ToString();
                if (TimeSpan.TryParse(row["Onduty"].ToString(), out ca.Duty.From) == false)
                {
                    ACMessageBox.Show("Không xử lý được dữ liệu Ca.", Resources.Caption_Loi, 2000);
                    break;
                }
                if (TimeSpan.TryParse(row["Offduty"].ToString(), out ca.Duty.To) == false)
                {
                    ACMessageBox.Show("Không xử lý được dữ liệu Ca.", Resources.Caption_Loi, 2000);
                    break;
                }
                ca.DayCount  = (int)row["DayCount"];
                ca.QuaDem    = (ca.DayCount == 1);
                ca.Duty.To   = ca.Duty.To.Add(new TimeSpan(ca.DayCount, 0, 0, 0));
                ca.NightTime = new FromToTimeSpan {
                    From = GlobalVariables._22h00, To = GlobalVariables._6gHomSau
                };
                ca.OnTimeInMin  = (int)row["OnTimeIn"];
                ca.CutInMin     = (int)row["CutIn"];
                ca.OnTimeOutMin = (int)row["OnTimeOut"];
                ca.CutOutMin    = (int)row["CutOut"];
                //nhận diện vào, nhận diện ra tự động tính toán bên kia
                ca.AfterOTMin = new TimeSpan(0, (int)row["AfterOT"], 0);
                ca.LateeMin   = new TimeSpan(0, (int)row["LateGrace"], 0);
                ca.EarlyMin   = new TimeSpan(0, (int)row["EarlyGrace"], 0);
                //tính timeOfDay ChoPhépTrễ, Sớm, AfterOT tính toán bên class

                var tOnLunch  = TimeSpan.Zero;
                var tOffLunch = TimeSpan.Zero;
                if (row["OnLunch"] != DBNull.Value && row["OffLunch"] != DBNull.Value)
                {
                    TimeSpan.TryParse(row["OnLunch"].ToString(), out tOnLunch);
                    TimeSpan.TryParse(row["OffLunch"].ToString(), out tOffLunch);
                }
                ca.LunchMin = tOffLunch - tOnLunch;

                ca.WorkingTimeTS = new TimeSpan(0, int.Parse(row["WorkingTime"].ToString()), 0);
                ca.Workingday    = (Single)row["Workingday"];
                ca.KyHieuCC      = row["KyHieuCC"].ToString();
                ca.MoTa          = row["Description"].ToString();
                ca.Is_CaTuDo     = false;

                #endregion

                DSCa.Add(ca);
            }
        }
        public int ValidateCIO(DataRow row, cCa CaDuocChon, bool CheckVaoTreTinhCV, bool CheckRaaSomTinhCV, bool CheckChoPhepTre, bool CheckChoPhepSom, TimeSpan soPhutLamThemDaXN)
        {
            /* -1 : Làm thêm > Ở lại*/
            int         kq  = 0;
            cCheckInOut cio = (cCheckInOut)row["cCheckInOut"];

            if (soPhutLamThemDaXN > cio.TG5.OLai)
            {
                return(-1);                                              //
            }
            TS       TOD_Duty, gioiHanChoPhepTreSom;
            DateTime td_batdau_lv, td_ketthuc_lv;
            TimeSpan tre, som;

            if (CaDuocChon.ID < 0)              //ca tự do
            {
                TOD_Duty.Onn = new TimeSpan(cio.Vao.Time.TimeOfDay.Hours, cio.Vao.Time.TimeOfDay.Minutes, 0);
                TOD_Duty.Off = TOD_Duty.Onn.Add(CaDuocChon.WorkingTimeTS);
                XL.Vao(cio.Vao.Time, cio.ThuocNgayCong.Add(TOD_Duty.Onn), CaDuocChon.ThoiDiemTre(cio.ThuocNgayCong.Date), out td_batdau_lv, out tre);
                XL.Raa(cio.Raa.Time, cio.ThuocNgayCong.Add(TOD_Duty.Off), CaDuocChon.ThoiDiemSom(cio.ThuocNgayCong.Date), out td_ketthuc_lv, out som);
            }
            else              //ca chuẩn

            {
            }
            //var temp1 = cio.ShiftID < 0 ? cio.Vao.Time.TimeOfDay cio.ThuocNgayCong.Add(CaDuocChon.TOD_Duty.Onn);
            var      temp2 = cio.ThuocNgayCong.Add(CaDuocChon.TOD_Duty.Off);
            DateTime TD_BD_LV, TD_KT_LV, TD_KT_LV_TrongCa, TD_BD_LV_Ca3, TD_KT_LV_Ca3;
            bool     QuaDem;
            TimeSpan TGThucTe, TGGioLamViec, TGVaoTre, TGRaaSom, TGGioLamViecTrongCa, TGOLai, TGLamBanDem;

            XL.TinhTG_LV_LVCa3_LamThem_1CIO5(cio.ThuocNgayCong, cio.HaveINOUT, true, CheckChoPhepTre, CheckChoPhepSom, cio.Vao.Time, cio.Raa.Time,
                                             CaDuocChon.TOD_Duty.Onn, CaDuocChon.TOD_Duty.Off, CaDuocChon.TS_PhutChoTre, CaDuocChon.TS_PhutChoSom, CaDuocChon.TS_PhutAfterOT, CaDuocChon.TS_PhutNghiTrua,
                                             soPhutLamThemDaXN,
                                             XL2.TOD_NightTime22h, //tbd start NT, endNT
                                             out TD_BD_LV, out TD_KT_LV, out TD_KT_LV_TrongCa, out TD_BD_LV_Ca3, out TD_KT_LV_Ca3, out TGThucTe, out TGGioLamViec,
                                             out TGVaoTre, out TGRaaSom, out TGGioLamViecTrongCa, out TGOLai, out QuaDem, out TGLamBanDem
                                             );
            if (TGGioLamViec < XL2._10phut)
            {
                return(-2);
            }
            float congCaQuyDinh, congTre, congSom, congThucTeTrongCa, congThucTeNgoaiCa, congThucTe, tongCongBu, tongCongTru, dinhMucCong;

            XL.TinhCong_1_CIO_5(CaDuocChon.Workingday, CaDuocChon.WorkingTimeTS, TGVaoTre, TGRaaSom,
                                CheckVaoTreTinhCV, CheckRaaSomTinhCV, soPhutLamThemDaXN, out congCaQuyDinh, out congTre, out congSom,
                                out congThucTeTrongCa, out congThucTeNgoaiCa, out congThucTe, out tongCongBu, out tongCongTru, out dinhMucCong);

            if (Math.Abs(congThucTe - 0f) < 0.001f)
            {
                return(-2);
            }
            return(kq);
        }
        void dateTimeGioMoi_ValueChanged(object sender, EventArgs e)
        {
            cCa  tmpCa      = (cCa)cbCa.SelectedItem;
            bool tmpCheckIn = radVao.Checked;

            if (!((tmpCheckIn && dateTimeGioMoi.Value.TimeOfDay == tmpCa.Duty.Onn) || (tmpCheckIn == false && dateTimeGioMoi.Value.TimeOfDay == tmpCa.Duty.Off)))
            {
                cbCa.SelectedIndexChanged -= cbCa_SelectedIndexChanged;
                cbCa.SelectedIndex         = 0;
                cbCa.Refresh();
                cbCa.SelectedIndexChanged += cbCa_SelectedIndexChanged;
            }
        }
        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
        }
예제 #11
0
        private void timeEditBoSungVao_Properties_ButtonClick(object sender, ButtonPressedEventArgs e)
        {
            /* 1. xác định CIO nào đang chọn để lấy thời gian vào hoặc ra
             * 2. trường hợp đặc biệt thỏa các điều kiện :
             *    - đang chọn 1 row, chọn ca tự do, chế độ nhập bổ sung thì tự động thêm
             */
            if (e.Button.Kind == ButtonPredefines.Search)
            {
                fmDSCa formDSCa = new fmDSCa();
                formDSCa.ShowDialog();
                if (formDSCa.m_YesNoCancel == YesNoCancel.Yes)
                {
                    cCa      selectedCa = formDSCa.selectedCa;
                    TimeSpan timeVao, timeRaa;
                    this.GetThoigianVaoraCa(selectedCa, out timeVao, out timeRaa);
                    int[] selectingRowHandle = gridView1.GetSelectedRows();
                    if ((TimeEdit)sender == timeEditBoSungVao || (TimeEdit)sender == timeEditBoSungRaa)
                    {
                        if (selectingRowHandle.Count() == 1 && selectedCa.ID < 0)
                        {
                            cCheckInOut selectingCheckInOut = (gridView1.GetDataRow(selectingRowHandle[0]) != null)
                                                                                                ? (cCheckInOut)(gridView1.GetDataRow(selectingRowHandle[0])["cCheckInOut"]) : null;
                            if (selectingCheckInOut == null)
                            {
                                goto point1;
                            }
                            if (selectingCheckInOut.HaveINOUT == -1)
                            {
                                timeVao = TimeSpan.Zero;
                                DateTime dateTimeVao = (selectingCheckInOut.Vao.Time.Add(selectedCa.WorkingTimeTS));
                                timeRaa = dateTimeVao.TimeOfDay;
                            }
                            else if (selectingCheckInOut.HaveINOUT == -2)
                            {
                                timeRaa = TimeSpan.Zero;
                                DateTime dateTimeRaa = (selectingCheckInOut.Raa.Time.Add(-selectedCa.WorkingTimeTS));
                                timeVao = dateTimeRaa.TimeOfDay;
                            }
                        }
point1:
                        timeEditBoSungVao.Time = DateTime.Today.Date.Add(timeVao);
                        timeEditBoSungRaa.Time = DateTime.Today.Date.Add(timeRaa);
                    }
                    else if ((TimeEdit)sender == timeEditSuaVao || (TimeEdit)sender == timeEditSuaRaa)
                    {
                        timeEditSuaVao.Time = DateTime.Today.Date.Add(timeVao);
                        timeEditSuaRaa.Time = DateTime.Today.Date.Add(timeRaa);
                    }
                }
            }
        }
        private void switchButton1_ValueChanged(object sender, EventArgs e)
        {
            cCa  tmpCa         = (cCa)cbCa.SelectedItem;
            bool tmpKieuGioVao = radVao.Checked;

            if (!((tmpKieuGioVao && dateTimeGioMoi.Value.TimeOfDay == tmpCa.Duty.Onn) || (tmpKieuGioVao == false && dateTimeGioMoi.Value.TimeOfDay == tmpCa.Duty.Off)))
            {
                cbCa.SelectedIndexChanged -= cbCa_SelectedIndexChanged;
                cbCa.SelectedIndex         = 0;
                cbCa.Refresh();
                cbCa.SelectedIndexChanged += cbCa_SelectedIndexChanged;
            }
            lbKieuGio.Text = string.Format("Giờ {0}", (radVao.Checked ? "vào" : "ra"));
        }
예제 #13
0
 private void GetThoigianVaoraCa(cCa selectedCa, out TimeSpan timeVao, out TimeSpan timeRaa)
 {
     if (selectedCa.ID < 0)              //ca tự do
     {
         timeVao = TimeSpan.Zero;
         timeRaa = TimeSpan.Zero;
     }
     else              //ca chuẩn
     {
         cCa ca = selectedCa;
         timeVao = ca.TOD_Duty.Onn;
         timeRaa = ca.TOD_Duty.Off;
     }
 }
        private void XuLyDon(DataRowView dataRow, cCa currShift, bool bDuyetCPTre, bool bDuyetCPSom, int soPhutLamThem, bool choPhepTinhPc50, string lydo, string ghichu,
                             bool bVaoTreLaCV, bool bRaaSomLaCV)//ver 4.0.0.4
        {
            var nv      = (cUserInfo)dataRow["cUserInfo"];
            var CIO     = (cCheckInOut)dataRow["cCheckInOut"];
            var timevao = CIO.Vao.Time;
            var timeraa = CIO.Raa.Time;

            if (currShift.TachCaDem)
            {
                DateTime td_bd_lv, td_kt_lv_chuaOT, td_kt_lv_DaCoOT;
                TimeSpan tempSom, tempTre;

                DateTime td_bd_ca3    = CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Onn);
                DateTime td_kt_ca3    = td_bd_ca3.Add(currShift.catruoc.WorkingTimeTS);
                DateTime td_bd_ca1    = td_bd_ca3.Add(currShift.catruoc.WorkingTimeTS).Add(XL2._01giay);
                DateTime td_kt_ca3va1 = CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Off);

                XL.Vao(timevao, td_bd_ca3, CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Onn.Add(currShift.TS_PhutChoTre)), out td_bd_lv, out tempTre);
                XL.Raa(timeraa, td_kt_ca3va1, CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Off.Subtract(currShift.TS_PhutChoSom)), out td_kt_lv_chuaOT, out tempSom);
                td_kt_lv_DaCoOT = td_kt_lv_chuaOT + new TimeSpan(0, soPhutLamThem, 0);
                if (td_bd_lv > td_bd_ca3 + XL2._04gio || td_kt_lv_DaCoOT < td_bd_ca1 + XL2._02gio)
                {
                    MessageBox.Show(Resources.Text_KhongTheXacNhanCaTach_KoDuDieuKienTach, Resources.Caption_ThongBao, MessageBoxButtons.OK);
                }
                else
                {
                    XL.XacNhanCa(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                 bVaoTreLaCV, bRaaSomLaCV, currShift.TOD_NightTime);                //ver 4.0.0.4
                }
            }
            else
            {
                DateTime td_kt_lv_chuaOT;
                TimeSpan tempSom, tempOLai;

                XL.Raa(timeraa, CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Off), CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Onn.Add(currShift.TS_PhutChoTre)), out td_kt_lv_chuaOT, out tempSom);
                XL.OLai(timeraa, CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Off), CIO.ThuocNgayCong.Add(currShift.TOD_Duty.Off.Subtract(currShift.TS_PhutChoSom)), out tempOLai);
                if (soPhutLamThem > tempOLai.TotalMinutes)
                {
                    soPhutLamThem = Convert.ToInt32(tempOLai.TotalMinutes);
                }
                XL.XacNhanCa(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                             bVaoTreLaCV, bRaaSomLaCV, currShift.TOD_NightTime);           //ver 4.0.0.4
            }
        }
예제 #15
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            DataGridView dataGrid = GetDataGrid(tabControl1);

            // chưa chọn dòng nào thì thoát, ko gán selectedShift
            if (dataGrid.SelectedRows.Count == 0)
            {
                MessageBox.Show(Resources.Text_ChuaLuaChonCa, Resources.Caption_ThongBao);
            }
            else
            {
                var     selectedRow = dataGrid.SelectedRows[0];
                dynamic d           = (selectedRow.DataBoundItem);
                SelectedShift = d.ca;
            }
            Close();
        }
 public void ValidateCIO(List <DataRow> List_CIO_Input, cCa ca, out List <DataRow> List_CIO_HaveError, out List <DataRow> List_CIO_HopLe)
 {
     List_CIO_HaveError = new List <DataRow>();
     List_CIO_HopLe     = new List <DataRow>();
     foreach (DataRow row in List_CIO_Input)
     {
         int kq = ValidateCIO(row, ca, m_CheckVaoTreTinhCV, m_CheckRaaSomTinhCV, m_ChoPhepVaoTre, m_ChoPhepRaaSom, m_SoPhutLamThem);
         if (kq < 0)
         {
             List_CIO_HaveError.Add(row);
         }
         else
         {
             List_CIO_HaveError.Add(row);
         }
     }
     return;
 }
        private void frm_ChamCongTay_Load(object sender, EventArgs e)
        {
            #region kiểm tra kết nối csdl, mất kết nối thì thoát

            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                ACMessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi, 2000);
                Close();
                return;
            }

            #endregion

            dtpBDLam.ValueChanged += dtp_ValueChanged;
            dtpKTLam.ValueChanged += dtp_ValueChanged;

            #region             //2. lấy dữ liệu phòng ban được phép thao tác  và load treePhongBan ,
            // trường hợp ko có phòng ban nào được phép thao tác thì báo và thoát form
            XL.KhoiTaoDSPhongBan(m_DSPhg, XL2.currUserID);
            if (m_DSPhg.Count == 0)
            {
                ACMessageBox.Show(Resources.Text_ChuaCapQuyenPhongBanThaoTac, Resources.Caption_ThongBao, 5000);
                Close();
                return;
            }
            XL.loadTreePhgBan(treePhongBan, XL2.TatcaPhongban, m_DSPhg);

            #endregion

            // đăng ký sự kiện cho tree và chọn topNode
            treePhongBan.AfterSelect += treePhongBan_AfterSelect;
            treePhongBan.SelectedNode = treePhongBan.TopNode;

            #region chọn mặc định ca hành chánh cho cấp quản lý

            cCa defaultShift = XL.DSCa.Find(item => item.Duty.Onn == XL2._07h30 && item.Duty.Off == XL2._16gio && Math.Abs(item.Workingday - 1f) < 0.01f);             //tbd
            tbCa.Tag       = defaultShift;
            tbCa.Text      = defaultShift.Code;
            dtpBDLam.Value = DateTime.Today.Date.Add(defaultShift.Duty.Onn);
            dtpKTLam.Value = DateTime.Today.Date.Add(defaultShift.Duty.Off);

            #endregion
        }
예제 #18
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            int[] selectedRowHandle = gridView1.GetSelectedRows();
            if (selectedRowHandle.Count() > 1)
            {
                MessageBox.Show("chọn quá nhiều row");
                return;
            }

            dynamic objectCa = gridView1.GetRow(selectedRowHandle[0]);

            if (objectCa == null || objectCa.ca == null)
            {
                return;
            }
            selectedCa    = objectCa.ca;
            m_YesNoCancel = YesNoCancel.Yes;
            Close();
        }
        private void btnChonCa_Properties_ButtonClick(object sender, ButtonPressedEventArgs e)
        {
            if (e.Button.Kind != ButtonPredefines.Search)
            {
                return;                                                       // không phải bấm button chọn ca thì thoát
            }

            /* thực hiện xử lý
             * 1. xác định ca được
             */
            fmDSCa formDSCa = new fmDSCa();

            formDSCa.ShowDialog();
            if (formDSCa.m_YesNoCancel == YesNoCancel.Yes)
            {
                cCa selectedCa = formDSCa.selectedCa;
                btnChonCa.Tag  = selectedCa;
                btnChonCa.Text = selectedCa.Code;
                m_DaChonCaKhac = true;
            }
        }
        internal void LayTatCaLichTrinhVaCa(ref List <cNhomCa> DSNhomCa)
        {
            //1. lập ds các ca đang enable trước, sau đó duyệt trong bảng phân bố để lọc các ca theo ID Lịch trình
            List <cCa> DSTatCaCa;

            LapDSTatCaCa_ChamCong(out DSTatCaCa);
            DataTable tableNhomCa           = SqlDataAccessHelper.ExecSPQuery(SPName6.Schedule_DocLichTrinhV6.ToString());
            DataTable tablePhanBoCaTheoNhom = SqlDataAccessHelper.ExecSPQuery(SPName6.ShiftSch_DocDSCaV6.ToString());

            DSNhomCa.Clear();
            //2. lập danh sách các lịch trình, sau đó mới duyệt bảng phân bố ca để đưa ds các ca vào
            foreach (DataRow dataRow in tableNhomCa.Rows)
            {
                cNhomCa nhomCa = new cNhomCa {
                    IDDescription = new ID_Description {
                        ID = (int)dataRow["SchID"], Description = dataRow["SchName"].ToString()
                    },
                    DSCa = new List <cCa>()
                };
                DSNhomCa.Add(nhomCa);
            }
            // 3. dựa vào bảng phân bố xác định danh sách các ca
            foreach (cNhomCa nhomCa in DSNhomCa)
            {
                // xác định các record của 1 lịch trình
                DataRow[] dataRows = tablePhanBoCaTheoNhom.Select("SchID=" + nhomCa.IDDescription.ID);
                // xác định ID của ca để add vào danh sách
                foreach (DataRow row in dataRows)
                {
                    int shiftID = (int)row["T1"];
                    cCa ca      = (from cCa item in DSTatCaCa where item.ID == shiftID select item).SingleOrDefault();
                    if (ca != null)
                    {
                        nhomCa.DSCa.Add(ca);
                    }
                }
            }
        }
 public static void KiemtraThuocCa(DateTime t_vao, DateTime t_raa, DateTime ngay, List <cCa> DSCa, out bool ThuocDSCa, out cCa Result)
 {
     ThuocDSCa = true;
     Result    = DSCa.FirstOrDefault(ca => t_vao >= ngay.Add(ca.NhanDienVao.From) && t_vao <= ngay.Add(ca.NhanDienVao.To) &&
                                     t_raa >= ngay.Add(ca.NhanDienRaa.From) && t_raa <= ngay.Add(ca.NhanDienRaa.To));
     if (Result == null)
     {
         ThuocDSCa = false;
     }
 }
예제 #22
0
        public static void ChuanBiDSLichTrinhVaCa()
        {
            XL.DSCaMoRong.Clear();
            XL.DSCa.Clear();

            //lấy danh sách tất cả các ca
            var        tableDSCa = DAO5.LayDSCa();
            List <cCa> tempList  = new List <cCa>();

            foreach (DataRow row in tableDSCa.Rows)
            {
                #region transfer dữ liệu từ row sang đối tượng
                var iShiftID   = (int)row["ShiftID"];
                var sShiftCode = row["ShiftCode"].ToString();

                TimeSpan tsOnDuty;
                TimeSpan.TryParse(row["Onduty"].ToString(), out tsOnDuty);
                TimeSpan tOffDuty;
                TimeSpan.TryParse(row["Offduty"].ToString(), out tOffDuty);
                var iDayCount = (int)row["DayCount"];
                tOffDuty = tOffDuty.Add(new TimeSpan(iDayCount, 0, 0, 0));
                TimeSpan timespanStartNightTime, timespanEndddNightTime;
                if (row["StartNT"] == DBNull.Value || TimeSpan.TryParse(row["StartNT"].ToString(), out timespanStartNightTime) == false)
                {
                    timespanStartNightTime = XL2._22h00;                                                                                                                                     //ver 4.0.0.4
                }
                if (row["EndNT"] == DBNull.Value || TimeSpan.TryParse(row["EndNT"].ToString(), out timespanEndddNightTime) == false)
                {
                    timespanEndddNightTime = XL2._06h00;                                                                                                                                 //ver 4.0.0.4
                }
                var tOnLunch  = XL2._0gio;
                var tOffLunch = XL2._0gio;
                if (row["OnLunch"] != DBNull.Value && row["OffLunch"] != DBNull.Value)
                {
                    TimeSpan.TryParse(row["OnLunch"].ToString(), out tOnLunch);
                    TimeSpan.TryParse(row["OffLunch"].ToString(), out tOffLunch);
                }
                var LunchMin = tOffLunch.Subtract(tOnLunch);

                var tempWorkingTime = int.Parse(row["WorkingTime"].ToString());
                var kyhieucc        = row["KyHieuCC"].ToString();
                var tachcadem       = (row["IsSplited"] != DBNull.Value) && (bool)row["IsSplited"];
                var idCaTruoc       = (row["ShiftID1"] != DBNull.Value) ? (int)row["ShiftID1"] : -1;
                var idCaSauuu       = (row["ShiftID2"] != DBNull.Value) ? (int)row["ShiftID2"] : -1;
                var isextend        = (row["IsExtended"] != DBNull.Value) && (bool)row["IsExtended"];
                var tempShift       = new cCa {
                    ID       = iShiftID,
                    Code     = sShiftCode,
                    TOD_Duty = new TS {
                        Onn = tsOnDuty, Off = tOffDuty
                    },
                    PhutOnnInn         = (int)row["OnTimeIn"],
                    PhutCutInn         = (int)row["CutIn"],
                    PhutOnnOut         = (int)row["OnTimeOut"],
                    PhutCutOut         = (int)row["CutOut"],
                    PhutToiThieuTinhOT = (int)row["AfterOT"],
                    PhutChoTre         = (int)row["LateGrace"],
                    PhutChoSom         = (int)row["EarlyGrace"],
                    //LateeMin = tLateGrace,
                    //EarlyMin = tEarlyGrace,
                    Workingday    = (Single)row["Workingday"],
                    WorkingTimeTS = new TimeSpan(0, tempWorkingTime, 0),
                    PhutNghiTrua  = Convert.ToInt32(LunchMin.TotalMinutes),
                    TachCaDem     = tachcadem,
                    idCaTruoc     = idCaTruoc,
                    idCaSauuu     = idCaSauuu,
                    KyHieuCC      = kyhieucc,
                    MoTa          = row["Description"].ToString(),
                    IsExtended    = isextend,
                    TOD_NightTime = new TS {
                        Onn = timespanStartNightTime, Off = timespanEndddNightTime
                    }
                };
                //tempShift.TOD_NhanDienVao = new TS { Onn = tempShift.ThoiDiemOnnInn(), Off = tod_CutIn },
                //tempShift.TOD_NhanDienRaa = new TS { Onn = tod_OnTimeOut, Off = tod_CutOut },
                #endregion

                tempList.Add(tempShift);
            }
            // ra khỏi vòng lặp,ca 3&1, ca 3&1A chưa cập nhật ca trước, ca sau--> cập nhật
            #region update lại ca tách qua đêm trong ds ca
            foreach (cCa ca in tempList.Where(item => item.TachCaDem))
            {
                var catruoc = tempList.Find(item => item.ID == ca.idCaTruoc);
                var casauuu = tempList.Find(item => item.ID == ca.idCaSauuu);
                ca.catruoc = catruoc;
                ca.casauuu = casauuu;
            }
            #endregion

            // có được toàn bộ ds ca --> gán cho DSCa toàn cục, DSCaMR toàn cục
            XL.DSCa       = tempList;
            XL.DSCaMoRong = tempList.Where(item => item.IsExtended).ToList();
            //DSCaMoRong chỉ bao gồm các ca ghép Ca1&2A, Ca1B&2, mỗi ca có caTrước caSau

            // gán lịch trình
            XL.DSLichTrinh.Clear();
            // lấy danh sách lịch trình, mỗi dòng là 1 ca thuộc lịch trình => để duyệt từng lịch trình thì phải lấy dicstint
            var tableLichTrinh   = DAO5.LayDSLichTrinh();
            var arrRows_Distinct = (from DataRow row in tableLichTrinh.Rows
                                    select new { SchID = (int)(row["SchID"]), SchName = row["SchName"].ToString() })
                                   .Distinct();
            foreach (var row in arrRows_Distinct)
            {
                var arrRows1  = tableLichTrinh.Select("SchID=" + row.SchID, "");
                var lichtrinh = new cShiftSchedule {
                    SchID        = row.SchID,
                    TenLichTrinh = row.SchName,
                    DSCaThu      = new List <List <cCa> >(7),
                    DSCaMRThu    = new List <List <cCa> >(7),
                };
                // mỗi lịch trình chứa 7T, mỗi T là 1 danh sách ca
                for (int i = 0; i < 7; i++)
                {
                    lichtrinh.DSCaThu.Add(new List <cCa>());
                    lichtrinh.DSCaMRThu.Add(new List <cCa>());
                }
                foreach (var row1 in arrRows1)
                {
                    for (int i = 0; i < 7; i++)
                    {
                        if (row1["T" + (i + 1)] == DBNull.Value)
                        {
                            continue;
                        }
                        var shiftid = (int)row1["T" + (i + 1)];
                        var ca      = XL.DSCa.Find(o => o.ID == shiftid);
                        if (ca != null)
                        {
                            lichtrinh.DSCaThu[i].Add(ca);
                        }
                    }
                }
                for (int i = 0; i < 7; i++)
                {
                    List <cCa> dscathu = lichtrinh.DSCaThu[i];
                    foreach (var ca in from ca in XL.DSCaMoRong
                             let catruoc = ca.catruoc
                                           let casauuu = ca.casauuu
                                                         where dscathu.Exists(item => item.ID == catruoc.ID) &&
                                                         dscathu.Exists(item => item.ID == casauuu.ID)
                                                         select ca)
                    {
                        lichtrinh.DSCaMRThu[i].Add(ca);
                    }
                }
                //var ca3 = lichtrinh.DSCaThu[0].FirstOrDefault(o => o.QuaDem && Math.Abs(o.Workingday - 1f) < 0.01f);//ver 4.0.0.4 //xác định ca 3 có giờ qua đêm 21h45 hay 22 giờ để gán
                //if (ca3 == null) lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;//ver 4.0.0.4
                //else if (ca3.StartNT == XL2._21h45) lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._21h45;//ver 4.0.0.4
                //else lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;//ver 4.0.0.4
                XL.DSLichTrinh.Add(lichtrinh);
            }


            if (XL.DSLichTrinh.Count == 0)
            {
                throw new NullReferenceException("Không có ds lịch trình");
            }
        }
예제 #23
0
 public static void XacNhan_CIO_A(cUserInfo nv, cCheckInOut CIO, cCa currShift, bool bDuyetCPTre, bool bDuyetCPSom, int soPhutLamThem, bool choPhepTinhPc50, string lydo, string ghichu,
                                  bool bVaoTreLaCV, bool bRaaSomLaCV, TS NightTime)//ver 4.0.0.4
 {
 }
예제 #24
0
        public static void XacNhan_CIO_A(int MaCC, DateTime timevao, DateTime timeraa, cCa currShift, bool bDuyetCPTre, bool bDuyetCPSom, int soPhutLamThem, bool choPhepTinhPc50, string lydo, string ghichu,
                                         bool bVaoTreLaCV, bool bRaaSomLaCV)//ver 4.0.0.4
        {
            if (timeraa - timevao <= TimeSpan.Zero || timeraa - timevao > XL2._24h00)
            {
                return;                 // ko đủ điều kiện xác nhận
            }
            int outputIDXN;

            // 2. xác nhận ca dưới csdl
            DAO5.XacNhanCa(MaCC, timevao, 21, "PC", timeraa, 22, "PC",
                           currShift.ID, currShift.Code, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, lydo, ghichu, out outputIDXN,
                           bVaoTreLaCV, bRaaSomLaCV);     //ver 4.0.0.4
            DAO5.CheckTinhPC50(MaCC, timevao.Date, choPhepTinhPc50);
        }
        private void linkTinhLaiCong_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            DateTime td_batdau_lv, td_ketthuc_lv_chuaOT, td_ketthuc_lv_daCoOT, TD_BD_LV_Ca3, TD_KT_LV_Ca3;
            TimeSpan tre, som, treKoTruVR, somKoTruVR, tongGiothuc = TimeSpan.Zero, TGGioLamViec = TimeSpan.Zero, TGLamBanDem, tgTinhPC30, tgTinhPC50, tgTinhPCTCC3;
            float    Cong = 0f, PhuCap30, PhuCapTC, PhuCapTCC3, TongPhuCap = 0f;
            bool     QuaDem;
            var      ngay       = DateTime.Today;
            TimeSpan timespanBD = dtpBDLam.Value.TimeOfDay;
            TimeSpan timeSpanKT = dtpKTLam.Value.TimeOfDay;
            var      timeBD     = ngay.Add(timespanBD);
            var      timeKT     = ngay.Add(timeSpanKT);

            if (timespanBD > timeSpanKT)
            {
                timeKT = timeKT.AddDays(1d);
            }

            cCa ca = tbCa.Tag as cCa;

            if (ca == null)
            {
                goto point;
            }

/*
 *                      if (ca.ID < 0 )
 *                      {
 *                              ca.Duty = new TS {Onn = timespanBD, Off = timeSpanKT};
 *                              XL.TaoCaTuDo(ca, timeBD, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8", false);//fix lỗi
 *                      }
 */
            if (ca.ID < int.MinValue + 100)
            {
                //ca.Duty = new TS {Onn = timespanBD, Off = timeSpanKT};
                //XL.TaoCaTuDo(ca, timeBD, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8", false);//fix lỗi
                XL.TaoCaTuDo(ca, timeBD);
            }
            else if (timeBD > ngay.Add(ca.Duty.Off) || timeKT < ngay.Add(ca.Duty.Onn))
            {
                goto point;
            }
            //var sophutOT = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0;
            TimeSpan OTCa = TimeSpan.Zero;            //ver 4.0.0.4

            if (checkXNLamThem.Checked)
            {
                TimeSpan.TryParseExact(maskPhutTinhLamThem.Text, @"hh\:mm", CultureInfo.InvariantCulture, out OTCa);
            }
            var sophutOT = Convert.ToInt32(OTCa.TotalMinutes);            //ver 4.0.0.4

            var tinhPCTC = (checkTinhPC150.Checked);

            tongGiothuc = timeKT - timeBD;
            TimeSpan TGGioLamViecTrongCa;

            XL.Vao(timeBD, ngay.Add(ca.Duty.Onn), ngay.Add(ca.chophepTreTS), true, true, out td_batdau_lv, out tre, out treKoTruVR);            //todo 4.0.0.8
            XL.Raa(timeKT, ngay.Add(ca.Duty.Off), ngay.Add(ca.chophepSomTS), false, false, out td_ketthuc_lv_chuaOT, out som, out somKoTruVR);  //todo 4.0.0.8
            XL.LamThem(td_ketthuc_lv_chuaOT, new TimeSpan(0, sophutOT, 0), out td_ketthuc_lv_daCoOT);
            if (timeKT < td_ketthuc_lv_daCoOT)
            {
                timeKT         = ngay.Add(ca.Duty.Off).Add(new TimeSpan(0, sophutOT, 0));
                dtpKTLam.Value = timeKT;
            }
            XL.Tinh_TGLamViecTrongCa(td_batdau_lv, td_ketthuc_lv_chuaOT, ca.LunchMin, out TGGioLamViecTrongCa);
            TGGioLamViec = TGGioLamViecTrongCa + OTCa;                //ver 4.0.0.4
            XL.Tinh_TGLamViec_Ca3(td_batdau_lv, td_ketthuc_lv_daCoOT, ngay.Add(XL2._22h00), ngay.AddDays(1d).Add(XL2._06h00), out TD_BD_LV_Ca3, out TD_KT_LV_Ca3, out TGLamBanDem, out QuaDem);
            TimeSpan TGLamThem     = XL.Tinh_TGLamThem(TGGioLamViec); //(TGGioLamViec - XL2._08gio) >= XL2._01phut ? (TGGioLamViec - XL2._08gio) : TimeSpan.Zero;
            float    cong_trong_ca = Convert.ToSingle(Math.Round(((TGGioLamViecTrongCa.TotalHours / ca.WorkingTimeTS.TotalHours) * ca.Workingday), 2));
            float    cong_ngoai_ca = Convert.ToSingle(Math.Round((OTCa.TotalHours / 8f), 2));

            Cong = cong_trong_ca + cong_ngoai_ca;

            XL.Tinh_PCTC(tinhPCTC, QuaDem, TGLamBanDem, TGLamThem, out tgTinhPC30, out tgTinhPC50, out tgTinhPCTCC3, out PhuCap30, out PhuCapTC, out PhuCapTCC3, out TongPhuCap);

point:
            tbTongGio.Text = tongGiothuc.ToString(@"hh\gmm\p");
            tbGioLam.Text  = TGGioLamViec.ToString(@"hh\gmm\p");
            tbCong.Text    = (Math.Round(Cong, 2)).ToString();
            tbPC.Text      = (TongPhuCap.ToString("0.0#"));
        }
예제 #26
0
        private void frmDSCa_Load(object sender, EventArgs e)
        {
            #region gán datasource cho các datagrid

            dgrd4h.AutoGenerateColumns = dgrd8h.AutoGenerateColumns = dgrd16h.AutoGenerateColumns = dgrdCaTuDo.AutoGenerateColumns = false;
            var dsca4h = (from ca in XL.DSCa
                          where Math.Abs(ca.Workingday - 0.5f) < 0.01f
                          select new { ca = ca, ID = ca.ID, Code = ca.Code, VaoCa = ca.TOD_Duty.Onn, RaaCa = ca.TOD_Duty.Off, QuaDem = ca.QuaDem, MoTa = ca.MoTa }).ToList();
            //select ca).ToList();
            var dsca8h = (from ca in XL.DSCa
                          where Math.Abs(ca.Workingday - 1f) < 0.01f
                          select new { ca = ca, ID = ca.ID, Code = ca.Code, VaoCa = ca.TOD_Duty.Onn, RaaCa = ca.TOD_Duty.Off, QuaDem = ca.QuaDem, MoTa = ca.MoTa }).ToList();
            //select ca).ToList();
            var dsca12h = (from ca in XL.DSCa
                           where Math.Abs(ca.Workingday - 1.5f) < 0.01f
                           select new { ca = ca, ID = ca.ID, Code = ca.Code, VaoCa = ca.TOD_Duty.Onn, RaaCa = ca.TOD_Duty.Off, QuaDem = ca.QuaDem, MoTa = ca.MoTa }).ToList();
            //select ca).ToList();
            var dsca16h = (from ca in XL.DSCa
                           where Math.Abs(ca.Workingday - 2f) < 0.01f
                           select new { ca = ca, ID = ca.ID, Code = ca.Code, VaoCa = ca.TOD_Duty.Onn, RaaCa = ca.TOD_Duty.Off, QuaDem = ca.QuaDem, MoTa = ca.MoTa }).ToList();
            //select ca).ToList();
            var dsCaTuDo = new List <dynamic>();
            cCa ca8h     = new cCa {
                ID = int.MinValue + 0, Code = Properties.Settings.Default.shiftCodeCa8h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 8)
            };
            cCa ca12h = new cCa {
                ID = int.MinValue + 1, Code = Properties.Settings.Default.shiftCodeCa12h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 12)
            };
            cCa ca4h = new cCa {
                ID = int.MinValue + 2, Code = Properties.Settings.Default.shiftCodeCa4h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 4)
            };                                                                                                                                                               //ver 4.0.0.4
            cCa ca16h = new cCa {
                ID = int.MinValue + 3, Code = Properties.Settings.Default.shiftCodeCa16h, MoTa = string.Format(Settings.Default.MoTaCaTuDo, 16)
            };                                                                                                                                                                  //ver 4.0.0.4

            /*
             *                      XL.TaoCaTuDo(ca8h, DateTime.MinValue, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, MySetting.Default.kyHieuCCCa8h);
             *                      XL.TaoCaTuDo(ca12h, DateTime.MinValue, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, MySetting.Default.kyHieuCCCa12h);
             *                      XL.TaoCaTuDo(ca4h, DateTime.MinValue, XL2._04gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, MySetting.Default.kyHieuCCCa4h);//ver 4.0.0.4
             *                      XL.TaoCaTuDo(ca16h, DateTime.MinValue, XL2._16gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, MySetting.Default.kyHieuCCCa16h);//ver 4.0.0.4
             *                      dsCaTuDo.Add(new { ca = ca8h, ID = ca8h.ID, Code = ca8h.Code, VaoCa = DBNull.Value, RaaCa = DBNull.Value, QuaDem = false, MoTa = string.Format(Settings.Default.MoTaCaCoSo, 8) });
             *                      dsCaTuDo.Add(new { ca = ca12h, ID = ca12h.ID, Code = ca12h.Code, VaoCa = DBNull.Value, RaaCa = DBNull.Value, QuaDem = false, MoTa = string.Format(Settings.Default.MoTaCaCoSo, 12) });
             *                      dsCaTuDo.Add(new { ca = ca4h, ID = ca4h.ID, Code = ca4h.Code, VaoCa = DBNull.Value, RaaCa = DBNull.Value, QuaDem = false, MoTa = string.Format(Settings.Default.MoTaCaCoSo, 4) });//ver 4.0.0.4
             *                      dsCaTuDo.Add(new { ca = ca16h, ID = ca16h.ID, Code = ca16h.Code, VaoCa = DBNull.Value, RaaCa = DBNull.Value, QuaDem = false, MoTa = string.Format(Settings.Default.MoTaCaCoSo, 16) });//ver 4.0.0.4
             */
            dynamic dCa8h  = new { ca = ca8h, ID = ca8h.ID, Code = ca8h.Code, MoTa = ca8h.MoTa };
            dynamic dCa12h = new { ca = ca12h, ID = ca12h.ID, Code = ca12h.Code, MoTa = ca12h.MoTa };
            dynamic dCa4h  = new { ca = ca4h, ID = ca4h.ID, Code = ca4h.Code, MoTa = ca4h.MoTa };
            dynamic dCa16h = new { ca = ca16h, ID = ca16h.ID, Code = ca16h.Code, MoTa = ca16h.MoTa };
            dsCaTuDo.Add(dCa8h);
            dsCaTuDo.Add(dCa12h);
            dsCaTuDo.Add(dCa4h);
            dsCaTuDo.Add(dCa16h);

            dgrd4h.DataSource     = dsca4h;
            dgrd8h.DataSource     = dsca8h;
            dgrd16h.DataSource    = dsca16h;
            dgrdCaTuDo.DataSource = dsCaTuDo;

            #endregion

            //set mặc định ca được chọn là ca từ form gọi truyền qua
            if (SelectedShift == null)            // chế độ hàng loạt, các ca gồm nhiều loại khác nhau
            {
                // mặc định chọn tab 8h
                tabControl1.SelectTab(tab8h);
                tabControl1.Update();
            }
            else if (SelectedShift.ID < int.MinValue + 100)            // ca tự do
            {
                tabControl1.SelectTab(tabCaTuDo);
                tabControl1.Update();
                dgrdCaTuDo.Rows[0].Selected = true;
                dgrdCaTuDo.Update();
            }
            else            // ca chuẩn
            {
                // 1. xác định ca chuẩn thuộc grid nào thì chọn mặc định grid đó,
                // 2. tìm trong grid có ca đang chọn ko? nếu có thì mặc định chọn dòng đó,tab đó; ko thì chọn mặc định tab đầu tiên,
                //set selected tab
                tabControl1.SelectedTab = GetTabPage(SelectedShift.Workingday);
                tabControl1.Update();

                DataGridView dataGrid = GetDataGrid(SelectedShift.Workingday);
                var          currRow  = (from DataGridViewRow dataGridViewRow in dataGrid.Rows
                                         let rowView = dataGridViewRow.DataBoundItem as dynamic
                                                       where rowView.ID == SelectedShift.ID
                                                       select dataGridViewRow).Single();

                // set selected row
                dataGrid.Rows[currRow.Index].Selected    = true;
                dataGrid.FirstDisplayedScrollingRowIndex = currRow.Index;
                dataGrid.Refresh();
                dataGrid.Update();
            }
        }
 private void XuLyDon(DataRowView dataRow, cCa currShift, bool bDuyetCPTre, bool bDuyetCPSom, int soPhutLamThem, bool choPhepTinhPc50, string lydo, string ghichu,
                      bool bVaoTreLaCV, bool bRaaSomLaCV)//ver 4.0.0.4
 {
 }