예제 #1
0
        public override void Visit(Order order)
        {
            var linkedOrder = order as LinkedOrder;

            if (linkedOrder == null || linkedOrder.RelatedOrder != null)
            {
                return;
            }

            linkedOrder.RelatedOrder = GetRelatedOrderFromRelatedLineItems(order) ?? GetRelatedOrderFromRelatedOrderId(order);

            if (linkedOrder.RelatedOrder == null)
            {
                throw new UnableToRetrieveRelatedOrderException(linkedOrder);
            }

            if (!linkedOrder.RelatedOrder.LineItems.Any())
            {
#if DEBUG
                Console.WriteLine(" Read related OrderId {0}", (linkedOrder.RelatedOrder.Id));
#endif
                linkedOrder.RelatedOrder = orderMapper.GetOrder(linkedOrder.RelatedOrder.Id);
            }
        }
예제 #2
0
        public override void Visit(Order order)
        {
            if (!OrderIsNostroOrLockInDisbursal(order.OrderType) ||
                !order.RelatedOrderId.HasValue || order.RelatedOrderId == 0 ||
                !LineItemHasNullFundingSource(order))
            {
                return;
            }

            var relatedOrder = orderMapper.GetOrder(order.RelatedOrderId.Value);

            if (relatedOrder.OrderType != OrderType.LockIn)
            {
                return;
            }

            order.LineItems.Where(li => li.FundingSource is NullLineItemFundingSource)
            .ForEach(li => SetFundingSource(li, relatedOrder));
        }
예제 #3
0
        public override void Visit(Order order)
        {
            var reissue = order as Reissue;

            if (reissue != null)
            {
                var repurchaseId = orderMapper.GetRepurchaseOrderIdFromReissueOrderId(reissue.Id);

                if (repurchaseId < 1)
                {
                    throw new ArgumentException(string.Format("Unable to find repurchase for reissue order Id {0}", reissue.Id), "reissueOrder");
                }

                reissue.Repurchase = orderService.GetOrder(repurchaseId);

                if (reissue.Repurchase == null)
                {
                    throw new ArgumentException(string.Format("invalid repurchase order id {0}", repurchaseId), "repurchaseId");
                }
            }
        }