1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- using InABox.Core;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Comal.Classes
- {
- [Caption("Allocation")]
- public class PurchaseOrderItemAllocation : Entity, IRemotable, IPersistent, ILicense<ProjectManagementLicense>
- , IOneToMany<JobRequisitionItem>, IOneToMany<Job>, IOneToMany<PurchaseOrderItem>
- {
- [RequiredColumn]
- [EntityRelationship(DeleteAction.Cascade)]
- public PurchaseOrderItemLink Item { get; set; }
-
- /// <summary>
- /// This may not be blank.
- /// </summary>
- [RequiredColumn]
- [EntityRelationship(DeleteAction.Cascade)]
- public JobLink Job { get; set; }
-
- /// <summary>
- /// This may be an empty link. The interface is as such: if there is no JRI, then we are creating a reserve and allocation just against the job. If there is a JRI,
- /// then received stock is reserved and allocated for the JRI.
- /// </summary>
- [RequiredColumn]
- [EntityRelationship(DeleteAction.Cascade)]
- public JobRequisitionItemLink JobRequisitionItem { get; set; }
-
- [RequiredColumn]
- public double Quantity { get; set; }
- }
-
- [Caption("Requisition / PO Item Links")]
- [Obsolete("Replaced with PurchaseOrderItemAllocation", true)]
- public class JobRequisitionItemPurchaseOrderItem : Entity, IRemotable, IPersistent, IOneToMany<JobRequisitionItem>, IOneToMany<PurchaseOrderItem>, ILicense<ProjectManagementLicense>
- {
-
- private class JobRequisitionItemLookup : LookupDefinitionGenerator<JobRequisitionItem, JobRequisitionItemPurchaseOrderItem>
- {
- public override Filter<JobRequisitionItem>? DefineFilter(JobRequisitionItemPurchaseOrderItem[] items)
- {
- var jobs = items.Select(x => x.PurchaseOrderItem.Job.ID).Distinct().ToArray();
- var products = items.Select(x => x.PurchaseOrderItem.Product.ID).Distinct().ToArray();
- if(jobs.Length == 1 && products.Length == 1)
- {
- return new Filter<JobRequisitionItem>(x => x.Job.ID).IsEqualTo(jobs.First())
- .And(x => x.Product.ID).IsEqualTo(products.First());
- }
- {
- return new Filter<JobRequisitionItem>().None();
- }
- }
- public override Columns<JobRequisitionItemPurchaseOrderItem> DefineFilterColumns()
- => Columns.None<JobRequisitionItemPurchaseOrderItem>().Add(x => x.PurchaseOrderItem.Job.ID)
- .Add(x => x.PurchaseOrderItem.Product.ID);
- }
- [LookupDefinition(typeof(JobRequisitionItemLookup))]
- [EntityRelationship(DeleteAction.Cascade)]
- public JobRequisitionItemLink JobRequisitionItem { get; set; }
- private class PurchaseOrderItemLookup : LookupDefinitionGenerator<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>
- {
- public override Filter<PurchaseOrderItem>? DefineFilter(JobRequisitionItemPurchaseOrderItem[] items)
- {
- var jobs = items.Select(x => x.JobRequisitionItem.Job.ID).Distinct().ToArray();
- var products = items.Select(x => x.JobRequisitionItem.Product.ID).Distinct().ToArray();
- if(jobs.Length == 1 && products.Length == 1)
- {
- return new Filter<PurchaseOrderItem>(x => x.Job.ID).IsEqualTo(jobs.First())
- .And(x => x.Product.ID).IsEqualTo(products.First());
- }
- {
- return new Filter<PurchaseOrderItem>().None();
- }
- }
- public override Columns<JobRequisitionItemPurchaseOrderItem> DefineFilterColumns()
- => Columns.None<JobRequisitionItemPurchaseOrderItem>().Add(x => x.JobRequisitionItem.Job.ID)
- .Add(x => x.JobRequisitionItem.Product.ID);
- }
- [LookupDefinition(typeof(PurchaseOrderItemLookup))]
- [EntityRelationship(DeleteAction.Cascade)]
- public PurchaseOrderItemLink PurchaseOrderItem { get; set; }
- }
- }
|