Exemplo n.º 1
0
        static FiskalDrivers.FiskalCheck GetFiskalCheckFromOrder(OrderToAlohaSrv.Order ord)
        {
            FiskalDrivers.FiskalCheck Tmp = new FiskalDrivers.FiskalCheck();
            Tmp.CheckNum   = ord.StNum.ToString();
            Tmp.TimeofOpen = ord.TimeofShipping.Value;
            Tmp.Cassir     = ord.CompanyName;
            Tmp.Waiter     = ord.BortName;
            Tmp.FlyCheck   = true;
            foreach (OrderToAlohaSrv.OrderItem oi in ord.OrderItems.Where(a => !a.Deleted.Value && a.Price > 0 && !a.Alk))
            {
                FiskalDrivers.FiskalDish fd = new FiskalDrivers.FiskalDish()
                {
                    Name     = OrderToAlohaSrv.ToSql.SQLGetDishName(oi.Barcode.Value),
                    Price    = (double)oi.Price.Value,
                    Quantity = oi.Quantity.Value
                };
                Tmp.Dishes.Add(fd);
            }

            Tmp.Discount = (double)ord.ComplexDisc + (double)ord.StDiscount;
            if ((Tmp.Discount > 0) && (ord.Margin > 0))
            {
                if (Tmp.Discount > (double)ord.Margin)
                {
                    Tmp.Discount -= (double)ord.Margin;
                }
                else
                {
                    Tmp.Charge   = (double)ord.Margin - Tmp.Discount;
                    Tmp.Discount = 0;
                }
            }
            else if (ord.Margin > 0)
            {
                Tmp.Charge = (double)ord.Margin;
            }

            foreach (OrderToAlohaSrv.OrderPayment op in ord.OrderPayments)
            {
                //OrderToAlohaSrv.OrderPayment op = ord.OrderPayments;
                FiskalDrivers.FiskalPayment fp = new FiskalDrivers.FiskalPayment()
                {
                    Name        = op.TNDR.Name,
                    Summ        = (double)op.Summ.Value,
                    PaymentType = op.TNDR.FisckalId.Value,
                    //  NonFiskalPayment = op.TNDR.
                };
                Tmp.Payments.Add(fp);
            }
            Tmp.Summ = (double)(ord.Summ - ord.StDiscount - ord.ComplexDisc + ord.Margin);
            return(Tmp);
        }
Exemplo n.º 2
0
        public static FiskalDrivers.FiskalCheck GetFiskalCheckFromOrder(OrderToGo 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 = false;
            double tmpSumm = 0;

            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 * (1 - (double)ord.DiscountPercent / 100),
                    Quantity = (double)oi.Amount
                };
                tmpSumm += fd.Price * fd.Quantity;
                Tmp.Dishes.Add(fd);
            }

            if (ord.DiscountPercent > 0)
            {
                Tmp.Discount     = (double)(ord.DishPackages.Sum(a => a.TotalPrice * a.Amount) * (ord.DiscountPercent / 100));
                Tmp.DiscountName = "Скидка ";
            }
            var diff = tmpSumm - ((double)ord.DishPackages.Sum(a => a.TotalPrice * a.Amount) - Tmp.Discount);

            if (Math.Abs(diff) > 0.001)
            {
                if (Tmp.Dishes.Any(a => a.Price * a.Quantity > diff))
                {
                    var d = Tmp.Dishes.Where(a => a.Price * a.Quantity > diff).FirstOrDefault();
                    d.Price = d.Price - diff / d.Quantity;
                }
            }


            if (ord.DeliveryPrice > 0)
            {
                FiskalDrivers.FiskalDish fd = new FiskalDrivers.FiskalDish()
                {
                    Name     = "Доставка",
                    Price    = (double)ord.DeliveryPrice,
                    Quantity = 1
                };
                Tmp.Dishes.Add(fd);
            }

            // double DSumm = (double)ord.DishPackages.Sum(a => a.TotalPrice * a.Amount) + (double)ord.DeliveryPrice;
            double DSumm = (double)Tmp.Dishes.Sum(a => a.Price * a.Quantity);

            /*
             * double ExCh = 0;
             * Tmp.Discount =  0;
             * 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.PaymentType;

            //OrderToAlohaSrv.OrderPayment op = ord.OrderPayments;
            FiskalDrivers.FiskalPayment fp = new FiskalDrivers.FiskalPayment()
            {
                Name        = op.Name,
                Summ        = DSumm,
                PaymentType = (int)op.FiskalId
                              //  NonFiskalPayment = op.TNDR.
            };
            Tmp.Payments.Add(fp);

            Tmp.Summ = DSumm;
            return(Tmp);
        }
Exemplo n.º 3
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);
        }