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) }); //} }
/// <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); } }