Example #1
0
        private void btnXacNhan_Click(object sender, EventArgs e)
        {
            #region lấy dữ liệu từ form

            DataGridView    tmpDatagrid         = dgrdGioCoLamThem;
            DataGridViewRow tmpSelectedRow      = tmpDatagrid.SelectedRows[0];
            DataRowView     rowView             = tmpSelectedRow.DataBoundItem as DataRowView;
            int             tmpUserEnrollNumber = (int)rowView["UserEnrollNumber"];
            DateTime        tmpOldChkInTime     = (DateTime)rowView["TimeStrVao"];
            DateTime        tmpOldChkOutTime    = (DateTime)rowView["TimeStrRa"];
            cUserInfo       tmpNV          = fListNVChk.Find(item => item.UserEnrollNumber == tmpUserEnrollNumber);
            cChkInOut       tmpOldChkINOUT = tmpNV.DSVaoRa.Find(item => (item.HaveINOUT > 0) && item.Vao.TimeStr == tmpOldChkInTime && item.Raa.TimeStr == tmpOldChkOutTime);
            cShift          tmpOldShift    = tmpOldChkINOUT.ThuocCa;

            if (lbCheckINOUT.Tag == null)
            {
                AutoClosingMessageBox.Show("lbCheckINOUT.Tag == null", "Error", 1000); return;
            }
            cShift    tmpNewShift    = (cShift)cbChonCa.SelectedItem;
            cChkInOut tmpNewChkINOUT = (cChkInOut)lbCheckINOUT.Tag;
            // lúc tính công chưa có gán THUOCCA lại nên ở đây phải gán lại
            tmpNewChkINOUT.ThuocCa = tmpNewShift;

            int      tmpNewShiftID       = tmpNewShift.ShiftID; // shiftID của DSCa mở rộng
            int      tmpTre              = int.Parse(lbTre.Tag.ToString());
            TimeSpan tmpTreTS            = new TimeSpan(0, tmpTre, 0);
            int      tmpSom              = int.Parse(lbSom.Tag.ToString());
            TimeSpan tmpSomTS            = new TimeSpan(0, tmpSom, 0);
            int      tmpSoPhutTreSom     = int.Parse(tbTreSom.Tag.ToString()); // > 0 nếu (chấm tay < 8h => ra sớm), đúng ca nhưng có vào trễ ra sớm
            TimeSpan tmpSoPhutTreSomTS   = new TimeSpan(0, tmpSoPhutTreSom, 0);
            int      tmpSoPhutOLaiThem   = int.Parse(tbOLaiThem.Tag.ToString());
            TimeSpan tmpSoPhutOLaiThemTS = new TimeSpan(0, tmpSoPhutOLaiThem, 0);
            bool     tmpIsOT             = checkXacNhanLamThem.Checked;
            int      tmpSoPhutLamThem    = (tmpIsOT) ? (int)numPhutTinhLamThem.Value : 0;
            TimeSpan tmpSoPhutLamThemTS  = new TimeSpan(0, tmpSoPhutLamThem, 0);
            #endregion

            bool pTinhPC150 = checkTinhPC150.Checked;
            if (tmpNewShift.OnnDutyTS > ThamSo._20h00 && tmpNewShift.Workingday > 1f)
            {
                cChkInOut[] arrCIO = XL.TachGio2Ca3Va1(tmpNV.DSCa, tmpNewChkINOUT, tmpNewChkINOUT.ThuocCa);
                XL.TinhCongTheoCa(arrCIO[0], arrCIO[0].ThuocCa);
                XL.TinhCongTheoCa(arrCIO[1], arrCIO[1].ThuocCa);

                XL.BUS_TachCaVaXacNhan(tmpNV, tmpOldChkINOUT, arrCIO, tmpIsOT, tmpSoPhutLamThem, tmpSoPhutLamThemTS, pTinhPC150);
                XL.XemCong(new List <cUserInfo>()
                {
                    tmpNV
                }, fNgayBD, fNgayKT);
            }
            else
            {
                XL.BUS_XacNhan(tmpNV, tmpOldChkINOUT, tmpNewChkINOUT, tmpIsOT, tmpSoPhutLamThem, tmpSoPhutLamThemTS, pTinhPC150);
                XL.XemCong(new List <cUserInfo>()
                {
                    tmpNV
                }, fNgayBD, fNgayKT);
            }
            LoadDataGrid();
        }