private void buttonLoad_Click(object sender, EventArgs e) { ComboBox comboBoxState = (ComboBox)this.Controls.Find("comboBoxState", true)[0]; TextBox textBoxScheduledAmount = (TextBox)this.Controls.Find("textBoxScheduledAmount", true)[0]; TextBox textBoxRealAmount = (TextBox)this.Controls.Find("textBoxRealAmount", true)[0]; TextBox textBoxLoadingTime = (TextBox)this.Controls.Find("textBoxLoadingTime", true)[0]; if (string.IsNullOrWhiteSpace(textBoxRealAmount.Text)) { MessageBox.Show("请填写实际装车数量!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } PutOutStorageTicketItem tmpPutOutStorageTicketItem = new PutOutStorageTicketItem(); if (Utilities.CopyTextBoxTextsToProperties(this, tmpPutOutStorageTicketItem, PutOutStorageTicketItemViewMetaData.KeyNames, out string errorMessage) == false) { MessageBox.Show(errorMessage, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (string.IsNullOrWhiteSpace(textBoxLoadingTime.Text)) { textBoxLoadingTime.Text = DateTime.Now.ToString(); } this.buttonModify.PerformClick(); }
private void buttonAllLoad_Click(object sender, EventArgs e) { if (MessageBox.Show("确定要全额装车所有条目吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } WMSEntities wmsEntities = new WMSEntities(); try { PutOutStorageTicketItem[] items = (from p in wmsEntities.PutOutStorageTicketItem where p.PutOutStorageTicketID == this.putOutStorageTicketID && (p.RealAmount != p.ScheduledAmount || p.State != PutOutStorageTicketItemViewMetaData.STRING_STATE_ALL_LOADED) select p).ToArray(); for (int i = 0; i < items.Length; i++) { PutOutStorageTicketItem item = items[i]; item.State = PutOutStorageTicketItemViewMetaData.STRING_STATE_ALL_LOADED; item.LoadingTime = DateTime.Now; decimal deltaRealAmountNoUnit = (items[i].ScheduledAmount - (items[i].RealAmount ?? 0)) * (items[i].UnitAmount ?? 1) ?? 0; item.RealAmount = items[i].ScheduledAmount; StockInfo stockInfo = (from s in wmsEntities.StockInfo where s.ID == item.StockInfoID select s).FirstOrDefault(); stockInfo.ShipmentAreaAmount -= deltaRealAmountNoUnit; stockInfo.ScheduledShipmentAmount -= deltaRealAmountNoUnit; } wmsEntities.Database.ExecuteSqlCommand(String.Format("UPDATE PutOutStorageTicket SET State = '{0}' WHERE ID = {1}", PutOutStorageTicketViewMetaData.STRING_STATE_ALL_LOADED, this.putOutStorageTicketID)); wmsEntities.SaveChanges(); } catch (Exception ex) { MessageBox.Show("操作失败,请检查网络连接\n请将下面的错误信息反馈给我们:\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } this.putOutStorageTicketStateChangedCallback?.Invoke(this.putOutStorageTicketID); this.Invoke(new Action(() => this.Search())); MessageBox.Show("操作成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
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 buttonModify_Click(object sender, EventArgs e) { int[] ids = Utilities.GetSelectedIDs(this.reoGridControlMain); if (ids.Length != 1) { MessageBox.Show("请选择一项进行修改", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int id = ids[0]; WMSEntities wmsEntities = new WMSEntities(); PutOutStorageTicketItem putOutStorageTicketItem = null; StockInfo stockInfo = null; try { putOutStorageTicketItem = (from p in wmsEntities.PutOutStorageTicketItem where p.ID == id select p).FirstOrDefault(); if (putOutStorageTicketItem == null) { MessageBox.Show("出库单条目不存在,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } stockInfo = (from s in wmsEntities.StockInfo where s.ID == putOutStorageTicketItem.StockInfoID select s).FirstOrDefault(); } catch { MessageBox.Show("修改失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } decimal oriScheduledAmountNoUnit = (putOutStorageTicketItem.ScheduledAmount ?? 0) * (putOutStorageTicketItem.UnitAmount ?? 1); decimal oriRealAmountNoUnit = (putOutStorageTicketItem.RealAmount ?? 0) * (putOutStorageTicketItem.UnitAmount ?? 1); decimal oriReturnQualityAmountNoUnit = putOutStorageTicketItem.ReturnQualityAmount * (putOutStorageTicketItem.ReturnQualityUnitAmount ?? 1); decimal oriReturnRejectAmountNoUnit = putOutStorageTicketItem.ReturnRejectAmount * (putOutStorageTicketItem.ReturnRejectUnitAmount ?? 1); string oriState = putOutStorageTicketItem.State; if (Utilities.CopyTextBoxTextsToProperties(this, putOutStorageTicketItem, PutOutStorageTicketItemViewMetaData.KeyNames, out string errorMessage) == false) { MessageBox.Show(errorMessage, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (Utilities.CopyComboBoxsToProperties(this, putOutStorageTicketItem, PutOutStorageTicketItemViewMetaData.KeyNames) == false) { MessageBox.Show("内部错误:读取复选框数据失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (putOutStorageTicketItem.RealAmount < 0 || putOutStorageTicketItem.RealAmount > putOutStorageTicketItem.ScheduledAmount) { MessageBox.Show("实际装车数量必须大于等于0并且小于计划装车数量", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } decimal deltaRealAmountNoUnit = ((putOutStorageTicketItem.RealAmount ?? 0) * (putOutStorageTicketItem.UnitAmount ?? 1)) - oriRealAmountNoUnit; decimal?returnQualityAmount = putOutStorageTicketItem.ReturnQualityAmount * putOutStorageTicketItem.ReturnQualityUnitAmount; decimal?returnRejectAmount = putOutStorageTicketItem.ReturnRejectAmount * putOutStorageTicketItem.ReturnRejectUnitAmount; decimal?deliverAmount = putOutStorageTicketItem.RealAmount * putOutStorageTicketItem.UnitAmount; if (returnQualityAmount + returnRejectAmount > deliverAmount) { MessageBox.Show("正品返回数量与不良品返回数量之和不能超过实际发货数量!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //如果修改了计划翻包数量,这个数量不可以大于发货单剩余可分配翻包数量 //新的计划装车数量 decimal newScheduledAmountNoUnit = (putOutStorageTicketItem.ScheduledAmount ?? 0) * (putOutStorageTicketItem.UnitAmount ?? 1); //变化的计划装车数量 decimal deltaScheduledAmountNoUnit = newScheduledAmountNoUnit - oriScheduledAmountNoUnit; if (deltaScheduledAmountNoUnit != 0) { if (putOutStorageTicketItem.ScheduledAmount < putOutStorageTicketItem.RealAmount) { MessageBox.Show("计划装车数量不可以小于实际装车数量!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } JobTicketItem jobTicketItem = (from j in wmsEntities.JobTicketItem where j.ID == putOutStorageTicketItem.JobTicketItemID select j).FirstOrDefault(); if (jobTicketItem != null) { //实际翻包总数量 decimal jobTicketItemRealAmount = (jobTicketItem.RealAmount ?? 0) * (jobTicketItem.UnitAmount ?? 1); //剩余可分配装车数量 decimal restScheduableAmountNoUnit = jobTicketItemRealAmount - (jobTicketItem.ScheduledPutOutAmount ?? 0) * (jobTicketItem.UnitAmount ?? 1); if (restScheduableAmountNoUnit < deltaScheduledAmountNoUnit) { MessageBox.Show(string.Format("翻包作业单剩余可分配装车数量不足!\n剩余可分配装车数:{0}({1})", Utilities.DecimalToString(restScheduableAmountNoUnit / (putOutStorageTicketItem.UnitAmount ?? 1)), putOutStorageTicketItem.Unit), "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //把多的计划装车数量加进作业单的已分配装车数里 jobTicketItem.ScheduledPutOutAmount += deltaScheduledAmountNoUnit / jobTicketItem.UnitAmount; } } int jobPersonID = this.jobPersonGetter(); int confirmPersonID = this.confirmPersonGetter(); putOutStorageTicketItem.JobPersonID = jobPersonID == -1 ? null : (int?)jobPersonID; putOutStorageTicketItem.ConfirmPersonID = confirmPersonID == -1 ? null : (int?)confirmPersonID; if (putOutStorageTicketItem.RealAmount == putOutStorageTicketItem.ScheduledAmount) { putOutStorageTicketItem.State = PutOutStorageTicketItemViewMetaData.STRING_STATE_ALL_LOADED; } else if (putOutStorageTicketItem.RealAmount == 0) { putOutStorageTicketItem.State = PutOutStorageTicketItemViewMetaData.STRING_STATE_WAIT_FOR_LOAD; } else { putOutStorageTicketItem.State = PutOutStorageTicketItemViewMetaData.STRING_STATE_PART_LOADED; } if (stockInfo != null) { //更新发货区,已分配发货数量 stockInfo.ShipmentAreaAmount -= deltaRealAmountNoUnit; stockInfo.ScheduledShipmentAmount -= deltaRealAmountNoUnit; //更新退回数量 decimal deltaReturnQualityAmountNoUnit = putOutStorageTicketItem.ReturnQualityAmount * (putOutStorageTicketItem.ReturnQualityUnitAmount ?? 1) - oriReturnQualityAmountNoUnit; decimal deltaReturnRejectAmountNoUnit = putOutStorageTicketItem.ReturnRejectAmount * (putOutStorageTicketItem.ReturnRejectUnitAmount ?? 1) - oriReturnRejectAmountNoUnit; stockInfo.ShipmentAreaAmount += deltaReturnQualityAmountNoUnit; stockInfo.RejectAreaAmount += deltaReturnRejectAmountNoUnit; } try { wmsEntities.SaveChanges(); this.UpdatePutOutStorageTicketStateSync(); } catch { MessageBox.Show("修改失败,请检查网络连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } this.Invoke(new Action(() => { this.Search(putOutStorageTicketItem.ID); })); MessageBox.Show("修改成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }