Example #1
0
        public void Start()
        {
            Items = GetItems();

            foreach (var item in Items)
            {
                if (item is DividendTransactionDto dividend)
                {
                    ImportDividend(dividend);
                }
                else if (item is SellingTransactionDto selling)
                {
                    ImportSelling(selling);
                }
                else
                {
                    ImportBuying(item as BuyingTransactionDto);
                }

                if (item.OldId == 2201)
                {
                    //Splits
                    ImportSplit(DateTime.Parse("2012-05-16 00:00:00"), StockItems.FirstOrDefault(s => s.Wkn.Equals("548851")), 500, 1.991m); //Pferdewetten
                }

                if (item.OldId == 2184)
                {
                    //Splits
                    ImportSplit(DateTime.Parse("2012-12-13 00:00:00"), StockItems.FirstOrDefault(s => s.Wkn.Equals("A0YJT2")), 137, 13.209124m); //Lambda TD Software
                }
            }
        }
Example #2
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Product = await _context.Products.FirstOrDefaultAsync(m => m.Product_ID == id);

            Categories               = _context.Categories.ToList();
            StockItems               = _context.Stock.ToList();
            stockToProducts          = _context.StockToProducts.Where(stp => stp.ProductId == id).ToList();
            StockToProductStockItems = new List <StockToProduct_StockItems>();
            foreach (var stp in stockToProducts)
            {
                StockToProduct_StockItems stp_si = new StockToProduct_StockItems
                {
                    StockName = StockItems.FirstOrDefault(si => si.Id == stp.StockId).StockName,
                    Quantity  = stp.QuantityUse
                };
                StockToProductStockItems.Add(stp_si);
            }
            if (Product == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Example #3
0
        private ITransactionDto ImportDividend(IDataRecord reader)
        {
            var item = new DividendTransactionDto();

            var dividendStock = StockItems[int.Parse(reader["Stock_ID"].ToString())];

            item.OldId           = int.Parse(reader["ID"].ToString());
            item.Shares          = decimal.Parse(reader["Units"].ToString());
            item.Description     = reader["Description"].ToString();
            item.OrderCosts      = decimal.Parse(reader["OrderCosts"].ToString());
            item.OrderDate       = DateTime.Parse(reader["OrderDate"].ToString());
            item.OriginalVersion = -1;
            item.PricePerShare   = decimal.Parse(reader["PricePerUnit"].ToString());
            item.Stock           = StockItems.FirstOrDefault(s => s.Value.Wkn.Equals(dividendStock.Wkn) && s.Value.OldId != dividendStock.OldId).Value;
            item.Tag             = reader["Tag"].ToString();
            item.Taxes           = decimal.Parse(reader["Taxes"].ToString());
            item.Image           = ImportImage(item.Id, item.OldId);

            //Import
            var cmd = new TransactionDividendCommand(
                item.Id,
                -1,
                item.OrderDate,
                item.Shares,
                item.PricePerShare,
                item.OrderCosts,
                item.Description,
                item.Tag,
                null,
                item.Stock.Id,
                item.Taxes);

            CommandDispatcher.Execute(cmd);

            //Image
            if (item.Image != null)
            {
                LoggingService.Info($"Dividend {item.Stock.Name} ({item.Shares} x {item.PricePerShare}) + IMAGE");
            }
            else
            {
                LoggingService.Info($"Dividend {item.Stock.Name} ({item.Shares} x {item.PricePerShare})");
            }

            return(item);
        }
Example #4
0
        /// <summary>
        /// Gets the stock
        /// </summary>
        /// <returns></returns>
        private StockDto GetStock(int oldId)
        {
            var oldStock = StockItems.FirstOrDefault(s => s.OldId == oldId);

            // We only imported non dividend stocks, so we need to merge this now
            if (oldStock == null)
            {
                var dividendStock = DividendStockItems.FirstOrDefault(s => s.OldId == oldId);

                //Get the corresponding stock with the same WKN as the dividend
                oldStock = StockItems.FirstOrDefault(s => s.Wkn.Equals(dividendStock.Wkn));

                var dividend = (StockDto)oldStock.Clone();
                dividend.IsDividend = true;

                return(dividend);
            }

            return(oldStock);
        }
Example #5
0
        public async Task <IActionResult> OnPostAsync()
        {
            Categories = _context.Categories.Select(n => new SelectListItem
            {
                Value = n.Cat_ID.ToString(),
                Text  = n.CategoryName
            }).ToList();
            StockItems = _context.Stock.ToList();

            //if (!ModelState.IsValid)
            //{
            //    return Page();
            //}

            if (UploadImage != null)
            {
                var fileName = Path.Combine(_hostingEnvironment.WebRootPath, "img", UploadImage.FileName);
                using (var fileStream = new FileStream(fileName, FileMode.Create))
                {
                    await UploadImage.CopyToAsync(fileStream);
                }
                Product.ImageUrl = "\\img\\" + UploadImage.FileName; // Set the file name
            }
            Product.Cat_ID = Convert.ToInt32(SelectedTag);
            decimal stockPrice = 0;

            if (StockItemChecked != null)
            {
                List <decimal> ssqNums = new List <decimal>();
                foreach (string ssq in SelectedStockQuantities)
                {
                    if (ssq != null)
                    {
                        decimal quan = 0m;
                        quan = decimal.Parse(ssq, CultureInfo.InvariantCulture);
                        ssqNums.Add(quan);
                    }
                }
                for (int s = 0; s < StockItemChecked.Count; s++)
                {
                    StockItem stock = new StockItem();
                    stock = StockItems.FirstOrDefault(st => st.StockName == StockItemChecked[s]);
                    decimal productStockPrice = stock.Price * ssqNums[s];
                    stockPrice = stockPrice + productStockPrice;

                    StockToProduct newStockToProduct = new StockToProduct
                    {
                        StockId     = stock.Id,
                        ProductId   = Product.Product_ID,
                        QuantityUse = ssqNums[s]
                    };
                    _context.StockToProducts.Add(newStockToProduct);
                    await _context.SaveChangesAsync();
                }
            }
            Product.CostPrice    = stockPrice;
            Product.ProfitMargin = Product.SellingPrice - stockPrice;
            _context.Products.Update(Product);
            await _context.SaveChangesAsync();

            TempData["StatusMessage"] = "Product " + Product.ProductName + " successfully created.";
            return(RedirectToPage("./ProductIndex"));
        }
Example #6
0
        public async Task <IActionResult> OnPostAsync()
        {
            StockToProducts = _context.StockToProducts.ToList();
            //Product = _context.Products.FirstOrDefault(m => m.Product_ID == Product.Product_ID);
            AllCategories = _context.Categories.ToList();
            StockItems    = _context.Stock.ToList();
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            try
            {
                string imageurl = Product.ImageUrl;
                if (UploadImage != null)
                {
                    var fileName = Path.Combine(_hostingEnvironment.WebRootPath, "img", UploadImage.FileName);
                    using (var fileStream = new FileStream(fileName, FileMode.Create))
                    {
                        await UploadImage.CopyToAsync(fileStream);
                    }
                    Product.ImageUrl = "\\img\\" + UploadImage.FileName; // Set the file name
                }
                else
                {
                    Product.ImageUrl = imageurl;
                }
                Product.Cat_ID = Convert.ToInt32(SelectedTag);
                decimal stockPrice = 0;
                if (StockItemChecked != null || StockItemChecked.Count > 0)
                {
                    List <decimal> ssqNums = new List <decimal>();
                    foreach (string ssq in SelectedStockQuantities)
                    {
                        if (ssq != null)
                        {
                            decimal quan = 0m;
                            quan = decimal.Parse(ssq, CultureInfo.InvariantCulture);
                            ssqNums.Add(quan);
                        }
                    }
                    for (int s = 0; s < StockItemChecked.Count; s++)
                    {
                        StockItem stock = new StockItem();
                        stock = StockItems.FirstOrDefault(st => st.StockName == StockItemChecked[s]);
                        decimal qty = ssqNums[s];
                        decimal productStockPrice = stock.Price * qty;
                        stockPrice = stockPrice + productStockPrice;
                        StockToProduct stp = new StockToProduct();
                        stp = _context.StockToProducts.FirstOrDefault(st => st.StockId == stock.Id && st.ProductId == Product.Product_ID);
                        if (stp == null)
                        {
                            StockToProduct newStockToProduct = new StockToProduct
                            {
                                StockId     = stock.Id,
                                ProductId   = Product.Product_ID,
                                QuantityUse = ssqNums[s]
                            };
                            _context.StockToProducts.Add(newStockToProduct);
                            await _context.SaveChangesAsync();
                        }
                        else
                        {
                            stp.QuantityUse = ssqNums[s];
                            _context.StockToProducts.Update(stp);
                            await _context.SaveChangesAsync();
                        }
                    }
                }
                Product.CostPrice    = stockPrice;
                Product.ProfitMargin = Product.SellingPrice - stockPrice;
                _context.Products.Update(Product);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProductExists(Product.Product_ID))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            TempData["StatusMessage"] = "Product " + Product.ProductName + " successfully edited.";

            return(RedirectToPage("./ProductIndex"));
        }