Exemplo n.º 1
0
 public SalesRecord(int id, DateTime date, double amount, SaleStatus myProperty, Seller seller)
 {
     Id         = id;
     Date       = date;
     Amount     = amount;
     MyProperty = myProperty;
     Seller     = seller;
 }
Exemplo n.º 2
0
 public SalesRecord(int Id, DateTime Date, double Amount, SaleStatus Status, Seller Seller)
 {
     this.Id     = Id;
     this.Date   = Date;
     this.Amount = Amount;
     this.Status = Status;
     this.Seller = Seller;
 }
Exemplo n.º 3
0
 public bool VerfyEnableCombine(string barcode, SaleStatus status, bool hasEditPrice = false, string recordId = "")
 {
     if (RecordId == recordId)
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 4
0
 public SalesRecord(int id, DateTime date, double amount, SaleStatus status, Seller seller)
 {
     Id     = id;
     Date   = date;
     Amount = amount;
     Status = status;
     Seller = seller;
 }
Exemplo n.º 5
0
 public SalesRecord(int id, DateTime date, double amount, SaleStatus status, Seller seller) //contrutor com argumentos
 {
     Id     = id;
     Date   = date;
     Amount = amount;
     Status = status;
     Seller = seller;
 }
 public static void Valdiate(SaleStatus status)
 {
     try
     {
     }
     catch (Exception e)
     {
         throw e;
     }
 }
 public static async Task Execute(string id, SaleStatus status)
 {
     try
     {
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemplo n.º 8
0
 public string CardSaleFailure(SaleStatus sale)
 {
     return(Generate(true, receipt =>
     {
         FormatInvoiceNo(receipt, sale.InvoiceNo);
         FormatSaleDateTime(receipt);
         receipt.WriteLine();
         receipt.WriteLine(sale.SaleResponse.Receipt);
     }));
 }
 public static void ValidateSaleStatus(SaleStatus status)
 {
     try
     {
         //Status.Valdiate(status);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public async Task <IActionResult> Create([Bind("SaleStatusID,ProductSaleStatus")] SaleStatus saleStatus)
        {
            if (ModelState.IsValid)
            {
                _context.Add(saleStatus);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(saleStatus));
        }
Exemplo n.º 11
0
        public string PartialPrepayRefundCard(SaleStatus sale)
        {
            return(Generate(true, receipt =>
            {
                PartialPrepayRefund(receipt, sale);

                receipt.WriteLine();

                receipt.WriteLine(sale.RefundResponse.Receipt);
            }));
        }
Exemplo n.º 12
0
 public static async Task <Sale> Execute(Sale sale, SaleStatus newStatus)
 {
     try
     {
         sale.Status = newStatus;
         return(sale);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemplo n.º 13
0
        internal void ResetProduct(SaleStatus status)
        {
            //重置订单历史小计
            EditTotal = -1;

            //重置促销赠品

            //重置促销信息
            foreach (var item in OrderList)
            {
                if (item.ProductType == ProductType.Bundling && item is BundlingBarcode && (item.Details.SaleStatus == SaleStatus.Normal))
                {
                    item.Details.SaleStatus = SaleStatus.Promotion;
                }
                else if (item.Details.SaleStatus == SaleStatus.Promotion)
                {
                    item.Details.SaleStatus = SaleStatus.Normal;
                }
                else if (item.Details.SaleStatus == SaleStatus.ActivityGifts)
                {
                    item.Details.IsActivityGiftsTimeOut = true;
                }
                item.MarketingMarks = new List <ActiveMarketingRule>();
                item.MarketingPrice = item.SalePrice;
                item.Details.Total  = item.SalePrice * item.SaleNumber;
                item.Details.CollectionMarketingPrice = item.MarketingPrice;
            }

            //重置促销造成的同商品分条目显示(合并促销的同商品条目)
            var groupOrders = OrderList.Where(o => !o.HasEditPrice && o.ProductType != ProductType.Weigh)
                              .GroupBy(o => new { o.MainBarcode, o.Details.SaleStatus }).ToList();

            //合并商品
            foreach (var item in groupOrders)
            {
                if (item.Count() > 1)
                {
                    IBarcode barcode = item.FirstOrDefault();
                    var      list    = item.ToList();

                    if (list.Count > 1)
                    {
                        barcode.SaleNumber = list.Sum(o => o.SaleNumber);
                        list.Remove(barcode);
                        OrderList.RemoveAll(o => list.Exists(p => p == o));
                        barcode.MarketingPrice = barcode.SalePrice;
                        barcode.Details.Total  = barcode.SalePrice * barcode.SaleNumber;
                        barcode.Details.CollectionMarketingPrice = barcode.MarketingPrice;
                    }
                }
            }
        }
Exemplo n.º 14
0
        private KeyValuePair <string, string> GetAutoRemoveBasketTenderInfo(SaleStatus currentSale)
        {
            log.Debug("PosManager: Get auto remove basket tender info.");
            if (currentSale.SaleTender != null)
            {
                log.Debug("PosManager: SaleTender is not null.");
                return(new KeyValuePair <string, string>(
                           currentSale.SaleTender.Class.ToString(),
                           currentSale.SaleTender.Description));
            }

            return(defaultRemoveBasketTenderInfo);
        }
Exemplo n.º 15
0
        private void saveAsNewButton_Click(object sender, EventArgs e)
        {
            if (nameTextBox.Text.Length <= 0)
            {
                return;
            }
            var status = new SaleStatus()
            {
                Title = nameTextBox.Text,
            };

            saleStatusBindingSource.Add(status);
        }
Exemplo n.º 16
0
        public string DriveOffOrPumpTest(SaleStatus sale)
        {
            return(Generate(true, receipt =>
            {
                var basket = sale.SoldBasket;

                Label(receipt, "ReceiptType");
                receipt.WriteLine("#{0}", sale.SoldBasket.InvoiceType);
                receipt.WriteLine();
                PostPay(receipt, basket);
                FormatInvoiceNo(receipt, sale.InvoiceNo);
                FormatSaleDateTime(receipt);
            }));
        }
Exemplo n.º 17
0
        public void Remove(string barcodeString, SaleStatus status, bool recordHadEditPrice, string recordId)
        {
            var product = OrderList.FirstOrDefault(o => o.RecordId == recordId);

            if (product == null)
            {
                throw new PosException("未找到商品【{0}】的记录", barcodeString);
            }
            //移除商品
            OrderList.Remove(product);

            //重置商品状态为促销运算做准备
            ResetProduct(status);
        }
Exemplo n.º 18
0
 //Construtor com argumento
 public Fechamento(int id, /*Tipo tipo,*/ /*Operador operador,*/ DateTime data, string empresa, double valor, double taxa, double despesa, int fluxo, string banco, SaleStatus status)
 {
     Id = id;
     //Tipo = tipo;
     //Operador = operador;
     Data    = data;
     Empresa = empresa;
     Valor   = valor;
     Taxa    = taxa;
     Despesa = despesa;
     Fluxo   = fluxo;
     Banco   = banco;
     Status  = status;
 }
Exemplo n.º 19
0
        public bool Update(SaleStatus saleStatus)
        {
            bool result = false;

            try
            {
                _context.Entry(saleStatus).State = EntityState.Modified;
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }
            return(result);
        }
Exemplo n.º 20
0
        private void Prepay(StringWriter receipt, SaleStatus sale)
        {
            Label(receipt, "Pump");
            receipt.WriteLine("#{0} - {1}", sale.PumpId, sale.SaleGrade.Type);

            Label(receipt, "Prepay");
            receipt.WriteLine("{0:0.00}", sale.Amount);

            Label(receipt, "Volume");
            receipt.WriteLine("{0:0.000}",
                              (sale.Amount / sale.SaleGrade.Price.UnitPrice));

            Label(receipt, "Price");
            FuelUnitPrice(receipt, sale.SaleGrade.Price.UnitPrice);
        }
Exemplo n.º 21
0
        public string PostPayCard(SaleStatus sale)
        {
            return(Generate(true, receipt =>
            {
                var basket = sale.SoldBasket;

                PostPay(receipt, basket);

                FormatInvoiceNo(receipt, sale.InvoiceNo);
                FormatSaleDateTime(receipt);

                receipt.WriteLine();

                receipt.WriteLine(sale.SaleResponse.Receipt);
            }));
        }
Exemplo n.º 22
0
        public IHttpActionResult ChangeSaleStatus(JObject jsonBody)
        {
            SaleStatus sale = jsonBody.ToObject <SaleStatus>();

            if (db.RetailSales.Count(s => s.OrderId == sale.OrderId) > 0)
            {
                RetailSale originalSale = db.RetailSales.Find(sale.OrderId);
                originalSale.OrderStatus     = sale.Status;
                db.Entry(originalSale).State = EntityState.Modified;
                db.SaveChanges();
                return(Ok());
            }
            else
            {
                return(StatusCode(HttpStatusCode.NotModified));
            }
        }
Exemplo n.º 23
0
        public async Task <IActionResult> ChangeSaleStatus(int?id, SaleStatus status)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Sale sale = await _context.Sales.FindAsync(id);

            if (sale == null)
            {
                return(NotFound());
            }
            sale.SaleStatus = status;
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 24
0
        public void Edit(string barcodeString, decimal number, decimal salePrice, SaleStatus status, bool recordHadEditPrice, string recordId)
        {
            var product = OrderList.FirstOrDefault(o => o.RecordId == recordId);

            if (product == null)
            {
                throw new PosException("未找到商品【{0}】的记录", barcodeString);
            }


            //处理改量
            var editNum = Math.Abs(product.SaleNumber - number) > 0.0001m;

            if (!product.Details.EnableEditNum && editNum)
            {
                throw new SaleException("603", "该商品不允许修改数量!");
            }
            else if (product.Details.EnableEditNum && editNum)
            {
                product.SaleNumber = number;
            }


            //处理改价
            var editPrice = Math.Abs(product.MarketingPrice - salePrice) >= 0.01m;

            if (editPrice && !product.Details.EnableEditPrice)
            {
                throw new SaleException("603", "该商品不允许修改售价!");
            }
            else if (editPrice && product.Details.BuyPrice > salePrice)
            {
                throw new SaleException("603", "改价失败,售价必须大于进价!");
            }
            else if (editPrice && product.Details.EnableEditPrice)
            {
                product.SalePrice       = salePrice;
                product.EnableMarketing = false;
                product.HasEditPrice    = true;
            }
            //重置商品状态为促销运算做准备
            ResetProduct(status);
        }
Exemplo n.º 25
0
        private SaleStatus CreateNewSale(int pumpId)
        {
            log.Debug("PosManager: Create new sale for pumpId {0}", pumpId);
            var sales = GetSales(currentSales, pumpId);

            if (sales != null)
            {
                SaleStatus sale = new SaleStatus();
                sale.InitiateSale();
                sale.SaleTime = DateTime.Now;
                sale.PumpId   = pumpId;
                sales.Add(sale);
                log.Debug("PosManager: Create sale successfully.");
                return(sale);
            }

            log.Error("PosManager: Create sale failure.");
            return(null);
        }
Exemplo n.º 26
0
        public string PartialPrepayRefundCash(SaleStatus sale)
        {
            return(Generate(true, receipt =>
            {
                PartialPrepayRefund(receipt, sale);

                receipt.WriteLine();

                Label(receipt, "RefundMethod");
                receipt.WriteLine("{0}", sale.SaleTender.Description);

                Label(receipt, "Paid");
                receipt.WriteLine("{0:0.00} ({1:0.00})", sale.TotalPaid / sale.RefundTender.ExchangeRate, sale.TotalPaid);

                FormatExchangeRate(receipt, sale.RefundTender.ExchangeRate);

                Label(receipt, "Change");
                receipt.WriteLine("{0:0.00}", sale.Change);
            }));
        }
Exemplo n.º 27
0
 public bool VerfyEnableCombine(string barcode, SaleStatus status, string giftId, string giftPromotionId)
 {
     if (this == null)
     {
         return(false);
     }
     if (string.IsNullOrEmpty(CurrentString) || string.IsNullOrEmpty(barcode) || Details == null)
     {
         return(false);
     }
     if ((CurrentString == barcode || MainBarcode == barcode || MultiCode.Contains(barcode)) && Details.SaleStatus == status && Details.MarketingRuleId == giftPromotionId)
     {
         if (MultiCode.Contains(barcode))
         {
             IsMultiCode = true;
         }
         return(true);
     }
     return(false);
 }
Exemplo n.º 28
0
 public bool VerfyEnableCombine(string barcode, SaleStatus status, bool hasEditPrice = false, string recordId = "")
 {
     if (this == null)
     {
         return(false);
     }
     if (string.IsNullOrEmpty(CurrentString) || string.IsNullOrEmpty(barcode) || Details == null)
     {
         return(false);
     }
     if (SameProduct(barcode) && Details.SaleStatus == status && (recordId == RecordId || (string.IsNullOrEmpty(recordId) && !HasEditPrice)))
     {
         if (MultiCode.Contains(barcode))
         {
             IsMultiCode = true;
         }
         return(true);
     }
     return(false);
 }
Exemplo n.º 29
0
 private KeyValuePair <string, string> GetRemoveBasketTenderInfo(SaleStatus currentSale)
 {
     log.Debug("PosManager: Get Remove Basket tender info.");
     if (currentSale.SoldBasket.Prepay == null &&
         currentSale.SaleTender != null)
     {
         log.Debug("PosManager: SaleType is not prepay.Sale tender exists.");
         return(new KeyValuePair <string, string>(
                    currentSale.SaleTender.Class.ToString(),
                    currentSale.SaleTender.Description));
     }
     else if (currentSale.SoldBasket.Prepay != null &&
              currentSale.RefundTender != null)
     {
         log.Debug("PosManager: SaleType is prepay and Refund tender exists.");
         return(new KeyValuePair <string, string>(
                    currentSale.RefundTender.Class.ToString(),
                    currentSale.RefundTender.Description));
     }
     return(defaultRemoveBasketTenderInfo);
 }
Exemplo n.º 30
0
        public void PrintReceipt(SaleStatus currentSale)
        {
            StringBuilder stringBuilder = new StringBuilder();

            using (var streamWriter = new StringWriter(stringBuilder))
            {
                if (currentSale.SaleResponse != null)
                {
                    streamWriter.Write(currentSale.SaleResponse.Receipt);
                }

                if (currentSale.SoldBasket != null)
                {
                    streamWriter.WriteLine("============================");
                    streamWriter.WriteLine("PUMP # : {0}-{1}", currentSale.SoldBasket.PumpID, currentSale.SoldBasket.Grade);
                    streamWriter.WriteLine("VOL : {0} L", currentSale.SoldBasket.Volume);
                    streamWriter.WriteLine("PRICE / L: SAR {0}", currentSale.SoldBasket.UnitPrice);
                    streamWriter.WriteLine("TOTAL: SAR {0}", currentSale.SoldBasket.Amount);
                }
                else if (currentSale.SaleType == SaleType.Prepay)
                {
                    streamWriter.WriteLine("============================");
                    streamWriter.WriteLine("PUMP # : {0}-{1}", currentSale.PumpId, currentSale.SaleGrade.Type);
                    streamWriter.WriteLine("VOL : {0:0.###} L",
                                           (currentSale.Amount / currentSale.SaleGrade.Price.UnitPrice));
                    streamWriter.WriteLine("PRICE / L: SAR {0:0.###}", currentSale.SaleGrade.Price.UnitPrice);
                    streamWriter.WriteLine("TOTAL: SAR {0:0.###}", currentSale.Amount);
                }

                if (currentSale.RefundResponse != null)
                {
                    streamWriter.WriteLine("============================");
                    streamWriter.WriteLine("         REFUND");
                    streamWriter.WriteLine("============================");
                    streamWriter.Write(currentSale.RefundResponse.Receipt);
                }
            }

            PrintDocument(stringBuilder);
        }