public bool Counter_GetExpenseOrderCounter(ExpenseOrder model) { try { var counterId = repo.AllReadonly <Counter>() .Where(x => x.CourtId == model.CourtId && x.CounterTypeId == NomenclatureConstants.CounterTypes.ExpenseOrder) .Select(x => x.Id) .FirstOrDefault(); if (counterId > 0) { var courtCode = repo.AllReadonly <Court>().FirstOrDefault(x => x.Id == model.CourtId)?.Code; model.RegNumber = $"{DateTime.Now.Year}{courtCode}{Counter_GetValue(counterId)}"; model.RegDate = DateTime.Now; return(true); } else { throw new Exception($"Няма настроен брояч за разходен ордер. Court={model.CourtId}"); } } catch (Exception ex) { logger.LogError(ex, $"Грешка при запис на брояч за разходен ордер. Court={model.CourtId}"); } return(false); }
public static ExpenseOrder EditOrder(ExpenseOrder order) { KeyValuePair <OrderableItem, OrderedItemInfo>[] orderItems = order.orderedItems.ToArray(); do { Console.Clear(); ConsoleUtilities.DisplayOrderPreorder(order); string resp = ConsoleUtilities.AskUser("Choose Wic to edit or (q)uit."); if (resp == "q") { break; } if (int.TryParse(resp, out int selectedWic) && (selectedWic.ToString().Length != 6 || !orderItems.Any(x => x.Key.Wic == selectedWic))) { continue; } KeyValuePair <OrderableItem, OrderedItemInfo> selectedItem = orderItems.First(x => x.Key.Wic == selectedWic); selectedItem.Value.onHand = ConsoleUtilities.AskUserNumber($"The previous order records {selectedItem.Value.onHand} items as being on hand. New value = ?"); selectedItem.Value.orderedAmount = ConsoleUtilities.AskUserNumber($"The previous order records {selectedItem.Value.orderedAmount} items as being ordered. New value = ?"); order.orderedItems = orderItems.ToDictionary(x => x.Key, x => x.Value); }while (!ConsoleUtilities.AskUserBool("Finished editing?")); return(order); }
static void DisplayOrderableResolutionTable(ExpenseOrder retOrder) { Console.WriteLine("|Wic |Item Name |Received|"); foreach (KeyValuePair <OrderableItem, OrderedItemInfo> item in retOrder.orderedItems) { if (item.Value.Resolution is null) { item.Value.Resolution = new ItemResolution(false, null); } Console.WriteLine($"|{item.Key.Wic,6:d6}|{item.Key.ItemName,-15}|{(item.Value.HasBeenReceived() ? "Received" : "Pending"),-8}|"); } }
public static void DisplayOrderPreorder(ExpenseOrder order) { Console.Clear(); Console.WriteLine($"Order for {order.OrderDate.ToShortDateString()}"); Console.WriteLine($"Expected Arrival {order.ExpectedDateOneCycle.ToShortDateString(),6} ({order.ExpectedDateTwoCycle.ToShortDateString():d2})"); Console.WriteLine(); Console.WriteLine("Items: "); Console.WriteLine(); Console.WriteLine($"|Wic |Item Name |On Hand|Ordered|"); Console.WriteLine(); foreach (KeyValuePair <OrderableItem, OrderedItemInfo> s in order.orderedItems) { Console.WriteLine($"|{s.Key.Wic,6:d6}|{s.Key.ItemName,-15}|{s.Value.onHand,7:d3}|{s.Value.orderedAmount,7:d3}|"); } Console.WriteLine(); }
internal static ExpenseOrder ResolveOrder(ExpenseOrder receiptOrder) { if (receiptOrder is null) { throw new ArgumentNullException(nameof(receiptOrder)); } ExpenseOrder retOrder = receiptOrder; while (true) { Console.Clear(); DisplayOrderableResolutionTable(retOrder); string resp = ConsoleUtilities.AskUser("(q)uit, resolve (a)ll, resolve (n)one, or type a wic number to change the resolution of an individual item"); if (resp == "q") { break; } if (resp == "a") { foreach (var item in retOrder.orderedItems) { item.Value.Resolution.received = true; } continue; } if (resp == "n") { foreach (var item in retOrder.orderedItems) { item.Value.Resolution.received = false; } continue; } if (resp.Length <= 6 && int.TryParse(resp, out int wic)) { if (!retOrder.orderedItems.Any(x => x.Key.Wic == wic)) { continue; } retOrder.orderedItems.First(x => x.Key.Wic == wic).Value.Resolution.received = !retOrder.orderedItems.First(x => x.Key.Wic == wic).Value.Resolution.received; } } return(retOrder);
public bool Counter_GetExpenseOrderCounter(ExpenseOrder model) { throw new NotImplementedException(); }
internal static void CreateOrderReceiptReport(ExpenseOrder order) { }
internal static void OrderPrompt(Database.Database db) { OrderableItem[] orderableItems = db.GetOrderables(); ExpenseOrder order = new ExpenseOrder { OrderDate = new DateTime( AskUserNumber("Year"), AskUserNumber("Month"), AskUserNumber("Day")), }; int daysUntilThursday = ((int)DayOfWeek.Thursday - (int)order.OrderDate.DayOfWeek + 7) % 7; order.ExpectedDateOneCycle = order.OrderDate.AddDays(daysUntilThursday); order.ExpectedDateTwoCycle = order.ExpectedDateOneCycle.AddDays(7); order.orderedItems = new Dictionary <OrderableItem, OrderedItemInfo>(); while (true) { DisplayOrderPreorder(order); Console.WriteLine("Add item by (w)ic, or search by (n)ame."); Console.WriteLine("(s)uggested Order"); Console.WriteLine("(f)inish order"); var resp = AskUser(""); if (resp == "w") { var wic = AskUserNumber("Wic"); if (orderableItems.Any((x) => x.Wic == wic)) { if (order.orderedItems.ContainsKey(orderableItems.First((x) => x.Wic == wic))) { Console.WriteLine("That item is already in the order."); OrderedItemInfo oldItem = order.orderedItems.First((x) => x.Key.Wic == wic).Value; oldItem.onHand = AskUserNumber($"Modify on hand amount ({oldItem.onHand})"); oldItem.orderedAmount = AskUserNumber($"Modify ordered amount ({oldItem.orderedAmount})"); } else { order.orderedItems.Add(orderableItems.First((x) => x.Wic == wic), new Database.OrderedItemInfo(AskUserNumber("On hand amount"), AskUserNumber("Ordered Amount"))); } } else { Console.WriteLine("Invalid Wic"); if (AskUserBool("Add new item?")) { OrderablePrompt(db); orderableItems = db.GetOrderables(); } } } else if (resp == "f") { break; } else if (resp == "s") { foreach (KeyValuePair <int, int> k in new Dictionary <int, int>() { { 957754, 3 }, { 828188, 4 }, { 829838, 4 }, { 829839, 1 }, { 829841, 1 }, { 962843, 8 }, { 958293, 5 }, { 964586, 2 }, { 958292, 1 }, { 964588, 1 }, { 475071, 1 }, { 475070, 1 }, { 475069, 1 }, { 475068, 1 }, { 475067, 1 }, { 475066, 1 }, { 475065, 1 }, { 959737, 1 }, { 958843, 1 }, { 345150, 3 }, { 963233, 4 }, { 216735, 1 }, { 219561, 1 }, { 225610, 3 }, { 964880, 3 }, { 961510, 3 }, { 274002, 1 }, { 151913, 1 }, { 957507, 1 }, } .Where(k => orderableItems.Any((x) => x.Wic == k.Key))) { OrderableItem item = orderableItems.First((x) => x.Wic == k.Key); Console.WriteLine($"{item.Wic} : {item.ItemName}"); int onHand = AskUserNumber("On Hand"); int orderThis = onHand < k.Value ? k.Value - onHand : 0; Console.WriteLine("Suggested on hand value should be " + k.Value); if (orderThis != 0) { if (!AskUserBool("Order this amount? (" + orderThis + ")")) { order.orderedItems.Add(item, new OrderedItemInfo(onHand, AskUserNumber("Quantity"))); } else { order.orderedItems.Add(item, new OrderedItemInfo(onHand, orderThis)); } } else if (AskUserBool("Current amount is sufficient. Order more?")) { order.orderedItems.Add(item, new OrderedItemInfo(onHand, AskUserNumber("Quantity"))); } else { order.orderedItems.Add(item, new OrderedItemInfo(onHand, 0)); } } } } db.SaveNewOrder(order); }
public static ExpenseOrder ChooseOrder(Database.Database db) { if (db is null) { throw new ArgumentNullException(nameof(db)); } ExpenseOrder[] orders = db.GetOrders().OrderBy(x => x.OrderDate.ToFileTimeUtc()).ToArray(); Console.Clear(); const int numberPerPage = 5; int numberOfPages = orders.Length / numberPerPage; int currentPageIndex = 0; ExpenseOrder retVal = null; while (retVal == null) { if (currentPageIndex < 0) { currentPageIndex = 0; } if (currentPageIndex > numberOfPages) { currentPageIndex = numberOfPages; } Console.Clear(); ExpenseOrder[] currentPage = orders.Skip(currentPageIndex * numberPerPage).Take(numberPerPage).ToArray(); Console.WriteLine($"Displaying {currentPage.Length} of {orders.Length} orders."); for (int i = 0; i < currentPage.Length; i++) { ExpenseOrder order = currentPage[i]; Console.WriteLine($"{i + 1} : Order from {order.OrderDate.ToShortDateString()}"); } string resp = ConsoleUtilities.AskUser("(n)ext page, (p)rev page, (q)uit, or press a number to select an order."); if (resp == "n") { currentPageIndex++; } else if (resp == "p") { currentPageIndex--; } else if (resp == "q") { return(null); } else if (int.TryParse(resp, out int selectedItemIndex) && selectedItemIndex > 0 && selectedItemIndex <= currentPage.Length) { return(currentPage.ToArray()[selectedItemIndex - 1]); } } return(null); }