Beispiel #1
0
        public string SaveInnerBoxWithExtra(InnerBoxesExtra extra, int packNum, decimal everyQty)
        {
            //首先增加内箱表
            InneBoxes ib = new InneBoxes();

            var innerBoxNumber = new ItemSv().GetBoxNumber("I", packNum);

            ib.box_number      = innerBoxNumber[0];
            ib.box_number_long = innerBoxNumber[1];
            ib.pack_num        = packNum;
            ib.every_qty       = everyQty;

            db.InneBoxes.InsertOnSubmit(ib);
            db.SubmitChanges();

            //增加到extra表
            try {
                extra.inner_box_id = ib.inner_box_id;
                db.InnerBoxesExtra.InsertOnSubmit(extra);
                db.SubmitChanges();
            }
            catch (Exception ex) {
                //extra新增失败,删除掉内箱
                db.InneBoxes.DeleteOnSubmit(ib);
                db.SubmitChanges();

                throw ex;
            }

            return(ib.box_number);
        }
        public JsonResult SaveInnerBox(FormCollection fc)
        {
            InneBoxes ib = new InneBoxes();

            MyUtils.SetFieldValueToModel(fc, ib);

            try {
                string[] innerBox = new BoxSv().SaveInnerBox(ib);
                WLog("新增内箱", "保存内箱,箱号:" + innerBox[0]);

                return(Json(new { suc = true, msg = "内箱保存成功", boxNumber = innerBox[0], boxId = innerBox[1] }));
            }
            catch (Exception ex) {
                return(Json(new SRM(ex)));
            }
        }
Beispiel #3
0
        /// <summary>
        /// 保存内箱
        /// </summary>
        /// <param name="outerBoxId">外箱id</param>
        /// <param name="everyQty">内箱每件数量</param>
        /// <param name="packNum">内箱件数</param>
        /// <returns>内箱箱号</returns>
        public string[] SaveInnerBox(InneBoxes ib)
        {
            var outerBox = db.OuterBoxes.Where(o => o.outer_box_id == ib.outer_box_id).FirstOrDefault();

            if (outerBox == null)
            {
                throw new Exception("外箱不存在,操作失败");
            }

            if (outerBox.bill_id != null)
            {
                var dr = new DRSv().GetDRBill((int)outerBox.bill_id);
                if (dr != null && dr.p_status != "未提交" && dr.p_status != "已拒绝")
                {
                    throw new Exception("已使用并提交的箱子不能再添加内箱");
                }
            }

            //此外箱已有的内箱数量
            var outerNum        = outerBox.every_qty * outerBox.pack_num;
            var existedInnerNum = db.InneBoxes.Where(i => i.outer_box_id == outerBox.outer_box_id).Sum(i => i.every_qty * i.pack_num) ?? 0m;

            if (ib.every_qty > outerBox.every_qty)
            {
                throw new Exception("内箱每件数量不能大于外箱每件数量");
            }

            if (ib.pack_num % outerBox.pack_num != 0)
            {
                throw new Exception("内箱件数必须是外箱件数的整数倍,否则不能被平均分摊到每个外箱中");
            }

            if (ib.every_qty * ib.pack_num > outerNum - existedInnerNum)
            {
                throw new Exception(string.Format("内箱每件数量*内箱件数不能大于可做数量:{0:0.####}", outerNum - existedInnerNum));
            }

            var innerBoxNumber = new ItemSv().GetBoxNumber("I", (int)ib.pack_num);

            ib.box_number      = innerBoxNumber[0];
            ib.box_number_long = innerBoxNumber[1];

            db.InneBoxes.InsertOnSubmit(ib);
            db.SubmitChanges();

            //保存内箱明细
            var innerBoxArr = ib.box_number_long.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            var outerBoxArr = outerBox.box_number_long.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            for (var j = 0; j < innerBoxArr.Count(); j++)
            {
                db.InnerBoxesDetail.InsertOnSubmit(new InnerBoxesDetail()
                {
                    inner_box_id     = ib.inner_box_id,
                    outer_box_id     = outerBox.outer_box_id,
                    inner_box_number = innerBoxArr[j],
                    outer_box_number = outerBoxArr[j / (innerBoxArr.Count() / outerBoxArr.Count())]
                });
            }
            db.SubmitChanges();

            return(new string[] { ib.box_number, ib.inner_box_id.ToString() });
        }