Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        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);
            }
        }