1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using InABox.Core;
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace Comal.Classes
- {
- public interface IConsolidatedPurchaseOrderItem
- {
- Guid ID { get; set; }
- PurchaseOrderItemLink OrderItem { get; set; }
- JobRequisitionItemLink JobRequisitionItem { get; set; }
- JobLink Job { get; set; }
- /// <summary>
- /// Quantity of the item in "exploded" units.
- /// </summary>
- double Qty { get; set; }
- }
- /// <summary>
- /// Represents a consolidation of <see cref="PurchaseOrderItem"/> and <see cref="PurchaseOrderItemAllocation"/> into a single list.
- /// </summary>
- [AutoEntity(typeof(ConsolidatedPurchaseOrderItemGenerator))]
- public class ConsolidatedPurchaseOrderItem : Entity, IConsolidatedPurchaseOrderItem, IRemotable, IPersistent, ILicense<AccountsPayableLicense>
- {
- public PurchaseOrderItemLink OrderItem { get; set; } = null!;
- public JobRequisitionItemLink JobRequisitionItem { get; set; } = null!;
- public JobLink Job { get; set; } = null!;
- public double Qty { get; set; }
- static ConsolidatedPurchaseOrderItem()
- {
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.OrderItem.PurchaseOrderLink.PONumber, caption: "PONumber");
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.OrderItem.Description);
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.OrderItem.Product.Code, caption: "Product", width: 100);
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.OrderItem.Style.Code, caption: "Style", width: 100);
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.OrderItem.Dimensions.UnitSize, width: 70, caption: "Size");
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.Job.JobNumber, caption: "Job", width: 70);
- DefaultColumns.Add<ConsolidatedPurchaseOrderItem>(x => x.Qty, width: 50);
- }
- }
- public class ConsolidatedPurchaseOrderItemGenerator : AutoEntityUnionGenerator<IConsolidatedPurchaseOrderItem>
- {
- public override Column<IConsolidatedPurchaseOrderItem>[] IDColumns => new Column<IConsolidatedPurchaseOrderItem>[]
- {
- new Column<IConsolidatedPurchaseOrderItem>(x => x.ID)
- };
- protected override void Configure()
- {
- AddTable<PurchaseOrderItem>()
- .AliasField(x => x.Job.ID, x => x.Job.ID)
- .AliasField(x => x.OrderItem.ID, x => x.ID)
- .AliasField(x => x.Qty, x => x.Unallocated)
- .AddConstant(x => x.JobRequisitionItem.ID, Guid.Empty);
- AddTable<PurchaseOrderItemAllocation>()
- .AliasField(x => x.Job.ID, x => x.Job.ID)
- .AliasField(x => x.OrderItem.ID, x => x.Item.ID)
- .AliasField(x => x.Qty,
- ComplexFormulaGenerator.If<PurchaseOrderItemAllocation, string, double>(
- ComplexFormulaGenerator.Property<PurchaseOrderItemAllocation, string>(x => x.Item.Dimensions.Unit.Conversion),
- Condition.Equals,
- ComplexFormulaGenerator.Constant<PurchaseOrderItemAllocation, string>(""),
- "")
- .Then(ComplexFormulaGenerator.Property<PurchaseOrderItemAllocation, double>(x => x.Quantity))
- .Else(ComplexFormulaGenerator.Formula(FormulaOperator.Divide,
- ComplexFormulaGenerator.Property<PurchaseOrderItemAllocation, double>(x => x.Quantity),
- ComplexFormulaGenerator.Property<PurchaseOrderItemAllocation, double>(x => x.Item.Dimensions.Value))))
- .AliasField(x => x.JobRequisitionItem.ID, x => x.JobRequisitionItem.ID);
- }
- public override bool Distinct => true;
- }
- }
|