/// <summary> /// 转采购 /// </summary> /// <returns></returns> public async Task <ResponseObject <NOEntity> > TransPurchase(int orderID, CurrentUser currentUser) { try { _db.Instance.BeginTran(); NOEntity nOEntity = new NOEntity(); TMMProductionOrderMainDbModel mainEntity = _db.Instance.Queryable <TMMProductionOrderMainDbModel>().Where(p => p.ID == orderID && p.CompanyId == currentUser.CompanyID && p.IsPurchase == true).First(); if (mainEntity == null) { return(ResponseUtil <NOEntity> .FailResult(nOEntity, "生产订单不存在,或者已转生产采购单")); } if (mainEntity.MRPStatus == false) { return(ResponseUtil <NOEntity> .FailResult(nOEntity, "还没算料,无法转单")); } var Allmaterial = _db.Instance.Queryable <TMMProductionOrderBOMSumDbModel>().Where(p => p.ProOrderId == orderID).ToList(); //生产单BOM List <TMMPurchaseApplyDetailDbModel> PurchaseList = new List <TMMPurchaseApplyDetailDbModel>(); //生产采购申请单明细表 List <TMMProductionOrderBOMSumDbModel> productionList = new List <TMMProductionOrderBOMSumDbModel>(); //生产单BOM foreach (var item in Allmaterial) { if (item.PurchaseNum > 0) //采购 { TMMPurchaseApplyDetailDbModel purchaseDeatail = new TMMPurchaseApplyDetailDbModel(); purchaseDeatail.ApplyNum = item.PurchaseNum; purchaseDeatail.MaterialId = item.MaterialId; purchaseDeatail.TransNum = item.PurchaseNum; PurchaseList.Add(purchaseDeatail); item.PurchaseTransNum = item.PurchaseNum; productionList.Add(item); } } if (PurchaseList.Count() > 0) { TMMPurchaseApplyMainDbModel tMMPurchaseApplyMainDbModel = new TMMPurchaseApplyMainDbModel(); tMMPurchaseApplyMainDbModel.DeleteFlag = false; tMMPurchaseApplyMainDbModel.SourceId = orderID; tMMPurchaseApplyMainDbModel.PurchaseNo = _codeMakers.Where(p => p.ProvideName == OrderEnum.PR.GetDescription()).FirstOrDefault().MakeNo(currentUser.CompanyID); tMMPurchaseApplyMainDbModel.ApplyDate = DateTime.Now; tMMPurchaseApplyMainDbModel.OperatorId = currentUser.UserID; tMMPurchaseApplyMainDbModel.OperatorTime = DateTime.Now; tMMPurchaseApplyMainDbModel.AuditStatus = 2; tMMPurchaseApplyMainDbModel.CompanyId = currentUser.CompanyID; tMMPurchaseApplyMainDbModel.TransferFlag = true; int mId = _db.Instance.Insertable(tMMPurchaseApplyMainDbModel).ExecuteReturnIdentity(); PurchaseList.ForEach((x) => { x.MainId = mId; }); await _db.Instance.Insertable(PurchaseList).ExecuteCommandAsync(); nOEntity.NO = tMMPurchaseApplyMainDbModel.PurchaseNo; nOEntity.ID = mId; } if (productionList.Count() > 0) { _db.Instance.Updateable(productionList).UpdateColumns(p => new { p.PurchaseTransNum }).ExecuteCommand(); } mainEntity.IsPurchase = false; _db.Instance.Updateable(mainEntity).UpdateColumns(p => new { p.IsPurchase }).ExecuteCommand(); _db.Instance.CommitTran(); return(ResponseUtil <NOEntity> .SuccessResult(nOEntity)); } catch (Exception ex) { _db.Instance.RollbackTran(); return(ResponseUtil <NOEntity> .FailResult(null, ex.Message)); } }