12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using InABox.Core;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Comal.Classes
- {
- public class PurchaseOrderItemLookups : EntityLookup<PurchaseOrderItem>, ILookupDefinition<PurchaseOrderItem, BillLine>,
- ILookupDefinition<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>
- {
- public override Columns<PurchaseOrderItem> DefineColumns()
- {
- return new Columns<PurchaseOrderItem>(
- x => x.ID,
- x => x.PurchaseOrderLink.PONumber,
- x => x.Product.Code,
- x => x.Description,
- x => x.Qty,
- x => x.ExTax,
- x => x.TaxCode.ID,
- x => x.TaxCode.Code,
- x => x.TaxCode.Description,
- x => x.TaxCode.Rate,
- x => x.TaxRate,
- x => x.IncTax
- );
- }
- public override string FormatLookup(Dictionary<string, object?> values, IEnumerable<string> exclude)
- {
- return Guid.Equals(values["ID"],Guid.Empty)
- ? ""
- : $"{values["PurchaseOrderLink.PONumber"]}: {values["Qty"]} x {values["Description"]}";
- }
- public override Filter<PurchaseOrderItem>? DefineFilter()
- {
- return null;
- }
- public Filter<PurchaseOrderItem> DefineFilter(BillLine[] items)
- {
- if (!items.Any())
- return new Filter<PurchaseOrderItem>().None();
-
- var supplierID = items.Select(x => x.BillLink.SupplierLink.ID).Distinct().SingleOrDefault();
- if(supplierID == Guid.Empty)
- return new Filter<PurchaseOrderItem>().None();
-
- return new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(supplierID)
- .And(x=>x.BillLine.ID).IsEqualTo(Guid.Empty);
- }
- public Columns<BillLine> DefineFilterColumns()
- {
- return new Columns<BillLine>(x => x.BillLink.SupplierLink.ID);
- }
- public override SortOrder<PurchaseOrderItem> DefineSortOrder()
- {
- return new SortOrder<PurchaseOrderItem>(x => x.PurchaseOrderLink.PONumber).ThenBy(x => x.Created);
- }
- public 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();
- }
- }
- Columns<JobRequisitionItemPurchaseOrderItem> ILookupDefinition<PurchaseOrderItem, JobRequisitionItemPurchaseOrderItem>.DefineFilterColumns() =>
- new Columns<JobRequisitionItemPurchaseOrderItem>(x => x.JobRequisitionItem.Job.ID)
- .Add(x => x.JobRequisitionItem.Product.ID);
- }
- }
|