|
@@ -75,20 +75,20 @@ namespace Comal.Classes
|
|
|
{
|
|
|
public override Expression<Func<StockMovement, double>> Aggregate => x => x.Units;
|
|
|
|
|
|
- public override Dictionary<Expression<Func<StockMovement, object>>, Expression<Func<JobRequisitionItem, object>>> Links => new Dictionary<Expression<Func<StockMovement, object>>, Expression<Func<JobRequisitionItem, object>>>
|
|
|
+ public override Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<JobRequisitionItem, object?>>> Links => new Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<JobRequisitionItem, object?>>>
|
|
|
{
|
|
|
{ x => x.JobRequisitionItem.ID, x => x.ID }
|
|
|
};
|
|
|
|
|
|
public override AggregateCalculation Calculation => AggregateCalculation.Sum;
|
|
|
}
|
|
|
- public class JobRequisitionItemOnOrderAggregate : CoreAggregate<JobRequisitionItem, JobRequisitionItemPurchaseOrderItem, double>
|
|
|
+ public class JobRequisitionItemOrdersAggregate : CoreAggregate<JobRequisitionItem, JobRequisitionItemPurchaseOrderItem, double>
|
|
|
{
|
|
|
public override Expression<Func<JobRequisitionItemPurchaseOrderItem, double>> Aggregate => x => x.PurchaseOrderItem.Qty;
|
|
|
|
|
|
- public override Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object>>, Expression<Func<JobRequisitionItem, object>>> Links => new Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object>>, Expression<Func<JobRequisitionItem, object>>>
|
|
|
+ public override Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object?>>, Expression<Func<JobRequisitionItem, object?>>> Links => new Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object?>>, Expression<Func<JobRequisitionItem, object?>>>
|
|
|
{
|
|
|
- { x => x.JobRequisitionItem.ID, x => x.ID }
|
|
|
+ { x => x.JobRequisitionItem.ID, x => x.ID },
|
|
|
};
|
|
|
|
|
|
public override AggregateCalculation Calculation => AggregateCalculation.Sum;
|
|
@@ -96,13 +96,15 @@ namespace Comal.Classes
|
|
|
public override Filter<JobRequisitionItemPurchaseOrderItem>? Filter =>
|
|
|
new Filter<JobRequisitionItemPurchaseOrderItem>(x => x.PurchaseOrderItem.ReceivedDate).IsEqualTo(null);
|
|
|
}
|
|
|
- public class JobRequisitionItemTreatmentRequiredAggregate : CoreAggregate<JobRequisitionItem, StockMovement, double>
|
|
|
+
|
|
|
+ public class JobRequisitionItemOnOrderAggregate : CoreAggregate<JobRequisitionItem, JobRequisitionItemPurchaseOrderItem, double>
|
|
|
{
|
|
|
public override Expression<Func<JobRequisitionItemPurchaseOrderItem, double>> Aggregate => x => x.PurchaseOrderItem.Qty;
|
|
|
|
|
|
- public override Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object>>, Expression<Func<JobRequisitionItem, object>>> Links => new Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object>>, Expression<Func<JobRequisitionItem, object>>>
|
|
|
+ public override Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object?>>, Expression<Func<JobRequisitionItem, object?>>> Links => new Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object?>>, Expression<Func<JobRequisitionItem, object?>>>
|
|
|
{
|
|
|
- { x => x.JobRequisitionItem.ID, x => x.ID }
|
|
|
+ { x => x.JobRequisitionItem.ID, x => x.ID },
|
|
|
+ { x => x.PurchaseOrderItem.Product.ID, x => x.Product.ID },
|
|
|
};
|
|
|
|
|
|
public override AggregateCalculation Calculation => AggregateCalculation.Sum;
|
|
@@ -111,6 +113,48 @@ namespace Comal.Classes
|
|
|
new Filter<JobRequisitionItemPurchaseOrderItem>(x => x.PurchaseOrderItem.ReceivedDate).IsEqualTo(null);
|
|
|
}
|
|
|
|
|
|
+ public class JobRequisitionItemAllocatedAggregate : CoreAggregate<JobRequisitionItem, StockMovement, double>
|
|
|
+ {
|
|
|
+ public override Expression<Func<StockMovement, double>> Aggregate => x => x.Units;
|
|
|
+
|
|
|
+ public override Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<JobRequisitionItem, object?>>> Links => new Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<JobRequisitionItem, object?>>>
|
|
|
+ {
|
|
|
+ { x => x.JobRequisitionItem.ID, x => x.ID },
|
|
|
+ { x => x.Style.ID, x => x.Style.ID },
|
|
|
+ };
|
|
|
+
|
|
|
+ public override AggregateCalculation Calculation => AggregateCalculation.Sum;
|
|
|
+ }
|
|
|
+ public class JobRequisitionItemTreatmentOnOrderFormula : IFormula<JobRequisitionItem, double>
|
|
|
+ {
|
|
|
+ public Expression<Func<JobRequisitionItem, double>> Value => x => x.TotalOrders;
|
|
|
+ public Expression<Func<JobRequisitionItem, double>>[] Modifiers => new Expression<Func<JobRequisitionItem, double>>[] { x => x.OnOrder };
|
|
|
+ public FormulaOperator Operator => FormulaOperator.Subtract;
|
|
|
+ public FormulaType Type => FormulaType.Virtual;
|
|
|
+ }
|
|
|
+ public class JobRequisitionItemTreatmentRequiredFormula : IFormula<JobRequisitionItem, double>
|
|
|
+ {
|
|
|
+ public Expression<Func<JobRequisitionItem, double>> Value => x => x.InStock;
|
|
|
+ public Expression<Func<JobRequisitionItem, double>>[] Modifiers => new Expression<Func<JobRequisitionItem, double>>[] { x => x.Allocated };
|
|
|
+ public FormulaOperator Operator => FormulaOperator.Subtract;
|
|
|
+ public FormulaType Type => FormulaType.Virtual;
|
|
|
+ }
|
|
|
+
|
|
|
+ public class JobRequisitionItemIssuedAggregate : CoreAggregate<JobRequisitionItem, StockMovement, double>
|
|
|
+ {
|
|
|
+ public override Expression<Func<StockMovement, double>> Aggregate => x => x.Issued;
|
|
|
+
|
|
|
+ public override Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<JobRequisitionItem, object?>>> Links => new Dictionary<Expression<Func<StockMovement, object?>>, Expression<Func<JobRequisitionItem, object?>>>
|
|
|
+ {
|
|
|
+ { x => x.JobRequisitionItem.ID, x => x.ID },
|
|
|
+ { x => x.Style.ID, x => x.Style.ID },
|
|
|
+ };
|
|
|
+
|
|
|
+ public override Filter<StockMovement>? Filter => new Filter<StockMovement>(x => x.Type).IsEqualTo(StockMovementType.Issue);
|
|
|
+
|
|
|
+ public override AggregateCalculation Calculation => AggregateCalculation.Sum;
|
|
|
+ }
|
|
|
+
|
|
|
public interface IJobRequisitionItem : IEntity
|
|
|
{
|
|
|
|
|
@@ -184,11 +228,36 @@ namespace Comal.Classes
|
|
|
[EditorSequence(10)]
|
|
|
public double InStock { get; set; }
|
|
|
|
|
|
+ [Aggregate(typeof(JobRequisitionItemOrdersAggregate))]
|
|
|
+ [DoubleEditor(Editable = Editable.Disabled, Visible = Visible.Optional)]
|
|
|
+ [EditorSequence(11)]
|
|
|
+ public double TotalOrders { get; set; }
|
|
|
+
|
|
|
[Aggregate(typeof(JobRequisitionItemOnOrderAggregate))]
|
|
|
[DoubleEditor(Editable = Editable.Disabled)]
|
|
|
- [EditorSequence(11)]
|
|
|
+ [EditorSequence(12)]
|
|
|
public double OnOrder { get; set; }
|
|
|
|
|
|
+ [Formula(typeof(JobRequisitionItemTreatmentRequiredFormula))]
|
|
|
+ [DoubleEditor(Editable = Editable.Disabled)]
|
|
|
+ [EditorSequence(13)]
|
|
|
+ public double TreatmentRequired { get; set; }
|
|
|
+
|
|
|
+ [Formula(typeof(JobRequisitionItemTreatmentOnOrderFormula))]
|
|
|
+ [DoubleEditor(Editable = Editable.Disabled)]
|
|
|
+ [EditorSequence(14)]
|
|
|
+ public double TreatmentOnOrder { get; set; }
|
|
|
+
|
|
|
+ [Aggregate(typeof(JobRequisitionItemAllocatedAggregate))]
|
|
|
+ [DoubleEditor(Editable = Editable.Disabled)]
|
|
|
+ [EditorSequence(15)]
|
|
|
+ public double Allocated { get; set; }
|
|
|
+
|
|
|
+ [Aggregate(typeof(JobRequisitionItemIssuedAggregate))]
|
|
|
+ [DoubleEditor(Editable = Editable.Disabled)]
|
|
|
+ [EditorSequence(16)]
|
|
|
+ public double Issued { get; set; }
|
|
|
+
|
|
|
[EntityRelationship(DeleteAction.SetNull)]
|
|
|
[RequiredColumn]
|
|
|
[Obsolete("Replaced with JobRequisitionItemPurchaseOrderItem")]
|
|
@@ -200,11 +269,11 @@ namespace Comal.Classes
|
|
|
public string PurchaseOrderNumbers { get; set; }
|
|
|
|
|
|
[RequiredColumn]
|
|
|
- [EditorSequence(12)]
|
|
|
+ [EditorSequence(17)]
|
|
|
public DateTime Cancelled { get; set; } = DateTime.MinValue;
|
|
|
|
|
|
[RequiredColumn]
|
|
|
- [EditorSequence(13)]
|
|
|
+ [EditorSequence(18)]
|
|
|
public DateTime Archived { get; set; } = DateTime.MinValue;
|
|
|
|
|
|
[RequiredColumn]
|
|
@@ -213,7 +282,7 @@ namespace Comal.Classes
|
|
|
public DateTime Ordered { get; set; } = DateTime.MinValue;
|
|
|
|
|
|
[RequiredColumn]
|
|
|
- [EditorSequence(14)]
|
|
|
+ [EditorSequence(19)]
|
|
|
public DateTime OrderRequired { get; set; } = DateTime.MinValue;
|
|
|
|
|
|
[NullEditor]
|
|
@@ -349,7 +418,7 @@ namespace Comal.Classes
|
|
|
{
|
|
|
public override Expression<Func<JobRequisitionItemPurchaseOrderItem, string>> Aggregate => x => x.PurchaseOrderItem.PurchaseOrderLink.PONumber;
|
|
|
|
|
|
- public override Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object>>, Expression<Func<JobRequisitionItem, object>>> Links { get; } = new Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object>>, Expression<Func<JobRequisitionItem, object>>>
|
|
|
+ public override Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object?>>, Expression<Func<JobRequisitionItem, object?>>> Links { get; } = new Dictionary<Expression<Func<JobRequisitionItemPurchaseOrderItem, object?>>, Expression<Func<JobRequisitionItem, object?>>>
|
|
|
{
|
|
|
{ x => x.JobRequisitionItem.ID, x => x.ID }
|
|
|
};
|