| | |
| | | boxInfoList.AddRange(list); |
| | | msgStr += $"尾箱号为{model.TailBoxNo}"; |
| | | } |
| | | //绑定箱总数量 |
| | | //model.SkuQty = boxInfoList.Sum(s => s.Qty); |
| | | //和选择的批次同批次的箱码信息 |
| | | var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo).ToList(); |
| | | //和选择的批次不同批次的箱码信息(拼箱批次) |
| | | var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList(); |
| | | //拼箱数量(和选择的批次不同批次的箱码数量) |
| | | decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty); |
| | | #endregion |
| | | |
| | | if (sameBoxInfoList.Count <= 0) |
| | |
| | | PalletNo = model.PalletNo, |
| | | PalletNo2 = "", |
| | | PalletNo3 = "", |
| | | Qty = model.SkuQty - pinBoxQty,//不包含拼箱中非同批次数量 |
| | | Qty = model.SkuQty,//不包含拼箱中非同批次数量 |
| | | FullQty = pNum, |
| | | Status = "2",//入库完成 |
| | | Type = "0", |
| | |
| | | bindId = bind.Id; |
| | | bind.Qty += model.SkuQty; |
| | | } |
| | | if (bind.Qty < 0) |
| | | /*if (bind.Qty < 0) |
| | | { |
| | | throw new Exception("组盘数量不能小于0"); |
| | | } |
| | | }*/ |
| | | #endregion |
| | | |
| | | #region 库存明细和质检信息 |
| | |
| | | } |
| | | var pinBoxNo = notBoxInfoList[0].BoxNo;//拼箱箱码 |
| | | var pinBoxLotNo = notBoxInfoList[0].LotNo;//拼箱批次号 |
| | | //拼箱数量(和选择的批次不同批次的箱码数量) |
| | | decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty); |
| | | |
| | | var dataBoxList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == pinBoxNo && w.LotNo == pinBoxLotNo).ToList(); |
| | | if (dataBoxList.Count > 0)//已有库存 |
| | |
| | | var oldPalletBind = Db.Queryable<BllPalletBind>().First(w => w.Id == notBoxInfoList[0].BindNo); |
| | | //原入库单明细 |
| | | var oldAsnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == oldPalletBind.ASNDetailNo); |
| | | //原入库单 |
| | | var oldAsnNotice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == oldAsnDetail.ASNNo); |
| | | #region 托盘绑定信息 |
| | | var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == oldAsnDetail.Id && m.PalletNo == model.PalletNo); |
| | | var bindId = 0; |
| | |
| | | PalletNo = model.PalletNo, |
| | | PalletNo2 = "", |
| | | PalletNo3 = "", |
| | | Qty = pinBoxQty, |
| | | Qty = 0, |
| | | FullQty = pNum, |
| | | Status = "2",//入库完成 |
| | | Type = "0", |
| | |
| | | // 插入库存明细数据 |
| | | var sd1 = new DataStockDetail() |
| | | { |
| | | LotNo = pinBoxNo, |
| | | LotNo = pinBoxLotNo, |
| | | LotText = notBoxInfoList[0].LotText, |
| | | SupplierLot = notBoxInfoList[0].SupplierLot, |
| | | SkuNo = sku.SkuNo, |
| | |
| | | RoadwayNo = "",//所属巷道 |
| | | AreaNo = "",//所属区域 |
| | | LocatNo = "",//储位地址 |
| | | PalletNo = oldPalletBind.PalletNo, |
| | | PalletNo2 = oldPalletBind.PalletNo2, |
| | | PalletNo3 = oldPalletBind.PalletNo3, |
| | | PalletNo = bind.PalletNo, |
| | | PalletNo2 = bind.PalletNo2, |
| | | PalletNo3 = bind.PalletNo3, |
| | | PalletTags = "0", |
| | | CompleteTime = comTime, |
| | | ProductionTime = oldPalletBind.ProductionTime, |
| | |
| | | CreateUser = 0, |
| | | CreateTime = comTime |
| | | }; |
| | | //维护库存明细货主/供应商信息 |
| | | if (oldAsnNotice.Type == "0" || oldAsnNotice.Type == "2" || oldAsnNotice.Type == "4" || oldAsnNotice.Type == "6" || oldAsnNotice.Type == "7")//0:成品入库,2:中间品入库,4:车间余料入库,6:代储入库,7:寄存入库 |
| | | { |
| | | sd1.OwnerNo = oldAsnNotice.CustomerNo;//货主编码 |
| | | sd1.OwnerName = oldAsnNotice.CustomerName;//货主名称 |
| | | } |
| | | else if (oldAsnNotice.Type == "1" || oldAsnNotice.Type == "5")//1:采购入库,2:其它入库 |
| | | { |
| | | sd1.SupplierNo = oldAsnNotice.CustomerNo;//供应商编码 |
| | | sd1.SupplierName = oldAsnNotice.CustomerName;//供应商名称 |
| | | } |
| | | //添加库存明细 |
| | | var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); |
| | | foreach (var item in dataBoxList) |
| | |
| | | string sql = $@"SELECT detail.* FROM BllArrivalNoticeDetail as detail |
| | | JOIN BllArrivalNotice as notice ON detail.ASNNo=notice.ASNNo |
| | | WHERE notice.IsDel='0' |
| | | AND notice.Status='1' |
| | | AND ( notice.Status=0 or notice.Status=1 ) |
| | | AND detail.IsDel='0' |
| | | AND detail.LotNo='{pinBoxLotNo}' |
| | | AND detail.SkuNo='{sku.SkuNo}' |
| | |
| | | throw new Exception("拼箱内物料所属入库单明细不存在!"); |
| | | } |
| | | //找到拼箱内其他批次所属入库单 |
| | | var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo && w.Status == "1"); |
| | | var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo); |
| | | if (arrNotice == null) |
| | | { |
| | | throw new Exception("拼箱内物料所属入库单不存在!"); |
| | |
| | | PalletNo = model.PalletNo, |
| | | PalletNo2 = "", |
| | | PalletNo3 = "", |
| | | Qty = pinBoxQty, |
| | | Qty = 0, |
| | | FullQty = pNum, |
| | | Status = "2",//入库完成 |
| | | Type = "0", |
| | |
| | | else |
| | | { |
| | | bindId = bind.Id; |
| | | bind.Qty += pinBoxQty; |
| | | |
| | | Db.Updateable(bind).ExecuteCommand(); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | { |
| | | sdId1 = sd1.Id; |
| | | // 库存已存在 更新数据 |
| | | sd1.Qty = pinBoxQty; |
| | | sd1.Qty = bind.Qty; |
| | | sd1.CompleteTime = comTime; |
| | | sd1.UpdateUser = userId; |
| | | sd1.UpdateTime = comTime; |
| | |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | Standard = sku.Standard, |
| | | Qty = pinBoxQty, |
| | | Qty = bind.Qty, |
| | | LockQty = 0, |
| | | FrozenQty = 0, |
| | | InspectQty = 0, |
| | |
| | | InspectMark = bind.InspectMark, |
| | | InspectStatus = sku.IsInspect, |
| | | BitPalletMark = bind.BitPalletMark, |
| | | PackagNo = detail.PackagNo, //liudl 由sku的包装编号变为入库单明细的包装编码 |
| | | PackagNo = arrDetail.PackagNo, //liudl 由sku的包装编号变为入库单明细的包装编码 |
| | | IsBale = bind.IsBale, |
| | | IsBelt = bind.IsBelt, |
| | | |
| | |
| | | continue; |
| | | } |
| | | //箱内物料批次与单据明细不符合 |
| | | if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo) |
| | | if (box.SkuNo != arrDetail.SkuNo || box.LotNo != arrDetail.LotNo) |
| | | { |
| | | throw new Exception($"-1:{box.BoxNo}箱内物料及批次与单据不一致,请核实!"); |
| | | } |
| | |
| | | arrDetail.IsSampling = "1"; |
| | | } |
| | | arrDetail.Status = "1";//0:等待执行 1:正在执行 2:执行完成 |
| | | if (arrDetail.CompleteQty >= detail.Qty) |
| | | if (arrDetail.CompleteQty >= arrDetail.Qty) |
| | | { |
| | | arrDetail.Status = "2"; |
| | | arrDetail.CompleteTime = comTime; |