Ejemplo n.º 1
0
        /// <summary>
        /// Negating a provided certain order item ids
        /// </summary>
        /// <param name="orderDetailIds"></param>
        /// <param name="order"></param>
        /// <param name="dataRecorderCreatorId"></param>
        public void NegateOrderLineItems(IEnumerable <long> orderDetailIds, Order order, long dataRecorderCreatorId)
        {
            if (order == null)
            {
                throw new InvalidOperationException("The order can not be null.");
            }

            var orderDetailsToBeCancelled = new List <OrderDetail>();

            orderDetailsToBeCancelled.AddRange(order.OrderDetails.Where(od => orderDetailIds.Contains(od.Id)));
            order.OrderDetails.RemoveAll(od => orderDetailIds.Contains(od.Id));
            var  shippingDetailsToCancelled = new List <ShippingDetail>();
            long orderDetailId = 0;

            foreach (var detailsToBeCancelled in orderDetailsToBeCancelled)
            {
                var cancelledOrderDetail = _orderDetailFactory.CreateNewOrderDetail(detailsToBeCancelled,
                                                                                    detailsToBeCancelled.ForOrganizationRoleUserId,
                                                                                    dataRecorderCreatorId);
                order.OrderDetails.Add(detailsToBeCancelled);
                order.OrderDetails.Add(cancelledOrderDetail);

                if (detailsToBeCancelled.DetailType == OrderItemType.ProductItem)
                {
                    OrderDetail orderDetail = GetActiveOrderDetail(order);
                    orderDetailId = orderDetail.Id;
                    var shippingDetails = _shippingDetailRepository.GetProductShippingDetailsForCancellation(orderDetail.Id).ToList();
                    shippingDetails = shippingDetails.Where(sd => sd.Status == ShipmentStatus.Processing).Select(sd => sd).ToList();
                    var shippingDetail = shippingDetails.FirstOrDefault();

                    if (shippingDetail != null)
                    {
                        shippingDetailsToCancelled.Add(shippingDetail);
                        shippingDetails.Remove(shippingDetail);
                    }
                }
            }

            //var lineItem = _lineItems.FirstOrDefault();
            //OrderItem orderItem = _orderItemRepository.SaveOrderItem(lineItem.SecondValue.Id, lineItem.SecondValue.OrderItemType);
            //lineItem.FirstValue.OrderItemId = orderItem.Id;
            //lineItem.FirstValue.OrderId = order.Id;

            //order.OrderDetails.Add(lineItem.FirstValue);

            order = _orderRepository.SaveOrder(order);

            if (shippingDetailsToCancelled.Count > 0)
            {
                IShippingDetailOrderDetailRepository shippingDetailOrderDetailRepository =
                    new ShippingDetailOrderDetailRepository();
                foreach (var shippingDetail in shippingDetailsToCancelled)
                {
                    shippingDetailOrderDetailRepository.UpdateStatus(shippingDetail.Id, orderDetailId, false);
                    var shipping = _shippingDetailRepository.GetById(shippingDetail.Id);
                    shipping.Status = ShipmentStatus.Cancelled;
                    _shippingDetailRepository.Save(shipping);
                }
            }
        }
Ejemplo n.º 2
0
        public bool UpdateShippingStatus(long shippingDetailId, ShipmentStatus status, long modifiedByOrgRoleUserId)
        {
            var shippingDetail = _shippingDetailRepository.GetById(shippingDetailId);

            shippingDetail.Status = status;
            shippingDetail.DataRecorderMetaData.DateModified         = DateTime.Now;
            shippingDetail.DataRecorderMetaData.DataRecorderModifier = new OrganizationRoleUser(modifiedByOrgRoleUserId);

            if (status == ShipmentStatus.Shipped)
            {
                shippingDetail.ShippedByOrgRoleUserId = modifiedByOrgRoleUserId;
            }

            shippingDetail = _shippingDetailRepository.Save(shippingDetail);
            if (shippingDetail.Id > 0)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 3
0
        private ShippingDetail UpdateShippingDetail(Control currentGridRow, long shippingDetailId, bool isBulkUpdate)
        {
            NullArgumentChecker.CheckIfNull(currentGridRow, "currentGridRow");

            if (shippingDetailId > 0 && currentGridRow is GridViewRow)
            {
                currentGridRow = currentGridRow as GridViewRow;

                var eventDate = currentGridRow.FindControl("EventDateItemLiteral") as Literal;

                if (eventDate != null)
                {
                    if (Convert.ToDateTime(eventDate.Text) > DateTime.Now)
                    {
                        MessageBox.ShowErrorMessage("You can not update shipping status of future event.");
                        return(null);
                    }
                }

                var shippingDetail = _shippingDetailRepository.GetById(shippingDetailId);

                var shippingStatus =
                    currentGridRow.FindControl("ShipmentStatusDropDown") as DropDownList;

                if (shippingStatus != null)
                {
                    shippingDetail.Status = (ShipmentStatus)Enum.Parse(typeof(ShipmentStatus), (isBulkUpdate ? ShipmentStatusUpdateDropDown.SelectedValue : shippingStatus.SelectedValue));
                }

                if (shippingDetail.Status == ShipmentStatus.Shipped)
                {
                    shippingDetail.ShippedByOrgRoleUserId = IoC.Resolve <SessionContext>().UserSession.CurrentOrganizationRole.OrganizationRoleUserId;
                }


                shippingDetail.DataRecorderMetaData.DataRecorderModifier = new OrganizationRoleUser(IoC.Resolve <SessionContext>().UserSession.CurrentOrganizationRole.OrganizationRoleUserId);
                shippingDetail.DataRecorderMetaData.DateModified         = DateTime.Now;
                return(shippingDetail);
            }
            return(null);
        }
Ejemplo n.º 4
0
        protected void SaveButton_Click(object sender, EventArgs e)
        {
            if (BillingAddressSameRadio.Checked)
            {
                ListItem itemAlreadySelectedState = StateDropDown.Items.FindByValue(StateIdHidden.Value);
                if (itemAlreadySelectedState != null)
                {
                    itemAlreadySelectedState.Selected = true;
                }
                CityText.Text     = CityHidden.Value;
                ZipText.Text      = ZipHidden.Value;
                Address1Text.Text = Address1Hidden.Value;
            }

            bool isStatusUpdated = false;

            TotalAmountPayable = 0.0m;
            var selectedRows = GetSelectedRows();

            try
            {
                using (var transaction = new TransactionScope())
                {
                    if (PaymentMode.SelectedValue != PaymentType.CreditCard.PersistenceLayerId.ToString() ||
                        AddressValidation())
                    {
                        foreach (var row in selectedRows)
                        {
                            if (row == null)
                            {
                                continue;
                            }

                            var orderDetailIdLiteral    = row.FindControl("OrderDetailIdLiteral") as Literal;
                            var shippingDetailIdLiteral = row.FindControl("ShippingDetailIdLiteral") as Literal;
                            var actualPrice             = row.FindControl("PriceLabel") as Label;

                            if (orderDetailIdLiteral != null && shippingDetailIdLiteral != null)
                            {
                                var orderDetailId    = Convert.ToInt64(orderDetailIdLiteral.Text);
                                var shippingDetailId = Convert.ToInt64(shippingDetailIdLiteral.Text);

                                isStatusUpdated = _shippingDetailOrderDetailRepository.UpdateStatus(shippingDetailId, orderDetailId, false);

                                var shippingDetail = _shippingDetailRepository.GetById(shippingDetailId);
                                shippingDetail.Status = ShipmentStatus.Cancelled;
                                _shippingDetailRepository.Save(shippingDetail);

                                var resultShippingDetails  = _shippingDetailRepository.GetShippingDetailsForCancellation(orderDetailId).ToList();
                                var productShippingDetails = _shippingDetailRepository.GetProductShippingDetailsForCancellation(orderDetailId).ToList();
                                if (productShippingDetails.Count > resultShippingDetails.Count)
                                {
                                    var productShippingDetail = productShippingDetails.FirstOrDefault();
                                    if (productShippingDetail != null)
                                    {
                                        _shippingDetailOrderDetailRepository.UpdateStatus(productShippingDetail.Id, orderDetailId, false);
                                        productShippingDetail.Status = ShipmentStatus.Cancelled;
                                        _shippingDetailRepository.Save(productShippingDetail);
                                        CheckEventCustomerResultStateAndDeleteCdGenTrackRecord();
                                    }
                                }

                                if (actualPrice != null && !string.IsNullOrEmpty(actualPrice.Text))
                                {
                                    TotalAmountPayable += Convert.ToDecimal(actualPrice.Text);
                                }
                            }
                        }

                        if (AmountPaid < (DiscountedTotal - TotalAmountPayable))
                        {
                            TotalAmountPayable = 0;
                        }
                        else
                        {
                            TotalAmountPayable = AmountPaid - (DiscountedTotal - TotalAmountPayable);
                        }

                        var isRefundQueueEnabled = IoC.Resolve <ISettings>().IsRefundQueueEnabled;

                        if (PaymentMode.SelectedValue == PaymentType.CreditCard.PersistenceLayerId.ToString() &&
                            BillingAddressDifferentRadio.Checked && !isRefundQueueEnabled)
                        {
                            var creatorOrganizationRoleUser = GetCreatorOrganizationRoleUser();
                            UpdateCustomerBillingAddress(creatorOrganizationRoleUser.Id);
                        }

                        if (isStatusUpdated)
                        {
                            if (TotalAmountPayable > 0)
                            {
                                if (isRefundQueueEnabled)
                                {
                                    var refundRequest          = PrepareRefundRequestObject();
                                    var refundRequestValidator = IoC.Resolve <RefundRequestEditModelValidator>();
                                    var result = refundRequestValidator.Validate(refundRequest);
                                    if (result.IsValid)
                                    {
                                        IoC.Resolve <IRefundRequestService>().SaveRequest(refundRequest);
                                    }
                                    else
                                    {
                                        var propertyNames = result.Errors.Select(er => er.PropertyName).Distinct();
                                        var htmlString    = propertyNames.Aggregate("", (current, property) => current + (result.Errors.Where(er => er.PropertyName == property).FirstOrDefault().ErrorMessage + "&nbsp;&nbsp;"));
                                        MessageBox.ShowErrorMessage(htmlString);
                                        return;
                                    }
                                }
                                else
                                {
                                    var creatorOrganizationRoleUser = GetCreatorOrganizationRoleUser();
                                    var paymentInstrument           = RefundPayment(creatorOrganizationRoleUser,
                                                                                    OrderId + "_" + CustomerId);
                                    if (paymentInstrument != null &&
                                        ApplyPaymentToOrder(creatorOrganizationRoleUser, CurrentOrder, paymentInstrument))
                                    {
                                        transaction.Complete();
                                        Response.RedirectUser(ReturnUrl);
                                    }
                                    else
                                    {
                                        SetAndDisplayErrorMessage("Oops some error occured in the system please try again later.");
                                    }
                                }
                            }
                            transaction.Complete();
                            if (UrlValidator.IsUrlLocalToHost(Request, ReturnUrl))
                            {
                                Response.RedirectUser(ReturnUrl);
                            }
                        }
                        else
                        {
                            SetAndDisplayErrorMessage("Oops some error occured in the system please try again later.");
                        }
                    }
                }
            }
            catch (InvalidOperationException)
            {
            }
            catch { SetAndDisplayErrorMessage("Oops some error occured in the system please try again later."); }
        }