Skip to content

Commit

Permalink
#2115 Implemented showing vendor name on the shopping cart and order…
Browse files Browse the repository at this point in the history
… details page
  • Loading branch information
skoshelev committed Jan 9, 2018
1 parent 33f7dea commit 1527731
Show file tree
Hide file tree
Showing 17 changed files with 210 additions and 25 deletions.
5 changes: 5 additions & 0 deletions src/Libraries/Nop.Core/Domain/Vendors/VendorSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ public class VendorSettings : ISettings
/// </summary>
public bool ShowVendorOnProductDetailsPage { get; set; }

/// <summary>
/// Gets or sets a value indicating whether to display vendor name on the order details page
/// </summary>
public bool ShowVendorOnOrderDetailsPage { get; set; }

/// <summary>
/// Gets or sets a value indicating whether customers can contact vendors
/// </summary>
Expand Down
56 changes: 43 additions & 13 deletions src/Libraries/Nop.Services/Common/PdfService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
using Nop.Core.Domain.Orders;
using Nop.Core.Domain.Shipping;
using Nop.Core.Domain.Tax;
using Nop.Core.Domain.Vendors;
using Nop.Core.Html;
using Nop.Services.Catalog;
using Nop.Services.Configuration;
Expand All @@ -25,6 +26,7 @@
using Nop.Services.Orders;
using Nop.Services.Payments;
using Nop.Services.Stores;
using Nop.Services.Vendors;

namespace Nop.Services.Common
{
Expand Down Expand Up @@ -57,6 +59,8 @@ public partial class PdfService : IPdfService
private readonly PdfSettings _pdfSettings;
private readonly TaxSettings _taxSettings;
private readonly AddressSettings _addressSettings;
private readonly IVendorService _vendorService;
private readonly VendorSettings _vendorSettings;

#endregion

Expand Down Expand Up @@ -87,6 +91,8 @@ public partial class PdfService : IPdfService
/// <param name="pdfSettings">PDF sSettings</param>
/// <param name="taxSettings">Tax settings</param>
/// <param name="addressSettings">Address settings</param>
/// <param name="vendorService">Vendor service</param>
/// <param name="vendorSettings">Vendor settings</param>
public PdfService(ILocalizationService localizationService,
ILanguageService languageService,
IWorkContext workContext,
Expand All @@ -108,7 +114,9 @@ public partial class PdfService : IPdfService
MeasureSettings measureSettings,
PdfSettings pdfSettings,
TaxSettings taxSettings,
AddressSettings addressSettings)
AddressSettings addressSettings,
IVendorService vendorService,
VendorSettings vendorSettings)
{
this._localizationService = localizationService;
this._languageService = languageService;
Expand All @@ -132,6 +140,8 @@ public partial class PdfService : IPdfService
this._pdfSettings = pdfSettings;
this._taxSettings = taxSettings;
this._addressSettings = addressSettings;
this._vendorService = vendorService;
this._vendorSettings = vendorSettings;
}

#endregion
Expand Down Expand Up @@ -714,24 +724,24 @@ protected virtual void PrintProducts(int vendorId, Language lang, Font titleFont

var orderItems = order.OrderItems;

var productsTable = new PdfPTable(_catalogSettings.ShowSkuOnProductDetailsPage ? 5 : 4)
var count = 4 + (_catalogSettings.ShowSkuOnProductDetailsPage ? 1 : 0)
+ (_vendorSettings.ShowVendorOnOrderDetailsPage ? 1 : 0);


var productsTable = new PdfPTable(count)
{
RunDirection = GetDirection(lang),
WidthPercentage = 100f
};

if (lang.Rtl)
{
productsTable.SetWidths(_catalogSettings.ShowSkuOnProductDetailsPage
? new[] { 15, 10, 15, 15, 45 }
: new[] { 20, 10, 20, 50 });
}
else
var widths = new Dictionary<int, int[]>
{
productsTable.SetWidths(_catalogSettings.ShowSkuOnProductDetailsPage
? new[] { 45, 15, 15, 10, 15 }
: new[] { 50, 20, 10, 20 });
}
{4, new[] {50, 20, 10, 20}},
{5, new[] {45, 15, 15, 10, 15}},
{6, new[] {40, 13, 13, 12, 10, 12}}
};

productsTable.SetWidths(lang.Rtl ? widths[count].Reverse().ToArray() : widths[count]);

//product name
var cellProductItem = GetPdfCell("PDFInvoice.ProductName", lang, font);
Expand All @@ -748,6 +758,15 @@ protected virtual void PrintProducts(int vendorId, Language lang, Font titleFont
productsTable.AddCell(cellProductItem);
}

//Vendor name
if (_vendorSettings.ShowVendorOnOrderDetailsPage)
{
cellProductItem = GetPdfCell("PDFInvoice.VendorName", lang, font);
cellProductItem.BackgroundColor = BaseColor.LIGHT_GRAY;
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
}

//price
cellProductItem = GetPdfCell("PDFInvoice.ProductPrice", lang, font);
cellProductItem.BackgroundColor = BaseColor.LIGHT_GRAY;
Expand All @@ -766,6 +785,8 @@ protected virtual void PrintProducts(int vendorId, Language lang, Font titleFont
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);

var vendors = _vendorSettings.ShowVendorOnOrderDetailsPage ? _vendorService.GetVendorsByIds(orderItems.Select(item => item.Product.VendorId).ToArray()) : new List<Vendor>();

foreach (var orderItem in orderItems)
{
var p = orderItem.Product;
Expand Down Expand Up @@ -815,6 +836,15 @@ protected virtual void PrintProducts(int vendorId, Language lang, Font titleFont
productsTable.AddCell(cellProductItem);
}

//Vendor name
if (_vendorSettings.ShowVendorOnOrderDetailsPage)
{
var vendorName = vendors.FirstOrDefault(v=>v.Id==p.VendorId)?.Name ?? string.Empty;
cellProductItem = GetPdfCell(vendorName, font);
cellProductItem.HorizontalAlignment = Element.ALIGN_CENTER;
productsTable.AddCell(cellProductItem);
}

//price
string unitPrice;
if (order.CustomerTaxDisplayType == TaxDisplayType.IncludingTax)
Expand Down
11 changes: 9 additions & 2 deletions src/Libraries/Nop.Services/Vendors/IVendorService.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Collections.Generic;
using Nop.Core;
using Nop.Core.Domain.Vendors;

Expand Down Expand Up @@ -29,8 +30,14 @@ public partial interface IVendorService
/// <param name="pageSize">Page size</param>
/// <param name="showHidden">A value indicating whether to show hidden records</param>
/// <returns>Vendors</returns>
IPagedList<Vendor> GetAllVendors(string name = "",
int pageIndex = 0, int pageSize = int.MaxValue, bool showHidden = false);
IPagedList<Vendor> GetAllVendors(string name = "", int pageIndex = 0, int pageSize = int.MaxValue, bool showHidden = false);

/// <summary>
/// Gets vendors
/// </summary>
/// <param name="vendorIds">Vendor identifiers</param>
/// <returns>Vendors</returns>
IList<Vendor> GetVendorsByIds(int[] vendorIds);

/// <summary>
/// Inserts a vendor
Expand Down
19 changes: 17 additions & 2 deletions src/Libraries/Nop.Services/Vendors/VendorService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Nop.Core;
using Nop.Core.Data;
Expand Down Expand Up @@ -78,21 +79,35 @@ public virtual void DeleteVendor(Vendor vendor)
/// <param name="pageSize">Page size</param>
/// <param name="showHidden">A value indicating whether to show hidden records</param>
/// <returns>Vendors</returns>
public virtual IPagedList<Vendor> GetAllVendors(string name = "",
int pageIndex = 0, int pageSize = int.MaxValue, bool showHidden = false)
public virtual IPagedList<Vendor> GetAllVendors(string name = "", int pageIndex = 0, int pageSize = int.MaxValue, bool showHidden = false)
{
var query = _vendorRepository.Table;
if (!string.IsNullOrWhiteSpace(name))
query = query.Where(v => v.Name.Contains(name));
if (!showHidden)
query = query.Where(v => v.Active);

query = query.Where(v => !v.Deleted);
query = query.OrderBy(v => v.DisplayOrder).ThenBy(v => v.Name);

var vendors = new PagedList<Vendor>(query, pageIndex, pageSize);
return vendors;
}

/// <summary>
/// Gets vendors
/// </summary>
/// <param name="vendorIds">Vendor identifiers</param>
/// <returns>Vendors</returns>
public virtual IList<Vendor> GetVendorsByIds(int[] vendorIds)
{
var query = _vendorRepository.Table;
if (vendorIds != null)
query = query.Where(v => vendorIds.Contains(v.Id));

return query.ToList();
}

/// <summary>
/// Inserts a vendor
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7983,6 +7983,12 @@
<LocaleResource Name="Admin.Configuration.Settings.Vendor.NotifyStoreOwnerAboutVendorInformationChange.Hint">
<Value>Check to notify a store owner about vendor information changes.</Value>
</LocaleResource>
<LocaleResource Name="Admin.Configuration.Settings.Vendor.ShowVendorOnOrderDetailsPage">
<Value>Show vendor name on order details page</Value>
</LocaleResource>
<LocaleResource Name="Admin.Configuration.Settings.Vendor.ShowVendorOnOrderDetailsPage.Hint">
<Value>Check to show vendor name of product on the order details page.</Value>
</LocaleResource>
<LocaleResource Name="Admin.Configuration.Settings.Vendor.ShowVendorOnProductDetailsPage">
<Value>Show vendor on product details page</Value>
</LocaleResource>
Expand Down Expand Up @@ -15117,6 +15123,9 @@
<LocaleResource Name="Order.Product(s).Total">
<Value>Total</Value>
</LocaleResource>
<LocaleResource Name="Order.Product(s).VendorName">
<Value>Vendor name</Value>
</LocaleResource>
<LocaleResource Name="Order.Rental.FormattedDate">
<Value>Start date: {0}. End date: {1}.</Value>
</LocaleResource>
Expand Down Expand Up @@ -15534,6 +15543,9 @@
<LocaleResource Name="PDFInvoice.VATNumber">
<Value>VAT number: {0}</Value>
</LocaleResource>
<LocaleResource Name="PDFInvoice.VendorName">
<Value>Vendor name</Value>
</LocaleResource>
<LocaleResource Name="PDFPackagingSlip.Address">
<Value>Address: {0}</Value>
</LocaleResource>
Expand Down Expand Up @@ -16713,6 +16725,9 @@
<LocaleResource Name="ShoppingCart.UpdateCartItem">
<Value>Update qty</Value>
</LocaleResource>
<LocaleResource Name="ShoppingCart.VendorName">
<Value>Vendor name</Value>
</LocaleResource>
<LocaleResource Name="ShoppingCart.WishlistDisabled">
<Value>Wishlist is disabled for this product</Value>
</LocaleResource>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ public virtual IActionResult Vendor()
{
model.VendorsBlockItemsToDisplay_OverrideForStore = _settingService.SettingExists(vendorSettings, x => x.VendorsBlockItemsToDisplay, storeScope);
model.ShowVendorOnProductDetailsPage_OverrideForStore = _settingService.SettingExists(vendorSettings, x => x.ShowVendorOnProductDetailsPage, storeScope);
model.ShowVendorOnOrderDetailsPage_OverrideForStore = _settingService.SettingExists(vendorSettings, x => x.ShowVendorOnOrderDetailsPage, storeScope);
model.AllowCustomersToContactVendors_OverrideForStore = _settingService.SettingExists(vendorSettings, x => x.AllowCustomersToContactVendors, storeScope);
model.AllowCustomersToApplyForVendorAccount_OverrideForStore = _settingService.SettingExists(vendorSettings, x => x.AllowCustomersToApplyForVendorAccount, storeScope);
model.TermsOfServiceEnabled_OverrideForStore = _settingService.SettingExists(vendorSettings, x => x.TermsOfServiceEnabled, storeScope);
Expand Down Expand Up @@ -284,6 +285,7 @@ public virtual IActionResult Vendor(VendorSettingsModel model)
* and loaded from database after each update */
_settingService.SaveSettingOverridablePerStore(vendorSettings, x => x.VendorsBlockItemsToDisplay, model.VendorsBlockItemsToDisplay_OverrideForStore, storeScope, false);
_settingService.SaveSettingOverridablePerStore(vendorSettings, x => x.ShowVendorOnProductDetailsPage, model.ShowVendorOnProductDetailsPage_OverrideForStore, storeScope, false);
_settingService.SaveSettingOverridablePerStore(vendorSettings, x => x.ShowVendorOnOrderDetailsPage, model.ShowVendorOnOrderDetailsPage_OverrideForStore, storeScope, false);
_settingService.SaveSettingOverridablePerStore(vendorSettings, x => x.AllowCustomersToContactVendors, model.AllowCustomersToContactVendors_OverrideForStore, storeScope, false);
_settingService.SaveSettingOverridablePerStore(vendorSettings, x => x.AllowCustomersToApplyForVendorAccount, model.AllowCustomersToApplyForVendorAccount_OverrideForStore, storeScope, false);
_settingService.SaveSettingOverridablePerStore(vendorSettings, x => x.TermsOfServiceEnabled, model.TermsOfServiceEnabled_OverrideForStore, storeScope, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -771,7 +771,8 @@ public AdminMapperConfiguration()
.ForMember(dest => dest.NotifyStoreOwnerAboutVendorInformationChange_OverrideForStore, mo => mo.Ignore())
.ForMember(dest => dest.CustomProperties, mo => mo.Ignore())
.ForMember(dest => dest.MaximumProductNumber_OverrideForStore, mo => mo.Ignore())
.ForMember(dest => dest.AllowVendorsToImportProducts_OverrideForStore, mo => mo.Ignore());
.ForMember(dest => dest.AllowVendorsToImportProducts_OverrideForStore, mo => mo.Ignore())
.ForMember(dest => dest.ShowVendorOnOrderDetailsPage_OverrideForStore, mo => mo.Ignore());
CreateMap<VendorSettingsModel, VendorSettings>()
.ForMember(dest => dest.DefaultVendorPageSizeOptions, mo => mo.Ignore());
CreateMap<ShippingSettings, ShippingSettingsModel>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,9 @@ public partial class VendorSettingsModel : BaseNopModel
[NopResourceDisplayName("Admin.Configuration.Settings.Vendor.AllowVendorsToImportProducts")]
public bool AllowVendorsToImportProducts { get; set; }
public bool AllowVendorsToImportProducts_OverrideForStore { get; set; }

[NopResourceDisplayName("Admin.Configuration.Settings.Vendor.ShowVendorOnOrderDetailsPage")]
public bool ShowVendorOnOrderDetailsPage { get; set; }
public bool ShowVendorOnOrderDetailsPage_OverrideForStore { get; set; }
}
}
10 changes: 10 additions & 0 deletions src/Presentation/Nop.Web/Areas/Admin/Views/Setting/Vendor.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,16 @@
<span asp-validation-for="ShowVendorOnProductDetailsPage"></span>
</div>
</div>
<div class="form-group advanced-setting">
<div class="col-md-3">
<nop-override-store-checkbox asp-for="ShowVendorOnOrderDetailsPage_OverrideForStore" asp-input="ShowVendorOnOrderDetailsPage" asp-store-scope="@Model.ActiveStoreScopeConfiguration" />
<nop-label asp-for="ShowVendorOnOrderDetailsPage" />
</div>
<div class="col-md-9">
<nop-editor asp-for="ShowVendorOnOrderDetailsPage" />
<span asp-validation-for="ShowVendorOnOrderDetailsPage"></span>
</div>
</div>
<div class="form-group advanced-setting">
<div class="col-md-3">
<nop-override-store-checkbox asp-for="VendorsBlockItemsToDisplay_OverrideForStore" asp-input="VendorsBlockItemsToDisplay" asp-store-scope="@Model.ActiveStoreScopeConfiguration" />
Expand Down
18 changes: 17 additions & 1 deletion src/Presentation/Nop.Web/Factories/OrderModelFactory.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Nop.Core;
using Nop.Core.Domain.Catalog;
Expand All @@ -7,6 +8,7 @@
using Nop.Core.Domain.Orders;
using Nop.Core.Domain.Shipping;
using Nop.Core.Domain.Tax;
using Nop.Core.Domain.Vendors;
using Nop.Services.Catalog;
using Nop.Services.Directory;
using Nop.Services.Helpers;
Expand All @@ -17,6 +19,7 @@
using Nop.Services.Seo;
using Nop.Services.Shipping;
using Nop.Services.Shipping.Tracking;
using Nop.Services.Vendors;
using Nop.Web.Models.Common;
using Nop.Web.Models.Order;

Expand Down Expand Up @@ -53,6 +56,8 @@ public partial class OrderModelFactory : IOrderModelFactory
private readonly AddressSettings _addressSettings;
private readonly RewardPointsSettings _rewardPointsSettings;
private readonly PdfSettings _pdfSettings;
private readonly IVendorService _vendorService;
private readonly VendorSettings _vendorSettings;

#endregion

Expand Down Expand Up @@ -80,7 +85,9 @@ public partial class OrderModelFactory : IOrderModelFactory
ShippingSettings shippingSettings,
AddressSettings addressSettings,
RewardPointsSettings rewardPointsSettings,
PdfSettings pdfSettings)
PdfSettings pdfSettings,
IVendorService vendorService,
VendorSettings vendorSettings)
{
this._addressModelFactory = addressModelFactory;
this._orderService = orderService;
Expand All @@ -106,6 +113,8 @@ public partial class OrderModelFactory : IOrderModelFactory
this._addressSettings = addressSettings;
this._rewardPointsSettings = rewardPointsSettings;
this._pdfSettings = pdfSettings;
this._vendorService = vendorService;
this._vendorSettings = vendorSettings;
}

#endregion
Expand Down Expand Up @@ -379,14 +388,20 @@ public virtual OrderDetailsModel PrepareOrderDetailsModel(Order order)

//purchased products
model.ShowSku = _catalogSettings.ShowSkuOnProductDetailsPage;
model.ShowVendorName = _vendorSettings.ShowVendorOnOrderDetailsPage;

var orderItems = order.OrderItems;

var vendors = _vendorSettings.ShowVendorOnOrderDetailsPage ? _vendorService.GetVendorsByIds(orderItems.Select(item => item.Product.VendorId).ToArray()) : new List<Vendor>();

foreach (var orderItem in orderItems)
{
var orderItemModel = new OrderDetailsModel.OrderItemModel
{
Id = orderItem.Id,
OrderItemGuid = orderItem.OrderItemGuid,
Sku = orderItem.Product.FormatSku(orderItem.AttributesXml, _productAttributeParser),
VendorName = vendors.FirstOrDefault(v => v.Id == orderItem.Product.VendorId)?.Name ?? string.Empty,
ProductId = orderItem.Product.Id,
ProductName = orderItem.Product.GetLocalized(x => x.Name),
ProductSeName = orderItem.Product.GetSeName(),
Expand Down Expand Up @@ -573,3 +588,4 @@ public virtual CustomerRewardPointsModel PrepareCustomerRewardPoints(int? page)
#endregion
}
}

Loading

0 comments on commit 1527731

Please sign in to comment.