Beispiel #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();
        }
        private void btnXacNhan_Click(object sender, EventArgs e)
        {
            #region lấy dữ liệu từ form

            currRowIndex = dgrdGioCoLamThem.SelectedRows[0].Index;
            numPhutTinhLamThem.Update();
            int tmpSoPhutLamThem  = (checkXacNhanLamThem.Checked) ? Convert.ToInt32(numPhutTinhLamThem.Value) : 0;
            int iUserEnrollNumber = currNV.UserEnrollNumber;

            cShift tmpNewShift = cbChonCa.SelectedItem as cShift;
            if (tmpNewShift == null)
            {
                return;
            }
            // lúc tính công chưa có gán THUOCCA lại nên ở đây phải gán lại

            #endregion

            bool pTinhPC150 = checkTinhPC150.Checked;
            if (tmpNewShift.OnnDutyTS > ThamSo._20h00 && tmpNewShift.Workingday > 1f)
            {
                cChkInOut[] arrCIO = XL.TachGio2Ca3Va1(currNV.DSCa, tmpCurrChkINOUT, tmpNewShift);
                DAL.ThemGioChoNV(iUserEnrollNumber, arrCIO[0].Raa.TimeStr, false, arrCIO[0].Raa.MachineNo, ThamSo.currUserID, "", "tách giờ ca 3&1, ca 3&1A");
                DAL.ThemGioChoNV(iUserEnrollNumber, arrCIO[1].Vao.TimeStr, true, arrCIO[1].Vao.MachineNo, ThamSo.currUserID, "", "tách giờ ca 3&1, ca 3&1A");
                XL.BUS_XacNhan(iUserEnrollNumber, arrCIO[0].ThuocCa, pTinhPC150, 0, arrCIO[0]);                // vì ca 3 ko có làm thêm nên 0
                XL.BUS_XacNhan(iUserEnrollNumber, arrCIO[1].ThuocCa, pTinhPC150, tmpSoPhutLamThem, arrCIO[1]); // vì ca 1 mới có làm thêm

                XL.XemCong(currNV, m_DSNV, fNgayBD, fNgayKT);
            }
            else
            {
                XL.BUS_XacNhan(iUserEnrollNumber, tmpNewShift, pTinhPC150, tmpSoPhutLamThem, tmpCurrChkINOUT);
                XL.XemCong(currNV, m_DSNV, fNgayBD, fNgayKT);
            }
            LoadDataGrid();
        }