public ActionResult Create() { ReceiptNoteSelfMadeModels model = new ReceiptNoteSelfMadeModels(); model.StoreId = CurrentUser.StoreId; return(View(model)); }
public ActionResult AddReceiptNoteSelfMade(ReceiptNoteSelfMadeModels data) { ReceiptNoteSelfMadeModels model = new ReceiptNoteSelfMadeModels(); int OffSet = 0; model.ListItem = new List <ReceiptNoteSelfMadeDetailModels>(); List <string> lstWOIds = new List <string>(); if (data.ListItem != null && data.ListItem.Count > 0) { model.ListItem = data.ListItem; //OffSet = data.ListItem.Count; OffSet = OffSet++; lstWOIds = model.ListItem.Where(ww => !string.IsNullOrEmpty(ww.WOId)).Select(x => x.WOId).ToList(); } if (lstWOIds == null) { lstWOIds = new List <string>(); } foreach (var item in data.ListWorkOrder) { if (!lstWOIds.Contains(item.Id)) { var ListItemDetail = _factory.GetData(item.Id); //if (IngredientIds.Count > 0) //{ // ListItemDetail = ListItemDetail.Where(x => !IngredientIds.Contains(x.IngredientId) && x.WOId == item.Id).ToList(); //} //item.ListItemForRN= ListItemDetail; foreach (var ItemDetail in ListItemDetail) { model.ListItem.Add(new ReceiptNoteSelfMadeDetailModels { WOId = item.Id, WONumber = item.WONumber, Id = ItemDetail.Id, IngredientId = ItemDetail.IngredientId, IngredientName = ItemDetail.IngredientName, IngredientCode = ItemDetail.IngredientCode, Qty = ItemDetail.Qty, RemainingQty = ItemDetail.RemainingQty, //IsActived = ItemDetail.IsActived, //BaseReceivingQty = ItemDetail.BaseReceivingQty, IsSelfMode = ItemDetail.IsSelfMode, IsStockAble = ItemDetail.IsStockAble, ReceivingQty = ItemDetail.ReceivingQty, BaseQty = ItemDetail.BaseQty, BaseUOM = ItemDetail.BaseUOM, Status = (byte)Commons.EStatus.Actived, OffSet = OffSet++ }); } } } return(PartialView("_ListItem", model)); }
public ActionResult LoadIngredient() { var lstComId = GetListCompany().Select(ss => ss.Value).ToList(); ReceiptNoteSelfMadeModels model = new ReceiptNoteSelfMadeModels(); var listIng = _ingredientFactory.GetIngredientSelfMade(lstComId); foreach (var item in listIng) { var itemDetail = new ReceiptNoteSelfMadeDetailModels { BaseUOM = item.ReceivingUOMName, IngredientId = item.Id, IngredientName = item.Name, IngredientCode = item.Code, //BaseReceivingQty = item.ReceivingQty, BaseQty = item.ReceivingQty, IsSelfMode = item.IsSelfMode, IsStockAble = item.IsStockable, }; model.ListItemForSelect.Add(itemDetail); } model.ListItemForSelect = model.ListItemForSelect.OrderByDescending(x => x.IsActived ? 1 : 0).ThenBy(x => x.IngredientName).ToList(); return(PartialView("_TableChooseIngredient", model)); }
public ActionResult LoadWorkOrder(/*string StoreId, string WONo, */ ReceiptNoteSelfMadeModels data) { ReceiptNoteSelfMadeModels model = new ReceiptNoteSelfMadeModels(); model.ListWorkOrder = _factory.LoadWOForRN(data.StoreId, null, data.WONo); model.ListItem = data.ListItem; return(PartialView("_ListWO", model)); }
public ActionResult LoadDetail(string ReceiptNoteSelfMadeId) { var model = new ReceiptNoteSelfMadeModels(); try { model = _factory.GetReceiptNoteSelfMadeById(ReceiptNoteSelfMadeId); model.StoreName = lstStore.Where(x => x.Value.Equals(model.StoreId)).FirstOrDefault().Text; } catch (Exception ex) { _logger.Error(ex); return(new HttpStatusCodeResult(400, ex.Message)); } return(PartialView("_PopUpDetail", model)); }
public ActionResult AddIngredient(ReceiptNoteSelfMadeModels data) { ReceiptNoteSelfMadeModels model = new ReceiptNoteSelfMadeModels(); model.ListItem = new List <ReceiptNoteSelfMadeDetailModels>(); int OffSet = 0; foreach (var item in data.ListItem) { var itemDetail = new ReceiptNoteSelfMadeDetailModels { Id = item.Id, WOId = item.WOId, WONumber = item.WONumber, IngredientId = item.IngredientId, IngredientName = item.IngredientName, IngredientCode = item.IngredientCode, IsActived = item.IsActived, BaseReceivingQty = item.BaseReceivingQty, IsSelfMode = item.IsSelfMode, IsStockAble = item.IsStockAble, ReceivingQty = item.ReceivingQty, BaseQty = item.ReceivingQty, BaseUOM = item.BaseUOM, Status = (byte)Commons.EStatus.Actived, Qty = item.Qty, RemainingQty = item.RemainingQty, OffSet = OffSet++ }; model.ListItem.Add(itemDetail); } return(PartialView("_ListItem", model)); }
public ActionResult Create(ReceiptNoteSelfMadeModels model) { try { model.ListItemForSelect = null; RecipeIngredientUsageModels _objIngredientDependent = null; model.CreatedBy = CurrentUser.UserName; model.UpdatedBy = CurrentUser.UserName; model.ReceiptBy = CurrentUser.UserName; model.CreatedDate = DateTime.Now; model.UpdatedDate = DateTime.Now; model.ReceiptDate = DateTime.Now; string msg = ""; model.ListItem = model.ListItem.Where(x => x.Status != (int)Commons.EStatus.Deleted && x.Status != null).ToList(); //Check stock before save //var lstIngredientSeftMadeIds = model.ListItem.Where(ww => ww.IsSelfMode && ww.IsStockAble).Select(ss => ss.IngredientId).ToList(); var lstIngredientSeftMade = model.ListItem.Where(ww => ww.IsSelfMode && ww.IsStockAble).ToList(); if (lstIngredientSeftMade != null && lstIngredientSeftMade.Any()) { double currentQty = 0; string mess = string.Empty; //List<string> lstIngredientName = new List<string>(); List <ErrorEnoughModels> lstIngredientName = new List <ErrorEnoughModels>(); _objIngredientDependent = _recipeFactory.GetRecipesByIngredientSeftMade(lstIngredientSeftMade); bool resultCheck = _inventoryFactory.CheckStockBeforeRNSeftMade(model.StoreId, _objIngredientDependent.ListChilds , ref currentQty, ref lstIngredientName); if (!resultCheck) { if (lstIngredientName != null && lstIngredientName.Any()) { foreach (var item in lstIngredientName) { if (item.ListIngredientNameNotEnough != null && item.ListIngredientNameNotEnough.Count > 1) { mess = string.Format("Stock of [{0}] are not enough", string.Join(", ", item.ListIngredientNameNotEnough.ToArray())); } else { mess = string.Format("Stock of [{0}] is not enough", string.Join(", ", item.ListIngredientNameNotEnough.ToArray())); } ModelState.AddModelError("error_msg" + item.MixIngredientId, mess); } } // if (lstIngredientName != null && lstIngredientName.Count > 1) //{ // mess = string.Format("Stock of [{0}] are not enough", string.Join(", ",lstIngredientName.ToArray())); //} //else // mess = string.Format("Stock of [{0}] is not enough", string.Join(", ", lstIngredientName.ToArray())); } } if (!ModelState.IsValid) { return(View(model)); } //check item for WO var lstWoId = model.ListItem.Where(ww => !string.IsNullOrEmpty(ww.WOId)).Select(ss => ss.WOId).ToList(); if (lstWoId != null && lstWoId.Any() && model.ListWorkOrder != null && model.ListWorkOrder.Any()) { lstWoId = lstWoId.Distinct().ToList(); model.ListWorkOrder = model.ListWorkOrder.Where(ww => lstWoId.Contains(ww.Id)).ToList(); } bool result = _factory.Insert(model, _objIngredientDependent, ref msg); if (result) { return(RedirectToAction("Index")); } else { ModelState.AddModelError("StoreId", msg); return(View("Create")); } } catch (Exception ex) { _logger.Error("ReceiptNoteSelfMade_Create: " + ex); return(new HttpStatusCodeResult(400, ex.Message)); } }
public bool Insert(ReceiptNoteSelfMadeModels model, RecipeIngredientUsageModels _objIngredientDependent, ref string msg) { NSLog.Logger.Info("InsertSelfMade", _objIngredientDependent); using (var cxt = new NuWebContext()) { using (var transaction = cxt.Database.BeginTransaction()) { try { ResultModels resultModels = new ResultModels(); List <InventoryModels> lstInventory = new List <InventoryModels>(); var item = new I_ReceiptNoteForSeftMade(); string ReceiptNoteForSeftMadeId = Guid.NewGuid().ToString(); item.Id = ReceiptNoteForSeftMadeId; item.ReceiptNo = CommonHelper.GetGenNo(Commons.ETableZipCode.ReceiptNoteSelfMade, model.StoreId); item.Status = (int)Commons.EReceiptNoteStatus.Closed; item.CreatedBy = model.CreatedBy; item.CreatedDate = model.CreatedDate; item.UpdatedBy = model.UpdatedBy; item.UpdatedDate = model.UpdatedDate; item.StoreId = model.StoreId; item.ReceiptBy = model.ReceiptBy; item.ReceiptDate = model.ReceiptDate; cxt.I_ReceiptNoteForSeftMade.Add(item); //======== Insert Receipt Work Order List <string> ListWOId = new List <string>(); List <I_ReceiptSelfMade_Work_Order> RWOModels = new List <I_ReceiptSelfMade_Work_Order>(); foreach (var RNDetailParent in model.ListWorkOrder) { RWOModels.Add(new I_ReceiptSelfMade_Work_Order { Id = Guid.NewGuid().ToString(), WorkOrderId = RNDetailParent.Id, RNSelfMadeId = ReceiptNoteForSeftMadeId, CreatedBy = model.CreatedBy, CreatedDate = model.CreatedDate, ModifierBy = model.UpdatedBy, ModifierDate = model.UpdatedDate, IsActived = true }); ListWOId.Add(RNDetailParent.Id); //Update WO detail var childs = model.ListItem.Where(ww => ww.WOId == RNDetailParent.Id).ToList(); foreach (var RNDetailChild in childs) { var itemUpdate = (from tb in cxt.I_Work_Order_Detail where tb.Id == RNDetailChild.Id select tb).FirstOrDefault(); if (itemUpdate != null) { itemUpdate.ReceiptNoteQty += RNDetailChild.ReceivingQty; //RNDetailChild.ReturnReceiptNoteQty = itemUpdate.ReturnReceiptNoteQty.HasValue ? itemUpdate.ReturnReceiptNoteQty.Value : 0; //RNDetailChild.ReceiptNoteQty = itemUpdate.ReceiptNoteQty.HasValue ? itemUpdate.ReceiptNoteQty.Value : 0; } } } if (RWOModels != null && RWOModels.Any()) { cxt.I_ReceiptSelfMade_Work_Order.AddRange(RWOModels); } //========= Change Status WO var lstObj = cxt.I_Work_Order.Where(ww => ListWOId.Contains(ww.Id)).ToList(); if (lstObj != null && lstObj.Count > 0) { //check if approve before set in progress foreach (var purchase in lstObj) { if (purchase.Status == (int)Commons.EPOStatus.Approved) { purchase.Status = (int)Commons.EPOStatus.InProgress; } } } List <I_ReceiptNoteForSeftMadeDetail> ListInsertRND = new List <I_ReceiptNoteForSeftMadeDetail>(); I_ReceiptNoteForSeftMadeDetail detail = null; List <I_ReceiptNoteForSeftMadeDependentDetail> ListDetailDependent = new List <I_ReceiptNoteForSeftMadeDependentDetail>(); I_ReceiptNoteForSeftMadeDependentDetail detailDepen = null; foreach (var RNSelfMadeDetail in model.ListItem) { detail = new I_ReceiptNoteForSeftMadeDetail(); detail.Id = Guid.NewGuid().ToString(); detail.ReceiptNoteId = ReceiptNoteForSeftMadeId; detail.ReceivingQty = RNSelfMadeDetail.ReceivingQty; detail.IsActived = true; detail.Status = (int)Commons.EStatus.Actived; detail.IngredientId = RNSelfMadeDetail.IngredientId; detail.BaseReceivingQty = (RNSelfMadeDetail.ReceivingQty * RNSelfMadeDetail.BaseQty); detail.WOId = RNSelfMadeDetail.WOId; ListInsertRND.Add(detail); if (_objIngredientDependent.ListChilds == null) { _objIngredientDependent.ListChilds = new List <RecipeIngredientUsageModels>(); } var lstChild = _objIngredientDependent.ListChilds.Where(ww => ww.MixtureIngredientId == RNSelfMadeDetail.IngredientId).ToList(); foreach (var subitem in lstChild) { detailDepen = new I_ReceiptNoteForSeftMadeDependentDetail(); detailDepen.Id = Guid.NewGuid().ToString(); detailDepen.IngredientId = subitem.Id; detailDepen.RNSelfMadeDetailId = detail.Id; detailDepen.StockOutQty = subitem.TotalUsage; detailDepen.IsActived = true; ListDetailDependent.Add(detailDepen); _objIngredientDependent.ListChilds.Remove(subitem); } //detail dependent //ListInsertRND.Add(new I_ReceiptNoteForSeftMadeDetail //{ // Id = Guid.NewGuid().ToString(), // ReceiptNoteId = ReceiptNoteForSeftMadeId, // ReceivingQty = RNSelfMadeDetail.ReceivingQty, // IsActived = true, // Status = (int)Commons.EStatus.Actived, // IngredientId = RNSelfMadeDetail.IngredientId, // BaseReceivingQty = (RNSelfMadeDetail.ReceivingQty * RNSelfMadeDetail.BaseQty) //}); if (RNSelfMadeDetail.IsSelfMode && RNSelfMadeDetail.IsStockAble) { lstInventory.Add(new InventoryModels() { StoreId = model.StoreId, IngredientId = RNSelfMadeDetail.IngredientId, Price = 0, Quantity = (RNSelfMadeDetail.ReceivingQty * RNSelfMadeDetail.BaseQty) }); } } cxt.I_ReceiptNoteForSeftMadeDetail.AddRange(ListInsertRND); cxt.I_ReceiptNoteForSeftMadeDependentDetail.AddRange(ListDetailDependent); //============= cxt.SaveChanges(); transaction.Commit(); //Auto change statu for list PO if (model.ListWorkOrder != null && model.ListWorkOrder.Any()) { _inventoryFactory.CloseWOAuto(ListWOId); } NSLog.Logger.Info("Save RNForSeftMade", model); if (lstInventory.Count > 0) { //Update List Ingredient have Properties Self-made = True and StockAble = true _inventoryFactory.UpdateInventoryForSeftMadeReceiptNoteWhenStockAbleOn(lstInventory, _objIngredientDependent, ReceiptNoteForSeftMadeId, ref resultModels); NSLog.Logger.Info(string.Format("UpdateInventoryForSeftMadeReceiptNoteWhenStockAbleOn: [{0}] - [{1}]- [{2}]", resultModels.IsOk, ReceiptNoteForSeftMadeId, resultModels.Message)); } return(true); } catch (Exception ex) { _logger.Error(ex); transaction.Rollback(); return(false); } finally { if (cxt != null) { cxt.Dispose(); } } } } }