public IHttpActionResult Putsuser(twhstockrecords t) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { if (t.OpeType == "I") { db.twhstockrecords.Where(s => s.WHID == t.WHID && s.PdtID == t.PdtID && s.UpdateDate == t.UpdateDate && s.PurOrderNO == t.PurOrderNO) .Update(p => new twhstockrecords { Remark = t.Remark }); } else { db.twhstockrecords.Where(s => s.WHID == t.WHID && s.PdtID == t.PdtID && s.UpdateDate == t.UpdateDate && s.SaleOrderNO == t.SaleOrderNO) .Update(p => new twhstockrecords { Remark = t.Remark }); } db.SaveChanges(); } catch (Exception ex) { return(new PageResult(ex.ToString(), Request)); } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult StockTransfer() { HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"]; HttpRequestBase request = context.Request; JavaScriptSerializer js = new JavaScriptSerializer(); string frmWarId = request.Params["frmWarId"]; string toWarId = request.Params["toWarId"]; string purchaseDate = request.Params["purchaseDate"]; List <Stockrecords> listStoc = js.Deserialize <List <Stockrecords> >(request.Params["tsfDtl"]); List <twhstockrecords> listTwh = new List <twhstockrecords>(); using (var tran = db.Database.BeginTransaction()) { try { //调整库存前先锁住两个库的对应所有产品的行,如果产品在目标库不存在,先新建记录再锁住 string sqlQuery = "select * from twhinventory where whid ='{0}' and areaid ='0' and posiid='0' and pdtid='{1}' for update"; for (int i = 0; i < listStoc.Count; i++) { string sql1 = string.Format(sqlQuery, frmWarId, listStoc[i].pdtID); string sql2 = string.Format(sqlQuery, toWarId, listStoc[i].pdtID); var inv1 = db.twhinventory.SqlQuery(sql1).FirstOrDefault(); if (inv1 == null || inv1.PdtID == null || inv1.PdtID == "") { twhinventory newInv1 = new twhinventory(); newInv1.WHID = frmWarId; newInv1.PdtID = listStoc[i].pdtID; newInv1.AreaID = "0"; newInv1.PosiID = "0"; newInv1.InvNum = 0; db.twhinventory.Add(newInv1); db.SaveChanges(); inv1 = db.twhinventory.SqlQuery(sql1).FirstOrDefault(); } //实时库存不够,回滚,返回 if (inv1.InvNum < listStoc[i].lftNum) { tran.Rollback(); return(new PageResult("库存不足", Request)); } //来源库减库存 inv1.InvNum = inv1.InvNum - listStoc[i].lftNum; var inv2 = db.twhinventory.SqlQuery(sql2).FirstOrDefault(); if (inv2 == null || inv2.PdtID == null || inv2.PdtID == "") { twhinventory newInv2 = new twhinventory(); newInv2.WHID = toWarId; newInv2.PdtID = listStoc[i].pdtID; newInv2.AreaID = "0"; newInv2.PosiID = "0"; newInv2.InvNum = 0; db.twhinventory.Add(newInv2); db.SaveChanges(); inv2 = db.twhinventory.SqlQuery(sql2).FirstOrDefault(); } //目标库加库存 inv2.InvNum = inv2.InvNum + listStoc[i].lftNum; //新增出入库记录,移库新增两条 //新增出库记录 float lftNum = listStoc[i].lftNum; twhstockrecords t = new twhstockrecords(); t.WHID = frmWarId; t.AreaID = "0"; t.PosiID = "0"; t.PdtID = listStoc[i].pdtID; t.Num = lftNum; t.RefWHID = toWarId; t.RefAreaID = "0"; t.RefPosiID = "0"; t.OpeType = "TO"; t.SaleOrderNO = ""; t.No = ""; var dateNow = DateTime.Now; t.CreateDate = dateNow; t.UpdateDate = dateNow; if (!string.IsNullOrEmpty(purchaseDate)) { DateTime date = Convert.ToDateTime(purchaseDate); var tmp0 = date.ToString("yyyy-MM-dd"); var tmp1 = dateNow.ToLongTimeString().ToString(); purchaseDate = tmp0 + " " + tmp1; date = Convert.ToDateTime(purchaseDate); t.UpdateDate = date; } listTwh.Add(t); //新增入库记录 twhstockrecords t2 = new twhstockrecords(); t2.WHID = toWarId; t2.AreaID = "0"; t2.PosiID = "0"; t2.PdtID = listStoc[i].pdtID; t2.Num = lftNum; t2.RefWHID = frmWarId; t2.RefAreaID = "0"; t2.RefPosiID = "0"; t2.OpeType = "TI"; t2.SaleOrderNO = ""; t2.No = ""; t2.CreateDate = dateNow; t2.UpdateDate = dateNow; if (!string.IsNullOrEmpty(purchaseDate)) { DateTime date = Convert.ToDateTime(purchaseDate); var tmp0 = date.ToString("yyyy-MM-dd"); var tmp1 = dateNow.ToLongTimeString().ToString(); purchaseDate = tmp0 + " " + tmp1; date = Convert.ToDateTime(purchaseDate); t2.UpdateDate = date; } listTwh.Add(t2); } db.twhstockrecords.AddRange(listTwh); db.SaveChanges(); tran.Commit(); } catch (Exception ex) { tran.Rollback(); return(new PageResult(ex.ToString(), Request)); } } return(Content <string>(HttpStatusCode.OK, "OK")); }
public IHttpActionResult PostInWar() { HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"]; HttpRequestBase request = context.Request; JavaScriptSerializer js = new JavaScriptSerializer(); string purOrderNO = request.Params["purOrderNO"]; string warId = request.Params["warId"]; string purchaseDate = request.Params["purchaseDate"]; List <Stockrecords> listStoc = js.Deserialize <List <Stockrecords> >(request.Params["purorderdtl"]); List <WarehouseReceipt> listWr = js.Deserialize <List <WarehouseReceipt> >(request.Params["purorderdtl"]); List <twhstockrecords> listTwh = new List <twhstockrecords>(); string no = ""; using (var tran = db.Database.BeginTransaction()) { try { int fNum = 0; no = purOrderNO + DateTime.Now.ToString("HHmmss"); for (int i = 0; i < listStoc.Count; i++) { int seqNo = listStoc[i].seqNo; string pdtId = listStoc[i].pdtID; float lftNum = listStoc[i].lftNum; string remark = listStoc[i].remark; twhstockrecords t = new twhstockrecords(); t.WHID = warId; t.AreaID = i.ToString(); t.PosiID = i.ToString(); t.PdtID = pdtId; t.Num = lftNum; t.RefWHID = i.ToString(); t.RefAreaID = i.ToString(); t.RefPosiID = i.ToString(); t.OpeType = "I"; t.PurOrderNO = purOrderNO; t.RefSeqNo = seqNo; t.No = no; var dateNow = DateTime.Now; t.CreateDate = dateNow; t.UpdateDate = dateNow; if (!string.IsNullOrEmpty(purchaseDate)) { DateTime date = Convert.ToDateTime(purchaseDate); var tmp0 = date.ToString("yyyy-MM-dd"); var tmp1 = dateNow.ToLongTimeString().ToString(); purchaseDate = tmp0 + " " + tmp1; date = Convert.ToDateTime(purchaseDate); t.UpdateDate = date; } t.Remark = remark; listTwh.Add(t); var purorderdtl = db.tpurorderdtl .Where(p => p.PurOrderNO == purOrderNO && p.PdtID == pdtId && p.SeqNo == seqNo).FirstOrDefault(); if (purorderdtl.LftNum > 0) { float num = (float)purorderdtl.LftNum - lftNum; float delNum = (float)purorderdtl.OrderNum - num; db.tpurorderdtl.Where(p => p.PurOrderNO == purOrderNO && p.PdtID == pdtId && p.SeqNo == seqNo) .Update(p => new tpurorderdtl { LftNum = num, DelNum = delNum, UpdateDate = DateTime.Now }); if (num == 0) { purorderdtl.State = "F"; } else { fNum++; } } } var repeat = listStoc.GroupBy(s => s.pdtID).Select(s => new { pdtID = s.Key, lftNum = s.Sum(a => a.lftNum) }); foreach (var r in repeat) { if (twhinventoryExists(warId, r.pdtID)) { //var repeatUpdate = listStoc.GroupBy(s => s.pdtID).Select(s => new //{ // pdtID = s.Key, // lftNum = s.Sum(a => a.lftNum) //}).Where(s => s.pdtID == r.pdtID).FirstOrDefault(); //float lftNum = repeatUpdate.lftNum; var inventory = db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == r.pdtID).FirstOrDefault(); float total = (float)inventory.InvNum + r.lftNum; db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == r.pdtID) .Update(inv => new twhinventory() { InvNum = total, UpdateDate = DateTime.Now }); } else { //var query = listStoc.GroupBy(x => x.pdtID).Where(g => g.Count() > 1 && g.Key == pdtId).Select(y => y.Key).ToList(); //if (query.Count > 0) lftNum = 0; //var repeatAdd = listStoc.GroupBy(s => s.pdtID).Select(s => new //{ // pdtID = s.Key, // lftNum = s.Sum(a => a.lftNum) //}).Where(s => s.pdtID == r.pdtID).FirstOrDefault(); //float lftNum = repeatAdd.lftNum; twhinventory inv = new twhinventory(); inv.WHID = warId; inv.AreaID = "0"; inv.PosiID = "0"; inv.PdtID = r.pdtID; inv.InvNum = r.lftNum; inv.UpdateDate = DateTime.Now; db.twhinventory.Add(inv); } } //部分入库时fNum也会是0,这种情况下用fNum判断会有问题 //if (fNum == 0) //{ // db.tpurorder.Where(p => p.PurOrderNO == purOrderNO) // .Update(p => new tpurorder() { State = "F", UpdateDate = DateTime.Now }); //} //全部入库完成后才修改单头状态为F db.SaveChanges(); var isNotFinish = db.tpurorderdtl.AsNoTracking().Any(w => w.PurOrderNO == purOrderNO && (w.State == "N" || w.State == null)); if (!isNotFinish) { db.tpurorder.Where(s => s.PurOrderNO == purOrderNO) .Update(p => new tpurorder() { State = "F", UpdateDate = DateTime.Now }); } db.twhstockrecords.AddRange(listTwh); db.SaveChanges(); tran.Commit(); excelHelper.SaveInWarInfo(purOrderNO, warId, purchaseDate, listWr, no); } catch (Exception ex) { tran.Rollback(); return(new PageResult(ex.ToString(), Request)); } } return(Content <string>(HttpStatusCode.OK, "OK")); }
public IHttpActionResult PostOutWar() { HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"]; HttpRequestBase request = context.Request; JavaScriptSerializer js = new JavaScriptSerializer(); string saleOrderNo = request.Params["saleOrderNo"]; string warId = request.Params["warId"]; string deliveryDate = request.Params["deliveryDate"]; List <Stockrecords> listStoc = js.Deserialize <List <Stockrecords> >(request.Params["salorderdtl"]); List <OutboundOrder> listOdo = js.Deserialize <List <OutboundOrder> >(request.Params["salorderdtl"]); List <twhstockrecords> listTwh = new List <twhstockrecords>(); string no = ""; using (var tran = db.Database.BeginTransaction()) { try { var repeat = listStoc.GroupBy(s => s.pdtID).Select(s => new { pdtID = s.Key, lftNum = s.Sum(a => a.lftNum), invNum = s.Where(a => a.pdtID == s.Key).Select(a => a.invNum).FirstOrDefault() }); foreach (var r in repeat) { if (r.lftNum > r.invNum) { return(new PageResult("库存不足", Request)); } } no = saleOrderNo + DateTime.Now.ToString("HHmmss"); for (int i = 0; i < listStoc.Count; i++) { int seqNo = listStoc[i].seqNo; string pdtId = listStoc[i].pdtID; float lftNum = listStoc[i].lftNum; string remark = listStoc[i].remark; twhstockrecords t = new twhstockrecords(); t.WHID = warId; t.AreaID = i.ToString(); t.PosiID = i.ToString(); t.PdtID = pdtId; t.Num = lftNum; t.RefWHID = i.ToString(); t.RefAreaID = i.ToString(); t.RefPosiID = i.ToString(); t.OpeType = "O"; t.SaleOrderNO = saleOrderNo; t.RefSeqNo = seqNo; t.No = no; var dateNow = DateTime.Now; t.CreateDate = dateNow; t.UpdateDate = dateNow; if (!string.IsNullOrEmpty(deliveryDate)) { DateTime date = Convert.ToDateTime(deliveryDate); var tmp0 = date.ToString("yyyy-MM-dd"); var tmp1 = dateNow.ToLongTimeString().ToString(); deliveryDate = tmp0 + " " + tmp1; date = Convert.ToDateTime(deliveryDate); t.UpdateDate = date; } t.Remark = remark; listTwh.Add(t); var tsaleorderdtl = db.tsaleorderdtl .Where(s => s.SaleOrderNO == saleOrderNo && s.PdtID == pdtId && s.SeqNo == seqNo).FirstOrDefault(); if (tsaleorderdtl.LftNum > 0) { float num = (float)tsaleorderdtl.LftNum - lftNum; float delNum = (float)tsaleorderdtl.OrderNum - num; db.tsaleorderdtl.Where(s => s.SaleOrderNO == saleOrderNo && s.PdtID == pdtId && s.SeqNo == seqNo) .Update(p => new tsaleorderdtl { LftNum = num, DelNum = delNum, UpdateDate = DateTime.Now }); if (num <= 0) { tsaleorderdtl.State = "F"; } } if (twhinventoryExists(warId, pdtId)) { var r = listStoc.GroupBy(s => s.pdtID).Select(s => new { pdtID = s.Key, lftNum = s.Sum(a => a.lftNum) }).Where(s => s.pdtID == pdtId).FirstOrDefault(); lftNum = r.lftNum; var inventory = db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == pdtId).FirstOrDefault(); float total = (float)inventory.InvNum - lftNum; db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == pdtId) .Update(inv => new twhinventory() { InvNum = total, UpdateDate = DateTime.Now }); } //else //{ // twhinventory inv = new twhinventory(); // inv.WHID = warId; // inv.AreaID = i.ToString(); // inv.PosiID = i.ToString(); // inv.PdtID = pdtId; // inv.InvNum = lftNum; // inv.UpdateDate = DateTime.Now; // db.twhinventory.Add(inv); //} } db.SaveChanges(); var isNotFinish = db.tsaleorderdtl.AsNoTracking().Any(w => w.SaleOrderNO == saleOrderNo && (w.State == "N" || w.State == null)); if (!isNotFinish) { db.tsaleorder.Where(s => s.SaleOrderNO == saleOrderNo) .Update(p => new tsaleorder() { State = "F", UpdateDate = DateTime.Now }); } db.twhstockrecords.AddRange(listTwh); db.SaveChanges(); tran.Commit(); excelHelper.SaveOutWarInfo(saleOrderNo, warId, deliveryDate, listOdo, no); } catch (Exception ex) { tran.Rollback(); return(new PageResult(ex.ToString(), Request)); } } return(Content <string>(HttpStatusCode.OK, "OK")); }
/// <summary> /// 取消采购清单入库 /// 采购订单数量状态恢复,出入库记录标记为”C,取消“,没有的话加个列, 库存数量恢复。 /// </summary> /// <param name="purOrderNo"></param> /// <returns></returns> public int CancelPurOrderStockIn(string purOrderNo, string userID, string NegativeInventory, out string errPdtID, out string errWHID) { int ret = 0; errPdtID = ""; errWHID = ""; using (var tran = erpsEntities.Database.BeginTransaction()) { try { // 1 修改订单明表内容 var purOrder = erpsEntities.tpurorder.AsNoTracking().Where(x => x.PurOrderNO.Equals(purOrderNo)).ToList(); if (purOrder.Count < 1) { return(ret); } var purodr = purOrder.FirstOrDefault <tpurorder>(); purodr.State = "N"; //purodr.UpdateID = userID; //purodr.UpdateDate = DateTime.Now; //erpsEntities.tpurorder.Attach(purodr); erpsEntities.Entry(purodr).State = EntityState.Unchanged; erpsEntities.Entry(purodr).Property(x => x.State).IsModified = true; // 修改订单明细内容 var purodrdtls = erpsEntities.tpurorderdtl.AsNoTracking().Where(x => x.PurOrderNO.Equals(purOrderNo)).ToList(); for (int i = 0; i < purodrdtls.Count; i++) { purodrdtls[i].DelNum = 0; purodrdtls[i].LftNum = purodrdtls[i].OrderNum; purodrdtls[i].State = "N"; //erpsEntities.tpurorderdtl.Attach(purodrdtls[i]); //purodrdtls[i].UpdateDate = DateTime.Now; erpsEntities.Entry(purodrdtls[i]).State = EntityState.Unchanged; erpsEntities.Entry(purodrdtls[i]).Property(x => x.DelNum).IsModified = true; erpsEntities.Entry(purodrdtls[i]).Property(x => x.LftNum).IsModified = true; erpsEntities.Entry(purodrdtls[i]).Property(x => x.State).IsModified = true; } string whid = ""; string pdtid = ""; float invNum = 0; var date = DateTime.Now; var stockrcds = erpsEntities.twhstockrecords.AsNoTracking().Where(w => w.PurOrderNO.Equals(purOrderNo) && w.State != "C").ToList(); for (int i = 0; i < stockrcds.Count; i++) { whid = stockrcds[i].WHID; pdtid = stockrcds[i].PdtID; // 1 修改出入库记录表 stockrcds[i].State = "C"; //状态 stockrcds[i].UpdateDate = date; //stockrcds[i].UpdateID = userID; erpsEntities.Entry(stockrcds[i]).State = EntityState.Unchanged; erpsEntities.Entry(stockrcds[i]).Property(x => x.State).IsModified = true; erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateDate).IsModified = true; //erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateID).IsModified = true; // 2, 修改库存表 //var invrcds = erpsEntities.twhinventory.Where(w => w.WHID.Equals(whid) && w.PdtID.Equals(pdtid)).AsNoTracking().ToList(); //if (invrcds.Count > 0) //{ // var invrcd = invrcds.FirstOrDefault<twhinventory>(); // invrcd.InvNum = invrcd.InvNum - stockrcds[i].Num; // erpsEntities.Entry(invrcd).State = EntityState.Unchanged; // erpsEntities.Entry(invrcd).Property(x => x.InvNum).IsModified = true; //} twhstockrecords tmpstockrcds = new twhstockrecords(); tmpstockrcds.AreaID = stockrcds[i].AreaID; tmpstockrcds.No = stockrcds[i].No; tmpstockrcds.Num = stockrcds[i].Num; tmpstockrcds.PdtID = stockrcds[i].PdtID; tmpstockrcds.PosiID = stockrcds[i].PosiID; tmpstockrcds.PurOrderNO = stockrcds[i].PurOrderNO; tmpstockrcds.RefAreaID = stockrcds[i].RefAreaID; tmpstockrcds.RefPosiID = stockrcds[i].RefPosiID; tmpstockrcds.RefSeqNo = stockrcds[i].RefSeqNo; tmpstockrcds.RefWHID = stockrcds[i].RefWHID; tmpstockrcds.Remark = stockrcds[i].Remark; tmpstockrcds.SaleOrderNO = stockrcds[i].SaleOrderNO; tmpstockrcds.WHID = stockrcds[i].WHID; tmpstockrcds.State = "C"; tmpstockrcds.OpeType = "IC"; tmpstockrcds.CreateDate = date; tmpstockrcds.UpdateID = userID; tmpstockrcds.UpdateDate = date; erpsEntities.twhstockrecords.Add(tmpstockrcds); } //var stockrcdsGroupByWhIDPdtID = erpsEntities.twhstockrecords.Where(w => w.PurOrderNO.Equals(purOrderNo) && w.State != "C") // .GroupBy(a => new { a.WHID, a.PdtID }).Select(g => new { InvKey = g.Key, InvNum = g.Sum(itm => itm.Num) }).ToList(); var stockrcdsGroupByWhIDPdtID = (from a in erpsEntities.twhstockrecords where a.PurOrderNO == purOrderNo && a.State != "C" group a by new { a.WHID, a.PdtID } into gg select new { WHID = gg.Key.WHID, PdtID = gg.Key.PdtID, InvNum = gg.Sum(c => c.Num) }).AsNoTracking().ToList(); for (int i = 0; i < stockrcdsGroupByWhIDPdtID.Count; i++) { whid = stockrcdsGroupByWhIDPdtID[i].WHID; pdtid = stockrcdsGroupByWhIDPdtID[i].PdtID; invNum = stockrcdsGroupByWhIDPdtID[i].InvNum.Value; // 2, 修改库存表 var invrcds = erpsEntities.twhinventory.Where(w => w.WHID.Equals(whid) && w.PdtID.Equals(pdtid)).AsNoTracking().ToList(); if (invrcds.Count > 0) { var invrcd = invrcds.FirstOrDefault <twhinventory>(); invrcd.InvNum = invrcd.InvNum - invNum; if (invrcd.InvNum < 0 && NegativeInventory != "Y") { ret = -9; errPdtID = pdtid; errWHID = whid; break; } erpsEntities.Entry(invrcd).State = EntityState.Unchanged; erpsEntities.Entry(invrcd).Property(x => x.InvNum).IsModified = true; } } if (ret == -9) { tran.Rollback(); } else { ret = erpsEntities.SaveChanges(); tran.Commit(); if (ret > 0) { ret = 1; } } return(ret); } catch (Exception ex) { tran.Rollback(); ret = -1; throw ex; } } }
public IHttpActionResult Posttwhcheckrecords() { HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"]; HttpRequestBase request = context.Request; JavaScriptSerializer js = new JavaScriptSerializer(); string chkNO = request.Params["chkNO"]; string warId = request.Params["warId"]; string chkDate = request.Params["chkDate"]; string remark = request.Params["remark"]; string updateId = request.Params["updateId"]; List <twhcheckrecorddtl> listTwhDtl = js.Deserialize <List <twhcheckrecorddtl> >(request.Params["listTwhDtl"]); List <twhstockrecords> listStock = new List <twhstockrecords>(); using (var tran = db.Database.BeginTransaction()) { try { if (twhcheckrecordsExists(chkNO)) { db.twhcheckrecords.Where(c => c.ChkNO == chkNO) .Update(c => new twhcheckrecords { ChkStatus = "F", UpdateID = updateId, Remark = remark, UpdateDate = DateTime.Now }); } else { twhcheckrecords t = new twhcheckrecords(); t.ChkNO = chkNO; t.WHID = warId; t.ChkDate = DateTime.Parse(chkDate); t.Remark = remark; t.ChkStatus = "F"; t.AreaID = "1"; t.PosiID = "1"; t.UpdateID = updateId; t.UpdateDate = DateTime.Parse(chkDate); db.twhcheckrecords.Add(t); } for (int i = 0; i < listTwhDtl.Count; i++) { string ChkNO = listTwhDtl[i].ChkNO = chkNO; string PdtID = listTwhDtl[i].PdtID; float InvNum = listTwhDtl[i].InvNum; float RealNum = listTwhDtl[i].RealNum; float DifNum = listTwhDtl[i].DifNum; twhstockrecords stockrecords = new twhstockrecords(); stockrecords.WHID = warId; stockrecords.AreaID = "1"; stockrecords.PosiID = "1"; stockrecords.PdtID = listTwhDtl[i].PdtID; stockrecords.RefWHID = warId; stockrecords.RefAreaID = "1"; stockrecords.RefPosiID = "1"; stockrecords.UpdateID = updateId; var date = DateTime.Now; stockrecords.UpdateDate = date; stockrecords.CreateDate = date; //调整库存前先锁住行 //string sqlQuery = "select * from twhinventory where whid ='" + warId + "' and pdtid='" + PdtID + "' for update"; //var inventory = db.twhinventory.SqlQuery(sqlQuery).FirstOrDefault(); var inventory = db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == PdtID).FirstOrDefault(); float invNum = (float)inventory.InvNum; if (listTwhDtl[i].DifNum == 0) { break; } if (listTwhDtl[i].DifNum > 0) { stockrecords.Num = listTwhDtl[i].DifNum; stockrecords.OpeType = "Y"; db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == PdtID) .Update(inv => new twhinventory { InvNum = RealNum }); } else { stockrecords.Num = Math.Abs(listTwhDtl[i].DifNum); stockrecords.OpeType = "K"; db.twhinventory.Where(inv => inv.WHID == warId && inv.PdtID == PdtID) .Update(inv => new twhinventory { InvNum = RealNum }); } if (twhcheckrecorddtlExists(ChkNO, PdtID)) { db.twhcheckrecorddtl.Where(c => c.ChkNO == ChkNO && c.PdtID == PdtID) .Update(c => new twhcheckrecorddtl { InvNum = InvNum, RealNum = RealNum, DifNum = DifNum, UpdateID = updateId, UpdateDate = DateTime.Now, AdjStatus = "F" }); } else { twhcheckrecorddtl tw = new twhcheckrecorddtl(); listTwhDtl[i].ChkNO = chkNO; listTwhDtl[i].AdjStatus = "F"; listTwhDtl[i].UpdateID = updateId; tw = listTwhDtl[i]; db.twhcheckrecorddtl.Add(tw); } listStock.Add(stockrecords); } db.twhstockrecords.AddRange(listStock); db.SaveChanges(); tran.Commit(); } catch (Exception ex) { tran.Rollback(); return(new PageResult("error", Request)); } } return(Content <string>(HttpStatusCode.OK, "OK")); }
/// <summary> /// 取消销售订单出库 /// 销售订单数量状态恢复,出入库记录标记为”C,取消“,没有的话加个列, 库存数量恢复。 /// </summary> /// <param name="saleOrderNo"></param> /// <returns></returns> public int CancelPurOrderStockIn(string saleOrderNo, string userID) { int ret = 0; using (var tran = erpsEntities.Database.BeginTransaction()) { try { // 1 修改订单明细表内容 var saleOrder = erpsEntities.tsaleorder.AsNoTracking().Where(x => x.SaleOrderNO.Equals(saleOrderNo)).ToList(); if (saleOrder.Count < 1) { return(ret); } var salodr = saleOrder.FirstOrDefault <tsaleorder>(); salodr.State = "N"; salodr.UpdateID = userID; salodr.UpdateDate = DateTime.Now; erpsEntities.Entry(salodr).State = EntityState.Unchanged; erpsEntities.Entry(salodr).Property(x => x.State).IsModified = true; erpsEntities.Entry(salodr).Property(x => x.UpdateID).IsModified = true; erpsEntities.Entry(salodr).Property(x => x.UpdateDate).IsModified = true; // 修改订单明细内容 var saleodrdtls = erpsEntities.tsaleorderdtl.AsNoTracking().Where(x => x.SaleOrderNO.Equals(saleOrderNo)).ToList(); for (int i = 0; i < saleodrdtls.Count; i++) { saleodrdtls[i].DelNum = 0; saleodrdtls[i].LftNum = saleodrdtls[i].OrderNum; saleodrdtls[i].State = "N"; saleodrdtls[i].UpdateID = userID; saleodrdtls[i].UpdateDate = DateTime.Now; erpsEntities.Entry(saleodrdtls[i]).State = EntityState.Unchanged; erpsEntities.Entry(saleodrdtls[i]).Property(x => x.DelNum).IsModified = true; erpsEntities.Entry(saleodrdtls[i]).Property(x => x.LftNum).IsModified = true; erpsEntities.Entry(saleodrdtls[i]).Property(x => x.State).IsModified = true; erpsEntities.Entry(saleodrdtls[i]).Property(x => x.UpdateID).IsModified = true; erpsEntities.Entry(saleodrdtls[i]).Property(x => x.UpdateDate).IsModified = true; } string whid = ""; string pdtid = ""; float invNum = 0; var date = DateTime.Now; var stockrcds = erpsEntities.twhstockrecords.AsNoTracking().Where(w => w.SaleOrderNO.Equals(saleOrderNo) && w.State != "C").ToList(); for (int i = 0; i < stockrcds.Count; i++) { // 1 修改出入库记录表 stockrcds[i].State = "C"; //状态 //stockrcds[i].UpdateID = userID; stockrcds[i].UpdateDate = date; erpsEntities.Entry(stockrcds[i]).State = EntityState.Unchanged; erpsEntities.Entry(stockrcds[i]).Property(x => x.State).IsModified = true; //erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateID).IsModified = true; erpsEntities.Entry(stockrcds[i]).Property(x => x.UpdateDate).IsModified = true; twhstockrecords tmpstockrcds = new twhstockrecords(); tmpstockrcds.AreaID = stockrcds[i].AreaID; tmpstockrcds.No = stockrcds[i].No; tmpstockrcds.Num = stockrcds[i].Num; tmpstockrcds.PdtID = stockrcds[i].PdtID; tmpstockrcds.PosiID = stockrcds[i].PosiID; tmpstockrcds.PurOrderNO = stockrcds[i].PurOrderNO; tmpstockrcds.RefAreaID = stockrcds[i].RefAreaID; tmpstockrcds.RefPosiID = stockrcds[i].RefPosiID; tmpstockrcds.RefSeqNo = stockrcds[i].RefSeqNo; tmpstockrcds.RefWHID = stockrcds[i].RefWHID; tmpstockrcds.Remark = stockrcds[i].Remark; tmpstockrcds.SaleOrderNO = stockrcds[i].SaleOrderNO; tmpstockrcds.WHID = stockrcds[i].WHID; tmpstockrcds.State = "C"; tmpstockrcds.OpeType = "IO"; tmpstockrcds.CreateDate = date; tmpstockrcds.UpdateID = userID; tmpstockrcds.UpdateDate = date; erpsEntities.twhstockrecords.Add(tmpstockrcds); } var invrcdsGroups = stockrcds.GroupBy(g => new { PdtID = g.PdtID, WHID = g.WHID }) .Select(s => new { PdtID = s.Key.PdtID, WHID = s.Key.WHID, InvNum = s.Sum(m => m.Num) }).ToList(); for (int i = 0; i < invrcdsGroups.Count; i++) { whid = invrcdsGroups[i].WHID; pdtid = invrcdsGroups[i].PdtID; invNum = invrcdsGroups[i].InvNum.Value; // 2, 修改库存表 var invrcds = erpsEntities.twhinventory.AsNoTracking().Where(w => w.WHID.Equals(whid) && w.PdtID.Equals(pdtid)).ToList(); if (invrcds.Count > 0) { var invrcd = invrcds.FirstOrDefault <twhinventory>(); invrcd.InvNum = invrcd.InvNum + invNum; erpsEntities.Entry(invrcd).State = EntityState.Unchanged; erpsEntities.Entry(invrcd).Property(x => x.InvNum).IsModified = true; } } ret = erpsEntities.SaveChanges(); tran.Commit(); if (ret > 0) { ret = 1; } return(ret); } catch (Exception ex) { tran.Rollback(); ret = -1; throw ex; } } }