Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
            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}|");
                }
            }
Exemplo n.º 4
0
 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();
 }
Exemplo n.º 5
0
        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);
Exemplo n.º 6
0
 public bool Counter_GetExpenseOrderCounter(ExpenseOrder model)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 7
0
 internal static void CreateOrderReceiptReport(ExpenseOrder order)
 {
 }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }