private void VerifyQuantities(IDbTransactionData dbTransactionData, bool isArchive) { foreach (var demandToProvider in dbTransactionData.DemandToProviderGetAll()) { Demand demand = dbTransactionData.DemandsGetById(demandToProvider.GetDemandId()); Provider provider = dbTransactionData.ProvidersGetById(demandToProvider.GetProviderId()); // every quantity > 0 Assert.True(demand.GetQuantity().IsGreaterThan(Quantity.Null())); Assert.True(provider.GetQuantity().IsGreaterThan(Quantity.Null())); Assert.True(demandToProvider.GetQuantity().IsGreaterThan(Quantity.Null())); // demand's quantity == provider's quantity Assert.True(demand.GetQuantity().Equals(provider.GetQuantity())); // demand's quantity == demandToProvider's quantity Assert.True(demand.GetQuantity().Equals(demandToProvider.GetQuantity())); // provider's quantity == demandToProvider's quantity Assert.True(provider.GetQuantity().Equals(demandToProvider.GetQuantity())); } foreach (var providerToDemand in dbTransactionData.ProviderToDemandGetAll()) { Demand demand = dbTransactionData.DemandsGetById(providerToDemand.GetDemandId()); Provider provider = dbTransactionData.ProvidersGetById(providerToDemand.GetProviderId()); // this is a special case, doc can be found at TODO if (provider == null && demand.GetType() == typeof(StockExchangeDemand) && isArchive) { continue; } // every quantity > 0 Assert.True(demand.GetQuantity().IsGreaterThan(Quantity.Null())); Assert.True(provider.GetQuantity().IsGreaterThan(Quantity.Null())); Assert.True(providerToDemand.GetQuantity().IsGreaterThan(Quantity.Null())); if (provider.GetType() == typeof(StockExchangeProvider)) { // stockExchangeProvider's quantity >= providerToDemand's quantity Assert.True( provider.GetQuantity().IsGreaterThanOrEqualTo(providerToDemand.GetQuantity())); } else if (provider.GetType() == typeof(ProductionOrder)) { // no condition } else if (provider.GetType() == typeof(PurchaseOrderPart)) { Assert.True(false, "This arrow is not allowed."); } else { Assert.True(false, "Unexpected type."); } } }
public void AddDemand(Demand oneDemand, Quantity reservedQuantity) { if (_demands.GetDemandById(oneDemand.GetId()) != null) { throw new MrpRunException("You cannot add an already added demand."); } // if it has quantity that is not reserved, remember it for later reserving if (oneDemand.GetType() == typeof(StockExchangeDemand) && reservedQuantity.IsSmallerThan(oneDemand.GetQuantity())) { _openDemands.Add(oneDemand.GetArticle(), new OpenNode <Demand>(oneDemand, oneDemand.GetQuantity().Minus(reservedQuantity), oneDemand.GetArticle())); } // save demand _demands.Add(oneDemand); }
private EntityCollector MaterialRequirementsPlanningForOneDemand(Demand demand, IProviderManager providerManager) { EntityCollector entityCollector = new EntityCollector(); EntityCollector response = providerManager.Satisfy(demand, demand.GetQuantity()); entityCollector.AddAll(response); response = providerManager.CreateDependingDemands(entityCollector.GetProviders()); entityCollector.AddAll(response); if (entityCollector.IsSatisfied(demand) == false) { throw new MrpRunException($"'{demand}' was NOT satisfied: remaining is " + $"{entityCollector.GetRemainingQuantity(demand)}"); } return(entityCollector); }
private string ToGraphizString(Demand demand) { return($"\\n{demand.GetId()}: {demand.GetArticle().Name};Anzahl: {demand.GetQuantity()};" + $"\\nStart/End: {demand.GetStartTimeBackward()}/{demand.GetEndTimeBackward()};" ); }