public Order AddOrder(Ticket ticket, int menuItemId, decimal quantity, string portionName) { if (ticket.IsLocked && !_userService.IsUserPermittedFor(PermissionNames.AddItemsToLockedTickets)) { return(null); } if (!ticket.CanSubmit) { return(null); } var menuItem = _cacheService.GetMenuItem(x => x.Id == menuItemId); var portion = _cacheService.GetMenuItemPortion(menuItemId, portionName); if (portion == null) { return(null); } var priceTag = _applicationState.CurrentDepartment.PriceTag; var productTimer = _applicationState.GetProductTimer(menuItemId); var order = ticket.AddOrder( _applicationState.CurrentTicketType.SaleTransactionType, _applicationState.CurrentDepartment.Model, _applicationState.CurrentLoggedInUser.Name, menuItem, _applicationState.GetTaxTemplates(menuItem.Id).ToList(), portion, priceTag, productTimer); order.Quantity = quantity > 9 ? decimal.Round(quantity / portion.Multiplier, 3, MidpointRounding.AwayFromZero) : quantity; RecalculateTicket(ticket); _applicationState.NotifyEvent(RuleEventNames.OrderAdded, new { Ticket = ticket, Order = order, MenuItemName = order.MenuItemName, MenuItemTag = menuItem.Tag, MenuItemGroupCode = menuItem.GroupCode }); return(order); }
public Ticket Build() { if (_ticketType == null) { throw new ArgumentNullException(); } if (_department == null) { throw new ArgumentNullException(); } var result = new Ticket { TicketTypeId = _ticketType.Id, DepartmentId = _department.Id, ExchangeRate = _exchangeRate, TaxIncluded = _taxIncluded, TransactionDocument = new AccountTransactionDocument() }; foreach (var orderData in _orders) { result.AddOrder(orderData.Order, orderData.TaxTemplates, orderData.TransactionType, orderData.UserName); } foreach (var calculation in _calculations) { result.AddCalculation(calculation, calculation.Amount); } result.Recalculate(); return(result); }
public Order AddOrder(Ticket ticket, int menuItemId, decimal quantity, string portionName, OrderTagTemplate template) { if (ticket.Locked && !_userService.IsUserPermittedFor(PermissionNames.AddItemsToLockedTickets)) { return(null); } if (!ticket.CanSubmit) { return(null); } var menuItem = _cacheService.GetMenuItem(x => x.Id == menuItemId); var portion = _cacheService.GetMenuItemPortion(menuItemId, portionName); if (portion == null) { return(null); } var priceTag = _applicationState.CurrentDepartment.PriceTag; var productTimer = _cacheService.GetProductTimer(menuItemId); var order = ticket.AddOrder( _applicationState.CurrentDepartment.TicketTemplate.SaleTransactionType, _applicationState.CurrentLoggedInUser.Name, menuItem, portion, priceTag, productTimer); order.Quantity = quantity > 9 ? decimal.Round(quantity / portion.Multiplier, 3, MidpointRounding.AwayFromZero) : quantity; if (template != null) { template.OrderTagTemplateValues.ToList().ForEach(x => order.ToggleOrderTag(x.OrderTagGroup, x.OrderTag, 0)); } RecalculateTicket(ticket); order.PublishEvent(EventTopicNames.OrderAdded); _automationService.NotifyEvent(RuleEventNames.TicketLineAdded, new { Ticket = ticket, Order = order, order.MenuItemName }); return(order); }