|
@@ -25,6 +25,7 @@ namespace Comal.Classes
|
|
|
public override Filter<JobBillOfMaterialsItem> Filter =>
|
|
|
new Filter<JobBillOfMaterialsItem>(x => x.BillOfMaterials.Approved).IsNotEqualTo(DateTime.MinValue);
|
|
|
}
|
|
|
+
|
|
|
public class StockSummaryIssuedAggregate : CoreAggregate<StockSummary, StockMovement, double>
|
|
|
{
|
|
|
public override Expression<Func<StockMovement, double>> Aggregate => x => x.Issued;
|
|
@@ -42,6 +43,37 @@ namespace Comal.Classes
|
|
|
{ StockMovement => StockMovement.Dimensions.UnitSize, summary => summary.Dimensions.UnitSize }
|
|
|
};
|
|
|
}
|
|
|
+
|
|
|
+ public class StockSummaryTotalRequiredFormula : IFormula<StockSummary, double>
|
|
|
+ {
|
|
|
+ public Expression<Func<StockSummary, double>> Value => x => x.Product.MinimumStockLevel;
|
|
|
+
|
|
|
+ public Expression<Func<StockSummary, double>>[] Modifiers => new Expression<Func<StockSummary, double>>[]
|
|
|
+ {
|
|
|
+ x => x.BillOfMaterials
|
|
|
+ };
|
|
|
+
|
|
|
+ public FormulaOperator Operator => FormulaOperator.Add;
|
|
|
+
|
|
|
+ public FormulaType Type => FormulaType.Virtual;
|
|
|
+ }
|
|
|
+
|
|
|
+ public class StockSummaryNettRequiredFormula : IFormula<StockSummary, double>
|
|
|
+ {
|
|
|
+ public Expression<Func<StockSummary, double>> Value => x => x.TotalRequired;
|
|
|
+
|
|
|
+ public Expression<Func<StockSummary, double>>[] Modifiers => new Expression<Func<StockSummary, double>>[]
|
|
|
+ {
|
|
|
+ x => x.Issued
|
|
|
+ };
|
|
|
+
|
|
|
+ public FormulaOperator Operator => FormulaOperator.Subtract;
|
|
|
+
|
|
|
+ public FormulaType Type => FormulaType.Virtual;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
public class StockSummaryAllStockAggregate : CoreAggregate<StockSummary, StockMovement, double>
|
|
|
{
|
|
|
public override Expression<Func<StockMovement, double>> Aggregate => x => x.Units;
|
|
@@ -76,20 +108,6 @@ namespace Comal.Classes
|
|
|
public override Filter<PurchaseOrderItem> Filter => new Filter<PurchaseOrderItem>(x => x.ReceivedDate).IsEqualTo(DateTime.MinValue);
|
|
|
}
|
|
|
|
|
|
- public class StockSummaryTotalRequiredFormula : IFormula<StockSummary, double>
|
|
|
- {
|
|
|
- public Expression<Func<StockSummary, double>> Value => x => x.Product.MinimumStockLevel;
|
|
|
-
|
|
|
- public Expression<Func<StockSummary, double>>[] Modifiers => new Expression<Func<StockSummary, double>>[]
|
|
|
- {
|
|
|
- x => x.BillOfMaterials
|
|
|
- };
|
|
|
-
|
|
|
- public FormulaOperator Operator => FormulaOperator.Add;
|
|
|
-
|
|
|
- public FormulaType Type => FormulaType.Virtual;
|
|
|
- }
|
|
|
-
|
|
|
public class StockSummaryTotalStockFormula : IFormula<StockSummary, double>
|
|
|
{
|
|
|
public Expression<Func<StockSummary, double>> Value => x => x.Issued;
|
|
@@ -179,11 +197,19 @@ namespace Comal.Classes
|
|
|
[DoubleEditor]
|
|
|
[Aggregate(typeof(StockSummaryBOMAggregate))]
|
|
|
public double BillOfMaterials { get; set; }
|
|
|
+
|
|
|
+ [NullEditor]
|
|
|
+ [Formula(typeof(StockSummaryTotalRequiredFormula))]
|
|
|
+ public double TotalRequired { get; set; }
|
|
|
|
|
|
[EditorSequence(5)]
|
|
|
[Aggregate(typeof(StockSummaryIssuedAggregate))]
|
|
|
[DoubleEditor(Editable = Editable.Hidden)]
|
|
|
public double Issued { get; set; }
|
|
|
+
|
|
|
+ [NullEditor]
|
|
|
+ [Formula(typeof(StockSummaryNettRequiredFormula))]
|
|
|
+ public double NettRequired { get; set; }
|
|
|
|
|
|
[EditorSequence(6)]
|
|
|
[Aggregate(typeof(StockSummaryAllStockAggregate))]
|
|
@@ -194,11 +220,7 @@ namespace Comal.Classes
|
|
|
[DoubleEditor]
|
|
|
[Aggregate(typeof(StockSummaryOrderAggregate))]
|
|
|
public double OnOrder { get; set; }
|
|
|
-
|
|
|
- [NullEditor]
|
|
|
- [Formula(typeof(StockSummaryTotalRequiredFormula))]
|
|
|
- public double TotalRequired { get; set; }
|
|
|
-
|
|
|
+
|
|
|
[NullEditor]
|
|
|
[Formula(typeof(StockSummaryTotalStockFormula))]
|
|
|
public double TotalStock { get; set; }
|