public async Task <IActionResult> DeleteConfirmed(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ResultObject resultObj;

            try
            {
                if (_cache.TryGetValue("CACHE_MASTER_WAREHOUSE", out List <M_Warehouse> c_lstWh))
                {
                    var m_Warehouse = c_lstWh.Find(w => w.Id == id);

                    if (m_Warehouse == null)
                    {
                        return(NotFound());
                    }

                    m_Warehouse.Updated_By = await base.CurrentUserId();

                    using (var whBll = new WarehouseBLL())
                    {
                        resultObj = await whBll.DeleteWarehouse(m_Warehouse);

                        _cache.Remove("CACHE_MASTER_WAREHOUSE");
                    }

                    return(Json(new { success = true, data = (M_Warehouse)resultObj.ObjectValue, message = "Warehouse Deleted." }));
                }

                using (var whBll = new WarehouseBLL())
                {
                    var lstWh = await whBll.GetWarehouse(id);

                    var m_Warehouse = lstWh.First();

                    if (m_Warehouse == null)
                    {
                        return(NotFound());
                    }

                    m_Warehouse.Updated_By = await base.CurrentUserId();

                    resultObj = await whBll.DeleteWarehouse(m_Warehouse);

                    _cache.Remove("CACHE_MASTER_WAREHOUSE");
                }

                return(Json(new { success = true, data = (M_Warehouse)resultObj.ObjectValue, message = "Warehouse Deleted." }));
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, message = ex.Message }));
            }
        }
        // GET: Master/Warehouse/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ViewBag.CompCode = base.CurrentUserComp();

            try
            {
                if (_cache.TryGetValue("CACHE_MASTER_WAREHOUSE", out List <M_Warehouse> c_lstWh))
                {
                    var m_Warehouse = c_lstWh.Find(w => w.Id == id);

                    if (m_Warehouse == null)
                    {
                        return(NotFound());
                    }

                    return(PartialView(m_Warehouse));
                }

                using (var whBll = new WarehouseBLL())
                {
                    var lstWh = await whBll.GetWarehouse(id);

                    var m_Warehouse = lstWh.First();

                    if (m_Warehouse == null)
                    {
                        return(NotFound());
                    }

                    return(PartialView(m_Warehouse));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(new { success = false, message = ex.Message }));
            }
        }
        public async Task <IActionResult> GetWarehouse()
        {
            try
            {
                if (_cache.TryGetValue("CACHE_MASTER_WAREHOUSE", out List <M_Warehouse> c_lstWh))
                {
                    return(Json(new { data = c_lstWh }));
                }

                MemoryCacheEntryOptions options = new MemoryCacheEntryOptions
                {
                    AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(300),
                    SlidingExpiration = TimeSpan.FromSeconds(60),
                    Priority          = CacheItemPriority.NeverRemove
                };

                using (var whBll = new WarehouseBLL())
                {
                    var lstWh = await whBll.GetWarehouse(null);

                    _cache.Set("CACHE_MASTER_WAREHOUSE", lstWh, options);

                    return(Json(new { data = lstWh }));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(new { success = false, message = ex.Message }));
            }

            //Warehouse DbContext
            //using (var whBll = new WarehouseBLL())
            //{
            //    return Json(new { data = await whBll.GetWarehouse(null) });
            //}
        }
Пример #4
0
        /// <summary>
        /// 收货单快速收货
        /// </summary>
        /// <param name="receipt"></param>
        /// <returns></returns>
        public bool ReceiptQuickReceive(ReceiptEntity receipt)
        {
            IDatabase     database    = DataFactory.Database();
            DbTransaction isOpenTrans = database.BeginTrans();

            try
            {
                var warehouse = _warehouseBLL.GetWarehouse(receipt.WarehouseId);
                if (string.IsNullOrWhiteSpace(warehouse?.ReceiptLocationId))
                {
                    throw new Exception("该仓库没有设置默认的收货储位");
                }

                var location = _warehouseLocationBLL.GetLocation(warehouse.WarehouseId, warehouse.ReceiptLocationId);
                if (string.IsNullOrWhiteSpace(location?.Code))
                {
                    throw new Exception("该仓库没有设置默认的收货储位");
                }

                var receiptItemList = _receiptBll.GetReceiptItemList(receipt.ReceiptId);

                List <ReceiptRecordEntity> record = new List <ReceiptRecordEntity>();
                foreach (var receiptItemEntity in receiptItemList)
                {
                    var recordItem = new ReceiptRecordEntity();
                    recordItem.Create();
                    recordItem.ReceiptId     = receipt.ReceiptId;
                    recordItem.ReceiptItemId = receiptItemEntity.ItemId;
                    recordItem.ReceivedQty   = receiptItemEntity.Qty;
                    recordItem.ProductId     = receiptItemEntity.ProductId;
                    recordItem.LocationCode  = location.Code;
                    recordItem.LocationId    = location.LocationId;
                    recordItem.Status        = 0;
                    record.Add(recordItem);
                }

                if (record.Count == 0)
                {
                    throw new Exception("没有有效的收货记录");
                }

                foreach (var receiptRecordEntity in record)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendFormat("UPDATE [Receipt_Item] SET ReceivedQty = ReceivedQty + {0} WHERE ItemId = '{1}'",
                                    receiptRecordEntity.ReceivedQty.ToString(), receiptRecordEntity.ReceiptItemId);
                    database.ExecuteBySql(sb, isOpenTrans);

                    database.Insert(receiptRecordEntity, isOpenTrans);
                }

                record = record.OrderBy(a => a.ProductId).ThenBy(a => a.LocationCode).ToList();
                Dictionary <string, int> dicInventory = new Dictionary <string, int>();
                foreach (var receiptRecordEntity in record)
                {
                    string key = string.Format("{0}${1}", receiptRecordEntity.ProductId,
                                               receiptRecordEntity.LocationCode);
                    if (!dicInventory.ContainsKey(key))
                    {
                        dicInventory.Add(key, receiptRecordEntity.ReceivedQty);
                    }
                    else
                    {
                        dicInventory[key] = dicInventory[key] + receiptRecordEntity.ReceivedQty;
                    }
                }

                foreach (var item in dicInventory)
                {
                    string[] itemValue = item.Key.Split('$');
                    _inventoryBLL.UpdateInventoryByReceive(receipt.ReceiptNo, InventoryTransactionType.Receive, receipt.WarehouseId, itemValue[0],
                                                           receipt.MerchantId,
                                                           item.Value, isOpenTrans);

                    _inventoryLocationBLL.UpdateInventoryByMoveIn(receipt.WarehouseId, InventoryLocationTransactionType.Receive, itemValue[0], "",
                                                                  itemValue[1],
                                                                  item.Value, isOpenTrans);
                }

                receipt.Modify(receipt.ReceiptId);
                receipt.Status = (int)ReceiptStatus.Received;
                _receiptBll.UpdateReceiptStatus(receipt);

                database.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                database.Rollback();
                return(false);
            }
        }