private void buttonDelete_Click(object sender, EventArgs e) { int[] ids = this.GetSelectedIDs(); if (ids.Length == 0) { MessageBox.Show("请选择要删除的项目", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (MessageBox.Show("确定删除选中的项目吗?\n重要提示:\n删除后所有零件的计划装车数量将会退回翻包作业单,无视实际装车数量!\n请谨慎操作!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } WMSEntities wmsEntities = new WMSEntities(); try { //删除每个选中的出库单 foreach (int id in ids) { PutOutStorageTicket putOutStorageTicket = (from p in wmsEntities.PutOutStorageTicket where p.ID == id select p).FirstOrDefault(); if (putOutStorageTicket == null) { continue; } if (putOutStorageTicket.State != PutOutStorageTicketViewMetaData.STRING_STATE_NOT_LOADED) { MessageBox.Show("删除失败,只能删除未装车的出库单!\n如果需要强行删除,请使用修改功能将出库单的状态改为未装车", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //把没完成出库的条目在作业单的已分配出库数量里减去 var items = putOutStorageTicket.PutOutStorageTicketItem; foreach (var item in items) { JobTicketItem jobTicketItem = (from j in wmsEntities.JobTicketItem where j.ID == item.JobTicketItemID select j).FirstOrDefault(); if (jobTicketItem == null) { continue; } jobTicketItem.ScheduledPutOutAmount -= ((item.ScheduledAmount ?? 0) * (item.UnitAmount ?? 1)) / (jobTicketItem.UnitAmount ?? 1); } wmsEntities.PutOutStorageTicket.Remove(putOutStorageTicket); } wmsEntities.SaveChanges(); } catch { MessageBox.Show("删除失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } this.Invoke(new Action(() => { this.Search(true); })); MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void buttonDeliver_Click(object sender, EventArgs e) { int[] ids = Utilities.GetSelectedIDs(this.reoGridControlMain); if (ids.Length == 0) { MessageBox.Show("请选择要发运的出库单!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } WMSEntities wmsEntities = new WMSEntities(); try { foreach (int id in ids) { PutOutStorageTicket putOutStorageTicket = (from p in wmsEntities.PutOutStorageTicket where p.ID == id select p).FirstOrDefault(); string no = putOutStorageTicket.No; if (putOutStorageTicket == null) { MessageBox.Show("出库单不存在,可能已被删除,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (putOutStorageTicket.State == PutOutStorageTicketViewMetaData.STRING_STATE_DELIVERED) { MessageBox.Show("单据" + no + "已经发运,请不要重复发运", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (putOutStorageTicket.State == PutOutStorageTicketViewMetaData.STRING_STATE_PART_LOADED) { MessageBox.Show("单据" + no + "正在装车中,必须全部装车完成才可以发运", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (putOutStorageTicket.State != PutOutStorageTicketItemViewMetaData.STRING_STATE_ALL_LOADED) { MessageBox.Show("未装车完成的出库单" + no + "不能发运!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } putOutStorageTicket.State = PutOutStorageTicketViewMetaData.STRING_STATE_DELIVERED; putOutStorageTicket.DeliverTime = DateTime.Now; }//End For if (MessageBox.Show("确定要发运选中项吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } wmsEntities.SaveChanges(); } catch { MessageBox.Show("操作失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } this.Search(true); MessageBox.Show("发运成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; }
private void buttonOK_Click(object sender, EventArgs e) { PutOutStorageTicket putOutStorageTicket = null; try { putOutStorageTicket = (from s in this.wmsEntities.PutOutStorageTicket where s.ID == this.putOutStorageTicketID select s).FirstOrDefault(); } catch { MessageBox.Show("修改失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (putOutStorageTicket == null) { MessageBox.Show("出库单不存在,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } putOutStorageTicket.LastUpdateUserID = this.userID; putOutStorageTicket.LastUpdateTime = DateTime.Now; int personID = this.personIDGetter(); putOutStorageTicket.PersonID = personID == -1 ? null : (int?)personID; //开始数据库操作 if (Utilities.CopyTextBoxTextsToProperties(this, putOutStorageTicket, PutOutStorageTicketViewMetaData.KeyNames, out string errorMessage) == false) { MessageBox.Show(errorMessage, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (Utilities.CopyComboBoxsToProperties(this, putOutStorageTicket, PutOutStorageTicketViewMetaData.KeyNames) == false) { MessageBox.Show("内部错误,读取选择框数据失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { wmsEntities.SaveChanges(); } catch { MessageBox.Show("修改失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //调用回调函数 if (this.modifyFinishedCallback != null) { this.modifyFinishedCallback(); } this.Close(); }
private void UpdatePutOutStorageTicketStateSync() { WMSEntities wmsEntities = new WMSEntities(); PutOutStorageTicket putOutStorageTicket = (from p in wmsEntities.PutOutStorageTicket where p.ID == this.putOutStorageTicketID select p).FirstOrDefault(); if (putOutStorageTicket == null) { return; } //已发运的单子不改变已发运状态 if (putOutStorageTicket.State == PutOutStorageTicketViewMetaData.STRING_STATE_DELIVERED) { return; } //否则更新装车状态 int totalItemCount = wmsEntities.Database.SqlQuery <int>(string.Format("SELECT COUNT(*) FROM PutOutStorageTicketItem WHERE PutOutStorageTicketID = {0}", this.putOutStorageTicketID)).Single(); int allfinishedItemCount = wmsEntities.Database.SqlQuery <int>(String.Format("SELECT COUNT(*) FROM PutOutStorageTicketItem WHERE PutOutStorageTicketID = {0} AND State = '{1}'", this.putOutStorageTicketID, PutOutStorageTicketItemViewMetaData.STRING_STATE_ALL_LOADED)).Single(); int unfinishedItemCount = wmsEntities.Database.SqlQuery <int>(String.Format("SELECT COUNT(*) FROM PutOutStorageTicketItem WHERE PutOutStorageTicketID = {0} AND State = '{1}'", this.putOutStorageTicketID, PutOutStorageTicketItemViewMetaData.STRING_STATE_WAIT_FOR_LOAD)).Single(); string putOutStorageTicketState = null; if (unfinishedItemCount == totalItemCount) { putOutStorageTicketState = PutOutStorageTicketViewMetaData.STRING_STATE_NOT_LOADED; } else if (allfinishedItemCount == totalItemCount) { putOutStorageTicketState = PutOutStorageTicketViewMetaData.STRING_STATE_ALL_LOADED; } else { putOutStorageTicketState = PutOutStorageTicketViewMetaData.STRING_STATE_PART_LOADED; } try { wmsEntities.Database.ExecuteSqlCommand(String.Format("UPDATE PutOutStorageTicket SET State = '{0}' WHERE ID = {1}", putOutStorageTicketState, this.putOutStorageTicketID)); wmsEntities.SaveChanges(); } catch { MessageBox.Show("更新出库单状态失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (this.IsDisposed) { return; } this.Invoke(new Action(() => { this.putOutStorageTicketStateChangedCallback?.Invoke(this.putOutStorageTicketID); })); }
public static bool GeneratePutOutStorageTicketFullSync(int[] jobTicketIDs, WMSEntities wmsEntities) { int succeedCount = 0; foreach (int jobTicketID in jobTicketIDs) { var newPutOutStorageTicket = new PutOutStorageTicket(); JobTicket jobTicket = (from s in wmsEntities.JobTicket where s.ID == jobTicketID select s).FirstOrDefault(); if (jobTicket == null) { MessageBox.Show("作业单不存在,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } newPutOutStorageTicket.State = PutOutStorageTicketViewMetaData.STRING_STATE_NOT_LOADED; newPutOutStorageTicket.JobTicketID = jobTicket.ID; newPutOutStorageTicket.ProjectID = GlobalData.ProjectID; newPutOutStorageTicket.WarehouseID = GlobalData.WarehouseID; newPutOutStorageTicket.CreateUserID = GlobalData.UserID; newPutOutStorageTicket.CreateTime = DateTime.Now; JobTicketItem[] jobTicketItems = jobTicket.JobTicketItem.ToArray(); //把所有条目加进出库单 foreach (var jobTicketItem in jobTicketItems) { if (jobTicketItem == null) { MessageBox.Show("无法找到作业单条目,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } PutOutStorageTicketItem newPutOutStorageTicketItem = new PutOutStorageTicketItem(); newPutOutStorageTicketItem.State = PutOutStorageTicketItemViewMetaData.STRING_STATE_WAIT_FOR_LOAD; newPutOutStorageTicketItem.StockInfoID = jobTicketItem.StockInfoID; newPutOutStorageTicketItem.JobTicketItemID = jobTicketItem.ID; newPutOutStorageTicketItem.RealAmount = 0; newPutOutStorageTicketItem.Unit = jobTicketItem.Unit; newPutOutStorageTicketItem.UnitAmount = jobTicketItem.UnitAmount; newPutOutStorageTicketItem.ReturnQualityUnit = "个"; newPutOutStorageTicketItem.ReturnQualityUnitAmount = 1; newPutOutStorageTicketItem.ReturnRejectUnit = "个"; newPutOutStorageTicketItem.ReturnRejectUnitAmount = 1; decimal restSchedulableAmountNoUnit = ((jobTicketItem.RealAmount ?? 0) - (jobTicketItem.ScheduledPutOutAmount ?? 0)) * (jobTicketItem.UnitAmount ?? 1); if (restSchedulableAmountNoUnit <= 0) { continue; } jobTicketItem.ScheduledPutOutAmount = jobTicketItem.RealAmount; newPutOutStorageTicketItem.ScheduledAmount = restSchedulableAmountNoUnit / newPutOutStorageTicketItem.UnitAmount; newPutOutStorageTicket.PutOutStorageTicketItem.Add(newPutOutStorageTicketItem); } if (newPutOutStorageTicket.PutOutStorageTicketItem.Count == 0) { continue; } //生成出库单号 if (string.IsNullOrWhiteSpace(newPutOutStorageTicket.No)) { DateTime createDay = new DateTime(newPutOutStorageTicket.CreateTime.Value.Year, newPutOutStorageTicket.CreateTime.Value.Month, newPutOutStorageTicket.CreateTime.Value.Day); DateTime nextDay = createDay.AddDays(1); int maxRankOfToday = Utilities.GetMaxTicketRankOfDay((from p in wmsEntities.PutOutStorageTicket where p.CreateTime >= createDay && p.CreateTime < nextDay select p.No).ToArray()); newPutOutStorageTicket.No = Utilities.GenerateTicketNo("C", newPutOutStorageTicket.CreateTime.Value, maxRankOfToday + 1); } wmsEntities.PutOutStorageTicket.Add(newPutOutStorageTicket); wmsEntities.SaveChanges(); succeedCount++; } if (succeedCount == 0) { MessageBox.Show("没有可用于分配出库的零件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } else { return(true); } }
private void FormPutOutStorageTicketItem_Load(object sender, EventArgs e) { InitComponents(); this.textBoxReturnQualityAmount = (TextBox)this.Controls.Find("textBoxReturnQualityAmount", true)[0]; this.textBoxReturnQualityUnit = (TextBox)this.Controls.Find("textBoxReturnQualityUnit", true)[0]; this.textBoxReturnQualityUnitAmount = (TextBox)this.Controls.Find("textBoxReturnQualityUnitAmount", true)[0]; this.textBoxReturnRejectAmount = (TextBox)this.Controls.Find("textBoxReturnRejectAmount", true)[0]; this.textBoxReturnRejectUnit = (TextBox)this.Controls.Find("textBoxReturnRejectUnit", true)[0]; this.textBoxReturnRejectUnitAmount = (TextBox)this.Controls.Find("textBoxReturnRejectUnitAmount", true)[0]; this.textBoxReturnTime = (TextBox)this.Controls.Find("textBoxReturnTime", true)[0]; this.textBoxLoadingTime = (TextBox)this.Controls.Find("textBoxLoadingTime", true)[0]; WMSEntities wmsEntities = new WMSEntities(); PutOutStorageTicket putOutStorageTicket = null; try { putOutStorageTicket = (from p in wmsEntities.PutOutStorageTicket where p.ID == putOutStorageTicketID select p).FirstOrDefault(); } catch { MessageBox.Show("加载数据失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } if (putOutStorageTicket == null) { MessageBox.Show("出库单信息不存在,请刷新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } //已发运不能修改装车信息 if (putOutStorageTicket.State == PutOutStorageTicketViewMetaData.STRING_STATE_DELIVERED) { this.buttonAllLoad.Enabled = false; this.buttonAllLoad.Text = "已发运不能修改装车状态"; this.buttonLoad.Enabled = false; this.buttonLoad.Text = "已发运不能修改装车状态"; TextBox textBoxScheduledAmount = (TextBox)this.Controls.Find("textBoxScheduledAmount", true)[0]; TextBox textBoxRealAmount = (TextBox)this.Controls.Find("textBoxRealAmount", true)[0]; textBoxRealAmount.ReadOnly = true; textBoxScheduledAmount.ReadOnly = true; this.textBoxLoadingTime.ReadOnly = true; } else //未发运不能修改退回信息 { this.buttonReturn.Text = "发运前不能修改退回信息"; this.buttonReturn.Enabled = false; this.textBoxReturnQualityAmount.ReadOnly = true; this.textBoxReturnQualityUnit.ReadOnly = true; this.textBoxReturnQualityUnitAmount.ReadOnly = true; this.textBoxReturnRejectAmount.ReadOnly = true; this.textBoxReturnRejectUnit.ReadOnly = true; this.textBoxReturnRejectUnitAmount.ReadOnly = true; } this.jobPersonGetter = Utilities.BindTextBoxSelect <FormSelectPerson, Person>(this, "textBoxJobPersonName", "Name"); this.confirmPersonGetter = Utilities.BindTextBoxSelect <FormSelectPerson, Person>(this, "textBoxConfirmPersonName", "Name"); this.textBoxUnit = (TextBox)this.Controls.Find("textBoxUnit", true)[0]; this.textBoxUnitAmount = (TextBox)this.Controls.Find("textBoxUnitAmount", true)[0]; this.Search(); }