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; using (TransactionScope transaction = new TransactionScope()) { DXInfo.Models.Consume consume = new DXInfo.Models.Consume(); consume.Card = d.Id; consume.Sum = d.Amount; consume.Discount = 100; consume.Amount = d.Amount; consume.Balance = d.Balance; consume.CreateDate = d.CreateDate; consume.DeptId = d.DeptId; consume.LastBalance = d.LastBalance; consume.UserId = d.UserId; consume.ConsumeType = 2; uow.Consume.Add(consume); DXInfo.Models.Bills bill = new DXInfo.Models.Bills(); bill.Amount = d.Amount; bill.Balance = d.Balance; bill.BillType = "PointsExchangeWindow"; bill.CardNo = d.CardNo; bill.CreateDate = d.CreateDate; bill.DeptName = d.DeptName; bill.FullName = d.FullName; bill.LastBalance = d.LastBalance; bill.MemberName = d.MemberName; uow.Bills.Add(bill); uow.Commit(); Guid cid = d.Id; var p = uow.CardPoints.GetAll().Where(w => w.Card == cid); decimal dkp = 0; foreach (DXInfo.Models.CardPoints cp in p) { if (cp.Point > d.Amount - dkp) { dkp = d.Amount; cp.Point = cp.Point - d.Amount; break; } else { dkp += cp.Point; cp.Point = 0; } } foreach (var si in d.lSelInv) { DXInfo.Models.ConsumeList cl = new DXInfo.Models.ConsumeList(); cl.Amount = si.Amount; cl.Consume = consume.Id; cl.CreateDate = d.CreateDate; cl.Cup = si.Cup; cl.DeptId = d.DeptId; cl.Inventory = si.Id; cl.Price = si.SalePoint; cl.Quantity = si.Quantity; cl.UserId = d.UserId; uow.ConsumeList.Add(cl); DXInfo.Models.BillInvLists bl = new DXInfo.Models.BillInvLists(); bl.Amount = si.Amount; bl.Bill = bill.Id; bl.CupType = si.CupType; bl.Name = si.Name; bl.Quantity = si.Quantity; bl.SalePrice = si.SalePoint; bl.Tastes = si.Tastes; uow.BillInvLists.Add(bl); if (si.lTastes.Count > 0) { uow.Commit(); foreach (var lt in si.lTastes) { DXInfo.Models.ConsumeTastes ct = new DXInfo.Models.ConsumeTastes(); ct.ConsumeList = cl.Id; ct.Taste = lt.Id; uow.ConsumeTastes.Add(ct); } } } uow.Commit(); transaction.Complete(); } PrintDialog pDialog = new PrintDialog(); pDialog.PrintVisual(GridPrint, "会员积分兑换打印"); DialogResult = true; this.Close(); }
public bool CheckOut(CheckoutParaObj para, Func <string, decimal, bool> CardConsume) { decimal dPoint = 0; if (para.ConsumeType == (int)DXInfo.Models.ConsumeType.Card) { if (para.Balance < 0) { this.ErrorMsg = "卡余额不足"; return(false); } } if (para.ConsumeType == (int)DXInfo.Models.ConsumeType.CardNoMoney || para.ConsumeType == (int)DXInfo.Models.ConsumeType.NoMember) { if (para.Cash - para.Change < para.Amount) { if (!(para.Erasing && (int)(para.Cash - para.Change) / 10 == (int)para.Amount / 10)) { this.ErrorMsg = "收的钱应不小于消费金额"; return(false); } } } if (para.Amount > 0 && para.Voucher == 0 && para.IsCard) { dPoint = Points(para.DeptId, para.lInventoryEx); } if (para.Amount > 0 && para.ConsumeType == (int)DXInfo.Models.ConsumeType.Card && para.IsCard && !para.IsVirtual) { if (!CardConsume(para.CardNo, para.Amount)) { return(false); } } using (TransactionScope transaction = new TransactionScope()) { if (para.SourceType == (int)DXInfo.Models.SourceType.WesternRestaurant) { if (!OrderDisheUpdate(para.OrderDishId, para.CreateDate, para.UserId)) { return(false); } OrderDeskUpdate(para.OrderDishId, para.UserId, para.CreateDate); OrderPackageUpdate(para.OrderDishId, para.CreateDate, para.UserId); } DXInfo.Models.Consume consume = new DXInfo.Models.Consume(); consume.Sum = para.Sum; consume.Voucher = para.Voucher; consume.PayVoucher = para.PayVoucher; consume.Discount = para.Discount; if (para.CardId.HasValue) { consume.Card = para.CardId.Value; } if (para.MemberId.HasValue) { consume.Member = para.MemberId.Value; } consume.Amount = para.Amount; consume.Balance = para.Balance; consume.CreateDate = para.CreateDate; consume.DeptId = para.DeptId; consume.LastBalance = para.LastBalance; consume.Point = dPoint; consume.UserId = para.UserId; consume.ConsumeType = para.ConsumeType; consume.DeskNo = para.DeskNo; consume.PayType = para.PayTypeId; consume.Cash = para.Cash; consume.Change = para.Change; consume.SourceType = para.SourceType; consume.Quantity = para.Quantity; consume.IsValid = true; consume.Sn = para.Sn; consume.OperatorsOnDuty = para.OperatorsOnDuty; uow.Consume.Add(consume); DXInfo.Models.Bills bill = new DXInfo.Models.Bills(); bill.Sum = para.Sum; bill.Voucher = para.Voucher; bill.Discount = para.Discount; bill.Amount = para.Amount; bill.Balance = para.Balance; bill.BillType = para.BillType;//"CardConsumeWindow"; if (!string.IsNullOrEmpty(para.CardNo)) { bill.CardNo = para.CardNo; } bill.CreateDate = para.CreateDate; bill.DeptName = para.DeptName; bill.FullName = para.UserName + "," + para.FullName; bill.LastBalance = para.LastBalance; if (!string.IsNullOrEmpty(para.MemberName)) { bill.MemberName = para.MemberName; } bill.DeskNo = para.DeskNo; bill.PayTypeName = para.PayTypeName; bill.Cash = para.Cash; bill.Change = para.Change; bill.Sn = para.Sn; bill.PeopleCount = para.PeopleCount; uow.Bills.Add(bill); uow.Commit(); if (para.IsCard && para.ConsumeType == (int)DXInfo.Models.ConsumeType.Card) { CardUpdate(para.IsCardLevelAuto, para.CardId.Value, para.Balance, dPoint); } //卡赠送处理 if (para.Voucher == 0 && para.IsCard && para.lCardDonateInventoryEx != null && para.lCardDonateInventoryEx.Count > 0) { CardDonate(para.lCardDonateInventoryEx, consume.Id, bill.Id); } foreach (DXInfo.Models.InventoryEx si in para.lInventoryEx) { if (para.SourceType == (int)DXInfo.Models.SourceType.WesternRestaurant) { OrderMenuUpdate(si.OrderMenuId, para.CreateDate, para.UserId); } DXInfo.Models.ConsumeList cl = new DXInfo.Models.ConsumeList(); //cl.Amount = si.Amount; cl.Consume = consume.Id; cl.CreateDate = para.CreateDate; cl.IsValid = true; cl.IsStock = false; if (para.SourceType == (int)DXInfo.Models.SourceType.ColdDrinkShop) { if (si.CupType != null) { cl.Cup = si.CupType.Id; } } cl.DeptId = para.DeptId; cl.Inventory = si.Id; cl.Quantity = si.Quantity; cl.UserId = para.UserId; //cl.Discount = dDiscount; if (si.IsInvDynamicPrice) { cl.Discount = si.IsDiscount ? si.Discount : 100; } else { cl.Discount = si.IsDiscount ? para.Discount : 100; } cl.IsPackage = si.IsPackage; cl.PackageId = si.PackageId; if (para.SourceType == (int)DXInfo.Models.SourceType.WesternRestaurant) { cl.Price = si.SalePrice; cl.Sum = si.Amount; cl.Amount = si.IsDiscount ? si.Amount * para.Discount / 100 : si.Amount; } else { if (si.IsInvDynamicPrice) { cl.Price = si.SalePrice; cl.AgreementPrice = si.AgreementPrice; //if (si.IsInvPrice && si.InvPrice != null) //{ // cl.Price = si.InvPrice.SalePrice; //} cl.Sum = si.Amount;//cl.Price * cl.Quantity; cl.Amount = si.CurrentAmount; //cl.Amount = Convert.ToInt32(si.IsDiscount ? cl.Sum * cl.Discount / 100 : cl.Sum); //cl.Amount = si.IsDiscount ? si.CurrentAmount * para.Discount / 100 : si.CurrentAmount; } else { cl.Price = si.CurrentSalePrice; cl.Sum = si.CurrentAmount; cl.Amount = si.IsDiscount ? si.CurrentAmount * para.Discount / 100 : si.CurrentAmount; } } uow.ConsumeList.Add(cl); DXInfo.Models.BillInvLists bl = new DXInfo.Models.BillInvLists(); bl.Bill = bill.Id; if (para.SourceType == (int)DXInfo.Models.SourceType.ColdDrinkShop) { if (si.CupType != null) { bl.CupType = si.CupType.Name; } } bl.Name = si.Name; bl.Quantity = si.Quantity; if (si.IsInvDynamicPrice) { bl.Discount = si.IsDiscount ? si.Discount : 100; } else { bl.Discount = si.IsDiscount ? para.Discount : 100; } if (para.SourceType == (int)DXInfo.Models.SourceType.WesternRestaurant) { bl.Amount = si.Amount; bl.SalePrice = si.SalePrice; } else { if (si.IsInvDynamicPrice) { bl.SalePrice = si.SalePrice; bl.AgreementPrice = si.AgreementPrice; //if (si.IsInvPrice && si.InvPrice != null) //{ // bl.SalePrice = si.InvPrice.SalePrice; //} bl.Sum = si.Amount; //bl.SalePrice * bl.Quantity; bl.Amount = si.CurrentAmount; //Convert.ToInt32(si.IsDiscount ? bl.Sum * bl.Discount / 100 : bl.Sum); } else { bl.SalePrice = si.CurrentSalePrice; bl.Sum = si.CurrentAmount; bl.Amount = si.IsDiscount ? si.CurrentAmount * para.Discount / 100 : si.CurrentAmount; } } if (para.SourceType == (int)DXInfo.Models.SourceType.ColdDrinkShop) { bl.Tastes = si.lTasteEx.Where(w => w.IsSelected == true).Count() == 0 ? "" : si.lTasteEx.Where(w => w.IsSelected == true).Select(l => l.Name).Aggregate((total, next) => (total + "," + next));//si.Tastes; } uow.BillInvLists.Add(bl); if (para.SourceType == (int)DXInfo.Models.SourceType.ColdDrinkShop && si.lTasteEx.Count > 0) { uow.Commit(); foreach (var lt in si.lTasteEx.Where(w => w.IsSelected)) { DXInfo.Models.ConsumeTastes ct = new DXInfo.Models.ConsumeTastes(); ct.ConsumeList = cl.Id; ct.Taste = lt.Id; uow.ConsumeTastes.Add(ct); } } if (si.InvPrice != null) { uow.Commit(); DXInfo.Models.ConsumeInvPrice invPrice = Mapper.Map <DXInfo.Models.ConsumeInvPrice>(si.InvPrice); invPrice.ConsumeListId = cl.Id; invPrice.InvPriceId = si.InvPrice.Id; uow.ConsumeInvPrice.Add(invPrice); uow.Commit(); } } if (dPoint > 0 && para.IsCard) { CardPoint(para.CardId.Value, para.CreateDate, para.DeptId, para.UserId, dPoint); } uow.Commit(); transaction.Complete(); } return(true); }