static void Main(string[] args) { Console.WindowWidth = 135; Console.Title = "Warehouse Accounting"; Warehouse warehouse = new Warehouse(); warehouse.Load(); if (warehouse.Name == null) { warehouse.ChangeName(InputString("Название склада")); } while (true) { Console.Clear(); Console.WriteLine("1.Формирование приходной накладной"); Console.WriteLine("2.Формирование расходной накладной"); Console.WriteLine("3.Список товаров на складе"); Console.WriteLine("4.Поиск товаров"); Console.WriteLine("5.Список поставщиков"); Console.WriteLine("6.Просмотр приходных накладных"); Console.WriteLine("7.Просмотр расходных накладных"); Console.WriteLine("8.Выход"); ConsoleKey key = Console.ReadKey().Key; if (key == ConsoleKey.D1) { Supplier supplier = RegisterSupplier(); Supplier duplicateSupplier = warehouse.GetDuplicateSupplier(supplier); if (duplicateSupplier != null) { supplier = duplicateSupplier; } List <Product> productList = new List <Product>(); List <(Product, Product)> duplicateList = new List <(Product, Product)>(); while (true) { Product registeredProduct = RegisterProduct(supplier); Product productDuplicates = DuplicateProduct(productList, registeredProduct); List <Product> warehousProductDuplicates = warehouse.GetDuplicateProducts(registeredProduct); if (productDuplicates != null) { warehouse.AddSomeCountOfProduct(productDuplicates, registeredProduct.Count); } else if (warehousProductDuplicates.Count > 0) { Console.Clear(); warehouse.PrintProducts(warehousProductDuplicates); Console.Write("\nНа складе находится такой же товар.\n" + "1.Создать новую запись\n" + "2.Добавить товары в одну запись"); if (Console.ReadKey().Key == ConsoleKey.D1) { productList.Add(registeredProduct); } else { Console.Clear(); warehouse.PrintProducts(warehousProductDuplicates); Console.WriteLine("Введите номер товара, к которому добавить новый товар."); int number = InputProductNumber(warehousProductDuplicates.Count); Product product = warehousProductDuplicates[number - 1]; duplicateList.Add((registeredProduct, product)); } } else { productList.Add(registeredProduct); } Console.Write("\nEnter - добавить еще один товар \n" + "Esc - вывести приходную накладную"); if (Console.ReadKey().Key != ConsoleKey.Enter) { supplier.AddSupliesCount(); break; } } if (productList.Count > 0) { warehouse.AddSupply(new Supply(supplier, productList)); } foreach ((Product product, Product duplicate) in duplicateList) { warehouse.AddSomeCountOfProduct(duplicate, product.Count); productList.Add(product); } warehouse.Save(); warehouse.PrintPurchaseInvoice(new Supply(supplier, productList)); Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } else if (key == ConsoleKey.D2) { Console.Clear(); if (warehouse.Products.Count == 0) { Console.WriteLine("Склад пуст."); } else { string recipient = InputString("Покупатель"); List <(Product, int)> soldProductList = new List <(Product, int)>(); while (true) { Console.Clear(); if (warehouse.Products.Count == 0) { Console.WriteLine("Склад пуст."); Console.WriteLine(ClickAnyButtonMessage); Console.ReadKey(); break; } warehouse.PrintAllProducts(); int number = InputProductNumber(warehouse.Products.Count); int count = InputSalesProductCount(warehouse.Products[number - 1].Count); Product product = warehouse.Products[number - 1]; warehouse.RemoveSomeCountOfProduct(product, count); soldProductList.Add((product, count)); if (warehouse.Products.Count == 0) { break; } Console.Write("Enter - продолжить ввод \n" + "Esc - вывести расходную накладную"); if (Console.ReadKey().Key != ConsoleKey.Enter) { break; } } warehouse.Save(); warehouse.PrintSalesInvoice(recipient, soldProductList); } Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } else if (key == ConsoleKey.D3) { Console.Clear(); if (warehouse.Products.Count == 0) { Console.WriteLine("Склад пуст."); } else { warehouse.PrintAllProducts(); Console.WriteLine($"\nВсего товаров: {warehouse.Products.Count}\n"); } Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } else if (key == ConsoleKey.D4) { if (warehouse.Products.Count == 0) { Console.Clear(); Console.WriteLine("Склад пуст."); Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } else { Console.Clear(); string recipient = InputString("Покупатель"); List <(Product, int)> soldProductList = new List <(Product, int)>(); while (true) { Console.Clear(); Console.WriteLine("Введите наименование товара"); string name = InputString("Наименование"); List <Product> wantedProducts = warehouse.SearchProducts(name); if (wantedProducts.Count == 0) { Console.WriteLine("Товар не найден."); Console.WriteLine("\nEnter - искать другой товар\n" + "Esc - вывести расходную накладную"); if (Console.ReadKey().Key == ConsoleKey.Enter) { continue; } else { break; } } else { warehouse.PrintProducts(wantedProducts); Console.WriteLine("\nEnter - добавить товар в расходную накладную\n" + "Backspace - искать другой товар\n" + "Esc - вывести расходную накладную"); ConsoleKey key2 = Console.ReadKey().Key; if (key2 == ConsoleKey.Backspace) { continue; } else if (key2 == ConsoleKey.Enter) { Console.Clear(); warehouse.PrintProducts(wantedProducts); int number = InputProductNumber(wantedProducts.Count); int count = InputSalesProductCount(warehouse.Products[number - 1].Count); Product product = wantedProducts[number - 1]; warehouse.RemoveSomeCountOfProduct(product, count); soldProductList.Add((product, count)); if (warehouse.Products.Count == 0) { break; } Console.Write("\nEnter - искать другой товар \n" + "Esc - вывести расходную накладную"); if (Console.ReadKey().Key == ConsoleKey.Enter) { continue; } else { break; } } break; } } if (soldProductList.Count > 0) { warehouse.Save(); warehouse.PrintSalesInvoice(recipient, soldProductList); Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } } } else if (key == ConsoleKey.D5) { if (warehouse.Suppliers.Count == 0) { Console.Clear(); Console.WriteLine("Список поставщиков пуст."); Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } else { List <(Product, int)> soldProductList = new List <(Product, int)>(); while (true) { Console.Clear(); Console.WriteLine("Введите наименование поставщика"); string name = InputString("Наименование"); List <Supplier> wantedSuppliers = warehouse.SearchSupplier(name); if (wantedSuppliers.Count == 0) { Console.WriteLine("Поставщик не найден."); Console.WriteLine("\nEnter - искать другого поставщика\n" + "Esc - вернуться в меню"); if (Console.ReadKey().Key == ConsoleKey.Enter) { continue; } else { break; } } else { warehouse.PrintSuppliers(wantedSuppliers); Console.WriteLine("\nEnter - искать другого поставщика\n" + "Esc - вернуться в меню"); if (Console.ReadKey().Key == ConsoleKey.Enter) { continue; } else { break; } } } } } else if (key == ConsoleKey.D6) { if (Directory.Exists(PurchaseInvoiceDirectoryPath) && Directory.GetFiles(SalesInvoicesDirectoryPath).Length > 0) { Process.Start(PurchaseInvoiceDirectoryPath); } else { Console.Clear(); Console.WriteLine("Список приходных накладных пуст."); Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } } else if (key == ConsoleKey.D7) { if (Directory.Exists(SalesInvoicesDirectoryPath) && Directory.GetFiles(SalesInvoicesDirectoryPath).Length > 0) { Process.Start(SalesInvoicesDirectoryPath); } else { Console.Clear(); Console.WriteLine("Список расходных накладных пуст."); Console.Write(ClickAnyButtonMessage); Console.ReadKey(); } } else if (key == ConsoleKey.D8) { warehouse.Save(); break; } } }