Ejemplo n.º 1
0
        /**
         * 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);
        }
Ejemplo n.º 2
0
        /**
         * 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);
        }
Ejemplo n.º 3
0
        /**
         * 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);
        }
Ejemplo n.º 4
0
        /**
         * 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);
 }
Ejemplo n.º 8
0
 public void DemandToProviderDelete(T_DemandToProvider demandToProvider)
 {
     _demandToProviderTable.Remove(demandToProvider);
 }