/** * SE:I --> satisfy by orders PuOP */ public EntityCollector Satisfy(Demand demand, Quantity demandedQuantity) { EntityCollector entityCollector = new EntityCollector(); M_Article article = demand.GetArticle(); DueTime dueTime = demand.GetStartTimeBackward(); if (article.ToBuild) { throw new MrpRunException( "You try to create a purchaseOrderPart for a articleToBuild."); } // currently only one businessPartner per article TODO: This could be changing M_ArticleToBusinessPartner articleToBusinessPartner = _dbMasterDataCache.M_ArticleToBusinessPartnerGetAllByArticleId(article.GetId())[0]; M_BusinessPartner businessPartner = _dbMasterDataCache.M_BusinessPartnerGetById(new Id(articleToBusinessPartner .BusinessPartnerId)); T_PurchaseOrder purchaseOrder = new T_PurchaseOrder(); // [Name],[DueTime],[BusinessPartnerId] purchaseOrder.DueTime = dueTime.GetValue(); purchaseOrder.BusinessPartner = businessPartner; purchaseOrder.Name = $"PurchaseOrder{article.Name} for " + $"businessPartner {purchaseOrder.BusinessPartner.Id}"; // init a new purchaseOderPart T_PurchaseOrderPart tPurchaseOrderPart = new T_PurchaseOrderPart(); // [PurchaseOrderId],[ArticleId],[Quantity],[State],[ProviderId] tPurchaseOrderPart.PurchaseOrder = purchaseOrder; tPurchaseOrderPart.PurchaseOrderId = purchaseOrder.Id; tPurchaseOrderPart.Article = article; tPurchaseOrderPart.ArticleId = article.Id; tPurchaseOrderPart.Quantity = CalculateQuantity(articleToBusinessPartner, demandedQuantity) * articleToBusinessPartner .PackSize; if (tPurchaseOrderPart.Quantity < demandedQuantity.GetValue()) { throw new MrpRunException("You cannot purchase less than you need!"); } tPurchaseOrderPart.State = State.Created; PurchaseOrderPart purchaseOrderPart = new PurchaseOrderPart(tPurchaseOrderPart, null); T_DemandToProvider demandToProvider = new T_DemandToProvider() { DemandId = demand.GetId().GetValue(), ProviderId = purchaseOrderPart.GetId().GetValue(), Quantity = demandedQuantity.GetValue() }; entityCollector.Add(purchaseOrderPart); entityCollector.Add(demandToProvider); return(entityCollector); }
/** * COP or PrOB --> satisfy by SE:W */ public EntityCollector Satisfy(Demand demand, Quantity demandedQuantity) { EntityCollector entityCollector = new EntityCollector(); Provider stockProvider = CreateStockExchangeProvider(demand.GetArticle(), demand.GetStartTimeBackward(), demandedQuantity); entityCollector.Add(stockProvider); T_DemandToProvider demandToProvider = new T_DemandToProvider(demand.GetId(), stockProvider.GetId(), demandedQuantity); entityCollector.Add(demandToProvider); return(entityCollector); }
/** * DemandToProvider * D --> P */ public Demands GetAllParentDemandsOf(Provider provider) { Demands demands = new Demands(); Ids ids = _dbTransactionData.DemandToProviderGetAll().GetByProviderId(provider.GetId()); if (ids == null) { return(null); } foreach (var id in ids) { T_DemandToProvider demandToProvider = _dbTransactionData.DemandToProviderGetById(id); demands.Add(_dbTransactionData.DemandsGetById(demandToProvider.GetDemandId())); } return(demands); }
/** * DemandToProvider */ public Providers GetAllChildProvidersOf(Demand demand) { Providers providers = new Providers(); Ids ids = _dbTransactionData.DemandToProviderGetAll().GetByDemandId(demand.GetId()); if (ids == null) { return(null); } foreach (var id in ids) { T_DemandToProvider demandToProvider = _dbTransactionData.DemandToProviderGetById(id); providers.Add( _dbTransactionData.ProvidersGetById(demandToProvider.GetProviderId())); } return(providers); }
/** * SE:I --> satisfy by orders PrOBom */ public EntityCollector Satisfy(Demand demand, Quantity demandedQuantity) { if (demand.GetArticle().ToBuild == false) { throw new MrpRunException("Must be a build article."); } EntityCollector entityCollector = CreateProductionOrder(demand, demandedQuantity); foreach (var provider in entityCollector.GetProviders()) { T_DemandToProvider demandToProvider = new T_DemandToProvider() { DemandId = demand.GetId().GetValue(), ProviderId = provider.GetId().GetValue(), Quantity = provider.GetQuantity().GetValue() }; entityCollector.Add(demandToProvider); } return(entityCollector); }
private ILinkDemandAndProvider GetDemandOrProviderLink(INode tailGraphNode, INode headGraphNode) { ILinkDemandAndProvider demandAndProviderLink; IScheduleNode tail = tailGraphNode.GetEntity(); if (tail is Demand) { demandAndProviderLink = new T_DemandToProvider(tail.GetId(), headGraphNode.GetEntity().GetId(), null); } else if (tail is Provider) { demandAndProviderLink = new T_ProviderToDemand(tail.GetId(), headGraphNode.GetEntity().GetId(), null); } else { throw new MrpRunException("Not expected type."); } return(demandAndProviderLink); }
public void Add(T_DemandToProvider demandToProvider) { _demandToProviderTable.Add(demandToProvider); }
public void DemandToProviderDelete(T_DemandToProvider demandToProvider) { _demandToProviderTable.Remove(demandToProvider); }