Ejemplo n.º 1
0
 public void AddOrder(int id, string code, double value)
 {
     OrderedItem item = this.Ordered.FirstOrDefault(it => it.Id == id);
     if (item == null)
     {
         item = new OrderedItem() { Id = id, Code = code, Value = value };
         this.Ordered.Add(item);
     }
 }
Ejemplo n.º 2
0
        public override Items GetStatisticData()
        {
            Items originalData = base.GetStatisticData();

            Items data = new Items() { Orders = originalData.Orders };

            List<ItemData> processed = new List<ItemData>();

            foreach (ItemData item in originalData.Rows)
            {
                if (!string.IsNullOrWhiteSpace(item.Code) && item.Code.StartsWith(CODE_601))
                {
                    processed.Add(item);
                    data.Rows.Add(item);
                    string[] parts = item.Code.Split(' ');
                    if (parts.Length > 1)
                    {
                        string common = parts[1];
                        IEnumerable<ItemData> partialData = originalData.Rows.Where(it => it.Code.Contains(common) &&
                            !it.Code.StartsWith(CODE_601));
                        foreach (ItemData partial in partialData)
                        {
                            processed.Add(partial);
                            item.OnStock += partial.OnStock;
                            //item.Ordered += partial.Ordered;
                            foreach (string year in partial.Usages.Keys)
                            {
                                if (item.Usages.ContainsKey(year))
                                    item.Usages[year] += partial.Usages[year];
                                else
                                    item.Usages.Add(year, partial.Usages[year]);
                            }
                            foreach (OrderedItem order in partial.Ordered)
                            {
                                OrderedItem old = item.Ordered.FirstOrDefault(ord=>ord.Id == order.Id);
                                if (old == null)
                                {
                                    old = new OrderedItem() { Code = order.Code, Id = order.Id };
                                    item.Ordered.Add(old);
                                }
                                old.Value += order.Value;
                            }
                        }
                    }
                }
            }
            // Este pridame tie, ktore sa doteraz nespracovali, bude to zobrazene na konci statistiky
            IEnumerable<ItemData> unprocessed = originalData.Rows.Where(he => !processed.Contains(he));
            foreach(ItemData item in unprocessed)
                data.Rows.Add(item);
            return data;
        }