Skip to content

Commit 3d5a278

Browse files
feat: Add configuration item pricing, section ID, and product snapshots (#489)
1 parent 5fd6e7e commit 3d5a278

26 files changed

+7169
-44
lines changed

samples/VirtoCommerce.OrdersModule2.Web/VirtoCommerce.OrdersModule2.Web.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<PrivateAssets>all</PrivateAssets>
1010
<IncludeAssets>runtime; build; native; analyzers; buildtransitive</IncludeAssets>
1111
</PackageReference>
12-
<PackageReference Include="VirtoCommerce.Platform.Data.SqlServer" Version="3.1002.0" />
12+
<PackageReference Include="VirtoCommerce.Platform.Data.SqlServer" Version="3.1004.0" />
1313
</ItemGroup>
1414
<ItemGroup>
1515
<ProjectReference Include="..\..\src\VirtoCommerce.OrdersModule.Core\VirtoCommerce.OrdersModule.Core.csproj" />

src/VirtoCommerce.OrdersModule.Core/Model/ConfigurationItem.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Linq;
34
using VirtoCommerce.Platform.Core.Common;
@@ -6,16 +7,26 @@
67
namespace VirtoCommerce.OrdersModule.Core.Model;
78

89
[SwaggerSchemaId("OrderConfigurationItem")]
9-
public class ConfigurationItem : AuditableEntity
10+
public class ConfigurationItem : AuditableEntity, ICloneable
1011
{
12+
public string LineItemId { get; set; }
13+
1114
public string ProductId { get; set; }
1215

16+
public string SectionId { get; set; }
17+
1318
public string Name { get; set; }
1419

1520
public string Sku { get; set; }
1621

1722
public int Quantity { get; set; }
1823

24+
public decimal Price { get; set; }
25+
26+
public decimal SalePrice { get; set; }
27+
28+
public virtual decimal ExtendedPrice => SalePrice * Quantity;
29+
1930
public string ImageUrl { get; set; }
2031

2132
public string CatalogId { get; set; }
@@ -26,9 +37,11 @@ public class ConfigurationItem : AuditableEntity
2637

2738
public string CustomText { get; set; }
2839

40+
public string ProductSnapshot { get; set; }
41+
2942
public IList<ConfigurationItemFile> Files { get; set; }
3043

31-
public object Clone()
44+
public virtual object Clone()
3245
{
3346
var result = (ConfigurationItem)MemberwiseClone();
3447

src/VirtoCommerce.OrdersModule.Core/Model/LineItem.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public class LineItem : AuditableEntity, IHasOuterId, IHasTaxDetalization, ISupp
5959

6060
public decimal DiscountTotalWithTax { get; set; }
6161

62-
//Any extra Fee
62+
//Any extra Fee
6363
public virtual decimal Fee { get; set; }
6464

6565
public virtual decimal FeeWithTax { get; set; }
@@ -109,6 +109,8 @@ public class LineItem : AuditableEntity, IHasOuterId, IHasTaxDetalization, ISupp
109109

110110
public bool IsConfigured { get; set; }
111111

112+
public string ProductSnapshot { get; set; }
113+
112114
#region IHaveDimension Members
113115

114116
public string WeightUnit { get; set; }
@@ -191,22 +193,27 @@ public virtual object Clone()
191193

192194
if (DynamicProperties != null)
193195
{
194-
result.DynamicProperties = new List<DynamicObjectProperty>(DynamicProperties.Select(x => x.Clone() as DynamicObjectProperty));
196+
result.DynamicProperties = DynamicProperties.Select(x => x.CloneTyped()).ToList();
195197
}
196198

197199
if (Discounts != null)
198200
{
199-
result.Discounts = new List<Discount>(Discounts.Select(x => x.Clone() as Discount));
201+
result.Discounts = Discounts.Select(x => x.CloneTyped()).ToList();
200202
}
201203

202204
if (TaxDetails != null)
203205
{
204-
result.TaxDetails = new List<TaxDetail>(TaxDetails.Select(x => x.Clone() as TaxDetail));
206+
result.TaxDetails = TaxDetails.Select(x => x.CloneTyped()).ToList();
205207
}
206208

207209
if (FeeDetails != null)
208210
{
209-
result.FeeDetails = new List<FeeDetail>(FeeDetails.Select(x => x.Clone() as FeeDetail));
211+
result.FeeDetails = FeeDetails.Select(x => x.CloneTyped()).ToList();
212+
}
213+
214+
if (ConfigurationItems != null)
215+
{
216+
result.ConfigurationItems = ConfigurationItems.Select(x => x.CloneTyped()).ToList();
210217
}
211218

212219
return result;

src/VirtoCommerce.OrdersModule.Core/ModuleConstants.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,14 @@ public static class General
278278
IsPublic = true,
279279
};
280280

281+
public static SettingDescriptor ProductSnapshotEnabled { get; } = new SettingDescriptor
282+
{
283+
Name = "Order.ProductSnapshot.Enable",
284+
GroupName = "Orders|Products",
285+
ValueType = SettingValueType.Boolean,
286+
DefaultValue = false,
287+
};
288+
281289
public static SettingDescriptor MaxOrderDocumentCount { get; } = new SettingDescriptor
282290
{
283291
Name = "Order.MaxOrderDocumentCount",
@@ -327,6 +335,7 @@ public static IEnumerable<SettingDescriptor> AllSettings
327335
yield return PurchasedProductIndexation;
328336
yield return EventBasedPurchasedProductIndexation;
329337
yield return PurchasedProductStoreFilter;
338+
yield return ProductSnapshotEnabled;
330339
yield return MaxOrderDocumentCount;
331340
yield return DashboardStatisticsEnabled;
332341
yield return DashboardStatisticsRangeMonths;

src/VirtoCommerce.OrdersModule.Core/VirtoCommerce.OrdersModule.Core.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
</PropertyGroup>
1616
<ItemGroup>
1717

18-
<PackageReference Include="VirtoCommerce.CartModule.Core" Version="3.1000.0" />
18+
<PackageReference Include="VirtoCommerce.CartModule.Core" Version="3.1002.0" />
1919
<PackageReference Include="VirtoCommerce.CoreModule.Core" Version="3.1000.0" />
2020
<PackageReference Include="VirtoCommerce.CustomerModule.Core" Version="3.1000.0" />
2121
<PackageReference Include="VirtoCommerce.NotificationsModule.Core" Version="3.1000.0" />
2222
<PackageReference Include="VirtoCommerce.PaymentModule.Core" Version="3.1000.0" />
23-
<PackageReference Include="VirtoCommerce.Platform.Core" Version="3.1002.0" />
23+
<PackageReference Include="VirtoCommerce.Platform.Core" Version="3.1004.0" />
2424
<PackageReference Include="VirtoCommerce.ShippingModule.Core" Version="3.1000.0" />
2525
<PackageReference Include="VirtoCommerce.StoreModule.Core" Version="3.1000.0" />
2626
<PackageReference Include="VirtoCommerce.SearchModule.Core" Version="3.1000.0" />
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.EntityFrameworkCore;
2+
using Microsoft.EntityFrameworkCore.Metadata.Builders;
3+
using VirtoCommerce.OrdersModule.Data.Model;
4+
5+
namespace VirtoCommerce.OrdersModule.Data.MySql
6+
{
7+
public class ConfigurationItemEntityConfiguration : IEntityTypeConfiguration<ConfigurationItemEntity>
8+
{
9+
public void Configure(EntityTypeBuilder<ConfigurationItemEntity> builder)
10+
{
11+
builder.Property(x => x.Price).HasColumnType("decimal").HasPrecision(18, 4);
12+
builder.Property(x => x.SalePrice).HasColumnType("decimal").HasPrecision(18, 4);
13+
}
14+
}
15+
}

0 commit comments

Comments
 (0)