Ejemplo n.º 1
0
        public virtual async Task DeleteMerchandiseReturn(MerchandiseReturn merchandiseReturn)
        {
            await _merchandiseReturnService.DeleteMerchandiseReturn(merchandiseReturn);

            //activity log
            await _customerActivityService.InsertActivity("DeleteMerchandiseReturn", merchandiseReturn.Id, _translationService.GetResource("ActivityLog.DeleteMerchandiseReturn"), merchandiseReturn.Id);
        }
Ejemplo n.º 2
0
        public virtual async Task <MerchandiseReturn> UpdateMerchandiseReturnModel(MerchandiseReturn merchandiseReturn, MerchandiseReturnModel model, List <CustomAttribute> customAddressAttributes)
        {
            merchandiseReturn.CustomerComments          = model.CustomerComments;
            merchandiseReturn.StaffNotes                = model.StaffNotes;
            merchandiseReturn.MerchandiseReturnStatusId = model.MerchandiseReturnStatusId;
            merchandiseReturn.ExternalId                = model.ExternalId;
            merchandiseReturn.UpdatedOnUtc              = DateTime.UtcNow;
            merchandiseReturn.UserFields                = model.UserFields;

            if (_orderSettings.MerchandiseReturns_AllowToSpecifyPickupDate)
            {
                merchandiseReturn.PickupDate = model.PickupDate;
            }
            if (_orderSettings.MerchandiseReturns_AllowToSpecifyPickupAddress)
            {
                merchandiseReturn.PickupAddress = model.PickupAddress.ToEntity();
                if (merchandiseReturn.PickupAddress != null)
                {
                    merchandiseReturn.PickupAddress.Attributes = customAddressAttributes;
                }
            }
            merchandiseReturn.NotifyCustomer = model.NotifyCustomer;
            await _merchandiseReturnService.UpdateMerchandiseReturn(merchandiseReturn);

            //activity log
            await _customerActivityService.InsertActivity("EditMerchandiseReturn", merchandiseReturn.Id, _translationService.GetResource("ActivityLog.EditMerchandiseReturn"), merchandiseReturn.Id);

            if (model.NotifyCustomer)
            {
                await NotifyCustomer(merchandiseReturn);
            }
            return(merchandiseReturn);
        }
 public LiquidMerchandiseReturn(MerchandiseReturn merchandiseReturn, Store store, Order order, MerchandiseReturnNote merchandiseReturnNote = null)
 {
     _merchandiseReturn     = merchandiseReturn;
     _order                 = order;
     _store                 = store;
     _merchandiseReturnNote = merchandiseReturnNote;
     _items                 = new List <LiquidMerchandiseReturnItem>();
     AdditionalTokens       = new Dictionary <string, string>();
 }
Ejemplo n.º 4
0
        public virtual async Task DeleteMerchandiseReturnNote(MerchandiseReturn merchandiseReturn, string id)
        {
            var merchandiseReturnNote = (await _merchandiseReturnService.GetMerchandiseReturnNotes(merchandiseReturn.Id)).FirstOrDefault(on => on.Id == id);

            if (merchandiseReturnNote == null)
            {
                throw new ArgumentException("No merchandise return note found with the specified id");
            }

            merchandiseReturnNote.MerchandiseReturnId = merchandiseReturn.Id;
            await _merchandiseReturnService.DeleteMerchandiseReturnNote(merchandiseReturnNote);
        }
        /// <summary>
        /// Deletes a merchandise return
        /// </summary>
        /// <param name="merchandiseReturn">Merchandise return</param>
        public virtual async Task DeleteMerchandiseReturn(MerchandiseReturn merchandiseReturn)
        {
            if (merchandiseReturn == null)
            {
                throw new ArgumentNullException(nameof(merchandiseReturn));
            }

            await _merchandiseReturnRepository.DeleteAsync(merchandiseReturn);

            //event notification
            await _mediator.EntityDeleted(merchandiseReturn);
        }
Ejemplo n.º 6
0
 public LiquidObjectBuilder AddMerchandiseReturnTokens(MerchandiseReturn merchandiseReturn, Store store, Order order, Language language, MerchandiseReturnNote merchandiseReturnNote = null)
 {
     _chain.Add(async liquidObject =>
     {
         var liquidMerchandiseReturn = await _mediator.Send(new GetMerchandiseReturnTokensCommand()
         {
             Order = order, Language = language, MerchandiseReturn = merchandiseReturn, MerchandiseReturnNote = merchandiseReturnNote, Store = store
         });
         liquidObject.MerchandiseReturn = liquidMerchandiseReturn;
         await _mediator.EntityTokensAdded(merchandiseReturn, liquidMerchandiseReturn, liquidObject);
     });
     return(this);
 }
Ejemplo n.º 7
0
        public virtual async Task InsertMerchandiseReturnNote(MerchandiseReturn merchandiseReturn, Order order, string downloadId, bool displayToCustomer, string message)
        {
            var merchandiseReturnNote = new MerchandiseReturnNote
            {
                DisplayToCustomer = displayToCustomer,
                Note                = message,
                DownloadId          = downloadId,
                MerchandiseReturnId = merchandiseReturn.Id,
                CreatedOnUtc        = DateTime.UtcNow,
            };
            await _merchandiseReturnService.InsertMerchandiseReturnNote(merchandiseReturnNote);

            //new merchandise return notification
            if (displayToCustomer)
            {
                //email
                await _messageProviderService.SendNewMerchandiseReturnNoteAddedCustomerMessage(merchandiseReturn, merchandiseReturnNote, order);
            }
        }
        /// <summary>
        /// Inserts a merchandise return
        /// </summary>
        /// <param name="merchandiseReturn">Merchandise return </param>
        public virtual async Task InsertMerchandiseReturn(MerchandiseReturn merchandiseReturn)
        {
            if (merchandiseReturn == null)
            {
                throw new ArgumentNullException(nameof(merchandiseReturn));
            }

            lock (_locker)
            {
                var requestExists = _merchandiseReturnRepository.Table.FirstOrDefault();
                var requestNumber = requestExists != null?_merchandiseReturnRepository.Table.Max(x => x.ReturnNumber) + 1 : 1;

                merchandiseReturn.ReturnNumber = requestNumber;
            }
            await _merchandiseReturnRepository.InsertAsync(merchandiseReturn);

            //event notification
            await _mediator.EntityInserted(merchandiseReturn);
        }
Ejemplo n.º 9
0
        public static async Task <bool> Access(this MerchandiseReturn merchandiseReturn, Customer customer, IGroupService groupService)
        {
            if (merchandiseReturn == null)
            {
                return(false);
            }

            //owner
            if (await groupService.IsOwner(customer) && (customer.Id == merchandiseReturn.CustomerId || customer.Id == merchandiseReturn.OwnerId))
            {
                return(true);
            }

            //subaccount
            if (!await groupService.IsOwner(customer) && customer.Id == merchandiseReturn.CustomerId)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 10
0
        public virtual async Task <MerchandiseReturnModel> PrepareMerchandiseReturnModel(MerchandiseReturnModel model,
                                                                                         MerchandiseReturn merchandiseReturn, bool excludeProperties)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (merchandiseReturn == null)
            {
                throw new ArgumentNullException(nameof(merchandiseReturn));
            }

            var order = await _orderService.GetOrderById(merchandiseReturn.OrderId);

            decimal unitPriceInclTaxInCustomerCurrency = 0;

            foreach (var item in merchandiseReturn.MerchandiseReturnItems)
            {
                var orderItem = order.OrderItems.Where(x => x.Id == item.OrderItemId).First();
                unitPriceInclTaxInCustomerCurrency += orderItem.UnitPriceInclTax * item.Quantity;
            }

            model.Total          = _priceFormatter.FormatPrice(unitPriceInclTaxInCustomerCurrency);
            model.Quantity       = merchandiseReturn.MerchandiseReturnItems.Sum(x => x.Quantity);
            model.Id             = merchandiseReturn.Id;
            model.OrderId        = order.Id;
            model.OrderNumber    = order.OrderNumber;
            model.OrderCode      = order.Code;
            model.ReturnNumber   = merchandiseReturn.ReturnNumber;
            model.CustomerId     = merchandiseReturn.CustomerId;
            model.NotifyCustomer = merchandiseReturn.NotifyCustomer;
            var customer = await _customerService.GetCustomerById(merchandiseReturn.CustomerId);

            if (customer != null)
            {
                model.CustomerInfo = !string.IsNullOrEmpty(customer.Email) ? customer.Email : _translationService.GetResource("Admin.Customers.Guest");
            }
            else
            {
                model.CustomerInfo = _translationService.GetResource("Admin.Customers.Guest");
            }

            model.MerchandiseReturnStatusStr = merchandiseReturn.MerchandiseReturnStatus.ToString();
            model.CreatedOn  = _dateTimeService.ConvertToUserTime(merchandiseReturn.CreatedOnUtc, DateTimeKind.Utc);
            model.PickupDate = merchandiseReturn.PickupDate;
            model.UserFields = merchandiseReturn.UserFields;

            if (!excludeProperties)
            {
                var addr = new AddressModel();
                model.PickupAddress = await PrepareAddressModel(addr, merchandiseReturn.PickupAddress, excludeProperties);

                model.CustomerComments          = merchandiseReturn.CustomerComments;
                model.ExternalId                = merchandiseReturn.ExternalId;
                model.StaffNotes                = merchandiseReturn.StaffNotes;
                model.MerchandiseReturnStatusId = merchandiseReturn.MerchandiseReturnStatusId;
            }

            return(model);
        }
Ejemplo n.º 11
0
        public virtual async Task <IList <MerchandiseReturnModel.MerchandiseReturnNote> > PrepareMerchandiseReturnNotes(MerchandiseReturn merchandiseReturn)
        {
            //merchandise return notes
            var merchandiseReturnNoteModels = new List <MerchandiseReturnModel.MerchandiseReturnNote>();

            foreach (var merchandiseReturnNote in (await _merchandiseReturnService.GetMerchandiseReturnNotes(merchandiseReturn.Id))
                     .OrderByDescending(on => on.CreatedOnUtc))
            {
                var download = await _downloadService.GetDownloadById(merchandiseReturnNote.DownloadId);

                merchandiseReturnNoteModels.Add(new MerchandiseReturnModel.MerchandiseReturnNote
                {
                    Id = merchandiseReturnNote.Id,
                    MerchandiseReturnId = merchandiseReturn.Id,
                    DownloadId          = String.IsNullOrEmpty(merchandiseReturnNote.DownloadId) ? "" : merchandiseReturnNote.DownloadId,
                    DownloadGuid        = download != null ? download.DownloadGuid : Guid.Empty,
                    DisplayToCustomer   = merchandiseReturnNote.DisplayToCustomer,
                    Note              = merchandiseReturnNote.Note,
                    CreatedOn         = _dateTimeService.ConvertToUserTime(merchandiseReturnNote.CreatedOnUtc, DateTimeKind.Utc),
                    CreatedByCustomer = merchandiseReturnNote.CreatedByCustomer
                });
            }
            return(merchandiseReturnNoteModels);
        }
Ejemplo n.º 12
0
        public virtual async Task NotifyCustomer(MerchandiseReturn merchandiseReturn)
        {
            var order = await _orderService.GetOrderById(merchandiseReturn.OrderId);

            await _messageProviderService.SendMerchandiseReturnStatusChangedCustomerMessage(merchandiseReturn, order, _languageSettings.DefaultAdminLanguageId);
        }