Example #1
0
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            if (OrderDishes.SelectedItem != null)
            {
                DXInfo.Models.OrderDishes od = OrderDishes.SelectedItem as DXInfo.Models.OrderDishes;
                //DXInfo.Models.FairiesMemberManage db = new DXInfo.Models.FairiesMemberManage();
                var q = (from m in uow.OrderMenus.GetAll()
                         join i in uow.Inventory.GetAll() on m.InventoryId equals i.Id into mi
                         from mis in mi.DefaultIfEmpty()

                         join u in uow.aspnet_CustomProfile.GetAll() on m.UserId equals u.UserId into mu
                         from mus in mu.DefaultIfEmpty()

                         where m.OrderId == od.Id
                         select new
                {
                    m.Id,
                    m.InventoryId,
                    mis.Name,
                    m.Price,
                    m.Quantity,
                    m.Amount,
                    mus.FullName, m.CreateDate, m.Status,
                }).ToList();
                MemberList.ItemsSource = q;
                Amount.Text            = q.Sum(s => s.Amount).ToString();
            }
        }
Example #2
0
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            if (OrderDishes.SelectedItem != null)
            {
                if (MessageBox.Show("卡号:" + CardNo.Text, "无卡结账提示", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    DXInfo.Models.OrderDishes orderDishe = OrderDishes.SelectedItem as DXInfo.Models.OrderDishes;
                    MemberBalance(orderDishe.Id, CardNo.Text);

                    card.DataContext        = null;
                    OrderDishes.ItemsSource = null;
                    MemberList.ItemsSource  = null;
                    Amount.Text             = "";
                }
            }
        }
Example #3
0
        private bool OrderDisheUpdate(Guid orderDishId, DateTime createDate, Guid userId)
        {
            DXInfo.Models.OrderDishes newOrderDish = uow.OrderDishes.GetById(g => g.Id == orderDishId);
            if (newOrderDish == null)
            {
                ErrorMsg = "订单已结账!";
                return(false);
            }
            if (newOrderDish.Status != (int)DXInfo.Models.OrderDishStatus.Ordered)
            {
                ErrorMsg = "确认下单后才可以结账!";
                return(false);
            }
            uow.OrderDishes.Delete(newOrderDish);

            DXInfo.Models.OrderDishesHis newOrderDishHis = Mapper.Map <DXInfo.Models.OrderDishesHis>(newOrderDish);
            newOrderDishHis.Status     = (int)DXInfo.Models.OrderDishStatus.Checkouted;
            newOrderDishHis.LinkId     = newOrderDish.Id;
            newOrderDishHis.CreateDate = createDate;
            newOrderDishHis.UserId     = userId;
            uow.OrderDishesHis.Add(newOrderDishHis);
            return(true);
        }
Example #4
0
        public OrderInfo GetOrder(string userName, string passwd, string deskNo)
        {
            OrderInfo orderInfo = new OrderInfo();

            if (!LogOn(userName, passwd))
            {
                return(null);
            }
            DXInfo.Models.aspnet_Users user = (from d in uow.aspnet_Users.GetAll() where d.UserName == userName select d).FirstOrDefault();
            if (user == null)
            {
                throw new WebFaultException <string>("无“" + userName + "”操作员信息", HttpStatusCode.MethodNotAllowed);
            }
            orderInfo.OrderDesk.UserId = user.UserId;
            DXInfo.Models.aspnet_CustomProfile userProfile = uow.aspnet_CustomProfile.GetById(g => g.UserId == user.UserId);
            if (userProfile == null)
            {
                throw new WebFaultException <string>("无“" + userName + "”操作员信息", HttpStatusCode.MethodNotAllowed);
            }
            orderInfo.OrderDesk.UserName = user.UserName;
            orderInfo.OrderDesk.FullName = userProfile.FullName;
            //判断桌台是否可用
            DXInfo.Models.Desks curdesk = uow.Desks.GetAll().Where(w => w.Code == deskNo).FirstOrDefault();
            if (curdesk == null)
            {
                //throw new Exception("桌台错误");
                throw new WebFaultException <string>(deskNo + "无此桌台", HttpStatusCode.MethodNotAllowed);
            }
            if (curdesk.Status != 1)
            {
                //throw new Exception("桌台不在用");
                throw new WebFaultException <string>(deskNo + "不在用", HttpStatusCode.MethodNotAllowed);
            }
            orderInfo.OrderDesk.DeskId = curdesk.Id;
            orderInfo.OrderDesk.DeskNo = deskNo;

            //判断桌台是否使用
            DXInfo.Models.OrderDeskes od = (from d in uow.OrderDeskes.GetAll() where d.DeskId == curdesk.Id && d.Status == 0 select d).FirstOrDefault();
            if (od == null)
            {
                //throw new Exception("订单错误");
                throw new WebFaultException <string>(deskNo + "未开台", HttpStatusCode.MethodNotAllowed);
            }
            orderInfo.OrderDesk.OrderDeskId = od.Id;

            DXInfo.Models.OrderDishes orderDish = (from d in uow.OrderDishes.GetAll() where d.Id == od.OrderId select d).FirstOrDefault();
            if (orderDish == null)
            {
                throw new WebFaultException <string>("无此订单", HttpStatusCode.MethodNotAllowed);
            }
            if (!(orderDish.Status == 0 || orderDish.Status == 3))
            {
                throw new WebFaultException <string>("已结账或已撤销", HttpStatusCode.MethodNotAllowed);
            }
            orderInfo.OrderDesk.OrderDishId = orderDish.Id;

            var q = from d in uow.OrderMenus.GetAll()
                    where d.OrderId == od.OrderId && !(d.Status == 1 || d.Status == 7)
                    join i in uow.Inventory.GetAll() on d.InventoryId equals i.Id into di
                    from dis in di.DefaultIfEmpty()

                    join p in uow.OrderPackages.GetAll() on d.PackageId equals p.Id into dp
                    from dps in dp.DefaultIfEmpty()
                    orderby d.Id
                    select new OrderMenuInfo()
            {
                OrderMenuId = d.Id,
                InvId       = d.InventoryId,
                InvCode     = dis.Code,
                InvName     = dis.Name,
                Amount      = d.Amount,
                Quantity    = d.Quantity,
                SalePrice   = d.Price,
                EnglishName = dis.EnglishName,
                Comment     = d.Comment,
                IsAdd       = false,
                IsDelete    = false,
                IsPackage   = d.IsPackage,
                PackageId   = d.PackageId,
                PackageSn   = d.PackageSn,
                Status      = d.Status,
            };

            orderInfo.lOrderMenu = q.ToList();

            List <DXInfo.Models.MenuStatus> lLackMenu = (from d in uow.MenuStatus.GetAll()
                                                         where d.Dept == localDeptId &&
                                                         d.Status == (int)DXInfo.Models.OrderMenuStatus.Lack
                                                         select d).ToList();

            orderInfo.lLackMenu = lLackMenu;

            return(orderInfo);
        }
Example #5
0
        public bool Order(OrderDeskInfo orderDesk, List <OrderMenuInfo> lOrderMenu)
        {
            DateTime dtOperDate = DateTime.Now;
            Guid     userId     = Guid.Empty;

            try
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    if (!orderDesk.UserId.HasValue)
                    {
                        throw new WebFaultException <string>("无“" + orderDesk.UserName + "”操作员信息", HttpStatusCode.MethodNotAllowed);
                    }
                    userId = orderDesk.UserId.Value;

                    DXInfo.Models.OrderDishes orderDish = uow.OrderDishes.GetById(g => g.Id == orderDesk.OrderDishId);

                    if (orderDish == null)
                    {
                        throw new WebFaultException <string>("无此订单", HttpStatusCode.MethodNotAllowed);
                    }
                    if (orderDish.Status == 1 || orderDish.Status == 2)
                    {
                        throw new WebFaultException <string>("已结账或撤销的不能提交", HttpStatusCode.MethodNotAllowed);
                    }
                    foreach (OrderMenuInfo omi in lOrderMenu)
                    {
                        int lackCount = (from d in uow.MenuStatus.GetAll()
                                         where d.Dept == localDeptId && d.Inventory == omi.InvId &&
                                         d.Status == (int)DXInfo.Models.OrderMenuStatus.Lack
                                         select d).Count();
                        if (lackCount > 0)
                        {
                            throw new WebFaultException <string>(omi.InvName + "缺菜不能提交", HttpStatusCode.MethodNotAllowed);
                        }

                        if (omi.IsAdd && !omi.OrderMenuId.HasValue)
                        {
                            DXInfo.Models.OrderMenus orderMenu = new DXInfo.Models.OrderMenus();
                            orderMenu.UserId      = userId;
                            orderMenu.OrderId     = orderDesk.OrderDishId.Value;
                            orderMenu.InventoryId = omi.InvId;
                            orderMenu.Price       = omi.SalePrice;
                            orderMenu.Quantity    = omi.Quantity;
                            orderMenu.Amount      = omi.Amount;
                            orderMenu.Comment     = omi.Comment;
                            orderMenu.CreateDate  = dtOperDate;
                            orderMenu.IsPackage   = omi.IsPackage;
                            orderMenu.PackageId   = omi.PackageId;
                            orderMenu.PackageSn   = omi.PackageSn;
                            orderMenu.Status      = (int)DXInfo.Models.OrderMenuStatus.Normal;
                            uow.OrderMenus.Add(orderMenu);
                            uow.Commit();

                            DXInfo.Models.OrderMenusHis omHis = Mapper.Map <DXInfo.Models.OrderMenusHis>(orderMenu);
                            omHis.LinkId = orderMenu.Id;
                            uow.OrderMenusHis.Add(omHis);
                        }
                        else
                        {
                            if (omi.OrderMenuId.HasValue)
                            {
                                DXInfo.Models.OrderMenus orderMenu =
                                    (from d in uow.OrderMenus.GetAll()
                                     where d.Id == omi.OrderMenuId select d)
                                    .FirstOrDefault();

                                if (orderMenu != null && orderMenu.Status == (int)DXInfo.Models.OrderMenuStatus.Normal)
                                {
                                    if (omi.IsDelete)
                                    {
                                        uow.OrderMenus.Delete(orderMenu);
                                    }
                                    else
                                    {
                                        orderMenu.Quantity = omi.Quantity;
                                        orderMenu.Price    = omi.SalePrice;
                                        orderMenu.Amount   = omi.Amount;
                                        orderMenu.Comment  = omi.Comment;
                                        uow.OrderMenus.Update(orderMenu);
                                    }
                                    DXInfo.Models.OrderMenusHis omHis = Mapper.Map <DXInfo.Models.OrderMenusHis>(orderMenu);
                                    omHis.LinkId     = orderMenu.Id;
                                    omHis.UserId     = userId;
                                    omHis.CreateDate = dtOperDate;
                                    uow.OrderMenusHis.Add(omHis);
                                }
                            }
                        }
                    }
                    uow.Commit();
                    transaction.Complete();
                }
            }
            catch (Exception ex)
            {
                throw new WebFaultException <string>(ex.Message, HttpStatusCode.MethodNotAllowed);
            }
            return(true);
        }
Example #6
0
        private void MemberBalance(Guid orderId, string cardNo)
        {
            //结账
            //DXInfo.Models.FairiesMemberManage db = new DXInfo.Models.FairiesMemberManage();

            DXInfo.Models.Cards card = uow.Cards.GetAll().Where(w => w.CardNo == cardNo).FirstOrDefault();
            if (card == null)
            {
                MessageBox.Show(cardNo + "未找到会员卡");
                return;
            }
            DXInfo.Models.Members member = uow.Members.GetAll().Where(w => w.Id == card.Member).FirstOrDefault();
            if (member == null)
            {
                MessageBox.Show("未找到会员信息");
                return;
            }
            DXInfo.Models.CardLevels cardLevel = uow.CardLevels.GetAll().Where(w => w.Id == card.CardLevel).FirstOrDefault();
            if (cardLevel == null)
            {
                MessageBox.Show("未找到卡级别参数");
                return;
            }
            DXInfo.Models.OrderDishes orderDish = uow.OrderDishes.GetAll().Where(w => w.Id == orderId && w.Status == 2).FirstOrDefault();
            if (orderDish == null)
            {
                MessageBox.Show("已撤销桌台才可无卡结账");
                return;
            }
            decimal dDiscount = cardLevel.Discount;
            //bool isOut = false;
            Guid gPayType = Guid.Empty;

            var lsi = (from o in uow.OrderMenus.GetAll()
                       join i in uow.Inventory.GetAll() on o.InventoryId equals i.Id into oi
                       from ois in oi.DefaultIfEmpty()
                       join c in uow.InventoryCategory.GetAll() on ois.Category equals c.Id into ic
                       from ics in ic.DefaultIfEmpty()
                       where o.OrderId == orderId && !(o.Status == 0 || o.Status == 1 || o.Status == 7)
                       select new { ics.IsDiscount, o.InventoryId, ois.Code, ois.Name, ois.EnglishName, o.Price, o.Comment, o.Status, o.Id, o.Amount, o.Quantity, ois.Category }).ToList();

            decimal dSum = lsi.Sum(s => s.Amount);

            decimal dSum1 = lsi.Where(w => w.IsDiscount).Sum(s => s.Amount);
            decimal dSum2 = lsi.Where(w => !w.IsDiscount).Sum(s => s.Amount);

            int iCount = Convert.ToInt32(lsi.Sum(s => s.Quantity));


            decimal dAmount = (Math.Round(dSum1 * dDiscount / 100, 2) + dSum2);

            if (dAmount > card.Balance)
            {
                MessageBox.Show("余额不足");
                return;
            }
            //消费积分
            Guid deptId = App.MyIdentity.oper.DeptId.Value;

            decimal point = 0;

            if (dAmount > 0)
            {
                var cp1 = uow.ConsumePoints.GetAll().Where(w => w.DeptId == deptId);
                var cp  = cp1.Count() > 0 ? cp1 : uow.ConsumePoints.GetAll();
                foreach (var si in lsi)
                {
                    if (cp.Count() > 0)
                    {
                        var cpc = cp.Where(w => w.Category == si.Category);
                        if (cpc.Count() > 0)
                        {
                            decimal min = cpc.Min(m => m.Point / m.Amount);
                            point += si.Amount * min;
                        }
                        else
                        {
                            decimal min = cp.Min(m => m.Point / m.Amount);
                            point += si.Amount * min;
                        }
                    }
                }
            }
            var lselInv = lsi.Select(s => new
            {
                OrderMenuId = s.Id,
                Id          = s.InventoryId,
                s.Code,
                s.Name,
                s.EnglishName,
                s.Price,
                s.Quantity,
                s.Amount,
                s.Comment,
                s.IsDiscount,
                Status = s.Status
            });
            Guid     cardId = card.Id;
            DateTime dtn    = DateTime.Now.AddDays(-1);
            var      di     = (from d1 in uow.CardDonateInventory.GetAll().Where(w => w.CardId == cardId).Where(w => w.IsValidate).Where(w => w.InvalideDate > dtn)
                               join i in uow.Inventory.GetAll() on d1.Inventory equals i.Id into d1i
                               from d1is in d1i.DefaultIfEmpty()
                               select new { d1is.Id, d1is.Name }).ToList();

            var ctx = new
            {
                Id                  = card.Id,
                CardNo              = card.CardNo,
                MemberName          = member.MemberName,
                UserId              = App.MyIdentity.oper.UserId,
                FullName            = App.MyIdentity.oper.FullName,
                DeptId              = App.MyIdentity.oper.DeptId.Value,
                DeptName            = App.MyIdentity.dept.DeptName,
                Sum                 = dSum,
                Voucher             = 0,
                PayVoucher          = 0,
                Discount            = dDiscount,
                Amount              = dAmount,
                LastBalance         = card.Balance,
                Balance             = card.Balance - dAmount,
                CreateDate          = DateTime.Now,
                lSelInv             = lselInv,
                Point               = point,
                Count               = iCount,
                CardDonateInventory = di,
                PayType             = gPayType,
                OrderId             = orderId
            };
            DeskNoCardConsume2Window cw = new DeskNoCardConsume2Window(uow, ctx);

            if (cw.ShowDialog().GetValueOrDefault())
            {
            }
        }
Example #7
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (IsPrint)
            {
                PrintDialog pDialog1 = new PrintDialog();
                pDialog1.PrintVisual(GridPrint, "会员卡消费打印");
                DialogResult = true;
                this.Close();
                return;
            }
            dynamic d = GridPrint.DataContext;

            decimal dCash   = Convert.ToDecimal(txtCash.Text);
            decimal dChange = Convert.ToDecimal(txtChange.Text);

            if (dCash - dChange < d.Amount)
            {
                throw new ArgumentException("收的钱应不小于消费金额");
            }

            using (TransactionScope transaction = new TransactionScope())
            {
                Guid orderId = d.OrderId;
                DXInfo.Models.OrderDishes orderDish = uow.OrderDishes.GetById(orderId);//.Where(w => w.Id == orderId).FirstOrDefault();
                if (orderDish.Status != 3)
                {
                    MessageBox.Show("确认下单后才可以结账!");
                    DialogResult = false;
                    this.Close();
                    return;
                }
                orderDish.Status = 1;
                var q = from o in uow.OrderDeskes.GetAll() where o.OrderId == orderDish.Id select o;
                foreach (DXInfo.Models.OrderDeskes orderDesk in q)
                {
                    orderDesk.Status = 1;

                    DXInfo.Models.OrderDeskesHis deskHis = new DXInfo.Models.OrderDeskesHis();
                    deskHis.DeskId     = orderDesk.DeskId;
                    deskHis.LinkId     = orderDesk.Id;
                    deskHis.OrderId    = orderDesk.OrderId;
                    deskHis.UserId     = d.UserId;
                    deskHis.CreateDate = DateTime.Now;
                    deskHis.Status     = 1;
                    uow.OrderDeskesHis.Add(deskHis);
                }

                DXInfo.Models.Consume consume = new DXInfo.Models.Consume();
                consume.OrderId     = d.OrderId;
                consume.Sum         = d.Sum;
                consume.Voucher     = d.Voucher;
                consume.PayVoucher  = d.PayVoucher;
                consume.Discount    = d.Discount;
                consume.Card        = d.Id;
                consume.Amount      = d.Amount;
                consume.CreateDate  = d.CreateDate;
                consume.DeptId      = d.DeptId;
                consume.Point       = d.Point;
                consume.UserId      = d.UserId;
                consume.Point       = d.Point;
                consume.ConsumeType = 3;
                consume.SourceType  = 1;

                consume.Cash   = dCash;
                consume.Change = dChange;

                consume.Quantity = d.Count;
                if (d.PayType != Guid.Empty)
                {
                    consume.PayType = d.PayType;
                }
                uow.Consume.Add(consume);


                DXInfo.Models.Bills bill = new DXInfo.Models.Bills();
                bill.Sum      = d.Sum;
                bill.Voucher  = d.Voucher;
                bill.Discount = d.Discount;

                bill.Amount     = d.Amount;
                bill.BillType   = "WRCardConsume3Window";
                bill.CardNo     = d.CardNo;
                bill.CreateDate = d.CreateDate;
                bill.DeptName   = d.DeptName;
                bill.FullName   = d.FullName;
                bill.MemberName = d.MemberName;

                bill.PayTypeName = d.PayTypeName;
                bill.Cash        = dCash;
                bill.Change      = dChange;
                uow.Bills.Add(bill);

                uow.Commit();

                Guid CardId = d.Id;
                DXInfo.Models.Cards card = uow.Cards.GetById(CardId);//.Where(w => w.Id == CardId).FirstOrDefault();
                if (card == null)
                {
                    throw new ArgumentException("卡信息未找到");
                }

                if (d.CardDonateInventory != null && d.CardDonateInventory.Count > 0)
                {
                    foreach (var cdi in d.CardDonateInventory)
                    {
                        DXInfo.Models.ConsumeDonateInv cdonate = new DXInfo.Models.ConsumeDonateInv();
                        cdonate.Consume   = consume.Id;
                        cdonate.Inventory = cdi.Id;
                        uow.ConsumeDonateInv.Add(cdonate);

                        Guid gInvId = cdi.Id;
                        var  cdi1   = uow.CardDonateInventory.GetAll().Where(w => w.Inventory == gInvId).Where(w => w.CardId == CardId).FirstOrDefault();
                        if (cdi1 != null)
                        {
                            cdi1.IsValidate = false;
                        }

                        DXInfo.Models.BillDonateInvLists bd = new DXInfo.Models.BillDonateInvLists();
                        bd.Bill    = bill.Id;
                        bd.InvName = cdi.Name;

                        uow.BillDonateInvLists.Add(bd);
                    }
                }
                //DXInfo.Restaurant.DeskManageFacade dmf = new DXInfo.Restaurant.DeskManageFacade();
                foreach (var si in d.lSelInv)
                {
                    Guid orderMenuId            = si.OrderMenuId;
                    DXInfo.Models.OrderMenus om = uow.OrderMenus.GetById(orderMenuId);//.Where(w => w.Id == orderMenuId).FirstOrDefault();
                    om.OperDate = DateTime.Now;
                    om.UserId   = App.MyIdentity.oper.UserId;
                    om.Status   = 8;
                    uow.OrderMenus.Update(om);

                    DXInfo.Models.OrderMenusHis omHis = Mapper.Map <DXInfo.Models.OrderMenusHis>(om);//dmf.CreateOrderMenuHis(om, App.MyIdentity.oper.UserId, DateTime.Now);
                    omHis.LinkId = om.Id;
                    uow.OrderMenusHis.Add(omHis);

                    DXInfo.Models.ConsumeList cl = new DXInfo.Models.ConsumeList();
                    cl.Amount     = si.IsDiscount ? Math.Floor(si.Amount * d.Discount / 100) : si.Amount;
                    cl.Consume    = consume.Id;
                    cl.CreateDate = d.CreateDate;
                    cl.DeptId     = d.DeptId;
                    cl.Inventory  = si.Id;
                    cl.Price      = si.Price;
                    cl.Quantity   = si.Quantity;
                    cl.UserId     = d.UserId;
                    cl.Sum        = si.Amount;
                    cl.Discount   = si.IsDiscount ? d.Discount : 100;
                    cl.IsPackage  = si.IsPackage;
                    cl.PackageId  = si.PackageId;
                    uow.ConsumeList.Add(cl);

                    DXInfo.Models.BillInvLists bl = new DXInfo.Models.BillInvLists();
                    bl.Amount    = si.Amount;
                    bl.Bill      = bill.Id;
                    bl.CupType   = si.EnglishName;
                    bl.Name      = si.Name;
                    bl.Quantity  = si.Quantity;
                    bl.SalePrice = si.Price;
                    uow.BillInvLists.Add(bl);
                }


                if (d.Point > 0)
                {
                    var cps = uow.CardPoints.GetAll().Where(w => w.Card == CardId).Where(w => w.PointType == 0).FirstOrDefault();
                    if (cps != null)
                    {
                        cps.Point = cps.Point + d.Point;
                    }
                    else
                    {
                        DXInfo.Models.CardPoints cp = new DXInfo.Models.CardPoints();
                        cp.Card       = d.Id;
                        cp.CreateDate = d.CreateDate;
                        cp.DeptId     = d.DeptId;
                        cp.Point      = d.Point;
                        cp.PointType  = 0;
                        cp.UserId     = d.UserId;

                        uow.CardPoints.Add(cp);
                    }
                }
                uow.Commit();
                transaction.Complete();
            }
            PrintDialog pDialog = new PrintDialog();

            pDialog.PageRangeSelection   = PageRangeSelection.AllPages;
            pDialog.UserPageRangeEnabled = true;
            this.Measure(new Size(pDialog.PrintableAreaWidth, pDialog.PrintableAreaHeight));
            this.Arrange(new Rect(new Point(0, 0), this.DesiredSize));
            pDialog.PrintVisual(GridPrint, "会员卡消费打印");
            DialogResult = true;
            this.Close();
        }
Example #8
0
        public void Button_Click(object sender, RoutedEventArgs e)
        {
            if (IsPrint)
            {
                PrintDialog pDialog1 = new PrintDialog();
                pDialog1.PrintVisual(GridPrint, "非会员消费打印");
                DialogResult = true;
                this.Close();
                return;
            }
            dynamic d       = GridPrint.DataContext;
            decimal dCash   = Convert.ToDecimal(txtCash.Text);
            decimal dChange = Convert.ToDecimal(txtChange.Text);

            if (dCash - dChange < d.Amount)
            {
                throw new ArgumentException("收的钱应不小于消费金额");
            }
            Guid orderId = d.OrderId;

            using (TransactionScope transaction = new TransactionScope())
            {
                DXInfo.Models.OrderDishes orderDish = uow.OrderDishes.GetById(orderId);//.Where(w => w.Id == orderId).FirstOrDefault();
                if (orderDish.Status != 3)
                {
                    MessageBox.Show("确认下单后才可以结账!");
                    DialogResult = false;
                    this.Close();
                    return;
                }
                orderDish.Status = 1;
                var q = from o in uow.OrderDeskes.GetAll() where o.OrderId == orderDish.Id select o;
                foreach (DXInfo.Models.OrderDeskes orderDesk in q)
                {
                    orderDesk.Status = 1;

                    DXInfo.Models.OrderDeskesHis deskHis = new DXInfo.Models.OrderDeskesHis();
                    deskHis.DeskId     = orderDesk.DeskId;
                    deskHis.LinkId     = orderDesk.Id;
                    deskHis.OrderId    = orderDesk.OrderId;
                    deskHis.UserId     = d.UserId;
                    deskHis.CreateDate = DateTime.Now;
                    deskHis.Status     = 1;
                    uow.OrderDeskesHis.Add(deskHis);
                }

                DXInfo.Models.Consume consume = new DXInfo.Models.Consume();
                consume.OrderId     = d.OrderId;
                consume.Sum         = d.Sum;
                consume.Voucher     = d.Voucher;
                consume.PayVoucher  = d.PayVoucher;
                consume.Amount      = d.Amount;
                consume.CreateDate  = d.CreateDate;
                consume.DeptId      = d.DeptId;
                consume.UserId      = d.UserId;
                consume.Cash        = dCash;
                consume.Change      = dChange;
                consume.ConsumeType = 1;
                consume.PayType     = d.PayType;
                consume.Discount    = 100;
                consume.Quantity    = d.Count;
                consume.SourceType  = 1;
                uow.Consume.Add(consume);


                DXInfo.Models.Bills bill = new DXInfo.Models.Bills();
                bill.Sum         = d.Sum;
                bill.Voucher     = d.Voucher;
                bill.Amount      = d.Amount;
                bill.BillType    = "WRNoMemberConsumeWindow";
                bill.CreateDate  = d.CreateDate;
                bill.DeptName    = d.DeptName;
                bill.FullName    = d.FullName;
                bill.PayTypeName = d.PayTypeName;
                bill.Cash        = dCash;
                bill.Change      = dChange;
                uow.Bills.Add(bill);

                uow.Commit();

                //DXInfo.Restaurant.DeskManageFacade dmf = new DXInfo.Restaurant.DeskManageFacade();
                foreach (var si in d.lSelInv)
                {
                    Guid orderMenuId            = si.OrderMenuId;
                    DXInfo.Models.OrderMenus om = uow.OrderMenus.GetById(orderMenuId);//.Where(w => w.Id == orderMenuId).FirstOrDefault();
                    om.OperDate = DateTime.Now;
                    om.UserId   = App.MyIdentity.oper.UserId;
                    om.Status   = 8;
                    uow.OrderMenus.Update(om);

                    DXInfo.Models.OrderMenusHis omHis = Mapper.Map <DXInfo.Models.OrderMenusHis>(om);//dmf.CreateOrderMenuHis(om, App.MyIdentity.oper.UserId, DateTime.Now);
                    omHis.LinkId = om.Id;
                    uow.OrderMenusHis.Add(omHis);

                    DXInfo.Models.ConsumeList cl = new DXInfo.Models.ConsumeList();
                    cl.Amount     = si.Amount;
                    cl.Consume    = consume.Id;
                    cl.CreateDate = d.CreateDate;
                    cl.DeptId     = d.DeptId;
                    cl.Inventory  = si.Id;
                    cl.Price      = si.Price;
                    cl.Quantity   = si.Quantity;
                    cl.UserId     = d.UserId;
                    cl.IsPackage  = si.IsPackage;
                    cl.PackageId  = si.PackageId;

                    cl.Discount = 100;
                    cl.Sum      = cl.Amount;
                    uow.ConsumeList.Add(cl);

                    DXInfo.Models.BillInvLists bl = new DXInfo.Models.BillInvLists();
                    bl.Amount    = si.Amount;
                    bl.Bill      = bill.Id;
                    bl.CupType   = si.EnglishName;
                    bl.Name      = si.Name;
                    bl.Quantity  = si.Quantity;
                    bl.SalePrice = si.Price;
                    uow.BillInvLists.Add(bl);
                }
                uow.Commit();
                transaction.Complete();
            }
            PrintDialog pDialog = new PrintDialog();

            pDialog.PageRangeSelection   = PageRangeSelection.AllPages;
            pDialog.UserPageRangeEnabled = true;
            pDialog.PrintVisual(GridPrint, "非会员消费打印");
            DialogResult = true;
            this.Close();
        }