public String makeCheckout(Accept accept, IList <CartItem> cart) { ItemCom itemCom = new ItemCom(); decimal priceGift = 0; UserCom userCom = new UserCom(); accept.AcceptSlipNo = MNumberCom.GetSlipNo(Logics.CD_BUSINESS_ACCEPT); int i = 0; while (IsExist <Accept>(accept.AcceptSlipNo, false)) { Thread.Sleep(5000); accept.AcceptSlipNo = MNumberCom.GetSlipNo(Logics.CD_BUSINESS_ACCEPT); if (i == 10) { throw new ExecuteException("E_MSG_00014"); } i++; } accept.DeliveryCd = DataHelper.GetUniqueKey(); accept.ViewId = MNumberCom.GenViewId(accept.AcceptSlipNo, Logics.CD_BUSINESS_ACCEPT); int countNo = 1; foreach (CartItem item in cart) { AcceptDetail detail = new AcceptDetail(); detail.AcceptSlipNo = accept.AcceptSlipNo; detail.DetailNo = countNo++; detail.ItemCd = item.ItemCd; var itemResult = GetSingle <Item>(item.ItemCd, false); if (itemResult == null) { throw new DataNotExistException("Mã sản phẩm"); } detail.ItemName = itemResult.ItemName; detail.UnitCd = itemResult.UnitCd; detail.DetailQtty = item.Quantity; detail.DetailPrice = item.Price; detail.DetailAmt = item.Amount; detail.CreateUser = accept.CreateUser; detail.CreateDate = accept.CreateDate; detail.UpdateUser = accept.UpdateUser; detail.UpdateDate = accept.UpdateDate; detail.DeleteFlag = false; EntityManager.AcceptDetails.InsertOnSubmit(detail); if (!itemCom.HasOffer(item.ItemCd)) { priceGift = priceGift + itemResult.SalesPrice.Value * item.Quantity; } } if (priceGift != 0 && priceGift > 100000) { GiftCard gift = new GiftCard(); gift.GiftCd = RandomString(10, true); gift.Price = priceGift * 10 / 100; gift.CreateDate = accept.CreateDate; gift.UpdateUser = accept.UpdateUser; gift.UpdateDate = accept.UpdateDate; gift.DeleteFlag = false; gift.GiftStatus = Logics.CD_GIFT_STATUS_INACTIVE; EntityManager.GiftCards.InsertOnSubmit(gift); accept.GiftCd = gift.GiftCd; } if (accept.UseGiftCd != null) { if (IsExist <GiftCard>(accept.UseGiftCd, false)) { GiftCard useGift = GetSingle <GiftCard>(accept.UseGiftCd, false); useGift.GiftStatus = Logics.CD_GIFT_STATUS_USED; } } var number = MNumberCom.ToMNumber(accept.AcceptSlipNo); EntityManager.MNumbers.InsertOnSubmit(number); EntityManager.Accepts.InsertOnSubmit(accept); EntityManager.SubmitChanges(); return(accept.AcceptSlipNo); }