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))); } }
/// <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() }); }