예제 #1
0
 private void AssignCourses(PosOrder posOrder, Order order)
 {
     order.CourseGroups = new ObservableCollection <Group>();
     foreach (var servingCourse in posOrder.Courses)
     {
         var group = CreateGroup(servingCourse, GroupType.Course);
         group.Order = order;
         order.CourseGroups.Add(group);
     }
 }
예제 #2
0
        public long?SavePosCheck(PosCheck model)
        {
            var entity = new PosOrder
            {
                CheckId       = model.CheckId,
                FranchiseCode = model.FranchiseCode,
                GuidId        = model.GuidId,
                OrderDatetime = DateTime.Now,
                Subtotal      = (Decimal)model.SubTotal,
                Taxes         = (Decimal)model.Tax,
                Total         = (Decimal)model.Total,
                UserId        = AccountRepository.GetIdByUsername(model.Username, DbEntities),
            };

            DbEntities.PosOrder.Add(entity);
            DbEntities.SaveChanges();

            foreach (var itemModel in model.LstItems)
            {
                var item = new PosOrderItem
                {
                    CheckItemId = itemModel.CheckItemId,
                    ItemId      = itemModel.ItemId,
                    Name        = itemModel.RealName,
                    Price       = (Decimal)itemModel.Price,
                    LevelItem   = (int)itemModel.Level,
                    ParentId    = itemModel.Parent != null ? itemModel.Parent.CheckItemId : (long?)null,
                    PosOrderId  = entity.PosOrderId
                };

                DbEntities.PosOrderItem.Add(item);
                DbEntities.SaveChanges();
                itemModel.CheckItemId = item.PosOrderItemId;
            }

            if (model.Promos != null && model.Promos.Any())
            {
                var lstPromos = model.Promos.Values.Select(promo => new PosOrderPromo
                {
                    PosOrderId         = entity.PosOrderId,
                    EntriesIdsSelected = JsonConvert.SerializeObject(promo.LstEntries),
                    PromoEntryId       = promo.PromoEntryId,
                    PromoTypeId        = promo.PromoTypeId
                }).ToList();

                DbEntities.PosOrderPromo.AddRange(lstPromos);
                DbEntities.SaveChanges();
            }


            model.Id = entity.PosOrderId;
            DbEntities.Entry(entity).State = EntityState.Detached;
            return(model.Id);
        }
예제 #3
0
        private Order ConvertToChefmateOrder(PosOrder posOrder)
        {
            var order = new Order();

            order.ArrivalTime      = DateTime.Now;
            order.SaleStartTime    = posOrder.SaleStartTime.ToDateTime();
            order.DeliveryTime     = posOrder.DeliveryTime.ToDateTime();
            order.SaleFinishTime   = posOrder.SaleFinishTime.ToDateTime();
            order.BeenSentToOutput = false;
            order.TableTabName     = posOrder.TableTabName;
            int colonIndex = order.TableTabName.IndexOf(':');

            if (colonIndex > 0)
            {
                order.TableTabName = order.TableTabName.Substring(0, colonIndex - 1);
            }
            order.SourceTableName = posOrder.SourceTableName;
            order.ChitValue       = posOrder.ChitValue != "Chit Number" ? posOrder.ChitValue : "";
            order.ServerName      = posOrder.ServerName;
            order.CustomerName    = posOrder.CustomerName;
            order.PartyName       = posOrder.PartyName;
            order.OrderType       = posOrder.OrderType;
            order.PatronCount     = posOrder.PatronCount.ToInteger();
            order.OrderNumber     = posOrder.OrderNumber.ToInteger();
            order.OrderPosKey     = posOrder.DbKey.ToInteger();
            order.OrderState      = GetOrderState(posOrder.Action, posOrder.ActionType);
            if (order.OrderState == OrderState.Cancel)
            {
                AssignCancelGroups(order);
            }
            else
            {
                AssignServingCourses(posOrder, order);
                AssignCourses(posOrder, order);
            }
            GetAllItems(posOrder, order);
            return(order);
        }
예제 #4
0
 private void GetAllItems(PosOrder posOrder, Order order)
 {
     foreach (var posItem in posOrder.Items.Items)
     {
         if (order.OrderState == OrderState.Cancel)
         {
             int quantity = posItem.Quantity.ToInteger();
             if (quantity <= 0)
             {
                 quantity = 1;
             }
             for (int i = 0; i < quantity; i++)
             {
                 var item = CreateItem(posItem, order.OrderState);
                 item.SCourseGroup = order.ServingCourseGroups.FirstOrDefault();
                 item.CourseGroup  = order.CourseGroups.FirstOrDefault();
                 order.Items.Add(item);
             }
         }
         else
         {
             var item          = CreateItem(posItem, order.OrderState);
             var servingCourse = order.ServingCourseGroups.FirstOrDefault(s => s.GroupPosKey == posItem.ServingCoursePosKey.ToInteger());
             if (servingCourse != null)
             {
                 item.SCourseGroup = servingCourse;
                 //servingCourse.Items.Add(item);
             }
             var course = order.CourseGroups.FirstOrDefault(s => s.GroupPosKey == posItem.CoursePosKey.ToInteger());
             if (course != null)
             {
                 item.CourseGroup = course;
                 //course.Items.Add(item);
             }
             order.Items.Add(item);
         }
     }
 }
예제 #5
0
 public string BuildBody(string template)
 {
     return(string.Format(template, AtoOrderId, StoreName, Client.GetInfo(), PhoneNumber,
                          Address.GetInfo(), GetInfo(), PosOrder.GetInfo()));
 }