Exemplo n.º 1
0
        public static SubmissionTicketItem ReceiptTicketItemToSubmissionTicketItem(ReceiptTicketItem receiptTicketItem, int submissionTicketID)
        {
            //WMSEntities wmsEntities = new WMSEntities();
            SubmissionTicketItem submissionTicketItem = new SubmissionTicketItem();

            //ReceiptTicketItemView receiptTicketItemView = (from rti in wmsEntities.ReceiptTicketItemView where rti.ID == receiptTicketItem.ID select rti).Single();
            //submissionTicketItem.ComponentID = receiptTicketItem.ComponentID;
            submissionTicketItem.SubmissionTicketID = submissionTicketID;
            submissionTicketItem.ID                  = 0;
            submissionTicketItem.State               = "送检中";
            submissionTicketItem.SubmissionAmount    = receiptTicketItem.ReceiviptAmount;
            submissionTicketItem.ReceiptTicketItemID = receiptTicketItem.ID;

            return(submissionTicketItem);
        }
Exemplo n.º 2
0
        private void buttonSubmission_Click(object sender, EventArgs e)
        {
            WMSEntities wmsEntities      = new WMSEntities();
            var         worksheet        = this.reoGridControlUser.Worksheets[0];
            List <ReceiptTicketItem> ids = new List <ReceiptTicketItem>();
            bool result;

            for (int i = 0; i < this.countRow; i++)
            {
                result = (worksheet[i, this.checkColumn] as bool?) ?? false;
                if (result == true)
                {
                    int id;
                    if (int.TryParse(worksheet[i, 0].ToString(), out id) == false)
                    {
                        MessageBox.Show(worksheet[i, 0].ToString() + "加入失败");
                    }
                    else
                    {
                        ReceiptTicketItem receiptTicketItem = (from rti in wmsEntities.ReceiptTicketItem where rti.ID == id select rti).FirstOrDefault();
                        if (receiptTicketItem.State == "已收货" || receiptTicketItem.State == "送检中")
                        {
                            MessageBox.Show(receiptTicketItem.ID + " " + receiptTicketItem.State);
                            return;
                        }
                        else
                        {
                            ids.Add(receiptTicketItem);
                        }
                    }
                }
            }
            if (ids.Count == 0)
            {
                MessageBox.Show("请选择一项送检");
                return;
            }
            else
            {
                foreach (ReceiptTicketItem i in ids)
                {
                    //PutawayTicketItem putawayTicketItem = (from pti in wmsEntities.PutawayTicketItem where pti.ID == i && pti.State != "已收货" && pti.State != "送检中" select pti).FirstOrDefault();
                    if (i == null)
                    {
                        MessageBox.Show(i + "不能添加此条目送检");
                    }
                    else
                    {
                        SubmissionTicketItem submissionTicketItem = ReceiptUtilities.ReceiptTicketItemToSubmissionTicketItem(i, this.submissionTicketID);
                        wmsEntities.SubmissionTicketItem.Add(submissionTicketItem);
                        i.State = "送检中";
                    }
                }
                new Thread(() =>
                {
                    try
                    {
                        wmsEntities.SaveChanges();
                        int count = wmsEntities.Database.SqlQuery <int>("SELECT COUNT(*) FROM ReceiptTicketItem WHERE State <> '送检中' AND ReceiptTicketID = @receiptTicketID", new SqlParameter("receiptTicketID", this.receiptTicketID)).FirstOrDefault();
                        if (count == 0)
                        {
                            wmsEntities.Database.ExecuteSqlCommand("UPDATE ReceiptTicket SET State = '送检中' WHERE ID = @receiptTicketID", new SqlParameter("receiptTicketID", this.receiptTicketID));
                        }
                        wmsEntities.SaveChanges();
                    }
                    catch
                    {
                        MessageBox.Show("无法连接到数据库,请查看网络连接!", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
                        return;
                    }
                    this.Invoke(new Action(() =>
                    {
                        this.Search();
                        CallBack();
                    }));
                    MessageBox.Show("添加成功");
                }).Start();
            }
        }
        private void OK_Click(object sender, EventArgs e)
        {
            var worksheet = this.reoGridControlUser.Worksheets[0];

            worksheet.FocusPos = new CellPosition(0, 0);
            WMSEntities   wmsEntities   = new WMSEntities();
            ReceiptTicket receiptTicket = (from rt in wmsEntities.ReceiptTicket where rt.ID == this.receiptTicketID select rt).FirstOrDefault();

            if (receiptTicket == null)
            {
                MessageBox.Show("该收货单已被删除,送检失败");
                return;
            }
            else
            {
                if (receiptTicket.State != "待收货")
                {
                    MessageBox.Show("该收货单状态为" + receiptTicket.State + ",无法送检!");
                }
            }
            SortedDictionary <int, decimal> idsAndSubmissionAmount = SelectReceiptTicketItem();

            if (idsAndSubmissionAmount == null)
            {
                return;
            }
            Dictionary <ReceiptTicketItem, decimal> receiptTicketItemsAndSubmissionAmount = new Dictionary <ReceiptTicketItem, decimal>();

            foreach (KeyValuePair <int, decimal> kv in idsAndSubmissionAmount)
            {
                ReceiptTicketItem receiptTicketItem = (from rti in wmsEntities.ReceiptTicketItem where rti.ID == kv.Key select rti).FirstOrDefault();
                if (receiptTicketItem != null)
                {
                    if (receiptTicketItem.ReceiviptAmount < kv.Value)
                    {
                        MessageBox.Show("送检数量不应大于收货数量", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    if (kv.Value < 0)
                    {
                        MessageBox.Show("送检数量不应为负数", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    receiptTicketItemsAndSubmissionAmount.Add(receiptTicketItem, kv.Value);
                }
            }
            if (this.formMode == FormMode.ADD)
            {
                SubmissionTicket submissionTicket = new SubmissionTicket();
                string           errorInfo;
                if (Utilities.CopyTextBoxTextsToProperties(this, submissionTicket, ReceiptMetaData.submissionTicketKeyName, out errorInfo) == false)
                {
                    MessageBox.Show(errorInfo);
                    return;
                }
                else
                {
                    Utilities.CopyComboBoxsToProperties(this, submissionTicket, ReceiptMetaData.submissionTicketKeyName);
                    submissionTicket.PersonID                  = this.PersonIDGetter();
                    submissionTicket.ReceivePersonID           = this.ReceivePersonIDGetter();
                    submissionTicket.SubmissionPersonID        = this.SubmissionPersonIDGetter();
                    submissionTicket.DeliverSubmissionPersonID = this.DeliverSubmissionPersonIDGetter();
                    //ReceiptTicket receiptTicket = (from rt in wmsEntities.ReceiptTicket where rt.ID == this.receiptTicketID select rt).FirstOrDefault();

                    submissionTicket.SubmissionDate   = receiptTicket.ReceiptDate;
                    submissionTicket.CreateTime       = DateTime.Now;
                    submissionTicket.ReceiptTicketID  = this.receiptTicketID;
                    submissionTicket.CreateUserID     = this.userID;
                    submissionTicket.LastUpdateTime   = DateTime.Now;
                    submissionTicket.LastUpdateUserID = this.userID;
                    submissionTicket.ProjectID        = receiptTicket.ProjectID;
                    submissionTicket.WarehouseID      = receiptTicket.WarehouseID;
                    submissionTicket.State            = "待检";
                    //////////////////////////// Begin
                    if (string.IsNullOrWhiteSpace(submissionTicket.No))
                    {
                        if (submissionTicket.CreateTime.HasValue == false)
                        {
                            MessageBox.Show("单号生成失败(未知创建日期)!请手动填写单号", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }

                        DateTime createDay      = new DateTime(submissionTicket.CreateTime.Value.Year, submissionTicket.CreateTime.Value.Month, submissionTicket.CreateTime.Value.Day);
                        DateTime nextDay        = createDay.AddDays(1);
                        int      maxRankOfToday = Utilities.GetMaxTicketRankOfDay((from s in wmsEntities.SubmissionTicket
                                                                                   where s.CreateTime >= createDay && s.CreateTime < nextDay
                                                                                   select s.No).ToArray());
                        if (maxRankOfToday == -1)
                        {
                            MessageBox.Show("单号生成失败!请手动填写单号", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
                        submissionTicket.No = Utilities.GenerateTicketNo("J", submissionTicket.CreateTime.Value, maxRankOfToday + 1);
                    }
                    /////////////////////////////////////////////////////////////// End
                    wmsEntities.SubmissionTicket.Add(submissionTicket);


                    try
                    {
                        wmsEntities.SaveChanges();
                        //submissionTicket.No = Utilities.GenerateTicketNo()

                        wmsEntities.SaveChanges();
                        foreach (KeyValuePair <ReceiptTicketItem, decimal> vp in receiptTicketItemsAndSubmissionAmount)
                        {
                            SubmissionTicketItem submissionTicketItem = new SubmissionTicketItem();
                            StockInfo            stockInfo            = (from si in wmsEntities.StockInfo where si.ReceiptTicketItemID == vp.Key.ID select si).FirstOrDefault();
                            if (stockInfo == null)
                            {
                                MessageBox.Show("找不到对应的库存信息", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            }
                            else
                            {
                                if (stockInfo.ReceiptAreaAmount != null)
                                {
                                    submissionTicketItem.ArriveAmount = stockInfo.ReceiptAreaAmount;
                                }
                                stockInfo.SubmissionAmount               = vp.Value;
                                stockInfo.ReceiptAreaAmount             -= vp.Value;
                                submissionTicketItem.ArriveAmount        = vp.Key.ReceiviptAmount;
                                submissionTicketItem.ReceiptTicketItemID = vp.Key.ID;

                                submissionTicketItem.State = "待检";
                                vp.Key.State = "送检中";
                                submissionTicketItem.SubmissionAmount   = vp.Value;
                                submissionTicketItem.SubmissionTicketID = submissionTicket.ID;
                                wmsEntities.SubmissionTicketItem.Add(submissionTicketItem);
                            }
                        }
                        receiptTicket.HasSubmission = 1;
                        receiptTicket.State         = "送检中";
                        wmsEntities.SaveChanges();

                        /*
                         * int count = wmsEntities.Database.SqlQuery<int>(
                         *  "SELECT COUNT(*) FROM ReceiptTicketItem " +
                         *  "WHERE ReceiptTicketID = @receiptTicketID AND State <> '送检中'",
                         *  new SqlParameter("receiptTicketID", receiptTicketID)).FirstOrDefault();
                         * if (count == 0)
                         * {
                         *  wmsEntities.Database.ExecuteSqlCommand(
                         *      "UPDATE ReceiptTicket SET State='送检中' " +
                         *      "WHERE ID = @receiptTicketID",
                         *      new SqlParameter("receiptTicketID", receiptTicketID));
                         * }
                         * else
                         * {
                         *  wmsEntities.Database.ExecuteSqlCommand(
                         *      "UPDATE ReceiptTicket SET State='部分送检中' " +
                         *      "WHERE ID = @receiptTicketID",
                         *      new SqlParameter("receiptTicketID", receiptTicketID));
                         * }
                         */

                        this.Search();
                        CallBack();
                        this.Hide();

                        MessageBox.Show("收货单条目送检成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch
                    {
                        MessageBox.Show("无法连接到数据库,请查看网络连接!", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
                        return;
                    }
                }
            }
            else
            {
            }
        }