Skip to content

Commit 530f2d9

Browse files
committed
Merge branch 'issue-3456-return-requests-when-order-completed' into develop
2 parents f2ad18a + 35e26d0 commit 530f2d9

11 files changed

Lines changed: 40 additions & 3 deletions

File tree

src/Libraries/Nop.Core/Domain/Orders/ReturnRequestSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,9 @@ public partial class ReturnRequestSettings : ISettings
5656
/// Gets or sets a number of days for withdrawal link. Set to 0 if it doesn't expire.
5757
/// </summary>
5858
public int WithdrawalLinkDaysValid { get; set; }
59+
60+
/// <summary>
61+
/// Gets or sets a value indicating whether return requests are available only for completed orders
62+
/// </summary>
63+
public bool ReturnRequestsForCompletedOrdersOnly { get; set; }
5964
}

src/Libraries/Nop.Services/Installation/InstallRequiredData.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1905,7 +1905,8 @@ protected virtual async Task InstallSettingsAsync()
19051905
GuestReturnRequestsAllowed = false,
19061906
ReturnReasonsEnabled = true,
19071907
ReturnActionsEnabled = true,
1908-
WithdrawalLinkDaysValid = 7
1908+
WithdrawalLinkDaysValid = 7,
1909+
ReturnRequestsForCompletedOrdersOnly = true,
19091910
});
19101911

19111912
await SaveSettingAsync(dictionary, new SecuritySettings

src/Libraries/Nop.Services/Orders/OrderProcessingService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3161,7 +3161,7 @@ public virtual async Task<bool> IsReturnRequestAllowedAsync(Order order)
31613161
return false;
31623162

31633163
//status should be complete
3164-
if (order.OrderStatus != OrderStatus.Complete)
3164+
if (_returnRequestSettings.ReturnRequestsForCompletedOrdersOnly && order.OrderStatus != OrderStatus.Complete)
31653165
return false;
31663166

31673167
//validate allowed number of days

src/Presentation/Nop.Web.Framework/Migrations/UpgradeTo500/LocalizationMigration.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,10 @@ public override void Up()
825825
//#8093
826826
["Admin.Address.Fields.PhoneNumber.NotValid"] = "Phone number is not valid.",
827827
["Admin.Customers.Customers.Fields.Phone.NotValid"] = "Phone number is not valid.",
828+
829+
//#3456
830+
["Admin.Configuration.Settings.Order.ReturnRequestsForCompletedOrdersOnly"] = "Allow return requests only for completed orders",
831+
["Admin.Configuration.Settings.Order.ReturnRequestsForCompletedOrdersOnly.Hint"] = "Check this option to allow return requests only for completed orders.",
828832
});
829833

830834
#endregion

src/Presentation/Nop.Web.Framework/Migrations/UpgradeTo500/SettingMigration.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ public override void Up()
141141
$"{nameof(CustomerSettings)}.PhoneNumberValidationUseRegex",
142142
$"{nameof(CustomerSettings)}.PhoneNumberValidationRule"
143143
]);
144+
145+
//#3456
146+
this.SetSettingIfNotExists<ReturnRequestSettings, bool>(settings => settings.ReturnRequestsForCompletedOrdersOnly, true);
144147
}
145148

146149
public override void Down()

src/Presentation/Nop.Web/App_Data/Localization/defaultResources.nopres.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9122,6 +9122,12 @@
91229122
<LocaleResource Name="Admin.Configuration.Settings.Order.ReturnRequestsEnabled.Hint">
91239123
<Value>Check if you want to allow customers to submit return requests for items they've previously purchased.</Value>
91249124
</LocaleResource>
9125+
<LocaleResource Name="Admin.Configuration.Settings.Order.ReturnRequestsForCompletedOrdersOnly">
9126+
<Value>Allow return requests only for completed orders</Value>
9127+
</LocaleResource>
9128+
<LocaleResource Name="Admin.Configuration.Settings.Order.ReturnRequestsForCompletedOrdersOnly.Hint">
9129+
<Value>Check this option to allow return requests only for completed orders.</Value>
9130+
</LocaleResource>
91259131
<LocaleResource Name="Admin.Configuration.Settings.Order.ReturnRequestSettings">
91269132
<Value>Return request (withdrawal button) settings</Value>
91279133
</LocaleResource>

src/Presentation/Nop.Web/Areas/Admin/Controllers/SettingController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,7 @@ public virtual async Task<IActionResult> Order(OrderSettingsModel model)
997997
await _settingService.SaveSettingOverridablePerStoreAsync(returnRequestSettings, x => x.WithdrawalLinkDaysValid, model.ReturnRequestSettings.WithdrawalLinkDaysValid_OverrideForStore, storeScope, false);
998998
await _settingService.SaveSettingOverridablePerStoreAsync(returnRequestSettings, x => x.ReturnReasonsEnabled, model.ReturnRequestSettings.ReturnReasonsEnabled_OverrideForStore, storeScope, false);
999999
await _settingService.SaveSettingOverridablePerStoreAsync(returnRequestSettings, x => x.ReturnActionsEnabled, model.ReturnRequestSettings.ReturnActionsEnabled_OverrideForStore, storeScope, false);
1000+
await _settingService.SaveSettingOverridablePerStoreAsync(returnRequestSettings, x => x.ReturnRequestsForCompletedOrdersOnly, model.ReturnRequestSettings.ReturnRequestsForCompletedOrdersOnly_OverrideForStore, storeScope, false);
10001001

10011002
//now clear settings cache
10021003
await _settingService.ClearCacheAsync();

src/Presentation/Nop.Web/Areas/Admin/Factories/SettingModelFactory.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1565,6 +1565,7 @@ public virtual async Task<ReturnRequestSettingsModel> PrepareReturnRequestSettin
15651565
model.ReturnRequestsEnabled = returnRequestSettings.ReturnRequestsEnabled;
15661566
model.UseEuWithdrawalLocales = returnRequestSettings.UseEuWithdrawalLocales;
15671567
model.WithdrawalLinkDaysValid = returnRequestSettings.WithdrawalLinkDaysValid;
1568+
model.ReturnRequestsForCompletedOrdersOnly = returnRequestSettings.ReturnRequestsForCompletedOrdersOnly;
15681569

15691570
//fill in additional values (not existing in the entity)
15701571
model.ActiveStoreScopeConfiguration = storeId;
@@ -1581,6 +1582,7 @@ public virtual async Task<ReturnRequestSettingsModel> PrepareReturnRequestSettin
15811582
model.GuestReturnRequestsAllowed_OverrideForStore = await _settingService.SettingExistsAsync(returnRequestSettings, x => x.GuestReturnRequestsAllowed, storeId);
15821583
model.ReturnReasonsEnabled_OverrideForStore = await _settingService.SettingExistsAsync(returnRequestSettings, x => x.ReturnReasonsEnabled, storeId);
15831584
model.ReturnActionsEnabled_OverrideForStore = await _settingService.SettingExistsAsync(returnRequestSettings, x => x.ReturnActionsEnabled, storeId);
1585+
model.ReturnRequestsForCompletedOrdersOnly_OverrideForStore = await _settingService.SettingExistsAsync(returnRequestSettings, x => x.ReturnRequestsForCompletedOrdersOnly, storeId);
15841586
}
15851587

15861588
//prepare nested search models

src/Presentation/Nop.Web/Areas/Admin/Infrastructure/Mapper/AdminMapperConfiguration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1394,7 +1394,8 @@ protected virtual void CreateOrdersMaps()
13941394
.ForMember(model => model.GuestReturnRequestsAllowed_OverrideForStore, options => options.Ignore())
13951395
.ForMember(model => model.WithdrawalLinkDaysValid_OverrideForStore, options => options.Ignore())
13961396
.ForMember(model => model.ReturnReasonsEnabled_OverrideForStore, options => options.Ignore())
1397-
.ForMember(model => model.ReturnActionsEnabled_OverrideForStore, options => options.Ignore());
1397+
.ForMember(model => model.ReturnActionsEnabled_OverrideForStore, options => options.Ignore())
1398+
.ForMember(model => model.ReturnRequestsForCompletedOrdersOnly_OverrideForStore, options => options.Ignore());
13981399
CreateMap<ReturnRequestSettingsModel, ReturnRequestSettings>()
13991400
.ForMember(settings => settings.ReturnRequestsFileMaximumSize, options => options.Ignore());
14001401

src/Presentation/Nop.Web/Areas/Admin/Models/Settings/ReturnRequestSettingsModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ public partial record ReturnRequestSettingsModel : BaseNopModel, ISettingsModel
4444
public bool ReturnActionsEnabled { get; set; }
4545
public bool ReturnActionsEnabled_OverrideForStore { get; set; }
4646

47+
[NopResourceDisplayName("Admin.Configuration.Settings.Order.ReturnRequestsForCompletedOrdersOnly")]
48+
public bool ReturnRequestsForCompletedOrdersOnly { get; set; }
49+
public bool ReturnRequestsForCompletedOrdersOnly_OverrideForStore { get; set; }
50+
4751
public ReturnRequestReasonSearchModel ReturnRequestReasonSearchModel { get; set; } = new();
4852
public ReturnRequestActionSearchModel ReturnRequestActionSearchModel { get; set; } = new();
4953
}

0 commit comments

Comments
 (0)