public void OutputString(StringBuilder outputString) { var product = StaticInventoryTracker.ProductMasterList.FirstOrDefault(x => x.MasterID == MasterItem.MasterID); string name = product?.ProductionCode; outputString.Append($"{name}"); for (int i = 0; i < RequirementsHandler.GetNumDays(); ++i) { outputString.Append($",{" "}"); // keep columns } outputString.AppendLine(); // end product line StringBuilder grossBuilder = new StringBuilder(); StringBuilder onHandBuilder = new StringBuilder(); StringBuilder netBuilder = new StringBuilder(); StringBuilder purchaseBuilder = new StringBuilder(); grossBuilder.Append($"{"Gross"},"); onHandBuilder.Append($"{"OnHand"},"); netBuilder.Append($"{"Net"},"); purchaseBuilder.Append($"{"POS"},"); DateTime current = RequirementsHandler.GetEarliestDay(); while (current <= RequirementsHandler.GetLatestDay()) { RequirementsDay day = null; if (RequiredPieces.ContainsKey(current)) { day = RequiredPieces[current]; } if (day != null) { grossBuilder.Append($"{day.GrossPieces},"); onHandBuilder.Append($"{day.Inventory},"); netBuilder.Append($"{day.NetRequiredPieces},"); purchaseBuilder.Append($"{day.PurchaseOrderPieces},"); } else { grossBuilder.Append($"{"0"},"); onHandBuilder.Append($"{"0"},"); netBuilder.Append($"{"0"},"); purchaseBuilder.Append($"{"0"},"); } current = current.AddDays(1); } outputString.AppendLine(grossBuilder.ToString()); outputString.AppendLine(onHandBuilder.ToString()); outputString.AppendLine(netBuilder.ToString()); outputString.AppendLine(purchaseBuilder.ToString()); }
/// <summary> /// Get the requirements for a day. Creates a new day if there is not one /// </summary> /// <param name="day"></param> /// <returns></returns> public RequirementsDay GetRequirementDay(DateTime day) { var validDay = RequirementsHandler.ValidateDay(day); RequirementsDay reqDay = null; if (RequiredPieces.ContainsKey(validDay)) { reqDay = RequiredPieces[validDay]; } else { reqDay = new RequirementsDay(this, validDay); RequiredPieces[validDay] = reqDay; } return(reqDay); }
public void UpdateInventory(DateTime startDay) { // Validate day var validDate = RequirementsHandler.ValidateDay(startDay); RequirementsDay reqDay = null; RequirementsDay prevDay = null; // add inventory numbers for each day reqDay = GetRequirementDay(validDate); validDate = validDate.AddDays(1); while (validDate <= RequirementsHandler.GetLatestDay()) { prevDay = reqDay; reqDay = GetRequirementDay(validDate); reqDay.Inventory = prevDay.NextInventoryPieces; validDate = validDate.AddDays(1); } }
/// <summary> /// Adds a listing to the gross requirements of the item on the date. If another sale is already on that date, the required items are added. /// </summary> /// <param name="day"></param> /// <param name="pieces"></param> public void AddSale(DateTime day, double pieces) { // Validate day var validDate = RequirementsHandler.ValidateDay(day); // Safe access to dictionary. Creates new entry if needed. RequirementsDay requirement = null; if (RequiredPieces.ContainsKey(validDate)) { requirement = RequiredPieces[validDate]; requirement.AddGrossRequirement(pieces); } else { requirement = new RequirementsDay(this, validDate); RequiredPieces[validDate] = requirement; requirement.AddGrossRequirement(pieces); } }
/// <summary> /// Adds the number of pieces to on hand inventory /// </summary> /// <param name="day"></param> /// <param name="pieces"></param> public void AddOnHandInventory(int pieces) { // Validate day var validDate = RequirementsHandler.GetEarliestDay(); RequirementsDay reqDay = null; RequirementsDay prevDay = null; // Safe Access. if (RequiredPieces.ContainsKey(validDate)) { reqDay = RequiredPieces[validDate]; reqDay.AddOnHand(pieces); } else { reqDay = new RequirementsDay(this, validDate); RequiredPieces[validDate] = reqDay; reqDay.Inventory = pieces; } }
protected bool Equals(RequirementsDay other) { return(_calculated == other._calculated && _grossPieces == other._grossPieces && _inventory == other._inventory && _netRequiredPieces == other._netRequiredPieces && _purchaseOrderPieces == other._purchaseOrderPieces); }