private void AttStaffByShift(string EMP_ID, string SHI_ID, DateTime d1, SqlConnection con, string DEP_ID, string EMP_I1, Func.RecordSet rsca) { double MIN = T_String.IsNullTo0(T_String.GetDataFromSQL("MIN_HR", "FILC02A", "SHI_ID=N'" + SHI_ID + "'", con)); string sql = "Select CRD_TM,DAT_TM from FILC01A where EMP_ID=N'" + EMP_ID + "' and CRD_DT='" + d1.ToString("yyyy/MM/dd") + "' and (YSD_BT is null or YSD_BT=0)" + " and CRD_TM>" + MIN + " ORDER BY CRD_TM "; Func.RecordSet rsdata = new Func.RecordSet(sql, con); if (rsca.rows <= 0) { return; } ArrayList Ca = new ArrayList(); ArrayList ATT = new ArrayList(); double maxca = 0; int cadem = 0; for (int i = 0; i < rsca.rows; i++) { Ca.Add(rsca.record(i, "ONN_TM")); Ca.Add(rsca.record(i, "OFF_TM")); double c1 = IsN(rsca.record(i, "ONN_TM")); double c2 = IsN(rsca.record(i, "ONN_TM")); if (cadem == 0 && (rsca.record(i, "TYP_ID") == "ATT_HR" || rsca.record(i, "TYP_ID") == "NIG_HR")) { if (c1 > maxca) { maxca = c1; } else { cadem = 1; } if (c2 > maxca) { maxca = c2; } else { cadem = 1; } } } Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); int dem = 0; // vi tri quet int tg = 0; int count = 0; //so lan quet the int tcqd = 0; double NIG_TM = 0; double OVOT = T_String.IsNullTo0(T_String.GetDataFromSQL("MAX_HR", "FILC02A", "SHI_ID=N'" + SHI_ID + "'", con)); Boolean bif = false; Boolean add12 = false; Boolean add13 = false; int addtg = 0; while (dem < Ca.Count || tg < rsdata.rows) { if (tg >= rsdata.rows) { break; } if (dem >= Ca.Count) { break; } int t1 = IsN(rsdata.record(tg, "CRD_TM")); string DAT_TM = rsdata.record(tg, "DAT_TM"); int t2 = IsN(rsdata.record(tg + 1, "CRD_TM")); int c1 = IsN(Ca[dem] + ""); int c2; if (OVOT != 0 && tcqd > 0 && OVOT < t1) { break; } if (dem + 1 < Ca.Count) { c2 = IsN(Ca[dem + 1] + ""); } else { c2 = IsN(Ca[dem] + ""); } //=========Thu them gio quet the tu dong luc an com khi xet option [MEAL_ON]=1, QuangViet TG if (tg > 0 && PublicFunction.CUS_ID == "51") //&& !bif) { Boolean is12 = true; int itg; //truong hop them 1300 if (IsN(rsdata.record(tg, "CRD_TM")) <= 1230 && IsN(rsdata.record(tg, "CRD_TM")) >= 1200) { for (int i1 = 0; i1 < rsdata.rows; i1++) { itg = IsN(rsdata.record(i1, "CRD_TM")); if (itg > 1230 && itg < 1305) { is12 = false; } if (itg != IsN(rsdata.record(tg, "CRD_TM")) && itg >= 1200 && itg <= 1230) { is12 = false; } } bif = IsN(rsdata.record(0, "CRD_TM")) < 1200 && IsN(rsdata.record(rsdata.rows - 1, "CRD_TM")) > 1300; bif = bif & is12; if (bif) { itg = IsN(rsdata.record(0, "CRD_TM").Substring(rsdata.record(0, "CRD_TM").Length - 1, 1)); add13 = true; if (itg == 0) { addtg = 1300; } else { addtg = 1200 + 60 - itg; } //ATT.Add(1200+60-itg); } } //truong hop them 1200 // if(!bif) // { if (IsN(rsdata.record(tg, "CRD_TM")) > 1230 && IsN(rsdata.record(tg, "CRD_TM")) <= 1305) { is12 = true; for (int i1 = 0; i1 < rsdata.rows; i1++) { itg = IsN(rsdata.record(i1, "CRD_TM")); if (itg >= 1200 && itg < 1230) { is12 = false; } if (itg != IsN(rsdata.record(tg, "CRD_TM")) && itg > 1230 && itg <= 1305) { is12 = false; } } bif = IsN(rsdata.record(0, "CRD_TM")) < 1200 && IsN(rsdata.record(rsdata.rows - 1, "CRD_TM")) > 1300; bif = bif & is12; if (bif) { itg = IsN(rsdata.record(0, "CRD_TM").Substring(rsdata.record(0, "CRD_TM").Length - 1, 1)); add12 = true; addtg = 1200 + itg; //ATT.Add(1200+itg); } } //truong hop them 1800 if (IsN(rsdata.record(tg, "CRD_TM")) <= 1745 && IsN(rsdata.record(tg, "CRD_TM")) >= 1730) { is12 = true; for (int i1 = 0; i1 < rsdata.rows; i1++) { itg = IsN(rsdata.record(i1, "CRD_TM")); if (itg > 1745 && itg < 1805) { is12 = false; } if (itg != IsN(rsdata.record(tg, "CRD_TM")) && itg >= 1730 && itg <= 1745) { is12 = false; } } bif = IsN(rsdata.record(0, "CRD_TM")) <= 1630 && IsN(rsdata.record(rsdata.rows - 1, "CRD_TM")) >= 1805; bif = bif & is12; if (bif) { itg = IsN(rsdata.record(0, "CRD_TM").Substring(rsdata.record(0, "CRD_TM").Length - 1, 1)); add13 = true; if (itg == 0) { addtg = 1800; } else { addtg = 1700 + 60 - itg; } //ATT.Add(1200+60-itg); } } //truong hop them 1730 if (IsN(rsdata.record(tg, "CRD_TM")) > 1745 && IsN(rsdata.record(tg, "CRD_TM")) <= 1805) { is12 = true; for (int i1 = 0; i1 < rsdata.rows; i1++) { itg = IsN(rsdata.record(i1, "CRD_TM")); if (itg >= 1700 && itg < 1745) { is12 = false; } if (itg != IsN(rsdata.record(tg, "CRD_TM")) && itg > 1745 && itg <= 1805) { is12 = false; } } bif = IsN(rsdata.record(0, "CRD_TM")) <= 1630 && IsN(rsdata.record(rsdata.rows - 1, "CRD_TM")) >= 1805; bif = bif & is12; if (bif) { itg = IsN(rsdata.record(0, "CRD_TM").Substring(rsdata.record(0, "CRD_TM").Length - 1, 1)); add12 = true; addtg = 1730 + itg; //ATT.Add(1200+itg); } } } //END MEAL_ON if (t1 == c1 || (dem + 1) == Ca.Count || c1 == 0) // dung thoi gian { //if(rsdata.rows<=tg+1 && (dem%2)==0 && (count%2)==1 && count!=0 && ( t2>c1 || t2==0) ) //trungthu // if( (ATT.Count%2)!=(count%2)) // { // ATT.Add(0); // dem++; // } if (add12) { ATT.Add(addtg); add12 = false; } ATT.Add(t1); if (add13) { ATT.Add(addtg); add13 = false; } NIG_TM = TangQuaDem(EMP_ID, DAT_TM, tcqd, con, t1, NIG_TM, ATT); count++; dem++; tg++; } else { if (t1 < c1) // < kiem tra thoi gian crd ke tiep [di som] { //trungthu // if( (ATT.Count%2)!=(count%2)) // { // ATT.Add(0); // dem++; // } //end if (add12) { ATT.Add(addtg); add12 = false; } ATT.Add(t1); //them gio com tu dong if (add13) { ATT.Add(addtg); add13 = false; } NIG_TM = TangQuaDem(EMP_ID, DAT_TM, tcqd, con, t1, NIG_TM, ATT); count++; dem++; tg++; } else { if (Math.Abs(t1 - c1) < Math.Abs(t1 - c2)) // dung thoi gian { if (rsdata.rows <= tg + 1) // lan quet the cuoi trong ngay { //trungthu // if( (ATT.Count%2)!=(count%2)) // { // ATT.Add(0); // dem++; // } if (add12) { ATT.Add(addtg); add12 = false; } ATT.Add(t1); if (add13) { ATT.Add(addtg); add13 = false; } NIG_TM = TangQuaDem(EMP_ID, DAT_TM, tcqd, con, t1, NIG_TM, ATT); count++; dem++; tg++; } else { //trungthu // if( (ATT.Count%2)!=(count%2)) // { // ATT.Add(0); // dem++; // } if (add12) { ATT.Add(addtg); add12 = false; } ATT.Add(t1); if (add13) { ATT.Add(addtg); add13 = false; } NIG_TM = TangQuaDem(EMP_ID, DAT_TM, tcqd, con, t1, NIG_TM, ATT); count++; dem++; tg++; } } else // kiem tra tg ca ke tiep { if (dem < rsca.rows) { int k = ((int)(dem / 2)); string h = "ONN_BT"; if (dem % 2 != 0) { h = "OFF_BT"; } //trungthu // if(rsca.record(k,h)=="True") // ATT.Add(0); } dem++; } } } if (rsdata.rows <= tg && tcqd == 0) // tinh qua dem { if ((count % 2) == 1 || cadem == 1) // qua dem { int d = 0, dd = dem; while (d < Ca.Count) { int m1 = IsN(Ca[d] + ""); int m2; if (d + 1 < Ca.Count) { m2 = IsN(Ca[d + 1] + ""); } else { m2 = IsN(Ca[d] + ""); } if (m2 != 0 && m2 < m1) { d++; dd = d; break; } d++; } if (d == dd && d != Ca.Count) { sql = "Select CRD_TM,DAT_TM from FILC01A where EMP_ID=N'" + EMP_ID + "' and CRD_DT='" + d1.AddDays(1).ToString("yyyy/MM/dd") + "' ORDER BY CRD_TM"; rsdata = new Func.RecordSet(sql, con); if (rsdata.rows <= 0) { break; } while (dem < dd) { if (dem < rsca.rows) { int k = ((int)(dem / 2)); string h = "ONN_BT"; if (dem % 2 != 0) { h = "OFF_BT"; } //trungthu // if(rsca.record(k,h)=="True") // ATT.Add(0); } dem++; } tg = 0; tcqd = 1; } } } } string values = "", Insert = ""; Insert = "Insert Into [" + table + "](EMP_ID,ATT_DT,DEP_ID,EMP_I1,SHI_ID,NIG_TM," + "ONN_01,OFF_01,ONN_02,OFF_02,ONN_03,OFF_03,ONN_04,OFF_04,ONN_05,OFF_05," + "ONN_06,OFF_06,OFF_07,ONN_07,OFF_08,ONN_08,ONN_09,OFF_09,ONN_10,OFF_10" + ") Values"; values = "N'" + EMP_ID + "'," + "'" + d1.ToString("yyyy/MM/dd") + "',N'" + DEP_ID + "',N'" + EMP_I1 + "'," + "N'" + SHI_ID + "','" + NIG_TM + "'"; for (int i = 1; i <= 10; i++) { if ((i * 2) - 2 >= ATT.Count) { values += ",0"; } else { values += "," + ATT[(i * 2) - 2]; } if ((i * 2) - 1 >= ATT.Count) { values += ",0"; } else { values += "," + ATT[(i * 2) - 1]; } } sql = Insert + "(" + values + ")"; // SqlConnection conat=new SqlConnection(PublicFunction.C_con.ConnectionString); // conat.Open(); try { PublicFunction.SQL_Execute(sql, con); } catch (SqlException ex) { err.Text += ex.Message; } // sql="update ["+table+"] set EMP_I1=N'"+EMP_I1+"' where EMP_ID=N'"+EMP_ID+"' and ATT_DT='"+d1.ToString("yyyy/MM/dd")+"'"; // PublicFunction.SQL_Execute(sql,con); TaAttendance tm = new TaAttendance(EMP_ID, d1.ToString("yyyy/MM/dd"), con, Ca, ATT, SHI_ID, rsca, Set, rsTypeShift); tm.tb = table; tm.NIG_TM = NIG_TM; //tm.rsType=rsType; tm.UpdateSql(); }
private void cmd_cal_Click(object sender, System.EventArgs e) { if (MessageBox.Show(this, PublicFunction.L_Get_Msg("msg", 78), this.Text, MessageBoxButtons.YesNo) == DialogResult.No) { return; } ArrayList a = new ArrayList(); for (int n = 1; n < vs.Rows.Count; n++) { if (vs.Rows[n].UserData + "" == "1") { a.Add(n); string st = vs.Rows[n]["NOT_DR"] + ""; if (st.IndexOf("Sign") < 0) { vs.Rows[n]["NOT_OR"] = vs.Rows[n]["NOT_DR"]; } } } nav_TBarClick(nav.cmd_save, new ToolBarButtonClickEventArgs(nav.cmd_save)); Func.RecordSet rsTypeShift = new Func.RecordSet("Select * from GP_SYS_SHIFT", PublicFunction.C_con); Func.RecordSet Set = new Func.RecordSet("Select * from GP_SYS_SETTING", PublicFunction.C_con); SqlConnection con = new SqlConnection(PublicFunction.C_con.ConnectionString); if (con.State == ConnectionState.Closed) { con.Open(); } int dem = 0, i = 0; for (int m = 0; m < a.Count; m++) { i = (int)a[m]; string EMP_ID = vs.Rows[i]["EMP_ID"] + ""; DateTime d1 = DateTime.Parse(vs.Rows[i]["ATT_DT"] + ""); string SHI_ID = vs.Rows[i]["SHI_ID"] + ""; string sql = "Select * from FILC02B where SHI_ID=N'" + SHI_ID + "' ORDER BY SEQ_NO"; Func.RecordSet rsca = new Func.RecordSet(sql, con); ArrayList Ca = new ArrayList(); ArrayList ATT = new ArrayList(); for (int j = 0; j < rsca.rows; j++) { Ca.Add(rsca.record(j, "ONN_TM")); Ca.Add(rsca.record(j, "OFF_TM")); } Ca.Add(0); Ca.Add(0); Ca.Add(0); Ca.Add(0); for (int j = 1; j <= 10; j++) { ATT.Add(T_String.IsNullTo00(vs.Rows[i]["ONN_" + j.ToString("00")] + "")); ATT.Add(T_String.IsNullTo00(vs.Rows[i]["OFF_" + j.ToString("00")] + "")); } TaAttendance tm = new TaAttendance(EMP_ID, d1.ToString("yyyy/MM/dd"), con, Ca, ATT, SHI_ID, rsca, Set, rsTypeShift); tm.tb = "FILC06A"; tm.NIG_TM = T_String.IsNullTo00(vs.Rows[i]["NIG_TM"] + ""); tm.NOT_DD = vs.Rows[i]["NOT_DR"] + ""; tm.UpdateSql(); ForCal(EMP_ID, d1.ToString("yyyy/MM/dd")); dem++; } int vat = T_String.GetMax("MAX(SEQ_NO)", "FILC10A"); for (int m = 0; m < a.Count; m++) { string EMP_ID = vs.Rows[i]["EMP_ID"] + ""; DateTime d1 = DateTime.Parse(vs.Rows[i]["ATT_DT"] + ""); TaAttendance.AbsentToVacate(EMP_ID, d1.ToString("yyyy/MM/dd"), con, "FILC06A"); } if (T_String.GetMax("MAX(SEQ_NO)", "FILC10A") > vat) { frmTaAbsentVacate dlg = new frmTaAbsentVacate(); dlg.Tag = this.Tag; dlg.ShowDialog(); } if (dem > 0) { int row = vs.Row; nav.Show_VS(nav.Where + ""); if (row > 0 && vs.Rows.Count > 1) { vs.Row = row; } } vs.Tag = ""; CheckCols(); }