3using System.Xml.Serialization;
17[XmlType(TypeName =
"salesOption")]
23 private int _distributionCenterId;
33 int distributionCenterId,
38 throw new ArgumentOutOfRangeException(nameof(itemId));
41 if (distributionCenterId <= 0)
43 throw new ArgumentOutOfRangeException(nameof(distributionCenterId));
51 [XmlAttribute(
"itemId")]
59 throw new ArgumentOutOfRangeException(nameof(value));
62 SetProperty(ref _itemId, value);
66 [XmlAttribute(
"distributionCenterId")]
69 get => _distributionCenterId;
74 throw new ArgumentOutOfRangeException(nameof(value));
77 SetProperty(ref _distributionCenterId, value);
81 [XmlElement(
"maximumAdditionalSales")]
84 get => _maximumAdditionalSales;
87 ArgumentNullException.ThrowIfNull(value);
88 SetProperty(ref _maximumAdditionalSales, value);
92 [XmlElement(
"unitPrice")]
98 ArgumentNullException.ThrowIfNull(value);
99 SetProperty(ref _unitPrice, value);
111 MaximumAdditionalSales.PeriodCount ==
UnitPrice.PeriodCount;
120 UnitPrice.All(value =>
double.IsFinite(value) && value >= 0.0);
127 ValidateNonNegative(value, nameof(value));
136 ValidateNonNegative(value, nameof(value));
144 throw new ArgumentOutOfRangeException(nameof(periodCount));
155 private static void ValidateNonNegative(
157 string parameterName)
159 if (!
double.IsFinite(value) || value < 0.0)
161 throw new ArgumentOutOfRangeException(
164 "The value must be finite and non-negative.");
Represents a sequence of finite double values indexed by planning period.
Base class for model objects that notify listeners when one of their properties changes.
virtual void OnPropertyChanged([CallerMemberName] string? propertyName=null)
Raises the PropertyChanged event.
SalesOption(int itemId, int distributionCenterId, int planningHorizon)
void SetUnitPrice(int period, double value)
double GetMaximumAdditionalSales(int period)
double GetUnitPrice(int period)
DoubleTimeSeries MaximumAdditionalSales
int PlanningHorizon
Gets the number of planning periods currently represented by the object's time-dependent data.
bool HasConsistentPlanningHorizon
DoubleTimeSeries UnitPrice
void SetMaximumAdditionalSales(int period, double value)
void ResizeTimeSeries(int periodCount)
Resizes every time-dependent series contained in the object.
Defines a model object containing data indexed by planning period.