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); }
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>(); }
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); }
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); }
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); }
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); }
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); }
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); }
public virtual async Task NotifyCustomer(MerchandiseReturn merchandiseReturn) { var order = await _orderService.GetOrderById(merchandiseReturn.OrderId); await _messageProviderService.SendMerchandiseReturnStatusChangedCustomerMessage(merchandiseReturn, order, _languageSettings.DefaultAdminLanguageId); }