Beispiel #1
0
        public MergeOrderResponse MergeOrder(MergeOrderRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.SourceOrderRefs, "SourceOrderRefs");
            Platform.CheckTrue(request.SourceOrderRefs.Count > 0, "SourceOrderRefs.Count > 0");
            Platform.CheckMemberIsSet(request.DestinationOrderRef, "DestinationOrderRef");

            var response = new MergeOrderResponse();

            DryRunHelper(request.DryRun,
                         delegate
            {
                var destinationOrder = this.PersistenceContext.Load <Order>(request.DestinationOrderRef);
                var sourceOrders     = CollectionUtils.Map(request.SourceOrderRefs, (EntityRef r) => PersistenceContext.Load <Order>(r));
                var mergeInfo        = new OrderMergeInfo(this.CurrentUserStaff, Platform.Time, destinationOrder);

                MergeOrderHelper(destinationOrder, sourceOrders, mergeInfo, request.ValidationOnly);

                if (request.DryRun)
                {
                    var orderAssembler = new OrderAssembler();
                    var orderDetail    = orderAssembler.CreateOrderDetail(destinationOrder,
                                                                          OrderAssembler.CreateOrderDetailOptions.GetVerboseOptions(), PersistenceContext);
                    response.DryRunMergedOrder = orderDetail;
                }
            });
            return(response);
        }
Beispiel #2
0
 public bool OrderMerge(string OrderIDFrom, string OrderIDTo, ref string msg)
 {
     try
     {
         MergeOrderRequest paraBody = new MergeOrderRequest();
         paraBody.OrderIDFrom = OrderIDFrom;
         paraBody.OrderIDTo   = OrderIDTo;
         NSLog.Logger.Info("OrderMerge Request", paraBody);
         var result = (NSApiResponse)ApiResponse.Post <NSApiResponse>(Commons.CRMCustomerOrderMerge, null, paraBody);
         NSLog.Logger.Info("OrderMerge Response", result);
         if (result != null)
         {
             if (result.Success)
             {
                 return(true);
             }
             else
             {
                 msg = result.Message;
                 NSLog.Logger.Info("OrderMerge", result.Message);
                 return(false);
             }
         }
         else
         {
             NSLog.Logger.Info("OrderMerge", result);
             return(false);
         }
     }
     catch (Exception e)
     {
         NSLog.Logger.Error("OrderMerge_Fail", e);
         return(false);
     }
 }
Beispiel #3
0
        private static bool ValidateMergeRequest(IList <EntityRef> orderRefs, out string failureReason)
        {
            var destinationOrderRef = orderRefs[0];
            var sourceOrderRefs     = new List <EntityRef>(orderRefs);

            sourceOrderRefs.Remove(destinationOrderRef);

            try
            {
                Platform.GetService(
                    delegate(IOrderEntryService service)
                {
                    var request = new MergeOrderRequest(sourceOrderRefs, destinationOrderRef)
                    {
                        ValidationOnly = true
                    };
                    service.MergeOrder(request);
                });
                failureReason = null;
                return(true);
            }
            catch (RequestValidationException e)
            {
                failureReason = e.Message;
                return(false);
            }
        }
        public void Accept()
        {
            try
            {
                var destAccNumber    = _selectedOrder.AccessionNumber;
                var sourceAccNumbers = CollectionUtils.Map(_ordersTable.Items, (OrderDetail o) => o.AccessionNumber);
                sourceAccNumbers.Remove(destAccNumber);

                var message = string.Format(SR.MessageMergeOrderConfirmation, StringUtilities.Combine(sourceAccNumbers, ","), destAccNumber);
                if (DialogBoxAction.No == this.Host.DesktopWindow.ShowMessageBox(message, MessageBoxActions.YesNo))
                {
                    return;
                }

                var destinationOrderRef = _selectedOrder.OrderRef;
                var sourceOrderRefs     = new List <EntityRef>(_orderRefs);
                sourceOrderRefs.Remove(_selectedOrder.OrderRef);
                Platform.GetService(
                    delegate(IOrderEntryService service)
                {
                    var request = new MergeOrderRequest(sourceOrderRefs, destinationOrderRef)
                    {
                        DryRun = false
                    };
                    service.MergeOrder(request);
                });

                this.Exit(ApplicationComponentExitCode.Accepted);
            }
            catch (Exception e)
            {
                ExceptionHandler.Report(e, SR.ExceptionMergeOrdersTool, this.Host.DesktopWindow,
                                        () => this.Exit(ApplicationComponentExitCode.Error));
            }
        }
        private void MergeOrderDryRun(out OrderDetail mergedOrder, out string failureReason)
        {
            if (_selectedOrder == null)
            {
                failureReason = null;
                mergedOrder   = null;
                return;
            }

            var destinationOrderRef = _selectedOrder.OrderRef;
            var sourceOrderRefs     = new List <EntityRef>(_orderRefs);

            sourceOrderRefs.Remove(_selectedOrder.OrderRef);

            try
            {
                MergeOrderResponse response = null;
                Platform.GetService(
                    delegate(IOrderEntryService service)
                {
                    var request = new MergeOrderRequest(sourceOrderRefs, destinationOrderRef)
                    {
                        DryRun = true
                    };
                    response = service.MergeOrder(request);
                });

                mergedOrder   = response.DryRunMergedOrder;
                failureReason = null;
            }
            catch (RequestValidationException e)
            {
                failureReason = e.Message;
                mergedOrder   = null;
            }
        }