1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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<PurchaseOrder>
- {
- protected override void AfterSave(PurchaseOrder entity)
- {
- base.AfterSave(entity);
- UpdateTrackingKanban<PurchaseOrderKanban, PurchaseOrder, PurchaseOrderLink>(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<PurchaseOrderKanban, PurchaseOrder, PurchaseOrderLink>(entity);
- DeleteStockMovements(entity);
- }
- private void DeleteStockMovements(PurchaseOrder entity)
- {
- var items = Provider.Query(
- new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.ID).IsEqualTo(entity.ID),
- new Columns<PurchaseOrderItem>(x => x.ID)
- ).Rows.Select(x => x.ToObject<PurchaseOrderItem>());
- List<Guid> ids = new List<Guid>();
- foreach ( var item in items)
- ids.Add(item.ID);
- var movements = Provider.Query(
- new Filter<StockMovement>(x => x.OrderItem.ID).InList(ids.ToArray()),
- new Columns<StockMovement>(x => x.ID)
- ).Rows.Select(x => x.ToObject<StockMovement>());
- if (movements.Any())
- FindSubStore<StockMovement>().Delete(movements, "Purchase Order Deleted");
- }
- }
- }
|