-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathLineItem.cs
More file actions
238 lines (179 loc) · 7.5 KB
/
LineItem.cs
File metadata and controls
238 lines (179 loc) · 7.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
using System;
using System.Collections.Generic;
using System.Linq;
using VirtoCommerce.CoreModule.Core.Common;
using VirtoCommerce.CoreModule.Core.Tax;
using VirtoCommerce.Platform.Core.Common;
using VirtoCommerce.Platform.Core.DynamicProperties;
using VirtoCommerce.Platform.Core.Swagger;
namespace VirtoCommerce.OrdersModule.Core.Model
{
[SwaggerSchemaId("OrderLineItem")]
public class LineItem : AuditableEntity, IHasOuterId, IHasTaxDetalization, ISupportCancellation, IHasDimension,
IHasDynamicProperties, ITaxable, IHasDiscounts, ICloneable, IHasFeesDetalization
{
/// <summary>
/// Price id
/// </summary>
public string PriceId { get; set; }
public string Currency { get; set; }
/// <summary>
/// unit price without discount and tax
/// </summary>
public decimal Price { get; set; }
public virtual decimal PriceWithTax { get; set; }
public decimal ListTotal { get; set; }
public decimal ListTotalWithTax { get; set; }
/// <summary>
/// Resulting price with discount for one unit
/// </summary>
public virtual decimal PlacedPrice { get; set; }
public virtual decimal PlacedPriceWithTax { get; set; }
public virtual decimal ExtendedPrice { get; set; }
public virtual decimal ExtendedPriceWithTax { get; set; }
/// <summary>
/// Gets the value of the single qty line item discount amount
/// </summary>
public virtual decimal DiscountAmount { get; set; }
/// <summary>
/// Indicates whether the discount amount per item was rounded according to the currency settings.
/// If false, DiscountAmount and PlacedPrice should not be visible to the customer, as these values may be incorrect;
/// in this case, DiscountTotal and ExtendedPrice should be used.
/// </summary>
public bool IsDiscountAmountRounded { get; set; }
public virtual decimal DiscountAmountWithTax { get; set; }
public decimal DiscountTotal { get; set; }
public decimal DiscountTotalWithTax { get; set; }
//Any extra Fee
public virtual decimal Fee { get; set; }
public virtual decimal FeeWithTax { get; set; }
#region ITaxable Members
/// <summary>
/// Tax category or type
/// </summary>
public string TaxType { get; set; }
public decimal TaxTotal { get; set; }
public decimal TaxPercentRate { get; set; }
#endregion
/// <summary>
/// Reserve quantity
/// </summary>
public int ReserveQuantity { get; set; }
public int Quantity { get; set; }
public string ProductId { get; set; }
public string Sku { get; set; }
public string ProductType { get; set; }
public string CatalogId { get; set; }
public string CategoryId { get; set; }
public string Name { get; set; }
public string ProductOuterId { get; set; }
public string Comment { get; set; }
public string Status { get; set; }
public string ImageUrl { get; set; }
public bool? IsGift { get; set; }
public string ShippingMethodCode { get; set; }
public string FulfillmentLocationCode { get; set; }
public string FulfillmentCenterId { get; set; }
public string FulfillmentCenterName { get; set; }
public string OuterId { get; set; }
public ICollection<FeeDetail> FeeDetails { get; set; }
public string VendorId { get; set; }
public bool IsConfigured { get; set; }
#region IHaveDimension Members
public string WeightUnit { get; set; }
public decimal? Weight { get; set; }
public string MeasureUnit { get; set; }
public decimal? Height { get; set; }
public decimal? Length { get; set; }
public decimal? Width { get; set; }
#endregion
#region ISupportCancelation Members
public bool IsCancelled { get; set; }
public DateTime? CancelledDate { get; set; }
public string CancelReason { get; set; }
#endregion
#region IHasDynamicProperties Members
public string ObjectType => typeof(LineItem).FullName;
public ICollection<DynamicObjectProperty> DynamicProperties { get; set; }
#endregion
#region IHasDiscounts
public ICollection<Discount> Discounts { get; set; }
#endregion
#region IHaveTaxDetalization Members
public ICollection<TaxDetail> TaxDetails { get; set; }
#endregion
#region Configuration Items
public ICollection<ConfigurationItem> ConfigurationItems { get; set; }
#endregion
public virtual void ReduceDetails(string responseGroup)
{
// Reduce details according to the response group
var orderResponseGroup = EnumUtility.SafeParseFlags(responseGroup, CustomerOrderResponseGroup.Full);
if (!orderResponseGroup.HasFlag(CustomerOrderResponseGroup.WithDiscounts))
{
Discounts = null;
}
if (!orderResponseGroup.HasFlag(CustomerOrderResponseGroup.WithPrices))
{
DiscountAmount = 0m;
DiscountAmountWithTax = 0m;
DiscountTotal = 0m;
DiscountTotalWithTax = 0m;
ExtendedPrice = 0m;
ExtendedPriceWithTax = 0m;
Fee = 0m;
FeeWithTax = 0m;
ListTotal = 0m;
ListTotalWithTax = 0m;
PlacedPrice = 0m;
PlacedPriceWithTax = 0m;
Price = 0m;
PriceWithTax = 0m;
TaxPercentRate = 0m;
TaxTotal = 0m;
}
}
public virtual void RestoreDetails(LineItem item)
{
DiscountAmount = item.DiscountAmount;
DiscountAmountWithTax = item.DiscountAmountWithTax;
DiscountTotal = item.DiscountTotal;
DiscountTotalWithTax = item.DiscountTotalWithTax;
ExtendedPrice = item.ExtendedPrice;
ExtendedPriceWithTax = item.ExtendedPriceWithTax;
Fee = item.Fee;
FeeWithTax = item.FeeWithTax;
ListTotal = item.ListTotal;
ListTotalWithTax = item.ListTotalWithTax;
PlacedPrice = item.PlacedPrice;
PlacedPriceWithTax = item.PlacedPriceWithTax;
Price = item.Price;
PriceWithTax = item.PriceWithTax;
TaxPercentRate = item.TaxPercentRate;
TaxTotal = item.TaxTotal;
}
#region ICloneable members
public virtual object Clone()
{
var result = MemberwiseClone() as LineItem;
if (DynamicProperties != null)
{
result.DynamicProperties = new List<DynamicObjectProperty>(DynamicProperties.Select(x => x.Clone() as DynamicObjectProperty));
}
if (Discounts != null)
{
result.Discounts = new List<Discount>(Discounts.Select(x => x.Clone() as Discount));
}
if (TaxDetails != null)
{
result.TaxDetails = new List<TaxDetail>(TaxDetails.Select(x => x.Clone() as TaxDetail));
}
if (FeeDetails != null)
{
result.FeeDetails = new List<FeeDetail>(FeeDetails.Select(x => x.Clone() as FeeDetail));
}
return result;
}
#endregion
}
}