public async Task <IActionResult> Post([FromBody] StoreOutDto value)
        {
            if (value.Storeout != null && value.StoreoutList != null)
            {
                if (_kcStoreoutRpt.Exist(f => f.OrderNo == value.Storeout.OrderNo))
                {
                    return(BadRequest($"出库单号{value.Storeout.OrderNo}已经存在。"));
                }
                var storeOut = value.Storeout;
                storeOut.CreatedAt = DateTime.Now;
                storeOut.UpdatedAt = DateTime.Now;
                storeOut.IsValid   = true;
                storeOut.Status    = "正常";
                if (User.Identity is ClaimsIdentity identity)
                {
                    storeOut.CreatedBy = identity.Name ?? "admin";
                }
                //storeOut.OrderNo = GetOrderNo();
                using (var tran = _context.Database.BeginTransaction())
                {
                    try
                    {
                        //入库单
                        _kcStoreoutRpt.Add(storeOut);
                        _kcStoreoutRpt.Commit();
                        foreach (var store in value.StoreoutList)
                        {
                            //入库明细
                            store.orderno = storeOut.OrderNo;
                            _kcStoreoutlistRpt.Add(store);
                            _kcStoreoutlistRpt.Commit();

                            //更新库存(仓库,货位,产品)
                            var kucun = _kcStoreRpt.GetSingle(f =>
                                                              f.GoodsId == store.GoodsId && f.StoreId == storeOut.StoreId && f.BatchNo == store.batchno);
                            if (kucun != null)
                            {
                                kucun.Amount = kucun.Amount - store.amount;
                                kucun.Number = kucun.Number - store.number;
                            }
                            _kcStoreRpt.Commit();
                        }
                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        return(BadRequest(ex.Message));
                    }
                }
                return(new NoContentResult());
            }
            return(new BadRequestResult());
        }
Пример #2
0
 public async Task <IActionResult> Post([FromBody] kc_storeoutlist value)
 {
     _kcStoreoutlistRpt.Add(value);
     _kcStoreoutlistRpt.Commit();
     return(new OkObjectResult(value));
 }