using Comal.Classes; using InABox.Core; using NPOI.HPSF; using System; using System.Collections.Generic; using System.Linq; namespace Comal.Stores { public class PurchaseOrderStore : BaseStore { protected override void AfterSave(PurchaseOrder entity) { base.AfterSave(entity); UpdateTrackingKanban(entity, p => { return p.Status == PurchaseOrderStatus.Closed ? KanbanCategory.Complete : p.Status.Equals(PurchaseOrderStatus.Issued) ? KanbanCategory.Waiting : KanbanCategory.Open; }); } protected override void BeforeDelete(PurchaseOrder entity) { UnlinkTrackingKanban(entity); DeleteStockMovements(entity); } private void DeleteStockMovements(PurchaseOrder entity) { var items = Provider.Query( new Filter(x => x.PurchaseOrderLink.ID).IsEqualTo(entity.ID), new Columns(x => x.ID) ).Rows.Select(x => x.ToObject()); List ids = new List(); foreach ( var item in items) ids.Add(item.ID); var movements = Provider.Query( new Filter(x => x.OrderItem.ID).InList(ids.ToArray()), new Columns(x => x.ID) ).Rows.Select(x => x.ToObject()); if (movements.Any()) FindSubStore().Delete(movements, "Purchase Order Deleted"); } } }