Example #1
0
        protected ProductViewModel(Product product)
        {
            IDs = new List<int>{product.ID};
            SerialNumber = product.SerialNumber;
            ModelName = product.Model.Name;
            CategoryName = product.Model.Category.Name;
            Notes = product.Notes;
            SellingPrice = product.SellingPrice;
            DateSellTo = product.DateSellTo;
            ModelID = product.ModelID;

            Origin = TranType.Zero;
            MoneySpentForProduct = 0;

            var orderedTransactions = product.Transactions.OrderBy(x => x.Date);

            if (orderedTransactions.FirstOrDefault() != null && orderedTransactions.FirstOrDefault().Operator != null) SalesmanBought = new SalesmanViewModel(orderedTransactions.FirstOrDefault().Operator.Salesman);

            foreach (var transaction in orderedTransactions)
            {
                if (transaction.TypeID != (int)TranType.Bought && transaction.TypeID != (int)TranType.Repaired &&
                    transaction.TypeID != (int)TranType.ToPawn && transaction.TypeID != (int)TranType.ToRepair) continue;

                if (transaction.TypeID != (int)TranType.ToRepair && transaction.Price != null) MoneySpentForProduct += transaction.Price.Value;

                if (transaction.TypeID != (int)TranType.Repaired) Origin = (TranType)transaction.TypeID;
            }

            Status = orderedTransactions.LastOrDefault() == null ? TranType.Zero : (TranType) orderedTransactions.LastOrDefault().TypeID;
        }
        public ModelSerialNumberStatusPriceBoughtGroup(Product product)
        {
            Model = product.Model;
            SerialNumber = product.SerialNumber;

            var orderedTransactions = product.Transactions.OrderBy(x => x.Date);

            Status = !orderedTransactions.Any() ? TranType.Zero : (TranType)orderedTransactions.LastOrDefault().TypeID;
            PriceBought = orderedTransactions.FirstOrDefault(x => x.TypeID == (int) TranType.Bought) == null
                ? null
                : orderedTransactions.FirstOrDefault(x => x.TypeID == (int)TranType.Bought).Price;
        }
        public ToPawnProductViewModel(Product product)
            : base(product)
        {
            var orderedTransactions = product.Transactions.OrderBy(x => x.Date);

            var transactionToPawn = orderedTransactions.LastOrDefault(x => x.TypeID == (int)TranType.ToPawn);
            if (transactionToPawn != null)
            {
                DateTake = transactionToPawn.Date;
                Client = new ClientViewModel(transactionToPawn.Contragent.Client);
                SalesmanTake = new SalesmanViewModel(transactionToPawn.Operator.Salesman);
            }
        }
Example #4
0
        public SoldProductViewModel(Product product)
            : base(product)
        {
            var ordered = product.Transactions.OrderBy(x => x.Date);

            var transactionSold = ordered.LastOrDefault(x => x.TypeID == (int)TranType.Sold);
            if (transactionSold != null)
            {
                if (transactionSold.Price != null) PriceSold = transactionSold.Price.Value;
                SalesmanSold = new SalesmanViewModel(transactionSold.Operator.Salesman);
                DateSold = transactionSold.Date;
            }

            SalesmanWithProfit = Origin == TranType.Bought ? SalesmanSold : SalesmanBought;

            Profit = PriceSold - MoneySpentForProduct;
            SalesmanProfit = Profit*((decimal) SalesmanWithProfit.ProfitPercentage/(decimal) 100);
        }
        public ToRepairProductViewModel(Product product)
            : base(product)
        {
            var orderedTransactions = product.Transactions.OrderBy(x => x.Date);

            var firstToRepairTransaction = orderedTransactions.FirstOrDefault(x => x.TypeID == (int) TranType.ToRepair);
            if (firstToRepairTransaction != null && firstToRepairTransaction.Contragent != null && firstToRepairTransaction.Contragent.Client != null)
            {
                Client = new ClientViewModel(firstToRepairTransaction.Contragent.Client);
            }

            var lastTransaction = orderedTransactions.LastOrDefault();
            if (lastTransaction != null)
            {
                LastTransactionDate = lastTransaction.Date;
                LastTransactionSalesman = new SalesmanViewModel(lastTransaction.Operator.Salesman);

                CurrentRepairer = (lastTransaction.Contragent == null || lastTransaction.Contragent.Repairer == null)  ? null : new RepairerViewModel(lastTransaction.Contragent.Repairer);
            }
        }
        private void AddProduct()
        {
            Product product = new Product
            {
                ModelID = _selectedProduct.ModelID,
                SerialNumber = _selectedProduct.SerialNumber,
                Notes = _selectedProduct.Notes,
                SellingPrice = _selectedProduct.SellingPrice,
                DateSellTo = _selectedProduct.DateSellTo
            };

            _mainViewModel.Context.Products.Add(product);

            Transaction transaction = new Transaction
            {
                Product = product,
                Date = DateTime.Now,
                TypeID = (int)TranType.Bought,
                OperatorID = OperatorManager.Instance.CurrentUserID,
                Price = _selectedProduct.Price
            };

            _mainViewModel.Context.Transactions.Add(transaction);
        }
        private void AddProduct()
        {
            ModelName = Trim(ModelName);
            FirstName = Trim(FirstName);
            LastName = Trim(LastName);
            SerialNumber = Trim(SerialNumber);
            Notes = Trim(Notes);

            Product product = new Product {SerialNumber = SerialNumber, SellingPrice = SellingPrice, Notes = Notes};

            if (Models.Contains(ModelName)) product.Model = GetModelIDByName(ModelName);

            if (!Models.Contains(ModelName) || product.Model == null)
            {
                Model model = new Model {Name = ModelName, CategoryID = SelectedCategory.ID};

                _mainViewModel.Context.Models.Add(model);

                product.Model = model;
            }

            _mainViewModel.Context.Products.Add(product);

            var client = _mainViewModel.Context.Clients.FirstOrDefault(
                x => x.Contragent.FirstName == FirstName && x.Contragent.LastName == LastName);

            if (client == null)
            {
                var contragent = new Contragent
                {
                    LastName = LastName,
                    FirstName = FirstName
                };

                client = new Client
                {
                    Contragent = contragent
                };

                _mainViewModel.Context.Clients.Add(client);
            }

            Transaction transaction = new Transaction
            {
                Product = product,
                Date = DateTime.Now,
                TypeID = (int) TranType.ToRepair,
                OperatorID = OperatorManager.Instance.CurrentUserID,
                Contragent = client.Contragent,
                Price = 0
            };

            _mainViewModel.Context.Transactions.Add(transaction);
            try
            {
                _mainViewModel.Context.SaveChanges();
            }
            catch (Exception e)
            {
                MessageBox.Show(("Не удалось добавить новый товар"), "Error",
                    MessageBoxButton.OK, MessageBoxImage.Error);

                Logging.WriteToLog("Failed add new bought transaction. " + e.Message);
            }

            _mainViewModel.ToRepairProductsViewModel.Update();

            _mainViewModel.ToRepairProductsViewModel.AddDialogViewModel = null;
        }