示例#1
0
        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);
        }