public ActionResult Delete(TTransDet viewModel, FormCollection formCollection) { //remove use native predicate function from list, awesome, no need foreach anymore ListDetTrans.Remove(ListDetTrans.Find(ByTransDetId(viewModel.Id))); if (ListDeleteDetailTrans == null) { ListDeleteDetailTrans = new ArrayList(); } ListDeleteDetailTrans.Add(viewModel.Id); return(Content("success")); }
private void SaveTransaction(TTrans Trans, FormCollection formCollection, bool addStock, bool calculateStock, bool isEdit) { if (isEdit) { if (ListDeleteDetailTrans != null) { if (ListDeleteDetailTrans.Count > 0) { DeleteTransactionDetail(Trans, addStock, calculateStock, ListDeleteDetailTrans.ToArray()); } } } Trans.TransDets.Clear(); //save stock card TTransDet detToInsert; decimal total = 0; IList <TransDetViewModel> listDetToSave = new List <TransDetViewModel>(); TransDetViewModel detToSave = new TransDetViewModel(); foreach (TransDetViewModel det in ListDetTrans) { detToSave = new TransDetViewModel(); detToSave.IsNew = det.IsNew; if (det.IsNew) { detToInsert = new TTransDet(Trans); detToInsert.SetAssignedIdTo(Guid.NewGuid().ToString()); detToInsert.ItemId = det.TransDet.ItemId; detToInsert.ItemUomId = det.TransDet.ItemUomId; detToInsert.TransDetQty = det.TransDet.TransDetQty; detToInsert.TransDetPrice = det.TransDet.TransDetPrice; detToInsert.TransDetDisc = det.TransDet.TransDetDisc; detToInsert.TransDetTotal = det.TransDet.TransDetTotal; detToInsert.CreatedBy = User.Identity.Name; detToInsert.CreatedDate = DateTime.Now; detToInsert.DataStatus = Enums.EnumDataStatus.New.ToString(); Trans.TransDets.Add(detToInsert); detToSave.TransDet = detToInsert; } else { detToSave.TransDet = det.TransDet; } listDetToSave.Add(detToSave); total += det.TransDet.TransDetTotal.HasValue ? det.TransDet.TransDetTotal.Value : 0; } Trans.TransSubTotal = total; if (isEdit) { _tTransRepository.Update(Trans); } else { _tTransRepository.Save(Trans); } //_tTransRepository.DbContext.CommitTransaction(); //_tTransRepository.DbContext.BeginTransaction(); if (calculateStock) { decimal totalHpp = 0; foreach (TransDetViewModel det in listDetToSave) { if (det.IsNew) { //save stock if (Trans.TransStatus.Equals(EnumTransactionStatus.Mutation.ToString())) { SaveStockItem(Trans.TransDate, Trans.TransDesc, det.TransDet.ItemId, det.TransDet.TransDetQty, false, Trans.WarehouseId); SaveStockItem(Trans.TransDate, Trans.TransDesc, det.TransDet.ItemId, det.TransDet.TransDetQty, true, Trans.WarehouseIdTo); //still to do, for mutation, price of stock must recalculate per stock, //sum hpp for each stock for stock out totalHpp += UpdateStock(Trans.TransDate, Trans.TransDesc, Trans.TransStatus, det.TransDet.ItemId, det.TransDet.TransDetPrice, det.TransDet.TransDetQty, det.TransDet, false, Trans.WarehouseId); UpdateStock(Trans.TransDate, Trans.TransDesc, Trans.TransStatus, det.TransDet.ItemId, det.TransDet.TransDetPrice, det.TransDet.TransDetQty, det.TransDet, true, Trans.WarehouseIdTo); } else { SaveStockItem(Trans.TransDate, Trans.TransDesc, det.TransDet.ItemId, det.TransDet.TransDetQty, addStock, Trans.WarehouseId); //sum hpp for each stock totalHpp += UpdateStock(Trans.TransDate, Trans.TransDesc, Trans.TransStatus, det.TransDet.ItemId, det.TransDet.TransDetPrice, det.TransDet.TransDetQty, det.TransDet, addStock, Trans.WarehouseId); } } else { //get HPP from existing detail // totalHpp += } } ////save journal //SaveJournal(Trans, totalHpp); } }