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;
        }
Beispiel #3
0
        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);
            }));
        }
Beispiel #5
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);
            }
        }
        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();
        }