public CalculatorPage(SaleProduct selectedprp)
 {
     InitializeComponent();
     FlowDirectionPage();
     check            = true;
     this.selectedprp = selectedprp;
 }
        public override Product GetById(int id)
        {
            var sql = @"
                SELECT 
                    * 
                FROM products as p
                LEFT JOIN sale_product AS sp ON sp.product_id = p.id
                LEFT JOIN sales AS s ON s.id = sp.sale_id
                WHERE
                    p.id = @ProductId";

            var list = _connection.Query <Product, Sale, Product>(sql
                                                                  ,
                                                                  map: (product, sale) =>
            {
                var salesProducts = new SaleProduct()
                {
                    ProductId = product.Id,
                    Product   = product,
                    SaleId    = sale.Id,
                    Sale      = sale
                };

                product.Sales.Add(salesProducts);
                return(product);
            },
                                                                  new { ProductId = id }
                                                                  );

            return(list.AsList().FirstOrDefault());
        }
示例#3
0
        public void EditSaleProduct(int saleId, SaleProduct saleProduct)
        {
            Sale        sale           = GetSaleById(saleId);
            SaleProduct oldSaleProduct = GetSaleProductById(saleProduct.Id);

            oldSaleProduct.Name               = saleProduct.Name;
            oldSaleProduct.ProductId          = saleProduct.ProductId;
            oldSaleProduct.Price              = saleProduct.Price;
            oldSaleProduct.IsPaidByCreditCard = saleProduct.IsPaidByCreditCard;
            oldSaleProduct.IsPrivate          = saleProduct.IsPrivate;
            oldSaleProduct.IsForGuest         = saleProduct.IsForGuest;
            oldSaleProduct.Deduction          = saleProduct.Deduction;
            oldSaleProduct.SellPrice          = saleProduct.SellPrice;

            SaleDataSet.SaleProductRow row = saleDataSet.SaleProduct.FindById(saleProduct.Id);
            row.Name               = saleProduct.Name;
            row.ProductId          = saleProduct.ProductId;
            row.Price              = saleProduct.Price;
            row.IsPaidByCreditCard = saleProduct.IsPaidByCreditCard;
            row.IsPrivate          = saleProduct.IsPrivate;
            row.IsForGuest         = saleProduct.IsForGuest;
            row.Deduction          = saleProduct.Deduction;
            row.SellPrice          = saleProduct.SellPrice;

            saleDataSet.AcceptChanges();
            Notify();
        }
示例#4
0
        private void AddProduct(Product product)
        {
            if (true)//(StockCheckRequired)
            {
                var count = CheckStock(product.ProductId, Convert.ToDecimal(product.PricesList[0].PurchasePrice));
                if (count < GetConvertedQuantity())
                {
                    RaiseNotification("Alert", "Not enough stock available for his item");
                    return;
                }
            }

            var saleProduct = new SaleProduct();

            saleProduct.UoM = product.ProductUoM;
            saleProduct.ProductDescription = product.ProductDescription;
            saleProduct.PriceList          = product.PriceList;
            saleProduct.ProductId          = product.ProductId;
            saleProduct.ProductTax         = product.ProductTax;
            saleProduct.SellingPrice       = Convert.ToDecimal(product.PriceList[0]);
            saleProduct.PurchasePrice      = Convert.ToDecimal(product.PricesList[0].PurchasePrice);

            saleProduct.Quantity = GetConvertedQuantity();
            _saleTransaction.AddItem(saleProduct);
            UpdateTransaction();
        }
示例#5
0
        public void AddSalesToStoreAndDecrementStockProducts(SaleDto saleDto)
        {
            var newSale = new Sale()
            {
                SellingDate = saleDto.SellingDate,
                StoreId     = saleDto.StoreId
            };

            _shoesDataEntities.Sales.Add(newSale);
            foreach (var saleProductDto in saleDto.SalesProducts)
            {
                var currentProduct = _productServices.FindProduct(
                    saleProductDto.ModelId, saleProductDto.ColorId, saleProductDto.Size);
                var newSaleProduct = new SaleProduct
                {
                    ProductId    = currentProduct.Id,
                    SaleId       = newSale.Id,
                    Quantity     = saleProductDto.Quantity,
                    SellingPrice = saleProductDto.Price
                };
                _shoesDataEntities.SaleProducts.Add(newSaleProduct);
                var lastStockRoom     = _storeStockRoomDataServices.GetLastStoreStockRoomByProductId(saleDto.StoreId.Value, currentProduct.Id);
                var newStoreStockRoom = new StoreStockRoom()
                {
                    ProductId     = currentProduct.Id,
                    StockValue    = lastStockRoom.StockValue - saleProductDto.Quantity,
                    EntryValue    = -saleProductDto.Quantity,
                    EntryDate     = saleDto.SellingDate,
                    StoreId       = saleDto.StoreId.Value,
                    OperationType = OperationType.OUT.ToString()
                };
                _shoesDataEntities.StoreStockRooms.Add(newStoreStockRoom);
                SaveChanges();
            }
        }
示例#6
0
 private void AddSaleProduct(List <QtProduct> productlst)
 {
     try
     {
         m_saleProducts.Clear();
         foreach (var p in productlst)
         {
             SaleProduct sp = new SaleProduct();
             sp.sd                   = new T_saledetail();
             sp.sd.productid         = p.qp.productid;
             sp.sd.producttotalprice = p.qp.totalprice;
             sp.productCode          = p.productCode;
             sp.productName          = p.productName;
             sp.productSpec          = p.productSpec;
             sp.pUnitPrice           = p.qp.unitprice;
             sp.pModelPrice          = p.qp.modelprice;
             //sp.sd.plandeliverydate=
             m_saleProducts.Add(sp);
         }
         gcSaledetail.RefreshDataSource();
     }
     catch (Exception ex)
     {
         XtraMessageBox.Show(ex.Message);
     }
 }
示例#7
0
        public string addSale()
        {
            var responseBody = Request.Content.ReadAsStringAsync();
            var obj          = JsonConvert.DeserializeObject <AddSaleModel>(responseBody.Result);


            Sale s = new Sale()
            {
                Date      = DateTime.Now,
                TotalBill = obj.TotalBill,
            };

            _db.Sales.Add(s);
            _db.SaveChanges();
            SaleProduct sp = new SaleProduct()
            {
                ProductId    = obj.productId,
                SaleId       = _db.Sales.ToList().FirstOrDefault().Id,
                Quantity     = obj.QuantityId,
                SellingPrice = obj.SellingPrice
            };

            _db.SaleProducts.Add(sp);
            var saleProduct = _db.products.Where(x => x.Id == obj.productId).FirstOrDefault();

            saleProduct.Quantity -= obj.QuantityId;

            _db.SaveChanges();



            return("Sale Successfully Done!!!");
        }
示例#8
0
        public async Task <IActionResult> PutSaleProduct(int id, SaleProduct saleProdct)
        {
            var result = new Result <string>();

            Type saleProdType = typeof(SaleProduct);

            var updateSaleProd = await _context.SaleProducts.Where(x => x.SaleProdId == id).FirstOrDefaultAsync();

            if (updateSaleProd == null)
            {
                return(NotFound(DataNotFound(result)));
            }
            UpdateTable(saleProdct, saleProdType, updateSaleProd);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                result.ErrorMessage = e.Message;
                result.IsSuccess    = false;
                return(BadRequest(result));
            }
            return(Ok(result));
        }
示例#9
0
 public SaleProductView(SaleProduct sale)
 {
     ProductID = sale.ProductID;
     Product   = sale.Product;
     Quantity  = sale.Quantity;
     Price     = sale.Price;
 }
示例#10
0
 /// <summary>
 /// Creates a sale record
 /// </summary>
 /// <param name="saleDto">saleDto</param>
 public void Create(SaleDto saleDto)
 {
     lock (lockObject) {
         Sale sale = new Sale()
         {
             InvoiceNumber = Guid.NewGuid(),
             SaleDate      = DateTime.Now,
             Discount      = saleDto.Discount,
             VATAmount     = saleDto.VATAmount,
             TotalAmount   = saleDto.TotalAmount
         };
         var user = _unitOfWork.UserRepository.GetById(saleDto.UserId) ?? throw new CustomException(HttpStatusCode.NotFound, Constants.ErrorUserNotFound);
         sale.UserId = user.Id;
         foreach (var saleItem in saleDto.SaleItems)
         {
             var product = _unitOfWork.ProductRepository.GetById(saleItem.ProductId) ?? throw new CustomException(HttpStatusCode.NotFound, Constants.ErrorProductNotFound);
             if (product.AvailableQuantity < saleItem.Quantity)
             {
                 throw new CustomException(HttpStatusCode.NotAcceptable, Constants.InvalidProductQuantity);
             }
             product.AvailableQuantity -= saleItem.Quantity;
             SaleProduct saleProduct = new SaleProduct
             {
                 InvoiceNumber = sale.InvoiceNumber.ToString(),
                 ProductId     = saleItem.ProductId,
                 Quantity      = saleItem.Quantity
             };
             _unitOfWork.SaleProductRepository.Insert(saleProduct);
         }
         _unitOfWork.SaleRepository.Insert(sale);
         _unitOfWork.Commit();
     }
 }
示例#11
0
        private void SetCashSale(object sender, RoutedEventArgs e)
        {
            MenuItem    menuItem    = e.Source as MenuItem;
            SaleProduct saleProduct = menuItem.CommandParameter as SaleProduct;

            viewModel.SetIsPaidByCreditCardToSaleProduct(false, saleProduct);
        }
示例#12
0
        public void DeleteSaleProduct(SaleProduct saleProduct)
        {
            dataAccess.RemoveSaleProduct(saleToday.Id, saleProduct.Id);

            OnPropertyChanged("Sales");
            OnPropertyChanged("SaleToday");
        }
示例#13
0
        private void SetSellerSale(object sender, RoutedEventArgs e)
        {
            MenuItem    menuItem    = e.Source as MenuItem;
            SaleProduct saleProduct = menuItem.CommandParameter as SaleProduct;

            viewModel.SetIsForGuestToSaleProduct(false, saleProduct);
        }
示例#14
0
        private void SetPrivateSale(object sender, RoutedEventArgs e)
        {
            MenuItem    menuItem    = e.Source as MenuItem;
            SaleProduct saleProduct = menuItem.CommandParameter as SaleProduct;

            viewModel.SetIsPrivateToSaleProduct(true, saleProduct);
        }
示例#15
0
        public static List <SaleProduct> ReturnSaleProducts(string[] productsInCookie, int companyId, int saleId)
        {
            if (productsInCookie == null || productsInCookie.Length == 0)
            {
                return(null);
            }
            else
            {
                Context            db           = new Context();
                List <SaleProduct> saleProducts = new List <SaleProduct>();

                for (int i = 0; i < productsInCookie.Length; i++)
                {
                    if (!String.IsNullOrEmpty(productsInCookie[i]))
                    {
                        string[] products = productsInCookie[i].Split(',');
                        int      idProd   = Convert.ToInt32(products[0]);
                        Product  prod     = db.Product.Where(x => x.CompanyId == companyId && x.IdProduct == idProd).FirstOrDefault();

                        SaleProduct saleProduct = new SaleProduct {
                            ProductId = prod.IdProduct, SaleId = saleId, Amount = Convert.ToInt32(products[3])
                        };

                        saleProducts.Add(saleProduct);
                    }
                }
                return(saleProducts);
            }
        }
示例#16
0
        private bool HandleSettingsBarcode(string barcode)
        {
            IList <BarcodeSetting> settings = dataAccess.BarcodeSettings;

            foreach (var setting in settings)
            {
                if (setting.Barcode.Equals(barcode))
                {
                    if (invokers.Count > 0)
                    {
                        Invoker     invoker     = invokers.Last();
                        SaleProduct saleProduct = (invoker.Command as AddSaleProductCommand).SaleProduct;
                        saleProduct.Deduction = setting.Name;
                        if (setting.IsFixPrice)
                        {
                            saleProduct.Price = setting.Value;
                        }
                        else
                        {
                            saleProduct.Price = Math.Round(10 * ((1 - setting.Value) * saleProduct.Price), MidpointRounding.AwayFromZero) / 10;
                        }

                        OnPropertyChanged("BasketTotal");
                        OnPropertyChanged("Invokers");
                    }
                    return(true);
                }
            }
            return(false);
        }
        public async Task <IActionResult> BasketSale()
        {
            if (User.Identity.IsAuthenticated)
            {
                AppUser appUser = await _userManager.FindByNameAsync(User.Identity.Name);

                Sale sale = new Sale
                {
                    Date      = DateTime.Now,
                    AppUserId = appUser.Id,
                };
                List <BasketVM> basketProducts = JsonConvert.DeserializeObject <List <BasketVM> >(Request.Cookies["basket"]);

                foreach (BasketVM item in basketProducts)
                {
                    var dbPro = await _db.Products.FindAsync(item.Id);

                    if (item.Count > dbPro.Count)
                    {
                        return(Content("Get qumla oyna"));
                    }
                }
                List <SaleProduct> saleProducts = new List <SaleProduct>();
                double             total        = 0;
                foreach (BasketVM basketProduct in basketProducts)
                {
                    if (basketProduct.UserName == User.Identity.Name)
                    {
                        Product dbProduct = await _db.Products.FindAsync(basketProduct.Id);

                        await DecreaseProductCount(dbProduct, basketProduct);

                        SaleProduct saleProduct = new SaleProduct
                        {
                            Price     = dbProduct.Price,
                            Count     = basketProduct.Count,
                            ProductId = basketProduct.Id,
                            SaleId    = sale.Id
                        };
                        total += saleProduct.Price * saleProduct.Count;
                        saleProducts.Add(saleProduct);
                    }
                }
                sale.Total        = total;
                sale.SaleProducts = saleProducts;

                await _db.Sales.AddAsync(sale);

                await _db.SaveChangesAsync();

                TempData["success"] = "Alish-verishiniz ugurla yerine yetirildi";
                return(RedirectToAction("Basket"));
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }
        }
示例#18
0
        public void SetIsForGuestToSaleProduct(bool isForGuest, SaleProduct saleProduct)
        {
            saleProduct.IsForGuest         = isForGuest;
            saleProduct.IsPaidByCreditCard = false;
            saleProduct.IsPrivate          = false;
            dataAccess.EditSaleProduct(saleToday.Id, saleProduct);

            OnPropertyChanged("Sales");
            OnPropertyChanged("SaleToday");
        }
示例#19
0
        private double GetBasketTotal()
        {
            double total = 0;

            foreach (var basketItem in basketItems)
            {
                SaleProduct saleProduct = basketItem.SaleProduct;
                total += saleProduct.SellPrice;
            }
            return(total);
        }
示例#20
0
 public void AddSaleProduct(SaleProduct saleProduct)
 {
     if (ProductId == saleProduct.ProductId && SellPrice == saleProduct.SellPrice)
     {
         Count++;
         TotalCash       += ((!saleProduct.IsPaidByCreditCard && !saleProduct.IsPrivate) ? saleProduct.SellPrice : 0d);
         TotalCreditCard += ((saleProduct.IsPaidByCreditCard && !saleProduct.IsPrivate) ? saleProduct.SellPrice : 0d);
         TotalPrivate    += ((saleProduct.IsPrivate) ? saleProduct.SellPrice : 0d);
         Total           += ((!saleProduct.IsPrivate) ? saleProduct.SellPrice : 0d);
     }
 }
        public RedirectToRouteResult RemoveFromCart(Cart cart, int id,
                                                    string returnUrl)
        {
            SaleProduct saleProduct = applicationDataContext.SaleProducts.Where(x => x.Id == id).FirstOrDefault();

            if (saleProduct != null)
            {
                cart.RemoveLine(saleProduct);
            }

            return(RedirectToAction("Index", new { returnUrl }));
        }
示例#22
0
        private void DeleteSaleProduct(object sender, RoutedEventArgs e)
        {
            MenuItem    menuItem    = e.Source as MenuItem;
            SaleProduct saleProduct = menuItem.CommandParameter as SaleProduct;

            MessageBoxResult result = MessageBox.Show("Wollen Sie das Produkt \"" + saleProduct.Name + "\" wirklich aus dem Verkauf entfernen?", "Produkt entfernen", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (result == MessageBoxResult.Yes)
            {
                viewModel.DeleteSaleProduct(saleProduct);
                MessageBox.Show("Produkt \"" + saleProduct.Name + "\" erfolgreich entfernt. Bitte passen Sie die Mengen in Ihrem Vorrat an.", "Produkt entfernen", MessageBoxButton.OK);
            }
        }
示例#23
0
        /// <summary>
        /// Добавить.
        /// </summary>
        /// <param name="saleId"></param>
        /// <param name="productId"></param>
        /// <param name="amount"></param>
        /// <param name="sum"></param>
        public static void Insert(int saleId, int productId, int amount, double sum)
        {
            SaleProduct saleProduct = new SaleProduct
            {
                SaleId    = saleId,
                ProductId = productId,
                Amount    = amount,
                Sum       = sum
            };

            myDbContext.SaleProducts.Add(saleProduct);
            myDbContext.SaveChanges();
        }
示例#24
0
        public SaleProduct getSalesProduct(Branch branch, string name)
        {
            using (MySqlConnection connection = getConnection())
            {
                string      query       = "select * from saleproducts where branch_id=@branch_id and name=@name";
                SaleProduct SaleProduct = connection.QuerySingleOrDefault <SaleProduct>(query, new { branch_id = branch.id, name = name });

                if (SaleProduct != null)
                {
                    return(SaleProduct);
                }
                return(null);
            }
        }
示例#25
0
 public TotalSaleProduct(SaleProduct saleProduct)
 {
     this.ProductId       = saleProduct.ProductId;
     this.Name            = saleProduct.Name;
     this.Count           = 1;
     this.Price           = saleProduct.Price;
     this.Deduction       = saleProduct.Deduction;
     this.SellPrice       = saleProduct.SellPrice;
     this.TotalCash       = ((!saleProduct.IsPaidByCreditCard && !saleProduct.IsPrivate && !saleProduct.IsForGuest) ? saleProduct.SellPrice : 0d);
     this.TotalCreditCard = ((saleProduct.IsPaidByCreditCard) ? saleProduct.SellPrice : 0d);
     this.TotalPrivate    = ((saleProduct.IsPrivate) ? saleProduct.SellPrice : 0d);
     this.TotalForGuest   = ((saleProduct.IsForGuest) ? saleProduct.SellPrice : 0d);
     this.Total           = ((!saleProduct.IsPrivate && !saleProduct.IsForGuest) ? saleProduct.SellPrice : 0d);
 }
示例#26
0
        public void RemoveSaleProduct(int saleId, int saleProductId)
        {
            Sale        sale       = GetSaleById(saleId);
            SaleProduct saleProuct = GetSaleProductById(saleProductId);

            sale.SaleProducts.Remove(saleProuct);

            SaleDataSet.SaleProductRow row = saleDataSet.SaleProduct.FindById(saleProductId);
            if (row != null)
            {
                saleDataSet.SaleProduct.RemoveSaleProductRow(row);
            }
            saleDataSet.AcceptChanges();
            Notify();
        }
示例#27
0
        public void AddSaleProductToBasket(Product product, SaleProduct saleProduct)
        {
            Command command = new AddSaleProductCommand(this, product.Id, saleProduct);
            Invoker invoker = new Invoker();

            invoker.Command = command;
            invokers.Add(invoker);

            //DecrementConsignment(product.Id);

            shoppingBasket.Add(saleProduct);

            OnPropertyChanged("BasketTotal");
            OnPropertyChanged("Invokers");
        }
示例#28
0
 public override string TakeProduct(int quantity)
 {
     if (Quantity < quantity)
     {
         return($"No se puede retirar esta cantidad solo hay: {Quantity}.");
     }
     Quantity -= quantity;
     SaleProduct.Add(new Sale()
     {
         Product      = this,
         QuantitySale = quantity,
         TotalCost    = (CostProduct * quantity),
         TotalSale    = (PriceProduct * quantity)
     });
     return($"Se vendieron {quantity} de: {Name}");
 }
示例#29
0
        public ActionResult FetchProductIndexList()
        {
            string query  = HotelCloud.Common.HCRequest.GetString("query").TrimEnd();
            string select = HotelCloud.Common.HCRequest.GetString("select").TrimEnd();
            int    page   = HotelCloud.Common.HCRequest.GetInt("page", 1);

            if (page < 1)
            {
                page = 1;
            }
            int pagesize = 2;
            int count    = 0;
            int pagesum  = 0;

            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];



            ProductEntityList list_products = new ProductEntityList();

            string cacheName = string.Format("{0}_{1}", hotelweixinId.ToLower(), "productindex");

            if (cache[cacheName] != null)
            {
                list_products = (ProductEntityList)cache[cacheName];
                count         = list_products.Count;
            }

            else
            {
                list_products.ProductEntity_List = SaleProduct.GetSaleProductsListIndex(hotelweixinId, out count, page, pagesize, "", "");
                list_products.Count = count;

                cache.Insert(cacheName, list_products, null, DateTime.Now.AddMinutes(30), TimeSpan.Zero);
            }

            pagesum = (count % pagesize == 0) ? count / pagesize : count / pagesize + 1;
            return(Json(new
            {
                data = list_products.ProductEntity_List,
                count = count,
                page = page,
                pagesum = pagesum
            }, JsonRequestBehavior.AllowGet));
        }
示例#30
0
        private void saveReceipt(ReceiptDto receiptDto, List <SaleProductOutDto> products, decimal totalPrice, string userid)
        {
            Receipt receipt = new Receipt()
            {
                CodeReceipt  = receiptDto.CodeReceipt,
                CustomerId   = db.Customers.FirstOrDefault(a => a.IdentificationNumber == receiptDto.IdentificationNumber).Id,
                IVA          = receiptDto.IVA,
                TotalPrice   = (totalPrice * receiptDto.IVA / 100) + totalPrice,
                UserId       = userid,
                CreationTime = DateTime.Now
            };

            db.Receipts.Add(receipt);

            foreach (var pro in products)
            {
                SaleProduct product = new SaleProduct()
                {
                    Amount       = pro.Amount,
                    ProductId    = pro.ProductId,
                    ReceiptId    = receipt.Id,
                    UnitPrice    = pro.UnitPrice,
                    TotalPrice   = pro.TotalPrice,
                    IsLoading    = true,
                    CreationTime = DateTime.Now
                };

                db.SaleProducts.Add(product);

                var wareHouse = db.WareHouses.FirstOrDefault(a => a.ProductId == pro.ProductId);

                if (wareHouse.AmountWareHouse - pro.Amount < 0)
                {
                    var response = new HttpResponseMessage(HttpStatusCode.NotFound)
                    {
                        Content    = new StringContent("not enough units available  amount: " + wareHouse.AmountWareHouse),
                        StatusCode = HttpStatusCode.NotFound
                    };
                    throw new HttpResponseException(response);
                }

                wareHouse.AmountWareHouse -= pro.Amount;
            }

            db.SaveChanges();
        }