public static double GetEfficiency(DateTime start, DateTime end, int masterId)
        {
            var changes = InventoryChanges.Where(change => change.MasterId == masterId && change.Date >= start && change.Date <= end).ToList();

            double expected = changes.Sum(change => change.UnitsExpected);
            double made     = changes.Sum(change => change.UnitsMade);

            return(made / expected);
        }
        private static bool LoadFromBin(string fileName)
        {
            try
            {
                using (BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open)))
                {
                    // Order: Changes,Master,Inventory,Sales,Texture,WiP Marker,WiP,

                    int listLen = reader.ReadInt32();
                    InventoryChanges.Clear();
                    for (; listLen > 0; --listLen)
                    {
                        InventoryChanges.Add(InventoryChange.LoadFromBin(reader));
                    }


                    //listLen = reader.ReadInt32();

                    //ProductMasterList.Clear();
                    //for(;listLen > 0; --listLen)
                    //{
                    //    ProductMasterList.Add(ProductMasterItem.Load(reader));
                    //}


                    listLen = reader.ReadInt32();
                    WiPItems.Clear();
                    for (; listLen > 0; --listLen)
                    {
                        WiPItems.Add(InventoryItem.LoadItem(reader));
                    }
                }
                IsLoaded = true;
            }
            catch (Exception)
            {
                return(false);
            }
            return(true);
        }