コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }