Пример #1
0
 public static decimal GetDiscountAlc(this OrderFlight orderFlight, bool alc)
 {
     if (orderFlight.DishPackages == null)
     {
         return(0);
     }
     if (orderFlight.OrderStatus == OrderStatus.Cancelled)
     {
         return(0);
     }
     if (orderFlight.OrderDishesSumm == 0)
     {
         return(0);
     }
     if (!alc)
     {
         if (orderFlight.GetOrderSummByAlc(true) == 0)
         {
             return(orderFlight.DiscountSumm);
         }
         else
         {
             return(Math.Round(orderFlight.DiscountSumm * (orderFlight.GetOrderSummByAlc(false) / orderFlight.OrderDishesSumm)));
         }
     }
     else
     {
         return(orderFlight.DiscountSumm - orderFlight.GetDiscountAlc(false));
     }
 }
Пример #2
0
 public override Style SelectStyle(object item, DependencyObject container)
 {
     if (item is OrderFlight)
     {
         OrderFlight club = item as OrderFlight;
         if (club.OrderStatus == OrderStatus.InWork)
         {
             return(WhiteStyle);
         }
         else if (club.OrderStatus == OrderStatus.Sent)
         {
             return(LightBlueStyle);
         }
         else if (club.OrderStatus == OrderStatus.Cancelled)
         {
             return(RedStyle);
         }
         else if (club.OrderStatus == OrderStatus.CancelledWithRemains)
         {
             return(RoseStyle);
         }
         else if (club.OrderStatus == OrderStatus.Closed)
         {
             return(CloseStyle);
         }
         else
         {
             return(WhiteStyle);
         }
     }
     if (item is OrderToGo)
     {
         OrderToGo club = item as OrderToGo;
         if (club.OrderStatus == OrderStatus.InWork)
         {
             return(WhiteStyle);
         }
         else if (club.OrderStatus == OrderStatus.Sent)
         {
             return(LightBlueStyle);
         }
         else if (club.OrderStatus == OrderStatus.Cancelled)
         {
             return(RedStyle);
         }
         else if (club.OrderStatus == OrderStatus.CancelledWithRemains)
         {
             return(RoseStyle);
         }
         else if (club.OrderStatus == OrderStatus.Closed)
         {
             return(CloseStyle);
         }
         else
         {
             return(WhiteStyle);
         }
     }
     return(null);
 }
Пример #3
0
 public bool UpdateClosingCheck(OrderFlight ord, bool FRPreented, bool PreCheckPreented)
 {
     try
     {
         Utils.ToLog("UpdateClosingCheck " + ord.Id);
         var client = GetClient();
         if (client == null)
         {
             return(false);;
         }
         ord.NeedPrintFR       = false;
         ord.NeedPrintPrecheck = false;
         ord.FRPrinted         = FRPreented;
         ord.PreCheckPrinted   = PreCheckPreented;
         var res = client.UpdateOrderFlight(ord, 1);
         if (!res.Success)
         {
             Utils.ToLog("Error UpdateClosingCheck from service" + res.ErrorMessage);
             return(false);
         }
         Utils.ToLog("UpdateClosingCheck ok" + ord.Id);
         return(true);
     }
     catch (Exception e)
     {
         Utils.ToLog("Error UpdateClosingCheck " + e.Message);
         return(false);
     }
 }
        public ActionResult DeleteConfirmed(Guid id)
        {
            OrderFlight orderFlight = db.OrderFlight.Find(id);

            db.OrderFlight.Remove(orderFlight);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #5
0
 public void SetOrder(OrderFlight order)
 {
     orderFlight = order;
     if (orderFlight != null)
     {
         orderFlight.PropertyChanged += Order_PropertyChanged;
     }
     ChangeOrder();
 }
        private void TryDeleteOrderFromMDic(OrderFlight order)
        {
            DateTime           month = GetMonth(order.DeliveryDate);
            List <OrderFlight> res;

            if (dOrders.TryGetValue(month, out res))
            {
                res.Remove(order);
            }
        }
        private void TryAddOrderToMDic(OrderFlight order)
        {
            DateTime           month = GetMonth(order.DeliveryDate);
            List <OrderFlight> res;

            if (dOrders.TryGetValue(month, out res))
            {
                res.Add(order);
            }
        }
Пример #8
0
 public static decimal GetOrderDishesSummByAlc(this OrderFlight orderFlight, bool alc)
 {
     if (orderFlight.DishPackages == null)
     {
         return(0);
     }
     if (orderFlight.OrderStatus == OrderStatus.Cancelled)
     {
         return(0);
     }
     return(orderFlight.DishPackagesNoSpis.Where(a => a.Dish?.IsAlcohol == alc).Sum(a => a.TotalSumm));
 }
Пример #9
0
 public static decimal GetOrderSummByAlc(this OrderFlight orderFlight, bool alc)
 {
     if (orderFlight.DishPackages == null)
     {
         return(0);
     }
     if (orderFlight.OrderStatus == OrderStatus.Cancelled)
     {
         return(0);
     }
     return(orderFlight.GetOrderDishesSummByAlc(alc) * (1 + orderFlight.ExtraCharge / 100));
 }
Пример #10
0
 public static decimal GetOrderTotalSummByAlc(this OrderFlight orderFlight, bool alc)
 {
     if (orderFlight.DishPackages == null)
     {
         return(0);
     }
     if (orderFlight.OrderStatus == OrderStatus.Cancelled)
     {
         return(0);
     }
     return(orderFlight.GetOrderSummByAlc(alc) - orderFlight.GetDiscountAlc(alc));
 }
 public ActionResult Edit([Bind(Include = "OrderFlight_ID,Passanger_Info_ID,Flight_Info_ID,DateTimeOrder")] OrderFlight orderFlight)
 {
     if (ModelState.IsValid)
     {
         db.Entry(orderFlight).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.Flight_Info_ID    = new SelectList(db.Flight, "Flight_ID", "FlightNumber", orderFlight.Flight_Info_ID);
     ViewBag.Passanger_Info_ID = new SelectList(db.Passanger, "Passanger_ID", "FirstName", orderFlight.Passanger_Info_ID);
     return(View(orderFlight));
 }
        private void mCreateSHToFlyInvoice(OrderFlight order)
        {
            string ErrMess = "";

            if (SH.SHWrapper.CreateSalesInvoiceSync(order, out ErrMess))
            {
            }
            else
            {
                ReturnMessage += $"Ошибка выгрузки заказа ToFly №{order.Id} {Environment.NewLine} {ErrMess}";
            }
            DBProvider.UpdateOrderFlight(order);
            RaisePropertyChanged("Orders");
        }
        public ActionResult Create([Bind(Include = "OrderFlight_ID,Passanger_Info_ID,Flight_Info_ID,DateTimeOrder")] OrderFlight orderFlight)
        {
            if (ModelState.IsValid)
            {
                orderFlight.OrderFlight_ID = Guid.NewGuid();
                db.OrderFlight.Add(orderFlight);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.Flight_Info_ID    = new SelectList(db.Flight, "Flight_ID", "FlightNumber", orderFlight.Flight_Info_ID);
            ViewBag.Passanger_Info_ID = new SelectList(db.Passanger, "Passanger_ID", "FirstName", orderFlight.Passanger_Info_ID);
            return(View(orderFlight));
        }
        // GET: OrderFlights/Details/5
        public ActionResult Details(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrderFlight orderFlight = db.OrderFlight.Find(id);

            if (orderFlight == null)
            {
                return(HttpNotFound());
            }
            return(View(orderFlight));
        }
Пример #15
0
        public static UserControl GetCtrlAddOrder(OrderFlight curentOrder)
        {
            var ctrlOrder = new CtrlAddOrder();
            //var flightOrder  = new  Order
            var addOrderModel = new Models.AddOrderModel(curentOrder);
            var addOrderVM    = new Models.AddOrderViewModel(addOrderModel)
            {
                Header = $"Изменение заказа {curentOrder.Id}"
            };

            ctrlOrder.DataContext = addOrderVM;
            //  addOrderVM.CloseAction = new Action(() => { MainClass.HideUC(ctrlOrder); });
            ctrlOrder.Tag = $"Изменение заказа {curentOrder.Id}";
            return(ctrlOrder);
        }
        // GET: OrderFlights/Edit/5
        public ActionResult Edit(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrderFlight orderFlight = db.OrderFlight.Find(id);

            if (orderFlight == null)
            {
                return(HttpNotFound());
            }
            ViewBag.Flight_Info_ID    = new SelectList(db.Flight, "Flight_ID", "FlightNumber", orderFlight.Flight_Info_ID);
            ViewBag.Passanger_Info_ID = new SelectList(db.Passanger, "Passanger_ID", "FirstName", orderFlight.Passanger_Info_ID);
            return(View(orderFlight));
        }
Пример #17
0
        private static void CloseCheck(OrderFlight o)
        {
            if (o.OrderStatus != OrderStatus.Sent)
            {
                return;
            }
            o.Closed      = true;
            o.OrderStatus = OrderStatus.Closed;
            var p = o.AirCompany.PaymentType;

            o.NeedPrintFR = p.FiskalId > 0;

            o.NeedPrintPrecheck = p.FiskalId == 0;

            DBProvider.UpdateOrderFlight(o);
        }
Пример #18
0
        public bool AddOrder(OrderFlight order, List <DishPackageFlightOrder> OrderDishez)
        {
            order.DishPackages = OrderDishez.ToList();
            var res = DBProvider.AddOrderFlight(order, OrderDishez);

            if (res)
            {
                TryAddOrderToMDic(order);
                if ((StartDt < order.DeliveryDate) && (EndDt > order.DeliveryDate))
                {
                    orders.Add(order);
                    RaiseOnOrderAdded(order);
                }
            }

            return(res);
        }
        public ChangeOrderStatusViewModel(OrderFlight order)
        {
            Order     = order;
            OkCommand = new DelegateCommand((_) =>
            {
                Order.SendBy      = Authorization.CurentUser;
                Order.OrderStatus = GetOrderStatus();

                //DBDataExtractor<OrderFlight>.EditItem(DBProvider.Client.UpdateOrderFlight, Order);
                CloseAction();
            });
            CancelCommand   = new DelegateCommand((_) => { CloseAction(); });
            Text            = $"Смена статуса заказа № {Order.Id}";
            StatusInWork    = Order.OrderStatus == OrderStatus.InWork;
            StatusCancelled = Order.OrderStatus == OrderStatus.Cancelled;

            StatusSent = Order.OrderStatus == OrderStatus.Sent;
            StatusCancelledWithRemains = Order.OrderStatus == OrderStatus.CancelledWithRemains;
        }
Пример #20
0
        public static void ShowWndChangeOrderStatus(OrderFlight order)
        {
            try
            {
                logger.Debug("ShowWndChangeOrderStatus");

                if (order == null)
                {
                    ShowAlert("Нет выделенного заказа для смены статуса"); return;
                }
                var vm  = new ChangeOrderStatusViewModel(order);
                var wnd = new WndChangeOrderStatus();
                wnd.DataContext = vm;
                wnd.ShowDialog();
            }
            catch (Exception e)
            {
                logger.Error($"ShowWndChangeOrderStatus {e.Message}");
            }
        }
Пример #21
0
        public bool DeleteOrder(OrderFlight order)
        {
            order.OrderStatus = OrderStatus.Cancelled;
            order.SendBy      = Authorization.CurentUser;
            var res = DBProvider.UpdateOrderFlight(order);

            if (res)
            {
                if (!SH.SHWrapper.DeleteSalesInvoice(order))
                {
                    DBProvider.UpdateOrderFlight(order);
                }

                TryDeleteOrderFromMDic(order);
                if (orders.Contains(order))
                {
                    orders.Remove(order);
                }
            }
            return(res);
        }
Пример #22
0
        /*
         * public static void ShowWndPrintLabels(OrderToGo order)
         * {
         *
         *  if (order == null) { ShowAlert("Нет выделенного заказа для печати"); return; }
         *  if ((order.DishPackages == null) || (order.DishPackages.Count() == 0)) { ShowAlert("Нет блюд в заказе для печати"); return; }
         *
         *  var vm = new AddLabelsViewModel(order as IOrderLabel) { Header = $"Печать наклеек заказ {order.Id}" };
         *  //var ctrl = new CtrlPrintLabels();
         *  var ctrl = new ctrlItemLabels();
         *  ctrl.DataContext = vm;
         *
         *  MainClass.ShowUC(ctrl);
         *
         * }
         */
        public static void ShowWndPrintForKitchen(OrderFlight order)
        {
            if (order == null)
            {
                ShowAlert("Нет выделенного заказа для печати"); return;
            }
            if ((order.DishPackagesNoSpis == null) || (order.DishPackagesNoSpis.Count() == 0))
            {
                ShowAlert("Нет блюд в заказе для печати"); return;
            }

            (new WordReports()).PrintKitchenDocumentToFly(order);

            /*
             * var printOrderKitchenToFly = new PrintOrderKitchenToFly(order) { Header = $"Печать заказа для кухни {order.Id}" };
             * var ctrl = new CtrlPrintOrder();
             * ctrl.Tag = $"Печать заказа для кухни {order.Id}";
             * ctrl.DataContext = printOrderKitchenToFly;
             * MainClass.ShowUC(ctrl);
             */
        }
Пример #23
0
        public static bool UpdateOrderFlight(OrderFlight order)
        {
            try
            {
                var Client = GetClient();
                if (Client == null)
                {
                    return(false);
                }

                order.AirCompanyId               = order.AirCompany?.Id;
                order.ContactPersonId            = order.ContactPerson?.Id;
                order.WhoDeliveredPersonPersonId = order.WhoDeliveredPersonPerson?.Id;
                order.DeliveryPlaceId            = order.DeliveryPlace?.Id;
                order.DriverId    = order.Driver?.Id;
                order.CreatedById = order.CreatedBy?.Id;
                order.SendById    = order.SendBy?.Id;
                foreach (var d in order.DishPackages)
                {
                    d.OrderFlight   = null;
                    d.OrderFlightId = order.Id;
                    d.DishId        = d.Dish.Id;
                }
                var res = Client.UpdateOrderFlight(order, Authorization.CurentUser.Id);

                if (!res.Success)
                {
                    DBError(res.ErrorMessage);
                    return(false);
                }
                order = res.Result;

                return(res.Success);
            }
            catch (Exception e)
            {
                DBError($"Error UpdateOrderFlight Mess: {e.Message}");
                return(false);
            }
        }
Пример #24
0
        public static void CloseSingleCheck(OrderFlight ord)
        {
            if (ord == null)
            {
                return;
            }
            if (ord.AirCompany.PaymentType == null)
            {
                UI.UIModify.ShowAlert($"Для закрытия чеков авиакомпания {ord.AirCompany.Name} должна содержать вид оплаты"); return;
            }
            if (ord.OrderStatus != OrderStatus.Sent)
            {
                UI.UIModify.ShowAlert($"Чек {ord.Id} имеет статус {ord.OrderStatus}  и не может быть закрыт");
            }
            string promtStr = $"Закрыть чек {ord.Id}. {Environment.NewLine} Вид оплаты: {ord.AirCompany.PaymentType.Name} {Environment.NewLine} На сумму: {ord.OrderTotalSumm}? ";

            UI.UIModify.ShowConfirm(promtStr, (_) =>
            {
                if (_)
                {
                    CloseCheck(ord);
                }
            });
        }
Пример #25
0
        public static void CalcOrderDisc(OrderFlight ord)
        {
            if (ord == null)
            {
                return;
            }


            if (ord.OrderSumm == 0)
            {
                ord.DiscountSumm = 0; return;
            }
            ;
            if (ord.AirCompany == null)
            {
                return;
            }
            if (ord.AirCompanyId == MainClass.AirAvangardId)
            {
                return;
            }
            if (ord.AirCompany.DiscountId == null)
            {
                return;
            }
            decimal summ = Models.AirOrdersModelSingleton.Instance.GetOrderFlightsOfMonth(ord.DeliveryDate)
                           .Where(a => a.AirCompany?.Id == ord.AirCompany?.Id && a.Id < ord.Id)
                           .Sum(a => a.OrderSumm);

            if (ord.OrderStatus != OrderStatus.Closed)
            {
                if (ord.OrderStatus == OrderStatus.Cancelled)
                {
                    ord.DiscountSumm = 0;
                }

                //  var ranges = GetRangeofOrder(summ, summ + ord.OrderSumm, ord.AirCompany.DiscountType.Id);
                var ranges = GetRangeofOrder(summ, ord.OrderSumm, ord.AirCompany.DiscountType.Id);
                if (ranges != null)
                {
                    decimal disc = 0;
                    foreach (var r in ranges)
                    {
                        if (r.End == null)
                        {
                            disc += ((summ + ord.OrderSumm) - Math.Max(r.Start, summ)) * r.DiscountPercent / 100;
                        }
                        else
                        {
                            disc += (Math.Min((summ + ord.OrderSumm), r.End.Value) - Math.Max(r.Start, summ)) * r.DiscountPercent / 100;
                        }
                    }
                    disc = Math.Round(disc, 2);
                    if (disc != ord.DiscountSumm)
                    {
                        ord.DiscountSumm = disc;
                        //DBProvider.Client.UpdateOrderFlight(ord, Authorization.CurentUser.Id);
                    }
                }
                //summ += ord.OrderSumm;
            }
        }
Пример #26
0
 public void RaiseOnOrderAdded(OrderFlight order)
 {
     OnOrderAdded?.Invoke(order);
 }
Пример #27
0
        public bool UpdateOrder(OrderFlight order)
        {
            var res = DBProvider.UpdateOrderFlight(order);

            return(res);
        }
Пример #28
0
        public static FiskalDrivers.FiskalCheck GetFiskalCheckFromOrder(OrderFlight ord)
        {
            FiskalDrivers.FiskalCheck Tmp = new FiskalDrivers.FiskalCheck();
            Tmp.CheckNum   = ord.Id.ToString();
            Tmp.TimeofOpen = ord.DeliveryDate;
            Tmp.Cassir     = ord.AirCompany.Name;
            Tmp.Waiter     = ord.FlightNumber;
            Tmp.FlyCheck   = true;
            foreach (var oi in ord.DishPackages.Where(a => a.TotalPrice > 0 && !a.Dish.IsAlcohol))
            {
                FiskalDrivers.FiskalDish fd = new FiskalDrivers.FiskalDish()
                {
                    Name     = oi.DishName,
                    Price    = (double)oi.TotalPrice,
                    Quantity = (double)oi.Amount
                };
                Tmp.Dishes.Add(fd);
            }
            foreach (var oi in ord.DishPackages.Where(a => a.TotalPrice > 0 && a.Dish.IsAlcohol))
            {
                FiskalDrivers.FiskalDish fd = new FiskalDrivers.FiskalDish()
                {
                    Name     = "Открытый напиток",
                    Price    = (double)oi.TotalPrice,
                    Quantity = (double)oi.Amount
                };
                Tmp.Dishes.Add(fd);
            }
            double DSumm = (double)ord.DishPackages.Sum(a => a.TotalPrice * a.Amount);
            double ExCh  = DSumm * (double)ord.ExtraCharge / 100;

            Tmp.Discount = (double)ord.DiscountSumm;
            if ((Tmp.Discount > 0) && (ExCh > 0))
            {
                if (Tmp.Discount > ExCh)
                {
                    Tmp.Discount -= ExCh;
                }
                else
                {
                    Tmp.Charge   = ExCh - Tmp.Discount;
                    Tmp.Discount = 0;
                }
            }
            else if (ExCh > 0)
            {
                Tmp.Charge = ExCh;
            }

            double DSummTotal = DSumm - Tmp.Discount + Tmp.Charge;
            var    op         = ord.AirCompany.PaymentType;

            //OrderToAlohaSrv.OrderPayment op = ord.OrderPayments;
            FiskalDrivers.FiskalPayment fp = new FiskalDrivers.FiskalPayment()
            {
                Name        = op.Name,
                Summ        = DSummTotal,
                PaymentType = (int)op.FiskalId
                              //  NonFiskalPayment = op.TNDR.
            };
            if (fp.PaymentType == 0)
            {
                fp.Name = "Наличные";
            }
            Tmp.Payments.Add(fp);

            Tmp.Summ = DSummTotal;
            return(Tmp);
        }
Пример #29
0
        public void PrintKitchenDocumentToFly(OrderFlight order)
        {
            if (order == null)
            {
                return;
            }
            try
            {
                logger.Debug($"PrintKitchenDocumentToFly {order.Id}");
                // Создаём объект приложения
                Word.Application app = new Word.Application();
                app.Visible = true;
                // Путь до шаблона документа
                // Открываем

                document = app.Documents.Add(System.AppDomain.CurrentDomain.BaseDirectory + SampleDocumentPath);
                document.Paragraphs.Add();
                int ParNum = 1;
                AddLeftCaptionText(document.Paragraphs[1], $"Компания {order.AirCompany.Name}", true);
                document.Paragraphs.Add();

                AddLeftCaptionText(document.Paragraphs.Last, $"Борт {order.FlightNumber}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Дата {order.DeliveryDate.ToString("dd.MM.yyyy HH:mm")}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Доставка: {order.DeliveryPlace?.Name}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Контакты: {order.ContactPerson?.FullSearchData}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Машина забирает: {order.ExportTime.ToString("HH:mm")}");
                document.Paragraphs.Add();
                AddMiddleCaptionText(document.Paragraphs.Last, $"Готовность в ресторане в {order.ReadyTime.ToString("HH:mm")}", true);
                string comment = Utils.TextHelper.GetTextFromRadDocText(order.Comment);
                if (comment != null && comment != "")
                {
                    document.Paragraphs.Add();
                    AddMiddleCaptionText(document.Paragraphs.Last, comment);
                }


                foreach (var fn in order.DishPackagesNoSpis.Select(a => ((DishPackageFlightOrder)a).PassageNumber).Distinct().OrderBy(a => a))
                {
                    if (order.DishPackagesNoSpis.Select(a => ((DishPackageFlightOrder)a).PassageNumber).Distinct().Count() > 1)
                    {
                        document.Paragraphs.Add();
                        AddFlightNumberStr(document.Paragraphs.Last, fn);
                    }

                    foreach (var KGroup in order.DishPackagesNoSpis.Where(a => ((DishPackageFlightOrder)a).PassageNumber == fn && a.Dish.DishKitсhenGroupId != null).Select(a => a.Dish.DishKitсhenGroupId).Distinct().OrderBy(a => a.Value))
                    {
                        foreach (var Pak in order.DishPackagesNoSpis.Where(a => ((DishPackageFlightOrder)a).PassageNumber == fn && a.Dish.DishKitсhenGroupId != null && a.Dish.DishKitсhenGroupId == KGroup).OrderBy(a => a.PositionInOrder))
                        {
                            document.Paragraphs.Add();
                            AddDishparagraph(document.Paragraphs.Last, (DishPackageFlightOrder)Pak);
                        }
                        document.Paragraphs.Add();
                        AddDishparagraph(document.Paragraphs.Last, null);
                    }

                    foreach (var Pak in order.DishPackagesNoSpis.Where(a => ((DishPackageFlightOrder)a).PassageNumber == fn && a.Dish.DishKitсhenGroupId == null))
                    {
                        document.Paragraphs.Add();
                        AddDishparagraph(document.Paragraphs.Last, (DishPackageFlightOrder)Pak);
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error($"Error PrintKitchenDocumentToFly {order.Id} Mess: {e.Message}");
            }
        }
Пример #30
0
 public AirOrderInfo(OrderFlight ord)
 {
     Ord = ord;
 }