| | |
| | | try |
| | | { |
| | | sqlCount += "SELECT DISTINCT COUNT(tb1.ID) FROM BllArrivalNotice AS tb1 "; |
| | | sqlString += "SELECT DISTINCT tb1.*,tb3.RealName as CreateUserName,tb4.RealName as UpdateUserName FROM BllArrivalNotice AS tb1 "; |
| | | sqlString += "SELECT DISTINCT tb1.*,tb3.RealName as CreateUserName,tb4.RealName as UpdateUserName,tb5.RealName as CheckUserName FROM BllArrivalNotice AS tb1 "; |
| | | sqlPub += "LEFT JOIN BllArrivalNoticeDetail AS tb2 ON tb1.ASNNo = tb2.ASNNo "; |
| | | sqlPub += "LEFT JOIN SysUserInfor AS tb3 ON tb1.CreateUser = tb3.Id "; |
| | | sqlPub += "LEFT JOIN SysUserInfor AS tb4 ON tb1.UpdateUser = tb4.Id "; |
| | | sqlPub += "LEFT JOIN SysUserInfor AS tb5 ON tb1.CheckUser = tb5.Id "; |
| | | sqlPub += $"WHERE tb1.ASNNo LIKE '%{model.ASNNo}%' AND tb2.LotNo LIKE '%{model.LotNo}%' "; |
| | | sqlPub += $"AND tb2.SkuNo LIKE '%{model.SkuNo}%' AND tb2.SkuName LIKE '%{model.SkuName}%' "; |
| | | sqlPub += $"AND tb1.CustomerName LIKE '%{model.CustomerName}%' "; |
| | |
| | | rowCount = count; |
| | | } |
| | | |
| | | sqlString += "SELECT DISTINCT tb1.*,tb2.Status as AsnStatus,tb3.RealName as CreateUserName, "; |
| | | sqlString += "SELECT DISTINCT tb1.*,tb2.Type as AsnType,tb2.Status as AsnStatus,tb3.RealName as CreateUserName, "; |
| | | sqlString += "tb4.RealName as UpdateUserName,isnull(tb6.UnitName,tb5.UnitNo) as UnitName,tb7.PackagName "; |
| | | sqlString += "FROM BllArrivalNoticeDetail AS tb1 "; |
| | | sqlString += "LEFT JOIN BllArrivalNotice AS tb2 ON tb1.ASNNo = tb2.ASNNo "; |
| | |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | //获取入库单明细剩余打印数量 |
| | | public string GetAsnDetailQtyList(int id) |
| | | { |
| | | try |
| | | { |
| | | var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == id); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception("未查询到入库单明细"); |
| | | } |
| | | |
| | | var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty); |
| | | var qty = detail.Qty - labelQty; |
| | | |
| | | return qty.ToString(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | //获取物料信息(添加入库单明细使用) |
| | | public List<MaterialsDto> GetMaterialsList(GetMaterialsVm model) |
| | | { |
| | | try |
| | | { |
| | | string skuType = string.Empty; |
| | | int IsPack = 0; //0:不管 1:贴 2:不贴 |
| | | /** |
| | | * 成品贴 0 |
| | | * 采购可贴可不贴 1 |
| | | * 中间品不贴 2 |
| | | * 退货贴 3 |
| | | * 余料退回可贴可不贴 4 |
| | | * 其它可贴可不贴 5 |
| | | * 代储不贴 6 |
| | | * 寄存不贴 7 |
| | | */ |
| | | switch (model.Type)//0:原料 1:包材 2:成品 3:耗材 4:半成品 |
| | | { |
| | | case "0"://成品入库 |
| | | skuType = "(2)"; |
| | | IsPack = 1; //贴 |
| | | break; |
| | | case "1"://采购入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "2"://中间品入库 |
| | | skuType = "(4)"; |
| | | IsPack = 2; //不贴 |
| | | break; |
| | | case "3"://退货入库 |
| | | skuType = "(2)"; |
| | | IsPack = 1; //贴 |
| | | break; |
| | | case "4"://车间余料退回入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "5"://其它入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "6"://代储入库 |
| | | skuType = "(2)"; |
| | | IsPack = 2; //不贴 |
| | | break; |
| | | case "7"://寄存入库 |
| | | //skuType = "(3)"; |
| | | IsPack = 2; //不贴 |
| | | break; |
| | | default: //其它 |
| | | //skuType = "(0,1,2,3,4)"; |
| | | break; |
| | | } |
| | | |
| | | Expression<Func<SysMaterials, bool>> item = Expressionable.Create<SysMaterials>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.IsControlled), it => it.IsControlled == model.IsControlled) |
| | | .AndIF(model.Type != "7", it => skuType.Contains(it.Type)) |
| | | .AndIF(model.Type == "7", it => it.SkuNo == "100088") |
| | | .AndIF(IsPack == 1, it => it.PackagNo != "") |
| | | .AndIF(IsPack == 2, it => it.PackagNo == "") |
| | | .AndIF(true, it => it.IsDel == "0") |
| | | .And(it => it.SkuNo != "100099") |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), |
| | |
| | | .Includes(x => x.UnitInfo) |
| | | .Includes(x => x.PackagInfo) |
| | | .ToList(); |
| | | |
| | | |
| | | |
| | | return data.Select(m => new MaterialsDto() |
| | | { |
| | |
| | | string strMessage = ""; |
| | | string sqlString = string.Empty; |
| | | string sqlDetailStr = string.Empty; |
| | | //0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | var TypeLot = "1, 2, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | try |
| | | { |
| | | if (model.Origin == "录入") |
| | |
| | | if (string.IsNullOrEmpty(model.Type)) |
| | | { |
| | | throw new Exception("单据类型不可为空!"); |
| | | } |
| | | } |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | { |
| | | throw new Exception("采购入库或余料退回不可输入批次,不可编辑!"); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | if (string.IsNullOrEmpty(detailModel.LotNo)) |
| | | { |
| | | strMessage = "-1:批次号不可为空;"; |
| | | continue; |
| | | //判断是否为不限制批次单据 |
| | | if (!TypeLot.Contains(model.Type)) |
| | | { |
| | | strMessage = "-1:批次号不可为空;"; |
| | | continue; |
| | | } |
| | | } |
| | | // 判断是否已存在当前明细 |
| | | string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' "; |
| | |
| | | string sqlDetailStr = string.Empty; |
| | | try |
| | | { |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | int isType = 0; |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | isType = 1; |
| | | if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | { |
| | | strMessage = "-1:采购入库或余料退回不可输入批次,不可编辑;"; |
| | | return strMessage; |
| | | } |
| | | } |
| | | if (model.Origin != "录入") |
| | | { |
| | | strMessage = "-1:上游系统下发的单据,不可编辑;"; |
| | |
| | | |
| | | sqlString = "UPDATE BllArrivalNotice SET "; |
| | | sqlString += $"CustomerNo = '{model.CustomerNo}',CustomerName = '{model.CustomerName}',"; |
| | | sqlString += $"LotNo = '{model.LotNo}',LotText = '{model.LotText}',"; |
| | | sqlString += $"LotNo = '{model.LotNo}',LotText = '{model.LotText}',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}'"; |
| | | |
| | |
| | | strMessage = "-1:数量必须大于0;"; |
| | | continue; |
| | | } |
| | | if (string.IsNullOrEmpty(detailModel.LotNo)) |
| | | if (string.IsNullOrEmpty(detailModel.LotNo) && isType != 1) |
| | | { |
| | | strMessage = "-1:批次号不可为空;"; |
| | | continue; |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | // 删除总单 |
| | | sqlString = $"UPDATE BllArrivalNotice SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | int notdel = 0; |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | //获取单据生成对应标签 |
| | | var list = Db.Queryable<BllBoxInfo>().Where(a => a.IsDel == "0" && a.Status == "0" && a.BindNo == null); |
| | | |
| | | //验证对应箱支信息是否存在 |
| | | if (list == null) |
| | | { |
| | | return "-1:已有箱码已绑定托盘或已入库,不可删除!"; |
| | | } |
| | | |
| | | // 删除对应箱支信息 |
| | | sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | notdel = 1; |
| | | } |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | |
| | | if (rowCount < 2) |
| | | if (rowCount < 2 + notdel) |
| | | { |
| | | Db.RollbackTran(); |
| | | return "-1:删除失败!"; |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw ex; |
| | | } |
| | | } |
| | |
| | | //{ |
| | | // throw new Exception("参数异常,请检查状态是否为执行完成"); |
| | | //} |
| | | var palletBind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.Status != "2").ToList(); |
| | | if (palletBind != null && palletBind.Count > 0) |
| | | { |
| | | throw new Exception("存在未入库完成托盘信息,不允许关单"); |
| | | } |
| | | |
| | | var sqlString = ""; |
| | | |
| | |
| | | } |
| | | } |
| | | //入库单撤销申请 |
| | | public void CancelOrder(int id,string reason,int userId) |
| | | public void CancelOrder(int id, string reason, int userId) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到入库单据信息"); |
| | | } |
| | | if (notice.Status!="1" && notice.Status != "2") |
| | | if (notice.Status != "1" && notice.Status != "2") |
| | | { |
| | | throw new Exception("入库单据状态不是正在执行或执行完成,不能撤销"); |
| | | } |
| | | |
| | | var bind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList(); |
| | | if (bind.Count==0) |
| | | if (bind.Count == 0) |
| | | { |
| | | throw new Exception("未查询到入库单据的托盘绑定信息"); |
| | | } |
| | | |
| | | if (bind.Count(m=>m.Status== "1")>0) |
| | | if (bind.Count(m => m.Status == "1") > 0) |
| | | { |
| | | throw new Exception("当前入库单据的托盘绑定信息有正在执行的,请稍后完成后再撤销"); |
| | | } |
| | | |
| | | var auditLog = Db.Queryable<BllAuditLog>().Where(m => m.IsDel == "0" && m.Status == "0"); |
| | | var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo); |
| | | if (auditLog.Count(m=>m.OrderNo == notice.ASNNo)>0) |
| | | if (auditLog.Count(m => m.OrderNo == notice.ASNNo) > 0) |
| | | { |
| | | throw new Exception("当前入库单据已有撤销审核,请等待审核完成"); |
| | | } |
| | | |
| | | |
| | | |
| | | var startStatusName = ""; |
| | | var endStatusName = ""; |
| | |
| | | endStatusName = "正在执行"; |
| | | break; |
| | | default: |
| | | throw new Exception("单据状态错误"); |
| | | throw new Exception("单据状态错误"); |
| | | } |
| | | |
| | | var palletStr = ""; |
| | |
| | | var msgL = ""; |
| | | foreach (var item in bind) |
| | | { |
| | | if (auditLog.Count(m=>m.OrderNo ==item.ASNNo && m.PalletNo.Contains(item.PalletNo)) >0) |
| | | if (auditLog.Count(m => m.OrderNo == item.ASNNo && m.PalletNo.Contains(item.PalletNo)) > 0) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | if (!palletStr.Contains(item.PalletNo)) |
| | | { |
| | | palletStr += item.PalletNo+";"; |
| | | palletStr += item.PalletNo + ";"; |
| | | } |
| | | |
| | | |
| | | var info = boxInfo.First(m => m.BindNo == item.Id); |
| | | if (!msgS.Contains(info.SkuNo)) |
| | | //获取托盘绑定对应单据 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(a => a.IsDel == "0" && a.Id == item.ASNDetailNo); |
| | | if (info != null) |
| | | { |
| | | msgS += info.SkuNo + ";"; |
| | | if (!msgS.Contains(info.SkuNo)) |
| | | { |
| | | msgS += info.SkuNo + ";"; |
| | | } |
| | | |
| | | if (!msgL.Contains(info.LotNo)) |
| | | { |
| | | msgL += info.LotNo + ";"; |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (!msgS.Contains(noticeDetail.SkuNo)) |
| | | { |
| | | msgS += noticeDetail.SkuNo + ";"; |
| | | } |
| | | |
| | | if (!msgL.Contains(noticeDetail.LotNo)) |
| | | { |
| | | msgL += noticeDetail.LotNo + ";"; |
| | | |
| | | } |
| | | } |
| | | |
| | | if (!msgL.Contains(info.LotNo)) |
| | | { |
| | | msgL += info.LotNo + ";"; |
| | | |
| | | } |
| | | } |
| | | var time = DateTime.Now; |
| | | var log = new BllAuditLog() |
| | |
| | | IsDel = "0", |
| | | CreateUser = userId, |
| | | CreateTime = time |
| | | }; |
| | | }; |
| | | Db.Insertable(log).ExecuteCommand(); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", notice.ASNNo, "添加", $"添加了单据号为{notice.ASNNo}的单据撤销申请", userId); |
| | | } |
| | |
| | | { |
| | | //添加操作日志 |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", notice.ASNNo, "编辑", $"编辑了单据号为{notice.ASNNo}的备注信息", userId); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | { |
| | | ASNNo = asnNo, |
| | | Type = model.AsnType, |
| | | Origin = model.Origin, |
| | | Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin, |
| | | CustomerNo = model.Customer, |
| | | CustomerName = CustomerModel.CustomerName, |
| | | OrderCode = model.OrderCode, |
| | |
| | | Standard = skuModel.Standard, |
| | | LotNo = asnDetailModel.LotNo, |
| | | LotText = "", |
| | | Qty = asnDetailModel.Qty, |
| | | Qty = (decimal)asnDetailModel.Qty, |
| | | PackagNo = asnDetailModel.PackagNo, |
| | | SupplierLot = asnDetailModel.SupplierLot, |
| | | Status = "0", |
| | |
| | | { |
| | | throw new Exception("未查询到单据信息"); |
| | | } |
| | | if (notice.Status != "3") |
| | | { |
| | | throw new Exception("复核失败,单据非关闭状态"); |
| | | } |
| | | var detail = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == notice.ASNNo && m.IsDel == "0").ToList(); |
| | | if (detail.Count == 0) |
| | | { |
| | |
| | | { |
| | | SkuNo = d.SkuNo, |
| | | LotNo = d.LotNo, |
| | | Qty = int.Parse(d.CompleteQty.ToString()), |
| | | Qty = d.CompleteQty, |
| | | PackagNo = d.PackagNo, |
| | | SupplierLot = d.SupplierLot |
| | | }; |
| | |
| | | #endregion |
| | | |
| | | notice.Status = "4"; |
| | | notice.UpdateTime = DateTime.Now; |
| | | notice.UpdateUser = userId; |
| | | notice.CheckTime = DateTime.Now; |
| | | notice.CheckUser = userId; |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", notice.ASNNo, "复核", $"复核了单据号为{notice.ASNNo}的单据信息", userId); |
| | |
| | | |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | } |