static void Main(string[] args) { //lista impiegati creata come mock var employees = CreateEmployess(); //per ogni impiegato della lista // se è il suo giorno di paga // calcola la sua paga // crea un record con ID, paga e data di oggi // salva record in una lista di record List <PayCheckRecord> payCheckRecords = new List <PayCheckRecord>(); var date = new DateTime(2019, 8, 31); foreach (var e in employees) { if (e.IsPayDay(date)) { var pay = e.CalculatePay(date); var record = new PayCheckRecord(e.ID, DateTime.Today, pay); payCheckRecords.Add(record); } } Console.ReadKey(); }
private void btn重新同步_Click(object sender, EventArgs e) { if (MessageBox.Show("重新同步后需重新审核,确实重新同步吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes) { Thread.Sleep(200); CreateWaitDialog("正在同步...", "请耐心等待"); //删除历史数据 SalaryAuditingResult.ClearAuditingResult((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //删除工资表 PrivateSalary.ClearPrivateSalary((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //清除旧的抽查记录 PayCheckRecord.ClearPayCheckRecord((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //同步基础工资 StringBuilder sb = SalaryResult.SychSalaryResult((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //同步工资明细 StringBuilder sbItem = SalaryResultItem.SychSalaryResultItem((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); sb.Append(sbItem.ToString()); CloseWaitDialog(); MyHelper.WriteLog(LogType.信息, "重新同步上表工资", String.Format("日历组:{0}, {1} 薪资组: {2}, {3}", (string)cbb日历组.EditValue, cbb日历组.Text, (string)ccb薪资组.EditValue, ccb薪资组.Text)); string msg = sb.ToString(); if (string.IsNullOrEmpty(msg)) { LoadData(true); } else { MessageBox.Show(msg); } } SetButtonEnabled(); }
public void LoadData(bool onlyPayGroup) { currRows.Clear(); CreateWaitDialog("正在查询...", "请稍等"); //清除原来的数据 List <PayCheckRecord> items = PayCheckRecord.GetPayCheckRecordList(null, 日历组); if (items.Count == 0) { MessageBox.Show("没有找不到任何记录, 请生成工资表后重试。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); CloseWaitDialog(); return; } //获取工资记录集合 List <PrivateSalary> rows = new List <PrivateSalary>(); foreach (PayCheckRecord item in items) { if (item.工资记录 != null) { rows.Add(item.工资记录); } } //只显示有权看的 foreach (PrivateSalary row in rows) { if (myPayGroupList.Find(a => a.英文名 == row.薪资组.Trim()) != null) { currRows.Add(row); } } if (onlyPayGroup) { currRows = currRows.FindAll(a => a.薪资组 == (string)cb薪资组.EditValue); SetButtonEnabled(); } //排序 currRows = currRows.OrderBy(a => a.基础工资表.财务公司).ThenBy(a => a.基础工资表.财务部门序号).ThenBy(a => a.基础工资表.员工序号).ToList(); CreateWaitDialog("正在加载...", "请稍等"); gridControl1.DataSource = currRows; gridControl1.RefreshDataSource(); CloseWaitDialog(); bandedGridView1.ExpandAllGroups(); gridControl1.Refresh(); }
//产生抽查记录 private void GenerateCheckRecords() { int 最少抽查数 = (int)(员工工资计算器列表.Count * 0.1 + 0.9); var 薪等集合 = from p in 员工工资计算器列表 group p by p.评定职等 into g select g; List <PrivateSalary> 候选的记录 = GetWaiting(); List <PrivateSalary> 抽中的记录 = new List <PrivateSalary>(); //每个薪资组选择一条记录 foreach (var grade in 薪等集合) { List <PrivateSalary> items = 候选的记录.FindAll(a => a.评定职等 == grade.Key); if (items.Count > 0) { Random rdm = new Random(unchecked ((int)DateTime.Now.Ticks)); int x = (int)rdm.Next(0, items.Count); PrivateSalary selectedItem = items[x]; 抽中的记录.Add(selectedItem); //把选择的记录从候选表删除 候选的记录.Remove(selectedItem); } } //如果小于最少抽查数,继续抽查 while (抽中的记录.Count < 最少抽查数 && 候选的记录.Count > 0) { Random rdm = new Random(unchecked ((int)DateTime.Now.Ticks)); int x = (int)rdm.Next(0, 候选的记录.Count); PrivateSalary selectedItem = 候选的记录[x]; 抽中的记录.Add(selectedItem); //把选择的记录从候选表删除 候选的记录.Remove(selectedItem); } //清除旧的抽查记录 PayCheckRecord.ClearPayCheckRecord(日历组, 薪资组); //保存选中的记录 foreach (PrivateSalary item in 抽中的记录) { PayCheckRecord rec = PayCheckRecord.AddPayCheckRecord(item.标识); rec.抽取时间 = DateTime.Now; rec.薪资组 = item.薪资组; rec.日历组 = item.日历组; rec.Save(); } }
private void btn审核_Click(object sender, EventArgs e) { //必须审核完抽查的记录才能正式审核 ColumnView colView = (ColumnView)gridControl1.MainView; if (colView != null) { PrivateSalary currentItem = (PrivateSalary)colView.GetFocusedRow(); if (currentItem != null) { PayCheckRecord pcr = PayCheckRecord.GetPayCheckRecord(currentItem.标识); if (pcr != null) { if (MessageBox.Show(currentItem.姓名 + " 的工资经核实无误吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes) { if (MessageBox.Show(currentItem.姓名 + " 的工资经核实无误吗?", "再次确认", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes) { pcr.DoAuditing(AccessController.CurrentUser.姓名); MyHelper.WriteLog(LogType.信息, "审核抽查的工资记录", pcr.ToString <PayCheckRecord>()); MessageBox.Show("当前记录已审核成功"); } } } else { MessageBox.Show("审核失败:找不到记录, 请重新打开后重试。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("审核失败:找不到工资记录, 请重新打开后重试。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }